gproxy_protocol/protocol/claude/common/blocks/
misc.rs1use serde::{Deserialize, Serialize};
2
3use super::super::{CacheControl, ClaudeModel, JsonObject};
4use super::TextBlock;
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct ContainerUploadBlock {
8 pub file_id: String,
9 #[serde(rename = "type")]
10 pub type_: ContainerUploadBlockType,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub cache_control: Option<CacheControl>,
13}
14
15#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
16pub enum ContainerUploadBlockType {
17 #[serde(rename = "container_upload")]
18 ContainerUpload,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub struct CompactionBlock {
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub content: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub encrypted_content: Option<String>,
27 #[serde(rename = "type")]
28 pub type_: CompactionBlockType,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub cache_control: Option<CacheControl>,
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
34pub enum CompactionBlockType {
35 #[serde(rename = "compaction")]
36 Compaction,
37}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
40pub struct MidConversationSystemBlock {
41 pub content: Vec<TextBlock>,
42 #[serde(rename = "type")]
43 pub type_: MidConversationSystemBlockType,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub cache_control: Option<CacheControl>,
46}
47
48#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
49pub enum MidConversationSystemBlockType {
50 #[serde(rename = "mid_conv_system")]
51 MidConversationSystem,
52}
53
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct FallbackBlock {
56 pub from: FallbackInfo,
57 pub to: FallbackInfo,
58 #[serde(rename = "type")]
59 pub type_: FallbackBlockType,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub trigger: Option<serde_json::Value>,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
65pub struct FallbackInfo {
66 pub model: ClaudeModel,
67 #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
68 pub extra: JsonObject,
69}
70
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
72pub enum FallbackBlockType {
73 #[serde(rename = "fallback")]
74 Fallback,
75}