Skip to main content

aether_core/events/
sub_agent_progress.rs

1use super::AgentMessage;
2use serde::{Deserialize, Serialize};
3
4/// Payload for sub-agent progress updates emitted by MCP tools.
5///
6/// This is the internal payload embedded in MCP progress messages between
7/// `mcp-subagents` and the ACP relay (in `aether-cli`). It uses `AgentMessage`
8/// for the event (the full fat type). The relay converts this to
9/// `SubAgentProgressParams` (which uses the lightweight `SubAgentEvent`)
10/// before sending to clients.
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
12pub struct SubAgentProgressPayload {
13    pub task_id: String,
14    pub agent_name: String,
15    pub event: AgentMessage,
16}
17
18#[cfg(test)]
19mod tests {
20    use super::SubAgentProgressPayload;
21    use crate::events::AgentMessage;
22
23    #[test]
24    fn test_sub_agent_progress_payload_roundtrip() {
25        let payload = SubAgentProgressPayload {
26            task_id: "task_123".to_string(),
27            agent_name: "explorer".to_string(),
28            event: AgentMessage::Done,
29        };
30
31        let json = serde_json::to_string(&payload).expect("serializable");
32        let parsed: SubAgentProgressPayload = serde_json::from_str(&json).expect("deserializable");
33
34        assert_eq!(payload, parsed);
35    }
36}