codelens-engine 1.9.36

Harness-native Rust MCP server for code intelligence — 90+ tools (+6 semantic), 25 languages, tree-sitter-first, 50-87% fewer tokens
Documentation
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Debug, Clone)]
pub struct LspRequest {
    pub command: String,
    pub args: Vec<String>,
    pub file_path: String,
    pub line: usize,
    pub column: usize,
    pub max_results: usize,
}

#[derive(Debug, Clone)]
pub struct LspDiagnosticRequest {
    pub command: String,
    pub args: Vec<String>,
    pub file_path: String,
    pub max_results: usize,
}

#[derive(Debug, Clone)]
pub struct LspWorkspaceSymbolRequest {
    pub command: String,
    pub args: Vec<String>,
    pub query: String,
    pub max_results: usize,
}

#[derive(Debug, Clone)]
pub struct LspTypeHierarchyRequest {
    pub command: String,
    pub args: Vec<String>,
    pub query: String,
    pub relative_path: Option<String>,
    pub hierarchy_type: String,
    pub depth: usize,
}

#[derive(Debug, Clone)]
pub struct LspRenamePlanRequest {
    pub command: String,
    pub args: Vec<String>,
    pub file_path: String,
    pub line: usize,
    pub column: usize,
    pub new_name: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LspReference {
    pub file_path: String,
    pub line: usize,
    pub column: usize,
    pub end_line: usize,
    pub end_column: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LspDiagnostic {
    pub file_path: String,
    pub line: usize,
    pub column: usize,
    pub end_line: usize,
    pub end_column: usize,
    pub severity: Option<u8>,
    pub severity_label: Option<String>,
    pub code: Option<String>,
    pub source: Option<String>,
    pub message: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LspWorkspaceSymbol {
    pub name: String,
    pub kind: Option<u32>,
    pub kind_label: Option<String>,
    pub container_name: Option<String>,
    pub file_path: String,
    pub line: usize,
    pub column: usize,
    pub end_line: usize,
    pub end_column: usize,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LspTypeHierarchyNode {
    pub name: String,
    pub fully_qualified_name: String,
    pub kind: String,
    pub members: HashMap<String, Vec<String>>,
    pub type_parameters: Vec<HashMap<String, String>>,
    #[serde(skip_serializing_if = "Vec::is_empty")]
    pub supertypes: Vec<LspTypeHierarchyNode>,
    #[serde(skip_serializing_if = "Vec::is_empty")]
    pub subtypes: Vec<LspTypeHierarchyNode>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LspRenamePlan {
    pub file_path: String,
    pub line: usize,
    pub column: usize,
    pub end_line: usize,
    pub end_column: usize,
    pub current_name: String,
    pub placeholder: Option<String>,
    pub new_name: Option<String>,
}