#![forbid(unsafe_code)]
#![cfg_attr(
not(test),
deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)
)]
#![deny(private_interfaces, private_bounds)]
mod auth;
mod canonical;
mod cli;
mod config;
mod os;
mod pipeline;
mod protocol;
mod registry;
mod run;
mod store;
mod transport;
#[cfg(test)]
mod testing;
#[cfg(test)]
mod tests;
pub use auth::login::{login, BrowserLauncher, CodeReceiver, LoginIo, Pacer};
pub use auth::{query_from_request_line, OAuthConfig, RedirectSpec};
pub use canonical::{
CanonicalError, CanonicalRequest, Content, ContentKind, Delta, DocumentSource, ErrorKind,
Event, FinishReason, ImageSource, Message, Model, OutputFormat, ReasoningEffort, Role, Tool,
ToolChoice, Usage, EVENT_SCHEMA_VERSION,
};
pub use cli::{route, Args, Route};
pub use config::provider::{
AuthId, HeaderScheme, HeaderSpec, ModelsOverride, ProtocolId, Provider,
};
pub use config::{EnvSnapshot, OutMode, ResolvedConfig};
pub use os::browser_argv;
pub use protocol::{Method, WireRequest};
pub use run::{count_tokens, generate, list_models, run, CountIo, Host, ListIo};
pub use store::{
parse_ambient, AmbientFormat, AmbientSpec, Clock, Cred, CredStore, ModelCache, Secret,
};
pub use transport::{Bytes, Timeouts, Transport, TransportResponse};
#[cfg(test)]
pub(crate) use auth::{
build_authorize_url, build_token_exchange_request, is_expired, parse_callback,
parse_token_response, Auth, AuthCtx, AuthError, Grant, NoAuth, OAuth2Auth, Pkce,
StaticSecretAuth, TokenResponse,
};
#[cfg(test)]
pub(crate) use canonical::{select_model, ExitClass, Provenance};
#[cfg(test)]
pub(crate) use cli::parse_args;
#[cfg(test)]
pub(crate) use config::{
config_path, defaults, dump_config, fill_absent, lead_with_preamble, parse_config,
partial_from_env, redact, strip_unsupported, ConfigError, PartialConfig, PartialProvider,
};
#[cfg(test)]
pub(crate) use pipeline::{
open_input, parse, pump, read_files, read_request, Glyph, NdjsonSink, PrettySink, RawSink, Sgr,
Sink, Style, TextSink,
};
#[cfg(test)]
pub(crate) use protocol::{DecodeState, Frame, Framing, OpenBlock, Protocol, ProviderCtx};
#[cfg(test)]
pub(crate) use registry::Registry;