hanzo_protocol/
dynamic_tools.rs1use schemars::JsonSchema;
2use serde::Deserialize;
3use serde::Serialize;
4use serde_json::Value as JsonValue;
5use ts_rs::TS;
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema, TS)]
8#[serde(rename_all = "camelCase")]
9pub struct DynamicToolSpec {
10 pub name: String,
11 pub description: String,
12 pub input_schema: JsonValue,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema, TS)]
16#[serde(rename_all = "camelCase")]
17pub struct DynamicToolCallRequest {
18 pub call_id: String,
19 pub turn_id: String,
20 pub tool: String,
21 pub arguments: JsonValue,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema, TS)]
25#[serde(rename_all = "camelCase")]
26pub struct DynamicToolResponse {
27 pub content_items: Vec<DynamicToolCallOutputContentItem>,
28 pub success: bool,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, JsonSchema, TS)]
32#[serde(tag = "type", rename_all = "camelCase")]
33#[ts(tag = "type")]
34pub enum DynamicToolCallOutputContentItem {
35 #[serde(rename_all = "camelCase")]
36 InputText { text: String },
37 #[serde(rename_all = "camelCase")]
38 InputImage { image_url: String },
39}