use std::collections::BTreeMap;
use crate::value::VmClosure;
pub struct McpToolDef {
pub name: String,
pub title: Option<String>,
pub description: String,
pub input_schema: serde_json::Value,
pub output_schema: Option<serde_json::Value>,
pub annotations: Option<serde_json::Value>,
pub icons: Option<serde_json::Value>,
pub handler: VmClosure,
}
pub struct McpResourceDef {
pub uri: String,
pub name: String,
pub title: Option<String>,
pub description: Option<String>,
pub mime_type: Option<String>,
pub text: String,
}
pub struct McpResourceTemplateDef {
pub uri_template: String,
pub name: String,
pub title: Option<String>,
pub description: Option<String>,
pub mime_type: Option<String>,
pub completions: BTreeMap<String, McpCompletionSource>,
pub handler: VmClosure,
}
#[derive(Default)]
pub struct McpCompletionSource {
pub values: Vec<String>,
pub handler: Option<VmClosure>,
}
pub struct McpPromptArgDef {
pub name: String,
pub description: Option<String>,
pub required: bool,
pub completion: Option<McpCompletionSource>,
}
pub struct McpPromptDef {
pub name: String,
pub title: Option<String>,
pub description: Option<String>,
pub arguments: Option<Vec<McpPromptArgDef>>,
pub handler: VmClosure,
}