Repository navigation
Description
Context
The VS Code extension's LSP client was previously implemented in ReScript, which is banned estate-wide (language policy → AffineScript). It was removed in #77 (PR), reducing editors/vscode/ to passive language support (TextMate grammar + language-configuration.json). Zero .res files now remain.
The intended reimplementation language is AffineScript (estate-primary). However, a faithful client cannot be written yet:
- AffineScript has no host-FFI / extern mechanism — there is no way to call the VS Code extension-host JS APIs (
vscode.workspace.getConfiguration,vscode-languageclient'sLanguageClient, command registration, etc.). - AffineScript compiles to WASM, not the Deno/Node JS host a VS Code extension runs in.
- No real
.afsources or in-repo compiler exist yet (the language is specification-first).
This work is therefore blocked on the planned estate ABI/FFI layer (tracked in hyperpolymath/nextgen-languages ROADMAP as the Idris2 + Zig interop work).
What to restore (parity with the removed ReScript client)
Driving the existing Rust woke-lsp server, the client provided:
- Activation on
onLanguage:wokelang; start/stop theLanguageClientover stdio, server path fromwokelang.serverPath(defaultwoke-lsp). - Commands:
wokelang.restartServer,wokelang.showInfo,wokelang.checkConsent,wokelang.formatDocument. - Keybindings:
ctrl/cmd+shift+f(format),ctrl/cmd+shift+c(consent check); editor-context menu entries. - Settings:
wokelang.serverPath,wokelang.enableDiagnostics/Completion/Hover/Formatting,wokelang.trace.server.
These manifest contributions were stripped from package.json and should be re-added alongside the client implementation.
Acceptance
- Estate ABI/FFI layer provides a usable JS-host binding path for AffineScript (prerequisite — link the enabling issue when it lands).
- Client authored in AffineScript, compiled to an extension-host module, wired back into
package.json(main,activationEvents,contributes.commands/menus/keybindings/configuration). - Passes the governance gate (no banned-language files) and the extension loads + connects to
woke-lsp.
Notes
- The
woke-lspRust server is unaffected and continues to build (cargo build --bin woke-lsp); any LSP-capable editor can use it directly in the meantime. - If AffineScript host-FFI proves infeasible long-term, the policy's documented fallback ("JavaScript — only where AffineScript cannot") is the alternative — to be decided by the maintainer at that point.
Filed while shepherding #77 through the CI gate; the ReScript removal there closed the governance banned-language failure.
Activity
docs(machine-readable): refresh stale STATE + reconcile ANCHOR/CLAUDE…
docs: correct README/EXPLAINME to real state + add in-tree wiki/
feat(vscode): implement fallback JavaScript LSP client (#136)
hyperpolymath commentedon Aug 24, 2026
Resolved in PR restoring JS fallback LSP client.