@clear-capabilities/agentic-security-scanner 0.145.0 → 0.147.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.
Files changed (162) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/bin/agentic-security.js +3508 -69
  3. package/dist/1122.index.js +702 -0
  4. package/dist/{301.index.js → 1301.index.js} +2 -2
  5. package/dist/1379.index.js +591 -0
  6. package/dist/{444.index.js → 1444.index.js} +2 -2
  7. package/dist/{660.index.js → 1660.index.js} +2 -2
  8. package/dist/{700.index.js → 1700.index.js} +2 -2
  9. package/dist/{905.index.js → 1905.index.js} +3 -3
  10. package/dist/{920.index.js → 1920.index.js} +3 -3
  11. package/dist/{238.index.js → 2238.index.js} +3 -3
  12. package/dist/{271.index.js → 2271.index.js} +2 -2
  13. package/dist/{985.index.js → 2376.index.js} +1260 -340
  14. package/dist/2432.index.js +793 -0
  15. package/dist/2659.index.js +93 -0
  16. package/dist/{826.index.js → 2826.index.js} +2 -2
  17. package/dist/{830.index.js → 2830.index.js} +2 -2
  18. package/dist/2923.index.js +298 -0
  19. package/dist/{1.index.js → 3001.index.js} +5 -5
  20. package/dist/{117.index.js → 3117.index.js} +3 -3
  21. package/dist/3180.index.js +307 -0
  22. package/dist/3276.index.js +117 -0
  23. package/dist/{415.index.js → 3415.index.js} +2 -2
  24. package/dist/{499.index.js → 3499.index.js} +2 -2
  25. package/dist/3518.index.js +450 -0
  26. package/dist/{526.index.js → 3526.index.js} +5 -5
  27. package/dist/{736.index.js → 3736.index.js} +4 -4
  28. package/dist/{839.index.js → 3839.index.js} +4 -4
  29. package/dist/{113.index.js → 4113.index.js} +5 -5
  30. package/dist/{265.index.js → 4265.index.js} +2 -2
  31. package/dist/{384.index.js → 4384.index.js} +3 -3
  32. package/dist/4547.index.js +268 -0
  33. package/dist/4863.index.js +422 -0
  34. package/dist/{970.index.js → 4970.index.js} +2 -2
  35. package/dist/5051.index.js +770 -0
  36. package/dist/{144.index.js → 5144.index.js} +5 -5
  37. package/dist/{333.index.js → 5333.index.js} +3 -3
  38. package/dist/5343.index.js +185 -0
  39. package/dist/5350.index.js +866 -0
  40. package/dist/5561.index.js +436 -0
  41. package/dist/{637.index.js → 5637.index.js} +3 -3
  42. package/dist/{449.index.js → 5830.index.js} +2 -2
  43. package/dist/6626.index.js +532 -0
  44. package/dist/6662.index.js +297 -0
  45. package/dist/{675.index.js → 6675.index.js} +5 -5
  46. package/dist/{730.index.js → 6730.index.js} +6 -6
  47. package/dist/6829.index.js +225 -0
  48. package/dist/6944.index.js +130 -0
  49. package/dist/{178.index.js → 7178.index.js} +3 -3
  50. package/dist/{227.index.js → 7227.index.js} +2 -2
  51. package/dist/7310.index.js +520 -0
  52. package/dist/{552.index.js → 7552.index.js} +4 -4
  53. package/dist/7709.index.js +78 -0
  54. package/dist/8218.index.js +160 -0
  55. package/dist/{476.index.js → 8476.index.js} +4 -4
  56. package/dist/{513.index.js → 8513.index.js} +5 -5
  57. package/dist/{520.index.js → 8520.index.js} +2 -2
  58. package/dist/{718.index.js → 8718.index.js} +2 -2
  59. package/dist/{752.index.js → 8752.index.js} +2 -2
  60. package/dist/8846.index.js +100 -0
  61. package/dist/{435.index.js → 9091.index.js} +560 -189
  62. package/dist/{207.index.js → 9207.index.js} +2 -2
  63. package/dist/{220.index.js → 9220.index.js} +2 -2
  64. package/dist/9390.index.js +163 -0
  65. package/dist/{503.index.js → 9503.index.js} +2 -2
  66. package/dist/{801.index.js → 9801.index.js} +2 -2
  67. package/dist/{824.index.js → 9824.index.js} +2 -2
  68. package/dist/agentic-security.mjs +16 -16
  69. package/dist/agentic-security.mjs.sha256 +1 -1
  70. package/dist/compliance-frameworks/hipaa-security-rule.json +3 -2
  71. package/package.json +12 -5
  72. package/src/dataflow/CLAUDE.md +1 -1
  73. package/src/dataflow/catalog.js +42 -0
  74. package/src/dataflow/orm-write-catalog.js +175 -0
  75. package/src/engine.js +92 -1
  76. package/src/ir/CLAUDE.md +1 -0
  77. package/src/ir/chrome-probe.mjs +150 -0
  78. package/src/ir/parser-js.js +94 -7
  79. package/src/lineage/CLAUDE.md +1203 -0
  80. package/src/lineage/DESIGN_DESTINATION_RESOLVER.md +156 -0
  81. package/src/lineage/DESIGN_GRAPH_BUILDER.md +938 -0
  82. package/src/lineage/DESIGN_HANDLING_ANALYZER.md +355 -0
  83. package/src/lineage/DESIGN_INTRAPROCEDURAL.md +628 -0
  84. package/src/lineage/DESIGN_PATH_PROVENANCE.md +3451 -0
  85. package/src/lineage/DESIGN_QUEUE_DETAIL.md +120 -0
  86. package/src/lineage/DESIGN_REGISTRIES.md +880 -0
  87. package/src/lineage/DESIGN_STORE_DETAIL.md +143 -0
  88. package/src/lineage/DESIGN_TRANSIT_PROTECTION.md +245 -0
  89. package/src/lineage/classification.js +56 -0
  90. package/src/lineage/coverage.js +658 -0
  91. package/src/lineage/cross-repo-link.js +107 -0
  92. package/src/lineage/dataflow-graph.schema.json +184 -0
  93. package/src/lineage/decision-story.js +206 -0
  94. package/src/lineage/drift-policy.js +279 -0
  95. package/src/lineage/driver.js +135 -0
  96. package/src/lineage/engine.js +992 -0
  97. package/src/lineage/export-briefing.js +628 -0
  98. package/src/lineage/export-csv.js +62 -0
  99. package/src/lineage/export-json.js +238 -0
  100. package/src/lineage/export-privacy.js +258 -0
  101. package/src/lineage/federation-loader.js +111 -0
  102. package/src/lineage/field-identity.js +78 -0
  103. package/src/lineage/fixtures/build-flagship-fixture.mjs +272 -0
  104. package/src/lineage/fixtures/flagship-graph.json +1453 -0
  105. package/src/lineage/flow-grade.js +221 -0
  106. package/src/lineage/governance-edit.js +169 -0
  107. package/src/lineage/graph-builder.js +1114 -0
  108. package/src/lineage/graph-diff.js +431 -0
  109. package/src/lineage/graph-snapshot.js +180 -0
  110. package/src/lineage/handling-analyzer.js +168 -0
  111. package/src/lineage/ids.js +349 -0
  112. package/src/lineage/impact-assessment.js +76 -0
  113. package/src/lineage/impact-engine.js +268 -0
  114. package/src/lineage/index.js +281 -0
  115. package/src/lineage/language-coverage-tiers.js +58 -0
  116. package/src/lineage/obligation-mapping.js +126 -0
  117. package/src/lineage/obligation-predicates.js +235 -0
  118. package/src/lineage/observation-adapters.js +282 -0
  119. package/src/lineage/observation-correlation.js +622 -0
  120. package/src/lineage/observation-store.js +497 -0
  121. package/src/lineage/path-query.js +410 -0
  122. package/src/lineage/path-store.js +400 -0
  123. package/src/lineage/protection.js +53 -0
  124. package/src/lineage/recipient-profile.js +192 -0
  125. package/src/lineage/recipient-registry.js +394 -0
  126. package/src/lineage/redact-graph.js +224 -0
  127. package/src/lineage/remediation.js +417 -0
  128. package/src/lineage/resolve-destination.js +91 -0
  129. package/src/lineage/runtime-observation.js +464 -0
  130. package/src/lineage/scenario-diff.js +84 -0
  131. package/src/lineage/scenario-engine.js +251 -0
  132. package/src/lineage/scenario.js +101 -0
  133. package/src/lineage/schema.js +167 -0
  134. package/src/lineage/sink-registry.js +427 -0
  135. package/src/lineage/source-registry.js +357 -0
  136. package/src/lineage/source-seeding.js +212 -0
  137. package/src/lineage/summaries.js +590 -0
  138. package/src/lineage/transform-catalog.js +397 -0
  139. package/src/lineage/transit-protection.js +150 -0
  140. package/src/lineage/validate.js +285 -0
  141. package/src/mcp/CLAUDE.md +7 -1
  142. package/src/mcp/dataflow-tools.js +160 -0
  143. package/src/mcp/server.js +1 -1
  144. package/src/mcp/tools.js +2 -1
  145. package/src/pipeline/scan-health.js +19 -1
  146. package/src/posture/CLAUDE.md +19 -0
  147. package/src/posture/artifact-registry.js +52 -0
  148. package/src/posture/auditor-walkthrough.js +76 -0
  149. package/src/posture/compliance-frameworks/hipaa-security-rule.json +3 -2
  150. package/src/posture/obligation-evidence-pack.js +202 -0
  151. package/src/posture/remediation-ledger.js +337 -0
  152. package/src/server/CLAUDE.md +47 -0
  153. package/src/server/graph-loader.js +141 -0
  154. package/src/server/http-server.js +325 -0
  155. package/src/server/routes.js +129 -0
  156. package/src/server/security.js +111 -0
  157. package/src/server/static-assets.js +139 -0
  158. package/dist/11.index.js +0 -353
  159. package/dist/259.index.js +0 -975
  160. package/dist/317.index.js +0 -300
  161. package/dist/609.index.js +0 -741
  162. package/dist/838.index.js +0 -152
package/CHANGELOG.md CHANGED
@@ -11,6 +11,145 @@
11
11
 
12
12
 
13
13
 
14
+ ## 0.147.0 — Documentation overhaul: a cohesive assurance-platform story, verified against the shipped code
15
+
16
+ The 0.144.0 Assurance Hardening release shipped a real 3-state ship verdict,
17
+ a model-egress policy gate, risk-dollar scenario disclosure, and per-artifact
18
+ retention/encryption — but the docs describing it, and the README's whole
19
+ front-door story, hadn't caught up. This release rewrites both, built
20
+ exclusively from real, re-verified source rather than the original
21
+ documentation brief's assumptions (which turned out to contain several
22
+ fabricated CLI flags and vocabularies — a `scan --assurance` flag that
23
+ doesn't exist, `--assurance` is `ci`-only; a fictional `--explain-health`
24
+ flag; nine invented verify-verdict strings; a fictional unified compliance
25
+ state model where three separate, differently-cased vocabularies actually
26
+ exist).
27
+
28
+ **README** rewritten around a 5-capability story (Find It / Prove It / Fix
29
+ It Safely / Govern It / Explain It), a corrected 5-minute quickstart, the
30
+ real 3-state ship verdict as a running example, and persona-based
31
+ navigation (Developer / AppSec / Privacy / Compliance / Platform
32
+ Engineering).
33
+
34
+ **16 new docs**: `docs/walkthroughs/{assurance-modes,scan-health,
35
+ finding-evidence,verified-remediation,privacy-data-flow,model-egress}.md`;
36
+ `docs/architecture/finding-lifecycle.md`; `docs/concepts.md`
37
+ (evidence-before-severity, deterministic-vs-model-assisted);
38
+ `docs/governance/state-and-retention.md`; `docs/guides/risk-dollars.md`;
39
+ `docs/examples/README.md` (a 13-entry gallery); `docs/reference/
40
+ {output-schema,glossary}.md`; `docs/troubleshooting/scan-health.md`; and two
41
+ real, captured Data Flow Explorer browser screenshots at `docs/assets/`.
42
+
43
+ **A new doc-testing tool**, `scripts/verify-doc-examples.mjs`: parses the
44
+ real CLI dispatch table out of `bin/agentic-security.js` at runtime (so it
45
+ can't drift out of sync with the CLI the way a hand-maintained list would)
46
+ to catch fabricated commands and the specific `<subcommand> --help`
47
+ landmine (passing `--help` to a subcommand silently runs the real command
48
+ instead of printing help — only bare `agentic-security help` is valid),
49
+ plus JSON-block and Mermaid-syntax sanity checks. Deliberately not wired
50
+ into any gate — a standalone `npm run docs:verify-examples`.
51
+
52
+ **Existing docs corrected**, not just extended: `docs/guides/
53
+ {quickstart,scanning,compliance,ci-setup,finding-provenance}.md`,
54
+ `docs/reference/{cli,configuration}.md`, `docs/ARCHITECTURE.md`,
55
+ `docs/README.md`, and several `commands/`/`skills/` files carried stale
56
+ claims — the most consequential being that `scan` was documented as
57
+ defaulting finding-provenance ON, when it actually defaults OFF (`ci`
58
+ defaults it ON; this asymmetry exists because plain provenance resolution
59
+ cost a measured 4.5s→45s regression on a 207-file tree, the same
60
+ measurement behind this project's own TTFF benchmark).
61
+
62
+ ## 0.146.0 — Data Flow Explorer: trace sensitive data through your architecture, not just through one finding
63
+
64
+ Every prior release answers "is this line of code dangerous?" This one adds a
65
+ different question: "where does this piece of sensitive data actually go, and
66
+ what protects it along the way?" `agentic-security dataflow` builds a
67
+ `DataFlowGraph` from a real scan — sources, sinks, the data elements that
68
+ flow between them, and a verdict per hop on transit/at-rest/handling
69
+ protection — and a new local, read-only, loopback-only server
70
+ (`agentic-security explore`) serves it to a clickable UI. Six milestones,
71
+ built in dependency order over this release cycle:
72
+
73
+ **The graph itself (Milestones 0-2).** A stable-ID'd, schema-versioned graph
74
+ contract; an interprocedural field-identity taint engine purpose-built for
75
+ this graph (deliberately separate from the SAST engine's own taint
76
+ analysis — different state shape, different precision goals) with
77
+ context-sensitive summaries and a compact path-provenance DAG that tracks
78
+ *why* a field reached a sink, not just *that* it did; source/sink/
79
+ transformation registries reclassifying this project's existing detection
80
+ catalogs into the graph's own vocabulary; and protection-verdict analyzers
81
+ for transit (TLS presence and validity), at-rest (encryption-before-store),
82
+ and handling (masking/hashing/tokenization — never treated as synonyms).
83
+
84
+ **A local server and reference UI (Milestone 3).** `agentic-security explore`
85
+ — the first HTTP server anywhere in this codebase (the MCP and LSP servers
86
+ are both stdio) — serves the signed, already-scanned graph read-only,
87
+ loopback-only, to a zero-build-step frontend prototype with architecture,
88
+ privacy-lifecycle, and evidence-trace views.
89
+
90
+ **Export and decision-intelligence surfaces (Milestone 4).** JSON/CSV/HTML/
91
+ PNG/PDF/SVG export; a Regulatory Obligation Overlay mapping graph facts
92
+ against bundled compliance frameworks (never claiming "compliant" from a
93
+ single mapping); an Executive Risk Story mode ranking flows on nine
94
+ transparent, disclosed factors — never a blended, uncalibrated score; a
95
+ Data-Flow Time Machine (`dataflow diff`) comparing two scans with real
96
+ drift-policy alerting on newly-introduced disclosures; and Third-Party and
97
+ Cross-Border Intelligence, keeping legal/jurisdiction facts honestly
98
+ `unknown` rather than inferred from brand recognition.
99
+
100
+ **Simulation, corroboration, and cross-repo linkage (Milestone 5).** A
101
+ What-If Architecture Simulator (`dataflow scenario apply`) that clones and
102
+ overrides a graph to test a hypothetical fix, never mutating the real scan,
103
+ with every simulated verdict marked `HYPOTHETICAL` and `assumed`-graded so
104
+ it can never be mistaken for a real one; Blast-Radius Impact Assessment and
105
+ a Remediation Command Center with a hash-chained ledger enforcing that
106
+ closing an item requires either a clean rescan or an explicit, permitted
107
+ manual attestation — and that a later regression reopens it automatically;
108
+ a Runtime-Corroborated Digital Twin (`dataflow observations import`) that
109
+ layers operator-supplied runtime telemetry onto the static graph through a
110
+ closed-world contract that rejects, not merely redacts, any field capable
111
+ of carrying a payload value; per-language coverage-tier disclosure so a
112
+ partially-supported language is labeled as such rather than silently
113
+ under-reported; and `federate declare` — an operator-declared edge between
114
+ two independently-scanned repositories' own graphs, with each graph staying
115
+ its own separate, unmodified artifact.
116
+
117
+ **New top-level commands:** `explore`, `dataflow`, `governance`,
118
+ `remediation`, `federate` — the latter three write operator-declared
119
+ config through the same reviewable contract (preview, version guard,
120
+ backup, audit event) established for exactly this class of write.
121
+
122
+ **On rigor, again.** As with 0.145.0's own provenance work, a dedicated
123
+ final-review pass — after every task-level review and a green test
124
+ suite — found real Blocking or Important bugs in nearly every one of
125
+ these sub-projects: a remediation item that could be marked verified from
126
+ a snapshot chronologically *older* than the incident it was supposed to
127
+ fix; a runtime-observation payload-refusal grammar that closed single-value
128
+ smuggling but missed the same payload split across array elements; a
129
+ cross-repo link's own self-consistency digest compared against the wrong
130
+ half of a redacted export, so an untampered file permanently read as
131
+ tampered; and — found only in this release's own post-completion
132
+ re-audit, prompted by checking every named acceptance criterion's text
133
+ against the actual shipped code rather than trusting a summary — one
134
+ acceptance criterion (`AC-26`, on the What-If Simulator) that had never
135
+ been checked against its own literal wording by any prior document, and
136
+ was quietly unmet until this audit closed it. Every one of these was
137
+ found, fixed, and independently re-verified — including personally
138
+ reproducing the bug and its fix live, not just re-reading a diff — before
139
+ this release.
140
+
141
+ **Disclosed, not built.** Full graph-merge across repositories (only
142
+ declared, single-edge cross-repo links ship); synthetic node/edge
143
+ insertion for the What-If Simulator (every node/edge today derives from a
144
+ real registry decision or call site — inventing one has no precedent yet);
145
+ automatic destination/schema correlation for cross-repo edges (needs
146
+ prerequisite work — schema-derived edges, fuller destination resolution —
147
+ that isn't built); an HTML-table stress-test pass for the largest graphs;
148
+ config-declared (as opposed to runtime-observed) corroboration for the
149
+ Digital Twin, folded into already-scoped backlog rather than duplicated.
150
+ None of these block the acceptance criteria this release's milestones are
151
+ gated on.
152
+
14
153
  ## 0.145.0 — Finding Provenance ships, and two audits find what the first one missed
15
154
 
16
155
  Every finding now carries a `findingProvenance` record answering "when did this