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