vaspera 2.7.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +111 -7
  3. package/dist/__tests__/agents/adversary/tactics/api.test.d.ts +5 -0
  4. package/dist/__tests__/agents/adversary/tactics/api.test.d.ts.map +1 -0
  5. package/dist/__tests__/agents/adversary/tactics/api.test.js +369 -0
  6. package/dist/__tests__/agents/adversary/tactics/api.test.js.map +1 -0
  7. package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts +5 -0
  8. package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts.map +1 -0
  9. package/dist/__tests__/agents/adversary/tactics/llm.test.js +409 -0
  10. package/dist/__tests__/agents/adversary/tactics/llm.test.js.map +1 -0
  11. package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts +7 -0
  12. package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts.map +1 -0
  13. package/dist/__tests__/agents/adversary/tactics/registry.test.js +74 -0
  14. package/dist/__tests__/agents/adversary/tactics/registry.test.js.map +1 -0
  15. package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts +7 -0
  16. package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts.map +1 -0
  17. package/dist/__tests__/agents/adversary/tactics/web-app.test.js +374 -0
  18. package/dist/__tests__/agents/adversary/tactics/web-app.test.js.map +1 -0
  19. package/dist/__tests__/compliance-bundle.test.d.ts +9 -0
  20. package/dist/__tests__/compliance-bundle.test.d.ts.map +1 -0
  21. package/dist/__tests__/compliance-bundle.test.js +344 -0
  22. package/dist/__tests__/compliance-bundle.test.js.map +1 -0
  23. package/dist/__tests__/healthcare-compliance.test.d.ts +9 -0
  24. package/dist/__tests__/healthcare-compliance.test.d.ts.map +1 -0
  25. package/dist/__tests__/healthcare-compliance.test.js +233 -0
  26. package/dist/__tests__/healthcare-compliance.test.js.map +1 -0
  27. package/dist/action/diff-mode.d.ts +124 -8
  28. package/dist/action/diff-mode.d.ts.map +1 -1
  29. package/dist/action/diff-mode.js +384 -65
  30. package/dist/action/diff-mode.js.map +1 -1
  31. package/dist/action/diff-mode.test.js +3 -3
  32. package/dist/action/diff-mode.test.js.map +1 -1
  33. package/dist/action/pr-comment.test.js +1 -0
  34. package/dist/action/pr-comment.test.js.map +1 -1
  35. package/dist/action/sarif-upload.test.js +1 -0
  36. package/dist/action/sarif-upload.test.js.map +1 -1
  37. package/dist/agents/adversary/config.d.ts +113 -0
  38. package/dist/agents/adversary/config.d.ts.map +1 -0
  39. package/dist/agents/adversary/config.js +391 -0
  40. package/dist/agents/adversary/config.js.map +1 -0
  41. package/dist/agents/adversary/index.d.ts +41 -0
  42. package/dist/agents/adversary/index.d.ts.map +1 -0
  43. package/dist/agents/adversary/index.js +838 -0
  44. package/dist/agents/adversary/index.js.map +1 -0
  45. package/dist/agents/adversary/reporting/compliance-mapper.d.ts +108 -0
  46. package/dist/agents/adversary/reporting/compliance-mapper.d.ts.map +1 -0
  47. package/dist/agents/adversary/reporting/compliance-mapper.js +391 -0
  48. package/dist/agents/adversary/reporting/compliance-mapper.js.map +1 -0
  49. package/dist/agents/adversary/reporting/index.d.ts +10 -0
  50. package/dist/agents/adversary/reporting/index.d.ts.map +1 -0
  51. package/dist/agents/adversary/reporting/index.js +10 -0
  52. package/dist/agents/adversary/reporting/index.js.map +1 -0
  53. package/dist/agents/adversary/reporting/poc-generator.d.ts +44 -0
  54. package/dist/agents/adversary/reporting/poc-generator.d.ts.map +1 -0
  55. package/dist/agents/adversary/reporting/poc-generator.js +308 -0
  56. package/dist/agents/adversary/reporting/poc-generator.js.map +1 -0
  57. package/dist/agents/adversary/tactics/api.d.ts +13 -0
  58. package/dist/agents/adversary/tactics/api.d.ts.map +1 -0
  59. package/dist/agents/adversary/tactics/api.js +815 -0
  60. package/dist/agents/adversary/tactics/api.js.map +1 -0
  61. package/dist/agents/adversary/tactics/auth.d.ts +13 -0
  62. package/dist/agents/adversary/tactics/auth.d.ts.map +1 -0
  63. package/dist/agents/adversary/tactics/auth.js +676 -0
  64. package/dist/agents/adversary/tactics/auth.js.map +1 -0
  65. package/dist/agents/adversary/tactics/index.d.ts +129 -0
  66. package/dist/agents/adversary/tactics/index.d.ts.map +1 -0
  67. package/dist/agents/adversary/tactics/index.js +199 -0
  68. package/dist/agents/adversary/tactics/index.js.map +1 -0
  69. package/dist/agents/adversary/tactics/infra.d.ts +13 -0
  70. package/dist/agents/adversary/tactics/infra.d.ts.map +1 -0
  71. package/dist/agents/adversary/tactics/infra.js +827 -0
  72. package/dist/agents/adversary/tactics/infra.js.map +1 -0
  73. package/dist/agents/adversary/tactics/injection.d.ts +12 -0
  74. package/dist/agents/adversary/tactics/injection.d.ts.map +1 -0
  75. package/dist/agents/adversary/tactics/injection.js +549 -0
  76. package/dist/agents/adversary/tactics/injection.js.map +1 -0
  77. package/dist/agents/adversary/tactics/llm.d.ts +13 -0
  78. package/dist/agents/adversary/tactics/llm.d.ts.map +1 -0
  79. package/dist/agents/adversary/tactics/llm.js +767 -0
  80. package/dist/agents/adversary/tactics/llm.js.map +1 -0
  81. package/dist/agents/adversary/tactics/web-app.d.ts +13 -0
  82. package/dist/agents/adversary/tactics/web-app.d.ts.map +1 -0
  83. package/dist/agents/adversary/tactics/web-app.js +717 -0
  84. package/dist/agents/adversary/tactics/web-app.js.map +1 -0
  85. package/dist/agents/adversary/types.d.ts +407 -0
  86. package/dist/agents/adversary/types.d.ts.map +1 -0
  87. package/dist/agents/adversary/types.js +12 -0
  88. package/dist/agents/adversary/types.js.map +1 -0
  89. package/dist/agents/index.d.ts +1 -0
  90. package/dist/agents/index.d.ts.map +1 -1
  91. package/dist/agents/index.js +2 -0
  92. package/dist/agents/index.js.map +1 -1
  93. package/dist/agents/zero-day-hunter.d.ts +1 -1
  94. package/dist/agents/zero-day-hunter.d.ts.map +1 -1
  95. package/dist/analysis/data-flow.d.ts +154 -0
  96. package/dist/analysis/data-flow.d.ts.map +1 -0
  97. package/dist/analysis/data-flow.js +393 -0
  98. package/dist/analysis/data-flow.js.map +1 -0
  99. package/dist/analysis/index.d.ts +9 -0
  100. package/dist/analysis/index.d.ts.map +1 -0
  101. package/dist/analysis/index.js +9 -0
  102. package/dist/analysis/index.js.map +1 -0
  103. package/dist/badge-service/index.d.ts +144 -0
  104. package/dist/badge-service/index.d.ts.map +1 -0
  105. package/dist/badge-service/index.js +206 -0
  106. package/dist/badge-service/index.js.map +1 -0
  107. package/dist/certification/consensus.test.js +2 -0
  108. package/dist/certification/consensus.test.js.map +1 -1
  109. package/dist/certification/store.d.ts.map +1 -1
  110. package/dist/certification/store.js +4 -0
  111. package/dist/certification/store.js.map +1 -1
  112. package/dist/certification/types.d.ts +3 -3
  113. package/dist/certification/types.d.ts.map +1 -1
  114. package/dist/certification/types.js +2 -0
  115. package/dist/certification/types.js.map +1 -1
  116. package/dist/commands/certification/certify.d.ts.map +1 -1
  117. package/dist/commands/certification/certify.js +18 -4
  118. package/dist/commands/certification/certify.js.map +1 -1
  119. package/dist/compliance/attestation.d.ts +39 -0
  120. package/dist/compliance/attestation.d.ts.map +1 -0
  121. package/dist/compliance/attestation.js +364 -0
  122. package/dist/compliance/attestation.js.map +1 -0
  123. package/dist/compliance/cfr42-part2.d.ts +42 -0
  124. package/dist/compliance/cfr42-part2.d.ts.map +1 -0
  125. package/dist/compliance/cfr42-part2.js +408 -0
  126. package/dist/compliance/cfr42-part2.js.map +1 -0
  127. package/dist/compliance/compliance-bundle.d.ts +100 -0
  128. package/dist/compliance/compliance-bundle.d.ts.map +1 -0
  129. package/dist/compliance/compliance-bundle.js +210 -0
  130. package/dist/compliance/compliance-bundle.js.map +1 -0
  131. package/dist/compliance/healthcare-bundle.d.ts +68 -0
  132. package/dist/compliance/healthcare-bundle.d.ts.map +1 -0
  133. package/dist/compliance/healthcare-bundle.js +104 -0
  134. package/dist/compliance/healthcare-bundle.js.map +1 -0
  135. package/dist/compliance/hipaa.d.ts.map +1 -1
  136. package/dist/compliance/hipaa.js +14 -11
  137. package/dist/compliance/hipaa.js.map +1 -1
  138. package/dist/compliance/index.d.ts +10 -2
  139. package/dist/compliance/index.d.ts.map +1 -1
  140. package/dist/compliance/index.js +9 -3
  141. package/dist/compliance/index.js.map +1 -1
  142. package/dist/compliance/mapper.d.ts.map +1 -1
  143. package/dist/compliance/mapper.js +3 -17
  144. package/dist/compliance/mapper.js.map +1 -1
  145. package/dist/compliance/nist-800-53.d.ts +22 -6
  146. package/dist/compliance/nist-800-53.d.ts.map +1 -1
  147. package/dist/compliance/nist-800-53.js +264 -272
  148. package/dist/compliance/nist-800-53.js.map +1 -1
  149. package/dist/compliance/report.d.ts +31 -2
  150. package/dist/compliance/report.d.ts.map +1 -1
  151. package/dist/compliance/report.js +255 -4
  152. package/dist/compliance/report.js.map +1 -1
  153. package/dist/compliance/types.d.ts +1 -1
  154. package/dist/compliance/types.d.ts.map +1 -1
  155. package/dist/config/flags.d.ts +12 -12
  156. package/dist/cost/index.d.ts +1 -1
  157. package/dist/cost/index.d.ts.map +1 -1
  158. package/dist/cost/index.js +1 -1
  159. package/dist/cost/index.js.map +1 -1
  160. package/dist/cost/tracker.d.ts +64 -0
  161. package/dist/cost/tracker.d.ts.map +1 -1
  162. package/dist/cost/tracker.js +165 -0
  163. package/dist/cost/tracker.js.map +1 -1
  164. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +28 -0
  165. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +1 -0
  166. package/dist/eval/fixtures/healthcare/audit-gaps.js +90 -0
  167. package/dist/eval/fixtures/healthcare/audit-gaps.js.map +1 -0
  168. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +31 -0
  169. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +1 -0
  170. package/dist/eval/fixtures/healthcare/consent-bypass.js +61 -0
  171. package/dist/eval/fixtures/healthcare/consent-bypass.js.map +1 -0
  172. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +24 -0
  173. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +1 -0
  174. package/dist/eval/fixtures/healthcare/phi-in-logs.js +41 -0
  175. package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +1 -0
  176. package/dist/evidence/collector.d.ts +21 -0
  177. package/dist/evidence/collector.d.ts.map +1 -0
  178. package/dist/evidence/collector.js +340 -0
  179. package/dist/evidence/collector.js.map +1 -0
  180. package/dist/evidence/index.d.ts +11 -0
  181. package/dist/evidence/index.d.ts.map +1 -0
  182. package/dist/evidence/index.js +12 -0
  183. package/dist/evidence/index.js.map +1 -0
  184. package/dist/evidence/store.d.ts +39 -0
  185. package/dist/evidence/store.d.ts.map +1 -0
  186. package/dist/evidence/store.js +173 -0
  187. package/dist/evidence/store.js.map +1 -0
  188. package/dist/evidence/types.d.ts +175 -0
  189. package/dist/evidence/types.d.ts.map +1 -0
  190. package/dist/evidence/types.js +9 -0
  191. package/dist/evidence/types.js.map +1 -0
  192. package/dist/exporters/checkmarx.d.ts +18 -0
  193. package/dist/exporters/checkmarx.d.ts.map +1 -0
  194. package/dist/exporters/checkmarx.js +203 -0
  195. package/dist/exporters/checkmarx.js.map +1 -0
  196. package/dist/exporters/index.d.ts +22 -0
  197. package/dist/exporters/index.d.ts.map +1 -0
  198. package/dist/exporters/index.js +41 -0
  199. package/dist/exporters/index.js.map +1 -0
  200. package/dist/exporters/snyk.d.ts +18 -0
  201. package/dist/exporters/snyk.d.ts.map +1 -0
  202. package/dist/exporters/snyk.js +119 -0
  203. package/dist/exporters/snyk.js.map +1 -0
  204. package/dist/exporters/sonarqube.d.ts +18 -0
  205. package/dist/exporters/sonarqube.d.ts.map +1 -0
  206. package/dist/exporters/sonarqube.js +125 -0
  207. package/dist/exporters/sonarqube.js.map +1 -0
  208. package/dist/exporters/types.d.ts +190 -0
  209. package/dist/exporters/types.d.ts.map +1 -0
  210. package/dist/exporters/types.js +9 -0
  211. package/dist/exporters/types.js.map +1 -0
  212. package/dist/frontier/index.d.ts +12 -0
  213. package/dist/frontier/index.d.ts.map +1 -0
  214. package/dist/frontier/index.js +12 -0
  215. package/dist/frontier/index.js.map +1 -0
  216. package/dist/frontier/orchestrator.d.ts +73 -0
  217. package/dist/frontier/orchestrator.d.ts.map +1 -0
  218. package/dist/frontier/orchestrator.js +312 -0
  219. package/dist/frontier/orchestrator.js.map +1 -0
  220. package/dist/frontier/providers/stub.d.ts +32 -0
  221. package/dist/frontier/providers/stub.d.ts.map +1 -0
  222. package/dist/frontier/providers/stub.js +66 -0
  223. package/dist/frontier/providers/stub.js.map +1 -0
  224. package/dist/frontier/types.d.ts +318 -0
  225. package/dist/frontier/types.d.ts.map +1 -0
  226. package/dist/frontier/types.js +27 -0
  227. package/dist/frontier/types.js.map +1 -0
  228. package/dist/history/index.d.ts +13 -0
  229. package/dist/history/index.d.ts.map +1 -0
  230. package/dist/history/index.js +15 -0
  231. package/dist/history/index.js.map +1 -0
  232. package/dist/history/store.d.ts +74 -0
  233. package/dist/history/store.d.ts.map +1 -0
  234. package/dist/history/store.js +399 -0
  235. package/dist/history/store.js.map +1 -0
  236. package/dist/history/types.d.ts +282 -0
  237. package/dist/history/types.d.ts.map +1 -0
  238. package/dist/history/types.js +41 -0
  239. package/dist/history/types.js.map +1 -0
  240. package/dist/history/verify.d.ts +44 -0
  241. package/dist/history/verify.d.ts.map +1 -0
  242. package/dist/history/verify.js +230 -0
  243. package/dist/history/verify.js.map +1 -0
  244. package/dist/index.d.ts.map +1 -1
  245. package/dist/index.js +431 -18
  246. package/dist/index.js.map +1 -1
  247. package/dist/multimodel/index.d.ts +1 -0
  248. package/dist/multimodel/index.d.ts.map +1 -1
  249. package/dist/multimodel/index.js +2 -0
  250. package/dist/multimodel/index.js.map +1 -1
  251. package/dist/multimodel/leaderboard.d.ts +116 -0
  252. package/dist/multimodel/leaderboard.d.ts.map +1 -0
  253. package/dist/multimodel/leaderboard.js +262 -0
  254. package/dist/multimodel/leaderboard.js.map +1 -0
  255. package/dist/observability/otel.d.ts.map +1 -1
  256. package/dist/observability/otel.js +1 -3
  257. package/dist/observability/otel.js.map +1 -1
  258. package/dist/plugins/loader.js +1 -1
  259. package/dist/plugins/loader.js.map +1 -1
  260. package/dist/sbom/provenance.test.js +2 -2
  261. package/dist/sbom/provenance.test.js.map +1 -1
  262. package/dist/scanners/agent/agent-chain-analysis.d.ts +152 -0
  263. package/dist/scanners/agent/agent-chain-analysis.d.ts.map +1 -0
  264. package/dist/scanners/agent/agent-chain-analysis.js +438 -0
  265. package/dist/scanners/agent/agent-chain-analysis.js.map +1 -0
  266. package/dist/scanners/agent/manifest-audit.d.ts.map +1 -1
  267. package/dist/scanners/agent/manifest-audit.js +30 -18
  268. package/dist/scanners/agent/manifest-audit.js.map +1 -1
  269. package/dist/scanners/agent/payloads/index.d.ts +2 -1
  270. package/dist/scanners/agent/payloads/index.d.ts.map +1 -1
  271. package/dist/scanners/agent/payloads/index.js +25 -6
  272. package/dist/scanners/agent/payloads/index.js.map +1 -1
  273. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
  274. package/dist/scanners/agent/prompt-injection-fuzzer.js +14 -0
  275. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
  276. package/dist/scanners/agent/types.d.ts +5 -5
  277. package/dist/scanners/agent/types.d.ts.map +1 -1
  278. package/dist/scanners/agent/types.js.map +1 -1
  279. package/dist/scanners/cache.d.ts +156 -0
  280. package/dist/scanners/cache.d.ts.map +1 -0
  281. package/dist/scanners/cache.js +462 -0
  282. package/dist/scanners/cache.js.map +1 -0
  283. package/dist/scanners/dependencies.d.ts.map +1 -1
  284. package/dist/scanners/dependencies.js +5 -6
  285. package/dist/scanners/dependencies.js.map +1 -1
  286. package/dist/scanners/gosec.d.ts.map +1 -1
  287. package/dist/scanners/gosec.js +47 -9
  288. package/dist/scanners/gosec.js.map +1 -1
  289. package/dist/scanners/healthcare.d.ts +29 -0
  290. package/dist/scanners/healthcare.d.ts.map +1 -0
  291. package/dist/scanners/healthcare.js +526 -0
  292. package/dist/scanners/healthcare.js.map +1 -0
  293. package/dist/scanners/index.d.ts +1 -0
  294. package/dist/scanners/index.d.ts.map +1 -1
  295. package/dist/scanners/index.js +33 -0
  296. package/dist/scanners/index.js.map +1 -1
  297. package/dist/scanners/index.test.js +6 -6
  298. package/dist/scanners/index.test.js.map +1 -1
  299. package/dist/scanners/secrets.js +4 -4
  300. package/dist/scanners/secrets.js.map +1 -1
  301. package/dist/scanners/semgrep.js +5 -5
  302. package/dist/scanners/semgrep.js.map +1 -1
  303. package/dist/scanners/types.d.ts +1 -1
  304. package/dist/scanners/types.d.ts.map +1 -1
  305. package/dist/scanners/types.js +1 -0
  306. package/dist/scanners/types.js.map +1 -1
  307. package/dist/scanners/typescript.test.js +1 -1
  308. package/dist/scanners/typescript.test.js.map +1 -1
  309. package/dist/telemetry/index.d.ts +10 -0
  310. package/dist/telemetry/index.d.ts.map +1 -0
  311. package/dist/telemetry/index.js +10 -0
  312. package/dist/telemetry/index.js.map +1 -0
  313. package/dist/telemetry/registry.d.ts +178 -0
  314. package/dist/telemetry/registry.d.ts.map +1 -0
  315. package/dist/telemetry/registry.js +297 -0
  316. package/dist/telemetry/registry.js.map +1 -0
  317. package/dist/telemetry/usage.d.ts +197 -0
  318. package/dist/telemetry/usage.d.ts.map +1 -0
  319. package/dist/telemetry/usage.js +244 -0
  320. package/dist/telemetry/usage.js.map +1 -0
  321. package/package.json +11 -2
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Evidence Collection Types
3
+ *
4
+ * Types for collecting and packaging audit evidence for compliance.
5
+ *
6
+ * @module evidence/types
7
+ */
8
+ import type { ComplianceFramework } from "../compliance/types.js";
9
+ /**
10
+ * Evidence artifact type
11
+ */
12
+ export type EvidenceArtifactType = "scan_result" | "compliance_report" | "config_file" | "sbom" | "history_snapshot" | "verification_result" | "certification_result";
13
+ /**
14
+ * Individual evidence artifact
15
+ */
16
+ export interface EvidenceArtifact {
17
+ /** Artifact type */
18
+ type: EvidenceArtifactType;
19
+ /** Human-readable name */
20
+ name: string;
21
+ /** Description of what this artifact contains */
22
+ description: string;
23
+ /** SHA-256 hash of the artifact content */
24
+ contentDigest: string;
25
+ /** Size in bytes */
26
+ sizeBytes: number;
27
+ /** When the artifact was collected */
28
+ collectedAt: string;
29
+ /** Source path (if file-based) */
30
+ sourcePath?: string;
31
+ /** Inline content (for small artifacts) or path to stored file */
32
+ content?: string;
33
+ /** Path to stored artifact file (for large artifacts) */
34
+ storedPath?: string;
35
+ }
36
+ /**
37
+ * CI environment metadata
38
+ */
39
+ export interface CIEnvironment {
40
+ /** CI provider (github, gitlab, jenkins, etc.) */
41
+ provider: string;
42
+ /** Build/workflow ID */
43
+ buildId: string;
44
+ /** Git commit SHA */
45
+ commitSha: string;
46
+ /** Git branch or tag */
47
+ ref?: string;
48
+ /** Actor/user who triggered the build */
49
+ actor?: string;
50
+ /** Run number/ID */
51
+ runId?: string;
52
+ /** Repository information */
53
+ repository?: {
54
+ owner: string;
55
+ name: string;
56
+ url: string;
57
+ };
58
+ /** Pull request information if applicable */
59
+ pullRequest?: {
60
+ number: number;
61
+ title?: string;
62
+ url?: string;
63
+ };
64
+ }
65
+ /**
66
+ * Runtime environment metadata
67
+ */
68
+ export interface RuntimeEnvironment {
69
+ /** Operating system */
70
+ os: string;
71
+ /** OS version */
72
+ osVersion: string;
73
+ /** Node.js version */
74
+ nodeVersion: string;
75
+ /** Vaspera version */
76
+ vasperaVersion: string;
77
+ /** Hostname (sanitized for privacy) */
78
+ hostname?: string;
79
+ /** CI environment if running in CI */
80
+ ci?: CIEnvironment;
81
+ /** Timestamp when environment was captured */
82
+ capturedAt: string;
83
+ }
84
+ /**
85
+ * Evidence bundle
86
+ */
87
+ export interface EvidenceBundle {
88
+ /** Unique bundle ID */
89
+ id: string;
90
+ /** Associated certification ID */
91
+ certificationId?: string;
92
+ /** When the bundle was created */
93
+ createdAt: string;
94
+ /** Project path */
95
+ projectPath: string;
96
+ /** Compliance frameworks this evidence supports */
97
+ frameworks: ComplianceFramework[];
98
+ /** Runtime environment metadata */
99
+ environment: RuntimeEnvironment;
100
+ /** Collected artifacts */
101
+ artifacts: EvidenceArtifact[];
102
+ /** Overall bundle digest (SHA-256 of all artifact digests) */
103
+ bundleDigest: string;
104
+ /** Sigstore signature of the bundle */
105
+ signature?: {
106
+ /** Base64-encoded signature */
107
+ value: string;
108
+ /** Signing certificate (Base64 PEM) */
109
+ certificate?: string;
110
+ /** Rekor transparency log index */
111
+ rekorLogIndex?: number;
112
+ /** Rekor log ID */
113
+ rekorLogId?: string;
114
+ };
115
+ /** Bundle metadata */
116
+ metadata?: Record<string, unknown>;
117
+ }
118
+ /**
119
+ * Options for collecting evidence
120
+ */
121
+ export interface CollectEvidenceOptions {
122
+ /** Project path to collect evidence from */
123
+ projectPath: string;
124
+ /** Certification ID to associate with */
125
+ certificationId?: string;
126
+ /** Compliance frameworks to include reports for */
127
+ frameworks?: ComplianceFramework[];
128
+ /** Include SBOM */
129
+ includeSbom?: boolean;
130
+ /** Include history snapshot */
131
+ includeHistory?: boolean;
132
+ /** Include scan results */
133
+ includeScanResults?: boolean;
134
+ /** Include config files (.vaspera/config.json, etc.) */
135
+ includeConfig?: boolean;
136
+ /** Sign the bundle with Sigstore */
137
+ sign?: boolean;
138
+ /** Maximum artifact size to inline (larger artifacts are stored) */
139
+ maxInlineSize?: number;
140
+ }
141
+ /**
142
+ * Evidence collection result
143
+ */
144
+ export interface CollectEvidenceResult {
145
+ /** Whether collection succeeded */
146
+ success: boolean;
147
+ /** The collected evidence bundle */
148
+ bundle?: EvidenceBundle;
149
+ /** Error message if failed */
150
+ error?: string;
151
+ /** Warnings encountered during collection */
152
+ warnings: string[];
153
+ /** Path where bundle was stored */
154
+ storedPath?: string;
155
+ }
156
+ /**
157
+ * Evidence verification result
158
+ */
159
+ export interface VerifyEvidenceResult {
160
+ /** Whether verification succeeded */
161
+ verified: boolean;
162
+ /** Bundle ID verified */
163
+ bundleId: string;
164
+ /** Whether all artifact digests match */
165
+ artifactsIntact: boolean;
166
+ /** Whether signature is valid (if present) */
167
+ signatureValid?: boolean;
168
+ /** List of artifacts that failed verification */
169
+ failedArtifacts: string[];
170
+ /** Verification timestamp */
171
+ verifiedAt: string;
172
+ /** Error message if verification failed */
173
+ error?: string;
174
+ }
175
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/evidence/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Evidence Collection Types
3
+ *
4
+ * Types for collecting and packaging audit evidence for compliance.
5
+ *
6
+ * @module evidence/types
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/evidence/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Checkmarx Exporter
3
+ *
4
+ * Exports findings to Checkmarx XML format.
5
+ *
6
+ * @module exporters/checkmarx
7
+ */
8
+ import type { Certification } from "../certification/types.js";
9
+ import type { ExportOptions, ExportResult, Exporter } from "./types.js";
10
+ /**
11
+ * Export certification to Checkmarx format
12
+ */
13
+ export declare function exportToCheckmarx(certification: Certification, options?: ExportOptions): Promise<ExportResult>;
14
+ /**
15
+ * Checkmarx exporter instance
16
+ */
17
+ export declare const checkmarxExporter: Exporter;
18
+ //# sourceMappingURL=checkmarx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkmarx.d.ts","sourceRoot":"","sources":["../../src/exporters/checkmarx.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EAGT,MAAM,YAAY,CAAC;AA+JpB;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAgDvB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAG/B,CAAC"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Checkmarx Exporter
3
+ *
4
+ * Exports findings to Checkmarx XML format.
5
+ *
6
+ * @module exporters/checkmarx
7
+ */
8
+ import { writeFile } from "fs/promises";
9
+ import { createHash } from "crypto";
10
+ /**
11
+ * Map Vaspera severity to Checkmarx severity
12
+ */
13
+ const SEVERITY_MAP = {
14
+ critical: "High",
15
+ high: "High",
16
+ medium: "Medium",
17
+ low: "Low",
18
+ info: "Information",
19
+ };
20
+ /**
21
+ * Map confidence to Checkmarx state
22
+ */
23
+ function confidenceToState(confidence) {
24
+ if (confidence >= 90)
25
+ return "Confirmed";
26
+ if (confidence >= 70)
27
+ return "Urgent";
28
+ return "To Verify";
29
+ }
30
+ /**
31
+ * Generate a result hash
32
+ */
33
+ function generateHash(finding) {
34
+ const hashInput = `${finding.file || "unknown"}:${finding.line || 0}:${finding.category}:${finding.description.slice(0, 100)}`;
35
+ return createHash("md5").update(hashInput).digest("hex").slice(0, 16);
36
+ }
37
+ /**
38
+ * Convert a finding to Checkmarx result
39
+ */
40
+ function findingToResult(finding, projectRoot) {
41
+ let sourceFile = finding.file || "unknown";
42
+ if (projectRoot && sourceFile.startsWith(projectRoot)) {
43
+ sourceFile = sourceFile.slice(projectRoot.length).replace(/^\//, "");
44
+ }
45
+ return {
46
+ queryId: finding.scanner_rule_id || `vaspera-${finding.category}`,
47
+ queryName: finding.category.charAt(0).toUpperCase() + finding.category.slice(1).replace(/-/g, " "),
48
+ queryGroup: getCategoryGroup(finding.category),
49
+ cweId: finding.cwe_ids?.[0],
50
+ severity: SEVERITY_MAP[finding.severity],
51
+ state: confidenceToState(finding.confidence),
52
+ sourceFile,
53
+ sourceLine: finding.line || 1,
54
+ sourceObject: extractObjectName(finding.evidence || finding.description),
55
+ resultHash: generateHash(finding),
56
+ detectionDate: finding.created_at || new Date().toISOString(),
57
+ comment: finding.evidence,
58
+ };
59
+ }
60
+ /**
61
+ * Get category group for Checkmarx
62
+ */
63
+ function getCategoryGroup(category) {
64
+ const groups = {
65
+ injection: "Input Validation",
66
+ xss: "Input Validation",
67
+ authentication: "Authentication",
68
+ authorization: "Authorization",
69
+ cryptography: "Cryptography",
70
+ secrets: "Sensitive Data",
71
+ "api-security": "API Security",
72
+ "error-handling": "Error Handling",
73
+ "type-safety": "Type Safety",
74
+ "null-safety": "Null Safety",
75
+ logging: "Logging",
76
+ performance: "Performance",
77
+ "code-quality": "Code Quality",
78
+ };
79
+ for (const [key, group] of Object.entries(groups)) {
80
+ if (category.toLowerCase().includes(key)) {
81
+ return group;
82
+ }
83
+ }
84
+ return "General";
85
+ }
86
+ /**
87
+ * Extract object name from code snippet or description
88
+ */
89
+ function extractObjectName(text) {
90
+ // Try to find function name
91
+ const funcMatch = text.match(/function\s+(\w+)/);
92
+ if (funcMatch)
93
+ return funcMatch[1];
94
+ // Try to find variable name
95
+ const varMatch = text.match(/(?:const|let|var)\s+(\w+)/);
96
+ if (varMatch)
97
+ return varMatch[1];
98
+ // Try to find class/method
99
+ const classMatch = text.match(/(?:class|interface)\s+(\w+)/);
100
+ if (classMatch)
101
+ return classMatch[1];
102
+ return "unknown";
103
+ }
104
+ /**
105
+ * Convert report to XML string
106
+ */
107
+ function toXml(report) {
108
+ const escapeXml = (str) => str
109
+ .replace(/&/g, "&amp;")
110
+ .replace(/</g, "&lt;")
111
+ .replace(/>/g, "&gt;")
112
+ .replace(/"/g, "&quot;")
113
+ .replace(/'/g, "&apos;");
114
+ const lines = [
115
+ '<?xml version="1.0" encoding="UTF-8"?>',
116
+ "<CxXMLResults>",
117
+ ` <ProjectName>${escapeXml(report.projectName)}</ProjectName>`,
118
+ ` <ProjectId>${escapeXml(report.projectId)}</ProjectId>`,
119
+ ` <ScanId>${escapeXml(report.scanId)}</ScanId>`,
120
+ ` <ScanDate>${escapeXml(report.scanDate)}</ScanDate>`,
121
+ ` <ScanStatus>${escapeXml(report.scanStatus)}</ScanStatus>`,
122
+ ` <ResultsCount>${report.resultsCount}</ResultsCount>`,
123
+ " <Results>",
124
+ ];
125
+ for (const result of report.results) {
126
+ lines.push(" <Result>");
127
+ lines.push(` <QueryId>${escapeXml(result.queryId)}</QueryId>`);
128
+ lines.push(` <QueryName>${escapeXml(result.queryName)}</QueryName>`);
129
+ lines.push(` <QueryGroup>${escapeXml(result.queryGroup)}</QueryGroup>`);
130
+ if (result.cweId) {
131
+ lines.push(` <CweId>${escapeXml(result.cweId)}</CweId>`);
132
+ }
133
+ lines.push(` <Severity>${escapeXml(result.severity)}</Severity>`);
134
+ lines.push(` <State>${escapeXml(result.state)}</State>`);
135
+ lines.push(` <SourceFile>${escapeXml(result.sourceFile)}</SourceFile>`);
136
+ lines.push(` <SourceLine>${result.sourceLine}</SourceLine>`);
137
+ lines.push(` <SourceObject>${escapeXml(result.sourceObject)}</SourceObject>`);
138
+ if (result.destFile) {
139
+ lines.push(` <DestFile>${escapeXml(result.destFile)}</DestFile>`);
140
+ lines.push(` <DestLine>${result.destLine || 0}</DestLine>`);
141
+ lines.push(` <DestObject>${escapeXml(result.destObject || "")}</DestObject>`);
142
+ }
143
+ lines.push(` <ResultHash>${escapeXml(result.resultHash)}</ResultHash>`);
144
+ lines.push(` <DetectionDate>${escapeXml(result.detectionDate)}</DetectionDate>`);
145
+ if (result.comment) {
146
+ lines.push(` <Comment>${escapeXml(result.comment)}</Comment>`);
147
+ }
148
+ lines.push(" </Result>");
149
+ }
150
+ lines.push(" </Results>");
151
+ lines.push("</CxXMLResults>");
152
+ return lines.join("\n");
153
+ }
154
+ /**
155
+ * Export certification to Checkmarx format
156
+ */
157
+ export async function exportToCheckmarx(certification, options = {}) {
158
+ const { outputPath, minSeverity = "info", projectRoot, includeResolved = false } = options;
159
+ const severityOrder = ["critical", "high", "medium", "low", "info"];
160
+ const minIndex = severityOrder.indexOf(minSeverity);
161
+ // Collect all findings
162
+ const allFindings = [];
163
+ for (const [, agentData] of Object.entries(certification.agents)) {
164
+ if (agentData?.findings) {
165
+ allFindings.push(...agentData.findings);
166
+ }
167
+ }
168
+ // Filter by severity
169
+ const filteredFindings = allFindings.filter((f) => {
170
+ const sevIndex = severityOrder.indexOf(f.severity);
171
+ return sevIndex <= minIndex;
172
+ });
173
+ // Convert to Checkmarx format
174
+ const results = filteredFindings.map((f) => findingToResult(f, projectRoot));
175
+ const report = {
176
+ projectName: certification.metadata.project_name,
177
+ projectId: certification.metadata.id,
178
+ scanId: certification.metadata.id,
179
+ scanDate: certification.metadata.started_at,
180
+ scanStatus: certification.metadata.status === "completed" ? "Finished" : "In Progress",
181
+ resultsCount: results.length,
182
+ results,
183
+ };
184
+ const content = toXml(report);
185
+ // Write to file if path provided
186
+ if (outputPath) {
187
+ await writeFile(outputPath, content, "utf-8");
188
+ }
189
+ return {
190
+ format: "checkmarx",
191
+ outputPath,
192
+ findingsExported: results.length,
193
+ content,
194
+ };
195
+ }
196
+ /**
197
+ * Checkmarx exporter instance
198
+ */
199
+ export const checkmarxExporter = {
200
+ format: "checkmarx",
201
+ export: exportToCheckmarx,
202
+ };
203
+ //# sourceMappingURL=checkmarx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkmarx.js","sourceRoot":"","sources":["../../src/exporters/checkmarx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Exporters Module
3
+ *
4
+ * Exports findings to various security tool formats.
5
+ *
6
+ * @module exporters
7
+ */
8
+ export type { ExportFormat, ExportOptions, ExportResult, Exporter, SonarQubeReport, SonarQubeIssue, SnykReport, SnykVulnerability, CheckmarxReport, CheckmarxResult, } from "./types.js";
9
+ export { exportToSonarQube, sonarqubeExporter, } from "./sonarqube.js";
10
+ export { exportToSnyk, snykExporter, } from "./snyk.js";
11
+ export { exportToCheckmarx, checkmarxExporter, } from "./checkmarx.js";
12
+ import type { Certification } from "../certification/types.js";
13
+ import type { ExportFormat, ExportOptions, ExportResult } from "./types.js";
14
+ /**
15
+ * Export certification to specified format
16
+ */
17
+ export declare function exportCertification(certification: Certification, format: ExportFormat, options?: ExportOptions): Promise<ExportResult>;
18
+ /**
19
+ * Get all supported export formats
20
+ */
21
+ export declare function getSupportedFormats(): ExportFormat[];
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporters/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK5E;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAEpD"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Exporters Module
3
+ *
4
+ * Exports findings to various security tool formats.
5
+ *
6
+ * @module exporters
7
+ */
8
+ // SonarQube
9
+ export { exportToSonarQube, sonarqubeExporter, } from "./sonarqube.js";
10
+ // Snyk
11
+ export { exportToSnyk, snykExporter, } from "./snyk.js";
12
+ // Checkmarx
13
+ export { exportToCheckmarx, checkmarxExporter, } from "./checkmarx.js";
14
+ import { exportToSonarQube } from "./sonarqube.js";
15
+ import { exportToSnyk } from "./snyk.js";
16
+ import { exportToCheckmarx } from "./checkmarx.js";
17
+ /**
18
+ * Export certification to specified format
19
+ */
20
+ export async function exportCertification(certification, format, options = {}) {
21
+ switch (format) {
22
+ case "sonarqube":
23
+ return exportToSonarQube(certification, options);
24
+ case "snyk":
25
+ return exportToSnyk(certification, options);
26
+ case "checkmarx":
27
+ return exportToCheckmarx(certification, options);
28
+ case "sarif":
29
+ // SARIF is handled by the existing certification/sarif.ts module
30
+ throw new Error("SARIF export is handled by certification_sarif tool");
31
+ default:
32
+ throw new Error(`Unsupported export format: ${format}`);
33
+ }
34
+ }
35
+ /**
36
+ * Get all supported export formats
37
+ */
38
+ export function getSupportedFormats() {
39
+ return ["sarif", "sonarqube", "snyk", "checkmarx"];
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporters/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO;AACP,OAAO,EACL,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,aAA4B,EAC5B,MAAoB,EACpB,UAAyB,EAAE;IAE3B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,OAAO;YACV,iEAAiE;YACjE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Snyk Exporter
3
+ *
4
+ * Exports findings to Snyk JSON format.
5
+ *
6
+ * @module exporters/snyk
7
+ */
8
+ import type { Certification } from "../certification/types.js";
9
+ import type { ExportOptions, ExportResult, Exporter } from "./types.js";
10
+ /**
11
+ * Export certification to Snyk format
12
+ */
13
+ export declare function exportToSnyk(certification: Certification, options?: ExportOptions): Promise<ExportResult>;
14
+ /**
15
+ * Snyk exporter instance
16
+ */
17
+ export declare const snykExporter: Exporter;
18
+ //# sourceMappingURL=snyk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snyk.d.ts","sourceRoot":"","sources":["../../src/exporters/snyk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EAGT,MAAM,YAAY,CAAC;AA4DpB;;GAEG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA0DvB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,QAG1B,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Snyk Exporter
3
+ *
4
+ * Exports findings to Snyk JSON format.
5
+ *
6
+ * @module exporters/snyk
7
+ */
8
+ import { writeFile } from "fs/promises";
9
+ /**
10
+ * Map Vaspera severity to Snyk severity
11
+ */
12
+ const SEVERITY_MAP = {
13
+ critical: "critical",
14
+ high: "high",
15
+ medium: "medium",
16
+ low: "low",
17
+ info: "low", // Snyk doesn't have "info", map to low
18
+ };
19
+ /**
20
+ * Generate a unique vulnerability ID
21
+ */
22
+ function generateVulnId(finding) {
23
+ const prefix = finding.scanner_rule_id ? finding.scanner_rule_id.toUpperCase().replace(/[^A-Z0-9]/g, "-") : "VASPERA";
24
+ return `${prefix}-${finding.id}`;
25
+ }
26
+ /**
27
+ * Convert a finding to Snyk vulnerability
28
+ */
29
+ function findingToVulnerability(finding) {
30
+ const vuln = {
31
+ id: generateVulnId(finding),
32
+ title: finding.category.charAt(0).toUpperCase() + finding.category.slice(1).replace(/-/g, " "),
33
+ description: finding.description,
34
+ severity: SEVERITY_MAP[finding.severity],
35
+ identifiers: {},
36
+ from: [finding.file || "unknown"],
37
+ isPatchable: false,
38
+ isUpgradable: false,
39
+ };
40
+ // Add CWE IDs if available
41
+ if (finding.cwe_ids && finding.cwe_ids.length > 0) {
42
+ vuln.identifiers.CWE = finding.cwe_ids;
43
+ }
44
+ // Add CVE IDs if available
45
+ if (finding.cve_ids && finding.cve_ids.length > 0) {
46
+ vuln.identifiers.CVE = finding.cve_ids;
47
+ }
48
+ // Add line info to description
49
+ if (finding.line) {
50
+ vuln.description = `[Line ${finding.line}] ${vuln.description}`;
51
+ }
52
+ // Map evidence if available (remediation stored in description)
53
+ if (finding.evidence) {
54
+ vuln.upgradePath = [finding.evidence];
55
+ vuln.isUpgradable = true;
56
+ }
57
+ return vuln;
58
+ }
59
+ /**
60
+ * Export certification to Snyk format
61
+ */
62
+ export async function exportToSnyk(certification, options = {}) {
63
+ const { outputPath, minSeverity = "info", includeResolved = false } = options;
64
+ const severityOrder = ["critical", "high", "medium", "low", "info"];
65
+ const minIndex = severityOrder.indexOf(minSeverity);
66
+ // Collect all findings
67
+ const allFindings = [];
68
+ for (const [, agentData] of Object.entries(certification.agents)) {
69
+ if (agentData?.findings) {
70
+ allFindings.push(...agentData.findings);
71
+ }
72
+ }
73
+ // Filter by severity
74
+ const filteredFindings = allFindings.filter((f) => {
75
+ const sevIndex = severityOrder.indexOf(f.severity);
76
+ return sevIndex <= minIndex;
77
+ });
78
+ // Convert to Snyk format
79
+ const vulnerabilities = filteredFindings.map(findingToVulnerability);
80
+ // Count by severity
81
+ const bySeverity = {
82
+ critical: vulnerabilities.filter((v) => v.severity === "critical").length,
83
+ high: vulnerabilities.filter((v) => v.severity === "high").length,
84
+ medium: vulnerabilities.filter((v) => v.severity === "medium").length,
85
+ low: vulnerabilities.filter((v) => v.severity === "low").length,
86
+ };
87
+ const report = {
88
+ ok: vulnerabilities.length === 0,
89
+ vulnerabilities,
90
+ dependencyCount: 0,
91
+ org: "vaspera",
92
+ policy: "",
93
+ isPrivate: true,
94
+ licensesPolicy: {},
95
+ packageManager: "unknown",
96
+ projectName: certification.metadata.project_name,
97
+ summary: `Found ${vulnerabilities.length} issues (${bySeverity.critical} critical, ${bySeverity.high} high, ${bySeverity.medium} medium, ${bySeverity.low} low)`,
98
+ filesystemPolicy: false,
99
+ };
100
+ const content = JSON.stringify(report, null, 2);
101
+ // Write to file if path provided
102
+ if (outputPath) {
103
+ await writeFile(outputPath, content, "utf-8");
104
+ }
105
+ return {
106
+ format: "snyk",
107
+ outputPath,
108
+ findingsExported: vulnerabilities.length,
109
+ content,
110
+ };
111
+ }
112
+ /**
113
+ * Snyk exporter instance
114
+ */
115
+ export const snykExporter = {
116
+ format: "snyk",
117
+ export: exportToSnyk,
118
+ };
119
+ //# sourceMappingURL=snyk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snyk.js","sourceRoot":"","sources":["../../src/exporters/snyk.ts"],"names":[],"mappings":"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"}