use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "client_objectiveai_mcp.client_request.Payload")]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum Payload {
#[schemars(title = "McpListChanged")]
McpListChanged(McpListChanged),
#[schemars(title = "ListTools")]
ListTools {
response_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
name: Option<String>,
#[serde(flatten)]
params: crate::mcp::tool::ListToolsRequest,
},
#[schemars(title = "CallTool")]
CallTool {
response_id: String,
#[serde(flatten)]
params: crate::mcp::tool::CallToolRequestParams,
},
#[schemars(title = "ListResources")]
ListResources {
response_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
name: Option<String>,
#[serde(flatten)]
params: crate::mcp::resource::ListResourcesRequest,
},
#[schemars(title = "ListServers")]
ListServers { response_id: String },
#[schemars(title = "ReadResource")]
ReadResource {
response_id: String,
#[serde(flatten)]
params: crate::mcp::resource::ReadResourceRequestParams,
},
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "client_objectiveai_mcp.client_request.McpListChanged")]
pub struct McpListChanged {
pub mcp_kind: super::super::McpKind,
pub kind: McpListChangedKind,
}
#[derive(
Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq, Eq, Hash,
)]
#[schemars(rename = "client_objectiveai_mcp.client_request.McpListChangedKind")]
#[serde(rename_all = "snake_case")]
pub enum McpListChangedKind {
Tools,
Resources,
}
impl McpListChangedKind {
pub fn method(&self) -> &'static str {
match self {
McpListChangedKind::Tools => "notifications/tools/list_changed",
McpListChangedKind::Resources => {
"notifications/resources/list_changed"
}
}
}
}