turbomcp_server/handlers/traits/
sampling.rs

1//! Sampling handler trait for processing sampling requests
2
3use async_trait::async_trait;
4use turbomcp_protocol::RequestContext;
5use turbomcp_protocol::types::{CreateMessageRequest, CreateMessageResult, SamplingCapabilities};
6
7use crate::ServerResult;
8
9/// Sampling handler trait for processing sampling requests
10#[async_trait]
11pub trait SamplingHandler: Send + Sync {
12    /// Handle a sampling request
13    ///
14    /// # Arguments
15    ///
16    /// * `request_id` - The JSON-RPC request ID for response correlation
17    /// * `request` - The sampling request parameters
18    /// * `ctx` - The request context
19    async fn handle(
20        &self,
21        request_id: String,
22        request: CreateMessageRequest,
23        ctx: RequestContext,
24    ) -> ServerResult<CreateMessageResult>;
25
26    /// Get supported sampling capabilities
27    fn sampling_capabilities(&self) -> SamplingCapabilities {
28        SamplingCapabilities
29    }
30}