1#[derive(Debug, Clone, PartialEq)]
2pub enum TodoStatus {
3 Pending,
4 InProgress,
5 Completed,
6}
7
8#[derive(Debug, Clone)]
9pub struct TodoItem {
10 pub content: String,
11 pub status: TodoStatus,
12}
13
14pub struct QuestionResponder(pub tokio::sync::oneshot::Sender<String>);
15
16impl std::fmt::Debug for QuestionResponder {
17 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18 f.write_str("QuestionResponder")
19 }
20}
21
22use crate::provider::Usage;
23#[derive(Debug)]
24pub enum AgentEvent {
25 TextDelta(String),
26 ThinkingDelta(String),
27 TextComplete(String),
28 ToolCallStart {
29 id: String,
30 name: String,
31 },
32 ToolCallInputDelta(String),
33 ToolCallExecuting {
34 id: String,
35 name: String,
36 input: String,
37 },
38 ToolCallResult {
39 id: String,
40 name: String,
41 output: String,
42 is_error: bool,
43 },
44 Done {
45 usage: Usage,
46 },
47 Error(String),
48 Compacting,
49 Compacted {
50 messages_removed: usize,
51 },
52 TitleGenerated(String),
53 TodoUpdate(Vec<TodoItem>),
54 Question {
55 id: String,
56 question: String,
57 options: Vec<String>,
58 responder: QuestionResponder,
59 },
60 PermissionRequest {
61 tool_name: String,
62 input_summary: String,
63 responder: QuestionResponder,
64 },
65}
66
67pub(super) struct PendingToolCall {
68 pub id: String,
69 pub name: String,
70 pub input: String,
71}