diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-20 00:54:05 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-20 00:55:36 +0300 |
| commit | d30ab1b54f6b6be95a0cb47ddc38da1d5e088700 (patch) | |
| tree | eb2002b408c856d9fcd7a573afe73b917f22cd97 /src/api/schema/agents.rs | |
| parent | 3f80947678a9723434aa7fddfe23750b5393e24c (diff) | |
feat: add plugin-driven agent views and startup hooks
Diffstat (limited to 'src/api/schema/agents.rs')
| -rw-r--r-- | src/api/schema/agents.rs | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/src/api/schema/agents.rs b/src/api/schema/agents.rs index 59949293..9e1e7b15 100644 --- a/src/api/schema/agents.rs +++ b/src/api/schema/agents.rs @@ -47,6 +47,120 @@ pub struct AgentRenameParams { } #[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<String>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub filter: Option<AgentViewFilter>, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub sort: Vec<AgentViewSort>, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema, Default)] +pub struct AgentViewClearParams { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub source: Option<String>, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)] +#[serde(tag = "op", rename_all = "snake_case")] +pub enum AgentViewFilter { + All { + filters: Vec<AgentViewFilter>, + }, + Any { + filters: Vec<AgentViewFilter>, + }, + Not { + filter: Box<AgentViewFilter>, + }, + Eq { + field: AgentViewField, + value: AgentViewValue, + }, + In { + field: AgentViewField, + values: Vec<AgentViewValue>, + }, + 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, |
