From e4de58b37f58d59d146158239ed218a8accd5c3c Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sun, 17 May 2026 01:41:16 +0300 Subject: feat: add agent start for server-owned terminals --- src/api/mod.rs | 2 ++ src/api/schema.rs | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'src/api') diff --git a/src/api/mod.rs b/src/api/mod.rs index 9a4134ab..4893c295 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -41,6 +41,7 @@ pub(crate) fn request_changes_ui(request: &Request) -> bool { | Method::TabClose(_) | Method::AgentRename(_) | Method::AgentFocus(_) + | Method::AgentStart(_) | Method::PaneSplit(_) | Method::PaneRename(_) | Method::PaneReportAgent(_) @@ -407,6 +408,7 @@ fn api_method_name(method: &Method) -> &'static str { Method::AgentSend(_) => "agent.send", Method::AgentRename(_) => "agent.rename", Method::AgentFocus(_) => "agent.focus", + Method::AgentStart(_) => "agent.start", Method::PaneSplit(_) => "pane.split", Method::PaneList(_) => "pane.list", Method::PaneGet(_) => "pane.get", diff --git a/src/api/schema.rs b/src/api/schema.rs index e6d24aaf..a82070e0 100644 --- a/src/api/schema.rs +++ b/src/api/schema.rs @@ -52,6 +52,8 @@ pub enum Method { AgentRename(AgentRenameParams), #[serde(rename = "agent.focus")] AgentFocus(AgentTarget), + #[serde(rename = "agent.start")] + AgentStart(AgentStartParams), #[serde(rename = "pane.split")] PaneSplit(PaneSplitParams), #[serde(rename = "pane.list")] @@ -179,6 +181,22 @@ pub struct AgentRenameParams { pub name: Option, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct AgentStartParams { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cwd: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub workspace_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tab_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub split: Option, + #[serde(default)] + pub focus: bool, + pub argv: Vec, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PaneSplitParams { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -523,6 +541,10 @@ pub enum ResponseResult { AgentInfo { agent: AgentInfo, }, + AgentStarted { + agent: AgentInfo, + argv: Vec, + }, AgentList { agents: Vec, }, -- cgit v1.2.3