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, schemars::JsonSchema)] pub struct SessionSnapshot { pub version: String, pub protocol: u32, #[serde(default, skip_serializing_if = "Option::is_none")] pub focused_workspace_id: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub focused_tab_id: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub focused_pane_id: Option, pub workspaces: Vec, pub tabs: Vec, pub panes: Vec, pub layouts: Vec, pub agents: Vec, }