chore(deps): consume alkcall 0.9.0

- 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
This commit is contained in:
glm-5.3-flash committed 2026-10-14 05:19:29 +00:00
1 parent 2cf0dc7bea
commit c89aa65fb2
5 files changed
+28 -17

No files matched your search

Generated
+2 -2
View File
@@ -27,9 +27,9 @@ dependencies = [
[[package]]
name = "alkcall"
version = "0.8.1"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf6af1e4af1460480849adf959c972d65deeafc36f4101064ced1ce6d1adfd5b"
checksum = "a3562f1f7b348cdeb3d9181eaf57b0a2fb3f988d4280e8e225dadfd7f763cb84"
dependencies = [
"async-trait",
"bytes",
+1 -1
View File
@@ -46,7 +46,7 @@ h2 = ["server", "dep:hyper", "hyper-util/http2", "hyper/http2"]
http1 = ["server", "dep:hyper", "hyper-util/http1", "hyper/http1"]
[dependencies]
alkcall = { version = "0.8.1", features = ["gateway"] }
alkcall = { version = "0.9", features = ["gateway"] }
arc-swap = { version = "1", optional = true }
axum = { version = "0.8", optional = true, features = ["ws"] }
bytes = "1"
+5 -5
View File
@@ -27,9 +27,9 @@ dependencies = [
[[package]]
name = "alkcall"
version = "0.8.1"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf6af1e4af1460480849adf959c972d65deeafc36f4101064ced1ce6d1adfd5b"
checksum = "a3562f1f7b348cdeb3d9181eaf57b0a2fb3f988d4280e8e225dadfd7f763cb84"
dependencies = [
"async-trait",
"bytes",
@@ -1405,7 +1405,7 @@ dependencies = [
"once_cell",
"socket2",
"tracing",
"windows-sys 0.61.2",
"windows-sys 0.52.0",
]
[[package]]
@@ -1756,7 +1756,7 @@ dependencies = [
"security-framework",
"security-framework-sys",
"webpki-root-certs",
"windows-sys 0.61.2",
"windows-sys 0.52.0",
]
[[package]]
@@ -2513,7 +2513,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.52.0",
]
[[package]]
+1 -1
View File
@@ -14,7 +14,7 @@ mcp = ["alkhttp/mcp"]
[dependencies]
alkhttp = { path = "../.." }
alkcall = "0.8.1"
alkcall = "0.9"
serde_json = "1"
bytes = "1"
futures = "0.3"
+19 -8
View File
@@ -212,7 +212,8 @@ async fn browser_registered_op_lands_in_overlay_not_peer_composite() {
let overlay_env = conn.overlay_env();
assert!(!overlay_env.contains("ui/dragged"));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
assert!(overlay_env.contains("ui/dragged"));
assert!(
overlay_env.peer_ids().is_empty(),
@@ -226,7 +227,8 @@ async fn hub_call_reaches_browser_op_through_overlay_env() {
let dp = dispatcher(registry, provider_with(vec![]));
let conn = Arc::new(CallConnection::new_overlay_only(identity("browser", &[])));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
let ctx = hub_root_context(
"hub-call-1",
@@ -257,7 +259,8 @@ async fn peerref_specific_browser_x_routes_to_nothing() {
let registry = echo_registry();
let dp = dispatcher(registry, provider_with(vec![]));
let conn = Arc::new(CallConnection::new_overlay_only(identity("browser", &[])));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
let composed_env = dp.compose_root_env(
&conn,
@@ -300,7 +303,8 @@ async fn access_control_on_browser_op_gates_hub_call() {
required_scopes: vec!["ui:write".to_string()],
..Default::default()
},
));
))
.expect("register_imported must accept the unmarked spec");
let env = conn.overlay_env();
let ctx = hub_root_context(
"hub-acl-ok",
@@ -332,7 +336,9 @@ async fn access_control_on_browser_op_gates_hub_call() {
#[tokio::test]
async fn overlay_dropped_on_disconnect_no_leak_between_connections() {
let conn1 = CallConnection::new_overlay_only(identity("browser-1", &[]));
conn1.register_imported(browser_registration("ui/dragged", AccessControl::default()));
conn1
.register_imported(browser_registration("ui/dragged", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
assert!(conn1.overlay_env().contains("ui/dragged"));
drop(conn1);
@@ -345,8 +351,12 @@ async fn overlay_dropped_on_disconnect_no_leak_between_connections() {
// Connection-local isolation: each session's overlay is its own.
let conn_a = CallConnection::new_overlay_only(identity("browser-a", &[]));
let conn_b = CallConnection::new_overlay_only(identity("browser-b", &[]));
conn_a.register_imported(browser_registration("ui/dragged", AccessControl::default()));
conn_b.register_imported(browser_registration("ui/click", AccessControl::default()));
conn_a
.register_imported(browser_registration("ui/dragged", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
conn_b
.register_imported(browser_registration("ui/click", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
assert!(conn_a.overlay_env().contains("ui/dragged"));
assert!(!conn_a.overlay_env().contains("ui/click"));
assert!(conn_b.overlay_env().contains("ui/click"));
@@ -356,7 +366,8 @@ async fn overlay_dropped_on_disconnect_no_leak_between_connections() {
#[tokio::test]
async fn ws_close_mid_call_to_browser_op_aborts_call() {
let conn = Arc::new(CallConnection::new_overlay_only(identity("browser", &[])));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()));
conn.register_imported(browser_registration("ui/dragged", AccessControl::default()))
.expect("register_imported must accept the unmarked spec");
let rx = {
let mut pending = conn.pending().lock();