ai-trust 0.2.24 → 0.3.0

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.
@@ -7,107 +7,41 @@
7
7
  * - Actionable next steps
8
8
  */
9
9
  import chalk from "chalk";
10
+ import { scoreMeter, miniMeter, divider, normalizeVerdict, verdictColor, trustLevelLabel, trustLevelColor, trustLevelLegend, formatScanAge, renderObservationsBlock, buildCategorySummaries, buildVerdict, } from "@opena2a/cli-ui";
11
+ import { classify } from "@opena2a/ai-classifier";
10
12
  // ── Visual helpers ─────────────────────────────────────────────���──────
11
- const METER_WIDTH = 20;
12
- function scoreMeter(value, max = 100) {
13
- const pct = Math.round((value / max) * METER_WIDTH);
14
- const meterColor = value >= 70 ? chalk.green : value >= 40 ? chalk.yellow : chalk.red;
15
- const filled = "\u2501".repeat(pct);
16
- const empty = "\u2501".repeat(METER_WIDTH - pct);
17
- return `${meterColor(filled)}${chalk.dim(empty)} ${meterColor.bold(String(value))}${chalk.dim(`/${max}`)}`;
18
- }
19
- function divider(label) {
20
- if (label) {
21
- const pad = Math.max(1, 56 - label.length);
22
- return `\n ${chalk.dim("\u2500\u2500")} ${chalk.bold(label)} ${chalk.dim("\u2500".repeat(pad))}`;
23
- }
24
- return ` ${chalk.dim("\u2500".repeat(62))}`;
25
- }
26
- function trustLevelLegend(currentLevel) {
27
- const levels = ["Blocked", "Warning", "Listed", "Scanned", "Verified"];
28
- return levels
29
- .map((l, i) => {
30
- if (i === currentLevel)
31
- return trustLevelColor(i).bold(l);
32
- return chalk.dim(l);
33
- })
34
- .join(chalk.dim(" > "));
35
- }
36
- // ── Data helpers ──────────────────────────────────────────────────────
37
- function normalizeVerdict(verdict) {
38
- switch (verdict) {
39
- case "safe":
40
- case "passed":
41
- return "safe";
42
- case "warning":
43
- case "warnings":
44
- return "warning";
45
- case "blocked":
46
- case "failed":
47
- return "blocked";
48
- case "listed":
49
- return "listed";
50
- default:
51
- return verdict;
52
- }
53
- }
54
- function verdictColor(verdict) {
55
- const normalized = normalizeVerdict(verdict);
56
- switch (normalized) {
57
- case "safe":
58
- return chalk.green;
59
- case "warning":
60
- return chalk.yellow;
61
- case "blocked":
62
- return chalk.red;
63
- case "listed":
64
- return chalk.cyan;
65
- default:
66
- return chalk.gray;
67
- }
68
- }
69
- function trustLevelLabel(level) {
70
- switch (level) {
71
- case 0:
72
- return "Blocked";
73
- case 1:
74
- return "Warning";
75
- case 2:
76
- return "Listed";
77
- case 3:
78
- return "Scanned";
79
- case 4:
80
- return "Verified";
81
- default:
82
- return `Unknown (${level})`;
83
- }
84
- }
85
- function trustLevelColor(level) {
86
- if (level >= 3)
87
- return chalk.green;
88
- if (level >= 1)
89
- return chalk.yellow;
90
- return chalk.red;
13
+ const MINI_METER_WIDTH = 8;
14
+ function normalizeScanStatus(status) {
15
+ if (!status)
16
+ return status;
17
+ return status.toLowerCase().trim();
91
18
  }
19
+ // ── ai-trust-specific helpers ─────────────────────────────────────────
92
20
  function formatScore(trustScore, scanStatus) {
93
- if (scanStatus === "error")
21
+ const status = normalizeScanStatus(scanStatus);
22
+ if (status === "error")
94
23
  return "Scan error";
95
- if (scanStatus === "failed")
24
+ if (status === "failed")
96
25
  return "Scan failed";
97
- const notScanned = !scanStatus ||
98
- scanStatus === "" ||
99
- scanStatus === "pending" ||
100
- scanStatus === "not_applicable";
101
- if (notScanned && !hasPassedScan(scanStatus)) {
26
+ const notScanned = !status ||
27
+ status === "" ||
28
+ status === "pending" ||
29
+ status === "not_applicable";
30
+ if (notScanned && !hasPassedScan(status)) {
102
31
  return "Not scanned";
103
32
  }
104
33
  return `${Math.round(trustScore * 100)}/100`;
105
34
  }
35
+ function isScanErrorStatus(scanStatus) {
36
+ const status = normalizeScanStatus(scanStatus);
37
+ return status === "error" || status === "failed";
38
+ }
106
39
  function hasPassedScan(scanStatus) {
107
- return scanStatus === "passed" || scanStatus === "warnings";
40
+ const status = normalizeScanStatus(scanStatus);
41
+ return status === "passed" || status === "warnings";
108
42
  }
109
43
  function scanStatusColor(status) {
110
- switch (status) {
44
+ switch (normalizeScanStatus(status)) {
111
45
  case "passed":
112
46
  return chalk.green;
113
47
  case "warnings":
@@ -121,26 +55,26 @@ function scanStatusColor(status) {
121
55
  return chalk.dim;
122
56
  }
123
57
  }
124
- function scoreColor(value) {
125
- if (value >= 70)
126
- return chalk.green;
127
- if (value >= 40)
128
- return chalk.yellow;
129
- return chalk.red;
130
- }
131
- function formatScanAge(lastScannedAt) {
132
- if (!lastScannedAt)
133
- return null;
134
- const scanned = new Date(lastScannedAt);
135
- const now = new Date();
136
- const days = Math.floor((now.getTime() - scanned.getTime()) / (1000 * 60 * 60 * 24));
137
- if (days === 0)
138
- return "today";
139
- if (days === 1)
140
- return "1 day ago";
141
- if (days > 90)
142
- return `${days} days ago (stale)`;
143
- return `${days} days ago`;
58
+ // ── Tier partitioning (ai-trust's scope boundary) ─────────────────────
59
+ /**
60
+ * Split batch results into AI-native (Tier 1), unrelated (Tier 3), and
61
+ * unknown groups using @opena2a/ai-classifier. ai-trust only shows trust
62
+ * data for native packages; unrelated packages get an HMA CTA footer.
63
+ */
64
+ function partitionByTier(results) {
65
+ const native = [];
66
+ const unrelated = [];
67
+ const unknown = [];
68
+ for (const r of results) {
69
+ const tier = classify({ name: r.name, packageType: r.packageType }).tier;
70
+ if (tier === "native")
71
+ native.push(r);
72
+ else if (tier === "unrelated")
73
+ unrelated.push(r);
74
+ else
75
+ unknown.push(r);
76
+ }
77
+ return { native, unrelated, unknown };
144
78
  }
145
79
  // ── Formatters ────────────────────────────────────────────────────────
146
80
  export function formatCheckResult(answer) {
@@ -159,7 +93,7 @@ export function formatCheckResult(answer) {
159
93
  const normalized = normalizeVerdict(answer.verdict);
160
94
  const scoreDisplay = formatScore(answer.trustScore, answer.scanStatus);
161
95
  const isUnscanned = scoreDisplay === "Not scanned";
162
- const isScanError = answer.scanStatus === "error" || answer.scanStatus === "failed";
96
+ const isScanError = isScanErrorStatus(answer.scanStatus);
163
97
  const scoreVal = Math.round(answer.trustScore * 100);
164
98
  // Header
165
99
  const meta = [answer.packageType || "unknown"];
@@ -220,13 +154,13 @@ export function formatCheckResult(answer) {
220
154
  // Next steps
221
155
  lines.push(divider("Next Steps"));
222
156
  if (isUnscanned || answer.trustLevel <= 2) {
223
- lines.push(` ${chalk.cyan("Scan locally:")} ai-trust check ${answer.name} --rescan`);
157
+ lines.push(` ${chalk.cyan("Scan locally:")} ai-trust check ${answer.name}`);
224
158
  }
225
159
  else if (normalized === "blocked" || normalized === "warning") {
226
- lines.push(` ${chalk.cyan("Deep scan:")} ai-trust check ${answer.name} --rescan`);
160
+ lines.push(` ${chalk.cyan("Deep scan:")} ai-trust check ${answer.name}`);
227
161
  }
228
162
  else {
229
- lines.push(` ${chalk.cyan("Fresh scan:")} ai-trust check ${answer.name} --rescan`);
163
+ lines.push(` ${chalk.cyan("Fresh scan:")} ai-trust check ${answer.name}`);
230
164
  }
231
165
  lines.push(` ${chalk.cyan("Full project audit:")} ai-trust audit package.json`);
232
166
  lines.push("");
@@ -234,14 +168,61 @@ export function formatCheckResult(answer) {
234
168
  }
235
169
  export function formatBatchResults(response, minTrust) {
236
170
  const lines = [];
171
+ const { native, unrelated, unknown } = partitionByTier(response.results);
172
+ // Header: summarize the scope split before anything else so the user knows
173
+ // how many of their dependencies are actually in ai-trust's scope.
237
174
  lines.push("");
238
- lines.push(chalk.bold(` Trust Audit: ${response.meta.total} packages queried, ${response.meta.found} found, ${response.meta.notFound} not found`));
175
+ if (native.length === 0 && unrelated.length > 0) {
176
+ // Edge case: nothing here is an AI package. Show a focused message and
177
+ // route the user to HMA for general security scanning.
178
+ lines.push(chalk.bold(` No AI packages found in ${response.meta.total} ${response.meta.total === 1 ? "dependency" : "dependencies"}`));
179
+ lines.push(chalk.dim(` ai-trust covers MCP servers, A2A agents, skills, AI tools, and LLMs.`));
180
+ lines.push(chalk.dim(` For general security scanning of libraries, use HackMyAgent.`));
181
+ lines.push(divider("Next Steps"));
182
+ lines.push(` ${chalk.cyan("General security scan:")} npx hackmyagent secure .`);
183
+ if (unknown.length > 0) {
184
+ lines.push(` ${chalk.cyan("Check an AI package:")} ai-trust check <name>`);
185
+ }
186
+ lines.push("");
187
+ return lines.join("\n");
188
+ }
189
+ const headerParts = [
190
+ `${native.length} AI ${native.length === 1 ? "package" : "packages"} audited`,
191
+ ];
192
+ if (unrelated.length > 0) {
193
+ headerParts.push(chalk.dim(`${unrelated.length} ${unrelated.length === 1 ? "library" : "libraries"} out of scope`));
194
+ }
195
+ if (unknown.length > 0) {
196
+ headerParts.push(chalk.dim(`${unknown.length} unclassified`));
197
+ }
198
+ lines.push(chalk.bold(" " + headerParts.join(chalk.dim(" · "))));
199
+ // If we have no AI packages to show but some unknown ones, render just the
200
+ // unknown list with a "check to classify" CTA.
201
+ if (native.length === 0) {
202
+ if (unknown.length > 0) {
203
+ lines.push(divider("Unclassified packages"));
204
+ lines.push(chalk.dim(" These packages aren't registered as AI and aren't on the known-library allowlist."));
205
+ for (const pkg of unknown) {
206
+ lines.push(` ${chalk.yellow("\u2502")} ${pkg.name}`);
207
+ }
208
+ lines.push(divider("Next Steps"));
209
+ lines.push(` ${chalk.cyan("Classify individually:")} ai-trust check <name>`);
210
+ lines.push(` ${chalk.cyan("General security scan:")} npx hackmyagent secure .`);
211
+ lines.push("");
212
+ return lines.join("\n");
213
+ }
214
+ // No native + no unrelated + no unknown = empty result set
215
+ lines.push(chalk.dim(" No packages to display."));
216
+ lines.push("");
217
+ return lines.join("\n");
218
+ }
219
+ // Tier 1 trust table — the main event.
239
220
  // Table header
240
- const nameWidth = 40;
221
+ const nameWidth = 36;
241
222
  const typeWidth = 14;
242
223
  const verdictWidth = 10;
243
224
  const levelWidth = 12;
244
- const scoreWidth = 14;
225
+ const scoreWidth = 16;
245
226
  const scanWidth = 10;
246
227
  lines.push("");
247
228
  lines.push(chalk.dim(" ") +
@@ -258,7 +239,7 @@ export function formatBatchResults(response, minTrust) {
258
239
  levelWidth +
259
240
  scoreWidth +
260
241
  scanWidth)));
261
- for (const result of response.results) {
242
+ for (const result of native) {
262
243
  const name = result.name.length > nameWidth - 2
263
244
  ? result.name.substring(0, nameWidth - 5) + "..."
264
245
  : result.name;
@@ -277,13 +258,18 @@ export function formatBatchResults(response, minTrust) {
277
258
  const colorTrust = trustLevelColor(result.trustLevel);
278
259
  const scoreDisplay = formatScore(result.trustScore, result.scanStatus);
279
260
  const scoreVal = Math.round(result.trustScore * 100);
280
- // Color the score based on value or status
281
- const isScanError = result.scanStatus === "error" || result.scanStatus === "failed";
282
- const coloredScore = isScanError
283
- ? chalk.red(scoreDisplay.padEnd(scoreWidth))
284
- : scoreDisplay === "Not scanned"
285
- ? chalk.dim(scoreDisplay.padEnd(scoreWidth))
286
- : scoreColor(scoreVal)(scoreDisplay.padEnd(scoreWidth));
261
+ const isScanError = isScanErrorStatus(result.scanStatus);
262
+ // Score column: mini meter for scanned, text for error/unscanned
263
+ let scoreCell;
264
+ if (isScanError) {
265
+ scoreCell = chalk.red.bold("Error") + " ";
266
+ }
267
+ else if (scoreDisplay === "Not scanned") {
268
+ scoreCell = chalk.dim("\u2501".repeat(MINI_METER_WIDTH)) + " " + chalk.dim("--");
269
+ }
270
+ else {
271
+ scoreCell = miniMeter(scoreVal);
272
+ }
287
273
  // Color the scan status
288
274
  const statusText = result.scanStatus || "-";
289
275
  const coloredStatus = scanStatusColor(result.scanStatus)(statusText.padEnd(scanWidth));
@@ -292,13 +278,14 @@ export function formatBatchResults(response, minTrust) {
292
278
  (result.packageType || "-").padEnd(typeWidth) +
293
279
  colorVerdict(normalized.toUpperCase().padEnd(verdictWidth)) +
294
280
  chalk.bold(colorTrust(trustLevelLabel(result.trustLevel).padEnd(levelWidth))) +
295
- coloredScore +
281
+ scoreCell + " " +
296
282
  coloredStatus);
297
283
  }
298
- // Summary
299
- const belowThreshold = response.results.filter((r) => r.found && r.trustLevel < minTrust);
300
- const notFound = response.results.filter((r) => !r.found);
301
- const errorScans = response.results.filter((r) => r.found && (r.scanStatus === "error" || r.scanStatus === "failed"));
284
+ // Summary — only consider AI-native packages. Unrelated libraries are out
285
+ // of ai-trust's scope; they don't affect the verdict or trust level checks.
286
+ const belowThreshold = native.filter((r) => r.found && r.trustLevel < minTrust);
287
+ const notFound = native.filter((r) => !r.found);
288
+ const errorScans = native.filter((r) => r.found && isScanErrorStatus(r.scanStatus));
302
289
  if (belowThreshold.length > 0 || notFound.length > 0 || errorScans.length > 0) {
303
290
  lines.push(divider("Summary"));
304
291
  }
@@ -309,13 +296,17 @@ export function formatBatchResults(response, minTrust) {
309
296
  lines.push(chalk.yellow.bold(` ${belowThreshold.length} package(s) below minimum trust level ${minTrust}:`));
310
297
  for (const pkg of belowThreshold) {
311
298
  const tlc = trustLevelColor(pkg.trustLevel);
312
- lines.push(` ${chalk.yellow("\u2502")} ${pkg.name} ${tlc(trustLevelLabel(pkg.trustLevel))} ${chalk.dim(`(${pkg.trustLevel}/4)`)}`);
299
+ const pkgScore = Math.round(pkg.trustScore * 100);
300
+ const scoreSection = isScanErrorStatus(pkg.scanStatus)
301
+ ? chalk.red.bold("Error") + chalk.dim(" \u2014 rescan for accurate score")
302
+ : scoreMeter(pkgScore);
303
+ lines.push(` ${chalk.yellow("\u2502")} ${pkg.name} ${scoreSection} ${tlc(trustLevelLabel(pkg.trustLevel))} ${chalk.dim(`(${pkg.trustLevel}/4)`)}`);
313
304
  }
314
305
  }
315
306
  if (errorScans.length > 0) {
316
307
  lines.push(chalk.red.bold(` ${errorScans.length} package(s) with scan errors:`));
317
308
  for (const pkg of errorScans) {
318
- lines.push(` ${chalk.red("\u2502")} ${pkg.name} ${chalk.red(pkg.scanStatus || "error")} ${chalk.dim("\u2014 rescan for accurate score")}`);
309
+ lines.push(` ${chalk.red("\u2502")} ${pkg.name} ${chalk.red.bold("Error")} ${chalk.dim("\u2014 rescan for accurate score")}`);
319
310
  }
320
311
  }
321
312
  if (notFound.length > 0) {
@@ -324,11 +315,33 @@ export function formatBatchResults(response, minTrust) {
324
315
  lines.push(` ${chalk.yellow("\u2502")} ${pkg.name}`);
325
316
  }
326
317
  }
327
- if (belowThreshold.length === 0 && notFound.length === 0 && errorScans.length === 0) {
328
- lines.push(chalk.green.bold(` All ${response.meta.found} packages meet minimum trust level ${minTrust}.`));
318
+ const foundNative = native.filter((r) => r.found).length;
319
+ if (belowThreshold.length === 0 && notFound.length === 0 && errorScans.length === 0 && foundNative > 0) {
320
+ lines.push(chalk.green.bold(` All ${foundNative} AI ${foundNative === 1 ? "package" : "packages"} meet minimum trust level ${minTrust}.`));
321
+ }
322
+ // Out of scope: libraries. Compact list + HMA CTA — these aren't audited
323
+ // by ai-trust, they're routed to HackMyAgent for general security scanning.
324
+ if (unrelated.length > 0) {
325
+ lines.push(divider("Out of scope (libraries)"));
326
+ lines.push(chalk.dim(` ai-trust is for AI packages. For general security, use HackMyAgent.`));
327
+ const names = unrelated.map((r) => r.name);
328
+ const preview = names.slice(0, 6).join(chalk.dim(", "));
329
+ const more = names.length > 6 ? chalk.dim(` + ${names.length - 6} more`) : "";
330
+ lines.push(` ${chalk.dim(preview)}${more}`);
331
+ }
332
+ // Unknown: packages we couldn't classify. Surface clearly.
333
+ if (unknown.length > 0) {
334
+ lines.push(divider("Unclassified"));
335
+ lines.push(chalk.dim(` Not in registry and not on the known-library list. Classify them:`));
336
+ for (const pkg of unknown.slice(0, 6)) {
337
+ lines.push(` ${chalk.yellow("\u2502")} ${pkg.name}`);
338
+ }
339
+ if (unknown.length > 6) {
340
+ lines.push(` ${chalk.dim(` + ${unknown.length - 6} more`)}`);
341
+ }
329
342
  }
330
- // Trust level legend
331
- const hasNonVerified = response.results.some((r) => r.found && r.trustLevel < 4);
343
+ // Trust level legend (only meaningful if there are native packages)
344
+ const hasNonVerified = native.some((r) => r.found && r.trustLevel < 4);
332
345
  if (hasNonVerified) {
333
346
  lines.push("");
334
347
  lines.push(` ${trustLevelLegend(minTrust)}`);
@@ -336,16 +349,21 @@ export function formatBatchResults(response, minTrust) {
336
349
  // Next steps
337
350
  lines.push(divider("Next Steps"));
338
351
  if (errorScans.length > 0) {
339
- lines.push(` ${chalk.cyan("Rescan errors:")} ai-trust check <name> --rescan`);
352
+ lines.push(` ${chalk.cyan("Rescan errors:")} ai-trust check <name>`);
340
353
  }
341
354
  if (notFound.length > 0) {
342
355
  lines.push(` ${chalk.cyan("Scan missing:")} ai-trust audit <file> --scan-missing`);
343
- lines.push(` ${chalk.cyan("Check individual:")} ai-trust check <name> --rescan`);
356
+ lines.push(` ${chalk.cyan("Check individual:")} ai-trust check <name>`);
344
357
  }
345
358
  if (belowThreshold.length > 0) {
346
359
  lines.push(` ${chalk.cyan("Inspect flagged:")} ai-trust check <name>`);
347
360
  }
348
- lines.push(` ${chalk.cyan("Security scan:")} npx hackmyagent secure .`);
361
+ if (unknown.length > 0) {
362
+ lines.push(` ${chalk.cyan("Classify unknown:")} ai-trust check <name>`);
363
+ }
364
+ // Always offer HMA for library security — even when the current audit has
365
+ // no libraries, users often come back to audit another file that will.
366
+ lines.push(` ${chalk.cyan("Library security:")} npx hackmyagent secure .`);
349
367
  lines.push("");
350
368
  return lines.join("\n");
351
369
  }
@@ -383,6 +401,55 @@ export function formatScanResult(result) {
383
401
  // Trust level
384
402
  const tlColor = trustLevelColor(result.trustLevel);
385
403
  lines.push(` Level ${chalk.bold(tlColor(trustLevelLabel(result.trustLevel)))} ${chalk.dim(`(${result.trustLevel}/4)`)}`);
404
+ // ── Observations + Verdict ──────────────────────────────────────────
405
+ // Shared block from @opena2a/cli-ui per [CA-030] so ai-trust's local-
406
+ // scan output stays consistent with hackmyagent secure + opena2a review.
407
+ // Only wired on formatScanResult (real findings). formatCheckResult is
408
+ // registry-lookup metadata with no findings to categorize — left for a
409
+ // future translation layer per brief §7.
410
+ const categorizable = failed.map((f) => ({
411
+ checkId: f.checkId,
412
+ name: f.name,
413
+ category: f.category,
414
+ passed: false,
415
+ severity: f.severity,
416
+ }));
417
+ const verdictFindings = failed.map((f) => ({
418
+ severity: f.severity,
419
+ name: f.name,
420
+ checkId: f.checkId,
421
+ file: f.file,
422
+ line: f.line,
423
+ }));
424
+ const rawKind = result.scan.projectType?.trim();
425
+ const projectLabel = rawKind && rawKind !== "unknown" ? rawKind : "package";
426
+ const categorySummaries = buildCategorySummaries(categorizable);
427
+ const verdict = buildVerdict({ critical, high, medium, low }, { kind: projectLabel }, verdictFindings);
428
+ const { lines: obsLines } = renderObservationsBlock({
429
+ surfaces: { kind: projectLabel },
430
+ checks: {
431
+ staticCount: result.scan.findings.length,
432
+ semanticCount: (result.semanticFindings?.length ?? 0),
433
+ },
434
+ categories: categorySummaries,
435
+ verdict,
436
+ });
437
+ lines.push("");
438
+ lines.push(divider("Observations"));
439
+ const tonePaint = (tone, s) => {
440
+ if (tone === "good")
441
+ return chalk.green(s);
442
+ if (tone === "warning")
443
+ return chalk.yellow(s);
444
+ if (tone === "critical")
445
+ return chalk.red(s);
446
+ return s;
447
+ };
448
+ const OBS_LABEL_WIDTH = 12;
449
+ for (const obs of obsLines) {
450
+ const labelPad = obs.label.padEnd(OBS_LABEL_WIDTH, " ");
451
+ lines.push(` ${chalk.dim(labelPad)}${tonePaint(obs.tone, obs.value)}`);
452
+ }
386
453
  // Findings
387
454
  if (total > 0) {
388
455
  const summaryParts = [];
@@ -460,6 +527,44 @@ export function formatScanResult(result) {
460
527
  (sf.file ? chalk.dim(` ${sf.file}`) : ""));
461
528
  }
462
529
  }
530
+ // AI analyst findings (from --analyze mode)
531
+ if (result.analystFindings && result.analystFindings.length > 0) {
532
+ lines.push(divider("AnaLM Analysis"));
533
+ for (const af of result.analystFindings) {
534
+ const r = af.result;
535
+ if (af.taskType === "threatAnalysis") {
536
+ const level = String(r.threatLevel ?? "unknown").toUpperCase();
537
+ const levelColor = level === "CRITICAL" || level === "HIGH"
538
+ ? chalk.red
539
+ : level === "MEDIUM"
540
+ ? chalk.yellow
541
+ : chalk.dim;
542
+ lines.push(` ${chalk.cyan("\u2502")} ${levelColor.bold(level)} ${r.attackVector ?? ""}`);
543
+ if (r.description) {
544
+ lines.push(` ${chalk.cyan("\u2502")} ${r.description}`);
545
+ }
546
+ if (Array.isArray(r.mitigations)) {
547
+ for (const m of r.mitigations) {
548
+ lines.push(` ${chalk.cyan("\u2502")} ${chalk.cyan("Fix:")} ${m}`);
549
+ }
550
+ }
551
+ }
552
+ else if (af.taskType === "credentialContextClassification") {
553
+ const cls = String(r.classification ?? "unknown");
554
+ const clsColor = cls === "real"
555
+ ? chalk.red
556
+ : cls === "test" || cls === "example"
557
+ ? chalk.green
558
+ : chalk.yellow;
559
+ lines.push(` ${chalk.cyan("\u2502")} Credential: ${clsColor.bold(cls)}`);
560
+ if (r.reasoning) {
561
+ lines.push(` ${chalk.cyan("\u2502")} ${r.reasoning}`);
562
+ }
563
+ }
564
+ lines.push(` ${chalk.cyan("\u2502")} ${chalk.dim(`${Math.round(af.confidence * 100)}% confidence | ${af.modelVersion}`)}`);
565
+ lines.push("");
566
+ }
567
+ }
463
568
  // Trust level legend
464
569
  if (result.trustLevel < 4) {
465
570
  lines.push("");
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/output/formatter.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,23 @@ async function downloadNpmPackage(name) {
32
32
  await execFileAsync("tar", ["xzf", tarballPath, "-C", tempDir], {
33
33
  timeout: 30_000,
34
34
  });
35
+ // Detect the actual extracted directory (usually "package" but some
36
+ // tarballs like @types/* extract to a different name)
37
+ let extractedDir = join(tempDir, "package");
38
+ try {
39
+ const entries = await readdir(tempDir, { withFileTypes: true });
40
+ const dirs = entries.filter((e) => e.isDirectory() && e.name !== "node_modules");
41
+ // If "package" doesn't exist, use the first directory found
42
+ const hasPackage = dirs.some((d) => d.name === "package");
43
+ if (!hasPackage && dirs.length > 0) {
44
+ extractedDir = join(tempDir, dirs[0].name);
45
+ }
46
+ }
47
+ catch {
48
+ // Fall back to "package" if readdir fails
49
+ }
35
50
  return {
36
- dir: join(tempDir, "package"),
51
+ dir: extractedDir,
37
52
  cleanup: async () => {
38
53
  await rm(tempDir, { recursive: true, force: true });
39
54
  },