Install language servers (gopls, typescript-language-server, pyright, rust-analyzer) and their prerequisite toolchains (Go, Node/npm, rustup) so the lsp tool works. Use when the user asks to enable or install LSP / language-server support, when lsp_enable reports a missing toolchain, or when the lsp tool reports no language server is installed.
Install
npx skillscat add weave-os/router/install-lsps Install via the SkillsCat registry.
Install LSPs
Enable the lsp tool for a language by installing its language server — and,
when the server install needs it, the underlying toolchain.
Rules
- Everything here is consent-gated: only act on the user's explicit go-ahead,
and confirm each toolchain install separately — those are system-level
changes, not part of whatever task prompted this. - If the user declines, stop. If they ask not to be offered again, call
lsp_enablewith{"language": "<language>", "action": "dismiss"}. - Prefer the
lsp_enabletool over bash whenever the toolchain already
exists; reach for bash only for the prerequisiteslsp_enablerefuses to
install itself.
Per language
Work the ladder for each language the user wants:
- Check what is missing. Server binaries:
gopls,typescript-language-server,pyright-langserver(orbasedpyright-langserver),rust-analyzer— also look in~/go/binand~/.cargo/bin, which the lsp tool searches even when they are off PATH.
Toolchains:go,npm,rustup. - Toolchain present → call
lsp_enablewith{"language": "<go|typescript|python|rust>"}and you are done; it runs the
right server install and verifies the binary resolves. - Toolchain missing → show the user the command you intend to run, get
their confirmation, run it in bash, then return to step 2. - Verify with a real
lspquery (documentSymbolon an actual source
file). The first query per workspace can take up to a minute while the
server indexes; that is normal.
Toolchain installs (step 3 reference)
Go (for gopls):
brew install go # macOS
sudo apt-get install -y golang-go # Debian/Ubuntu; or dnf install golangOr the official downloads at https://go.dev/dl for anything else.
Node/npm (for typescript-language-server and pyright):
brew install node # macOS
sudo apt-get install -y nodejs npm # Debian/UbuntuOr nvm (https://github.com/nvm-sh/nvm) when the user prefers per-user installs.
rustup (for rust-analyzer):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shThis is the official rust installer; show the user the command before running
it and follow its printed PATH instructions afterwards.
Notes
go installdrops gopls in~/go/binand rustup drops rust-analyzer in~/.cargo/bin. The lsp tool finds both without PATH changes; other tools
may still want a PATH entry.- All of this can also happen at install time:
npx @weave-os/router --pi --lsp go,typescript,python,rust.