gproxy_protocol/protocol/claude/common/server_tools/
response_payloads.rs1use serde::{Deserialize, Serialize};
2
3use super::super::{
4 Base64PdfSource, DocumentBlockType, JsonObject, PlainTextSource, ResponseToolReferenceBlock,
5 StopReason,
6};
7use super::{
8 TextEditorCodeExecutionFileType, TextEditorCodeExecutionStrReplaceResultBlockType,
9 TextEditorCodeExecutionToolResultErrorCode, TextEditorCodeExecutionToolResultErrorType,
10 TextEditorCodeExecutionViewResultBlockType, ToolSearchToolResultErrorCode,
11 ToolSearchToolResultErrorType,
12};
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
15#[non_exhaustive]
16pub struct ResponseWebFetchResultBlock {
17 pub content: ResponseWebFetchDocumentBlock,
18 pub retrieved_at: String,
19 #[serde(rename = "type")]
20 pub type_: ResponseWebFetchResultBlockType,
21 pub url: String,
22 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
23 pub extra: JsonObject,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
27#[non_exhaustive]
28pub enum ResponseWebFetchResultBlockType {
29 #[serde(rename = "web_fetch_result")]
30 WebFetchResult,
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
34#[non_exhaustive]
35pub struct ResponseWebFetchDocumentBlock {
36 pub citations: ResponseWebFetchCitationConfig,
37 pub source: ResponseWebFetchDocumentSource,
38 pub title: String,
39 #[serde(rename = "type")]
40 pub type_: DocumentBlockType,
41 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
42 pub extra: JsonObject,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
46#[non_exhaustive]
47pub struct ResponseWebFetchCitationConfig {
48 pub enabled: bool,
49 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
50 pub extra: JsonObject,
51}
52
53#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
54#[serde(untagged)]
55#[non_exhaustive]
56pub enum ResponseWebFetchDocumentSource {
57 Base64(Base64PdfSource),
58 Text(PlainTextSource),
59}
60
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
62#[non_exhaustive]
63pub struct ResponseAdvisorResultBlock {
64 pub stop_reason: StopReason,
65 pub text: String,
66 #[serde(rename = "type")]
67 pub type_: ResponseAdvisorResultBlockType,
68 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
69 pub extra: JsonObject,
70}
71
72#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
73#[non_exhaustive]
74pub enum ResponseAdvisorResultBlockType {
75 #[serde(rename = "advisor_result")]
76 AdvisorResult,
77}
78
79#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
80#[non_exhaustive]
81pub struct ResponseAdvisorRedactedResultBlock {
82 pub encrypted_content: String,
83 pub stop_reason: StopReason,
84 #[serde(rename = "type")]
85 pub type_: ResponseAdvisorRedactedResultBlockType,
86 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
87 pub extra: JsonObject,
88}
89
90#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
91#[non_exhaustive]
92pub enum ResponseAdvisorRedactedResultBlockType {
93 #[serde(rename = "advisor_redacted_result")]
94 AdvisorRedactedResult,
95}
96
97#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
98#[non_exhaustive]
99pub struct ResponseTextEditorCodeExecutionViewResultBlock {
100 pub content: String,
101 pub file_type: TextEditorCodeExecutionFileType,
102 pub num_lines: u64,
103 pub start_line: u64,
104 pub total_lines: u64,
105 #[serde(rename = "type")]
106 pub type_: TextEditorCodeExecutionViewResultBlockType,
107 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
108 pub extra: JsonObject,
109}
110
111#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
112#[non_exhaustive]
113pub struct ResponseTextEditorCodeExecutionStrReplaceResultBlock {
114 pub lines: Vec<String>,
115 pub new_lines: u64,
116 pub new_start: u64,
117 pub old_lines: u64,
118 pub old_start: u64,
119 #[serde(rename = "type")]
120 pub type_: TextEditorCodeExecutionStrReplaceResultBlockType,
121 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
122 pub extra: JsonObject,
123}
124
125pub type ResponseTextEditorCodeExecutionToolResultError = ResponseServerToolResultError<
126 TextEditorCodeExecutionToolResultErrorCode,
127 TextEditorCodeExecutionToolResultErrorType,
128>;
129
130pub type ResponseToolSearchToolResultError =
131 ResponseServerToolResultError<ToolSearchToolResultErrorCode, ToolSearchToolResultErrorType>;
132
133#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
134#[non_exhaustive]
135pub struct ResponseServerToolResultError<C, T> {
136 pub error_code: C,
137 pub error_message: String,
138 #[serde(rename = "type")]
139 pub type_: T,
140 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
141 pub extra: JsonObject,
142}
143
144#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
145#[non_exhaustive]
146pub struct ResponseToolSearchToolSearchResultBlock {
147 pub tool_references: Vec<ResponseToolReferenceBlock>,
148 #[serde(rename = "type")]
149 pub type_: ResponseToolSearchToolSearchResultBlockType,
150 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
151 pub extra: JsonObject,
152}
153
154#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
155#[non_exhaustive]
156pub enum ResponseToolSearchToolSearchResultBlockType {
157 #[serde(rename = "tool_search_tool_search_result")]
158 ToolSearchToolSearchResult,
159}