Skip to main content

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}