diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 01:41:16 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-17 01:41:16 +0300 |
| commit | 86adf88351e17c6a11cac253714b169eac0db233 (patch) | |
| tree | 883d32b0126e0b69449e0e9c0a7017d279c23935 /src/api/schema.rs | |
| parent | d2aa8865911ded97a67054fb2392a1c12fae018c (diff) | |
feat: add terminal identity and agent cli facade
Diffstat (limited to 'src/api/schema.rs')
| -rw-r--r-- | src/api/schema.rs | 67 |
1 files changed, 67 insertions, 0 deletions
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")] @@ -138,6 +150,36 @@ pub struct TabRenameParams { } #[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<u32>, + #[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<String>, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PaneSplitParams { #[serde(default, skip_serializing_if = "Option::is_none")] pub workspace_id: Option<String>, @@ -478,6 +520,12 @@ pub enum ResponseResult { TabList { tabs: Vec<TabInfo>, }, + AgentInfo { + agent: AgentInfo, + }, + AgentList { + agents: Vec<AgentInfo>, + }, PaneInfo { pane: PaneInfo, }, @@ -536,8 +584,26 @@ pub struct TabInfo { } #[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<String>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent: Option<String>, + 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<String>, + 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, |
