pub mod hook;
pub mod runtime;
pub use schemars;
pub use serde;
pub use hook::{AgentHook, AgentHookContext, AgentHookSnapshot, NoOpAgentHook, TracingAgentHook};
pub use runtime::{
AgentBuilder, AgentEvent, AgentFlowNode, AgentState, AgentStream, BackoffStrategy,
BatchExecutionResult, CompactionResult, CompositeCatalog, ContextBudget, ContextCompactor,
DefaultFallback, FallbackAction, FallbackContext, FallbackStrategy, IntoToolError,
IntoToolResult, LocalCompactor, ParallelSafety, ResolvedModel, ResolvedRound, RetryPolicy,
StaticCatalog, StopReason, ToolArgs, ToolCachePolicy, ToolCatalog, ToolCategory, ToolError,
ToolErrorKind, ToolExecutor, ToolRegistration, ToolResult, ToolSnapshot, ToolUseConfig,
ToolUseDeps, ToolUseLoop, ToolUseResult, estimate_message, estimate_tokens, execute_batch_with,
};
pub use lellm_core::Prompt;
pub fn create_agent(model: ResolvedModel) -> ToolUseLoop {
AgentBuilder::new(model).build()
}
pub fn create_agent_with_tools(
model: ResolvedModel,
tools: impl IntoIterator<Item = ToolRegistration>,
) -> ToolUseLoop {
AgentBuilder::new(model).tools(tools).build()
}
pub fn create_agent_with_system(model: ResolvedModel, system: impl Into<Prompt>) -> ToolUseLoop {
AgentBuilder::new(model).system(system).build()
}
pub fn create_agent_full(
model: ResolvedModel,
system: impl Into<Prompt>,
tools: impl IntoIterator<Item = ToolRegistration>,
max_iterations: usize,
) -> ToolUseLoop {
AgentBuilder::new(model)
.system(system)
.tools(tools)
.max_iterations(max_iterations)
.build()
}