feat(agent): Agent-Dashboard, parallele Run-Views, Limits & agent.yaml #21

Merged
frank merged 1 commit from agent/issue-15-agent-dashboard-parallele-tui-views-limi into main 2026-07-12 12:34:24 +02:00
Owner

Summary

  • Agent-Dashboard als Standard-TUI bei interaktivem forge agent watch mit Overview und per-Run-Output-Views (n/p/Tab/1–9)
  • agent.yaml-Konfiguration (Repos, Pfade, Parallelität, max. offene PRs) mit Precedence Flag > Config > Default; neue Flags --parallel-per-repo, --max-open-prs, --no-tui, --config
  • Limit-Engine und Dependency-Check (Forgejo blocked-by) im Watcher; Post-Merge-Sync des lokalen Default-Branches

Test plan

  • forge agent watch --help zeigt neue Flags und Config-Hinweis
  • Mit agent.yaml und TTY: Dashboard startet, Limits/Blocked sichtbar
  • Zwei parallele Runs: Wechsel zwischen Output-Views funktioniert
  • Issue mit offener Dependency erscheint als blocked, wird nicht gestartet
  • Nach PR-Merge: lokaler main wird aktualisiert
  • go test ./internal/agent/... ./internal/cmd/... grün

Closes #15

## Summary - **Agent-Dashboard** als Standard-TUI bei interaktivem `forge agent watch` mit Overview und per-Run-Output-Views (`n`/`p`/`Tab`/`1–9`) - **`agent.yaml`**-Konfiguration (Repos, Pfade, Parallelität, max. offene PRs) mit Precedence Flag > Config > Default; neue Flags `--parallel-per-repo`, `--max-open-prs`, `--no-tui`, `--config` - **Limit-Engine** und **Dependency-Check** (Forgejo blocked-by) im Watcher; **Post-Merge-Sync** des lokalen Default-Branches ## Test plan - [ ] `forge agent watch --help` zeigt neue Flags und Config-Hinweis - [ ] Mit `agent.yaml` und TTY: Dashboard startet, Limits/Blocked sichtbar - [ ] Zwei parallele Runs: Wechsel zwischen Output-Views funktioniert - [ ] Issue mit offener Dependency erscheint als blocked, wird nicht gestartet - [ ] Nach PR-Merge: lokaler `main` wird aktualisiert - [ ] `go test ./internal/agent/... ./internal/cmd/...` grün Closes #15
feat(agent): dashboard TUI, limits, agent.yaml, and dependency-aware dispatch
All checks were successful
CI / race (pull_request) Successful in 23s
CI / test (pull_request) Successful in 23s
ebb1cf5765
Add agent.yaml config with CLI precedence, parallel/open-PR limits per repo,
Forgejo dependency blocking, post-merge base branch sync, and a default
interactive dashboard with per-run output switching for parallel watch runs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Author
Owner

🔗 Linked to issue #15. Babysitting CI until green…

🔗 Linked to issue #15. Babysitting CI until green…
Author
Owner

forge agent finished implementation

  • Commit: feat(agent): dashboard TUI, limits, agent.yaml, and dependency-aware dispatch
  • Pull request: #21
  • Next: waiting for CI / babysitting fixes if needed
README.md                               |    9 +-
 docs/agent.yaml.example                 |    7 +
 docs/wiki/Agent-Watch.md                |   76 +
 go.mod                                  |    1 +
 internal/agent/agentfile.go             |  226 +++
 internal/agent/agentfile_test.go        |   88 +
 internal/agent/config.go                |   42 +
 internal/agent/deps.go                  |   54 +
 internal/agent/deps_test.go             |   19 +
 internal/agent/gitflow.go               |   38 +-
 internal/agent/limits.go                |  148 ++
 internal/agent/limits_test.go           |   35 +
 internal/agent/pipeline.go              |   11 +-
 internal/agent/prfix.go                 |    2 +-
 internal/agent/status.go                |  288 ++-
 internal/agent/tui.go                   |  365 +++-
 internal/agent/tui_test.go              |    4 +-
 internal/agent/watcher.go               |   76 +-
 internal/agent/worktree.go              |   27 +-
 internal/cmd/agent.go                   |   86 +-
 internal/cmd/agent_test.go              |   27 +-
 vendor/gopkg.in/yaml.v3/LICENSE         |   50 +
 vendor/gopkg.in/yaml.v3/NOTICE          |   13 +
 vendor/gopkg.in/yaml.v3/README.md       |  150 ++
 vendor/gopkg.in/yaml.v3/apic.go         |  747 ++++++++
 vendor/gopkg.in/yaml.v3/decode.go       | 1000 ++++++++++
 vendor/gopkg.in/yaml.v3/emitterc.go     | 2020 ++++++++++++++++++++
 vendor/gopkg.in/yaml.v3/encode.go       |  577 ++++++
 vendor/gopkg.in/yaml.v3/parserc.go      | 1258 +++++++++++++
 vendor/gopkg.in/yaml.v3/readerc.go      |  434 +++++
 vendor/gopkg.in/yaml.v3/resolve.go      |  326 ++++
 vendor/gopkg.in/yaml.v3/scannerc.go     | 3038 +++++++++++++++++++++++++++++++
 vendor/gopkg.in/yaml.v3/sorter.go       |  134 ++
 vendor/gopkg.in/yaml.v3/writerc.go      |   48 +
 vendor/gopkg.in/yaml.v3/yaml.go         |  698 +++++++
 vendor/gopkg.in/yaml.v3/yamlh.go        |  807 ++++++++
 vendor/gopkg.in/yaml.v3/yamlprivateh.go |  198 ++
 vendor/modules.txt                      |    3 +
 38 files changed, 12968 insertions(+), 162 deletions(-)
Agent output (tail)
TODO_DONE: Bei ≥2 parallelen Runs kann man **zwischen den Run-Views wechseln** und den jeweiligen Output sehen.
TODO_DONE: Configfile steuert **Repos**, **globale und per-Repo Parallelität**, **max. offene PRs**; dokumentiert inkl. Precedence.
TODO_DONE: Dispatch respektiert `max_parallel`, `max_parallel_per_repo` und `max_open_prs` (sichtbare Queue-/Limit-Anzeige).
TODO_DONE: Issues mit unerfüllten **Dependencies** werden nicht gestartet und als blocked geführt.
TODO_DONE: Nach Merge eines Agent-PRs wird der lokale Base-Branch des betroffenen Repos gefetched/gepullt.
TODO_DONE: Wiki + `--help` sind aktualisiert; Tests decken Config-Parsing, Limit-Logik und Dependency-Skip ab.
---
PR_TITLE: feat(agent): Agent-Dashboard, parallele Run-Views, Limits & agent.yaml
PR_BODY:
## Summary
- **Agent-Dashboard** als Standard-TUI bei interaktivem `forge agent watch` mit Overview und per-Run-Output-Views (`n`/`p`/`Tab`/`1–9`)
- **`agent.yaml`**-Konfiguration (Repos, Pfade, Parallelität, max. offene PRs) mit Precedence Flag > Config > Default; neue Flags `--parallel-per-repo`, `--max-open-prs`, `--no-tui`, `--config`
- **Limit-Engine** und **Dependency-Check** (Forgejo blocked-by) im Watcher; **Post-Merge-Sync** des lokalen Default-Branches
## Test plan
- [ ] `forge agent watch --help` zeigt neue Flags und Config-Hinweis
- [ ] Mit `agent.yaml` und TTY: Dashboard startet, Limits/Blocked sichtbar
- [ ] Zwei parallele Runs: Wechsel zwischen Output-Views funktioniert
- [ ] Issue mit offener Dependency erscheint als blocked, wird nicht gestartet
- [ ] Nach PR-Merge: lokaler `main` wird aktualisiert
- [ ] `go test ./internal/agent/... ./internal/cmd/...` grün
✅ **forge agent finished implementation** - Commit: `feat(agent): dashboard TUI, limits, agent.yaml, and dependency-aware dispatch` - Pull request: https://repository.hildebrandt.io/frank/forgecli/pulls/21 - Next: waiting for CI / babysitting fixes if needed ``` README.md | 9 +- docs/agent.yaml.example | 7 + docs/wiki/Agent-Watch.md | 76 + go.mod | 1 + internal/agent/agentfile.go | 226 +++ internal/agent/agentfile_test.go | 88 + internal/agent/config.go | 42 + internal/agent/deps.go | 54 + internal/agent/deps_test.go | 19 + internal/agent/gitflow.go | 38 +- internal/agent/limits.go | 148 ++ internal/agent/limits_test.go | 35 + internal/agent/pipeline.go | 11 +- internal/agent/prfix.go | 2 +- internal/agent/status.go | 288 ++- internal/agent/tui.go | 365 +++- internal/agent/tui_test.go | 4 +- internal/agent/watcher.go | 76 +- internal/agent/worktree.go | 27 +- internal/cmd/agent.go | 86 +- internal/cmd/agent_test.go | 27 +- vendor/gopkg.in/yaml.v3/LICENSE | 50 + vendor/gopkg.in/yaml.v3/NOTICE | 13 + vendor/gopkg.in/yaml.v3/README.md | 150 ++ vendor/gopkg.in/yaml.v3/apic.go | 747 ++++++++ vendor/gopkg.in/yaml.v3/decode.go | 1000 ++++++++++ vendor/gopkg.in/yaml.v3/emitterc.go | 2020 ++++++++++++++++++++ vendor/gopkg.in/yaml.v3/encode.go | 577 ++++++ vendor/gopkg.in/yaml.v3/parserc.go | 1258 +++++++++++++ vendor/gopkg.in/yaml.v3/readerc.go | 434 +++++ vendor/gopkg.in/yaml.v3/resolve.go | 326 ++++ vendor/gopkg.in/yaml.v3/scannerc.go | 3038 +++++++++++++++++++++++++++++++ vendor/gopkg.in/yaml.v3/sorter.go | 134 ++ vendor/gopkg.in/yaml.v3/writerc.go | 48 + vendor/gopkg.in/yaml.v3/yaml.go | 698 +++++++ vendor/gopkg.in/yaml.v3/yamlh.go | 807 ++++++++ vendor/gopkg.in/yaml.v3/yamlprivateh.go | 198 ++ vendor/modules.txt | 3 + 38 files changed, 12968 insertions(+), 162 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` TODO_DONE: Bei ≥2 parallelen Runs kann man **zwischen den Run-Views wechseln** und den jeweiligen Output sehen. TODO_DONE: Configfile steuert **Repos**, **globale und per-Repo Parallelität**, **max. offene PRs**; dokumentiert inkl. Precedence. TODO_DONE: Dispatch respektiert `max_parallel`, `max_parallel_per_repo` und `max_open_prs` (sichtbare Queue-/Limit-Anzeige). TODO_DONE: Issues mit unerfüllten **Dependencies** werden nicht gestartet und als blocked geführt. TODO_DONE: Nach Merge eines Agent-PRs wird der lokale Base-Branch des betroffenen Repos gefetched/gepullt. TODO_DONE: Wiki + `--help` sind aktualisiert; Tests decken Config-Parsing, Limit-Logik und Dependency-Skip ab. --- PR_TITLE: feat(agent): Agent-Dashboard, parallele Run-Views, Limits & agent.yaml PR_BODY: ## Summary - **Agent-Dashboard** als Standard-TUI bei interaktivem `forge agent watch` mit Overview und per-Run-Output-Views (`n`/`p`/`Tab`/`1–9`) - **`agent.yaml`**-Konfiguration (Repos, Pfade, Parallelität, max. offene PRs) mit Precedence Flag > Config > Default; neue Flags `--parallel-per-repo`, `--max-open-prs`, `--no-tui`, `--config` - **Limit-Engine** und **Dependency-Check** (Forgejo blocked-by) im Watcher; **Post-Merge-Sync** des lokalen Default-Branches ## Test plan - [ ] `forge agent watch --help` zeigt neue Flags und Config-Hinweis - [ ] Mit `agent.yaml` und TTY: Dashboard startet, Limits/Blocked sichtbar - [ ] Zwei parallele Runs: Wechsel zwischen Output-Views funktioniert - [ ] Issue mit offener Dependency erscheint als blocked, wird nicht gestartet - [ ] Nach PR-Merge: lokaler `main` wird aktualisiert - [ ] `go test ./internal/agent/... ./internal/cmd/...` grün ``` </details>
Author
Owner

☑️ ToDos checked off

  • Interaktiver forge agent watch-Start öffnet das Agent-Dashboard als Hauptview.
  • Bei ≥2 parallelen Runs kann man zwischen den Run-Views wechseln und den jeweiligen Output sehen.
  • Configfile steuert Repos, globale und per-Repo Parallelität, max. offene PRs; dokumentiert inkl. Precedence.
  • Dispatch respektiert max_parallel, max_parallel_per_repo und max_open_prs (sichtbare Queue-/Limit-Anzeige).
  • Issues mit unerfüllten Dependencies werden nicht gestartet und als blocked geführt.
  • Nach Merge eines Agent-PRs wird der lokale Base-Branch des betroffenen Repos gefetched/gepullt.
  • Wiki + --help sind aktualisiert; Tests decken Config-Parsing, Limit-Logik und Dependency-Skip ab.
☑️ **ToDos checked off** - [x] Interaktiver `forge agent watch`-Start öffnet das **Agent-Dashboard** als Hauptview. - [x] Bei ≥2 parallelen Runs kann man **zwischen den Run-Views wechseln** und den jeweiligen Output sehen. - [x] Configfile steuert **Repos**, **globale und per-Repo Parallelität**, **max. offene PRs**; dokumentiert inkl. Precedence. - [x] Dispatch respektiert `max_parallel`, `max_parallel_per_repo` und `max_open_prs` (sichtbare Queue-/Limit-Anzeige). - [x] Issues mit unerfüllten **Dependencies** werden nicht gestartet und als blocked geführt. - [x] Nach Merge eines Agent-PRs wird der lokale Base-Branch des betroffenen Repos gefetched/gepullt. - [x] Wiki + `--help` sind aktualisiert; Tests decken Config-Parsing, Limit-Logik und Dependency-Skip ab.
frank merged commit 26e11758ee into main 2026-07-12 12:34:24 +02:00
frank deleted branch agent/issue-15-agent-dashboard-parallele-tui-views-limi 2026-07-12 12:34:24 +02:00
Sign in to join this conversation.
No reviewers
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!21
No description provided.