aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-09 03:31:37 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-09 03:31:37 +0300
commita3ecb4e3b4151e840ad237e073d8282e1181c34a (patch)
tree12c6924cc65c2b9c5da45df2e3a2fde188f07681 /src/api/schema.rs
parent05a6d89e33e722376688c679ab0d7322014814a1 (diff)
feat(api): expose done as agent status
Diffstat (limited to 'src/api/schema.rs')
-rw-r--r--src/api/schema.rs58
1 files changed, 34 insertions, 24 deletions
diff --git a/src/api/schema.rs b/src/api/schema.rs
index 063663fa..568a276b 100644
--- a/src/api/schema.rs
+++ b/src/api/schema.rs
@@ -253,11 +253,11 @@ pub enum Subscription {
#[serde(default = "default_true")]
strip_ansi: bool,
},
- #[serde(rename = "pane.agent_state_changed")]
- PaneAgentStateChanged {
+ #[serde(rename = "pane.agent_status_changed")]
+ PaneAgentStatusChanged {
pane_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
- state: Option<PaneAgentState>,
+ agent_status: Option<AgentStatus>,
},
}
@@ -348,9 +348,9 @@ pub enum EventMatch {
#[serde(default, skip_serializing_if = "Option::is_none")]
agent: Option<String>,
},
- PaneAgentStateChanged {
+ PaneAgentStatusChanged {
pane_id: String,
- state: PaneAgentState,
+ agent_status: AgentStatus,
},
}
@@ -371,7 +371,7 @@ pub enum EventKind {
PaneOutputChanged,
PaneExited,
PaneAgentDetected,
- PaneAgentStateChanged,
+ PaneAgentStatusChanged,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -441,7 +441,7 @@ pub struct WorkspaceInfo {
pub pane_count: usize,
pub tab_count: usize,
pub active_tab_id: String,
- pub agent_state: PaneAgentState,
+ pub agent_status: AgentStatus,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -452,7 +452,7 @@ pub struct TabInfo {
pub label: String,
pub focused: bool,
pub pane_count: usize,
- pub agent_state: PaneAgentState,
+ pub agent_status: AgentStatus,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -465,7 +465,7 @@ pub struct PaneInfo {
pub cwd: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<String>,
- pub agent_state: PaneAgentState,
+ pub agent_status: AgentStatus,
pub revision: u64,
}
@@ -490,8 +490,8 @@ pub struct EventEnvelope {
pub enum SubscriptionEventKind {
#[serde(rename = "pane.output_matched")]
PaneOutputMatched,
- #[serde(rename = "pane.agent_state_changed")]
- PaneAgentStateChanged,
+ #[serde(rename = "pane.agent_status_changed")]
+ PaneAgentStatusChanged,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -504,7 +504,7 @@ pub struct SubscriptionEventEnvelope {
#[serde(untagged)]
pub enum SubscriptionEventData {
PaneOutputMatched(PaneOutputMatchedEvent),
- PaneAgentStateChanged(PaneAgentStateChangedEvent),
+ PaneAgentStatusChanged(PaneAgentStatusChangedEvent),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -515,10 +515,10 @@ pub struct PaneOutputMatchedEvent {
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
-pub struct PaneAgentStateChangedEvent {
+pub struct PaneAgentStatusChangedEvent {
pub pane_id: String,
pub workspace_id: String,
- pub state: PaneAgentState,
+ pub agent_status: AgentStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<String>,
}
@@ -581,10 +581,10 @@ pub enum EventData {
#[serde(default, skip_serializing_if = "Option::is_none")]
agent: Option<String>,
},
- PaneAgentStateChanged {
+ PaneAgentStatusChanged {
pane_id: String,
workspace_id: String,
- state: PaneAgentState,
+ agent_status: AgentStatus,
},
}
@@ -597,6 +597,16 @@ pub enum PaneAgentState {
Unknown,
}
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
+#[serde(rename_all = "snake_case")]
+pub enum AgentStatus {
+ Idle,
+ Working,
+ Blocked,
+ Done,
+ Unknown,
+}
+
fn default_true() -> bool {
true
}
@@ -777,9 +787,9 @@ mod tests {
"match": { "type": "substring", "value": "auth: received" }
},
{
- "type": "pane.agent_state_changed",
+ "type": "pane.agent_status_changed",
"pane_id": "p_1_1",
- "state": "blocked"
+ "agent_status": "done"
}
]
}
@@ -803,9 +813,9 @@ mod tests {
));
assert!(matches!(
&params.subscriptions[1],
- Subscription::PaneAgentStateChanged {
+ Subscription::PaneAgentStatusChanged {
pane_id,
- state: Some(PaneAgentState::Blocked),
+ agent_status: Some(AgentStatus::Done),
} if pane_id == "p_1_1"
));
}
@@ -872,9 +882,9 @@ mod tests {
"method": "events.wait",
"params": {
"match_event": {
- "event": "pane_agent_state_changed",
+ "event": "pane_agent_status_changed",
"pane_id": "p_1",
- "state": "blocked"
+ "agent_status": "done"
},
"timeout_ms": 30000
}
@@ -887,9 +897,9 @@ mod tests {
};
assert_eq!(
params.match_event,
- EventMatch::PaneAgentStateChanged {
+ EventMatch::PaneAgentStatusChanged {
pane_id: "p_1".into(),
- state: PaneAgentState::Blocked,
+ agent_status: AgentStatus::Done,
}
);
}