gproxy_protocol/protocol/claude/common/server_tools/
response_results.rs1use serde::{Deserialize, Serialize};
2
3use super::super::{Caller, JsonObject, ResponseWebSearchResultBlock};
4use super::{
5 AdvisorToolResultBlockType, AdvisorToolResultError, BashCodeExecutionResultBlock,
6 BashCodeExecutionToolResultBlockType, BashCodeExecutionToolResultError,
7 CodeExecutionResultBlock, CodeExecutionToolResultBlockType, CodeExecutionToolResultError,
8 EncryptedCodeExecutionResultBlock, ResponseAdvisorRedactedResultBlock,
9 ResponseAdvisorResultBlock, ResponseTextEditorCodeExecutionStrReplaceResultBlock,
10 ResponseTextEditorCodeExecutionToolResultError, ResponseTextEditorCodeExecutionViewResultBlock,
11 ResponseToolSearchToolResultError, ResponseToolSearchToolSearchResultBlock,
12 ResponseWebFetchResultBlock, TextEditorCodeExecutionCreateResultBlock,
13 TextEditorCodeExecutionToolResultBlockType, ToolSearchToolResultBlockType,
14 WebFetchToolResultBlockType, WebFetchToolResultError, WebSearchToolResultError,
15};
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
18#[serde(untagged)]
19#[non_exhaustive]
20pub enum ResponseWebSearchToolResultContent {
21 Error(WebSearchToolResultError),
22 Results(Vec<ResponseWebSearchResultBlock>),
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
26#[serde(untagged)]
27#[non_exhaustive]
28pub enum ResponseWebFetchToolResultContent {
29 Error(WebFetchToolResultError),
30 Result(ResponseWebFetchResultBlock),
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
34#[serde(untagged)]
35#[non_exhaustive]
36pub enum ResponseAdvisorToolResultContent {
37 Error(AdvisorToolResultError),
38 Result(ResponseAdvisorResultBlock),
39 Redacted(ResponseAdvisorRedactedResultBlock),
40}
41
42#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
43#[serde(untagged)]
44#[non_exhaustive]
45pub enum ResponseCodeExecutionToolResultContent {
46 Error(CodeExecutionToolResultError),
47 Result(CodeExecutionResultBlock),
48 Encrypted(EncryptedCodeExecutionResultBlock),
49}
50
51#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
52#[serde(untagged)]
53#[non_exhaustive]
54pub enum ResponseBashCodeExecutionToolResultContent {
55 Error(BashCodeExecutionToolResultError),
56 Result(BashCodeExecutionResultBlock),
57}
58
59#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60#[serde(untagged)]
61#[non_exhaustive]
62pub enum ResponseTextEditorCodeExecutionToolResultContent {
63 Error(ResponseTextEditorCodeExecutionToolResultError),
64 View(ResponseTextEditorCodeExecutionViewResultBlock),
65 Create(TextEditorCodeExecutionCreateResultBlock),
66 StrReplace(ResponseTextEditorCodeExecutionStrReplaceResultBlock),
67}
68
69#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
70#[serde(untagged)]
71#[non_exhaustive]
72pub enum ResponseToolSearchToolResultContent {
73 Error(ResponseToolSearchToolResultError),
74 Result(ResponseToolSearchToolSearchResultBlock),
75}
76
77#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
78#[non_exhaustive]
79pub struct ResponseWebFetchToolResultBlock {
80 pub content: ResponseWebFetchToolResultContent,
81 pub tool_use_id: String,
82 #[serde(rename = "type")]
83 pub type_: WebFetchToolResultBlockType,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub caller: Option<Caller>,
86 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
87 pub extra: JsonObject,
88}
89
90macro_rules! response_server_tool_result_block {
91 ($block:ident, $content:ident, $tag:ident) => {
92 #[derive(
93 Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
94 )]
95 #[non_exhaustive]
96 pub struct $block {
97 pub content: $content,
98 pub tool_use_id: String,
99 #[serde(rename = "type")]
100 pub type_: $tag,
101 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
102 pub extra: JsonObject,
103 }
104 };
105}
106
107response_server_tool_result_block!(
108 ResponseAdvisorToolResultBlock,
109 ResponseAdvisorToolResultContent,
110 AdvisorToolResultBlockType
111);
112response_server_tool_result_block!(
113 ResponseCodeExecutionToolResultBlock,
114 ResponseCodeExecutionToolResultContent,
115 CodeExecutionToolResultBlockType
116);
117response_server_tool_result_block!(
118 ResponseBashCodeExecutionToolResultBlock,
119 ResponseBashCodeExecutionToolResultContent,
120 BashCodeExecutionToolResultBlockType
121);
122response_server_tool_result_block!(
123 ResponseTextEditorCodeExecutionToolResultBlock,
124 ResponseTextEditorCodeExecutionToolResultContent,
125 TextEditorCodeExecutionToolResultBlockType
126);
127response_server_tool_result_block!(
128 ResponseToolSearchToolResultBlock,
129 ResponseToolSearchToolResultContent,
130 ToolSearchToolResultBlockType
131);