codex_app_server_sdk/protocol/
responses.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4macro_rules! opaque_struct {
5 ($name:ident) => {
6 #[derive(Debug, Clone, Serialize, Deserialize, Default)]
7 #[serde(rename_all = "camelCase")]
8 pub struct $name {
9 #[serde(flatten)]
10 pub extra: serde_json::Map<String, Value>,
11 }
12 };
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, Default)]
16#[serde(rename_all = "camelCase")]
17pub struct InitializeResult {
18 #[serde(default, skip_serializing_if = "Option::is_none")]
19 pub user_agent: Option<String>,
20 #[serde(flatten)]
21 pub extra: serde_json::Map<String, Value>,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, Default)]
25#[serde(rename_all = "camelCase")]
26pub struct ThreadSummary {
27 pub id: String,
28 #[serde(default, skip_serializing_if = "Option::is_none")]
29 pub model: Option<String>,
30 #[serde(default, skip_serializing_if = "Option::is_none")]
31 pub title: Option<String>,
32 #[serde(default, skip_serializing_if = "Option::is_none")]
33 pub source_kind: Option<String>,
34 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub archived: Option<bool>,
36 #[serde(flatten)]
37 pub extra: serde_json::Map<String, Value>,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize, Default)]
41#[serde(rename_all = "camelCase")]
42pub struct TurnError {
43 pub message: String,
44 #[serde(default, skip_serializing_if = "Option::is_none")]
45 pub codex_error_info: Option<Value>,
46 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub additional_details: Option<Value>,
48 #[serde(flatten)]
49 pub extra: serde_json::Map<String, Value>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize, Default)]
53#[serde(rename_all = "camelCase")]
54pub struct Turn {
55 pub id: String,
56 #[serde(default, skip_serializing_if = "Option::is_none")]
57 pub status: Option<String>,
58 #[serde(default)]
59 pub items: Vec<Value>,
60 #[serde(default, skip_serializing_if = "Option::is_none")]
61 pub error: Option<TurnError>,
62 #[serde(flatten)]
63 pub extra: serde_json::Map<String, Value>,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize, Default)]
67#[serde(rename_all = "camelCase")]
68pub struct ThreadResult {
69 pub thread: ThreadSummary,
70 #[serde(flatten)]
71 pub extra: serde_json::Map<String, Value>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize, Default)]
75#[serde(rename_all = "camelCase")]
76pub struct TurnResult {
77 pub turn: Turn,
78 #[serde(flatten)]
79 pub extra: serde_json::Map<String, Value>,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize, Default)]
83#[serde(rename_all = "camelCase")]
84pub struct TurnSteerResult {
85 pub turn_id: String,
86 #[serde(flatten)]
87 pub extra: serde_json::Map<String, Value>,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize, Default)]
91#[serde(rename_all = "camelCase")]
92pub struct ThreadListResult {
93 #[serde(default)]
94 pub data: Vec<ThreadSummary>,
95 #[serde(default, skip_serializing_if = "Option::is_none")]
96 pub next_cursor: Option<String>,
97 #[serde(flatten)]
98 pub extra: serde_json::Map<String, Value>,
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize, Default)]
102#[serde(rename_all = "camelCase")]
103pub struct ThreadLoadedListResult {
104 #[serde(default)]
105 pub data: Vec<String>,
106 #[serde(flatten)]
107 pub extra: serde_json::Map<String, Value>,
108}
109
110#[derive(Debug, Clone, Serialize, Deserialize, Default)]
111#[serde(rename_all = "camelCase")]
112pub struct ModelInfo {
113 pub id: String,
114 pub model: String,
115 #[serde(default, skip_serializing_if = "Option::is_none")]
116 pub display_name: Option<String>,
117 #[serde(default, skip_serializing_if = "Option::is_none")]
118 pub upgrade: Option<String>,
119 #[serde(default, skip_serializing_if = "Option::is_none")]
120 pub default_reasoning_effort: Option<String>,
121 #[serde(default)]
122 pub input_modalities: Vec<String>,
123 #[serde(default, skip_serializing_if = "Option::is_none")]
124 pub supports_personality: Option<bool>,
125 #[serde(default, skip_serializing_if = "Option::is_none")]
126 pub is_default: Option<bool>,
127 #[serde(flatten)]
128 pub extra: serde_json::Map<String, Value>,
129}
130
131#[derive(Debug, Clone, Serialize, Deserialize, Default)]
132#[serde(rename_all = "camelCase")]
133pub struct ModelListResult {
134 #[serde(default)]
135 pub data: Vec<ModelInfo>,
136 #[serde(default, skip_serializing_if = "Option::is_none")]
137 pub next_cursor: Option<String>,
138 #[serde(flatten)]
139 pub extra: serde_json::Map<String, Value>,
140}
141
142opaque_struct!(ExperimentalFeatureListResult);
143opaque_struct!(CollaborationModeListResult);
144opaque_struct!(MockExperimentalMethodResult);
145opaque_struct!(SkillsListResult);
146opaque_struct!(SkillsRemoteReadResult);
147opaque_struct!(SkillsRemoteWriteResult);
148opaque_struct!(SkillsConfigWriteResult);
149opaque_struct!(AppsListResult);
150opaque_struct!(ReviewStartResult);
151opaque_struct!(McpServerOauthLoginResult);
152opaque_struct!(McpServerStatusListResult);
153opaque_struct!(FeedbackUploadResult);
154opaque_struct!(CommandExecResult);
155opaque_struct!(ConfigReadResult);
156opaque_struct!(ConfigValueWriteResult);
157opaque_struct!(ConfigBatchWriteResult);
158opaque_struct!(ConfigRequirementsReadResult);
159opaque_struct!(WindowsSandboxSetupStartResult);
160opaque_struct!(LoginAccountResult);
161opaque_struct!(GetAccountResult);
162opaque_struct!(AccountRateLimitsReadResult);
163opaque_struct!(ThreadArchiveResult);
164opaque_struct!(ThreadUnarchiveResult);
165opaque_struct!(ThreadCompactStartResult);
166opaque_struct!(ThreadBackgroundTerminalsCleanResult);
167opaque_struct!(ThreadSetNameResult);
168opaque_struct!(ThreadRollbackResult);
169opaque_struct!(ThreadReadResult);
170opaque_struct!(FuzzyFileSearchSessionStartResult);
171opaque_struct!(FuzzyFileSearchSessionUpdateResult);
172opaque_struct!(FuzzyFileSearchSessionStopResult);