Commit Graph

21 Commits

Author SHA1 Message Date
f811efef68 fix(diagnostics): sort by severity before truncating
Errors appear first, then warnings, info, hints. Ensures the most
actionable issues survive the cap instead of being pushed out by
low-priority hints.
2026-05-02 20:24:35 -04:00
01ab10a7d9 feat(references): cap formatted references at 30 with truncation notice
Prevents flooding the context window when a common symbol has hundreds
of references. Shows the first 30 and appends a count of the remainder.
2026-05-02 20:24:27 -04:00
99525ad0ee feat(diagnostics): cap diagnostic output with truncation notice
Add a limit parameter to formatDiagnostics (default 20 for explicit
lsp_diagnostics calls, 10 for auto-check after edit/write). When
truncated, a summary line indicates how many more diagnostics exist.
2026-05-02 20:13:05 -04:00
04fd520438 fix(daemon): launch LSP servers with caller env 2026-05-02 15:28:25 -04:00
306771f92a refactor(extension): resolve remaining type narrowing diagnostics
Narrow `unknown` types with explicit casts before `in` operator checks
to avoid "Type '{}' may represent a primitive value" errors. Also fix
getActiveTools() which returns string[] (not object[]), removing the
unnecessary .map((t) => t.name). Brings index.ts to zero diagnostics.
2026-05-02 00:50:16 -04:00
4b486b2464 build: add pi-coding-agent and typebox dev dependencies
Resolve 47 of 52 LSP diagnostics: module-not-found errors for
@mariozechner/pi-coding-agent and typebox, plus cascading implicit-any
errors on callback parameters. Both packages are available on npm and
provided at runtime by pi.
2026-05-02 00:46:46 -04:00
6111321fda fix(extension): suppress warnings for unsupported file types and missing binaries
Move pickServer() into the try-catch in runLsp() so UnsupportedExtensionError
is caught directly. Add message-based fallback in both runLsp() and
runDiagnostics() to handle daemon-wrapped errors that come through as plain
Error instances rather than the original typed exception.

This eliminates spurious 'No LSP server registered' warnings during auto-check
after edit/write on files without LSP support (e.g. .md, .txt, .sh).
2026-05-02 00:42:44 -04:00
9b863168ff fix: handle unhandled promise rejection in background read init 2026-04-30 11:53:43 -04:00
b614e700fd fix(daemon): tear down daemon when destroying all servers with no entries 2026-04-30 11:41:37 -04:00
620d9cc70f feat: warm-start LSP server on file read 2026-04-30 11:10:36 -04:00
aa7309b363 test: add unit and integration test suite
Add 34 tests (27 unit, 7 integration) using node:test runner:

Unit tests:
- pickServer(), findRoot(), pathToUri(), uriToPath()
- isLspCommand(), listCommands()
- formatHover(), formatDefinition(), formatReferences(), formatDiagnostics()

Integration tests:
- daemon lifecycle (status/stop) on isolated socket
- CLI --no-daemon queries (hover, documentSymbol, diagnostics)

Supporting changes:
- socketPath() honors PI_LSP_SOCKET_PATH env var for test isolation
- test fixtures for valid and broken TypeScript files
- npm test / test:unit / test:integration scripts
2026-04-30 10:36:54 -04:00
e131e0e8cd feat: add server control commands (disable, enable, destroy)
Add /lsp-servers, /lsp-disable, /lsp-enable, and /lsp-destroy TUI commands.
Disabled servers are tracked in-memory per-extension-instance; the shared
daemon is never mutated by disable/enable. When all servers are disabled,
LSP tools are removed from the active tool set so the LLM won't attempt them.

Also adds a destroy_server daemon operation that kills running LspClient
entries by server ID or all entries.
2026-04-30 09:48:01 -04:00
7abe4efa02 refactor: replace string-matching error checks with custom error classes 2026-04-30 08:27:13 -04:00
81ed5c88b8 fix(daemon): auto-shutdown when last LSP server entry is evicted 2026-04-30 08:21:16 -04:00
36b9b0cde4 docs: add AGENTS.md with project context and conventions 2026-04-30 08:21:09 -04:00
a516d80c71 fix(cli): harden no-daemon teardown 2026-04-29 16:18:27 -04:00
d073f2272f chore: rename project to evan/pi-lsp 2026-04-29 00:16:51 -04:00
46aac3ef39 build: add oxlint 2026-04-29 00:08:34 -04:00
076eee4e96 feat(lsp): add background daemon for language servers 2026-04-29 00:04:06 -04:00
60b8900a09 chore: add nix flake for dev environment 2026-04-26 09:45:41 -04:00
61bca87bba initial commit 2026-04-25 21:06:15 -04:00