UAT: TUI conversation stream blocks not implemented — no UserInput, ActorResponse, ToolCall, PlanProgress, DiffView, ShellResult blocks #6421

Open
opened 2026-04-09 21:02:09 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Spec Reference

Specification lines 29825–29843 (Conversation Stream), 29910–29977 (Conversation Block Details)

Expected Behavior (from spec)

The TUI conversation should display a chronological stream of typed message blocks:

Block Type Visual Treatment Source
Welcome ASCII art + instructions in $text-success App startup
UserInput Left border $secondary, 15% background tint, Markdown User prompt submission
ActorResponse Streaming Markdown with syntax-highlighted code fences session.message events
ActorThought $primary-muted 20% bg, max 10 lines (expandable), italic Actor reasoning
ToolCall Expandable: icon + status pill header, collapsible content tool.invoked / tool.completed
PlanProgress Grid layout with status icons per step Plan phase changes
DiffView Unified or side-by-side diff, syntax highlighting Tool results with diffs
TerminalEmbed Bordered terminal, $primary 50% border Shell or tool terminal output
ShellResult Left border $primary, 4% foreground bg User shell command (!) output
Note Semantic: info/warning/error System notifications

The conversation uses a 2-column grid: a 1-character cursor column (left) and the content stream (right). Block cursor navigation with alt+up/alt+down.

Actual Behavior (from code analysis)

src/cleveragents/tui/app.py compose() (line 112):

yield _Static("CleverAgents TUI", id="conversation")

The conversation is a single _Static widget that just shows plain text. When input is processed (lines 186–209), the conversation is updated with raw text:

conversation.update(result.command_result or "")  # for commands
conversation.update(f"$ {shell.command}\n{output}")  # for shell
conversation.update(preview)  # for normal input

No typed message blocks exist. No UserInput, ActorResponse, ToolCall, PlanProgress, DiffView, TerminalEmbed, ShellResult, or Note block types are implemented. No block cursor navigation.

Note: ThoughtBlockWidget exists in src/cleveragents/tui/widgets/thought_block.py but is not integrated into the conversation stream.

Code Location

  • src/cleveragents/tui/app.py — lines 112, 186–209
  • src/cleveragents/tui/widgets/thought_block.py — exists but unintegrated

Steps to Reproduce (Code Analysis)

  1. Read src/cleveragents/tui/app.py lines 109–121 (compose)
  2. Observe: conversation is a plain _Static widget
  3. Read lines 186–209 (on_input_submitted)
  4. Observe: conversation updated with raw text, no typed blocks
  5. Compare with spec lines 29825–29843

Severity

Critical — the conversation stream is the primary interface of the TUI. Without typed blocks, actor responses, tool calls, and plan progress cannot be displayed properly.


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

## Bug Report ### Spec Reference Specification lines 29825–29843 (Conversation Stream), 29910–29977 (Conversation Block Details) ### Expected Behavior (from spec) The TUI conversation should display a chronological stream of typed message blocks: | Block Type | Visual Treatment | Source | |------------|-----------------|--------| | `Welcome` | ASCII art + instructions in `$text-success` | App startup | | `UserInput` | Left border `$secondary`, 15% background tint, Markdown | User prompt submission | | `ActorResponse` | Streaming Markdown with syntax-highlighted code fences | `session.message` events | | `ActorThought` | `$primary-muted` 20% bg, max 10 lines (expandable), italic | Actor reasoning | | `ToolCall` | Expandable: icon + status pill header, collapsible content | `tool.invoked` / `tool.completed` | | `PlanProgress` | Grid layout with status icons per step | Plan phase changes | | `DiffView` | Unified or side-by-side diff, syntax highlighting | Tool results with diffs | | `TerminalEmbed` | Bordered terminal, `$primary 50%` border | Shell or tool terminal output | | `ShellResult` | Left border `$primary`, 4% foreground bg | User shell command (!) output | | `Note` | Semantic: info/warning/error | System notifications | The conversation uses a 2-column grid: a 1-character cursor column (left) and the content stream (right). Block cursor navigation with `alt+up`/`alt+down`. ### Actual Behavior (from code analysis) `src/cleveragents/tui/app.py` `compose()` (line 112): ```python yield _Static("CleverAgents TUI", id="conversation") ``` The conversation is a single `_Static` widget that just shows plain text. When input is processed (lines 186–209), the conversation is updated with raw text: ```python conversation.update(result.command_result or "") # for commands conversation.update(f"$ {shell.command}\n{output}") # for shell conversation.update(preview) # for normal input ``` No typed message blocks exist. No `UserInput`, `ActorResponse`, `ToolCall`, `PlanProgress`, `DiffView`, `TerminalEmbed`, `ShellResult`, or `Note` block types are implemented. No block cursor navigation. Note: `ThoughtBlockWidget` exists in `src/cleveragents/tui/widgets/thought_block.py` but is **not integrated** into the conversation stream. ### Code Location - `src/cleveragents/tui/app.py` — lines 112, 186–209 - `src/cleveragents/tui/widgets/thought_block.py` — exists but unintegrated ### Steps to Reproduce (Code Analysis) 1. Read `src/cleveragents/tui/app.py` lines 109–121 (compose) 2. Observe: conversation is a plain `_Static` widget 3. Read lines 186–209 (on_input_submitted) 4. Observe: conversation updated with raw text, no typed blocks 5. Compare with spec lines 29825–29843 ### Severity Critical — the conversation stream is the primary interface of the TUI. Without typed blocks, actor responses, tool calls, and plan progress cannot be displayed properly. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.2.0 milestone 2026-04-09 21:08:50 +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.

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