ai_lib_rust/types/
events.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(tag = "event_type")]
8pub enum StreamingEvent {
9 #[serde(rename = "PartialContentDelta")]
11 PartialContentDelta {
12 content: String,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 sequence_id: Option<u64>,
15 },
16
17 #[serde(rename = "ThinkingDelta")]
19 ThinkingDelta {
20 thinking: String,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 tool_consideration: Option<String>,
23 },
24
25 #[serde(rename = "ToolCallStarted")]
27 ToolCallStarted {
28 tool_call_id: String,
29 tool_name: String,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 index: Option<u32>,
32 },
33
34 #[serde(rename = "PartialToolCall")]
36 PartialToolCall {
37 tool_call_id: String,
38 arguments: String, #[serde(skip_serializing_if = "Option::is_none")]
40 index: Option<u32>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 is_complete: Option<bool>,
43 },
44
45 #[serde(rename = "ToolCallEnded")]
47 ToolCallEnded {
48 tool_call_id: String,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 index: Option<u32>,
51 },
52
53 #[serde(rename = "Metadata")]
55 Metadata {
56 #[serde(skip_serializing_if = "Option::is_none")]
57 usage: Option<serde_json::Value>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 finish_reason: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 stop_reason: Option<String>,
62 },
63
64 #[serde(rename = "FinalCandidate")]
66 FinalCandidate {
67 candidate_index: u32,
68 finish_reason: String,
69 },
70
71 #[serde(rename = "StreamEnd")]
73 StreamEnd {
74 #[serde(skip_serializing_if = "Option::is_none")]
75 finish_reason: Option<String>,
76 },
77
78 #[serde(rename = "StreamError")]
80 StreamError {
81 error: serde_json::Value,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 event_id: Option<String>,
84 },
85}