#[derive(Debug)]
pub enum AgentEvent {
Provider(lellm_provider::ProviderEvent),
ToolStart { tool_call_id: String, name: String },
ToolEnd {
tool_call_id: String,
result: super::ToolResult,
},
Retry {
tool_call_id: String,
attempt: usize,
max_attempts: usize,
reason: String,
},
ContextCompacted {
before_tokens: usize,
after_tokens: usize,
removed_messages: usize,
},
LoopEnd { result: super::ToolUseResult },
LoopError {
error: lellm_core::LlmError,
iterations: usize,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum StopReason {
Complete,
MaxIterationsReached,
Cancelled,
OutputBudgetExceeded,
ReasoningBudgetExceeded,
}
pub type AgentStream = tokio::sync::mpsc::Receiver<AgentEvent>;