feat(agent): parallele Pipelines und Multi-Repo-Watch #11

Merged
frank merged 1 commit from agent/issue-1-agent-parallele-agents-und-multi-repo-wa into main 2026-07-12 11:08:07 +02:00
Owner

Summary

  • --parallel begrenzt gleichzeitige Issue-Pipelines (Worker-Pool, Default 1).
  • --repos ergänzt -R um weitere owner/repo-Ziele; State bleibt pro owner/repo#issue getrennt.
  • TryClaim verhindert doppelte Bearbeitung bei parallelen Workern; Working-Label-Filter bleibt auf Forgejo-Seite aktiv.
  • Bei --parallel > 1 werden isolierte Worktrees pro Issue genutzt (auch im --commit-Modus); ResolveRepoRoot findet Checkout oder ~/.config/forge/repos/<owner>/<repo>.

Test plan

  • go test ./...
  • forge agent watch --parallel 2 --label … --agent claude --pr
  • forge agent watch -R frank/forgecli --repos acme/app --label … --agent claude --pr
  • Wiki Agent-Watcher mit --help abgleichen

Closes #1


Änderungen

forge agent watch unterstützt jetzt parallele und multi-repo Verarbeitung:

  1. --parallel N – Worker-Pool mit Semaphore; mehrere Issues gleichzeitig bis zum Limit.
  2. --repos owner/a,owner/b – zusätzliche Repos neben -R; alle werden pro Poll-Zyklus abgefragt.
  3. StateStore.TryClaim – atomares Setzen von running, damit parallele Worker dasselbe Issue nicht doppelt starten.
  4. Worktree-Isolation – bei --pr oder --parallel > 1 ein eigener Worktree/Branch pro Issue; ResolveRepoRoot löst das lokale Checkout pro Repo auf.
  5. Status-UI/TUI – Queue und Running-Einträge tragen repo; Snapshot listet State über alle Watch-Ziele.

Neue Tests für ParseRepoTargets, RepoTargets, TryClaim und angepasste Status-Snapshots. Wiki-Seite Agent-Watcher wurde aktualisiert.

## Summary - `--parallel` begrenzt gleichzeitige Issue-Pipelines (Worker-Pool, Default 1). - `--repos` ergänzt `-R` um weitere `owner/repo`-Ziele; State bleibt pro `owner/repo#issue` getrennt. - `TryClaim` verhindert doppelte Bearbeitung bei parallelen Workern; Working-Label-Filter bleibt auf Forgejo-Seite aktiv. - Bei `--parallel` > 1 werden isolierte Worktrees pro Issue genutzt (auch im `--commit`-Modus); `ResolveRepoRoot` findet Checkout oder `~/.config/forge/repos/<owner>/<repo>`. ## Test plan - [x] `go test ./...` - [ ] `forge agent watch --parallel 2 --label … --agent claude --pr` - [ ] `forge agent watch -R frank/forgecli --repos acme/app --label … --agent claude --pr` - [ ] Wiki [Agent-Watcher](https://repository.hildebrandt.io/frank/forgecli/wiki/Agent-Watcher.-) mit `--help` abgleichen Closes #1 --- ### Änderungen `forge agent watch` unterstützt jetzt parallele und multi-repo Verarbeitung: 1. **`--parallel N`** – Worker-Pool mit Semaphore; mehrere Issues gleichzeitig bis zum Limit. 2. **`--repos owner/a,owner/b`** – zusätzliche Repos neben `-R`; alle werden pro Poll-Zyklus abgefragt. 3. **`StateStore.TryClaim`** – atomares Setzen von `running`, damit parallele Worker dasselbe Issue nicht doppelt starten. 4. **Worktree-Isolation** – bei `--pr` oder `--parallel` > 1 ein eigener Worktree/Branch pro Issue; `ResolveRepoRoot` löst das lokale Checkout pro Repo auf. 5. **Status-UI/TUI** – Queue und Running-Einträge tragen `repo`; Snapshot listet State über alle Watch-Ziele. Neue Tests für `ParseRepoTargets`, `RepoTargets`, `TryClaim` und angepasste Status-Snapshots. Wiki-Seite *Agent-Watcher* wurde aktualisiert.
feat(agent): parallel pipelines and multi-repo watch
All checks were successful
CI / test (pull_request) Successful in 4m55s
CI / race (pull_request) Successful in 9m45s
7231bd9288
Add --parallel worker pool, --repos for watching multiple Forgejo
repositories, atomic TryClaim dedup, and per-issue worktree isolation
when running concurrently.

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

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

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

forge agent finished implementation

  • Commit: feat(agent): parallel pipelines and multi-repo watch
  • Pull request: #11
  • Next: waiting for CI / babysitting fixes if needed
internal/agent/config.go      |  69 ++++++++++++++++
 internal/agent/config_test.go |  38 +++++++++
 internal/agent/gitflow.go     |  39 +++++++++
 internal/agent/pipeline.go    |  26 ++++--
 internal/agent/state.go       |  22 ++++++
 internal/agent/status.go      | 173 +++++++++++++++++++++++++++++-----------
 internal/agent/status_test.go |   7 +-
 internal/agent/watcher.go     | 179 +++++++++++++++++++++++++++++++-----------
 internal/cmd/agent.go         |  54 ++++++++++++-
 9 files changed, 505 insertions(+), 102 deletions(-)
Agent output (tail)
## Summary
- `--parallel` begrenzt gleichzeitige Issue-Pipelines (Worker-Pool, Default 1).
- `--repos` ergänzt `-R` um weitere `owner/repo`-Ziele; State bleibt pro `owner/repo#issue` getrennt.
- `TryClaim` verhindert doppelte Bearbeitung bei parallelen Workern; Working-Label-Filter bleibt auf Forgejo-Seite aktiv.
- Bei `--parallel` > 1 werden isolierte Worktrees pro Issue genutzt (auch im `--commit`-Modus); `ResolveRepoRoot` findet Checkout oder `~/.config/forge/repos/<owner>/<repo>`.
## Test plan
- [x] `go test ./...`
- [ ] `forge agent watch --parallel 2 --label … --agent claude --pr`
- [ ] `forge agent watch -R frank/forgecli --repos acme/app --label … --agent claude --pr`
- [ ] Wiki [Agent-Watcher](https://repository.hildebrandt.io/frank/forgecli/wiki/Agent-Watcher.-) mit `--help` abgleichen
Closes #1
---
### Änderungen
`forge agent watch` unterstützt jetzt parallele und multi-repo Verarbeitung:
1. **`--parallel N`** – Worker-Pool mit Semaphore; mehrere Issues gleichzeitig bis zum Limit.
2. **`--repos owner/a,owner/b`** – zusätzliche Repos neben `-R`; alle werden pro Poll-Zyklus abgefragt.
3. **`StateStore.TryClaim`** – atomares Setzen von `running`, damit parallele Worker dasselbe Issue nicht doppelt starten.
4. **Worktree-Isolation** – bei `--pr` oder `--parallel` > 1 ein eigener Worktree/Branch pro Issue; `ResolveRepoRoot` löst das lokale Checkout pro Repo auf.
5. **Status-UI/TUI** – Queue und Running-Einträge tragen `repo`; Snapshot listet State über alle Watch-Ziele.
Neue Tests für `ParseRepoTargets`, `RepoTargets`, `TryClaim` und angepasste Status-Snapshots. Wiki-Seite *Agent-Watcher* wurde aktualisiert.
✅ **forge agent finished implementation** - Commit: `feat(agent): parallel pipelines and multi-repo watch` - Pull request: https://repository.hildebrandt.io/frank/forgecli/pulls/11 - Next: waiting for CI / babysitting fixes if needed ``` internal/agent/config.go | 69 ++++++++++++++++ internal/agent/config_test.go | 38 +++++++++ internal/agent/gitflow.go | 39 +++++++++ internal/agent/pipeline.go | 26 ++++-- internal/agent/state.go | 22 ++++++ internal/agent/status.go | 173 +++++++++++++++++++++++++++++----------- internal/agent/status_test.go | 7 +- internal/agent/watcher.go | 179 +++++++++++++++++++++++++++++++----------- internal/cmd/agent.go | 54 ++++++++++++- 9 files changed, 505 insertions(+), 102 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` ## Summary - `--parallel` begrenzt gleichzeitige Issue-Pipelines (Worker-Pool, Default 1). - `--repos` ergänzt `-R` um weitere `owner/repo`-Ziele; State bleibt pro `owner/repo#issue` getrennt. - `TryClaim` verhindert doppelte Bearbeitung bei parallelen Workern; Working-Label-Filter bleibt auf Forgejo-Seite aktiv. - Bei `--parallel` > 1 werden isolierte Worktrees pro Issue genutzt (auch im `--commit`-Modus); `ResolveRepoRoot` findet Checkout oder `~/.config/forge/repos/<owner>/<repo>`. ## Test plan - [x] `go test ./...` - [ ] `forge agent watch --parallel 2 --label … --agent claude --pr` - [ ] `forge agent watch -R frank/forgecli --repos acme/app --label … --agent claude --pr` - [ ] Wiki [Agent-Watcher](https://repository.hildebrandt.io/frank/forgecli/wiki/Agent-Watcher.-) mit `--help` abgleichen Closes #1 --- ### Änderungen `forge agent watch` unterstützt jetzt parallele und multi-repo Verarbeitung: 1. **`--parallel N`** – Worker-Pool mit Semaphore; mehrere Issues gleichzeitig bis zum Limit. 2. **`--repos owner/a,owner/b`** – zusätzliche Repos neben `-R`; alle werden pro Poll-Zyklus abgefragt. 3. **`StateStore.TryClaim`** – atomares Setzen von `running`, damit parallele Worker dasselbe Issue nicht doppelt starten. 4. **Worktree-Isolation** – bei `--pr` oder `--parallel` > 1 ein eigener Worktree/Branch pro Issue; `ResolveRepoRoot` löst das lokale Checkout pro Repo auf. 5. **Status-UI/TUI** – Queue und Running-Einträge tragen `repo`; Snapshot listet State über alle Watch-Ziele. Neue Tests für `ParseRepoTargets`, `RepoTargets`, `TryClaim` und angepasste Status-Snapshots. Wiki-Seite *Agent-Watcher* wurde aktualisiert. ``` </details>
Author
Owner

☑️ ToDos checked off

  • Konfigurierbare maximale Parallelität
  • Sichere Isolation (Worktree/Branch pro Issue)
  • Multi-Repo-Watch mit klarer Claim-/State-Verwaltung
  • Keine doppelte Bearbeitung desselben Issues
☑️ **ToDos checked off** - [x] Konfigurierbare maximale Parallelität - [x] Sichere Isolation (Worktree/Branch pro Issue) - [x] Multi-Repo-Watch mit klarer Claim-/State-Verwaltung - [x] Keine doppelte Bearbeitung desselben Issues
frank merged commit d98fc40260 into main 2026-07-12 11:08:07 +02:00
frank deleted branch agent/issue-1-agent-parallele-agents-und-multi-repo-wa 2026-07-12 12:07:06 +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!11
No description provided.