diff --git a/doc/EVOLUTION.md b/doc/EVOLUTION.md index feba0ab..7f09eca 100644 --- a/doc/EVOLUTION.md +++ b/doc/EVOLUTION.md @@ -315,9 +315,26 @@ tools/ This decouples metadata from implementation language — compiled Go binaries, Python scripts, and bash tools all use the same discovery mechanism. +### LSP tools ported to Go +The Python LSP bridge (`_lib/lsp/`) replaced with a pure Go implementation: + +``` +tools/ +├── builtin/ ← in-process handlers (shell, reasoning, tool/skill registry) +└── lsp/ ← shared LSP client library + └── cmd/ ← individual binaries (lsp_definition, lsp_hover, ...) +``` + +Architecture: each LSP tool binary embeds a bridge daemon (started on first +invocation via `--bridge` flag, persists via Unix socket, auto-exits after 5min +idle). No Python. No `_lib`. No external dependencies beyond the LSP servers +themselves (gopls, clangd, intelephense). + ### Repo reorganization - `contrib/{prompts,scripts,services,tools,skills,agents}` → `data/` - `contrib/elisp` stays (Emacs frontend contribution) +- `tools/builtin/` — built-in tool handlers (moved from `tools/`) +- `tools/lsp/` — Go LSP implementation (replaced `data/tools/_lib/lsp/`) ## Current Topology ```