audit-tools 0.30.35 → 0.30.37

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 (120) 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/extractors/analyzers/acquisitionEngine.d.ts +48 -5
  13. package/dist/audit/extractors/analyzers/acquisitionEngine.d.ts.map +1 -1
  14. package/dist/audit/extractors/analyzers/acquisitionEngine.js +116 -17
  15. package/dist/audit/extractors/analyzers/acquisitionEngine.js.map +1 -1
  16. package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts +65 -0
  17. package/dist/audit/extractors/analyzers/binaryAcquisition.d.ts.map +1 -0
  18. package/dist/audit/extractors/analyzers/binaryAcquisition.js +153 -0
  19. package/dist/audit/extractors/analyzers/binaryAcquisition.js.map +1 -0
  20. package/dist/audit/extractors/analyzers/candidates.d.ts +23 -0
  21. package/dist/audit/extractors/analyzers/candidates.d.ts.map +1 -0
  22. package/dist/audit/extractors/analyzers/candidates.js +214 -0
  23. package/dist/audit/extractors/analyzers/candidates.js.map +1 -0
  24. package/dist/audit/extractors/analyzers/registry.d.ts +5 -2
  25. package/dist/audit/extractors/analyzers/registry.d.ts.map +1 -1
  26. package/dist/audit/extractors/analyzers/registry.js +3 -1
  27. package/dist/audit/extractors/analyzers/registry.js.map +1 -1
  28. package/dist/audit/extractors/graph.d.ts +2 -1
  29. package/dist/audit/extractors/graph.d.ts.map +1 -1
  30. package/dist/audit/extractors/graph.js +7 -2
  31. package/dist/audit/extractors/graph.js.map +1 -1
  32. package/dist/audit/extractors/risk.d.ts +1 -1
  33. package/dist/audit/extractors/risk.d.ts.map +1 -1
  34. package/dist/audit/extractors/risk.js +4 -2
  35. package/dist/audit/extractors/risk.js.map +1 -1
  36. package/dist/audit/io/artifacts.d.ts +4 -2
  37. package/dist/audit/io/artifacts.d.ts.map +1 -1
  38. package/dist/audit/io/artifacts.js +1 -0
  39. package/dist/audit/io/artifacts.js.map +1 -1
  40. package/dist/audit/orchestrator/acquisitionExecutor.d.ts +45 -0
  41. package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -0
  42. package/dist/audit/orchestrator/acquisitionExecutor.js +94 -0
  43. package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -0
  44. package/dist/audit/orchestrator/advanceTypes.d.ts +10 -0
  45. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  46. package/dist/audit/orchestrator/dependencyMap.d.ts +1 -0
  47. package/dist/audit/orchestrator/dependencyMap.d.ts.map +1 -1
  48. package/dist/audit/orchestrator/dependencyMap.js +11 -0
  49. package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
  50. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  51. package/dist/audit/orchestrator/executorRunners.js +2 -0
  52. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  53. package/dist/audit/orchestrator/executors.d.ts.map +1 -1
  54. package/dist/audit/orchestrator/executors.js +5 -0
  55. package/dist/audit/orchestrator/executors.js.map +1 -1
  56. package/dist/audit/orchestrator/fileAnchors.d.ts +1 -1
  57. package/dist/audit/orchestrator/fileAnchors.d.ts.map +1 -1
  58. package/dist/audit/orchestrator/fileAnchors.js +2 -1
  59. package/dist/audit/orchestrator/fileAnchors.js.map +1 -1
  60. package/dist/audit/orchestrator/flowRequeue.d.ts +1 -1
  61. package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
  62. package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
  63. package/dist/audit/orchestrator/ingestionExecutors.d.ts +1 -1
  64. package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
  65. package/dist/audit/orchestrator/ingestionExecutors.js +2 -1
  66. package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
  67. package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
  68. package/dist/audit/orchestrator/nextStep.js +1 -0
  69. package/dist/audit/orchestrator/nextStep.js.map +1 -1
  70. package/dist/audit/orchestrator/planning.d.ts +1 -1
  71. package/dist/audit/orchestrator/planning.d.ts.map +1 -1
  72. package/dist/audit/orchestrator/planning.js +2 -4
  73. package/dist/audit/orchestrator/planning.js.map +1 -1
  74. package/dist/audit/orchestrator/requeue.d.ts +1 -1
  75. package/dist/audit/orchestrator/requeue.d.ts.map +1 -1
  76. package/dist/audit/orchestrator/requeue.js.map +1 -1
  77. package/dist/audit/orchestrator/requeueCommand.d.ts +1 -1
  78. package/dist/audit/orchestrator/requeueCommand.d.ts.map +1 -1
  79. package/dist/audit/orchestrator/requeueCommand.js.map +1 -1
  80. package/dist/audit/orchestrator/requeueUtils.d.ts +1 -1
  81. package/dist/audit/orchestrator/requeueUtils.d.ts.map +1 -1
  82. package/dist/audit/orchestrator/requeueUtils.js +1 -3
  83. package/dist/audit/orchestrator/requeueUtils.js.map +1 -1
  84. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts +1 -1
  85. package/dist/audit/orchestrator/selectiveDeepening/lensVerification.d.ts.map +1 -1
  86. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts +2 -2
  87. package/dist/audit/orchestrator/selectiveDeepening/shared.d.ts.map +1 -1
  88. package/dist/audit/orchestrator/selectiveDeepening/shared.js +2 -1
  89. package/dist/audit/orchestrator/selectiveDeepening/shared.js.map +1 -1
  90. package/dist/audit/orchestrator/state.d.ts.map +1 -1
  91. package/dist/audit/orchestrator/state.js +4 -0
  92. package/dist/audit/orchestrator/state.js.map +1 -1
  93. package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
  94. package/dist/audit/orchestrator/syntaxResolutionExecutor.js +3 -2
  95. package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
  96. package/dist/audit/orchestrator/taskBuilder.d.ts +2 -2
  97. package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
  98. package/dist/audit/orchestrator/taskBuilder.js +32 -30
  99. package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
  100. package/dist/audit/orchestrator/trivialAudit.d.ts +1 -1
  101. package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
  102. package/dist/audit/orchestrator/trivialAudit.js +3 -1
  103. package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
  104. package/dist/audit/reporting/mergeFindings.d.ts +1 -1
  105. package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
  106. package/dist/audit/reporting/mergeFindings.js +3 -9
  107. package/dist/audit/reporting/mergeFindings.js.map +1 -1
  108. package/dist/audit/reporting/synthesis.d.ts +1 -1
  109. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  110. package/dist/audit/types/externalAnalyzer.d.ts +74 -0
  111. package/dist/audit/types/externalAnalyzer.d.ts.map +1 -1
  112. package/dist/audit/types/externalAnalyzer.js +31 -0
  113. package/dist/audit/types/externalAnalyzer.js.map +1 -1
  114. package/dist/audit/validation/artifacts.d.ts.map +1 -1
  115. package/dist/audit/validation/artifacts.js +1 -1
  116. package/dist/audit/validation/artifacts.js.map +1 -1
  117. package/dist/shared/types/sessionConfig.d.ts +17 -0
  118. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  119. package/dist/shared/types/sessionConfig.js.map +1 -1
  120. package/package.json +1 -1
@@ -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"}