hanzo_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}
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 pub call_id: String,
50 #[serde(default)]
53 pub turn_id: String,
54 pub questions: Vec<RequestUserInputQuestion>,
55}