use std::collections::HashMap; use serde::{Deserialize, Serialize}; use super::common::{AgentStatus, ReadFormat, ReadSource}; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentReadParams { pub target: String, pub source: ReadSource, #[serde(default, skip_serializing_if = "Option::is_none")] pub lines: Option, #[serde(default)] pub format: ReadFormat, #[serde(default = "super::common::default_true")] pub strip_ansi: bool, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentSendParams { pub target: String, pub text: String, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentRenameParams { pub target: String, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentStartParams { pub name: String, pub kind: String, pub pane_id: String, #[serde(default, skip_serializing_if = "Vec::is_empty")] pub args: Vec, /// Startup timeout in milliseconds. Values must be greater than 3000 and at most 300000. #[serde(default, skip_serializing_if = "Option::is_none")] pub timeout_ms: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentPromptParams { pub target: String, pub text: String, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentInfo { pub terminal_id: String, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub agent: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub title: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub terminal_title: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub terminal_title_stripped: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub display_agent: Option, pub agent_status: AgentStatus, #[serde(default, skip_serializing_if = "super::is_false")] pub screen_detection_skipped: bool, #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub state_labels: HashMap, #[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 agent_session: Option, pub workspace_id: String, pub tab_id: String, pub pane_id: String, pub focused: bool, #[serde(default, skip_serializing_if = "super::is_false")] pub launch_pending: bool, #[serde(default, skip_serializing_if = "super::is_false")] pub interactive_ready: bool, #[serde(default)] pub state_change_seq: u64, #[serde(default, skip_serializing_if = "Option::is_none")] pub cwd: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub foreground_cwd: Option, pub revision: u64, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentSessionInfo { pub source: String, pub agent: String, pub kind: crate::agent_resume::AgentSessionRefKind, pub value: String, }