audit-tools 0.36.2 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/audit/adapters/astGrep.d.ts +1 -1
  2. package/dist/audit/adapters/astGrep.d.ts.map +1 -1
  3. package/dist/audit/adapters/astGrep.js +1 -1
  4. package/dist/audit/adapters/astGrep.js.map +1 -1
  5. package/dist/audit/adapters/codeql.d.ts +1 -1
  6. package/dist/audit/adapters/codeql.d.ts.map +1 -1
  7. package/dist/audit/adapters/codeql.js +1 -1
  8. package/dist/audit/adapters/codeql.js.map +1 -1
  9. package/dist/audit/adapters/coverageSummary.d.ts +1 -1
  10. package/dist/audit/adapters/coverageSummary.d.ts.map +1 -1
  11. package/dist/audit/adapters/coverageSummary.js +1 -1
  12. package/dist/audit/adapters/coverageSummary.js.map +1 -1
  13. package/dist/audit/adapters/eslint.d.ts +1 -1
  14. package/dist/audit/adapters/eslint.d.ts.map +1 -1
  15. package/dist/audit/adapters/eslint.js +1 -1
  16. package/dist/audit/adapters/eslint.js.map +1 -1
  17. package/dist/audit/adapters/npmAudit.d.ts +1 -1
  18. package/dist/audit/adapters/npmAudit.d.ts.map +1 -1
  19. package/dist/audit/adapters/npmAudit.js +1 -1
  20. package/dist/audit/adapters/npmAudit.js.map +1 -1
  21. package/dist/audit/adapters/semgrep.d.ts +1 -1
  22. package/dist/audit/adapters/semgrep.d.ts.map +1 -1
  23. package/dist/audit/adapters/semgrep.js +1 -1
  24. package/dist/audit/adapters/semgrep.js.map +1 -1
  25. package/dist/audit/cli/auditStep.d.ts +1 -1
  26. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  27. package/dist/audit/cli/dispatch/packetPrompt.d.ts.map +1 -1
  28. package/dist/audit/cli/dispatch/packetPrompt.js +8 -2
  29. package/dist/audit/cli/dispatch/packetPrompt.js.map +1 -1
  30. package/dist/audit/cli/dispatch/tierRouting.d.ts +17 -0
  31. package/dist/audit/cli/dispatch/tierRouting.d.ts.map +1 -1
  32. package/dist/audit/cli/dispatch/tierRouting.js +48 -0
  33. package/dist/audit/cli/dispatch/tierRouting.js.map +1 -1
  34. package/dist/audit/cli/dispatch.d.ts.map +1 -1
  35. package/dist/audit/cli/dispatch.js +21 -2
  36. package/dist/audit/cli/dispatch.js.map +1 -1
  37. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  38. package/dist/audit/cli/nextStepCommand.js +32 -1
  39. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  40. package/dist/audit/cli/nextStepHelpers.d.ts +35 -0
  41. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  42. package/dist/audit/cli/nextStepHelpers.js +74 -3
  43. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  44. package/dist/audit/cli/prompts.d.ts +34 -1
  45. package/dist/audit/cli/prompts.d.ts.map +1 -1
  46. package/dist/audit/cli/prompts.js +93 -6
  47. package/dist/audit/cli/prompts.js.map +1 -1
  48. package/dist/audit/cli/reviewRun.d.ts.map +1 -1
  49. package/dist/audit/cli/reviewRun.js +2 -0
  50. package/dist/audit/cli/reviewRun.js.map +1 -1
  51. package/dist/audit/cli/steps.d.ts +14 -4
  52. package/dist/audit/cli/steps.d.ts.map +1 -1
  53. package/dist/audit/cli/steps.js +28 -1
  54. package/dist/audit/cli/steps.js.map +1 -1
  55. package/dist/audit/cli/workerRunCommand.d.ts.map +1 -1
  56. package/dist/audit/cli/workerRunCommand.js +28 -14
  57. package/dist/audit/cli/workerRunCommand.js.map +1 -1
  58. package/dist/audit/contracts/workerSchemas.d.ts +108 -0
  59. package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
  60. package/dist/audit/extractors/analyzers/registry.d.ts +5 -5
  61. package/dist/audit/extractors/analyzers/registry.d.ts.map +1 -1
  62. package/dist/audit/extractors/analyzers/registry.js +3 -3
  63. package/dist/audit/extractors/analyzers/registry.js.map +1 -1
  64. package/dist/audit/extractors/graph.d.ts +1 -1
  65. package/dist/audit/extractors/graph.d.ts.map +1 -1
  66. package/dist/audit/extractors/risk.d.ts +1 -1
  67. package/dist/audit/extractors/risk.d.ts.map +1 -1
  68. package/dist/audit/io/artifacts.d.ts +1 -1
  69. package/dist/audit/io/artifacts.d.ts.map +1 -1
  70. package/dist/audit/orchestrator/acquisitionExecutor.d.ts +7 -1
  71. package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -1
  72. package/dist/audit/orchestrator/acquisitionExecutor.js +5 -3
  73. package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -1
  74. package/dist/audit/orchestrator/advance.d.ts +6 -0
  75. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  76. package/dist/audit/orchestrator/advance.js +49 -1
  77. package/dist/audit/orchestrator/advance.js.map +1 -1
  78. package/dist/audit/orchestrator/advanceTypes.d.ts +11 -1
  79. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  80. package/dist/audit/orchestrator/executors.d.ts.map +1 -1
  81. package/dist/audit/orchestrator/executors.js +4 -0
  82. package/dist/audit/orchestrator/executors.js.map +1 -1
  83. package/dist/audit/orchestrator/fileAnchors.d.ts +8 -1
  84. package/dist/audit/orchestrator/fileAnchors.d.ts.map +1 -1
  85. package/dist/audit/orchestrator/fileAnchors.js +1 -0
  86. package/dist/audit/orchestrator/fileAnchors.js.map +1 -1
  87. package/dist/audit/orchestrator/flowRequeue.d.ts +1 -1
  88. package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
  89. package/dist/audit/orchestrator/hostInputPause.d.ts +19 -0
  90. package/dist/audit/orchestrator/hostInputPause.d.ts.map +1 -1
  91. package/dist/audit/orchestrator/hostInputPause.js +41 -0
  92. package/dist/audit/orchestrator/hostInputPause.js.map +1 -1
  93. package/dist/audit/orchestrator/ingestionExecutors.d.ts +1 -1
  94. package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
  95. package/dist/audit/orchestrator/ingestionExecutors.js +1 -1
  96. package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
  97. package/dist/audit/orchestrator/intentCheckpointExecutor.d.ts.map +1 -1
  98. package/dist/audit/orchestrator/intentCheckpointExecutor.js +13 -1
  99. package/dist/audit/orchestrator/intentCheckpointExecutor.js.map +1 -1
  100. package/dist/audit/orchestrator/planning.d.ts +1 -1
  101. package/dist/audit/orchestrator/planning.d.ts.map +1 -1
  102. package/dist/audit/orchestrator/requeue.d.ts +1 -1
  103. package/dist/audit/orchestrator/requeue.d.ts.map +1 -1
  104. package/dist/audit/orchestrator/requeueCommand.d.ts +1 -1
  105. package/dist/audit/orchestrator/requeueCommand.d.ts.map +1 -1
  106. package/dist/audit/orchestrator/requeueUtils.d.ts +1 -1
  107. package/dist/audit/orchestrator/requeueUtils.d.ts.map +1 -1
  108. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts +1 -1
  109. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts.map +1 -1
  110. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +1 -1
  111. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
  112. package/dist/audit/orchestrator/staleness.d.ts +4 -5
  113. package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
  114. package/dist/audit/orchestrator/staleness.js +18 -0
  115. package/dist/audit/orchestrator/staleness.js.map +1 -1
  116. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +1 -1
  117. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  118. package/dist/audit/orchestrator/taskBuilder.d.ts +1 -1
  119. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  120. package/dist/audit/orchestrator/trivialAudit.d.ts +1 -1
  121. package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
  122. package/dist/audit/reporting/mergeFindings.d.ts +1 -1
  123. package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
  124. package/dist/audit/reporting/synthesis.d.ts +1 -1
  125. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  126. package/dist/audit/supervisor/sessionConfig.d.ts +7 -0
  127. package/dist/audit/supervisor/sessionConfig.d.ts.map +1 -1
  128. package/dist/audit/supervisor/sessionConfig.js +12 -0
  129. package/dist/audit/supervisor/sessionConfig.js.map +1 -1
  130. package/dist/audit/types.d.ts +40 -0
  131. package/dist/audit/types.d.ts.map +1 -1
  132. package/dist/remediate/phases/close.d.ts +8 -0
  133. package/dist/remediate/phases/close.d.ts.map +1 -1
  134. package/dist/remediate/phases/close.js +135 -1
  135. package/dist/remediate/phases/close.js.map +1 -1
  136. package/dist/remediate/phases/closeVerifyAnalyzerLeads.d.ts +42 -0
  137. package/dist/remediate/phases/closeVerifyAnalyzerLeads.d.ts.map +1 -0
  138. package/dist/remediate/phases/closeVerifyAnalyzerLeads.js +93 -0
  139. package/dist/remediate/phases/closeVerifyAnalyzerLeads.js.map +1 -0
  140. package/dist/remediate/state/types.d.ts +46 -1
  141. package/dist/remediate/state/types.d.ts.map +1 -1
  142. package/dist/remediate/state/types.js.map +1 -1
  143. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  144. package/dist/remediate/steps/contractPipeline.js +24 -1
  145. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  146. package/dist/remediate/steps/dispatch/acceptNode.d.ts +19 -0
  147. package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
  148. package/dist/remediate/steps/dispatch/acceptNode.js +33 -3
  149. package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
  150. package/dist/remediate/steps/dispatch/verifyCommands.d.ts +17 -0
  151. package/dist/remediate/steps/dispatch/verifyCommands.d.ts.map +1 -1
  152. package/dist/remediate/steps/dispatch/verifyCommands.js +38 -0
  153. package/dist/remediate/steps/dispatch/verifyCommands.js.map +1 -1
  154. package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts +13 -2
  155. package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts.map +1 -1
  156. package/dist/remediate/steps/dispatch/worktreeLifecycle.js +83 -17
  157. package/dist/remediate/steps/dispatch/worktreeLifecycle.js.map +1 -1
  158. package/dist/remediate/steps/dispatch.d.ts +1 -1
  159. package/dist/remediate/steps/dispatch.d.ts.map +1 -1
  160. package/dist/remediate/steps/dispatch.js +1 -1
  161. package/dist/remediate/steps/dispatch.js.map +1 -1
  162. package/dist/remediate/types/options.d.ts +6 -0
  163. package/dist/remediate/types/options.d.ts.map +1 -1
  164. package/dist/{audit/extractors → shared}/analyzers/acquisitionEngine.d.ts +29 -4
  165. package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -0
  166. package/dist/{audit/extractors → shared}/analyzers/acquisitionEngine.js +29 -8
  167. package/dist/shared/analyzers/acquisitionEngine.js.map +1 -0
  168. package/dist/{audit/extractors → shared}/analyzers/binaryAcquisition.d.ts +1 -1
  169. package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -0
  170. package/dist/{audit/extractors → shared}/analyzers/binaryAcquisition.js +1 -1
  171. package/dist/shared/analyzers/binaryAcquisition.js.map +1 -0
  172. package/dist/{audit/extractors → shared}/analyzers/candidates.d.ts +8 -1
  173. package/dist/shared/analyzers/candidates.d.ts.map +1 -0
  174. package/dist/{audit/extractors → shared}/analyzers/candidates.js +292 -18
  175. package/dist/shared/analyzers/candidates.js.map +1 -0
  176. package/dist/{audit/adapters → shared/analyzers}/clippy.d.ts +1 -1
  177. package/dist/{audit/adapters → shared/analyzers}/clippy.d.ts.map +1 -1
  178. package/dist/shared/analyzers/clippy.js.map +1 -0
  179. package/dist/{audit/adapters → shared/analyzers}/normalizeExternal.d.ts +12 -2
  180. package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -0
  181. package/dist/{audit/adapters → shared/analyzers}/normalizeExternal.js +41 -12
  182. package/dist/shared/analyzers/normalizeExternal.js.map +1 -0
  183. package/dist/shared/analyzers/provenance.d.ts +55 -0
  184. package/dist/shared/analyzers/provenance.d.ts.map +1 -0
  185. package/dist/shared/analyzers/provenance.js +70 -0
  186. package/dist/shared/analyzers/provenance.js.map +1 -0
  187. package/dist/{audit/adapters → shared/analyzers}/rubocop.d.ts +1 -1
  188. package/dist/{audit/adapters → shared/analyzers}/rubocop.d.ts.map +1 -1
  189. package/dist/shared/analyzers/rubocop.js.map +1 -0
  190. package/dist/{audit/types/externalAnalyzer.d.ts → shared/analyzers/types.d.ts} +100 -17
  191. package/dist/shared/analyzers/types.d.ts.map +1 -0
  192. package/dist/{audit/types/externalAnalyzer.js → shared/analyzers/types.js} +5 -1
  193. package/dist/shared/analyzers/types.js.map +1 -0
  194. package/dist/shared/decompose/systemicChallenge.d.ts +40 -0
  195. package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -1
  196. package/dist/shared/dispatch/dispatchQuotaContract.d.ts +6 -6
  197. package/dist/shared/index.d.ts +16 -3
  198. package/dist/shared/index.d.ts.map +1 -1
  199. package/dist/shared/index.js +12 -2
  200. package/dist/shared/index.js.map +1 -1
  201. package/dist/shared/quota/accountId.d.ts +4 -4
  202. package/dist/shared/quota/accountId.d.ts.map +1 -1
  203. package/dist/shared/quota/accountId.js +4 -7
  204. package/dist/shared/quota/accountId.js.map +1 -1
  205. package/dist/shared/quota/capacity.d.ts +2 -2
  206. package/dist/shared/quota/packetCost.d.ts +5 -7
  207. package/dist/shared/quota/packetCost.d.ts.map +1 -1
  208. package/dist/shared/quota/packetCost.js +5 -11
  209. package/dist/shared/quota/packetCost.js.map +1 -1
  210. package/dist/shared/quota/state.d.ts +0 -21
  211. package/dist/shared/quota/state.d.ts.map +1 -1
  212. package/dist/shared/quota/state.js +0 -47
  213. package/dist/shared/quota/state.js.map +1 -1
  214. package/dist/shared/quota/types.d.ts +0 -11
  215. package/dist/shared/quota/types.d.ts.map +1 -1
  216. package/dist/shared/quota/types.js.map +1 -1
  217. package/dist/shared/tooling/testCommand.d.ts +14 -0
  218. package/dist/shared/tooling/testCommand.d.ts.map +1 -1
  219. package/dist/shared/tooling/testCommand.js +47 -2
  220. package/dist/shared/tooling/testCommand.js.map +1 -1
  221. package/dist/shared/types/finding.d.ts +126 -0
  222. package/dist/shared/types/finding.d.ts.map +1 -1
  223. package/dist/shared/types/finding.js +8 -0
  224. package/dist/shared/types/finding.js.map +1 -1
  225. package/dist/shared/types/remediationOutcome.d.ts +80 -0
  226. package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
  227. package/dist/shared/types/remediationOutcome.js +17 -0
  228. package/dist/shared/types/remediationOutcome.js.map +1 -1
  229. package/dist/shared/types/sessionConfig.d.ts +5 -0
  230. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  231. package/dist/shared/types/sessionConfig.js +1 -0
  232. package/dist/shared/types/sessionConfig.js.map +1 -1
  233. package/package.json +1 -1
  234. package/schemas/audit_result.schema.json +24 -0
  235. package/schemas/audit_results.schema.json +24 -0
  236. package/schemas/finding.schema.json +24 -0
  237. package/dist/audit/adapters/clippy.js.map +0 -1
  238. package/dist/audit/adapters/normalizeExternal.d.ts.map +0 -1
  239. package/dist/audit/adapters/normalizeExternal.js.map +0 -1
  240. package/dist/audit/adapters/rubocop.js.map +0 -1
  241. package/dist/audit/extractors/analyzers/acquisitionEngine.d.ts.map +0 -1
  242. package/dist/audit/extractors/analyzers/acquisitionEngine.js.map +0 -1
  243. package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts.map +0 -1
  244. package/dist/audit/extractors/analyzers/binaryAcquisition.js.map +0 -1
  245. package/dist/audit/extractors/analyzers/candidates.d.ts.map +0 -1
  246. package/dist/audit/extractors/analyzers/candidates.js.map +0 -1
  247. package/dist/audit/types/externalAnalyzer.d.ts.map +0 -1
  248. package/dist/audit/types/externalAnalyzer.js.map +0 -1
  249. /package/dist/{audit/adapters → shared/analyzers}/clippy.js +0 -0
  250. /package/dist/{audit/adapters → shared/analyzers}/rubocop.js +0 -0
@@ -1,8 +1,10 @@
1
1
  import { join } from "node:path";
2
2
  import { tmpdir } from "node:os";
3
+ import { readdirSync } from "node:fs";
4
+ import { AUDIT_TOOLS_DIRNAME } from "../io/auditToolsPaths.js";
3
5
  import { detectNodeEcosystem, detectPythonEcosystem, detectRustEcosystem, detectRubyEcosystem, detectDockerEcosystem, detectGithubActionsEcosystem, } from "./acquisitionEngine.js";
4
- import { parseClippy } from "../../adapters/clippy.js";
5
- import { parseRubocop } from "../../adapters/rubocop.js";
6
+ import { parseClippy } from "./clippy.js";
7
+ import { parseRubocop } from "./rubocop.js";
6
8
  /**
7
9
  * The value-curated EXTERNAL analyzer candidate registry. This is the only place
8
10
  * concrete tools are named; the engine is tool-agnostic. gitleaks is the DEFAULT
@@ -104,7 +106,13 @@ const gitleaksCandidate = {
104
106
  id: "gitleaks",
105
107
  runner: "binary",
106
108
  spec: GITLEAKS_VERSION,
109
+ purpose: "hardcoded secrets and credentials committed to the repo",
107
110
  binary: GITLEAKS_BINARY,
111
+ safetyProfile: {
112
+ config_execution: "none",
113
+ network_egress: false,
114
+ version_pinning: "pinned",
115
+ },
108
116
  defaultRun: true,
109
117
  // Secrets can hide in any repo regardless of ecosystem — always applicable.
110
118
  detect: () => true,
@@ -156,8 +164,14 @@ function parseSemgrep(stdout) {
156
164
  const semgrepCandidate = {
157
165
  id: "semgrep",
158
166
  runner: "pipx",
159
- spec: "semgrep",
160
- // CONSENT-GATED: pulls rule sets and is heavier; only runs with a consent token.
167
+ spec: "semgrep==1.63.0",
168
+ purpose: "security and correctness anti-patterns via community rule sets (pulls rules from the network)",
169
+ safetyProfile: {
170
+ config_execution: "inert-data",
171
+ network_egress: true,
172
+ version_pinning: "pinned",
173
+ },
174
+ // CONSENT-GATED: pulls rule sets from network and is heavier; only runs with a consent token.
161
175
  defaultRun: false,
162
176
  detect: (root) => detectPythonEcosystem(root) || detectNodeEcosystem(root),
163
177
  buildArgv: (prefix, root) => [...prefix, "--json", "--quiet", "--config", "auto", root],
@@ -204,7 +218,13 @@ const eslintCandidate = {
204
218
  id: "eslint",
205
219
  runner: "npx",
206
220
  spec: "eslint@9",
207
- // CONSENT-GATED: needs a repo eslint config to be meaningful.
221
+ purpose: "JS/TS lint findings using the repo's own eslint config",
222
+ safetyProfile: {
223
+ config_execution: "executable",
224
+ network_egress: false,
225
+ version_pinning: "pinned",
226
+ },
227
+ // CONSENT-GATED: needs a repo eslint config to be meaningful; config can execute code.
208
228
  defaultRun: false,
209
229
  detect: (root) => detectNodeEcosystem(root),
210
230
  buildArgv: (prefix, root) => [...prefix, "--format", "json", root],
@@ -307,9 +327,15 @@ const knipCandidate = {
307
327
  id: "knip",
308
328
  runner: "npx",
309
329
  spec: "knip@6",
310
- // CONSENT-GATED: needs repo config to avoid noise, and every flag here is an
311
- // unverified lead (no graph cross-check yet — see docs/backlog.md), not a
312
- // confirmed finding; same tier as eslint/semgrep.
330
+ purpose: "unused files, dependencies, and exports (leads, not verdicts)",
331
+ safetyProfile: {
332
+ config_execution: "executable",
333
+ network_egress: false,
334
+ version_pinning: "pinned",
335
+ },
336
+ // CONSENT-GATED: needs repo config to avoid noise, config can execute code,
337
+ // and every flag here is an unverified lead (no graph cross-check yet — see
338
+ // docs/backlog.md), not a confirmed finding; same tier as eslint/semgrep.
313
339
  defaultRun: false,
314
340
  detect: (root) => detectNodeEcosystem(root),
315
341
  // No positional/cwd flag needed: the acquisition engine already spawns with
@@ -325,6 +351,88 @@ const knipCandidate = {
325
351
  ],
326
352
  parse: parseKnip,
327
353
  };
354
+ /**
355
+ * Detect if a repo contains source files that Lizard can analyze.
356
+ * Lizard supports: python, rust, ruby, java, go, cpp, c, kotlin.
357
+ * Returns true if any such sources exist.
358
+ */
359
+ /**
360
+ * Non-JS/TS languages lizard covers (the in-tree `computeComplexityMetric` owns
361
+ * JS/TS — one signal source per file class, no double-reporting). SOURCE-based
362
+ * detection: ecosystem markers miss exactly the languages that need lizard most
363
+ * (Java/Go/C/C++/Kotlin have no manifest the ecosystem detectors read), so a
364
+ * bounded repo walk over extensions is the honest applicability signal, and the
365
+ * same walk derives the `-l` filter so the argv can never name a language the
366
+ * repo does not contain.
367
+ */
368
+ const LIZARD_LANGUAGE_EXTENSIONS = [
369
+ { lang: "c", exts: [".c", ".h"] },
370
+ { lang: "cpp", exts: [".cpp", ".cc", ".cxx", ".hpp"] },
371
+ { lang: "go", exts: [".go"] },
372
+ { lang: "java", exts: [".java"] },
373
+ { lang: "kotlin", exts: [".kt", ".kts"] },
374
+ { lang: "python", exts: [".py"] },
375
+ { lang: "ruby", exts: [".rb"] },
376
+ { lang: "rust", exts: [".rs"] },
377
+ ];
378
+ const LIZARD_WALK_SKIP_DIRS = new Set([
379
+ "node_modules",
380
+ ".git",
381
+ "dist",
382
+ "build",
383
+ "out",
384
+ "target",
385
+ "vendor",
386
+ AUDIT_TOOLS_DIRNAME,
387
+ ]);
388
+ const LIZARD_WALK_MAX_ENTRIES = 5_000;
389
+ /**
390
+ * The lizard-supported languages whose sources exist under `root` — a bounded
391
+ * breadth-first walk (entry-capped, common build/dep dirs skipped), sorted for
392
+ * stable argv output. Degrades to [] on any fs error.
393
+ */
394
+ function detectedLizardLanguages(root) {
395
+ const extToLang = new Map();
396
+ for (const { lang, exts } of LIZARD_LANGUAGE_EXTENSIONS) {
397
+ for (const ext of exts)
398
+ extToLang.set(ext, lang);
399
+ }
400
+ const found = new Set();
401
+ const queue = [root];
402
+ let seen = 0;
403
+ while (queue.length > 0 && seen < LIZARD_WALK_MAX_ENTRIES) {
404
+ const dir = queue.shift();
405
+ let entries;
406
+ try {
407
+ entries = readdirSync(dir, { withFileTypes: true });
408
+ }
409
+ catch {
410
+ continue;
411
+ }
412
+ for (const entry of entries) {
413
+ if (++seen >= LIZARD_WALK_MAX_ENTRIES)
414
+ break;
415
+ if (entry.isDirectory()) {
416
+ if (entry.name.startsWith(".") || LIZARD_WALK_SKIP_DIRS.has(entry.name))
417
+ continue;
418
+ queue.push(join(dir, entry.name));
419
+ continue;
420
+ }
421
+ const dot = entry.name.lastIndexOf(".");
422
+ if (dot < 0)
423
+ continue;
424
+ const lang = extToLang.get(entry.name.slice(dot).toLowerCase());
425
+ if (lang)
426
+ found.add(lang);
427
+ }
428
+ if (found.size === LIZARD_LANGUAGE_EXTENSIONS.length)
429
+ break;
430
+ }
431
+ return [...found].sort();
432
+ }
433
+ function detectLizardSources(root) {
434
+ return detectedLizardLanguages(root).length > 0;
435
+ }
328
436
  /** Deterministic per-process output directory for jscpd's JSON reporter. */
329
437
  function jscpdReportDir() {
330
438
  return join(tmpdir(), `audit-tools-jscpd-${process.pid}`);
@@ -384,8 +492,17 @@ const jscpdCandidate = {
384
492
  id: "jscpd",
385
493
  runner: "npx",
386
494
  spec: "jscpd@4",
387
- // CONSENT-GATED: heavier full-repo duplication scan; unverified lead, same
388
- // tier as eslint/semgrep/knip.
495
+ purpose: "copy-pasted/duplicated code blocks across the repo",
496
+ safetyProfile: {
497
+ config_execution: "executable",
498
+ network_egress: false,
499
+ version_pinning: "pinned",
500
+ },
501
+ // Duplication scanner: jscpd uses cosmiconfig which loads .jscpd.js files
502
+ // (executable config). While jscpd supports --config flag, it is unverified
503
+ // whether explicit --config suppresses cosmiconfig discovery of .jscpd.js.
504
+ // Stay gated until verified. Candidate for future promotion if cosmiconfig
505
+ // can be reliably disabled.
389
506
  defaultRun: false,
390
507
  detect: (root) => detectNodeEcosystem(root),
391
508
  buildArgv: (prefix, root) => [
@@ -507,7 +624,13 @@ const osvScannerCandidate = {
507
624
  id: "osv-scanner",
508
625
  runner: "binary",
509
626
  spec: OSV_SCANNER_VERSION,
627
+ purpose: "known-vulnerable dependency versions (queries the OSV.dev database over the network)",
510
628
  binary: OSV_SCANNER_BINARY,
629
+ safetyProfile: {
630
+ config_execution: "none",
631
+ network_egress: true,
632
+ version_pinning: "pinned",
633
+ },
511
634
  // CONSENT-GATED: network-dependent (queries the OSV vulnerability database)
512
635
  // and heavier than gitleaks — same tier as semgrep/eslint/knip/jscpd.
513
636
  defaultRun: false,
@@ -526,6 +649,12 @@ const clippyCandidate = {
526
649
  runner: "cargo",
527
650
  // The `cargo` runner prefix is `["cargo", spec]`; spec is the cargo subcommand.
528
651
  spec: "clippy",
652
+ purpose: "Rust lint findings (compiles the crate via the cargo toolchain)",
653
+ safetyProfile: {
654
+ config_execution: "none",
655
+ network_egress: false,
656
+ version_pinning: "toolchain-resolved",
657
+ },
529
658
  // CONSENT-GATED: compiles the crate (heavier), needs the Rust toolchain.
530
659
  defaultRun: false,
531
660
  detect: (root) => detectRustEcosystem(root),
@@ -543,7 +672,14 @@ const rubocopCandidate = {
543
672
  runner: "bundle",
544
673
  // The `bundle` runner prefix is `["bundle", "exec", spec]`.
545
674
  spec: "rubocop",
546
- // CONSENT-GATED: needs the project's bundle/ruby toolchain + rubocop config.
675
+ purpose: "Ruby style and correctness findings using the repo bundle",
676
+ safetyProfile: {
677
+ config_execution: "executable",
678
+ network_egress: false,
679
+ version_pinning: "toolchain-resolved",
680
+ },
681
+ // CONSENT-GATED: needs the project's bundle/ruby toolchain + rubocop config;
682
+ // .rubocop.yml can have require: directives that execute code.
547
683
  defaultRun: false,
548
684
  detect: (root) => detectRubyEcosystem(root),
549
685
  // Read-only: NO `--autocorrect`/`-a`/`-A`. `--format json` → single JSON doc.
@@ -621,9 +757,15 @@ const hadolintCandidate = {
621
757
  id: "hadolint",
622
758
  runner: "binary",
623
759
  spec: HADOLINT_VERSION,
760
+ purpose: "Dockerfile best-practice violations",
624
761
  binary: HADOLINT_BINARY,
625
- // CONSENT-GATED: same tier as the other acquired binaries.
626
- defaultRun: false,
762
+ safetyProfile: {
763
+ config_execution: "none",
764
+ network_egress: false,
765
+ version_pinning: "pinned",
766
+ },
767
+ // Fast, safe, pinned Dockerfile linter — member of the default set.
768
+ defaultRun: true,
627
769
  detect: (root) => detectDockerEcosystem(root),
628
770
  // Read-only by nature (a linter). `--format json`; lint the repo's Dockerfile.
629
771
  buildArgv: (prefix, root) => [...prefix, "--format", "json", join(root, "Dockerfile")],
@@ -705,9 +847,15 @@ const actionlintCandidate = {
705
847
  id: "actionlint",
706
848
  runner: "binary",
707
849
  spec: ACTIONLINT_VERSION,
850
+ purpose: "GitHub Actions workflow errors",
708
851
  binary: ACTIONLINT_BINARY,
709
- // CONSENT-GATED: same tier as the other acquired binaries.
710
- defaultRun: false,
852
+ safetyProfile: {
853
+ config_execution: "none",
854
+ network_egress: false,
855
+ version_pinning: "pinned",
856
+ },
857
+ // Fast, safe, pinned GitHub Actions workflow linter — member of the default set.
858
+ defaultRun: true,
711
859
  detect: (root) => detectGithubActionsEcosystem(root),
712
860
  // Read-only by nature. `-format '{{json .}}'` → JSON array on stdout; run with
713
861
  // cwd=root so actionlint discovers `.github/workflows/` itself.
@@ -756,14 +904,139 @@ const typeCoverageCandidate = {
756
904
  id: "type-coverage",
757
905
  runner: "npx",
758
906
  spec: "type-coverage@2",
759
- // CONSENT-GATED: needs a TS project; same tier as eslint/knip.
760
- defaultRun: false,
907
+ purpose: "per-file TypeScript any-coverage gaps",
908
+ safetyProfile: {
909
+ config_execution: "inert-data",
910
+ network_egress: false,
911
+ version_pinning: "pinned",
912
+ },
913
+ // Fast type coverage reporter for TS projects — member of the default set.
914
+ // Reads tsconfig (inert-data) but does not execute code.
915
+ defaultRun: true,
761
916
  detect: (root) => detectNodeEcosystem(root),
762
917
  // Read-only. `--json --detail` prints per-`any` sites as JSON on stdout; run
763
918
  // with cwd=root so it resolves the project tsconfig itself.
764
919
  buildArgv: (prefix) => [...prefix, "--json", "--detail"],
765
920
  parse: parseTypeCoverage,
766
921
  };
922
+ // ---------------------------------------------------------------------------
923
+ // lizard — Multi-language complexity metrics via pipx (read-only).
924
+ // ---------------------------------------------------------------------------
925
+ /**
926
+ * Parse a line of CSV, handling quoted fields that may contain commas.
927
+ * CSV format: "NLOC,CCN,Token,PARAM,Length,Location,File,Function"
928
+ * Quoted fields are surrounded by double quotes and internal quotes are doubled.
929
+ */
930
+ function parseCsvLine(line) {
931
+ const fields = [];
932
+ let current = "";
933
+ let inQuotes = false;
934
+ for (let i = 0; i < line.length; i++) {
935
+ const char = line[i];
936
+ const nextChar = line[i + 1];
937
+ if (char === '"') {
938
+ if (inQuotes && nextChar === '"') {
939
+ // Escaped quote: add one quote and skip the next
940
+ current += '"';
941
+ i++;
942
+ }
943
+ else {
944
+ // Toggle quote state
945
+ inQuotes = !inQuotes;
946
+ }
947
+ }
948
+ else if (char === "," && !inQuotes) {
949
+ // Field separator (only when not inside quotes)
950
+ fields.push(current.trim());
951
+ current = "";
952
+ }
953
+ else {
954
+ current += char;
955
+ }
956
+ }
957
+ // Add the last field
958
+ fields.push(current.trim());
959
+ return fields;
960
+ }
961
+ /**
962
+ * Parse lizard's CSV output (default: `lizard -l <languages> --csv <path>`).
963
+ * CSV format: "NLOC,CCN,Token,PARAM,Length,Location,File,Function"
964
+ * Degrades to `[]` on parse failure; reports lead findings for complexity overages.
965
+ */
966
+ function parseLizard(stdout) {
967
+ if (!stdout || stdout.trim().length === 0) {
968
+ return [];
969
+ }
970
+ const lines = stdout.trim().split("\n");
971
+ if (lines.length < 2)
972
+ return []; // CSV header only, no data rows
973
+ const items = [];
974
+ // Skip the CSV header (line 0) and process data rows
975
+ for (let i = 1; i < lines.length; i++) {
976
+ const line = lines[i];
977
+ if (!line.trim())
978
+ continue;
979
+ // Parse CSV line, handling quoted fields with embedded commas
980
+ const parts = parseCsvLine(line);
981
+ if (parts.length < 8)
982
+ continue;
983
+ const nloc = parseInt(parts[0], 10);
984
+ const ccn = parseInt(parts[1], 10);
985
+ const param = parseInt(parts[3], 10);
986
+ const file = parts[6] || "";
987
+ const func = parts[7] || "unknown";
988
+ if (!file || isNaN(nloc) || isNaN(ccn) || isNaN(param))
989
+ continue;
990
+ // Emit leads for complexity overages: CCN > 10, NLOC > 200, PARAM > 5
991
+ const issues = [];
992
+ if (ccn > 10)
993
+ issues.push({ rule: "lizard-ccn", threshold: 10, actual: ccn });
994
+ if (nloc > 200)
995
+ issues.push({ rule: "lizard-length", threshold: 200, actual: nloc });
996
+ if (param > 5)
997
+ issues.push({ rule: "lizard-params", threshold: 5, actual: param });
998
+ for (const issue of issues) {
999
+ items.push({
1000
+ id: `${issue.rule}:${file}:${func}`,
1001
+ category: "maintainability",
1002
+ // Threshold bands (leads only, never verdicts): ≥2× the threshold is a
1003
+ // stronger lead than a marginal overage.
1004
+ severity: issue.actual >= issue.threshold * 2 ? "medium" : "low",
1005
+ path: file,
1006
+ summary: `lizard: ${func} — ${issue.rule} ${issue.actual} exceeds threshold ${issue.threshold}`,
1007
+ rule: issue.rule,
1008
+ });
1009
+ }
1010
+ }
1011
+ return items;
1012
+ }
1013
+ const lizardCandidate = {
1014
+ id: "lizard",
1015
+ runner: "pipx",
1016
+ spec: "lizard==1.17.10",
1017
+ purpose: "oversized/over-complex functions in non-JS/TS languages",
1018
+ safetyProfile: {
1019
+ config_execution: "none",
1020
+ network_egress: false,
1021
+ version_pinning: "pinned",
1022
+ },
1023
+ // Multi-language complexity metrics for non-JS/TS languages — member of the default set.
1024
+ // Runs only when non-JS/TS supported languages are detected.
1025
+ // Note: Lizard cannot analyze Dockerfiles, so Docker-only repos are excluded.
1026
+ defaultRun: true,
1027
+ detect: detectLizardSources,
1028
+ // Read-only. `--csv` format; the `-l` filter is DERIVED from the same bounded
1029
+ // source walk detect() ran, so the argv names exactly the languages the repo
1030
+ // contains (JS/TS stay excluded — the in-tree metric owns them).
1031
+ buildArgv: (prefix, root) => [
1032
+ ...prefix,
1033
+ "-l",
1034
+ detectedLizardLanguages(root).join(","),
1035
+ "--csv",
1036
+ root,
1037
+ ],
1038
+ parse: parseLizard,
1039
+ };
767
1040
  /** The curated external analyzer candidate set. gitleaks is the default member. */
768
1041
  export const EXTERNAL_ANALYZER_CANDIDATES = [
769
1042
  gitleaksCandidate,
@@ -777,6 +1050,7 @@ export const EXTERNAL_ANALYZER_CANDIDATES = [
777
1050
  hadolintCandidate,
778
1051
  actionlintCandidate,
779
1052
  typeCoverageCandidate,
1053
+ lizardCandidate,
780
1054
  ];
781
- export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, osvScannerCandidate, parseOsvScanner, OSV_SCANNER_VERSION, clippyCandidate, rubocopCandidate, hadolintCandidate, parseHadolint, HADOLINT_VERSION, actionlintCandidate, parseActionlint, ACTIONLINT_VERSION, typeCoverageCandidate, parseTypeCoverage, };
1055
+ export { gitleaksCandidate, semgrepCandidate, knipCandidate, parseKnip, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, jscpdCandidate, parseJscpd, osvScannerCandidate, parseOsvScanner, OSV_SCANNER_VERSION, clippyCandidate, rubocopCandidate, hadolintCandidate, parseHadolint, HADOLINT_VERSION, actionlintCandidate, parseActionlint, ACTIONLINT_VERSION, typeCoverageCandidate, parseTypeCoverage, lizardCandidate, parseLizard, };
782
1056
  //# sourceMappingURL=candidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidates.js","sourceRoot":"","sources":["../../../src/shared/analyzers/candidates.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ExternalAnalyzerResults } from "../types/externalAnalyzer.js";
1
+ import type { ExternalAnalyzerResults } from "./types.js";
2
2
  /**
3
3
  * Parse cargo-clippy's newline-delimited JSON message stream into the generic
4
4
  * item shape. Degrades to `[]` on empty/malformed input; individual unparseable
@@ -1 +1 @@
1
- {"version":3,"file":"clippy.d.ts","sourceRoot":"","sources":["../../../src/audit/adapters/clippy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAoD5E;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAoDD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAE3E"}
1
+ {"version":3,"file":"clippy.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/clippy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAoD1D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAoDD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAE3E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clippy.js","sourceRoot":"","sources":["../../../src/shared/analyzers/clippy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,14 @@
1
- import type { ExternalAnalyzerGraphEdge, ExternalAnalyzerResults } from "../types/externalAnalyzer.js";
1
+ import type { ExternalAnalyzerGraphEdge, ExternalAnalyzerResults } from "./types.js";
2
+ export interface NormalizeExternalOptions {
3
+ /**
4
+ * Source reader for content-anchored lead provenance (item C): given a
5
+ * repo-relative path, return the file's contents, or undefined when
6
+ * unreadable. When supplied, every item with a `path` + `line_start` whose
7
+ * span hashes non-empty gains an {@link AnalyzerLeadProvenance}; absent or
8
+ * failing, items simply carry no provenance (optional everywhere).
9
+ */
10
+ readSource?: (path: string) => string | undefined;
11
+ }
2
12
  export declare function normalizeGenericExternalResults(tool: string, items: Array<{
3
13
  id?: string;
4
14
  category?: string;
@@ -9,7 +19,7 @@ export declare function normalizeGenericExternalResults(tool: string, items: Arr
9
19
  summary?: string;
10
20
  rule?: string;
11
21
  raw?: unknown;
12
- }>): ExternalAnalyzerResults;
22
+ }>, options?: NormalizeExternalOptions): ExternalAnalyzerResults;
13
23
  /**
14
24
  * Normalize a raw list of edge candidates (from an external dataflow analyzer:
15
25
  * ast-grep / broader-semgrep dataflow / CodeQL) into the language-neutral
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeExternal.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/normalizeExternal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAwBpB,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACnD;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC,EACF,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAyDzB;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,KAAK,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,GACD,yBAAyB,EAAE,CA4B7B"}
@@ -1,3 +1,4 @@
1
+ import { hashAnalyzerSnippet, } from "./provenance.js";
1
2
  function normalizeExternalSeverity(value) {
2
3
  switch (value?.toLowerCase()) {
3
4
  case "critical": return "critical";
@@ -13,7 +14,7 @@ function normalizeExternalSeverity(value) {
13
14
  default: return "info";
14
15
  }
15
16
  }
16
- export function normalizeGenericExternalResults(tool, items) {
17
+ export function normalizeGenericExternalResults(tool, items, options = {}) {
17
18
  const valid = items.filter((item) => item.path && item.summary);
18
19
  const dropped = items.length - valid.length;
19
20
  if (dropped > 0) {
@@ -25,20 +26,48 @@ export function normalizeGenericExternalResults(tool, items) {
25
26
  reason: "missing path or summary",
26
27
  }) + "\n");
27
28
  }
29
+ const sourceCache = new Map();
30
+ const readCached = (path) => {
31
+ if (!options.readSource)
32
+ return undefined;
33
+ if (!sourceCache.has(path))
34
+ sourceCache.set(path, options.readSource(path));
35
+ return sourceCache.get(path);
36
+ };
37
+ const provenanceFor = (item) => {
38
+ if (!item.path || item.line_start === undefined)
39
+ return undefined;
40
+ const source = readCached(item.path);
41
+ if (source === undefined)
42
+ return undefined;
43
+ const snippet_hash = hashAnalyzerSnippet(source, item.line_start, item.line_end);
44
+ if (snippet_hash === undefined)
45
+ return undefined;
46
+ return {
47
+ analyzer_id: tool,
48
+ ...(item.rule !== undefined ? { rule: item.rule } : {}),
49
+ path: item.path,
50
+ snippet_hash,
51
+ };
52
+ };
28
53
  return {
29
54
  tool,
30
55
  generated_at: new Date().toISOString(),
31
- results: valid.map((item, index) => ({
32
- id: item.id ?? `${tool}-${index + 1}`,
33
- category: item.category ?? "unknown",
34
- severity: normalizeExternalSeverity(item.severity),
35
- path: item.path,
36
- line_start: item.line_start,
37
- line_end: item.line_end,
38
- summary: item.summary,
39
- rule: item.rule,
40
- raw: item.raw,
41
- })),
56
+ results: valid.map((item, index) => {
57
+ const provenance = provenanceFor(item);
58
+ return {
59
+ id: item.id ?? `${tool}-${index + 1}`,
60
+ category: item.category ?? "unknown",
61
+ severity: normalizeExternalSeverity(item.severity),
62
+ path: item.path,
63
+ line_start: item.line_start,
64
+ line_end: item.line_end,
65
+ summary: item.summary,
66
+ rule: item.rule,
67
+ raw: item.raw,
68
+ ...(provenance !== undefined ? { provenance } : {}),
69
+ };
70
+ }),
42
71
  };
43
72
  }
44
73
  function clampUnitInterval(value) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeExternal.js","sourceRoot":"","sources":["../../../src/shared/analyzers/normalizeExternal.ts"],"names":[],"mappings":"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"}