use serde::{Deserialize, Serialize};
use super::{
completion::CompleteRequestParams,
elicitation::{ElicitRequestParams, ElicitationCompleteNotification},
initialization::{InitializeRequest, InitializedNotification},
logging::{LoggingNotification, ProgressNotification, SetLevelRequest},
ping::PingParams,
prompts::{GetPromptRequest, ListPromptsRequest},
resources::{
ListResourceTemplatesRequest, ListResourcesRequest, ReadResourceRequest,
ResourceUpdatedNotification, SubscribeRequest, UnsubscribeRequest,
},
roots::{ListRootsRequest, RootsListChangedNotification},
sampling::CreateMessageRequest,
tasks::{
CancelTaskRequest, GetTaskPayloadRequest, GetTaskRequest, ListTasksRequest,
TaskStatusNotification,
},
tools::{CallToolRequest, ListToolsRequest},
};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "method")]
#[allow(clippy::large_enum_variant)] pub enum ClientRequest {
#[serde(rename = "initialize")]
Initialize(InitializeRequest),
#[serde(rename = "tools/list")]
ListTools(ListToolsRequest),
#[serde(rename = "tools/call")]
CallTool(CallToolRequest),
#[serde(rename = "prompts/list")]
ListPrompts(ListPromptsRequest),
#[serde(rename = "prompts/get")]
GetPrompt(GetPromptRequest),
#[serde(rename = "resources/list")]
ListResources(ListResourcesRequest),
#[serde(rename = "resources/templates/list")]
ListResourceTemplates(ListResourceTemplatesRequest),
#[serde(rename = "resources/read")]
ReadResource(ReadResourceRequest),
#[serde(rename = "resources/subscribe")]
Subscribe(SubscribeRequest),
#[serde(rename = "resources/unsubscribe")]
Unsubscribe(UnsubscribeRequest),
#[serde(rename = "logging/setLevel")]
SetLevel(SetLevelRequest),
#[serde(rename = "completion/complete")]
Complete(CompleteRequestParams),
#[serde(rename = "ping")]
Ping(PingParams),
#[serde(rename = "tasks/get")]
TasksGet(GetTaskRequest),
#[serde(rename = "tasks/result")]
TasksResult(GetTaskPayloadRequest),
#[serde(rename = "tasks/list")]
TasksList(ListTasksRequest),
#[serde(rename = "tasks/cancel")]
TasksCancel(CancelTaskRequest),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "method")]
pub enum ServerRequest {
#[serde(rename = "ping")]
Ping(PingParams),
#[serde(rename = "sampling/createMessage")]
CreateMessage(CreateMessageRequest),
#[serde(rename = "roots/list")]
ListRoots(ListRootsRequest),
#[serde(rename = "elicitation/create")]
ElicitationCreate(ElicitRequestParams),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "method")]
pub enum ClientNotification {
#[serde(rename = "notifications/initialized")]
Initialized(InitializedNotification),
#[serde(rename = "notifications/roots/list_changed")]
RootsListChanged(RootsListChangedNotification),
#[serde(rename = "notifications/cancelled")]
Cancelled(CancelledNotification),
#[serde(rename = "notifications/tasks/status")]
TaskStatus(TaskStatusNotification),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "method")]
pub enum ServerNotification {
#[serde(rename = "notifications/message")]
Message(LoggingNotification),
#[serde(rename = "notifications/progress")]
Progress(ProgressNotification),
#[serde(rename = "notifications/resources/updated")]
ResourceUpdated(ResourceUpdatedNotification),
#[serde(rename = "notifications/resources/list_changed")]
ResourceListChanged,
#[serde(rename = "notifications/cancelled")]
Cancelled(CancelledNotification),
#[serde(rename = "notifications/prompts/list_changed")]
PromptsListChanged,
#[serde(rename = "notifications/tools/list_changed")]
ToolsListChanged,
#[serde(rename = "notifications/roots/list_changed")]
RootsListChanged,
#[serde(rename = "notifications/elicitation/complete")]
ElicitationComplete(ElicitationCompleteNotification),
#[serde(rename = "notifications/tasks/status")]
TaskStatus(TaskStatusNotification),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CancelledNotification {
#[serde(rename = "requestId", default, skip_serializing_if = "Option::is_none")]
pub request_id: Option<super::core::RequestId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
#[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
pub _meta: Option<serde_json::Value>,
}