aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 01:41:16 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 01:41:16 +0300
commit86adf88351e17c6a11cac253714b169eac0db233 (patch)
tree883d32b0126e0b69449e0e9c0a7017d279c23935 /src/api/schema.rs
parentd2aa8865911ded97a67054fb2392a1c12fae018c (diff)
feat: add terminal identity and agent cli facade
Diffstat (limited to 'src/api/schema.rs')
-rw-r--r--src/api/schema.rs67
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,