From d4a5e02e8433db156b9dabe2b81ddd1d2aca9ea6 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Mon, 25 May 2026 15:36:50 +0300 Subject: feat: hand off ptys during updates --- src/api/schema.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/api/schema.rs') diff --git a/src/api/schema.rs b/src/api/schema.rs index 907bc2b6..4929d4a7 100644 --- a/src/api/schema.rs +++ b/src/api/schema.rs @@ -14,6 +14,8 @@ pub enum Method { Ping(PingParams), #[serde(rename = "server.stop")] ServerStop(EmptyParams), + #[serde(rename = "server.live_handoff")] + ServerLiveHandoff(ServerLiveHandoffParams), #[serde(rename = "server.reload_config")] ServerReloadConfig(EmptyParams), #[serde(rename = "workspace.create")] @@ -307,6 +309,16 @@ pub struct PaneSendInputParams { pub keys: Vec, } +#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)] +pub struct ServerLiveHandoffParams { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub import_exe: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expected_protocol: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expected_version: Option, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PaneReadParams { pub pane_id: String, @@ -581,12 +593,19 @@ pub struct ErrorBody { pub message: String, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct ServerCapabilities { + pub live_handoff: bool, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] pub enum ResponseResult { Pong { version: String, protocol: u32, + #[serde(default)] + capabilities: Option, }, WorkspaceInfo { workspace: WorkspaceInfo, @@ -1225,6 +1244,7 @@ mod tests { result: ResponseResult::Pong { version: "0.1.2".into(), protocol: 6, + capabilities: Some(ServerCapabilities { live_handoff: true }), }, }; -- cgit v1.2.3