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(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}