aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/agents.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-20 00:54:05 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-20 00:55:36 +0300
commitd30ab1b54f6b6be95a0cb47ddc38da1d5e088700 (patch)
treeeb2002b408c856d9fcd7a573afe73b917f22cd97 /src/api/schema/agents.rs
parent3f80947678a9723434aa7fddfe23750b5393e24c (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.rs114
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,