This PR creates the language server toolkit. This toolkit is used to stand up & communicate with language servers over the language server protocol. It draws heavy inspiration from https://github.com/microsoft/multilspy.
Remaining work
The following work will not be implemented in this PR, but is required before we make language servers part of the default:
Prompt engineer a way to reliably convert searches for a symbol into requests to the LSP (instead of current ripgrep).
(Blocked by above) Determine whether this is a net improvement over the current implementation.
Tune the number of surrounding lines shown in the response from the language server.
(Potentially) Use request_document_symbols to better inform context (though there is some evidence from Aider that this doesn't scale well on large repos).
Implement the TODO in session.py@line:189, to update the language server about any files that may have been changed by the user while goose is running.
Description
This PR creates the language server toolkit. This toolkit is used to stand up & communicate with language servers over the language server protocol. It draws heavy inspiration from https://github.com/microsoft/multilspy.
Remaining work
The following work will not be implemented in this PR, but is required before we make language servers part of the default:
request_document_symbols
to better inform context (though there is some evidence from Aider that this doesn't scale well on large repos).session.py@line:189
, to update the language server about any files that may have been changed by the user while goose is running.