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