fix: show summary and pause on loop exit — tmux doesn't vanish abruptly

This commit is contained in:
2026-03-27 15:17:13 -04:00
parent bc7a1e2f04
commit f1fde5cb01

44
loop.sh
View File

@@ -151,6 +151,31 @@ cleanup() {
[ "$AUTO_HOOKS" = true ] && remove_hooks
release_lock
}
# Show final status and wait so tmux doesn't vanish
finish() {
local exit_code="${1:-0}"
local reason="${2:-}"
echo ""
echo "═══════════════════════════════════════════════════════"
echo " LOOP FINISHED"
echo "═══════════════════════════════════════════════════════"
echo ""
echo " Stories: $(story_counts 2>/dev/null || echo 'N/A')"
echo " Iterations: $ITERATION / $MAX_ITERATIONS"
[ -n "$reason" ] && echo " Reason: $reason"
echo ""
echo " Progress: .loop/progress.md"
echo " Stories: .loop/prd.json"
echo ""
if any_stories_blocked 2>/dev/null; then
echo " ⚠ Some stories are blocked. Run /agent-loop:triage"
echo ""
fi
echo " Press Enter to close, or Ctrl+C to keep this terminal open."
read -r 2>/dev/null || true
exit "$exit_code"
}
LOOP_AGENT_TMPFILE=""
if [ "$AUTO_HOOKS" = true ]; then
@@ -301,9 +326,8 @@ while [ "$ITERATION" -lt "$MAX_ITERATIONS" ]; do
# Check if all stories already pass
if all_stories_pass 2>/dev/null; then
log_header "All Stories Complete! ($(story_counts))"
snapshot_for_archive
exit 0
finish 0 "All stories complete"
fi
# Capture which story the generator will work on (highest-priority incomplete)
@@ -312,17 +336,12 @@ while [ "$ITERATION" -lt "$MAX_ITERATIONS" ]; do
# No actionable story — all remaining are passed or blocked
if [ -z "$CURRENT_STORY_ID" ]; then
if [ "$RESUME" = true ]; then
log "Resume mode: no actionable stories remaining."
else
log "No actionable stories remaining (all passed or blocked)."
fi
snapshot_for_archive
if any_stories_blocked 2>/dev/null; then
log "Some stories are blocked and need human review. Run /agent-loop:triage for details."
exit $EXIT_ALL_BLOCKED
finish $EXIT_ALL_BLOCKED "Some stories blocked needs human review"
else
finish $EXIT_OK "No actionable stories remaining"
fi
exit $EXIT_OK
fi
# Capture git state before generator runs (for evaluator diff)
@@ -449,8 +468,5 @@ Rejected $REJECTIONS times. Needs human review. Last reason: $REASON
done
# --- Max iterations reached ---
log_header "Max Iterations Reached ($MAX_ITERATIONS)"
log "Stories completed: $(story_counts)"
log "Run /agent-loop:triage to generate a handoff brief."
snapshot_for_archive
exit $EXIT_MAX_ITERATIONS
finish $EXIT_MAX_ITERATIONS "Max iterations reached ($MAX_ITERATIONS)"