@jonit-dev/night-watch-cli 1.7.78 → 1.7.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -166,7 +166,7 @@ for AUDIT_ATTEMPT in $(seq 1 "${AUDIT_MAX_RETRIES}"); do
|
|
|
166
166
|
cd "${AUDIT_WORKTREE_DIR}" && timeout "${MAX_RUNTIME}" \
|
|
167
167
|
claude -p "${AUDIT_PROMPT}" \
|
|
168
168
|
--dangerously-skip-permissions \
|
|
169
|
-
|
|
169
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
170
170
|
); then
|
|
171
171
|
EXIT_CODE=0
|
|
172
172
|
else
|
|
@@ -180,7 +180,7 @@ for AUDIT_ATTEMPT in $(seq 1 "${AUDIT_MAX_RETRIES}"); do
|
|
|
180
180
|
-C "${AUDIT_WORKTREE_DIR}" \
|
|
181
181
|
--yolo \
|
|
182
182
|
"${AUDIT_PROMPT}" \
|
|
183
|
-
|
|
183
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
184
184
|
); then
|
|
185
185
|
EXIT_CODE=0
|
|
186
186
|
else
|
|
@@ -8,7 +8,7 @@ set -euo pipefail
|
|
|
8
8
|
# NOTE: This script expects environment variables to be set by the caller.
|
|
9
9
|
# The Node.js CLI will inject config values via environment variables.
|
|
10
10
|
# Required env vars (with defaults shown):
|
|
11
|
-
# NW_MAX_RUNTIME=
|
|
11
|
+
# NW_MAX_RUNTIME=14400 - Maximum runtime in seconds (4 hours)
|
|
12
12
|
# NW_PROVIDER_CMD=claude - AI provider CLI to use (claude, codex, etc.)
|
|
13
13
|
# NW_DRY_RUN=0 - Set to 1 for dry-run mode (prints diagnostics only)
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ else
|
|
|
22
22
|
fi
|
|
23
23
|
LOG_DIR="${PROJECT_DIR}/logs"
|
|
24
24
|
LOG_FILE="${LOG_DIR}/executor.log"
|
|
25
|
-
MAX_RUNTIME="${NW_MAX_RUNTIME:-
|
|
25
|
+
MAX_RUNTIME="${NW_MAX_RUNTIME:-14400}" # 4 hours — used for cooldowns and eligibility
|
|
26
26
|
SESSION_MAX_RUNTIME="${NW_SESSION_MAX_RUNTIME:-${MAX_RUNTIME}}" # per-invocation timeout; defaults to MAX_RUNTIME
|
|
27
27
|
MAX_LOG_SIZE="524288" # 512 KB
|
|
28
28
|
PROVIDER_CMD="${NW_PROVIDER_CMD:-claude}"
|
|
@@ -548,7 +548,7 @@ while [ "${ATTEMPT}" -lt "${MAX_RETRIES}" ]; do
|
|
|
548
548
|
cd "${WORKTREE_DIR}" && timeout "${SESSION_MAX_RUNTIME}" \
|
|
549
549
|
claude -p "${PROMPT}" \
|
|
550
550
|
--dangerously-skip-permissions \
|
|
551
|
-
|
|
551
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
552
552
|
); then
|
|
553
553
|
EXIT_CODE=0
|
|
554
554
|
else
|
|
@@ -562,7 +562,7 @@ while [ "${ATTEMPT}" -lt "${MAX_RETRIES}" ]; do
|
|
|
562
562
|
-C "${WORKTREE_DIR}" \
|
|
563
563
|
--yolo \
|
|
564
564
|
"${PROMPT}" \
|
|
565
|
-
|
|
565
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
566
566
|
); then
|
|
567
567
|
EXIT_CODE=0
|
|
568
568
|
else
|
|
@@ -629,7 +629,7 @@ if [ "${RATE_LIMIT_FALLBACK_TRIGGERED}" = "1" ]; then
|
|
|
629
629
|
claude -p "${PROMPT}" \
|
|
630
630
|
--dangerously-skip-permissions \
|
|
631
631
|
--model "${FALLBACK_MODEL}" \
|
|
632
|
-
|
|
632
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
633
633
|
); then
|
|
634
634
|
EXIT_CODE=0
|
|
635
635
|
else
|
|
@@ -667,6 +667,7 @@ if [ ${EXIT_CODE} -eq 0 ]; then
|
|
|
667
667
|
fi
|
|
668
668
|
"${NW_CLI}" board close-issue "${ISSUE_NUMBER}" 2>>"${LOG_FILE}" || \
|
|
669
669
|
"${NW_CLI}" board move-issue "${ISSUE_NUMBER}" --column "Done" 2>>"${LOG_FILE}" || true
|
|
670
|
+
log "SUCCESS: PR opened and ready for review — ${PR_URL}"
|
|
670
671
|
emit_result "success_open_pr" "prd=${ELIGIBLE_PRD}|branch=${BRANCH_NAME}"
|
|
671
672
|
elif finalize_prd_done "implemented, PR opened on ${BRANCH_NAME}"; then
|
|
672
673
|
# Non-board mode: post attribution comment to the PR
|
|
@@ -675,6 +676,7 @@ if [ ${EXIT_CODE} -eq 0 ]; then
|
|
|
675
676
|
if [ -n "${NON_BOARD_PR_URL}" ]; then
|
|
676
677
|
gh pr comment "${NON_BOARD_PR_URL}" --body "> 🤖 Implemented by ${EFFECTIVE_PROVIDER_LABEL}" 2>>"${LOG_FILE}" || true
|
|
677
678
|
fi
|
|
679
|
+
log "SUCCESS: PR opened and ready for review — ${NON_BOARD_PR_URL}"
|
|
678
680
|
emit_result "success_open_pr" "prd=${ELIGIBLE_PRD}|branch=${BRANCH_NAME}"
|
|
679
681
|
else
|
|
680
682
|
night_watch_history record "${PROJECT_DIR}" "${ELIGIBLE_PRD}" failure --exit-code 1 2>/dev/null || true
|
|
@@ -168,7 +168,9 @@ log() {
|
|
|
168
168
|
_esec=$(( _elapsed % 60 ))
|
|
169
169
|
elapsed_str=" [+${_emin}m${_esec}s]"
|
|
170
170
|
fi
|
|
171
|
-
|
|
171
|
+
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] [PID:$$]${elapsed_str} $*"
|
|
172
|
+
echo "${msg}" >> "${log_file}"
|
|
173
|
+
echo "${msg}" >&2
|
|
172
174
|
}
|
|
173
175
|
|
|
174
176
|
# Write a visual separator line to the log to delimit separate runs.
|
|
@@ -1078,7 +1078,7 @@ for ATTEMPT in $(seq 1 "${TOTAL_ATTEMPTS}"); do
|
|
|
1078
1078
|
cd "${REVIEW_WORKTREE_DIR}" && timeout "${ATTEMPT_TIMEOUT}" \
|
|
1079
1079
|
claude -p "${REVIEWER_PROMPT}" \
|
|
1080
1080
|
--dangerously-skip-permissions \
|
|
1081
|
-
|
|
1081
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
1082
1082
|
); then
|
|
1083
1083
|
EXIT_CODE=0
|
|
1084
1084
|
else
|
|
@@ -1092,7 +1092,7 @@ for ATTEMPT in $(seq 1 "${TOTAL_ATTEMPTS}"); do
|
|
|
1092
1092
|
-C "${REVIEW_WORKTREE_DIR}" \
|
|
1093
1093
|
--yolo \
|
|
1094
1094
|
"${REVIEWER_PROMPT}" \
|
|
1095
|
-
|
|
1095
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
1096
1096
|
); then
|
|
1097
1097
|
EXIT_CODE=0
|
|
1098
1098
|
else
|
|
@@ -598,7 +598,7 @@ Action: generating QA tests and evidence."
|
|
|
598
598
|
cd "${QA_WORKTREE_DIR}" && timeout "${MAX_RUNTIME}" \
|
|
599
599
|
claude -p "${QA_PROMPT}" \
|
|
600
600
|
--dangerously-skip-permissions \
|
|
601
|
-
|
|
601
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
602
602
|
); then
|
|
603
603
|
PROVIDER_OK=1
|
|
604
604
|
else
|
|
@@ -625,7 +625,7 @@ Action: generating QA tests and evidence."
|
|
|
625
625
|
-C "${QA_WORKTREE_DIR}" \
|
|
626
626
|
--yolo \
|
|
627
627
|
"${QA_PROMPT}" \
|
|
628
|
-
|
|
628
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
629
629
|
); then
|
|
630
630
|
PROVIDER_OK=1
|
|
631
631
|
else
|