aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/session.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 21:36:48 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-06-29 21:36:48 +0300
commit9150ed6268874d1f2a314b1ddbf531b66df1e105 (patch)
treeb8e8c35fb703b5b59babbdb8e4d732f906face41 /src/api/schema/session.rs
parentf36d8043594489508046ff0852989ec08f52188a (diff)
feat: add session snapshot api
Diffstat (limited to 'src/api/schema/session.rs')
-rw-r--r--src/api/schema/session.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/api/schema/session.rs b/src/api/schema/session.rs
new file mode 100644
index 00000000..b51f6969
--- /dev/null
+++ b/src/api/schema/session.rs
@@ -0,0 +1,23 @@
+use serde::{Deserialize, Serialize};
+
+use super::agents::AgentInfo;
+use super::panes::{PaneInfo, PaneLayoutSnapshot};
+use super::tabs::TabInfo;
+use super::workspaces::WorkspaceInfo;
+
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
+pub struct SessionSnapshot {
+ pub version: String,
+ pub protocol: u32,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub focused_workspace_id: Option<String>,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub focused_tab_id: Option<String>,
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub focused_pane_id: Option<String>,
+ pub workspaces: Vec<WorkspaceInfo>,
+ pub tabs: Vec<TabInfo>,
+ pub panes: Vec<PaneInfo>,
+ pub layouts: Vec<PaneLayoutSnapshot>,
+ pub agents: Vec<AgentInfo>,
+}