Skip to main content

hanzo_protocol/
request_user_input.rs

1use 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}
35
36#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
37pub struct RequestUserInputAnswer {
38    pub answers: Vec<String>,
39}
40
41#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
42pub struct RequestUserInputResponse {
43    pub answers: HashMap<String, RequestUserInputAnswer>,
44}
45
46#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, JsonSchema, TS)]
47pub struct RequestUserInputEvent {
48    /// Responses API call id for the associated tool call, if available.
49    pub call_id: String,
50    /// Turn ID that this request belongs to.
51    /// Uses `#[serde(default)]` for backwards compatibility.
52    #[serde(default)]
53    pub turn_id: String,
54    pub questions: Vec<RequestUserInputQuestion>,
55}