feat(agent): open WIP PR early and stream chat progress to PR #41

Merged
frank merged 1 commit from agent/issue-39-agent-wip-pr-sofort-nach-worktree-chat-z into main 2026-07-12 17:11:51 +02:00
Owner

Summary

  • Im --pr-Modus öffnet forge nach Claim + Worktree sofort einen WIP-PR (WIP: #<issue> <titel>), pusht den Branch und schaltet Fortschrittskommentare auf den PR um.
  • Während des Haupt-Agent-Laufs fasst PRChatCommenter ACP-Chat-Abschnitte zwischen Tool-Calls zusammen und postet sie als lesbare PR-Kommentare.
  • Nach erfolgreichem Lauf finalisiert successFinish Titel/Description per UpdatePR (ohne WIP:); CI-/Konflikt-Reparaturen kommentieren weiterhin nur am PR.
  • Wiki (Agent-Watch) und --pr-Help-Text beschreiben den neuen Ablauf.

Test plan

  • go test ./...
  • Manuell: forge agent run <issue> --pr — WIP-PR direkt nach Worktree, Chat-Kommentare während des Laufs, finaler Titel nach Abschluss
  • CI-/Konflikt-Reparatur: nur PR-Kommentare, kein Titel-/Body-Rewrite

Änderungen im Überblick

  1. ensureWIPPR (pr_wip.go): Nach Worktree Branch pushen, WIP-PR anlegen oder vorhandenen PR wiederverwenden; commentNumber wechselt zum PR.
  2. PRChatCommenter (pr_chat.go): ACP-Events zwischen Tool-Calls als 💭 **Agent progress**-Kommentare am PR (nur Hauptlauf).
  3. successFinish: Bestehenden PR per Forge.UpdatePR finalisieren statt neu anzulegen.
  4. Dokumentation: Neuer Wiki-Abschnitt „--pr-Modus: WIP-PR und Fortschritt“, aktualisierter --pr-Flag-Help-Text und Agent-Prompt.

Closes #39

## Summary - Im `--pr`-Modus öffnet forge nach Claim + Worktree sofort einen WIP-PR (`WIP: #<issue> <titel>`), pusht den Branch und schaltet Fortschrittskommentare auf den PR um. - Während des Haupt-Agent-Laufs fasst `PRChatCommenter` ACP-Chat-Abschnitte zwischen Tool-Calls zusammen und postet sie als lesbare PR-Kommentare. - Nach erfolgreichem Lauf finalisiert `successFinish` Titel/Description per `UpdatePR` (ohne `WIP:`); CI-/Konflikt-Reparaturen kommentieren weiterhin nur am PR. - Wiki (`Agent-Watch`) und `--pr`-Help-Text beschreiben den neuen Ablauf. ## Test plan - [x] `go test ./...` - [ ] Manuell: `forge agent run <issue> --pr` — WIP-PR direkt nach Worktree, Chat-Kommentare während des Laufs, finaler Titel nach Abschluss - [ ] CI-/Konflikt-Reparatur: nur PR-Kommentare, kein Titel-/Body-Rewrite --- **Änderungen im Überblick** 1. **`ensureWIPPR`** (`pr_wip.go`): Nach Worktree Branch pushen, WIP-PR anlegen oder vorhandenen PR wiederverwenden; `commentNumber` wechselt zum PR. 2. **`PRChatCommenter`** (`pr_chat.go`): ACP-Events zwischen Tool-Calls als `💭 **Agent progress**`-Kommentare am PR (nur Hauptlauf). 3. **`successFinish`**: Bestehenden PR per `Forge.UpdatePR` finalisieren statt neu anzulegen. 4. **Dokumentation**: Neuer Wiki-Abschnitt „`--pr`-Modus: WIP-PR und Fortschritt“, aktualisierter `--pr`-Flag-Help-Text und Agent-Prompt. Closes #39
feat(agent): open WIP PR early and stream chat progress to PR
All checks were successful
CI / test (pull_request) Successful in 29s
CI / race (pull_request) Successful in 30s
bf006bab22
In --pr mode, push the branch and create a WIP pull request right after
the worktree is ready, post summarized ACP chat sections as PR comments
during the main agent run, and finalize title/description when done.

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

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

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

forge agent finished implementation

  • Commit: feat(agent): open WIP PR early and stream chat progress to PR
  • Pull request: #41
  • Next: waiting for CI / babysitting fixes if needed
docs/wiki/Agent-Watch.md         |  16 ++++-
 internal/agent/acp_client.go     |   8 ++-
 internal/agent/acp_mock_test.go  |   2 +-
 internal/agent/acp_smoke_test.go |   1 +
 internal/agent/forge.go          |  17 +++++
 internal/agent/pipeline.go       |  65 +++++++++++++-----
 internal/agent/pr_chat.go        | 138 +++++++++++++++++++++++++++++++++++++++
 internal/agent/pr_chat_test.go   |  52 +++++++++++++++
 internal/agent/pr_wip.go         |  86 ++++++++++++++++++++++++
 internal/agent/pr_wip_test.go    |  27 ++++++++
 internal/agent/prompt.go         |   2 +-
 internal/agent/runners.go        |   4 +-
 internal/cmd/agent.go            |   2 +-
 13 files changed, 395 insertions(+), 25 deletions(-)
Agent output (tail)
TODO_DONE: Nach erfolgreichem Agent-Lauf: Titel und Description final, ohne `WIP:`
TODO_DONE: CI-/Conflict-Babysitting schreibt nur Kommentare, ändert Titel/Description nicht
TODO_DONE: Wiki (`Agent-Watch`) und Help-Texte dokumentieren den neuen Ablauf
PR_TITLE: feat(agent): open WIP PR early and stream chat progress to PR
PR_BODY:
## Summary
- Im `--pr`-Modus öffnet forge nach Claim + Worktree sofort einen WIP-PR (`WIP: #<issue> <titel>`), pusht den Branch und schaltet Fortschrittskommentare auf den PR um.
- Während des Haupt-Agent-Laufs fasst `PRChatCommenter` ACP-Chat-Abschnitte zwischen Tool-Calls zusammen und postet sie als lesbare PR-Kommentare.
- Nach erfolgreichem Lauf finalisiert `successFinish` Titel/Description per `UpdatePR` (ohne `WIP:`); CI-/Konflikt-Reparaturen kommentieren weiterhin nur am PR.
- Wiki (`Agent-Watch`) und `--pr`-Help-Text beschreiben den neuen Ablauf.
## Test plan
- [x] `go test ./...`
- [ ] Manuell: `forge agent run <issue> --pr` — WIP-PR direkt nach Worktree, Chat-Kommentare während des Laufs, finaler Titel nach Abschluss
- [ ] CI-/Konflikt-Reparatur: nur PR-Kommentare, kein Titel-/Body-Rewrite
---
**Änderungen im Überblick**
1. **`ensureWIPPR`** (`pr_wip.go`): Nach Worktree Branch pushen, WIP-PR anlegen oder vorhandenen PR wiederverwenden; `commentNumber` wechselt zum PR.
2. **`PRChatCommenter`** (`pr_chat.go`): ACP-Events zwischen Tool-Calls als `💭 **Agent progress**`-Kommentare am PR (nur Hauptlauf).
3. **`successFinish`**: Bestehenden PR per `Forge.UpdatePR` finalisieren statt neu anzulegen.
4. **Dokumentation**: Neuer Wiki-Abschnitt „`--pr`-Modus: WIP-PR und Fortschritt“, aktualisierter `--pr`-Flag-Help-Text und Agent-Prompt.
✅ **forge agent finished implementation** - Commit: `feat(agent): open WIP PR early and stream chat progress to PR` - Pull request: https://repository.hildebrandt.io/frank/forgecli/pulls/41 - Next: waiting for CI / babysitting fixes if needed ``` docs/wiki/Agent-Watch.md | 16 ++++- internal/agent/acp_client.go | 8 ++- internal/agent/acp_mock_test.go | 2 +- internal/agent/acp_smoke_test.go | 1 + internal/agent/forge.go | 17 +++++ internal/agent/pipeline.go | 65 +++++++++++++----- internal/agent/pr_chat.go | 138 +++++++++++++++++++++++++++++++++++++++ internal/agent/pr_chat_test.go | 52 +++++++++++++++ internal/agent/pr_wip.go | 86 ++++++++++++++++++++++++ internal/agent/pr_wip_test.go | 27 ++++++++ internal/agent/prompt.go | 2 +- internal/agent/runners.go | 4 +- internal/cmd/agent.go | 2 +- 13 files changed, 395 insertions(+), 25 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` TODO_DONE: Nach erfolgreichem Agent-Lauf: Titel und Description final, ohne `WIP:` TODO_DONE: CI-/Conflict-Babysitting schreibt nur Kommentare, ändert Titel/Description nicht TODO_DONE: Wiki (`Agent-Watch`) und Help-Texte dokumentieren den neuen Ablauf PR_TITLE: feat(agent): open WIP PR early and stream chat progress to PR PR_BODY: ## Summary - Im `--pr`-Modus öffnet forge nach Claim + Worktree sofort einen WIP-PR (`WIP: #<issue> <titel>`), pusht den Branch und schaltet Fortschrittskommentare auf den PR um. - Während des Haupt-Agent-Laufs fasst `PRChatCommenter` ACP-Chat-Abschnitte zwischen Tool-Calls zusammen und postet sie als lesbare PR-Kommentare. - Nach erfolgreichem Lauf finalisiert `successFinish` Titel/Description per `UpdatePR` (ohne `WIP:`); CI-/Konflikt-Reparaturen kommentieren weiterhin nur am PR. - Wiki (`Agent-Watch`) und `--pr`-Help-Text beschreiben den neuen Ablauf. ## Test plan - [x] `go test ./...` - [ ] Manuell: `forge agent run <issue> --pr` — WIP-PR direkt nach Worktree, Chat-Kommentare während des Laufs, finaler Titel nach Abschluss - [ ] CI-/Konflikt-Reparatur: nur PR-Kommentare, kein Titel-/Body-Rewrite --- **Änderungen im Überblick** 1. **`ensureWIPPR`** (`pr_wip.go`): Nach Worktree Branch pushen, WIP-PR anlegen oder vorhandenen PR wiederverwenden; `commentNumber` wechselt zum PR. 2. **`PRChatCommenter`** (`pr_chat.go`): ACP-Events zwischen Tool-Calls als `💭 **Agent progress**`-Kommentare am PR (nur Hauptlauf). 3. **`successFinish`**: Bestehenden PR per `Forge.UpdatePR` finalisieren statt neu anzulegen. 4. **Dokumentation**: Neuer Wiki-Abschnitt „`--pr`-Modus: WIP-PR und Fortschritt“, aktualisierter `--pr`-Flag-Help-Text und Agent-Prompt. ``` </details>
Author
Owner

☑️ ToDos checked off

  • Nach Claim + Worktree-Anlage: Remote-Branch existiert und WIP-PR ist offen
  • WIP-PR-Titel beginnt mit WIP: und bezieht sich auf die aktuelle Aufgabe
  • Während des Agent-Laufs erscheinen zusammengefasste Chat-Abschnitte als PR-Kommentare
  • Nach erfolgreichem Agent-Lauf: Titel und Description final, ohne WIP:
  • CI-/Conflict-Babysitting schreibt nur Kommentare, ändert Titel/Description nicht
  • Wiki (Agent-Watch) und Help-Texte dokumentieren den neuen Ablauf
☑️ **ToDos checked off** - [x] Nach Claim + Worktree-Anlage: Remote-Branch existiert und WIP-PR ist offen - [x] WIP-PR-Titel beginnt mit `WIP:` und bezieht sich auf die aktuelle Aufgabe - [x] Während des Agent-Laufs erscheinen zusammengefasste Chat-Abschnitte als PR-Kommentare - [x] Nach erfolgreichem Agent-Lauf: Titel und Description final, ohne `WIP:` - [x] CI-/Conflict-Babysitting schreibt nur Kommentare, ändert Titel/Description nicht - [x] Wiki (`Agent-Watch`) und Help-Texte dokumentieren den neuen Ablauf
Author
Owner
🟢 **CI green** (attempt 1/3) https://repository.hildebrandt.io/frank/forgecli/actions/runs/94
frank merged commit 8cd4bd557f into main 2026-07-12 17:11:51 +02:00
frank deleted branch agent/issue-39-agent-wip-pr-sofort-nach-worktree-chat-z 2026-07-12 17:11:51 +02:00
frank referenced this pull request from a commit 2026-07-12 17:13:33 +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!41
No description provided.