Merge pull request 'fix: fix: agents don't clean up tmux sessions and phase files on completion (#302)' (#303) from fix/issue-302 into main
This commit is contained in:
commit
e7f071750f
4 changed files with 48 additions and 4 deletions
|
|
@ -740,11 +740,21 @@ case "${_MONITOR_LOOP_EXIT:-}" in
|
|||
else
|
||||
cleanup_worktree
|
||||
fi
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE"
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE" \
|
||||
"/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt"
|
||||
[ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
;;
|
||||
crash_recovery_failed)
|
||||
cleanup_labels
|
||||
;;
|
||||
done)
|
||||
# Belt-and-suspenders: callback in phase-handler.sh handles primary cleanup,
|
||||
# but ensure sentinel files are removed if callback was interrupted
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE" \
|
||||
"/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt"
|
||||
[ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
CLAIMED=false
|
||||
;;
|
||||
esac
|
||||
|
||||
log "dev-agent finished for issue #${ISSUE}"
|
||||
|
|
|
|||
|
|
@ -517,7 +517,9 @@ Instructions:
|
|||
# Local cleanup
|
||||
agent_kill_session "$SESSION_NAME"
|
||||
cleanup_worktree
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE"
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE" \
|
||||
"/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt"
|
||||
[ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
CLAIMED=false # Don't unclaim again in cleanup()
|
||||
|
||||
# ── PHASE: failed ───────────────────────────────────────────────────────────
|
||||
|
|
@ -611,7 +613,9 @@ $(printf '%s' "$REFUSAL_JSON" | head -c 2000)
|
|||
CLAIMED=false # Don't unclaim again in cleanup()
|
||||
agent_kill_session "$SESSION_NAME"
|
||||
cleanup_worktree
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE"
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE" \
|
||||
"/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt"
|
||||
[ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
return 1
|
||||
|
||||
else
|
||||
|
|
@ -638,7 +642,9 @@ $(printf '%s' "$REFUSAL_JSON" | head -c 2000)
|
|||
else
|
||||
cleanup_worktree
|
||||
fi
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE"
|
||||
rm -f "$PHASE_FILE" "$IMPL_SUMMARY_FILE" "$THREAD_FILE" \
|
||||
"/tmp/ci-result-${PROJECT_NAME}-${ISSUE}.txt"
|
||||
[ -n "${PR_NUMBER:-}" ] && rm -f "/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -79,6 +79,20 @@ if [ -n "$REVIEW_SESSIONS" ]; then
|
|||
rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true
|
||||
continue
|
||||
fi
|
||||
|
||||
# Safety net: clean up sessions in terminal phases (review already posted)
|
||||
current_phase=$(head -1 "$phase_file" 2>/dev/null | tr -d '[:space:]' || true)
|
||||
if [ "$current_phase" = "PHASE:review_complete" ]; then
|
||||
log "cleanup: killing session ${session} (terminal phase: review_complete)"
|
||||
tmux kill-session -t "$session" 2>/dev/null || true
|
||||
rm -f "$phase_file" "/tmp/${PROJECT_NAME}-review-output-${pr_num}.json" \
|
||||
"/tmp/review-injected-${PROJECT_NAME}-${pr_num}"
|
||||
sed -i "/\t${pr_num}$/d" /tmp/review-thread-map 2>/dev/null || true
|
||||
cd "$REPO_ROOT"
|
||||
git worktree remove "/tmp/${PROJECT_NAME}-review-${pr_num}" --force 2>/dev/null || true
|
||||
rm -rf "/tmp/${PROJECT_NAME}-review-${pr_num}" 2>/dev/null || true
|
||||
continue
|
||||
fi
|
||||
done <<< "$REVIEW_SESSIONS"
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -878,6 +878,13 @@ log "DONE: ${VERDICT} (re-review: ${IS_RE_REVIEW})"
|
|||
case "$VERDICT" in
|
||||
APPROVE)
|
||||
echo "PHASE:review_complete" > "${PHASE_FILE}"
|
||||
# Terminal phase: kill session, clean up all associated files
|
||||
tmux kill-session -t "${SESSION_NAME}" 2>/dev/null || true
|
||||
rm -f "${PHASE_FILE}" "${REVIEW_OUTPUT_FILE}" \
|
||||
"/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
cd "${REPO_ROOT}"
|
||||
git worktree remove "${REVIEW_WORKTREE}" --force 2>/dev/null || true
|
||||
rm -rf "${REVIEW_WORKTREE}" 2>/dev/null || true
|
||||
;;
|
||||
REQUEST_CHANGES|DISCUSS)
|
||||
printf 'PHASE:awaiting_changes\nSHA:%s\n' "$PR_SHA" > "${PHASE_FILE}"
|
||||
|
|
@ -885,5 +892,12 @@ case "$VERDICT" in
|
|||
;;
|
||||
*)
|
||||
echo "PHASE:review_complete" > "${PHASE_FILE}"
|
||||
# Unknown verdict terminal phase: clean up like APPROVE
|
||||
tmux kill-session -t "${SESSION_NAME}" 2>/dev/null || true
|
||||
rm -f "${PHASE_FILE}" "${REVIEW_OUTPUT_FILE}" \
|
||||
"/tmp/review-injected-${PROJECT_NAME}-${PR_NUMBER}"
|
||||
cd "${REPO_ROOT}"
|
||||
git worktree remove "${REVIEW_WORKTREE}" --force 2>/dev/null || true
|
||||
rm -rf "${REVIEW_WORKTREE}" 2>/dev/null || true
|
||||
;;
|
||||
esac
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue