@jonit-dev/night-watch-cli 1.8.10-beta.7 → 1.8.11

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 (135) hide show
  1. package/dist/cli.js +56 -25
  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/run.d.ts.map +1 -1
  6. package/dist/commands/run.js +8 -6
  7. package/dist/commands/run.js.map +1 -1
  8. package/dist/scripts/night-watch-audit-cron.sh +6 -0
  9. package/dist/scripts/night-watch-cron.sh +37 -20
  10. package/dist/scripts/night-watch-helpers.sh +77 -5
  11. package/dist/scripts/night-watch-pr-reviewer-cron.sh +36 -11
  12. package/dist/scripts/night-watch-qa-cron.sh +6 -0
  13. package/dist/templates/night-watch.config.json +21 -1
  14. package/dist/web/assets/index-B6E6kOoR.js +406 -0
  15. package/dist/web/assets/index-C3BV1Hoa.js +406 -0
  16. package/dist/web/assets/index-DIMUXIP8.css +1 -0
  17. package/dist/web/assets/index-Ds8OqaCa.css +1 -0
  18. package/dist/web/assets/index-NR27JE3b.js +406 -0
  19. package/dist/web/index.html +2 -2
  20. package/package.json +1 -1
  21. package/dist/cli.d.ts +0 -3
  22. package/dist/cli.js.map +0 -1
  23. package/dist/commands/analytics.d.ts +0 -14
  24. package/dist/commands/analytics.js +0 -69
  25. package/dist/commands/analytics.js.map +0 -1
  26. package/dist/commands/audit.d.ts +0 -19
  27. package/dist/commands/audit.js +0 -144
  28. package/dist/commands/audit.js.map +0 -1
  29. package/dist/commands/board.d.ts +0 -9
  30. package/dist/commands/board.js +0 -702
  31. package/dist/commands/board.js.map +0 -1
  32. package/dist/commands/cancel.d.ts +0 -46
  33. package/dist/commands/cancel.js +0 -239
  34. package/dist/commands/cancel.js.map +0 -1
  35. package/dist/commands/cron.d.ts +0 -8
  36. package/dist/commands/cron.js +0 -134
  37. package/dist/commands/cron.js.map +0 -1
  38. package/dist/commands/dashboard/tab-actions.d.ts +0 -10
  39. package/dist/commands/dashboard/tab-actions.js +0 -247
  40. package/dist/commands/dashboard/tab-actions.js.map +0 -1
  41. package/dist/commands/dashboard/tab-config.d.ts +0 -21
  42. package/dist/commands/dashboard/tab-config.js +0 -874
  43. package/dist/commands/dashboard/tab-config.js.map +0 -1
  44. package/dist/commands/dashboard/tab-logs.d.ts +0 -10
  45. package/dist/commands/dashboard/tab-logs.js +0 -202
  46. package/dist/commands/dashboard/tab-logs.js.map +0 -1
  47. package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
  48. package/dist/commands/dashboard/tab-schedules.js +0 -320
  49. package/dist/commands/dashboard/tab-schedules.js.map +0 -1
  50. package/dist/commands/dashboard/tab-status.d.ts +0 -32
  51. package/dist/commands/dashboard/tab-status.js +0 -424
  52. package/dist/commands/dashboard/tab-status.js.map +0 -1
  53. package/dist/commands/dashboard/types.d.ts +0 -42
  54. package/dist/commands/dashboard/types.js +0 -5
  55. package/dist/commands/dashboard/types.js.map +0 -1
  56. package/dist/commands/dashboard.d.ts +0 -11
  57. package/dist/commands/dashboard.js +0 -242
  58. package/dist/commands/dashboard.js.map +0 -1
  59. package/dist/commands/doctor.d.ts +0 -16
  60. package/dist/commands/doctor.js +0 -195
  61. package/dist/commands/doctor.js.map +0 -1
  62. package/dist/commands/history.d.ts +0 -7
  63. package/dist/commands/history.js +0 -49
  64. package/dist/commands/history.js.map +0 -1
  65. package/dist/commands/init.d.ts +0 -45
  66. package/dist/commands/install.d.ts +0 -65
  67. package/dist/commands/install.js +0 -405
  68. package/dist/commands/install.js.map +0 -1
  69. package/dist/commands/logs.d.ts +0 -15
  70. package/dist/commands/logs.js +0 -155
  71. package/dist/commands/logs.js.map +0 -1
  72. package/dist/commands/merge.d.ts +0 -26
  73. package/dist/commands/merge.js +0 -159
  74. package/dist/commands/merge.js.map +0 -1
  75. package/dist/commands/notify.d.ts +0 -7
  76. package/dist/commands/notify.js +0 -43
  77. package/dist/commands/notify.js.map +0 -1
  78. package/dist/commands/plan.d.ts +0 -19
  79. package/dist/commands/plan.js +0 -88
  80. package/dist/commands/plan.js.map +0 -1
  81. package/dist/commands/prd-state.d.ts +0 -12
  82. package/dist/commands/prd-state.js +0 -47
  83. package/dist/commands/prd-state.js.map +0 -1
  84. package/dist/commands/prd.d.ts +0 -18
  85. package/dist/commands/prd.js +0 -363
  86. package/dist/commands/prd.js.map +0 -1
  87. package/dist/commands/prds.d.ts +0 -13
  88. package/dist/commands/prds.js +0 -194
  89. package/dist/commands/prds.js.map +0 -1
  90. package/dist/commands/prs.d.ts +0 -14
  91. package/dist/commands/prs.js +0 -104
  92. package/dist/commands/prs.js.map +0 -1
  93. package/dist/commands/qa.d.ts +0 -34
  94. package/dist/commands/qa.js +0 -214
  95. package/dist/commands/qa.js.map +0 -1
  96. package/dist/commands/queue.d.ts +0 -8
  97. package/dist/commands/queue.js +0 -378
  98. package/dist/commands/queue.js.map +0 -1
  99. package/dist/commands/resolve.d.ts +0 -26
  100. package/dist/commands/resolve.js +0 -186
  101. package/dist/commands/resolve.js.map +0 -1
  102. package/dist/commands/retry.d.ts +0 -9
  103. package/dist/commands/retry.js +0 -71
  104. package/dist/commands/retry.js.map +0 -1
  105. package/dist/commands/review.d.ts +0 -82
  106. package/dist/commands/review.js +0 -479
  107. package/dist/commands/review.js.map +0 -1
  108. package/dist/commands/run.d.ts +0 -73
  109. package/dist/commands/serve.d.ts +0 -19
  110. package/dist/commands/serve.js +0 -142
  111. package/dist/commands/serve.js.map +0 -1
  112. package/dist/commands/shared/env-builder.d.ts +0 -49
  113. package/dist/commands/shared/env-builder.js +0 -151
  114. package/dist/commands/shared/env-builder.js.map +0 -1
  115. package/dist/commands/slice.d.ts +0 -35
  116. package/dist/commands/slice.js +0 -316
  117. package/dist/commands/slice.js.map +0 -1
  118. package/dist/commands/state.d.ts +0 -8
  119. package/dist/commands/state.js +0 -54
  120. package/dist/commands/state.js.map +0 -1
  121. package/dist/commands/status.d.ts +0 -14
  122. package/dist/commands/status.js +0 -297
  123. package/dist/commands/status.js.map +0 -1
  124. package/dist/commands/summary.d.ts +0 -14
  125. package/dist/commands/summary.js +0 -193
  126. package/dist/commands/summary.js.map +0 -1
  127. package/dist/commands/uninstall.d.ts +0 -25
  128. package/dist/commands/uninstall.js +0 -134
  129. package/dist/commands/uninstall.js.map +0 -1
  130. package/dist/commands/update.d.ts +0 -22
  131. package/dist/commands/update.js +0 -90
  132. package/dist/commands/update.js.map +0 -1
  133. package/dist/web/assets/index-BmRrWWHn.js +0 -406
  134. package/dist/web/assets/index-CgXj_KM1.css +0 -1
  135. package/dist/web/assets/index-Dr4zlyJf.js +0 -406
@@ -73,8 +73,8 @@
73
73
  animation: gradient-x 3s ease infinite;
74
74
  }
75
75
  </style>
76
- <script type="module" crossorigin src="/assets/index-BmRrWWHn.js"></script>
77
- <link rel="stylesheet" crossorigin href="/assets/index-CgXj_KM1.css">
76
+ <script type="module" crossorigin src="/assets/index-C3BV1Hoa.js"></script>
77
+ <link rel="stylesheet" crossorigin href="/assets/index-Ds8OqaCa.css">
78
78
  </head>
79
79
  <body class="bg-[#030712] text-slate-300 font-sans antialiased overflow-hidden selection:bg-indigo-500/30 selection:text-indigo-200">
80
80
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jonit-dev/night-watch-cli",
3
- "version": "1.8.10-beta.7",
3
+ "version": "1.8.11",
4
4
  "description": "AI agent that implements your specs, opens PRs, and reviews code overnight. Queue GitHub issues or PRDs, wake up to pull requests.",
5
5
  "type": "module",
6
6
  "bin": {
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- import 'reflect-metadata';
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Analytics command - runs the Amplitude analytics job
3
- */
4
- import { Command } from 'commander';
5
- export interface IAnalyticsOptions {
6
- dryRun: boolean;
7
- timeout?: string;
8
- provider?: string;
9
- }
10
- /**
11
- * Register the analytics command with the program
12
- */
13
- export declare function analyticsCommand(program: Command): void;
14
- //# sourceMappingURL=analytics.d.ts.map
@@ -1,69 +0,0 @@
1
- /**
2
- * Analytics command - runs the Amplitude analytics job
3
- */
4
- import { createSpinner, createTable, header, info, loadConfig, resolveJobProvider, runAnalytics, } from '@night-watch/core';
5
- import { maybeApplyCronSchedulingDelay } from './shared/env-builder.js';
6
- /**
7
- * Register the analytics command with the program
8
- */
9
- export function analyticsCommand(program) {
10
- program
11
- .command('analytics')
12
- .description('Run Amplitude analytics job now')
13
- .option('--dry-run', 'Show what would be executed without running')
14
- .option('--timeout <seconds>', 'Override max runtime in seconds')
15
- .option('--provider <string>', 'AI provider to use (claude or codex)')
16
- .action(async (options) => {
17
- const projectDir = process.cwd();
18
- let config = loadConfig(projectDir);
19
- if (options.timeout) {
20
- const timeout = parseInt(options.timeout, 10);
21
- if (!isNaN(timeout)) {
22
- config = { ...config, analytics: { ...config.analytics, maxRuntime: timeout } };
23
- }
24
- }
25
- if (options.provider) {
26
- config = {
27
- ...config,
28
- _cliProviderOverride: options.provider,
29
- };
30
- }
31
- if (!config.analytics.enabled && !options.dryRun) {
32
- info('Analytics is disabled in config; skipping run.');
33
- process.exit(0);
34
- }
35
- // Validate Amplitude keys
36
- const apiKey = config.providerEnv?.AMPLITUDE_API_KEY;
37
- const secretKey = config.providerEnv?.AMPLITUDE_SECRET_KEY;
38
- if (!apiKey || !secretKey) {
39
- info('AMPLITUDE_API_KEY and AMPLITUDE_SECRET_KEY must be set in providerEnv to run analytics.');
40
- process.exit(1);
41
- }
42
- if (options.dryRun) {
43
- header('Dry Run: Analytics Job');
44
- const analyticsProvider = resolveJobProvider(config, 'analytics');
45
- header('Configuration');
46
- const configTable = createTable({ head: ['Setting', 'Value'] });
47
- configTable.push(['Provider', analyticsProvider]);
48
- configTable.push(['Max Runtime', `${config.analytics.maxRuntime}s`]);
49
- configTable.push(['Lookback Days', String(config.analytics.lookbackDays)]);
50
- configTable.push(['Target Column', config.analytics.targetColumn]);
51
- configTable.push(['Amplitude API Key', apiKey ? '***' + apiKey.slice(-4) : 'not set']);
52
- console.log(configTable.toString());
53
- console.log();
54
- process.exit(0);
55
- }
56
- const spinner = createSpinner('Running analytics job...');
57
- spinner.start();
58
- try {
59
- await maybeApplyCronSchedulingDelay(config, 'analytics', projectDir);
60
- const result = await runAnalytics(config, projectDir);
61
- spinner.succeed(`Analytics complete — ${result.summary}`);
62
- }
63
- catch (err) {
64
- spinner.fail(`Analytics failed: ${err instanceof Error ? err.message : String(err)}`);
65
- process.exit(1);
66
- }
67
- });
68
- }
69
- //# sourceMappingURL=analytics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Audit command - runs the AI provider to scan the codebase for code quality issues
3
- */
4
- import { Command } from 'commander';
5
- import { INightWatchConfig } from '@night-watch/core';
6
- export interface IAuditOptions {
7
- dryRun: boolean;
8
- timeout?: string;
9
- provider?: string;
10
- }
11
- /**
12
- * Build environment variables map from config and CLI options for audit
13
- */
14
- export declare function buildEnvVars(config: INightWatchConfig, options: IAuditOptions): Record<string, string>;
15
- /**
16
- * Register the audit command with the program
17
- */
18
- export declare function auditCommand(program: Command): void;
19
- //# sourceMappingURL=audit.d.ts.map
@@ -1,144 +0,0 @@
1
- /**
2
- * Audit command - runs the AI provider to scan the codebase for code quality issues
3
- */
4
- import { CLAUDE_MODEL_IDS, PROVIDER_COMMANDS, createSpinner, createTable, dim, executeScriptWithOutput, getScriptPath, header, info, loadConfig, parseScriptResult, resolveJobProvider, syncAuditFindingsToBoard, } from '@night-watch/core';
5
- import * as fs from 'fs';
6
- import * as path from 'path';
7
- import { buildBaseEnvVars, getTelegramStatusWebhooks, maybeApplyCronSchedulingDelay, } from './shared/env-builder.js';
8
- /**
9
- * Build environment variables map from config and CLI options for audit
10
- */
11
- export function buildEnvVars(config, options) {
12
- // Start with base env vars shared by all job types
13
- const env = buildBaseEnvVars(config, 'audit', options.dryRun);
14
- // Audit-specific settings
15
- env.NW_AUDIT_MAX_RUNTIME = String(config.audit.maxRuntime);
16
- env.NW_CLAUDE_MODEL_ID =
17
- CLAUDE_MODEL_IDS[config.primaryFallbackModel ?? config.claudeModel ?? 'sonnet'];
18
- // Telegram status messages from bash scripts (start/progress/final status)
19
- const telegramWebhooks = getTelegramStatusWebhooks(config);
20
- if (telegramWebhooks.length > 0) {
21
- env.NW_TELEGRAM_STATUS_WEBHOOKS = JSON.stringify(telegramWebhooks);
22
- env.NW_TELEGRAM_BOT_TOKEN = telegramWebhooks[0].botToken;
23
- env.NW_TELEGRAM_CHAT_ID = telegramWebhooks[0].chatId;
24
- }
25
- return env;
26
- }
27
- /**
28
- * Register the audit command with the program
29
- */
30
- export function auditCommand(program) {
31
- program
32
- .command('audit')
33
- .description('Run AI provider code audit now')
34
- .option('--dry-run', 'Show what would be executed without running')
35
- .option('--timeout <seconds>', 'Override max runtime in seconds')
36
- .option('--provider <string>', 'AI provider to use (claude or codex)')
37
- .action(async (options) => {
38
- const projectDir = process.cwd();
39
- let config = loadConfig(projectDir);
40
- if (options.timeout) {
41
- const timeout = parseInt(options.timeout, 10);
42
- if (!isNaN(timeout)) {
43
- config = { ...config, audit: { ...config.audit, maxRuntime: timeout } };
44
- }
45
- }
46
- if (options.provider) {
47
- // Use _cliProviderOverride to ensure CLI flag takes precedence over jobProviders
48
- config = {
49
- ...config,
50
- _cliProviderOverride: options.provider,
51
- };
52
- }
53
- if (!config.audit.enabled && !options.dryRun) {
54
- info('Audit is disabled in config; skipping run.');
55
- process.exit(0);
56
- }
57
- const envVars = buildEnvVars(config, options);
58
- const scriptPath = getScriptPath('night-watch-audit-cron.sh');
59
- if (options.dryRun) {
60
- header('Dry Run: Code Auditor');
61
- // Resolve audit-specific provider
62
- const auditProvider = resolveJobProvider(config, 'audit');
63
- header('Configuration');
64
- const configTable = createTable({ head: ['Setting', 'Value'] });
65
- configTable.push(['Provider', auditProvider]);
66
- configTable.push(['Provider CLI', PROVIDER_COMMANDS[auditProvider]]);
67
- configTable.push(['Max Runtime', `${config.audit.maxRuntime}s`]);
68
- configTable.push(['Target Column', config.audit.targetColumn]);
69
- configTable.push(['Report File', path.join(projectDir, 'logs', 'audit-report.md')]);
70
- console.log(configTable.toString());
71
- header('Provider Invocation');
72
- const providerCmd = PROVIDER_COMMANDS[auditProvider];
73
- if (auditProvider === 'claude') {
74
- dim(` ${providerCmd} -p "<bundled night-watch-audit.md>" --dangerously-skip-permissions`);
75
- }
76
- else {
77
- dim(` ${providerCmd} exec --yolo "<bundled night-watch-audit.md>"`);
78
- }
79
- header('Command');
80
- dim(` bash ${scriptPath} ${projectDir}`);
81
- console.log();
82
- process.exit(0);
83
- }
84
- const spinner = createSpinner('Running code audit...');
85
- spinner.start();
86
- try {
87
- await maybeApplyCronSchedulingDelay(config, 'audit', projectDir);
88
- const { exitCode, stdout, stderr } = await executeScriptWithOutput(scriptPath, [projectDir], envVars);
89
- const scriptResult = parseScriptResult(`${stdout}\n${stderr}`);
90
- if (exitCode === 0) {
91
- if (scriptResult?.status === 'queued') {
92
- spinner.succeed('Code audit queued — another job is currently running');
93
- }
94
- else if (scriptResult?.status === 'skip_clean') {
95
- spinner.succeed('Code audit complete — no actionable issues found');
96
- }
97
- else if (scriptResult?.status?.startsWith('skip_')) {
98
- spinner.succeed('Code audit skipped');
99
- }
100
- else {
101
- const reportPath = path.join(projectDir, 'logs', 'audit-report.md');
102
- if (!fs.existsSync(reportPath)) {
103
- spinner.fail('Code audit finished without a report file');
104
- process.exit(1);
105
- }
106
- const syncResult = await syncAuditFindingsToBoard(config, projectDir);
107
- const message = `Code audit complete — report written to ${reportPath}; ${syncResult.summary}`;
108
- if (syncResult.status === 'failed' || syncResult.status === 'partial') {
109
- spinner.warn(message);
110
- }
111
- else {
112
- spinner.succeed(message);
113
- }
114
- }
115
- }
116
- else {
117
- const statusSuffix = scriptResult?.status ? ` (${scriptResult.status})` : '';
118
- const providerExit = scriptResult?.data?.provider_exit;
119
- const exitDetail = providerExit && providerExit !== String(exitCode)
120
- ? `, provider exit ${providerExit}`
121
- : '';
122
- spinner.fail(`Code audit exited with code ${exitCode}${statusSuffix}${exitDetail}`);
123
- // Print last audit log lines so the parent process captures the actual failure reason
124
- const logPath = path.join(projectDir, 'logs', 'audit.log');
125
- if (fs.existsSync(logPath)) {
126
- const logLines = fs
127
- .readFileSync(logPath, 'utf-8')
128
- .split('\n')
129
- .filter((l) => l.trim())
130
- .slice(-8);
131
- if (logLines.length > 0) {
132
- process.stderr.write(logLines.join('\n') + '\n');
133
- }
134
- }
135
- process.exit(exitCode || 1);
136
- }
137
- }
138
- catch (err) {
139
- spinner.fail(`Code audit failed: ${err instanceof Error ? err.message : String(err)}`);
140
- process.exit(1);
141
- }
142
- });
143
- }
144
- //# sourceMappingURL=audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Board command group — manage the PRD tracking board
3
- */
4
- import { Command } from 'commander';
5
- /**
6
- * Register the board command group with the program.
7
- */
8
- export declare function boardCommand(program: Command): void;
9
- //# sourceMappingURL=board.d.ts.map