Skip to main content

a3s_code_core/orchestrator/
state.rs

1//! SubAgent 状态定义
2
3use serde::{Deserialize, Serialize};
4
5/// SubAgent 状态
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub enum SubAgentState {
8    /// 初始化中
9    Initializing,
10
11    /// 运行中
12    Running,
13
14    /// 已暂停
15    Paused,
16
17    /// 已完成
18    Completed { success: bool, output: String },
19
20    /// 已取消
21    Cancelled,
22
23    /// 错误
24    Error { message: String },
25}
26
27impl SubAgentState {
28    /// 是否为终止状态
29    pub fn is_terminal(&self) -> bool {
30        matches!(
31            self,
32            SubAgentState::Completed { .. }
33                | SubAgentState::Cancelled
34                | SubAgentState::Error { .. }
35        )
36    }
37
38    /// 是否为运行状态
39    pub fn is_running(&self) -> bool {
40        matches!(self, SubAgentState::Running)
41    }
42
43    /// 是否为暂停状态
44    pub fn is_paused(&self) -> bool {
45        matches!(self, SubAgentState::Paused)
46    }
47}
48
49impl std::fmt::Display for SubAgentState {
50    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
51        match self {
52            SubAgentState::Initializing => write!(f, "initializing"),
53            SubAgentState::Running => write!(f, "running"),
54            SubAgentState::Paused => write!(f, "paused"),
55            SubAgentState::Completed { success, .. } => {
56                write!(f, "completed(success={})", success)
57            }
58            SubAgentState::Cancelled => write!(f, "cancelled"),
59            SubAgentState::Error { .. } => write!(f, "error"),
60        }
61    }
62}