@jonit-dev/night-watch-cli 1.8.10-beta.0 → 1.8.10-beta.2
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 +2399 -1364
- package/dist/scripts/night-watch-helpers.sh +26 -0
- package/dist/scripts/night-watch-pr-reviewer-cron.sh +6 -8
- package/dist/scripts/night-watch-qa-cron.sh +3 -3
- package/dist/web/assets/index-BUgI2S1s.js +406 -0
- package/dist/web/assets/index-CkdLFBd7.js +406 -0
- package/dist/web/assets/index-RMfswANB.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/analytics.d.ts +0 -14
- package/dist/commands/analytics.d.ts.map +0 -1
- package/dist/commands/analytics.js +0 -69
- package/dist/commands/analytics.js.map +0 -1
- package/dist/commands/audit.d.ts +0 -19
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -144
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/board.d.ts +0 -9
- package/dist/commands/board.d.ts.map +0 -1
- package/dist/commands/board.js +0 -702
- package/dist/commands/board.js.map +0 -1
- package/dist/commands/cancel.d.ts +0 -46
- package/dist/commands/cancel.d.ts.map +0 -1
- package/dist/commands/cancel.js +0 -239
- package/dist/commands/cancel.js.map +0 -1
- package/dist/commands/cron.d.ts +0 -8
- package/dist/commands/cron.d.ts.map +0 -1
- package/dist/commands/cron.js +0 -134
- package/dist/commands/cron.js.map +0 -1
- package/dist/commands/dashboard/tab-actions.d.ts +0 -10
- package/dist/commands/dashboard/tab-actions.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-actions.js +0 -247
- package/dist/commands/dashboard/tab-actions.js.map +0 -1
- package/dist/commands/dashboard/tab-config.d.ts +0 -21
- package/dist/commands/dashboard/tab-config.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-config.js +0 -873
- package/dist/commands/dashboard/tab-config.js.map +0 -1
- package/dist/commands/dashboard/tab-logs.d.ts +0 -10
- package/dist/commands/dashboard/tab-logs.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-logs.js +0 -202
- package/dist/commands/dashboard/tab-logs.js.map +0 -1
- package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
- package/dist/commands/dashboard/tab-schedules.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-schedules.js +0 -320
- package/dist/commands/dashboard/tab-schedules.js.map +0 -1
- package/dist/commands/dashboard/tab-status.d.ts +0 -32
- package/dist/commands/dashboard/tab-status.d.ts.map +0 -1
- package/dist/commands/dashboard/tab-status.js +0 -424
- package/dist/commands/dashboard/tab-status.js.map +0 -1
- package/dist/commands/dashboard/types.d.ts +0 -42
- package/dist/commands/dashboard/types.d.ts.map +0 -1
- package/dist/commands/dashboard/types.js +0 -5
- package/dist/commands/dashboard/types.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -11
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -242
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -16
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -195
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/history.d.ts +0 -7
- package/dist/commands/history.d.ts.map +0 -1
- package/dist/commands/history.js +0 -49
- package/dist/commands/history.js.map +0 -1
- package/dist/commands/init.d.ts +0 -45
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -777
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/install.d.ts +0 -65
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -405
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -15
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/logs.js +0 -155
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/merge.d.ts +0 -26
- package/dist/commands/merge.d.ts.map +0 -1
- package/dist/commands/merge.js +0 -159
- package/dist/commands/merge.js.map +0 -1
- package/dist/commands/notify.d.ts +0 -7
- package/dist/commands/notify.d.ts.map +0 -1
- package/dist/commands/notify.js +0 -43
- package/dist/commands/notify.js.map +0 -1
- package/dist/commands/plan.d.ts +0 -19
- package/dist/commands/plan.d.ts.map +0 -1
- package/dist/commands/plan.js +0 -88
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/prd-state.d.ts +0 -12
- package/dist/commands/prd-state.d.ts.map +0 -1
- package/dist/commands/prd-state.js +0 -47
- package/dist/commands/prd-state.js.map +0 -1
- package/dist/commands/prd.d.ts +0 -18
- package/dist/commands/prd.d.ts.map +0 -1
- package/dist/commands/prd.js +0 -363
- package/dist/commands/prd.js.map +0 -1
- package/dist/commands/prds.d.ts +0 -13
- package/dist/commands/prds.d.ts.map +0 -1
- package/dist/commands/prds.js +0 -194
- package/dist/commands/prds.js.map +0 -1
- package/dist/commands/prs.d.ts +0 -14
- package/dist/commands/prs.d.ts.map +0 -1
- package/dist/commands/prs.js +0 -104
- package/dist/commands/prs.js.map +0 -1
- package/dist/commands/qa.d.ts +0 -34
- package/dist/commands/qa.d.ts.map +0 -1
- package/dist/commands/qa.js +0 -214
- package/dist/commands/qa.js.map +0 -1
- package/dist/commands/queue.d.ts +0 -8
- package/dist/commands/queue.d.ts.map +0 -1
- package/dist/commands/queue.js +0 -363
- package/dist/commands/queue.js.map +0 -1
- package/dist/commands/resolve.d.ts +0 -26
- package/dist/commands/resolve.d.ts.map +0 -1
- package/dist/commands/resolve.js +0 -186
- package/dist/commands/resolve.js.map +0 -1
- package/dist/commands/retry.d.ts +0 -9
- package/dist/commands/retry.d.ts.map +0 -1
- package/dist/commands/retry.js +0 -71
- package/dist/commands/retry.js.map +0 -1
- package/dist/commands/review.d.ts +0 -82
- package/dist/commands/review.d.ts.map +0 -1
- package/dist/commands/review.js +0 -479
- package/dist/commands/review.js.map +0 -1
- package/dist/commands/run.d.ts +0 -73
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -509
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -19
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -142
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/shared/env-builder.d.ts +0 -49
- package/dist/commands/shared/env-builder.d.ts.map +0 -1
- package/dist/commands/shared/env-builder.js +0 -150
- package/dist/commands/shared/env-builder.js.map +0 -1
- package/dist/commands/slice.d.ts +0 -35
- package/dist/commands/slice.d.ts.map +0 -1
- package/dist/commands/slice.js +0 -316
- package/dist/commands/slice.js.map +0 -1
- package/dist/commands/state.d.ts +0 -8
- package/dist/commands/state.d.ts.map +0 -1
- package/dist/commands/state.js +0 -54
- package/dist/commands/state.js.map +0 -1
- package/dist/commands/status.d.ts +0 -14
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -297
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/summary.d.ts +0 -14
- package/dist/commands/summary.d.ts.map +0 -1
- package/dist/commands/summary.js +0 -193
- package/dist/commands/summary.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -25
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -134
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts +0 -22
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -90
- package/dist/commands/update.js.map +0 -1
- package/dist/web/assets/index-2JY0x_Ij.js +0 -381
- package/dist/web/assets/index-3h8pgmqL.css +0 -1
- package/dist/web/assets/index-B-wbyZq7.js +0 -386
- package/dist/web/assets/index-B1BnOpiO.css +0 -1
- package/dist/web/assets/index-B3CnV08_.js +0 -365
- package/dist/web/assets/index-B5QjuFh9.css +0 -1
- package/dist/web/assets/index-B8FW2ecQ.js +0 -370
- package/dist/web/assets/index-BFxPiKyy.js +0 -381
- package/dist/web/assets/index-BGqNh_Da.js +0 -365
- package/dist/web/assets/index-BIONU0qz.css +0 -1
- package/dist/web/assets/index-B_l_3wnA.js +0 -370
- package/dist/web/assets/index-Ba-4YvTQ.js +0 -365
- package/dist/web/assets/index-Bbb4-39N.js +0 -370
- package/dist/web/assets/index-BdgdShEN.js +0 -365
- package/dist/web/assets/index-BhiC4Z-G.js +0 -381
- package/dist/web/assets/index-BjhCFjZi.js +0 -381
- package/dist/web/assets/index-BlRxmrnQ.css +0 -1
- package/dist/web/assets/index-BqwbXsHS.js +0 -365
- package/dist/web/assets/index-BsC7RT48.css +0 -1
- package/dist/web/assets/index-Bvh8XI8_.js +0 -370
- package/dist/web/assets/index-C01r2ymn.js +0 -381
- package/dist/web/assets/index-C51Rbsmk.js +0 -381
- package/dist/web/assets/index-C7lMNxRE.js +0 -370
- package/dist/web/assets/index-CJLObgsn.js +0 -386
- package/dist/web/assets/index-CLuRf7Zt.js +0 -381
- package/dist/web/assets/index-CM3xFd3e.css +0 -1
- package/dist/web/assets/index-CNkBtDK7.js +0 -370
- package/dist/web/assets/index-CPQbZ1BL.css +0 -1
- package/dist/web/assets/index-CTy5dUDU.css +0 -1
- package/dist/web/assets/index-CU15COKs.js +0 -370
- package/dist/web/assets/index-CiRJZI4z.js +0 -386
- package/dist/web/assets/index-Cp7RYjoy.css +0 -1
- package/dist/web/assets/index-CvPkZOWT.js +0 -381
- package/dist/web/assets/index-CvUk-33B.css +0 -1
- package/dist/web/assets/index-Cvmj-oF6.css +0 -1
- package/dist/web/assets/index-CxE5iQVO.js +0 -381
- package/dist/web/assets/index-D7lZQpFV.js +0 -365
- package/dist/web/assets/index-DAyP4GOi.css +0 -1
- package/dist/web/assets/index-DCG0n8Kg.js +0 -386
- package/dist/web/assets/index-DEEI8cyF.css +0 -1
- package/dist/web/assets/index-DF99BowV.js +0 -381
- package/dist/web/assets/index-DGWsvFj6.css +0 -1
- package/dist/web/assets/index-DGpU39Cp.css +0 -1
- package/dist/web/assets/index-DI4kFgOi.js +0 -370
- package/dist/web/assets/index-DIyTcPw5.css +0 -1
- package/dist/web/assets/index-DTsfDC7m.js +0 -381
- package/dist/web/assets/index-DcgNAi4A.js +0 -386
- package/dist/web/assets/index-DgOAgkZy.css +0 -1
- package/dist/web/assets/index-DnHkqbOa.js +0 -386
- package/dist/web/assets/index-DnR7Idcf.css +0 -1
- package/dist/web/assets/index-DpVirMEe.css +0 -1
- package/dist/web/assets/index-DsYIWZ86.css +0 -1
- package/dist/web/assets/index-DtrDkci5.js +0 -381
- package/dist/web/assets/index-DyjIth5M.js +0 -386
- package/dist/web/assets/index-FwIKfHPL.css +0 -1
- package/dist/web/assets/index-IKrZymWk.css +0 -1
- package/dist/web/assets/index-MA6fM0ab.js +0 -381
- package/dist/web/assets/index-N_QxaSEg.css +0 -1
- package/dist/web/assets/index-OcU-0TCQ.css +0 -1
- package/dist/web/assets/index-OyhrmG-L.js +0 -381
- package/dist/web/assets/index-SQlBKu_s.js +0 -386
- package/dist/web/assets/index-Sv2B60J4.js +0 -370
- package/dist/web/assets/index-Vgyivb5u.js +0 -365
- package/dist/web/assets/index-ZABWMEZR.js +0 -381
- package/dist/web/assets/index-ZE5lOeJp.js +0 -386
- package/dist/web/assets/index-aCHmkAcJ.css +0 -1
- package/dist/web/assets/index-bFijnpuU.js +0 -381
- package/dist/web/assets/index-bUPZgSoZ.css +0 -1
- package/dist/web/assets/index-mz1VIYsP.css +0 -1
- package/dist/web/assets/index-oOp_MFeE.js +0 -376
- package/dist/web/assets/index-rfU713Zm.js +0 -386
- package/dist/web/assets/index-tuNH9gmb.js +0 -448
- package/dist/web/assets/index-viSwHyDD.js +0 -365
- package/dist/web/assets/index-yKEQysks.js +0 -365
|
@@ -587,7 +587,10 @@ cleanup_worktrees() {
|
|
|
587
587
|
local project_dir="${1:?project_dir required}"
|
|
588
588
|
local scope="${2:-}"
|
|
589
589
|
local project_name
|
|
590
|
+
local project_parent
|
|
591
|
+
local registered_worktrees
|
|
590
592
|
project_name=$(basename "${project_dir}")
|
|
593
|
+
project_parent=$(dirname "${project_dir}")
|
|
591
594
|
|
|
592
595
|
# Clear stale worktree registrations first. This fixes cases where a
|
|
593
596
|
# worktree directory was deleted out-of-band (for example by an agent
|
|
@@ -599,6 +602,8 @@ cleanup_worktrees() {
|
|
|
599
602
|
match_token="${scope}"
|
|
600
603
|
fi
|
|
601
604
|
|
|
605
|
+
registered_worktrees=$(git -C "${project_dir}" worktree list --porcelain 2>/dev/null || true)
|
|
606
|
+
|
|
602
607
|
git -C "${project_dir}" worktree list --porcelain 2>/dev/null \
|
|
603
608
|
| grep '^worktree ' \
|
|
604
609
|
| awk '{print $2}' \
|
|
@@ -608,6 +613,27 @@ cleanup_worktrees() {
|
|
|
608
613
|
git -C "${project_dir}" worktree remove --force "${wt}" 2>/dev/null || true
|
|
609
614
|
done || true
|
|
610
615
|
|
|
616
|
+
# Also remove stale worktree directories on disk that Git no longer tracks.
|
|
617
|
+
# These can accumulate after hard crashes or interrupted prompt-driven runs.
|
|
618
|
+
find "${project_parent}" -maxdepth 1 -mindepth 1 -type d -name "${match_token}*" -print0 2>/dev/null \
|
|
619
|
+
| while IFS= read -r -d '' wt; do
|
|
620
|
+
local wt_basename
|
|
621
|
+
wt_basename=$(basename "${wt}")
|
|
622
|
+
|
|
623
|
+
if [ "${wt}" = "${project_dir}" ]; then
|
|
624
|
+
continue
|
|
625
|
+
fi
|
|
626
|
+
if ! printf '%s\n' "${wt_basename}" | grep -Fq "${match_token}"; then
|
|
627
|
+
continue
|
|
628
|
+
fi
|
|
629
|
+
if printf '%s\n' "${registered_worktrees}" | grep -qF "worktree ${wt}"; then
|
|
630
|
+
continue
|
|
631
|
+
fi
|
|
632
|
+
|
|
633
|
+
log "CLEANUP: Removing unregistered stale worktree directory ${wt}"
|
|
634
|
+
rm -rf "${wt}" 2>/dev/null || true
|
|
635
|
+
done || true
|
|
636
|
+
|
|
611
637
|
# Prune again after removals so Git drops any admin entries left behind by
|
|
612
638
|
# force-removal or previously broken worktrees outside Night Watch naming.
|
|
613
639
|
git -C "${project_dir}" worktree prune >/dev/null 2>&1 || true
|
|
@@ -172,7 +172,7 @@ Auto-merge failed: ${auto_merge_failed_summary}"
|
|
|
172
172
|
if [ -n "${final_score}" ]; then
|
|
173
173
|
details="${details}|final_score=${final_score}"
|
|
174
174
|
fi
|
|
175
|
-
log "TIMEOUT: PR reviewer
|
|
175
|
+
log "TIMEOUT: PR reviewer timed out (runtime budget ${MAX_RUNTIME}s)"
|
|
176
176
|
if [ "${WORKER_MODE}" != "1" ]; then
|
|
177
177
|
send_telegram_status_message "🔍 Night Watch Reviewer: timeout" "Project: ${PROJECT_NAME}
|
|
178
178
|
Provider (model): ${PROVIDER_MODEL_DISPLAY}
|
|
@@ -1048,7 +1048,10 @@ for ATTEMPT in $(seq 1 "${TOTAL_ATTEMPTS}"); do
|
|
|
1048
1048
|
|
|
1049
1049
|
ATTEMPT_TIMEOUT="${MAX_RUNTIME}"
|
|
1050
1050
|
if [ -n "${TARGET_PR}" ]; then
|
|
1051
|
-
#
|
|
1051
|
+
# Give each targeted attempt the full remaining runtime budget.
|
|
1052
|
+
# Retries only happen after a quick return (low score / invalid output / rate limit);
|
|
1053
|
+
# a timed-out provider run is not retried, so pre-splitting the budget would
|
|
1054
|
+
# incorrectly cap a 1h review to ~20m on attempt 1.
|
|
1052
1055
|
NOW_TS=$(date +%s)
|
|
1053
1056
|
ELAPSED=$((NOW_TS - RUN_STARTED_AT))
|
|
1054
1057
|
REMAINING_BUDGET=$((MAX_RUNTIME - ELAPSED))
|
|
@@ -1057,12 +1060,7 @@ for ATTEMPT in $(seq 1 "${TOTAL_ATTEMPTS}"); do
|
|
|
1057
1060
|
log "RETRY: Runtime budget exhausted before attempt ${ATTEMPT}"
|
|
1058
1061
|
break
|
|
1059
1062
|
fi
|
|
1060
|
-
|
|
1061
|
-
REMAINING_ATTEMPTS=$((TOTAL_ATTEMPTS - ATTEMPT + 1))
|
|
1062
|
-
ATTEMPT_TIMEOUT=$((REMAINING_BUDGET / REMAINING_ATTEMPTS))
|
|
1063
|
-
if [ "${ATTEMPT_TIMEOUT}" -lt 1 ]; then
|
|
1064
|
-
ATTEMPT_TIMEOUT=1
|
|
1065
|
-
fi
|
|
1063
|
+
ATTEMPT_TIMEOUT="${REMAINING_BUDGET}"
|
|
1066
1064
|
fi
|
|
1067
1065
|
|
|
1068
1066
|
# Recreate worktree if it was removed unexpectedly between attempts.
|
|
@@ -313,7 +313,7 @@ classify_qa_comment_outcome() {
|
|
|
313
313
|
pr_has_qa_generated_files() {
|
|
314
314
|
local pr_number="${1:?PR number required}"
|
|
315
315
|
gh pr view "${pr_number}" --json files --jq '.files[]?.path' 2>/dev/null \
|
|
316
|
-
| grep -Eq '^(qa-artifacts/|tests/.*/qa
|
|
316
|
+
| grep -Eq '^(qa-artifacts/|tests/.*/qa/|(.*/)?(__tests__|tests?|spec|specs|e2e|playwright)/.*\.(test|spec)\.[[:alnum:]]+$|(.*/)?[^/]+\.(test|spec)\.[[:alnum:]]+$)'
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
provider_output_looks_invalid() {
|
|
@@ -341,7 +341,7 @@ validate_qa_evidence() {
|
|
|
341
341
|
fi
|
|
342
342
|
|
|
343
343
|
if ! pr_has_qa_generated_files "${pr_number}"; then
|
|
344
|
-
log "WARN-QA-EVIDENCE: PR #${pr_number} has QA marker comment but no qa-artifacts/ or
|
|
344
|
+
log "WARN-QA-EVIDENCE: PR #${pr_number} has QA marker comment but no qa-artifacts/ or generated test files in standard locations"
|
|
345
345
|
return 2
|
|
346
346
|
fi
|
|
347
347
|
|
|
@@ -617,7 +617,7 @@ for pr_ref in ${PRS_NEEDING_QA}; do
|
|
|
617
617
|
fi
|
|
618
618
|
if [ ${QA_EVIDENCE_STATUS} -eq 2 ]; then
|
|
619
619
|
WARNING_PRS_CSV=$(append_csv "${WARNING_PRS_CSV}" "#${pr_num}")
|
|
620
|
-
QA_WARNING_SUMMARY="${QA_WARNING_SUMMARY}${QA_WARNING_SUMMARY:+$'\n'}#${pr_num}: no qa-artifacts/ or
|
|
620
|
+
QA_WARNING_SUMMARY="${QA_WARNING_SUMMARY}${QA_WARNING_SUMMARY:+$'\n'}#${pr_num}: no qa-artifacts/ or generated test files in standard locations"
|
|
621
621
|
log "QA: PR #${pr_num} — provider completed with warning-only QA evidence"
|
|
622
622
|
elif [ ${QA_EVIDENCE_STATUS} -ne 0 ]; then
|
|
623
623
|
FAILED_AUTOMATION_PRS_CSV=$(append_csv "${FAILED_AUTOMATION_PRS_CSV}" "#${pr_num}")
|