UAT: LspServerConfig model missing root_path and health_check fields; init_options renamed to initialization #4518

Open
opened 2026-04-08 14:16:15 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: Configuration System — LSP Server Configuration Files

Expected Behavior (from spec)

The spec (Section "LSP Server Configuration Files", lines 36138-36310) defines the following fields for LSP server configuration:

Field Required Description
name Yes Fully qualified LSP server name
languages Yes Programming languages this server supports
command Yes Shell command to launch the LSP server process
args No Additional arguments appended to the command
env No Environment variables set when launching the server process
root_path No Workspace root path sent in the LSP initialize request. Default: {{ project.root }}
init_options No Initialization options sent in the LSP initialize request
capabilities No LSP capabilities this server advertises
health_check No Health monitoring configuration
health_check.enabled No Whether to perform periodic health checks. Default: true
health_check.interval_seconds No Seconds between health check probes. Default: 60, min: 10
health_check.restart_on_failure No Auto-restart server on health check failure. Default: true
health_check.max_restarts No Maximum automatic restarts before marking server as failed. Default: 3

Actual Behavior (from code)

In src/cleveragents/lsp/models.py, the LspServerConfig model:

  1. Missing root_path field — The spec defines root_path as a configurable field with default {{ project.root }}. The implementation has no such field.

  2. Missing health_check field — The spec defines a health_check sub-object with enabled, interval_seconds, restart_on_failure, and max_restarts. The implementation has no such field.

  3. init_options renamed to initialization — The spec uses init_options as the field name for LSP initialization options. The implementation uses initialization instead. This means YAML config files using the spec-documented init_options key will fail to load or be silently ignored.

  4. Extra field workspace_settings — The implementation has a workspace_settings field not defined in the spec's JSON Schema. While this may be an internal implementation detail, it could cause confusion if users include it in config files.

  5. Extra field transport — The implementation has a transport field (stdio/tcp) not defined in the spec's JSON Schema for LSP server config files.

Code Location

  • src/cleveragents/lsp/models.py, lines 64-132

Impact

  1. Users who write LSP server config files with root_path (as documented) will have the field silently ignored.
  2. Users who write LSP server config files with health_check (as documented) will have the field silently ignored.
  3. Users who write LSP server config files with init_options (as documented) will have their initialization options silently ignored — they must use the undocumented initialization key instead.
  4. The spec example in the documentation uses init_options, so the example itself won't work with the current implementation.

Example from Spec (won't work with current implementation)

name: local/pyright
languages:
  - python
command: pyright-langserver
args: ["--stdio"]
init_options:           # <-- This key is ignored by current implementation
  python.analysis.typeCheckingMode: standard
root_path: "{{ project.root }}"  # <-- This field is missing from implementation
health_check:           # <-- This field is missing from implementation
  enabled: true
  interval_seconds: 60

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: uat-tester

## Bug Report **Feature Area:** Configuration System — LSP Server Configuration Files ### Expected Behavior (from spec) The spec (Section "LSP Server Configuration Files", lines 36138-36310) defines the following fields for LSP server configuration: | Field | Required | Description | |-------|----------|-------------| | `name` | Yes | Fully qualified LSP server name | | `languages` | Yes | Programming languages this server supports | | `command` | Yes | Shell command to launch the LSP server process | | `args` | No | Additional arguments appended to the command | | `env` | No | Environment variables set when launching the server process | | `root_path` | No | Workspace root path sent in the LSP initialize request. Default: `{{ project.root }}` | | `init_options` | No | Initialization options sent in the LSP initialize request | | `capabilities` | No | LSP capabilities this server advertises | | `health_check` | No | Health monitoring configuration | | `health_check.enabled` | No | Whether to perform periodic health checks. Default: `true` | | `health_check.interval_seconds` | No | Seconds between health check probes. Default: `60`, min: `10` | | `health_check.restart_on_failure` | No | Auto-restart server on health check failure. Default: `true` | | `health_check.max_restarts` | No | Maximum automatic restarts before marking server as failed. Default: `3` | ### Actual Behavior (from code) In `src/cleveragents/lsp/models.py`, the `LspServerConfig` model: 1. **Missing `root_path` field** — The spec defines `root_path` as a configurable field with default `{{ project.root }}`. The implementation has no such field. 2. **Missing `health_check` field** — The spec defines a `health_check` sub-object with `enabled`, `interval_seconds`, `restart_on_failure`, and `max_restarts`. The implementation has no such field. 3. **`init_options` renamed to `initialization`** — The spec uses `init_options` as the field name for LSP initialization options. The implementation uses `initialization` instead. This means YAML config files using the spec-documented `init_options` key will fail to load or be silently ignored. 4. **Extra field `workspace_settings`** — The implementation has a `workspace_settings` field not defined in the spec's JSON Schema. While this may be an internal implementation detail, it could cause confusion if users include it in config files. 5. **Extra field `transport`** — The implementation has a `transport` field (stdio/tcp) not defined in the spec's JSON Schema for LSP server config files. ### Code Location - `src/cleveragents/lsp/models.py`, lines 64-132 ### Impact 1. Users who write LSP server config files with `root_path` (as documented) will have the field silently ignored. 2. Users who write LSP server config files with `health_check` (as documented) will have the field silently ignored. 3. Users who write LSP server config files with `init_options` (as documented) will have their initialization options silently ignored — they must use the undocumented `initialization` key instead. 4. The spec example in the documentation uses `init_options`, so the example itself won't work with the current implementation. ### Example from Spec (won't work with current implementation) ```yaml name: local/pyright languages: - python command: pyright-langserver args: ["--stdio"] init_options: # <-- This key is ignored by current implementation python.analysis.typeCheckingMode: standard root_path: "{{ project.root }}" # <-- This field is missing from implementation health_check: # <-- This field is missing from implementation enabled: true interval_seconds: 60 ``` --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.5.0 milestone 2026-04-08 17:42:05 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#4518
No description provided.