Codex Handbook
protocol/src/request_user_input.rs 61 lines
use std::collections::HashMap;use schemars::JsonSchema;use serde::Deserialize;use serde::Serialize;use ts_rs::TS;#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]pub struct RequestUserInputQuestionOption {    pub label: String,    pub description: String,}#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]pub struct RequestUserInputQuestion {    pub id: String,    pub header: String,    pub question: String,    #[serde(rename = "isOther", default)]    #[schemars(rename = "isOther")]    #[ts(rename = "isOther")]    pub is_other: bool,    #[serde(rename = "isSecret", default)]    #[schemars(rename = "isSecret")]    #[ts(rename = "isSecret")]    pub is_secret: bool,    #[serde(skip_serializing_if = "Option::is_none")]    pub options: Option<Vec<RequestUserInputQuestionOption>>,}#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]pub struct RequestUserInputArgs {    pub questions: Vec<RequestUserInputQuestion>,    #[serde(rename = "autoResolutionMs", skip_serializing_if = "Option::is_none")]    #[schemars(rename = "autoResolutionMs")]    pub auto_resolution_ms: Option<u64>,}#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]pub struct RequestUserInputAnswer {    pub answers: Vec<String>,}#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]pub struct RequestUserInputResponse {    pub answers: HashMap<String, RequestUserInputAnswer>,}#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]pub struct RequestUserInputEvent {    /// Responses API call id for the associated tool call, if available.    pub call_id: String,    /// Turn ID that this request belongs to.    /// Uses `#[serde(default)]` for backwards compatibility.    #[serde(default)]    pub turn_id: String,    pub questions: Vec<RequestUserInputQuestion>,    #[serde(rename = "autoResolutionMs", skip_serializing_if = "Option::is_none")]    #[schemars(rename = "autoResolutionMs")]    pub auto_resolution_ms: Option<u64>,}