pub struct LspLanguageHealth {Show 14 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 supports_formatting: Option<bool>,
pub indexing_status: Option<String>,
pub navigation_ready: Option<bool>,
pub probe_verified: bool,
pub install_hint: Option<String>,
pub degraded_tools: Vec<String>,
pub validation_latency_ms: Option<u64>,
}Expand description
Per-language LSP health status.
Fields§
§language: StringLanguage ID (e.g., “rust”, “typescript”).
status: StringStatus: "ready", "warming_up", "starting", or "unavailable".
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 analyze_impact, read_with_deep_context).
supports_diagnostics: Option<bool>Whether validation is supported (affects validate_only, edit tools).
supports_definition: Option<bool>Whether definition is supported (affects get_definition).
supports_formatting: Option<bool>Whether formatting is supported (affects edit tools).
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.
Whether navigation (get_definition, analyze_impact) is functional.
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.
Agents should use this signal to decide:
navigation_ready = true+indexing_status = "complete"→ full confidencenavigation_ready = true+indexing_status = "in_progress"→ results may be partialnavigation_ready = falseorNone→ fall back to Tree-sitter
probe_verified: boolWhether the status was verified by a live probe (rather than just progress notifications). When true, the agent can trust the status.
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.
degraded_tools: Vec<String>Tools that are degraded (using fallback) for this language.
Empty when LSP is fully operational. Lists which tools lose LSP support.
Example: ["analyze_impact", "read_with_deep_context"] when call hierarchy unsupported.
validation_latency_ms: Option<u64>Approximate validation latency in milliseconds for this language.
None when unknown or not applicable. Helps agents decide whether to validate.
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 moreAuto Trait Implementations§
impl Freeze for LspLanguageHealth
impl RefUnwindSafe for LspLanguageHealth
impl Send for LspLanguageHealth
impl Sync for LspLanguageHealth
impl Unpin for LspLanguageHealth
impl UnsafeUnpin for LspLanguageHealth
impl UnwindSafe for LspLanguageHealth
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more