@clear-capabilities/agentic-security-scanner 0.123.0 → 0.124.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.124.1 — fix: narration no longer prints a broken location
4
+
5
+ Now that v0.124.0 surfaces `narration` prominently inline, a pre-existing template
6
+ bug became visible: some narrations read `app.js:?` / `app.js:undefined` because the
7
+ location was interpolated before the finding's line was finalised.
8
+
9
+ - `scanner/src/posture/flow-narration.js`: the location is redundant (the finding
10
+ header already shows `file:line`), so the family templates are now
11
+ location-agnostic, and `_routeOf()` (generic fallback + LLM prompt) falls back to
12
+ the file alone — or "this endpoint" — instead of emitting `:undefined` / `:?`.
13
+ - Regression test in `test/flow-narration.test.js` asserts no template renders a
14
+ broken location when the line is absent.
15
+
16
+ ## 0.124.0 — inline finding depth (no second command for "why it fired")
17
+
18
+ The depth `/triage --explain` produces now renders **inline** in the finding views,
19
+ assembled from fields already on the finding (`narration` + `whyFired` + fix) — so the
20
+ default per-finding view answers "why does this matter / how does it fire / how do I
21
+ fix it" without a separate command. Addresses the "only ~2 sentences per finding"
22
+ feedback. Presentation only — no detector/severity changes.
23
+
24
+ - **Inline explain block** (`scanner/src/report/index.js`): every per-finding surface
25
+ now shows `why:` (the impact narration), `how:` (the `whyFired` detector + source→sink
26
+ flow, with sanitizers/guards/reachability under `--verbose`), and `fix:`. Wired into
27
+ the firehose list (`toCLI`), the pro table (a compact one-line "why"), and the HTML
28
+ report ("Why it matters" / "How it fires" blocks). Default trims the narration to two
29
+ sentences; `--verbose` shows the full narrative + fix code. Degrades gracefully when a
30
+ finding lacks the fields (e.g. SCA).
31
+ - **`--firehose` actually lists findings now.** Previously it only lowered the
32
+ confidence threshold while the vibecoder verdict showed no per-finding list; it now
33
+ appends the full per-finding list (with the inline depth) so "Show ALL findings" does.
34
+
3
35
  ## 0.123.0 — report clarity: risk-demotion labels, depth discoverability, HTML export docs
4
36
 
5
37
  Acting on user feedback that findings could overstate severity, that explanations
@@ -543,6 +543,13 @@ async function cmdScan(args) {
543
543
  else if (format === 'cli') body = toCLIByProfile(scan, { profile: effProfile, columns: args.flags.columns, verbose });
544
544
  else body = toSummary(scan);
545
545
 
546
+ // --firehose: the verdict/summary views don't list findings — append the full
547
+ // per-finding list (with inline why-it-matters / how-it-fires / fix depth) so
548
+ // "Show ALL findings" actually shows them. Add --verbose for full narration + code.
549
+ if (args.flags.firehose && (!format || format === 'ship' || format === 'summary')) {
550
+ body += '\n\n' + toCLI(scan, { verbose });
551
+ }
552
+
546
553
  // v3 next-gen — supplementary blocks for human-readable formats. These
547
554
  // are append-only and do not change the verdict / exit code. The blocks
548
555
  // are only meaningful when v3 annotators have run (default scan path).