Skip to main content

steer_grpc/client_api/
event.rs

1use super::types::{
2    CompactResult, CompactTrigger, CompactionRecord, ContextWindowUsage, McpServerState, Message,
3    MessageId, ModelId, OpId, QueuedWorkItem, RequestId, SessionConfig, TokenUsage, ToolCall,
4    ToolCallDelta, ToolCallId, ToolResult,
5};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq)]
8pub enum UsageUpdateKind {
9    Unspecified,
10    Partial,
11    Final,
12}
13
14#[derive(Debug, Clone)]
15pub enum ClientEvent {
16    AssistantMessageAdded {
17        message: Message,
18        model: ModelId,
19    },
20    UserMessageAdded {
21        message: Message,
22    },
23    ToolMessageAdded {
24        message: Message,
25    },
26    LlmUsageUpdated {
27        op_id: OpId,
28        model: ModelId,
29        usage: TokenUsage,
30        context_window: Option<ContextWindowUsage>,
31        kind: UsageUpdateKind,
32    },
33    MessageUpdated {
34        message: Message,
35    },
36    MessageDelta {
37        id: MessageId,
38        delta: String,
39    },
40    ThinkingDelta {
41        op_id: OpId,
42        message_id: MessageId,
43        delta: String,
44    },
45    ToolCallDelta {
46        op_id: OpId,
47        message_id: MessageId,
48        tool_call_id: ToolCallId,
49        delta: ToolCallDelta,
50    },
51
52    CompactResult {
53        result: CompactResult,
54        trigger: CompactTrigger,
55    },
56
57    ConversationCompacted {
58        record: CompactionRecord,
59    },
60
61    ToolStarted {
62        id: ToolCallId,
63        name: String,
64        parameters: serde_json::Value,
65    },
66    ToolCompleted {
67        id: ToolCallId,
68        name: String,
69        result: ToolResult,
70    },
71    ToolFailed {
72        id: ToolCallId,
73        name: String,
74        error: String,
75    },
76
77    ApprovalRequested {
78        request_id: RequestId,
79        tool_call: ToolCall,
80    },
81
82    ProcessingStarted {
83        op_id: OpId,
84    },
85    ProcessingCompleted {
86        op_id: OpId,
87    },
88    OperationCancelled {
89        op_id: OpId,
90        pending_tool_calls: usize,
91        popped_queued_item: Option<QueuedWorkItem>,
92    },
93    WorkspaceChanged,
94    WorkspaceFiles {
95        files: Vec<String>,
96    },
97    Error {
98        message: String,
99    },
100    McpServerStateChanged {
101        server_name: String,
102        state: McpServerState,
103    },
104    SessionConfigUpdated {
105        config: Box<SessionConfig>,
106        primary_agent_id: String,
107    },
108
109    QueueUpdated {
110        head: Option<QueuedWorkItem>,
111        count: usize,
112    },
113}