vaspera 2.8.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 (303) hide show
  1. package/CHANGELOG.md +55 -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 +25 -4
  38. package/dist/agents/adversary/config.d.ts.map +1 -1
  39. package/dist/agents/adversary/config.js +38 -8
  40. package/dist/agents/adversary/config.js.map +1 -1
  41. package/dist/agents/adversary/index.d.ts +7 -0
  42. package/dist/agents/adversary/index.d.ts.map +1 -1
  43. package/dist/agents/adversary/index.js +83 -1
  44. package/dist/agents/adversary/index.js.map +1 -1
  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 +66 -10
  86. package/dist/agents/adversary/types.d.ts.map +1 -1
  87. package/dist/agents/zero-day-hunter.d.ts +1 -1
  88. package/dist/agents/zero-day-hunter.d.ts.map +1 -1
  89. package/dist/analysis/data-flow.d.ts +154 -0
  90. package/dist/analysis/data-flow.d.ts.map +1 -0
  91. package/dist/analysis/data-flow.js +393 -0
  92. package/dist/analysis/data-flow.js.map +1 -0
  93. package/dist/analysis/index.d.ts +9 -0
  94. package/dist/analysis/index.d.ts.map +1 -0
  95. package/dist/analysis/index.js +9 -0
  96. package/dist/analysis/index.js.map +1 -0
  97. package/dist/badge-service/index.d.ts +144 -0
  98. package/dist/badge-service/index.d.ts.map +1 -0
  99. package/dist/badge-service/index.js +206 -0
  100. package/dist/badge-service/index.js.map +1 -0
  101. package/dist/certification/types.d.ts +1 -1
  102. package/dist/certification/types.d.ts.map +1 -1
  103. package/dist/certification/types.js.map +1 -1
  104. package/dist/commands/certification/certify.d.ts.map +1 -1
  105. package/dist/commands/certification/certify.js +18 -4
  106. package/dist/commands/certification/certify.js.map +1 -1
  107. package/dist/compliance/attestation.d.ts +39 -0
  108. package/dist/compliance/attestation.d.ts.map +1 -0
  109. package/dist/compliance/attestation.js +364 -0
  110. package/dist/compliance/attestation.js.map +1 -0
  111. package/dist/compliance/cfr42-part2.d.ts +42 -0
  112. package/dist/compliance/cfr42-part2.d.ts.map +1 -0
  113. package/dist/compliance/cfr42-part2.js +408 -0
  114. package/dist/compliance/cfr42-part2.js.map +1 -0
  115. package/dist/compliance/compliance-bundle.d.ts +100 -0
  116. package/dist/compliance/compliance-bundle.d.ts.map +1 -0
  117. package/dist/compliance/compliance-bundle.js +210 -0
  118. package/dist/compliance/compliance-bundle.js.map +1 -0
  119. package/dist/compliance/healthcare-bundle.d.ts +68 -0
  120. package/dist/compliance/healthcare-bundle.d.ts.map +1 -0
  121. package/dist/compliance/healthcare-bundle.js +104 -0
  122. package/dist/compliance/healthcare-bundle.js.map +1 -0
  123. package/dist/compliance/hipaa.d.ts.map +1 -1
  124. package/dist/compliance/hipaa.js +14 -11
  125. package/dist/compliance/hipaa.js.map +1 -1
  126. package/dist/compliance/index.d.ts +10 -2
  127. package/dist/compliance/index.d.ts.map +1 -1
  128. package/dist/compliance/index.js +9 -3
  129. package/dist/compliance/index.js.map +1 -1
  130. package/dist/compliance/mapper.d.ts.map +1 -1
  131. package/dist/compliance/mapper.js +3 -17
  132. package/dist/compliance/mapper.js.map +1 -1
  133. package/dist/compliance/nist-800-53.d.ts +22 -6
  134. package/dist/compliance/nist-800-53.d.ts.map +1 -1
  135. package/dist/compliance/nist-800-53.js +264 -272
  136. package/dist/compliance/nist-800-53.js.map +1 -1
  137. package/dist/compliance/report.d.ts +31 -2
  138. package/dist/compliance/report.d.ts.map +1 -1
  139. package/dist/compliance/report.js +255 -4
  140. package/dist/compliance/report.js.map +1 -1
  141. package/dist/compliance/types.d.ts +1 -1
  142. package/dist/compliance/types.d.ts.map +1 -1
  143. package/dist/config/flags.d.ts +12 -12
  144. package/dist/cost/index.d.ts +1 -1
  145. package/dist/cost/index.d.ts.map +1 -1
  146. package/dist/cost/index.js +1 -1
  147. package/dist/cost/index.js.map +1 -1
  148. package/dist/cost/tracker.d.ts +64 -0
  149. package/dist/cost/tracker.d.ts.map +1 -1
  150. package/dist/cost/tracker.js +165 -0
  151. package/dist/cost/tracker.js.map +1 -1
  152. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +28 -0
  153. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +1 -0
  154. package/dist/eval/fixtures/healthcare/audit-gaps.js +90 -0
  155. package/dist/eval/fixtures/healthcare/audit-gaps.js.map +1 -0
  156. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +31 -0
  157. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +1 -0
  158. package/dist/eval/fixtures/healthcare/consent-bypass.js +61 -0
  159. package/dist/eval/fixtures/healthcare/consent-bypass.js.map +1 -0
  160. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +24 -0
  161. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +1 -0
  162. package/dist/eval/fixtures/healthcare/phi-in-logs.js +41 -0
  163. package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +1 -0
  164. package/dist/evidence/collector.d.ts +21 -0
  165. package/dist/evidence/collector.d.ts.map +1 -0
  166. package/dist/evidence/collector.js +340 -0
  167. package/dist/evidence/collector.js.map +1 -0
  168. package/dist/evidence/index.d.ts +11 -0
  169. package/dist/evidence/index.d.ts.map +1 -0
  170. package/dist/evidence/index.js +12 -0
  171. package/dist/evidence/index.js.map +1 -0
  172. package/dist/evidence/store.d.ts +39 -0
  173. package/dist/evidence/store.d.ts.map +1 -0
  174. package/dist/evidence/store.js +173 -0
  175. package/dist/evidence/store.js.map +1 -0
  176. package/dist/evidence/types.d.ts +175 -0
  177. package/dist/evidence/types.d.ts.map +1 -0
  178. package/dist/evidence/types.js +9 -0
  179. package/dist/evidence/types.js.map +1 -0
  180. package/dist/exporters/checkmarx.d.ts +18 -0
  181. package/dist/exporters/checkmarx.d.ts.map +1 -0
  182. package/dist/exporters/checkmarx.js +203 -0
  183. package/dist/exporters/checkmarx.js.map +1 -0
  184. package/dist/exporters/index.d.ts +22 -0
  185. package/dist/exporters/index.d.ts.map +1 -0
  186. package/dist/exporters/index.js +41 -0
  187. package/dist/exporters/index.js.map +1 -0
  188. package/dist/exporters/snyk.d.ts +18 -0
  189. package/dist/exporters/snyk.d.ts.map +1 -0
  190. package/dist/exporters/snyk.js +119 -0
  191. package/dist/exporters/snyk.js.map +1 -0
  192. package/dist/exporters/sonarqube.d.ts +18 -0
  193. package/dist/exporters/sonarqube.d.ts.map +1 -0
  194. package/dist/exporters/sonarqube.js +125 -0
  195. package/dist/exporters/sonarqube.js.map +1 -0
  196. package/dist/exporters/types.d.ts +190 -0
  197. package/dist/exporters/types.d.ts.map +1 -0
  198. package/dist/exporters/types.js +9 -0
  199. package/dist/exporters/types.js.map +1 -0
  200. package/dist/frontier/index.d.ts +12 -0
  201. package/dist/frontier/index.d.ts.map +1 -0
  202. package/dist/frontier/index.js +12 -0
  203. package/dist/frontier/index.js.map +1 -0
  204. package/dist/frontier/orchestrator.d.ts +73 -0
  205. package/dist/frontier/orchestrator.d.ts.map +1 -0
  206. package/dist/frontier/orchestrator.js +312 -0
  207. package/dist/frontier/orchestrator.js.map +1 -0
  208. package/dist/frontier/providers/stub.d.ts +32 -0
  209. package/dist/frontier/providers/stub.d.ts.map +1 -0
  210. package/dist/frontier/providers/stub.js +66 -0
  211. package/dist/frontier/providers/stub.js.map +1 -0
  212. package/dist/frontier/types.d.ts +318 -0
  213. package/dist/frontier/types.d.ts.map +1 -0
  214. package/dist/frontier/types.js +27 -0
  215. package/dist/frontier/types.js.map +1 -0
  216. package/dist/history/index.d.ts +13 -0
  217. package/dist/history/index.d.ts.map +1 -0
  218. package/dist/history/index.js +15 -0
  219. package/dist/history/index.js.map +1 -0
  220. package/dist/history/store.d.ts +74 -0
  221. package/dist/history/store.d.ts.map +1 -0
  222. package/dist/history/store.js +399 -0
  223. package/dist/history/store.js.map +1 -0
  224. package/dist/history/types.d.ts +282 -0
  225. package/dist/history/types.d.ts.map +1 -0
  226. package/dist/history/types.js +41 -0
  227. package/dist/history/types.js.map +1 -0
  228. package/dist/history/verify.d.ts +44 -0
  229. package/dist/history/verify.d.ts.map +1 -0
  230. package/dist/history/verify.js +230 -0
  231. package/dist/history/verify.js.map +1 -0
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +431 -18
  234. package/dist/index.js.map +1 -1
  235. package/dist/multimodel/index.d.ts +1 -0
  236. package/dist/multimodel/index.d.ts.map +1 -1
  237. package/dist/multimodel/index.js +2 -0
  238. package/dist/multimodel/index.js.map +1 -1
  239. package/dist/multimodel/leaderboard.d.ts +116 -0
  240. package/dist/multimodel/leaderboard.d.ts.map +1 -0
  241. package/dist/multimodel/leaderboard.js +262 -0
  242. package/dist/multimodel/leaderboard.js.map +1 -0
  243. package/dist/observability/otel.d.ts.map +1 -1
  244. package/dist/observability/otel.js +1 -3
  245. package/dist/observability/otel.js.map +1 -1
  246. package/dist/plugins/loader.js +1 -1
  247. package/dist/plugins/loader.js.map +1 -1
  248. package/dist/scanners/agent/agent-chain-analysis.d.ts +152 -0
  249. package/dist/scanners/agent/agent-chain-analysis.d.ts.map +1 -0
  250. package/dist/scanners/agent/agent-chain-analysis.js +438 -0
  251. package/dist/scanners/agent/agent-chain-analysis.js.map +1 -0
  252. package/dist/scanners/agent/payloads/index.d.ts +2 -1
  253. package/dist/scanners/agent/payloads/index.d.ts.map +1 -1
  254. package/dist/scanners/agent/payloads/index.js +25 -6
  255. package/dist/scanners/agent/payloads/index.js.map +1 -1
  256. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
  257. package/dist/scanners/agent/prompt-injection-fuzzer.js +14 -0
  258. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
  259. package/dist/scanners/agent/types.d.ts +5 -5
  260. package/dist/scanners/agent/types.d.ts.map +1 -1
  261. package/dist/scanners/agent/types.js.map +1 -1
  262. package/dist/scanners/cache.d.ts +156 -0
  263. package/dist/scanners/cache.d.ts.map +1 -0
  264. package/dist/scanners/cache.js +462 -0
  265. package/dist/scanners/cache.js.map +1 -0
  266. package/dist/scanners/dependencies.js +4 -4
  267. package/dist/scanners/dependencies.js.map +1 -1
  268. package/dist/scanners/gosec.d.ts.map +1 -1
  269. package/dist/scanners/gosec.js +47 -9
  270. package/dist/scanners/gosec.js.map +1 -1
  271. package/dist/scanners/healthcare.d.ts +29 -0
  272. package/dist/scanners/healthcare.d.ts.map +1 -0
  273. package/dist/scanners/healthcare.js +526 -0
  274. package/dist/scanners/healthcare.js.map +1 -0
  275. package/dist/scanners/index.d.ts +1 -0
  276. package/dist/scanners/index.d.ts.map +1 -1
  277. package/dist/scanners/index.js +33 -0
  278. package/dist/scanners/index.js.map +1 -1
  279. package/dist/scanners/index.test.js +6 -6
  280. package/dist/scanners/index.test.js.map +1 -1
  281. package/dist/scanners/secrets.js +4 -4
  282. package/dist/scanners/secrets.js.map +1 -1
  283. package/dist/scanners/semgrep.js +5 -5
  284. package/dist/scanners/semgrep.js.map +1 -1
  285. package/dist/scanners/types.d.ts +1 -1
  286. package/dist/scanners/types.d.ts.map +1 -1
  287. package/dist/scanners/types.js +1 -0
  288. package/dist/scanners/types.js.map +1 -1
  289. package/dist/scanners/typescript.test.js +1 -1
  290. package/dist/scanners/typescript.test.js.map +1 -1
  291. package/dist/telemetry/index.d.ts +10 -0
  292. package/dist/telemetry/index.d.ts.map +1 -0
  293. package/dist/telemetry/index.js +10 -0
  294. package/dist/telemetry/index.js.map +1 -0
  295. package/dist/telemetry/registry.d.ts +178 -0
  296. package/dist/telemetry/registry.d.ts.map +1 -0
  297. package/dist/telemetry/registry.js +297 -0
  298. package/dist/telemetry/registry.js.map +1 -0
  299. package/dist/telemetry/usage.d.ts +197 -0
  300. package/dist/telemetry/usage.d.ts.map +1 -0
  301. package/dist/telemetry/usage.js +244 -0
  302. package/dist/telemetry/usage.js.map +1 -0
  303. package/package.json +1 -1
@@ -0,0 +1,408 @@
1
+ /**
2
+ * 42 CFR Part 2 Compliance Controls
3
+ *
4
+ * Confidentiality of Substance Use Disorder Patient Records
5
+ * (Stricter than HIPAA for SUD treatment records)
6
+ *
7
+ * @module compliance/cfr42-part2
8
+ */
9
+ /**
10
+ * 42 CFR Part 2 control categories
11
+ */
12
+ export const CFR42_PART2_CATEGORIES = [
13
+ "General Provisions",
14
+ "Disclosures With Consent",
15
+ "Disclosures Without Consent",
16
+ "Security Safeguards",
17
+ "Audit and Accountability",
18
+ "Re-disclosure Restrictions",
19
+ "Qualified Service Organizations",
20
+ "Patient Rights",
21
+ ];
22
+ /**
23
+ * 42 CFR Part 2 controls for SUD confidentiality
24
+ *
25
+ * These controls are STRICTER than HIPAA and apply specifically to
26
+ * substance use disorder (SUD) treatment records.
27
+ */
28
+ export const CFR42_PART2_CONTROLS = [
29
+ // General Provisions (Subpart B)
30
+ {
31
+ id: "2.12",
32
+ framework: "42-CFR-PART-2",
33
+ category: "General Provisions",
34
+ title: "Prohibition on Disclosure",
35
+ description: "Records of the identity, diagnosis, prognosis, or treatment of any patient maintained in connection with the performance of any SUD program shall be confidential and disclosed only as permitted.",
36
+ keywords: [
37
+ "substance use",
38
+ "SUD",
39
+ "confidential",
40
+ "disclosure",
41
+ "patient record",
42
+ "addiction",
43
+ "treatment",
44
+ ],
45
+ findingCategories: [
46
+ "phi-exposure",
47
+ "sud-disclosure",
48
+ "data-exposure",
49
+ "logging",
50
+ ],
51
+ cweIds: ["CWE-200", "CWE-532", "CWE-359"],
52
+ severityThreshold: "high",
53
+ },
54
+ {
55
+ id: "2.13",
56
+ framework: "42-CFR-PART-2",
57
+ category: "General Provisions",
58
+ title: "Confidentiality Restrictions",
59
+ description: "Part 2 programs, lawful holders, and other individuals may not disclose patient identifying information or seek, use, or disclose records except as permitted by Part 2.",
60
+ keywords: [
61
+ "confidentiality",
62
+ "restrictions",
63
+ "patient identifying information",
64
+ "lawful holder",
65
+ ],
66
+ findingCategories: [
67
+ "phi-exposure",
68
+ "access-control-gap",
69
+ "authorization",
70
+ "broken-access-control",
71
+ ],
72
+ cweIds: ["CWE-284", "CWE-862", "CWE-863"],
73
+ severityThreshold: "high",
74
+ },
75
+ {
76
+ id: "2.14",
77
+ framework: "42-CFR-PART-2",
78
+ category: "General Provisions",
79
+ title: "Minor Patient Consent",
80
+ description: "When state law requires parental consent for SUD treatment of a minor, consent for disclosure must come from both the minor and parent/guardian.",
81
+ keywords: [
82
+ "minor",
83
+ "parental consent",
84
+ "guardian",
85
+ "age verification",
86
+ "dual consent",
87
+ ],
88
+ findingCategories: ["consent-bypass", "consent-missing", "authorization"],
89
+ cweIds: ["CWE-862"],
90
+ severityThreshold: "medium",
91
+ },
92
+ {
93
+ id: "2.15",
94
+ framework: "42-CFR-PART-2",
95
+ category: "General Provisions",
96
+ title: "Incompetent Patient Consent",
97
+ description: "For patients lacking capacity, consent must be obtained from guardian or authorized representative with patient notification.",
98
+ keywords: [
99
+ "incompetent",
100
+ "guardian",
101
+ "authorized representative",
102
+ "capacity",
103
+ ],
104
+ findingCategories: ["consent-bypass", "consent-missing", "authorization"],
105
+ cweIds: ["CWE-862"],
106
+ severityThreshold: "medium",
107
+ },
108
+ // Disclosures With Consent (Subpart C)
109
+ {
110
+ id: "2.31",
111
+ framework: "42-CFR-PART-2",
112
+ category: "Disclosures With Consent",
113
+ title: "Written Consent Requirements",
114
+ description: "Consent must be in writing and include: patient name, program name, recipient name, purpose, information to be disclosed, signature, date, expiration, and right to revoke.",
115
+ keywords: [
116
+ "written consent",
117
+ "consent form",
118
+ "signature",
119
+ "expiration",
120
+ "revocation",
121
+ "purpose limitation",
122
+ ],
123
+ findingCategories: [
124
+ "consent-bypass",
125
+ "consent-missing",
126
+ "authorization",
127
+ "audit-gap",
128
+ ],
129
+ cweIds: ["CWE-862", "CWE-778"],
130
+ severityThreshold: "high",
131
+ },
132
+ {
133
+ id: "2.32",
134
+ framework: "42-CFR-PART-2",
135
+ category: "Re-disclosure Restrictions",
136
+ title: "Re-disclosure Notice Requirement",
137
+ description: "Each disclosure made with consent must include a written statement prohibiting re-disclosure except as permitted by Part 2.",
138
+ keywords: [
139
+ "re-disclosure",
140
+ "prohibition notice",
141
+ "downstream disclosure",
142
+ "notice statement",
143
+ ],
144
+ findingCategories: [
145
+ "redisclosure-violation",
146
+ "third-party-risk",
147
+ "data-flow",
148
+ ],
149
+ cweIds: ["CWE-200", "CWE-359"],
150
+ severityThreshold: "high",
151
+ },
152
+ {
153
+ id: "2.33",
154
+ framework: "42-CFR-PART-2",
155
+ category: "Qualified Service Organizations",
156
+ title: "QSOA Requirements",
157
+ description: "Qualified Service Organization Agreement required before disclosing records to contractors providing services to the program.",
158
+ keywords: [
159
+ "QSOA",
160
+ "qualified service organization",
161
+ "contractor",
162
+ "third-party",
163
+ "business associate",
164
+ "vendor",
165
+ ],
166
+ findingCategories: [
167
+ "qsoa-violation",
168
+ "third-party-risk",
169
+ "vendor",
170
+ "supply-chain",
171
+ ],
172
+ cweIds: ["CWE-200"],
173
+ severityThreshold: "high",
174
+ },
175
+ {
176
+ id: "2.34",
177
+ framework: "42-CFR-PART-2",
178
+ category: "Disclosures With Consent",
179
+ title: "Consent Revocation",
180
+ description: "Patients may revoke consent at any time. Programs must honor revocation prospectively.",
181
+ keywords: [
182
+ "revocation",
183
+ "revoke consent",
184
+ "withdraw consent",
185
+ "prospective",
186
+ ],
187
+ findingCategories: ["consent-bypass", "consent-missing", "authorization"],
188
+ cweIds: ["CWE-862"],
189
+ severityThreshold: "medium",
190
+ },
191
+ // Security Safeguards (Subpart B §2.16)
192
+ {
193
+ id: "2.16(a)",
194
+ framework: "42-CFR-PART-2",
195
+ category: "Security Safeguards",
196
+ title: "Safeguards Against Unauthorized Access",
197
+ description: "Part 2 programs must have formal policies and procedures to protect patient records from unauthorized access.",
198
+ keywords: [
199
+ "safeguards",
200
+ "unauthorized access",
201
+ "policies",
202
+ "procedures",
203
+ "access control",
204
+ ],
205
+ findingCategories: [
206
+ "access-control-gap",
207
+ "broken-access-control",
208
+ "authorization",
209
+ "authentication",
210
+ ],
211
+ cweIds: ["CWE-284", "CWE-287", "CWE-862"],
212
+ severityThreshold: "high",
213
+ },
214
+ {
215
+ id: "2.16(b)",
216
+ framework: "42-CFR-PART-2",
217
+ category: "Security Safeguards",
218
+ title: "Electronic Records Security",
219
+ description: "Programs maintaining electronic records must implement security measures including access controls, encryption, and audit trails.",
220
+ keywords: [
221
+ "electronic records",
222
+ "encryption",
223
+ "access control",
224
+ "audit trail",
225
+ "security measures",
226
+ ],
227
+ findingCategories: [
228
+ "encryption",
229
+ "missing-encryption",
230
+ "access-control-gap",
231
+ "audit-gap",
232
+ ],
233
+ cweIds: ["CWE-311", "CWE-312", "CWE-778"],
234
+ severityThreshold: "high",
235
+ },
236
+ // Audit and Accountability
237
+ {
238
+ id: "2.52",
239
+ framework: "42-CFR-PART-2",
240
+ category: "Audit and Accountability",
241
+ title: "Accounting of Disclosures",
242
+ description: "Programs must maintain records of disclosures made with or without consent, including date, recipient, purpose, and information disclosed.",
243
+ keywords: [
244
+ "accounting",
245
+ "disclosure log",
246
+ "audit trail",
247
+ "disclosure record",
248
+ "recipient tracking",
249
+ ],
250
+ findingCategories: ["audit-gap", "logging", "insufficient-logging"],
251
+ cweIds: ["CWE-778", "CWE-223"],
252
+ severityThreshold: "high",
253
+ },
254
+ {
255
+ id: "2.53",
256
+ framework: "42-CFR-PART-2",
257
+ category: "Audit and Accountability",
258
+ title: "Breach Notification",
259
+ description: "Programs must notify patients and HHS of breaches of unsecured SUD records.",
260
+ keywords: [
261
+ "breach",
262
+ "notification",
263
+ "incident response",
264
+ "unsecured records",
265
+ ],
266
+ findingCategories: [
267
+ "security-misconfiguration",
268
+ "logging",
269
+ "audit-gap",
270
+ ],
271
+ cweIds: ["CWE-778"],
272
+ severityThreshold: "high",
273
+ },
274
+ // Disclosures Without Consent (Subpart D)
275
+ {
276
+ id: "2.51",
277
+ framework: "42-CFR-PART-2",
278
+ category: "Disclosures Without Consent",
279
+ title: "Medical Emergency Exception",
280
+ description: "Disclosure without consent permitted only for medical emergencies where delay would increase health risk.",
281
+ keywords: [
282
+ "medical emergency",
283
+ "emergency disclosure",
284
+ "health risk",
285
+ "exception",
286
+ ],
287
+ findingCategories: ["consent-bypass", "audit-gap", "logging"],
288
+ cweIds: ["CWE-778"],
289
+ severityThreshold: "medium",
290
+ },
291
+ {
292
+ id: "2.63",
293
+ framework: "42-CFR-PART-2",
294
+ category: "Disclosures Without Consent",
295
+ title: "Research Exception Requirements",
296
+ description: "Research disclosures require IRB/Privacy Board approval, data use agreement, and prohibition on re-identification.",
297
+ keywords: [
298
+ "research",
299
+ "IRB",
300
+ "privacy board",
301
+ "data use agreement",
302
+ "de-identification",
303
+ ],
304
+ findingCategories: ["consent-bypass", "authorization", "audit-gap"],
305
+ cweIds: ["CWE-359"],
306
+ severityThreshold: "medium",
307
+ },
308
+ // Patient Rights
309
+ {
310
+ id: "2.23",
311
+ framework: "42-CFR-PART-2",
312
+ category: "Patient Rights",
313
+ title: "Patient Access to Records",
314
+ description: "Patients have the right to inspect and obtain copies of their SUD treatment records upon request.",
315
+ keywords: ["patient access", "record access", "copy", "inspect", "request"],
316
+ findingCategories: ["access-control-gap", "authorization"],
317
+ cweIds: ["CWE-284"],
318
+ severityThreshold: "low",
319
+ },
320
+ {
321
+ id: "2.24",
322
+ framework: "42-CFR-PART-2",
323
+ category: "Patient Rights",
324
+ title: "Patient Amendment Rights",
325
+ description: "Patients may request amendment of inaccurate or incomplete records.",
326
+ keywords: ["amendment", "correction", "inaccurate", "incomplete"],
327
+ findingCategories: ["data-integrity", "authorization"],
328
+ severityThreshold: "low",
329
+ },
330
+ // Additional Technical Controls
331
+ {
332
+ id: "2.16(c)",
333
+ framework: "42-CFR-PART-2",
334
+ category: "Security Safeguards",
335
+ title: "Data Transmission Security",
336
+ description: "SUD records transmitted electronically must be encrypted and protected against interception.",
337
+ keywords: [
338
+ "transmission",
339
+ "encryption",
340
+ "TLS",
341
+ "HTTPS",
342
+ "interception",
343
+ "network security",
344
+ ],
345
+ findingCategories: [
346
+ "transport-security",
347
+ "encryption",
348
+ "insecure-transmission",
349
+ ],
350
+ cweIds: ["CWE-319", "CWE-523"],
351
+ severityThreshold: "high",
352
+ },
353
+ {
354
+ id: "2.16(d)",
355
+ framework: "42-CFR-PART-2",
356
+ category: "Security Safeguards",
357
+ title: "Data Segmentation",
358
+ description: "SUD records should be segmented from general health records to prevent inadvertent disclosure under HIPAA.",
359
+ keywords: [
360
+ "segmentation",
361
+ "segregation",
362
+ "separate storage",
363
+ "data isolation",
364
+ ],
365
+ findingCategories: ["access-control-gap", "data-exposure", "phi-exposure"],
366
+ cweIds: ["CWE-284", "CWE-668"],
367
+ severityThreshold: "high",
368
+ },
369
+ ];
370
+ /**
371
+ * Get all 42 CFR Part 2 controls
372
+ */
373
+ export function getCFR42Part2Controls() {
374
+ return CFR42_PART2_CONTROLS;
375
+ }
376
+ /**
377
+ * Get 42 CFR Part 2 controls by category
378
+ */
379
+ export function getCFR42Part2ControlsByCategory(category) {
380
+ return CFR42_PART2_CONTROLS.filter((c) => c.category === category);
381
+ }
382
+ /**
383
+ * Get 42 CFR Part 2 control by ID
384
+ */
385
+ export function getCFR42Part2ControlById(id) {
386
+ return CFR42_PART2_CONTROLS.find((c) => c.id === id);
387
+ }
388
+ /**
389
+ * Get 42 CFR Part 2 categories
390
+ */
391
+ export function getCFR42Part2Categories() {
392
+ return CFR42_PART2_CATEGORIES;
393
+ }
394
+ /**
395
+ * Cross-reference mapping to HIPAA controls
396
+ * 42 CFR Part 2 often overlaps with but is stricter than HIPAA
397
+ */
398
+ export const CFR42_TO_HIPAA_MAPPING = {
399
+ "2.12": ["164.308(a)(1)", "164.312(a)(1)"],
400
+ "2.13": ["164.308(a)(4)", "164.312(a)(1)"],
401
+ "2.16(a)": ["164.312(a)(1)", "164.308(a)(3)"],
402
+ "2.16(b)": ["164.312(a)(2)(iv)", "164.312(b)"],
403
+ "2.16(c)": ["164.312(e)(1)", "164.312(e)(2)(ii)"],
404
+ "2.31": ["164.508"],
405
+ "2.52": ["164.312(b)", "164.528"],
406
+ "2.53": ["164.402", "164.404"],
407
+ };
408
+ //# sourceMappingURL=cfr42-part2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cfr42-part2.js","sourceRoot":"","sources":["../../src/compliance/cfr42-part2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Compliance Assessment Bundle
3
+ *
4
+ * Orchestrates compliance assessment with evidence collection and audit
5
+ * trail verification for any combination of frameworks.
6
+ *
7
+ * @module compliance/compliance-bundle
8
+ */
9
+ import type { Finding } from "../certification/types.js";
10
+ import type { ComplianceReport, ComplianceFramework, MultiFrameworkReport } from "./types.js";
11
+ import type { EvidenceBundle } from "../evidence/types.js";
12
+ import type { IntegrityVerificationResult } from "../history/types.js";
13
+ /**
14
+ * Compliance assessment result for a single framework
15
+ */
16
+ export interface SingleFrameworkAssessmentResult {
17
+ /** Compliance report */
18
+ report: ComplianceReport;
19
+ /** Formatted markdown report */
20
+ markdownReport: string;
21
+ /** Evidence bundle if collected */
22
+ evidenceBundle?: EvidenceBundle;
23
+ /** Audit trail verification result */
24
+ auditVerification?: IntegrityVerificationResult;
25
+ /** Path where evidence was stored */
26
+ evidencePath?: string;
27
+ /** Overall assessment status */
28
+ status: "compliant" | "at_risk" | "non_compliant";
29
+ }
30
+ /**
31
+ * Compliance assessment result for multiple frameworks
32
+ */
33
+ export interface MultiFrameworkAssessmentResult {
34
+ /** Individual reports per framework */
35
+ reports: Partial<Record<ComplianceFramework, ComplianceReport>>;
36
+ /** Multi-framework report */
37
+ multiFrameworkReport: MultiFrameworkReport;
38
+ /** Formatted markdown report */
39
+ markdownReport: string;
40
+ /** Evidence bundle if collected */
41
+ evidenceBundle?: EvidenceBundle;
42
+ /** Audit trail verification result */
43
+ auditVerification?: IntegrityVerificationResult;
44
+ /** Path where evidence was stored */
45
+ evidencePath?: string;
46
+ /** Overall assessment status */
47
+ status: "compliant" | "at_risk" | "non_compliant";
48
+ /** Combined compliance score (average across frameworks) */
49
+ combinedScore: number;
50
+ }
51
+ /**
52
+ * Options for running compliance assessment
53
+ */
54
+ export interface ComplianceAssessmentOptions {
55
+ /** Project path to assess */
56
+ projectPath: string;
57
+ /** Security findings from certification/scanning */
58
+ findings: Finding[];
59
+ /** Framework(s) to assess */
60
+ frameworks: ComplianceFramework[];
61
+ /** Certification ID to associate with */
62
+ certificationId?: string;
63
+ /** Collect evidence bundle for audit defensibility */
64
+ collectEvidence?: boolean;
65
+ /** Sign evidence with Sigstore */
66
+ sign?: boolean;
67
+ /** Verify audit trail integrity */
68
+ verifyAuditTrail?: boolean;
69
+ /** Store evidence bundle to disk */
70
+ storeEvidence?: boolean;
71
+ /** Include attestation section in report */
72
+ includeAttestation?: boolean;
73
+ }
74
+ /**
75
+ * Run a compliance assessment for a single framework
76
+ *
77
+ * This function orchestrates:
78
+ * 1. Compliance control mapping for the framework
79
+ * 2. Audit trail integrity verification (optional)
80
+ * 3. Evidence bundle collection (optional)
81
+ * 4. Audit-defensible report generation
82
+ */
83
+ export declare function runSingleFrameworkAssessment(options: Omit<ComplianceAssessmentOptions, "frameworks"> & {
84
+ framework: ComplianceFramework;
85
+ }): Promise<SingleFrameworkAssessmentResult>;
86
+ /**
87
+ * Run a compliance assessment for multiple frameworks
88
+ *
89
+ * This function orchestrates:
90
+ * 1. Compliance control mapping for all frameworks
91
+ * 2. Audit trail integrity verification (optional)
92
+ * 3. Evidence bundle collection (optional)
93
+ * 4. Unified audit-defensible report generation
94
+ */
95
+ export declare function runComplianceAssessment(options: ComplianceAssessmentOptions): Promise<MultiFrameworkAssessmentResult>;
96
+ /**
97
+ * Generate a quick compliance summary
98
+ */
99
+ export declare function generateComplianceSummary(result: MultiFrameworkAssessmentResult): string;
100
+ //# sourceMappingURL=compliance-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance-bundle.d.ts","sourceRoot":"","sources":["../../src/compliance/compliance-bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,wBAAwB;IACxB,MAAM,EAAE,gBAAgB,CAAC;IAEzB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IAEvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAEhD,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhE,6BAA6B;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IAEvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAEhD,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;IAElD,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB,6BAA6B;IAC7B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAElC,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,sDAAsD;IACtD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC,GAAG;IAAE,SAAS,EAAE,mBAAmB,CAAA;CAAE,GAC5F,OAAO,CAAC,+BAA+B,CAAC,CA8E1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,8BAA8B,CAAC,CAmIzC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,8BAA8B,GACrC,MAAM,CA4BR"}