UAT: agents lsp show missing Bound Actors panel — spec requires listing actors bound to the LSP server #2149

Open
opened 2026-04-03 04:27:56 +00:00 by freemo · 1 comment
Owner

Metadata

  • Branch: bugfix/lsp-show-bound-actors-panel
  • Commit Message: fix(cli): add Bound Actors panel and separate Capabilities panel to agents lsp show output
  • Milestone: v3.6.0
  • Parent Epic: #824

Background and Context

During UAT testing of the LSP integration feature, the agents lsp show command was found to be missing the Bound Actors panel that the specification explicitly requires. The spec defines lsp show as displaying which actors are currently bound to the LSP server, including the binding type (explicit, language-based, or auto-discovery). Additionally, the Capabilities information is rendered inline within the single LSP Server Details panel rather than in its own dedicated panel as the spec requires.

This means users cannot see which actors are using an LSP server from the show command — a key operational feature for managing LSP servers in a multi-actor environment.

Spec reference: docs/specification.md, section "agents lsp show", example output.

Current Behavior

The agents lsp show output renders a single LSP Server Details panel with all fields inline (Name, Namespace, Description, Command, Args, Transport, Languages, Capabilities). There is no separate Capabilities panel and no Bound Actors panel at all.

╭──── LSP Server Details ─────╮
│ Name: local/pyright         │
│ Namespace: local            │
│ Description: (none)         │
│ Command: pyright-langserver │
│ Args: (none)                │
│ Transport: stdio            │
│ Languages: python           │
│ Capabilities: diagnostics   │
╰─────────────────────────────╯

Code location: src/cleveragents/cli/commands/lsp.py, show() function, around line 280. The function builds a single details string and prints it as one panel. It does not query the actor registry for bound actors, and does not render a separate Capabilities panel or Bound Actors panel.

Expected Behavior

Per docs/specification.md, the agents lsp show output must render three distinct panels: LSP Server Details, Capabilities, and Bound Actors. The Bound Actors panel must list each actor currently bound to the LSP server along with its binding type (explicit, language-based, or auto-discovery):

╭─ LSP Server Details ──────────────────────────────────────────╮
│ Name: local/pyright                                           │
│ Languages: python                                             │
│ Command: pyright-langserver --stdio                           │
│ Root path: {{ project.root }}                                 │
│ Init options:                                                 │
│   python.analysis.typeCheckingMode: standard                  │
╰──────────────────────────────────────────────────────────────╯

╭─ Capabilities ────────────────────────────────────────────────╮
│ diagnostics, hover, completions, references, definitions,     │
│ symbols, rename, code_actions                                 │
╰──────────────────────────────────────────────────────────────╯

╭─ Bound Actors ────────────────────────────────────────────────╮
│ local/code-reviewer      (explicit binding)                   │
│ local/refactor-agent     (language-based: python)             │
│ local/polyglot-planner   (auto-discovery)                     │
╰──────────────────────────────────────────────────────────────╯

Note: Implementing the Bound Actors panel requires querying the actor registry to find actors that reference this LSP server by name (explicit), by language match (language-based), or via auto-discovery. This is a non-trivial integration that requires actor registry access from the LSP CLI command.

Steps to Reproduce

  1. Register an LSP server: agents lsp add --config pyright.yaml
  2. Run: agents lsp show local/pyright
  3. Observe — no Bound Actors panel is shown, and capabilities are not in a separate panel

Acceptance Criteria

  • agents lsp show renders three separate panels: LSP Server Details, Capabilities, and Bound Actors
  • The Capabilities panel lists all capabilities as a comma-separated list (not inline in the details panel)
  • The Bound Actors panel lists each actor bound to the LSP server with its binding type: (explicit binding), (language-based: <lang>), or (auto-discovery)
  • When no actors are bound, the Bound Actors panel shows an appropriate empty-state message (e.g., (no actors bound))
  • The actor registry is queried to determine which actors reference this LSP server by name, by language, or via auto-discovery
  • All output formats (rich, plain, json, yaml) reflect the three-panel structure
  • All existing agents lsp show BDD scenarios are updated to assert the new panel structure
  • New BDD scenarios cover: no bound actors, explicit binding, language-based binding, auto-discovery binding

Supporting Information

  • Severity: Medium — users cannot see which actors are using an LSP server from the show command, which is a key operational feature
  • Spec reference: docs/specification.md, section "agents lsp show"
  • Code location: src/cleveragents/cli/commands/lsp.pyshow() function, around line 280
  • Parent Epic: #824 (Epic: LSP Functional Runtime)
  • Related issue: #2137 (UAT: agents lsp list missing Bound column — same actor-registry integration concern)

Subtasks

  • Identify the actor registry query needed to find actors bound to a given LSP server (by name, by language, by auto-discovery)
  • Refactor show() in src/cleveragents/cli/commands/lsp.py to render a separate Capabilities panel
  • Implement the Bound Actors panel in show(), querying the actor registry for binding type per actor
  • Handle the empty-state case for Bound Actors when no actors are bound
  • Update all output format renderers (rich, plain, json, yaml) to include the three-panel structure
  • Tests (Behave): Update existing agents lsp show scenarios to assert the new three-panel structure
  • Tests (Behave): Add new scenarios for no bound actors, explicit binding, language-based binding, auto-discovery binding
  • Tests (Robot): Add/update integration test for agents lsp show output format
  • Verify coverage ≥ 97% via nox -s coverage_report
  • Run nox (all default sessions), fix any errors

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly (fix(cli): add Bound Actors panel and separate Capabilities panel to agents lsp show output), followed by a blank line, then additional lines providing relevant details about the implementation.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly (bugfix/lsp-show-bound-actors-panel).
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass.
  • Coverage ≥ 97%.

Automated by CleverAgents Bot
Supervisor: UAT Testing | Agent: ca-new-issue-creator

## Metadata - **Branch**: `bugfix/lsp-show-bound-actors-panel` - **Commit Message**: `fix(cli): add Bound Actors panel and separate Capabilities panel to agents lsp show output` - **Milestone**: v3.6.0 - **Parent Epic**: #824 ## Background and Context During UAT testing of the LSP integration feature, the `agents lsp show` command was found to be missing the `Bound Actors` panel that the specification explicitly requires. The spec defines `lsp show` as displaying which actors are currently bound to the LSP server, including the binding type (explicit, language-based, or auto-discovery). Additionally, the `Capabilities` information is rendered inline within the single `LSP Server Details` panel rather than in its own dedicated panel as the spec requires. This means users cannot see which actors are using an LSP server from the `show` command — a key operational feature for managing LSP servers in a multi-actor environment. **Spec reference:** `docs/specification.md`, section "agents lsp show", example output. ## Current Behavior The `agents lsp show` output renders a single `LSP Server Details` panel with all fields inline (Name, Namespace, Description, Command, Args, Transport, Languages, Capabilities). There is no separate `Capabilities` panel and no `Bound Actors` panel at all. ``` ╭──── LSP Server Details ─────╮ │ Name: local/pyright │ │ Namespace: local │ │ Description: (none) │ │ Command: pyright-langserver │ │ Args: (none) │ │ Transport: stdio │ │ Languages: python │ │ Capabilities: diagnostics │ ╰─────────────────────────────╯ ``` **Code location:** `src/cleveragents/cli/commands/lsp.py`, `show()` function, around line 280. The function builds a single `details` string and prints it as one panel. It does not query the actor registry for bound actors, and does not render a separate `Capabilities` panel or `Bound Actors` panel. ## Expected Behavior Per `docs/specification.md`, the `agents lsp show` output must render three distinct panels: `LSP Server Details`, `Capabilities`, and `Bound Actors`. The `Bound Actors` panel must list each actor currently bound to the LSP server along with its binding type (explicit, language-based, or auto-discovery): ``` ╭─ LSP Server Details ──────────────────────────────────────────╮ │ Name: local/pyright │ │ Languages: python │ │ Command: pyright-langserver --stdio │ │ Root path: {{ project.root }} │ │ Init options: │ │ python.analysis.typeCheckingMode: standard │ ╰──────────────────────────────────────────────────────────────╯ ╭─ Capabilities ────────────────────────────────────────────────╮ │ diagnostics, hover, completions, references, definitions, │ │ symbols, rename, code_actions │ ╰──────────────────────────────────────────────────────────────╯ ╭─ Bound Actors ────────────────────────────────────────────────╮ │ local/code-reviewer (explicit binding) │ │ local/refactor-agent (language-based: python) │ │ local/polyglot-planner (auto-discovery) │ ╰──────────────────────────────────────────────────────────────╯ ``` **Note:** Implementing the `Bound Actors` panel requires querying the actor registry to find actors that reference this LSP server by name (explicit), by language match (language-based), or via auto-discovery. This is a non-trivial integration that requires actor registry access from the LSP CLI command. ## Steps to Reproduce 1. Register an LSP server: `agents lsp add --config pyright.yaml` 2. Run: `agents lsp show local/pyright` 3. Observe — no `Bound Actors` panel is shown, and capabilities are not in a separate panel ## Acceptance Criteria - [ ] `agents lsp show` renders three separate panels: `LSP Server Details`, `Capabilities`, and `Bound Actors` - [ ] The `Capabilities` panel lists all capabilities as a comma-separated list (not inline in the details panel) - [ ] The `Bound Actors` panel lists each actor bound to the LSP server with its binding type: `(explicit binding)`, `(language-based: <lang>)`, or `(auto-discovery)` - [ ] When no actors are bound, the `Bound Actors` panel shows an appropriate empty-state message (e.g., `(no actors bound)`) - [ ] The actor registry is queried to determine which actors reference this LSP server by name, by language, or via auto-discovery - [ ] All output formats (rich, plain, json, yaml) reflect the three-panel structure - [ ] All existing `agents lsp show` BDD scenarios are updated to assert the new panel structure - [ ] New BDD scenarios cover: no bound actors, explicit binding, language-based binding, auto-discovery binding ## Supporting Information - **Severity:** Medium — users cannot see which actors are using an LSP server from the `show` command, which is a key operational feature - **Spec reference:** `docs/specification.md`, section "agents lsp show" - **Code location:** `src/cleveragents/cli/commands/lsp.py` → `show()` function, around line 280 - **Parent Epic:** #824 (Epic: LSP Functional Runtime) - **Related issue:** #2137 (UAT: `agents lsp list` missing `Bound` column — same actor-registry integration concern) ## Subtasks - [ ] Identify the actor registry query needed to find actors bound to a given LSP server (by name, by language, by auto-discovery) - [ ] Refactor `show()` in `src/cleveragents/cli/commands/lsp.py` to render a separate `Capabilities` panel - [ ] Implement the `Bound Actors` panel in `show()`, querying the actor registry for binding type per actor - [ ] Handle the empty-state case for `Bound Actors` when no actors are bound - [ ] Update all output format renderers (rich, plain, json, yaml) to include the three-panel structure - [ ] Tests (Behave): Update existing `agents lsp show` scenarios to assert the new three-panel structure - [ ] Tests (Behave): Add new scenarios for no bound actors, explicit binding, language-based binding, auto-discovery binding - [ ] Tests (Robot): Add/update integration test for `agents lsp show` output format - [ ] Verify coverage ≥ 97% via `nox -s coverage_report` - [ ] Run `nox` (all default sessions), fix any errors ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly (`fix(cli): add Bound Actors panel and separate Capabilities panel to agents lsp show output`), followed by a blank line, then additional lines providing relevant details about the implementation. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly (`bugfix/lsp-show-bound-actors-panel`). - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass. - Coverage ≥ 97%. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: ca-new-issue-creator
freemo added this to the v3.6.0 milestone 2026-04-03 04:28:28 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Medium
  • Milestone: v3.6.0
  • MoSCoW: Should Have — the spec requires a Bound Actors panel in agents lsp show; this is a spec compliance gap in the LSP subsystem
  • Parent Epic: #824 (LSP Functional Runtime)

Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Issue triaged by project owner: - **State**: Verified - **Priority**: Medium - **Milestone**: v3.6.0 - **MoSCoW**: Should Have — the spec requires a Bound Actors panel in `agents lsp show`; this is a spec compliance gap in the LSP subsystem - **Parent Epic**: #824 (LSP Functional Runtime) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
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.

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