@hapergg/harness-comet-cli 0.1.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 (38) hide show
  1. package/bin/harness-comet.js +7 -0
  2. package/dist/commands/comet.d.ts +8 -0
  3. package/dist/commands/comet.d.ts.map +1 -0
  4. package/dist/commands/comet.js +500 -0
  5. package/dist/commands/comet.js.map +1 -0
  6. package/dist/commands/create.d.ts +16 -0
  7. package/dist/commands/create.d.ts.map +1 -0
  8. package/dist/commands/create.js +69 -0
  9. package/dist/commands/create.js.map +1 -0
  10. package/dist/commands/impact.d.ts +8 -0
  11. package/dist/commands/impact.d.ts.map +1 -0
  12. package/dist/commands/impact.js +108 -0
  13. package/dist/commands/impact.js.map +1 -0
  14. package/dist/commands/init.d.ts +19 -0
  15. package/dist/commands/init.d.ts.map +1 -0
  16. package/dist/commands/init.js +249 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/dev-bin.d.ts +2 -0
  19. package/dist/dev-bin.d.ts.map +1 -0
  20. package/dist/dev-bin.js +6 -0
  21. package/dist/dev-bin.js.map +1 -0
  22. package/dist/index.d.ts +6 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +393 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/package-info.d.ts +6 -0
  27. package/dist/package-info.d.ts.map +1 -0
  28. package/dist/package-info.js +6 -0
  29. package/dist/package-info.js.map +1 -0
  30. package/dist/templates/incident.d.ts +3 -0
  31. package/dist/templates/incident.d.ts.map +1 -0
  32. package/dist/templates/incident.js +26 -0
  33. package/dist/templates/incident.js.map +1 -0
  34. package/dist/templates/playwright-mode.d.ts +12 -0
  35. package/dist/templates/playwright-mode.d.ts.map +1 -0
  36. package/dist/templates/playwright-mode.js +225 -0
  37. package/dist/templates/playwright-mode.js.map +1 -0
  38. package/package.json +58 -0
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import { main } from "../dist/index.js";
3
+
4
+ main(process.argv).catch((error) => {
5
+ console.error(error instanceof Error ? error.message : String(error));
6
+ process.exitCode = 10;
7
+ });
@@ -0,0 +1,8 @@
1
+ import type { Command } from "commander";
2
+ interface GlobalOptions {
3
+ root?: string;
4
+ json?: boolean;
5
+ }
6
+ export declare function registerCometCommands(program: Command, withErrors: (action: (...args: any[]) => Promise<void>) => (...args: any[]) => Promise<void>, getOptions: () => GlobalOptions): void;
7
+ export {};
8
+ //# sourceMappingURL=comet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comet.d.ts","sourceRoot":"","sources":["../../src/commands/comet.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAmBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EAC5F,UAAU,EAAE,MAAM,aAAa,GAC9B,IAAI,CAoLN"}
@@ -0,0 +1,500 @@
1
+ import { HarnessError, mapErrorToExitCode } from "@hapergg/harness-comet-core";
2
+ import { execFile } from "node:child_process";
3
+ import fs from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { initHarnessProject } from "./init.js";
7
+ const execFileAsync = promisify(execFile);
8
+ export function registerCometCommands(program, withErrors, getOptions) {
9
+ const comet = program.command("comet").description("Optional Comet integration commands");
10
+ const hook = comet.command("hook").description("Comet phase validators");
11
+ hook
12
+ .command("open")
13
+ .requiredOption("--change <change>", "change id")
14
+ .action(withErrors(async (commandOptions) => {
15
+ const options = getOptions();
16
+ const report = await runCometHook("open", options.root ?? process.cwd(), commandOptions.change);
17
+ if (options.json) {
18
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
19
+ return;
20
+ }
21
+ process.stdout.write(formatHookReport(report));
22
+ }));
23
+ hook
24
+ .command("design")
25
+ .requiredOption("--change <change>", "change id")
26
+ .action(withErrors(async (commandOptions) => {
27
+ const options = getOptions();
28
+ const report = await runCometHook("design", options.root ?? process.cwd(), commandOptions.change);
29
+ if (options.json) {
30
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
31
+ return;
32
+ }
33
+ process.stdout.write(formatHookReport(report));
34
+ }));
35
+ hook
36
+ .command("build")
37
+ .requiredOption("--change <change>", "change id")
38
+ .action(withErrors(async (commandOptions) => {
39
+ const options = getOptions();
40
+ const report = await runCometHook("build", options.root ?? process.cwd(), commandOptions.change);
41
+ if (options.json) {
42
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
43
+ return;
44
+ }
45
+ process.stdout.write(formatHookReport(report));
46
+ }));
47
+ comet
48
+ .command("archive-check")
49
+ .requiredOption("--change <change>", "change id")
50
+ .action(withErrors(async (commandOptions) => {
51
+ const options = getOptions();
52
+ const report = await archiveCheckComet(options.root ?? process.cwd(), commandOptions.change);
53
+ if (options.json) {
54
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
55
+ return;
56
+ }
57
+ process.stdout.write(formatArchiveCheckReport(report));
58
+ }));
59
+ comet
60
+ .command("bind")
61
+ .requiredOption("--change <change>", "change id")
62
+ .action(withErrors(async (commandOptions) => {
63
+ const options = getOptions();
64
+ const report = await bindComet(options.root ?? process.cwd(), commandOptions.change);
65
+ if (options.json) {
66
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
67
+ return;
68
+ }
69
+ process.stdout.write(formatBindReport(report));
70
+ }));
71
+ comet
72
+ .command("verify")
73
+ .requiredOption("--change <change>", "change id")
74
+ .action(withErrors(async (commandOptions) => {
75
+ const options = getOptions();
76
+ const report = await verifyComet(options.root ?? process.cwd(), commandOptions.change);
77
+ if (options.json) {
78
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
79
+ return;
80
+ }
81
+ process.stdout.write(formatVerifyReport(report));
82
+ process.exitCode =
83
+ report.result === "passed" || report.result === "not-applicable"
84
+ ? 0
85
+ : report.result === "failed"
86
+ ? 1
87
+ : 4;
88
+ }));
89
+ comet
90
+ .command("diff")
91
+ .action(withErrors(async () => {
92
+ const options = getOptions();
93
+ const report = await diffComet(options.root ?? process.cwd());
94
+ if (options.json) {
95
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
96
+ return;
97
+ }
98
+ process.stdout.write(formatDiffReport(report));
99
+ process.exitCode = report.comet.installed && report.comet.supported ? 0 : 6;
100
+ }));
101
+ comet
102
+ .command("sync")
103
+ .action(withErrors(async () => {
104
+ const options = getOptions();
105
+ const report = await syncComet(options.root ?? process.cwd());
106
+ if (options.json) {
107
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
108
+ return;
109
+ }
110
+ process.stdout.write(formatInstallReport(report));
111
+ process.exitCode = report.comet.installed && report.comet.supported ? 0 : 6;
112
+ }));
113
+ comet
114
+ .command("uninstall")
115
+ .option("--platform <id>", "platform id", collect, [])
116
+ .option("--unbind", "clear verify_command bindings managed by harness-comet when supported")
117
+ .action(withErrors(async (commandOptions) => {
118
+ const options = getOptions();
119
+ const report = await uninstallComet(options.root ?? process.cwd(), commandOptions);
120
+ if (options.json) {
121
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
122
+ return;
123
+ }
124
+ process.stdout.write(formatUninstallReport(report));
125
+ process.exitCode = report.comet.installed && report.comet.supported ? 0 : 6;
126
+ }));
127
+ comet
128
+ .command("install")
129
+ .option("--platform <id>", "platform id", collect, [])
130
+ .option("--all-detected", "install for all detected project-local targets")
131
+ .option("--yes", "accept non-interactive install defaults")
132
+ .option("--init-harness", "initialize Harness assets after Comet install when missing")
133
+ .option("--mode <runtime|playwright>", "Harness mode for --init-harness", "runtime")
134
+ .option("--adapter <memory|playwright>", "Harness adapter template for --init-harness", "memory")
135
+ .option("--test-dir <path>", "Playwright test directory for --mode playwright", "tests")
136
+ .option("--skip-install", "write Harness files without running dependency install")
137
+ .option("--skip-browsers", "skip Playwright browser installation")
138
+ .option("--install-browsers", "install Playwright Chromium after initializing Harness")
139
+ .option("--dry-run", "show the write plan without changing files")
140
+ .option("--force", "overwrite files already managed by harness-comet or files explicitly allowed by the installer")
141
+ .action(withErrors(async (commandOptions) => {
142
+ const options = getOptions();
143
+ const root = options.root ?? process.cwd();
144
+ const report = await installComet(root, commandOptions);
145
+ const harness = await maybeInitHarness(root, commandOptions);
146
+ if (options.json) {
147
+ process.stdout.write(`${JSON.stringify({ ...report, harness }, null, 2)}\n`);
148
+ return;
149
+ }
150
+ process.stdout.write(formatInstallReport(report, harness));
151
+ process.exitCode = report.comet.installed && report.comet.supported ? 0 : 6;
152
+ }));
153
+ comet.command("doctor").action(withErrors(async () => {
154
+ const options = getOptions();
155
+ const report = await doctorComet(options.root ?? process.cwd());
156
+ if (options.json) {
157
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
158
+ return;
159
+ }
160
+ process.stdout.write(formatDiscoveryReport(report));
161
+ process.exitCode = report.comet.installed && report.comet.supported ? 0 : 6;
162
+ }));
163
+ }
164
+ function collect(value, previous) {
165
+ previous.push(value);
166
+ return previous;
167
+ }
168
+ async function doctorComet(projectRoot) {
169
+ try {
170
+ const adapter = await loadCometAdapter();
171
+ return await adapter.buildCometDiscoveryReport(projectRoot);
172
+ }
173
+ catch (error) {
174
+ if (error instanceof HarnessError)
175
+ throw error;
176
+ const message = error instanceof Error ? error.message : String(error);
177
+ const exitCode = mapErrorToExitCode(error);
178
+ process.exitCode = exitCode === 10 ? 6 : exitCode;
179
+ throw new Error(`Unable to load comet-adapter: ${message}`);
180
+ }
181
+ }
182
+ async function installComet(projectRoot, commandOptions) {
183
+ const adapter = await loadCometAdapter();
184
+ return await adapter.installCometIntegration({
185
+ projectRoot,
186
+ platformIds: commandOptions.platform ?? [],
187
+ allDetected: commandOptions.allDetected,
188
+ yes: commandOptions.yes,
189
+ dryRun: commandOptions.dryRun,
190
+ force: commandOptions.force,
191
+ projectMode: commandOptions.mode
192
+ });
193
+ }
194
+ async function maybeInitHarness(projectRoot, commandOptions) {
195
+ const configPath = path.join(projectRoot, "harness-comet.config.ts");
196
+ const exists = await fileExists(configPath);
197
+ const mode = commandOptions.mode ?? "runtime";
198
+ const adapter = commandOptions.adapter ?? "memory";
199
+ if (commandOptions.dryRun) {
200
+ return {
201
+ requested: Boolean(commandOptions.initHarness),
202
+ initialized: false,
203
+ adapter: commandOptions.initHarness ? adapter : undefined,
204
+ created: [],
205
+ skipped: [],
206
+ hint: exists
207
+ ? undefined
208
+ : `Harness is not initialized. Run: harness-comet init --mode ${mode} --yes`,
209
+ browsers: browserSummaryForSkippedInstall(commandOptions, adapter, "dry-run")
210
+ };
211
+ }
212
+ if (commandOptions.initHarness) {
213
+ if (exists) {
214
+ return {
215
+ requested: true,
216
+ initialized: false,
217
+ adapter,
218
+ created: [],
219
+ skipped: ["harness-comet.config.ts"],
220
+ browsers: await maybeInstallBrowsers(projectRoot, commandOptions, adapter)
221
+ };
222
+ }
223
+ const result = await initHarnessProject({
224
+ root: projectRoot,
225
+ mode,
226
+ adapter,
227
+ testDir: commandOptions.testDir,
228
+ install: commandOptions.skipInstall ? false : true,
229
+ installBrowsers: commandOptions.skipBrowsers
230
+ ? false
231
+ : commandOptions.installBrowsers !== false
232
+ });
233
+ return {
234
+ requested: true,
235
+ initialized: true,
236
+ adapter,
237
+ created: result.created,
238
+ skipped: result.skipped,
239
+ browsers: await maybeInstallBrowsers(projectRoot, commandOptions, adapter)
240
+ };
241
+ }
242
+ return {
243
+ requested: false,
244
+ initialized: false,
245
+ created: [],
246
+ skipped: [],
247
+ hint: exists ? undefined : `Harness is not initialized. Run: harness-comet init --mode ${mode} --yes`,
248
+ browsers: browserSummaryForSkippedInstall(commandOptions, adapter, "--install-browsers requires --init-harness")
249
+ };
250
+ }
251
+ function browserSummaryForSkippedInstall(commandOptions, adapter, reason) {
252
+ if (!commandOptions.installBrowsers)
253
+ return undefined;
254
+ if (adapter !== "playwright") {
255
+ return {
256
+ requested: true,
257
+ installed: false,
258
+ skippedReason: "--install-browsers requires --adapter playwright"
259
+ };
260
+ }
261
+ return {
262
+ requested: true,
263
+ installed: false,
264
+ skippedReason: reason
265
+ };
266
+ }
267
+ async function maybeInstallBrowsers(projectRoot, commandOptions, adapter) {
268
+ if (!commandOptions.installBrowsers)
269
+ return undefined;
270
+ if (adapter !== "playwright") {
271
+ return {
272
+ requested: true,
273
+ installed: false,
274
+ skippedReason: "--install-browsers requires --adapter playwright"
275
+ };
276
+ }
277
+ const command = await installPlaywrightBrowsers(projectRoot);
278
+ return {
279
+ requested: true,
280
+ installed: true,
281
+ command
282
+ };
283
+ }
284
+ async function installPlaywrightBrowsers(projectRoot) {
285
+ const override = process.env.HARNESS_COMET_PLAYWRIGHT_INSTALL_BIN;
286
+ if (override) {
287
+ await execFileAsync(override, [projectRoot], {
288
+ cwd: projectRoot,
289
+ maxBuffer: 10 * 1024 * 1024
290
+ });
291
+ return override;
292
+ }
293
+ const command = "pnpm";
294
+ const args = [
295
+ "--filter",
296
+ "@hapergg/harness-comet-adapter-playwright",
297
+ "exec",
298
+ "playwright",
299
+ "install",
300
+ "chromium"
301
+ ];
302
+ await execFileAsync(command, args, {
303
+ cwd: process.cwd(),
304
+ maxBuffer: 50 * 1024 * 1024
305
+ });
306
+ return `${command} ${args.join(" ")}`;
307
+ }
308
+ async function fileExists(filePath) {
309
+ try {
310
+ await fs.access(filePath);
311
+ return true;
312
+ }
313
+ catch {
314
+ return false;
315
+ }
316
+ }
317
+ async function diffComet(projectRoot) {
318
+ const adapter = await loadCometAdapter();
319
+ return await adapter.diffCometIntegration(projectRoot);
320
+ }
321
+ async function bindComet(projectRoot, change) {
322
+ const adapter = await loadCometAdapter();
323
+ return await adapter.bindCometVerifyCommand(projectRoot, change);
324
+ }
325
+ async function verifyComet(projectRoot, change) {
326
+ const adapter = await loadCometAdapter();
327
+ return await adapter.verifyCometChange(projectRoot, change);
328
+ }
329
+ async function archiveCheckComet(projectRoot, change) {
330
+ const adapter = await loadCometAdapter();
331
+ return await adapter.archiveCheckCometChange(projectRoot, change);
332
+ }
333
+ async function runCometHook(hook, projectRoot, change) {
334
+ const adapter = await loadCometAdapter();
335
+ if (hook === "open")
336
+ return await adapter.runCometOpenHook(projectRoot, change);
337
+ if (hook === "design")
338
+ return await adapter.runCometDesignHook(projectRoot, change);
339
+ return await adapter.runCometBuildHook(projectRoot, change);
340
+ }
341
+ async function syncComet(projectRoot) {
342
+ const adapter = await loadCometAdapter();
343
+ return await adapter.syncCometIntegration(projectRoot);
344
+ }
345
+ async function uninstallComet(projectRoot, commandOptions) {
346
+ const adapter = await loadCometAdapter();
347
+ return await adapter.uninstallCometIntegration({
348
+ projectRoot,
349
+ platformIds: commandOptions.platform ?? []
350
+ });
351
+ }
352
+ function formatDiscoveryReport(report) {
353
+ const lines = [
354
+ `COMET installed=${report.comet.installed} supported=${report.comet.supported} version=${report.comet.version ?? "-"}`,
355
+ `RANGE ${report.comet.supportedRange}`
356
+ ];
357
+ if (report.comet.error)
358
+ lines.push(`ERROR ${report.comet.error}`);
359
+ if (report.targets.length === 0) {
360
+ lines.push("TARGETS 0");
361
+ }
362
+ else {
363
+ for (const target of report.targets) {
364
+ lines.push(`TARGET ${target.platformId} valid=${target.valid} skillRoot=${target.skillRoot}`);
365
+ for (const issue of target.issues) {
366
+ lines.push(` ISSUE ${issue.code} ${issue.message}${issue.path ? ` (${issue.path})` : ""}`);
367
+ }
368
+ }
369
+ }
370
+ return `${lines.join("\n")}\n`;
371
+ }
372
+ function formatInstallReport(report, harness) {
373
+ const lines = [
374
+ `COMET installed=${report.comet.installed} supported=${report.comet.supported} version=${report.comet.version ?? "-"}`,
375
+ `DRY_RUN ${report.dryRun}`,
376
+ `MANIFEST ${report.manifestPath}`,
377
+ `SUMMARY targets=${report.summary.targets} writes=${report.summary.writes} backups=${report.summary.backups} changed=${report.summary.changed}`
378
+ ];
379
+ if (report.comet.error)
380
+ lines.push(`ERROR ${report.comet.error}`);
381
+ if (report.backupRoot)
382
+ lines.push(`BACKUPS ${report.backupRoot}`);
383
+ for (const target of report.targets) {
384
+ const writes = target.writes.filter((plan) => plan.action !== "noop");
385
+ lines.push(`TARGET ${target.platformId} writes=${writes.length} skillRoot=${target.skillRoot}`);
386
+ for (const write of writes) {
387
+ lines.push(` WRITE ${write.action} ${write.relativePath}`);
388
+ }
389
+ }
390
+ if (harness) {
391
+ lines.push(`HARNESS requested=${harness.requested} initialized=${harness.initialized} adapter=${harness.adapter ?? "-"}`);
392
+ if (harness.created.length > 0)
393
+ lines.push(` CREATED ${harness.created.join(",")}`);
394
+ if (harness.skipped.length > 0)
395
+ lines.push(` SKIPPED ${harness.skipped.join(",")}`);
396
+ if (harness.hint)
397
+ lines.push(` HINT ${harness.hint}`);
398
+ if (harness.browsers) {
399
+ lines.push(` BROWSERS requested=${harness.browsers.requested} installed=${harness.browsers.installed}`);
400
+ if (harness.browsers.command)
401
+ lines.push(` BROWSER_COMMAND ${harness.browsers.command}`);
402
+ if (harness.browsers.skippedReason) {
403
+ lines.push(` BROWSER_SKIPPED ${harness.browsers.skippedReason}`);
404
+ }
405
+ }
406
+ }
407
+ return `${lines.join("\n")}\n`;
408
+ }
409
+ function formatDiffReport(report) {
410
+ const lines = [
411
+ `COMET installed=${report.comet.installed} supported=${report.comet.supported} version=${report.comet.version ?? "-"}`,
412
+ `MANIFEST ${report.manifestPath}`
413
+ ];
414
+ if (report.comet.error)
415
+ lines.push(`ERROR ${report.comet.error}`);
416
+ if (report.targets.length === 0) {
417
+ lines.push("TARGETS 0");
418
+ }
419
+ else {
420
+ for (const target of report.targets) {
421
+ lines.push(`TARGET ${target.platformId} status=${target.status} skillRoot=${target.skillRoot}`);
422
+ lines.push(` MANIFEST ${target.manifestStatus}`);
423
+ for (const fileChange of target.fileChanges.filter((change) => change.status !== "clean")) {
424
+ lines.push(` FILE ${fileChange.status} ${fileChange.relativePath}`);
425
+ }
426
+ }
427
+ }
428
+ return `${lines.join("\n")}\n`;
429
+ }
430
+ function formatBindReport(report) {
431
+ return `CHANGE ${report.change}\nCOMET_YAML ${report.cometYamlPath}\nVERIFY_COMMAND ${report.command}\n`;
432
+ }
433
+ function formatVerifyReport(report) {
434
+ return `CHANGE ${report.change}
435
+ STATUS ${report.result}
436
+ REUSED ${report.reused}
437
+ SCENARIOS ${report.selectedScenarios.join(",")}
438
+ RECEIPT ${report.receiptPath}
439
+ REPORT ${report.reportPath}
440
+ GIT_TREE ${report.gitTreeHash}
441
+ `;
442
+ }
443
+ function formatArchiveCheckReport(report) {
444
+ return `CHANGE ${report.change}
445
+ STATUS ${report.status}
446
+ RECEIPT ${report.receiptPath}
447
+ REPORT ${report.reportPath}
448
+ GIT_TREE ${report.gitTreeHash}
449
+ `;
450
+ }
451
+ function formatHookReport(report) {
452
+ return `HOOK ${report.hook}\nCHANGE ${report.change}\nSTATUS ${report.status}\n`;
453
+ }
454
+ function formatUninstallReport(report) {
455
+ const lines = [
456
+ `COMET installed=${report.comet.installed} supported=${report.comet.supported} version=${report.comet.version ?? "-"}`,
457
+ `MANIFEST ${report.manifestPath}`
458
+ ];
459
+ if (report.comet.error)
460
+ lines.push(`ERROR ${report.comet.error}`);
461
+ for (const target of report.targets) {
462
+ lines.push(`TARGET ${target.platformId} removed=${target.removed.length} kept=${target.kept.length} skillRoot=${target.skillRoot}`);
463
+ for (const relativePath of target.removed)
464
+ lines.push(` REMOVE ${relativePath}`);
465
+ for (const relativePath of target.kept)
466
+ lines.push(` KEEP ${relativePath}`);
467
+ }
468
+ return `${lines.join("\n")}\n`;
469
+ }
470
+ async function loadCometAdapter() {
471
+ const sourceModuleUrl = new URL("../../../comet-adapter/src/index.ts", import.meta.url);
472
+ if (import.meta.url.includes("/packages/cli/src/")) {
473
+ return await import(sourceModuleUrl.href);
474
+ }
475
+ try {
476
+ const adapter = await import("@hapergg/harness-comet-comet-adapter");
477
+ if ("buildCometDiscoveryReport" in adapter &&
478
+ "archiveCheckCometChange" in adapter &&
479
+ "bindCometVerifyCommand" in adapter &&
480
+ "runCometOpenHook" in adapter &&
481
+ "runCometDesignHook" in adapter &&
482
+ "runCometBuildHook" in adapter &&
483
+ "verifyCometChange" in adapter &&
484
+ "readHarnessImpact" in adapter &&
485
+ "writeHarnessImpact" in adapter &&
486
+ "parseAssetDecisionTable" in adapter &&
487
+ "installCometIntegration" in adapter &&
488
+ "diffCometIntegration" in adapter &&
489
+ "syncCometIntegration" in adapter &&
490
+ "uninstallCometIntegration" in adapter) {
491
+ return adapter;
492
+ }
493
+ }
494
+ catch {
495
+ // Fall back to the local source module in dev/test flows where the workspace package
496
+ // export may still point at stale build artifacts.
497
+ }
498
+ return await import(sourceModuleUrl.href);
499
+ }
500
+ //# sourceMappingURL=comet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comet.js","sourceRoot":"","sources":["../../src/commands/comet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface CreatePlaywrightIncidentOptions {
2
+ root: string;
3
+ testDir: string;
4
+ id: string;
5
+ title?: string;
6
+ issueUrl?: string;
7
+ force?: boolean;
8
+ }
9
+ export interface CreatePlaywrightIncidentResult {
10
+ ok: true;
11
+ id: string;
12
+ created: string[];
13
+ incidentRoot: string;
14
+ }
15
+ export declare function createPlaywrightIncident(options: CreatePlaywrightIncidentOptions): Promise<CreatePlaywrightIncidentResult>;
16
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,8BAA8B,CAAC,CAmDzC"}
@@ -0,0 +1,69 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { HarnessError } from "@hapergg/harness-comet-core";
4
+ import { incidentReadmeTemplate, incidentSpecTemplate } from "../templates/incident.js";
5
+ export async function createPlaywrightIncident(options) {
6
+ const normalizedId = normalizeIncidentId(options.id);
7
+ const incidentsRoot = path.join(options.root, options.testDir, "incidents");
8
+ const incidentRoot = path.join(incidentsRoot, normalizedId);
9
+ const created = [];
10
+ await fs.mkdir(incidentRoot, { recursive: true });
11
+ await writeTextFile(path.join(incidentRoot, "incident.json"), `${JSON.stringify({
12
+ schemaVersion: 1,
13
+ id: normalizedId,
14
+ title: options.title ?? normalizedId,
15
+ ...(options.issueUrl ? { issueUrl: options.issueUrl } : {}),
16
+ status: "created",
17
+ createdAt: new Date().toISOString(),
18
+ testFile: `${normalizedId}.spec.ts`
19
+ }, null, 2)}\n`, Boolean(options.force), created);
20
+ await writeTextFile(path.join(incidentRoot, `${normalizedId}.spec.ts`), incidentSpecTemplate(normalizedId, options.title, options.issueUrl), Boolean(options.force), created);
21
+ await writeTextFile(path.join(incidentRoot, "input.json"), "{}\n", Boolean(options.force), created);
22
+ await writeTextFile(path.join(incidentRoot, "expected.json"), "{}\n", Boolean(options.force), created);
23
+ await writeTextFile(path.join(incidentRoot, "README.md"), incidentReadmeTemplate(normalizedId, options.title), Boolean(options.force), created);
24
+ return {
25
+ ok: true,
26
+ id: normalizedId,
27
+ created,
28
+ incidentRoot
29
+ };
30
+ }
31
+ function normalizeIncidentId(value) {
32
+ const trimmed = value.trim();
33
+ if (!trimmed) {
34
+ throw new HarnessError({
35
+ code: "PLAYWRIGHT_INCIDENT_ID_INVALID",
36
+ category: "selection",
37
+ message: "Incident id is required"
38
+ });
39
+ }
40
+ if (trimmed.includes("/") || trimmed.includes("\\")) {
41
+ throw new HarnessError({
42
+ code: "PLAYWRIGHT_INCIDENT_ID_INVALID",
43
+ category: "selection",
44
+ message: "Incident id must not contain path separators"
45
+ });
46
+ }
47
+ return trimmed.replace(/\s+/g, "-");
48
+ }
49
+ async function writeTextFile(filePath, content, force, created) {
50
+ if (!force && (await exists(filePath))) {
51
+ throw new HarnessError({
52
+ code: "PLAYWRIGHT_INCIDENT_EXISTS",
53
+ category: "config",
54
+ message: `Incident file already exists: ${filePath}`
55
+ });
56
+ }
57
+ await fs.writeFile(filePath, content, "utf8");
58
+ created.push(filePath);
59
+ }
60
+ async function exists(filePath) {
61
+ try {
62
+ await fs.access(filePath);
63
+ return true;
64
+ }
65
+ catch {
66
+ return false;
67
+ }
68
+ }
69
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from "commander";
2
+ interface GlobalOptions {
3
+ root?: string;
4
+ json?: boolean;
5
+ }
6
+ export declare function registerImpactCommands(program: Command, withErrors: (action: (...args: any[]) => Promise<void>) => (...args: any[]) => Promise<void>, getOptions: () => GlobalOptions): void;
7
+ export {};
8
+ //# sourceMappingURL=impact.d.ts.map