codex_protocol/
request_user_input.rs1use std::collections::HashMap;
2
3use schemars::JsonSchema;
4use serde::Deserialize;
5use serde::Serialize;
6use ts_rs::TS;
7
8#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
9pub struct RequestUserInputQuestionOption {
10 pub label: String,
11 pub description: String,
12}
13
14#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
15pub struct RequestUserInputQuestion {
16 pub id: String,
17 pub header: String,
18 pub question: String,
19 #[serde(rename = "isOther", default)]
20 #[schemars(rename = "isOther")]
21 #[ts(rename = "isOther")]
22 pub is_other: bool,
23 #[serde(rename = "isSecret", default)]
24 #[schemars(rename = "isSecret")]
25 #[ts(rename = "isSecret")]
26 pub is_secret: bool,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub options: Option<Vec<RequestUserInputQuestionOption>>,
29}
30
31#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
32pub struct RequestUserInputArgs {
33 pub questions: Vec<RequestUserInputQuestion>,
34 #[serde(rename = "autoResolutionMs", skip_serializing_if = "Option::is_none")]
35 #[schemars(rename = "autoResolutionMs")]
36 pub auto_resolution_ms: Option<u64>,
37}
38
39#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
40pub struct RequestUserInputAnswer {
41 pub answers: Vec<String>,
42}
43
44#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
45pub struct RequestUserInputResponse {
46 pub answers: HashMap<String, RequestUserInputAnswer>,
47}
48
49#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
50pub struct RequestUserInputEvent {
51 pub call_id: String,
53 #[serde(default)]
56 pub turn_id: String,
57 pub questions: Vec<RequestUserInputQuestion>,
58 #[serde(rename = "autoResolutionMs", skip_serializing_if = "Option::is_none")]
59 #[schemars(rename = "autoResolutionMs")]
60 pub auto_resolution_ms: Option<u64>,
61}