turbomcp_protocol/context/capabilities.rs
1//! Communication-direction enums used by the bidirectional MCP flow.
2//!
3//! The old `ServerToClientRequests` trait was deleted in v3.2: no crate in
4//! the workspace implemented it, and its job (sampling / elicitation /
5//! notifications) is now handled by the unified session model — see
6//! [`turbomcp_core::McpSession`] plus the `sample()` / `elicit_form()` /
7//! `elicit_url()` / `notify_client()` methods on
8//! [`turbomcp_core::RequestContext`].
9//!
10//! The supporting enums in this module remain useful as public vocabulary
11//! for describing request/response direction in auditing and analytics.
12
13use serde::{Deserialize, Serialize};
14
15/// Communication direction for bidirectional requests.
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17pub enum CommunicationDirection {
18 /// Client to server.
19 ClientToServer,
20 /// Server to client.
21 ServerToClient,
22}
23
24/// Communication initiator for tracking request origins.
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub enum CommunicationInitiator {
27 /// Client initiated the request.
28 Client,
29 /// Server initiated the request.
30 Server,
31}
32
33/// Types of server-initiated requests.
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
35pub enum ServerInitiatedType {
36 /// Sampling / message creation request.
37 Sampling,
38 /// Elicitation request for user input.
39 Elicitation,
40 /// Roots listing request.
41 Roots,
42 /// Ping / health check request.
43 Ping,
44}
45
46/// Origin of a ping request.
47#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
48pub enum PingOrigin {
49 /// Client initiated ping.
50 Client,
51 /// Server initiated ping.
52 Server,
53}