Skip to main content

alchemy_llm/types/
event.rs

1use super::content::ToolCall;
2use super::message::AssistantMessage;
3use super::usage::StopReason;
4
5#[derive(Debug, Clone)]
6pub enum AssistantMessageEvent {
7    Start {
8        partial: AssistantMessage,
9    },
10    TextStart {
11        content_index: usize,
12        partial: AssistantMessage,
13    },
14    TextDelta {
15        content_index: usize,
16        delta: String,
17        partial: AssistantMessage,
18    },
19    TextEnd {
20        content_index: usize,
21        content: String,
22        partial: AssistantMessage,
23    },
24    ThinkingStart {
25        content_index: usize,
26        partial: AssistantMessage,
27    },
28    ThinkingDelta {
29        content_index: usize,
30        delta: String,
31        partial: AssistantMessage,
32    },
33    ThinkingEnd {
34        content_index: usize,
35        content: String,
36        partial: AssistantMessage,
37    },
38    ToolCallStart {
39        content_index: usize,
40        partial: AssistantMessage,
41    },
42    ToolCallDelta {
43        content_index: usize,
44        delta: String,
45        partial: AssistantMessage,
46    },
47    ToolCallEnd {
48        content_index: usize,
49        tool_call: ToolCall,
50        partial: AssistantMessage,
51    },
52    Done {
53        reason: StopReasonSuccess,
54        message: AssistantMessage,
55    },
56    Error {
57        reason: StopReasonError,
58        error: AssistantMessage,
59    },
60}
61
62#[derive(Debug, Clone, Copy, PartialEq, Eq)]
63pub enum StopReasonSuccess {
64    Stop,
65    Length,
66    ToolUse,
67}
68
69impl From<StopReasonSuccess> for StopReason {
70    fn from(value: StopReasonSuccess) -> Self {
71        match value {
72            StopReasonSuccess::Stop => Self::Stop,
73            StopReasonSuccess::Length => Self::Length,
74            StopReasonSuccess::ToolUse => Self::ToolUse,
75        }
76    }
77}
78
79#[derive(Debug, Clone, Copy, PartialEq, Eq)]
80pub enum StopReasonError {
81    Error,
82    Aborted,
83}
84
85impl From<StopReasonError> for StopReason {
86    fn from(value: StopReasonError) -> Self {
87        match value {
88            StopReasonError::Error => Self::Error,
89            StopReasonError::Aborted => Self::Aborted,
90        }
91    }
92}