Skip to main content

gproxy_protocol/protocol/claude/common/blocks/
misc.rs

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