Skip to main content

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

1use 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}