audit-tools 0.30.36 → 0.30.38

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 (174) hide show
  1. package/dist/audit/cli/auditStep.d.ts +2 -0
  2. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  3. package/dist/audit/cli/auditStep.js +1 -0
  4. package/dist/audit/cli/auditStep.js.map +1 -1
  5. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  6. package/dist/audit/cli/nextStepCommand.js +9 -0
  7. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  8. package/dist/audit/cli/nextStepHelpers.d.ts +8 -1
  9. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  10. package/dist/audit/cli/nextStepHelpers.js +2 -0
  11. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  12. package/dist/audit/cli/prompts.d.ts +2 -0
  13. package/dist/audit/cli/prompts.d.ts.map +1 -1
  14. package/dist/audit/cli/prompts.js +7 -3
  15. package/dist/audit/cli/prompts.js.map +1 -1
  16. package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
  17. package/dist/audit/cli/semanticReviewStep.js +15 -0
  18. package/dist/audit/cli/semanticReviewStep.js.map +1 -1
  19. package/dist/audit/extractors/analyzers/acquisitionEngine.d.ts +48 -5
  20. package/dist/audit/extractors/analyzers/acquisitionEngine.d.ts.map +1 -1
  21. package/dist/audit/extractors/analyzers/acquisitionEngine.js +116 -17
  22. package/dist/audit/extractors/analyzers/acquisitionEngine.js.map +1 -1
  23. package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts +65 -0
  24. package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts.map +1 -0
  25. package/dist/audit/extractors/analyzers/binaryAcquisition.js +153 -0
  26. package/dist/audit/extractors/analyzers/binaryAcquisition.js.map +1 -0
  27. package/dist/audit/extractors/analyzers/candidates.d.ts +23 -0
  28. package/dist/audit/extractors/analyzers/candidates.d.ts.map +1 -0
  29. package/dist/audit/extractors/analyzers/candidates.js +214 -0
  30. package/dist/audit/extractors/analyzers/candidates.js.map +1 -0
  31. package/dist/audit/extractors/analyzers/registry.d.ts +5 -2
  32. package/dist/audit/extractors/analyzers/registry.d.ts.map +1 -1
  33. package/dist/audit/extractors/analyzers/registry.js +3 -1
  34. package/dist/audit/extractors/analyzers/registry.js.map +1 -1
  35. package/dist/audit/extractors/graph.d.ts +2 -1
  36. package/dist/audit/extractors/graph.d.ts.map +1 -1
  37. package/dist/audit/extractors/graph.js +7 -2
  38. package/dist/audit/extractors/graph.js.map +1 -1
  39. package/dist/audit/extractors/risk.d.ts +1 -1
  40. package/dist/audit/extractors/risk.d.ts.map +1 -1
  41. package/dist/audit/extractors/risk.js +4 -2
  42. package/dist/audit/extractors/risk.js.map +1 -1
  43. package/dist/audit/io/artifacts.d.ts +5 -5
  44. package/dist/audit/io/artifacts.d.ts.map +1 -1
  45. package/dist/audit/io/artifacts.js +1 -1
  46. package/dist/audit/io/artifacts.js.map +1 -1
  47. package/dist/audit/orchestrator/acquisitionExecutor.d.ts +45 -0
  48. package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -0
  49. package/dist/audit/orchestrator/acquisitionExecutor.js +94 -0
  50. package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -0
  51. package/dist/audit/orchestrator/advanceTypes.d.ts +10 -0
  52. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  53. package/dist/audit/orchestrator/artifactMetadata.d.ts.map +1 -1
  54. package/dist/audit/orchestrator/artifactMetadata.js +9 -0
  55. package/dist/audit/orchestrator/artifactMetadata.js.map +1 -1
  56. package/dist/audit/orchestrator/coverageElementBaseline.d.ts +54 -0
  57. package/dist/audit/orchestrator/coverageElementBaseline.d.ts.map +1 -0
  58. package/dist/audit/orchestrator/coverageElementBaseline.js +138 -0
  59. package/dist/audit/orchestrator/coverageElementBaseline.js.map +1 -0
  60. package/dist/audit/orchestrator/dependencyMap.d.ts +1 -1
  61. package/dist/audit/orchestrator/dependencyMap.d.ts.map +1 -1
  62. package/dist/audit/orchestrator/dependencyMap.js +11 -6
  63. package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
  64. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  65. package/dist/audit/orchestrator/executorRunners.js +2 -0
  66. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  67. package/dist/audit/orchestrator/executors.d.ts.map +1 -1
  68. package/dist/audit/orchestrator/executors.js +5 -0
  69. package/dist/audit/orchestrator/executors.js.map +1 -1
  70. package/dist/audit/orchestrator/fileAnchors.d.ts +1 -1
  71. package/dist/audit/orchestrator/fileAnchors.d.ts.map +1 -1
  72. package/dist/audit/orchestrator/fileAnchors.js +2 -1
  73. package/dist/audit/orchestrator/fileAnchors.js.map +1 -1
  74. package/dist/audit/orchestrator/flowRequeue.d.ts +1 -1
  75. package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
  76. package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
  77. package/dist/audit/orchestrator/ingestionExecutors.d.ts +1 -1
  78. package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
  79. package/dist/audit/orchestrator/ingestionExecutors.js +2 -1
  80. package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
  81. package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
  82. package/dist/audit/orchestrator/nextStep.js +1 -0
  83. package/dist/audit/orchestrator/nextStep.js.map +1 -1
  84. package/dist/audit/orchestrator/planning.d.ts +1 -1
  85. package/dist/audit/orchestrator/planning.d.ts.map +1 -1
  86. package/dist/audit/orchestrator/planning.js +2 -4
  87. package/dist/audit/orchestrator/planning.js.map +1 -1
  88. package/dist/audit/orchestrator/planningExecutors.d.ts.map +1 -1
  89. package/dist/audit/orchestrator/planningExecutors.js +14 -0
  90. package/dist/audit/orchestrator/planningExecutors.js.map +1 -1
  91. package/dist/audit/orchestrator/requeue.d.ts +1 -1
  92. package/dist/audit/orchestrator/requeue.d.ts.map +1 -1
  93. package/dist/audit/orchestrator/requeue.js.map +1 -1
  94. package/dist/audit/orchestrator/requeueCommand.d.ts +1 -1
  95. package/dist/audit/orchestrator/requeueCommand.d.ts.map +1 -1
  96. package/dist/audit/orchestrator/requeueCommand.js.map +1 -1
  97. package/dist/audit/orchestrator/requeueUtils.d.ts +1 -1
  98. package/dist/audit/orchestrator/requeueUtils.d.ts.map +1 -1
  99. package/dist/audit/orchestrator/requeueUtils.js +1 -3
  100. package/dist/audit/orchestrator/requeueUtils.js.map +1 -1
  101. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts +1 -1
  102. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts.map +1 -1
  103. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +2 -2
  104. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
  105. package/dist/audit/orchestrator/selectiveDeepening/shared.js +2 -1
  106. package/dist/audit/orchestrator/selectiveDeepening/shared.js.map +1 -1
  107. package/dist/audit/orchestrator/state.d.ts.map +1 -1
  108. package/dist/audit/orchestrator/state.js +4 -0
  109. package/dist/audit/orchestrator/state.js.map +1 -1
  110. package/dist/audit/orchestrator/structureExecutors.d.ts.map +1 -1
  111. package/dist/audit/orchestrator/structureExecutors.js +1 -12
  112. package/dist/audit/orchestrator/structureExecutors.js.map +1 -1
  113. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
  114. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +3 -2
  115. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  116. package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
  117. package/dist/audit/orchestrator/synthesisExecutors.js +0 -2
  118. package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
  119. package/dist/audit/orchestrator/taskBuilder.d.ts +2 -2
  120. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  121. package/dist/audit/orchestrator/taskBuilder.js +32 -30
  122. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  123. package/dist/audit/orchestrator/trivialAudit.d.ts +1 -1
  124. package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
  125. package/dist/audit/orchestrator/trivialAudit.js +3 -1
  126. package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
  127. package/dist/audit/reporting/mergeFindings.d.ts +1 -1
  128. package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
  129. package/dist/audit/reporting/mergeFindings.js +4 -16
  130. package/dist/audit/reporting/mergeFindings.js.map +1 -1
  131. package/dist/audit/reporting/synthesis.d.ts +1 -3
  132. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  133. package/dist/audit/reporting/synthesis.js +1 -1
  134. package/dist/audit/reporting/synthesis.js.map +1 -1
  135. package/dist/audit/types/artifactMetadata.d.ts +10 -0
  136. package/dist/audit/types/artifactMetadata.d.ts.map +1 -1
  137. package/dist/audit/types/externalAnalyzer.d.ts +74 -0
  138. package/dist/audit/types/externalAnalyzer.d.ts.map +1 -1
  139. package/dist/audit/types/externalAnalyzer.js +31 -0
  140. package/dist/audit/types/externalAnalyzer.js.map +1 -1
  141. package/dist/audit/validation/artifacts.d.ts.map +1 -1
  142. package/dist/audit/validation/artifacts.js +1 -1
  143. package/dist/audit/validation/artifacts.js.map +1 -1
  144. package/dist/audit/validation/auditResults.d.ts +7 -0
  145. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  146. package/dist/audit/validation/auditResults.js +43 -8
  147. package/dist/audit/validation/auditResults.js.map +1 -1
  148. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  149. package/dist/remediate/steps/nextStep.js +13 -1
  150. package/dist/remediate/steps/nextStep.js.map +1 -1
  151. package/dist/shared/index.d.ts +3 -4
  152. package/dist/shared/index.d.ts.map +1 -1
  153. package/dist/shared/index.js +2 -3
  154. package/dist/shared/index.js.map +1 -1
  155. package/dist/shared/quota/dispatchDriverPrompt.d.ts +15 -0
  156. package/dist/shared/quota/dispatchDriverPrompt.d.ts.map +1 -0
  157. package/dist/shared/quota/dispatchDriverPrompt.js +40 -0
  158. package/dist/shared/quota/dispatchDriverPrompt.js.map +1 -0
  159. package/dist/shared/quota/scheduler.d.ts +50 -0
  160. package/dist/shared/quota/scheduler.d.ts.map +1 -1
  161. package/dist/shared/quota/scheduler.js +47 -0
  162. package/dist/shared/quota/scheduler.js.map +1 -1
  163. package/dist/shared/types/sessionConfig.d.ts +17 -0
  164. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  165. package/dist/shared/types/sessionConfig.js.map +1 -1
  166. package/package.json +1 -1
  167. package/dist/audit/extractors/secrets.d.ts +0 -20
  168. package/dist/audit/extractors/secrets.d.ts.map +0 -1
  169. package/dist/audit/extractors/secrets.js +0 -0
  170. package/dist/audit/extractors/secrets.js.map +0 -1
  171. package/dist/shared/secrets.d.ts +0 -32
  172. package/dist/shared/secrets.d.ts.map +0 -1
  173. package/dist/shared/secrets.js +0 -165
  174. package/dist/shared/secrets.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { type AnalyzerSetting, type RunTrackedResult } from "audit-tools/shared";
2
2
  import type { ExternalAnalyzerResults, ExternalAnalyzerToolStatus } from "../../types/externalAnalyzer.js";
3
+ import { type BinarySpec, type BinaryResolveOptions } from "./binaryAcquisition.js";
3
4
  /**
4
5
  * F5 — external analyzer acquisition engine.
5
6
  *
@@ -21,18 +22,26 @@ import type { ExternalAnalyzerResults, ExternalAnalyzerToolStatus } from "../../
21
22
  * its `AnalyzerSetting` (auto|ephemeral|permanent) — even a `permanent`,
22
23
  * pre-installed tool cannot spawn without consent (CE-005). The small
23
24
  * value-curated DEFAULT set runs without prompting.
24
- * - **Own-vs-acquire boundary.** git-history / secret-scan are OWNED by F6 and
25
- * are rejected at registration — never acquired here.
25
+ * - **Own-vs-acquire boundary.** git-history is OWNED by F6 and is rejected at
26
+ * registration — never acquired here. Secret scanning is ACQUIRED (gitleaks).
26
27
  * - **Run-safety gate written once** (`runSafetyGate`): capability-probe, pin
27
28
  * version, read-only/sandboxed argv, degrade-to-empty.
28
29
  * - **Degrade-to-empty + report-skipped-never-silently.** Every candidate
29
30
  * yields exactly one {@link ExternalAnalyzerToolStatus}; a failure never
30
31
  * throws and never silently drops the candidate.
31
32
  */
32
- /** Tool ids OWNED by F6 (git-history mining / secret scanning). Never acquired. */
33
+ /**
34
+ * Tool ids OWNED by F6 and never acquired. Only git-history mining is OWNED — it
35
+ * is a truly-agnostic signal with no ecosystem tool. Secret scanning is ACQUIRED
36
+ * (gitleaks), not owned, so it is deliberately NOT listed here.
37
+ */
33
38
  export declare const OWNED_TOOL_IDS: Set<string>;
34
- /** Ecosystem runners F5 knows how to drive. */
35
- export type EcosystemRunner = "npx" | "pipx" | "cargo" | "bundle";
39
+ /**
40
+ * Ecosystem runners F5 knows how to drive. `npx`/`pipx`/`cargo`/`bundle` acquire
41
+ * + run a pinned package ephemerally; `binary` runs a standalone release binary
42
+ * resolved (and downloaded-if-absent) by the binary-acquisition seam.
43
+ */
44
+ export type EcosystemRunner = "npx" | "pipx" | "cargo" | "bundle" | "binary";
36
45
  /**
37
46
  * One acquirable external analyzer. `defaultRun: true` marks a member of the
38
47
  * small value-curated set that may run without a consent token; everything else
@@ -67,10 +76,24 @@ export interface ExternalAnalyzerCandidate {
67
76
  from?: unknown;
68
77
  to?: unknown;
69
78
  }>;
79
+ /**
80
+ * For tools that ONLY report to a file (e.g. gitleaks) rather than stdout: the
81
+ * report path the tool was told to write (must match `buildArgv`). When set, the
82
+ * engine reads this file (degrade-to-"" if absent) and passes its contents to
83
+ * `parse` instead of stdout, then best-effort removes it. Omit for stdout tools.
84
+ */
85
+ reportFile?(root: string): string;
70
86
  /** Whether this ecosystem is present (marker file detection). */
71
87
  detect(root: string): boolean;
72
88
  /** Member of the value-curated DEFAULT set (runs without prompting). */
73
89
  defaultRun: boolean;
90
+ /**
91
+ * Acquisition spec for a `runner: "binary"` candidate — how to probe PATH and,
92
+ * if absent, download + SHA256-verify the pinned release binary. Resolved ahead
93
+ * of the (synchronous) engine by `resolveBinaryCandidates`; ignored for the
94
+ * package-manager runners.
95
+ */
96
+ binary?: BinarySpec;
74
97
  }
75
98
  export declare function detectNodeEcosystem(root: string): boolean;
76
99
  export declare function detectPythonEcosystem(root: string): boolean;
@@ -92,6 +115,12 @@ export interface AcquisitionEngineOptions {
92
115
  run?: AcquisitionRunner;
93
116
  /** Injectable logger; defaults to a no-op (degrade quietly to status records). */
94
117
  log?: (...args: unknown[]) => void;
118
+ /**
119
+ * Resolved executable path per `runner: "binary"` candidate id, produced by
120
+ * `resolveBinaryCandidates`. A binary candidate with no entry here is reported
121
+ * `not_resolved` (acquisition failed / was skipped) and never spawned.
122
+ */
123
+ resolvedBinaries?: Record<string, string>;
95
124
  }
96
125
  /**
97
126
  * Single subprocess-SPAWN admission chokepoint. Returns the reason a spawn is
@@ -127,6 +156,20 @@ export declare function runExternalAnalyzer(candidate: ExternalAnalyzerCandidate
127
156
  * boundary is enforced HERE so an owned tool can never enter the engine.
128
157
  */
129
158
  export declare function registerExternalAnalyzers(candidates: ExternalAnalyzerCandidate[]): ExternalAnalyzerCandidate[];
159
+ export interface ResolvedBinaries {
160
+ /** id → resolved executable path/name, for candidates that resolved. */
161
+ resolvedBinaries: Record<string, string>;
162
+ /** One status per `binary` candidate that did NOT resolve (skipped/unavailable). */
163
+ unresolvedStatuses: ExternalAnalyzerToolStatus[];
164
+ }
165
+ /**
166
+ * Resolve (acquiring if absent) the executable for every `runner: "binary"`
167
+ * candidate, ahead of the synchronous engine. This is where the async network
168
+ * I/O + checksum gate lives. Owned tools and non-binary candidates are skipped.
169
+ * Never throws; an unresolved binary yields a `not_resolved`/`skipped` status so
170
+ * the caller can record the coverage gap (never silently dropped).
171
+ */
172
+ export declare function resolveBinaryCandidates(candidates: ExternalAnalyzerCandidate[], root: string, options?: AcquisitionEngineOptions & BinaryResolveOptions): Promise<ResolvedBinaries>;
130
173
  export interface RunAllOutcome {
131
174
  results: ExternalAnalyzerResults[];
132
175
  statuses: ExternalAnalyzerToolStatus[];
@@ -1 +1 @@
1
- {"version":3,"file":"acquisitionEngine.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acquisitionEngine.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { existsSync } from "node:fs";
1
+ import { existsSync, readFileSync, rmSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { runTracked, } from "audit-tools/shared";
4
4
  import { normalizeGenericExternalResults, normalizeGenericExternalEdges, } from "../../adapters/normalizeExternal.js";
5
+ import { resolveBinary, } from "./binaryAcquisition.js";
5
6
  /**
6
7
  * F5 — external analyzer acquisition engine.
7
8
  *
@@ -23,21 +24,22 @@ import { normalizeGenericExternalResults, normalizeGenericExternalEdges, } from
23
24
  * its `AnalyzerSetting` (auto|ephemeral|permanent) — even a `permanent`,
24
25
  * pre-installed tool cannot spawn without consent (CE-005). The small
25
26
  * value-curated DEFAULT set runs without prompting.
26
- * - **Own-vs-acquire boundary.** git-history / secret-scan are OWNED by F6 and
27
- * are rejected at registration — never acquired here.
27
+ * - **Own-vs-acquire boundary.** git-history is OWNED by F6 and is rejected at
28
+ * registration — never acquired here. Secret scanning is ACQUIRED (gitleaks).
28
29
  * - **Run-safety gate written once** (`runSafetyGate`): capability-probe, pin
29
30
  * version, read-only/sandboxed argv, degrade-to-empty.
30
31
  * - **Degrade-to-empty + report-skipped-never-silently.** Every candidate
31
32
  * yields exactly one {@link ExternalAnalyzerToolStatus}; a failure never
32
33
  * throws and never silently drops the candidate.
33
34
  */
34
- /** Tool ids OWNED by F6 (git-history mining / secret scanning). Never acquired. */
35
+ /**
36
+ * Tool ids OWNED by F6 and never acquired. Only git-history mining is OWNED — it
37
+ * is a truly-agnostic signal with no ecosystem tool. Secret scanning is ACQUIRED
38
+ * (gitleaks), not owned, so it is deliberately NOT listed here.
39
+ */
35
40
  export const OWNED_TOOL_IDS = new Set([
36
41
  "git-history",
37
42
  "git-history-mining",
38
- "secret-scan",
39
- "secret-scanner",
40
- "secrets",
41
43
  ]);
42
44
  /** Marker-file ecosystem detection — deterministic, no language→tool table. */
43
45
  function hasAnyMarker(root, markers) {
@@ -66,6 +68,8 @@ function runnerProbeArgv(runner) {
66
68
  case "pipx": return ["pipx", "--version"];
67
69
  case "cargo": return ["cargo", "--version"];
68
70
  case "bundle": return ["bundle", "--version"];
71
+ // `binary` is resolved (+ checksum-gated) ahead of the engine — no runner probe.
72
+ case "binary": return [];
69
73
  }
70
74
  }
71
75
  function runnerPrefix(runner, spec) {
@@ -75,6 +79,9 @@ function runnerPrefix(runner, spec) {
75
79
  case "pipx": return ["pipx", "run", "--spec", spec];
76
80
  case "cargo": return ["cargo", spec];
77
81
  case "bundle": return ["bundle", "exec", spec];
82
+ // For `binary` the resolved executable path is supplied via
83
+ // options.resolvedBinaries and used directly — this is never called.
84
+ case "binary": return [];
78
85
  }
79
86
  }
80
87
  /**
@@ -154,16 +161,39 @@ export function runExternalAnalyzer(candidate, root, options = {}) {
154
161
  status: { tool: candidate.id, resolved: false, status: "skipped", error: denied },
155
162
  };
156
163
  }
157
- // Run-safety gate: capability-probe the runner before the real spawn.
158
- const gate = runSafetyGate(candidate, run, root);
159
- if (!gate.ok) {
160
- log("[f5] %s safety gate failed: %s", candidate.id, gate.reason);
161
- return {
162
- results: emptyResults(candidate.id),
163
- status: { tool: candidate.id, resolved: false, status: "not_resolved", error: gate.reason },
164
- };
164
+ // Resolve the argv prefix. A `binary` candidate is gated by binary-acquisition
165
+ // (PATH probe / checksum-verified download) AHEAD of the engine, so it skips the
166
+ // runner probe and uses its resolved executable path; everything else passes the
167
+ // capability-probe run-safety gate before its first real spawn.
168
+ let prefix;
169
+ if (candidate.runner === "binary") {
170
+ const resolved = options.resolvedBinaries?.[candidate.id];
171
+ if (!resolved) {
172
+ log("[f5] %s binary not acquired", candidate.id);
173
+ return {
174
+ results: emptyResults(candidate.id),
175
+ status: {
176
+ tool: candidate.id,
177
+ resolved: false,
178
+ status: "not_resolved",
179
+ error: "binary not acquired (PATH probe failed and download unavailable)",
180
+ },
181
+ };
182
+ }
183
+ prefix = [resolved];
184
+ }
185
+ else {
186
+ const gate = runSafetyGate(candidate, run, root);
187
+ if (!gate.ok) {
188
+ log("[f5] %s safety gate failed: %s", candidate.id, gate.reason);
189
+ return {
190
+ results: emptyResults(candidate.id),
191
+ status: { tool: candidate.id, resolved: false, status: "not_resolved", error: gate.reason },
192
+ };
193
+ }
194
+ prefix = runnerPrefix(candidate.runner, candidate.spec);
165
195
  }
166
- const argv = candidate.buildArgv(runnerPrefix(candidate.runner, candidate.spec), root);
196
+ const argv = candidate.buildArgv(prefix, root);
167
197
  const command = argv.join(" ");
168
198
  let result;
169
199
  try {
@@ -194,9 +224,28 @@ export function runExternalAnalyzer(candidate, root, options = {}) {
194
224
  },
195
225
  };
196
226
  }
227
+ // Tools that report to a file (gitleaks) are read from there; stdout tools use
228
+ // stdout. The report file is best-effort removed after parsing.
229
+ let parseInput = result.stdout;
230
+ if (candidate.reportFile) {
231
+ const reportPath = candidate.reportFile(root);
232
+ try {
233
+ parseInput = existsSync(reportPath) ? readFileSync(reportPath, "utf8") : "";
234
+ }
235
+ catch {
236
+ parseInput = "";
237
+ }
238
+ try {
239
+ if (existsSync(reportPath))
240
+ rmSync(reportPath, { force: true });
241
+ }
242
+ catch {
243
+ /* best-effort */
244
+ }
245
+ }
197
246
  let items;
198
247
  try {
199
- items = candidate.parse(result.stdout);
248
+ items = candidate.parse(parseInput);
200
249
  }
201
250
  catch (error) {
202
251
  return {
@@ -241,6 +290,56 @@ export function registerExternalAnalyzers(candidates) {
241
290
  }
242
291
  return accepted;
243
292
  }
293
+ /**
294
+ * Resolve (acquiring if absent) the executable for every `runner: "binary"`
295
+ * candidate, ahead of the synchronous engine. This is where the async network
296
+ * I/O + checksum gate lives. Owned tools and non-binary candidates are skipped.
297
+ * Never throws; an unresolved binary yields a `not_resolved`/`skipped` status so
298
+ * the caller can record the coverage gap (never silently dropped).
299
+ */
300
+ export async function resolveBinaryCandidates(candidates, root, options = {}) {
301
+ const resolvedBinaries = {};
302
+ const unresolvedStatuses = [];
303
+ for (const candidate of candidates) {
304
+ if (candidate.runner !== "binary" || !candidate.binary)
305
+ continue;
306
+ if (OWNED_TOOL_IDS.has(candidate.id))
307
+ continue;
308
+ if (!candidate.detect(root)) {
309
+ unresolvedStatuses.push({
310
+ tool: candidate.id,
311
+ resolved: false,
312
+ status: "skipped",
313
+ error: "ecosystem not detected",
314
+ });
315
+ continue;
316
+ }
317
+ const setting = settingFor(options.analyzers, candidate.id);
318
+ const denied = admitSpawn(candidate, setting, options.consentToken);
319
+ if (denied) {
320
+ unresolvedStatuses.push({
321
+ tool: candidate.id,
322
+ resolved: false,
323
+ status: "skipped",
324
+ error: denied,
325
+ });
326
+ continue;
327
+ }
328
+ const resolution = await resolveBinary(candidate.binary, options);
329
+ if (resolution.command) {
330
+ resolvedBinaries[candidate.id] = resolution.command;
331
+ }
332
+ else {
333
+ unresolvedStatuses.push({
334
+ tool: candidate.id,
335
+ resolved: false,
336
+ status: "not_resolved",
337
+ error: resolution.note ?? "binary unavailable",
338
+ });
339
+ }
340
+ }
341
+ return { resolvedBinaries, unresolvedStatuses };
342
+ }
244
343
  /**
245
344
  * Drive the whole registered candidate set through the engine for one repo,
246
345
  * collecting one status per candidate. Owned tools are rejected at registration;
@@ -1 +1 @@
1
- {"version":3,"file":"acquisitionEngine.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acquisitionEngine.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { type RunTrackedResult } from "audit-tools/shared";
2
+ /**
3
+ * Generic acquisition of a standalone mature analyzer BINARY (gitleaks,
4
+ * trufflehog, …) that has no language package-manager runner. The own-vs-acquire
5
+ * policy's "acquire the mature tool" half for tools shipped as release binaries.
6
+ *
7
+ * Resolution order (all degrade-to-unavailable, never throw):
8
+ * 1. PATH — the tool is already installed (`<tool> version` probes 0).
9
+ * 2. cache — a previously-downloaded pinned binary is present + executable.
10
+ * 3. download — fetch the pinned GitHub-release asset for THIS os/arch over
11
+ * HTTPS, fetch that release's `checksums.txt`, SHA256-verify the
12
+ * asset against it, extract via the system `tar`, cache, return.
13
+ *
14
+ * Security invariants: version is PINNED (reproducibility); the downloaded asset
15
+ * is SHA256-verified against the official release checksums BEFORE it is extracted
16
+ * or executed; the fetcher is injected so the engine is testable without network
17
+ * and an absent network degrades cleanly. A checksum mismatch is fatal-to-this-tool
18
+ * (returns `unavailable`), never executed.
19
+ */
20
+ /** Injected network fetch: returns the URL's bytes, or `null` when unavailable. */
21
+ export interface BinaryFetcher {
22
+ (url: string): Promise<Uint8Array | null>;
23
+ }
24
+ /** Injected command runner (probe PATH, run `tar`); defaults to the shared runTracked. */
25
+ export interface BinaryCommandRunner {
26
+ (argv: string[], cwd: string): RunTrackedResult;
27
+ }
28
+ /** Pinned, os/arch-aware description of one acquirable release binary. */
29
+ export interface BinarySpec {
30
+ /** Executable name on PATH / inside the archive (e.g. "gitleaks"). */
31
+ binaryName: string;
32
+ /** Pinned release version, no leading `v` (e.g. "8.18.4"). */
33
+ version: string;
34
+ /** Probe argv proving an on-PATH install (e.g. ["gitleaks","version"]). */
35
+ versionProbeArgs: string[];
36
+ /** Asset filename for a platform/arch, or null when unsupported. */
37
+ assetFor(platform: NodeJS.Platform, arch: string): string | null;
38
+ /** Checksums-file asset name (lists `<sha256> <asset>` lines). */
39
+ checksumsAsset: string;
40
+ /** `${releaseUrlBase}/${assetName}` is the download URL (asset + checksums). */
41
+ releaseUrlForAsset(assetName: string): string;
42
+ }
43
+ export interface BinaryResolveOptions {
44
+ fetch?: BinaryFetcher;
45
+ run?: BinaryCommandRunner;
46
+ /** Root cache dir for downloaded binaries; default `<tmpdir>/audit-tools-bincache`. */
47
+ cacheDir?: string;
48
+ platform?: NodeJS.Platform;
49
+ arch?: string;
50
+ }
51
+ export interface BinaryResolution {
52
+ status: "path" | "cached" | "downloaded" | "unavailable";
53
+ /** Resolved executable (PATH name or absolute cached path); null when unavailable. */
54
+ command: string | null;
55
+ note?: string;
56
+ }
57
+ /** Parse a `<sha256>␠␠<asset>` checksums file for one asset's expected digest. */
58
+ export declare function expectedSha256For(checksumsText: string, assetName: string): string | null;
59
+ /**
60
+ * Resolve an executable for `spec`, acquiring it if necessary. Async (download is
61
+ * network I/O); never throws. The result's `command` is what the engine spawns,
62
+ * or null when the tool could not be made available.
63
+ */
64
+ export declare function resolveBinary(spec: BinarySpec, options?: BinaryResolveOptions): Promise<BinaryResolution>;
65
+ //# sourceMappingURL=binaryAcquisition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binaryAcquisition.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"AAYA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AAEH,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAClC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjD;AAED,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjE,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;IACzD,sFAAsF;IACtF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAMf;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAqG3B"}
@@ -0,0 +1,153 @@
1
+ import { createHash } from "node:crypto";
2
+ import { chmodSync, existsSync, mkdirSync, readdirSync, rmSync, statSync, writeFileSync, } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { tmpdir } from "node:os";
5
+ import { runTracked } from "audit-tools/shared";
6
+ function defaultCacheDir() {
7
+ return join(tmpdir(), "audit-tools-bincache");
8
+ }
9
+ function exeName(binaryName, platform) {
10
+ return platform === "win32" ? `${binaryName}.exe` : binaryName;
11
+ }
12
+ /** Parse a `<sha256>␠␠<asset>` checksums file for one asset's expected digest. */
13
+ export function expectedSha256For(checksumsText, assetName) {
14
+ for (const line of checksumsText.split(/\r?\n/)) {
15
+ const match = line.trim().match(/^([0-9a-fA-F]{64})\s+\*?(.+)$/);
16
+ if (match && match[2].trim() === assetName)
17
+ return match[1].toLowerCase();
18
+ }
19
+ return null;
20
+ }
21
+ function sha256(bytes) {
22
+ return createHash("sha256").update(bytes).digest("hex");
23
+ }
24
+ /**
25
+ * Resolve an executable for `spec`, acquiring it if necessary. Async (download is
26
+ * network I/O); never throws. The result's `command` is what the engine spawns,
27
+ * or null when the tool could not be made available.
28
+ */
29
+ export async function resolveBinary(spec, options = {}) {
30
+ const platform = options.platform ?? process.platform;
31
+ const arch = options.arch ?? process.arch;
32
+ const run = options.run ?? ((argv, cwd) => runTracked(argv, { cwd }));
33
+ const cacheDir = options.cacheDir ?? defaultCacheDir();
34
+ // 1. PATH — already installed.
35
+ const probe = run(spec.versionProbeArgs, process.cwd());
36
+ if (!probe.error && probe.status === 0) {
37
+ return { status: "path", command: spec.binaryName };
38
+ }
39
+ // 2. cache — a previously-downloaded pinned binary.
40
+ const versionDir = join(cacheDir, `${spec.binaryName}-${spec.version}`);
41
+ const cachedPath = join(versionDir, exeName(spec.binaryName, platform));
42
+ if (existsSync(cachedPath)) {
43
+ return { status: "cached", command: cachedPath };
44
+ }
45
+ // 3. download — pinned release asset, SHA256-verified, then extracted.
46
+ const fetch = options.fetch;
47
+ if (!fetch) {
48
+ return { status: "unavailable", command: null, note: "no fetcher configured (offline)" };
49
+ }
50
+ const assetName = spec.assetFor(platform, arch);
51
+ if (!assetName) {
52
+ return {
53
+ status: "unavailable",
54
+ command: null,
55
+ note: `no release asset for ${platform}/${arch}`,
56
+ };
57
+ }
58
+ let assetBytes;
59
+ let checksumsBytes;
60
+ try {
61
+ checksumsBytes = await fetch(spec.releaseUrlForAsset(spec.checksumsAsset));
62
+ assetBytes = await fetch(spec.releaseUrlForAsset(assetName));
63
+ }
64
+ catch (error) {
65
+ return {
66
+ status: "unavailable",
67
+ command: null,
68
+ note: `download failed: ${error instanceof Error ? error.message : String(error)}`,
69
+ };
70
+ }
71
+ if (!checksumsBytes || !assetBytes) {
72
+ return { status: "unavailable", command: null, note: "download returned no bytes" };
73
+ }
74
+ const expected = expectedSha256For(Buffer.from(checksumsBytes).toString("utf8"), assetName);
75
+ if (!expected) {
76
+ return { status: "unavailable", command: null, note: `no checksum for ${assetName}` };
77
+ }
78
+ const actual = sha256(assetBytes);
79
+ if (actual !== expected) {
80
+ return {
81
+ status: "unavailable",
82
+ command: null,
83
+ note: `checksum mismatch for ${assetName} (expected ${expected}, got ${actual})`,
84
+ };
85
+ }
86
+ // Verified — write the archive and extract it with the system `tar` (bsdtar
87
+ // ships on win32 / darwin / linux and reads both .tar.gz and .zip).
88
+ try {
89
+ mkdirSync(versionDir, { recursive: true });
90
+ const archivePath = join(versionDir, assetName);
91
+ writeFileSync(archivePath, assetBytes);
92
+ const extract = run(["tar", "-xf", archivePath, "-C", versionDir], versionDir);
93
+ rmSync(archivePath, { force: true });
94
+ if (extract.error || extract.status !== 0) {
95
+ return {
96
+ status: "unavailable",
97
+ command: null,
98
+ note: `extract failed: ${extract.error?.message ?? `tar exit ${extract.status}`}`,
99
+ };
100
+ }
101
+ }
102
+ catch (error) {
103
+ return {
104
+ status: "unavailable",
105
+ command: null,
106
+ note: `extract error: ${error instanceof Error ? error.message : String(error)}`,
107
+ };
108
+ }
109
+ // Locate the executable (archives may nest it); chmod +x on POSIX.
110
+ const resolved = findExecutable(versionDir, exeName(spec.binaryName, platform));
111
+ if (!resolved) {
112
+ return { status: "unavailable", command: null, note: "binary not found in archive" };
113
+ }
114
+ if (platform !== "win32") {
115
+ try {
116
+ chmodSync(resolved, 0o755);
117
+ }
118
+ catch {
119
+ /* best-effort */
120
+ }
121
+ }
122
+ return { status: "downloaded", command: resolved };
123
+ }
124
+ /** Shallow-then-recursive search for `name` under `dir`. */
125
+ function findExecutable(dir, name) {
126
+ const direct = join(dir, name);
127
+ if (existsSync(direct))
128
+ return direct;
129
+ let entries;
130
+ try {
131
+ entries = readdirSync(dir);
132
+ }
133
+ catch {
134
+ return null;
135
+ }
136
+ for (const entry of entries) {
137
+ const full = join(dir, entry);
138
+ let isDir = false;
139
+ try {
140
+ isDir = statSync(full).isDirectory();
141
+ }
142
+ catch {
143
+ continue;
144
+ }
145
+ if (isDir) {
146
+ const nested = findExecutable(full, name);
147
+ if (nested)
148
+ return nested;
149
+ }
150
+ }
151
+ return null;
152
+ }
153
+ //# sourceMappingURL=binaryAcquisition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binaryAcquisition.js","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAyB,MAAM,oBAAoB,CAAC;AA+DvE,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,UAAkB,EAAE,QAAyB;IAC5D,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAC/B,aAAqB,EACrB,SAAiB;IAEjB,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAC,KAAiB;IAC/B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAgB,EAChB,UAAgC,EAAE;IAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;IAEvD,+BAA+B;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACtD,CAAC;IAED,oDAAoD;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACnD,CAAC;IAED,uEAAuE;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;IAC3F,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,wBAAwB,QAAQ,IAAI,IAAI,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,UAA6B,CAAC;IAClC,IAAI,cAAiC,CAAC;IACtC,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3E,UAAU,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACnF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;IACtF,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAChC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC5C,SAAS,CACV,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,SAAS,EAAE,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,yBAAyB,SAAS,cAAc,QAAQ,SAAS,MAAM,GAAG;SACjF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,CAAC;QACH,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAChD,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/E,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,mBAAmB,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,YAAY,OAAO,CAAC,MAAM,EAAE,EAAE;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACjF,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,4DAA4D;AAC5D,SAAS,cAAc,CAAC,GAAW,EAAE,IAAY;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ExternalAnalyzerCandidate } from "./acquisitionEngine.js";
2
+ /**
3
+ * The value-curated EXTERNAL analyzer candidate registry. This is the only place
4
+ * concrete tools are named; the engine is tool-agnostic. gitleaks is the DEFAULT
5
+ * member (high-value, low-overhead secret scanning, agnostic to the repo's
6
+ * ecosystem); semgrep + eslint are registered but CONSENT-GATED (defaultRun:
7
+ * false) — they pull rule sets / need repo config and so only run when the
8
+ * operator supplies a per-run consent token.
9
+ */
10
+ declare const GITLEAKS_VERSION = "8.21.2";
11
+ /**
12
+ * Parse gitleaks' default JSON report (array of findings, PascalCase fields) into
13
+ * the engine's generic item shape. The raw secret value is NEVER carried through
14
+ * (Secret/Match are dropped) so the persisted artifact cannot leak a credential.
15
+ */
16
+ declare function parseGitleaks(report: string): ReturnType<ExternalAnalyzerCandidate["parse"]>;
17
+ declare const gitleaksCandidate: ExternalAnalyzerCandidate;
18
+ declare const semgrepCandidate: ExternalAnalyzerCandidate;
19
+ declare const eslintCandidate: ExternalAnalyzerCandidate;
20
+ /** The curated external analyzer candidate set. gitleaks is the default member. */
21
+ export declare const EXTERNAL_ANALYZER_CANDIDATES: ExternalAnalyzerCandidate[];
22
+ export { gitleaksCandidate, semgrepCandidate, eslintCandidate, parseGitleaks, GITLEAKS_VERSION, };
23
+ //# sourceMappingURL=candidates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../../../src/audit/extractors/analyzers/candidates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAOxE;;;;;;;GAOG;AAKH,QAAA,MAAM,gBAAgB,WAAW,CAAC;AA2ClC;;;;GAIG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAqCrF;AAED,QAAA,MAAM,iBAAiB,EAAE,yBAsBxB,CAAC;AAiCF,QAAA,MAAM,gBAAgB,EAAE,yBASvB,CAAC;AAqCF,QAAA,MAAM,eAAe,EAAE,yBAStB,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,4BAA4B,EAAE,yBAAyB,EAInE,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,CAAC"}