Implement PowerShell language server integration using PowerShell Editor
Services (PSES). The implementation includes:
- PowerShellLanguageServer class with automatic PSES download and setup
- Support for PowerShell file extensions: .ps1, .psm1, .psd1
- Symbol detection using PSES format: "function FuncName ()"
- 7 basic tests + 2 integration tests covering:
- Document symbols and function detection
- Within-file references
- Cross-file go-to-definition
- SerenaAgent find_symbol and find_references
Requires: pwsh (PowerShell 7+) in PATH. PSES auto-downloads on first use.
* Adds full Vue.js language support to Serena using the official @vue/language-server.
* Integrates @vue/language-server for Vue SFC (.vue) file support
* Manages a companion TypeScript server for cross-file references between Vue components and TypeScript modules
* Implemenet logic for tie-breaks when languages match the same number of files
(adding priority to the Language enum, deprioritising languages that are supersets of others)
---------
Co-authored-by: Michael Panchenko <michael.panchenko@oraios-ai.de>
Co-authored-by: Dominik Jain <dominik.jain@oraios-ai.de>
* Implement Ruby dual language server support with ruby-lsp and Solargraph
- Add ruby-lsp as primary Ruby language server with modern LSP features
- Mark Solargraph as experimental legacy option (ruby_solargraph enum)
- Implement Bundler-first installation strategy for ruby-lsp
- Add Rails project detection and performance optimizations
- Fix LSP protocol compliance for Solargraph (languageId: "ruby")
- Support both .rb and .erb files for ruby-lsp, .rb only for Solargraph
- Address reviewer feedback on dependency management and error handling
- Update test compatibility for dual language server behavior
Co-authored-by: Claude <noreply@anthropic.com>
rust-analyzer now requires rustup to be installed
## Motivation
The previous implementation bundled rust-analyzer binaries that quickly
became outdated and required manual updates to Serena's codebase. This
caused version mismatches between the bundled rust-analyzer and users'
actual Rust toolchain versions.
## Changes
- Remove RuntimeDependency-based binary bundling for rust-analyzer
- Use rustup-managed rust-analyzer from the user's toolchain
- Add automatic installation of rust-analyzer component if missing
- Install rustup with minimal profile in Docker images
## Rationale
Rust development universally relies on rustup for toolchain management.
Unlike some other languages where system packages or bundled binaries
make sense, Rust developers already have rustup installed and expect
tools to use their toolchain's versions.
This approach ensures:
- rust-analyzer always matches the user's Rust version
- No outdated binaries shipped with Serena
- Automatic updates via `rustup update`
- Consistency with Rust ecosystem expectations
The LSP API of rust-analyzer is stable enough that version differences
are not a concern. If users don't have rustup, they'll get a clear error
message - this is acceptable since you cannot meaningfully develop Rust
without rustup.
## Docker Support
Added rustup installation to Docker images to ensure Rust support works
in containerized environments. Uses minimal profile to reduce image size
while still providing full rust-analyzer functionality.
Tokens (ccusage 15.5.0): 1,676,097
Claude version: 1.0.56
Prompt (after reading instructions):
Explore the repository and write memories explaining the structure and the core concepts. Also write a memory specifically with instructions on how to add support for a new programming language - including how to │
│ test it. Have a look at how existing languages are tested, e.g. csharp, to understand how this can be done.