Skip to content

feat: @puruslang/lsp and @puruslang/mcp - #92

Merged
otnc merged 1 commit into
mainfrom
feat/lsp-mcp
Oct 16, 2026
Merged

otnc merged 1 commit into
mainfrom
feat/lsp-mcp

Conversation

@otnc

@otnc otnc commented Oct 16, 2026

Copy link
Copy Markdown
Member

Closes #20 and #21 as first versions (written from scratch; no code from the third-party purus-lsp / purus-mcp).

@puruslang/lsp (puruslang-lsp, stdio): diagnostics = linter rules + compiler check errors (line:col from #76), keyword and use p-* completion, keyword hover, document formatting via the Prettier plugin, debounced validation. 7 tests of the pure parts; the built server answers initialize over stdio.

@puruslang/mcp (puruslang-mcp, stdio, official SDK): tools compile, check, lint, format, run and resource purus://stdlib. run is disabled unless PURUS_MCP_ALLOW_RUN=1 (child process, 5 s timeout, 64 KB cap, not sandboxed, documented). 5 tests through the SDK's in-memory client/server; the built server answers initialize over stdio.

Both depend on the workspace packages (workspace:*); root build now builds the packages and test:packages runs them sequentially (parallel vitest runs collide on the shared cache dir on Windows). Versions stay 0.0.0-reserved; the first real release is release-lsp.yml / release-mcp.yml with 0.1.0.

Not yet: go to definition/references/rename/semantic tokens (#20), source positions in compiler diagnostics for ranges (#30), in-process compile (#32), conformance tests (#35).

@otnc
otnc merged commit cad1a1f into main Oct 16, 2026
8 checks passed
@otnc
otnc deleted the feat/lsp-mcp branch October 16, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

LSP: write @puruslang/lsp from scratch on the compiler front end

1 participant