Skip to main content

gproxy_protocol/protocol/claude/common/blocks/
tool.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::{
4    CacheControl, Caller, JsonObject, ServerToolUseName, WebSearchToolResultContent,
5};
6use super::content::{McpToolResultContent, ToolResultContent};
7
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9pub struct ToolUseBlock {
10    pub id: String,
11    pub input: JsonObject,
12    pub name: String,
13    #[serde(rename = "type")]
14    pub type_: ToolUseBlockType,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub cache_control: Option<CacheControl>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub caller: Option<Caller>,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub enum ToolUseBlockType {
23    #[serde(rename = "tool_use")]
24    ToolUse,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
28pub struct ToolResultBlock {
29    pub tool_use_id: String,
30    #[serde(rename = "type")]
31    pub type_: ToolResultBlockType,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub cache_control: Option<CacheControl>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub content: Option<ToolResultContent>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub is_error: Option<bool>,
38}
39
40#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
41pub enum ToolResultBlockType {
42    #[serde(rename = "tool_result")]
43    ToolResult,
44}
45
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47pub struct ToolReferenceBlock {
48    pub tool_name: String,
49    #[serde(rename = "type")]
50    pub type_: ToolReferenceBlockType,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub cache_control: Option<CacheControl>,
53}
54
55#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56pub enum ToolReferenceBlockType {
57    #[serde(rename = "tool_reference")]
58    ToolReference,
59}
60
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
62pub struct ServerToolUseBlock {
63    pub id: String,
64    pub input: JsonObject,
65    pub name: ServerToolUseName,
66    #[serde(rename = "type")]
67    pub type_: ServerToolUseBlockType,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub cache_control: Option<CacheControl>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub caller: Option<Caller>,
72}
73
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
75pub enum ServerToolUseBlockType {
76    #[serde(rename = "server_tool_use")]
77    ServerToolUse,
78}
79
80#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
81pub struct WebSearchToolResultBlock {
82    pub content: WebSearchToolResultContent,
83    pub tool_use_id: String,
84    #[serde(rename = "type")]
85    pub type_: WebSearchToolResultBlockType,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub cache_control: Option<CacheControl>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub caller: Option<Caller>,
90}
91
92#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
93pub enum WebSearchToolResultBlockType {
94    #[serde(rename = "web_search_tool_result")]
95    WebSearchToolResult,
96}
97
98#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
99pub struct WebSearchResultBlock {
100    pub encrypted_content: String,
101    pub title: String,
102    #[serde(rename = "type")]
103    pub type_: WebSearchResultBlockType,
104    pub url: String,
105    #[serde(skip_serializing_if = "Option::is_none")]
106    pub page_age: Option<String>,
107}
108
109#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
110pub enum WebSearchResultBlockType {
111    #[serde(rename = "web_search_result")]
112    WebSearchResult,
113}
114
115#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
116pub struct McpToolUseBlock {
117    pub id: String,
118    pub input: JsonObject,
119    pub name: String,
120    pub server_name: String,
121    #[serde(rename = "type")]
122    pub type_: McpToolUseBlockType,
123    #[serde(skip_serializing_if = "Option::is_none")]
124    pub cache_control: Option<CacheControl>,
125}
126
127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
128pub enum McpToolUseBlockType {
129    #[serde(rename = "mcp_tool_use")]
130    McpToolUse,
131}
132
133#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
134pub struct McpToolResultBlock {
135    pub tool_use_id: String,
136    #[serde(rename = "type")]
137    pub type_: McpToolResultBlockType,
138    #[serde(skip_serializing_if = "Option::is_none")]
139    pub cache_control: Option<CacheControl>,
140    #[serde(skip_serializing_if = "Option::is_none")]
141    pub content: Option<McpToolResultContent>,
142    #[serde(skip_serializing_if = "Option::is_none")]
143    pub is_error: Option<bool>,
144}
145
146#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
147pub enum McpToolResultBlockType {
148    #[serde(rename = "mcp_tool_result")]
149    McpToolResult,
150}