#[derive(Debug, Clone, PartialEq)]
pub enum Event<'a> {
StepStart {
iteration: u32,
},
ThinkingDelta(&'a str),
TextDelta(&'a str),
ToolCallStart {
id: &'a str,
name: &'a str,
},
ToolCallArgsDelta {
id: &'a str,
delta: &'a str,
},
ToolOutputDelta {
id: &'a str,
chunk: &'a str,
},
ToolStatus {
id: &'a str,
status: &'a crate::tool::ToolStatus,
},
ToolResult {
id: &'a str,
content: &'a str,
is_error: bool,
code: Option<i32>,
},
Usage(crate::output::Usage),
RetryWait {
error: &'a str,
delay: std::time::Duration,
attempt: u32,
total: u32,
},
StepEnd {
usage: crate::output::Usage,
stop_reason: &'a crate::output::StopReason,
},
}
pub trait EventSink: Send {
fn emit(&mut self, event: Event<'_>);
}