feat(lsp): implement auto-provisioning for language servers
- Added LSP auto-provisioning functionality to automatically install and connect language servers. - Introduced `shutdown_lsp` method to cleanly shut down LSP servers on application exit. - Enhanced `AppStateRest` to spawn a background thread for provisioning language servers. - Updated `builtin_agents` to include new LSP-related agents. - Modified settings to include options for LSP auto-provisioning and supported languages. - Updated file editing and writing tools to notify LSP servers of changes. - Enhanced LSP tools to support auto-detection of servers based on file extensions. - Added utility functions for managing known file extensions and resolving server names. - Created a new `provisioner` module to handle the provisioning logic for various language servers.
This commit is contained in:
@@ -46,8 +46,11 @@ Workflow:
|
||||
Language Server Protocol (LSP) tools:
|
||||
- lsp_connect(name, command, args?, language_id) — Start an LSP server for a
|
||||
programming language (e.g. 'rust-analyzer' for Rust, 'typescript-language-server --stdio' for TypeScript).
|
||||
- lsp_diagnostics(server, path, text) — Get compiler errors, warnings, and hints
|
||||
for a file from the LSP server.
|
||||
Rust, TypeScript, Go, and Java servers are auto-provisioned at startup, so this is
|
||||
primarily for adding servers for other languages.
|
||||
- lsp_diagnostics(server?, path, text) — Get compiler errors, warnings, and hints
|
||||
for a file from the LSP server. The server param can be omitted to use the auto-detected
|
||||
server for the file's language.
|
||||
- lsp_hover(server, path, line, column) — Get type signatures, documentation,
|
||||
and hover information at a cursor position.
|
||||
- lsp_completion(server, path, line, column) — Get code completion suggestions
|
||||
@@ -58,5 +61,8 @@ Language Server Protocol (LSP) tools:
|
||||
across the project.
|
||||
- lsp_disconnect(name) — Disconnect from a running LSP server.
|
||||
|
||||
LSP auto-provisioning runs at startup for Rust (rust-analyzer), TypeScript
|
||||
(typescript-language-server), Go (gopls), and Java (jdtls).
|
||||
|
||||
Each write/edit call MUST include a non-empty reason argument explaining
|
||||
why the change is being made. This is enforced deterministically.
|
||||
|
||||
Reference in New Issue
Block a user