From 86adf88351e17c6a11cac253714b169eac0db233 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sun, 17 May 2026 01:41:16 +0300 Subject: feat: add terminal identity and agent cli facade --- src/api/schema.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'src/api/schema.rs') diff --git a/src/api/schema.rs b/src/api/schema.rs index bed8415a..e6d24aaf 100644 --- a/src/api/schema.rs +++ b/src/api/schema.rs @@ -40,6 +40,18 @@ pub enum Method { TabRename(TabRenameParams), #[serde(rename = "tab.close")] TabClose(TabTarget), + #[serde(rename = "agent.list")] + AgentList(EmptyParams), + #[serde(rename = "agent.get")] + AgentGet(AgentTarget), + #[serde(rename = "agent.read")] + AgentRead(AgentReadParams), + #[serde(rename = "agent.send")] + AgentSend(AgentSendParams), + #[serde(rename = "agent.rename")] + AgentRename(AgentRenameParams), + #[serde(rename = "agent.focus")] + AgentFocus(AgentTarget), #[serde(rename = "pane.split")] PaneSplit(PaneSplitParams), #[serde(rename = "pane.list")] @@ -137,6 +149,36 @@ pub struct TabRenameParams { pub label: String, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct AgentTarget { + pub target: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct AgentReadParams { + pub target: String, + pub source: ReadSource, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub lines: Option, + #[serde(default)] + pub format: ReadFormat, + #[serde(default = "default_true")] + pub strip_ansi: bool, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct AgentSendParams { + pub target: String, + pub text: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct AgentRenameParams { + pub target: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PaneSplitParams { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -478,6 +520,12 @@ pub enum ResponseResult { TabList { tabs: Vec, }, + AgentInfo { + agent: AgentInfo, + }, + AgentList { + agents: Vec, + }, PaneInfo { pane: PaneInfo, }, @@ -535,9 +583,27 @@ pub struct TabInfo { pub agent_status: AgentStatus, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct AgentInfo { + pub terminal_id: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent: Option, + pub agent_status: AgentStatus, + pub workspace_id: String, + pub tab_id: String, + pub pane_id: String, + pub focused: bool, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cwd: Option, + pub revision: u64, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PaneInfo { pub pane_id: String, + pub terminal_id: String, pub workspace_id: String, pub tab_id: String, pub focused: bool, @@ -1028,6 +1094,7 @@ mod tests { }, root_pane: PaneInfo { pane_id: "w_1-3".into(), + terminal_id: "term_example".into(), workspace_id: "w_1".into(), tab_id: "w_1:2".into(), focused: false, -- cgit v1.2.3