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(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
41pub struct AnthropicBetaHeaders {
42    #[serde(
43        rename = "anthropic-beta",
44        default,
45        skip_serializing_if = "Option::is_none"
46    )]
47    pub anthropic_beta: Option<Vec<AnthropicBeta>>,
48    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
49    pub extra: BTreeMap<String, String>,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
53#[serde(untagged)]
54pub enum StringOrArray<T> {
55    String(String),
56    Array(Vec<T>),
57}
58
59#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum BoolOrStringArray {
62    Bool(bool),
63    Array(Vec<String>),
64}
65
66#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
67pub struct TypedObject {
68    #[serde(rename = "type")]
69    pub type_: String,
70    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
71    pub extra: JsonObject,
72}
73
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
75pub struct Citation {
76    #[serde(rename = "type")]
77    pub type_: CitationType,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub cited_text: Option<String>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub document_index: Option<u64>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub document_title: Option<String>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub file_id: Option<String>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub start_char_index: Option<u64>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub end_char_index: Option<u64>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub start_page_number: Option<u64>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub end_page_number: Option<u64>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub start_block_index: Option<u64>,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub end_block_index: Option<u64>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub search_result_index: Option<u64>,
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub encrypted_index: Option<String>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub source: Option<String>,
104    #[serde(skip_serializing_if = "Option::is_none")]
105    pub title: Option<String>,
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub url: Option<String>,
108    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
109    pub extra: JsonObject,
110}
111
112#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
113pub struct CitationConfig {
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub enabled: Option<bool>,
116    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
117    pub extra: JsonObject,
118}
119
120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
121pub struct Metadata {
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub user_id: Option<String>,
124    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
125    pub extra: JsonObject,
126}
127
128#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
129pub struct JsonSchemaFormat {
130    #[serde(rename = "type")]
131    pub type_: JsonSchemaFormatType,
132    pub schema: JsonObject,
133    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
134    pub extra: JsonObject,
135}