Skip to main content

hanzo_protocol/
dynamic_tools.rs

1use 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}