rushai_protocol/
events.rs1use serde::{Deserialize, Serialize};
2
3use crate::ids::{CallId, MessageId, SessionId};
4use crate::parts::{FinishReason, Part, PartDelta, Role};
5use crate::permission::PermissionRequest;
6use crate::usage::TokenUsage;
7
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[serde(tag = "type", rename_all = "snake_case")]
11pub enum Event {
12 RunAccepted {
15 session: SessionId,
16 seq: u64,
17 },
18 MessageStarted {
19 message: MessageId,
20 role: Role,
21 },
22 PartDelta {
23 message: MessageId,
24 index: usize,
25 delta: PartDelta,
26 },
27 PartDone {
28 message: MessageId,
29 index: usize,
30 part: Part,
31 },
32 ToolStarted {
33 call: CallId,
34 name: String,
35 input: serde_json::Value,
36 },
37 ToolDone {
38 call: CallId,
39 output: String,
40 is_error: bool,
41 },
42 PermissionRequested {
43 request: PermissionRequest,
44 },
45 Usage {
46 session: SessionId,
47 usage: TokenUsage,
48 },
49 RunFinished {
50 session: SessionId,
51 seq: u64,
52 reason: FinishReason,
53 },
54 Error {
55 message: String,
56 },
57}