Skip to main content

gproxy_protocol/protocol/claude/common/server_tools/
response_results.rs

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