a3s_code_core/orchestrator/
state.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub enum SubAgentState {
8 Initializing,
10
11 Running,
13
14 Paused,
16
17 Completed { success: bool, output: String },
19
20 Cancelled,
22
23 Error { message: String },
25}
26
27impl SubAgentState {
28 pub fn is_terminal(&self) -> bool {
30 matches!(
31 self,
32 SubAgentState::Completed { .. }
33 | SubAgentState::Cancelled
34 | SubAgentState::Error { .. }
35 )
36 }
37
38 pub fn is_running(&self) -> bool {
40 matches!(self, SubAgentState::Running)
41 }
42
43 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}