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.
- package/bin/bilt.js +1 -1
- package/dist/cli.js +62 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +113 -52
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/fix.d.ts +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +211 -64
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/scan.d.ts +6 -9
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +326 -206
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/undo.d.ts +3 -1
- package/dist/commands/undo.d.ts.map +1 -1
- package/dist/commands/undo.js +32 -14
- package/dist/commands/undo.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +17 -8
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +10 -0
- package/dist/config/config.js.map +1 -1
- package/dist/core/fix/confirm.d.ts +1 -1
- package/dist/core/fix/confirm.d.ts.map +1 -1
- package/dist/core/fix/confirm.js +4 -2
- package/dist/core/fix/confirm.js.map +1 -1
- package/dist/core/fix/git.d.ts +6 -0
- package/dist/core/fix/git.d.ts.map +1 -0
- package/dist/core/fix/git.js +45 -0
- package/dist/core/fix/git.js.map +1 -0
- package/dist/core/fix/snapshot.d.ts.map +1 -1
- package/dist/core/fix/snapshot.js +68 -1
- package/dist/core/fix/snapshot.js.map +1 -1
- package/dist/core/rules/providers.d.ts +2 -1
- package/dist/core/rules/providers.d.ts.map +1 -1
- package/dist/core/rules/providers.js +91 -0
- package/dist/core/rules/providers.js.map +1 -1
- package/dist/core/rules/secret-rules.d.ts.map +1 -1
- package/dist/core/rules/secret-rules.js +82 -3
- package/dist/core/rules/secret-rules.js.map +1 -1
- package/dist/core/scan/env.d.ts.map +1 -1
- package/dist/core/scan/env.js +15 -1
- package/dist/core/scan/env.js.map +1 -1
- package/dist/core/scan/secrets.d.ts.map +1 -1
- package/dist/core/scan/secrets.js +49 -4
- package/dist/core/scan/secrets.js.map +1 -1
- package/dist/core/scan/verifiers/aws.d.ts +4 -0
- package/dist/core/scan/verifiers/aws.d.ts.map +1 -0
- package/dist/core/scan/verifiers/aws.js +98 -0
- package/dist/core/scan/verifiers/aws.js.map +1 -0
- package/dist/core/scan/verifiers/github.d.ts +4 -0
- package/dist/core/scan/verifiers/github.d.ts.map +1 -0
- package/dist/core/scan/verifiers/github.js +23 -0
- package/dist/core/scan/verifiers/github.js.map +1 -0
- package/dist/core/scan/verifiers/index.d.ts +7 -0
- package/dist/core/scan/verifiers/index.d.ts.map +1 -0
- package/dist/core/scan/verifiers/index.js +15 -0
- package/dist/core/scan/verifiers/index.js.map +1 -0
- package/dist/core/scan/verifiers/openai.d.ts +4 -0
- package/dist/core/scan/verifiers/openai.d.ts.map +1 -0
- package/dist/core/scan/verifiers/openai.js +22 -0
- package/dist/core/scan/verifiers/openai.js.map +1 -0
- package/dist/core/scan/verifiers/slack.d.ts +4 -0
- package/dist/core/scan/verifiers/slack.d.ts.map +1 -0
- package/dist/core/scan/verifiers/slack.js +28 -0
- package/dist/core/scan/verifiers/slack.js.map +1 -0
- package/dist/core/scan/verifiers/stripe.d.ts +4 -0
- package/dist/core/scan/verifiers/stripe.d.ts.map +1 -0
- package/dist/core/scan/verifiers/stripe.js +22 -0
- package/dist/core/scan/verifiers/stripe.js.map +1 -0
- package/dist/core/scan/verifiers/supabase.d.ts +4 -0
- package/dist/core/scan/verifiers/supabase.d.ts.map +1 -0
- package/dist/core/scan/verifiers/supabase.js +35 -0
- package/dist/core/scan/verifiers/supabase.js.map +1 -0
- package/dist/core/score/health.d.ts.map +1 -1
- package/dist/core/score/health.js +1 -0
- package/dist/core/score/health.js.map +1 -1
- package/dist/core/watch/watcher.d.ts +4 -1
- package/dist/core/watch/watcher.d.ts.map +1 -1
- package/dist/core/watch/watcher.js +4 -2
- package/dist/core/watch/watcher.js.map +1 -1
- package/dist/types/index.d.ts +55 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/format.d.ts +22 -12
- package/dist/ui/format.d.ts.map +1 -1
- package/dist/ui/format.js +223 -74
- package/dist/ui/format.js.map +1 -1
- package/dist/ui/reporter.d.ts +18 -15
- package/dist/ui/reporter.d.ts.map +1 -1
- package/dist/ui/reporter.js +142 -182
- package/dist/ui/reporter.js.map +1 -1
- package/dist/ui/sound.d.ts +6 -0
- package/dist/ui/sound.d.ts.map +1 -0
- package/dist/ui/sound.js +13 -0
- package/dist/ui/sound.js.map +1 -0
- package/dist/ui/theme.d.ts +67 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +252 -0
- package/dist/ui/theme.js.map +1 -0
- package/package.json +6 -3
package/dist/commands/undo.d.ts
CHANGED
|
@@ -8,5 +8,7 @@
|
|
|
8
8
|
* 5. Restore snapshot
|
|
9
9
|
* 6. Report success
|
|
10
10
|
*/
|
|
11
|
-
export declare function executeUndo(projectDir: string
|
|
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,
|
|
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"}
|
package/dist/commands/undo.js
CHANGED
|
@@ -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
|
|
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(
|
|
27
|
-
console.log(
|
|
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(
|
|
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(
|
|
42
|
-
console.log(
|
|
43
|
-
console.log(
|
|
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(
|
|
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(
|
|
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(
|
|
83
|
+
console.log(colors.slateDim.dim(" ... and more"));
|
|
66
84
|
}
|
|
67
85
|
}
|
|
68
86
|
else {
|
|
69
|
-
console.log(
|
|
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(
|
|
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":"AAAA,gFAAgF;AAChF,oEAAoE;AAEpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/commands/undo.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oEAAoE;AAEpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,OAAO,GAAuB,EAAE;IAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzC,uEAAuE;IACvE,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,uCAAuC,CAAC,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjB,qFAAqF,CACtF,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,sCAAsC,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CACnF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,GAAG,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,KAAK,IAAI,CAAC,OAAO,CAAC;QAEnD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAE/E,kBAAkB;YAClB,MAAM,IAAI,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,uEAAuE;IACvE,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC;QAChD,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,WAAW,QAAQ,CAAC,KAAK,CAAC,MAAM,wBAAwB;QACrE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,MAAM,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5C,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -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,
|
|
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"}
|
package/dist/commands/watch.js
CHANGED
|
@@ -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
|
|
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(
|
|
22
|
-
|
|
23
|
-
|
|
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(
|
|
56
|
+
console.log(colors.slateDim.dim(" Stopping watcher\u2026"));
|
|
48
57
|
}
|
|
49
58
|
await stopWatcher(watcher);
|
|
50
59
|
if (!options.quiet) {
|
|
51
|
-
console.log(
|
|
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":"AAAA,gFAAgF;AAChF,gEAAgE;AAEhE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
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,
|
|
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"}
|
package/dist/config/config.js
CHANGED
|
@@ -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;
|
|
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;
|
|
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"}
|
package/dist/core/fix/confirm.js
CHANGED
|
@@ -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;
|
|
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;
|
|
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
|
-
|
|
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":"
|
|
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"}
|