feat(agent): show task kinds in log and dashboard #44
No reviewers
Labels
No labels
agent:done
agent:ready
agent:working
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frank/forgecli!44
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/issue-43-agent-aufgabenart-in-log-und-dashboard-a"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
coding,fix_build,resolve_conflicts,mention) mit menschenlesbaren LabelsRunIssue,RunCIFix,RunConflictFix,RunMentionReply--no-tui)Test plan
go test ./internal/agent/...forge agent watch --tui— Running/Queue zeigen Kind-Labels--no-tui— Logzeilen mit[Fixing Build]o. ä.Änderungen (3 Commits)
taskkind.go— Task-Kind-Modell, Labels, Mapping vonprFixKindTaskKindaufIssueEntryundOrchestrationEvent;TrackRunningWithKind/SetRunTaskKind; Pipeline setzt Kind pro Job-Typ[Agent Coding]etc. in Queue/Overview/Run-Detail; Activity-Log mit Kind-Präfix; Web-UI mit Kind-Spalte; Plain-Logs vialogJob()height/3(min. 10 Zeilen ab 30 Zeilen Terminalhöhe)docs/wiki/Agent-Watch.mdCloses #43
🚧 WIP pull request opened — linked to issue #43. Agent is working…
💭 Agent progress
Ich implementiere Issue #43. Die Agent-Aufgabenart soll im Activity-Log und Dashboard angezeigt werden.
Ich durchsuche die Codebasis nach relevanten Dateien für Orchestrierung, Dashboard und Activity-Log. Zusätzlich plane ich die Wiki-Dokumentation zu aktualisieren, die Log-Höhe auf ein Drittel des Terminals zu begrenzen und die Änderungen schrittweise zu committen.
Ich verschaffe mir zuerst einen Überblick über die relevanten Stellen für Task-Kinds, Activity-Log und Dashboard.
💭 Agent progress
Searching for OrchestrationEvent, prFixKind, and related structures.
💭 Agent progress
Ich lese eventlog.go, pipeline.go, tui.go, prfix.go, watcher.go und die Wiki-Dokumentation, um zu verstehen, wie Aufgabenarten aktuell im Log und Dashboard angezeigt werden.
💭 Agent progress
Die Pipeline, der Watcher und die UI-Dateien werden gelesen, um zu verstehen, wie Aufgabenarten durch das System geleitet werden.
Auch tui_test wird geprüft, insbesondere Drawer-Erweiterung, Standard-Logs und Plain-Logs.
💭 Agent progress
Ich prüfe den aktuellen Branch-Zustand per Git-Diff und Status, um zu sehen, was bereits umgesetzt ist und was noch fehlt.
💭 Agent progress
Die Änderungen für Issue #43 müssen komplett neu umgesetzt werden. Ich beginne mit der Planung.
Ich plane die Umsetzung in zehn Schritten. Dazu gehören eine neue TaskKind-Komponente mit festen IDs und Labels, Erweiterung der Datenstrukturen IssueEntry und OrchestrationEvent, Anpassung der Pipeline-Methoden sowie Aktualisierung des Formatierungs- und Log-Code für Konsolen, Dashboard und Web-Oberfläche.
Der Activity-Drawer soll standardmäßig erweitert und auf ein Drittel der Höhe gesetzt werden. Die Dokumentation im Wiki fehlt noch. Nun suche ich nach den Stellen für Plain-Logs und TrackRunning-Aufrufe.
💭 Agent progress
Die Implementierung beginnt mit einer neuen Datei
taskkind.go. Sie definiert den TypTaskKind, die zugehörigen Konstanten und die Label-Zuordnung für die Anzeige in Log und Dashboard.Das Feld
TaskKindwird zuIssueEntryundOrchestrationEventhinzugefügt.TrackRunningübernimmt die Zuweisung beim Jobstart. Die Pipeline setzt den passenden Wert pro Phase.RunIssueerhältTaskKindCoding,RunCIFixerhältTaskKindFixBuild.Zusätzlich werden
TaskKindResolveConflictsfürRunConflictFixundTaskKindMentionfürRunMentionReplyzugewiesen. Der RunIssue-Ablauf behältTaskKindCodingauch während Babysitting bei. Geplant ist die Setzung des TaskKinds auch für Einträge in der Warteschlange.Die konkreten Konstanten werden als String-Untertyp mit den Werten
coding,fix_build,resolve_conflictsundmentiondefiniert. Eine Hilfsfunktion wandeltprFixKindinTaskKindum.TrackRunningwird nun direkt aufWatchStatusumgestellt.Ein neuer
TrackRunningKind-Methoden-Overload schreibt das TaskKind direkt in den Eintrag.runPRFixQueuedliest das Kind überTaskKindFromPRFixaus. Die Pipeline speichert das TaskKind als Feld und setzt es in den Run*-Methoden am Start.Eine Pipeline-Hilfsmethode
setTaskKindschreibt das TaskKind in den Status.logOrchestrationliest es aus dem Pipeline-Feld. Das Formatierungs-Template zeigt das Label vor der Agenten-Meldung an. Im TUI-Dashboard erscheint das Kind-Label neben der Issue-Nummer. Plain-Logs im Watcher erhalten ein TaskKind-Prefix beim Jobstart.Eine neue Hilfsmethode
logJobfsoll die konsistente Kennzeichnung in Logs vereinfachen. Das Drawer-Panel im TUI-Dashboard wird standardmäßig erweitert. Die Web-Oberfläche erhält eine Spalte für das TaskKind sowie ein Prefix in der Aktivitätszeile. AuchBeginRunForundrunStreammüssen geprüft werden, damit das TaskKind korrekt durchgereicht wird.💭 Agent progress
Ich prüfe die Watcher-Logs und SetPollQueue, um die Task-Arten in den Queue-Einträgen zu ermitteln.
💭 Agent progress
Die Implementierung wird schrittweise mit Commits umgesetzt. Der erste Schritt umfasst taskkind.go sowie die Kerntypen IssueEntry, OrchestrationEvent und deren Statusmethoden.
Der zweite Commit integriert Pipeline und Watcher. Der dritte zeigt die Aufgabenart in TUI und Web an und erweitert den Drawer. Der vierte ergänzt Wiki und Tests. Die Pipeline erhält ein
taskKind-Feld.logOrchestrationnutzt es.TrackRunningundSetPollQueueerhalten passende Erweiterungen. Ein neuerlogJob-Helper ergänzt die Logs um die Aufgabenart.Der
logJob-Helper ergänzt die Logs um ein Label wie[Coding]. Start-Logs inrunQueuedundrunPRFixQueuednutzen diesen Helper.LogOrchestrationsoll die Aufgabenart erhalten, ohne alle Aufrufstellen zu brechen. Dafür wird eine optionale Parameter-Erweiterung oder ein Strukturansatz bevorzugt.Die Rückwärtskompatibilität wird durch einen neuen
LogOrchestrationWithKind-Overload oder durch interne Zuordnung vonp.taskKindgewahrt.SetPollQueue-Events bleiben unverändert. Die Pipeline übergibtp.taskKindanLogOrchestration.LogOrchestrationbleibt rückwärtskompatibel und delegiert intern an eine neueLogOrchestrationKind-Methode. Die Pipeline übergibtp.taskKindexplizit. Im TUI werden Issue-Gruppen und Orchestration-Events um ein Badge mit der Aufgabenart ergänzt.Die Web-UI-Methode
renderActivityzeigt das Aufgabenart-Label an.SetPollQueuefür PR-Fixes ergänzt die Aufgabenart in die Warteschlangeneinträge. Der Drawer im TUI-Modell ist standardmäßig erweitert. Die Tests werden um Label-Mapping, Event-Formatierung und Issue-Gruppen mit Aufgabenart erweitert. Das JSON-Tag könnte alstask_kindangepasst werden.Die JSON-Tags für
TaskKindwerden auftask_kindgesetzt.OrchestrationEventerhält dasselbe Feld. FürRunIssuewird die Aufgabenart am Anfang gesetzt. Allerdings muss geprüft werden, obTrackRunningbereits den Default-Wert setzt. Der Pfad überrunOneoder Force-Run könnte anders sein.💭 Agent progress
RunOne does not use TrackRunning because it runs as a one-shot job without watch status. Proceeding with implementation.
A new
taskKindfield will be added to the pipeline and status modules to track the active job type.SetRunTaskKindwill update the active entry kind.Pipeline.logOrchestrationwill use this field. During CI fixes the kind will stayfix_build. Changes spantaskkind.go,status.go,eventlog.go, andpipeline.go.Changes will also touch
watcher.go,status.go,tui.go,ui.go, the test files, and the wiki documentation. The TUI drawer will expand by default, and the web dashboard will show the task kind.💭 Agent progress
Der Drawer ist standardmäßig erweitert. Die TUI-Reproduktionstests nutzen das Modell ohne explizite Einstellung. Das könnte die Drawer-Höhe und Tests beeinflussen. Die Tests arbeiten aber mit mainHeight(), daher sollten sie weiterhin funktionieren.
Die Terminal-Größen-Tests bleiben auch mit erweitertem Drawer passend. Die Pipeline erhält ein
taskKind-Feld. Jeder Run-Point setzt es zu Beginn. RunIssue wird als Coding, RunCIFix als FixBuild, RunConflictFix als ResolveConflicts und RunMentionReply als Mention markiert.Die Pipeline schreibt den Aufgabentyp in den Watcher-Status. Der Watcher setzt ihn vor dem Start erneut per TrackRunningWithKind. TrackRunning nutzt nun diese Methode mit TaskKindCoding. SetPollQueue erhält den Typ für PR-Fix-Einträge.
Die Aufgabentyp-Anzeige wird in der TUI-Gruppenansicht und im Detail-View sichtbar. Ein neuer Helper für reine Logs ergänzt den Prefix. Der Watcher-LogJob wird ebenfalls angepasst.
Die
logJob-Methode des Watchers fügt den Aufgabentyp-Präfix direkt in das Format-String ein. Die Meldungen beirunQueuedundrunPRFixQueuedwerden aktualisiert. AuchlogOrchestrationin der Pipeline erhält den TaskKind-Parameter.Die
LogOrchestration-Methode im Watcher erhält einen optionalenkind-Parameter am Ende. Die bestehende Signatur bleibt erhalten. Das ermöglicht den Aufgabentyp für interne Events wieblockedinstatus.go, währendLogOrchestrationKindfür Pipeline-Aufrufe verwendet wird.Ich setze Task-Kind als zentrales Signal um und binde es in Status, Logs und UI ein.
💭 Agent progress
Die Dateien status.go, eventlog.go, pipeline.go, watcher.go, tui.go und ui.go werden jetzt aktualisiert.
💭 Agent progress
Die Datei pipeline.go wird um ein taskKind-Feld und zugehörige Methoden ergänzt.
💭 Agent progress
Die TUI wird angepasst. Der Drawer-Status wird standardmäßig auf erweitert gesetzt. Funktionen für Issue-Gruppen, Laufdetails und das UI werden aktualisiert.
Eventlog- und TUI-Tests werden ebenfalls aktualisiert.
💭 Agent progress
Ich habe versehentlich die Funktion
renderIssueRowentfernt undissueLinkdupliziert.Ich lese ui.go in der betroffenen Stelle und korrigiere die Fehler.
💭 Agent progress
Die Render-Funktion wird vollständig gelesen. Eine neue Funktion für Issue-Zeilen wird ergänzt. Die Abschnitte für aktuelle, laufende und wartende Aufgaben werden aktualisiert.
💭 Agent progress
ui.go wird angepasst. Die Funktion renderTaskKind wird in den Abschnitten current, queue und running verwendet. Auch renderActivity wird aktualisiert.
💭 Agent progress
Tests and wiki documentation are being updated. New tests cover drawer height and task kind display in orchestration event lines. eventlog_test.go and tui_test.go are modified accordingly.
A new status_test covers TrackRunningWithKind. The wiki Agent-Watch.md is updated with a task kinds section. Tests are run and changes committed incrementally.
💭 Agent progress
A test for TrackRunningWithKind is being added to status_test.go. The wiki page Agent-Watch.md is also being updated.
Tests are being run. Changes will be committed in parts.
💭 Agent progress
Two tests fail. TestDrawerOuterHeightDefaultExpanded returns zero drawer height because width is zero. The width needs to be set in the test.
TestTUIViewFitsReportedTerminalSize fails because the expanded drawer overflows the 24-line terminal. The drawer height is clamped to a minimum of 10 lines, leaving only 13 lines for the main view. The layout must be adjusted so the view fits within the terminal height even with the drawer expanded.
The drawer height is fixed at 10 lines, leaving 13 lines for the main view. The total rendered height reaches 26, exceeding the 24-line terminal. Two fixes are under consideration: capping the drawer height more aggressively on small terminals, or adjusting the layout math so the total never exceeds the available height.
The expanded drawer adds six extra lines compared to the previous collapsed state. This forces the total view height to 26 on a 24-line terminal. The fix is to clamp the drawer height more aggressively on very small terminals so the view still fits within the terminal bounds.
The drawer height is capped at
height - 8so the dashboard and help line remain visible. On a 24-line terminal this yields 14 lines for the drawer, leaving 13 for the main view. The total view height still reaches 26, so the main view area must also be reduced.The left panel layout may overflow. With 13 lines for the main view, the left panel gets 12 lines. The stats panel needs 8 lines, but the queue panel is forced to at least 6 lines, totaling 14. That exceeds the 12-line left panel height. This likely explains the test failure.
The drawer height is capped at 10 lines, leaving 13 lines for the main view. The total rendered height reaches 26, exceeding the 24-line terminal. The drawer expansion alone does not fully explain the overflow.
A tighter layout strategy is being considered. Instead of capping the drawer height independently, it would be computed from the remaining space after reserving a minimum main area. This would ensure the total view height stays within the terminal bounds. However, on a 24-line terminal this yields only 8 lines for the drawer, which is below the desired minimum of 10.
The drawer height formula is being revised. On terminals smaller than 30 lines, the minimum drawer height drops to 4 lines instead of 10. The expanded drawer is now capped at one-third of the terminal height, or at the remaining space after reserving a minimum main area. On a 24-line terminal this yields 8 lines for the drawer, leaving 15 lines for the main view.
The drawer minimum is now 4 lines on small terminals, and 10 lines only when the terminal is at least 30 lines tall. On a 24-line terminal this leaves 15 lines for the main view, bringing the total view height to roughly 24 lines. The failing test will be fixed by setting its width to 80.
Ich passe die Drawer-Höhe für kleine Terminals an, damit die Gesamtansicht wieder passt.
💭 Agent progress
Layout tests passed. Running the full test suite next, then committing incrementally.
💭 Agent progress
Tests passieren. Ich füge nun die Aufgabenarten-Modelle hinzu und verknüpfe sie im Pipeline- und Watcher-Log.
Die Aufgabenarten werden nun auch im TUI und Dashboard angezeigt. Die Agent-Wiki-Dokumentation wird ergänzt. Ich prüfe den Git-Status und erstelle die Commits.
💭 Agent progress
Die Umsetzung erfolgt in drei Schritten:
Kern-Typen für Aufgabenarten, Status und Eventlog
Integration in Pipeline und Watcher
TUI-, Web-Oberfläche, Tests und Wiki
Die drei Schritte werden als separate Commits mit Push nach jedem Teil umgesetzt.
💭 Agent progress
Next step is committing the pipeline and watcher changes.
💭 Agent progress
Die finale Commit umfasst die TUI, das UI, Tests und die Wiki-Dokumentation.
💭 Agent progress
All commits were pushed. I am verifying the working tree is clean and preparing the final output with the PR title, body, and summary.
WIP: #43 Agent: Aufgabenart in Log und Dashboard anzeigento feat(agent): show task kinds in log and dashboard✅ forge agent finished implementation
feat(agent): show task kinds in dashboard and expand activity drawerAgent output (tail)
☑️ ToDos checked off
🟢 CI green (attempt 1/3)
https://repository.hildebrandt.io/frank/forgecli/actions/runs/102
💭 Agent progress
Die Implementierung ist abgeschlossen. Die Änderungen werden nun zusammengefasst.
Issue #43 ist umgesetzt. Die Aufgabenart ist jetzt ein erstklassiges Signal in Status, Logs und UI.
Summary
coding,fix_build,resolve_conflicts,mention) mit menschenlesbaren LabelsRunIssue,RunCIFix,RunConflictFix,RunMentionReply--no-tui)Test plan
go test ./internal/agent/...forge agent watch --tui— Running/Queue zeigen Kind-Labels--no-tui— Logzeilen mit[Fixing Build]o. ä.Änderungen (3 Commits)
taskkind.go— Task-Kind-Modell, Labels, Mapping vonprFixKindTaskKindaufIssueEntryundOrchestrationEvent;TrackRunningWithKind/SetRunTaskKind; Pipeline setzt Kind pro Job-Typ[Agent Coding]etc. in Queue/Overview/Run-Detail; Activity-Log mit Kind-Präfix; Web-UI mit Kind-Spalte; Plain-Logs vialogJob()height/3(min. 10 Zeilen ab 30 Zeilen Terminalhöhe)docs/wiki/Agent-Watch.md