#![warn(missing_docs)]
#![warn(rust_2018_idioms)]
pub mod error;
pub use cognis_core::schema_for;
pub use cognis_core::schemars;
pub use cognis_core::schemars::JsonSchema;
pub use cognis_core::message;
pub use cognis_core::{AiMessage, HumanMessage, Message, SystemMessage, ToolCall, ToolMessage};
pub mod schema;
pub use schema::schema_for_tool;
pub mod chat;
pub use chat::{ChatOptions, ChatResponse, HealthStatus, StreamChunk, ToolCallDelta, Usage};
pub mod tools;
pub use tools::{
BaseTool, SchemaBasedTool, Tool, ToolDefinition, ToolInput, ToolOutput, ToolRegistry,
};
pub mod client;
pub use client::{Client, ClientBuilder};
pub mod factory;
pub use factory::{ProviderConstructor, ProviderRegistry, ProviderSpec};
pub mod provider;
#[cfg(feature = "openai")]
pub use provider::openrouter::{OpenRouterBuilder, OpenRouterProvider};
pub use provider::wrappers::{
Capability, ChatInterceptor, CircuitBreakerProvider, CircuitState, CircuitStats,
FailureClassifier, FnChatInterceptor, GracefulDegradationProvider, InterceptorProvider,
LoadBalancerProvider, LoadBalancingStrategy, ProviderRoute, RandomStrategy,
RetryableClassifier, RoundRobinStrategy, RoutingProvider, RoutingStrategy,
WeightedRoundRobinStrategy,
};
pub use provider::{LLMProvider, Provider};
pub mod streaming;
pub use streaming::{Aggregated, StreamAggregator};
pub mod usage;
pub use usage::UsageTracker;
pub mod structured;
pub use structured::StructuredClient;
pub mod prelude {
pub use crate::schema_for;
pub use crate::{
AiMessage, HumanMessage, JsonSchema, Message, SystemMessage, ToolCall, ToolMessage,
};
pub use cognis_core::prelude::*;
}