gproxy_protocol/protocol/claude/common/server_tools/
results.rs1use serde::{Deserialize, Serialize};
2
3use super::super::{CacheControl, Caller, JsonObject, WebSearchResultBlock};
4use super::{
5 AdvisorRedactedResultBlock, AdvisorResultBlock, AdvisorToolResultError,
6 BashCodeExecutionResultBlock, BashCodeExecutionToolResultError, CodeExecutionResultBlock,
7 CodeExecutionToolResultError, EncryptedCodeExecutionResultBlock,
8 TextEditorCodeExecutionCreateResultBlock, TextEditorCodeExecutionStrReplaceResultBlock,
9 TextEditorCodeExecutionToolResultError, TextEditorCodeExecutionViewResultBlock,
10 ToolSearchToolResultError, ToolSearchToolSearchResultBlock, WebFetchResultBlock,
11 WebFetchToolResultError, WebSearchToolResultError,
12};
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15#[serde(untagged)]
16pub enum WebSearchToolResultContent {
17 Error(WebSearchToolResultError),
18 Results(Vec<WebSearchResultBlock>),
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22#[serde(untagged)]
23pub enum WebFetchToolResultContent {
24 Error(WebFetchToolResultError),
25 Result(WebFetchResultBlock),
26}
27
28#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
29#[serde(untagged)]
30pub enum AdvisorToolResultContent {
31 Error(AdvisorToolResultError),
32 Result(AdvisorResultBlock),
33 Redacted(AdvisorRedactedResultBlock),
34}
35
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
37#[serde(untagged)]
38pub enum CodeExecutionToolResultContent {
39 Error(CodeExecutionToolResultError),
40 Result(CodeExecutionResultBlock),
41 Encrypted(EncryptedCodeExecutionResultBlock),
42}
43
44#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
45#[serde(untagged)]
46pub enum BashCodeExecutionToolResultContent {
47 Error(BashCodeExecutionToolResultError),
48 Result(BashCodeExecutionResultBlock),
49}
50
51#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
52#[serde(untagged)]
53pub enum TextEditorCodeExecutionToolResultContent {
54 Error(TextEditorCodeExecutionToolResultError),
55 View(TextEditorCodeExecutionViewResultBlock),
56 Create(TextEditorCodeExecutionCreateResultBlock),
57 StrReplace(TextEditorCodeExecutionStrReplaceResultBlock),
58}
59
60#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
61#[serde(untagged)]
62pub enum ToolSearchToolResultContent {
63 Error(ToolSearchToolResultError),
64 Result(ToolSearchToolSearchResultBlock),
65}
66
67#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
68pub struct WebFetchToolResultBlock {
69 pub content: WebFetchToolResultContent,
70 pub tool_use_id: String,
71 #[serde(rename = "type")]
72 pub type_: WebFetchToolResultBlockType,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub cache_control: Option<CacheControl>,
75 #[serde(skip_serializing_if = "Option::is_none")]
76 pub caller: Option<Caller>,
77 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
78 pub extra: JsonObject,
79}
80
81#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
82pub enum WebFetchToolResultBlockType {
83 #[serde(rename = "web_fetch_tool_result")]
84 WebFetchToolResult,
85}
86
87macro_rules! server_tool_result_block {
88 ($block:ident, $content:ident, $tag:ident, $wire:literal, $variant:ident) => {
89 #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
90 pub struct $block {
91 pub content: $content,
92 pub tool_use_id: String,
93 #[serde(rename = "type")]
94 pub type_: $tag,
95 #[serde(skip_serializing_if = "Option::is_none")]
96 pub cache_control: Option<CacheControl>,
97 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
98 pub extra: JsonObject,
99 }
100
101 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
102 pub enum $tag {
103 #[serde(rename = $wire)]
104 $variant,
105 }
106 };
107}
108
109server_tool_result_block!(
110 AdvisorToolResultBlock,
111 AdvisorToolResultContent,
112 AdvisorToolResultBlockType,
113 "advisor_tool_result",
114 AdvisorToolResult
115);
116server_tool_result_block!(
117 CodeExecutionToolResultBlock,
118 CodeExecutionToolResultContent,
119 CodeExecutionToolResultBlockType,
120 "code_execution_tool_result",
121 CodeExecutionToolResult
122);
123server_tool_result_block!(
124 BashCodeExecutionToolResultBlock,
125 BashCodeExecutionToolResultContent,
126 BashCodeExecutionToolResultBlockType,
127 "bash_code_execution_tool_result",
128 BashCodeExecutionToolResult
129);
130server_tool_result_block!(
131 TextEditorCodeExecutionToolResultBlock,
132 TextEditorCodeExecutionToolResultContent,
133 TextEditorCodeExecutionToolResultBlockType,
134 "text_editor_code_execution_tool_result",
135 TextEditorCodeExecutionToolResult
136);
137server_tool_result_block!(
138 ToolSearchToolResultBlock,
139 ToolSearchToolResultContent,
140 ToolSearchToolResultBlockType,
141 "tool_search_tool_result",
142 ToolSearchToolResult
143);