UAT: TUI /help slash command returns only 3 commands instead of listing all 70 catalogued slash commands #3434

Open
opened 2026-04-05 16:47:57 +00:00 by freemo · 3 comments
Owner

Metadata

  • Branch: fix/tui-help-command-full-catalog-listing
  • Commit Message: fix(tui): make /help command list all catalogued slash commands from SLASH_COMMAND_SPECS
  • Milestone: (none — backlog)
  • Parent Epic: #868

Backlog note: This issue was discovered during autonomous operation
on milestone v3.7.0. It does not block milestone completion and has been
placed in the backlog for human review and future milestone assignment.

Bug Description

Feature Area: TUI slash commands (ADR-046)

The /help slash command in TuiCommandRouter.handle() returns a hardcoded string listing only 3 commands instead of dynamically listing all 70 catalogued slash commands from SLASH_COMMAND_SPECS.

What Was Tested

Code-level analysis of TuiCommandRouter.handle() in src/cleveragents/tui/commands.py against the slash command catalog in src/cleveragents/tui/slash_catalog.py and the spec in ADR-046.

Expected Behavior (from spec)

Per ADR-046, the /help [command] command should "Show help for a specific command, or list all commands". When invoked without arguments, it should list all available slash commands — all 70 catalogued commands across 14 groups, using the colon-namespaced format (e.g., persona:list, session:new).

When invoked with a command argument (e.g., /help persona:list), it should display command-specific help including the command's description, usage, and any aliases.

Actual Behavior

TuiCommandRouter.handle() returns a hardcoded string listing only 3 commands:

if tokens[0] == "help":
    return "Commands: /persona, /session, /help"

This means:

  • 67 of the 70 catalogued commands are not mentioned in the help output
  • The help response does not use the SLASH_COMMAND_SPECS catalog at all
  • The help response does not support /help <command> for command-specific help
  • The help response lists persona and session in space-separated format, not the colon-namespaced format used by the catalog (e.g., persona instead of persona:list, persona:create, etc.)

Code Location

  • src/cleveragents/tui/commands.py line 53: return "Commands: /persona, /session, /help" — hardcoded, does not use catalog
  • src/cleveragents/tui/slash_catalog.py lines 17–88: 70 commands defined in SLASH_COMMAND_SPECS — not used by help handler

Steps to Reproduce

  1. In the TUI, type /help and press Enter
  2. Observe: "Commands: /persona, /session, /help" — only 3 commands listed
  3. Expected: All 70 catalogued commands listed, grouped by namespace

For command-specific help:

  1. In the TUI, type /help persona:list and press Enter
  2. Observe: No command-specific help rendered (falls through to generic or error)
  3. Expected: Description, usage, and aliases for persona:list displayed

Subtasks

  • Replace hardcoded help string in TuiCommandRouter.handle() with a dynamic lookup against SLASH_COMMAND_SPECS
  • Implement /help (no args): iterate SLASH_COMMAND_SPECS, group commands by namespace, and render a formatted listing of all 70 commands with their descriptions
  • Implement /help <command> (with arg): look up the given command in SLASH_COMMAND_SPECS and render its full help (description, usage, aliases)
  • Ensure output uses colon-namespaced format (e.g., persona:list) consistent with the catalog and ADR-046
  • Tests (Behave): Add scenario — /help with no args returns all 70 catalogued commands grouped by namespace
  • Tests (Behave): Add scenario — /help <command> returns command-specific help for a known command
  • Tests (Behave): Add scenario — /help <unknown> returns an appropriate "command not found" message
  • Tests (Robot): Add integration test for /help TUI command output
  • 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.
  • /help (no args) dynamically lists all commands from SLASH_COMMAND_SPECS (all 70, grouped by namespace) — no hardcoded command list remains.
  • /help <command> renders command-specific help (description, usage, aliases) for any command in SLASH_COMMAND_SPECS.
  • /help <unknown> returns a clear "command not found" message.
  • All Behave BDD scenarios for the help handler pass.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, 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.
  • 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-uat-tester

## Metadata - **Branch**: `fix/tui-help-command-full-catalog-listing` - **Commit Message**: `fix(tui): make /help command list all catalogued slash commands from SLASH_COMMAND_SPECS` - **Milestone**: *(none — backlog)* - **Parent Epic**: #868 > **Backlog note:** This issue was discovered during autonomous operation > on milestone v3.7.0. It does not block milestone completion and has been > placed in the backlog for human review and future milestone assignment. ## Bug Description **Feature Area:** TUI slash commands (ADR-046) The `/help` slash command in `TuiCommandRouter.handle()` returns a hardcoded string listing only 3 commands instead of dynamically listing all 70 catalogued slash commands from `SLASH_COMMAND_SPECS`. ### What Was Tested Code-level analysis of `TuiCommandRouter.handle()` in `src/cleveragents/tui/commands.py` against the slash command catalog in `src/cleveragents/tui/slash_catalog.py` and the spec in ADR-046. ### Expected Behavior (from spec) Per ADR-046, the `/help [command]` command should "Show help for a specific command, or list all commands". When invoked without arguments, it should list all available slash commands — all 70 catalogued commands across 14 groups, using the colon-namespaced format (e.g., `persona:list`, `session:new`). When invoked with a command argument (e.g., `/help persona:list`), it should display command-specific help including the command's description, usage, and any aliases. ### Actual Behavior `TuiCommandRouter.handle()` returns a hardcoded string listing only 3 commands: ```python if tokens[0] == "help": return "Commands: /persona, /session, /help" ``` This means: - 67 of the 70 catalogued commands are not mentioned in the help output - The help response does not use the `SLASH_COMMAND_SPECS` catalog at all - The help response does not support `/help <command>` for command-specific help - The help response lists `persona` and `session` in space-separated format, not the colon-namespaced format used by the catalog (e.g., `persona` instead of `persona:list`, `persona:create`, etc.) ### Code Location - `src/cleveragents/tui/commands.py` line 53: `return "Commands: /persona, /session, /help"` — hardcoded, does not use catalog - `src/cleveragents/tui/slash_catalog.py` lines 17–88: 70 commands defined in `SLASH_COMMAND_SPECS` — not used by help handler ### Steps to Reproduce 1. In the TUI, type `/help` and press Enter 2. Observe: `"Commands: /persona, /session, /help"` — only 3 commands listed 3. Expected: All 70 catalogued commands listed, grouped by namespace For command-specific help: 1. In the TUI, type `/help persona:list` and press Enter 2. Observe: No command-specific help rendered (falls through to generic or error) 3. Expected: Description, usage, and aliases for `persona:list` displayed ## Subtasks - [ ] Replace hardcoded help string in `TuiCommandRouter.handle()` with a dynamic lookup against `SLASH_COMMAND_SPECS` - [ ] Implement `/help` (no args): iterate `SLASH_COMMAND_SPECS`, group commands by namespace, and render a formatted listing of all 70 commands with their descriptions - [ ] Implement `/help <command>` (with arg): look up the given command in `SLASH_COMMAND_SPECS` and render its full help (description, usage, aliases) - [ ] Ensure output uses colon-namespaced format (e.g., `persona:list`) consistent with the catalog and ADR-046 - [ ] Tests (Behave): Add scenario — `/help` with no args returns all 70 catalogued commands grouped by namespace - [ ] Tests (Behave): Add scenario — `/help <command>` returns command-specific help for a known command - [ ] Tests (Behave): Add scenario — `/help <unknown>` returns an appropriate "command not found" message - [ ] Tests (Robot): Add integration test for `/help` TUI command output - [ ] 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. - [ ] `/help` (no args) dynamically lists all commands from `SLASH_COMMAND_SPECS` (all 70, grouped by namespace) — no hardcoded command list remains. - [ ] `/help <command>` renders command-specific help (description, usage, aliases) for any command in `SLASH_COMMAND_SPECS`. - [ ] `/help <unknown>` returns a clear "command not found" message. - [ ] All Behave BDD scenarios for the help handler pass. - [ ] A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, 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. - [ ] 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-uat-tester
freemo added this to the v3.7.0 milestone 2026-04-05 17:06:16 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Backlog (confirmed) — /help slash command is hardcoded to 3 commands instead of listing all 70. TUI polish.
  • Milestone: v3.7.0 (TUI Implementation)
  • Story Points: 3 (M) — Replace hardcoded string with dynamic catalog lookup + implement /help <command> subcommand
  • MoSCoW: Could Have — The TUI is functional without a complete help listing. Users can still discover commands via the slash overlay.
  • Parent Epic: #868 (TUI Interface, Modals and Persona System)

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

Issue triaged by project owner: - **State**: Verified - **Priority**: Backlog (confirmed) — `/help` slash command is hardcoded to 3 commands instead of listing all 70. TUI polish. - **Milestone**: v3.7.0 (TUI Implementation) - **Story Points**: 3 (M) — Replace hardcoded string with dynamic catalog lookup + implement `/help <command>` subcommand - **MoSCoW**: Could Have — The TUI is functional without a complete help listing. Users can still discover commands via the slash overlay. - **Parent Epic**: #868 (TUI Interface, Modals and Persona System) --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Author
Owner

Starting implementation on branch fix/tui-help-command-full-catalog-listing.

Implementation summary:

  • Replaced hardcoded "Commands: /persona, /session, /help" with dynamic lookup against SLASH_COMMAND_SPECS
  • Added _help_command(), _help_list_all(), _help_for_command() methods to TuiCommandRouter
  • /help (no args): lists all 70 commands grouped by namespace (sorted alphabetically), colon-namespaced format
  • /help <command>: renders command-specific help (group, description)
  • /help <unknown>: returns "Unknown command: /<cmd>" message
  • Added 12 Behave BDD scenarios in tui_help_command_full_catalog.feature
  • Updated tui_commands_coverage.feature to match new behavior
  • Added 5 Robot Framework integration tests in robot/tui_help_command.robot

Quality gates: lint | typecheck


Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

Starting implementation on branch `fix/tui-help-command-full-catalog-listing`. **Implementation summary:** - Replaced hardcoded `"Commands: /persona, /session, /help"` with dynamic lookup against `SLASH_COMMAND_SPECS` - Added `_help_command()`, `_help_list_all()`, `_help_for_command()` methods to `TuiCommandRouter` - `/help` (no args): lists all 70 commands grouped by namespace (sorted alphabetically), colon-namespaced format - `/help <command>`: renders command-specific help (group, description) - `/help <unknown>`: returns `"Unknown command: /<cmd>"` message - Added 12 Behave BDD scenarios in `tui_help_command_full_catalog.feature` - Updated `tui_commands_coverage.feature` to match new behavior - Added 5 Robot Framework integration tests in `robot/tui_help_command.robot` Quality gates: lint ✅ | typecheck ✅ --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
Author
Owner

PR #3456 created on branch fix/tui-help-command-full-catalog-listing. I will monitor and handle all review feedback until merged.

PR URL: #3456


Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

PR #3456 created on branch `fix/tui-help-command-full-catalog-listing`. I will monitor and handle all review feedback until merged. PR URL: https://git.cleverthis.com/cleveragents/cleveragents-core/pulls/3456 --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
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.

Blocks
Reference
cleveragents/cleveragents-core#3434
No description provided.