@beignet/cli 0.0.40 → 0.0.42

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 (111) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +139 -17
  3. package/dist/analysis/source-index.d.ts +38 -0
  4. package/dist/analysis/source-index.d.ts.map +1 -0
  5. package/dist/analysis/source-index.js +271 -0
  6. package/dist/analysis/source-index.js.map +1 -0
  7. package/dist/analysis/workspace.d.ts +16 -0
  8. package/dist/analysis/workspace.d.ts.map +1 -0
  9. package/dist/analysis/workspace.js +134 -0
  10. package/dist/analysis/workspace.js.map +1 -0
  11. package/dist/app-map-schema.d.ts +5 -0
  12. package/dist/app-map-schema.d.ts.map +1 -0
  13. package/dist/app-map-schema.js +26 -0
  14. package/dist/app-map-schema.js.map +1 -0
  15. package/dist/app-map.d.ts +96 -0
  16. package/dist/app-map.d.ts.map +1 -0
  17. package/dist/app-map.js +1141 -0
  18. package/dist/app-map.js.map +1 -0
  19. package/dist/check.d.ts +7 -0
  20. package/dist/check.d.ts.map +1 -1
  21. package/dist/check.js +20 -5
  22. package/dist/check.js.map +1 -1
  23. package/dist/choices.d.ts +18 -0
  24. package/dist/choices.d.ts.map +1 -1
  25. package/dist/choices.js +35 -0
  26. package/dist/choices.js.map +1 -1
  27. package/dist/db.d.ts +49 -13
  28. package/dist/db.d.ts.map +1 -1
  29. package/dist/db.js +202 -21
  30. package/dist/db.js.map +1 -1
  31. package/dist/doctor-fixes.d.ts +64 -0
  32. package/dist/doctor-fixes.d.ts.map +1 -0
  33. package/dist/doctor-fixes.js +142 -0
  34. package/dist/doctor-fixes.js.map +1 -0
  35. package/dist/explain.d.ts +100 -0
  36. package/dist/explain.d.ts.map +1 -0
  37. package/dist/explain.js +606 -0
  38. package/dist/explain.js.map +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +165 -21
  41. package/dist/index.js.map +1 -1
  42. package/dist/inspect.d.ts +33 -9
  43. package/dist/inspect.d.ts.map +1 -1
  44. package/dist/inspect.js +406 -119
  45. package/dist/inspect.js.map +1 -1
  46. package/dist/lib.d.ts +10 -2
  47. package/dist/lib.d.ts.map +1 -1
  48. package/dist/lib.js +5 -2
  49. package/dist/lib.js.map +1 -1
  50. package/dist/make/shared.js +3 -3
  51. package/dist/make/shared.js.map +1 -1
  52. package/dist/make.d.ts.map +1 -1
  53. package/dist/make.js +63 -2
  54. package/dist/make.js.map +1 -1
  55. package/dist/mcp.d.ts +1 -1
  56. package/dist/mcp.d.ts.map +1 -1
  57. package/dist/mcp.js +188 -12
  58. package/dist/mcp.js.map +1 -1
  59. package/dist/preflight.d.ts.map +1 -1
  60. package/dist/preflight.js +10 -0
  61. package/dist/preflight.js.map +1 -1
  62. package/dist/provider-add.d.ts.map +1 -1
  63. package/dist/provider-add.js +167 -13
  64. package/dist/provider-add.js.map +1 -1
  65. package/dist/provider-audit.d.ts +6 -0
  66. package/dist/provider-audit.d.ts.map +1 -1
  67. package/dist/provider-audit.js +63 -15
  68. package/dist/provider-audit.js.map +1 -1
  69. package/dist/templates/agents.d.ts.map +1 -1
  70. package/dist/templates/agents.js +35 -6
  71. package/dist/templates/agents.js.map +1 -1
  72. package/dist/templates/base.d.ts.map +1 -1
  73. package/dist/templates/base.js +13 -7
  74. package/dist/templates/base.js.map +1 -1
  75. package/dist/templates/index.d.ts +1 -1
  76. package/dist/templates/index.d.ts.map +1 -1
  77. package/dist/templates/index.js +8 -1
  78. package/dist/templates/index.js.map +1 -1
  79. package/dist/templates/server.d.ts +3 -0
  80. package/dist/templates/server.d.ts.map +1 -1
  81. package/dist/templates/server.js +55 -1
  82. package/dist/templates/server.js.map +1 -1
  83. package/dist/templates/shared.d.ts +2 -1
  84. package/dist/templates/shared.d.ts.map +1 -1
  85. package/dist/templates/shared.js +8 -5
  86. package/dist/templates/shared.js.map +1 -1
  87. package/package.json +3 -2
  88. package/skills/app-structure/SKILL.md +48 -6
  89. package/src/analysis/source-index.ts +395 -0
  90. package/src/analysis/workspace.ts +180 -0
  91. package/src/app-map-schema.ts +28 -0
  92. package/src/app-map.ts +1705 -0
  93. package/src/check.ts +27 -4
  94. package/src/choices.ts +57 -0
  95. package/src/db.ts +276 -28
  96. package/src/doctor-fixes.ts +252 -0
  97. package/src/explain.ts +894 -0
  98. package/src/index.ts +237 -31
  99. package/src/inspect.ts +567 -147
  100. package/src/lib.ts +64 -1
  101. package/src/make/shared.ts +3 -3
  102. package/src/make.ts +90 -2
  103. package/src/mcp.ts +292 -12
  104. package/src/preflight.ts +14 -0
  105. package/src/provider-add.ts +211 -12
  106. package/src/provider-audit.ts +127 -22
  107. package/src/templates/agents.ts +35 -6
  108. package/src/templates/base.ts +25 -6
  109. package/src/templates/index.ts +18 -1
  110. package/src/templates/server.ts +58 -1
  111. package/src/templates/shared.ts +15 -7
package/dist/db.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { access, mkdir, readFile, writeFile } from "node:fs/promises";
3
3
  import path from "node:path";
4
+ import { databaseSchemaTableChoices, } from "./choices.js";
5
+ /** Default output retained per stream by structured database command callers. */
6
+ export const defaultDatabaseCommandMaxOutputBytes = 64 * 1024;
7
+ /** Default timeout used by request-controlled database command callers. */
8
+ export const defaultDatabaseCommandTimeoutMs = 10 * 60 * 1_000;
4
9
  const databaseScripts = {
5
10
  generate: "db:generate",
6
11
  migrate: "db:migrate",
7
12
  seed: "db:seed",
8
13
  reset: "db:reset",
9
14
  };
10
- const allDatabaseSchemaTables = [
11
- "audit",
12
- "idempotency",
13
- "outbox",
14
- ];
15
15
  /**
16
16
  * Run an app-owned database lifecycle script.
17
17
  *
@@ -20,6 +20,7 @@ const allDatabaseSchemaTables = [
20
20
  * database URLs, and destructive reset behavior explicit in app code.
21
21
  */
22
22
  export async function runDatabaseCommand(options) {
23
+ options.signal?.throwIfAborted();
23
24
  const cwd = path.resolve(options.cwd ?? process.cwd());
24
25
  const script = databaseScripts[options.command];
25
26
  const packageJson = await readPackageJson(cwd);
@@ -28,6 +29,7 @@ export async function runDatabaseCommand(options) {
28
29
  throw new Error(missingDatabaseScriptMessage(options.command, script));
29
30
  }
30
31
  await assertDatabaseCommandPreflight(cwd, options.command, scriptCommand);
32
+ options.signal?.throwIfAborted();
31
33
  const runner = await detectPackageManager(cwd);
32
34
  const args = ["run", script];
33
35
  if (options.dryRun) {
@@ -44,6 +46,9 @@ export async function runDatabaseCommand(options) {
44
46
  }
45
47
  const commandResult = await spawnCommand(runner, args, cwd, {
46
48
  captureOutput: Boolean(options.captureOutput),
49
+ maxOutputBytes: options.maxOutputBytes,
50
+ signal: options.signal,
51
+ timeoutMs: options.timeoutMs,
47
52
  });
48
53
  return {
49
54
  schemaVersion: 1,
@@ -57,6 +62,8 @@ export async function runDatabaseCommand(options) {
57
62
  ...(options.captureOutput
58
63
  ? { stdout: commandResult.stdout, stderr: commandResult.stderr }
59
64
  : {}),
65
+ ...(commandResult.outputTruncated ? { outputTruncated: true } : {}),
66
+ ...(commandResult.timedOut ? { timedOut: true } : {}),
60
67
  };
61
68
  }
62
69
  /**
@@ -67,9 +74,10 @@ export async function runDatabaseCommand(options) {
67
74
  * `beignet db migrate`.
68
75
  */
69
76
  export async function syncDatabaseSchema(options = {}) {
77
+ options.signal?.throwIfAborted();
70
78
  const cwd = path.resolve(options.cwd ?? process.cwd());
71
79
  const dialect = await resolveDatabaseSchemaDialect(cwd, options.dialect);
72
- const tables = uniqueSchemaTables(options.tables ?? allDatabaseSchemaTables);
80
+ const tables = uniqueSchemaTables(options.tables ?? databaseSchemaTableChoices);
73
81
  const output = normalizeAppRelativePath(cwd, options.output ?? "infra/db/schema/beignet.ts", "schema output");
74
82
  const indexFile = normalizeAppRelativePath(cwd, path.join(path.dirname(output), "index.ts"), "schema index");
75
83
  if (output === indexFile) {
@@ -88,6 +96,7 @@ export async function syncDatabaseSchema(options = {}) {
88
96
  skippedFiles: [],
89
97
  dryRun: Boolean(options.dryRun),
90
98
  };
99
+ options.signal?.throwIfAborted();
91
100
  const schemaStatus = await writeProjectFile(cwd, output, renderDatabaseSchema(dialect, tables), result.dryRun);
92
101
  recordFileStatus(result, output, schemaStatus);
93
102
  const indexStatus = await updateSchemaIndex(cwd, indexFile, output, result.dryRun);
@@ -219,7 +228,7 @@ const schemaTableDefinitions = {
219
228
  outbox: { exportName: "outboxMessages", tableName: "outbox_messages" },
220
229
  };
221
230
  function uniqueSchemaTables(tables) {
222
- const unique = allDatabaseSchemaTables.filter((table) => tables.includes(table));
231
+ const unique = databaseSchemaTableChoices.filter((table) => tables.includes(table));
223
232
  if (unique.length === 0) {
224
233
  throw new Error("At least one schema table must be selected.");
225
234
  }
@@ -319,28 +328,200 @@ async function exists(filePath) {
319
328
  }
320
329
  }
321
330
  export function spawnCommand(command, args, cwd, options) {
331
+ if (options.signal?.aborted) {
332
+ return Promise.reject(commandAbortError(options.signal));
333
+ }
334
+ const timeoutMs = options.timeoutMs === undefined
335
+ ? undefined
336
+ : normalizePositiveInteger(options.timeoutMs, "Command timeout");
337
+ const maxOutputBytes = options.maxOutputBytes === undefined
338
+ ? undefined
339
+ : normalizeNonNegativeInteger(options.maxOutputBytes, "Maximum output bytes");
322
340
  return new Promise((resolve, reject) => {
341
+ let settled = false;
342
+ let timedOut = false;
343
+ let timeout;
344
+ let forceKillTimeout;
345
+ const ownsProcessGroup = commandOwnsProcessGroup(process.platform, {
346
+ signal: options.signal,
347
+ timeoutMs,
348
+ });
323
349
  const child = spawn(command, args, {
324
350
  cwd,
351
+ detached: ownsProcessGroup,
325
352
  env: process.env,
326
353
  stdio: options.captureOutput ? ["ignore", "pipe", "pipe"] : "inherit",
327
354
  });
328
- const stdout = [];
329
- const stderr = [];
355
+ const stdout = createOutputCapture(maxOutputBytes);
356
+ const stderr = createOutputCapture(maxOutputBytes);
357
+ const cleanup = () => {
358
+ if (timeout)
359
+ clearTimeout(timeout);
360
+ if (forceKillTimeout)
361
+ clearTimeout(forceKillTimeout);
362
+ options.signal?.removeEventListener("abort", abort);
363
+ };
364
+ const abort = () => {
365
+ if (settled)
366
+ return;
367
+ settled = true;
368
+ terminateChild(child, "SIGKILL", ownsProcessGroup);
369
+ cleanup();
370
+ reject(commandAbortError(options.signal));
371
+ };
330
372
  if (options.captureOutput) {
331
- child.stdout?.on("data", (chunk) => stdout.push(chunk));
332
- child.stderr?.on("data", (chunk) => stderr.push(chunk));
373
+ child.stdout?.on("data", (chunk) => stdout.append(chunk));
374
+ child.stderr?.on("data", (chunk) => stderr.append(chunk));
375
+ }
376
+ child.on("error", (error) => {
377
+ if (settled)
378
+ return;
379
+ settled = true;
380
+ cleanup();
381
+ reject(error);
382
+ });
383
+ child.on("close", (code) => {
384
+ if (settled)
385
+ return;
386
+ if (timedOut && ownsProcessGroup && forceKillTimeout) {
387
+ terminateChild(child, "SIGKILL", ownsProcessGroup);
388
+ }
389
+ settled = true;
390
+ cleanup();
391
+ resolve({
392
+ exitCode: timedOut ? 1 : (code ?? 1),
393
+ ...(options.captureOutput
394
+ ? {
395
+ stdout: stdout.text(),
396
+ stderr: stderr.text(),
397
+ ...(stdout.truncated() || stderr.truncated()
398
+ ? { outputTruncated: true }
399
+ : {}),
400
+ }
401
+ : {}),
402
+ ...(timedOut ? { timedOut: true } : {}),
403
+ });
404
+ });
405
+ options.signal?.addEventListener("abort", abort, { once: true });
406
+ if (options.signal?.aborted) {
407
+ abort();
408
+ return;
409
+ }
410
+ if (timeoutMs !== undefined) {
411
+ timeout = setTimeout(() => {
412
+ if (settled)
413
+ return;
414
+ timedOut = true;
415
+ terminateChild(child, "SIGTERM", ownsProcessGroup);
416
+ forceKillTimeout = setTimeout(() => {
417
+ forceKillTimeout = undefined;
418
+ if (!settled)
419
+ terminateChild(child, "SIGKILL", ownsProcessGroup);
420
+ }, 1_000);
421
+ forceKillTimeout.unref?.();
422
+ }, timeoutMs);
423
+ timeout.unref?.();
333
424
  }
334
- child.on("error", reject);
335
- child.on("close", (code) => resolve({
336
- exitCode: code ?? 1,
337
- ...(options.captureOutput
338
- ? {
339
- stdout: Buffer.concat(stdout).toString("utf8"),
340
- stderr: Buffer.concat(stderr).toString("utf8"),
341
- }
342
- : {}),
343
- }));
344
425
  });
345
426
  }
427
+ export function commandOwnsProcessGroup(platform, options) {
428
+ return (platform !== "win32" &&
429
+ (options.signal !== undefined || options.timeoutMs !== undefined));
430
+ }
431
+ export function commandTerminationPlan(platform, pid, signal, ownsProcessGroup) {
432
+ if (platform === "win32" && pid !== undefined) {
433
+ return {
434
+ kind: "windows-process-tree",
435
+ command: "taskkill",
436
+ args: ["/PID", String(pid), "/T", "/F"],
437
+ };
438
+ }
439
+ if (ownsProcessGroup && pid !== undefined) {
440
+ return { kind: "process-group", pid: -pid, signal };
441
+ }
442
+ return { kind: "child", signal };
443
+ }
444
+ function terminateChild(child, signal, ownsProcessGroup) {
445
+ const plan = commandTerminationPlan(process.platform, child.pid, signal, ownsProcessGroup);
446
+ if (plan.kind === "windows-process-tree") {
447
+ const killer = spawn(plan.command, plan.args, {
448
+ stdio: "ignore",
449
+ windowsHide: true,
450
+ });
451
+ const fallback = () => {
452
+ if (child.exitCode === null)
453
+ child.kill(signal);
454
+ };
455
+ killer.once("error", fallback);
456
+ killer.once("close", (code) => {
457
+ if (code !== 0)
458
+ fallback();
459
+ });
460
+ killer.unref();
461
+ return;
462
+ }
463
+ if (plan.kind === "process-group") {
464
+ try {
465
+ process.kill(plan.pid, plan.signal);
466
+ return;
467
+ }
468
+ catch (error) {
469
+ if (error.code === "ESRCH")
470
+ return;
471
+ }
472
+ }
473
+ child.kill(plan.signal);
474
+ }
475
+ function createOutputCapture(maxOutputBytes) {
476
+ const limit = maxOutputBytes;
477
+ const unboundedChunks = [];
478
+ let output = Buffer.alloc(0);
479
+ let wasTruncated = false;
480
+ return {
481
+ append(chunk) {
482
+ if (limit === undefined) {
483
+ unboundedChunks.push(chunk);
484
+ return;
485
+ }
486
+ if (limit === 0) {
487
+ if (chunk.length > 0)
488
+ wasTruncated = true;
489
+ return;
490
+ }
491
+ if (chunk.length >= limit) {
492
+ wasTruncated ||= output.length > 0 || chunk.length > limit;
493
+ output = Buffer.from(chunk.subarray(chunk.length - limit));
494
+ return;
495
+ }
496
+ const overflow = output.length + chunk.length - limit;
497
+ if (overflow > 0) {
498
+ wasTruncated = true;
499
+ output = Buffer.concat([output.subarray(overflow), chunk]);
500
+ return;
501
+ }
502
+ output = Buffer.concat([output, chunk]);
503
+ },
504
+ text: () => (limit === undefined ? Buffer.concat(unboundedChunks) : output).toString("utf8"),
505
+ truncated: () => wasTruncated,
506
+ };
507
+ }
508
+ function commandAbortError(signal) {
509
+ if (signal?.reason instanceof Error)
510
+ return signal.reason;
511
+ const error = new Error("Command cancelled.");
512
+ error.name = "AbortError";
513
+ return error;
514
+ }
515
+ function normalizePositiveInteger(value, label) {
516
+ if (!Number.isSafeInteger(value) || value <= 0) {
517
+ throw new Error(`${label} must be a positive integer.`);
518
+ }
519
+ return value;
520
+ }
521
+ function normalizeNonNegativeInteger(value, label) {
522
+ if (!Number.isSafeInteger(value) || value < 0) {
523
+ throw new Error(`${label} must be a non-negative integer.`);
524
+ }
525
+ return value;
526
+ }
346
527
  //# sourceMappingURL=db.js.map
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { type DoctorFixOperationId } from "./choices.js";
2
+ export type { DoctorFixOperationId } from "./choices.js";
3
+ export { doctorFixOperationIds } from "./choices.js";
4
+ /** Automatic doctor fix that was applied. */
5
+ export type InspectFix = {
6
+ code: string;
7
+ message: string;
8
+ file: string;
9
+ };
10
+ /** Exact file mutation proposed by a doctor fix operation. */
11
+ export type DoctorFixFileChange = {
12
+ file: string;
13
+ kind: "create" | "update";
14
+ beforeHash: string | null;
15
+ afterHash: string;
16
+ patch: string;
17
+ };
18
+ /** Selectable low-risk repair and every file change it requires. */
19
+ export type DoctorFixOperation = {
20
+ id: DoctorFixOperationId;
21
+ fixes: InspectFix[];
22
+ changes: DoctorFixFileChange[];
23
+ };
24
+ /** Deterministic, read-only repair plan for the current app state. */
25
+ export type DoctorFixPlan = {
26
+ schemaVersion: 1;
27
+ targetDir: string;
28
+ strict: boolean;
29
+ planId: string;
30
+ operations: DoctorFixOperation[];
31
+ };
32
+ /** Result of applying all or part of a guarded doctor fix plan. */
33
+ export type DoctorFixApplyResult = {
34
+ schemaVersion: 1;
35
+ targetDir: string;
36
+ planId: string;
37
+ operationIds: DoctorFixOperationId[];
38
+ fixes: InspectFix[];
39
+ };
40
+ export type PlannedDoctorFixFileChange = DoctorFixFileChange & {
41
+ before: string | undefined;
42
+ after: string;
43
+ };
44
+ export type PlannedDoctorFixOperation = Omit<DoctorFixOperation, "changes"> & {
45
+ changes: PlannedDoctorFixFileChange[];
46
+ };
47
+ export type PlannedDoctorFixPlan = Omit<DoctorFixPlan, "operations"> & {
48
+ operations: PlannedDoctorFixOperation[];
49
+ };
50
+ export declare function planDoctorFixFileChange(options: {
51
+ file: string;
52
+ before?: string;
53
+ after: string;
54
+ }): PlannedDoctorFixFileChange;
55
+ export declare function createDoctorFixPlan(options: {
56
+ targetDir: string;
57
+ strict: boolean;
58
+ operations: PlannedDoctorFixOperation[];
59
+ }): PlannedDoctorFixPlan;
60
+ export declare function publicDoctorFixPlan(plan: PlannedDoctorFixPlan): DoctorFixPlan;
61
+ export declare function applyPlannedDoctorFixes(plan: PlannedDoctorFixPlan, fixIds?: readonly DoctorFixOperationId[], hooks?: {
62
+ beforeWrite?: (change: PlannedDoctorFixFileChange, index: number) => void | Promise<void>;
63
+ }): Promise<DoctorFixApplyResult>;
64
+ //# sourceMappingURL=doctor-fixes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-fixes.d.ts","sourceRoot":"","sources":["../src/doctor-fixes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAyB,MAAM,cAAc,CAAC;AAEhF,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,6CAA6C;AAC7C,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,oBAAoB,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG;IAC7D,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IAC5E,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG;IACrE,UAAU,EAAE,yBAAyB,EAAE,CAAC;CACzC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,0BAA0B,CAsB7B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,yBAAyB,EAAE,CAAC;CACzC,GAAG,oBAAoB,CA4BvB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAW7E;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,oBAAoB,EAC1B,MAAM,CAAC,EAAE,SAAS,oBAAoB,EAAE,EACxC,KAAK,GAAE;IACL,WAAW,CAAC,EAAE,CACZ,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,MAAM,KACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB,GACL,OAAO,CAAC,oBAAoB,CAAC,CAiF/B"}
@@ -0,0 +1,142 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { createTwoFilesPatch } from "diff";
5
+ import { doctorFixOperationIds } from "./choices.js";
6
+ export { doctorFixOperationIds } from "./choices.js";
7
+ export function planDoctorFixFileChange(options) {
8
+ const oldName = options.before === undefined ? "/dev/null" : `a/${options.file}`;
9
+ const newName = `b/${options.file}`;
10
+ return {
11
+ file: options.file,
12
+ kind: options.before === undefined ? "create" : "update",
13
+ beforeHash: options.before === undefined ? null : contentHash(options.before),
14
+ afterHash: contentHash(options.after),
15
+ patch: createTwoFilesPatch(oldName, newName, options.before ?? "", options.after, "", "", { context: 3 }),
16
+ before: options.before,
17
+ after: options.after,
18
+ };
19
+ }
20
+ export function createDoctorFixPlan(options) {
21
+ const operationOrder = new Map(doctorFixOperationIds.map((id, index) => [id, index]));
22
+ const operations = [...options.operations].sort((left, right) => (operationOrder.get(left.id) ?? Number.MAX_SAFE_INTEGER) -
23
+ (operationOrder.get(right.id) ?? Number.MAX_SAFE_INTEGER));
24
+ const fingerprint = {
25
+ targetDir: path.resolve(options.targetDir),
26
+ operations: operations.map((operation) => ({
27
+ id: operation.id,
28
+ changes: operation.changes.map((change) => ({
29
+ file: change.file,
30
+ beforeHash: change.beforeHash,
31
+ afterHash: change.afterHash,
32
+ })),
33
+ })),
34
+ };
35
+ return {
36
+ schemaVersion: 1,
37
+ targetDir: path.resolve(options.targetDir),
38
+ strict: options.strict,
39
+ planId: contentHash(JSON.stringify(fingerprint)),
40
+ operations,
41
+ };
42
+ }
43
+ export function publicDoctorFixPlan(plan) {
44
+ return {
45
+ ...plan,
46
+ operations: plan.operations.map((operation) => ({
47
+ id: operation.id,
48
+ fixes: operation.fixes,
49
+ changes: operation.changes.map(({ before: _before, after: _after, ...change }) => change),
50
+ })),
51
+ };
52
+ }
53
+ export async function applyPlannedDoctorFixes(plan, fixIds, hooks = {}) {
54
+ const requested = fixIds ? new Set(fixIds) : undefined;
55
+ const operations = requested
56
+ ? plan.operations.filter((operation) => requested.has(operation.id))
57
+ : plan.operations;
58
+ if (requested) {
59
+ const available = new Set(plan.operations.map((operation) => operation.id));
60
+ const missing = [...requested].filter((id) => !available.has(id));
61
+ if (missing.length > 0) {
62
+ throw new Error(`Doctor fix operations are not available in this plan: ${missing.join(", ")}. Run beignet doctor --fix --dry-run again.`);
63
+ }
64
+ }
65
+ const changes = operations.flatMap((operation) => operation.changes);
66
+ const duplicateFiles = duplicateValues(changes.map((change) => change.file));
67
+ if (duplicateFiles.length > 0) {
68
+ throw new Error(`Doctor fix operations overlap on ${duplicateFiles.join(", ")}; no files were changed.`);
69
+ }
70
+ for (const change of changes) {
71
+ const current = await readOptionalFile(path.join(plan.targetDir, change.file));
72
+ const currentHash = current === undefined ? null : contentHash(current);
73
+ if (currentHash !== change.beforeHash) {
74
+ throw new Error(`Doctor fix plan is stale because ${change.file} changed. No files were changed; run beignet doctor --fix --dry-run again.`);
75
+ }
76
+ }
77
+ const attempted = [];
78
+ try {
79
+ for (const [index, change] of changes.entries()) {
80
+ attempted.push(change);
81
+ await hooks.beforeWrite?.(change, index);
82
+ const destination = path.join(plan.targetDir, change.file);
83
+ await mkdir(path.dirname(destination), { recursive: true });
84
+ await writeFile(destination, change.after);
85
+ }
86
+ }
87
+ catch (error) {
88
+ const rollbackErrors = [];
89
+ for (const change of attempted.reverse()) {
90
+ const destination = path.join(plan.targetDir, change.file);
91
+ try {
92
+ if (change.before === undefined) {
93
+ await rm(destination, { force: true });
94
+ }
95
+ else {
96
+ await mkdir(path.dirname(destination), { recursive: true });
97
+ await writeFile(destination, change.before);
98
+ }
99
+ }
100
+ catch (rollbackError) {
101
+ rollbackErrors.push(rollbackError instanceof Error
102
+ ? rollbackError.message
103
+ : String(rollbackError));
104
+ }
105
+ }
106
+ const message = error instanceof Error ? error.message : String(error);
107
+ throw new Error(rollbackErrors.length === 0
108
+ ? `Doctor fix application failed and was rolled back: ${message}`
109
+ : `Doctor fix application failed: ${message}. Rollback also failed: ${rollbackErrors.join("; ")}`, { cause: error });
110
+ }
111
+ return {
112
+ schemaVersion: 1,
113
+ targetDir: plan.targetDir,
114
+ planId: plan.planId,
115
+ operationIds: operations.map((operation) => operation.id),
116
+ fixes: operations.flatMap((operation) => operation.fixes),
117
+ };
118
+ }
119
+ function contentHash(value) {
120
+ return createHash("sha256").update(value).digest("hex");
121
+ }
122
+ async function readOptionalFile(file) {
123
+ try {
124
+ return await readFile(file, "utf8");
125
+ }
126
+ catch (error) {
127
+ if (error.code === "ENOENT")
128
+ return undefined;
129
+ throw error;
130
+ }
131
+ }
132
+ function duplicateValues(values) {
133
+ const seen = new Set();
134
+ const duplicates = new Set();
135
+ for (const value of values) {
136
+ if (seen.has(value))
137
+ duplicates.add(value);
138
+ seen.add(value);
139
+ }
140
+ return [...duplicates].sort();
141
+ }
142
+ //# sourceMappingURL=doctor-fixes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-fixes.js","sourceRoot":"","sources":["../src/doctor-fixes.ts"],"names":[],"mappings":"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"}