rskit_agent/types/event.rs
1use rskit_ai::StreamEventRef;
2use rskit_llm::types::{AssistantMessage, Usage};
3use rskit_tool::{ToolInput, ToolResult};
4
5use super::AgentResult;
6
7/// Events emitted during an agent run (for streaming / observability).
8#[non_exhaustive]
9pub enum AgentEvent {
10 /// A new turn is starting.
11 TurnStart {
12 /// Turn number being started.
13 turn: u32,
14 },
15 /// An LLM streaming event was received.
16 LlmStreamEvent {
17 /// Streaming event received from the LLM provider.
18 event: StreamEventRef,
19 },
20 /// A tool is about to be executed.
21 ToolExecuting {
22 /// Provider tool-use identifier.
23 tool_use_id: String,
24 /// Tool name.
25 name: String,
26 /// Tool input payload.
27 input: ToolInput,
28 },
29 /// A tool call completed.
30 ToolComplete {
31 /// Provider tool-use identifier.
32 tool_use_id: String,
33 /// Tool name.
34 name: String,
35 /// Successful tool result, when available.
36 result: Option<ToolResult>,
37 /// Error text, when execution failed.
38 error: Option<String>,
39 },
40 /// Context was compacted to fit within the token budget.
41 ContextCompacted {
42 /// Previous approximate token count.
43 old_tokens: usize,
44 /// New approximate token count.
45 new_tokens: usize,
46 },
47 /// A turn completed.
48 TurnComplete {
49 /// Completed turn number.
50 turn: u32,
51 /// Assistant message produced by the turn.
52 message: AssistantMessage,
53 /// Token usage for the turn.
54 usage: Usage,
55 },
56 /// The agent run is complete.
57 Complete {
58 /// Final agent result.
59 result: AgentResult,
60 },
61}