UAT: TUI slash command router only handles persona/session/help — all other commands return "Unknown command" #4399

Closed
opened 2026-04-08 12:09:19 +00:00 by HAL9000 · 1 comment
Owner

Bug Report

Feature Area: TUI — Slash Command Router

What Was Tested

The spec defines 80+ slash commands across 12 groups. The TuiCommandRouter.handle() method should dispatch all of them.

Expected Behavior (from spec)

The slash command catalog (SLASH_COMMAND_SPECS) contains 80 commands across groups: Session, Persona, Scope, Plan, Project, Actor, Resource, Config, Tool, Skill, Invariant, Profile, Context, Utility.

All commands should be routed and executed by TuiCommandRouter.handle().

Actual Behavior

TuiCommandRouter.handle() in src/cleveragents/tui/commands.py only handles 3 command groups:

def handle(self, raw: str, *, session_id: str) -> str:
    tokens = raw.strip().split()
    if not tokens:
        return "Empty command"
    if tokens[0] == "persona":
        return self._persona_command(tokens[1:], session_id=session_id)
    if tokens[0] == "session":
        return self._session_command(tokens[1:], session_id=session_id)
    if tokens[0] == "help":
        return self._help_command(tokens[1:])
    return f"Unknown command: /{raw}"  # All other commands fall here

Unimplemented command groups (all return "Unknown command"):

  • /scope:add, /scope:remove, /scope:clear, /scope:show
  • /plan:use, /plan:list, /plan:status, /plan:tree, /plan:execute, /plan:apply, /plan:cancel, /plan:diff, /plan:correct, /plan:resume, /plan:revert, /plan:rollback, /plan:explain, /plan:errors, /plan:artifacts, /plan:inspect
  • /project:list, /project:create, /project:show, /project:delete, /project:inspect, /project:context:show
  • /actor:list, /actor:show, /actor:set-default
  • /resource:list, /resource:show, /resource:tree, /resource:inspect
  • /config:list, /config:get, /config:set
  • /tool:list, /tool:show
  • /skill:list, /skill:show
  • /invariant:list, /invariant:add, /invariant:remove
  • /profile:list, /profile:show
  • /context:inspect, /context:set, /context:simulate
  • /clear, /theme, /settings, /about, /debug

Also, persona subcommands are incomplete:

  • /persona:create — returns "Unknown persona command: create"
  • /persona:edit — returns "Unknown persona command: edit"
  • /persona:delete — returns "Unknown persona command: delete"
  • /persona:export — returns "Unknown persona command: export"
  • /persona:import — returns "Unknown persona command: import"

Session subcommands are also incomplete:

  • /session:create — returns "Unknown session command: create"
  • /session:list — returns "Unknown session command: list"
  • /session:switch — returns "Unknown session command: switch"
  • /session:close — returns "Unknown session command: close"
  • /session:delete — returns "Unknown session command: delete"
  • /session:rename — returns "Unknown session command: rename"

Steps to Reproduce

  1. Run agents tui
  2. Type /plan:list and press Enter
  3. Response: "Unknown command: /plan:list"

Code Location

  • src/cleveragents/tui/commands.pyhandle() method, _persona_command(), _session_command()
  • Spec reference: §"Complete Command Reference" (line ~29397 in docs/specification.md)

Impact

77+ of the 80 catalogued slash commands are non-functional. The TUI command system is essentially a stub.


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

## Bug Report **Feature Area:** TUI — Slash Command Router ### What Was Tested The spec defines 80+ slash commands across 12 groups. The `TuiCommandRouter.handle()` method should dispatch all of them. ### Expected Behavior (from spec) The slash command catalog (`SLASH_COMMAND_SPECS`) contains 80 commands across groups: Session, Persona, Scope, Plan, Project, Actor, Resource, Config, Tool, Skill, Invariant, Profile, Context, Utility. All commands should be routed and executed by `TuiCommandRouter.handle()`. ### Actual Behavior `TuiCommandRouter.handle()` in `src/cleveragents/tui/commands.py` only handles 3 command groups: ```python def handle(self, raw: str, *, session_id: str) -> str: tokens = raw.strip().split() if not tokens: return "Empty command" if tokens[0] == "persona": return self._persona_command(tokens[1:], session_id=session_id) if tokens[0] == "session": return self._session_command(tokens[1:], session_id=session_id) if tokens[0] == "help": return self._help_command(tokens[1:]) return f"Unknown command: /{raw}" # All other commands fall here ``` **Unimplemented command groups (all return "Unknown command"):** - `/scope:add`, `/scope:remove`, `/scope:clear`, `/scope:show` - `/plan:use`, `/plan:list`, `/plan:status`, `/plan:tree`, `/plan:execute`, `/plan:apply`, `/plan:cancel`, `/plan:diff`, `/plan:correct`, `/plan:resume`, `/plan:revert`, `/plan:rollback`, `/plan:explain`, `/plan:errors`, `/plan:artifacts`, `/plan:inspect` - `/project:list`, `/project:create`, `/project:show`, `/project:delete`, `/project:inspect`, `/project:context:show` - `/actor:list`, `/actor:show`, `/actor:set-default` - `/resource:list`, `/resource:show`, `/resource:tree`, `/resource:inspect` - `/config:list`, `/config:get`, `/config:set` - `/tool:list`, `/tool:show` - `/skill:list`, `/skill:show` - `/invariant:list`, `/invariant:add`, `/invariant:remove` - `/profile:list`, `/profile:show` - `/context:inspect`, `/context:set`, `/context:simulate` - `/clear`, `/theme`, `/settings`, `/about`, `/debug` **Also, persona subcommands are incomplete:** - `/persona:create` — returns "Unknown persona command: create" - `/persona:edit` — returns "Unknown persona command: edit" - `/persona:delete` — returns "Unknown persona command: delete" - `/persona:export` — returns "Unknown persona command: export" - `/persona:import` — returns "Unknown persona command: import" **Session subcommands are also incomplete:** - `/session:create` — returns "Unknown session command: create" - `/session:list` — returns "Unknown session command: list" - `/session:switch` — returns "Unknown session command: switch" - `/session:close` — returns "Unknown session command: close" - `/session:delete` — returns "Unknown session command: delete" - `/session:rename` — returns "Unknown session command: rename" ### Steps to Reproduce 1. Run `agents tui` 2. Type `/plan:list` and press Enter 3. Response: `"Unknown command: /plan:list"` ### Code Location - `src/cleveragents/tui/commands.py` — `handle()` method, `_persona_command()`, `_session_command()` - Spec reference: §"Complete Command Reference" (line ~29397 in docs/specification.md) ### Impact 77+ of the 80 catalogued slash commands are non-functional. The TUI command system is essentially a stub. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-08 17:42:37 +00:00
Author
Owner

Closing as duplicate of #4653 — TUI slash command router ignores colon notation.


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: backlog-groomer

Closing as duplicate of #4653 — TUI slash command router ignores colon notation. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: backlog-groomer
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#4399
No description provided.