@cleaver/breakcheck 0.2.4 → 0.3.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 (50) hide show
  1. package/README.md +180 -13
  2. package/agent-guide.md +107 -0
  3. package/dist/cli/commands/baseline.d.ts +19 -0
  4. package/dist/cli/commands/baseline.js +133 -0
  5. package/dist/cli/commands/baseline.js.map +1 -0
  6. package/dist/cli/commands/check.d.ts +27 -0
  7. package/dist/cli/commands/check.js +204 -0
  8. package/dist/cli/commands/check.js.map +1 -0
  9. package/dist/cli/commands/clean.d.ts +25 -0
  10. package/dist/cli/commands/clean.js +123 -0
  11. package/dist/cli/commands/clean.js.map +1 -0
  12. package/dist/cli/commands/compare.js +28 -6
  13. package/dist/cli/commands/compare.js.map +1 -1
  14. package/dist/cli/commands/compile.d.ts +5 -0
  15. package/dist/cli/commands/compile.js +23 -0
  16. package/dist/cli/commands/compile.js.map +1 -0
  17. package/dist/cli/commands/help.js +173 -7
  18. package/dist/cli/commands/help.js.map +1 -1
  19. package/dist/cli/commands/init.d.ts +26 -0
  20. package/dist/cli/commands/init.js +224 -0
  21. package/dist/cli/commands/init.js.map +1 -0
  22. package/dist/cli/commands/list-snapshots.js +7 -3
  23. package/dist/cli/commands/list-snapshots.js.map +1 -1
  24. package/dist/cli/commands/new.d.ts +9 -0
  25. package/dist/cli/commands/new.js +27 -0
  26. package/dist/cli/commands/new.js.map +1 -0
  27. package/dist/cli/commands/snapshot.d.ts +20 -0
  28. package/dist/cli/commands/snapshot.js +128 -26
  29. package/dist/cli/commands/snapshot.js.map +1 -1
  30. package/dist/cli/commands/view.d.ts +1 -1
  31. package/dist/cli/commands/view.js +12 -6
  32. package/dist/cli/commands/view.js.map +1 -1
  33. package/dist/cli/config.d.ts +14 -0
  34. package/dist/cli/config.js +58 -0
  35. package/dist/cli/config.js.map +1 -0
  36. package/dist/cli/rules.d.ts +12 -0
  37. package/dist/cli/rules.js +110 -0
  38. package/dist/cli/rules.js.map +1 -0
  39. package/dist/cli/site-environment.d.ts +12 -0
  40. package/dist/cli/site-environment.js +231 -0
  41. package/dist/cli/site-environment.js.map +1 -0
  42. package/dist/cli/url-manifest.d.ts +18 -0
  43. package/dist/cli/url-manifest.js +63 -0
  44. package/dist/cli/url-manifest.js.map +1 -0
  45. package/dist/cli/utils.d.ts +1 -0
  46. package/dist/cli/utils.js +5 -2
  47. package/dist/cli/utils.js.map +1 -1
  48. package/dist/index.js +14 -0
  49. package/dist/index.js.map +1 -1
  50. package/package.json +8 -7
@@ -1,6 +1,7 @@
1
1
  import { InteractiveCommand } from "interactive-commander";
2
+ import { addConfigOptions } from "../config.js";
2
3
  import { configureLogger } from "../utils.js";
3
- export const helpCommand = new InteractiveCommand("help")
4
+ export const helpCommand = addConfigOptions(new InteractiveCommand("help")
4
5
  .description("Show detailed help for a specific command")
5
6
  .argument("[command]", "The command to show help for")
6
7
  .option("--json-logs", "Output logs in JSON format")
@@ -14,12 +15,31 @@ export const helpCommand = new InteractiveCommand("help")
14
15
  return;
15
16
  }
16
17
  switch (commandName.toLowerCase()) {
18
+ case "init":
19
+ showInitHelp(logger);
20
+ break;
21
+ case "new":
22
+ case "rule":
23
+ showNewRuleHelp(logger);
24
+ break;
25
+ case "compile":
26
+ showCompileHelp(logger);
27
+ break;
17
28
  case "snapshot":
18
29
  showSnapshotHelp(logger);
19
30
  break;
31
+ case "check":
32
+ showCheckHelp(logger);
33
+ break;
34
+ case "baseline":
35
+ showBaselineHelp(logger);
36
+ break;
20
37
  case "compare":
21
38
  showCompareHelp(logger);
22
39
  break;
40
+ case "clean":
41
+ showCleanHelp(logger);
42
+ break;
23
43
  case "view":
24
44
  showViewHelp(logger);
25
45
  break;
@@ -29,7 +49,7 @@ export const helpCommand = new InteractiveCommand("help")
29
49
  break;
30
50
  default:
31
51
  logger.error(`Unknown command: ${commandName}`);
32
- logger.info("Available commands: snapshot, compare, view, list-snapshots");
52
+ logger.info("Available commands: init, new rule, compile, snapshot, check, baseline update, compare, clean, view, list-snapshots");
33
53
  process.exit(1);
34
54
  }
35
55
  }
@@ -37,7 +57,7 @@ export const helpCommand = new InteractiveCommand("help")
37
57
  logger.error({ err: error }, "❌ Error showing help");
38
58
  process.exit(1);
39
59
  }
40
- });
60
+ }));
41
61
  function showGeneralHelp(logger) {
42
62
  logger.info("Breakcheck - A tool for comparing website states before and after changes");
43
63
  logger.info("");
@@ -46,11 +66,17 @@ function showGeneralHelp(logger) {
46
66
  logger.info(" 2. ⚙️ Make your changes (deploy, migrate, etc.)");
47
67
  logger.info(" 3. 📸 Take an 'after' snapshot: breakcheck snapshot --url <url> --name <name>");
48
68
  logger.info(" 4. 🔍 Compare the snapshots: breakcheck compare --before <name> --after <name>");
49
- logger.info(" 5. 📊 View the results: breakcheck view <comparison-name>");
69
+ logger.info(" 5. 📜️ View the results: breakcheck view <comparison-name>");
50
70
  logger.info("");
51
71
  logger.info("Available Commands:");
72
+ logger.info(" init Create a project configuration");
73
+ logger.info(" new rule Scaffold a rules.breakcheck file");
74
+ logger.info(" compile Compile rules.breakcheck to JSON");
52
75
  logger.info(" snapshot Create a snapshot of a website");
76
+ logger.info(" check Check exact routes against a stored baseline");
77
+ logger.info(" baseline update Update selected routes in the baseline");
53
78
  logger.info(" compare Compare two snapshots and save the results");
79
+ logger.info(" clean Delete stored snapshots or comparisons");
54
80
  logger.info(" view View the results of a comparison in your browser");
55
81
  logger.info(" list-snapshots List all available snapshots");
56
82
  logger.info(" help Show detailed help for a specific command");
@@ -58,14 +84,50 @@ function showGeneralHelp(logger) {
58
84
  logger.info("Global Options:");
59
85
  logger.info(" --json-logs Output logs in JSON format (useful for automation)");
60
86
  logger.info(" --no-json-logs Output logs in pretty format (default, user-friendly)");
87
+ logger.info(" --config <file> Select a project configuration file");
88
+ logger.info(" --no-config Disable project configuration discovery");
61
89
  logger.info("");
62
90
  logger.info("Examples:");
63
91
  logger.info(" breakcheck help snapshot");
92
+ logger.info(" breakcheck help check");
93
+ logger.info(" breakcheck help baseline");
64
94
  logger.info(" breakcheck help compare");
95
+ logger.info(" breakcheck help compile");
96
+ logger.info(" breakcheck help clean");
65
97
  logger.info(" breakcheck help view");
98
+ logger.info(" breakcheck help new");
66
99
  logger.info("");
67
100
  logger.info("For more information, visit: https://github.com/your-repo/breakcheck");
68
101
  }
102
+ function showCheckHelp(logger) {
103
+ logger.info("✅ CHECK COMMAND");
104
+ logger.info("================");
105
+ logger.info("");
106
+ logger.info("Build or prepare a local site, start its configured environment, and compare exact routes with the stored baseline.");
107
+ logger.info("");
108
+ logger.info("Usage:");
109
+ logger.info(" breakcheck check [--url <url>] [--json]");
110
+ logger.info("");
111
+ logger.info("Options:");
112
+ logger.info(" -u, --url <url> Use an already-running site and skip setup/start/stop");
113
+ logger.info(" --json Write one machine-readable report to stdout");
114
+ logger.info(" --config <file> Select a project configuration file");
115
+ logger.info(" --no-config Disable project configuration discovery");
116
+ logger.info("");
117
+ logger.info("Exit codes: 0 no differences, 1 differences, 2 setup/crawl failure.");
118
+ }
119
+ function showBaselineHelp(logger) {
120
+ logger.info("📌 BASELINE COMMAND");
121
+ logger.info("===================");
122
+ logger.info("");
123
+ logger.info("Update routes in the configured baseline snapshot. A normal check never changes the baseline.");
124
+ logger.info("");
125
+ logger.info("Usage:");
126
+ logger.info(" breakcheck baseline update --route <path...>");
127
+ logger.info(" breakcheck baseline update --all");
128
+ logger.info("");
129
+ logger.info("--route updates only the selected routes. --all updates the exact routes in check.routesFile.");
130
+ }
69
131
  function showSnapshotHelp(logger) {
70
132
  logger.info("📸 SNAPSHOT COMMAND");
71
133
  logger.info("===================");
@@ -76,7 +138,7 @@ function showSnapshotHelp(logger) {
76
138
  logger.info(" breakcheck snapshot [options]");
77
139
  logger.info("");
78
140
  logger.info("Required Options:");
79
- logger.info(" -u, --url <url> The base URL to start crawling from");
141
+ logger.info(" -u, --url <url> The base URL (or use baseUrl in project config)");
80
142
  logger.info("");
81
143
  logger.info("Optional Options:");
82
144
  logger.info(" -n, --name <name> A unique name for the snapshot");
@@ -85,7 +147,10 @@ function showSnapshotHelp(logger) {
85
147
  logger.info(" -c, --concurrency <number> Number of concurrent requests (default: 5)");
86
148
  logger.info(" -i, --include <patterns...> Glob patterns for URLs to include");
87
149
  logger.info(" -e, --exclude <patterns...> Glob patterns for URLs to exclude");
150
+ logger.info(" --no-include Clear configured include patterns");
151
+ logger.info(" --no-exclude Clear configured exclude patterns");
88
152
  logger.info(" -t, --type <type> The crawler to use: cheerio or playwright (default: cheerio)");
153
+ logger.info(" --url-file <path> Crawl exactly paths from a file, or '-' for stdin");
89
154
  logger.info(" -w, --write-urls <path> Generate a plain text file of all crawled URLs");
90
155
  logger.info(" --json-logs Output logs in JSON format");
91
156
  logger.info(" --no-json-logs Output logs in pretty format (default)");
@@ -106,8 +171,36 @@ function showSnapshotHelp(logger) {
106
171
  logger.info(" # Generate a URL list file");
107
172
  logger.info(" breakcheck snapshot --url https://my-website.com --write-urls ./crawled-urls.txt");
108
173
  logger.info("");
174
+ logger.info(" # Crawl only paths from a manifest file");
175
+ logger.info(" breakcheck snapshot --url https://my-website.com --url-file ./urls.txt");
176
+ logger.info("");
177
+ logger.info(" # Stream a generated manifest through stdin");
178
+ logger.info(" generate-url-list | breakcheck snapshot --url https://my-website.com --url-file -");
179
+ logger.info("");
109
180
  logger.info(" # Use JSON logging for automation");
110
181
  logger.info(" breakcheck snapshot --url https://my-website.com --json-logs");
182
+ logger.info("");
183
+ logger.info(" --config <file> Select a project configuration file");
184
+ logger.info(" --no-config Disable project configuration discovery");
185
+ }
186
+ function showInitHelp(logger) {
187
+ logger.info("⚙️ INIT COMMAND");
188
+ logger.info("===============");
189
+ logger.info("");
190
+ logger.info("Create a version-1 breakcheck.config.json without overwriting an existing file.");
191
+ logger.info("");
192
+ logger.info("Usage:");
193
+ logger.info(" breakcheck init [options]");
194
+ logger.info("");
195
+ logger.info("Options:");
196
+ logger.info(" -u, --url <url> Default base URL (optional)");
197
+ logger.info(" --storage-dir <directory> Artifact directory (optional)");
198
+ logger.info(" -r, --rules <directory> Default rules directory (optional)");
199
+ logger.info(" --config <destination-file> Destination file (default: breakcheck.config.json)");
200
+ logger.info(" --interactive Prompt for omitted values in a terminal");
201
+ logger.info(" -d, --depth <number> Default maximum crawl depth");
202
+ logger.info(" -c, --concurrency <number> Default concurrent requests");
203
+ logger.info(" -t, --type <type> Default crawler type");
111
204
  }
112
205
  function showCompareHelp(logger) {
113
206
  logger.info("🔍 COMPARE COMMAND");
@@ -125,6 +218,9 @@ function showCompareHelp(logger) {
125
218
  logger.info("Optional Options:");
126
219
  logger.info(" -o, --output <name> A name for the comparison output directory (default: compare_default)");
127
220
  logger.info(" -r, --rules <directory> Directory containing rules.breakcheck, relative to the current working directory (optional; omit for no rules)");
221
+ logger.info(" --no-rules Clear configured rules");
222
+ logger.info(" --config <file> Select a project configuration file");
223
+ logger.info(" --no-config Disable project configuration discovery");
128
224
  logger.info(" --json-logs Output logs in JSON format");
129
225
  logger.info(" --no-json-logs Output logs in pretty format (default)");
130
226
  logger.info("");
@@ -149,8 +245,74 @@ function showCompareHelp(logger) {
149
245
  logger.info(' css:img do: remove_attr attr:"srcset"');
150
246
  logger.info(' css:.timestamp do: rewrite_content regex:"\\d{2}/\\d{2}/\\d{4}" replace:"DATE_STAMP"');
151
247
  }
248
+ function showNewRuleHelp(logger) {
249
+ logger.info("✨ NEW RULE COMMAND");
250
+ logger.info("==================");
251
+ logger.info("");
252
+ logger.info("Creates a new ruleset directory containing rules.breakcheck.");
253
+ logger.info("");
254
+ logger.info("Usage:");
255
+ logger.info(" breakcheck new rule <name> [options]");
256
+ logger.info("");
257
+ logger.info("Options:");
258
+ logger.info(" -d, --directory <parent> Parent directory relative to the current directory");
259
+ logger.info(" --json-logs Output logs in JSON format");
260
+ logger.info(" --no-json-logs Output logs in pretty format (default)");
261
+ logger.info("");
262
+ logger.info("The name must be a single path-safe segment.");
263
+ logger.info("Existing rules.breakcheck files are never overwritten.");
264
+ logger.info("");
265
+ logger.info("Examples:");
266
+ logger.info(" breakcheck new rule my-rules");
267
+ logger.info(" breakcheck new rule dynamic --directory rules");
268
+ logger.info(" breakcheck compare --rules ./my-rules --before before --after after");
269
+ }
270
+ function showCompileHelp(logger) {
271
+ logger.info("🧩 COMPILE COMMAND");
272
+ logger.info("==================");
273
+ logger.info("");
274
+ logger.info("Compiles a rules.breakcheck DSL file to the intermediate JSON format.");
275
+ logger.info("");
276
+ logger.info("Usage:");
277
+ logger.info(" breakcheck compile <rules-directory>");
278
+ logger.info("");
279
+ logger.info("The directory must contain rules.breakcheck.");
280
+ logger.info("Relative paths resolve from the directory where breakcheck is run.");
281
+ logger.info("JSON is written to stdout with two-space indentation.");
282
+ logger.info("");
283
+ logger.info("Examples:");
284
+ logger.info(" breakcheck compile ./my-rules");
285
+ logger.info(" breakcheck compile ./my-rules > rules.json");
286
+ }
287
+ function showCleanHelp(logger) {
288
+ logger.info("🧹 CLEAN COMMAND");
289
+ logger.info("===============");
290
+ logger.info("");
291
+ logger.info("Deletes stored snapshots or comparisons.");
292
+ logger.info("");
293
+ logger.info("Usage:");
294
+ logger.info(" breakcheck clean snapshot [options]");
295
+ logger.info(" breakcheck clean comparison [options]");
296
+ logger.info("");
297
+ logger.info("Options:");
298
+ logger.info(" --name <name> Delete the named artifact");
299
+ logger.info(" --all Delete all artifacts of the selected type");
300
+ logger.info(" --force Skip confirmation; required for non-interactive use");
301
+ logger.info(" --json-logs Output logs in JSON format");
302
+ logger.info(" --no-json-logs Output logs in pretty format (default)");
303
+ logger.info(" --config <file> Select a project configuration file");
304
+ logger.info(" --no-config Disable project configuration discovery");
305
+ logger.info("");
306
+ logger.info("Provide either --name or --all. They cannot be combined.");
307
+ logger.info("When neither is provided in a terminal, Breakcheck prompts for a name.");
308
+ logger.info("");
309
+ logger.info("Examples:");
310
+ logger.info(" breakcheck clean snapshot --name before");
311
+ logger.info(" breakcheck clean comparison --name filtered --force");
312
+ logger.info(" breakcheck clean snapshot --all --force");
313
+ }
152
314
  function showViewHelp(logger) {
153
- logger.info("📊 VIEW COMMAND");
315
+ logger.info("📺️ VIEW COMMAND");
154
316
  logger.info("===============");
155
317
  logger.info("");
156
318
  logger.info("Starts a local web server to display the results of a comparison in a user-friendly interface.");
@@ -165,6 +327,8 @@ function showViewHelp(logger) {
165
327
  logger.info(" -p, --port <number> The port to run the view server on (default: 8080; uses the next available port when omitted)");
166
328
  logger.info(" --json-logs Output logs in JSON format");
167
329
  logger.info(" --no-json-logs Output logs in pretty format (default)");
330
+ logger.info(" --config <file> Select a project configuration file");
331
+ logger.info(" --no-config Disable project configuration discovery");
168
332
  logger.info("");
169
333
  logger.info("Examples:");
170
334
  logger.info(" # View default comparison");
@@ -186,7 +350,7 @@ function showViewHelp(logger) {
186
350
  logger.info(" 4. Press Ctrl+C to stop the server");
187
351
  }
188
352
  function showListSnapshotsHelp(logger) {
189
- logger.info("📋 LIST-SNAPSHOTS COMMAND");
353
+ logger.info("📜️ LIST-SNAPSHOTS COMMAND");
190
354
  logger.info("=========================");
191
355
  logger.info("");
192
356
  logger.info("Lists all snapshots that have been saved locally.");
@@ -201,6 +365,8 @@ function showListSnapshotsHelp(logger) {
201
365
  logger.info("Options:");
202
366
  logger.info(" --json-logs Output logs in JSON format");
203
367
  logger.info(" --no-json-logs Output logs in pretty format (default)");
368
+ logger.info(" --config <file> Select a project configuration file");
369
+ logger.info(" --no-config Disable project configuration discovery");
204
370
  logger.info("");
205
371
  logger.info("Output Format:");
206
372
  logger.info(" The command outputs a table showing:");
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type ProjectConfig } from "@cleaver/breakcheck-core";
2
+ import { InteractiveCommand } from "interactive-commander";
3
+ export interface InitCommandOptions {
4
+ config?: string;
5
+ url?: string;
6
+ storageDir?: string;
7
+ rules?: string;
8
+ interactive?: boolean;
9
+ type?: string;
10
+ depth?: string;
11
+ concurrency?: string;
12
+ jsonLogs?: boolean;
13
+ noJsonLogs?: boolean;
14
+ }
15
+ export interface InitPromptAdapter {
16
+ isInteractive: boolean;
17
+ ask: (question: string) => Promise<string>;
18
+ }
19
+ export interface InitResult {
20
+ configPath: string;
21
+ storageDir: string;
22
+ config: ProjectConfig;
23
+ }
24
+ /** Builds and writes a new project configuration. */
25
+ export declare function runInit(options: InitCommandOptions, cwd?: string, prompts?: InitPromptAdapter, args?: readonly string[]): Promise<InitResult>;
26
+ export declare const initCommand: InteractiveCommand;
@@ -0,0 +1,224 @@
1
+ import { resolveProjectConfig, writeProjectConfig, } from "@cleaver/breakcheck-core";
2
+ import { createInterface } from "node:readline/promises";
3
+ import { stdin, stdout } from "node:process";
4
+ import path from "node:path";
5
+ import { InteractiveCommand } from "interactive-commander";
6
+ import { configureLogger } from "../utils.js";
7
+ const DEFAULT_CRAWLER_TYPE = "cheerio";
8
+ const DEFAULT_MAX_DEPTH = 3;
9
+ const DEFAULT_MAX_CONCURRENCY = 5;
10
+ function createDefaultPrompts() {
11
+ const isInteractive = Boolean(stdin.isTTY && stdout.isTTY);
12
+ return {
13
+ isInteractive,
14
+ ask: async (question) => {
15
+ const readline = createInterface({ input: stdin, output: stdout });
16
+ try {
17
+ return await readline.question(question);
18
+ }
19
+ finally {
20
+ readline.close();
21
+ }
22
+ },
23
+ };
24
+ }
25
+ function parseInteger(value, fallback, field, minimum) {
26
+ if (value === undefined || value.trim() === "")
27
+ return fallback;
28
+ const parsed = Number(value);
29
+ if (!Number.isInteger(parsed) || parsed < minimum) {
30
+ throw new Error(`${field} must be an integer greater than or equal to ${minimum}.`);
31
+ }
32
+ return parsed;
33
+ }
34
+ function validateCrawlerType(value) {
35
+ const crawlerType = value ?? DEFAULT_CRAWLER_TYPE;
36
+ if (crawlerType !== "cheerio" && crawlerType !== "playwright") {
37
+ throw new Error('Crawler type must be either "cheerio" or "playwright".');
38
+ }
39
+ return crawlerType;
40
+ }
41
+ function validateBaseUrl(value) {
42
+ if (value === undefined)
43
+ return;
44
+ const parsed = new URL(value);
45
+ if ((parsed.protocol !== "http:" && parsed.protocol !== "https:") ||
46
+ !parsed.hostname) {
47
+ throw new Error("Base URL must be a valid HTTP(S) URL.");
48
+ }
49
+ }
50
+ function relativeConfigPath(destination, target) {
51
+ const relative = path.relative(path.dirname(destination), path.resolve(target));
52
+ return relative === "" ? "." : relative;
53
+ }
54
+ function validateOptionalPath(value, field) {
55
+ if (value !== undefined && value.trim().length === 0) {
56
+ throw new Error(`${field} must not be empty.`);
57
+ }
58
+ }
59
+ function optionFromArgs(args, option) {
60
+ for (let index = 0; index < args.length; index += 1) {
61
+ const argument = args[index];
62
+ if (argument === option)
63
+ return args[index + 1];
64
+ if (argument.startsWith(`${option}=`)) {
65
+ return argument.slice(option.length + 1);
66
+ }
67
+ }
68
+ return undefined;
69
+ }
70
+ async function collectInteractiveOptions(options, prompts) {
71
+ if (!prompts.isInteractive) {
72
+ throw new Error("--interactive requires a terminal.");
73
+ }
74
+ const askOptional = async (value, question) => {
75
+ if (value !== undefined)
76
+ return value;
77
+ const answer = (await prompts.ask(question)).trim();
78
+ return answer === "" ? undefined : answer;
79
+ };
80
+ const askDefault = async (value, question, fallback) => {
81
+ if (value !== undefined)
82
+ return value;
83
+ const answer = (await prompts.ask(question)).trim();
84
+ return answer === "" ? fallback : answer;
85
+ };
86
+ let url = await askOptional(options.url, "Base URL (optional; press Enter to skip): ");
87
+ if (options.url !== undefined) {
88
+ validateBaseUrl(url);
89
+ }
90
+ else {
91
+ while (url !== undefined) {
92
+ try {
93
+ validateBaseUrl(url);
94
+ break;
95
+ }
96
+ catch {
97
+ url = await askOptional(undefined, "Invalid URL. Base URL (optional; press Enter to skip): ");
98
+ }
99
+ }
100
+ }
101
+ const storageDir = await askOptional(options.storageDir, "Storage directory (optional; press Enter to keep legacy storage): ");
102
+ const rules = await askOptional(options.rules, "Rules directory (optional; press Enter to skip): ");
103
+ let type = await askDefault(options.type, "Crawler type (cheerio or playwright) [cheerio]: ", DEFAULT_CRAWLER_TYPE);
104
+ if (options.type !== undefined) {
105
+ validateCrawlerType(type);
106
+ }
107
+ else {
108
+ while (true) {
109
+ try {
110
+ validateCrawlerType(type);
111
+ break;
112
+ }
113
+ catch {
114
+ type = await askDefault(undefined, "Invalid crawler type. Crawler type (cheerio or playwright) [cheerio]: ", DEFAULT_CRAWLER_TYPE);
115
+ }
116
+ }
117
+ }
118
+ let depth = await askDefault(options.depth, "Maximum crawl depth [3]: ", "3");
119
+ if (options.depth !== undefined) {
120
+ parseInteger(depth, DEFAULT_MAX_DEPTH, "Depth", 0);
121
+ }
122
+ else {
123
+ while (true) {
124
+ try {
125
+ parseInteger(depth, DEFAULT_MAX_DEPTH, "Depth", 0);
126
+ break;
127
+ }
128
+ catch {
129
+ depth = await askDefault(undefined, "Invalid depth. Maximum crawl depth [3]: ", "3");
130
+ }
131
+ }
132
+ }
133
+ let concurrency = await askDefault(options.concurrency, "Maximum concurrency [5]: ", "5");
134
+ if (options.concurrency !== undefined) {
135
+ parseInteger(concurrency, DEFAULT_MAX_CONCURRENCY, "Concurrency", 1);
136
+ }
137
+ else {
138
+ while (true) {
139
+ try {
140
+ parseInteger(concurrency, DEFAULT_MAX_CONCURRENCY, "Concurrency", 1);
141
+ break;
142
+ }
143
+ catch {
144
+ concurrency = await askDefault(undefined, "Invalid concurrency. Maximum concurrency [5]: ", "5");
145
+ }
146
+ }
147
+ }
148
+ return {
149
+ ...options,
150
+ url,
151
+ storageDir,
152
+ rules,
153
+ type,
154
+ depth,
155
+ concurrency,
156
+ };
157
+ }
158
+ /** Builds and writes a new project configuration. */
159
+ export async function runInit(options, cwd = process.cwd(), prompts = createDefaultPrompts(), args = process.argv.slice(2)) {
160
+ const effectiveOptions = options.interactive
161
+ ? await collectInteractiveOptions(options, prompts)
162
+ : options;
163
+ const absoluteCwd = path.resolve(cwd);
164
+ const destination = path.resolve(absoluteCwd, effectiveOptions.config ??
165
+ optionFromArgs(args, "--config") ??
166
+ "breakcheck.config.json");
167
+ const legacyConfig = await resolveProjectConfig({
168
+ cwd: absoluteCwd,
169
+ noConfig: true,
170
+ });
171
+ validateOptionalPath(effectiveOptions.storageDir, "--storage-dir");
172
+ validateOptionalPath(effectiveOptions.rules, "--rules");
173
+ const storageDir = path.resolve(absoluteCwd, effectiveOptions.storageDir ?? legacyConfig.storageDir);
174
+ const crawl = {
175
+ crawlerType: validateCrawlerType(effectiveOptions.type),
176
+ maxDepth: parseInteger(effectiveOptions.depth, DEFAULT_MAX_DEPTH, "Depth", 0),
177
+ maxConcurrency: parseInteger(effectiveOptions.concurrency, DEFAULT_MAX_CONCURRENCY, "Concurrency", 1),
178
+ includePatterns: [],
179
+ excludePatterns: [],
180
+ };
181
+ const config = {
182
+ version: 1,
183
+ ...(effectiveOptions.url === undefined
184
+ ? {}
185
+ : { baseUrl: effectiveOptions.url }),
186
+ storageDir: relativeConfigPath(destination, storageDir),
187
+ crawl,
188
+ ...(effectiveOptions.rules === undefined
189
+ ? {}
190
+ : {
191
+ comparison: {
192
+ rulesDir: relativeConfigPath(destination, path.resolve(absoluteCwd, effectiveOptions.rules)),
193
+ },
194
+ }),
195
+ };
196
+ await writeProjectConfig(destination, config);
197
+ return { configPath: destination, storageDir, config };
198
+ }
199
+ export const initCommand = new InteractiveCommand("init")
200
+ .description("Create a breakcheck.config.json project configuration")
201
+ .option("-u, --url <url>", "Default base URL to crawl")
202
+ .option("--storage-dir <directory>", "Artifact directory for snapshots and comparisons")
203
+ .option("-r, --rules <directory>", "Default directory containing rules.breakcheck")
204
+ .option("--config <destination-file>", "Destination configuration file")
205
+ .option("--interactive", "Prompt for omitted configuration values")
206
+ .option("-d, --depth <number>", "Default maximum crawl depth")
207
+ .option("-c, --concurrency <number>", "Default concurrent requests")
208
+ .option("-t, --type <type>", "Default crawler type (cheerio or playwright)")
209
+ .option("--json-logs", "Output logs in JSON format")
210
+ .option("--no-json-logs", "Output logs in pretty format (default)")
211
+ .action(async (options) => {
212
+ const logger = configureLogger(options);
213
+ try {
214
+ const result = await runInit(options);
215
+ logger.info(`✅ Created configuration: ${result.configPath}`);
216
+ logger.info(`📦 Artifact storage: ${result.storageDir}`);
217
+ logger.info(`Next: breakcheck snapshot${result.config.baseUrl ? "" : " --url <url>"}`);
218
+ }
219
+ catch (error) {
220
+ logger.error({ err: error }, "❌ Error creating configuration");
221
+ process.exit(1);
222
+ }
223
+ });
224
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { listSnapshots } from "@cleaver/breakcheck-core";
2
2
  import { InteractiveCommand } from "interactive-commander";
3
+ import { addConfigOptions, resolveCliProjectConfig } from "../config.js";
3
4
  import { configureLogger } from "../utils.js";
4
- export const listSnapshotsCommand = new InteractiveCommand("list-snapshots")
5
+ export const listSnapshotsCommand = addConfigOptions(new InteractiveCommand("list-snapshots")
5
6
  .description("List all available snapshots")
6
7
  .alias("lss")
7
8
  .option("--json-logs", "Output logs in JSON format")
@@ -10,8 +11,11 @@ export const listSnapshotsCommand = new InteractiveCommand("list-snapshots")
10
11
  // Configure logger based on options
11
12
  const logger = configureLogger(options);
12
13
  try {
14
+ const projectConfig = await resolveCliProjectConfig();
13
15
  // Get snapshots
14
- const snapshots = await listSnapshots();
16
+ const snapshots = await listSnapshots({
17
+ storageDir: projectConfig.storageDir,
18
+ });
15
19
  // Display results
16
20
  if (snapshots.length === 0) {
17
21
  logger.info("No snapshots found");
@@ -38,5 +42,5 @@ export const listSnapshotsCommand = new InteractiveCommand("list-snapshots")
38
42
  logger.error({ err: error }, "❌ Error listing snapshots");
39
43
  process.exit(1);
40
44
  }
41
- });
45
+ }));
42
46
  //# sourceMappingURL=list-snapshots.js.map