1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! # turbomcp-protocol
//!
//! Per-spec-version typed MCP wire modules. Each version's `types` module is
//! **@generated** by `turbomcp-codegen` from the official schema and checked
//! in (reviewed on each spec update); behaviour (dispatch, capability
//! negotiation) is hand-written.
//!
//! - [`v2025_11_25`] — stateful model: `initialize`, `ping`, `resources/subscribe`,
//! and **core Tasks** (`tasks/get|list|cancel|result`).
//! - [`v2026_07_28`] — stateless model: `server/discover`,
//! `subscriptions/listen`, MRTR (`InputRequiredResult`); Tasks moves to the
//! `extensions` mechanism. (Named `draft` until the spec froze on
//! 2026-07-28; [`draft`] survives as a deprecated alias.)
//!
//! The cross-version [`neutral`] handler surface and the [`methods`]/[`version`]
//! routing primitives live here; the `VersionDispatcher` that consumes them is
//! in `turbomcp-server` (it is generic over the user's `McpServerCore`, which
//! sits above this layer — keeping the dependency graph acyclic).
//!
//! `no_std + alloc`: the generated types use only `core`/`alloc` paths (the
//! codegen remaps typify's `::std::` output), so this crate is wasm-portable.
extern crate alloc;
use turbomcp_core as _;
/// The `2026-07-28` wire module under its pre-freeze name.
///
/// It was called `draft` while the revision was still in development. Kept as
/// a deprecated re-export so `turbomcp_protocol::draft::types` keeps resolving;
/// use [`v2026_07_28`] instead. A future draft will get its own `draft` module
/// rather than reusing this alias.
pub use v2026_07_28 as draft;