Skip to main content

task_graph_mcp/resources/
agents.rs

1//! Worker resource handlers.
2
3use crate::config::StatesConfig;
4use crate::db::Database;
5use anyhow::Result;
6use serde_json::{Value, json};
7
8pub fn get_all_workers(db: &Database, states_config: &StatesConfig) -> Result<Value> {
9    let workers = db.list_workers()?;
10
11    Ok(json!({
12        "workers": workers.iter().map(|w| {
13            let claim_count = db.get_claim_count(&w.id, states_config).unwrap_or(0);
14            json!({
15                "id": &w.id,
16                "tags": w.tags,
17                "max_claims": w.max_claims,
18                "current_claims": claim_count,
19                "registered_at": w.registered_at,
20                "last_heartbeat": w.last_heartbeat
21            })
22        }).collect::<Vec<_>>()
23    }))
24}