gproxy_protocol/protocol/claude/common/
mod.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6pub mod blocks;
7pub mod cache;
8pub mod container;
9pub mod context_management;
10pub mod diagnostics;
11pub mod errors;
12pub mod fallback;
13pub mod mcp;
14pub mod output;
15pub mod server_tools;
16pub mod stop;
17pub mod thinking;
18pub mod tools;
19pub mod types;
20pub mod usage;
21
22pub use blocks::*;
23pub use cache::*;
24pub use container::*;
25pub use context_management::*;
26pub use diagnostics::*;
27pub use errors::*;
28pub use fallback::*;
29pub use mcp::*;
30pub use output::*;
31pub use server_tools::*;
32pub use stop::*;
33pub use thinking::*;
34pub use tools::*;
35pub use types::*;
36pub use usage::*;
37
38pub type JsonObject = BTreeMap<String, Value>;
39
40#[derive(
41 Debug,
42 Clone,
43 PartialEq,
44 Eq,
45 Serialize,
46 Deserialize,
47 Default,
48 gproxy_protocol_macros::WireBuilder,
49)]
50#[non_exhaustive]
51pub struct AnthropicBetaHeaders {
52 #[serde(
53 rename = "anthropic-beta",
54 default,
55 skip_serializing_if = "Option::is_none"
56 )]
57 pub anthropic_beta: Option<Vec<AnthropicBeta>>,
58 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
59 pub extra: BTreeMap<String, String>,
60}
61
62#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
63#[serde(untagged)]
64#[non_exhaustive]
65pub enum StringOrArray<T> {
66 String(String),
67 Array(Vec<T>),
68}
69
70#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
71#[serde(untagged)]
72#[non_exhaustive]
73pub enum BoolOrStringArray {
74 Bool(bool),
75 Array(Vec<String>),
76}
77
78#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
79#[non_exhaustive]
80pub struct TypedObject {
81 #[serde(rename = "type")]
82 pub type_: String,
83 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
84 pub extra: JsonObject,
85}
86
87#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
88#[non_exhaustive]
89pub struct Citation {
90 #[serde(rename = "type")]
91 pub type_: CitationType,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub cited_text: Option<String>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub document_index: Option<u64>,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub document_title: Option<String>,
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub file_id: Option<String>,
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub start_char_index: Option<u64>,
102 #[serde(skip_serializing_if = "Option::is_none")]
103 pub end_char_index: Option<u64>,
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub start_page_number: Option<u64>,
106 #[serde(skip_serializing_if = "Option::is_none")]
107 pub end_page_number: Option<u64>,
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub start_block_index: Option<u64>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub end_block_index: Option<u64>,
112 #[serde(skip_serializing_if = "Option::is_none")]
113 pub search_result_index: Option<u64>,
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub encrypted_index: Option<String>,
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub source: Option<String>,
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub title: Option<String>,
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub url: Option<String>,
122 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
123 pub extra: JsonObject,
124}
125
126#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
127#[non_exhaustive]
128pub struct CitationConfig {
129 #[serde(skip_serializing_if = "Option::is_none")]
130 pub enabled: Option<bool>,
131 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
132 pub extra: JsonObject,
133}
134
135#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
136#[non_exhaustive]
137pub struct Metadata {
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub user_id: Option<String>,
140 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
141 pub extra: JsonObject,
142}
143
144#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
145#[non_exhaustive]
146pub struct JsonSchemaFormat {
147 #[serde(rename = "type")]
148 pub type_: JsonSchemaFormatType,
149 pub schema: JsonObject,
150 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
151 pub extra: JsonObject,
152}