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
@@ -0,0 +1,55 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Content-anchored identity of one analyzer lead — the join key that lets
4
+ * remediation's close-verify draw ask "does this exact lead still fire?"
5
+ * mechanically (item C of `spec/mechanical-analyzer-layer-design.md`).
6
+ *
7
+ * Anchored on the NORMALIZED flagged snippet, never line numbers: edits shift
8
+ * lines, but an untouched clone/violation re-hashes identically wherever it
9
+ * moves within its file. Optional everywhere it is carried — a lead whose
10
+ * snippet cannot be read simply carries no provenance and is exempt from
11
+ * mechanical verification.
12
+ */
13
+ export declare const AnalyzerLeadProvenanceSchema: z.ZodObject<{
14
+ /** Candidate id that produced the lead (e.g. "jscpd", "gitleaks"). */
15
+ analyzer_id: z.ZodString;
16
+ /** Analyzer-native rule id, when the tool reports one. */
17
+ rule: z.ZodOptional<z.ZodString>;
18
+ /** Repo-relative path of the flagged file. */
19
+ path: z.ZodString;
20
+ /** `hashAnalyzerSnippet` digest of the normalized flagged span. */
21
+ snippet_hash: z.ZodString;
22
+ }, "strict", z.ZodTypeAny, {
23
+ path: string;
24
+ analyzer_id: string;
25
+ snippet_hash: string;
26
+ rule?: string | undefined;
27
+ }, {
28
+ path: string;
29
+ analyzer_id: string;
30
+ snippet_hash: string;
31
+ rule?: string | undefined;
32
+ }>;
33
+ export type AnalyzerLeadProvenance = z.infer<typeof AnalyzerLeadProvenanceSchema>;
34
+ /**
35
+ * Normalize a flagged source span so the hash survives cosmetic movement:
36
+ * per-line trim, internal whitespace runs collapsed to one space, empty lines
37
+ * dropped. A whitespace-only reformat therefore re-hashes identically (the
38
+ * lead's identity is its content, not its layout), while any real edit to the
39
+ * flagged code changes the digest.
40
+ */
41
+ export declare function normalizeAnalyzerSnippet(snippet: string): string;
42
+ /**
43
+ * Hash the 1-based inclusive line span `[lineStart, lineEnd ?? lineStart]` of
44
+ * `source` after {@link normalizeAnalyzerSnippet}. Returns undefined when the
45
+ * span is empty after normalization or lies wholly outside the file — callers
46
+ * then attach no provenance rather than a meaningless digest.
47
+ */
48
+ export declare function hashAnalyzerSnippet(source: string, lineStart: number, lineEnd?: number): string | undefined;
49
+ /**
50
+ * Stable string key of a provenance identity, for set membership at the
51
+ * close-verify draw (`analyzer_id`+`rule`+`path`+`snippet_hash`; `rule` folds
52
+ * in as "" when absent so the same lead keys identically on both sides).
53
+ */
54
+ export declare function analyzerProvenanceKey(p: AnalyzerLeadProvenance): string;
55
+ //# sourceMappingURL=provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/provenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B;IAErC,sEAAsE;;IAEtE,0DAA0D;;IAE1D,8CAA8C;;IAE9C,mEAAmE;;;;;;;;;;;;EAG5D,CAAC;AACZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAKlF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAUpB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAEvE"}
@@ -0,0 +1,70 @@
1
+ import { z } from "zod";
2
+ import { hashContent } from "../hash.js";
3
+ /**
4
+ * Content-anchored identity of one analyzer lead — the join key that lets
5
+ * remediation's close-verify draw ask "does this exact lead still fire?"
6
+ * mechanically (item C of `spec/mechanical-analyzer-layer-design.md`).
7
+ *
8
+ * Anchored on the NORMALIZED flagged snippet, never line numbers: edits shift
9
+ * lines, but an untouched clone/violation re-hashes identically wherever it
10
+ * moves within its file. Optional everywhere it is carried — a lead whose
11
+ * snippet cannot be read simply carries no provenance and is exempt from
12
+ * mechanical verification.
13
+ */
14
+ export const AnalyzerLeadProvenanceSchema = z
15
+ .object({
16
+ /** Candidate id that produced the lead (e.g. "jscpd", "gitleaks"). */
17
+ analyzer_id: z.string(),
18
+ /** Analyzer-native rule id, when the tool reports one. */
19
+ rule: z.string().optional(),
20
+ /** Repo-relative path of the flagged file. */
21
+ path: z.string(),
22
+ /** `hashAnalyzerSnippet` digest of the normalized flagged span. */
23
+ snippet_hash: z.string(),
24
+ })
25
+ .strict();
26
+ /** Truncated-digest length: 16 hex chars — ample for per-file span identity. */
27
+ const SNIPPET_HASH_LENGTH = 16;
28
+ /**
29
+ * Normalize a flagged source span so the hash survives cosmetic movement:
30
+ * per-line trim, internal whitespace runs collapsed to one space, empty lines
31
+ * dropped. A whitespace-only reformat therefore re-hashes identically (the
32
+ * lead's identity is its content, not its layout), while any real edit to the
33
+ * flagged code changes the digest.
34
+ */
35
+ export function normalizeAnalyzerSnippet(snippet) {
36
+ return snippet
37
+ .split(/\r?\n/)
38
+ .map((line) => line.trim().replace(/\s+/g, " "))
39
+ .filter((line) => line.length > 0)
40
+ .join("\n");
41
+ }
42
+ /**
43
+ * Hash the 1-based inclusive line span `[lineStart, lineEnd ?? lineStart]` of
44
+ * `source` after {@link normalizeAnalyzerSnippet}. Returns undefined when the
45
+ * span is empty after normalization or lies wholly outside the file — callers
46
+ * then attach no provenance rather than a meaningless digest.
47
+ */
48
+ export function hashAnalyzerSnippet(source, lineStart, lineEnd) {
49
+ if (!Number.isInteger(lineStart) || lineStart < 1)
50
+ return undefined;
51
+ const last = lineEnd !== undefined && Number.isInteger(lineEnd) && lineEnd >= lineStart
52
+ ? lineEnd
53
+ : lineStart;
54
+ const lines = source.split(/\r?\n/).slice(lineStart - 1, last);
55
+ if (lines.length === 0)
56
+ return undefined;
57
+ const normalized = normalizeAnalyzerSnippet(lines.join("\n"));
58
+ if (normalized.length === 0)
59
+ return undefined;
60
+ return hashContent(normalized, { length: SNIPPET_HASH_LENGTH });
61
+ }
62
+ /**
63
+ * Stable string key of a provenance identity, for set membership at the
64
+ * close-verify draw (`analyzer_id`+`rule`+`path`+`snippet_hash`; `rule` folds
65
+ * in as "" when absent so the same lead keys identically on both sides).
66
+ */
67
+ export function analyzerProvenanceKey(p) {
68
+ return [p.analyzer_id, p.rule ?? "", p.path, p.snippet_hash].join("\0");
69
+ }
70
+ //# sourceMappingURL=provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../../src/shared/analyzers/provenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,0DAA0D;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,mEAAmE;IACnE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,gFAAgF;AAChF,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,OAAO;SACX,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC/C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,SAAiB,EACjB,OAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,SAAS;QACrF,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,WAAW,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAyB;IAC7D,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ExternalAnalyzerResults } from "../types/externalAnalyzer.js";
1
+ import type { ExternalAnalyzerResults } from "./types.js";
2
2
  /**
3
3
  * Parse rubocop's `--format json` stdout into the generic item shape. Degrades
4
4
  * to `[]` on empty/malformed input or a missing `files` array.
@@ -1 +1 @@
1
- {"version":3,"file":"rubocop.d.ts","sourceRoot":"","sources":["../../../src/audit/adapters/rubocop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAgD5E;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAClD,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,CAsDD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAE5E"}
1
+ {"version":3,"file":"rubocop.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/rubocop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAgD1D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAClD,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,CAsDD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAE5E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rubocop.js","sourceRoot":"","sources":["../../../src/shared/analyzers/rubocop.ts"],"names":[],"mappings":"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"}
@@ -11,15 +11,38 @@ export declare const ExternalAnalyzerResultItemSchema: z.ZodObject<{
11
11
  rule: z.ZodOptional<z.ZodString>;
12
12
  /** Preserves the analyzer-native payload when consumers need original detail. */
13
13
  raw: z.ZodOptional<z.ZodUnknown>;
14
+ /** Content-anchored lead identity for the close-verify draw (item C). */
15
+ provenance: z.ZodOptional<z.ZodObject<{
16
+ analyzer_id: z.ZodString;
17
+ rule: z.ZodOptional<z.ZodString>;
18
+ path: z.ZodString;
19
+ snippet_hash: z.ZodString;
20
+ }, "strict", z.ZodTypeAny, {
21
+ path: string;
22
+ analyzer_id: string;
23
+ snippet_hash: string;
24
+ rule?: string | undefined;
25
+ }, {
26
+ path: string;
27
+ analyzer_id: string;
28
+ snippet_hash: string;
29
+ rule?: string | undefined;
30
+ }>>;
14
31
  }, "strict", z.ZodTypeAny, {
15
32
  path: string;
16
33
  id: string;
17
34
  category: string;
18
35
  severity: string;
19
36
  summary: string;
37
+ rule?: string | undefined;
20
38
  line_start?: number | undefined;
21
39
  line_end?: number | undefined;
22
- rule?: string | undefined;
40
+ provenance?: {
41
+ path: string;
42
+ analyzer_id: string;
43
+ snippet_hash: string;
44
+ rule?: string | undefined;
45
+ } | undefined;
23
46
  raw?: unknown;
24
47
  }, {
25
48
  path: string;
@@ -27,9 +50,15 @@ export declare const ExternalAnalyzerResultItemSchema: z.ZodObject<{
27
50
  category: string;
28
51
  severity: string;
29
52
  summary: string;
53
+ rule?: string | undefined;
30
54
  line_start?: number | undefined;
31
55
  line_end?: number | undefined;
32
- rule?: string | undefined;
56
+ provenance?: {
57
+ path: string;
58
+ analyzer_id: string;
59
+ snippet_hash: string;
60
+ rule?: string | undefined;
61
+ } | undefined;
33
62
  raw?: unknown;
34
63
  }>;
35
64
  export type ExternalAnalyzerResultItem = z.infer<typeof ExternalAnalyzerResultItemSchema>;
@@ -90,20 +119,23 @@ export declare const ExternalAnalyzerToolStatusSchema: z.ZodObject<{
90
119
  exit_code: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
91
120
  error: z.ZodOptional<z.ZodString>;
92
121
  output_snippet: z.ZodOptional<z.ZodString>;
122
+ duration_ms: z.ZodOptional<z.ZodNumber>;
93
123
  }, "strict", z.ZodTypeAny, {
94
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
124
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
95
125
  resolved: boolean;
96
126
  tool: string;
97
127
  error?: string | undefined;
98
128
  command?: string | undefined;
129
+ duration_ms?: number | undefined;
99
130
  exit_code?: number | null | undefined;
100
131
  output_snippet?: string | undefined;
101
132
  }, {
102
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
133
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
103
134
  resolved: boolean;
104
135
  tool: string;
105
136
  error?: string | undefined;
106
137
  command?: string | undefined;
138
+ duration_ms?: number | undefined;
107
139
  exit_code?: number | null | undefined;
108
140
  output_snippet?: string | undefined;
109
141
  }>;
@@ -162,20 +194,23 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
162
194
  exit_code: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
163
195
  error: z.ZodOptional<z.ZodString>;
164
196
  output_snippet: z.ZodOptional<z.ZodString>;
197
+ duration_ms: z.ZodOptional<z.ZodNumber>;
165
198
  }, "strict", z.ZodTypeAny, {
166
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
199
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
167
200
  resolved: boolean;
168
201
  tool: string;
169
202
  error?: string | undefined;
170
203
  command?: string | undefined;
204
+ duration_ms?: number | undefined;
171
205
  exit_code?: number | null | undefined;
172
206
  output_snippet?: string | undefined;
173
207
  }, {
174
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
208
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
175
209
  resolved: boolean;
176
210
  tool: string;
177
211
  error?: string | undefined;
178
212
  command?: string | undefined;
213
+ duration_ms?: number | undefined;
179
214
  exit_code?: number | null | undefined;
180
215
  output_snippet?: string | undefined;
181
216
  }>, "many">>;
@@ -190,15 +225,38 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
190
225
  rule: z.ZodOptional<z.ZodString>;
191
226
  /** Preserves the analyzer-native payload when consumers need original detail. */
192
227
  raw: z.ZodOptional<z.ZodUnknown>;
228
+ /** Content-anchored lead identity for the close-verify draw (item C). */
229
+ provenance: z.ZodOptional<z.ZodObject<{
230
+ analyzer_id: z.ZodString;
231
+ rule: z.ZodOptional<z.ZodString>;
232
+ path: z.ZodString;
233
+ snippet_hash: z.ZodString;
234
+ }, "strict", z.ZodTypeAny, {
235
+ path: string;
236
+ analyzer_id: string;
237
+ snippet_hash: string;
238
+ rule?: string | undefined;
239
+ }, {
240
+ path: string;
241
+ analyzer_id: string;
242
+ snippet_hash: string;
243
+ rule?: string | undefined;
244
+ }>>;
193
245
  }, "strict", z.ZodTypeAny, {
194
246
  path: string;
195
247
  id: string;
196
248
  category: string;
197
249
  severity: string;
198
250
  summary: string;
251
+ rule?: string | undefined;
199
252
  line_start?: number | undefined;
200
253
  line_end?: number | undefined;
201
- rule?: string | undefined;
254
+ provenance?: {
255
+ path: string;
256
+ analyzer_id: string;
257
+ snippet_hash: string;
258
+ rule?: string | undefined;
259
+ } | undefined;
202
260
  raw?: unknown;
203
261
  }, {
204
262
  path: string;
@@ -206,9 +264,15 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
206
264
  category: string;
207
265
  severity: string;
208
266
  summary: string;
267
+ rule?: string | undefined;
209
268
  line_start?: number | undefined;
210
269
  line_end?: number | undefined;
211
- rule?: string | undefined;
270
+ provenance?: {
271
+ path: string;
272
+ analyzer_id: string;
273
+ snippet_hash: string;
274
+ rule?: string | undefined;
275
+ } | undefined;
212
276
  raw?: unknown;
213
277
  }>, "many">;
214
278
  }, "strict", z.ZodTypeAny, {
@@ -219,9 +283,15 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
219
283
  category: string;
220
284
  severity: string;
221
285
  summary: string;
286
+ rule?: string | undefined;
222
287
  line_start?: number | undefined;
223
288
  line_end?: number | undefined;
224
- rule?: string | undefined;
289
+ provenance?: {
290
+ path: string;
291
+ analyzer_id: string;
292
+ snippet_hash: string;
293
+ rule?: string | undefined;
294
+ } | undefined;
225
295
  raw?: unknown;
226
296
  }[];
227
297
  generated_at?: string | undefined;
@@ -240,11 +310,12 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
240
310
  kind?: string | undefined;
241
311
  }[] | undefined;
242
312
  tool_statuses?: {
243
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
313
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
244
314
  resolved: boolean;
245
315
  tool: string;
246
316
  error?: string | undefined;
247
317
  command?: string | undefined;
318
+ duration_ms?: number | undefined;
248
319
  exit_code?: number | null | undefined;
249
320
  output_snippet?: string | undefined;
250
321
  }[] | undefined;
@@ -256,9 +327,15 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
256
327
  category: string;
257
328
  severity: string;
258
329
  summary: string;
330
+ rule?: string | undefined;
259
331
  line_start?: number | undefined;
260
332
  line_end?: number | undefined;
261
- rule?: string | undefined;
333
+ provenance?: {
334
+ path: string;
335
+ analyzer_id: string;
336
+ snippet_hash: string;
337
+ rule?: string | undefined;
338
+ } | undefined;
262
339
  raw?: unknown;
263
340
  }[];
264
341
  generated_at?: string | undefined;
@@ -277,11 +354,12 @@ export declare const ExternalAnalyzerResultsSchema: z.ZodObject<{
277
354
  kind?: string | undefined;
278
355
  }[] | undefined;
279
356
  tool_statuses?: {
280
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
357
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
281
358
  resolved: boolean;
282
359
  tool: string;
283
360
  error?: string | undefined;
284
361
  command?: string | undefined;
362
+ duration_ms?: number | undefined;
285
363
  exit_code?: number | null | undefined;
286
364
  output_snippet?: string | undefined;
287
365
  }[] | undefined;
@@ -310,31 +388,35 @@ export declare const ExternalAnalyzerAcquisitionMarkerSchema: z.ZodObject<{
310
388
  exit_code: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
311
389
  error: z.ZodOptional<z.ZodString>;
312
390
  output_snippet: z.ZodOptional<z.ZodString>;
391
+ duration_ms: z.ZodOptional<z.ZodNumber>;
313
392
  }, "strict", z.ZodTypeAny, {
314
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
393
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
315
394
  resolved: boolean;
316
395
  tool: string;
317
396
  error?: string | undefined;
318
397
  command?: string | undefined;
398
+ duration_ms?: number | undefined;
319
399
  exit_code?: number | null | undefined;
320
400
  output_snippet?: string | undefined;
321
401
  }, {
322
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
402
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
323
403
  resolved: boolean;
324
404
  tool: string;
325
405
  error?: string | undefined;
326
406
  command?: string | undefined;
407
+ duration_ms?: number | undefined;
327
408
  exit_code?: number | null | undefined;
328
409
  output_snippet?: string | undefined;
329
410
  }>, "many">;
330
411
  }, "strict", z.ZodTypeAny, {
331
412
  enabled: boolean;
332
413
  tool_statuses: {
333
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
414
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
334
415
  resolved: boolean;
335
416
  tool: string;
336
417
  error?: string | undefined;
337
418
  command?: string | undefined;
419
+ duration_ms?: number | undefined;
338
420
  exit_code?: number | null | undefined;
339
421
  output_snippet?: string | undefined;
340
422
  }[];
@@ -342,11 +424,12 @@ export declare const ExternalAnalyzerAcquisitionMarkerSchema: z.ZodObject<{
342
424
  }, {
343
425
  enabled: boolean;
344
426
  tool_statuses: {
345
- status: "failed" | "findings" | "success" | "spawn_error" | "skipped" | "not_resolved" | "parse_error";
427
+ status: "failed" | "findings" | "skipped" | "success" | "spawn_error" | "not_resolved" | "parse_error";
346
428
  resolved: boolean;
347
429
  tool: string;
348
430
  error?: string | undefined;
349
431
  command?: string | undefined;
432
+ duration_ms?: number | undefined;
350
433
  exit_code?: number | null | undefined;
351
434
  output_snippet?: string | undefined;
352
435
  }[];
@@ -361,4 +444,4 @@ export type ExternalAnalyzerAcquisitionMarker = z.infer<typeof ExternalAnalyzerA
361
444
  * the others. Returns a new array sorted by `tool` for deterministic output.
362
445
  */
363
446
  export declare function upsertExternalToolResults(existing: ExternalAnalyzerResults[] | undefined, incoming: ExternalAnalyzerResults): ExternalAnalyzerResults[];
364
- //# sourceMappingURL=externalAnalyzer.d.ts.map
447
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,sFAAsF;AACtF,eAAO,MAAM,gCAAgC;;;;;;;;;IAUzC,iFAAiF;;IAEjF,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlE,CAAC;AACZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;EAQjC,CAAC;AACZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;EAQrC,CAAC;AAEZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBlC,CAAC;AACZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;IAKtC;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA5EH,iFAAiF;;QAEjF,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+ElE,CAAC;AACZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMzC,CAAC;AACZ,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,uCAAuC,CAC/C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,SAAS,EAC/C,QAAQ,EAAE,uBAAuB,GAChC,uBAAuB,EAAE,CAI3B"}
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { AnalyzerLeadProvenanceSchema } from "./provenance.js";
2
3
  /** One normalized result imported from an external analyzer such as eslint or tsc. */
3
4
  export const ExternalAnalyzerResultItemSchema = z
4
5
  .object({
@@ -12,6 +13,8 @@ export const ExternalAnalyzerResultItemSchema = z
12
13
  rule: z.string().optional(),
13
14
  /** Preserves the analyzer-native payload when consumers need original detail. */
14
15
  raw: z.unknown().optional(),
16
+ /** Content-anchored lead identity for the close-verify draw (item C). */
17
+ provenance: AnalyzerLeadProvenanceSchema.optional(),
15
18
  })
16
19
  .strict();
17
20
  /**
@@ -59,6 +62,7 @@ export const ExternalAnalyzerToolStatusSchema = z
59
62
  exit_code: z.number().nullable().optional(),
60
63
  error: z.string().optional(),
61
64
  output_snippet: z.string().optional(),
65
+ duration_ms: z.number().optional(),
62
66
  })
63
67
  .strict();
64
68
  /** Imported analyzer output captured at a single generation time. */
@@ -107,4 +111,4 @@ export function upsertExternalToolResults(existing, incoming) {
107
111
  next.push(incoming);
108
112
  return next.sort((a, b) => a.tool.localeCompare(b.tool));
109
113
  }
110
- //# sourceMappingURL=externalAnalyzer.js.map
114
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/analyzers/types.ts"],"names":[],"mappings":"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"}
@@ -124,6 +124,22 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
124
124
  contract_obligation_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
125
125
  verification_obligation_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
126
126
  targeted_commands: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
127
+ analyzer_provenance: z.ZodOptional<z.ZodObject<{
128
+ analyzer_id: z.ZodString;
129
+ rule: z.ZodOptional<z.ZodString>;
130
+ path: z.ZodString;
131
+ snippet_hash: z.ZodString;
132
+ }, "strict", z.ZodTypeAny, {
133
+ path: string;
134
+ analyzer_id: string;
135
+ snippet_hash: string;
136
+ rule?: string | undefined;
137
+ }, {
138
+ path: string;
139
+ analyzer_id: string;
140
+ snippet_hash: string;
141
+ rule?: string | undefined;
142
+ }>>;
127
143
  }, "strip", z.ZodTypeAny, {
128
144
  id: string;
129
145
  confidence: "high" | "low" | "medium";
@@ -172,6 +188,12 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
172
188
  contract_obligation_ids?: string[] | undefined;
173
189
  verification_obligation_ids?: string[] | undefined;
174
190
  targeted_commands?: string[] | undefined;
191
+ analyzer_provenance?: {
192
+ path: string;
193
+ analyzer_id: string;
194
+ snippet_hash: string;
195
+ rule?: string | undefined;
196
+ } | undefined;
175
197
  }, {
176
198
  id: string;
177
199
  confidence: "high" | "low" | "medium";
@@ -220,6 +242,12 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
220
242
  contract_obligation_ids?: string[] | undefined;
221
243
  verification_obligation_ids?: string[] | undefined;
222
244
  targeted_commands?: string[] | undefined;
245
+ analyzer_provenance?: {
246
+ path: string;
247
+ analyzer_id: string;
248
+ snippet_hash: string;
249
+ rule?: string | undefined;
250
+ } | undefined;
223
251
  }>, "many">>;
224
252
  }, "strict", z.ZodTypeAny, {
225
253
  findings: {
@@ -270,6 +298,12 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
270
298
  contract_obligation_ids?: string[] | undefined;
271
299
  verification_obligation_ids?: string[] | undefined;
272
300
  targeted_commands?: string[] | undefined;
301
+ analyzer_provenance?: {
302
+ path: string;
303
+ analyzer_id: string;
304
+ snippet_hash: string;
305
+ rule?: string | undefined;
306
+ } | undefined;
273
307
  }[];
274
308
  }, {
275
309
  findings?: {
@@ -320,6 +354,12 @@ export declare const SystemicChallengeSubmissionSchema: z.ZodObject<{
320
354
  contract_obligation_ids?: string[] | undefined;
321
355
  verification_obligation_ids?: string[] | undefined;
322
356
  targeted_commands?: string[] | undefined;
357
+ analyzer_provenance?: {
358
+ path: string;
359
+ analyzer_id: string;
360
+ snippet_hash: string;
361
+ rule?: string | undefined;
362
+ } | undefined;
323
363
  }[] | undefined;
324
364
  }>;
325
365
  export type SystemicChallengeSubmission = z.infer<typeof SystemicChallengeSubmissionSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"systemicChallenge.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/systemicChallenge.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC"}
1
+ {"version":3,"file":"systemicChallenge.d.ts","sourceRoot":"","sources":["../../../src/shared/decompose/systemicChallenge.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAInC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC"}
@@ -501,7 +501,7 @@ export declare const DispatchQuotaContractSchema: z.ZodObject<{
501
501
  }, "strict", z.ZodTypeAny, {
502
502
  confidence: "high" | "low" | "medium";
503
503
  model: string | null;
504
- source: "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned" | "default";
504
+ source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
505
505
  cooldown_until: string | null;
506
506
  pool_id: string;
507
507
  slots: number;
@@ -562,7 +562,7 @@ export declare const DispatchQuotaContractSchema: z.ZodObject<{
562
562
  }, {
563
563
  confidence: "high" | "low" | "medium";
564
564
  model: string | null;
565
- source: "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned" | "default";
565
+ source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
566
566
  cooldown_until: string | null;
567
567
  pool_id: string;
568
568
  slots: number;
@@ -714,7 +714,7 @@ export declare const DispatchQuotaContractSchema: z.ZodObject<{
714
714
  run_id: string;
715
715
  contract_version: "dispatch-quota/v1";
716
716
  model: string | null;
717
- source: "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned" | "default";
717
+ source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
718
718
  cooldown_until: string | null;
719
719
  resolved_limits: {
720
720
  context_tokens: number | null;
@@ -797,7 +797,7 @@ export declare const DispatchQuotaContractSchema: z.ZodObject<{
797
797
  capacity_pools?: {
798
798
  confidence: "high" | "low" | "medium";
799
799
  model: string | null;
800
- source: "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned" | "default";
800
+ source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
801
801
  cooldown_until: string | null;
802
802
  pool_id: string;
803
803
  slots: number;
@@ -873,7 +873,7 @@ export declare const DispatchQuotaContractSchema: z.ZodObject<{
873
873
  run_id: string;
874
874
  contract_version: "dispatch-quota/v1";
875
875
  model: string | null;
876
- source: "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned" | "default";
876
+ source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
877
877
  cooldown_until: string | null;
878
878
  resolved_limits: {
879
879
  context_tokens: number | null;
@@ -956,7 +956,7 @@ export declare const DispatchQuotaContractSchema: z.ZodObject<{
956
956
  capacity_pools?: {
957
957
  confidence: "high" | "low" | "medium";
958
958
  model: string | null;
959
- source: "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned" | "default";
959
+ source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
960
960
  cooldown_until: string | null;
961
961
  pool_id: string;
962
962
  slots: number;