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>, } #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)] pub struct RequestUserInputArgs { pub questions: Vec, } #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)] pub struct RequestUserInputAnswer { pub answers: Vec, } #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)] pub struct RequestUserInputResponse { pub answers: HashMap, } #[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, #[serde(skip_serializing_if = "Option::is_none")] pub tool: Option, #[serde(skip_serializing_if = "Option::is_none")] pub arguments: Option, pub questions: Vec, }