mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-21 03:39:54 +00:00
23344a9a3c
Ship LSP semantic diagnostics as a bundled plugin (plugins/lsp/) using existing hook system. Zero lines of core code modified. Plugin wiring: - pre_tool_call: capture LSP baseline before write_file/patch - transform_tool_result: inject diagnostics into tool result JSON - on_session_start/on_session_end + atexit: lifecycle management Key design: - Baselines keyed by (session_id, abs_path) for concurrent safety - Diagnostics added as 'lsp_diagnostics' JSON field (preserves shape) - Per-file workspace detection (no static session-start gate) - V4A multi-file patch skipped for MVP - Short timeout (3s) — cold start degrades gracefully - os.path.exists heuristic for Docker/SSH backend skip - First relevant write with no server → INFO log with install hint Tests: 77/77 pass including: - Protocol framing, reporter formatting, workspace resolution - Client E2E against mock LSP server (live_system_guard_bypass) - Eventlog steady-state silence contract - Backend-gate heuristic (local vs non-local paths) - Full hook flow integration (pre→write→transform with diagnostics) Source: PR #24168 by @teknium1, PR #24155 by @OutThisLife Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
14 lines
378 B
YAML
14 lines
378 B
YAML
name: lsp
|
|
version: "1.0.0"
|
|
description: >-
|
|
Semantic diagnostics from real language servers (pyright, gopls,
|
|
rust-analyzer, typescript-language-server, etc.) surfaced on
|
|
write_file/patch. Opt-in: add 'lsp' to plugins.enabled in config.yaml.
|
|
author: NousResearch
|
|
hooks:
|
|
- pre_tool_call
|
|
- post_tool_call
|
|
- transform_tool_result
|
|
- on_session_start
|
|
- on_session_end
|