diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-29 21:36:48 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-06-29 21:36:48 +0300 |
| commit | 9150ed6268874d1f2a314b1ddbf531b66df1e105 (patch) | |
| tree | b8e8c35fb703b5b59babbdb8e4d732f906face41 /src/api/schema/session.rs | |
| parent | f36d8043594489508046ff0852989ec08f52188a (diff) | |
feat: add session snapshot api
Diffstat (limited to 'src/api/schema/session.rs')
| -rw-r--r-- | src/api/schema/session.rs | 23 |
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>, +} |
