gproxy_protocol/protocol/claude/common/blocks/
tool.rs1use 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}