Skip to main content

gproxy_protocol/claude/common/blocks/
misc.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::CacheControl;
4use super::TextBlock;
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
7#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
8pub struct ContainerUploadBlock {
9    pub file_id: String,
10    #[serde(rename = "type")]
11    pub type_: ContainerUploadBlockType,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub cache_control: Option<CacheControl>,
14    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
15    pub rest: serde_json::Map<String, serde_json::Value>,
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19#[non_exhaustive]
20pub enum ContainerUploadBlockType {
21    #[serde(rename = "container_upload")]
22    ContainerUpload,
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
26#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
27pub struct CompactionBlock {
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub content: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub encrypted_content: Option<String>,
32    #[serde(rename = "type")]
33    pub type_: CompactionBlockType,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub cache_control: Option<CacheControl>,
36    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
37    pub rest: serde_json::Map<String, serde_json::Value>,
38}
39
40#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
41#[non_exhaustive]
42pub enum CompactionBlockType {
43    #[serde(rename = "compaction")]
44    Compaction,
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
48#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
49pub struct MidConversationSystemBlock {
50    pub content: Vec<MidConversationSystemContentBlock>,
51    #[serde(rename = "type")]
52    pub type_: MidConversationSystemBlockType,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub cache_control: Option<CacheControl>,
55    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
56    pub rest: serde_json::Map<String, serde_json::Value>,
57}
58
59#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60#[serde(untagged)]
61#[non_exhaustive]
62pub enum MidConversationSystemContentBlock {
63    Text(TextBlock),
64    ToolAddition(ToolAdditionBlock),
65    ToolRemoval(ToolRemovalBlock),
66    Raw(serde_json::Value),
67}
68
69#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
70#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
71pub struct ToolAdditionBlock {
72    pub tool: ToolChangeReference,
73    #[serde(rename = "type")]
74    pub type_: ToolAdditionBlockType,
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub cache_control: Option<CacheControl>,
77    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
78    pub rest: serde_json::Map<String, serde_json::Value>,
79}
80
81#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
82#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
83pub struct ToolRemovalBlock {
84    pub tool: ToolChangeReference,
85    #[serde(rename = "type")]
86    pub type_: ToolRemovalBlockType,
87    #[serde(skip_serializing_if = "Option::is_none")]
88    pub cache_control: Option<CacheControl>,
89    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
90    pub rest: serde_json::Map<String, serde_json::Value>,
91}
92
93#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
94#[serde(untagged)]
95#[non_exhaustive]
96pub enum ToolChangeReference {
97    McpTool(McpToolChangeReference),
98    McpToolset(McpToolsetChangeReference),
99    Tool(ToolChangeToolReference),
100    Raw(serde_json::Value),
101}
102
103#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
104#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
105pub struct ToolChangeToolReference {
106    pub name: String,
107    #[serde(rename = "type")]
108    pub type_: ToolChangeToolReferenceType,
109    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
110    pub rest: serde_json::Map<String, serde_json::Value>,
111}
112
113#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
114#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
115pub struct McpToolChangeReference {
116    pub name: String,
117    pub server_name: String,
118    #[serde(rename = "type")]
119    pub type_: McpToolChangeReferenceType,
120    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
121    pub rest: serde_json::Map<String, serde_json::Value>,
122}
123
124#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
125#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
126pub struct McpToolsetChangeReference {
127    pub server_name: String,
128    #[serde(rename = "type")]
129    pub type_: McpToolsetChangeReferenceType,
130    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
131    pub rest: serde_json::Map<String, serde_json::Value>,
132}
133
134#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
135#[non_exhaustive]
136pub enum ToolAdditionBlockType {
137    #[serde(rename = "tool_addition")]
138    ToolAddition,
139}
140
141#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
142#[non_exhaustive]
143pub enum ToolRemovalBlockType {
144    #[serde(rename = "tool_removal")]
145    ToolRemoval,
146}
147
148#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
149#[non_exhaustive]
150pub enum ToolChangeToolReferenceType {
151    #[serde(rename = "tool_reference")]
152    ToolReference,
153}
154
155#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
156#[non_exhaustive]
157pub enum McpToolChangeReferenceType {
158    #[serde(rename = "mcp_tool_reference")]
159    McpToolReference,
160}
161
162#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
163#[non_exhaustive]
164pub enum McpToolsetChangeReferenceType {
165    #[serde(rename = "mcp_toolset_reference")]
166    McpToolsetReference,
167}
168
169#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
170#[non_exhaustive]
171pub enum MidConversationSystemBlockType {
172    #[serde(rename = "mid_conv_system")]
173    MidConversationSystem,
174}