bilt-toolkit 1.0.0 → 1.0.2

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 (106) hide show
  1. package/bin/bilt.js +1 -1
  2. package/dist/cli.js +62 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/doctor.d.ts +1 -0
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +113 -52
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/fix.d.ts +1 -1
  9. package/dist/commands/fix.d.ts.map +1 -1
  10. package/dist/commands/fix.js +211 -64
  11. package/dist/commands/fix.js.map +1 -1
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +15 -13
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/scan.d.ts +6 -9
  16. package/dist/commands/scan.d.ts.map +1 -1
  17. package/dist/commands/scan.js +326 -206
  18. package/dist/commands/scan.js.map +1 -1
  19. package/dist/commands/undo.d.ts +3 -1
  20. package/dist/commands/undo.d.ts.map +1 -1
  21. package/dist/commands/undo.js +32 -14
  22. package/dist/commands/undo.js.map +1 -1
  23. package/dist/commands/watch.d.ts.map +1 -1
  24. package/dist/commands/watch.js +17 -8
  25. package/dist/commands/watch.js.map +1 -1
  26. package/dist/config/config.d.ts.map +1 -1
  27. package/dist/config/config.js +10 -0
  28. package/dist/config/config.js.map +1 -1
  29. package/dist/core/fix/confirm.d.ts +1 -1
  30. package/dist/core/fix/confirm.d.ts.map +1 -1
  31. package/dist/core/fix/confirm.js +4 -2
  32. package/dist/core/fix/confirm.js.map +1 -1
  33. package/dist/core/fix/git.d.ts +6 -0
  34. package/dist/core/fix/git.d.ts.map +1 -0
  35. package/dist/core/fix/git.js +45 -0
  36. package/dist/core/fix/git.js.map +1 -0
  37. package/dist/core/fix/snapshot.d.ts.map +1 -1
  38. package/dist/core/fix/snapshot.js +68 -1
  39. package/dist/core/fix/snapshot.js.map +1 -1
  40. package/dist/core/rules/providers.d.ts +2 -1
  41. package/dist/core/rules/providers.d.ts.map +1 -1
  42. package/dist/core/rules/providers.js +91 -0
  43. package/dist/core/rules/providers.js.map +1 -1
  44. package/dist/core/rules/secret-rules.d.ts.map +1 -1
  45. package/dist/core/rules/secret-rules.js +82 -3
  46. package/dist/core/rules/secret-rules.js.map +1 -1
  47. package/dist/core/scan/env.d.ts.map +1 -1
  48. package/dist/core/scan/env.js +15 -1
  49. package/dist/core/scan/env.js.map +1 -1
  50. package/dist/core/scan/secrets.d.ts.map +1 -1
  51. package/dist/core/scan/secrets.js +49 -4
  52. package/dist/core/scan/secrets.js.map +1 -1
  53. package/dist/core/scan/verifiers/aws.d.ts +4 -0
  54. package/dist/core/scan/verifiers/aws.d.ts.map +1 -0
  55. package/dist/core/scan/verifiers/aws.js +98 -0
  56. package/dist/core/scan/verifiers/aws.js.map +1 -0
  57. package/dist/core/scan/verifiers/github.d.ts +4 -0
  58. package/dist/core/scan/verifiers/github.d.ts.map +1 -0
  59. package/dist/core/scan/verifiers/github.js +23 -0
  60. package/dist/core/scan/verifiers/github.js.map +1 -0
  61. package/dist/core/scan/verifiers/index.d.ts +7 -0
  62. package/dist/core/scan/verifiers/index.d.ts.map +1 -0
  63. package/dist/core/scan/verifiers/index.js +15 -0
  64. package/dist/core/scan/verifiers/index.js.map +1 -0
  65. package/dist/core/scan/verifiers/openai.d.ts +4 -0
  66. package/dist/core/scan/verifiers/openai.d.ts.map +1 -0
  67. package/dist/core/scan/verifiers/openai.js +22 -0
  68. package/dist/core/scan/verifiers/openai.js.map +1 -0
  69. package/dist/core/scan/verifiers/slack.d.ts +4 -0
  70. package/dist/core/scan/verifiers/slack.d.ts.map +1 -0
  71. package/dist/core/scan/verifiers/slack.js +28 -0
  72. package/dist/core/scan/verifiers/slack.js.map +1 -0
  73. package/dist/core/scan/verifiers/stripe.d.ts +4 -0
  74. package/dist/core/scan/verifiers/stripe.d.ts.map +1 -0
  75. package/dist/core/scan/verifiers/stripe.js +22 -0
  76. package/dist/core/scan/verifiers/stripe.js.map +1 -0
  77. package/dist/core/scan/verifiers/supabase.d.ts +4 -0
  78. package/dist/core/scan/verifiers/supabase.d.ts.map +1 -0
  79. package/dist/core/scan/verifiers/supabase.js +35 -0
  80. package/dist/core/scan/verifiers/supabase.js.map +1 -0
  81. package/dist/core/score/health.d.ts.map +1 -1
  82. package/dist/core/score/health.js +1 -0
  83. package/dist/core/score/health.js.map +1 -1
  84. package/dist/core/watch/watcher.d.ts +4 -1
  85. package/dist/core/watch/watcher.d.ts.map +1 -1
  86. package/dist/core/watch/watcher.js +4 -2
  87. package/dist/core/watch/watcher.js.map +1 -1
  88. package/dist/types/index.d.ts +55 -4
  89. package/dist/types/index.d.ts.map +1 -1
  90. package/dist/ui/format.d.ts +22 -12
  91. package/dist/ui/format.d.ts.map +1 -1
  92. package/dist/ui/format.js +223 -74
  93. package/dist/ui/format.js.map +1 -1
  94. package/dist/ui/reporter.d.ts +18 -15
  95. package/dist/ui/reporter.d.ts.map +1 -1
  96. package/dist/ui/reporter.js +142 -182
  97. package/dist/ui/reporter.js.map +1 -1
  98. package/dist/ui/sound.d.ts +6 -0
  99. package/dist/ui/sound.d.ts.map +1 -0
  100. package/dist/ui/sound.js +13 -0
  101. package/dist/ui/sound.js.map +1 -0
  102. package/dist/ui/theme.d.ts +67 -0
  103. package/dist/ui/theme.d.ts.map +1 -0
  104. package/dist/ui/theme.js +252 -0
  105. package/dist/ui/theme.js.map +1 -0
  106. package/package.json +6 -3
@@ -8,5 +8,7 @@
8
8
  * 5. Restore snapshot
9
9
  * 6. Report success
10
10
  */
11
- export declare function executeUndo(projectDir: string): Promise<void>;
11
+ export declare function executeUndo(projectDir: string, options?: {
12
+ list?: boolean;
13
+ }): Promise<void>;
12
14
  //# sourceMappingURL=undo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFnE"}
1
+ {"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CA4Gf"}
@@ -1,7 +1,7 @@
1
1
  // ─── Undo Command ────────────────────────────────────────────────────────────
2
2
  // Restore the latest snapshot to revert changes made by `bilt fix`.
3
3
  import path from "node:path";
4
- import chalk from "chalk";
4
+ import { colors, glyphs, text, sectionHeader, divider } from "../ui/theme.js";
5
5
  import { getLatestSnapshot, listSnapshots, restoreSnapshot, } from "../core/fix/snapshot.js";
6
6
  import { requireSimpleConfirmation } from "../core/fix/confirm.js";
7
7
  import { reportUndoComplete } from "../ui/reporter.js";
@@ -17,14 +17,32 @@ import { promises as fs } from "node:fs";
17
17
  * 5. Restore snapshot
18
18
  * 6. Report success
19
19
  */
20
- export async function executeUndo(projectDir) {
20
+ export async function executeUndo(projectDir, options = {}) {
21
21
  const rootDir = path.resolve(projectDir);
22
22
  // ── List snapshots ──────────────────────────────────────────────────
23
23
  const snapshots = await listSnapshots(rootDir);
24
+ if (options.list) {
25
+ console.log("");
26
+ console.log(sectionHeader("Snapshots History (last 10)"));
27
+ console.log(divider());
28
+ if (snapshots.length === 0) {
29
+ console.log(colors.slateDim.dim(" No snapshots found."));
30
+ console.log("");
31
+ return;
32
+ }
33
+ const count = Math.min(snapshots.length, 10);
34
+ for (let i = 0; i < count; i++) {
35
+ const snap = snapshots[i];
36
+ const ts = new Date(snap.timestamp).toISOString().replace("T", " ").slice(0, 19);
37
+ console.log(` ${colors.vitalTeal.apply(snap.id)} ${colors.slateDim.apply(ts)} ${snap.description}`);
38
+ }
39
+ console.log("");
40
+ return;
41
+ }
24
42
  if (snapshots.length === 0) {
25
43
  console.log("");
26
- console.log(chalk.yellow(" No snapshots found. Nothing to undo."));
27
- console.log(chalk.dim(" Snapshots are created automatically when `bilt fix` or `bilt init` makes changes."));
44
+ console.log(colors.amberFlag.apply(" " + glyphs.warning + " No snapshots found. Nothing to undo."));
45
+ console.log(colors.slateDim.dim(" Snapshots are created automatically when `bilt fix` or `bilt init` makes changes."));
28
46
  console.log("");
29
47
  return;
30
48
  }
@@ -32,17 +50,17 @@ export async function executeUndo(projectDir) {
32
50
  const snapshot = await getLatestSnapshot(rootDir);
33
51
  if (!snapshot) {
34
52
  console.log("");
35
- console.log(chalk.yellow(" Could not load the latest snapshot."));
53
+ console.log(colors.amberFlag.apply(" " + glyphs.warning + " Could not load the latest snapshot."));
36
54
  console.log("");
37
55
  return;
38
56
  }
39
57
  // ── Preview changes ─────────────────────────────────────────────────
40
58
  console.log("");
41
- console.log(chalk.bold(` Snapshot: ${chalk.cyan(snapshot.id)}`));
42
- console.log(chalk.dim(` ${snapshot.description}`));
43
- console.log(chalk.dim(` Created: ${new Date(snapshot.timestamp).toLocaleString()}`));
59
+ console.log(text.bold(" " + glyphs.info + " Snapshot: " + colors.vitalTeal.apply(snapshot.id)));
60
+ console.log(colors.slateDim.dim(" " + snapshot.description));
61
+ console.log(colors.slateDim.dim(" Created: " + new Date(snapshot.timestamp).toLocaleString()));
44
62
  console.log("");
45
- console.log(chalk.bold(" Files to restore:"));
63
+ console.log(text.bold(" Files to restore:"));
46
64
  for (const file of snapshot.files) {
47
65
  const fullPath = path.join(rootDir, file.path);
48
66
  let currentContent = "";
@@ -54,7 +72,7 @@ export async function executeUndo(projectDir) {
54
72
  }
55
73
  const hasChanged = currentContent !== file.content;
56
74
  if (hasChanged) {
57
- console.log(chalk.yellow(` ${file.path}`));
75
+ console.log(colors.amberFlag.apply(" " + glyphs.warning + " " + file.path));
58
76
  // Show brief diff
59
77
  const diff = formatDiff(currentContent, file.content);
60
78
  const diffLines = diff.split("\n").slice(0, 8);
@@ -62,11 +80,11 @@ export async function executeUndo(projectDir) {
62
80
  console.log(` ${line}`);
63
81
  }
64
82
  if (diff.split("\n").length > 8) {
65
- console.log(chalk.dim(` and more`));
83
+ console.log(colors.slateDim.dim(" ... and more"));
66
84
  }
67
85
  }
68
86
  else {
69
- console.log(chalk.dim(` ${file.path} (unchanged)`));
87
+ console.log(colors.slateDim.dim(" " + glyphs.fixed + " " + file.path + " (unchanged)"));
70
88
  }
71
89
  }
72
90
  console.log("");
@@ -79,12 +97,12 @@ export async function executeUndo(projectDir) {
79
97
  apply: async () => true,
80
98
  });
81
99
  if (!confirmed) {
82
- console.log(chalk.dim(" Undo cancelled."));
100
+ console.log(colors.slateDim.dim(" Undo cancelled."));
83
101
  console.log("");
84
102
  return;
85
103
  }
86
104
  // ── Restore ─────────────────────────────────────────────────────────
87
105
  await restoreSnapshot(snapshot.id, rootDir);
88
- reportUndoComplete(snapshot);
106
+ await reportUndoComplete(snapshot);
89
107
  }
90
108
  //# sourceMappingURL=undo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAKlE;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA0Df"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAKlE;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAqEf"}
@@ -1,7 +1,7 @@
1
1
  // ─── Watch Command ───────────────────────────────────────────────────────────
2
2
  // Real-time file monitoring with instant secret & env scanning.
3
3
  import path from "node:path";
4
- import chalk from "chalk";
4
+ import { colors, glyphs, text, sectionHeader, isPlainMode } from "../ui/theme.js";
5
5
  import { loadConfig } from "../config/config.js";
6
6
  import { startWatcher, stopWatcher } from "../core/watch/watcher.js";
7
7
  import { reportWatchEvent } from "../ui/reporter.js";
@@ -18,13 +18,19 @@ export async function executeWatch(projectDir, options = {}) {
18
18
  // ── Status banner ───────────────────────────────────────────────────
19
19
  if (!options.quiet) {
20
20
  console.log("");
21
- console.log(chalk.cyan.bold(" 👁️ Bilt Watch Mode"));
22
- console.log(chalk.dim(` Monitoring ${rootDir} for changes…`));
23
- console.log(chalk.dim(" Press Ctrl+C to stop."));
21
+ console.log(colors.vitalTeal.bold(" " + glyphs.info + " Bilt Watch Mode"));
22
+ if (!isPlainMode())
23
+ await new Promise((resolve) => setTimeout(resolve, 80));
24
+ console.log(colors.slateDim.dim(" Monitoring " + rootDir + " for changes\u2026"));
25
+ if (!isPlainMode())
26
+ await new Promise((resolve) => setTimeout(resolve, 80));
27
+ console.log(colors.slateDim.dim(" Press Ctrl+C to stop."));
28
+ if (!isPlainMode())
29
+ await new Promise((resolve) => setTimeout(resolve, 80));
24
30
  console.log("");
25
31
  }
26
32
  // ── Start watcher ──────────────────────────────────────────────────
27
- const watcher = startWatcher(rootDir, config, (event) => {
33
+ const watcher = startWatcher(rootDir, config, async (event) => {
28
34
  // Only report if there are findings or the file was deleted
29
35
  if (event.findings.length > 0 || event.type === "unlink") {
30
36
  // Map absolute path back to relative path for formatting
@@ -33,22 +39,25 @@ export async function executeWatch(projectDir, options = {}) {
33
39
  ...f,
34
40
  file: path.relative(rootDir, f.file),
35
41
  }));
36
- reportWatchEvent({
42
+ await reportWatchEvent({
37
43
  ...event,
38
44
  file: relativePath,
39
45
  findings: relativeFindings,
40
46
  });
41
47
  }
48
+ }, {
49
+ debounce: options.debounce,
50
+ poll: options.poll,
42
51
  });
43
52
  // ── Graceful shutdown ──────────────────────────────────────────────
44
53
  const cleanup = async () => {
45
54
  if (!options.quiet) {
46
55
  console.log("");
47
- console.log(chalk.dim(" Stopping watcher"));
56
+ console.log(colors.slateDim.dim(" Stopping watcher\u2026"));
48
57
  }
49
58
  await stopWatcher(watcher);
50
59
  if (!options.quiet) {
51
- console.log(chalk.green(" Watcher stopped."));
60
+ console.log(colors.mintClear.apply(" " + glyphs.fixed + " Watcher stopped."));
52
61
  console.log("");
53
62
  }
54
63
  process.exit(0);
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,eAAO,MAAM,cAAc,EAAE,UAsB5B,CAAC;AAoBF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA+BzE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,eAAO,MAAM,cAAc,EAAE,UA+B5B,CAAC;AAoBF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgCzE"}
@@ -8,6 +8,14 @@ export const DEFAULT_CONFIG = {
8
8
  "build/**",
9
9
  "coverage/**",
10
10
  ".bilt/**",
11
+ "venv/**",
12
+ ".venv/**",
13
+ "__pycache__/**",
14
+ ".next/**",
15
+ ".nuxt/**",
16
+ ".cache/**",
17
+ ".vercel/**",
18
+ ".netlify/**",
11
19
  "*.min.js",
12
20
  "*.min.css",
13
21
  "*.map",
@@ -22,6 +30,7 @@ export const DEFAULT_CONFIG = {
22
30
  historyDepth: 10,
23
31
  customRules: [],
24
32
  funMode: false,
33
+ sound: false,
25
34
  };
26
35
  // ─── Config Loader ───────────────────────────────────────────────────────────
27
36
  const explorer = cosmiconfig("bilt", {
@@ -65,6 +74,7 @@ export async function loadConfig(searchFrom) {
65
74
  ? [...DEFAULT_CONFIG.customRules, ...userConfig.customRules]
66
75
  : [...DEFAULT_CONFIG.customRules],
67
76
  funMode: userConfig.funMode ?? DEFAULT_CONFIG.funMode,
77
+ sound: userConfig.sound ?? DEFAULT_CONFIG.sound,
68
78
  };
69
79
  }
70
80
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,MAAM,EAAE;QACN,iBAAiB;QACjB,SAAS;QACT,SAAS;QACT,UAAU;QACV,aAAa;QACb,UAAU;QACV,UAAU;QACV,WAAW;QACX,OAAO;QACP,QAAQ;QACR,mBAAmB;QACnB,WAAW;QACX,gBAAgB;KACjB;IACD,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,GAAG;IACrB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,gFAAgF;AAEhF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE;IACnC,YAAY,EAAE;QACZ,SAAS;QACT,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,iBAAiB;QACjB,iBAAiB;QACjB,gBAAgB;KACjB;CACF,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAmB;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAA6B,CAAC;QAExD,OAAO;YACL,MAAM,EAAE,UAAU,CAAC,MAAM;gBACvB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;gBAClD,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;YAC9B,iBAAiB,EAAE;gBACjB,GAAG,cAAc,CAAC,iBAAiB;gBACnC,GAAG,UAAU,CAAC,iBAAiB;aAChC;YACD,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;YACrD,gBAAgB,EACd,UAAU,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB;YAChE,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;YACpE,WAAW,EAAE,UAAU,CAAC,WAAW;gBACjC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC5D,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;YACnC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;SACtD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,MAAM,EAAE;QACN,iBAAiB;QACjB,SAAS;QACT,SAAS;QACT,UAAU;QACV,aAAa;QACb,UAAU;QACV,SAAS;QACT,UAAU;QACV,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,WAAW;QACX,YAAY;QACZ,aAAa;QACb,UAAU;QACV,WAAW;QACX,OAAO;QACP,QAAQ;QACR,mBAAmB;QACnB,WAAW;QACX,gBAAgB;KACjB;IACD,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,EAAE;IACX,gBAAgB,EAAE,GAAG;IACrB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,gFAAgF;AAEhF,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE;IACnC,YAAY,EAAE;QACZ,SAAS;QACT,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,iBAAiB;QACjB,iBAAiB;QACjB,gBAAgB;KACjB;CACF,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAmB;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAA6B,CAAC;QAExD,OAAO;YACL,MAAM,EAAE,UAAU,CAAC,MAAM;gBACvB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;gBAClD,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;YAC9B,iBAAiB,EAAE;gBACjB,GAAG,cAAc,CAAC,iBAAiB;gBACnC,GAAG,UAAU,CAAC,iBAAiB;aAChC;YACD,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;YACrD,gBAAgB,EACd,UAAU,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB;YAChE,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY;YACpE,WAAW,EAAE,UAAU,CAAC,WAAW;gBACjC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;gBAC5D,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;YACnC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;YACrD,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;SAChD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -17,5 +17,5 @@ export declare function requireTypedConfirmation(action: FixAction, fileName: st
17
17
  * @param action The fix action being applied.
18
18
  * @returns `true` if the user confirms, `false` otherwise.
19
19
  */
20
- export declare function requireSimpleConfirmation(action: FixAction): Promise<boolean>;
20
+ export declare function requireSimpleConfirmation(action: FixAction, customMessage?: string): Promise<boolean>;
21
21
  //# sourceMappingURL=confirm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../../src/core/fix/confirm.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOtD;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
1
+ {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../../src/core/fix/confirm.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQtD;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
@@ -9,6 +9,7 @@
9
9
  // 3. Irreversible → user must type the filename to confirm.
10
10
  // ─────────────────────────────────────────────────────────────────────────────
11
11
  import Enquirer from "enquirer";
12
+ import { SNAPSHOT_NOTICE } from "../../ui/theme.js";
12
13
  // enquirer's CJS default export needs this accessor in ESM
13
14
  const enquirer = new Enquirer();
14
15
  // ─── Public API ──────────────────────────────────────────────────────────────
@@ -32,6 +33,7 @@ export async function requireTypedConfirmation(action, fileName) {
32
33
  type: "input",
33
34
  name: "confirm",
34
35
  message: `⚠️ This action is IRREVERSIBLE: ${action.description}\n` +
36
+ ` ${SNAPSHOT_NOTICE}\n` +
35
37
  ` Type "${fileName}" to confirm:`,
36
38
  }));
37
39
  return response.confirm.trim() === fileName;
@@ -43,7 +45,7 @@ export async function requireTypedConfirmation(action, fileName) {
43
45
  * @param action The fix action being applied.
44
46
  * @returns `true` if the user confirms, `false` otherwise.
45
47
  */
46
- export async function requireSimpleConfirmation(action) {
48
+ export async function requireSimpleConfirmation(action, customMessage) {
47
49
  // Safe actions and test environment need no confirmation
48
50
  if (action.type === "safe" ||
49
51
  process.env.NODE_ENV === "test" ||
@@ -52,7 +54,7 @@ export async function requireSimpleConfirmation(action) {
52
54
  const response = (await enquirer.prompt({
53
55
  type: "confirm",
54
56
  name: "confirm",
55
- message: `Apply fix: ${action.description}?`,
57
+ message: customMessage || `Apply fix: ${action.description}?\n ${SNAPSHOT_NOTICE}`,
56
58
  initial: false,
57
59
  }));
58
60
  return response.confirm;
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../../src/core/fix/confirm.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,sCAAsC;AACtC,EAAE;AACF,eAAe;AACf,gEAAgE;AAChE,oDAAoD;AACpD,mEAAmE;AACnE,gFAAgF;AAEhF,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,2DAA2D;AAC3D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAEhC,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAiB,EACjB,QAAgB;IAEhB,yDAAyD;IACzD,IACE,MAAM,CAAC,IAAI,KAAK,MAAM;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM;QAElB,OAAO,IAAI,CAAC;IAEd,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EACL,oCAAoC,MAAM,CAAC,WAAW,IAAI;YAC1D,YAAY,QAAQ,eAAe;KACtC,CAAC,CAAwB,CAAC;IAE3B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAiB;IAEjB,yDAAyD;IACzD,IACE,MAAM,CAAC,IAAI,KAAK,MAAM;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM;QAElB,OAAO,IAAI,CAAC;IAEd,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,cAAc,MAAM,CAAC,WAAW,GAAG;QAC5C,OAAO,EAAE,KAAK;KACf,CAAC,CAAyB,CAAC;IAE5B,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../../src/core/fix/confirm.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,sCAAsC;AACtC,EAAE;AACF,eAAe;AACf,gEAAgE;AAChE,oDAAoD;AACpD,mEAAmE;AACnE,gFAAgF;AAEhF,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,2DAA2D;AAC3D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAEhC,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAiB,EACjB,QAAgB;IAEhB,yDAAyD;IACzD,IACE,MAAM,CAAC,IAAI,KAAK,MAAM;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM;QAElB,OAAO,IAAI,CAAC;IAEd,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EACL,oCAAoC,MAAM,CAAC,WAAW,IAAI;YAC1D,MAAM,eAAe,IAAI;YACzB,YAAY,QAAQ,eAAe;KACtC,CAAC,CAAwB,CAAC;IAE3B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAiB,EACjB,aAAsB;IAEtB,yDAAyD;IACzD,IACE,MAAM,CAAC,IAAI,KAAK,MAAM;QACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM;QAElB,OAAO,IAAI,CAAC;IAEd,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;QACtC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,aAAa,IAAI,cAAc,MAAM,CAAC,WAAW,QAAQ,eAAe,EAAE;QACnF,OAAO,EAAE,KAAK;KACf,CAAC,CAAyB,CAAC;IAE5B,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Surgically removes a string from Git history using git filter-branch.
3
+ * Note: This replaces the exact string with [REDACTED_BY_BILT] across all commits in all files.
4
+ */
5
+ export declare function purgeSecretFromHistory(rootDir: string, secretValue: string): Promise<boolean>;
6
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/core/fix/git.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCnG"}
@@ -0,0 +1,45 @@
1
+ import { exec } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ const execAsync = promisify(exec);
4
+ /**
5
+ * Surgically removes a string from Git history using git filter-branch.
6
+ * Note: This replaces the exact string with [REDACTED_BY_BILT] across all commits in all files.
7
+ */
8
+ export async function purgeSecretFromHistory(rootDir, secretValue) {
9
+ if (!secretValue || secretValue.length < 5) {
10
+ throw new Error("Secret value is too short to safely purge from history (risk of accidental broad replacements).");
11
+ }
12
+ // We use node and base64 to safely replace the string cross-platform without breaking on special characters
13
+ const secretB64 = Buffer.from(secretValue).toString('base64');
14
+ const nodeScript = `
15
+ const fs=require('fs');
16
+ const path=require('path');
17
+ const secret=Buffer.from('${secretB64}','base64').toString('utf8');
18
+ function walk(dir) {
19
+ for(let f of fs.readdirSync(dir)){
20
+ if(f==='.git') continue;
21
+ let p=path.join(dir,f);
22
+ if(fs.statSync(p).isDirectory()) walk(p);
23
+ else {
24
+ try {
25
+ let c=fs.readFileSync(p,'utf8');
26
+ if(c.includes(secret)) fs.writeFileSync(p, c.split(secret).join('[REDACTED_BY_BILT]'));
27
+ } catch(e){}
28
+ }
29
+ }
30
+ }
31
+ walk('.');
32
+ `.replace(/\n/g, " ");
33
+ const filterBranchCmd = `git filter-branch --force --tree-filter "node -e \\"${nodeScript}\\"" HEAD`;
34
+ try {
35
+ await execAsync(filterBranchCmd, { cwd: rootDir });
36
+ // Clean up backup refs
37
+ await execAsync("git for-each-ref --format=\\%(refname) refs/original/ | xargs -n 1 git update-ref -d", { cwd: rootDir }).catch(() => { });
38
+ return true;
39
+ }
40
+ catch (err) {
41
+ const errorMsg = err instanceof Error ? err.message : String(err);
42
+ throw new Error(`Failed to rewrite Git history: ${errorMsg}`);
43
+ }
44
+ }
45
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/core/fix/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,WAAmB;IAC/E,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,iGAAiG,CAAC,CAAC;IACrH,CAAC;IAED,4GAA4G;IAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE9D,MAAM,UAAU,GAAG;;;gCAGW,SAAS;;;;;;;;;;;;;;;GAetC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEtB,MAAM,eAAe,GAAG,uDAAuD,UAAU,WAAW,CAAC;IAErG,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,uBAAuB;QACvB,MAAM,SAAS,CAAC,sFAAsF,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1I,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/core/fix/snapshot.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,sBAAsB,CAAC;AAkF9B;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAiDnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAmC3E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAG1B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAelB"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/core/fix/snapshot.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,sBAAsB,CAAC;AA2I9B;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAiEnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAmC3E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAG1B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAelB"}
@@ -72,6 +72,58 @@ async function hydrateSnapshot(manifest, dir) {
72
72
  };
73
73
  }
74
74
  // ─── Public API ──────────────────────────────────────────────────────────────
75
+ /**
76
+ * Create a snapshot of the specified files.
77
+ *
78
+ * Copies each file into `.bilt/snapshots/<id>/files/` preserving relative
79
+ * paths, and writes a `manifest.json` describing the snapshot.
80
+ *
81
+ * @param files Absolute paths of files to snapshot.
82
+ * @param description Human-readable description (e.g. "Before gitignore fix").
83
+ * @param projectDir Root directory of the project.
84
+ * @returns The created Snapshot.
85
+ */
86
+ async function ensureGitignored(projectDir) {
87
+ const gitignorePath = path.join(projectDir, ".gitignore");
88
+ let content = "";
89
+ try {
90
+ content = await fs.readFile(gitignorePath, "utf-8");
91
+ }
92
+ catch (err) {
93
+ if (err.code !== "ENOENT")
94
+ throw err;
95
+ }
96
+ const lines = content.split(/\r?\n/);
97
+ const hasBilt = lines.some((line) => {
98
+ const trimmed = line.trim();
99
+ return (trimmed === ".bilt" ||
100
+ trimmed === ".bilt/" ||
101
+ trimmed === "**/.bilt" ||
102
+ trimmed === "**/.bilt/");
103
+ });
104
+ if (!hasBilt) {
105
+ const suffix = content.endsWith("\n") || content === "" ? "" : "\n";
106
+ await fs.writeFile(gitignorePath, content + suffix + ".bilt/\n", "utf-8");
107
+ }
108
+ }
109
+ async function pruneSnapshots(projectDir) {
110
+ const snapshots = await listSnapshots(projectDir);
111
+ const now = Date.now();
112
+ const sevenDaysAgo = now - 7 * 24 * 60 * 60 * 1000;
113
+ for (let i = 0; i < snapshots.length; i++) {
114
+ const snapshot = snapshots[i];
115
+ const age = new Date(snapshot.timestamp).getTime();
116
+ const dir = snapshotDir(projectDir, snapshot.id);
117
+ if (age < sevenDaysAgo || i >= 10) {
118
+ try {
119
+ await fs.rm(dir, { recursive: true, force: true });
120
+ }
121
+ catch {
122
+ // Ignore deletion failure
123
+ }
124
+ }
125
+ }
126
+ }
75
127
  /**
76
128
  * Create a snapshot of the specified files.
77
129
  *
@@ -84,6 +136,13 @@ async function hydrateSnapshot(manifest, dir) {
84
136
  * @returns The created Snapshot.
85
137
  */
86
138
  export async function createSnapshot(files, description, projectDir) {
139
+ // Ensure the snapshots directory is in .gitignore
140
+ try {
141
+ await ensureGitignored(projectDir);
142
+ }
143
+ catch {
144
+ // Ignore gitignore writing failures
145
+ }
87
146
  const id = generateId();
88
147
  const dir = snapshotDir(projectDir, id);
89
148
  const filesDir = path.join(dir, "files");
@@ -114,12 +173,20 @@ export async function createSnapshot(files, description, projectDir) {
114
173
  filePaths,
115
174
  };
116
175
  await fs.writeFile(path.join(dir, "manifest.json"), JSON.stringify(manifest, null, 2), "utf-8");
117
- return {
176
+ const created = {
118
177
  id,
119
178
  timestamp,
120
179
  description,
121
180
  files: snapshotFiles,
122
181
  };
182
+ // Prune snapshots (keeps last 10, deletes anything older than 7 days)
183
+ try {
184
+ await pruneSnapshots(projectDir);
185
+ }
186
+ catch {
187
+ // Ignore pruning failure
188
+ }
189
+ return created;
123
190
  }
124
191
  /**
125
192
  * List all existing snapshots, sorted by timestamp (newest first).
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/core/fix/snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/core/fix/snapshot.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ProviderInfo } from "../../types/index.js";
1
+ import type { ProviderInfo, ProviderKnowledge } from "../../types/index.js";
2
2
  export declare const PROVIDER_MAP: Map<string, ProviderInfo>;
3
3
  /**
4
4
  * Attempt to identify which cloud provider a secret value belongs to.
@@ -9,4 +9,5 @@ export declare const PROVIDER_MAP: Map<string, ProviderInfo>;
9
9
  * 3. Return `undefined` if the provider cannot be determined.
10
10
  */
11
11
  export declare function detectProvider(value: string, matchedRuleId?: string): ProviderInfo | undefined;
12
+ export declare function getProviderKnowledge(ruleId: string): ProviderKnowledge | undefined;
12
13
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/core/rules/providers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAiHzD,eAAO,MAAM,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAcjD,CAAC;AAqDH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,GAAG,SAAS,CAiB1B"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/core/rules/providers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2K5E,eAAO,MAAM,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAqBjD,CAAC;AA8DH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,GAAG,SAAS,CAiB1B;AAMD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAkBlF"}