Skip to main content

gproxy_protocol/claude/common/
mod.rs

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