gproxy_protocol/claude/create_message/
stream.rs1use serde::{Deserialize, Serialize};
2
3use crate::claude::create_message::types::{
4 BetaContainer, BetaContentBlock, BetaContextManagementResponse, BetaIterationsUsage,
5 BetaMessage, BetaServerToolUsage, BetaStopReason, BetaTextCitation,
6};
7use crate::claude::types::BetaError;
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
14#[serde(tag = "type")]
15pub enum ClaudeStreamEvent {
16 #[serde(rename = "message_start")]
17 MessageStart { message: BetaMessage },
18 #[serde(rename = "content_block_start")]
19 ContentBlockStart {
20 content_block: BetaContentBlock,
21 index: u64,
22 },
23 #[serde(rename = "content_block_delta")]
24 ContentBlockDelta {
25 delta: BetaRawContentBlockDelta,
26 index: u64,
27 },
28 #[serde(rename = "content_block_stop")]
29 ContentBlockStop { index: u64 },
30 #[serde(rename = "message_delta")]
31 MessageDelta {
32 #[serde(default)]
33 context_management: Option<BetaContextManagementResponse>,
34 delta: BetaRawMessageDelta,
35 usage: BetaMessageDeltaUsage,
36 },
37 #[serde(rename = "message_stop")]
38 MessageStop {},
39 #[serde(rename = "ping")]
40 Ping {},
41 #[serde(rename = "error")]
42 Error { error: BetaError },
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
46#[serde(tag = "type")]
47pub enum BetaRawContentBlockDelta {
48 #[serde(rename = "text_delta")]
49 Text { text: String },
50 #[serde(rename = "input_json_delta")]
51 InputJson { partial_json: String },
52 #[serde(rename = "citations_delta")]
53 Citations { citation: BetaTextCitation },
54 #[serde(rename = "thinking_delta")]
55 Thinking { thinking: String },
56 #[serde(rename = "signature_delta")]
57 Signature { signature: String },
58 #[serde(rename = "compaction_delta")]
59 Compaction { content: Option<String> },
60}
61
62#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
63pub struct BetaRawMessageDelta {
64 #[serde(default)]
65 pub container: Option<BetaContainer>,
66 #[serde(default)]
67 pub stop_reason: Option<BetaStopReason>,
68 #[serde(default)]
69 pub stop_sequence: Option<String>,
70}
71
72#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
74pub struct BetaMessageDeltaUsage {
75 #[serde(default)]
76 pub cache_creation_input_tokens: Option<u64>,
77 #[serde(default)]
78 pub cache_read_input_tokens: Option<u64>,
79 #[serde(default)]
80 pub input_tokens: Option<u64>,
81 #[serde(default)]
82 pub iterations: Option<BetaIterationsUsage>,
83 pub output_tokens: u64,
84 #[serde(default)]
85 pub server_tool_use: Option<BetaServerToolUsage>,
86}