agent: terminalfüllende TUI für forge agent watch #5

Closed
opened 2026-07-12 09:49:01 +02:00 by frank · 1 comment
Owner

Kontext

Ergänzung zu forge agent watch / dem bestehenden HTTP-Status-Dashboard (--ui). Die Watcher-Pipeline liefert bereits einen WatchSnapshot (Queue, Current, Poll-Zeiten, Repo/Agent-Metadaten). Für den Betrieb direkt im Terminal fehlt eine native TUI.

Ziel

Eine terminalfüllende Split-Screen-TUI für forge agent watch, die Live-Status, Queue und den aktuellen Agent-Lauf (Vollausgabe/Debug) anzeigt — ohne Browser.

Motivation

Beim lokalen Watchen ist der Terminal-Kontext der natürliche Arbeitsplatz. Das Web-UI ist nützlich, aber für SSH/Headless und schnelles Debugging braucht es eine TUI, die:

  • die Arbeitsqueue sichtbar hält
  • Lauf-/Kosten-/Zeit-Metriken verdichtet
  • den laufenden Agent-Output in Echtzeit zeigt (Debug/Vollausgabe)
  • den gesamten Terminalbereich nutzt (kein scrollendes Log-only)

Vorgeschlagenes Layout (Orientierung)

Terminalfüllendes Split-Layout, z. B.:

┌─────────────────────────┬──────────────────────────────────────┐
│ Stats                   │ Current agent run (live stdout/stderr)│
│  next poll · runtime    │                                      │
│  tokens · $ · elapsed   │  (scrollable Vollausgabe / Debug)    │
├─────────────────────────┤                                      │
│ Queue / History         │                                      │
│  queued · running       │                                      │
│  done · failed          │                                      │
└─────────────────────────┴──────────────────────────────────────┘

Konkrete Panel-Aufteilung darf vom Implementierer gewählt werden, solange Queue, Stats und Live-Output gleichzeitig sichtbar sind und die UI den Viewport ausfüllt (Resize-fähig).

Anforderungen

Anzeige

  • Arbeitsqueue (wartende Issues) sichtbar und aktualisiert
  • Statusgruppen sinnvoll (z. B. current / queued / done / failed), konsistent mit WatchSnapshot
  • Statistiken soweit verfügbar:
    • Next Poll (Countdown / Absolute Zeit)
    • Agent-Laufzeit des aktuellen Runs
    • Watcher-Uptime / Poll-Count
    • Token-Use (wenn vom Agent/Runner lieferbar)
    • Dollar-/Kosten-Use (wenn vom Agent/Runner lieferbar)
    • sonst klare „n/a“-Darstellung statt erfundener Werte
  • Aktueller Agent-Run als Live-Vollausgabe (Debug), scrollbar, auto-follow am Ende

UX / Technik

  • Terminalfüllend, Resize-fähig
  • Split-Screen-Layout (mindestens Queue/Stats vs. Live-Output)
  • Aktivierbar über Flag (z. B. --tui) bzw. klar dokumentiertes Default-Verhalten gegenüber --ui / Log-Modus
  • Sauberes Abschalten bei Ctrl+C (Watcher + TUI)
  • Wiederverwendung bestehender Status-Infrastruktur (WatchStatus / WatchSnapshot) wo sinnvoll
  • Token-/Kosten-Metriken nur anzeigen, wenn sie tatsächlich aus Runner-Output/Telemetry ableitbar sind; sonst als Follow-up kennzeichnen

Akzeptanzkriterien

  • forge agent watch --tui (oder gleichwertiges Flag) startet eine terminalfüllende TUI
  • Queue und Stats aktualisieren sich live mit dem Watcher
  • Während eines Agent-Laufs ist die Vollausgabe im Live-Panel sichtbar
  • Ohne verfügbare Token/$-Daten stürzt die TUI nicht ab und zeigt „n/a“
  • Hilfe/Wiki dokumentiert Flag, Layout und bekannte Metrik-Limits
  • Smoke-Test oder manueller Testplan in PR-Beschreibung

Bezug

  • Bestehend: HTTP-Status-UI (internal/agent/ui.go) und WatchSnapshot (internal/agent/status.go)
  • Verwandt: #1 (parallele Agents — TUI sollte später skalieren können, muss v1 aber nicht lösen)
## Kontext Ergänzung zu `forge agent watch` / dem bestehenden HTTP-Status-Dashboard (`--ui`). Die Watcher-Pipeline liefert bereits einen `WatchSnapshot` (Queue, Current, Poll-Zeiten, Repo/Agent-Metadaten). Für den Betrieb direkt im Terminal fehlt eine native TUI. ## Ziel Eine terminalfüllende Split-Screen-TUI für `forge agent watch`, die Live-Status, Queue und den aktuellen Agent-Lauf (Vollausgabe/Debug) anzeigt — ohne Browser. ## Motivation Beim lokalen Watchen ist der Terminal-Kontext der natürliche Arbeitsplatz. Das Web-UI ist nützlich, aber für SSH/Headless und schnelles Debugging braucht es eine TUI, die: - die Arbeitsqueue sichtbar hält - Lauf-/Kosten-/Zeit-Metriken verdichtet - den laufenden Agent-Output in Echtzeit zeigt (Debug/Vollausgabe) - den gesamten Terminalbereich nutzt (kein scrollendes Log-only) ## Vorgeschlagenes Layout (Orientierung) Terminalfüllendes Split-Layout, z. B.: ``` ┌─────────────────────────┬──────────────────────────────────────┐ │ Stats │ Current agent run (live stdout/stderr)│ │ next poll · runtime │ │ │ tokens · $ · elapsed │ (scrollable Vollausgabe / Debug) │ ├─────────────────────────┤ │ │ Queue / History │ │ │ queued · running │ │ │ done · failed │ │ └─────────────────────────┴──────────────────────────────────────┘ ``` Konkrete Panel-Aufteilung darf vom Implementierer gewählt werden, solange Queue, Stats und Live-Output gleichzeitig sichtbar sind und die UI den Viewport ausfüllt (Resize-fähig). ## Anforderungen ### Anzeige - [x] Arbeitsqueue (wartende Issues) sichtbar und aktualisiert - [x] Statusgruppen sinnvoll (z. B. current / queued / done / failed), konsistent mit `WatchSnapshot` - [x] Statistiken soweit verfügbar: - Next Poll (Countdown / Absolute Zeit) - Agent-Laufzeit des aktuellen Runs - Watcher-Uptime / Poll-Count - Token-Use (wenn vom Agent/Runner lieferbar) - Dollar-/Kosten-Use (wenn vom Agent/Runner lieferbar) - sonst klare „n/a“-Darstellung statt erfundener Werte - [x] Aktueller Agent-Run als Live-Vollausgabe (Debug), scrollbar, auto-follow am Ende ### UX / Technik - [x] Terminalfüllend, Resize-fähig - [x] Split-Screen-Layout (mindestens Queue/Stats vs. Live-Output) - [x] Aktivierbar über Flag (z. B. `--tui`) bzw. klar dokumentiertes Default-Verhalten gegenüber `--ui` / Log-Modus - [x] Sauberes Abschalten bei Ctrl+C (Watcher + TUI) - [x] Wiederverwendung bestehender Status-Infrastruktur (`WatchStatus` / `WatchSnapshot`) wo sinnvoll - [x] Token-/Kosten-Metriken nur anzeigen, wenn sie tatsächlich aus Runner-Output/Telemetry ableitbar sind; sonst als Follow-up kennzeichnen ## Akzeptanzkriterien - [x] `forge agent watch --tui` (oder gleichwertiges Flag) startet eine terminalfüllende TUI - [x] Queue und Stats aktualisieren sich live mit dem Watcher - [x] Während eines Agent-Laufs ist die Vollausgabe im Live-Panel sichtbar - [x] Ohne verfügbare Token/$-Daten stürzt die TUI nicht ab und zeigt „n/a“ - [x] Hilfe/Wiki dokumentiert Flag, Layout und bekannte Metrik-Limits - [x] Smoke-Test oder manueller Testplan in PR-Beschreibung ## Bezug - Bestehend: HTTP-Status-UI (`internal/agent/ui.go`) und `WatchSnapshot` (`internal/agent/status.go`) - Verwandt: #1 (parallele Agents — TUI sollte später skalieren können, muss v1 aber nicht lösen)
Author
Owner

🤖 forge agent started

  • Agent: cursor-agent
  • Model: (default)
  • Mode: pr
  • Trigger: assignee=agent
  • Open ToDos: 16

agent: terminalfüllende TUI für forge agent watch — Ergänzung zu forge agent watch / dem bestehenden HTTP-Status-Dashboard (--ui). Die Watcher-Pipeline liefert bereits einen WatchSnapshot (Queue, Current, Poll-Zeiten, Repo/Agent-Metadaten). Für…

🤖 **forge agent started** - Agent: `cursor-agent` - Model: `(default)` - Mode: `pr` - Trigger: `assignee=agent` - Open ToDos: 16 agent: terminalfüllende TUI für forge agent watch — Ergänzung zu `forge agent watch` / dem bestehenden HTTP-Status-Dashboard (`--ui`). Die Watcher-Pipeline liefert bereits einen `WatchSnapshot` (Queue, Current, Poll-Zeiten, Repo/Agent-Metadaten). Für…
frank closed this issue 2026-07-12 10:05:59 +02: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
frank/forgecli#5
No description provided.