Skip to main content

gproxy_protocol/protocol/claude/common/
mod.rs

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