@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.
- package/CHANGELOG.md +139 -0
- package/bin/agentic-security.js +3508 -69
- package/dist/1122.index.js +702 -0
- package/dist/{301.index.js → 1301.index.js} +2 -2
- package/dist/1379.index.js +591 -0
- package/dist/{444.index.js → 1444.index.js} +2 -2
- package/dist/{660.index.js → 1660.index.js} +2 -2
- package/dist/{700.index.js → 1700.index.js} +2 -2
- package/dist/{905.index.js → 1905.index.js} +3 -3
- package/dist/{920.index.js → 1920.index.js} +3 -3
- package/dist/{238.index.js → 2238.index.js} +3 -3
- package/dist/{271.index.js → 2271.index.js} +2 -2
- package/dist/{985.index.js → 2376.index.js} +1260 -340
- package/dist/2432.index.js +793 -0
- package/dist/2659.index.js +93 -0
- package/dist/{826.index.js → 2826.index.js} +2 -2
- package/dist/{830.index.js → 2830.index.js} +2 -2
- package/dist/2923.index.js +298 -0
- package/dist/{1.index.js → 3001.index.js} +5 -5
- package/dist/{117.index.js → 3117.index.js} +3 -3
- package/dist/3180.index.js +307 -0
- package/dist/3276.index.js +117 -0
- package/dist/{415.index.js → 3415.index.js} +2 -2
- package/dist/{499.index.js → 3499.index.js} +2 -2
- package/dist/3518.index.js +450 -0
- package/dist/{526.index.js → 3526.index.js} +5 -5
- package/dist/{736.index.js → 3736.index.js} +4 -4
- package/dist/{839.index.js → 3839.index.js} +4 -4
- package/dist/{113.index.js → 4113.index.js} +5 -5
- package/dist/{265.index.js → 4265.index.js} +2 -2
- package/dist/{384.index.js → 4384.index.js} +3 -3
- package/dist/4547.index.js +268 -0
- package/dist/4863.index.js +422 -0
- package/dist/{970.index.js → 4970.index.js} +2 -2
- package/dist/5051.index.js +770 -0
- package/dist/{144.index.js → 5144.index.js} +5 -5
- package/dist/{333.index.js → 5333.index.js} +3 -3
- package/dist/5343.index.js +185 -0
- package/dist/5350.index.js +866 -0
- package/dist/5561.index.js +436 -0
- package/dist/{637.index.js → 5637.index.js} +3 -3
- package/dist/{449.index.js → 5830.index.js} +2 -2
- package/dist/6626.index.js +532 -0
- package/dist/6662.index.js +297 -0
- package/dist/{675.index.js → 6675.index.js} +5 -5
- package/dist/{730.index.js → 6730.index.js} +6 -6
- package/dist/6829.index.js +225 -0
- package/dist/6944.index.js +130 -0
- package/dist/{178.index.js → 7178.index.js} +3 -3
- package/dist/{227.index.js → 7227.index.js} +2 -2
- package/dist/7310.index.js +520 -0
- package/dist/{552.index.js → 7552.index.js} +4 -4
- package/dist/7709.index.js +78 -0
- package/dist/8218.index.js +160 -0
- package/dist/{476.index.js → 8476.index.js} +4 -4
- package/dist/{513.index.js → 8513.index.js} +5 -5
- package/dist/{520.index.js → 8520.index.js} +2 -2
- package/dist/{718.index.js → 8718.index.js} +2 -2
- package/dist/{752.index.js → 8752.index.js} +2 -2
- package/dist/8846.index.js +100 -0
- package/dist/{435.index.js → 9091.index.js} +560 -189
- package/dist/{207.index.js → 9207.index.js} +2 -2
- package/dist/{220.index.js → 9220.index.js} +2 -2
- package/dist/9390.index.js +163 -0
- package/dist/{503.index.js → 9503.index.js} +2 -2
- package/dist/{801.index.js → 9801.index.js} +2 -2
- package/dist/{824.index.js → 9824.index.js} +2 -2
- package/dist/agentic-security.mjs +16 -16
- package/dist/agentic-security.mjs.sha256 +1 -1
- package/dist/compliance-frameworks/hipaa-security-rule.json +3 -2
- package/package.json +12 -5
- package/src/dataflow/CLAUDE.md +1 -1
- package/src/dataflow/catalog.js +42 -0
- package/src/dataflow/orm-write-catalog.js +175 -0
- package/src/engine.js +92 -1
- package/src/ir/CLAUDE.md +1 -0
- package/src/ir/chrome-probe.mjs +150 -0
- package/src/ir/parser-js.js +94 -7
- package/src/lineage/CLAUDE.md +1203 -0
- package/src/lineage/DESIGN_DESTINATION_RESOLVER.md +156 -0
- package/src/lineage/DESIGN_GRAPH_BUILDER.md +938 -0
- package/src/lineage/DESIGN_HANDLING_ANALYZER.md +355 -0
- package/src/lineage/DESIGN_INTRAPROCEDURAL.md +628 -0
- package/src/lineage/DESIGN_PATH_PROVENANCE.md +3451 -0
- package/src/lineage/DESIGN_QUEUE_DETAIL.md +120 -0
- package/src/lineage/DESIGN_REGISTRIES.md +880 -0
- package/src/lineage/DESIGN_STORE_DETAIL.md +143 -0
- package/src/lineage/DESIGN_TRANSIT_PROTECTION.md +245 -0
- package/src/lineage/classification.js +56 -0
- package/src/lineage/coverage.js +658 -0
- package/src/lineage/cross-repo-link.js +107 -0
- package/src/lineage/dataflow-graph.schema.json +184 -0
- package/src/lineage/decision-story.js +206 -0
- package/src/lineage/drift-policy.js +279 -0
- package/src/lineage/driver.js +135 -0
- package/src/lineage/engine.js +992 -0
- package/src/lineage/export-briefing.js +628 -0
- package/src/lineage/export-csv.js +62 -0
- package/src/lineage/export-json.js +238 -0
- package/src/lineage/export-privacy.js +258 -0
- package/src/lineage/federation-loader.js +111 -0
- package/src/lineage/field-identity.js +78 -0
- package/src/lineage/fixtures/build-flagship-fixture.mjs +272 -0
- package/src/lineage/fixtures/flagship-graph.json +1453 -0
- package/src/lineage/flow-grade.js +221 -0
- package/src/lineage/governance-edit.js +169 -0
- package/src/lineage/graph-builder.js +1114 -0
- package/src/lineage/graph-diff.js +431 -0
- package/src/lineage/graph-snapshot.js +180 -0
- package/src/lineage/handling-analyzer.js +168 -0
- package/src/lineage/ids.js +349 -0
- package/src/lineage/impact-assessment.js +76 -0
- package/src/lineage/impact-engine.js +268 -0
- package/src/lineage/index.js +281 -0
- package/src/lineage/language-coverage-tiers.js +58 -0
- package/src/lineage/obligation-mapping.js +126 -0
- package/src/lineage/obligation-predicates.js +235 -0
- package/src/lineage/observation-adapters.js +282 -0
- package/src/lineage/observation-correlation.js +622 -0
- package/src/lineage/observation-store.js +497 -0
- package/src/lineage/path-query.js +410 -0
- package/src/lineage/path-store.js +400 -0
- package/src/lineage/protection.js +53 -0
- package/src/lineage/recipient-profile.js +192 -0
- package/src/lineage/recipient-registry.js +394 -0
- package/src/lineage/redact-graph.js +224 -0
- package/src/lineage/remediation.js +417 -0
- package/src/lineage/resolve-destination.js +91 -0
- package/src/lineage/runtime-observation.js +464 -0
- package/src/lineage/scenario-diff.js +84 -0
- package/src/lineage/scenario-engine.js +251 -0
- package/src/lineage/scenario.js +101 -0
- package/src/lineage/schema.js +167 -0
- package/src/lineage/sink-registry.js +427 -0
- package/src/lineage/source-registry.js +357 -0
- package/src/lineage/source-seeding.js +212 -0
- package/src/lineage/summaries.js +590 -0
- package/src/lineage/transform-catalog.js +397 -0
- package/src/lineage/transit-protection.js +150 -0
- package/src/lineage/validate.js +285 -0
- package/src/mcp/CLAUDE.md +7 -1
- package/src/mcp/dataflow-tools.js +160 -0
- package/src/mcp/server.js +1 -1
- package/src/mcp/tools.js +2 -1
- package/src/pipeline/scan-health.js +19 -1
- package/src/posture/CLAUDE.md +19 -0
- package/src/posture/artifact-registry.js +52 -0
- package/src/posture/auditor-walkthrough.js +76 -0
- package/src/posture/compliance-frameworks/hipaa-security-rule.json +3 -2
- package/src/posture/obligation-evidence-pack.js +202 -0
- package/src/posture/remediation-ledger.js +337 -0
- package/src/server/CLAUDE.md +47 -0
- package/src/server/graph-loader.js +141 -0
- package/src/server/http-server.js +325 -0
- package/src/server/routes.js +129 -0
- package/src/server/security.js +111 -0
- package/src/server/static-assets.js +139 -0
- package/dist/11.index.js +0 -353
- package/dist/259.index.js +0 -975
- package/dist/317.index.js +0 -300
- package/dist/609.index.js +0 -741
- 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
|