use indexmap::IndexMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "client_objectiveai_mcp.server_request.Payload")]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum Payload {
#[schemars(title = "Initialize")]
Initialize(InitializeRequest),
#[schemars(title = "ToolsList")]
ToolsList(crate::mcp::tool::ListToolsRequest),
#[schemars(title = "ToolsCall")]
ToolsCall(crate::mcp::tool::CallToolRequestParams),
#[schemars(title = "ResourcesList")]
ResourcesList(crate::mcp::resource::ListResourcesRequest),
#[schemars(title = "ResourcesRead")]
ResourcesRead(crate::mcp::resource::ReadResourceRequestParams),
#[schemars(title = "SessionTerminate")]
SessionTerminate,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
#[schemars(rename = "client_objectiveai_mcp.server_request.InitializeRequest")]
pub struct InitializeRequest {
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
#[schemars(extend("omitempty" = true))]
pub args: IndexMap<String, Option<String>>,
}