pub struct LspLanguageHealth {Show 21 fields
pub language: String,
pub status: String,
pub uptime: Option<String>,
pub diagnostics_strategy: Option<String>,
pub supports_call_hierarchy: Option<bool>,
pub supports_diagnostics: Option<bool>,
pub supports_definition: Option<bool>,
pub indexing_status: Option<String>,
pub indexing_source: Option<String>,
pub indexing_duration_secs: Option<u64>,
pub navigation_ready: Option<bool>,
pub navigation_verified: Option<bool>,
pub probe_verified: bool,
pub navigation_tested: Option<bool>,
pub call_hierarchy_verified: bool,
pub install_hint: Option<String>,
pub server_name: Option<String>,
pub registrations_received: Option<u32>,
pub indexing_progress_percent: Option<u8>,
pub degraded_tools: Vec<DegradedToolInfo>,
pub last_probe_age_secs: Option<u32>,
}Expand description
Per-language LSP health status.
Fields§
§language: StringLanguage ID (e.g., “rust”, “typescript”).
status: StringStatus of the language server process.
Lifecycle: unavailable → starting → warming_up → ready
A ready LSP may be downgraded to degraded if a live probe fails.
"unavailable": No LSP process running or detected"starting": Process exists, no capability info yet (lazy start)"warming_up": Process running,navigation_readynot yet confirmed"ready": Initialize handshake complete,navigation_ready=true, and live probe succeeded (navigation_verified=Some(true))"degraded": Initialize handshake completed (navigation_ready=true) but live probe failed (navigation_verified=Some(false)). Navigation MAY still work — retry or use with caution.
uptime: Option<String>Time since LSP process started, formatted as a human-readable string (e.g., “45s”).
diagnostics_strategy: Option<String>How diagnostics work for this language.
supports_call_hierarchy: Option<bool>Whether call hierarchy is supported (affects trace, inspect with dependencies).
supports_diagnostics: Option<bool>Whether diagnostics are supported (affects LSP health quality).
supports_definition: Option<bool>Whether definition is supported (affects locate).
indexing_status: Option<String>Background indexing status: "complete", "in_progress", or None.
Independent of overall status — an LSP can be “ready” for navigation while still indexing in the background.
indexing_source: Option<String>§indexing_duration_secs: Option<u64>Whether the LSP advertised navigation capabilities during initialize.
This reflects capability negotiation only — it does NOT guarantee
navigation actually works. For live verification, check navigation_verified.
true once the LSP initialize handshake completes with definitionProvider: true.
Independent of indexing_status — navigation works during indexing but
results may be partial until indexing completes.
Whether navigation was verified by a live probe (not just capability
advertisement). Distinct from navigation_ready which reflects
capability negotiation only.
Some(true): live probe succeeded — navigation is operationalSome(false): live probe failed — navigation may be broken despitenavigation_ready: trueNone: probe not yet run (freshness unknown)
probe_verified: boolWhether the status was verified by a live probe (rather than just progress notifications). When true, the agent can trust the status.
Whether navigation (locate, trace) was confirmed by a live probe.
true only when a live goto_definition probe request succeeded — meaning the LSP
returned a real location, not just that it advertised the capability in the initialize
handshake. Stronger signal than navigation_ready alone.
Note: This is an independent signal from status: "ready". An LSP can be in the "ready" status
(handshake completed) even if a live probe has not yet been executed or has failed (in which case
navigation_tested will be None or Some(false) respectively).
Agents should prefer this over probe_verified — it has the same meaning but
communicates intent more clearly.
call_hierarchy_verified: boolWhether the call hierarchy capability was verified by a live probe.
install_hint: Option<String>Install guidance when LSP is unavailable.
Provides actionable commands users can run to install their LSP servers.
None when LSP is running or language not detected at all.
server_name: Option<String>The LSP server identity (e.g., “rust-analyzer”, “Pyright”, “gopls”).
Useful for distinguishing which Python LSP is running.
None when the process is not running or server omitted serverInfo.
registrations_received: Option<u32>Number of dynamic capability registrations received from the LSP server. Useful for diagnosing dynamic registration delays (e.g., jdtls).
indexing_progress_percent: Option<u8>Indexing progress percentage (0-100) if the LSP reports it via workDoneProgress.
None when the LSP does not report progress or indexing is complete.
degraded_tools: Vec<DegradedToolInfo>Tools that are degraded (using fallback) for this language.
Empty when LSP is fully operational. Lists which tools lose LSP support with detailed severity and description for each.
last_probe_age_secs: Option<u32>Seconds since last liveness probe for this language.
Trait Implementations§
Source§impl Debug for LspLanguageHealth
impl Debug for LspLanguageHealth
Source§impl<'de> Deserialize<'de> for LspLanguageHealth
impl<'de> Deserialize<'de> for LspLanguageHealth
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for LspLanguageHealth
impl JsonSchema for LspLanguageHealth
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more