//! alkhttp: HTTP interface for the alk stack — serves HTTP/1.1 + HTTP/2 on //! standard ALPNs (with WebSocket upgrade carrying the channels protocol) //! and hosts the HTTP-backed call-protocol adapters. //! //! # Feature sides //! //! The crate serves two independent use cases, selectable via features: //! //! - `server` — the producer side: the axum `Router` host //! ([`server`]), the gateway routes ([`gateway`]), the WebSocket //! upgrade path ([`websocket`]), `to_openapi`, and `to_mcp` (with //! `mcp`). //! - `client` — the consumer side: the shared outbound client host //! ([`client`]) and the import adapters (`from_jsonschema`, //! `from_openapi`, `from_mcp` with `mcp`). //! //! Both default on; lean builds take `default-features = false` with //! the side they need. The shared OpenAPI document model rides behind //! `openapi` (implied by both sides); `openapi_spec` and `to_openapi` //! compile with it alone. //! //! # Documentation gate (HY-02) //! //! Public-API items must be documented: this crate is pre-crates.io and //! docs.rs renders straight from the rustdoc. The deny below keeps the //! gate from regressing. #![deny(missing_docs)] /// The HTTP-backed call-protocol adapters: `from_openapi` / /// `from_jsonschema` / `from_mcp` (credential-injecting consumers) and /// `to_openapi` / `to_mcp` (gateway projections of local operations). pub mod adapters; /// The shared outbound client host: hot-reloadable reqwest stack with /// same-host-only redirects, idempotent-only retries, and TLS config. #[cfg(feature = "client")] pub mod client; /// The 6 fixed gateway endpoints and their shared dispatch spine — /// the sole HTTP invoke path. #[cfg(feature = "server")] pub mod gateway; /// The HTTP server host: the `HttpAdapter` router, auth, stealth decoy, /// `/healthz`, `/openapi.json`. #[cfg(feature = "server")] pub mod server; /// The WebSocket upgrade path carrying the native call-protocol /// session (browsers; ADR-044, ADR-048). The `upgrade` submodule /// compiles under `server`; the shared byte-stream adapter also under /// `wss` (the `from_wss` consumer seam). #[cfg(any(feature = "server", feature = "wss", test))] pub mod websocket; #[cfg(feature = "server")] pub use server::{decoy_fallback, decoy_method_not_allowed, healthz, DecoyConfig};