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)]
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);