1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//! [`LspHost`] — engine boundary for the LSP post-edit diagnostics hook.
//!
//! Method surface derived from the live `Engine`'s direct calls on the
//! `lsp_manager` field (M3 R1 mitigation — call-graph driven):
//!
//! | File | Call |
//! |---------------------------------------------------|----------------------------------------------|
//! | `crates/tui/src/core/engine/lsp_hooks.rs:24` | `self.lsp_manager.config().enabled` → `enabled()` |
//! | `crates/tui/src/core/engine/lsp_hooks.rs:38` | `self.lsp_manager.diagnostics_for(path, seq).await` |
//! | `crates/tui/src/core/engine/tool_context.rs:74` | `self.lsp_manager.config().enabled` (short-circuit) |
//!
//! Tools consume the concrete `Arc<LspManager>` via `ToolContext`; that
//! path is **not** abstracted in M3 — only the engine-owned call sites are.
use Path;
use async_trait;
use crateDiagnosticBlock;
/// Engine-side LSP host.
///
/// Implemented by `crates/tui/src/lsp/mod.rs`'s `LspManager` (an inherent
/// impl block — no wrapper struct). The trait surface lets the future
/// core-side `Engine` swap the `lsp_manager: Arc<LspManager>` field to
/// `Arc<dyn LspHost>` in M7 without inventing new methods.