pub mod executor;
pub mod fallback;
pub mod loop_detector;
pub mod registry;
pub mod retry;
pub mod runtime;
pub mod signal_voter;
pub use executor::{ParallelSafety, ToolCategory, ToolExecutor, ToolRegistration};
pub use fallback::{
DefaultFallback, FallbackAction, FallbackContext, FallbackReason, FallbackStrategy,
};
pub use lellm_provider::ResolvedModel;
pub use loop_detector::{LoopDetector, LoopIntervention};
pub use registry::{ToolRegistry, ToolSearchResult, ToolSource};
pub use retry::{BackoffStrategy, RetryPolicy, ToolErrorKind};
pub use runtime::{ToolCallResult, ToolUseLoop, ToolUseResult};
pub use signal_voter::{NegativeSignal, SignalVoter};
#[derive(Debug)]
pub enum AgentEvent {
Provider(lellm_provider::ProviderEvent),
ToolStart { tool_call_id: String, name: String },
ToolEnd {
tool_call_id: String,
result: ToolCallResult,
},
Retry {
tool_call_id: String,
attempt: usize,
max_attempts: usize,
reason: String,
},
LoopEnd { result: ToolUseResult },
LoopError {
error: lellm_core::LlmError,
iterations: usize,
messages: Vec<lellm_core::Message>,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum StopReason {
Complete,
MaxIterationsReached,
LoopDetected,
FallbackComplete,
}
pub type AgentStream = tokio::sync::mpsc::Receiver<AgentEvent>;