api_openai/components/assistants_shared/
streaming_events.rs

1//! Helper event types for Assistant streaming responses.
2//!
3//! This module contains specialized event enums and structs that wrap
4//! the core streaming types for easier event handling and pattern matching.
5
6/// Define a private namespace for streaming event items.
7mod private
8{
9  use crate::components::common::Error;
10  use crate::components::assistants_shared::message::MessageObject;
11  use crate::components::assistants_shared::thread::ThreadObject;
12  use crate::components::assistants_shared::run::{ RunObject, RunStepObject };
13  use crate::components::assistants_shared::streaming::
14  {
15    MessageDeltaObject,
16    RunStepDeltaObject,
17  };
18
19  use serde::{ Deserialize };
20
21  /// Represents message-related events during streaming.
22  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
23  #[ serde( untagged ) ]
24  pub enum MessageStreamEvent
25  {
26    /// Message created event.
27    Created( MessageCreatedEvent ),
28    /// Message in progress event.
29    InProgress( MessageInProgressEvent ),
30    /// Message delta event.
31    Delta( MessageDeltaEvent ),
32    /// Message completed event.
33    Completed( MessageCompletedEvent ),
34    /// Message incomplete event.
35    Incomplete( MessageIncompleteEvent ),
36  }
37
38  /// Event data for when a message is created.
39  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
40  pub struct MessageCreatedEvent
41  {
42    /// Event type identifier (`thread.message.created`).
43    pub event : String,
44    /// The created message object.
45    pub data : MessageObject,
46  }
47
48  /// Event data for when a message is in progress.
49  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
50  pub struct MessageInProgressEvent
51  {
52    /// Event type identifier (`thread.message.in_progress`).
53    pub event : String,
54    /// The message object in progress.
55    pub data : MessageObject,
56  }
57
58  /// Event data for a message delta.
59  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
60  pub struct MessageDeltaEvent
61  {
62    /// Event type identifier (`thread.message.delta`).
63    pub event : String,
64    /// The message delta object.
65    pub data : MessageDeltaObject,
66  }
67
68  /// Event data for when a message is completed.
69  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
70  pub struct MessageCompletedEvent
71  {
72    /// Event type identifier (`thread.message.completed`).
73    pub event : String,
74    /// The completed message object.
75    pub data : MessageObject,
76  }
77
78  /// Event data for when a message is incomplete.
79  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
80  pub struct MessageIncompleteEvent
81  {
82    /// Event type identifier (`thread.message.incomplete`).
83    pub event : String,
84    /// The incomplete message object.
85    pub data : MessageObject,
86  }
87
88  /// Represents run step-related events during streaming.
89  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
90  #[ serde( untagged ) ]
91  pub enum RunStepStreamEvent
92  {
93    /// Run step created event.
94    Created( RunStepCreatedEvent ),
95    /// Run step in progress event.
96    InProgress( RunStepInProgressEvent ),
97    /// Run step delta event.
98    Delta( RunStepDeltaEvent ),
99    /// Run step completed event.
100    Completed( RunStepCompletedEvent ),
101    /// Run step failed event.
102    Failed( RunStepFailedEvent ),
103    /// Run step cancelled event.
104    Cancelled( RunStepCancelledEvent ),
105    /// Run step expired event.
106    Expired( RunStepExpiredEvent ),
107  }
108
109  /// Event data for when a run step is created.
110  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
111  pub struct RunStepCreatedEvent
112  {
113    /// Event type identifier (`thread.run.step.created`).
114    pub event : String,
115    /// The created run step object.
116    pub data : RunStepObject,
117  }
118
119  /// Event data for when a run step is in progress.
120  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
121  pub struct RunStepInProgressEvent
122  {
123    /// Event type identifier (`thread.run.step.in_progress`).
124    pub event : String,
125    /// The run step object in progress.
126    pub data : RunStepObject,
127  }
128
129  /// Event data for a run step delta.
130  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
131  pub struct RunStepDeltaEvent
132  {
133    /// Event type identifier (`thread.run.step.delta`).
134    pub event : String,
135    /// The run step delta object.
136    pub data : RunStepDeltaObject,
137  }
138
139  /// Event data for when a run step is completed.
140  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
141  pub struct RunStepCompletedEvent
142  {
143    /// Event type identifier (`thread.run.step.completed`).
144    pub event : String,
145    /// The completed run step object.
146    pub data : RunStepObject,
147  }
148
149  /// Event data for when a run step fails.
150  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
151  pub struct RunStepFailedEvent
152  {
153    /// Event type identifier (`thread.run.step.failed`).
154    pub event : String,
155    /// The failed run step object.
156    pub data : RunStepObject,
157  }
158
159  /// Event data for when a run step is cancelled.
160  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
161  pub struct RunStepCancelledEvent
162  {
163    /// Event type identifier (`thread.run.step.cancelled`).
164    pub event : String,
165    /// The cancelled run step object.
166    pub data : RunStepObject,
167  }
168
169  /// Event data for when a run step expires.
170  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
171  pub struct RunStepExpiredEvent
172  {
173    /// Event type identifier (`thread.run.step.expired`).
174    pub event : String,
175    /// The expired run step object.
176    pub data : RunStepObject,
177  }
178
179  /// Represents run-related events during streaming.
180  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
181  #[ serde( untagged ) ]
182  pub enum RunStreamEvent
183  {
184    /// Run created event.
185    Created( RunCreatedEvent ),
186    /// Run queued event.
187    Queued( RunQueuedEvent ),
188    /// Run in progress event.
189    InProgress( RunInProgressEvent ),
190    /// Run requires action event.
191    RequiresAction( RunRequiresActionEvent ),
192    /// Run completed event.
193    Completed( RunCompletedEvent ),
194    /// Run incomplete event.
195    Incomplete( RunIncompleteEvent ),
196    /// Run failed event.
197    Failed( RunFailedEvent ),
198    /// Run cancelling event.
199    Cancelling( RunCancellingEvent ),
200    /// Run cancelled event.
201    Cancelled( RunCancelledEvent ),
202    /// Run expired event.
203    Expired( RunExpiredEvent ),
204  }
205
206  /// Event data for when a run is created.
207  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
208  pub struct RunCreatedEvent
209  {
210    /// Event type identifier (`thread.run.created`).
211    pub event : String,
212    /// The created run object.
213    pub data : RunObject,
214  }
215
216  /// Event data for when a run is queued.
217  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
218  pub struct RunQueuedEvent
219  {
220    /// Event type identifier (`thread.run.queued`).
221    pub event : String,
222    /// The queued run object.
223    pub data : RunObject,
224  }
225
226  /// Event data for when a run is in progress.
227  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
228  pub struct RunInProgressEvent
229  {
230    /// Event type identifier (`thread.run.in_progress`).
231    pub event : String,
232    /// The run object in progress.
233    pub data : RunObject,
234  }
235
236  /// Event data for when a run requires action.
237  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
238  pub struct RunRequiresActionEvent
239  {
240    /// Event type identifier (`thread.run.requires_action`).
241    pub event : String,
242    /// The run object requiring action.
243    pub data : RunObject,
244  }
245
246  /// Event data for when a run is completed.
247  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
248  pub struct RunCompletedEvent
249  {
250    /// Event type identifier (`thread.run.completed`).
251    pub event : String,
252    /// The completed run object.
253    pub data : RunObject,
254  }
255
256  /// Event data for when a run is incomplete.
257  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
258  pub struct RunIncompleteEvent
259  {
260    /// Event type identifier (`thread.run.incomplete`).
261    pub event : String,
262    /// The incomplete run object.
263    pub data : RunObject,
264  }
265
266  /// Event data for when a run fails.
267  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
268  pub struct RunFailedEvent
269  {
270    /// Event type identifier (`thread.run.failed`).
271    pub event : String,
272    /// The failed run object.
273    pub data : RunObject,
274  }
275
276  /// Event data for when a run is cancelling.
277  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
278  pub struct RunCancellingEvent
279  {
280    /// Event type identifier (`thread.run.cancelling`).
281    pub event : String,
282    /// The cancelling run object.
283    pub data : RunObject,
284  }
285
286  /// Event data for when a run is cancelled.
287  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
288  pub struct RunCancelledEvent
289  {
290    /// Event type identifier (`thread.run.cancelled`).
291    pub event : String,
292    /// The cancelled run object.
293    pub data : RunObject,
294  }
295
296  /// Event data for when a run expires.
297  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
298  pub struct RunExpiredEvent
299  {
300    /// Event type identifier (`thread.run.expired`).
301    pub event : String,
302    /// The expired run object.
303    pub data : RunObject,
304  }
305
306  /// Represents thread-related events during streaming.
307  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
308  #[ serde( untagged ) ]
309  pub enum ThreadStreamEvent
310  {
311    /// Thread created event.
312    Created( ThreadCreatedEvent ),
313  }
314
315  /// Event data for when a thread is created.
316  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
317  pub struct ThreadCreatedEvent
318  {
319    /// Event type identifier (`thread.created`).
320    pub event : String,
321    /// The created thread object.
322    pub data : ThreadObject,
323  }
324
325  /// Event data for the stream termination message.
326  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
327  pub struct DoneEvent
328  {
329    /// Event type identifier (`done`).
330    pub event : String,
331    /// The data, always "\[DONE\]".
332    pub data : String,
333  }
334
335  /// Event data for an error during streaming.
336  #[ derive( Debug, Deserialize, Clone, PartialEq ) ]
337  pub struct ErrorEvent
338  {
339    /// Event type identifier (`error`).
340    pub event : String,
341    /// The error details.
342    pub data : Error,
343  }
344}
345
346crate ::mod_interface!
347{
348  exposed use private::MessageStreamEvent;
349  exposed use private::MessageCreatedEvent;
350  exposed use private::MessageInProgressEvent;
351  exposed use private::MessageDeltaEvent;
352  exposed use private::MessageCompletedEvent;
353  exposed use private::MessageIncompleteEvent;
354  exposed use private::RunStepStreamEvent;
355  exposed use private::RunStepCreatedEvent;
356  exposed use private::RunStepInProgressEvent;
357  exposed use private::RunStepDeltaEvent;
358  exposed use private::RunStepCompletedEvent;
359  exposed use private::RunStepFailedEvent;
360  exposed use private::RunStepCancelledEvent;
361  exposed use private::RunStepExpiredEvent;
362  exposed use private::RunStreamEvent;
363  exposed use private::RunCreatedEvent;
364  exposed use private::RunQueuedEvent;
365  exposed use private::RunInProgressEvent;
366  exposed use private::RunRequiresActionEvent;
367  exposed use private::RunCompletedEvent;
368  exposed use private::RunIncompleteEvent;
369  exposed use private::RunFailedEvent;
370  exposed use private::RunCancellingEvent;
371  exposed use private::RunCancelledEvent;
372  exposed use private::RunExpiredEvent;
373  exposed use private::ThreadStreamEvent;
374  exposed use private::ThreadCreatedEvent;
375  exposed use private::DoneEvent;
376  exposed use private::ErrorEvent;
377}