use rmcp::model::{ElicitationAction, PromptArgument, PromptMessage, ResourceContents};
use serde::{Deserialize, Serialize};
use serde_json::{Map, Value};
#[derive(Debug, Clone)]
pub struct McpToolInfo {
pub name: String,
pub description: String,
pub provider: String,
pub input_schema: Value,
}
#[derive(Debug, Clone)]
pub struct McpResourceInfo {
pub provider: String,
pub uri: String,
pub name: String,
pub description: Option<String>,
pub mime_type: Option<String>,
pub size: Option<i64>,
}
#[derive(Debug, Clone)]
pub struct McpResourceData {
pub provider: String,
pub uri: String,
pub contents: Vec<ResourceContents>,
pub meta: Map<String, Value>,
}
#[derive(Debug, Clone)]
pub struct McpPromptInfo {
pub provider: String,
pub name: String,
pub description: Option<String>,
pub arguments: Vec<PromptArgument>,
}
#[derive(Debug, Clone)]
pub struct McpPromptDetail {
pub provider: String,
pub name: String,
pub description: Option<String>,
pub messages: Vec<PromptMessage>,
pub meta: Map<String, Value>,
}
#[derive(Debug, Clone)]
pub struct McpClientStatus {
pub enabled: bool,
pub provider_count: usize,
pub active_connections: usize,
pub configured_providers: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct McpElicitationRequest {
pub message: String,
pub requested_schema: Value,
pub meta: Option<Value>,
}
#[derive(Debug, Clone)]
pub struct McpElicitationResponse {
pub action: ElicitationAction,
pub content: Option<Value>,
pub meta: Option<Value>,
}
pub const OPENAI_FILE_PARAMS_META_KEY: &str = "_meta";
pub const OPENAI_FILE_PARAMS_VALUE: &str = "openai/fileParams";
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProvidedFilePayload {
#[serde(rename = "fileId")]
pub file_id: String,
#[serde(rename = "fileName")]
pub file_name: String,
#[serde(rename = "mimeType")]
pub mime_type: String,
#[serde(rename = "fileSize")]
pub file_size: i64,
}
#[derive(Debug, Clone)]
pub struct FileUploadResult {
pub file_id: String,
pub payload: ProvidedFilePayload,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileParamSchemaEntry {
pub property_name: String,
pub description: String,
pub required: bool,
}