use std::collections::HashMap; use serde::{Deserialize, Serialize}; use super::common::AgentStatus; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceCreateParams { #[serde(default, skip_serializing_if = "Option::is_none")] pub cwd: Option, #[serde(default)] pub focus: bool, #[serde(default, skip_serializing_if = "Option::is_none")] pub label: Option, #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub env: HashMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceCloseParams { pub workspace_id: String, #[serde(default, skip_serializing_if = "super::is_false")] pub close_group: bool, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceRenameParams { pub workspace_id: String, pub label: String, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceMoveParams { pub workspace_id: String, pub insert_index: usize, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceMoveBlockParams { pub workspace_ids: Vec, #[serde(default, skip_serializing_if = "Option::is_none")] pub before_workspace_id: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceReportMetadataParams { pub workspace_id: String, pub source: String, #[schemars(schema_with = "super::common::metadata_token_patch_schema")] pub tokens: HashMap>, #[serde(default, skip_serializing_if = "Option::is_none")] pub seq: Option, #[serde(default, skip_serializing_if = "Option::is_none")] #[schemars(range(min = 1, max = 86_400_000))] pub ttl_ms: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceInfo { pub workspace_id: String, pub number: usize, pub label: String, pub focused: bool, pub pane_count: usize, pub tab_count: usize, pub active_tab_id: String, pub agent_status: AgentStatus, #[serde(default, skip_serializing_if = "HashMap::is_empty")] #[schemars(schema_with = "super::common::metadata_token_values_schema")] pub tokens: HashMap, #[serde(default, skip_serializing_if = "Option::is_none")] pub worktree: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct WorkspaceWorktreeInfo { pub repo_key: String, pub repo_name: String, pub repo_root: String, pub checkout_path: String, pub is_linked_worktree: bool, }