1use codex_mobile_contracts::{
2 BridgeManagementOperation, DraftImageAttachment, DraftImageSendMode, QueueDispatchMode,
3};
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7#[derive(Debug, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct GetRuntimeStatusRequest {
10 pub runtime_id: Option<String>,
11}
12
13#[derive(Debug, Deserialize)]
14#[serde(rename_all = "camelCase")]
15pub struct StartBridgeManagementRequest {
16 pub operation: BridgeManagementOperation,
17}
18
19#[derive(Debug, Deserialize, Default)]
20#[serde(rename_all = "camelCase")]
21pub struct ReadBridgeManagementRequest {
22 pub task_id: Option<String>,
23}
24
25#[derive(Debug, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct StartRuntimeRequest {
28 pub runtime_id: Option<String>,
29 pub display_name: Option<String>,
30 pub codex_home: Option<String>,
31 pub codex_binary: Option<String>,
32 pub auto_start: Option<bool>,
33}
34
35#[derive(Debug, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct StopRuntimeRequest {
38 pub runtime_id: String,
39}
40
41#[derive(Debug, Deserialize)]
42#[serde(rename_all = "camelCase")]
43pub struct RestartRuntimeRequest {
44 pub runtime_id: String,
45}
46
47#[derive(Debug, Deserialize)]
48#[serde(rename_all = "camelCase")]
49pub struct PruneRuntimeRequest {
50 pub runtime_id: String,
51}
52
53#[derive(Debug, Deserialize)]
54#[serde(rename_all = "camelCase")]
55pub struct CreateDirectoryBookmarkRequest {
56 pub path: String,
57 pub display_name: Option<String>,
58}
59
60#[derive(Debug, Deserialize)]
61#[serde(rename_all = "camelCase")]
62pub struct RemoveDirectoryBookmarkRequest {
63 pub path: String,
64}
65
66#[derive(Debug, Deserialize)]
67#[serde(rename_all = "camelCase")]
68pub struct ReadDirectoryRequest {
69 pub runtime_id: Option<String>,
70 pub path: String,
71}
72
73#[derive(Debug, Deserialize)]
74#[serde(rename_all = "camelCase")]
75pub struct ListThreadsRequest {
76 pub directory_prefix: Option<String>,
77 pub runtime_id: Option<String>,
78 pub limit: Option<usize>,
79 pub cursor: Option<String>,
80 pub archived: Option<bool>,
81 pub search_term: Option<String>,
82}
83
84#[derive(Debug, Deserialize)]
85#[serde(rename_all = "camelCase")]
86pub struct StartThreadRequest {
87 pub runtime_id: Option<String>,
88 pub cwd: String,
89 pub model: Option<String>,
90 pub name: Option<String>,
91}
92
93#[derive(Debug, Deserialize)]
94#[serde(rename_all = "camelCase")]
95pub struct ResumeThreadRequest {
96 pub thread_id: String,
97 pub cwd: Option<String>,
98}
99
100#[derive(Debug, Deserialize)]
101#[serde(rename_all = "camelCase")]
102pub struct ReadThreadRequest {
103 pub thread_id: String,
104}
105
106#[derive(Debug, Deserialize)]
107#[serde(rename_all = "camelCase")]
108pub struct StageInputImageRequest {
109 pub file_name: Option<String>,
110 pub mime_type: Option<String>,
111 pub base64_data: String,
112}
113
114#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
115#[serde(rename_all = "camelCase")]
116#[serde(default)]
117pub struct StagedInputImage {
118 pub local_path: String,
119 pub display_name: Option<String>,
120 pub mime_type: Option<String>,
121 pub size_bytes: i64,
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
125#[serde(tag = "type", rename_all = "camelCase")]
126pub enum SendTurnInputItem {
127 Text { text: String },
128 Image { url: String },
129 LocalImage { path: String },
130}
131
132#[derive(Debug, Deserialize)]
133#[serde(rename_all = "camelCase")]
134pub struct SendTurnRequest {
135 pub thread_id: String,
136 #[serde(default)]
137 pub text: String,
138 pub input_items: Option<Vec<SendTurnInputItem>>,
139 pub cwd: Option<String>,
140}
141
142#[derive(Debug, Deserialize)]
143#[serde(rename_all = "camelCase")]
144pub struct InterruptTurnRequest {
145 pub thread_id: String,
146 pub turn_id: String,
147}
148
149#[derive(Debug, Deserialize)]
150#[serde(rename_all = "camelCase")]
151pub struct UpdateThreadRequest {
152 pub thread_id: String,
153 pub name: Option<String>,
154}
155
156#[derive(Debug, Deserialize)]
157#[serde(rename_all = "camelCase")]
158pub struct ArchiveThreadRequest {
159 pub thread_id: String,
160}
161
162#[derive(Debug, Deserialize)]
163#[serde(rename_all = "camelCase")]
164pub struct UnarchiveThreadRequest {
165 pub thread_id: String,
166}
167
168#[derive(Debug, Deserialize)]
169#[serde(rename_all = "camelCase")]
170pub struct RespondPendingRequestRequest {
171 pub request_id: String,
172 pub response: Value,
173}
174
175#[derive(Debug, Deserialize)]
176#[serde(rename_all = "camelCase")]
177pub struct EnqueueThreadMessageRequest {
178 pub thread_id: String,
179 pub dispatch_mode: QueueDispatchMode,
180 #[serde(default)]
181 pub text: String,
182 pub input_items: Option<Vec<SendTurnInputItem>>,
183 #[serde(default)]
184 pub draft_images: Vec<DraftImageAttachment>,
185 pub image_send_mode: DraftImageSendMode,
186 pub cwd: Option<String>,
187 pub armed_turn_id: Option<String>,
188}
189
190#[derive(Debug, Deserialize)]
191#[serde(rename_all = "camelCase")]
192pub struct UpdateQueuedThreadMessageRequest {
193 pub queue_id: String,
194 #[serde(default)]
195 pub text: String,
196 pub input_items: Option<Vec<SendTurnInputItem>>,
197 #[serde(default)]
198 pub draft_images: Vec<DraftImageAttachment>,
199 pub image_send_mode: DraftImageSendMode,
200 pub cwd: Option<String>,
201}
202
203#[derive(Debug, Deserialize)]
204#[serde(rename_all = "camelCase")]
205pub struct DeleteQueuedThreadMessageRequest {
206 pub queue_id: String,
207}
208
209#[derive(Debug, Deserialize)]
210#[serde(rename_all = "camelCase")]
211pub struct ClearThreadQueueRequest {
212 pub thread_id: String,
213}
214
215#[derive(Debug, Deserialize)]
216#[serde(rename_all = "camelCase")]
217pub struct ReserveQueuedThreadMessageForEditRequest {
218 pub queue_id: String,
219}
220
221#[derive(Debug, Deserialize)]
222#[serde(rename_all = "camelCase")]
223pub struct CancelQueuedThreadMessageEditRequest {
224 pub queue_id: String,
225}