@jonit-dev/night-watch-cli 1.7.27 → 1.7.29

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.
Files changed (72) hide show
  1. package/dist/shared/types.d.ts +1 -0
  2. package/dist/shared/types.d.ts.map +1 -1
  3. package/dist/src/cli.js +3 -0
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/commands/audit.d.ts +19 -0
  6. package/dist/src/commands/audit.d.ts.map +1 -0
  7. package/dist/src/commands/audit.js +98 -0
  8. package/dist/src/commands/audit.js.map +1 -0
  9. package/dist/src/commands/dashboard.js +1 -1
  10. package/dist/src/commands/dashboard.js.map +1 -1
  11. package/dist/src/commands/init.d.ts.map +1 -1
  12. package/dist/src/commands/init.js +1 -6
  13. package/dist/src/commands/init.js.map +1 -1
  14. package/dist/src/commands/install.d.ts +4 -0
  15. package/dist/src/commands/install.d.ts.map +1 -1
  16. package/dist/src/commands/install.js +25 -20
  17. package/dist/src/commands/install.js.map +1 -1
  18. package/dist/src/commands/logs.js +3 -3
  19. package/dist/src/commands/logs.js.map +1 -1
  20. package/dist/src/commands/prs.js +2 -2
  21. package/dist/src/commands/prs.js.map +1 -1
  22. package/dist/src/commands/review.d.ts.map +1 -1
  23. package/dist/src/commands/review.js +13 -5
  24. package/dist/src/commands/review.js.map +1 -1
  25. package/dist/src/commands/uninstall.d.ts.map +1 -1
  26. package/dist/src/commands/uninstall.js +3 -22
  27. package/dist/src/commands/uninstall.js.map +1 -1
  28. package/dist/src/config.d.ts.map +1 -1
  29. package/dist/src/config.js +30 -1
  30. package/dist/src/config.js.map +1 -1
  31. package/dist/src/constants.d.ts +10 -3
  32. package/dist/src/constants.d.ts.map +1 -1
  33. package/dist/src/constants.js +15 -2
  34. package/dist/src/constants.js.map +1 -1
  35. package/dist/src/server/index.d.ts.map +1 -1
  36. package/dist/src/server/index.js +50 -3
  37. package/dist/src/server/index.js.map +1 -1
  38. package/dist/src/slack/client.d.ts +3 -2
  39. package/dist/src/slack/client.d.ts.map +1 -1
  40. package/dist/src/slack/client.js +5 -6
  41. package/dist/src/slack/client.js.map +1 -1
  42. package/dist/src/slack/deliberation.d.ts +13 -1
  43. package/dist/src/slack/deliberation.d.ts.map +1 -1
  44. package/dist/src/slack/deliberation.js +585 -71
  45. package/dist/src/slack/deliberation.js.map +1 -1
  46. package/dist/src/slack/interaction-listener.d.ts +27 -9
  47. package/dist/src/slack/interaction-listener.d.ts.map +1 -1
  48. package/dist/src/slack/interaction-listener.js +357 -197
  49. package/dist/src/slack/interaction-listener.js.map +1 -1
  50. package/dist/src/storage/repositories/sqlite/agent-persona-repository.d.ts +3 -2
  51. package/dist/src/storage/repositories/sqlite/agent-persona-repository.d.ts.map +1 -1
  52. package/dist/src/storage/repositories/sqlite/agent-persona-repository.js +14 -11
  53. package/dist/src/storage/repositories/sqlite/agent-persona-repository.js.map +1 -1
  54. package/dist/src/types.d.ts +13 -0
  55. package/dist/src/types.d.ts.map +1 -1
  56. package/dist/src/utils/notify.d.ts.map +1 -1
  57. package/dist/src/utils/notify.js +5 -1
  58. package/dist/src/utils/notify.js.map +1 -1
  59. package/dist/src/utils/status-data.d.ts +2 -2
  60. package/dist/src/utils/status-data.d.ts.map +1 -1
  61. package/dist/src/utils/status-data.js +78 -123
  62. package/dist/src/utils/status-data.js.map +1 -1
  63. package/package.json +3 -1
  64. package/scripts/night-watch-audit-cron.sh +149 -0
  65. package/scripts/night-watch-cron.sh +33 -14
  66. package/scripts/night-watch-helpers.sh +10 -2
  67. package/scripts/night-watch-pr-reviewer-cron.sh +224 -18
  68. package/web/dist/assets/index-BiJf9LFT.js +458 -0
  69. package/web/dist/assets/index-OpSgvsYu.css +1 -0
  70. package/web/dist/index.html +2 -2
  71. package/web/dist/assets/index-CndIPm_F.js +0 -473
  72. package/web/dist/assets/index-w6Q6gxCS.css +0 -1
@@ -6,7 +6,7 @@ import { createHash } from "crypto";
6
6
  import { execSync } from "child_process";
7
7
  import * as fs from "fs";
8
8
  import * as path from "path";
9
- import { CLAIM_FILE_EXTENSION, LOCK_FILE_PREFIX, LOG_DIR, LOG_FILE_NAMES } from "../constants.js";
9
+ import { CLAIM_FILE_EXTENSION, LOCK_FILE_PREFIX, LOG_DIR, QA_LOG_NAME } from "../constants.js";
10
10
  import { getPrdStatesForProject } from "./prd-states.js";
11
11
  import { generateMarker, getEntries, getProjectEntries } from "./crontab.js";
12
12
  /**
@@ -49,10 +49,10 @@ export function reviewerLockPath(projectDir) {
49
49
  return `${LOCK_FILE_PREFIX}pr-reviewer-${projectRuntimeKey(projectDir)}.lock`;
50
50
  }
51
51
  /**
52
- * Compute the lock file path for the QA process of a given project directory.
52
+ * Compute the lock file path for the code auditor of a given project directory.
53
53
  */
54
- export function qaLockPath(projectDir) {
55
- return `${LOCK_FILE_PREFIX}qa-${projectRuntimeKey(projectDir)}.lock`;
54
+ export function auditLockPath(projectDir) {
55
+ return `${LOCK_FILE_PREFIX}audit-${projectRuntimeKey(projectDir)}.lock`;
56
56
  }
57
57
  /**
58
58
  * Check if a process with the given PID is running
@@ -316,113 +316,82 @@ export function countOpenPRs(projectDir, branchPatterns) {
316
316
  * Derive CI status from gh statusCheckRollup data
317
317
  * Supports both CheckRun (status: "COMPLETED", "IN_PROGRESS", etc.)
318
318
  * and StatusContext (state: "SUCCESS", "FAILURE", "PENDING", etc.) types
319
- *
320
- * Status derivation priority:
321
- * 1. If any check has FAILURE, ERROR, CANCELLED, or TIMED_OUT conclusion → "fail"
322
- * 2. If all checks have SUCCESS or NEUTRAL conclusion → "pass"
323
- * 3. If any check has IN_PROGRESS, QUEUED, or PENDING status → "pending"
324
- * 4. Otherwise → "unknown"
319
+ * Also handles nested contexts array structures from some GitHub API versions
325
320
  */
326
321
  function deriveCiStatus(checks) {
327
- // Handle null, undefined, or empty array
328
- if (!checks || !Array.isArray(checks) || checks.length === 0) {
329
- if (process.env.DEBUG_PR_DATA === "1") {
330
- console.log("[DEBUG] deriveCiStatus: No checks available, returning 'unknown'");
331
- }
322
+ if (!checks || checks.length === 0)
332
323
  return "unknown";
324
+ // Flatten any nested contexts arrays (GitHub may wrap checks in a contexts array)
325
+ const flattenedChecks = [];
326
+ for (const check of checks) {
327
+ // Check if this is a wrapper with nested contexts
328
+ if (check.contexts && Array.isArray(check.contexts) && check.contexts.length > 0) {
329
+ // Extract checks from nested contexts
330
+ for (const ctx of check.contexts) {
331
+ if (typeof ctx === "object" && ctx !== null) {
332
+ flattenedChecks.push(ctx);
333
+ }
334
+ }
335
+ }
336
+ else {
337
+ // Regular check, use as-is
338
+ flattenedChecks.push(check);
339
+ }
333
340
  }
341
+ if (flattenedChecks.length === 0)
342
+ return "unknown";
343
+ // Debug logging when DEBUG_PR_DATA is set
334
344
  if (process.env.DEBUG_PR_DATA === "1") {
335
- console.log("[DEBUG] deriveCiStatus: Processing", checks.length, "checks");
336
- console.log("[DEBUG] deriveCiStatus: checks =", JSON.stringify(checks, null, 2));
345
+ console.error("[DEBUG] deriveCiStatus input checks:", JSON.stringify(checks, null, 2));
346
+ console.error("[DEBUG] deriveCiStatus flattened checks:", JSON.stringify(flattenedChecks, null, 2));
337
347
  }
338
- // Normalize check data - handle both CheckRun and StatusContext formats
339
- const normalizedChecks = checks.map((c) => ({
340
- conclusion: c.conclusion?.toUpperCase() ?? null,
341
- status: c.status?.toUpperCase() ?? null,
342
- state: c.state?.toUpperCase() ?? null,
343
- }));
344
348
  // Check for failures in CheckRun conclusion or StatusContext state
345
- // FAILURE, ERROR, CANCELLED, TIMED_OUT all count as failures
346
- const hasFailure = normalizedChecks.some((c) => {
347
- const failConclusions = ["FAILURE", "ERROR", "CANCELLED", "TIMED_OUT", "ACTION_REQUIRED"];
348
- const failStates = ["FAILURE", "ERROR"];
349
- return ((c.conclusion !== null && failConclusions.includes(c.conclusion)) ||
350
- (c.state !== null && failStates.includes(c.state)));
349
+ const hasFailure = flattenedChecks.some((c) => {
350
+ const conclusion = c.conclusion?.toUpperCase();
351
+ const state = c.state?.toUpperCase();
352
+ return (conclusion === "FAILURE" ||
353
+ conclusion === "ERROR" ||
354
+ conclusion === "CANCELLED" ||
355
+ conclusion === "TIMED_OUT" ||
356
+ state === "FAILURE" ||
357
+ state === "ERROR");
351
358
  });
352
- if (hasFailure) {
353
- if (process.env.DEBUG_PR_DATA === "1") {
354
- console.log("[DEBUG] deriveCiStatus: Found failure, returning 'fail'");
355
- }
359
+ if (hasFailure)
356
360
  return "fail";
357
- }
358
- // Check if any checks are still pending/in-progress
359
- const hasPending = normalizedChecks.some((c) => {
360
- const pendingStatuses = ["IN_PROGRESS", "QUEUED", "PENDING", "WAITING", "REQUESTED"];
361
- const pendingStates = ["PENDING", "IN_PROGRESS"];
362
- return ((c.status !== null && pendingStatuses.includes(c.status)) ||
363
- (c.state !== null && pendingStates.includes(c.state)));
361
+ // Check if all checks are complete (CheckRun uses status, StatusContext uses state)
362
+ const allComplete = flattenedChecks.every((c) => {
363
+ const status = c.status?.toUpperCase();
364
+ const state = c.state?.toUpperCase();
365
+ const conclusion = c.conclusion?.toUpperCase();
366
+ // CheckRun: status === "COMPLETED" or conclusion === "SUCCESS"/"FAILURE"
367
+ // StatusContext: state === "SUCCESS" or "FAILURE" (not PENDING)
368
+ return (status === "COMPLETED" ||
369
+ state === "SUCCESS" ||
370
+ state === "FAILURE" ||
371
+ conclusion === "SUCCESS" ||
372
+ conclusion === "FAILURE" ||
373
+ conclusion === "NEUTRAL" ||
374
+ conclusion === "SKIPPED");
364
375
  });
365
- if (hasPending) {
366
- if (process.env.DEBUG_PR_DATA === "1") {
367
- console.log("[DEBUG] deriveCiStatus: Found pending checks, returning 'pending'");
368
- }
369
- return "pending";
370
- }
371
- // Check if all checks are complete (success or neutral)
372
- const allComplete = normalizedChecks.every((c) => {
373
- const completeConclusions = ["SUCCESS", "NEUTRAL", "SKIPPED"];
374
- const completeStatuses = ["COMPLETED"];
375
- const completeStates = ["SUCCESS"];
376
- // If there's a conclusion and it's a success/neutral state
377
- if (c.conclusion !== null && completeConclusions.includes(c.conclusion)) {
378
- return true;
379
- }
380
- // If there's a status and it's completed
381
- if (c.status !== null && completeStatuses.includes(c.status)) {
382
- return true;
383
- }
384
- // If there's a state and it's success
385
- if (c.state !== null && completeStates.includes(c.state)) {
386
- return true;
387
- }
388
- return false;
389
- });
390
- if (allComplete) {
391
- if (process.env.DEBUG_PR_DATA === "1") {
392
- console.log("[DEBUG] deriveCiStatus: All checks complete, returning 'pass'");
393
- }
376
+ if (allComplete)
394
377
  return "pass";
395
- }
396
- // Default to unknown if we can't determine status
397
- if (process.env.DEBUG_PR_DATA === "1") {
398
- console.log("[DEBUG] deriveCiStatus: Could not determine status, returning 'unknown'");
399
- }
400
- return "unknown";
378
+ return "pending";
401
379
  }
402
380
  /**
403
381
  * Derive review score from gh reviewDecision field
404
382
  * Maps GitHub review decisions to a numeric score (0-100)
405
383
  * Returns null if no review has been submitted or review is required
406
- *
407
- * GitHub reviewDecision values:
408
- * - "APPROVED" — PR has been approved by required reviewers → 100
409
- * - "CHANGES_REQUESTED" — Reviewer requested changes → 0
410
- * - "REVIEW_REQUIRED" — PR requires review but hasn't been reviewed yet → null
411
- * - "" / null / undefined — No review required or not yet reviewed → null
412
384
  */
413
385
  function deriveReviewScore(reviewDecision) {
414
- // Handle null, undefined, or empty string (meaning no review yet)
415
- if (reviewDecision === null || reviewDecision === undefined || reviewDecision === "") {
416
- if (process.env.DEBUG_PR_DATA === "1") {
417
- console.log("[DEBUG] deriveReviewScore: No review decision, returning null");
418
- }
419
- return null;
420
- }
421
- const normalizedDecision = reviewDecision.toUpperCase();
386
+ // Debug logging when DEBUG_PR_DATA is set
422
387
  if (process.env.DEBUG_PR_DATA === "1") {
423
- console.log("[DEBUG] deriveReviewScore: reviewDecision =", reviewDecision, "-> normalized:", normalizedDecision);
388
+ console.error("[DEBUG] deriveReviewScore input:", JSON.stringify(reviewDecision));
424
389
  }
425
- switch (normalizedDecision) {
390
+ // reviewDecision can be null, undefined, or empty string (meaning no review yet)
391
+ if (!reviewDecision || reviewDecision === "")
392
+ return null;
393
+ const decision = String(reviewDecision).toUpperCase();
394
+ switch (decision) {
426
395
  case "APPROVED":
427
396
  return 100;
428
397
  case "CHANGES_REQUESTED":
@@ -430,9 +399,9 @@ function deriveReviewScore(reviewDecision) {
430
399
  case "REVIEW_REQUIRED":
431
400
  return null;
432
401
  default:
433
- // Handle any unknown values gracefully
402
+ // Log unexpected values for debugging
434
403
  if (process.env.DEBUG_PR_DATA === "1") {
435
- console.log("[DEBUG] deriveReviewScore: Unknown review decision:", reviewDecision);
404
+ console.error(`[DEBUG] deriveReviewScore: unexpected value '${reviewDecision}'`);
436
405
  }
437
406
  return null;
438
407
  }
@@ -458,28 +427,21 @@ export function collectPrInfo(projectDir, branchPatterns) {
458
427
  encoding: "utf-8",
459
428
  stdio: ["pipe", "pipe", "pipe"],
460
429
  });
430
+ // Debug logging when DEBUG_PR_DATA is set
461
431
  if (process.env.DEBUG_PR_DATA === "1") {
462
- console.log("[DEBUG] collectPrInfo: Raw gh output:", output);
432
+ console.error("[DEBUG] Raw gh pr list output:", output);
463
433
  }
464
434
  const prs = JSON.parse(output);
465
- if (process.env.DEBUG_PR_DATA === "1") {
466
- console.log("[DEBUG] collectPrInfo: Parsed", prs.length, "PRs from gh CLI");
467
- }
468
435
  return prs
469
- .filter((pr) => {
470
- const matches = branchPatterns.some((pattern) => pr.headRefName.startsWith(pattern));
471
- if (process.env.DEBUG_PR_DATA === "1" && !matches) {
472
- console.log("[DEBUG] collectPrInfo: Filtering out PR #" + pr.number + " (" + pr.headRefName + ") - doesn't match branch patterns");
473
- }
474
- return matches;
475
- })
436
+ .filter((pr) => branchPatterns.some((pattern) => pr.headRefName.startsWith(pattern)))
476
437
  .map((pr) => {
438
+ // Debug log each PR's statusCheckRollup and reviewDecision
477
439
  if (process.env.DEBUG_PR_DATA === "1") {
478
- console.log("[DEBUG] collectPrInfo: Processing PR #" + pr.number);
479
- console.log("[DEBUG] collectPrInfo: statusCheckRollup:", JSON.stringify(pr.statusCheckRollup));
480
- console.log("[DEBUG] collectPrInfo: reviewDecision:", JSON.stringify(pr.reviewDecision));
440
+ console.error(`[DEBUG] PR #${pr.number}:`);
441
+ console.error(`[DEBUG] statusCheckRollup:`, JSON.stringify(pr.statusCheckRollup, null, 2));
442
+ console.error(`[DEBUG] reviewDecision:`, JSON.stringify(pr.reviewDecision));
481
443
  }
482
- const result = {
444
+ return {
483
445
  number: pr.number,
484
446
  title: pr.title,
485
447
  branch: pr.headRefName,
@@ -487,16 +449,9 @@ export function collectPrInfo(projectDir, branchPatterns) {
487
449
  ciStatus: deriveCiStatus(pr.statusCheckRollup),
488
450
  reviewScore: deriveReviewScore(pr.reviewDecision),
489
451
  };
490
- if (process.env.DEBUG_PR_DATA === "1") {
491
- console.log("[DEBUG] collectPrInfo: -> ciStatus:", result.ciStatus, ", reviewScore:", result.reviewScore);
492
- }
493
- return result;
494
452
  });
495
453
  }
496
- catch (error) {
497
- if (process.env.DEBUG_PR_DATA === "1") {
498
- console.log("[DEBUG] collectPrInfo: Error:", error instanceof Error ? error.message : String(error));
499
- }
454
+ catch {
500
455
  return [];
501
456
  }
502
457
  }
@@ -532,11 +487,13 @@ export function getLogInfo(logPath, lastLines = 5) {
532
487
  * Collect log info as ILogInfo items
533
488
  */
534
489
  export function collectLogInfo(projectDir) {
535
- const logNames = ["executor", "reviewer", "qa"];
536
- return logNames.map((name) => {
537
- // Map logical name (executor/reviewer) to actual file name (night-watch/night-watch-pr-reviewer)
538
- const fileName = LOG_FILE_NAMES[name] || name;
539
- const logPath = path.join(projectDir, LOG_DIR, `${fileName}.log`);
490
+ const logEntries = [
491
+ { name: "executor", fileName: "executor.log" },
492
+ { name: "reviewer", fileName: "reviewer.log" },
493
+ { name: "qa", fileName: `${QA_LOG_NAME}.log` },
494
+ ];
495
+ return logEntries.map(({ name, fileName }) => {
496
+ const logPath = path.join(projectDir, LOG_DIR, fileName);
540
497
  const exists = fs.existsSync(logPath);
541
498
  return {
542
499
  name,
@@ -565,11 +522,9 @@ export function fetchStatusSnapshot(projectDir, config) {
565
522
  const projectName = getProjectName(projectDir);
566
523
  const executorLock = checkLockFile(executorLockPath(projectDir));
567
524
  const reviewerLock = checkLockFile(reviewerLockPath(projectDir));
568
- const qaLock = checkLockFile(qaLockPath(projectDir));
569
525
  const processes = [
570
526
  { name: "executor", running: executorLock.running, pid: executorLock.pid },
571
527
  { name: "reviewer", running: reviewerLock.running, pid: reviewerLock.pid },
572
- { name: "qa", running: qaLock.running, pid: qaLock.pid },
573
528
  ];
574
529
  const prds = collectPrdInfo(projectDir, config.prdDir, config.maxRuntime);
575
530
  const prs = collectPrInfo(projectDir, config.branchPatterns);
@@ -1 +1 @@
1
- {"version":3,"file":"status-data.js","sourceRoot":"","sources":["../../../src/utils/status-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-data.js","sourceRoot":"","sources":["../../../src/utils/status-data.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jonit-dev/night-watch-cli",
3
- "version": "1.7.27",
3
+ "version": "1.7.29",
4
4
  "description": "Autonomous PRD execution using AI Provider CLIs + cron",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,6 +18,7 @@
18
18
  "build:web": "cd web && yarn install && yarn build",
19
19
  "build:cli": "tsc && tsc-alias",
20
20
  "test": "vitest run",
21
+ "test:coverage": "vitest run --coverage",
21
22
  "dev": "tsx src/cli.ts",
22
23
  "dev:sandbox": "NIGHT_WATCH_HOME=/tmp/nw-sandbox tsx src/cli.ts",
23
24
  "dev:sandbox:inspect": "sqlite3 /tmp/nw-sandbox/state.db",
@@ -78,6 +79,7 @@
78
79
  "@types/express": "^5.0.6",
79
80
  "@types/node": "^22.0.0",
80
81
  "@types/supertest": "^6.0.3",
82
+ "@vitest/coverage-v8": "^4.0.0",
81
83
  "concurrently": "^9.2.1",
82
84
  "eslint": "^10.0.0",
83
85
  "supertest": "^7.2.2",
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # Night Watch Audit Cron Runner (project-agnostic)
5
+ # Usage: night-watch-audit-cron.sh /path/to/project
6
+ #
7
+ # NOTE: This script expects environment variables to be set by the caller.
8
+ # The Node.js CLI will inject config values via environment variables.
9
+ # Required env vars (with defaults shown):
10
+ # NW_AUDIT_MAX_RUNTIME=1800 - Maximum runtime in seconds (30 minutes)
11
+ # NW_PROVIDER_CMD=claude - AI provider CLI to use (claude, codex, etc.)
12
+ # NW_DRY_RUN=0 - Set to 1 for dry-run mode (prints diagnostics only)
13
+
14
+ PROJECT_DIR="${1:?Usage: $0 /path/to/project}"
15
+ PROJECT_NAME=$(basename "${PROJECT_DIR}")
16
+ LOG_DIR="${PROJECT_DIR}/logs"
17
+ LOG_FILE="${LOG_DIR}/audit.log"
18
+ REPORT_FILE="${PROJECT_DIR}/logs/audit-report.md"
19
+ MAX_RUNTIME="${NW_AUDIT_MAX_RUNTIME:-1800}" # 30 minutes
20
+ MAX_LOG_SIZE="524288" # 512 KB
21
+ PROVIDER_CMD="${NW_PROVIDER_CMD:-claude}"
22
+
23
+ # Ensure NVM / Node / Claude are on PATH
24
+ export NVM_DIR="${HOME}/.nvm"
25
+ [ -s "${NVM_DIR}/nvm.sh" ] && . "${NVM_DIR}/nvm.sh"
26
+
27
+ mkdir -p "${LOG_DIR}"
28
+
29
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
30
+ # shellcheck source=night-watch-helpers.sh
31
+ source "${SCRIPT_DIR}/night-watch-helpers.sh"
32
+ PROJECT_RUNTIME_KEY=$(project_runtime_key "${PROJECT_DIR}")
33
+ # NOTE: Lock file path must match auditLockPath() in src/utils/status-data.ts
34
+ LOCK_FILE="/tmp/night-watch-audit-${PROJECT_RUNTIME_KEY}.lock"
35
+
36
+ emit_result() {
37
+ local status="${1:?status required}"
38
+ local details="${2:-}"
39
+ if [ -n "${details}" ]; then
40
+ echo "NIGHT_WATCH_RESULT:${status}|${details}"
41
+ else
42
+ echo "NIGHT_WATCH_RESULT:${status}"
43
+ fi
44
+ }
45
+
46
+ # Validate provider
47
+ if ! validate_provider "${PROVIDER_CMD}"; then
48
+ echo "ERROR: Unknown provider: ${PROVIDER_CMD}" >&2
49
+ exit 1
50
+ fi
51
+
52
+ rotate_log
53
+
54
+ if ! acquire_lock "${LOCK_FILE}"; then
55
+ emit_result "skip_locked"
56
+ exit 0
57
+ fi
58
+
59
+ # Dry-run mode: print diagnostics and exit
60
+ if [ "${NW_DRY_RUN:-0}" = "1" ]; then
61
+ echo "=== Dry Run: Code Auditor ==="
62
+ echo "Provider: ${PROVIDER_CMD}"
63
+ echo "Max Runtime: ${MAX_RUNTIME}s"
64
+ echo "Report File: ${REPORT_FILE}"
65
+ emit_result "skip_dry_run"
66
+ exit 0
67
+ fi
68
+
69
+ if [ -n "${NW_DEFAULT_BRANCH:-}" ]; then
70
+ DEFAULT_BRANCH="${NW_DEFAULT_BRANCH}"
71
+ else
72
+ DEFAULT_BRANCH=$(detect_default_branch "${PROJECT_DIR}")
73
+ fi
74
+
75
+ AUDIT_WORKTREE_BASENAME="${PROJECT_NAME}-nw-audit-runner"
76
+ AUDIT_WORKTREE_DIR="$(dirname "${PROJECT_DIR}")/${AUDIT_WORKTREE_BASENAME}"
77
+
78
+ cleanup_worktrees "${PROJECT_DIR}" "${AUDIT_WORKTREE_BASENAME}"
79
+
80
+ if ! prepare_detached_worktree "${PROJECT_DIR}" "${AUDIT_WORKTREE_DIR}" "${DEFAULT_BRANCH}" "${LOG_FILE}"; then
81
+ log "FAIL: Unable to create isolated audit worktree ${AUDIT_WORKTREE_DIR}"
82
+ exit 1
83
+ fi
84
+
85
+ # Ensure the logs dir exists inside the worktree so the provider can write the report
86
+ mkdir -p "${AUDIT_WORKTREE_DIR}/logs"
87
+
88
+ log "START: Running code audit for ${PROJECT_NAME} (provider: ${PROVIDER_CMD})"
89
+
90
+ EXIT_CODE=0
91
+
92
+ case "${PROVIDER_CMD}" in
93
+ claude)
94
+ if (
95
+ cd "${AUDIT_WORKTREE_DIR}" && timeout "${MAX_RUNTIME}" \
96
+ claude -p "/night-watch-audit" \
97
+ --dangerously-skip-permissions \
98
+ >> "${LOG_FILE}" 2>&1
99
+ ); then
100
+ EXIT_CODE=0
101
+ else
102
+ EXIT_CODE=$?
103
+ fi
104
+ ;;
105
+ codex)
106
+ if (
107
+ cd "${AUDIT_WORKTREE_DIR}" && timeout "${MAX_RUNTIME}" \
108
+ codex --quiet \
109
+ --yolo \
110
+ --prompt "$(cat "${AUDIT_WORKTREE_DIR}/.claude/commands/night-watch-audit.md")" \
111
+ >> "${LOG_FILE}" 2>&1
112
+ ); then
113
+ EXIT_CODE=0
114
+ else
115
+ EXIT_CODE=$?
116
+ fi
117
+ ;;
118
+ *)
119
+ log "ERROR: Unknown provider: ${PROVIDER_CMD}"
120
+ exit 1
121
+ ;;
122
+ esac
123
+
124
+ # Copy report back to project dir (if it was written in the worktree)
125
+ WORKTREE_REPORT="${AUDIT_WORKTREE_DIR}/logs/audit-report.md"
126
+ if [ -f "${WORKTREE_REPORT}" ]; then
127
+ cp "${WORKTREE_REPORT}" "${REPORT_FILE}"
128
+ log "INFO: Audit report copied to ${REPORT_FILE}"
129
+ fi
130
+
131
+ cleanup_worktrees "${PROJECT_DIR}" "${AUDIT_WORKTREE_BASENAME}"
132
+
133
+ if [ "${EXIT_CODE}" -eq 0 ]; then
134
+ if [ -f "${REPORT_FILE}" ] && grep -q "NO_ISSUES_FOUND" "${REPORT_FILE}" 2>/dev/null; then
135
+ log "DONE: Audit complete — no actionable issues found"
136
+ emit_result "skip_clean"
137
+ else
138
+ log "DONE: Audit complete — report written to ${REPORT_FILE}"
139
+ emit_result "success_audit"
140
+ fi
141
+ elif [ "${EXIT_CODE}" -eq 124 ]; then
142
+ log "TIMEOUT: Audit killed after ${MAX_RUNTIME}s"
143
+ emit_result "timeout"
144
+ else
145
+ log "FAIL: Audit exited with code ${EXIT_CODE}"
146
+ emit_result "failure"
147
+ fi
148
+
149
+ exit "${EXIT_CODE}"
@@ -21,7 +21,7 @@ else
21
21
  PRD_DIR="${PROJECT_DIR}/${PRD_DIR_REL}"
22
22
  fi
23
23
  LOG_DIR="${PROJECT_DIR}/logs"
24
- LOG_FILE="${LOG_DIR}/night-watch.log"
24
+ LOG_FILE="${LOG_DIR}/executor.log"
25
25
  MAX_RUNTIME="${NW_MAX_RUNTIME:-7200}" # 2 hours
26
26
  MAX_LOG_SIZE="524288" # 512 KB
27
27
  PROVIDER_CMD="${NW_PROVIDER_CMD:-claude}"
@@ -96,25 +96,44 @@ if [ "${NW_BOARD_ENABLED:-}" = "true" ]; then
96
96
  log "ERROR: Cannot resolve night-watch CLI for board mode"
97
97
  exit 1
98
98
  fi
99
- ISSUE_JSON=$(find_eligible_board_issue)
100
- if [ -z "${ISSUE_JSON}" ]; then
101
- log "SKIP: No eligible issues in Ready column (board mode)"
102
- emit_result "skip_no_eligible_prd"
103
- exit 0
99
+
100
+ if [ -n "${NW_TARGET_ISSUE:-}" ]; then
101
+ # Targeted issue pickup: use specified issue directly (already "In Progress" from Slack trigger)
102
+ ISSUE_NUMBER="${NW_TARGET_ISSUE}"
103
+ log "BOARD: Using targeted issue #${ISSUE_NUMBER} (from NW_TARGET_ISSUE)"
104
+ ISSUE_JSON=$(gh issue view "${ISSUE_NUMBER}" --json number,title,body 2>/dev/null || true)
105
+ if [ -z "${ISSUE_JSON}" ]; then
106
+ log "ERROR: Cannot fetch issue #${ISSUE_NUMBER} via gh"
107
+ exit 1
108
+ fi
109
+ ISSUE_TITLE_RAW=$(printf '%s' "${ISSUE_JSON}" | jq -r '.title // empty' 2>/dev/null || true)
110
+ ISSUE_BODY=$(printf '%s' "${ISSUE_JSON}" | jq -r '.body // empty' 2>/dev/null || true)
111
+ else
112
+ ISSUE_JSON=$(find_eligible_board_issue)
113
+ if [ -z "${ISSUE_JSON}" ]; then
114
+ log "SKIP: No eligible issues in Ready column (board mode)"
115
+ emit_result "skip_no_eligible_prd"
116
+ exit 0
117
+ fi
118
+ ISSUE_NUMBER=$(printf '%s' "${ISSUE_JSON}" | jq -r '.number // empty' 2>/dev/null || true)
119
+ ISSUE_TITLE_RAW=$(printf '%s' "${ISSUE_JSON}" | jq -r '.title // empty' 2>/dev/null || true)
120
+ ISSUE_BODY=$(printf '%s' "${ISSUE_JSON}" | jq -r '.body // empty' 2>/dev/null || true)
121
+ if [ -z "${ISSUE_NUMBER}" ]; then
122
+ log "ERROR: Board mode: failed to parse issue number from JSON"
123
+ exit 1
124
+ fi
125
+ # Move issue to In Progress (claim it on the board)
126
+ "${NW_CLI}" board move-issue "${ISSUE_NUMBER}" --column "In Progress" 2>>"${LOG_FILE}" || \
127
+ log "WARN: Failed to move issue #${ISSUE_NUMBER} to In Progress"
104
128
  fi
105
- ISSUE_NUMBER=$(printf '%s' "${ISSUE_JSON}" | jq -r '.number // empty' 2>/dev/null || true)
106
- ISSUE_TITLE_RAW=$(printf '%s' "${ISSUE_JSON}" | jq -r '.title // empty' 2>/dev/null || true)
107
- ISSUE_BODY=$(printf '%s' "${ISSUE_JSON}" | jq -r '.body // empty' 2>/dev/null || true)
129
+
108
130
  if [ -z "${ISSUE_NUMBER}" ]; then
109
- log "ERROR: Board mode: failed to parse issue number from JSON"
131
+ log "ERROR: Board mode: no issue number resolved"
110
132
  exit 1
111
133
  fi
112
134
  # Slugify title for branch naming
113
135
  ELIGIBLE_PRD="${ISSUE_NUMBER}-$(printf '%s' "${ISSUE_TITLE_RAW}" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/^-\|-$//g')"
114
- log "BOARD: Found ready issue #${ISSUE_NUMBER}: ${ISSUE_TITLE_RAW}"
115
- # Move issue to In Progress (claim it on the board)
116
- "${NW_CLI}" board move-issue "${ISSUE_NUMBER}" --column "In Progress" 2>>"${LOG_FILE}" || \
117
- log "WARN: Failed to move issue #${ISSUE_NUMBER} to In Progress"
136
+ log "BOARD: Processing issue #${ISSUE_NUMBER}: ${ISSUE_TITLE_RAW}"
118
137
  trap "rm -f '${LOCK_FILE}'" EXIT
119
138
  else
120
139
  # Filesystem mode: scan PRD directory
@@ -305,17 +305,25 @@ find_eligible_prd() {
305
305
  }
306
306
 
307
307
  # ── Clean up worktrees ───────────────────────────────────────────────────────
308
- # Removes any worktrees with "-nw-" in the path (night-watch worktrees).
308
+ # Removes night-watch worktrees for this project.
309
+ # Optional second argument narrows cleanup to worktrees containing that token.
310
+ # This prevents parallel reviewer workers from deleting each other's worktrees.
309
311
 
310
312
  cleanup_worktrees() {
311
313
  local project_dir="${1:?project_dir required}"
314
+ local scope="${2:-}"
312
315
  local project_name
313
316
  project_name=$(basename "${project_dir}")
314
317
 
318
+ local match_token="${project_name}-nw"
319
+ if [ -n "${scope}" ]; then
320
+ match_token="${scope}"
321
+ fi
322
+
315
323
  git -C "${project_dir}" worktree list --porcelain 2>/dev/null \
316
324
  | grep '^worktree ' \
317
325
  | awk '{print $2}' \
318
- | grep "${project_name}-nw" \
326
+ | grep -F "${match_token}" \
319
327
  | while read -r wt; do
320
328
  log "CLEANUP: Removing leftover worktree ${wt}"
321
329
  git -C "${project_dir}" worktree remove --force "${wt}" 2>/dev/null || true