feat(http): implement GatewayDispatch shared dispatch spine

Thin concrete struct (not a trait) holding Arc<OperationRegistry> +
Arc<dyn IdentityProvider>. Exposes resolve_bearer() (delegates to
identity_provider.resolve_from_token) and invoke() which builds a root
OperationContext for wire-ingress (internal: false, forwarded_for: None,
fresh UUID v4 request_id, deadline now+30s) carrying the registration
bundle's composition_authority/capabilities/scoped_env, then calls
OperationRegistry::invoke. Dispatches services/list and services/schema
unchanged (registered ops); AccessControl filtering in services/list
sees the caller's resolved identity. Re-exported from lib.rs.

Duplicates Dispatcher::build_root_context construction (the alknet-call
version is pub(crate) and tangled with CallConnection peer/session
overlays); the invariants (internal: false, forwarded_for: None) are
the load-bearing part and identical to the wire-ingress path.
This commit is contained in:
2026-07-01 17:05:10 +00:00
parent 1900c72deb
commit a4ce2c8173
3 changed files with 553 additions and 1 deletions

View File

@@ -11,3 +11,5 @@ pub mod client;
pub mod gateway;
pub mod server;
pub mod websocket;
pub use gateway::GatewayDispatch;