- bump alkcall 0.8.1 -> 0.9 (gateway feature unchanged). No code change forced: none of the 0.9.0 breaking surfaces are constructed or pattern-matched in this crate — no ManagerError match arms (the new InvalidAdopt variant changes nothing here), no RelayError matching (the removed PubTypedOpen variant is unreachable from this crate), no Establishment construction or Debug dependence (the WS ferry passes Option<OpenEstablisher> through unchanged, per the 0.8.0 audit), and the op/register forward-through refactor does not touch the from_wss import filter or the adapter-registered leaf bundles - ride-through fixes: tests/ws_overlay_ops.rs now expects register_imported's new Result<(), String> return (8 sites assert registration success instead of discarding the value — the bool return they consumed was ignored anyway); fuzz/shared follows the main crate to alkcall 0.9 so the harness replay resolves one alkcall version (the stale 0.8.1 spec pinned two copies against alkhttp's requirement and broke the shared-crate build) - minor bump 0.6.0 -> 0.7.0 per the dep-wave convention (0.3.0 rode alkcall 0.6.0, 0.4.0 rode 0.7.0, 0.5.0 rode 0.8.0): this crate's public API carries alkcall types through re-exports and the ProtocolHandler impl, so a semver-breaking upstream is semver-relevant here Verification: cargo test 441+70 pass (default), 520+70 pass (all-features), clippy --all-features --all-targets -D warnings clean, fmt --check clean, doc --no-deps clean, fuzz corpus replay 21/21
122 lines
4.6 KiB
TOML
122 lines
4.6 KiB
TOML
[package]
|
|
name = "alkhttp"
|
|
version = "0.6.0"
|
|
edition = "2021"
|
|
rust-version = "1.88"
|
|
license = "MIT OR Apache-2.0"
|
|
description = "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"
|
|
readme = "README.md"
|
|
repository = "https://git.alk.dev/alkdev/alkhttp"
|
|
keywords = ["http", "websocket", "rpc", "openapi", "mcp"]
|
|
categories = ["network-programming", "web-programming", "asynchronous"]
|
|
exclude = [".opencode/", "AGENTS.md", "docs/", "tasks/", "scripts/", "fuzz/"]
|
|
|
|
[lib]
|
|
name = "alkhttp"
|
|
|
|
[workspace]
|
|
members = ["."]
|
|
exclude = ["fuzz"]
|
|
|
|
[features]
|
|
default = ["server", "client", "h2", "http1"]
|
|
# Producer side: the axum `Router` host (gateway routes, /healthz,
|
|
# /openapi.json, /mcp, the WS upgrade path) and the hyper connection
|
|
# driver. `openapi` rides along because /openapi.json is part of the
|
|
# default surface (ADR-042/045); `http1` rides along so the hyper
|
|
# auto-builder always has at least one protocol compiled.
|
|
server = ["dep:axum", "dep:hyper", "dep:hyper-util", "dep:uuid", "openapi", "http1"]
|
|
# Consumer side: the shared outbound client host and the HTTP-backed
|
|
# import adapters (`from_jsonschema`, `from_openapi` with `openapi`,
|
|
# `from_mcp` with `mcp`).
|
|
client = ["dep:arc-swap", "dep:httpdate", "dep:percent-encoding", "dep:reqwest", "dep:reqwest-middleware", "dep:reqwest-retry", "dep:url", "openapi"]
|
|
# Shared OpenAPI document model: `from_openapi` parsing (client side)
|
|
# and the `to_openapi` gateway projection (server side).
|
|
openapi = ["dep:yaml_serde"]
|
|
# MCP adapters: `from_mcp` needs `client`, `to_mcp` needs `server`.
|
|
mcp = ["dep:rmcp"]
|
|
# WebSocket transport (from_wss consumer; tungstenite flavor of the
|
|
# WS ↔ byte-stream adapter).
|
|
wss = ["dep:tokio-tungstenite"]
|
|
# Test-only WS client helpers (downstream deployment tests); implies
|
|
# `server` — the helpers live with the upgrade path.
|
|
test-support = ["server", "dep:tokio-tungstenite"]
|
|
# HTTP protocol features of the server connection driver (ADR-001).
|
|
h2 = ["server", "dep:hyper", "hyper-util/http2", "hyper/http2"]
|
|
http1 = ["server", "dep:hyper", "hyper-util/http1", "hyper/http1"]
|
|
|
|
[dependencies]
|
|
alkcall = { version = "0.9", features = ["gateway"] }
|
|
arc-swap = { version = "1", optional = true }
|
|
axum = { version = "0.8", optional = true, features = ["ws"] }
|
|
bytes = "1"
|
|
futures = "0.3"
|
|
http = "1"
|
|
httpdate = { version = "1", optional = true }
|
|
hyper = { version = "1", optional = true, features = ["server"] }
|
|
hyper-util = { version = "0.1", optional = true, features = ["server", "service", "tokio"] }
|
|
jsonschema = { version = "0.46", default-features = false }
|
|
parking_lot = "0.12"
|
|
percent-encoding = { version = "2", optional = true }
|
|
reqwest = { version = "0.13", optional = true, default-features = false, features = ["json", "stream", "rustls"] }
|
|
reqwest-middleware = { version = "0.5", optional = true }
|
|
reqwest-retry = { version = "0.9", optional = true }
|
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "io-util", "net", "fs", "time", "sync"] }
|
|
tokio-tungstenite = { version = "0.29", optional = true, default-features = false, features = ["connect", "rustls-tls-webpki-roots", "handshake"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
async-trait = "0.1"
|
|
tracing = "0.1"
|
|
thiserror = "2"
|
|
uuid = { version = "1", optional = true, features = ["v4"] }
|
|
url = { version = "2", optional = true }
|
|
yaml_serde = { version = "0.10", optional = true }
|
|
rmcp = { version = "1.8", optional = true, default-features = false, features = [
|
|
"client",
|
|
"server",
|
|
"transport-streamable-http-client-reqwest",
|
|
"transport-streamable-http-server",
|
|
] }
|
|
|
|
[dev-dependencies]
|
|
http-body-util = "0.1"
|
|
tower = { version = "0.5", features = ["util"] }
|
|
tokio-tungstenite = { version = "0.29", default-features = false, features = ["connect"] }
|
|
openapiv3 = "2"
|
|
rcgen = "0.14"
|
|
tokio-rustls = "0.26"
|
|
rustls = { version = "0.23", default-features = false, features = ["aws_lc_rs", "std", "tls12"] }
|
|
rustls-pki-types = "1"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
|
|
[[test]]
|
|
name = "ws_upgrade_session"
|
|
required-features = ["test-support"]
|
|
|
|
[[test]]
|
|
name = "ws_overlay_ops"
|
|
required-features = ["test-support"]
|
|
|
|
[[test]]
|
|
name = "from_mcp_integration"
|
|
required-features = ["server", "client", "mcp"]
|
|
|
|
[[test]]
|
|
name = "full_surface"
|
|
required-features = ["server", "client", "openapi", "mcp", "test-support"]
|
|
|
|
[[test]]
|
|
name = "client_config_reload"
|
|
required-features = ["client"]
|
|
|
|
[[test]]
|
|
name = "client_tls"
|
|
required-features = ["client"]
|
|
|
|
[[test]]
|
|
name = "retry_after_budget"
|
|
required-features = ["client"]
|
|
|
|
[[test]]
|
|
name = "retry_policy_wire"
|
|
required-features = ["client"] |