Compare commits

...

2 commits

Author SHA1 Message Date
4f5c8cee51 Merge pull request 'fix: bug: dev-agent does not clean up branch/worktree on CI exhausted or block (#115)' (#118) from fix/issue-115 into main
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
2026-04-01 15:23:29 +00:00
Agent
e9a4fc7b80 fix: bug: dev-agent does not clean up branch/worktree on CI exhausted or block (#115)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-01 15:12:45 +00:00
2 changed files with 23 additions and 0 deletions

View file

@ -575,6 +575,13 @@ else
outcome="blocked_${_PR_WALK_EXIT_REASON:-agent_failed}"
profile_write_journal "$ISSUE" "$ISSUE_TITLE" "$outcome" "$FILES_CHANGED" || true
# Cleanup on failure: close PR, delete remote branch, clean up worktree
if [ -n "$PR_NUMBER" ]; then
pr_close "$PR_NUMBER"
fi
git push "$FORGE_REMOTE" --delete "$BRANCH" 2>/dev/null || true
worktree_cleanup "$WORKTREE"
rm -f "$SID_FILE" "$IMPL_SUMMARY_FILE"
CLAIMED=false
fi

View file

@ -348,6 +348,22 @@ pr_is_merged() {
[ "$merged" = "true" ]
}
# ---------------------------------------------------------------------------
# pr_close — Close a PR via forge API.
# Args: pr_number
# Returns: 0=closed, 1=error
# ---------------------------------------------------------------------------
pr_close() {
local pr_num="$1"
_prl_log "closing PR #${pr_num}"
curl -sf -X PATCH \
-H "Authorization: token ${FORGE_TOKEN}" \
-H "Content-Type: application/json" \
"${FORGE_API}/pulls/${pr_num}" \
-d '{"state":"closed"}' >/dev/null 2>&1 || true
}
# ---------------------------------------------------------------------------
# pr_walk_to_merge — Walk a PR through CI, review, and merge.
#