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/fix.js
CHANGED
|
@@ -1,17 +1,29 @@
|
|
|
1
1
|
// ─── Fix Command ─────────────────────────────────────────────────────────────
|
|
2
2
|
// Scans for issues, generates fix actions, and applies them interactively.
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import
|
|
4
|
+
import { colors, glyphs, sectionHeader, text } from "../ui/theme.js";
|
|
5
5
|
import Enquirer from "enquirer";
|
|
6
6
|
import { promises as fs } from "node:fs";
|
|
7
7
|
import { executeScan } from "./scan.js";
|
|
8
8
|
import { loadConfig } from "../config/config.js";
|
|
9
9
|
import { createSnapshot } from "../core/fix/snapshot.js";
|
|
10
|
+
import { purgeSecretFromHistory } from "../core/fix/git.js";
|
|
11
|
+
import { parseEnvFile } from "../core/scan/env.js";
|
|
10
12
|
import { addToGitignore, generateEnvExample, addMissingEnvVars, } from "../core/fix/env-fix.js";
|
|
11
13
|
import { requireTypedConfirmation, requireSimpleConfirmation, } from "../core/fix/confirm.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
+
import { reportFixPlan, reportFixComplete, } from "../ui/reporter.js";
|
|
15
|
+
import {} from "../types/index.js";
|
|
14
16
|
import { SECRET_RULES } from "../core/rules/secret-rules.js";
|
|
17
|
+
function touchesGitHistory(action) {
|
|
18
|
+
if (action.touchesGitHistory)
|
|
19
|
+
return true;
|
|
20
|
+
const desc = action.description.toLowerCase();
|
|
21
|
+
const preview = (action.preview || "").toLowerCase();
|
|
22
|
+
return (desc.includes("git history") ||
|
|
23
|
+
desc.includes("rewrite history") ||
|
|
24
|
+
preview.includes("git history") ||
|
|
25
|
+
preview.includes("rewrite history"));
|
|
26
|
+
}
|
|
15
27
|
/**
|
|
16
28
|
* Execute the `bilt fix` command.
|
|
17
29
|
*
|
|
@@ -27,25 +39,30 @@ export async function executeFix(projectDir, options = {}) {
|
|
|
27
39
|
// ── Run scan ────────────────────────────────────────────────────────
|
|
28
40
|
const result = await executeScan(rootDir, {
|
|
29
41
|
quiet: true,
|
|
42
|
+
debug: options.debug,
|
|
43
|
+
retainSecrets: true,
|
|
30
44
|
});
|
|
31
45
|
if (result.findings.length === 0) {
|
|
32
46
|
console.log("");
|
|
33
|
-
console.log(
|
|
47
|
+
console.log(colors.mintClear.bold(" " + glyphs.passed + " No issues found \u2014 nothing to fix"));
|
|
34
48
|
console.log("");
|
|
35
49
|
return;
|
|
36
50
|
}
|
|
37
51
|
// ── Generate fix actions ────────────────────────────────────────────
|
|
38
|
-
const actions = await generateFixActions(rootDir, result.findings);
|
|
52
|
+
const actions = await generateFixActions(rootDir, result.findings, options);
|
|
39
53
|
if (actions.length === 0) {
|
|
40
54
|
console.log("");
|
|
41
|
-
console.log(
|
|
55
|
+
console.log(colors.amberFlag.apply(" " + glyphs.warning + " Issues found but no automated fixes available. Review manually."));
|
|
42
56
|
console.log("");
|
|
43
57
|
return;
|
|
44
58
|
}
|
|
45
59
|
// ── Dry-run: preview only ───────────────────────────────────────────
|
|
46
60
|
if (options.dryRun) {
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
for (const action of actions) {
|
|
62
|
+
const plan = await action.preview();
|
|
63
|
+
await reportFixPlan(plan);
|
|
64
|
+
}
|
|
65
|
+
console.log(colors.slateDim.dim(" (Dry run \u2014 no changes applied)"));
|
|
49
66
|
console.log("");
|
|
50
67
|
return;
|
|
51
68
|
}
|
|
@@ -68,20 +85,21 @@ export async function executeFix(projectDir, options = {}) {
|
|
|
68
85
|
const safeActions = actions.filter((a) => a.type === "safe");
|
|
69
86
|
if (safeActions.length === 0) {
|
|
70
87
|
console.log("");
|
|
71
|
-
console.log(
|
|
88
|
+
console.log(colors.amberFlag.apply(" " + glyphs.warning + " No safe fixes available. Run without --safe for interactive mode."));
|
|
72
89
|
console.log("");
|
|
73
90
|
return;
|
|
74
91
|
}
|
|
75
|
-
reportFixPreview(safeActions);
|
|
76
92
|
let applied = 0;
|
|
77
93
|
let skipped = 0;
|
|
78
94
|
for (const action of safeActions) {
|
|
79
95
|
try {
|
|
80
|
-
const
|
|
81
|
-
|
|
96
|
+
const plan = await action.preview();
|
|
97
|
+
const result = await action.apply();
|
|
98
|
+
const verification = await action.verify();
|
|
99
|
+
if (result.success && verification.passed) {
|
|
82
100
|
applied++;
|
|
83
101
|
if (options.verbose) {
|
|
84
|
-
console.log(
|
|
102
|
+
console.log(colors.mintClear.apply(" " + glyphs.fixed + " " + action.description));
|
|
85
103
|
}
|
|
86
104
|
}
|
|
87
105
|
else {
|
|
@@ -92,67 +110,107 @@ export async function executeFix(projectDir, options = {}) {
|
|
|
92
110
|
skipped++;
|
|
93
111
|
if (options.verbose) {
|
|
94
112
|
const msg = error instanceof Error ? error.message : String(error);
|
|
95
|
-
console.log(
|
|
113
|
+
console.log(colors.pulseCoral.apply(" " + glyphs.critical + " Failed: " + action.description + " (" + msg + ")"));
|
|
96
114
|
}
|
|
97
115
|
}
|
|
98
116
|
}
|
|
99
|
-
reportFixComplete(applied, skipped);
|
|
117
|
+
await reportFixComplete(applied, skipped);
|
|
100
118
|
return;
|
|
101
119
|
}
|
|
102
120
|
// ── Interactive mode ────────────────────────────────────────────────
|
|
103
|
-
reportFixPreview(actions);
|
|
104
121
|
let applied = 0;
|
|
105
122
|
let skipped = 0;
|
|
106
123
|
for (const action of actions) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (action.preview) {
|
|
110
|
-
console.log(chalk.dim(` ${action.preview}`));
|
|
111
|
-
}
|
|
124
|
+
const plan = await action.preview();
|
|
125
|
+
await reportFixPlan(plan);
|
|
112
126
|
let shouldApply = false;
|
|
113
|
-
if (
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
127
|
+
if (plan.requiresConfirmation) {
|
|
128
|
+
const wantAutoFix = await requireSimpleConfirmation({ description: action.description }, `Would you like Bilt to run this fix automatically?`);
|
|
129
|
+
if (wantAutoFix) {
|
|
130
|
+
shouldApply = await requireTypedConfirmation({ description: action.description }, plan.requiresConfirmation);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
shouldApply = false;
|
|
134
|
+
}
|
|
118
135
|
}
|
|
119
136
|
else {
|
|
120
|
-
|
|
121
|
-
shouldApply = await requireTypedConfirmation(action, "confirm");
|
|
137
|
+
shouldApply = await requireSimpleConfirmation({ description: action.description });
|
|
122
138
|
}
|
|
123
139
|
if (shouldApply) {
|
|
124
140
|
try {
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
console.log(
|
|
141
|
+
const result = await action.apply();
|
|
142
|
+
console.log("");
|
|
143
|
+
result.stepsApplied.forEach((step) => {
|
|
144
|
+
console.log(colors.mintClear.apply(` ${glyphs.fixed} ${step}`));
|
|
145
|
+
});
|
|
146
|
+
if (result.success) {
|
|
147
|
+
const verification = await action.verify();
|
|
148
|
+
if (verification.passed) {
|
|
149
|
+
applied++;
|
|
150
|
+
console.log(colors.mintClear.apply(` ${glyphs.fixed} ${verification.message}`));
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
skipped++;
|
|
154
|
+
console.log(colors.amberFlag.apply(` ${glyphs.info} Fix applied but verification failed: ${verification.message}`));
|
|
155
|
+
}
|
|
129
156
|
}
|
|
130
157
|
else {
|
|
131
158
|
skipped++;
|
|
132
|
-
console.log(
|
|
159
|
+
console.log(colors.amberFlag.apply(` ${glyphs.info} Skipped (failed to apply: ${result.error})`));
|
|
133
160
|
}
|
|
134
161
|
}
|
|
135
162
|
catch (error) {
|
|
136
163
|
skipped++;
|
|
137
164
|
const msg = error instanceof Error ? error.message : String(error);
|
|
138
|
-
console.log(
|
|
165
|
+
console.log(colors.pulseCoral.apply(` ${glyphs.critical} Error: ${msg}`));
|
|
139
166
|
}
|
|
140
167
|
}
|
|
141
168
|
else {
|
|
142
169
|
skipped++;
|
|
143
|
-
console.log(
|
|
170
|
+
console.log(colors.slateDim.dim(` ${glyphs.info} Skipped`));
|
|
144
171
|
}
|
|
145
172
|
}
|
|
146
|
-
reportFixComplete(applied, skipped);
|
|
173
|
+
await reportFixComplete(applied, skipped);
|
|
147
174
|
}
|
|
148
175
|
// ─── Fix Action Generator ────────────────────────────────────────────────────
|
|
149
176
|
/**
|
|
150
177
|
* Generate fix actions from scan findings.
|
|
151
178
|
*/
|
|
152
|
-
async function generateFixActions(rootDir, findings) {
|
|
179
|
+
async function generateFixActions(rootDir, findings, options) {
|
|
153
180
|
const actions = [];
|
|
154
181
|
const addedTypes = new Set();
|
|
155
182
|
const config = await loadConfig(rootDir);
|
|
183
|
+
const debugReadFile = async (pathStr) => {
|
|
184
|
+
try {
|
|
185
|
+
const content = await fs.readFile(pathStr, "utf-8");
|
|
186
|
+
if (options.debug) {
|
|
187
|
+
console.log(`[DEBUG READ] ${pathStr} (${Buffer.byteLength(content, "utf8")} bytes)`);
|
|
188
|
+
}
|
|
189
|
+
return content;
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (options.debug) {
|
|
193
|
+
console.log(`[DEBUG READ] ${pathStr} (Error: ${err.message})`);
|
|
194
|
+
}
|
|
195
|
+
throw err;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
const debugWriteFile = async (pathStr, newContent, oldContent = "") => {
|
|
199
|
+
if (options.debug) {
|
|
200
|
+
console.log(`[DEBUG WRITE] ${pathStr}`);
|
|
201
|
+
console.log(` Length Before: ${Buffer.byteLength(oldContent, "utf8")} bytes`);
|
|
202
|
+
console.log(` Length After: ${Buffer.byteLength(newContent, "utf8")} bytes`);
|
|
203
|
+
console.log(` Diff Preview:`);
|
|
204
|
+
// Simple diff preview: just show it's different if lengths or content differ
|
|
205
|
+
if (oldContent === newContent) {
|
|
206
|
+
console.log(` (No changes)`);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
console.log(` (File modified)`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
await fs.writeFile(pathStr, newContent, "utf-8");
|
|
213
|
+
};
|
|
156
214
|
for (const finding of findings) {
|
|
157
215
|
switch (finding.category) {
|
|
158
216
|
case "gitignore-missing": {
|
|
@@ -163,40 +221,78 @@ async function generateFixActions(rootDir, findings) {
|
|
|
163
221
|
description: "Add .env patterns to .gitignore",
|
|
164
222
|
type: "safe",
|
|
165
223
|
findingId: finding.id,
|
|
166
|
-
preview:
|
|
224
|
+
preview: async () => ({
|
|
225
|
+
steps: ["Append .env patterns to .gitignore"],
|
|
226
|
+
estimatedTime: "< 1s",
|
|
227
|
+
risk: "Low"
|
|
228
|
+
}),
|
|
167
229
|
apply: async () => {
|
|
168
230
|
const gitignorePath = path.join(rootDir, ".gitignore");
|
|
169
231
|
const newContent = await addToGitignore([".env", ".env.*", ".env.local", ".env.*.local", ".bilt/"], gitignorePath);
|
|
170
|
-
|
|
171
|
-
|
|
232
|
+
let oldContent = "";
|
|
233
|
+
try {
|
|
234
|
+
oldContent = await fs.readFile(gitignorePath, "utf-8");
|
|
235
|
+
}
|
|
236
|
+
catch { }
|
|
237
|
+
await debugWriteFile(gitignorePath, newContent, oldContent);
|
|
238
|
+
return { success: true, stepsApplied: ["Appended .env patterns to .gitignore"] };
|
|
239
|
+
},
|
|
240
|
+
verify: async () => {
|
|
241
|
+
const gitignorePath = path.join(rootDir, ".gitignore");
|
|
242
|
+
let content = "";
|
|
243
|
+
try {
|
|
244
|
+
content = await fs.readFile(gitignorePath, "utf-8");
|
|
245
|
+
}
|
|
246
|
+
catch { }
|
|
247
|
+
if (content.includes(".env"))
|
|
248
|
+
return { passed: true, message: "Verified .gitignore updated." };
|
|
249
|
+
return { passed: false, message: ".gitignore not properly updated." };
|
|
172
250
|
},
|
|
251
|
+
undo: async () => { }
|
|
173
252
|
});
|
|
174
253
|
}
|
|
175
254
|
break;
|
|
176
255
|
}
|
|
177
256
|
case "env-missing": {
|
|
178
|
-
const key = finding.message.match(/
|
|
257
|
+
const key = finding.message.match(/process\.env\.(\w+)/)?.[1] ??
|
|
258
|
+
finding.message.match(/["']([^"']+)["']/)?.[1] ??
|
|
179
259
|
finding.message.match(/`([^`]+)`/)?.[1] ??
|
|
180
|
-
finding.message.match(/(\w+)/)?.[1];
|
|
260
|
+
finding.message.match(/Variable "(\w+)"/)?.[1];
|
|
181
261
|
if (key && !addedTypes.has(`env-missing-${key}`)) {
|
|
182
262
|
addedTypes.add(`env-missing-${key}`);
|
|
183
263
|
actions.push({
|
|
184
264
|
id: `fix-env-missing-${key}-${Date.now()}`,
|
|
185
|
-
description: `Add missing env var ${key} to
|
|
265
|
+
description: `Add missing env var ${key} to .env`,
|
|
186
266
|
type: "safe",
|
|
187
267
|
findingId: finding.id,
|
|
188
|
-
preview:
|
|
268
|
+
preview: async () => ({
|
|
269
|
+
steps: [`Append ${key}= to .env`],
|
|
270
|
+
estimatedTime: "< 1s",
|
|
271
|
+
risk: "Low"
|
|
272
|
+
}),
|
|
189
273
|
apply: async () => {
|
|
190
|
-
const envFilePath = path.join(rootDir,
|
|
274
|
+
const envFilePath = path.join(rootDir, ".env");
|
|
191
275
|
let content = "";
|
|
192
276
|
try {
|
|
193
|
-
content = await
|
|
277
|
+
content = await debugReadFile(envFilePath);
|
|
194
278
|
}
|
|
195
279
|
catch { }
|
|
196
280
|
const newContent = addMissingEnvVars(content, [key]);
|
|
197
|
-
await
|
|
198
|
-
return true;
|
|
281
|
+
await debugWriteFile(envFilePath, newContent, content);
|
|
282
|
+
return { success: true, stepsApplied: [`Appended ${key}= to .env`] };
|
|
283
|
+
},
|
|
284
|
+
verify: async () => {
|
|
285
|
+
const envFilePath = path.join(rootDir, ".env");
|
|
286
|
+
let content = "";
|
|
287
|
+
try {
|
|
288
|
+
content = await fs.readFile(envFilePath, "utf-8");
|
|
289
|
+
}
|
|
290
|
+
catch { }
|
|
291
|
+
if (content.includes(`${key}=`))
|
|
292
|
+
return { passed: true, message: "Verified environment variable added." };
|
|
293
|
+
return { passed: false, message: "Environment variable not found in .env." };
|
|
199
294
|
},
|
|
295
|
+
undo: async () => { }
|
|
200
296
|
});
|
|
201
297
|
}
|
|
202
298
|
break;
|
|
@@ -209,7 +305,11 @@ async function generateFixActions(rootDir, findings) {
|
|
|
209
305
|
description: "Generate .env.example with all required keys",
|
|
210
306
|
type: "safe",
|
|
211
307
|
findingId: finding.id,
|
|
212
|
-
preview:
|
|
308
|
+
preview: async () => ({
|
|
309
|
+
steps: ["Create or update .env.example with placeholder values"],
|
|
310
|
+
estimatedTime: "< 1s",
|
|
311
|
+
risk: "Low"
|
|
312
|
+
}),
|
|
213
313
|
apply: async () => {
|
|
214
314
|
const envFilePath = path.join(rootDir, ".env");
|
|
215
315
|
let content = "";
|
|
@@ -217,33 +317,74 @@ async function generateFixActions(rootDir, findings) {
|
|
|
217
317
|
content = await fs.readFile(envFilePath, "utf-8");
|
|
218
318
|
}
|
|
219
319
|
catch {
|
|
220
|
-
return false;
|
|
320
|
+
return { success: false, stepsApplied: [], error: "No .env file found" };
|
|
221
321
|
}
|
|
222
322
|
const parsed = parseEnvFile(content, envFilePath);
|
|
223
323
|
const exampleContent = generateEnvExample(parsed, SECRET_RULES, config.entropyThreshold);
|
|
224
|
-
|
|
225
|
-
|
|
324
|
+
const targetPath = path.join(rootDir, ".env.example");
|
|
325
|
+
let oldExampleContent = "";
|
|
326
|
+
try {
|
|
327
|
+
oldExampleContent = await fs.readFile(targetPath, "utf-8");
|
|
328
|
+
}
|
|
329
|
+
catch { }
|
|
330
|
+
await debugWriteFile(targetPath, exampleContent, oldExampleContent);
|
|
331
|
+
return { success: true, stepsApplied: ["Generated .env.example"] };
|
|
332
|
+
},
|
|
333
|
+
verify: async () => {
|
|
334
|
+
try {
|
|
335
|
+
await fs.access(path.join(rootDir, ".env.example"));
|
|
336
|
+
return { passed: true, message: "Verified .env.example exists." };
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
return { passed: false, message: ".env.example not created." };
|
|
340
|
+
}
|
|
226
341
|
},
|
|
342
|
+
undo: async () => { }
|
|
227
343
|
});
|
|
228
344
|
}
|
|
229
345
|
break;
|
|
230
346
|
}
|
|
231
347
|
case "secret-detected": {
|
|
232
|
-
// Secrets can't be auto-fixed — provide guidance
|
|
233
348
|
actions.push({
|
|
234
349
|
id: `fix-secret-${finding.id}`,
|
|
235
350
|
description: `Remove secret from ${finding.file}${finding.line ? `:${finding.line}` : ""}`,
|
|
236
351
|
type: "destructive",
|
|
237
352
|
findingId: finding.id,
|
|
238
|
-
preview:
|
|
239
|
-
"
|
|
353
|
+
preview: async () => ({
|
|
354
|
+
steps: ["Rotate credential", "Rewrite Git history", "Force-push (if remote)"],
|
|
355
|
+
estimatedTime: "2-5 mins",
|
|
356
|
+
risk: "Critical",
|
|
357
|
+
requiresConfirmation: "PURGE_HISTORY",
|
|
358
|
+
instructions: "1. Rotate the credential.\n2. Rewrite Git history.\n3. Force-push the cleaned history.\n4. Notify collaborators."
|
|
359
|
+
}),
|
|
240
360
|
apply: async () => {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
361
|
+
let isGitRepo = false;
|
|
362
|
+
try {
|
|
363
|
+
const { execSync } = await import("node:child_process");
|
|
364
|
+
execSync("git rev-parse --is-inside-work-tree", { cwd: rootDir, stdio: "ignore" });
|
|
365
|
+
isGitRepo = true;
|
|
366
|
+
}
|
|
367
|
+
catch { }
|
|
368
|
+
if (isGitRepo && finding.secret) {
|
|
369
|
+
console.log(colors.amberFlag.apply(" " + glyphs.info + " Executing Git history rewrite..."));
|
|
370
|
+
try {
|
|
371
|
+
await purgeSecretFromHistory(rootDir, finding.secret);
|
|
372
|
+
return { success: true, stepsApplied: ["Git history and workspace purged of the secret."] };
|
|
373
|
+
}
|
|
374
|
+
catch (err) {
|
|
375
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
376
|
+
return { success: false, stepsApplied: [], error: msg };
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
console.log(colors.amberFlag.apply(" " + glyphs.info + " Please manually remove the secret from " + finding.file));
|
|
381
|
+
return { success: true, stepsApplied: ["Provided instructions for manual secret removal"] };
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
verify: async () => {
|
|
385
|
+
return { passed: true, message: "Verification complete." };
|
|
246
386
|
},
|
|
387
|
+
undo: async () => { }
|
|
247
388
|
});
|
|
248
389
|
break;
|
|
249
390
|
}
|
|
@@ -254,12 +395,18 @@ async function generateFixActions(rootDir, findings) {
|
|
|
254
395
|
description: `Review client-exposed secret in ${finding.file}`,
|
|
255
396
|
type: "destructive",
|
|
256
397
|
findingId: finding.id,
|
|
257
|
-
preview:
|
|
258
|
-
"
|
|
398
|
+
preview: async () => ({
|
|
399
|
+
steps: ["Review client exposure"],
|
|
400
|
+
estimatedTime: "< 1m",
|
|
401
|
+
risk: "High",
|
|
402
|
+
instructions: finding.suggestion ?? "Ensure this env var should be exposed to the client bundle"
|
|
403
|
+
}),
|
|
259
404
|
apply: async () => {
|
|
260
|
-
console.log(
|
|
261
|
-
return true;
|
|
405
|
+
console.log(colors.amberFlag.apply(" " + glyphs.info + " Review " + finding.file + " \u2014 this value is exposed to the client."));
|
|
406
|
+
return { success: true, stepsApplied: ["Flagged for review"] };
|
|
262
407
|
},
|
|
408
|
+
verify: async () => { return { passed: true, message: "Instruction acknowledged." }; },
|
|
409
|
+
undo: async () => { }
|
|
263
410
|
});
|
|
264
411
|
break;
|
|
265
412
|
}
|
package/dist/commands/fix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsGnE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// ─── Init Command ────────────────────────────────────────────────────────────
|
|
2
2
|
// Zero-friction onboarding: scan, auto-fix safe issues, show health card.
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import
|
|
5
|
-
import boxen from "boxen";
|
|
4
|
+
import { colors, glyphs, banner, text, isPlainMode } from "../ui/theme.js";
|
|
6
5
|
import { promises as fs } from "node:fs";
|
|
7
6
|
import { executeScan } from "./scan.js";
|
|
8
7
|
import { createSnapshot } from "../core/fix/snapshot.js";
|
|
@@ -25,15 +24,18 @@ export async function executeInit(projectDir) {
|
|
|
25
24
|
const rootDir = path.resolve(projectDir);
|
|
26
25
|
const config = await loadConfig(rootDir);
|
|
27
26
|
// ── Welcome banner ──────────────────────────────────────────────────
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
borderColor: "cyan",
|
|
34
|
-
});
|
|
35
|
-
console.log(banner);
|
|
27
|
+
const isPlain = isPlainMode();
|
|
28
|
+
console.log("");
|
|
29
|
+
console.log(banner());
|
|
30
|
+
if (!isPlain)
|
|
31
|
+
await new Promise((resolve) => setTimeout(resolve, 80));
|
|
36
32
|
console.log("");
|
|
33
|
+
console.log(colors.vitalTeal.bold(" BILT \u2014 Project Health Toolkit"));
|
|
34
|
+
if (!isPlain)
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, 80));
|
|
36
|
+
console.log(colors.slateDim.dim(" Zero-configuration setup. One command to a healthy repo."));
|
|
37
|
+
if (!isPlain)
|
|
38
|
+
await new Promise((resolve) => setTimeout(resolve, 80));
|
|
37
39
|
// ── Run full scan ───────────────────────────────────────────────────
|
|
38
40
|
const result = await executeScan(rootDir, {
|
|
39
41
|
quiet: false,
|
|
@@ -72,7 +74,7 @@ export async function executeInit(projectDir) {
|
|
|
72
74
|
const newContent = await addToGitignore(envPatterns, gitignorePath);
|
|
73
75
|
await fs.writeFile(gitignorePath, newContent, "utf-8");
|
|
74
76
|
fixesApplied++;
|
|
75
|
-
console.log(
|
|
77
|
+
console.log(colors.mintClear.apply(" " + glyphs.fixed + " Added .env patterns to .gitignore"));
|
|
76
78
|
}
|
|
77
79
|
catch {
|
|
78
80
|
// Failed to update .gitignore — non-critical
|
|
@@ -87,7 +89,7 @@ export async function executeInit(projectDir) {
|
|
|
87
89
|
const exampleContent = generateEnvExample(parsed, SECRET_RULES, config.entropyThreshold);
|
|
88
90
|
await fs.writeFile(path.join(rootDir, ".env.example"), exampleContent, "utf-8");
|
|
89
91
|
fixesApplied++;
|
|
90
|
-
console.log(
|
|
92
|
+
console.log(colors.mintClear.apply(" " + glyphs.fixed + " Generated .env.example"));
|
|
91
93
|
}
|
|
92
94
|
catch {
|
|
93
95
|
// Failed to generate .env.example — non-critical
|
|
@@ -96,6 +98,6 @@ export async function executeInit(projectDir) {
|
|
|
96
98
|
// ── Re-run scan to get updated results ──────────────────────────────
|
|
97
99
|
const updatedResult = fixesApplied > 0 ? await executeScan(rootDir, { quiet: true }) : result;
|
|
98
100
|
// ── Report ──────────────────────────────────────────────────────────
|
|
99
|
-
reportInitComplete(updatedResult, fixesApplied);
|
|
101
|
+
await reportInitComplete(updatedResult, fixesApplied);
|
|
100
102
|
}
|
|
101
103
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAE1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/scan.d.ts
CHANGED
|
@@ -3,15 +3,12 @@ import type { ScanResult, ScanOptions } from "../types/index.js";
|
|
|
3
3
|
* Execute a full project scan, returning a ScanResult.
|
|
4
4
|
*
|
|
5
5
|
* 1. Load config
|
|
6
|
-
* 2.
|
|
7
|
-
* 3.
|
|
8
|
-
* 4. Check
|
|
9
|
-
* 5.
|
|
10
|
-
* 6.
|
|
11
|
-
* 7.
|
|
12
|
-
* 8. Run plugins
|
|
13
|
-
* 9. Calculate health score
|
|
14
|
-
* 10. Report results
|
|
6
|
+
* 2. Step 1: Check .gitignore
|
|
7
|
+
* 3. Step 2: Check env variable usage (and mismatches, unused, client exposed)
|
|
8
|
+
* 4. Step 3: Check for secrets (working tree & git history)
|
|
9
|
+
* 5. Step 4: Run plugins
|
|
10
|
+
* 6. Calculate health score
|
|
11
|
+
* 7. Report final results
|
|
15
12
|
*/
|
|
16
13
|
export declare function executeScan(projectDir: string, options?: ScanOptions): Promise<ScanResult>;
|
|
17
14
|
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EAEV,WAAW,EAGZ,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EAEV,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AA6F3B;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CA6XrB"}
|