use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, JsonSchema)]
pub struct DiagnosticsInput {
pub file_path: Option<String>,
pub severity: Option<String>,
pub max_items: Option<u32>,
pub settle_ms: Option<u32>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct DiagnosticsOutput {
pub formatted: String,
pub count: usize,
pub settled: bool,
}
#[derive(Debug, Clone, Copy, Deserialize, JsonSchema)]
pub struct Position1 {
pub line: u32,
pub character: u32,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct LocationInput {
pub file_path: String,
pub position: Option<Position1>,
pub symbol: Option<String>,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct DefinitionsInput {
#[serde(flatten)]
pub location: LocationInput,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct ReferencesInput {
#[serde(flatten)]
pub location: LocationInput,
pub include_declaration: Option<bool>,
pub max_items: Option<u32>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct LocationEntry {
pub path: String,
pub line: u32,
pub character: u32,
pub text: String,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct DefinitionsOutput {
pub definitions: Vec<LocationEntry>,
pub formatted: String,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct ReferenceFile {
pub path: String,
pub locations: Vec<(u32, u32)>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct ReferencesOutput {
pub total: usize,
pub files: Vec<ReferenceFile>,
pub formatted: String,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct SymbolsInput {
pub file_path: String,
pub query: Option<String>,
pub max_items: Option<u32>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct SymbolEntry {
pub name: String,
pub kind: String,
pub line: u32,
pub character: u32,
pub container: Option<String>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct SymbolsOutput {
pub symbols: Vec<SymbolEntry>,
pub formatted: String,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct RestartInput {
pub file_path: Option<String>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct RestartOutput {
pub restarted: Vec<String>,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct RenameInput {
pub file_path: String,
pub position: Option<Position1>,
pub symbol: Option<String>,
pub new_name: String,
pub confirm: Option<bool>,
}
#[derive(Clone, Debug, Serialize, JsonSchema)]
pub struct RenameFilePlan {
pub path: String,
pub edits: usize,
pub preview: Vec<String>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct RenameOutput {
pub applied: bool,
pub files: Vec<RenameFilePlan>,
pub total_edits: usize,
pub formatted: String,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct HoverInput {
pub file_path: String,
pub position: Option<Position1>,
pub symbol: Option<String>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct HoverOutput {
pub formatted: String,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct WorkspaceSymbolsInput {
pub query: Option<String>,
pub max_items: Option<u32>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct WorkspaceSymbolEntry {
pub name: String,
pub kind: String,
pub path: String,
pub line: u32,
pub character: u32,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct WorkspaceSymbolsOutput {
pub symbols: Vec<WorkspaceSymbolEntry>,
pub total: usize,
pub formatted: String,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct CallHierarchyInput {
pub file_path: String,
pub position: Option<Position1>,
pub symbol: Option<String>,
pub direction: Option<String>,
pub max_items: Option<u32>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct CallEntry {
pub name: String,
pub kind: String,
pub path: String,
pub line: u32,
pub character: u32,
pub sites: Vec<(u32, u32)>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct CallHierarchyOutput {
pub direction: String,
pub calls: Vec<CallEntry>,
pub formatted: String,
}
#[derive(Clone, Debug, Deserialize, JsonSchema)]
pub struct CodeActionsInput {
pub file_path: String,
pub line: u32,
pub apply_index: Option<usize>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct CodeActionEntry {
pub index: usize,
pub title: String,
pub kind: Option<String>,
pub has_edit: bool,
pub files: Vec<String>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct CodeActionsOutput {
pub applied: bool,
pub actions: Vec<CodeActionEntry>,
pub formatted: String,
}