Skip to main content

rushai_protocol/
events.rs

1use 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/// A state change emitted by the engine.
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[serde(tag = "type", rename_all = "snake_case")]
11pub enum Event {
12    /// A prompt was accepted and stamped with a monotonic sequence number.
13    /// Cancellation reasons about these sequence numbers.
14    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}