aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/panes.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 22:27:19 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 22:27:19 +0300
commit25aeaa46f6c807be686b710c5c3aa656969f07e5 (patch)
tree8b9b4d4abce5951c2d87ee22c38eacb544eff81a /src/api/schema/panes.rs
parent9150ed6268874d1f2a314b1ddbf531b66df1e105 (diff)
feat: generate socket protocol schema
Diffstat (limited to 'src/api/schema/panes.rs')
-rw-r--r--src/api/schema/panes.rs104
1 files changed, 53 insertions, 51 deletions
diff --git a/src/api/schema/panes.rs b/src/api/schema/panes.rs
index 55241131..ef45a7ca 100644
--- a/src/api/schema/panes.rs
+++ b/src/api/schema/panes.rs
@@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
use super::agents::AgentSessionInfo;
use super::common::{AgentStatus, PaneAgentState, ReadFormat, ReadSource, SplitDirection};
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneSplitParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub workspace_id: Option<String>,
@@ -22,7 +22,7 @@ pub struct PaneSplitParams {
pub env: HashMap<String, String>,
}
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum PaneDirection {
Left,
@@ -31,7 +31,7 @@ pub enum PaneDirection {
Down,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneSwapParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
@@ -43,7 +43,7 @@ pub struct PaneSwapParams {
pub target_pane_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneMoveParams {
pub pane_id: String,
pub destination: PaneMoveDestination,
@@ -51,7 +51,7 @@ pub struct PaneMoveParams {
pub focus: bool,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum PaneMoveDestination {
Tab {
@@ -76,7 +76,7 @@ pub enum PaneMoveDestination {
},
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneZoomParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
@@ -84,7 +84,9 @@ pub struct PaneZoomParams {
pub mode: PaneZoomMode,
}
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(
+ Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default,
+)]
#[serde(rename_all = "snake_case")]
pub enum PaneZoomMode {
#[default]
@@ -93,19 +95,19 @@ pub enum PaneZoomMode {
Off,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneLayoutParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneProcessInfoParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct LayoutExportParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tab_id: Option<String>,
@@ -113,7 +115,7 @@ pub struct LayoutExportParams {
pub pane_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct LayoutApplyParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub workspace_id: Option<String>,
@@ -126,7 +128,7 @@ pub struct LayoutApplyParams {
pub root: LayoutNode,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct LayoutSetSplitRatioParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tab_id: Option<String>,
@@ -136,7 +138,7 @@ pub struct LayoutSetSplitRatioParams {
pub ratio: f32,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct LayoutDescription {
pub workspace_id: String,
pub tab_id: String,
@@ -145,7 +147,7 @@ pub struct LayoutDescription {
pub root: LayoutNode,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum LayoutNode {
Pane {
@@ -160,7 +162,7 @@ pub enum LayoutNode {
},
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct LayoutPane {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
@@ -174,27 +176,27 @@ pub struct LayoutPane {
pub env: HashMap<String, String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneNeighborParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
pub direction: PaneDirection,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneEdgesParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneFocusDirectionParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
pub direction: PaneDirection,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneResizeParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pane_id: Option<String>,
@@ -203,38 +205,38 @@ pub struct PaneResizeParams {
pub amount: Option<f32>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneListParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub workspace_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)]
pub struct PaneCurrentParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub caller_pane_id: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneRenameParams {
pub pane_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneSendTextParams {
pub pane_id: String,
pub text: String,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneSendKeysParams {
pub pane_id: String,
pub keys: Vec<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneSendInputParams {
pub pane_id: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
@@ -243,7 +245,7 @@ pub struct PaneSendInputParams {
pub keys: Vec<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneReadParams {
pub pane_id: String,
pub source: ReadSource,
@@ -255,7 +257,7 @@ pub struct PaneReadParams {
pub strip_ansi: bool,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneReportAgentParams {
pub pane_id: String,
pub source: String,
@@ -273,7 +275,7 @@ pub struct PaneReportAgentParams {
pub agent_session_path: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneReportAgentSessionParams {
pub pane_id: String,
pub source: String,
@@ -288,7 +290,7 @@ pub struct PaneReportAgentSessionParams {
pub session_start_source: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneReportMetadataParams {
pub pane_id: String,
pub source: String,
@@ -318,7 +320,7 @@ pub struct PaneReportMetadataParams {
pub ttl_ms: Option<u64>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneClearAgentAuthorityParams {
pub pane_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -327,7 +329,7 @@ pub struct PaneClearAgentAuthorityParams {
pub seq: Option<u64>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneReleaseAgentParams {
pub pane_id: String,
pub source: String,
@@ -336,7 +338,7 @@ pub struct PaneReleaseAgentParams {
pub seq: Option<u64>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneInfo {
pub pane_id: String,
pub terminal_id: String,
@@ -365,7 +367,7 @@ pub struct PaneInfo {
pub revision: u64,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneProcessInfo {
pub pane_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -378,7 +380,7 @@ pub struct PaneProcessInfo {
pub foreground_processes: Vec<PaneProcessInfoProcess>,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneProcessInfoProcess {
pub pid: u32,
pub name: String,
@@ -392,7 +394,7 @@ pub struct PaneProcessInfoProcess {
pub cwd: Option<String>,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneSwapResult {
pub changed: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -404,7 +406,7 @@ pub struct PaneSwapResult {
pub layout: PaneLayoutSnapshot,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum PaneSwapReason {
NoNeighbor,
@@ -413,7 +415,7 @@ pub enum PaneSwapReason {
CrossTab,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneMoveResult {
pub changed: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -436,14 +438,14 @@ pub struct PaneMoveResult {
pub focused_pane_id: String,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum PaneMoveReason {
SameTab,
ZoomedTab,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneZoomResult {
pub changed: bool,
pub zoom_changed: bool,
@@ -456,7 +458,7 @@ pub struct PaneZoomResult {
pub layout: PaneLayoutSnapshot,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum PaneZoomReason {
SinglePane,
@@ -464,7 +466,7 @@ pub enum PaneZoomReason {
AlreadyUnzoomed,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneLayoutSnapshot {
pub workspace_id: String,
pub tab_id: String,
@@ -475,7 +477,7 @@ pub struct PaneLayoutSnapshot {
pub splits: Vec<PaneLayoutSplit>,
}
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneLayoutRect {
pub x: u16,
pub y: u16,
@@ -483,14 +485,14 @@ pub struct PaneLayoutRect {
pub height: u16,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneLayoutPane {
pub pane_id: String,
pub focused: bool,
pub rect: PaneLayoutRect,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneLayoutSplit {
pub id: String,
pub direction: SplitDirection,
@@ -498,7 +500,7 @@ pub struct PaneLayoutSplit {
pub rect: PaneLayoutRect,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneNeighborResult {
pub pane_id: String,
pub direction: PaneDirection,
@@ -507,7 +509,7 @@ pub struct PaneNeighborResult {
pub layout: PaneLayoutSnapshot,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneEdgesResult {
pub pane_id: String,
pub left: bool,
@@ -517,7 +519,7 @@ pub struct PaneEdgesResult {
pub layout: PaneLayoutSnapshot,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneFocusDirectionResult {
pub changed: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -528,13 +530,13 @@ pub struct PaneFocusDirectionResult {
pub layout: PaneLayoutSnapshot,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum PaneFocusDirectionReason {
NoNeighbor,
}
-#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneResizeResult {
pub changed: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -544,13 +546,13 @@ pub struct PaneResizeResult {
pub layout: PaneLayoutSnapshot,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum PaneResizeReason {
Unchanged,
}
-#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct PaneReadResult {
pub pane_id: String,
pub workspace_id: String,