agent-orchestrator-sdk 0.1.1

Rust SDK for orchestrating LLM-powered agents, shared task execution, and teammate coordination
Documentation
use std::sync::Arc;
use std::time::Duration;

use tokio::time;
use tracing::debug;

use crate::error::SdkResult;
use crate::task::store::{TaskStore, TaskSummary};

pub struct TaskWatcher {
    task_store: Arc<TaskStore>,
    poll_interval: Duration,
}

impl TaskWatcher {
    pub fn new(task_store: Arc<TaskStore>, poll_interval_ms: u64) -> Self {
        Self {
            task_store,
            poll_interval: Duration::from_millis(poll_interval_ms),
        }
    }

    pub async fn wait_for_completion(&self) -> SdkResult<TaskSummary> {
        loop {
            let summary = self.task_store.summary()?;

            debug!(
                pending = summary.pending,
                in_progress = summary.in_progress,
                completed = summary.completed,
                failed = summary.failed,
                "Task status"
            );

            if summary.is_done() {
                return Ok(summary);
            }

            time::sleep(self.poll_interval).await;
        }
    }

    pub fn current_summary(&self) -> SdkResult<TaskSummary> {
        self.task_store.summary()
    }
}