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 AgentSendKeysParams { pub target: String, pub keys: Vec, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentWaitParams { pub target: String, #[serde(default, skip_serializing_if = "Vec::is_empty")] pub until: Vec, #[serde(default, skip_serializing_if = "Option::is_none")] pub timeout_ms: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentPromptWaitOptions { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub until: Vec, #[serde(default, skip_serializing_if = "Option::is_none")] pub timeout_ms: Option, } #[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 AgentViewSetParams { pub source: String, #[serde(default, skip_serializing_if = "Option::is_none")] pub label: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub filter: Option, #[serde(default, skip_serializing_if = "Vec::is_empty")] pub sort: Vec, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)] pub struct AgentViewClearParams { #[serde(default, skip_serializing_if = "Option::is_none")] pub source: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(tag = "op", rename_all = "snake_case")] pub enum AgentViewFilter { All { filters: Vec, }, Any { filters: Vec, }, Not { filter: Box, }, Eq { field: AgentViewField, value: AgentViewValue, }, In { field: AgentViewField, values: Vec, }, Exists { field: AgentViewField, }, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(untagged)] pub enum AgentViewField { Builtin(AgentViewBuiltinField), Token { token: String }, } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] pub enum AgentViewBuiltinField { Status, WorkspaceId, TabId, PaneId, Agent, Seen, StateChangeSeq, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(untagged)] pub enum AgentViewValue { String(String), Bool(bool), Number(u64), Context { context: AgentViewContext }, } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] pub enum AgentViewContext { CurrentWorkspaceId, CurrentTabId, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] pub struct AgentViewSort { pub field: AgentViewSortField, #[serde(default)] pub order: AgentViewSortOrder, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(untagged)] pub enum AgentViewSortField { Builtin(AgentViewBuiltinSortField), Token { token: String }, } #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] pub enum AgentViewBuiltinSortField { WorkspaceOrder, TabOrder, PaneOrder, Attention, Status, Agent, Seen, StateChangeSeq, } #[derive( Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default, )] #[serde(rename_all = "snake_case")] pub enum AgentViewSortOrder { #[default] Asc, Desc, } #[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, #[serde(default, skip_serializing_if = "Option::is_none")] pub wait: Option, } #[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, }