use strum::IntoStaticStr;
pub const SUBAGENT_JOB_EVENT_BROADCAST_CAPACITY: usize = 256;
#[derive(Clone, Debug)]
pub enum SubagentJobEvent {
Started {
id: String,
agent: String,
source: String,
run_id: Option<String>,
node_id: Option<String>,
session_id: Option<String>,
},
Output {
id: String,
chunk: String,
session_id: Option<String>,
},
Metrics {
id: String,
tps: Option<f64>,
cps: Option<f64>,
chars: u64,
tokens_in: u64,
tokens_out: u64,
tools_called: u64,
turn: u32,
session_id: Option<String>,
},
Completed {
id: String,
status: SubagentJobStatus,
error: Option<String>,
chars: u64,
tokens_in: u64,
tokens_out: u64,
tools_called: u64,
session_id: Option<String>,
},
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, IntoStaticStr)]
#[strum(serialize_all = "lowercase")]
pub enum SubagentJobStatus {
Running,
Succeeded,
Failed,
Cancelled,
Interrupted,
}
impl SubagentJobStatus {
pub fn as_str(&self) -> &'static str {
(*self).into()
}
}
#[cfg(test)]
tests_bridge_macro::tests_bridge!("multiagent/job_events");