#![warn(missing_docs)]
pub mod chat;
pub mod context;
pub mod error;
pub mod intercept;
pub mod provider;
pub mod registry;
pub mod stream;
pub mod structured;
pub mod tool;
pub mod usage;
pub mod mcp;
#[cfg(any(test, feature = "test-utils"))]
pub mod mock;
#[cfg(any(test, feature = "test-utils"))]
pub mod test_helpers;
pub use chat::{
ChatMessage, ChatResponse, ChatRole, ContentBlock, ImageSource, StopReason, ToolCall,
ToolResult,
};
pub use error::LlmError;
pub use provider::{
Capability, ChatParams, DynProvider, JsonSchema, Provider, ProviderMetadata, RetryPredicate,
ToolChoice, ToolDefinition, ToolRetryConfig,
};
pub use stream::{ChatStream, StreamEvent};
pub use tool::{
FnToolHandler, LoopAction, LoopDepth, LoopDetectionConfig, NoCtxToolHandler, StopConditionFn,
StopContext, StopDecision, TerminationReason, ToolApproval, ToolError, ToolHandler,
ToolLoopConfig, ToolLoopEvent, ToolLoopResult, ToolOutput, ToolRegistry, tool_fn,
tool_fn_with_ctx, tool_loop_channel,
};
pub use usage::{Cost, ModelPricing, Usage, UsageTracker};
pub use context::{ContextWindow, estimate_message_tokens, estimate_tokens};
pub use registry::{ProviderConfig, ProviderFactory, ProviderRegistry};
pub use mcp::{McpError, McpRegistryExt, McpService};
#[cfg(feature = "schema")]
pub use structured::{
GenerateObjectConfig, GenerateObjectResult, PartialObject, collect_stream_object,
generate_object, stream_object_async,
};
#[cfg(any(test, feature = "test-utils"))]
pub use mock::{MockError, MockProvider};