@clear-capabilities/agentic-security-scanner 0.174.0 → 0.176.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 +23 -0
- package/bin/agentic-security.js +199 -28
- package/dist/2066.index.js +850 -0
- package/dist/2199.index.js +1 -1
- package/dist/2584.index.js +3332 -0
- package/dist/2923.index.js +13 -0
- package/dist/2946.index.js +81 -0
- package/dist/3196.index.js +27 -0
- package/dist/3727.index.js +292 -0
- package/dist/4168.index.js +509 -0
- package/dist/4281.index.js +993 -0
- package/dist/4978bec8fdf5c733dc85.json +283 -0
- package/dist/5099.index.js +96 -0
- package/dist/5616.index.js +1471 -0
- package/dist/5620.index.js +2370 -0
- package/dist/5817.index.js +714 -0
- package/dist/6333.index.js +98 -0
- package/dist/6655.index.js +3221 -0
- package/dist/7838.index.js +446 -974
- package/dist/818.index.js +4 -3
- package/dist/83.index.js +159 -0
- package/dist/8551.index.js +82 -0
- package/dist/8633.index.js +93 -0
- package/dist/8714.index.js +76 -76
- package/dist/8825.index.js +84 -0
- package/dist/932.index.js +186 -0
- package/dist/9560.index.js +358 -19
- package/dist/9800.index.js +6 -1
- package/dist/agentic-security.mjs +10 -10
- package/dist/agentic-security.mjs.sha256 +1 -1
- package/dist/df1e8683e7eda7b2b79c.js +29 -0
- package/package.json +7 -6
- package/src/artifact/CLAUDE.md +4 -0
- package/src/artifact/artifact-evidence.js +63 -0
- package/src/artifact/cosign.js +61 -0
- package/src/artifact/engine-source.js +72 -0
- package/src/artifact/oci-layout.js +47 -0
- package/src/artifact/registry.js +213 -0
- package/src/capabilities/tool-registry.js +2 -0
- package/src/language/haskell-security-rules.js +1 -1
- package/src/language/nixos-hardening.js +37 -0
- package/src/lineage/CLAUDE.md +4 -0
- package/src/lineage/identity-token.js +11 -0
- package/src/lineage/observation-adapters.js +13 -0
- package/src/lineage/runtime-edge-states.js +139 -0
- package/src/lineage/runtime-explorer-view.js +82 -0
- package/src/lineage/runtime-observation.js +11 -0
- package/src/mcp/CLAUDE.md +3 -1
- package/src/mcp/proof-tools.js +132 -0
- package/src/mcp/server.js +1 -1
- package/src/mcp/tools.js +3 -1
- package/src/posture/CLAUDE.md +23 -0
- package/src/posture/artifact-registry.js +4 -0
- package/src/posture/dnr/attack-facts.js +31 -0
- package/src/posture/dnr/cli.js +138 -0
- package/src/posture/dnr/detection-ir.js +123 -0
- package/src/posture/dnr/exposure-window.js +134 -0
- package/src/posture/dnr/hunt.js +84 -0
- package/src/posture/dnr/log-reader.js +189 -0
- package/src/posture/dnr/matchers.js +90 -0
- package/src/posture/dnr/outputs.js +262 -0
- package/src/posture/dnr/payload-classes.js +120 -0
- package/src/posture/dnr/redact.js +25 -0
- package/src/posture/dnr/store.js +57 -0
- package/src/posture/dnr/validate.js +64 -0
- package/src/posture/dnr/view.js +51 -0
- package/src/posture/evaluation/lab/arm-ollama.js +88 -0
- package/src/posture/evaluation/lab/arms.js +142 -0
- package/src/posture/evaluation/lab/cli.js +135 -0
- package/src/posture/evaluation/lab/dataset.js +139 -0
- package/src/posture/evaluation/lab/materialize.js +44 -0
- package/src/posture/evaluation/lab/neutralize.js +144 -0
- package/src/posture/evaluation/lab/report.js +176 -0
- package/src/posture/evaluation/lab/run.js +225 -0
- package/src/posture/evaluation/lab/score.js +135 -0
- package/src/posture/evaluation/lab/scoreboard.js +48 -0
- package/src/posture/evaluation/lab/stats.js +41 -0
- package/src/posture/evaluation/lab/store.js +53 -0
- package/src/posture/fleet/cli.js +248 -63
- package/src/posture/fleet/discover-edges.js +135 -0
- package/src/posture/fleet/enterprise-graph.js +148 -0
- package/src/posture/fleet/fleet-graph.js +9 -4
- package/src/posture/fleet/fleet-manifest.js +50 -5
- package/src/posture/fleet/job-runner.js +153 -0
- package/src/posture/fleet/job-store.js +136 -0
- package/src/posture/fleet/org-health.js +56 -0
- package/src/posture/fleet/scan-cache.js +112 -0
- package/src/posture/fleet/scan-child.js +29 -0
- package/src/posture/proof-fabric/cli.js +34 -6
- package/src/posture/proof-fabric/container.js +57 -0
- package/src/posture/proof-fabric/fix-proof.js +2 -1
- package/src/posture/proof-fabric/generate-python.js +129 -0
- package/src/posture/proof-fabric/generate.js +213 -0
- package/src/posture/proof-fabric/reproducer.js +3 -0
- package/src/posture/proof-fabric/runner.js +20 -11
- package/src/posture/proof-fabric/siblings.js +77 -0
- package/src/posture/routing/policy-router.js +103 -0
- package/src/posture/rule-compiler/cli.js +64 -6
- package/src/posture/rule-compiler/corpus.js +10 -2
- package/src/posture/rule-compiler/mutation.js +72 -1
- package/src/posture/rule-compiler/promotion.js +21 -5
- package/src/posture/rule-compiler/proposal.js +132 -0
- package/src/posture/rule-compiler/store.js +16 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@clear-capabilities/agentic-security-scanner",
|
|
3
|
+
"version": "0.176.0",
|
|
4
|
+
"description": "Scanner engine for the agentic-security Claude Code plugin: SAST, SCA with reachability and CISA KEV, secrets, IaC, Haskell and Nix/NixOS, prompt-injection, MCP/agent-tool audit, authZ analysis, SBOM, compliance attestation, and more.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"agentic-security": "dist/agentic-security.mjs",
|
|
9
|
+
"agentic-security-scanner": "dist/agentic-security.mjs",
|
|
10
|
+
"as": "dist/agentic-security.mjs",
|
|
11
|
+
"agentic-security-mcp": "bin/agentic-security-mcp.js",
|
|
12
|
+
"agentic-security-lsp": "bin/agentic-security-lsp.js",
|
|
13
|
+
"agentic-security-rule": "bin/agentic-security-rule.js",
|
|
14
|
+
"agentic-security-diff": "bin/agentic-security-diff.js",
|
|
15
|
+
"agentic-security-consistency": "bin/agentic-security-consistency.js",
|
|
16
|
+
"agentic-security-audit": "bin/agentic-security-audit.js"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": "./src/index.js",
|
|
20
|
+
"./engine": "./src/engine.js",
|
|
21
|
+
"./sast": "./src/sast/index.js",
|
|
22
|
+
"./sca": "./src/sca/index.js",
|
|
23
|
+
"./secrets": "./src/secrets/index.js",
|
|
24
|
+
"./report": "./src/report/index.js",
|
|
25
|
+
"./posture/fix-style-mirror.js": "./src/posture/fix-style-mirror.js"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"src/",
|
|
29
|
+
"bin/",
|
|
30
|
+
"dist/",
|
|
31
|
+
"vendor/",
|
|
32
|
+
"CHANGELOG.md",
|
|
33
|
+
"!**/.agentic-security",
|
|
34
|
+
"!**/.agentic-security/**"
|
|
35
|
+
],
|
|
36
|
+
"imports": {
|
|
37
|
+
"#java-parser": "./vendor/java-parser/entry.mjs"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=24.0.0"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@babel/core": "^8.0.5",
|
|
44
|
+
"@babel/preset-react": "^8.0.1",
|
|
45
|
+
"@babel/preset-typescript": "^8.0.1",
|
|
46
|
+
"js-yaml": "^5.5.0",
|
|
47
|
+
"safe-regex": "^2.1.1"
|
|
48
|
+
},
|
|
49
|
+
"optionalDependencies": {
|
|
50
|
+
"tree-sitter-wasms": "0.1.13",
|
|
51
|
+
"web-tree-sitter": "0.20.8",
|
|
52
|
+
"z3-solver": "^5.3.1"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^26.6.5",
|
|
56
|
+
"@vercel/ncc": "^0.45.0",
|
|
57
|
+
"java-parser": "^3.0.1"
|
|
58
|
+
},
|
|
59
|
+
"overrides": {
|
|
60
|
+
"lodash": "^4.18.1",
|
|
61
|
+
"lodash-es": "^4.18.1"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "node scripts/vendor-java-parser.mjs && ncc build bin/agentic-security.js -o dist --minify -e web-tree-sitter -e tree-sitter-wasms && rm -rf dist/compliance-frameworks && mkdir -p dist/compliance-frameworks && cp src/posture/compliance-frameworks/*.json dist/compliance-frameworks/ && node scripts/copy-frontend.mjs && mv dist/index.js dist/agentic-security.mjs && rm -f dist/package.json && chmod +x dist/agentic-security.mjs && node -e \"const fs=require('fs');const p='dist/agentic-security.mjs';const c=fs.readFileSync(p,'utf8');if(!c.startsWith('#!'))fs.writeFileSync(p,'#!/usr/bin/env node\\n'+c);\" && node -e \"const fs=require('fs');const c=require('crypto');const h=c.createHash('sha256').update(fs.readFileSync('dist/agentic-security.mjs')).digest('hex');fs.writeFileSync('dist/agentic-security.mjs.sha256',h+' agentic-security.mjs\\n');\"",
|
|
65
|
+
"prepare": "node scripts/prepare.mjs",
|
|
66
|
+
"prepublishOnly": "npm run build && node ../scripts/sync-scanner-changelog.mjs && node ../scripts/release-check.mjs",
|
|
67
|
+
"test": "node ../scripts/run-unit-tests.mjs",
|
|
68
|
+
"test:extras": "AGENTIC_SECURITY_CPP_DATAFLOW=1 node --test test/cpp-dataflow.test.js && node --experimental-test-module-mocks --test test/fault-injection.test.js && node --experimental-test-module-mocks --test test/detector-fault-injection.test.js && node --experimental-test-module-mocks --test test/detector-fault-injection-k8s-admission.test.js && node --experimental-test-module-mocks --test test/lineage-fault-injection.test.js && npm run test:python",
|
|
69
|
+
"loop": "node ../scripts/loop-engineering/run.mjs",
|
|
70
|
+
"test:engineering-excellence": "node --test --test-concurrency=1 test/engineering-excellence/e0-01-inventory.test.js test/engineering-excellence/e0-02-baseline.test.js test/engineering-excellence/e0-03-contract.test.js test/engineering-excellence/e0-04-task-manifest.test.js test/engineering-excellence/e0-05-status-runner.test.js test/engineering-excellence/e0-06-backlog.test.js test/engineering-excellence/e1-01-dataset-provenance.test.js test/engineering-excellence/e1-02-splits.test.js test/engineering-excellence/e1-03-scoring.test.js test/engineering-excellence/e1-04-baseline-run.test.js test/engineering-excellence/e1-05-forensics.test.js test/engineering-excellence/e1-05-baseline-forensics.test.js test/engineering-excellence/e1-06-adversarial-controls.test.js test/engineering-excellence/e1-07-realcode-policy.test.js test/engineering-excellence/e1-07-baseline-gate.test.js test/engineering-excellence/e2-06-cross-language.test.js test/engineering-excellence/e2-08-suppression-attribution.test.js test/engineering-excellence/e2-09-semantic-gates.test.js test/engineering-excellence/e4-06-dci-real-app.test.js test/engineering-excellence/e6-08-perf-budget.test.js test/engineering-excellence/e8-02-e2e-demo.test.js test/engineering-excellence/e8-03-regression-report.test.js test/engineering-excellence/e8-04-docs.test.js test/engineering-excellence/e8-05-handoff.test.js test/engineering-excellence/e8-06-release-decision.test.js test/engineering-excellence/u01-ruby-path-resolver.test.js test/engineering-excellence/e1-08-scorecard.test.js test/engineering-excellence/e3-01-patch-routes.test.js test/engineering-excellence/e3-02-fix-verification-record.test.js test/engineering-excellence/e3-03-central-verifier.test.js test/engineering-excellence/e3-04-exploit-replay.test.js test/engineering-excellence/e3-05-functional-preservation.test.js test/engineering-excellence/e3-06-patch-policy.test.js test/engineering-excellence/e3-07-rollback-crash-safety.test.js test/engineering-excellence/e3-08-fix-benchmark.test.js test/engineering-excellence/e2-01-semantic-graph.test.js test/engineering-excellence/e2-02-cross-file-resolution.test.js test/engineering-excellence/e2-03-heap-fields-aliases.test.js test/engineering-excellence/e2-04-async-callbacks-frameworks.test.js test/engineering-excellence/e2-05-interprocedural-contexts.test.js test/engineering-excellence/e2-07-service-edges.test.js test/engineering-excellence/e4-01-dci-audit.test.js test/engineering-excellence/e4-02-invariants.test.js test/engineering-excellence/e4-03-cross-route.test.js test/engineering-excellence/e4-04-counterexample.test.js test/engineering-excellence/e4-05-llm-safeguards.test.js test/engineering-excellence/e4-07-dci-findings.test.js test/engineering-excellence/e6-01-telemetry.test.js test/engineering-excellence/e5-01-runtime-audit.test.js test/engineering-excellence/e5-02-build-identity.test.js test/engineering-excellence/e5-03-privacy-ingest.test.js test/engineering-excellence/e5-04-graph-reconciliation.test.js test/engineering-excellence/e5-05-exploitability-evidence.test.js test/engineering-excellence/e5-06-service-chain-graph.test.js test/engineering-excellence/e5-07-runtime-explanation.test.js test/engineering-excellence/e6-05-supervised-analyzers.test.js test/engineering-excellence/e6-06-determinism.test.js test/engineering-excellence/e6-07-adversarial-boundaries.test.js test/engineering-excellence/e6-03-shared-preprocessing.test.js test/engineering-excellence/e6-04-analysis-cache.test.js test/engineering-excellence/e7-01-evidence-contracts.test.js test/engineering-excellence/e7-03-release-package.test.js test/engineering-excellence/e7-04-compliance-truth.test.js test/engineering-excellence/e7-05-waivers-tenancy.test.js test/engineering-excellence/e7-02-provenance-coverage.test.js test/engineering-excellence/e7-06-fleet-exposure.test.js test/engineering-excellence/e7-07-perspectives.test.js test/engineering-excellence/e7-08-assurance-e2e.test.js test/engineering-excellence/e6-02-completion.test.js",
|
|
71
|
+
"ee:status": "node ../scripts/engineering-excellence/status.mjs --once",
|
|
72
|
+
"ee:init": "node ../scripts/engineering-excellence/init.mjs",
|
|
73
|
+
"ee:inventory": "node ../scripts/engineering-excellence/inventory.mjs",
|
|
74
|
+
"ee:contract": "node ../scripts/engineering-excellence/contract.mjs",
|
|
75
|
+
"ee:backlog": "node ../scripts/engineering-excellence/backlog.mjs",
|
|
76
|
+
"ee:dataset-audit": "node ../scripts/engineering-excellence/dataset-audit.mjs",
|
|
77
|
+
"ee:independent-baseline": "node ../scripts/engineering-excellence/independent-baseline.mjs",
|
|
78
|
+
"ee:dci-audit": "node ../scripts/engineering-excellence/dci-audit.mjs",
|
|
79
|
+
"ee:runtime-audit": "node ../scripts/engineering-excellence/runtime-audit.mjs",
|
|
80
|
+
"ee:ir-matrix": "node ../scripts/engineering-excellence/ir-matrix.mjs",
|
|
81
|
+
"test:loop-real-prd": "node --test ../scripts/loop-engineering/test/loop-real-prd.test.js",
|
|
82
|
+
"test:loop": "node --test --test-concurrency=1 ../scripts/loop-engineering/test/loop-manifest.test.js ../scripts/loop-engineering/test/loop-watchdog.test.js ../scripts/loop-engineering/test/loop-background.test.js ../scripts/loop-engineering/test/loop-dashboard.test.js ../scripts/loop-engineering/test/loop-evidence.test.js ../scripts/loop-engineering/test/loop-recovery.test.js ../scripts/loop-engineering/test/loop-remote.test.js ../scripts/loop-engineering/test/loop-runbook.test.js ../scripts/loop-engineering/test/loop-assurance-profile.test.js ../scripts/loop-engineering/test/loop-assurance-runtime.test.js ../scripts/loop-engineering/test/loop-bounds.test.js ../scripts/loop-engineering/test/loop-spend.test.js ../scripts/loop-engineering/test/loop-ci-attest.test.js",
|
|
83
|
+
"test:python": "node ../scripts/run-python-tests.mjs",
|
|
84
|
+
"test:smoke": "node --test test/smoke.test.js test/demo-app.test.js",
|
|
85
|
+
"test:ollama-e2e": "AGENTIC_SECURITY_OLLAMA_E2E=1 node --test test/ollama-e2e.test.js",
|
|
86
|
+
"test:glob": "node --test test/glob-compat.test.js",
|
|
87
|
+
"test:sast": "node --test test/cpp-hardcoded-secret.test.js test/sibling-guard.test.js test/comment-blindness.test.js test/crypto-specialist.test.js test/llm.test.js test/llm-cost-advisor.test.js test/llm-owasp.test.js test/logic.test.js test/authz.test.js test/model-load.test.js test/prompt-template.test.js test/business-logic.test.js test/python-sinks.test.js test/phase1-detectors.test.js test/phase2-detectors.test.js test/phase3-v3.test.js test/phase7-extensions.test.js test/phase8-extensions.test.js test/new-cwe-detectors.test.js test/file-upload.test.js test/llmsecops-detectors.test.js test/db-taint.test.js test/dart-swift.test.js test/zip-slip-containment-guard.test.js test/zip-slip-go.test.js test/redos-anchoring.test.js test/path-guard-validator-call.test.js test/redos-nfa.test.js test/weak-randomness.test.js test/csharp-pipeline.test.js test/csharp-cross-file.test.js test/post-quantum-crypto.test.js test/web3-advanced.test.js test/cloud-iam-k8s.test.js test/crypto-protocol.test.js test/ml-supply-chain.test.js test/mcp-audit-scan.test.js test/wrong-context-sanitizer.test.js test/sanitizer-context.test.js test/frontend-hygiene.test.js test/csv-injection.test.js test/stored-taint.test.js test/tree-sitter-sinks.test.js test/kotlin-structural.test.js test/ruby-php-structural.test.js test/java-csharp-structural.test.js test/java-structural-cross-file.test.js test/guard-recognition.test.js test/guard-window-identifier-correlation.test.js test/js-python-framework-structural.test.js test/go-structural.test.js test/secret-concat.test.js test/secret-redaction.test.js test/xss-reflected-multilang.test.js test/code-injection-multilang.test.js test/xxe-multilang.test.js test/xpath-injection-multilang.test.js test/gapfill-batch13.test.js test/agent-untrusted-flow.test.js test/api-authz.test.js test/event-entrypoint.test.js test/iac-terraform.test.js test/cross-service.test.js test/rbac-consistency.test.js test/adversarial-robustness.test.js test/secret-entropy.test.js test/comment-strip.test.js test/juliet-path-filter-gate.test.js test/java-bench-shape-opt-in.test.js test/java-ast-folding.test.js test/java-bench-extras.test.js test/reachability-missing-callgraph-data.test.js test/rate-limit.test.js test/auth-signals.test.js test/convention-deviation.test.js test/resource-exhaustion.test.js test/resource-exhaustion-realworld.test.js test/redirect-toctou.test.js test/redirect-toctou-realworld.test.js test/codegen-sink.test.js test/ownership-authz.test.js test/ownership-authz-realworld.test.js test/t21-precision-audit.test.js test/secrets-coverage.test.js test/prompt-injection-payloads.test.js test/iac-cloud-templates.test.js test/ruby-path-join.test.js test/sast/manifest-line-tracking.test.js test/rust-sast.test.js test/java-deserialization-precision.test.js test/pipeline-env-secret.test.js test/mark-used-vuln-functions.test.js",
|
|
88
|
+
"test:posture": "node --test test/threat-model.test.js test/git-hardening.test.js test/privacy-framework.test.js test/material-change.test.js test/drift.test.js test/scorecard.test.js test/accuracy-scorecard.test.js test/scorecard-gate.test.js test/predeploy-gate.test.js test/release-check.test.js test/pre-push-gate.test.js test/dependency-currency.test.js test/package-contents-check.test.js test/gate-verdict-cache.test.js test/run-unit-tests.test.js test/temp-leak-guard.test.js test/release-workflow.test.js test/release-workflow-structure.test.js test/independent-population.test.js test/why-missed.test.js test/independent-scoring.test.js test/evidence-bundle.test.js test/obligation-evidence-pack.test.js test/policy-bundle.test.js test/discovery-memory.test.js test/mttr.test.js test/license-policy.test.js test/aibom.test.js test/sbom.test.js test/api-inventory.test.js test/iam-policy.test.js test/container.test.js test/container-runtime.test.js test/image-packages.test.js test/kev.test.js test/dep-confusion.test.js test/sca-deprecated.test.js test/sca-batch.test.js test/composite-risk.test.js test/epss-enrich.test.js test/sca-coverage.test.js test/gradle-deps.test.js test/sca-route-reachable.test.js test/sca-policy.test.js test/sca-verdict.test.js test/install-script.test.js test/sca-linked-findings.test.js test/packs.test.js test/flow-narration.test.js test/regression-test-gen.test.js test/deterministic-fix.test.js test/falsification.test.js test/verification-separation.test.js test/logic-claims.test.js test/attestation.test.js test/verify-attestation-cli.test.js test/comparison.test.js test/determinism-cross-machine.test.js test/fix-honesty-gate.test.js test/model-routing.test.js test/root-cause-sweep.test.js test/entrypoint-inventory.test.js test/relevance.test.js test/untrusted.test.js test/agent-hardening.test.js test/rule-synthesis.test.js test/policy-gate.test.js test/agents-memory.test.js test/cve-lookup.test.js test/cve-alert-daemon.test.js test/fix-verify-loop.test.js test/fix-verify-tests.test.js test/fix-acceptance.test.js test/exploitability-probability.test.js test/history-scan.test.js test/viral-features.test.js test/viral-v074.test.js test/state-dir.test.js test/ignore-pragma.test.js test/license-graph.test.js test/secret-live-check.test.js test/attack-taxonomy.test.js test/triage-memory.test.js test/pr-augment.test.js test/chat-batch2.test.js test/chat-batch3.test.js test/chat-batch4.test.js test/chat-batch5.test.js test/chat-batch6.test.js test/risk-scenario-disclosure.test.js test/egress-policy.test.js test/egress-policy-completeness.test.js test/egress-policy-integration.test.js test/router.test.js test/legacy-alias-redirect.test.js test/cache-economics.test.js test/coverage-report.test.js test/corpus-status.test.js test/provenance.test.js test/secret-history.test.js test/execution-proof.test.js test/fix-metrics.test.js test/corpus-enroll.test.js test/prove-findings.test.js test/corpus-match.test.js test/corpus-provenance.test.js test/learning-quorum.test.js test/llm-cache-integrity.test.js test/proof-artifact.test.js test/providers.test.js test/fleet.test.js test/autopilot.test.js test/autopilot-cli.test.js test/verifier-independence.test.js test/integrity-legacy-key.test.js test/suppression-visibility.test.js test/cost-ceiling.test.js test/local-endpoint.test.js test/ollama-provider.test.js test/ollama-capabilities.test.js test/ollama-offline-egress.test.js test/ollama-fix-proposal.test.js test/ollama-explain-proposal.test.js test/ollama-poc-proposal.test.js test/ollama-model-probe.test.js test/ollama-agent-tools.test.js test/ollama-agent-loop.test.js test/ollama-e2e.test.js test/ollama-oom-feedback.test.js test/ollama-doc-drift.test.js test/model-trust.test.js test/vuln-archaeology.test.js test/scan-checkpoint.test.js test/llm-redact.test.js test/world-class-batch2.test.js test/world-class-modules.test.js test/privacy-ir-adapter.test.js test/privacy-taxonomy.test.js test/privacy-sink-policy.test.js test/privacy-governance.test.js test/privacy-inventory.test.js test/integration-end-to-end.test.js test/streak-cli-wiring.test.js test/stack-playbook.test.js test/machine-output-flag.test.js test/stdout-flush.test.js test/format-determinism.test.js test/only-flag-channels.test.js test/confidence.test.js test/security-trend.test.js test/calibration-drift.test.js test/validator-metrics.test.js test/clustering-ir-taint-line.test.js test/concurrency-cwe.test.js test/compliance-mapping-liveness.test.js test/module-artifact-liveness.test.js test/supply-chain-provenance-completeness.test.js test/compliance-severity-threshold.test.js test/compliance-severity-policy.test.js test/compliance-evidence-binding.test.js test/compliance-evidence-signing.test.js test/compliance-file-contains.test.js test/label-isolation.test.js test/evidence-grade-wording.test.js test/llm-model-status.test.js test/egress-policy-constraints.test.js test/egress-redact.test.js test/egress-audit.test.js test/egress-approved-providers.test.js test/family-registry.test.js test/coverage-strength.test.js test/framework-provenance.test.js test/framework-provenance-controlrefs.test.js test/third-party-verification.test.js test/proof-coverage.test.js test/calibration-holdout.test.js test/independent-population-gate.test.js test/catalog-freshness.test.js test/incremental-parity.test.js test/surface-smoke.test.js test/fix-coverage.test.js test/raw-source-carveout.test.js test/mlbom-conformance.test.js test/deploy-gate-replay.test.js test/sbom-conformance.test.js test/unscored-claims.test.js test/mcp-rug-pull.test.js test/agent-boundary-taint.test.js test/confinement-adversarial.test.js test/comment-strip-cost.test.js test/reachability-claim.test.js test/entrypoint-breadth.test.js test/dep-file-admission.test.js test/custom-rules-freshness.test.js test/posture/provenance-schema.test.js test/posture/provenance-cache.test.js test/helpers/build-git-fixture.test.js test/posture/provenance-git-evidence.test.js test/posture/provenance-dag-walk.test.js test/posture/provenance-confidence.test.js test/posture/provenance-predicate-replay.test.js test/posture/provenance-origin-resolver.test.js test/posture/provenance-ai-authorship.test.js test/posture/provenance-branch-entry.test.js test/posture/provenance-evidence-attribution.test.js test/posture/provenance-lifecycle.test.js test/posture/provenance-missing-control-resolver.test.js test/posture/provenance-missing-control-wiring.test.js test/posture/provenance-coordinator.test.js test/posture/provenance-sca-origin.test.js test/posture/provenance-transitive-sca.test.js test/posture/provenance-coordinator-sca.test.js test/posture/provenance-providers.test.js test/posture/provenance-evidence-bundle.test.js test/posture/provenance-repo-lineage.test.js test/posture/provenance-secrets-logic.test.js test/cli/provenance-flags.test.js test/cli/attest-provenance.test.js test/cli/attest-obligations.test.js test/cli/models.test.js test/cli/setup-llm.test.js test/cli/fix-retry.test.js test/cli/compliance-walkthrough-lineage.test.js test/cli/dataflow-export-privacy.test.js test/cli/dataflow-export-briefing.test.js test/cli/lineage-snapshot-persist.test.js test/cli/dataflow-diff.test.js test/cli/dataflow-watch.test.js test/cli/dataflow-recipients.test.js test/cli/dataflow-coverage.test.js test/security/provenance-safety.test.js test/security/provenance-injection.test.js test/posture/remediation-ledger.test.js test/posture/assurance-baseline.test.js test/posture/assurance-contracts.test.js test/posture/assurance-config.test.js test/evidence-issuer.test.js test/load-factor.test.js test/fleet/job-store.test.js test/fleet/enterprise-graph.test.js test/fleet/discover-edges.test.js test/fleet/job-runner.test.js test/fleet/fleet-org-cli.test.js test/eval-lab/dataset-neutralize.test.js test/eval-lab/arms-score-stats.test.js test/eval-lab/run-report.test.js test/eval-lab/router.test.js test/eval-lab/arm-ollama.test.js test/cli/eval-lab-cli.test.js test/dnr/ir-and-outputs.test.js test/dnr/logs-and-hunt.test.js test/dnr/window-store-view.test.js test/cli/dnr-cli.test.js test/proof-fabric/core.test.js test/proof-fabric/container.test.js test/proof-fabric/generate.test.js test/proof-fabric/siblings.test.js test/proof-fabric/generate-python.test.js test/mcp-proof.test.js test/proof-fabric/fix-store-runner.test.js test/proof-fabric/fixtures.test.js test/cli/proof-fabric-cli.test.js test/rule-compiler/core.test.js test/rule-compiler/synthesis.test.js test/cli/rule-compiler-cli.test.js test/fleet/fleet-graph.test.js test/fleet/fleet-manifest.test.js test/fleet/fleet-cli.test.js test/artifact/safe-tar.test.js test/artifact/image-archive.test.js test/artifact/filesystem.test.js test/artifact/layer-secrets.test.js test/artifact/inventory.test.js test/artifact/vuln-correlate.test.js test/artifact/signature.test.js test/artifact/provenance-graph.test.js test/artifact/mismatch.test.js test/artifact/vex.test.js test/artifact/registry.test.js test/artifact/sources-cosign-evidence.test.js test/cli/artifact-sources-cli.test.js test/cli/artifact-provenance-cli.test.js",
|
|
89
|
+
"test:dataflow": "node --test test/privacy-catalog.test.js test/privacy-deep-walker.test.js test/privacy-deep-e2e.test.js test/container-taint.test.js test/stored-taint-families.test.js test/py-annotation-sources.test.js test/fn-reach.test.js test/deep-taint.test.js test/calibration.test.js test/holdout-eval.test.js test/cross-lang-meta.test.js test/cross-lang-queues.test.js test/phase5-xlang.test.js test/phase5-coverage.test.js test/phase6-taint.test.js test/llm-validator-consistency.test.js test/llm-validator-default-on.test.js test/llm-validator-preset.test.js test/parser-py-cst.test.js test/chrome-probe.test.js test/parser-cs-kt.test.js test/parser-cs-annotations.test.js test/parser-cs-control-flow.test.js test/parser-kt-control-flow.test.js test/parser-js-annotations.test.js test/parser-java-annotations.test.js test/parser-java-control-flow.test.js test/parser-java-calls.test.js test/parser-go.test.js test/parser-rust.test.js test/rust-taint-flow.test.js test/parser-php-rb.test.js test/parser-php-control-flow.test.js test/interproc-k2.test.js test/proven-clean.test.js test/backward-default.test.js test/incremental-cache.test.js test/string-regex-lattice.test.js test/closure-capture.test.js test/points-to.test.js test/type-stubs.test.js test/soft-taint.test.js test/ifds.test.js test/symbolic-exec-proof.test.js test/ifds-summary-edges.test.js test/stub-aware-filter.test.js test/cross-repo.test.js test/proof-gate.test.js test/layer-recall.test.js test/java-taint-flow.test.js test/kt-taint-flow.test.js test/sanitizer-typed-flow.test.js test/sanitizer-gate-unit.test.js test/proof-safe.test.js test/collection-taint.test.js test/kcfa-context.test.js test/kcfa-callstring.test.js test/flow-parity.test.js test/callgraph-resolve.test.js test/import-reachability.test.js test/ir-stats.test.js test/parser-cpp.test.js test/parser-js-decorators.test.js test/parser-js-if-else-cfg.test.js test/cpp-integration.test.js test/engine-reconnect.test.js test/phase2-scoping.test.js test/engine-recall.test.js test/catalog-annotation-source.test.js test/catalog-cs-p1.test.js test/catalog-expanded.test.js test/builtin-summaries.test.js test/interproc-mutation-crash.test.js test/mutated-param-taint.test.js test/return-sink-check.test.js test/higher-order-inline-callback.test.js test/interproc-findings-discard.test.js test/runscan-deep-option.test.js test/summary-cache-convergence.test.js test/parser-rb-calls.test.js test/parser-rb-module-level.test.js test/balanced-call.test.js test/destructuring-taint.test.js test/computed-member-taint.test.js test/string-interpolation-taint.test.js test/dataflow-deadcode-severity.test.js test/catalog-dotted-callee-lookup.test.js test/builtin-summary-family-blind-kill.test.js test/deep-mode-annotator-pipeline.test.js test/receiver-type-and-nested-calls.test.js test/member-write-and-loop-taint.test.js test/parser-py-module-level.test.js test/parser-php-module-level.test.js test/r14b-module-level-e2e.test.js test/annotation-taint-engine.test.js test/interproc-nested-call-taint.test.js test/catalog-xpath-injection.test.js test/catalog-ldap-injection.test.js test/catalog-xxe.test.js test/catalog-response-splitting.test.js test/catalog-code-injection.test.js test/parser-rb-control-flow.test.js test/catalog-ruby-p1.test.js test/callee-receiver-taint.test.js test/catalog-command-injection-p4.test.js test/catalog-xss-p4.test.js test/catalog-path-ssrf-p3.test.js test/catalog-ai-model-provider-precision.test.js test/catalog-orm-write.test.js test/dataflow/provenance-pipeline-integration.test.js test/dataflow-progress.test.js test/scan-progress.test.js test/sard-leakage-pipeline.test.js test/sard-split-scoring.test.js test/sard-llm-isolation.test.js test/sard-mutation-adversarial.test.js test/sard-baseline-adaptive-tolerance.test.js test/sard-independent-holdout.test.js test/sard-flow-aware-scoring.test.js test/sard-macro-score-support-floor.test.js test/sard-php-split.test.js test/parser-java-nary-concat.test.js test/sard-naive-baseline.test.js test/field-taint-cross-method.test.js test/field-taint-engine-unit.test.js test/coercion-sanitizer-kill.test.js test/constant-propagation-path-sensitivity.test.js test/parser-java-assignments.test.js test/catalog-java-sard.test.js test/parser-cs-juliet-shapes.test.js test/catalog-cs-sard-p2.test.js test/sard-cwe-key-merge.test.js test/parser-php-backtick.test.js test/parser-php-include.test.js test/php-include-merge.test.js test/parser-php-array-field-taint.test.js test/parser-php-cond-assign.test.js test/parser-rust-redos.test.js test/multi-sink-taint-chain.test.js test/static-field-cross-class-call-string.test.js test/regex-guard-narrowing.test.js test/object-instance-field-taint.test.js test/param-type-inference.test.js test/smt-path-feasibility.test.js test/cross-service-taint.test.js test/dataflow-expr-taint-scaling.test.js test/evaluation/guard-dominance.test.js test/evaluation/engine-mechanisms.test.js test/rx-exec-receiver.test.js",
|
|
90
|
+
"test:mcp": "node --test test/mcp.test.js test/mcp-apply-fix-multifile.test.js test/mcp-protocol-smoke.test.js test/mcp-audit.test.js test/audit-cli.test.js test/mcp-scratchpad.test.js test/mcp-offload.test.js test/sca-upgrade.test.js test/lsp-server.test.js test/mcp-dataflow-tools.test.js test/cli/governance-propose-edit.test.js test/cli/remediation-open-update.test.js test/cli/remediation-verify-reopen.test.js test/cli/dataflow-observations.test.js test/cli/federate-declare-list.test.js test/capabilities/tools.test.js",
|
|
91
|
+
"test:report": "node --test test/report-scan-invariants.test.js test/junit.test.js test/ci.test.js test/poc-generator.test.js test/verifier.test.js test/verifier-target.test.js test/annotator-errors.test.js test/scan-health.test.js test/finding-schema.test.js test/pipeline/finding-schema-provenance.test.js test/evidence-provenance.test.js test/report/provenance-output.test.js test/report/provenance-format-parity.test.js test/legacy-compat.test.js test/annotator-runner.test.js test/detector-runner.test.js test/detector-errors.test.js test/analyzer-supervisor.test.js test/cascade-worker-pool.test.js test/cascade-pool-wiring.test.js test/coverage-ledger.test.js test/coverage-ledger-completeness.test.js test/assurance-mode.test.js test/artifact-registry.test.js test/artifact-registry-completeness.test.js test/retention-policy.test.js test/state-lifecycle-report.test.js test/legal-hold.test.js test/production-feedback.test.js test/calibration-feedback.test.js test/encryption-provider.test.js test/grader-calibration.test.js test/pr-delta-gate.test.js test/vex.test.js test/report-render.test.js test/oscal-conformance.test.js test/cli-fix-apply.test.js test/apply-fix-service.test.js test/high-impact-approval-gate.test.js test/approver-registry.test.js test/suppression-exceptions.test.js test/fix-history.test.js test/producer-registry.test.js test/producer-collector.test.js test/enrichment-completion.test.js",
|
|
92
|
+
"test:lineage": "node --test test/lineage/schema.test.js test/lineage/ids.test.js test/lineage/protection.test.js test/lineage/classification.test.js test/lineage/validate.test.js test/lineage/json-schema-parity.test.js test/lineage/flagship-fixture.test.js test/lineage/flagship-fixture-semantics.test.js test/lineage/field-identity.test.js test/lineage/engine-expr-resolver.test.js test/lineage/engine-walker.test.js test/lineage/engine-integration.test.js test/lineage/engine-receiver-identity.test.js test/lineage/summaries.test.js test/lineage/driver.test.js test/lineage/engine-provenance.test.js test/lineage/engine-provenance-interprocedural.test.js test/lineage/path-store.test.js test/lineage/path-query.test.js test/lineage/flow-grade.test.js test/lineage/source-registry.test.js test/lineage/sink-registry.test.js test/lineage/transform-catalog.test.js test/lineage/handling-analyzer.test.js test/lineage/registry-real-code.test.js test/lineage/source-seeding.test.js test/lineage/graph-builder.test.js test/lineage/coverage.test.js test/lineage/resolve-destination.test.js test/lineage/queue-detail.test.js test/lineage/index.test.js test/lineage/obligation-mapping.test.js test/lineage/obligation-predicates.test.js test/lineage/obligation-predicates-walkthrough.test.js test/lineage/transit-protection.test.js test/lineage/at-rest-protection.test.js test/lineage/protection-summary.test.js test/lineage/ac01-multi-sink.test.js test/lineage/policy-verdict.test.js test/lineage/governance-refs.test.js test/lineage/export-privacy.test.js test/lineage/export-json.test.js test/lineage/export-csv.test.js test/lineage/decision-story.test.js test/lineage/export-briefing.test.js test/lineage/graph-snapshot.test.js test/lineage/graph-diff.test.js test/lineage/drift-policy.test.js test/lineage/recipient-profile.test.js test/lineage/recipient-registry.test.js test/lineage/recipient-wiring.test.js test/lineage/redact-graph.test.js test/lineage-scan-wiring.test.js test/lineage-artifact-write.test.js test/bench-data-lineage-runner.test.js test/bundle-frontend.test.js test/bundle-frontend-golden.test.js test/generate-html-report.test.js test/export-image.test.js test/lineage/scenario.test.js test/lineage/scenario-engine.test.js test/lineage/scenario-diff.test.js test/lineage/scenario-no-obligation-wiring.test.js test/lineage/impact-assessment.test.js test/lineage/impact-engine.test.js test/lineage/impact-no-obligation-wiring.test.js test/lineage/governance-edit.test.js test/lineage/remediation.test.js test/lineage/runtime-observation.test.js test/lineage/observation-correlation.test.js test/lineage/observation-adapters.test.js test/lineage/observation-store.test.js test/lineage/runtime-corroboration-wiring.test.js test/lineage/cross-repo-link.test.js test/lineage/federation-loader.test.js test/lineage/cross-repo-link-wiring.test.js test/lineage/runtime-assurance.test.js test/lineage/runtime-edge-states.test.js test/lineage/runtime-explorer-view.test.js test/cli/runtime-explorer-cli.test.js test/cli/runtime-identity-cli.test.js test/cli/runtime-twin-cli.test.js",
|
|
93
|
+
"test:bench-modules": "node --test test/phase4-harness.test.js test/pipeline.test.js test/proof-corpus-lib.test.js test/proof-corpus-runner.test.js",
|
|
94
|
+
"test:server": "node --test test/server/graph-loader.test.js test/server/security.test.js test/server/routes.test.js test/server/http-server.test.js test/server/cmd-explore.test.js test/server/cmd-dataflow-export.test.js test/server/static-assets.test.js test/server/dataflow-scenario-cli.test.js test/server/dataflow-impact-cli.test.js",
|
|
95
|
+
"test:haskell": "node --test test/haskell/haskell-weak-hash-names.test.js test/haskell/haskell-models-extended.test.js test/haskell/haskell-rules-extended.test.js test/haskell/haskell-injection.test.js test/haskell/haskell-ir.test.js test/haskell/haskell-manifests.test.js test/haskell/haskell-parser.test.js test/haskell/haskell-remediation.test.js test/haskell/haskell-resolved-graph.test.js test/haskell/haskell-sca.test.js test/haskell/haskell-sca-severity.test.js test/haskell/haskell-web-guards.test.js test/haskell/haskell-advisory-feed.test.js test/haskell/haskell-security-rules.test.js test/haskell/haskell-taint.test.js test/haskell/haskell-boundaries.test.js test/haskell/haskell-live-feed-scan.test.js test/haskell/haskell-supply-bounds.test.js test/haskell/haskell-ir-scaling.test.js",
|
|
96
|
+
"test:nix": "node --test test/nix/nixos-hardening-daemon.test.js test/nix/nixos-hardening-extended.test.js test/nix/nix-build-trust.test.js test/nix/nix-eval-isolation.test.js test/nix/nix-input-inventory.test.js test/nix/nix-parser-ir.test.js test/nix/nix-remediation.test.js test/nix/nix-resolved-closure.test.js test/nix/nix-sca-patches.test.js test/nix/nix-sca-severity.test.js test/nix/nix-haskell-closure-names.test.js test/nix/nix-script-taint.test.js test/nix/nix-secrets-store.test.js test/nix/nixos-hardening.test.js test/nix/nixos-module-resolution.test.js test/nix/nix-fix-multifile.test.js test/nix/nixos-evaluator-forms.test.js test/nix/nix-advisory-feed.test.js test/nix/nix-fix-prewrite.test.js",
|
|
97
|
+
"test:language": "node --test test/language/capability-ledger.test.js test/language/language-accuracy-regression.test.js test/language/language-aibom.test.js test/language/language-assurance.test.js test/language/language-bom.test.js test/language/language-compliance.test.js test/language/language-contracts.test.js test/language/language-corpora-integrity.test.js test/language/language-discovery.test.js test/language/language-doc-coverage.test.js test/language/language-evidence-posture.test.js test/language/language-explorer.test.js test/language/language-gap-fixes.test.js test/language/language-gap-fixes-2.test.js test/language/language-governance.test.js test/language/language-integrations.test.js test/language/language-llm-agent.test.js test/language/language-local-ai.test.js test/language/language-polyglot-bridges.test.js test/language/language-privacy-lineage.test.js test/language/language-proof-remediation.test.js test/language/language-report-formats.test.js test/language/language-secrets.test.js test/language/language-trust-boundary.test.js",
|
|
98
|
+
"test:language-stress": "node --test --test-concurrency=1 test/language/language-stress-offline.test.js",
|
|
99
|
+
"test:language-tools": "node --test test/haskell/haskell-web-auth.test.js test/haskell/haskell-support-gate.test.js",
|
|
100
|
+
"bench:language-support:check": "node ../bench/language-support/check.mjs",
|
|
101
|
+
"bench:live-feed": "node ../bench/live-feed/run.mjs",
|
|
102
|
+
"bench:language-support:perf": "node ../bench/language-support/perf.mjs",
|
|
103
|
+
"test:evaluation": "node --test test/evaluation/protocol.test.js test/evaluation/grouping.test.js test/evaluation/labels.test.js test/evaluation/custody.test.js test/evaluation/runner.test.js test/evaluation/gates-scorecard.test.js test/evaluation/reporting.test.js test/evaluation/why-missed.test.js test/evaluation/guard-dominance.test.js test/evaluation/engine-mechanisms.test.js test/evaluation/release-gate.test.js test/evaluation/publication.test.js",
|
|
104
|
+
"reproduce:mini": "node ../scripts/public-reproduction.mjs",
|
|
105
|
+
"reproduce:routing": "node ../scripts/routing-replay.mjs",
|
|
106
|
+
"verification:patch-example": "node ../scripts/patch-replay-example.mjs",
|
|
107
|
+
"example:tenant-invariant": "node ../scripts/tenant-invariant-example.mjs",
|
|
108
|
+
"example:graph-drift": "node ../scripts/graph-drift-example.mjs",
|
|
109
|
+
"example:blocked-capability": "node ../scripts/blocked-capability-example.mjs",
|
|
110
|
+
"example:migration": "node ../scripts/migration-example.mjs",
|
|
111
|
+
"example:portfolio-recovery": "node ../scripts/portfolio-recovery-example.mjs",
|
|
112
|
+
"example:assurance-review": "node ../scripts/assurance-review-example.mjs",
|
|
113
|
+
"example:controller": "node ../scripts/loop-engineering/ops-example.mjs",
|
|
114
|
+
"docs:assurance": "node ../scripts/render-assurance-docs.mjs",
|
|
115
|
+
"docs:check-assurance": "node ../scripts/render-assurance-docs.mjs --check && node ../scripts/check-assurance-docs.mjs",
|
|
116
|
+
"dev-recovery": "node ../scripts/dev-recovery.mjs",
|
|
117
|
+
"evaluation": "node ../scripts/evaluation.mjs",
|
|
118
|
+
"evaluation:synthetic": "node ../scripts/evaluation.mjs synthetic",
|
|
119
|
+
"test:routing": "node --test test/routing/outcomes.test.js test/routing/economics.test.js test/routing/adapter.test.js test/routing/calibration.test.js test/routing/decide.test.js test/routing/unchanged-when-off.test.js test/routing/shadow.test.js test/routing/promotion.test.js test/routing/drift.test.js test/routing/canary.test.js test/routing/feedback.test.js test/routing/report.test.js",
|
|
120
|
+
"test:release-closure": "node --test test/release-closure/closure-plan.test.js test/release-closure/closure-record.test.js test/release-closure/compatibility.test.js test/release-closure/rollout-stages.test.js test/release-closure/migration-readers.test.js test/release-closure/rollback.test.js test/release-closure/wrappers.test.js test/release-closure/final-closure.test.js test/release-closure/final-closure-controller.test.js test/release-closure/runner-hardening.test.js test/release-closure/remote-attestation.test.js",
|
|
121
|
+
"release:closure:check": "node ../scripts/release-closure.mjs --run",
|
|
122
|
+
"release:closure:static": "node ../scripts/release-closure.mjs --static",
|
|
123
|
+
"test:documentation": "node --test test/documentation/drift-check.test.js test/documentation/generated-pages.test.js test/documentation/scope-and-examples.test.js test/documentation/policy-cards.test.js test/documentation/operations-and-review.test.js",
|
|
124
|
+
"test:capabilities": "node --test test/capabilities/manifest.test.js test/capabilities/filesystem.test.js test/capabilities/exec.test.js test/capabilities/network.test.js test/capabilities/canary.test.js test/capabilities/tools.test.js test/capabilities/recovery.test.js test/capabilities/receipts.test.js test/capabilities/adversarial.test.js test/capabilities/linux-enforcement.test.js test/supervise-async-sweep.test.js",
|
|
125
|
+
"test:verification": "node --test test/verification/verification-record.test.js test/verification/oracle-adapters.test.js test/verification/replay-manifest.test.js test/verification/patch-negative.test.js test/verification/non-taint-classes.test.js test/verification/interface-equivalence.test.js test/verification/advisory-gating.test.js test/verification/oracle-conformance.test.js",
|
|
126
|
+
"test:deployment": "node --test test/deployment/boundary-graph.test.js test/deployment/config-adapters.test.js test/deployment/trace-correlation.test.js test/deployment/cross-repo.test.js test/deployment/attack-paths.test.js test/deployment/drift.test.js test/deployment/boundary-presentation.test.js test/deployment/differentiation-ablation.test.js test/deployment/boundaries-cli.test.js",
|
|
127
|
+
"test:portfolio": "node --test test/portfolio/manifest.test.js test/portfolio/bundle.test.js test/portfolio/signing.test.js test/portfolio/work-units.test.js test/portfolio/resume.test.js test/portfolio/scheduler.test.js test/portfolio/progress.test.js test/portfolio/retention.test.js test/portfolio/backend.test.js",
|
|
128
|
+
"test:invariants": "node --test test/invariants/invariant-schema.test.js test/invariants/invariant-lifecycle.test.js test/invariants/invariant-scenarios.test.js test/invariants/business-state-oracle.test.js test/invariants/scenario-shrinking.test.js test/invariants/invariant-repair.test.js test/invariants/business-coverage.test.js test/invariants/invariant-ablation.test.js",
|
|
129
|
+
"bench:invariant-ablation": "node ../scripts/invariant-ablation.mjs",
|
|
130
|
+
"verification:conformance:check": "node ../scripts/verification-conformance-check.mjs",
|
|
131
|
+
"verification:conformance:static": "node ../scripts/verification-conformance-check.mjs --static",
|
|
132
|
+
"verification:replay-example": "node ../scripts/verification-replay-example.mjs",
|
|
133
|
+
"test:lifecycle": "node --test test/ci-hang-protection.test.js test/ci-test-shards.test.js test/pre-bash-guard.test.js test/lsp-protocol-smoke.test.js test/ide-surfaces.test.js test/detector-liveness.test.js test/bench-watchdog.test.js test/ci-parity.test.js test/dead-code.test.js test/no-dead-modules.test.js test/no-orphan-scripts.test.js test/no-stray-state.test.js test/tree-integrity.test.js test/stop-hook.test.js test/plugin-self-check.test.js test/skills-registry.test.js test/bodyguard.test.js test/cache-invalidator-guard.test.js test/dispatch-pre-tool.test.js test/dispatch-user-prompt.test.js test/session-start-model-capture.test.js test/sandbox.test.js test/sandbox-escape.test.js test/trust-boundary.test.js test/ci-templates.test.js test/agent-mcp-tools.test.js test/triage-command.test.js test/no-orphan-tests.test.js test/supply-command.test.js test/posture-command.test.js test/labs-command.test.js test/compliance-command.test.js test/check-doc-drift.test.js test/dist-chunks-tracked.test.js && node ../scripts/lint-command-descriptions.mjs test/workflow-confinement.test.js test/check-bundle-source.test.js test/ship.test.js test/release-prepare.test.js",
|
|
134
|
+
"test:eval": "node --test test/independent-eval.test.js test/realworld-recall.test.js",
|
|
135
|
+
"test:discovery": "node --test test/discovery-partition.test.js test/discovery-lenses.test.js test/discovery-hunter.test.js test/discovery-confirm.test.js test/discovery-disprove.test.js test/discovery-judge.test.js test/discovery-run.test.js test/discovery-wiring.test.js test/discovery-llm-invoke.test.js test/local-only-mode.test.js test/context-intelligence/build-js.test.js test/context-intelligence/build-python-haskell.test.js test/context-intelligence/hie-adapter.test.js test/context-intelligence/store.test.js test/context-intelligence/review-queue.test.js test/context-intelligence/packer-egress.test.js test/context-intelligence/evaluation.test.js test/context-intelligence/queue-diff.test.js test/context-intelligence/cli.test.js test/context-intelligence/resilience.test.js test/context-intelligence/frameworks.test.js test/context-intelligence/skew-git-rls.test.js test/context-intelligence/premortem.test.js test/context-intelligence/git-diff-candidates.test.js",
|
|
136
|
+
"eval:independent": "node ../bench/independent-eval/runner.mjs",
|
|
137
|
+
"eval:independent:gate": "node ../bench/independent-eval/runner.mjs --gate default",
|
|
138
|
+
"smoke": "node bin/agentic-security.js scan test/fixtures/vulnerable-js",
|
|
139
|
+
"prebench": "npm run build",
|
|
140
|
+
"bench": "node test/benchmark/bench.js",
|
|
141
|
+
"bench:update": "node test/benchmark/bench.js --update-baseline",
|
|
142
|
+
"prebench:realworld": "npm run build",
|
|
143
|
+
"bench:realworld": "node test/benchmark/realworld/bench-realworld.js",
|
|
144
|
+
"bench:llm-goats": "node test/benchmark/llm-goats/bench-llm-goats.js",
|
|
145
|
+
"bench:data-lineage": "node ../bench/data-lineage/runner.mjs",
|
|
146
|
+
"bench:data-lineage:check": "node ../bench/data-lineage/runner.mjs --check",
|
|
147
|
+
"bench:cve-replay": "node ../bench/cve-replay/runner.mjs",
|
|
148
|
+
"bench:cve-replay:ci": "node ../bench/cve-replay/runner.mjs --ci",
|
|
149
|
+
"bench:cve-replay:check": "node ../bench/cve-replay/runner.mjs --check-baseline",
|
|
150
|
+
"bench:cve-replay:update-baseline": "node ../bench/cve-replay/runner.mjs --update-baseline",
|
|
151
|
+
"bench:realcode:report": "node ../bench/independent/realcode.mjs report",
|
|
152
|
+
"bench:realcode:check": "node ../bench/independent/realcode.mjs check --tier release",
|
|
153
|
+
"bench:realcode:check:quick": "node ../bench/independent/realcode.mjs check --tier quick",
|
|
154
|
+
"bench:independent:gate:check": "node ../scripts/independent-population-gate.mjs",
|
|
155
|
+
"bench:independent:update-gate-baseline": "node ../scripts/independent-population-gate.mjs --update-baseline",
|
|
156
|
+
"bench:router-replay": "node ../bench/router-replay/runner.mjs",
|
|
157
|
+
"bench:router-replay:check": "node ../bench/router-replay/runner.mjs --check-baseline",
|
|
158
|
+
"bench:router-replay:update-baseline": "node ../bench/router-replay/runner.mjs --update-baseline",
|
|
159
|
+
"bench:bigquery:smoke": "node ../bench/bigquery-github/bin/run-cycle.mjs --smoke",
|
|
160
|
+
"bench:bigquery": "node ../bench/bigquery-github/bin/run-cycle.mjs",
|
|
161
|
+
"bench:agent-tasks": "node ../bench/agent-tasks/security-fixer/runner.mjs",
|
|
162
|
+
"bench:polyglot": "node ../bench/polyglot/runner.mjs",
|
|
163
|
+
"bench:proof-corpus": "node ../bench/proof-corpus/runner.mjs",
|
|
164
|
+
"bench:proof-corpus:pins": "node ../bench/proof-corpus/runner.mjs --refresh-pins",
|
|
165
|
+
"bench:engine-reconnect": "node ../bench/engine-reconnect/measure.mjs",
|
|
166
|
+
"bench:ttff": "node ../bench/ttff/runner.mjs",
|
|
167
|
+
"bench:ttff:check": "node ../bench/ttff/runner.mjs --check",
|
|
168
|
+
"bench:ttff:update-baseline": "node ../bench/ttff/runner.mjs --update-baseline",
|
|
169
|
+
"bench:provenance": "node ../bench/provenance/runner.mjs",
|
|
170
|
+
"bench:provenance:check": "node ../bench/provenance/runner.mjs --check",
|
|
171
|
+
"bench:provenance:update-baseline": "node ../bench/provenance/runner.mjs --update-baseline",
|
|
172
|
+
"bench:memory": "node ../bench/memory/runner.mjs",
|
|
173
|
+
"bench:memory:check": "node ../bench/memory/runner.mjs --check",
|
|
174
|
+
"bench:memory:update-baseline": "node ../bench/memory/runner.mjs --update-baseline",
|
|
175
|
+
"check:bundle-source": "node ../scripts/check-bundle-source.mjs",
|
|
176
|
+
"release:prepare": "node ../scripts/release-prepare.mjs",
|
|
177
|
+
"ship": "node ../scripts/ship.mjs",
|
|
178
|
+
"bench:self-scan": "node ../bench/self-scan/measure.mjs",
|
|
179
|
+
"bench:self-scan:check": "node ../bench/self-scan/check.mjs",
|
|
180
|
+
"bench:nist-800-171-labels:check": "node ../bench/nist-800-171-labels/check.mjs",
|
|
181
|
+
"bench:dci-real-app": "node ../bench/dci-real-app/runner.mjs", "bench:dci-real-app:check": "node ../bench/dci-real-app/runner.mjs --check", "ee:perf-budget": "node ../scripts/engineering-excellence/perf-budget.mjs", "ee:perf-budget:check": "node ../scripts/engineering-excellence/perf-budget.mjs --check", "ee:e2e-demo": "node ../scripts/engineering-excellence/e2e-demo.mjs", "ee:e2e-demo:check": "node ../scripts/engineering-excellence/e2e-demo.mjs --check", "ee:doc-captures": "node ../scripts/engineering-excellence/doc-captures.mjs", "ee:doc-captures:check": "node ../scripts/engineering-excellence/doc-captures.mjs --check", "ee:regression-report": "node ../scripts/engineering-excellence/regression-report.mjs", "ee:regression-report:check": "node ../scripts/engineering-excellence/regression-report.mjs --check", "ee:final-report": "node ../scripts/engineering-excellence/final-report.mjs", "ee:final-report:check": "node ../scripts/engineering-excellence/final-report.mjs --check", "bench:mutation:check": "node ../bench/mutation/runner.mjs",
|
|
182
|
+
"baseline:capture": "node ../scripts/baseline-capture.mjs",
|
|
183
|
+
"bench:protection-verdict:check": "node ../bench/protection-verdict/runner.mjs",
|
|
184
|
+
"bench:independent:forensics": "node ../bench/independent/forensics.mjs",
|
|
185
|
+
"bench:fix-verify": "node ../bench/fix-verification/runner.mjs",
|
|
186
|
+
"bench:fix-verify:check": "node ../bench/fix-verification/runner.mjs --check",
|
|
187
|
+
"bench:fix-correctness": "node ../bench/fix-correctness/runner.mjs",
|
|
188
|
+
"bench:iac-coverage": "node ../bench/iac-coverage/runner.mjs",
|
|
189
|
+
"bench:prompt-injection": "node ../bench/prompt-injection/runner.mjs",
|
|
190
|
+
"bench:prompt-injection:fetch": "node ../bench/prompt-injection/fetch.mjs",
|
|
191
|
+
"bench:secrets-precision": "node ../bench/secrets-precision/runner.mjs",
|
|
192
|
+
"bench:sca-replay": "node ../bench/sca-replay/runner.mjs",
|
|
193
|
+
"bench:sca-replay:reachability": "node ../bench/sca-replay/reachability.mjs",
|
|
194
|
+
"bench:sca-replay:fetch": "node ../bench/sca-replay/fetch.mjs",
|
|
195
|
+
"bench:sca-replay:label": "node ../bench/sca-replay/label.mjs",
|
|
196
|
+
"bench:sard:score": "node ../bench/sard/scripts/macro-score.mjs",
|
|
197
|
+
"bench:sard:leakage-audit": "node ../bench/sard/scripts/leakage-audit.mjs",
|
|
198
|
+
"bench:sard:java": "node test/benchmark/realworld/bench-realworld.js --app sard-juliet-java-strict --blind --scramble-identifiers --deep --json | node ../bench/sard/scripts/macro-score.mjs",
|
|
199
|
+
"bench:sard:csharp": "node test/benchmark/realworld/bench-realworld.js --app sard-juliet-csharp-strict --blind --scramble-identifiers --deep --json | node ../bench/sard/scripts/macro-score.mjs",
|
|
200
|
+
"bench:sard:java:fast-unsafe": "node test/benchmark/realworld/bench-realworld.js --app sard-juliet-java-strict --blind --json | node ../bench/sard/scripts/macro-score.mjs",
|
|
201
|
+
"bench:sard:split": "node ../bench/sard/scripts/split.mjs",
|
|
202
|
+
"bench:sard:split:check": "node ../bench/sard/scripts/split.mjs --verify",
|
|
203
|
+
"bench:sard:update-baseline": "node ../bench/sard/scripts/compare-baseline.mjs --update-baseline",
|
|
204
|
+
"bench:sard:check-baseline": "node ../bench/sard/scripts/compare-baseline.mjs --check-baseline",
|
|
205
|
+
"bench:sard:holdout-update-baseline": "node ../bench/sard/scripts/holdout-check.mjs --update-baseline",
|
|
206
|
+
"bench:sard:holdout-check": "node ../bench/sard/scripts/holdout-check.mjs --check-baseline",
|
|
207
|
+
"bench:sard:smoke": "node test/benchmark/realworld/bench-realworld.js --app sard-juliet-java-strict --blind --scramble-identifiers --cwe CWE-89,CWE-78,CWE-23,CWE-80,CWE-327 --json | node ../bench/sard/scripts/macro-score.mjs",
|
|
208
|
+
"bench:sard:mutate": "node ../bench/sard/scripts/mutate.mjs --app sard-juliet-java-strict --cwe 89,78,23,80,327 --limit 60",
|
|
209
|
+
"bench:sard:verify-fixes": "node ../bench/sard/scripts/verify-fixes.mjs --app sard-juliet-java-strict --cwe 89,78,23,80,327,328 --limit 200",
|
|
210
|
+
"bench:sard:analyze-errors": "node ../bench/sard/scripts/analyze-errors.mjs",
|
|
211
|
+
"bench:sard:naive-baseline": "node ../bench/sard/scripts/naive-baseline.mjs",
|
|
212
|
+
"bench:sard:php-ingest": "node ../bench/sard/scripts/ingest-php.mjs",
|
|
213
|
+
"bench:sard:php-score": "node ../bench/sard/scripts/score-php.mjs --deep",
|
|
214
|
+
"bench:sard:java:test-split": "node test/benchmark/realworld/bench-realworld.js --app sard-juliet-java-strict --blind --scramble-identifiers --deep --split test --json",
|
|
215
|
+
"bench:sard:csharp:test-split": "node test/benchmark/realworld/bench-realworld.js --app sard-juliet-csharp-strict --blind --scramble-identifiers --deep --split test --json",
|
|
216
|
+
"bench:sard:php:test-split": "node ../bench/sard/scripts/score-php.mjs --deep --split test --json",
|
|
217
|
+
"bench:layer-recall": "node ../bench/layer-recall/runner.mjs",
|
|
218
|
+
"bench:layer-recall:check": "node ../bench/layer-recall/runner.mjs --check",
|
|
219
|
+
"bench:layer-recall:update-baseline": "node ../bench/layer-recall/runner.mjs --update-baseline",
|
|
220
|
+
"bench:provenance-accuracy": "node ../bench/provenance-accuracy/runner.mjs",
|
|
221
|
+
"bench:provenance-accuracy:check": "node ../bench/provenance-accuracy/runner.mjs --check",
|
|
222
|
+
"bench:provenance-accuracy:update-baseline": "node ../bench/provenance-accuracy/runner.mjs --update-baseline",
|
|
223
|
+
"bench:privacy-recall": "node ../bench/privacy-recall/measure.mjs",
|
|
224
|
+
"bench:privacy-recall:compare-lineage": "node ../bench/privacy-recall/compare-lineage.mjs",
|
|
225
|
+
"bench:privacy-recall:check": "node ../bench/privacy-recall/check.mjs",
|
|
226
|
+
"bench:privacy-recall:update-baseline": "node ../bench/privacy-recall/check.mjs --update-baseline",
|
|
227
|
+
"bench:self-scan:update-baseline": "node ../bench/self-scan/check.mjs --update-baseline",
|
|
228
|
+
"bench:engine-recall": "node ../bench/engine-recall/measure.mjs",
|
|
229
|
+
"scorecard": "node ../scripts/scorecard.mjs",
|
|
230
|
+
"check-doc-drift": "node ../scripts/check-doc-drift.mjs",
|
|
231
|
+
"docs:verify-examples": "node ../scripts/verify-doc-examples.mjs",
|
|
232
|
+
"harness-score": "node ../scripts/harness-score.cjs",
|
|
233
|
+
"corpus:enroll": "node ../scripts/enroll-proven-finding.mjs",
|
|
234
|
+
"corpus:provenance": "node ../scripts/corpus-provenance-check.mjs",
|
|
235
|
+
"fleet": "node ../scripts/fleet.mjs",
|
|
236
|
+
"autopilot": "node ../scripts/autopilot.mjs",
|
|
237
|
+
"comparison": "node ../scripts/comparison.mjs",
|
|
238
|
+
"determinism:attest": "node ../scripts/attest-fixture.mjs",
|
|
239
|
+
"scorecard:check": "node ../scripts/scorecard-check.mjs",
|
|
240
|
+
"release:check": "node ../scripts/release-check.mjs",
|
|
241
|
+
"release:check:fast": "node ../scripts/release-check.mjs --fast",
|
|
242
|
+
"gate:prepush": "node ../scripts/pre-push-gate.mjs",
|
|
243
|
+
"gate:trace": "node ../scripts/gate-trace-reads.mjs",
|
|
244
|
+
"gate:prepush:install": "node ../scripts/pre-push-gate.mjs --install-hook",
|
|
245
|
+
"bench:independent": "node ../bench/independent/runner.mjs",
|
|
246
|
+
"bench:independent:fetch": "node ../bench/independent/fetch.mjs",
|
|
247
|
+
"bench:independent:mine": "node ../bench/independent/mine.mjs",
|
|
248
|
+
"bench:independent:materialise": "node ../bench/independent/materialise-cli.mjs",
|
|
249
|
+
"bench:independent:why-missed": "node ../bench/independent/why-missed.mjs",
|
|
250
|
+
"bench:independent:materialise-new": "node ../bench/independent/materialise-new.mjs",
|
|
251
|
+
"bench:independent:merge": "node ../bench/independent/merge-chunks.mjs",
|
|
252
|
+
"bench:independent:agent-delta": "node ../bench/independent/agent-boundary-delta.mjs",
|
|
253
|
+
"bench:independent:deep": "node ../bench/independent/runner.mjs --deep",
|
|
254
|
+
"test:ci-parity": "CI=true GITHUB_ACTIONS=true node --test test/backward-default.test.js test/ci-parity.test.js test/container-taint.test.js test/deep-taint.test.js test/engine-recall.test.js test/engine-reconnect.test.js test/gate-verdict-cache.test.js test/ignore-pragma.test.js test/java-taint-flow.test.js test/kt-taint-flow.test.js test/py-annotation-sources.test.js test/runscan-deep-option.test.js test/sanitizer-typed-flow.test.js",
|
|
255
|
+
"docs:render-language": "node ../scripts/render-language-docs.mjs",
|
|
256
|
+
"docs:capture-language": "node ../scripts/capture-language-examples.mjs",
|
|
257
|
+
"completion-status": "node ../scripts/write-completion-status.mjs",
|
|
258
|
+
"docs:check-language": "node ../scripts/render-language-docs.mjs --check && node ../scripts/capture-language-examples.mjs --check",
|
|
259
|
+
"test:nixos-host": "node --test test/nix/nixos-host-runtime.test.js",
|
|
260
|
+
"test:language-gates": "node --test --test-concurrency=1 test/language/language-benchmark-gates.test.js",
|
|
261
|
+
"test:language-slow": "node --test --test-concurrency=1 test/language/language-doc-examples-metrics.test.js test/language/language-end-to-end.test.js test/language/language-package-ci.test.js test/language/language-scan-modes.test.js",
|
|
262
|
+
"test:chrome": "AGENTIC_SECURITY_CHROME_TESTS=1 node --test test/export-image.test.js test/server/cmd-dataflow-export.test.js",
|
|
263
|
+
"ee:parse-reuse": "node ../scripts/engineering-excellence/parse-reuse-measure.mjs",
|
|
264
|
+
"ee:analysis-cache": "node ../scripts/engineering-excellence/analysis-cache-measure.mjs",
|
|
265
|
+
"ee:evidence-contracts": "node ../scripts/engineering-excellence/evidence-inventory.mjs",
|
|
266
|
+
"release:verify-package": "node ../scripts/verify-release-package.mjs",
|
|
267
|
+
"ee:completion": "node ../scripts/engineering-excellence/completion-analysis.mjs",
|
|
268
|
+
"ee:reproduce-timeouts": "node ../scripts/engineering-excellence/reproduce-timeouts.mjs",
|
|
269
|
+
"ee:provenance-measure": "node ../scripts/engineering-excellence/provenance-measure.mjs",
|
|
270
|
+
"ee:provenance-baseline": "node ../scripts/engineering-excellence/provenance-baseline.mjs"
|
|
271
|
+
},
|
|
272
|
+
"author": "Ross Young <ross@clearcapabilities.com>",
|
|
273
|
+
"license": "PolyForm-Internal-Use-1.0.0",
|
|
274
|
+
"repository": {
|
|
275
|
+
"type": "git",
|
|
276
|
+
"url": "git+https://github.com/Clear-Capabilities/agentic-security.git",
|
|
277
|
+
"directory": "scanner"
|
|
278
|
+
},
|
|
279
|
+
"homepage": "https://github.com/Clear-Capabilities/agentic-security#readme",
|
|
280
|
+
"bugs": {
|
|
281
|
+
"url": "https://github.com/Clear-Capabilities/agentic-security/issues"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export const id = 5099;
|
|
2
|
+
export const ids = [5099];
|
|
3
|
+
export const modules = {
|
|
4
|
+
|
|
5
|
+
/***/ 25099:
|
|
6
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
7
|
+
|
|
8
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9
|
+
/* harmony export */ findSiblings: () => (/* binding */ findSiblings)
|
|
10
|
+
/* harmony export */ });
|
|
11
|
+
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(73024);
|
|
12
|
+
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(76760);
|
|
13
|
+
/* harmony import */ var _rule_compiler_proposal_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(47838);
|
|
14
|
+
/* harmony import */ var _state_dir_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(31174);
|
|
15
|
+
// Sibling-exposure search for a verified fix (PRD 1, requirement 6, step 8: "look for equivalent sibling exposures").
|
|
16
|
+
//
|
|
17
|
+
// A fix that closes one instance of a flaw says nothing about the same shape written somewhere else. This finds candidates two ways,
|
|
18
|
+
// and reports where each came from:
|
|
19
|
+
// * `scan` other findings from the last scan with the same weakness or title (what the engine already believes);
|
|
20
|
+
// * `structural` other places in the repository whose line has the SAME SHAPE as the vulnerable line: the vulnerable line is
|
|
21
|
+
// generalized (call names kept, strings and other identifiers become classes) by the rule compiler's own
|
|
22
|
+
// generalizer and searched across the source files. This finds copies the engine did not flag.
|
|
23
|
+
// The result is a list of CANDIDATES for a person to look at, not a verdict that each one is exploitable. Bounded in files, bytes,
|
|
24
|
+
// matches and time; a bound that is hit is reported (`truncated`), because "no siblings found" must never mean "stopped looking".
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
const SOURCE_EXT = /\.(?:js|mjs|cjs|jsx|ts|tsx|py|rb|php|java|kt|go|rs|cs|c|cc|cpp|h|hpp|sh|swift|scala)$/i;
|
|
31
|
+
const SKIP = new Set(['.git', 'node_modules', 'dist', 'build', 'vendor', _state_dir_js__WEBPACK_IMPORTED_MODULE_3__/* .STATE_DIR_NAME */ .Ky, 'coverage', '__pycache__']);
|
|
32
|
+
const SIBLING_LIMITS = Object.freeze({ maxFiles: 5000, maxFileBytes: 512 * 1024, maxMatches: 100, budgetMs: 8000 });
|
|
33
|
+
|
|
34
|
+
const sameSpot = (a, b) => node_path__WEBPACK_IMPORTED_MODULE_1__.resolve(a) === node_path__WEBPACK_IMPORTED_MODULE_1__.resolve(b);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @param {object} o
|
|
38
|
+
* @param {string} o.root repository root
|
|
39
|
+
* @param {{file: string, line: number, id?: string, cwe?: string, vuln?: string}} o.finding
|
|
40
|
+
* @param {object[]} [o.scanFindings] findings from the last scan
|
|
41
|
+
* @returns {{siblings: object[], truncated: string[], pattern: string|null}}
|
|
42
|
+
*/
|
|
43
|
+
function findSiblings({ root, finding, scanFindings = [], limits = SIBLING_LIMITS, now = Date.now }) {
|
|
44
|
+
const out = []; const seen = new Set(); const truncated = [];
|
|
45
|
+
const add = (s) => { const k = `${s.file}:${s.line ?? ''}`; if (!seen.has(k)) { seen.add(k); out.push(s); } };
|
|
46
|
+
for (const x of scanFindings) {
|
|
47
|
+
if (!x || x.id === finding.id || x.stableId === finding.stableId && finding.stableId) continue;
|
|
48
|
+
if (x.file === finding.file && x.line === finding.line) continue;
|
|
49
|
+
if ((finding.cwe && x.cwe === finding.cwe) || (finding.vuln && x.vuln === finding.vuln)) add({ source: 'scan', file: x.file, line: x.line ?? null, id: x.id ?? null });
|
|
50
|
+
}
|
|
51
|
+
let pattern = null;
|
|
52
|
+
let line = '';
|
|
53
|
+
try {
|
|
54
|
+
const abs = node_path__WEBPACK_IMPORTED_MODULE_1__.resolve(root, finding.file);
|
|
55
|
+
line = (node_fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(abs, 'utf8').split('\n')[finding.line - 1] ?? '').trim();
|
|
56
|
+
} catch { /* the flagged file is gone; only the scan-based siblings are available */ }
|
|
57
|
+
if (line.length >= 8) {
|
|
58
|
+
pattern = (0,_rule_compiler_proposal_js__WEBPACK_IMPORTED_MODULE_2__/* .generalizeLine */ .Ry)(line);
|
|
59
|
+
let rx = null;
|
|
60
|
+
try { rx = new RegExp(pattern); } catch { rx = null; }
|
|
61
|
+
if (rx) {
|
|
62
|
+
const deadline = now() + limits.budgetMs; let files = 0; let matches = 0;
|
|
63
|
+
const base = node_fs__WEBPACK_IMPORTED_MODULE_0__.realpathSync(root);
|
|
64
|
+
const walk = (dir) => {
|
|
65
|
+
if (truncated.length) return;
|
|
66
|
+
let ents = [];
|
|
67
|
+
try { ents = node_fs__WEBPACK_IMPORTED_MODULE_0__.readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name)); } catch { return; }
|
|
68
|
+
for (const e of ents) {
|
|
69
|
+
if (truncated.length) return;
|
|
70
|
+
if (SKIP.has(e.name) || e.isSymbolicLink()) continue;
|
|
71
|
+
const p = node_path__WEBPACK_IMPORTED_MODULE_1__.join(dir, e.name);
|
|
72
|
+
if (e.isDirectory()) { walk(p); continue; }
|
|
73
|
+
if (!e.isFile() || !SOURCE_EXT.test(e.name)) continue;
|
|
74
|
+
if (++files > limits.maxFiles) { truncated.push(`file limit (${limits.maxFiles})`); return; }
|
|
75
|
+
if (now() > deadline) { truncated.push('time budget'); return; }
|
|
76
|
+
let text; try { const st = node_fs__WEBPACK_IMPORTED_MODULE_0__.statSync(p); if (st.size > limits.maxFileBytes) continue; text = node_fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(p, 'utf8'); } catch { continue; }
|
|
77
|
+
const lines = text.split('\n');
|
|
78
|
+
for (let i = 0; i < lines.length; i++) {
|
|
79
|
+
if (lines[i].length > 2000 || !rx.test(lines[i].trim())) continue;
|
|
80
|
+
const rel = node_path__WEBPACK_IMPORTED_MODULE_1__.relative(base, node_fs__WEBPACK_IMPORTED_MODULE_0__.realpathSync(p));
|
|
81
|
+
if (sameSpot(node_path__WEBPACK_IMPORTED_MODULE_1__.resolve(base, rel), node_path__WEBPACK_IMPORTED_MODULE_1__.resolve(base, finding.file)) && i + 1 === finding.line) continue;
|
|
82
|
+
add({ source: 'structural', file: rel, line: i + 1, text: lines[i].trim().slice(0, 160) });
|
|
83
|
+
if (++matches >= limits.maxMatches) { truncated.push(`match limit (${limits.maxMatches})`); return; }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
walk(base);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { siblings: out, truncated, pattern };
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/***/ })
|
|
95
|
+
|
|
96
|
+
};
|