Skip to main content

zagens_runtime_api/openapi/
schemas.rs

1//! HTTP wire types for OpenAPI `components.schemas` (D8).
2
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7use crate::task::{TaskCounts, TaskRecord, TaskStatus, TaskSummary, TasksResponse};
8
9use zagens_core::coherence::CoherenceState;
10use zagens_core::models::{ServerToolUsage, Usage};
11use zagens_runtime_adapters::persist::SessionMetadata;
12use zagens_runtime_orchestrator::runtime_threads::{
13    CreateThreadRequest, RoutingRule, RoutingRulesDoc, RuntimeTurnStatus, StartTurnRequest,
14    SteerTurnRequest, ThreadDetail, ThreadRecord, TurnItemKind, TurnItemLifecycleStatus,
15    TurnItemRecord, TurnRecord, UpdateThreadRequest, UsageAggregation, UsageBucket, UsageTotals,
16};
17
18#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
19pub struct SessionsListResponse {
20    pub sessions: Vec<SessionMetadata>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
24pub struct SessionDetailResponse {
25    pub metadata: SessionMetadata,
26    pub messages: Vec<Value>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub system_prompt: Option<String>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
32pub struct ResumeSessionResponse {
33    pub thread_id: String,
34    pub session_id: String,
35    pub message_count: usize,
36    pub state: String,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
40pub struct StreamTurnRequest {
41    pub prompt: String,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub model: Option<String>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub mode: Option<String>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub workspace: Option<String>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub allow_shell: Option<bool>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub trust_mode: Option<bool>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub auto_approve: Option<bool>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub route_intent: Option<String>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub task_type: Option<String>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub temperature: Option<f32>,
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub top_p: Option<f32>,
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub max_tokens: Option<u32>,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
67pub struct ThreadSummary {
68    pub id: String,
69    pub title: String,
70    pub preview: String,
71    pub model: String,
72    pub mode: String,
73    pub archived: bool,
74    pub updated_at: String,
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub latest_turn_id: Option<String>,
77    #[serde(skip_serializing_if = "Option::is_none")]
78    pub latest_turn_status: Option<String>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
82pub struct StartTurnResponse {
83    pub thread: ThreadRecord,
84    pub turn: TurnRecord,
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub queued: Option<zagens_runtime_orchestrator::runtime_threads::PromptAdmission>,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
90pub struct ErrorBody {
91    pub error: String,
92}
93
94/// One OpenAPI component schema export (`name`, `schema_for!` thunk).
95pub type SchemaExportFn = fn() -> schemars::Schema;
96
97/// Core schemas exported to OpenAPI components.
98pub const SCHEMA_EXPORTS: &[(&str, SchemaExportFn)] = &[
99    ("CoherenceState", || schemars::schema_for!(CoherenceState)),
100    ("RuntimeTurnStatus", || {
101        schemars::schema_for!(RuntimeTurnStatus)
102    }),
103    ("TurnItemKind", || schemars::schema_for!(TurnItemKind)),
104    ("TurnItemLifecycleStatus", || {
105        schemars::schema_for!(TurnItemLifecycleStatus)
106    }),
107    ("Usage", || schemars::schema_for!(Usage)),
108    ("ServerToolUsage", || schemars::schema_for!(ServerToolUsage)),
109    ("SessionMetadata", || schemars::schema_for!(SessionMetadata)),
110    ("SessionsListResponse", || {
111        schemars::schema_for!(SessionsListResponse)
112    }),
113    ("SessionDetailResponse", || {
114        schemars::schema_for!(SessionDetailResponse)
115    }),
116    ("ResumeSessionResponse", || {
117        schemars::schema_for!(ResumeSessionResponse)
118    }),
119    ("ThreadRecord", || schemars::schema_for!(ThreadRecord)),
120    ("TurnItemRecord", || schemars::schema_for!(TurnItemRecord)),
121    ("ThreadDetail", || schemars::schema_for!(ThreadDetail)),
122    ("ThreadSummary", || schemars::schema_for!(ThreadSummary)),
123    ("TurnRecord", || schemars::schema_for!(TurnRecord)),
124    ("CreateThreadRequest", || {
125        schemars::schema_for!(CreateThreadRequest)
126    }),
127    ("UpdateThreadRequest", || {
128        schemars::schema_for!(UpdateThreadRequest)
129    }),
130    ("StartTurnRequest", || {
131        schemars::schema_for!(StartTurnRequest)
132    }),
133    ("SteerTurnRequest", || {
134        schemars::schema_for!(SteerTurnRequest)
135    }),
136    ("StartTurnResponse", || {
137        schemars::schema_for!(StartTurnResponse)
138    }),
139    ("StreamTurnRequest", || {
140        schemars::schema_for!(StreamTurnRequest)
141    }),
142    ("RoutingRule", || schemars::schema_for!(RoutingRule)),
143    ("RoutingRulesDoc", || schemars::schema_for!(RoutingRulesDoc)),
144    ("UsageTotals", || schemars::schema_for!(UsageTotals)),
145    ("UsageBucket", || schemars::schema_for!(UsageBucket)),
146    ("UsageAggregation", || {
147        schemars::schema_for!(UsageAggregation)
148    }),
149    ("ErrorBody", || schemars::schema_for!(ErrorBody)),
150    ("TaskRecord", || schemars::schema_for!(TaskRecord)),
151    ("TaskSummary", || schemars::schema_for!(TaskSummary)),
152    ("TaskCounts", || schemars::schema_for!(TaskCounts)),
153    ("TasksResponse", || schemars::schema_for!(TasksResponse)),
154    ("TaskStatus", || schemars::schema_for!(TaskStatus)),
155];