@jonit-dev/night-watch-cli 1.7.81 → 1.7.82
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.
- package/dist/cli.js +47 -9
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +2 -1
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/qa.d.ts.map +1 -1
- package/dist/commands/qa.js +2 -1
- package/dist/commands/qa.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +2 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +7 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/slice.d.ts.map +1 -1
- package/dist/commands/slice.js +2 -1
- package/dist/commands/slice.js.map +1 -1
- package/dist/scripts/night-watch-cron.sh +39 -25
- package/dist/scripts/night-watch-helpers.sh +2 -2
- package/dist/web/assets/index-DF99BowV.js +381 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
|
@@ -679,40 +679,54 @@ done
|
|
|
679
679
|
# When the proxy returns 429 and fallbackOnRateLimit is enabled, re-run the
|
|
680
680
|
# same prompt with native Claude (OAuth), bypassing the proxy entirely.
|
|
681
681
|
if [ "${RATE_LIMIT_FALLBACK_TRIGGERED}" = "1" ]; then
|
|
682
|
-
|
|
683
|
-
|
|
682
|
+
PRIMARY_FALLBACK_MODEL="${NW_CLAUDE_PRIMARY_MODEL_ID:-${NW_CLAUDE_MODEL_ID:-claude-sonnet-4-6}}"
|
|
683
|
+
SECONDARY_FALLBACK_MODEL="${NW_CLAUDE_SECONDARY_MODEL_ID:-}"
|
|
684
|
+
|
|
685
|
+
run_native_fallback() {
|
|
686
|
+
local model="$1"
|
|
687
|
+
local log_line_before="$2"
|
|
688
|
+
|
|
689
|
+
log "RATE-LIMIT-FALLBACK: Running native Claude (${model}) prd=${ELIGIBLE_PRD}"
|
|
690
|
+
send_rate_limit_fallback_warning "${model}" "$(basename "${PROJECT_DIR}")"
|
|
691
|
+
|
|
692
|
+
FALLBACK_START_TIME=$(date +%s)
|
|
693
|
+
if (
|
|
694
|
+
cd "${WORKTREE_DIR}" && \
|
|
695
|
+
unset ANTHROPIC_BASE_URL ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN \
|
|
696
|
+
ANTHROPIC_DEFAULT_SONNET_MODEL ANTHROPIC_DEFAULT_OPUS_MODEL && \
|
|
697
|
+
timeout "${SESSION_MAX_RUNTIME}" \
|
|
698
|
+
claude -p "${PROMPT}" \
|
|
699
|
+
--dangerously-skip-permissions \
|
|
700
|
+
--model "${model}" \
|
|
701
|
+
2>&1 | tee -a "${LOG_FILE}"
|
|
702
|
+
); then
|
|
703
|
+
EXIT_CODE=0
|
|
704
|
+
else
|
|
705
|
+
EXIT_CODE=$?
|
|
706
|
+
fi
|
|
684
707
|
|
|
685
|
-
|
|
686
|
-
|
|
708
|
+
FALLBACK_ELAPSED=$(( $(date +%s) - FALLBACK_START_TIME ))
|
|
709
|
+
log "RATE-LIMIT-FALLBACK: Native Claude (${model}) exited with code ${EXIT_CODE} elapsed=${FALLBACK_ELAPSED}s"
|
|
710
|
+
EFFECTIVE_PROVIDER_LABEL="Claude ${model} (fallback)"
|
|
711
|
+
LAST_FALLBACK_LOG_LINE_BEFORE="${log_line_before}"
|
|
712
|
+
}
|
|
687
713
|
|
|
688
714
|
LOG_LINE_BEFORE=$(wc -l < "${LOG_FILE}" 2>/dev/null || echo 0)
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
if (
|
|
692
|
-
cd "${WORKTREE_DIR}" && \
|
|
693
|
-
unset ANTHROPIC_BASE_URL ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN \
|
|
694
|
-
ANTHROPIC_DEFAULT_SONNET_MODEL ANTHROPIC_DEFAULT_OPUS_MODEL && \
|
|
695
|
-
timeout "${SESSION_MAX_RUNTIME}" \
|
|
696
|
-
claude -p "${PROMPT}" \
|
|
697
|
-
--dangerously-skip-permissions \
|
|
698
|
-
--model "${FALLBACK_MODEL}" \
|
|
699
|
-
2>&1 | tee -a "${LOG_FILE}"
|
|
700
|
-
); then
|
|
701
|
-
EXIT_CODE=0
|
|
702
|
-
else
|
|
703
|
-
EXIT_CODE=$?
|
|
704
|
-
fi
|
|
715
|
+
run_native_fallback "${PRIMARY_FALLBACK_MODEL}" "${LOG_LINE_BEFORE}"
|
|
705
716
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
717
|
+
if [ ${EXIT_CODE} -ne 0 ] && [ -n "${SECONDARY_FALLBACK_MODEL}" ] && [ "${SECONDARY_FALLBACK_MODEL}" != "${PRIMARY_FALLBACK_MODEL}" ]; then
|
|
718
|
+
if check_rate_limited "${LOG_FILE}" "${LOG_LINE_BEFORE}"; then
|
|
719
|
+
log "RATE-LIMIT-FALLBACK: Primary native Claude fallback was rate-limited; trying secondary model (${SECONDARY_FALLBACK_MODEL})"
|
|
720
|
+
LOG_LINE_BEFORE=$(wc -l < "${LOG_FILE}" 2>/dev/null || echo 0)
|
|
721
|
+
run_native_fallback "${SECONDARY_FALLBACK_MODEL}" "${LOG_LINE_BEFORE}"
|
|
722
|
+
fi
|
|
723
|
+
fi
|
|
710
724
|
fi
|
|
711
725
|
|
|
712
726
|
# Detect double rate-limit: both proxy AND native Claude exhausted
|
|
713
727
|
DOUBLE_RATE_LIMITED=0
|
|
714
728
|
if [ "${RATE_LIMIT_FALLBACK_TRIGGERED}" = "1" ] && [ ${EXIT_CODE} -ne 0 ]; then
|
|
715
|
-
if check_rate_limited "${LOG_FILE}" "${LOG_LINE_BEFORE}"; then
|
|
729
|
+
if check_rate_limited "${LOG_FILE}" "${LAST_FALLBACK_LOG_LINE_BEFORE:-${LOG_LINE_BEFORE:-0}}"; then
|
|
716
730
|
DOUBLE_RATE_LIMITED=1
|
|
717
731
|
log "RATE-LIMITED: Both proxy and native Claude are rate-limited for ${ELIGIBLE_PRD}"
|
|
718
732
|
fi
|
|
@@ -724,12 +724,12 @@ extract_url_host() {
|
|
|
724
724
|
# Resolve a Claude model hint from env vars.
|
|
725
725
|
# Priority:
|
|
726
726
|
# 1) ANTHROPIC_DEFAULT_SONNET_MODEL / ANTHROPIC_DEFAULT_OPUS_MODEL (providerEnv overrides)
|
|
727
|
-
# 2) NW_CLAUDE_MODEL_ID (resolved from config
|
|
727
|
+
# 2) NW_CLAUDE_PRIMARY_MODEL_ID / NW_CLAUDE_MODEL_ID (resolved from config fallback settings by caller)
|
|
728
728
|
# 3) "default"
|
|
729
729
|
resolve_claude_model_hint() {
|
|
730
730
|
local sonnet="${ANTHROPIC_DEFAULT_SONNET_MODEL:-}"
|
|
731
731
|
local opus="${ANTHROPIC_DEFAULT_OPUS_MODEL:-}"
|
|
732
|
-
local native_model="${NW_CLAUDE_MODEL_ID:-}"
|
|
732
|
+
local native_model="${NW_CLAUDE_PRIMARY_MODEL_ID:-${NW_CLAUDE_MODEL_ID:-}}"
|
|
733
733
|
|
|
734
734
|
if [ -n "${sonnet}" ] && [ -n "${opus}" ]; then
|
|
735
735
|
if [ "${sonnet}" = "${opus}" ]; then
|