#![forbid(unsafe_code)]
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used, clippy::panic))]
#[cfg(doctest)]
#[doc = include_str!("../README.md")]
mod readme {}
pub mod capabilities;
#[cfg(feature = "conformance")]
pub mod conformance;
pub mod dialect;
pub mod error;
pub mod fallback;
pub mod ids;
pub mod provider;
pub mod purpose;
pub mod request;
pub mod response;
pub mod router;
pub mod secret;
pub mod stream;
pub mod structured;
pub mod testing;
pub mod trace;
pub mod prelude {
pub use crate::capabilities::{
CapabilityMismatch, CapabilityRequirements, MicroCents, MissingCapability, ModelProfile,
ProviderCapabilities, StructuredOutputCapability, ToolCallingCapability,
};
pub use crate::error::{ErrorCode, ProviderError, ProviderErrorKind, RetryClass};
pub use crate::fallback::{
FallbackFailure, FallbackOptions, FallbackOutcome, FallbackStage, ProviderAttempt,
RetryPolicy, execute_with_fallback,
};
pub use crate::ids::{AttemptNumber, CallId, ModelKey, ModelRef, ProviderKey, RequestId};
pub use crate::provider::ModelProvider;
pub use crate::purpose::{LoggingPolicy, ModelPurpose, SafetyMode};
pub use crate::request::{
CacheHint, ContentPart, DocumentSource, ImageSource, Message, ModelRequest, OutputSpec,
RequestMetadata, Role, ToolCall, ToolChoice, ToolResult, ToolSpec,
};
pub use crate::response::{FinishReason, ModelResponse, ResponseWarning, TokenUsage};
pub use crate::router::{
Clock, PolicyRouter, ProviderCandidate, ProviderPool, ProviderPoolBuilder, ProviderRouter,
RoutingError, RoutingPolicy,
};
pub use crate::secret::{ApiKey, DefaultRedactor, Redactor};
pub use crate::stream::{ModelStream, StreamAccumulator, StreamEvent, reconstruct};
pub use crate::structured::{
CompiledSchema, SchemaCache, StructuredOutputError, parse_structured,
};
}