protocol_droid/application/mod.rs
1//! Application layer: one module per use case.
2//!
3//! Each handler declares the narrow port trait it consumes, inline, in its own
4//! module. A handler returns domain error types, never a third-party one:
5//! adapters map their own failures into domain errors at the boundary, so no
6//! infrastructure error type ever appears in a signature here.
7//!
8//! Populated by T06 (negotiation), T08 (codecs), T09 (JSON-RPC routing), T10
9//! (session engine), T11 (dynamic registry), T12 (server and client APIs) and
10//! T14 (the idempotency store a retried `tools/call` is deduplicated through).
11
12// T27. The A2A use cases: the URL-filter port, the push-notification
13// delivery port, and the per-revision codecs the wire layer feeds
14// into. Gated on the `a2a` feature because the dependency footprint
15// (the `url` crate) is independent of MCP and a consumer that never
16// speaks A2A should not pay it.
17#[cfg(feature = "a2a")]
18pub mod a2a;
19
20// T29. The ACP use cases: the request-handler port
21// for the agent side, plus the typed per-method
22// wrappers. Gated on `acp-experimental` because the
23// spec is pre-1.0 and the dependency surface is
24// independent of MCP — a consumer that never speaks
25// ACP pays no cost.
26#[cfg(feature = "acp-experimental")]
27pub mod acp;
28pub mod bridge;
29pub mod client;
30pub mod idempotency;
31pub mod jsonrpc;
32pub mod mcp;
33pub mod oauth;
34pub mod registry;
35pub mod server;
36pub mod session;