zagens_runtime_api/openapi/
schemas.rs1use 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
94pub type SchemaExportFn = fn() -> schemars::Schema;
96
97pub 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];