use rmcp::schemars;
use serde::Deserialize;
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct ContextRequest {
#[schemars(description = "Description of the task, bug, or feature to explore")]
pub task: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct SearchRequest {
#[schemars(description = "Symbol name or partial name to search for")]
pub query: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct SymbolRequest {
#[schemars(description = "Function/method/class name")]
pub symbol: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct FileRequest {
#[schemars(description = "File path relative to project root (e.g., 'src/main.rs')")]
pub path: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct DefinitionRequest {
#[schemars(description = "Function/method/class name")]
pub symbol: String,
#[schemars(description = "Number of context lines before/after (default: 3)")]
pub context_lines: Option<u32>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct ReindexRequest {
#[schemars(
description = "Optional: specific files to reindex. If empty, reindexes all changed files."
)]
pub files: Option<Vec<String>>,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct PathRequest {
#[schemars(description = "Starting symbol name")]
pub from: String,
#[schemars(description = "Target symbol name")]
pub to: String,
}
#[derive(Debug, Deserialize, schemars::JsonSchema)]
pub struct DiffImpactRequest {
#[schemars(description = "File path relative to project root")]
pub file_path: String,
#[schemars(description = "Start line of the change (1-indexed)")]
pub start_line: u32,
#[schemars(description = "End line of the change (1-indexed)")]
pub end_line: u32,
}