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
@@ -8,5 +8,5 @@
8
8
  // Pricing
9
9
  export { MODEL_PRICING, getModelProvider, getModelPricing, calculateCost, estimateCost, formatCost, formatTokens, estimateTokens, getSupportedModels, getModelsByProvider, getCheapestModel, } from "./pricing.js";
10
10
  // Tracker
11
- export { CostTracker, BudgetExceededError, getTracker, removeTracker, getActiveTrackers, } from "./tracker.js";
11
+ export { CostTracker, BudgetExceededError, getTracker, removeTracker, getActiveTrackers, estimateCertificationCost, forecastCost, formatCostEstimate, } from "./tracker.js";
12
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cost/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,UAAU;AACV,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,UAAU;AACV,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cost/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,UAAU;AACV,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,UAAU;AACV,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,kBAAkB,GAInB,MAAM,cAAc,CAAC"}
@@ -97,4 +97,68 @@ export declare function removeTracker(certificationId: string, projectPath: stri
97
97
  * Get all active trackers
98
98
  */
99
99
  export declare function getActiveTrackers(): Map<string, CostTracker>;
100
+ /**
101
+ * Cost estimation input
102
+ */
103
+ export interface CostEstimationInput {
104
+ /** Number of files to scan */
105
+ fileCount: number;
106
+ /** Expected number of findings (or 0 for estimate) */
107
+ expectedFindings?: number;
108
+ /** Number of agents to run */
109
+ agentCount?: number;
110
+ /** Whether cross-verification is enabled */
111
+ crossVerify?: boolean;
112
+ /** Primary model to use */
113
+ model?: ModelId;
114
+ }
115
+ /**
116
+ * Cost estimation result
117
+ */
118
+ export interface CostEstimate {
119
+ /** Estimated total cost */
120
+ estimatedCost: number;
121
+ /** Estimated input tokens */
122
+ estimatedInputTokens: number;
123
+ /** Estimated output tokens */
124
+ estimatedOutputTokens: number;
125
+ /** Cost breakdown by phase */
126
+ breakdown: {
127
+ scanning: number;
128
+ analysis: number;
129
+ crossVerification: number;
130
+ overhead: number;
131
+ };
132
+ /** Confidence level (low/medium/high) */
133
+ confidence: "low" | "medium" | "high";
134
+ /** Model used for estimation */
135
+ model: ModelId;
136
+ /** Assumptions used */
137
+ assumptions: string[];
138
+ }
139
+ /**
140
+ * Estimate certification cost before running
141
+ */
142
+ export declare function estimateCertificationCost(input: CostEstimationInput): CostEstimate;
143
+ /**
144
+ * Historical cost data for forecasting
145
+ */
146
+ export interface HistoricalCostData {
147
+ fileCount: number;
148
+ findingCount: number;
149
+ agentCount: number;
150
+ actualCost: number;
151
+ actualInputTokens: number;
152
+ actualOutputTokens: number;
153
+ }
154
+ /**
155
+ * Forecast future costs based on historical data
156
+ */
157
+ export declare function forecastCost(historical: HistoricalCostData[], future: CostEstimationInput): CostEstimate & {
158
+ historicalBasis: number;
159
+ };
160
+ /**
161
+ * Format cost estimate as markdown
162
+ */
163
+ export declare function formatCostEstimate(estimate: CostEstimate): string;
100
164
  //# sourceMappingURL=tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/cost/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAC,CAAS;gBAG3B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,mBAAmB;IAsB/B;;OAEG;IACH,UAAU,CACR,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GACjE,aAAa;IA+BhB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,WAAW,IAAI,IAAI;IAWnB;;OAEG;IACH,UAAU,IAAI,WAAW;IAIzB;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAK9C;;OAEG;IACH,QAAQ,IAAI,aAAa,EAAE;IAI3B;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAU5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAa9B;;OAEG;IACH,cAAc,IAAI,MAAM;IAkFxB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAQhC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,YAAY;IAkDpB,OAAO,CAAC,mBAAmB;CAO5B;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,OAAO,EAAE,WAAW;aACpB,MAAM,EAAE,YAAY;gBAFpC,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY;CAKvC;AAOD;;GAEG;AACH,wBAAgB,UAAU,CACxB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,WAAW,CAQb;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAE5D"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/cost/tracker.ts"],"names":[],"mappings":"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"}
@@ -363,4 +363,169 @@ export function removeTracker(certificationId, projectPath) {
363
363
  export function getActiveTrackers() {
364
364
  return new Map(trackers);
365
365
  }
366
+ // ---------------------------------------------------------------------------
367
+ // Cost Estimation & Forecasting
368
+ // ---------------------------------------------------------------------------
369
+ /**
370
+ * Estimation factors based on typical certification patterns
371
+ */
372
+ const ESTIMATION_FACTORS = {
373
+ /** Tokens per file scanned (typical code file) */
374
+ tokensPerFile: 1500,
375
+ /** Tokens per finding analyzed */
376
+ tokensPerFinding: 2000,
377
+ /** Tokens for cross-verification per finding */
378
+ tokensPerCrossVerify: 1000,
379
+ /** Base overhead per agent */
380
+ baseOverheadPerAgent: 3000,
381
+ /** Output ratio (output/input) */
382
+ outputRatio: 0.3,
383
+ /** Safety margin multiplier */
384
+ safetyMargin: 1.2,
385
+ };
386
+ /**
387
+ * Estimate certification cost before running
388
+ */
389
+ export function estimateCertificationCost(input) {
390
+ const { fileCount, expectedFindings, agentCount = 3, crossVerify = true, model = "claude-3.5-sonnet", } = input;
391
+ // Estimate findings if not provided (rough: 5% of files have findings)
392
+ const estimatedFindings = expectedFindings ?? Math.ceil(fileCount * 0.05);
393
+ // Calculate input tokens
394
+ const scanningTokens = fileCount * ESTIMATION_FACTORS.tokensPerFile;
395
+ const analysisTokens = estimatedFindings * ESTIMATION_FACTORS.tokensPerFinding;
396
+ const crossVerifyTokens = crossVerify
397
+ ? estimatedFindings * ESTIMATION_FACTORS.tokensPerCrossVerify
398
+ : 0;
399
+ const overheadTokens = agentCount * ESTIMATION_FACTORS.baseOverheadPerAgent;
400
+ const totalInputTokens = Math.ceil((scanningTokens + analysisTokens + crossVerifyTokens + overheadTokens) *
401
+ ESTIMATION_FACTORS.safetyMargin);
402
+ const totalOutputTokens = Math.ceil(totalInputTokens * ESTIMATION_FACTORS.outputRatio);
403
+ // Helper to create full TokenUsage
404
+ const makeUsage = (input, output) => ({
405
+ inputTokens: input,
406
+ outputTokens: output,
407
+ totalTokens: input + output,
408
+ });
409
+ // Calculate costs using pricing
410
+ const cost = calculateCost(model, makeUsage(totalInputTokens, totalOutputTokens));
411
+ // Determine confidence based on input quality
412
+ let confidence = "medium";
413
+ const assumptions = [];
414
+ if (fileCount === 0) {
415
+ confidence = "low";
416
+ assumptions.push("No file count provided - using defaults");
417
+ }
418
+ if (!expectedFindings) {
419
+ confidence = "low";
420
+ assumptions.push("Finding count estimated at 5% of files");
421
+ }
422
+ if (expectedFindings && fileCount > 0) {
423
+ confidence = "high";
424
+ }
425
+ assumptions.push(`Model: ${model}`);
426
+ assumptions.push(`Agents: ${agentCount}`);
427
+ assumptions.push(`Cross-verification: ${crossVerify ? "enabled" : "disabled"}`);
428
+ assumptions.push(`Safety margin: ${((ESTIMATION_FACTORS.safetyMargin - 1) * 100).toFixed(0)}%`);
429
+ // Calculate breakdown costs
430
+ const scanInput = Math.ceil(scanningTokens * ESTIMATION_FACTORS.safetyMargin);
431
+ const scanOutput = Math.ceil(scanInput * ESTIMATION_FACTORS.outputRatio);
432
+ const analysisInput = Math.ceil(analysisTokens * ESTIMATION_FACTORS.safetyMargin);
433
+ const analysisOutput = Math.ceil(analysisInput * ESTIMATION_FACTORS.outputRatio);
434
+ const crossInput = Math.ceil(crossVerifyTokens * ESTIMATION_FACTORS.safetyMargin);
435
+ const crossOutput = Math.ceil(crossInput * ESTIMATION_FACTORS.outputRatio);
436
+ const overheadInput = Math.ceil(overheadTokens * ESTIMATION_FACTORS.safetyMargin);
437
+ const overheadOutput = Math.ceil(overheadInput * ESTIMATION_FACTORS.outputRatio);
438
+ return {
439
+ estimatedCost: cost.totalCost,
440
+ estimatedInputTokens: totalInputTokens,
441
+ estimatedOutputTokens: totalOutputTokens,
442
+ breakdown: {
443
+ scanning: calculateCost(model, makeUsage(scanInput, scanOutput)).totalCost,
444
+ analysis: calculateCost(model, makeUsage(analysisInput, analysisOutput)).totalCost,
445
+ crossVerification: calculateCost(model, makeUsage(crossInput, crossOutput)).totalCost,
446
+ overhead: calculateCost(model, makeUsage(overheadInput, overheadOutput)).totalCost,
447
+ },
448
+ confidence,
449
+ model,
450
+ assumptions,
451
+ };
452
+ }
453
+ /**
454
+ * Forecast future costs based on historical data
455
+ */
456
+ export function forecastCost(historical, future) {
457
+ if (historical.length === 0) {
458
+ // No historical data, use default estimation
459
+ return {
460
+ ...estimateCertificationCost(future),
461
+ historicalBasis: 0,
462
+ };
463
+ }
464
+ // Calculate average cost per file from historical data
465
+ const avgCostPerFile = historical.reduce((sum, h) => {
466
+ return sum + (h.actualCost / Math.max(h.fileCount, 1));
467
+ }, 0) / historical.length;
468
+ // Calculate average tokens per file
469
+ const avgInputPerFile = historical.reduce((sum, h) => {
470
+ return sum + (h.actualInputTokens / Math.max(h.fileCount, 1));
471
+ }, 0) / historical.length;
472
+ const avgOutputPerFile = historical.reduce((sum, h) => {
473
+ return sum + (h.actualOutputTokens / Math.max(h.fileCount, 1));
474
+ }, 0) / historical.length;
475
+ // Apply to future estimate
476
+ const estimatedCost = avgCostPerFile * future.fileCount * ESTIMATION_FACTORS.safetyMargin;
477
+ const estimatedInputTokens = Math.ceil(avgInputPerFile * future.fileCount * ESTIMATION_FACTORS.safetyMargin);
478
+ const estimatedOutputTokens = Math.ceil(avgOutputPerFile * future.fileCount * ESTIMATION_FACTORS.safetyMargin);
479
+ // More confidence with more historical data
480
+ const confidence = historical.length >= 5 ? "high" :
481
+ historical.length >= 2 ? "medium" : "low";
482
+ return {
483
+ estimatedCost,
484
+ estimatedInputTokens,
485
+ estimatedOutputTokens,
486
+ breakdown: {
487
+ scanning: estimatedCost * 0.4,
488
+ analysis: estimatedCost * 0.35,
489
+ crossVerification: estimatedCost * 0.15,
490
+ overhead: estimatedCost * 0.1,
491
+ },
492
+ confidence,
493
+ model: future.model || "claude-3.5-sonnet",
494
+ assumptions: [
495
+ `Based on ${historical.length} historical certification(s)`,
496
+ `Average cost per file: ${formatCost(avgCostPerFile)}`,
497
+ `Safety margin: ${((ESTIMATION_FACTORS.safetyMargin - 1) * 100).toFixed(0)}%`,
498
+ ],
499
+ historicalBasis: historical.length,
500
+ };
501
+ }
502
+ /**
503
+ * Format cost estimate as markdown
504
+ */
505
+ export function formatCostEstimate(estimate) {
506
+ return [
507
+ "# Cost Estimate",
508
+ "",
509
+ `**Estimated Total**: ${formatCost(estimate.estimatedCost)}`,
510
+ `**Confidence**: ${estimate.confidence}`,
511
+ "",
512
+ "## Token Estimate",
513
+ "",
514
+ `- Input: ${formatTokens(estimate.estimatedInputTokens)}`,
515
+ `- Output: ${formatTokens(estimate.estimatedOutputTokens)}`,
516
+ "",
517
+ "## Cost Breakdown",
518
+ "",
519
+ `| Phase | Cost |`,
520
+ `|-------|------|`,
521
+ `| Scanning | ${formatCost(estimate.breakdown.scanning)} |`,
522
+ `| Analysis | ${formatCost(estimate.breakdown.analysis)} |`,
523
+ `| Cross-verification | ${formatCost(estimate.breakdown.crossVerification)} |`,
524
+ `| Overhead | ${formatCost(estimate.breakdown.overhead)} |`,
525
+ "",
526
+ "## Assumptions",
527
+ "",
528
+ estimate.assumptions.map((a) => `- ${a}`).join("\n"),
529
+ ].join("\n");
530
+ }
366
531
  //# sourceMappingURL=tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/cost/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/cost/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Test Fixture: Audit Gaps
3
+ *
4
+ * This file contains intentional audit trail gaps that should be
5
+ * detected by the healthcare scanner. Used for testing only.
6
+ *
7
+ * EXPECTED FINDINGS:
8
+ * - PHI access without audit log (high)
9
+ * - Missing user ID in audit entries (medium)
10
+ * - Audit log without timestamp (medium)
11
+ *
12
+ * @module eval/fixtures/healthcare/audit-gaps
13
+ */
14
+ export declare function readPatientRecord(patientId: string, userId: string): Promise<{}>;
15
+ export declare function updateMedicalRecord(patientId: string, updates: object): Promise<{
16
+ success: boolean;
17
+ }>;
18
+ export declare function viewPatientData(patientId: string): Promise<{
19
+ id: string;
20
+ name: string;
21
+ }>;
22
+ export declare function deletePatientData(patientId: string, userId: string): Promise<boolean>;
23
+ export declare function clearAuditLogs(adminId: string): Promise<void>;
24
+ export declare function properAuditedAccess(patientId: string, userId: string): Promise<{
25
+ id: string;
26
+ name: string;
27
+ }>;
28
+ //# sourceMappingURL=audit-gaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-gaps.d.ts","sourceRoot":"","sources":["../../../../src/eval/fixtures/healthcare/audit-gaps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAIxE;AAGD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;GAI3E;AAGD,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM;;;GAQtD;AAGD,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,oBAQxE;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,iBAGnD;AAqBD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;GA0B1E"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Test Fixture: Audit Gaps
3
+ *
4
+ * This file contains intentional audit trail gaps that should be
5
+ * detected by the healthcare scanner. Used for testing only.
6
+ *
7
+ * EXPECTED FINDINGS:
8
+ * - PHI access without audit log (high)
9
+ * - Missing user ID in audit entries (medium)
10
+ * - Audit log without timestamp (medium)
11
+ *
12
+ * @module eval/fixtures/healthcare/audit-gaps
13
+ */
14
+ // PHI access without audit logging - SHOULD BE DETECTED
15
+ export async function readPatientRecord(patientId, userId) {
16
+ // No audit log call before or after PHI access
17
+ const patient = await database.query(`SELECT * FROM patients WHERE id = ?`, [patientId]);
18
+ return patient;
19
+ }
20
+ // Another missing audit log - SHOULD BE DETECTED
21
+ export async function updateMedicalRecord(patientId, updates) {
22
+ await database.query(`UPDATE patients SET ? WHERE id = ?`, [updates, patientId]);
23
+ // No audit trail for this modification
24
+ return { success: true };
25
+ }
26
+ // Missing user ID in audit - SHOULD BE DETECTED
27
+ export async function viewPatientData(patientId) {
28
+ await auditLog.write({
29
+ action: "view_patient",
30
+ resourceId: patientId,
31
+ // Missing: userId
32
+ timestamp: new Date().toISOString(),
33
+ });
34
+ return await fetchPatient(patientId);
35
+ }
36
+ // Audit log without timestamp - SHOULD BE DETECTED
37
+ export async function deletePatientData(patientId, userId) {
38
+ await auditLog.write({
39
+ action: "delete_patient",
40
+ userId: userId,
41
+ resourceId: patientId,
42
+ // Missing: timestamp
43
+ });
44
+ return await database.delete("patients", patientId);
45
+ }
46
+ // Deletable audit log - SHOULD BE DETECTED
47
+ export async function clearAuditLogs(adminId) {
48
+ // Audit logs should be immutable
49
+ await database.query("DELETE FROM audit_logs WHERE created_at < ?", [thirtyDaysAgo()]);
50
+ }
51
+ // Simulated database and audit
52
+ const database = {
53
+ query: async (sql, params) => ({}),
54
+ delete: async (table, id) => true,
55
+ };
56
+ const auditLog = {
57
+ write: async (entry) => true,
58
+ };
59
+ function thirtyDaysAgo() {
60
+ return new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString();
61
+ }
62
+ async function fetchPatient(id) {
63
+ return { id, name: "Test Patient" };
64
+ }
65
+ // This is OK - proper audit trail
66
+ export async function properAuditedAccess(patientId, userId) {
67
+ // Log before access
68
+ await auditLog.write({
69
+ action: "phi_access",
70
+ userId: userId,
71
+ resourceType: "patient",
72
+ resourceId: patientId,
73
+ timestamp: new Date().toISOString(),
74
+ ipAddress: "127.0.0.1",
75
+ outcome: "pending",
76
+ });
77
+ const patient = await fetchPatient(patientId);
78
+ // Log after access with outcome
79
+ await auditLog.write({
80
+ action: "phi_access",
81
+ userId: userId,
82
+ resourceType: "patient",
83
+ resourceId: patientId,
84
+ timestamp: new Date().toISOString(),
85
+ outcome: "success",
86
+ dataAccessed: ["name", "dob", "mrn"],
87
+ });
88
+ return patient;
89
+ }
90
+ //# sourceMappingURL=audit-gaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-gaps.js","sourceRoot":"","sources":["../../../../src/eval/fixtures/healthcare/audit-gaps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Test Fixture: Consent Bypass
3
+ *
4
+ * This file contains intentional consent validation bypass patterns that
5
+ * should be detected by the healthcare scanner. Used for testing only.
6
+ *
7
+ * EXPECTED FINDINGS:
8
+ * - Always-true consent check (high)
9
+ * - Missing consent validation in PHI access (high)
10
+ * - Consent check commented out (high)
11
+ *
12
+ * @module eval/fixtures/healthcare/consent-bypass
13
+ */
14
+ export declare function hasConsent(): boolean;
15
+ export declare function checkConsentStatus(): boolean;
16
+ export declare function accessPatientRecord(patientId: string): Promise<{
17
+ id: string;
18
+ medicalHistory: never[];
19
+ ssn: string;
20
+ }>;
21
+ export declare function getPatientMedicalHistory(patientId: string): Promise<never[]>;
22
+ export declare function getSUDTreatmentPlan(patientId: string): Promise<{
23
+ patientId: string;
24
+ treatmentPlan: string;
25
+ }>;
26
+ export declare function properConsentCheck(patientId: string, userId: string): Promise<{
27
+ id: string;
28
+ medicalHistory: never[];
29
+ ssn: string;
30
+ }>;
31
+ //# sourceMappingURL=consent-bypass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-bypass.d.ts","sourceRoot":"","sources":["../../../../src/eval/fixtures/healthcare/consent-bypass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAGD,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAGD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;;GAK1D;AAGD,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,oBAI/D;AAGD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM;;;GAI1D;AAYD,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;GAMzE"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Test Fixture: Consent Bypass
3
+ *
4
+ * This file contains intentional consent validation bypass patterns that
5
+ * should be detected by the healthcare scanner. Used for testing only.
6
+ *
7
+ * EXPECTED FINDINGS:
8
+ * - Always-true consent check (high)
9
+ * - Missing consent validation in PHI access (high)
10
+ * - Consent check commented out (high)
11
+ *
12
+ * @module eval/fixtures/healthcare/consent-bypass
13
+ */
14
+ // Always-true consent check - SHOULD BE DETECTED
15
+ export function hasConsent() {
16
+ return true; // BUG: Always returns true without validation
17
+ }
18
+ // Another always-true pattern - SHOULD BE DETECTED
19
+ export function checkConsentStatus() {
20
+ const consentGiven = true;
21
+ return consentGiven; // BUG: Hard-coded consent
22
+ }
23
+ // Consent check commented out - SHOULD BE DETECTED
24
+ export async function accessPatientRecord(patientId) {
25
+ // if (!await checkConsentStatus()) {
26
+ // throw new Error("Consent not given");
27
+ // }
28
+ return fetchPatientData(patientId);
29
+ }
30
+ // Missing consent validation before PHI access - SHOULD BE DETECTED
31
+ export async function getPatientMedicalHistory(patientId) {
32
+ // No consent check before accessing sensitive data
33
+ const patient = await fetchPatientData(patientId);
34
+ return patient.medicalHistory;
35
+ }
36
+ // Missing consent check with SUD data - SHOULD BE DETECTED
37
+ export async function getSUDTreatmentPlan(patientId) {
38
+ // SUD data requires explicit consent under 42 CFR Part 2
39
+ // but no consent validation here
40
+ return await fetchSUDRecords(patientId);
41
+ }
42
+ // Helper functions (simulated)
43
+ async function fetchPatientData(patientId) {
44
+ return { id: patientId, medicalHistory: [], ssn: "123-45-6789" };
45
+ }
46
+ async function fetchSUDRecords(patientId) {
47
+ return { patientId, treatmentPlan: "Methadone maintenance" };
48
+ }
49
+ // This is OK - proper consent check
50
+ export async function properConsentCheck(patientId, userId) {
51
+ const consent = await validateConsent(patientId, userId);
52
+ if (!consent.valid) {
53
+ throw new Error("Patient consent not obtained");
54
+ }
55
+ return await fetchPatientData(patientId);
56
+ }
57
+ async function validateConsent(patientId, userId) {
58
+ // Real implementation would check database
59
+ return { valid: false, scope: [], expiresAt: null };
60
+ }
61
+ //# sourceMappingURL=consent-bypass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-bypass.js","sourceRoot":"","sources":["../../../../src/eval/fixtures/healthcare/consent-bypass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,iDAAiD;AACjD,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,CAAC,8CAA8C;AAC7D,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,OAAO,YAAY,CAAC,CAAC,0BAA0B;AACjD,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,qCAAqC;IACrC,0CAA0C;IAC1C,IAAI;IACJ,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,SAAiB;IAC9D,mDAAmD;IACnD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,cAAc,CAAC;AAChC,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,yDAAyD;IACzD,iCAAiC;IACjC,OAAO,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,+BAA+B;AAC/B,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAC/C,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC9C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;AAC/D,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAiB,EAAE,MAAc;IACxE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,MAAc;IAC9D,2CAA2C;IAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Test Fixture: PHI in Logs
3
+ *
4
+ * This file contains intentional PHI exposure patterns that should be
5
+ * detected by the healthcare scanner. Used for testing only.
6
+ *
7
+ * EXPECTED FINDINGS:
8
+ * - SSN in log output (critical)
9
+ * - MRN in console.log (critical)
10
+ * - Patient data in error logs (high)
11
+ *
12
+ * @module eval/fixtures/healthcare/phi-in-logs
13
+ */
14
+ export declare function logPatientInfo(patientId: string, ssn: string): void;
15
+ export declare function logMedicalRecordAccess(mrn: string, action: string): void;
16
+ export declare function handlePatientError(error: Error, patientSSN: string): void;
17
+ export declare function debugPatientRecord(patient: {
18
+ name: string;
19
+ ssn: string;
20
+ mrn: string;
21
+ }): void;
22
+ export declare function logMedicationDispense(patientId: string, medication: string): void;
23
+ export declare function logGenericMessage(message: string): void;
24
+ //# sourceMappingURL=phi-in-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phi-in-logs.d.ts","sourceRoot":"","sources":["../../../../src/eval/fixtures/healthcare/phi-in-logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAE5D;AAGD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAGjE;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,QAElE;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,QAErF;AAGD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAI1E;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,QAEhD"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Test Fixture: PHI in Logs
3
+ *
4
+ * This file contains intentional PHI exposure patterns that should be
5
+ * detected by the healthcare scanner. Used for testing only.
6
+ *
7
+ * EXPECTED FINDINGS:
8
+ * - SSN in log output (critical)
9
+ * - MRN in console.log (critical)
10
+ * - Patient data in error logs (high)
11
+ *
12
+ * @module eval/fixtures/healthcare/phi-in-logs
13
+ */
14
+ // SSN in logger output - SHOULD BE DETECTED
15
+ export function logPatientInfo(patientId, ssn) {
16
+ console.log(`Processing patient ${patientId} with SSN: ${ssn}`);
17
+ }
18
+ // MRN exposure in logs - SHOULD BE DETECTED
19
+ export function logMedicalRecordAccess(mrn, action) {
20
+ console.log(`MRN ${mrn}: ${action}`);
21
+ console.info(`Medical record MRN: ${mrn} accessed`);
22
+ }
23
+ // PHI in error message - SHOULD BE DETECTED
24
+ export function handlePatientError(error, patientSSN) {
25
+ console.error(`Failed to process patient. SSN: ${patientSSN}, Error: ${error.message}`);
26
+ }
27
+ // Patient data in debug logs - SHOULD BE DETECTED
28
+ export function debugPatientRecord(patient) {
29
+ console.debug(`Patient record: ${JSON.stringify(patient)}`);
30
+ }
31
+ // SUD medication in logs - SHOULD BE DETECTED
32
+ export function logMedicationDispense(patientId, medication) {
33
+ if (medication.toLowerCase().includes("methadone") || medication.toLowerCase().includes("suboxone")) {
34
+ console.log(`Dispensed ${medication} to patient ${patientId}`);
35
+ }
36
+ }
37
+ // This is OK - no PHI in logs
38
+ export function logGenericMessage(message) {
39
+ console.log(message);
40
+ }
41
+ //# sourceMappingURL=phi-in-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phi-in-logs.js","sourceRoot":"","sources":["../../../../src/eval/fixtures/healthcare/phi-in-logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,4CAA4C;AAC5C,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,GAAW;IAC3D,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,cAAc,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,MAAc;IAChE,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,UAAkB;IACjE,OAAO,CAAC,KAAK,CAAC,mCAAmC,UAAU,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB,CAAC,OAAmD;IACpF,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAE,UAAkB;IACzE,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,aAAa,UAAU,eAAe,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}