task_graph_mcp/resources/
agents.rs1use 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}