//! Provider layer: one trait, one adapter file per API family.
//!
//! Each adapter translates the canonical [`ChatRequest`] into its wire body and normalizes the
//! response SSE into [`WireEvent`]s. Adding a provider is one more file implementing
//! [`Provider`]; the agent loop is untouched. Concrete adapters (openai_chat first) land in the
//! next build-order step.
use async_trait;
use BoxStream;
use crate;