use rmcp::schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Default, JsonSchema, Deserialize, Serialize)]
pub struct InstallToolRequest {
pub tool: String,
#[serde(default)]
pub force: bool,
#[serde(default)]
pub pin: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub spec: Option<String>,
}
#[derive(Default, JsonSchema, Deserialize, Serialize)]
pub struct InstallToolResponse {
pub installed: bool,
pub spec: String,
}
#[derive(Default, JsonSchema, Deserialize, Serialize)]
pub struct UninstallToolRequest {
pub tool: String,
pub spec: String,
}
#[derive(Default, JsonSchema, Deserialize, Serialize)]
pub struct UninstallToolResponse {
pub uninstalled: bool,
pub spec: String,
}
#[derive(Default, JsonSchema, Deserialize, Serialize)]
pub struct ListToolVersionsRequest {
pub tool: String,
#[serde(default)]
pub all: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filter: Option<String>,
}
#[derive(Default, JsonSchema, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ListToolVersionsResponse {
pub aliases: BTreeMap<String, String>,
pub installed_versions: Vec<String>,
pub versions: Vec<String>,
}