@jonit-dev/night-watch-cli 1.8.10-beta.3 → 1.8.10-beta.4

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 (164) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +957 -1906
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/analytics.d.ts +14 -0
  6. package/dist/commands/analytics.d.ts.map +1 -0
  7. package/dist/commands/analytics.js +69 -0
  8. package/dist/commands/analytics.js.map +1 -0
  9. package/dist/commands/audit.d.ts +19 -0
  10. package/dist/commands/audit.d.ts.map +1 -0
  11. package/dist/commands/audit.js +144 -0
  12. package/dist/commands/audit.js.map +1 -0
  13. package/dist/commands/board.d.ts +9 -0
  14. package/dist/commands/board.d.ts.map +1 -0
  15. package/dist/commands/board.js +702 -0
  16. package/dist/commands/board.js.map +1 -0
  17. package/dist/commands/cancel.d.ts +46 -0
  18. package/dist/commands/cancel.d.ts.map +1 -0
  19. package/dist/commands/cancel.js +239 -0
  20. package/dist/commands/cancel.js.map +1 -0
  21. package/dist/commands/cron.d.ts +8 -0
  22. package/dist/commands/cron.d.ts.map +1 -0
  23. package/dist/commands/cron.js +134 -0
  24. package/dist/commands/cron.js.map +1 -0
  25. package/dist/commands/dashboard/tab-actions.d.ts +10 -0
  26. package/dist/commands/dashboard/tab-actions.d.ts.map +1 -0
  27. package/dist/commands/dashboard/tab-actions.js +247 -0
  28. package/dist/commands/dashboard/tab-actions.js.map +1 -0
  29. package/dist/commands/dashboard/tab-config.d.ts +21 -0
  30. package/dist/commands/dashboard/tab-config.d.ts.map +1 -0
  31. package/dist/commands/dashboard/tab-config.js +873 -0
  32. package/dist/commands/dashboard/tab-config.js.map +1 -0
  33. package/dist/commands/dashboard/tab-logs.d.ts +10 -0
  34. package/dist/commands/dashboard/tab-logs.d.ts.map +1 -0
  35. package/dist/commands/dashboard/tab-logs.js +202 -0
  36. package/dist/commands/dashboard/tab-logs.js.map +1 -0
  37. package/dist/commands/dashboard/tab-schedules.d.ts +21 -0
  38. package/dist/commands/dashboard/tab-schedules.d.ts.map +1 -0
  39. package/dist/commands/dashboard/tab-schedules.js +320 -0
  40. package/dist/commands/dashboard/tab-schedules.js.map +1 -0
  41. package/dist/commands/dashboard/tab-status.d.ts +32 -0
  42. package/dist/commands/dashboard/tab-status.d.ts.map +1 -0
  43. package/dist/commands/dashboard/tab-status.js +424 -0
  44. package/dist/commands/dashboard/tab-status.js.map +1 -0
  45. package/dist/commands/dashboard/types.d.ts +42 -0
  46. package/dist/commands/dashboard/types.d.ts.map +1 -0
  47. package/dist/commands/dashboard/types.js +5 -0
  48. package/dist/commands/dashboard/types.js.map +1 -0
  49. package/dist/commands/dashboard.d.ts +11 -0
  50. package/dist/commands/dashboard.d.ts.map +1 -0
  51. package/dist/commands/dashboard.js +242 -0
  52. package/dist/commands/dashboard.js.map +1 -0
  53. package/dist/commands/doctor.d.ts +16 -0
  54. package/dist/commands/doctor.d.ts.map +1 -0
  55. package/dist/commands/doctor.js +195 -0
  56. package/dist/commands/doctor.js.map +1 -0
  57. package/dist/commands/history.d.ts +7 -0
  58. package/dist/commands/history.d.ts.map +1 -0
  59. package/dist/commands/history.js +49 -0
  60. package/dist/commands/history.js.map +1 -0
  61. package/dist/commands/init.d.ts +45 -0
  62. package/dist/commands/init.d.ts.map +1 -0
  63. package/dist/commands/init.js +777 -0
  64. package/dist/commands/init.js.map +1 -0
  65. package/dist/commands/install.d.ts +65 -0
  66. package/dist/commands/install.d.ts.map +1 -0
  67. package/dist/commands/install.js +405 -0
  68. package/dist/commands/install.js.map +1 -0
  69. package/dist/commands/logs.d.ts +15 -0
  70. package/dist/commands/logs.d.ts.map +1 -0
  71. package/dist/commands/logs.js +155 -0
  72. package/dist/commands/logs.js.map +1 -0
  73. package/dist/commands/merge.d.ts +26 -0
  74. package/dist/commands/merge.d.ts.map +1 -0
  75. package/dist/commands/merge.js +159 -0
  76. package/dist/commands/merge.js.map +1 -0
  77. package/dist/commands/notify.d.ts +7 -0
  78. package/dist/commands/notify.d.ts.map +1 -0
  79. package/dist/commands/notify.js +43 -0
  80. package/dist/commands/notify.js.map +1 -0
  81. package/dist/commands/plan.d.ts +19 -0
  82. package/dist/commands/plan.d.ts.map +1 -0
  83. package/dist/commands/plan.js +88 -0
  84. package/dist/commands/plan.js.map +1 -0
  85. package/dist/commands/prd-state.d.ts +12 -0
  86. package/dist/commands/prd-state.d.ts.map +1 -0
  87. package/dist/commands/prd-state.js +47 -0
  88. package/dist/commands/prd-state.js.map +1 -0
  89. package/dist/commands/prd.d.ts +18 -0
  90. package/dist/commands/prd.d.ts.map +1 -0
  91. package/dist/commands/prd.js +363 -0
  92. package/dist/commands/prd.js.map +1 -0
  93. package/dist/commands/prds.d.ts +13 -0
  94. package/dist/commands/prds.d.ts.map +1 -0
  95. package/dist/commands/prds.js +194 -0
  96. package/dist/commands/prds.js.map +1 -0
  97. package/dist/commands/prs.d.ts +14 -0
  98. package/dist/commands/prs.d.ts.map +1 -0
  99. package/dist/commands/prs.js +104 -0
  100. package/dist/commands/prs.js.map +1 -0
  101. package/dist/commands/qa.d.ts +34 -0
  102. package/dist/commands/qa.d.ts.map +1 -0
  103. package/dist/commands/qa.js +214 -0
  104. package/dist/commands/qa.js.map +1 -0
  105. package/dist/commands/queue.d.ts +8 -0
  106. package/dist/commands/queue.d.ts.map +1 -0
  107. package/dist/commands/queue.js +378 -0
  108. package/dist/commands/queue.js.map +1 -0
  109. package/dist/commands/resolve.d.ts +26 -0
  110. package/dist/commands/resolve.d.ts.map +1 -0
  111. package/dist/commands/resolve.js +186 -0
  112. package/dist/commands/resolve.js.map +1 -0
  113. package/dist/commands/retry.d.ts +9 -0
  114. package/dist/commands/retry.d.ts.map +1 -0
  115. package/dist/commands/retry.js +71 -0
  116. package/dist/commands/retry.js.map +1 -0
  117. package/dist/commands/review.d.ts +82 -0
  118. package/dist/commands/review.d.ts.map +1 -0
  119. package/dist/commands/review.js +479 -0
  120. package/dist/commands/review.js.map +1 -0
  121. package/dist/commands/run.d.ts +73 -0
  122. package/dist/commands/run.d.ts.map +1 -0
  123. package/dist/commands/run.js +509 -0
  124. package/dist/commands/run.js.map +1 -0
  125. package/dist/commands/serve.d.ts +19 -0
  126. package/dist/commands/serve.d.ts.map +1 -0
  127. package/dist/commands/serve.js +142 -0
  128. package/dist/commands/serve.js.map +1 -0
  129. package/dist/commands/shared/env-builder.d.ts +49 -0
  130. package/dist/commands/shared/env-builder.d.ts.map +1 -0
  131. package/dist/commands/shared/env-builder.js +150 -0
  132. package/dist/commands/shared/env-builder.js.map +1 -0
  133. package/dist/commands/slice.d.ts +35 -0
  134. package/dist/commands/slice.d.ts.map +1 -0
  135. package/dist/commands/slice.js +316 -0
  136. package/dist/commands/slice.js.map +1 -0
  137. package/dist/commands/state.d.ts +8 -0
  138. package/dist/commands/state.d.ts.map +1 -0
  139. package/dist/commands/state.js +54 -0
  140. package/dist/commands/state.js.map +1 -0
  141. package/dist/commands/status.d.ts +14 -0
  142. package/dist/commands/status.d.ts.map +1 -0
  143. package/dist/commands/status.js +297 -0
  144. package/dist/commands/status.js.map +1 -0
  145. package/dist/commands/summary.d.ts +14 -0
  146. package/dist/commands/summary.d.ts.map +1 -0
  147. package/dist/commands/summary.js +193 -0
  148. package/dist/commands/summary.js.map +1 -0
  149. package/dist/commands/uninstall.d.ts +25 -0
  150. package/dist/commands/uninstall.d.ts.map +1 -0
  151. package/dist/commands/uninstall.js +134 -0
  152. package/dist/commands/uninstall.js.map +1 -0
  153. package/dist/commands/update.d.ts +22 -0
  154. package/dist/commands/update.d.ts.map +1 -0
  155. package/dist/commands/update.js +90 -0
  156. package/dist/commands/update.js.map +1 -0
  157. package/dist/scripts/night-watch-helpers.sh +52 -7
  158. package/dist/web/assets/index-CgXj_KM1.css +1 -0
  159. package/dist/web/assets/index-Dr4zlyJf.js +406 -0
  160. package/dist/web/index.html +2 -2
  161. package/package.json +1 -1
  162. package/dist/web/assets/index-BUgI2S1s.js +0 -406
  163. package/dist/web/assets/index-CkdLFBd7.js +0 -406
  164. package/dist/web/assets/index-RMfswANB.css +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuEvD"}
@@ -0,0 +1,69 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAEL,iBAAiB,EAalB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,aAAa,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgInD"}
@@ -0,0 +1,144 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/commands/board.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoMpC;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmrBnD"}