@jonit-dev/night-watch-cli 1.8.10-beta.8 → 1.8.12-beta.0

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 (136) hide show
  1. package/dist/cli.js +113 -29
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +3 -1
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/review.d.ts.map +1 -1
  6. package/dist/commands/review.js +48 -7
  7. package/dist/commands/review.js.map +1 -1
  8. package/dist/commands/run.d.ts.map +1 -1
  9. package/dist/commands/run.js +8 -6
  10. package/dist/commands/run.js.map +1 -1
  11. package/dist/scripts/night-watch-audit-cron.sh +6 -0
  12. package/dist/scripts/night-watch-cron.sh +30 -9
  13. package/dist/scripts/night-watch-helpers.sh +77 -5
  14. package/dist/scripts/night-watch-pr-reviewer-cron.sh +176 -43
  15. package/dist/scripts/night-watch-qa-cron.sh +6 -0
  16. package/dist/templates/night-watch.config.json +21 -1
  17. package/dist/web/assets/index-B6E6kOoR.js +406 -0
  18. package/dist/web/assets/index-C3BV1Hoa.js +406 -0
  19. package/dist/web/assets/index-DIMUXIP8.css +1 -0
  20. package/dist/web/assets/index-Ds8OqaCa.css +1 -0
  21. package/dist/web/assets/index-NR27JE3b.js +406 -0
  22. package/dist/web/index.html +2 -2
  23. package/package.json +1 -1
  24. package/dist/cli.d.ts +0 -3
  25. package/dist/cli.js.map +0 -1
  26. package/dist/commands/analytics.d.ts +0 -14
  27. package/dist/commands/analytics.js +0 -69
  28. package/dist/commands/analytics.js.map +0 -1
  29. package/dist/commands/audit.d.ts +0 -19
  30. package/dist/commands/audit.js +0 -144
  31. package/dist/commands/audit.js.map +0 -1
  32. package/dist/commands/board.d.ts +0 -9
  33. package/dist/commands/board.js +0 -702
  34. package/dist/commands/board.js.map +0 -1
  35. package/dist/commands/cancel.d.ts +0 -46
  36. package/dist/commands/cancel.js +0 -239
  37. package/dist/commands/cancel.js.map +0 -1
  38. package/dist/commands/cron.d.ts +0 -8
  39. package/dist/commands/cron.js +0 -134
  40. package/dist/commands/cron.js.map +0 -1
  41. package/dist/commands/dashboard/tab-actions.d.ts +0 -10
  42. package/dist/commands/dashboard/tab-actions.js +0 -247
  43. package/dist/commands/dashboard/tab-actions.js.map +0 -1
  44. package/dist/commands/dashboard/tab-config.d.ts +0 -21
  45. package/dist/commands/dashboard/tab-config.js +0 -874
  46. package/dist/commands/dashboard/tab-config.js.map +0 -1
  47. package/dist/commands/dashboard/tab-logs.d.ts +0 -10
  48. package/dist/commands/dashboard/tab-logs.js +0 -202
  49. package/dist/commands/dashboard/tab-logs.js.map +0 -1
  50. package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
  51. package/dist/commands/dashboard/tab-schedules.js +0 -320
  52. package/dist/commands/dashboard/tab-schedules.js.map +0 -1
  53. package/dist/commands/dashboard/tab-status.d.ts +0 -32
  54. package/dist/commands/dashboard/tab-status.js +0 -424
  55. package/dist/commands/dashboard/tab-status.js.map +0 -1
  56. package/dist/commands/dashboard/types.d.ts +0 -42
  57. package/dist/commands/dashboard/types.js +0 -5
  58. package/dist/commands/dashboard/types.js.map +0 -1
  59. package/dist/commands/dashboard.d.ts +0 -11
  60. package/dist/commands/dashboard.js +0 -242
  61. package/dist/commands/dashboard.js.map +0 -1
  62. package/dist/commands/doctor.d.ts +0 -16
  63. package/dist/commands/doctor.js +0 -195
  64. package/dist/commands/doctor.js.map +0 -1
  65. package/dist/commands/history.d.ts +0 -7
  66. package/dist/commands/history.js +0 -49
  67. package/dist/commands/history.js.map +0 -1
  68. package/dist/commands/init.d.ts +0 -45
  69. package/dist/commands/install.d.ts +0 -65
  70. package/dist/commands/install.js +0 -405
  71. package/dist/commands/install.js.map +0 -1
  72. package/dist/commands/logs.d.ts +0 -15
  73. package/dist/commands/logs.js +0 -155
  74. package/dist/commands/logs.js.map +0 -1
  75. package/dist/commands/merge.d.ts +0 -26
  76. package/dist/commands/merge.js +0 -159
  77. package/dist/commands/merge.js.map +0 -1
  78. package/dist/commands/notify.d.ts +0 -7
  79. package/dist/commands/notify.js +0 -43
  80. package/dist/commands/notify.js.map +0 -1
  81. package/dist/commands/plan.d.ts +0 -19
  82. package/dist/commands/plan.js +0 -88
  83. package/dist/commands/plan.js.map +0 -1
  84. package/dist/commands/prd-state.d.ts +0 -12
  85. package/dist/commands/prd-state.js +0 -47
  86. package/dist/commands/prd-state.js.map +0 -1
  87. package/dist/commands/prd.d.ts +0 -18
  88. package/dist/commands/prd.js +0 -363
  89. package/dist/commands/prd.js.map +0 -1
  90. package/dist/commands/prds.d.ts +0 -13
  91. package/dist/commands/prds.js +0 -194
  92. package/dist/commands/prds.js.map +0 -1
  93. package/dist/commands/prs.d.ts +0 -14
  94. package/dist/commands/prs.js +0 -104
  95. package/dist/commands/prs.js.map +0 -1
  96. package/dist/commands/qa.d.ts +0 -34
  97. package/dist/commands/qa.js +0 -214
  98. package/dist/commands/qa.js.map +0 -1
  99. package/dist/commands/queue.d.ts +0 -8
  100. package/dist/commands/queue.js +0 -378
  101. package/dist/commands/queue.js.map +0 -1
  102. package/dist/commands/resolve.d.ts +0 -26
  103. package/dist/commands/resolve.js +0 -186
  104. package/dist/commands/resolve.js.map +0 -1
  105. package/dist/commands/retry.d.ts +0 -9
  106. package/dist/commands/retry.js +0 -71
  107. package/dist/commands/retry.js.map +0 -1
  108. package/dist/commands/review.d.ts +0 -82
  109. package/dist/commands/run.d.ts +0 -73
  110. package/dist/commands/serve.d.ts +0 -19
  111. package/dist/commands/serve.js +0 -142
  112. package/dist/commands/serve.js.map +0 -1
  113. package/dist/commands/shared/env-builder.d.ts +0 -49
  114. package/dist/commands/shared/env-builder.js +0 -151
  115. package/dist/commands/shared/env-builder.js.map +0 -1
  116. package/dist/commands/slice.d.ts +0 -35
  117. package/dist/commands/slice.js +0 -316
  118. package/dist/commands/slice.js.map +0 -1
  119. package/dist/commands/state.d.ts +0 -8
  120. package/dist/commands/state.js +0 -54
  121. package/dist/commands/state.js.map +0 -1
  122. package/dist/commands/status.d.ts +0 -14
  123. package/dist/commands/status.js +0 -297
  124. package/dist/commands/status.js.map +0 -1
  125. package/dist/commands/summary.d.ts +0 -14
  126. package/dist/commands/summary.js +0 -193
  127. package/dist/commands/summary.js.map +0 -1
  128. package/dist/commands/uninstall.d.ts +0 -25
  129. package/dist/commands/uninstall.js +0 -134
  130. package/dist/commands/uninstall.js.map +0 -1
  131. package/dist/commands/update.d.ts +0 -22
  132. package/dist/commands/update.js +0 -90
  133. package/dist/commands/update.js.map +0 -1
  134. package/dist/web/assets/index-BmRrWWHn.js +0 -406
  135. package/dist/web/assets/index-CgXj_KM1.css +0 -1
  136. package/dist/web/assets/index-Dr4zlyJf.js +0 -406
@@ -1,405 +0,0 @@
1
- /**
2
- * Install command for Night Watch CLI
3
- * Adds crontab entries for automated PRD execution
4
- */
5
- import { execSync } from 'child_process';
6
- import * as path from 'path';
7
- import * as fs from 'fs';
8
- import { LOG_DIR, dim, generateMarker, getEntries, getProjectEntries, getProjectName, header, loadConfig, readCrontab, registerProject, success, error as uiError, warn, writeCrontab, } from '@night-watch/core';
9
- /**
10
- * Safely quote a value for POSIX shell commands.
11
- */
12
- function shellQuote(value) {
13
- return `'${value.replace(/'/g, "'\"'\"'")}'`;
14
- }
15
- /**
16
- * Get the path to the night-watch binary
17
- */
18
- function getNightWatchBinPath() {
19
- // Try to find night-watch in npm global bin
20
- try {
21
- const npmBin = execSync('npm bin -g', { encoding: 'utf-8' }).trim();
22
- const binPath = path.join(npmBin, 'night-watch');
23
- if (fs.existsSync(binPath)) {
24
- return binPath;
25
- }
26
- }
27
- catch {
28
- // Ignore error, fall back to which
29
- }
30
- // Try which command
31
- try {
32
- return execSync('which night-watch', { encoding: 'utf-8' }).trim();
33
- }
34
- catch {
35
- // Fall back to assuming it's in PATH
36
- return 'night-watch';
37
- }
38
- }
39
- /**
40
- * Get the directory containing the node binary.
41
- * Cron runs with a minimal PATH that typically doesn't include nvm/fnm/volta paths,
42
- * so we need to explicitly add the node bin directory to each cron entry.
43
- */
44
- function getNodeBinDir() {
45
- // process.execPath is the node binary that ran this install command — stable even
46
- // when invoked via yarn (which sets a temp /tmp/yarn-* dir in PATH that gets wiped
47
- // on WSL restart). Falls back to `which node` for edge cases.
48
- if (process.execPath && process.execPath !== 'node') {
49
- return path.dirname(process.execPath);
50
- }
51
- try {
52
- const nodePath = execSync('which node', { encoding: 'utf-8' }).trim();
53
- return path.dirname(nodePath);
54
- }
55
- catch {
56
- return '';
57
- }
58
- }
59
- /**
60
- * Build PATH export for cron entries using relevant binary directories.
61
- */
62
- export function buildCronPathPrefix(nodeBinDir, nightWatchBin) {
63
- const nightWatchBinDir = nightWatchBin.includes('/') || nightWatchBin.includes('\\') ? path.dirname(nightWatchBin) : '';
64
- const pathParts = Array.from(new Set([nodeBinDir, nightWatchBinDir].filter((part) => part.length > 0)));
65
- if (pathParts.length === 0) {
66
- return '';
67
- }
68
- return `export PATH="${pathParts.join(':')}:$PATH" && `;
69
- }
70
- /**
71
- * Apply minute offset to a cron schedule expression.
72
- * Replaces the minute field (first field) with the offset value.
73
- * Only applies if the minute field is a single number (e.g. "0").
74
- * Complex expressions (e.g. star-slash, comma-separated) are left unchanged.
75
- */
76
- export function applyScheduleOffset(schedule, offset) {
77
- if (offset === 0)
78
- return schedule;
79
- const parts = schedule.split(/\s+/);
80
- if (parts.length < 5)
81
- return schedule;
82
- // Only replace if minute field is a plain number
83
- if (/^\d+$/.test(parts[0])) {
84
- parts[0] = String(offset);
85
- return parts.join(' ');
86
- }
87
- return schedule;
88
- }
89
- /**
90
- * Core install logic, reusable from dashboard.
91
- * Returns result without printing to console.
92
- */
93
- export function performInstall(projectDir, config, options) {
94
- try {
95
- const executorSchedule = options?.schedule || config.cronSchedule;
96
- const reviewerSchedule = options?.reviewerSchedule || config.reviewerSchedule;
97
- const nightWatchBin = getNightWatchBinPath();
98
- const projectName = getProjectName(projectDir);
99
- const marker = generateMarker(projectName);
100
- const logDir = path.join(projectDir, LOG_DIR);
101
- if (!fs.existsSync(logDir)) {
102
- fs.mkdirSync(logDir, { recursive: true });
103
- }
104
- const executorLog = path.join(logDir, 'executor.log');
105
- const reviewerLog = path.join(logDir, 'reviewer.log');
106
- // Check if already installed (unless force)
107
- if (!options?.force) {
108
- const existingEntries = Array.from(new Set([...getEntries(marker), ...getProjectEntries(projectDir)]));
109
- if (existingEntries.length > 0) {
110
- registerProject(projectDir);
111
- return {
112
- success: false,
113
- entries: existingEntries,
114
- error: 'Already installed. Uninstall first or use force.',
115
- };
116
- }
117
- }
118
- const entries = [];
119
- const nodeBinDir = getNodeBinDir();
120
- const pathPrefix = buildCronPathPrefix(nodeBinDir, nightWatchBin);
121
- const cliBinPrefix = `export NW_CLI_BIN=${shellQuote(nightWatchBin)} && `;
122
- const cronTriggerPrefix = 'export NW_CRON_TRIGGER=1 && ';
123
- let providerEnvPrefix = '';
124
- if (config.providerEnv && Object.keys(config.providerEnv).length > 0) {
125
- const exports = Object.entries(config.providerEnv)
126
- .map(([key, value]) => `export ${key}=${shellQuote(value)}`)
127
- .join(' && ');
128
- providerEnvPrefix = exports + ' && ';
129
- }
130
- const installExecutor = config.executorEnabled !== false;
131
- if (installExecutor) {
132
- const executorEntry = `${executorSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} run >> ${shellQuote(executorLog)} 2>&1 ${marker}`;
133
- entries.push(executorEntry);
134
- }
135
- const installReviewer = options?.noReviewer === true ? false : config.reviewerEnabled;
136
- if (installReviewer) {
137
- const reviewerEntry = `${reviewerSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} review >> ${shellQuote(reviewerLog)} 2>&1 ${marker}`;
138
- entries.push(reviewerEntry);
139
- }
140
- // Planner entry (uses roadmap scanner schedule; noSlicer flag kept for backward compatibility)
141
- const installSlicer = options?.noSlicer === true ? false : config.roadmapScanner.enabled;
142
- if (installSlicer) {
143
- const slicerSchedule = config.roadmapScanner.slicerSchedule;
144
- const slicerLog = path.join(logDir, 'slicer.log');
145
- const slicerEntry = `${slicerSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} planner >> ${shellQuote(slicerLog)} 2>&1 ${marker}`;
146
- entries.push(slicerEntry);
147
- }
148
- // QA entry (if enabled and noQa not set)
149
- const disableQa = options?.noQa === true || options?.qa === false;
150
- const installQa = disableQa ? false : config.qa.enabled;
151
- if (installQa) {
152
- const qaSchedule = config.qa.schedule;
153
- const qaLog = path.join(logDir, 'qa.log');
154
- const qaEntry = `${qaSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} qa >> ${shellQuote(qaLog)} 2>&1 ${marker}`;
155
- entries.push(qaEntry);
156
- }
157
- // Audit entry (if enabled and noAudit not set)
158
- const disableAudit = options?.noAudit === true || options?.audit === false;
159
- const installAudit = disableAudit ? false : config.audit.enabled;
160
- if (installAudit) {
161
- const auditSchedule = config.audit.schedule;
162
- const auditLog = path.join(logDir, 'audit.log');
163
- const auditEntry = `${auditSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} audit >> ${shellQuote(auditLog)} 2>&1 ${marker}`;
164
- entries.push(auditEntry);
165
- }
166
- // Analytics entry (if enabled and noAnalytics not set)
167
- const disableAnalytics = options?.noAnalytics === true || options?.analytics === false;
168
- const installAnalytics = disableAnalytics ? false : config.analytics.enabled;
169
- if (installAnalytics) {
170
- const analyticsSchedule = config.analytics.schedule;
171
- const analyticsLog = path.join(logDir, 'analytics.log');
172
- const analyticsEntry = `${analyticsSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} analytics >> ${shellQuote(analyticsLog)} 2>&1 ${marker}`;
173
- entries.push(analyticsEntry);
174
- }
175
- // PR Resolver entry (if enabled and noPrResolver not set)
176
- const disablePrResolver = options?.noPrResolver === true || options?.prResolver === false;
177
- const installPrResolver = disablePrResolver ? false : config.prResolver.enabled;
178
- if (installPrResolver) {
179
- const prResolverSchedule = config.prResolver.schedule;
180
- const prResolverLog = path.join(logDir, 'pr-resolver.log');
181
- const prResolverEntry = `${prResolverSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} resolve >> ${shellQuote(prResolverLog)} 2>&1 ${marker}`;
182
- entries.push(prResolverEntry);
183
- }
184
- // Merger entry (if enabled and noMerger not set)
185
- const disableMerger = options?.noMerger === true || options?.merger === false;
186
- const installMerger = disableMerger ? false : (config.merger?.enabled ?? false);
187
- if (installMerger) {
188
- const mergerSchedule = config.merger.schedule;
189
- const mergerLog = path.join(logDir, 'merger.log');
190
- const mergerEntry = `${mergerSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} merge >> ${shellQuote(mergerLog)} 2>&1 ${marker}`;
191
- entries.push(mergerEntry);
192
- }
193
- const existingEntries = new Set(Array.from(new Set([...getEntries(marker), ...getProjectEntries(projectDir)])));
194
- const currentCrontab = readCrontab();
195
- const baseCrontab = options?.force
196
- ? currentCrontab.filter((line) => !existingEntries.has(line) && !line.includes(marker))
197
- : currentCrontab;
198
- const newCrontab = [...baseCrontab, ...entries];
199
- writeCrontab(newCrontab);
200
- registerProject(projectDir);
201
- return { success: true, entries };
202
- }
203
- catch (err) {
204
- return {
205
- success: false,
206
- entries: [],
207
- error: err instanceof Error ? err.message : String(err),
208
- };
209
- }
210
- }
211
- /**
212
- * Install crontab entries for night-watch
213
- */
214
- export function installCommand(program) {
215
- program
216
- .command('install')
217
- .description('Add crontab entries for automated execution')
218
- .option('-s, --schedule <cron>', 'Cron schedule for PRD executor')
219
- .option('--reviewer-schedule <cron>', 'Cron schedule for reviewer')
220
- .option('--no-reviewer', 'Skip installing reviewer cron')
221
- .option('--no-slicer', 'Skip installing slicer cron')
222
- .option('--no-qa', 'Skip installing QA cron')
223
- .option('--no-audit', 'Skip installing audit cron')
224
- .option('--no-analytics', 'Skip installing analytics cron')
225
- .option('--no-pr-resolver', 'Skip installing PR resolver cron')
226
- .option('--no-merger', 'Skip installing merger cron')
227
- .option('-f, --force', 'Replace existing cron entries for this project')
228
- .action(async (options) => {
229
- try {
230
- // Get project directory
231
- const projectDir = process.cwd();
232
- // Load configuration
233
- const config = loadConfig(projectDir);
234
- // Get schedules from options or config.
235
- const executorSchedule = options.schedule || config.cronSchedule;
236
- const reviewerSchedule = options.reviewerSchedule || config.reviewerSchedule;
237
- // Get paths
238
- const nightWatchBin = getNightWatchBinPath();
239
- const projectName = getProjectName(projectDir);
240
- const marker = generateMarker(projectName);
241
- const logDir = path.join(projectDir, LOG_DIR);
242
- // Ensure log directory exists
243
- if (!fs.existsSync(logDir)) {
244
- fs.mkdirSync(logDir, { recursive: true });
245
- }
246
- const executorLog = path.join(logDir, 'executor.log');
247
- const reviewerLog = path.join(logDir, 'reviewer.log');
248
- // Check if already installed
249
- const existingEntries = Array.from(new Set([...getEntries(marker), ...getProjectEntries(projectDir)]));
250
- if (existingEntries.length > 0 && !options.force) {
251
- warn(`Night Watch is already installed for ${projectName}.`);
252
- console.log();
253
- dim('Existing crontab entries:');
254
- existingEntries.forEach((entry) => dim(` ${entry}`));
255
- console.log();
256
- dim("Run 'night-watch install --force' to replace them.");
257
- return;
258
- }
259
- // Create crontab entries
260
- const entries = [];
261
- // Detect node bin directory for cron PATH
262
- const nodeBinDir = getNodeBinDir();
263
- const pathPrefix = buildCronPathPrefix(nodeBinDir, nightWatchBin);
264
- const cliBinPrefix = `export NW_CLI_BIN=${shellQuote(nightWatchBin)} && `;
265
- const cronTriggerPrefix = 'export NW_CRON_TRIGGER=1 && ';
266
- // Build providerEnv export prefix for cron entries
267
- let providerEnvPrefix = '';
268
- if (config.providerEnv && Object.keys(config.providerEnv).length > 0) {
269
- const exports = Object.entries(config.providerEnv)
270
- .map(([key, value]) => `export ${key}=${shellQuote(value)}`)
271
- .join(' && ');
272
- providerEnvPrefix = exports + ' && ';
273
- }
274
- // Executor entry (if enabled)
275
- const installExecutor = config.executorEnabled !== false;
276
- if (installExecutor) {
277
- const executorEntry = `${executorSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} run >> ${shellQuote(executorLog)} 2>&1 ${marker}`;
278
- entries.push(executorEntry);
279
- }
280
- // Determine if reviewer should be installed
281
- // Priority: --no-reviewer flag > config.reviewerEnabled
282
- const installReviewer = options.noReviewer === true ? false : config.reviewerEnabled;
283
- // Reviewer entry (if enabled)
284
- if (installReviewer) {
285
- const reviewerEntry = `${reviewerSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} review >> ${shellQuote(reviewerLog)} 2>&1 ${marker}`;
286
- entries.push(reviewerEntry);
287
- }
288
- // Determine if planner should be installed
289
- // Priority: --no-slicer flag > config.roadmapScanner.enabled
290
- const installSlicer = options.noSlicer === true ? false : config.roadmapScanner.enabled;
291
- // Planner entry (if roadmap scanner enabled)
292
- let slicerLog;
293
- if (installSlicer) {
294
- slicerLog = path.join(logDir, 'slicer.log');
295
- const slicerSchedule = config.roadmapScanner.slicerSchedule;
296
- const slicerEntry = `${slicerSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} planner >> ${shellQuote(slicerLog)} 2>&1 ${marker}`;
297
- entries.push(slicerEntry);
298
- }
299
- // Determine if QA should be installed
300
- const disableQa = options.noQa === true || options.qa === false;
301
- const installQa = disableQa ? false : config.qa.enabled;
302
- // QA entry (if enabled)
303
- let qaLog;
304
- if (installQa) {
305
- qaLog = path.join(logDir, 'qa.log');
306
- const qaSchedule = config.qa.schedule;
307
- const qaEntry = `${qaSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} qa >> ${shellQuote(qaLog)} 2>&1 ${marker}`;
308
- entries.push(qaEntry);
309
- }
310
- // Determine if audit should be installed
311
- const disableAudit = options.noAudit === true || options.audit === false;
312
- const installAudit = disableAudit ? false : config.audit.enabled;
313
- // Audit entry (if enabled)
314
- let auditLog;
315
- if (installAudit) {
316
- auditLog = path.join(logDir, 'audit.log');
317
- const auditSchedule = config.audit.schedule;
318
- const auditEntry = `${auditSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} audit >> ${shellQuote(auditLog)} 2>&1 ${marker}`;
319
- entries.push(auditEntry);
320
- }
321
- // Determine if analytics should be installed
322
- const disableAnalytics = options.noAnalytics === true || options.analytics === false;
323
- const installAnalytics = disableAnalytics ? false : config.analytics.enabled;
324
- // Analytics entry (if enabled)
325
- let analyticsLog;
326
- if (installAnalytics) {
327
- analyticsLog = path.join(logDir, 'analytics.log');
328
- const analyticsSchedule = config.analytics.schedule;
329
- const analyticsEntry = `${analyticsSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} analytics >> ${shellQuote(analyticsLog)} 2>&1 ${marker}`;
330
- entries.push(analyticsEntry);
331
- }
332
- // Determine if PR resolver should be installed
333
- const disablePrResolver = options.noPrResolver === true ||
334
- options.prResolver === false;
335
- const installPrResolver = disablePrResolver ? false : config.prResolver.enabled;
336
- // PR Resolver entry (if enabled)
337
- let prResolverLog;
338
- if (installPrResolver) {
339
- prResolverLog = path.join(logDir, 'pr-resolver.log');
340
- const prResolverSchedule = config.prResolver.schedule;
341
- const prResolverEntry = `${prResolverSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} resolve >> ${shellQuote(prResolverLog)} 2>&1 ${marker}`;
342
- entries.push(prResolverEntry);
343
- }
344
- // Determine if merger should be installed
345
- const disableMerger = options.noMerger === true ||
346
- options.merger === false;
347
- const installMerger = disableMerger ? false : (config.merger?.enabled ?? false);
348
- // Merger entry (if enabled)
349
- let mergerLog;
350
- if (installMerger) {
351
- mergerLog = path.join(logDir, 'merger.log');
352
- const mergerSchedule = config.merger.schedule;
353
- const mergerEntry = `${mergerSchedule} ${pathPrefix}${providerEnvPrefix}${cliBinPrefix}${cronTriggerPrefix}cd ${shellQuote(projectDir)} && ${shellQuote(nightWatchBin)} merge >> ${shellQuote(mergerLog)} 2>&1 ${marker}`;
354
- entries.push(mergerEntry);
355
- }
356
- // Add all entries
357
- const existingEntrySet = new Set(existingEntries);
358
- const currentCrontab = readCrontab();
359
- const baseCrontab = options.force
360
- ? currentCrontab.filter((line) => !existingEntrySet.has(line) && !line.includes(marker))
361
- : currentCrontab;
362
- const newCrontab = [...baseCrontab, ...entries];
363
- writeCrontab(newCrontab);
364
- // Success message
365
- success(`Night Watch installed successfully for ${projectName}!`);
366
- console.log();
367
- header('Crontab Entries Added');
368
- entries.forEach((entry) => dim(` ${entry}`));
369
- console.log();
370
- header('Log Files');
371
- if (installExecutor) {
372
- dim(` Executor: ${executorLog}`);
373
- }
374
- if (installReviewer) {
375
- dim(` Reviewer: ${reviewerLog}`);
376
- }
377
- if (installSlicer && slicerLog) {
378
- dim(` Planner: ${slicerLog}`);
379
- }
380
- if (installQa && qaLog) {
381
- dim(` QA: ${qaLog}`);
382
- }
383
- if (installAudit && auditLog) {
384
- dim(` Audit: ${auditLog}`);
385
- }
386
- if (installAnalytics && analyticsLog) {
387
- dim(` Analytics: ${analyticsLog}`);
388
- }
389
- if (installPrResolver && prResolverLog) {
390
- dim(` PR Resolver: ${prResolverLog}`);
391
- }
392
- if (installMerger && mergerLog) {
393
- dim(` Merger: ${mergerLog}`);
394
- }
395
- console.log();
396
- dim('To uninstall, run: night-watch uninstall');
397
- dim('To check status, run: night-watch status');
398
- }
399
- catch (err) {
400
- uiError(`Error installing Night Watch: ${err instanceof Error ? err.message : String(err)}`);
401
- process.exit(1);
402
- }
403
- });
404
- }
405
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Logs command for Night Watch CLI
3
- * View log output from Night Watch jobs
4
- */
5
- import { Command } from 'commander';
6
- export interface ILogsOptions {
7
- lines?: string;
8
- follow?: boolean;
9
- type?: string;
10
- }
11
- /**
12
- * Logs command implementation
13
- */
14
- export declare function logsCommand(program: Command): void;
15
- //# sourceMappingURL=logs.d.ts.map
@@ -1,155 +0,0 @@
1
- /**
2
- * Logs command for Night Watch CLI
3
- * View log output from Night Watch jobs
4
- */
5
- import { spawn } from 'child_process';
6
- import * as path from 'path';
7
- import * as fs from 'fs';
8
- import { ANALYTICS_LOG_NAME, AUDIT_LOG_NAME, EXECUTOR_LOG_FILE, LOG_DIR, MERGER_LOG_NAME, PLANNER_LOG_NAME, QA_LOG_NAME, REVIEWER_LOG_FILE, dim, header, } from '@night-watch/core';
9
- /**
10
- * Get last N lines from a file
11
- */
12
- function getLastLines(filePath, lineCount) {
13
- if (!fs.existsSync(filePath)) {
14
- return `Log file not found: ${filePath}`;
15
- }
16
- try {
17
- const content = fs.readFileSync(filePath, 'utf-8');
18
- const lines = content.trim().split('\n');
19
- return lines.slice(-lineCount).join('\n');
20
- }
21
- catch (error) {
22
- return `Error reading log file: ${error instanceof Error ? error.message : String(error)}`;
23
- }
24
- }
25
- /**
26
- * Follow log file in real-time using tail -f
27
- */
28
- function followLog(filePath) {
29
- if (!fs.existsSync(filePath)) {
30
- console.log(`Log file not found: ${filePath}`);
31
- console.log('The log file will be created when the first execution runs.');
32
- return;
33
- }
34
- const tail = spawn('tail', ['-f', filePath], {
35
- stdio: 'inherit',
36
- });
37
- tail.on('error', (error) => {
38
- console.error(`Error following log: ${error.message}`);
39
- });
40
- // Handle Ctrl+C gracefully
41
- process.on('SIGINT', () => {
42
- tail.kill();
43
- process.exit(0);
44
- });
45
- }
46
- /**
47
- * Logs command implementation
48
- */
49
- export function logsCommand(program) {
50
- program
51
- .command('logs')
52
- .description('View night-watch log output')
53
- .option('-n, --lines <count>', 'Number of lines to show', '50')
54
- .option('-f, --follow', 'Follow log output (tail -f)')
55
- .option('-t, --type <type>', 'Log type to view (executor|reviewer|qa|audit|planner|analytics|merger|all)', 'all')
56
- .action(async (options) => {
57
- try {
58
- const projectDir = process.cwd();
59
- const logDir = path.join(projectDir, LOG_DIR);
60
- const lineCount = parseInt(options.lines || '50', 10);
61
- const executorLog = path.join(logDir, EXECUTOR_LOG_FILE);
62
- const reviewerLog = path.join(logDir, REVIEWER_LOG_FILE);
63
- const qaLog = path.join(logDir, `${QA_LOG_NAME}.log`);
64
- const auditLog = path.join(logDir, `${AUDIT_LOG_NAME}.log`);
65
- const plannerLog = path.join(logDir, `${PLANNER_LOG_NAME}.log`);
66
- const analyticsLog = path.join(logDir, `${ANALYTICS_LOG_NAME}.log`);
67
- const mergerLog = path.join(logDir, `${MERGER_LOG_NAME}.log`);
68
- // Determine which logs to show
69
- const logType = options.type?.toLowerCase() || 'all';
70
- const showExecutor = logType === 'all' || logType === 'run' || logType === 'executor';
71
- const showReviewer = logType === 'all' || logType === 'review' || logType === 'reviewer';
72
- const showQa = logType === 'all' || logType === 'qa';
73
- const showAudit = logType === 'all' || logType === 'audit';
74
- const showPlanner = logType === 'all' || logType === 'planner' || logType === 'slice' || logType === 'slicer';
75
- const showAnalytics = logType === 'all' || logType === 'analytics';
76
- const showMerger = logType === 'all' || logType === 'merge' || logType === 'merger';
77
- // Handle --follow mode
78
- if (options.follow) {
79
- if (logType === 'all') {
80
- dim('Note: Following all logs is not supported. Showing executor log.');
81
- dim('Use --type reviewer|qa|audit|planner|analytics|merger for other logs.\n');
82
- }
83
- let targetLog = executorLog;
84
- if (showReviewer)
85
- targetLog = reviewerLog;
86
- else if (showQa)
87
- targetLog = qaLog;
88
- else if (showAudit)
89
- targetLog = auditLog;
90
- else if (showPlanner)
91
- targetLog = plannerLog;
92
- else if (showAnalytics)
93
- targetLog = analyticsLog;
94
- else if (showMerger)
95
- targetLog = mergerLog;
96
- followLog(targetLog);
97
- return;
98
- }
99
- // Show static log output
100
- console.log();
101
- if (showExecutor) {
102
- header('Executor Log');
103
- dim(`File: ${executorLog}`);
104
- console.log();
105
- console.log(getLastLines(executorLog, lineCount));
106
- }
107
- if (showReviewer) {
108
- header('Reviewer Log');
109
- dim(`File: ${reviewerLog}`);
110
- console.log();
111
- console.log(getLastLines(reviewerLog, lineCount));
112
- }
113
- if (showQa) {
114
- header('QA Log');
115
- dim(`File: ${qaLog}`);
116
- console.log();
117
- console.log(getLastLines(qaLog, lineCount));
118
- }
119
- if (showAudit) {
120
- header('Audit Log');
121
- dim(`File: ${auditLog}`);
122
- console.log();
123
- console.log(getLastLines(auditLog, lineCount));
124
- }
125
- if (showPlanner) {
126
- header('Planner Log');
127
- dim(`File: ${plannerLog}`);
128
- console.log();
129
- console.log(getLastLines(plannerLog, lineCount));
130
- }
131
- if (showAnalytics) {
132
- header('Analytics Log');
133
- dim(`File: ${analyticsLog}`);
134
- console.log();
135
- console.log(getLastLines(analyticsLog, lineCount));
136
- }
137
- if (showMerger) {
138
- header('Merger Log');
139
- dim(`File: ${mergerLog}`);
140
- console.log();
141
- console.log(getLastLines(mergerLog, lineCount));
142
- }
143
- // Add tip
144
- console.log();
145
- dim('---');
146
- dim('Tip: Use -f to follow logs in real-time');
147
- dim(' Use --type executor|reviewer|qa|audit|planner|analytics|merger to view specific logs');
148
- }
149
- catch (err) {
150
- console.error(`Error reading logs: ${err instanceof Error ? err.message : String(err)}`);
151
- process.exit(1);
152
- }
153
- });
154
- }
155
- //# sourceMappingURL=logs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * Merge command - executes the merger cron script
3
- */
4
- import { Command } from 'commander';
5
- import { INightWatchConfig } from '@night-watch/core';
6
- /**
7
- * Options for the merge command
8
- */
9
- export interface IMergeOptions {
10
- dryRun: boolean;
11
- timeout?: string;
12
- provider?: string;
13
- }
14
- /**
15
- * Build environment variables map from config and CLI options for merger
16
- */
17
- export declare function buildEnvVars(config: INightWatchConfig, options: IMergeOptions): Record<string, string>;
18
- /**
19
- * Apply CLI flag overrides to the config for merger
20
- */
21
- export declare function applyCliOverrides(config: INightWatchConfig, options: IMergeOptions): INightWatchConfig;
22
- /**
23
- * Register the merge command with the program
24
- */
25
- export declare function mergeCommand(program: Command): void;
26
- //# sourceMappingURL=merge.d.ts.map