Repository navigation
Expand file tree
/
Copy pathloop.sh
More file actions
executable file
·62 lines (49 loc) · 1.74 KB
/
Copy pathloop.sh
File metadata and controls
executable file
·62 lines (49 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env bash
set -euo pipefail
# Usage:
# ./loop.sh # build mode, unlimited iterations
# ./loop.sh plan # plan mode, unlimited iterations
# ./loop.sh 10 # build mode, max 10 iterations
# ./loop.sh plan 3 # plan mode, max 3 iterations
MODE="build"
MAX_ITERATIONS=0
if [[ "${1:-}" == "plan" ]]; then
MODE="plan"
shift
fi
if [[ "${1:-}" =~ ^[0-9]+$ ]]; then
MAX_ITERATIONS="$1"
shift
fi
PROMPT_FILE="PROMPT_build.md"
if [[ "$MODE" == "plan" ]]; then
PROMPT_FILE="PROMPT_plan.md"
fi
if [[ ! -f "$PROMPT_FILE" ]]; then
echo "Error: $PROMPT_FILE not found"
exit 1
fi
ITERATION=0
CURRENT_BRANCH=$(git branch --show-current)
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Mode: $MODE"
echo "Prompt: $PROMPT_FILE"
echo "Branch: $CURRENT_BRANCH"
if [[ "$MAX_ITERATIONS" -gt 0 ]]; then
echo "Max: $MAX_ITERATIONS iterations"
fi
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
while true; do
if [[ "$MAX_ITERATIONS" -gt 0 && "$ITERATION" -ge "$MAX_ITERATIONS" ]]; then
echo "Reached max iterations: $MAX_ITERATIONS"
break
fi
# Use Codex in non-interactive mode.
# --full-auto: workspace-write sandbox + on-request approvals (low-friction but not YOLO)
# --json: emit newline-delimited JSON events (better logs)
cat "$PROMPT_FILE" | codex exec --full-auto --json -
# Push after each iteration (optional but recommended)
git push origin "$CURRENT_BRANCH" || git push -u origin "$CURRENT_BRANCH"
ITERATION=$((ITERATION + 1))
echo -e "\n\n======================== LOOP $ITERATION ========================\n"
done