@jonit-dev/night-watch-cli 1.7.46 → 1.7.48
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 +1097 -705
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +21 -1
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +14 -37
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +20 -12
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +37 -5
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/prd.d.ts.map +1 -1
- package/dist/commands/prd.js +2 -6
- package/dist/commands/prd.js.map +1 -1
- package/dist/commands/prds.d.ts.map +1 -1
- package/dist/commands/prds.js +1 -1
- package/dist/commands/prds.js.map +1 -1
- package/dist/commands/qa.d.ts.map +1 -1
- package/dist/commands/qa.js +20 -0
- package/dist/commands/qa.js.map +1 -1
- package/dist/commands/review.d.ts +10 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +38 -0
- 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 +88 -17
- package/dist/commands/slice.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +75 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/scripts/night-watch-audit-cron.sh +19 -0
- package/dist/scripts/night-watch-cron.sh +2 -2
- package/dist/scripts/night-watch-helpers.sh +47 -1
- package/dist/scripts/night-watch-pr-reviewer-cron.sh +168 -35
- package/dist/scripts/night-watch-qa-cron.sh +19 -0
- package/dist/scripts/night-watch-slicer-cron.sh +10 -1
- package/dist/templates/night-watch-slicer.md +18 -3
- package/dist/templates/night-watch.config.json +1 -0
- package/dist/templates/night-watch.md +10 -37
- package/dist/web/assets/index-Ba-4YvTQ.js +365 -0
- package/dist/web/assets/index-DpVirMEe.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
package/dist/commands/slice.js
CHANGED
|
@@ -1,8 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slice command - executes the roadmap slicer to create PRDs from roadmap items
|
|
3
3
|
*/
|
|
4
|
-
import { PROVIDER_COMMANDS, createSpinner, createTable, dim, getRoadmapStatus, header, info, loadConfig, resolveJobProvider, sendNotifications, sliceNextItem, error as uiError, } from '@night-watch/core';
|
|
4
|
+
import { LOCK_FILE_PREFIX, PROVIDER_COMMANDS, createSpinner, createTable, dim, getRoadmapStatus, header, info, isProcessRunning, loadConfig, projectRuntimeKey, resolveJobProvider, sendNotifications, sliceNextItem, error as uiError, } from '@night-watch/core';
|
|
5
|
+
import * as fs from 'fs';
|
|
5
6
|
import * as path from 'path';
|
|
7
|
+
function getTelegramStatusWebhooks(config) {
|
|
8
|
+
return (config.notifications?.webhooks ?? [])
|
|
9
|
+
.filter((wh) => wh.type === 'telegram' &&
|
|
10
|
+
typeof wh.botToken === 'string' &&
|
|
11
|
+
wh.botToken.trim().length > 0 &&
|
|
12
|
+
typeof wh.chatId === 'string' &&
|
|
13
|
+
wh.chatId.trim().length > 0)
|
|
14
|
+
.map((wh) => ({ botToken: wh.botToken, chatId: wh.chatId }));
|
|
15
|
+
}
|
|
16
|
+
function plannerLockPath(projectDir) {
|
|
17
|
+
return `${LOCK_FILE_PREFIX}slicer-${projectRuntimeKey(projectDir)}.lock`;
|
|
18
|
+
}
|
|
19
|
+
function acquirePlannerLock(projectDir) {
|
|
20
|
+
const lockFile = plannerLockPath(projectDir);
|
|
21
|
+
if (fs.existsSync(lockFile)) {
|
|
22
|
+
const pidRaw = fs.readFileSync(lockFile, 'utf-8').trim();
|
|
23
|
+
const pid = parseInt(pidRaw, 10);
|
|
24
|
+
if (!Number.isNaN(pid) && isProcessRunning(pid)) {
|
|
25
|
+
return { acquired: false, lockFile, pid };
|
|
26
|
+
}
|
|
27
|
+
// stale lock
|
|
28
|
+
try {
|
|
29
|
+
fs.unlinkSync(lockFile);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// ignore stale-lock cleanup errors
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
fs.writeFileSync(lockFile, String(process.pid));
|
|
36
|
+
return { acquired: true, lockFile };
|
|
37
|
+
}
|
|
38
|
+
function releasePlannerLock(lockFile) {
|
|
39
|
+
try {
|
|
40
|
+
if (fs.existsSync(lockFile)) {
|
|
41
|
+
fs.unlinkSync(lockFile);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// ignore cleanup errors
|
|
46
|
+
}
|
|
47
|
+
}
|
|
6
48
|
/**
|
|
7
49
|
* Build environment variables map from config and CLI options for slicer
|
|
8
50
|
*/
|
|
@@ -21,6 +63,13 @@ export function buildEnvVars(config, options) {
|
|
|
21
63
|
if (config.providerEnv) {
|
|
22
64
|
Object.assign(env, config.providerEnv);
|
|
23
65
|
}
|
|
66
|
+
// Telegram status messages from bash scripts (start/progress/final status)
|
|
67
|
+
const telegramWebhooks = getTelegramStatusWebhooks(config);
|
|
68
|
+
if (telegramWebhooks.length > 0) {
|
|
69
|
+
env.NW_TELEGRAM_STATUS_WEBHOOKS = JSON.stringify(telegramWebhooks);
|
|
70
|
+
env.NW_TELEGRAM_BOT_TOKEN = telegramWebhooks[0].botToken;
|
|
71
|
+
env.NW_TELEGRAM_CHAT_ID = telegramWebhooks[0].chatId;
|
|
72
|
+
}
|
|
24
73
|
// Dry run flag
|
|
25
74
|
if (options.dryRun) {
|
|
26
75
|
env.NW_DRY_RUN = '1';
|
|
@@ -55,13 +104,21 @@ export function applyCliOverrides(config, options) {
|
|
|
55
104
|
export function sliceCommand(program) {
|
|
56
105
|
program
|
|
57
106
|
.command('slice')
|
|
58
|
-
.
|
|
107
|
+
.alias('planner')
|
|
108
|
+
.description('Run Planner (roadmap slicer) to create a PRD from the next roadmap item')
|
|
59
109
|
.option('--dry-run', 'Show what would be executed without running')
|
|
60
110
|
.option('--timeout <seconds>', 'Override max runtime in seconds for slicer')
|
|
61
111
|
.option('--provider <string>', 'AI provider to use (claude or codex)')
|
|
62
112
|
.action(async (options) => {
|
|
63
113
|
// Get the project directory (current working directory)
|
|
64
114
|
const projectDir = process.cwd();
|
|
115
|
+
const lockResult = acquirePlannerLock(projectDir);
|
|
116
|
+
if (!lockResult.acquired) {
|
|
117
|
+
info(`Planner is already running${lockResult.pid ? ` (PID ${lockResult.pid})` : ''}`);
|
|
118
|
+
process.exit(0);
|
|
119
|
+
}
|
|
120
|
+
const cleanupLock = () => releasePlannerLock(lockResult.lockFile);
|
|
121
|
+
process.on('exit', cleanupLock);
|
|
65
122
|
// Load config from file and environment
|
|
66
123
|
let config = loadConfig(projectDir);
|
|
67
124
|
// Apply CLI flag overrides
|
|
@@ -69,7 +126,7 @@ export function sliceCommand(program) {
|
|
|
69
126
|
// Build environment variables
|
|
70
127
|
const envVars = buildEnvVars(config, options);
|
|
71
128
|
if (options.dryRun) {
|
|
72
|
-
header('Dry Run:
|
|
129
|
+
header('Dry Run: Planner');
|
|
73
130
|
// Resolve slicer-specific provider
|
|
74
131
|
const slicerProvider = resolveJobProvider(config, 'slicer');
|
|
75
132
|
// Configuration section with table
|
|
@@ -80,10 +137,10 @@ export function sliceCommand(program) {
|
|
|
80
137
|
configTable.push(['PRD Directory', config.prdDir]);
|
|
81
138
|
configTable.push(['Roadmap Path', config.roadmapScanner.roadmapPath]);
|
|
82
139
|
configTable.push([
|
|
83
|
-
'
|
|
140
|
+
'Planner Max Runtime',
|
|
84
141
|
`${config.roadmapScanner.slicerMaxRuntime}s (${Math.floor(config.roadmapScanner.slicerMaxRuntime / 60)}min)`,
|
|
85
142
|
]);
|
|
86
|
-
configTable.push(['
|
|
143
|
+
configTable.push(['Planner Schedule', config.roadmapScanner.slicerSchedule]);
|
|
87
144
|
configTable.push(['Scanner Enabled', config.roadmapScanner.enabled ? 'Yes' : 'No']);
|
|
88
145
|
console.log(configTable.toString());
|
|
89
146
|
// Get roadmap status
|
|
@@ -135,43 +192,57 @@ export function sliceCommand(program) {
|
|
|
135
192
|
}
|
|
136
193
|
// Check if roadmap scanner is enabled
|
|
137
194
|
if (!config.roadmapScanner.enabled) {
|
|
138
|
-
|
|
139
|
-
process.exit(
|
|
195
|
+
info('Planner is disabled in config; skipping run.');
|
|
196
|
+
process.exit(0);
|
|
140
197
|
}
|
|
141
|
-
// Execute
|
|
142
|
-
const spinner = createSpinner('Running
|
|
198
|
+
// Execute planner with spinner
|
|
199
|
+
const spinner = createSpinner('Running Planner...');
|
|
143
200
|
spinner.start();
|
|
144
201
|
try {
|
|
202
|
+
if (!options.dryRun) {
|
|
203
|
+
await sendNotifications(config, {
|
|
204
|
+
event: 'run_started',
|
|
205
|
+
projectName: path.basename(projectDir),
|
|
206
|
+
exitCode: 0,
|
|
207
|
+
provider: config.provider,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
145
210
|
const result = await sliceNextItem(projectDir, config);
|
|
146
211
|
if (result.sliced) {
|
|
147
|
-
spinner.succeed(`
|
|
212
|
+
spinner.succeed(`Planner completed successfully: Created ${result.file}`);
|
|
148
213
|
}
|
|
149
214
|
else if (result.error) {
|
|
150
215
|
if (result.error === 'No pending items to process') {
|
|
151
216
|
spinner.succeed('No pending items to process');
|
|
152
217
|
}
|
|
153
218
|
else {
|
|
154
|
-
spinner.fail(`
|
|
219
|
+
spinner.fail(`Planner failed: ${result.error}`);
|
|
155
220
|
}
|
|
156
221
|
}
|
|
157
222
|
// Send notifications (fire-and-forget, failures do not affect exit code)
|
|
158
223
|
const nothingPending = result.error === 'No pending items to process';
|
|
159
224
|
const exitCode = result.sliced || nothingPending ? 0 : 1;
|
|
160
225
|
if (!options.dryRun && result.sliced) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
event,
|
|
226
|
+
await sendNotifications(config, {
|
|
227
|
+
event: 'run_succeeded',
|
|
164
228
|
projectName: path.basename(projectDir),
|
|
165
229
|
exitCode,
|
|
166
230
|
provider: config.provider,
|
|
167
231
|
prTitle: result.item?.title,
|
|
168
|
-
};
|
|
169
|
-
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
else if (!options.dryRun && !nothingPending) {
|
|
235
|
+
await sendNotifications(config, {
|
|
236
|
+
event: 'run_failed',
|
|
237
|
+
projectName: path.basename(projectDir),
|
|
238
|
+
exitCode,
|
|
239
|
+
provider: config.provider,
|
|
240
|
+
});
|
|
170
241
|
}
|
|
171
242
|
process.exit(exitCode);
|
|
172
243
|
}
|
|
173
244
|
catch (err) {
|
|
174
|
-
spinner.fail('Failed to execute
|
|
245
|
+
spinner.fail('Failed to execute planner command');
|
|
175
246
|
uiError(`${err instanceof Error ? err.message : String(err)}`);
|
|
176
247
|
process.exit(1);
|
|
177
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAGL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,GAAG,EACH,gBAAgB,EAChB,MAAM,EACN,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,KAAK,IAAI,OAAO,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAW7B;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAyB,EACzB,OAAsB;IAEtB,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,0FAA0F;IAC1F,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5D,GAAG,CAAC,eAAe,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAExD,iBAAiB;IACjB,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAE3E,kCAAkC;IAClC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,eAAe;IACf,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;IAExD,6DAA6D;IAC7D,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,eAAe;IACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;IACvB,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC;IAEnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAyB,EACzB,OAAsB;IAEtB,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,UAAU,CAAC,cAAc,GAAG;gBAC1B,GAAG,UAAU,CAAC,cAAc;gBAC5B,gBAAgB,EAAE,OAAO;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,iFAAiF;QACjF,UAAU,CAAC,oBAAoB,GAAG,OAAO,CAAC,QAAyC,CAAC;IACtF,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/commands/slice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAsFD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6OpD"}
|
package/dist/commands/status.js
CHANGED
|
@@ -32,8 +32,14 @@ export function statusCommand(program) {
|
|
|
32
32
|
// Derive legacy status shape from snapshot for backward-compatible JSON output
|
|
33
33
|
const executorProc = snapshot.processes.find((p) => p.name === 'executor');
|
|
34
34
|
const reviewerProc = snapshot.processes.find((p) => p.name === 'reviewer');
|
|
35
|
+
const qaProc = snapshot.processes.find((p) => p.name === 'qa');
|
|
36
|
+
const auditProc = snapshot.processes.find((p) => p.name === 'audit');
|
|
37
|
+
const plannerProc = snapshot.processes.find((p) => p.name === 'planner');
|
|
35
38
|
const executorLog = snapshot.logs.find((l) => l.name === 'executor');
|
|
36
39
|
const reviewerLog = snapshot.logs.find((l) => l.name === 'reviewer');
|
|
40
|
+
const qaLog = snapshot.logs.find((l) => l.name === 'qa');
|
|
41
|
+
const auditLog = snapshot.logs.find((l) => l.name === 'audit');
|
|
42
|
+
const plannerLog = snapshot.logs.find((l) => l.name === 'planner');
|
|
37
43
|
const pendingPrds = snapshot.prds.filter((p) => p.status === 'ready' || p.status === 'blocked').length;
|
|
38
44
|
const claimedPrds = snapshot.prds.filter((p) => p.status === 'in-progress').length;
|
|
39
45
|
const donePrds = snapshot.prds.filter((p) => p.status === 'done').length;
|
|
@@ -46,6 +52,9 @@ export function statusCommand(program) {
|
|
|
46
52
|
autoMergeMethod: config.autoMergeMethod,
|
|
47
53
|
executor: { running: executorProc?.running ?? false, pid: executorProc?.pid ?? null },
|
|
48
54
|
reviewer: { running: reviewerProc?.running ?? false, pid: reviewerProc?.pid ?? null },
|
|
55
|
+
qa: { running: qaProc?.running ?? false, pid: qaProc?.pid ?? null },
|
|
56
|
+
audit: { running: auditProc?.running ?? false, pid: auditProc?.pid ?? null },
|
|
57
|
+
planner: { running: plannerProc?.running ?? false, pid: plannerProc?.pid ?? null },
|
|
49
58
|
prds: { pending: pendingPrds, claimed: claimedPrds, done: donePrds },
|
|
50
59
|
prs: { open: snapshot.prs.length },
|
|
51
60
|
crontab: snapshot.crontab,
|
|
@@ -66,6 +75,30 @@ export function statusCommand(program) {
|
|
|
66
75
|
size: reviewerLog.size,
|
|
67
76
|
}
|
|
68
77
|
: undefined,
|
|
78
|
+
qa: qaLog
|
|
79
|
+
? {
|
|
80
|
+
path: qaLog.path,
|
|
81
|
+
lastLines: qaLog.lastLines,
|
|
82
|
+
exists: qaLog.exists,
|
|
83
|
+
size: qaLog.size,
|
|
84
|
+
}
|
|
85
|
+
: undefined,
|
|
86
|
+
audit: auditLog
|
|
87
|
+
? {
|
|
88
|
+
path: auditLog.path,
|
|
89
|
+
lastLines: auditLog.lastLines,
|
|
90
|
+
exists: auditLog.exists,
|
|
91
|
+
size: auditLog.size,
|
|
92
|
+
}
|
|
93
|
+
: undefined,
|
|
94
|
+
planner: plannerLog
|
|
95
|
+
? {
|
|
96
|
+
path: plannerLog.path,
|
|
97
|
+
lastLines: plannerLog.lastLines,
|
|
98
|
+
exists: plannerLog.exists,
|
|
99
|
+
size: plannerLog.size,
|
|
100
|
+
}
|
|
101
|
+
: undefined,
|
|
69
102
|
},
|
|
70
103
|
};
|
|
71
104
|
// Output as JSON if requested
|
|
@@ -100,6 +133,12 @@ export function statusCommand(program) {
|
|
|
100
133
|
'Reviewer',
|
|
101
134
|
formatRunningStatus(status.reviewer.running, status.reviewer.pid),
|
|
102
135
|
]);
|
|
136
|
+
processTable.push(['QA', formatRunningStatus(status.qa.running, status.qa.pid)]);
|
|
137
|
+
processTable.push(['Audit', formatRunningStatus(status.audit.running, status.audit.pid)]);
|
|
138
|
+
processTable.push([
|
|
139
|
+
'Planner',
|
|
140
|
+
formatRunningStatus(status.planner.running, status.planner.pid),
|
|
141
|
+
]);
|
|
103
142
|
console.log(processTable.toString());
|
|
104
143
|
// PRD status section with table
|
|
105
144
|
header('PRD Status');
|
|
@@ -139,6 +178,27 @@ export function statusCommand(program) {
|
|
|
139
178
|
status.logs.reviewer.exists ? 'Exists' : 'Not found',
|
|
140
179
|
]);
|
|
141
180
|
}
|
|
181
|
+
if (status.logs.qa) {
|
|
182
|
+
logTable.push([
|
|
183
|
+
'QA',
|
|
184
|
+
status.logs.qa.exists ? formatBytes(status.logs.qa.size) : '-',
|
|
185
|
+
status.logs.qa.exists ? 'Exists' : 'Not found',
|
|
186
|
+
]);
|
|
187
|
+
}
|
|
188
|
+
if (status.logs.audit) {
|
|
189
|
+
logTable.push([
|
|
190
|
+
'Audit',
|
|
191
|
+
status.logs.audit.exists ? formatBytes(status.logs.audit.size) : '-',
|
|
192
|
+
status.logs.audit.exists ? 'Exists' : 'Not found',
|
|
193
|
+
]);
|
|
194
|
+
}
|
|
195
|
+
if (status.logs.planner) {
|
|
196
|
+
logTable.push([
|
|
197
|
+
'Planner',
|
|
198
|
+
status.logs.planner.exists ? formatBytes(status.logs.planner.size) : '-',
|
|
199
|
+
status.logs.planner.exists ? 'Exists' : 'Not found',
|
|
200
|
+
]);
|
|
201
|
+
}
|
|
142
202
|
console.log(logTable.toString());
|
|
143
203
|
// Show last lines in verbose mode
|
|
144
204
|
if (options.verbose) {
|
|
@@ -150,6 +210,18 @@ export function statusCommand(program) {
|
|
|
150
210
|
dim(' Reviewer last 5 lines:');
|
|
151
211
|
status.logs.reviewer.lastLines.forEach((line) => dim(` ${line}`));
|
|
152
212
|
}
|
|
213
|
+
if (status.logs.qa?.exists && status.logs.qa.lastLines.length > 0) {
|
|
214
|
+
dim(' QA last 5 lines:');
|
|
215
|
+
status.logs.qa.lastLines.forEach((line) => dim(` ${line}`));
|
|
216
|
+
}
|
|
217
|
+
if (status.logs.audit?.exists && status.logs.audit.lastLines.length > 0) {
|
|
218
|
+
dim(' Audit last 5 lines:');
|
|
219
|
+
status.logs.audit.lastLines.forEach((line) => dim(` ${line}`));
|
|
220
|
+
}
|
|
221
|
+
if (status.logs.planner?.exists && status.logs.planner.lastLines.length > 0) {
|
|
222
|
+
dim(' Planner last 5 lines:');
|
|
223
|
+
status.logs.planner.lastLines.forEach((line) => dim(` ${line}`));
|
|
224
|
+
}
|
|
153
225
|
}
|
|
154
226
|
// Tips section with dim styling
|
|
155
227
|
header('Commands');
|
|
@@ -157,6 +229,9 @@ export function statusCommand(program) {
|
|
|
157
229
|
dim(' night-watch logs - View logs');
|
|
158
230
|
dim(' night-watch run - Run executor now');
|
|
159
231
|
dim(' night-watch review - Run reviewer now');
|
|
232
|
+
dim(' night-watch qa - Run QA now');
|
|
233
|
+
dim(' night-watch audit - Run audit now');
|
|
234
|
+
dim(' night-watch planner - Run planner now');
|
|
160
235
|
console.log();
|
|
161
236
|
}
|
|
162
237
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,GAAG,EACH,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,MAAM,EACN,UAAU,GACX,MAAM,mBAAmB,CAAC;AAgF3B;;GAEG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,GAAG,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;SAC3D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE/D,+EAA+E;YAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAC3E,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YACzE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAEnE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CACtD,CAAC,MAAM,CAAC;YACT,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;YACnF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;YAEzE,MAAM,MAAM,GAAgB;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,QAAQ,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,IAAI,IAAI,EAAE;gBACrF,QAAQ,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,IAAI,IAAI,EAAE;gBACrF,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE;gBACnE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,EAAE;gBAC5E,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE;gBAClF,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACpE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE;gBAClC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE;oBACJ,QAAQ,EAAE,WAAW;wBACnB,CAAC,CAAC;4BACE,IAAI,EAAE,WAAW,CAAC,IAAI;4BACtB,SAAS,EAAE,WAAW,CAAC,SAAS;4BAChC,MAAM,EAAE,WAAW,CAAC,MAAM;4BAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;yBACvB;wBACH,CAAC,CAAC,SAAS;oBACb,QAAQ,EAAE,WAAW;wBACnB,CAAC,CAAC;4BACE,IAAI,EAAE,WAAW,CAAC,IAAI;4BACtB,SAAS,EAAE,WAAW,CAAC,SAAS;4BAChC,MAAM,EAAE,WAAW,CAAC,MAAM;4BAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;yBACvB;wBACH,CAAC,CAAC,SAAS;oBACb,EAAE,EAAE,KAAK;wBACP,CAAC,CAAC;4BACE,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,SAAS,EAAE,KAAK,CAAC,SAAS;4BAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,IAAI,EAAE,KAAK,CAAC,IAAI;yBACjB;wBACH,CAAC,CAAC,SAAS;oBACb,KAAK,EAAE,QAAQ;wBACb,CAAC,CAAC;4BACE,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;4BAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;yBACpB;wBACH,CAAC,CAAC,SAAS;oBACb,OAAO,EAAE,UAAU;wBACjB,CAAC,CAAC;4BACE,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,SAAS,EAAE,UAAU,CAAC,SAAS;4BAC/B,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,IAAI,EAAE,UAAU,CAAC,IAAI;yBACtB;wBACH,CAAC,CAAC,SAAS;iBACd;aACF,CAAC;YAEF,8BAA8B;YAC9B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,mCAAmC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,sBAAsB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAE/C,mCAAmC;YACnC,MAAM,CAAC,eAAe,CAAC,CAAC;YACxB,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAChF,WAAW,CAAC,IAAI,CAAC;gBACf,YAAY;gBACZ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,UAAU;aACtE,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpC,iDAAiD;YACjD,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzB,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClE,YAAY,CAAC,IAAI,CAAC;gBAChB,UAAU;gBACV,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;aAClE,CAAC,CAAC;YACH,YAAY,CAAC,IAAI,CAAC;gBAChB,UAAU;gBACV,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;aAClE,CAAC,CAAC;YACH,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1F,YAAY,CAAC,IAAI,CAAC;gBAChB,SAAS;gBACT,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;aAChE,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YAErC,gCAAgC;YAChC,MAAM,CAAC,YAAY,CAAC,CAAC;YACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEjC,+BAA+B;YAC/B,MAAM,CAAC,WAAW,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,sCAAsC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEhC,6CAA6C;YAC7C,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACpE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,YAAY,CAAC,CAAC;gBAClB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,gCAAgC;YAChC,MAAM,CAAC,WAAW,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC;oBACZ,UAAU;oBACV,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;oBAC1E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;iBACrD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CAAC;oBACZ,UAAU;oBACV,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;oBAC1E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;iBACrD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;oBAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;iBAC/C,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO;oBACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;oBACpE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;iBAClD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC;oBACZ,SAAS;oBACT,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;oBACxE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;iBACpD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEjC,kCAAkC;YAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9E,GAAG,CAAC,0BAA0B,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvE,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9E,GAAG,CAAC,0BAA0B,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvE,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClE,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACjE,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxE,GAAG,CAAC,uBAAuB,CAAC,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5E,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnB,GAAG,CAAC,kDAAkD,CAAC,CAAC;YACxD,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC1C,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACjD,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACjD,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAC3C,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAC9C,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -58,6 +58,10 @@ if ! acquire_lock "${LOCK_FILE}"; then
|
|
|
58
58
|
exit 0
|
|
59
59
|
fi
|
|
60
60
|
|
|
61
|
+
send_telegram_status_message "🔎 Night Watch Auditor: started" "Project: ${PROJECT_NAME}
|
|
62
|
+
Provider: ${PROVIDER_CMD}
|
|
63
|
+
Running code quality audit."
|
|
64
|
+
|
|
61
65
|
# Dry-run mode: print diagnostics and exit
|
|
62
66
|
if [ "${NW_DRY_RUN:-0}" = "1" ]; then
|
|
63
67
|
echo "=== Dry Run: Code Auditor ==="
|
|
@@ -71,6 +75,9 @@ fi
|
|
|
71
75
|
|
|
72
76
|
if [ ! -f "${AUDIT_PROMPT_TEMPLATE}" ]; then
|
|
73
77
|
log "FAIL: Missing bundled audit prompt template at ${AUDIT_PROMPT_TEMPLATE}"
|
|
78
|
+
send_telegram_status_message "🔎 Night Watch Auditor: failed" "Project: ${PROJECT_NAME}
|
|
79
|
+
Missing prompt template:
|
|
80
|
+
${AUDIT_PROMPT_TEMPLATE}"
|
|
74
81
|
emit_result "failure_missing_prompt"
|
|
75
82
|
exit 1
|
|
76
83
|
fi
|
|
@@ -90,6 +97,8 @@ cleanup_worktrees "${PROJECT_DIR}" "${AUDIT_WORKTREE_BASENAME}"
|
|
|
90
97
|
|
|
91
98
|
if ! prepare_detached_worktree "${PROJECT_DIR}" "${AUDIT_WORKTREE_DIR}" "${DEFAULT_BRANCH}" "${LOG_FILE}"; then
|
|
92
99
|
log "FAIL: Unable to create isolated audit worktree ${AUDIT_WORKTREE_DIR}"
|
|
100
|
+
send_telegram_status_message "🔎 Night Watch Auditor: failed" "Project: ${PROJECT_NAME}
|
|
101
|
+
Failed to create audit worktree."
|
|
93
102
|
emit_result "failure" "reason=worktree_setup_failed"
|
|
94
103
|
exit 1
|
|
95
104
|
fi
|
|
@@ -146,22 +155,32 @@ cleanup_worktrees "${PROJECT_DIR}" "${AUDIT_WORKTREE_BASENAME}"
|
|
|
146
155
|
if [ "${EXIT_CODE}" -eq 0 ]; then
|
|
147
156
|
if [ ! -f "${REPORT_FILE}" ]; then
|
|
148
157
|
log "FAIL: Audit provider exited 0 but no report was generated at ${REPORT_FILE}"
|
|
158
|
+
send_telegram_status_message "🔎 Night Watch Auditor: failed" "Project: ${PROJECT_NAME}
|
|
159
|
+
Provider exited successfully but no report file was generated."
|
|
149
160
|
emit_result "failure_no_report"
|
|
150
161
|
exit 1
|
|
151
162
|
fi
|
|
152
163
|
|
|
153
164
|
if grep -q "NO_ISSUES_FOUND" "${REPORT_FILE}" 2>/dev/null; then
|
|
154
165
|
log "DONE: Audit complete — no actionable issues found"
|
|
166
|
+
send_telegram_status_message "🔎 Night Watch Auditor: complete (clean)" "Project: ${PROJECT_NAME}
|
|
167
|
+
No actionable issues found."
|
|
155
168
|
emit_result "skip_clean"
|
|
156
169
|
else
|
|
157
170
|
log "DONE: Audit complete — report written to ${REPORT_FILE}"
|
|
171
|
+
send_telegram_status_message "🔎 Night Watch Auditor: complete" "Project: ${PROJECT_NAME}
|
|
172
|
+
Report: ${REPORT_FILE}"
|
|
158
173
|
emit_result "success_audit"
|
|
159
174
|
fi
|
|
160
175
|
elif [ "${EXIT_CODE}" -eq 124 ]; then
|
|
161
176
|
log "TIMEOUT: Audit killed after ${MAX_RUNTIME}s"
|
|
177
|
+
send_telegram_status_message "🔎 Night Watch Auditor: timeout" "Project: ${PROJECT_NAME}
|
|
178
|
+
Timeout: ${MAX_RUNTIME}s"
|
|
162
179
|
emit_result "timeout"
|
|
163
180
|
else
|
|
164
181
|
log "FAIL: Audit exited with code ${EXIT_CODE}"
|
|
182
|
+
send_telegram_status_message "🔎 Night Watch Auditor: failed" "Project: ${PROJECT_NAME}
|
|
183
|
+
Exit code: ${EXIT_CODE}"
|
|
165
184
|
emit_result "failure" "provider_exit=${EXIT_CODE}"
|
|
166
185
|
fi
|
|
167
186
|
|
|
@@ -228,7 +228,7 @@ ${ISSUE_BODY}
|
|
|
228
228
|
- Install dependencies if needed and implement in the current worktree only
|
|
229
229
|
|
|
230
230
|
## Implementation — PRD Executor Workflow
|
|
231
|
-
Read .claude/commands/prd-executor.md and follow
|
|
231
|
+
Read .claude/skills/prd-executor/SKILL.md (preferred) or .claude/commands/prd-executor.md (fallback), and follow the FULL execution pipeline:
|
|
232
232
|
1. Parse the PRD into phases and extract dependencies
|
|
233
233
|
2. Build a dependency graph to identify parallelism
|
|
234
234
|
3. Create a task list with one task per phase
|
|
@@ -256,7 +256,7 @@ else
|
|
|
256
256
|
- Install dependencies if needed and implement in the current worktree only
|
|
257
257
|
|
|
258
258
|
## Implementation — PRD Executor Workflow
|
|
259
|
-
Read .claude/commands/prd-executor.md and follow
|
|
259
|
+
Read .claude/skills/prd-executor/SKILL.md (preferred) or .claude/commands/prd-executor.md (fallback), and follow the FULL execution pipeline:
|
|
260
260
|
1. Parse the PRD into phases and extract dependencies
|
|
261
261
|
2. Build a dependency graph to identify parallelism
|
|
262
262
|
3. Create a task list with one task per phase
|
|
@@ -228,7 +228,7 @@ find_eligible_prd() {
|
|
|
228
228
|
local done_dir="${prd_dir}/done"
|
|
229
229
|
|
|
230
230
|
local prd_files
|
|
231
|
-
prd_files=$(find "${prd_dir}" -maxdepth 1 -name '*.md'
|
|
231
|
+
prd_files=$(find "${prd_dir}" -maxdepth 1 -name '*.md' -type f 2>/dev/null | sort)
|
|
232
232
|
|
|
233
233
|
if [ -z "${prd_files}" ]; then
|
|
234
234
|
return 0
|
|
@@ -445,6 +445,52 @@ check_rate_limited() {
|
|
|
445
445
|
fi
|
|
446
446
|
}
|
|
447
447
|
|
|
448
|
+
# Send a generic Telegram status message.
|
|
449
|
+
# Preferred input: NW_TELEGRAM_STATUS_WEBHOOKS (JSON array with botToken/chatId).
|
|
450
|
+
# Legacy fallback: NW_TELEGRAM_BOT_TOKEN + NW_TELEGRAM_CHAT_ID.
|
|
451
|
+
# Usage: send_telegram_status_message <title> [body]
|
|
452
|
+
send_telegram_status_message() {
|
|
453
|
+
local title="${1:-Night Watch}"
|
|
454
|
+
local body="${2:-}"
|
|
455
|
+
local msg="${title}"
|
|
456
|
+
if [ -n "${body}" ]; then
|
|
457
|
+
msg="${title}
|
|
458
|
+
|
|
459
|
+
${body}"
|
|
460
|
+
fi
|
|
461
|
+
|
|
462
|
+
# Preferred path: iterate all configured Telegram webhooks.
|
|
463
|
+
if [ -n "${NW_TELEGRAM_STATUS_WEBHOOKS:-}" ] && command -v jq >/dev/null 2>&1; then
|
|
464
|
+
local sent=0
|
|
465
|
+
local webhook_json
|
|
466
|
+
while IFS= read -r webhook_json; do
|
|
467
|
+
[ -z "${webhook_json}" ] && continue
|
|
468
|
+
local bot_token
|
|
469
|
+
local chat_id
|
|
470
|
+
bot_token=$(printf '%s' "${webhook_json}" | jq -r '.botToken // empty' 2>/dev/null || true)
|
|
471
|
+
chat_id=$(printf '%s' "${webhook_json}" | jq -r '.chatId // empty' 2>/dev/null || true)
|
|
472
|
+
if [ -n "${bot_token}" ] && [ -n "${chat_id}" ]; then
|
|
473
|
+
curl -s -X POST "https://api.telegram.org/bot${bot_token}/sendMessage" \
|
|
474
|
+
--data-urlencode "chat_id=${chat_id}" \
|
|
475
|
+
--data-urlencode "text=${msg}" > /dev/null 2>&1 || true
|
|
476
|
+
sent=1
|
|
477
|
+
fi
|
|
478
|
+
done < <(printf '%s' "${NW_TELEGRAM_STATUS_WEBHOOKS}" | jq -c '.[]?' 2>/dev/null || true)
|
|
479
|
+
|
|
480
|
+
if [ "${sent}" -eq 1 ]; then
|
|
481
|
+
return 0
|
|
482
|
+
fi
|
|
483
|
+
fi
|
|
484
|
+
|
|
485
|
+
# Legacy single-webhook fallback.
|
|
486
|
+
if [ -z "${NW_TELEGRAM_BOT_TOKEN:-}" ] || [ -z "${NW_TELEGRAM_CHAT_ID:-}" ]; then
|
|
487
|
+
return 0
|
|
488
|
+
fi
|
|
489
|
+
curl -s -X POST "https://api.telegram.org/bot${NW_TELEGRAM_BOT_TOKEN}/sendMessage" \
|
|
490
|
+
--data-urlencode "chat_id=${NW_TELEGRAM_CHAT_ID}" \
|
|
491
|
+
--data-urlencode "text=${msg}" > /dev/null 2>&1 || true
|
|
492
|
+
}
|
|
493
|
+
|
|
448
494
|
# Send an immediate Telegram warning when the rate-limit fallback is triggered.
|
|
449
495
|
# Preferred input: NW_TELEGRAM_RATE_LIMIT_WEBHOOKS (JSON array with botToken/chatId).
|
|
450
496
|
# Legacy fallback: NW_TELEGRAM_BOT_TOKEN + NW_TELEGRAM_CHAT_ID.
|