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
@@ -1,204 +1,166 @@
1
- // ─── Reporter — Stunning Terminal Output ─────────────────────────────────────
2
- // Renders every piece of user-visible CLI output.
3
- import chalk from "chalk";
4
- import ora from "ora";
5
- import boxen from "boxen";
6
- import { formatFinding, formatHealthScore, formatProviderLink, severityIcon, } from "./format.js";
1
+ // ─── Reporter — Pulse Terminal Output ────────────────────────────────────────
2
+ // Renders every piece of user-visible CLI output using the Pulse design system.
3
+ // No direct chalk/boxen/ora calls — everything goes through theme.ts.
4
+ import { colors, glyphs, banner, pulseBar, sectionHeader, divider, summaryBox, styledGlyph, severityColor, text, Spinner, isPlainMode, } from "./theme.js";
5
+ import { formatFinding, formatProviderLink } from "./format.js";
6
+ const CATEGORY_GROUPS = [
7
+ {
8
+ label: "Environment variables",
9
+ categories: ["env-missing", "env-unused", "env-mismatch", "env-exposed"],
10
+ },
11
+ { label: "Secrets", categories: ["secret-detected"] },
12
+ { label: ".gitignore", categories: ["gitignore-missing"] },
13
+ { label: "Framework", categories: ["framework-warning"] },
14
+ { label: "Plugins", categories: ["plugin-finding"] },
15
+ ];
7
16
  // ─── Scan Lifecycle ──────────────────────────────────────────────────────────
8
17
  /**
9
- * Start a scan spinner — returns the ora instance for later updates.
18
+ * Start a scan spinner — returns a Spinner instance for later updates.
10
19
  */
11
20
  export function reportScanStart(projectDir) {
12
- const spinner = ora({
13
- text: chalk.cyan(`Scanning project ${chalk.bold(projectDir)}…`),
14
- spinner: "dots12",
15
- color: "cyan",
16
- }).start();
21
+ const spinner = new Spinner(`Scanning project ${projectDir}\u2026`);
22
+ spinner.start();
17
23
  return spinner;
18
24
  }
19
25
  /**
20
26
  * Update the spinner text mid-scan.
21
27
  */
22
28
  export function reportScanProgress(spinner, message) {
23
- spinner.text = chalk.cyan(message);
29
+ spinner.text = message;
24
30
  }
25
31
  // ─── Scan Results ────────────────────────────────────────────────────────────
26
32
  /**
27
- * Print a comprehensive, beautiful scan report with findings grouped by
28
- * severity and a framed health card.
33
+ * Print the full Pulse-styled scan report:
34
+ * 1. Banner (BILT wordmark)
35
+ * 2. Pulse Bar (health score)
36
+ * 3. Findings grouped by category
37
+ * 4. Provider rotation links
38
+ * 5. Divider + summary line + CTA
29
39
  */
30
- export function reportScanResults(result, options = {}) {
31
- const { findings, healthScore, grade, scannedFiles, duration, framework } = result;
40
+ // ─── Scan Results ────────────────────────────────────────────────────────────
41
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
42
+ async function maybeSleep() {
43
+ if (!isPlainMode()) {
44
+ await sleep(80);
45
+ }
46
+ }
47
+ /**
48
+ * Print the full Pulse-styled scan report:
49
+ * 1. Banner (BILT wordmark)
50
+ * 2. Pulse Bar (health score)
51
+ * 3. Findings
52
+ * 4. Summary line + CTA
53
+ */
54
+ export async function reportScanResults(result, options = {}) {
55
+ const { findings, healthScore } = result;
56
+ console.log("");
57
+ // ── Banner ─────────────────────────────────────────────────────────
58
+ console.log(banner());
59
+ await maybeSleep();
32
60
  console.log("");
33
- // ── Group findings by severity ───────────────────────────────────────
34
- const grouped = groupBySeverity(findings);
61
+ const mode = (options.verbose || options.details !== false || isPlainMode()) ? "detail" : "headline";
62
+ // ── Findings ───────────────────────────────────────────────────────
35
63
  if (findings.length === 0) {
36
- console.log(chalk.green.bold("No issues found your project is squeaky clean!"));
64
+ console.log(` ${colors.mintClear.apply(glyphs.passed)} ${colors.mintClear.bold("No issues found \u2014 your project is clean")}`);
65
+ await maybeSleep();
37
66
  console.log("");
38
67
  }
39
68
  else {
40
- // Print critical first, then warning, then info
41
- const order = ["critical", "warning", "info"];
42
- for (const sev of order) {
43
- const group = grouped.get(sev);
44
- if (!group || group.length === 0)
45
- continue;
46
- const icon = severityIcon(sev);
47
- const label = sev.charAt(0).toUpperCase() + sev.slice(1);
48
- console.log(` ${icon} ${chalk.bold(label)} ${chalk.dim(`(${group.length})`)}`);
49
- for (const f of group) {
50
- console.log(formatFinding(f));
51
- if (options.verbose && f.suggestion) {
52
- console.log(chalk.dim(` 💡 ${f.suggestion}`));
53
- }
54
- }
69
+ for (const f of findings) {
70
+ console.log(formatFinding(f, mode));
71
+ await maybeSleep();
55
72
  console.log("");
73
+ await maybeSleep();
56
74
  }
57
75
  }
58
- // ── Provider rotation links for secrets ──────────────────────────────
59
- const providers = new Map();
60
- for (const f of findings) {
61
- if (f.provider && !providers.has(f.provider.name)) {
62
- providers.set(f.provider.name, f);
63
- }
64
- }
65
- if (providers.size > 0) {
66
- console.log(chalk.bold(" 🔑 Rotate compromised keys:"));
67
- for (const [, f] of providers) {
68
- if (f.provider) {
69
- console.log(formatProviderLink(f.provider));
70
- }
71
- }
72
- console.log("");
73
- }
74
- // ── Health card ──────────────────────────────────────────────────────
75
- const healthBar = formatHealthScore(healthScore, grade);
76
- const criticalCount = grouped.get("critical")?.length ?? 0;
77
- const warningCount = grouped.get("warning")?.length ?? 0;
78
- const envMissing = findings.filter((f) => f.category === "env-missing").length;
79
- const gitignoreOk = findings.filter((f) => f.category === "gitignore-missing").length === 0;
80
- const secretsClean = criticalCount === 0;
81
- const lines = [];
82
- lines.push("");
83
- lines.push(chalk.bold(" 🏗️ BILT HEALTH REPORT"));
84
- lines.push("");
85
- lines.push(` Score: ${chalk.bold(String(healthScore))}/100 ${chalk.bold(grade)}`);
86
- lines.push(` ${healthBar}`);
87
- lines.push("");
88
- // Status lines
89
- if (secretsClean) {
90
- lines.push(chalk.green(" ✓ Secrets: Clean"));
91
- }
92
- else {
93
- lines.push(chalk.red(` ✗ Secrets: ${criticalCount} found`));
94
- }
95
- if (envMissing === 0) {
96
- lines.push(chalk.green(" ✓ Env vars: All present"));
97
- }
98
- else {
99
- lines.push(chalk.yellow(` ⚠ Env vars: ${envMissing} missing`));
100
- }
101
- if (gitignoreOk) {
102
- lines.push(chalk.green(" ✓ .gitignore: OK"));
76
+ // ── Pulse Bar ──────────────────────────────────────────────────────
77
+ console.log(pulseBar(healthScore));
78
+ await maybeSleep();
79
+ console.log("");
80
+ // ── Summary & CTA ──────────────────────────────────────────────────
81
+ const criticalCount = findings.filter((f) => f.severity === "critical").length;
82
+ const warningCount = findings.filter((f) => f.severity === "warning").length;
83
+ const issuesCount = criticalCount + warningCount;
84
+ const parts = [];
85
+ if (issuesCount === 0) {
86
+ parts.push(colors.mintClear.apply("all clear"));
103
87
  }
104
88
  else {
105
- lines.push(chalk.yellow(" .gitignore: Needs attention"));
89
+ parts.push(colors.pulseCoral.apply(`${issuesCount} issue${issuesCount > 1 ? "s" : ""}`));
106
90
  }
107
- if (framework) {
108
- lines.push(chalk.green(` ✓ Framework: ${framework.displayName} detected`));
91
+ parts.push(colors.slateDim.apply("bilt fix"));
92
+ if (mode !== "detail") {
93
+ parts.push(colors.slateDim.apply("bilt scan"));
109
94
  }
110
- lines.push("");
111
- lines.push(chalk.dim(` Scanned ${scannedFiles} files in ${duration}ms`));
112
- lines.push("");
113
- // Fun mode extras
114
- if (options.fun) {
115
- if (healthScore === 100) {
116
- lines.push(chalk.bold.green(" 🎉🎉🎉 PERFECT SCORE! You are a security legend! 🎉🎉🎉"));
117
- lines.push("");
118
- }
119
- else if (healthScore >= 90) {
120
- lines.push(chalk.green(" 🔥 Almost there — keep the streak alive!"));
121
- lines.push("");
122
- }
123
- else if (healthScore >= 70) {
124
- lines.push(chalk.yellow(" 💪 Not bad! A few tweaks and you'll be golden."));
125
- lines.push("");
126
- }
127
- else {
128
- lines.push(chalk.red(" 🩹 Time to roll up those sleeves."));
129
- lines.push("");
130
- }
131
- }
132
- if (warningCount > 0 && criticalCount === 0) {
133
- lines.push(chalk.dim(" Run `bilt fix` to auto-fix safe issues."));
134
- lines.push("");
135
- }
136
- else if (criticalCount > 0) {
137
- lines.push(chalk.dim(" Run `bilt fix --safe` to fix what can be safely automated."));
138
- lines.push("");
139
- }
140
- const card = boxen(lines.join("\n"), {
141
- padding: 0,
142
- margin: { top: 0, bottom: 0, left: 1, right: 1 },
143
- borderStyle: "round",
144
- borderColor: healthScore >= 90 ? "green" : healthScore >= 70 ? "yellow" : "red",
145
- dimBorder: false,
146
- });
147
- console.log(card);
95
+ console.log(` ${parts.join(colors.slateDim.dim(" \u00B7 "))}`);
96
+ await maybeSleep();
148
97
  console.log("");
149
98
  }
150
99
  // ─── Watch Events ────────────────────────────────────────────────────────────
151
100
  /**
152
101
  * Print a real-time watch notification for a file event.
153
102
  */
154
- export function reportWatchEvent(event) {
155
- const ts = chalk.dim(event.timestamp.toLocaleTimeString("en-US", { hour12: false }));
103
+ export async function reportWatchEvent(event) {
104
+ const ts = colors.slateDim.dim(event.timestamp.toLocaleTimeString("en-US", { hour12: false }));
156
105
  if (event.findings.length === 0) {
157
- console.log(`${ts} ${chalk.green("✓")} ${chalk.dim(event.file)} clean`);
106
+ console.log(`${ts} ${colors.mintClear.apply(glyphs.passed)} ${colors.slateDim.apply(event.file)} \u2014 clean`);
107
+ await maybeSleep();
158
108
  return;
159
109
  }
160
110
  for (const f of event.findings) {
161
- const icon = severityIcon(f.severity);
162
- console.log(`${ts} ${icon} ${chalk.bold(f.message)} ${chalk.dim(`${event.file}${f.line ? `:${f.line}` : ""}`)}`);
111
+ const icon = styledGlyph(f.severity);
112
+ const loc = colors.slateDim.apply(`${event.file}${f.line ? `:${f.line}` : ""}`);
113
+ console.log(`${ts} ${icon} ${text.bold(f.message)} ${loc}`);
114
+ await maybeSleep();
163
115
  }
164
116
  }
165
117
  // ─── Fix Previews ────────────────────────────────────────────────────────────
166
118
  /**
167
- * Show a preview of all fix actions that will be applied.
119
+ * Show a detailed preview of a single fix plan.
168
120
  */
169
- export function reportFixPreview(actions) {
170
- console.log("");
171
- console.log(chalk.bold(" 📋 Fix Plan"));
172
- console.log("");
173
- for (const action of actions) {
174
- const typeIcon = action.type === "safe"
175
- ? chalk.green("●")
176
- : action.type === "destructive"
177
- ? chalk.yellow("")
178
- : chalk.red("●");
179
- const typeLabel = chalk.dim(`[${action.type}]`);
180
- console.log(` ${typeIcon} ${action.description} ${typeLabel}`);
181
- if (action.preview) {
182
- console.log(chalk.dim(` ${action.preview}`));
183
- }
184
- }
121
+ export async function reportFixPlan(plan) {
122
+ console.log("");
123
+ console.log(divider());
124
+ console.log("");
125
+ console.log(text.bold(" Bilt Fix Plan"));
126
+ console.log("");
127
+ plan.steps.forEach((step, i) => {
128
+ console.log(` ${i + 1}. ${step}`);
129
+ console.log("");
130
+ });
131
+ console.log(colors.slateDim.dim(" Estimated time"));
132
+ console.log(` ${plan.estimatedTime}`);
133
+ console.log("");
134
+ const riskColor = plan.risk === "Low" ? colors.mintClear
135
+ : plan.risk === "High" ? colors.amberFlag
136
+ : colors.pulseCoral;
137
+ console.log(colors.slateDim.dim(" Risk"));
138
+ console.log(` ${riskColor.apply(plan.risk)}`);
185
139
  console.log("");
186
- console.log(chalk.dim(` ${chalk.green("●")} safe ${chalk.yellow("●")} destructive ${chalk.red("●")} irreversible`));
140
+ if (plan.instructions) {
141
+ console.log(colors.slateDim.dim(" Instructions"));
142
+ console.log(` ${plan.instructions}`);
143
+ console.log("");
144
+ }
145
+ console.log(divider());
187
146
  console.log("");
188
147
  }
189
148
  /**
190
149
  * Report fix application summary.
191
150
  */
192
- export function reportFixComplete(applied, skipped) {
151
+ export async function reportFixComplete(applied, skipped) {
193
152
  console.log("");
194
153
  if (applied > 0) {
195
- console.log(chalk.green.bold(` ${applied} fix${applied !== 1 ? "es" : ""} applied successfully.`));
154
+ console.log(colors.mintClear.bold(` ${glyphs.fixed} ${applied} fix${applied !== 1 ? "es" : ""} applied successfully`));
155
+ await maybeSleep();
196
156
  }
197
157
  if (skipped > 0) {
198
- console.log(chalk.yellow(` ${skipped} fix${skipped !== 1 ? "es" : ""} skipped.`));
158
+ console.log(colors.amberFlag.apply(` ${glyphs.info} ${skipped} fix${skipped !== 1 ? "es" : ""} skipped`));
159
+ await maybeSleep();
199
160
  }
200
161
  if (applied > 0) {
201
- console.log(chalk.dim(" A snapshot was saved run `bilt undo` to revert."));
162
+ console.log(colors.slateDim.dim(` A snapshot was saved \u2014 run ${text.bold("bilt undo")} to revert`));
163
+ await maybeSleep();
202
164
  }
203
165
  console.log("");
204
166
  }
@@ -206,49 +168,47 @@ export function reportFixComplete(applied, skipped) {
206
168
  /**
207
169
  * Report a successful undo (snapshot restore).
208
170
  */
209
- export function reportUndoComplete(snapshot) {
171
+ export async function reportUndoComplete(snapshot) {
210
172
  console.log("");
211
- console.log(chalk.green.bold(" Undo successful!"));
212
- console.log(chalk.dim(` Restored snapshot ${chalk.white(snapshot.id)} (${snapshot.description})`));
213
- console.log(chalk.dim(` ${snapshot.files.length} file${snapshot.files.length !== 1 ? "s" : ""} restored.`));
173
+ console.log(colors.mintClear.bold(` ${glyphs.fixed} Undo successful`));
174
+ await maybeSleep();
175
+ console.log(colors.slateDim.dim(` Restored snapshot ${text.bold(snapshot.id)} (${snapshot.description})`));
176
+ await maybeSleep();
177
+ console.log(colors.slateDim.dim(` ${snapshot.files.length} file${snapshot.files.length !== 1 ? "s" : ""} restored`));
178
+ await maybeSleep();
214
179
  console.log("");
215
180
  }
216
181
  // ─── Init Summary ────────────────────────────────────────────────────────────
217
182
  /**
218
183
  * Print the zero-friction onboarding summary after `bilt init`.
219
184
  */
220
- export function reportInitComplete(result, fixesApplied) {
221
- console.log("");
222
- const banner = boxen(`\n${chalk.bold.cyan(" 🏗️ Welcome to Bilt!")}\n\n` +
223
- chalk.dim(" Your project has been scanned and hardened.\n") +
224
- chalk.dim(" Zero configuration needed.\n"), {
225
- padding: 0,
226
- margin: { top: 0, bottom: 0, left: 1, right: 1 },
227
- borderStyle: "round",
228
- borderColor: "cyan",
229
- });
230
- console.log(banner);
185
+ export async function reportInitComplete(result, fixesApplied) {
186
+ console.log("");
187
+ // Welcome text
188
+ console.log(colors.vitalTeal.bold(" Welcome to Bilt"));
189
+ await maybeSleep();
190
+ console.log(colors.slateDim.dim(" Your project has been scanned and hardened."));
191
+ await maybeSleep();
192
+ console.log(colors.slateDim.dim(" Zero configuration needed."));
193
+ await maybeSleep();
231
194
  console.log("");
232
195
  if (fixesApplied > 0) {
233
- console.log(chalk.green(` ${fixesApplied} safe fix${fixesApplied !== 1 ? "es" : ""} applied automatically.`));
234
- }
235
- // Delegate to the main health card
236
- reportScanResults(result, { fun: true });
237
- console.log(chalk.bold(" 🚀 Next steps:"));
238
- console.log(chalk.dim(" bilt scan Full project scan"));
239
- console.log(chalk.dim(" bilt fix Auto-fix issues"));
240
- console.log(chalk.dim(" bilt watch Real-time monitoring"));
241
- console.log(chalk.dim(" bilt doctor Detailed health report"));
196
+ console.log(colors.mintClear.apply(` ${glyphs.fixed} ${fixesApplied} safe fix${fixesApplied !== 1 ? "es" : ""} applied automatically`));
197
+ await maybeSleep();
198
+ }
199
+ // Delegate to the main scan results display
200
+ await reportScanResults(result);
201
+ // Next steps
202
+ console.log(sectionHeader("Next steps"));
203
+ await maybeSleep();
204
+ console.log(colors.slateDim.dim(` ${text.bold("bilt scan")} Full project scan`));
205
+ await maybeSleep();
206
+ console.log(colors.slateDim.dim(` ${text.bold("bilt fix")} Auto-fix issues`));
207
+ await maybeSleep();
208
+ console.log(colors.slateDim.dim(` ${text.bold("bilt watch")} Real-time monitoring`));
209
+ await maybeSleep();
210
+ console.log(colors.slateDim.dim(` ${text.bold("bilt doctor")} Detailed health report`));
211
+ await maybeSleep();
242
212
  console.log("");
243
213
  }
244
- // ─── Helpers ─────────────────────────────────────────────────────────────────
245
- function groupBySeverity(findings) {
246
- const map = new Map();
247
- for (const f of findings) {
248
- const list = map.get(f.severity) ?? [];
249
- list.push(f);
250
- map.set(f.severity, list);
251
- }
252
- return map;
253
- }
254
214
  //# sourceMappingURL=reporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/ui/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/ui/reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Play a subtle sound notification for critical findings.
3
+ * Uses the standard terminal bell (\x07).
4
+ */
5
+ export declare function playSound(): void;
6
+ //# sourceMappingURL=sound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sound.d.ts","sourceRoot":"","sources":["../../src/ui/sound.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAMhC"}
@@ -0,0 +1,13 @@
1
+ import { isPlainMode } from "./theme.js";
2
+ /**
3
+ * Play a subtle sound notification for critical findings.
4
+ * Uses the standard terminal bell (\x07).
5
+ */
6
+ export function playSound() {
7
+ // Never play sound in plain mode (CI, piping, NO_COLOR)
8
+ if (isPlainMode() || process.env.NO_COLOR) {
9
+ return;
10
+ }
11
+ process.stdout.write("\x07");
12
+ }
13
+ //# sourceMappingURL=sound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sound.js","sourceRoot":"","sources":["../../src/ui/sound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,wDAAwD;IACxD,IAAI,WAAW,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { Severity } from "../types/index.js";
2
+ export declare function setPlainMode(enabled: boolean): void;
3
+ export declare function isPlainMode(): boolean;
4
+ export declare function initColorSupport(noColorFlag?: boolean): void;
5
+ interface PaletteColor {
6
+ hex: string;
7
+ ansi256: number;
8
+ /** Apply the color to text. */
9
+ apply: (text: string) => string;
10
+ /** Apply the color + bold to text. */
11
+ bold: (text: string) => string;
12
+ /** Apply the color + dim to text. */
13
+ dim: (text: string) => string;
14
+ }
15
+ export declare const colors: {
16
+ readonly voidInk: PaletteColor;
17
+ readonly vitalTeal: PaletteColor;
18
+ readonly pulseCoral: PaletteColor;
19
+ readonly amberFlag: PaletteColor;
20
+ readonly mintClear: PaletteColor;
21
+ readonly slateDim: PaletteColor;
22
+ };
23
+ export declare const glyphs: {
24
+ readonly critical: "✖";
25
+ readonly warning: "▲";
26
+ readonly passed: "●";
27
+ readonly fixed: "✓";
28
+ readonly info: "◆";
29
+ readonly divider: "─";
30
+ readonly rule: "│";
31
+ readonly filledBlock: "█";
32
+ readonly emptyBlock: "░";
33
+ readonly arrow: "→";
34
+ };
35
+ export declare const spinnerFrames: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
36
+ export declare function severityGlyph(severity: Severity): string;
37
+ export declare function severityColor(severity: Severity): PaletteColor;
38
+ /** Return the severity glyph already colored. */
39
+ export declare function styledGlyph(severity: Severity): string;
40
+ export declare function banner(): string;
41
+ export declare function resetBliptBannerSeen(): void;
42
+ export declare function showBliptBanner(version: string): void;
43
+ export declare const SNAPSHOT_NOTICE = "A snapshot will be saved \u2014 undo anytime with 'bilt undo'.";
44
+ export declare function pulseBar(score: number, width?: number): string;
45
+ export declare function sectionHeader(text: string): string;
46
+ export declare function ruleLine(content: string): string;
47
+ export declare function divider(width?: number): string;
48
+ export declare function summaryBox(lines: string[]): string;
49
+ export declare function truncatePath(filePath: string, maxLen?: number): string;
50
+ export declare class Spinner {
51
+ private frameIndex;
52
+ private interval;
53
+ private _text;
54
+ constructor(text: string);
55
+ get text(): string;
56
+ set text(value: string);
57
+ start(): this;
58
+ stop(): void;
59
+ fail(message: string): void;
60
+ }
61
+ export declare const text: {
62
+ readonly bold: (t: string) => string;
63
+ readonly dim: (t: string) => string;
64
+ };
65
+ export declare function stripAnsi(str: string): string;
66
+ export {};
67
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"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"}