UAT: TUI has no A2A event subscription or TuiMaterializer — real-time plan updates not wired #4641

Open
opened 2026-04-08 17:41:01 +00:00 by HAL9000 · 0 comments
Owner

Bug Report

Feature Area: TUI plan monitoring and live updates (v3.7.0 TUI)
Severity: Critical — real-time plan monitoring is entirely non-functional
Found by: UAT tester instance uat-tester-worker-tui-plan-monitoring


What Was Tested

Code-level analysis of all files in src/cleveragents/tui/ against the specification section "TUI Architecture Overview" (spec lines 29017–29019) and "Integration with Future TUI" (spec lines 27720–27741).


Expected Behavior (from spec)

"The TUI communicates with the Application layer exclusively through A2A (ADR-026). It subscribes to A2A events for real-time updates and uses the existing Output Rendering Framework (ADR-021) via a TuiMaterializer that maps ElementHandle events to Textual widget operations — enabling all CLI command producers to render in the TUI without modification."

Required components:

  1. TuiMaterializer — maps ElementHandle events to Textual widget operations
  2. A2A event subscription — subscribes to plan lifecycle events, tool invocations, streaming responses
  3. Real-time widget updatesProgressHandle → animated progress bar, TableHandle → live table, StreamHandle → streaming text
  4. PlanProgress conversation blocks — grid layout with status icons per plan phase step
  5. Live log streamingTerminalEmbed widget for streaming shell/tool output

Actual Behavior (from code analysis)

The entire src/cleveragents/tui/ directory contains no A2A integration:

  • No TuiMaterializer class anywhere
  • No A2A client import or usage in any TUI file
  • No event subscription mechanism
  • No reactive data binding to plan state
  • The conversation area is a plain _Static("CleverAgents TUI", id="conversation") widget that only updates via conversation.update(text) on user input — no streaming, no live updates
  • on_input_submitted() in app.py processes input synchronously and updates the static widget — no async plan execution or event streaming

The TUI is effectively a static text display with no connection to the backend.


Code Locations

  • src/cleveragents/tui/app.py lines 112, 168–209 — static conversation widget, synchronous input handler
  • src/cleveragents/tui/commands.py — no A2A calls
  • src/cleveragents/tui/ — no materializer.py, no a2a_client.py, no event bus

Impact

Without A2A integration and TuiMaterializer:

  • Plan execution progress is never displayed in the TUI
  • Log streaming from tools is not shown
  • Phase transitions are not reflected in real time
  • The TUI cannot be used for monitoring running plans
  • All plan monitoring features (sidebar, throbber, progress bars) have no data source even if the widgets were implemented

This is the foundational architecture issue that blocks all real-time plan monitoring features.


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

## Bug Report **Feature Area:** TUI plan monitoring and live updates (v3.7.0 TUI) **Severity:** Critical — real-time plan monitoring is entirely non-functional **Found by:** UAT tester instance `uat-tester-worker-tui-plan-monitoring` --- ### What Was Tested Code-level analysis of all files in `src/cleveragents/tui/` against the specification section **"TUI Architecture Overview"** (spec lines 29017–29019) and **"Integration with Future TUI"** (spec lines 27720–27741). --- ### Expected Behavior (from spec) > "The TUI communicates with the Application layer exclusively through A2A (ADR-026). It subscribes to A2A events for real-time updates and uses the existing Output Rendering Framework (ADR-021) via a `TuiMaterializer` that maps `ElementHandle` events to Textual widget operations — enabling all CLI command producers to render in the TUI without modification." Required components: 1. **`TuiMaterializer`** — maps `ElementHandle` events to Textual widget operations 2. **A2A event subscription** — subscribes to plan lifecycle events, tool invocations, streaming responses 3. **Real-time widget updates** — `ProgressHandle` → animated progress bar, `TableHandle` → live table, `StreamHandle` → streaming text 4. **`PlanProgress` conversation blocks** — grid layout with status icons per plan phase step 5. **Live log streaming** — `TerminalEmbed` widget for streaming shell/tool output --- ### Actual Behavior (from code analysis) The entire `src/cleveragents/tui/` directory contains **no A2A integration**: - No `TuiMaterializer` class anywhere - No A2A client import or usage in any TUI file - No event subscription mechanism - No reactive data binding to plan state - The conversation area is a plain `_Static("CleverAgents TUI", id="conversation")` widget that only updates via `conversation.update(text)` on user input — no streaming, no live updates - `on_input_submitted()` in `app.py` processes input synchronously and updates the static widget — no async plan execution or event streaming The TUI is effectively a static text display with no connection to the backend. --- ### Code Locations - `src/cleveragents/tui/app.py` lines 112, 168–209 — static conversation widget, synchronous input handler - `src/cleveragents/tui/commands.py` — no A2A calls - `src/cleveragents/tui/` — no `materializer.py`, no `a2a_client.py`, no event bus --- ### Impact Without A2A integration and `TuiMaterializer`: - Plan execution progress is never displayed in the TUI - Log streaming from tools is not shown - Phase transitions are not reflected in real time - The TUI cannot be used for monitoring running plans - All plan monitoring features (sidebar, throbber, progress bars) have no data source even if the widgets were implemented This is the foundational architecture issue that blocks all real-time plan monitoring features. --- **Automated by CleverAgents Bot** Supervisor: UAT Testing | Agent: uat-tester
HAL9000 added this to the v3.7.0 milestone 2026-04-08 17:53:57 +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#4641
No description provided.