#![allow(
missing_docs,
clippy::expect_used,
dead_code,
unused_imports,
reason = "Intentional compatibility, platform, or test-only suppression."
)]
#![expect(
clippy::let_underscore_must_use,
clippy::indexing_slicing,
clippy::string_slice,
clippy::cast_possible_truncation,
reason = "Provider adapters intentionally mutate request JSON, maintain bounded stream buffers, and convert wire counters into protocol-sized fields."
)]
pub mod capabilities;
pub mod client;
pub mod config_adapter;
#[cfg(feature = "copilot")]
pub mod copilot;
pub mod error_display;
pub mod factory_types;
pub mod http_client;
pub mod model_resolver;
pub mod open_responses;
mod process_env;
pub mod provider;
pub mod provider_base;
pub mod provider_config_types;
pub mod providers;
pub mod rig_adapter;
pub mod single_response;
pub(crate) mod system_prompt;
pub mod tool_bridge;
pub mod types;
pub mod utils;
pub use capabilities::ProviderCapabilities;
pub use client::{AnyClient, ProviderClientAdapter};
pub use config_adapter::{
AdapterEvent, AdapterHooks, AdapterHooksProvider, OwnedProviderConfig, as_factory_config,
as_factory_config_with_hooks,
};
pub use factory_types::{ProviderConfig, infer_provider_from_model};
pub use model_resolver::{DynamicModelMeta, DynamicModelRef, ModelAvailability, ModelResolver, ResolvedModel};
pub use provider::{FinishReason, LLMStream, LLMStreamEvent, Usage};
pub use provider_config_types::ProviderConfig as ProviderConfigData;
pub use tool_bridge::{
CorrelationStats, IntentFulfillment, MessageCorrelationTracker, MessageToolCorrelation, ToolExecution, ToolIntent,
ToolIntentExtractor,
};
pub use types::{BackendKind, LLMError, LLMResponse};
pub use vtcode_commons::delegate_components;