vaspera 2.5.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 (712) hide show
  1. package/CHANGELOG.md +184 -0
  2. package/LICENSE +21 -0
  3. package/README.md +809 -0
  4. package/dist/__tests__/integration/certification-flow.test.d.ts +5 -0
  5. package/dist/__tests__/integration/certification-flow.test.d.ts.map +1 -0
  6. package/dist/__tests__/integration/certification-flow.test.js +245 -0
  7. package/dist/__tests__/integration/certification-flow.test.js.map +1 -0
  8. package/dist/__tests__/integration/commands.test.d.ts +5 -0
  9. package/dist/__tests__/integration/commands.test.d.ts.map +1 -0
  10. package/dist/__tests__/integration/commands.test.js +93 -0
  11. package/dist/__tests__/integration/commands.test.js.map +1 -0
  12. package/dist/action/diff-mode.d.ts +34 -0
  13. package/dist/action/diff-mode.d.ts.map +1 -0
  14. package/dist/action/diff-mode.js +201 -0
  15. package/dist/action/diff-mode.js.map +1 -0
  16. package/dist/action/diff-mode.test.d.ts +5 -0
  17. package/dist/action/diff-mode.test.d.ts.map +1 -0
  18. package/dist/action/diff-mode.test.js +162 -0
  19. package/dist/action/diff-mode.test.js.map +1 -0
  20. package/dist/action/index.d.ts +10 -0
  21. package/dist/action/index.d.ts.map +1 -0
  22. package/dist/action/index.js +231 -0
  23. package/dist/action/index.js.map +1 -0
  24. package/dist/action/pr-comment.d.ts +30 -0
  25. package/dist/action/pr-comment.d.ts.map +1 -0
  26. package/dist/action/pr-comment.js +301 -0
  27. package/dist/action/pr-comment.js.map +1 -0
  28. package/dist/action/pr-comment.test.d.ts +5 -0
  29. package/dist/action/pr-comment.test.d.ts.map +1 -0
  30. package/dist/action/pr-comment.test.js +189 -0
  31. package/dist/action/pr-comment.test.js.map +1 -0
  32. package/dist/action/sarif-upload.d.ts +104 -0
  33. package/dist/action/sarif-upload.d.ts.map +1 -0
  34. package/dist/action/sarif-upload.js +188 -0
  35. package/dist/action/sarif-upload.js.map +1 -0
  36. package/dist/action/sarif-upload.test.d.ts +5 -0
  37. package/dist/action/sarif-upload.test.d.ts.map +1 -0
  38. package/dist/action/sarif-upload.test.js +206 -0
  39. package/dist/action/sarif-upload.test.js.map +1 -0
  40. package/dist/action/types.d.ts +104 -0
  41. package/dist/action/types.d.ts.map +1 -0
  42. package/dist/action/types.js +33 -0
  43. package/dist/action/types.js.map +1 -0
  44. package/dist/action/types.test.d.ts +5 -0
  45. package/dist/action/types.test.d.ts.map +1 -0
  46. package/dist/action/types.test.js +79 -0
  47. package/dist/action/types.test.js.map +1 -0
  48. package/dist/agents/agent-integrity.d.ts +111 -0
  49. package/dist/agents/agent-integrity.d.ts.map +1 -0
  50. package/dist/agents/agent-integrity.js +308 -0
  51. package/dist/agents/agent-integrity.js.map +1 -0
  52. package/dist/agents/agent-privacy.d.ts +68 -0
  53. package/dist/agents/agent-privacy.d.ts.map +1 -0
  54. package/dist/agents/agent-privacy.js +345 -0
  55. package/dist/agents/agent-privacy.js.map +1 -0
  56. package/dist/agents/exploit-chain.d.ts +64 -0
  57. package/dist/agents/exploit-chain.d.ts.map +1 -0
  58. package/dist/agents/exploit-chain.js +477 -0
  59. package/dist/agents/exploit-chain.js.map +1 -0
  60. package/dist/agents/exploit-chain.test.d.ts +5 -0
  61. package/dist/agents/exploit-chain.test.d.ts.map +1 -0
  62. package/dist/agents/exploit-chain.test.js +455 -0
  63. package/dist/agents/exploit-chain.test.js.map +1 -0
  64. package/dist/agents/index.d.ts +14 -0
  65. package/dist/agents/index.d.ts.map +1 -0
  66. package/dist/agents/index.js +19 -0
  67. package/dist/agents/index.js.map +1 -0
  68. package/dist/agents/logic-flaw-detector.d.ts +55 -0
  69. package/dist/agents/logic-flaw-detector.d.ts.map +1 -0
  70. package/dist/agents/logic-flaw-detector.js +454 -0
  71. package/dist/agents/logic-flaw-detector.js.map +1 -0
  72. package/dist/agents/zero-day-hunter.d.ts +69 -0
  73. package/dist/agents/zero-day-hunter.d.ts.map +1 -0
  74. package/dist/agents/zero-day-hunter.js +591 -0
  75. package/dist/agents/zero-day-hunter.js.map +1 -0
  76. package/dist/certification/artifacts.d.ts +21 -0
  77. package/dist/certification/artifacts.d.ts.map +1 -0
  78. package/dist/certification/artifacts.js +275 -0
  79. package/dist/certification/artifacts.js.map +1 -0
  80. package/dist/certification/autofix.d.ts +122 -0
  81. package/dist/certification/autofix.d.ts.map +1 -0
  82. package/dist/certification/autofix.js +476 -0
  83. package/dist/certification/autofix.js.map +1 -0
  84. package/dist/certification/badge.d.ts +56 -0
  85. package/dist/certification/badge.d.ts.map +1 -0
  86. package/dist/certification/badge.js +155 -0
  87. package/dist/certification/badge.js.map +1 -0
  88. package/dist/certification/cache.d.ts +121 -0
  89. package/dist/certification/cache.d.ts.map +1 -0
  90. package/dist/certification/cache.js +275 -0
  91. package/dist/certification/cache.js.map +1 -0
  92. package/dist/certification/cache.test.d.ts +5 -0
  93. package/dist/certification/cache.test.d.ts.map +1 -0
  94. package/dist/certification/cache.test.js +270 -0
  95. package/dist/certification/cache.test.js.map +1 -0
  96. package/dist/certification/consensus.d.ts +105 -0
  97. package/dist/certification/consensus.d.ts.map +1 -0
  98. package/dist/certification/consensus.js +353 -0
  99. package/dist/certification/consensus.js.map +1 -0
  100. package/dist/certification/consensus.test.d.ts +5 -0
  101. package/dist/certification/consensus.test.d.ts.map +1 -0
  102. package/dist/certification/consensus.test.js +342 -0
  103. package/dist/certification/consensus.test.js.map +1 -0
  104. package/dist/certification/index.d.ts +14 -0
  105. package/dist/certification/index.d.ts.map +1 -0
  106. package/dist/certification/index.js +14 -0
  107. package/dist/certification/index.js.map +1 -0
  108. package/dist/certification/rules.d.ts +89 -0
  109. package/dist/certification/rules.d.ts.map +1 -0
  110. package/dist/certification/rules.js +317 -0
  111. package/dist/certification/rules.js.map +1 -0
  112. package/dist/certification/sarif.d.ts +107 -0
  113. package/dist/certification/sarif.d.ts.map +1 -0
  114. package/dist/certification/sarif.js +191 -0
  115. package/dist/certification/sarif.js.map +1 -0
  116. package/dist/certification/store.d.ts +255 -0
  117. package/dist/certification/store.d.ts.map +1 -0
  118. package/dist/certification/store.js +835 -0
  119. package/dist/certification/store.js.map +1 -0
  120. package/dist/certification/store.test.d.ts +5 -0
  121. package/dist/certification/store.test.d.ts.map +1 -0
  122. package/dist/certification/store.test.js +468 -0
  123. package/dist/certification/store.test.js.map +1 -0
  124. package/dist/certification/summary.d.ts +72 -0
  125. package/dist/certification/summary.d.ts.map +1 -0
  126. package/dist/certification/summary.js +296 -0
  127. package/dist/certification/summary.js.map +1 -0
  128. package/dist/certification/types.d.ts +138 -0
  129. package/dist/certification/types.d.ts.map +1 -0
  130. package/dist/certification/types.js +34 -0
  131. package/dist/certification/types.js.map +1 -0
  132. package/dist/commands/audits/api-check.d.ts +3 -0
  133. package/dist/commands/audits/api-check.d.ts.map +1 -0
  134. package/dist/commands/audits/api-check.js +71 -0
  135. package/dist/commands/audits/api-check.js.map +1 -0
  136. package/dist/commands/audits/deadcode.d.ts +3 -0
  137. package/dist/commands/audits/deadcode.d.ts.map +1 -0
  138. package/dist/commands/audits/deadcode.js +63 -0
  139. package/dist/commands/audits/deadcode.js.map +1 -0
  140. package/dist/commands/audits/deps.d.ts +3 -0
  141. package/dist/commands/audits/deps.d.ts.map +1 -0
  142. package/dist/commands/audits/deps.js +56 -0
  143. package/dist/commands/audits/deps.js.map +1 -0
  144. package/dist/commands/audits/errors.d.ts +3 -0
  145. package/dist/commands/audits/errors.d.ts.map +1 -0
  146. package/dist/commands/audits/errors.js +65 -0
  147. package/dist/commands/audits/errors.js.map +1 -0
  148. package/dist/commands/audits/index.d.ts +3 -0
  149. package/dist/commands/audits/index.d.ts.map +1 -0
  150. package/dist/commands/audits/index.js +15 -0
  151. package/dist/commands/audits/index.js.map +1 -0
  152. package/dist/commands/audits/perf.d.ts +3 -0
  153. package/dist/commands/audits/perf.d.ts.map +1 -0
  154. package/dist/commands/audits/perf.js +85 -0
  155. package/dist/commands/audits/perf.js.map +1 -0
  156. package/dist/commands/audits/secrets.d.ts +3 -0
  157. package/dist/commands/audits/secrets.d.ts.map +1 -0
  158. package/dist/commands/audits/secrets.js +71 -0
  159. package/dist/commands/audits/secrets.js.map +1 -0
  160. package/dist/commands/certification/certify.d.ts +3 -0
  161. package/dist/commands/certification/certify.d.ts.map +1 -0
  162. package/dist/commands/certification/certify.js +108 -0
  163. package/dist/commands/certification/certify.js.map +1 -0
  164. package/dist/commands/certification/index.d.ts +3 -0
  165. package/dist/commands/certification/index.d.ts.map +1 -0
  166. package/dist/commands/certification/index.js +17 -0
  167. package/dist/commands/certification/index.js.map +1 -0
  168. package/dist/commands/certification/performance.d.ts +3 -0
  169. package/dist/commands/certification/performance.d.ts.map +1 -0
  170. package/dist/commands/certification/performance.js +89 -0
  171. package/dist/commands/certification/performance.js.map +1 -0
  172. package/dist/commands/certification/quality.d.ts +3 -0
  173. package/dist/commands/certification/quality.d.ts.map +1 -0
  174. package/dist/commands/certification/quality.js +92 -0
  175. package/dist/commands/certification/quality.js.map +1 -0
  176. package/dist/commands/certification/redteam.d.ts +3 -0
  177. package/dist/commands/certification/redteam.d.ts.map +1 -0
  178. package/dist/commands/certification/redteam.js +114 -0
  179. package/dist/commands/certification/redteam.js.map +1 -0
  180. package/dist/commands/certification/reliability.d.ts +3 -0
  181. package/dist/commands/certification/reliability.d.ts.map +1 -0
  182. package/dist/commands/certification/reliability.js +93 -0
  183. package/dist/commands/certification/reliability.js.map +1 -0
  184. package/dist/commands/certification/security.d.ts +3 -0
  185. package/dist/commands/certification/security.d.ts.map +1 -0
  186. package/dist/commands/certification/security.js +90 -0
  187. package/dist/commands/certification/security.js.map +1 -0
  188. package/dist/commands/certification/typesafety.d.ts +3 -0
  189. package/dist/commands/certification/typesafety.d.ts.map +1 -0
  190. package/dist/commands/certification/typesafety.js +87 -0
  191. package/dist/commands/certification/typesafety.js.map +1 -0
  192. package/dist/commands/core/add-tests.d.ts +3 -0
  193. package/dist/commands/core/add-tests.d.ts.map +1 -0
  194. package/dist/commands/core/add-tests.js +29 -0
  195. package/dist/commands/core/add-tests.js.map +1 -0
  196. package/dist/commands/core/audit.d.ts +3 -0
  197. package/dist/commands/core/audit.d.ts.map +1 -0
  198. package/dist/commands/core/audit.js +64 -0
  199. package/dist/commands/core/audit.js.map +1 -0
  200. package/dist/commands/core/fix-critical.d.ts +3 -0
  201. package/dist/commands/core/fix-critical.d.ts.map +1 -0
  202. package/dist/commands/core/fix-critical.js +22 -0
  203. package/dist/commands/core/fix-critical.js.map +1 -0
  204. package/dist/commands/core/fix-high.d.ts +3 -0
  205. package/dist/commands/core/fix-high.d.ts.map +1 -0
  206. package/dist/commands/core/fix-high.js +32 -0
  207. package/dist/commands/core/fix-high.js.map +1 -0
  208. package/dist/commands/core/fix-medium.d.ts +3 -0
  209. package/dist/commands/core/fix-medium.d.ts.map +1 -0
  210. package/dist/commands/core/fix-medium.js +29 -0
  211. package/dist/commands/core/fix-medium.js.map +1 -0
  212. package/dist/commands/core/fix-rls.d.ts +3 -0
  213. package/dist/commands/core/fix-rls.d.ts.map +1 -0
  214. package/dist/commands/core/fix-rls.js +17 -0
  215. package/dist/commands/core/fix-rls.js.map +1 -0
  216. package/dist/commands/core/harden.d.ts +3 -0
  217. package/dist/commands/core/harden.d.ts.map +1 -0
  218. package/dist/commands/core/harden.js +19 -0
  219. package/dist/commands/core/harden.js.map +1 -0
  220. package/dist/commands/core/index.d.ts +3 -0
  221. package/dist/commands/core/index.d.ts.map +1 -0
  222. package/dist/commands/core/index.js +21 -0
  223. package/dist/commands/core/index.js.map +1 -0
  224. package/dist/commands/core/preflight.d.ts +3 -0
  225. package/dist/commands/core/preflight.d.ts.map +1 -0
  226. package/dist/commands/core/preflight.js +50 -0
  227. package/dist/commands/core/preflight.js.map +1 -0
  228. package/dist/commands/core/verify.d.ts +3 -0
  229. package/dist/commands/core/verify.d.ts.map +1 -0
  230. package/dist/commands/core/verify.js +32 -0
  231. package/dist/commands/core/verify.js.map +1 -0
  232. package/dist/commands/index.d.ts +28 -0
  233. package/dist/commands/index.d.ts.map +1 -0
  234. package/dist/commands/index.js +37 -0
  235. package/dist/commands/index.js.map +1 -0
  236. package/dist/commands/types.d.ts +9 -0
  237. package/dist/commands/types.d.ts.map +1 -0
  238. package/dist/commands/types.js +5 -0
  239. package/dist/commands/types.js.map +1 -0
  240. package/dist/compliance/cis.d.ts +29 -0
  241. package/dist/compliance/cis.d.ts.map +1 -0
  242. package/dist/compliance/cis.js +316 -0
  243. package/dist/compliance/cis.js.map +1 -0
  244. package/dist/compliance/frameworks/eu-ai-act.d.ts +55 -0
  245. package/dist/compliance/frameworks/eu-ai-act.d.ts.map +1 -0
  246. package/dist/compliance/frameworks/eu-ai-act.js +621 -0
  247. package/dist/compliance/frameworks/eu-ai-act.js.map +1 -0
  248. package/dist/compliance/frameworks/index.d.ts +67 -0
  249. package/dist/compliance/frameworks/index.d.ts.map +1 -0
  250. package/dist/compliance/frameworks/index.js +97 -0
  251. package/dist/compliance/frameworks/index.js.map +1 -0
  252. package/dist/compliance/frameworks/iso-42001.d.ts +59 -0
  253. package/dist/compliance/frameworks/iso-42001.d.ts.map +1 -0
  254. package/dist/compliance/frameworks/iso-42001.js +719 -0
  255. package/dist/compliance/frameworks/iso-42001.js.map +1 -0
  256. package/dist/compliance/frameworks/mitre-atlas.d.ts +58 -0
  257. package/dist/compliance/frameworks/mitre-atlas.d.ts.map +1 -0
  258. package/dist/compliance/frameworks/mitre-atlas.js +686 -0
  259. package/dist/compliance/frameworks/mitre-atlas.js.map +1 -0
  260. package/dist/compliance/frameworks/nist-ai-rmf.d.ts +51 -0
  261. package/dist/compliance/frameworks/nist-ai-rmf.d.ts.map +1 -0
  262. package/dist/compliance/frameworks/nist-ai-rmf.js +677 -0
  263. package/dist/compliance/frameworks/nist-ai-rmf.js.map +1 -0
  264. package/dist/compliance/frameworks/owasp-llm.d.ts +58 -0
  265. package/dist/compliance/frameworks/owasp-llm.d.ts.map +1 -0
  266. package/dist/compliance/frameworks/owasp-llm.js +399 -0
  267. package/dist/compliance/frameworks/owasp-llm.js.map +1 -0
  268. package/dist/compliance/gdpr.d.ts +34 -0
  269. package/dist/compliance/gdpr.d.ts.map +1 -0
  270. package/dist/compliance/gdpr.js +319 -0
  271. package/dist/compliance/gdpr.js.map +1 -0
  272. package/dist/compliance/hipaa.d.ts +29 -0
  273. package/dist/compliance/hipaa.d.ts.map +1 -0
  274. package/dist/compliance/hipaa.js +205 -0
  275. package/dist/compliance/hipaa.js.map +1 -0
  276. package/dist/compliance/index.d.ts +18 -0
  277. package/dist/compliance/index.d.ts.map +1 -0
  278. package/dist/compliance/index.js +26 -0
  279. package/dist/compliance/index.js.map +1 -0
  280. package/dist/compliance/iso27001.d.ts +30 -0
  281. package/dist/compliance/iso27001.d.ts.map +1 -0
  282. package/dist/compliance/iso27001.js +332 -0
  283. package/dist/compliance/iso27001.js.map +1 -0
  284. package/dist/compliance/mapper.d.ts +42 -0
  285. package/dist/compliance/mapper.d.ts.map +1 -0
  286. package/dist/compliance/mapper.js +269 -0
  287. package/dist/compliance/mapper.js.map +1 -0
  288. package/dist/compliance/mapper.test.d.ts +5 -0
  289. package/dist/compliance/mapper.test.d.ts.map +1 -0
  290. package/dist/compliance/mapper.test.js +360 -0
  291. package/dist/compliance/mapper.test.js.map +1 -0
  292. package/dist/compliance/pci-dss.d.ts +29 -0
  293. package/dist/compliance/pci-dss.d.ts.map +1 -0
  294. package/dist/compliance/pci-dss.js +247 -0
  295. package/dist/compliance/pci-dss.js.map +1 -0
  296. package/dist/compliance/report.d.ts +25 -0
  297. package/dist/compliance/report.d.ts.map +1 -0
  298. package/dist/compliance/report.js +254 -0
  299. package/dist/compliance/report.js.map +1 -0
  300. package/dist/compliance/report.test.d.ts +5 -0
  301. package/dist/compliance/report.test.d.ts.map +1 -0
  302. package/dist/compliance/report.test.js +128 -0
  303. package/dist/compliance/report.test.js.map +1 -0
  304. package/dist/compliance/soc2.d.ts +30 -0
  305. package/dist/compliance/soc2.d.ts.map +1 -0
  306. package/dist/compliance/soc2.js +262 -0
  307. package/dist/compliance/soc2.js.map +1 -0
  308. package/dist/compliance/soc2.test.d.ts +5 -0
  309. package/dist/compliance/soc2.test.d.ts.map +1 -0
  310. package/dist/compliance/soc2.test.js +86 -0
  311. package/dist/compliance/soc2.test.js.map +1 -0
  312. package/dist/compliance/types.d.ts +125 -0
  313. package/dist/compliance/types.d.ts.map +1 -0
  314. package/dist/compliance/types.js +10 -0
  315. package/dist/compliance/types.js.map +1 -0
  316. package/dist/config/flags.d.ts +456 -0
  317. package/dist/config/flags.d.ts.map +1 -0
  318. package/dist/config/flags.js +464 -0
  319. package/dist/config/flags.js.map +1 -0
  320. package/dist/config/index.d.ts +10 -0
  321. package/dist/config/index.d.ts.map +1 -0
  322. package/dist/config/index.js +10 -0
  323. package/dist/config/index.js.map +1 -0
  324. package/dist/config/severity-overrides.d.ts +209 -0
  325. package/dist/config/severity-overrides.d.ts.map +1 -0
  326. package/dist/config/severity-overrides.js +380 -0
  327. package/dist/config/severity-overrides.js.map +1 -0
  328. package/dist/cost/index.d.ts +11 -0
  329. package/dist/cost/index.d.ts.map +1 -0
  330. package/dist/cost/index.js +12 -0
  331. package/dist/cost/index.js.map +1 -0
  332. package/dist/cost/pricing.d.ts +57 -0
  333. package/dist/cost/pricing.d.ts.map +1 -0
  334. package/dist/cost/pricing.js +196 -0
  335. package/dist/cost/pricing.js.map +1 -0
  336. package/dist/cost/pricing.test.d.ts +5 -0
  337. package/dist/cost/pricing.test.d.ts.map +1 -0
  338. package/dist/cost/pricing.test.js +195 -0
  339. package/dist/cost/pricing.test.js.map +1 -0
  340. package/dist/cost/tracker.d.ts +100 -0
  341. package/dist/cost/tracker.d.ts.map +1 -0
  342. package/dist/cost/tracker.js +366 -0
  343. package/dist/cost/tracker.js.map +1 -0
  344. package/dist/cost/tracker.test.d.ts +5 -0
  345. package/dist/cost/tracker.test.d.ts.map +1 -0
  346. package/dist/cost/tracker.test.js +360 -0
  347. package/dist/cost/tracker.test.js.map +1 -0
  348. package/dist/cost/types.d.ts +135 -0
  349. package/dist/cost/types.d.ts.map +1 -0
  350. package/dist/cost/types.js +9 -0
  351. package/dist/cost/types.js.map +1 -0
  352. package/dist/enterprise/auth/oidc.d.ts +231 -0
  353. package/dist/enterprise/auth/oidc.d.ts.map +1 -0
  354. package/dist/enterprise/auth/oidc.js +372 -0
  355. package/dist/enterprise/auth/oidc.js.map +1 -0
  356. package/dist/enterprise/auth/oidc.test.d.ts +5 -0
  357. package/dist/enterprise/auth/oidc.test.d.ts.map +1 -0
  358. package/dist/enterprise/auth/oidc.test.js +435 -0
  359. package/dist/enterprise/auth/oidc.test.js.map +1 -0
  360. package/dist/enterprise/index.d.ts +14 -0
  361. package/dist/enterprise/index.d.ts.map +1 -0
  362. package/dist/enterprise/index.js +19 -0
  363. package/dist/enterprise/index.js.map +1 -0
  364. package/dist/enterprise/integrations/chat.d.ts +205 -0
  365. package/dist/enterprise/integrations/chat.d.ts.map +1 -0
  366. package/dist/enterprise/integrations/chat.js +624 -0
  367. package/dist/enterprise/integrations/chat.js.map +1 -0
  368. package/dist/enterprise/integrations/chat.test.d.ts +5 -0
  369. package/dist/enterprise/integrations/chat.test.d.ts.map +1 -0
  370. package/dist/enterprise/integrations/chat.test.js +557 -0
  371. package/dist/enterprise/integrations/chat.test.js.map +1 -0
  372. package/dist/enterprise/integrations/ticketing.d.ts +257 -0
  373. package/dist/enterprise/integrations/ticketing.d.ts.map +1 -0
  374. package/dist/enterprise/integrations/ticketing.js +548 -0
  375. package/dist/enterprise/integrations/ticketing.js.map +1 -0
  376. package/dist/enterprise/integrations/ticketing.test.d.ts +5 -0
  377. package/dist/enterprise/integrations/ticketing.test.d.ts.map +1 -0
  378. package/dist/enterprise/integrations/ticketing.test.js +693 -0
  379. package/dist/enterprise/integrations/ticketing.test.js.map +1 -0
  380. package/dist/enterprise/policy/opa.d.ts +194 -0
  381. package/dist/enterprise/policy/opa.d.ts.map +1 -0
  382. package/dist/enterprise/policy/opa.js +385 -0
  383. package/dist/enterprise/policy/opa.js.map +1 -0
  384. package/dist/enterprise/policy/opa.test.d.ts +5 -0
  385. package/dist/enterprise/policy/opa.test.d.ts.map +1 -0
  386. package/dist/enterprise/policy/opa.test.js +702 -0
  387. package/dist/enterprise/policy/opa.test.js.map +1 -0
  388. package/dist/enterprise/signing/kms.d.ts +211 -0
  389. package/dist/enterprise/signing/kms.d.ts.map +1 -0
  390. package/dist/enterprise/signing/kms.js +480 -0
  391. package/dist/enterprise/signing/kms.js.map +1 -0
  392. package/dist/enterprise/signing/kms.test.d.ts +5 -0
  393. package/dist/enterprise/signing/kms.test.d.ts.map +1 -0
  394. package/dist/enterprise/signing/kms.test.js +511 -0
  395. package/dist/enterprise/signing/kms.test.js.map +1 -0
  396. package/dist/eval/fixtures.d.ts +58 -0
  397. package/dist/eval/fixtures.d.ts.map +1 -0
  398. package/dist/eval/fixtures.js +571 -0
  399. package/dist/eval/fixtures.js.map +1 -0
  400. package/dist/eval/fixtures.test.d.ts +5 -0
  401. package/dist/eval/fixtures.test.d.ts.map +1 -0
  402. package/dist/eval/fixtures.test.js +193 -0
  403. package/dist/eval/fixtures.test.js.map +1 -0
  404. package/dist/eval/harness.d.ts +30 -0
  405. package/dist/eval/harness.d.ts.map +1 -0
  406. package/dist/eval/harness.js +221 -0
  407. package/dist/eval/harness.js.map +1 -0
  408. package/dist/eval/harness.test.d.ts +5 -0
  409. package/dist/eval/harness.test.d.ts.map +1 -0
  410. package/dist/eval/harness.test.js +314 -0
  411. package/dist/eval/harness.test.js.map +1 -0
  412. package/dist/eval/index.d.ts +15 -0
  413. package/dist/eval/index.d.ts.map +1 -0
  414. package/dist/eval/index.js +18 -0
  415. package/dist/eval/index.js.map +1 -0
  416. package/dist/eval/metrics.d.ts +56 -0
  417. package/dist/eval/metrics.d.ts.map +1 -0
  418. package/dist/eval/metrics.js +298 -0
  419. package/dist/eval/metrics.js.map +1 -0
  420. package/dist/eval/metrics.test.d.ts +5 -0
  421. package/dist/eval/metrics.test.d.ts.map +1 -0
  422. package/dist/eval/metrics.test.js +426 -0
  423. package/dist/eval/metrics.test.js.map +1 -0
  424. package/dist/eval/report.d.ts +30 -0
  425. package/dist/eval/report.d.ts.map +1 -0
  426. package/dist/eval/report.js +333 -0
  427. package/dist/eval/report.js.map +1 -0
  428. package/dist/eval/report.test.d.ts +5 -0
  429. package/dist/eval/report.test.d.ts.map +1 -0
  430. package/dist/eval/report.test.js +275 -0
  431. package/dist/eval/report.test.js.map +1 -0
  432. package/dist/eval/types.d.ts +234 -0
  433. package/dist/eval/types.d.ts.map +1 -0
  434. package/dist/eval/types.js +27 -0
  435. package/dist/eval/types.js.map +1 -0
  436. package/dist/http-server.d.ts +3 -0
  437. package/dist/http-server.d.ts.map +1 -0
  438. package/dist/http-server.js +127 -0
  439. package/dist/http-server.js.map +1 -0
  440. package/dist/index.d.ts +33 -0
  441. package/dist/index.d.ts.map +1 -0
  442. package/dist/index.js +4120 -0
  443. package/dist/index.js.map +1 -0
  444. package/dist/logger.d.ts +46 -0
  445. package/dist/logger.d.ts.map +1 -0
  446. package/dist/logger.js +131 -0
  447. package/dist/logger.js.map +1 -0
  448. package/dist/multimodel/consensus.d.ts +49 -0
  449. package/dist/multimodel/consensus.d.ts.map +1 -0
  450. package/dist/multimodel/consensus.js +454 -0
  451. package/dist/multimodel/consensus.js.map +1 -0
  452. package/dist/multimodel/consensus.test.d.ts +5 -0
  453. package/dist/multimodel/consensus.test.d.ts.map +1 -0
  454. package/dist/multimodel/consensus.test.js +415 -0
  455. package/dist/multimodel/consensus.test.js.map +1 -0
  456. package/dist/multimodel/index.d.ts +13 -0
  457. package/dist/multimodel/index.d.ts.map +1 -0
  458. package/dist/multimodel/index.js +14 -0
  459. package/dist/multimodel/index.js.map +1 -0
  460. package/dist/multimodel/runner.d.ts +95 -0
  461. package/dist/multimodel/runner.d.ts.map +1 -0
  462. package/dist/multimodel/runner.js +312 -0
  463. package/dist/multimodel/runner.js.map +1 -0
  464. package/dist/multimodel/runner.test.d.ts +5 -0
  465. package/dist/multimodel/runner.test.d.ts.map +1 -0
  466. package/dist/multimodel/runner.test.js +224 -0
  467. package/dist/multimodel/runner.test.js.map +1 -0
  468. package/dist/multimodel/types.d.ts +202 -0
  469. package/dist/multimodel/types.d.ts.map +1 -0
  470. package/dist/multimodel/types.js +10 -0
  471. package/dist/multimodel/types.js.map +1 -0
  472. package/dist/observability/index.d.ts +9 -0
  473. package/dist/observability/index.d.ts.map +1 -0
  474. package/dist/observability/index.js +9 -0
  475. package/dist/observability/index.js.map +1 -0
  476. package/dist/observability/otel.d.ts +102 -0
  477. package/dist/observability/otel.d.ts.map +1 -0
  478. package/dist/observability/otel.js +284 -0
  479. package/dist/observability/otel.js.map +1 -0
  480. package/dist/plugins/index.d.ts +10 -0
  481. package/dist/plugins/index.d.ts.map +1 -0
  482. package/dist/plugins/index.js +10 -0
  483. package/dist/plugins/index.js.map +1 -0
  484. package/dist/plugins/loader.d.ts +78 -0
  485. package/dist/plugins/loader.d.ts.map +1 -0
  486. package/dist/plugins/loader.js +470 -0
  487. package/dist/plugins/loader.js.map +1 -0
  488. package/dist/plugins/types.d.ts +304 -0
  489. package/dist/plugins/types.d.ts.map +1 -0
  490. package/dist/plugins/types.js +100 -0
  491. package/dist/plugins/types.js.map +1 -0
  492. package/dist/sbom/cyclonedx.d.ts +30 -0
  493. package/dist/sbom/cyclonedx.d.ts.map +1 -0
  494. package/dist/sbom/cyclonedx.js +392 -0
  495. package/dist/sbom/cyclonedx.js.map +1 -0
  496. package/dist/sbom/cyclonedx.test.d.ts +5 -0
  497. package/dist/sbom/cyclonedx.test.d.ts.map +1 -0
  498. package/dist/sbom/cyclonedx.test.js +244 -0
  499. package/dist/sbom/cyclonedx.test.js.map +1 -0
  500. package/dist/sbom/index.d.ts +13 -0
  501. package/dist/sbom/index.d.ts.map +1 -0
  502. package/dist/sbom/index.js +15 -0
  503. package/dist/sbom/index.js.map +1 -0
  504. package/dist/sbom/provenance.d.ts +37 -0
  505. package/dist/sbom/provenance.d.ts.map +1 -0
  506. package/dist/sbom/provenance.js +268 -0
  507. package/dist/sbom/provenance.js.map +1 -0
  508. package/dist/sbom/provenance.test.d.ts +5 -0
  509. package/dist/sbom/provenance.test.d.ts.map +1 -0
  510. package/dist/sbom/provenance.test.js +189 -0
  511. package/dist/sbom/provenance.test.js.map +1 -0
  512. package/dist/sbom/signing.d.ts +87 -0
  513. package/dist/sbom/signing.d.ts.map +1 -0
  514. package/dist/sbom/signing.js +354 -0
  515. package/dist/sbom/signing.js.map +1 -0
  516. package/dist/sbom/signing.test.d.ts +5 -0
  517. package/dist/sbom/signing.test.d.ts.map +1 -0
  518. package/dist/sbom/signing.test.js +170 -0
  519. package/dist/sbom/signing.test.js.map +1 -0
  520. package/dist/sbom/types.d.ts +384 -0
  521. package/dist/sbom/types.d.ts.map +1 -0
  522. package/dist/sbom/types.js +17 -0
  523. package/dist/sbom/types.js.map +1 -0
  524. package/dist/scanners/agent/credential-scope-audit.d.ts +40 -0
  525. package/dist/scanners/agent/credential-scope-audit.d.ts.map +1 -0
  526. package/dist/scanners/agent/credential-scope-audit.js +404 -0
  527. package/dist/scanners/agent/credential-scope-audit.js.map +1 -0
  528. package/dist/scanners/agent/exfil-path-graph.d.ts +50 -0
  529. package/dist/scanners/agent/exfil-path-graph.d.ts.map +1 -0
  530. package/dist/scanners/agent/exfil-path-graph.js +764 -0
  531. package/dist/scanners/agent/exfil-path-graph.js.map +1 -0
  532. package/dist/scanners/agent/index.d.ts +43 -0
  533. package/dist/scanners/agent/index.d.ts.map +1 -0
  534. package/dist/scanners/agent/index.js +616 -0
  535. package/dist/scanners/agent/index.js.map +1 -0
  536. package/dist/scanners/agent/manifest-audit.d.ts +43 -0
  537. package/dist/scanners/agent/manifest-audit.d.ts.map +1 -0
  538. package/dist/scanners/agent/manifest-audit.js +403 -0
  539. package/dist/scanners/agent/manifest-audit.js.map +1 -0
  540. package/dist/scanners/agent/payloads/index.d.ts +44 -0
  541. package/dist/scanners/agent/payloads/index.d.ts.map +1 -0
  542. package/dist/scanners/agent/payloads/index.js +184 -0
  543. package/dist/scanners/agent/payloads/index.js.map +1 -0
  544. package/dist/scanners/agent/permission-minimiser.d.ts +48 -0
  545. package/dist/scanners/agent/permission-minimiser.d.ts.map +1 -0
  546. package/dist/scanners/agent/permission-minimiser.js +551 -0
  547. package/dist/scanners/agent/permission-minimiser.js.map +1 -0
  548. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts +39 -0
  549. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -0
  550. package/dist/scanners/agent/prompt-injection-fuzzer.js +720 -0
  551. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -0
  552. package/dist/scanners/agent/sandbox-audit.d.ts +44 -0
  553. package/dist/scanners/agent/sandbox-audit.d.ts.map +1 -0
  554. package/dist/scanners/agent/sandbox-audit.js +425 -0
  555. package/dist/scanners/agent/sandbox-audit.js.map +1 -0
  556. package/dist/scanners/agent/supply-chain-mcp.d.ts +53 -0
  557. package/dist/scanners/agent/supply-chain-mcp.d.ts.map +1 -0
  558. package/dist/scanners/agent/supply-chain-mcp.js +479 -0
  559. package/dist/scanners/agent/supply-chain-mcp.js.map +1 -0
  560. package/dist/scanners/agent/tool-description-drift.d.ts +62 -0
  561. package/dist/scanners/agent/tool-description-drift.d.ts.map +1 -0
  562. package/dist/scanners/agent/tool-description-drift.js +365 -0
  563. package/dist/scanners/agent/tool-description-drift.js.map +1 -0
  564. package/dist/scanners/agent/types.d.ts +840 -0
  565. package/dist/scanners/agent/types.d.ts.map +1 -0
  566. package/dist/scanners/agent/types.js +149 -0
  567. package/dist/scanners/agent/types.js.map +1 -0
  568. package/dist/scanners/bandit.d.ts +25 -0
  569. package/dist/scanners/bandit.d.ts.map +1 -0
  570. package/dist/scanners/bandit.js +129 -0
  571. package/dist/scanners/bandit.js.map +1 -0
  572. package/dist/scanners/binary-analysis.d.ts +41 -0
  573. package/dist/scanners/binary-analysis.d.ts.map +1 -0
  574. package/dist/scanners/binary-analysis.js +587 -0
  575. package/dist/scanners/binary-analysis.js.map +1 -0
  576. package/dist/scanners/binary-analysis.test.d.ts +5 -0
  577. package/dist/scanners/binary-analysis.test.d.ts.map +1 -0
  578. package/dist/scanners/binary-analysis.test.js +291 -0
  579. package/dist/scanners/binary-analysis.test.js.map +1 -0
  580. package/dist/scanners/brakeman.d.ts +30 -0
  581. package/dist/scanners/brakeman.d.ts.map +1 -0
  582. package/dist/scanners/brakeman.js +271 -0
  583. package/dist/scanners/brakeman.js.map +1 -0
  584. package/dist/scanners/dependencies.d.ts +22 -0
  585. package/dist/scanners/dependencies.d.ts.map +1 -0
  586. package/dist/scanners/dependencies.js +202 -0
  587. package/dist/scanners/dependencies.js.map +1 -0
  588. package/dist/scanners/dependencies.test.d.ts +5 -0
  589. package/dist/scanners/dependencies.test.d.ts.map +1 -0
  590. package/dist/scanners/dependencies.test.js +185 -0
  591. package/dist/scanners/dependencies.test.js.map +1 -0
  592. package/dist/scanners/eslint.d.ts +25 -0
  593. package/dist/scanners/eslint.d.ts.map +1 -0
  594. package/dist/scanners/eslint.js +220 -0
  595. package/dist/scanners/eslint.js.map +1 -0
  596. package/dist/scanners/gosec.d.ts +25 -0
  597. package/dist/scanners/gosec.d.ts.map +1 -0
  598. package/dist/scanners/gosec.js +128 -0
  599. package/dist/scanners/gosec.js.map +1 -0
  600. package/dist/scanners/index.d.ts +128 -0
  601. package/dist/scanners/index.d.ts.map +1 -0
  602. package/dist/scanners/index.js +811 -0
  603. package/dist/scanners/index.js.map +1 -0
  604. package/dist/scanners/index.test.d.ts +5 -0
  605. package/dist/scanners/index.test.d.ts.map +1 -0
  606. package/dist/scanners/index.test.js +424 -0
  607. package/dist/scanners/index.test.js.map +1 -0
  608. package/dist/scanners/memory-safety.d.ts +44 -0
  609. package/dist/scanners/memory-safety.d.ts.map +1 -0
  610. package/dist/scanners/memory-safety.js +571 -0
  611. package/dist/scanners/memory-safety.js.map +1 -0
  612. package/dist/scanners/memory-safety.test.d.ts +5 -0
  613. package/dist/scanners/memory-safety.test.d.ts.map +1 -0
  614. package/dist/scanners/memory-safety.test.js +321 -0
  615. package/dist/scanners/memory-safety.test.js.map +1 -0
  616. package/dist/scanners/race-condition.d.ts +25 -0
  617. package/dist/scanners/race-condition.d.ts.map +1 -0
  618. package/dist/scanners/race-condition.js +443 -0
  619. package/dist/scanners/race-condition.js.map +1 -0
  620. package/dist/scanners/race-condition.test.d.ts +5 -0
  621. package/dist/scanners/race-condition.test.d.ts.map +1 -0
  622. package/dist/scanners/race-condition.test.js +428 -0
  623. package/dist/scanners/race-condition.test.js.map +1 -0
  624. package/dist/scanners/secrets.d.ts +25 -0
  625. package/dist/scanners/secrets.d.ts.map +1 -0
  626. package/dist/scanners/secrets.js +367 -0
  627. package/dist/scanners/secrets.js.map +1 -0
  628. package/dist/scanners/secrets.test.d.ts +5 -0
  629. package/dist/scanners/secrets.test.d.ts.map +1 -0
  630. package/dist/scanners/secrets.test.js +160 -0
  631. package/dist/scanners/secrets.test.js.map +1 -0
  632. package/dist/scanners/semgrep.d.ts +33 -0
  633. package/dist/scanners/semgrep.d.ts.map +1 -0
  634. package/dist/scanners/semgrep.js +350 -0
  635. package/dist/scanners/semgrep.js.map +1 -0
  636. package/dist/scanners/semgrep.test.d.ts +8 -0
  637. package/dist/scanners/semgrep.test.d.ts.map +1 -0
  638. package/dist/scanners/semgrep.test.js +254 -0
  639. package/dist/scanners/semgrep.test.js.map +1 -0
  640. package/dist/scanners/trivy.d.ts +26 -0
  641. package/dist/scanners/trivy.d.ts.map +1 -0
  642. package/dist/scanners/trivy.js +187 -0
  643. package/dist/scanners/trivy.js.map +1 -0
  644. package/dist/scanners/types.d.ts +210 -0
  645. package/dist/scanners/types.d.ts.map +1 -0
  646. package/dist/scanners/types.js +106 -0
  647. package/dist/scanners/types.js.map +1 -0
  648. package/dist/scanners/types.test.d.ts +5 -0
  649. package/dist/scanners/types.test.d.ts.map +1 -0
  650. package/dist/scanners/types.test.js +103 -0
  651. package/dist/scanners/types.test.js.map +1 -0
  652. package/dist/scanners/typescript.d.ts +32 -0
  653. package/dist/scanners/typescript.d.ts.map +1 -0
  654. package/dist/scanners/typescript.js +300 -0
  655. package/dist/scanners/typescript.js.map +1 -0
  656. package/dist/scanners/typescript.test.d.ts +5 -0
  657. package/dist/scanners/typescript.test.d.ts.map +1 -0
  658. package/dist/scanners/typescript.test.js +296 -0
  659. package/dist/scanners/typescript.test.js.map +1 -0
  660. package/dist/transcripts/index.d.ts +13 -0
  661. package/dist/transcripts/index.d.ts.map +1 -0
  662. package/dist/transcripts/index.js +17 -0
  663. package/dist/transcripts/index.js.map +1 -0
  664. package/dist/transcripts/logger.d.ts +190 -0
  665. package/dist/transcripts/logger.d.ts.map +1 -0
  666. package/dist/transcripts/logger.js +385 -0
  667. package/dist/transcripts/logger.js.map +1 -0
  668. package/dist/transcripts/logger.test.d.ts +5 -0
  669. package/dist/transcripts/logger.test.d.ts.map +1 -0
  670. package/dist/transcripts/logger.test.js +227 -0
  671. package/dist/transcripts/logger.test.js.map +1 -0
  672. package/dist/transcripts/redaction.d.ts +125 -0
  673. package/dist/transcripts/redaction.d.ts.map +1 -0
  674. package/dist/transcripts/redaction.js +416 -0
  675. package/dist/transcripts/redaction.js.map +1 -0
  676. package/dist/transcripts/redaction.test.d.ts +5 -0
  677. package/dist/transcripts/redaction.test.d.ts.map +1 -0
  678. package/dist/transcripts/redaction.test.js +267 -0
  679. package/dist/transcripts/redaction.test.js.map +1 -0
  680. package/dist/transcripts/signing.d.ts +108 -0
  681. package/dist/transcripts/signing.d.ts.map +1 -0
  682. package/dist/transcripts/signing.js +173 -0
  683. package/dist/transcripts/signing.js.map +1 -0
  684. package/dist/transcripts/verifier.d.ts +133 -0
  685. package/dist/transcripts/verifier.d.ts.map +1 -0
  686. package/dist/transcripts/verifier.js +489 -0
  687. package/dist/transcripts/verifier.js.map +1 -0
  688. package/dist/transcripts/verifier.test.d.ts +5 -0
  689. package/dist/transcripts/verifier.test.d.ts.map +1 -0
  690. package/dist/transcripts/verifier.test.js +330 -0
  691. package/dist/transcripts/verifier.test.js.map +1 -0
  692. package/dist/util/concurrency.d.ts +221 -0
  693. package/dist/util/concurrency.d.ts.map +1 -0
  694. package/dist/util/concurrency.js +339 -0
  695. package/dist/util/concurrency.js.map +1 -0
  696. package/dist/util/index.d.ts +12 -0
  697. package/dist/util/index.d.ts.map +1 -0
  698. package/dist/util/index.js +12 -0
  699. package/dist/util/index.js.map +1 -0
  700. package/dist/util/json.d.ts +63 -0
  701. package/dist/util/json.d.ts.map +1 -0
  702. package/dist/util/json.js +134 -0
  703. package/dist/util/json.js.map +1 -0
  704. package/dist/util/paths.d.ts +56 -0
  705. package/dist/util/paths.d.ts.map +1 -0
  706. package/dist/util/paths.js +128 -0
  707. package/dist/util/paths.js.map +1 -0
  708. package/dist/util/retry.d.ts +185 -0
  709. package/dist/util/retry.d.ts.map +1 -0
  710. package/dist/util/retry.js +338 -0
  711. package/dist/util/retry.js.map +1 -0
  712. package/package.json +79 -0
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Multi-Model Consensus Types
3
+ *
4
+ * Types for running certification agents across multiple LLM providers
5
+ * and calculating inter-model consensus.
6
+ *
7
+ * @module multimodel/types
8
+ */
9
+ import type { AgentType, Finding, Severity } from "../certification/types.js";
10
+ import type { ModelId, ModelProvider } from "../cost/types.js";
11
+ /**
12
+ * Configuration for a model in multi-model runs
13
+ */
14
+ export interface ModelConfig {
15
+ /** Model identifier */
16
+ id: ModelId;
17
+ /** Provider (anthropic, openai, google) */
18
+ provider: ModelProvider;
19
+ /** Optional custom endpoint */
20
+ endpoint?: string;
21
+ /** Optional API key (defaults to env var) */
22
+ apiKey?: string;
23
+ /** Weight for consensus voting (default: 1.0) */
24
+ weight?: number;
25
+ /** Whether this model is enabled */
26
+ enabled?: boolean;
27
+ }
28
+ /**
29
+ * Result from a single model run
30
+ */
31
+ export interface ModelRunResult {
32
+ /** Model used */
33
+ model: ModelId;
34
+ /** Provider */
35
+ provider: ModelProvider;
36
+ /** Agent type */
37
+ agent: AgentType;
38
+ /** Findings from this model */
39
+ findings: Finding[];
40
+ /** Execution time in ms */
41
+ duration: number;
42
+ /** Token usage */
43
+ tokens: {
44
+ input: number;
45
+ output: number;
46
+ total: number;
47
+ };
48
+ /** Cost in USD */
49
+ cost: number;
50
+ /** Whether run was successful */
51
+ success: boolean;
52
+ /** Error message if failed */
53
+ error?: string;
54
+ /** Timestamp */
55
+ timestamp: string;
56
+ }
57
+ /**
58
+ * Finding match between models
59
+ */
60
+ export interface FindingMatch {
61
+ /** Finding ID from reference model */
62
+ referenceId: string;
63
+ /** Matched finding IDs from other models (partial since not all models may be in the run) */
64
+ matchedIds: Partial<Record<ModelId, string | null>>;
65
+ /** Match confidence (0-100) */
66
+ confidence: number;
67
+ /** Match type */
68
+ matchType: "exact" | "similar" | "partial" | "none";
69
+ /** The finding data */
70
+ finding: Finding;
71
+ /** Models that found this issue */
72
+ foundBy: ModelId[];
73
+ /** Models that missed this issue */
74
+ missedBy: ModelId[];
75
+ }
76
+ /**
77
+ * Disagreement between models
78
+ */
79
+ export interface ModelDisagreement {
80
+ /** Type of disagreement */
81
+ type: "severity" | "existence" | "location" | "description";
82
+ /** Finding ID */
83
+ findingId: string;
84
+ /** Models involved */
85
+ models: ModelId[];
86
+ /** Details of disagreement */
87
+ details: {
88
+ /** What each model reported (partial since not all models may report) */
89
+ values: Partial<Record<ModelId, string | number | null>>;
90
+ /** Recommended resolution */
91
+ resolution?: string;
92
+ };
93
+ /** Severity of the disagreement */
94
+ severity: "high" | "medium" | "low";
95
+ }
96
+ /**
97
+ * Inter-model consensus result
98
+ */
99
+ export interface MultiModelConsensus {
100
+ /** Certification ID */
101
+ certificationId: string;
102
+ /** Agent type */
103
+ agent: AgentType;
104
+ /** Models used */
105
+ models: ModelId[];
106
+ /** Individual model results */
107
+ results: ModelRunResult[];
108
+ /** Matched findings across models */
109
+ matches: FindingMatch[];
110
+ /** Disagreements between models */
111
+ disagreements: ModelDisagreement[];
112
+ /** Consensus metrics */
113
+ metrics: {
114
+ /** Agreement rate (0-100) */
115
+ agreementRate: number;
116
+ /** Number of unanimous findings */
117
+ unanimousFindings: number;
118
+ /** Number of majority findings */
119
+ majorityFindings: number;
120
+ /** Number of disputed findings */
121
+ disputedFindings: number;
122
+ /** Number of unique findings (only one model found) */
123
+ uniqueFindings: number;
124
+ /** Fleiss' kappa for inter-rater reliability */
125
+ fleissKappa: number;
126
+ /** By severity breakdown */
127
+ bySeverity: Record<Severity, {
128
+ unanimous: number;
129
+ majority: number;
130
+ disputed: number;
131
+ }>;
132
+ };
133
+ /** Final merged findings (after consensus) */
134
+ mergedFindings: Finding[];
135
+ /** Timestamp */
136
+ calculatedAt: string;
137
+ }
138
+ /**
139
+ * Multi-model run options
140
+ */
141
+ export interface MultiModelRunOptions {
142
+ /** Models to use (defaults to all enabled) */
143
+ models?: ModelId[];
144
+ /** Agents to run */
145
+ agents?: AgentType[];
146
+ /** Whether to run models in parallel */
147
+ parallel?: boolean;
148
+ /** Timeout per model in ms */
149
+ timeout?: number;
150
+ /** Stop on first model failure */
151
+ failFast?: boolean;
152
+ /** Minimum models required for consensus */
153
+ minModels?: number;
154
+ /** Threshold for considering findings as matching (0-100) */
155
+ matchThreshold?: number;
156
+ /** Whether to include cost tracking */
157
+ trackCosts?: boolean;
158
+ }
159
+ /**
160
+ * Configuration for multi-model certification
161
+ */
162
+ export interface MultiModelConfig {
163
+ /** Available models */
164
+ models: ModelConfig[];
165
+ /** Default run options */
166
+ defaults?: MultiModelRunOptions;
167
+ /** Consensus thresholds */
168
+ thresholds?: {
169
+ /** Minimum agreement for unanimous (default: 100) */
170
+ unanimous: number;
171
+ /** Minimum agreement for majority (default: 50) */
172
+ majority: number;
173
+ /** Fleiss' kappa threshold for good agreement (default: 0.6) */
174
+ goodAgreement: number;
175
+ };
176
+ }
177
+ /**
178
+ * Summary of multi-model certification
179
+ */
180
+ export interface MultiModelSummary {
181
+ /** Total models used */
182
+ totalModels: number;
183
+ /** Successful models */
184
+ successfulModels: number;
185
+ /** Total findings across all models */
186
+ totalFindings: number;
187
+ /** Unique findings after dedup */
188
+ uniqueFindings: number;
189
+ /** Agreement rate */
190
+ agreementRate: number;
191
+ /** Inter-rater reliability (Fleiss' kappa) */
192
+ reliability: number;
193
+ /** Total cost */
194
+ totalCost: number;
195
+ /** Total tokens */
196
+ totalTokens: number;
197
+ /** High-confidence findings (found by majority) */
198
+ highConfidenceFindings: number;
199
+ /** Disputed findings */
200
+ disputedFindings: number;
201
+ }
202
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/multimodel/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Multi-Model Consensus Types
3
+ *
4
+ * Types for running certification agents across multiple LLM providers
5
+ * and calculating inter-model consensus.
6
+ *
7
+ * @module multimodel/types
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/multimodel/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Observability Module
3
+ *
4
+ * Provides OpenTelemetry metrics, tracing, and logging capabilities.
5
+ *
6
+ * @module observability
7
+ */
8
+ export { initializeOtel, isOtelEnabled, getOtlpEndpoint, getMetrics, getTracer, getInMemoryStats, resetInMemoryStats, type VasperaMetrics, type Span, type SpanContext, type Tracer, } from "./otel.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,MAAM,GACZ,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Observability Module
3
+ *
4
+ * Provides OpenTelemetry metrics, tracing, and logging capabilities.
5
+ *
6
+ * @module observability
7
+ */
8
+ export { initializeOtel, isOtelEnabled, getOtlpEndpoint, getMetrics, getTracer, getInMemoryStats, resetInMemoryStats, } from "./otel.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,GAKnB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * OpenTelemetry Observability
3
+ *
4
+ * Provides metrics, tracing, and logging for Vaspera operations.
5
+ * Disabled by default, enabled via VASPERA_OTEL_ENABLED=true.
6
+ *
7
+ * @module observability/otel
8
+ */
9
+ /**
10
+ * Metric types for Vaspera operations
11
+ */
12
+ export interface VasperaMetrics {
13
+ /** Total findings by severity */
14
+ findingsTotal: (severity: string, scanner: string) => void;
15
+ /** Scan duration in milliseconds */
16
+ scanDuration: (scanner: string, durationMs: number) => void;
17
+ /** Certification duration in milliseconds */
18
+ certificationDuration: (durationMs: number) => void;
19
+ /** Agent run count */
20
+ agentRuns: (agentType: string, status: "success" | "failure") => void;
21
+ /** Circuit breaker state changes */
22
+ circuitBreakerState: (name: string, state: string) => void;
23
+ /** Retry attempts */
24
+ retryAttempts: (operation: string, attempt: number) => void;
25
+ }
26
+ /**
27
+ * Span context for tracing
28
+ */
29
+ export interface SpanContext {
30
+ traceId: string;
31
+ spanId: string;
32
+ parentSpanId?: string;
33
+ }
34
+ /**
35
+ * Span interface for tracing operations
36
+ */
37
+ export interface Span {
38
+ /** Set an attribute on the span */
39
+ setAttribute(key: string, value: string | number | boolean): void;
40
+ /** Record an error */
41
+ recordException(error: Error): void;
42
+ /** End the span */
43
+ end(): void;
44
+ /** Get span context */
45
+ getContext(): SpanContext;
46
+ }
47
+ /**
48
+ * Tracer interface for creating spans
49
+ */
50
+ export interface Tracer {
51
+ /** Start a new span */
52
+ startSpan(name: string, attributes?: Record<string, string | number | boolean>): Span;
53
+ /** Run a function within a span */
54
+ withSpan<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T>;
55
+ }
56
+ /**
57
+ * Check if OpenTelemetry is enabled
58
+ */
59
+ export declare function isOtelEnabled(): boolean;
60
+ /**
61
+ * Get the OTLP endpoint
62
+ */
63
+ export declare function getOtlpEndpoint(): string;
64
+ /**
65
+ * Initialize OpenTelemetry (lazy initialization)
66
+ *
67
+ * When VASPERA_OTEL_ENABLED=true, this will:
68
+ * 1. Initialize the OTEL SDK
69
+ * 2. Set up OTLP exporter
70
+ * 3. Register metrics and tracing providers
71
+ *
72
+ * When disabled (default), returns no-op implementations.
73
+ */
74
+ export declare function initializeOtel(): Promise<void>;
75
+ /**
76
+ * Get the metrics instance
77
+ */
78
+ export declare function getMetrics(): VasperaMetrics;
79
+ /**
80
+ * Get the tracer instance
81
+ */
82
+ export declare function getTracer(): Tracer;
83
+ /**
84
+ * Get in-memory metrics stats (when OTEL is disabled)
85
+ */
86
+ export declare function getInMemoryStats(): {
87
+ findings: Record<string, number>;
88
+ recentScans: Array<{
89
+ scanner: string;
90
+ durationMs: number;
91
+ timestamp: Date;
92
+ }>;
93
+ agentRuns: Record<string, {
94
+ success: number;
95
+ failure: number;
96
+ }>;
97
+ };
98
+ /**
99
+ * Reset in-memory metrics (for testing)
100
+ */
101
+ export declare function resetInMemoryStats(): void;
102
+ //# sourceMappingURL=otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../src/observability/otel.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,oCAAoC;IACpC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,6CAA6C;IAC7C,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,sBAAsB;IACtB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACtE,oCAAoC;IACpC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,qBAAqB;IACrB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,mCAAmC;IACnC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAClE,sBAAsB;IACtB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpC,mBAAmB;IACnB,GAAG,IAAI,IAAI,CAAC;IACZ,uBAAuB;IACvB,UAAU,IAAI,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,uBAAuB;IACvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;IACtF,mCAAmC;IACnC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvE;AAaD;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAkGD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAgJpD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAK3C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAC7E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,CAMA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
@@ -0,0 +1,284 @@
1
+ /**
2
+ * OpenTelemetry Observability
3
+ *
4
+ * Provides metrics, tracing, and logging for Vaspera operations.
5
+ * Disabled by default, enabled via VASPERA_OTEL_ENABLED=true.
6
+ *
7
+ * @module observability/otel
8
+ */
9
+ // In-memory metrics storage (for when OTEL is disabled)
10
+ const inMemoryMetrics = {
11
+ findings: new Map(),
12
+ scanDurations: [],
13
+ agentRuns: new Map(),
14
+ };
15
+ /**
16
+ * Check if OpenTelemetry is enabled
17
+ */
18
+ export function isOtelEnabled() {
19
+ return process.env.VASPERA_OTEL_ENABLED === "true";
20
+ }
21
+ /**
22
+ * Get the OTLP endpoint
23
+ */
24
+ export function getOtlpEndpoint() {
25
+ return process.env.VASPERA_OTEL_ENDPOINT || "http://localhost:4318";
26
+ }
27
+ /**
28
+ * No-op span implementation when OTEL is disabled
29
+ */
30
+ class NoOpSpan {
31
+ context;
32
+ constructor(name) {
33
+ this.context = {
34
+ traceId: generateId(32),
35
+ spanId: generateId(16),
36
+ };
37
+ }
38
+ setAttribute(_key, _value) {
39
+ // No-op
40
+ }
41
+ recordException(_error) {
42
+ // No-op
43
+ }
44
+ end() {
45
+ // No-op
46
+ }
47
+ getContext() {
48
+ return this.context;
49
+ }
50
+ }
51
+ /**
52
+ * No-op tracer implementation when OTEL is disabled
53
+ */
54
+ class NoOpTracer {
55
+ startSpan(name, _attributes) {
56
+ return new NoOpSpan(name);
57
+ }
58
+ async withSpan(name, fn) {
59
+ const span = this.startSpan(name);
60
+ try {
61
+ return await fn(span);
62
+ }
63
+ finally {
64
+ span.end();
65
+ }
66
+ }
67
+ }
68
+ /**
69
+ * Generate a random hex ID
70
+ */
71
+ function generateId(length) {
72
+ const bytes = new Uint8Array(length / 2);
73
+ crypto.getRandomValues(bytes);
74
+ return Array.from(bytes)
75
+ .map((b) => b.toString(16).padStart(2, "0"))
76
+ .join("");
77
+ }
78
+ /**
79
+ * Create a no-op metrics implementation
80
+ */
81
+ function createNoOpMetrics() {
82
+ return {
83
+ findingsTotal: (severity, scanner) => {
84
+ const key = `${scanner}:${severity}`;
85
+ inMemoryMetrics.findings.set(key, (inMemoryMetrics.findings.get(key) || 0) + 1);
86
+ },
87
+ scanDuration: (scanner, durationMs) => {
88
+ inMemoryMetrics.scanDurations.push({ scanner, durationMs, timestamp: new Date() });
89
+ // Keep only last 1000 entries
90
+ if (inMemoryMetrics.scanDurations.length > 1000) {
91
+ inMemoryMetrics.scanDurations.shift();
92
+ }
93
+ },
94
+ certificationDuration: (_durationMs) => {
95
+ // No-op for now
96
+ },
97
+ agentRuns: (agentType, status) => {
98
+ const current = inMemoryMetrics.agentRuns.get(agentType) || { success: 0, failure: 0 };
99
+ current[status]++;
100
+ inMemoryMetrics.agentRuns.set(agentType, current);
101
+ },
102
+ circuitBreakerState: (_name, _state) => {
103
+ // No-op
104
+ },
105
+ retryAttempts: (_operation, _attempt) => {
106
+ // No-op
107
+ },
108
+ };
109
+ }
110
+ // Singleton instances
111
+ let metricsInstance = null;
112
+ let tracerInstance = null;
113
+ /**
114
+ * Initialize OpenTelemetry (lazy initialization)
115
+ *
116
+ * When VASPERA_OTEL_ENABLED=true, this will:
117
+ * 1. Initialize the OTEL SDK
118
+ * 2. Set up OTLP exporter
119
+ * 3. Register metrics and tracing providers
120
+ *
121
+ * When disabled (default), returns no-op implementations.
122
+ */
123
+ export async function initializeOtel() {
124
+ if (!isOtelEnabled()) {
125
+ return;
126
+ }
127
+ // Dynamic import to avoid loading OTEL dependencies when disabled
128
+ // Note: OpenTelemetry packages are optional. Install them for full observability:
129
+ // npm install @opentelemetry/sdk-node @opentelemetry/api @opentelemetry/exporter-metrics-otlp-http @opentelemetry/exporter-trace-otlp-http @opentelemetry/sdk-metrics
130
+ try {
131
+ // Use Function constructor to hide imports from TypeScript's static analysis
132
+ // This allows the code to compile even when @opentelemetry packages aren't installed
133
+ const dynamicImport = new Function("specifier", "return import(specifier)");
134
+ const otelApi = await dynamicImport("@opentelemetry/api");
135
+ const { NodeSDK } = await dynamicImport("@opentelemetry/sdk-node");
136
+ const { OTLPMetricExporter } = await dynamicImport("@opentelemetry/exporter-metrics-otlp-http");
137
+ const { OTLPTraceExporter } = await dynamicImport("@opentelemetry/exporter-trace-otlp-http");
138
+ const { PeriodicExportingMetricReader } = await dynamicImport("@opentelemetry/sdk-metrics");
139
+ const endpoint = getOtlpEndpoint();
140
+ const sdk = new NodeSDK({
141
+ serviceName: "vaspera-hardening",
142
+ metricReader: new PeriodicExportingMetricReader({
143
+ exporter: new OTLPMetricExporter({ url: `${endpoint}/v1/metrics` }),
144
+ exportIntervalMillis: 10000,
145
+ }),
146
+ traceExporter: new OTLPTraceExporter({ url: `${endpoint}/v1/traces` }),
147
+ });
148
+ sdk.start();
149
+ // Create real metrics
150
+ const meter = otelApi.metrics.getMeter("vaspera-hardening");
151
+ const findingsCounter = meter.createCounter("vaspera_findings_total", {
152
+ description: "Total number of findings by severity and scanner",
153
+ });
154
+ const scanDurationHistogram = meter.createHistogram("vaspera_scan_duration_ms", {
155
+ description: "Scanner execution duration in milliseconds",
156
+ });
157
+ const certDurationHistogram = meter.createHistogram("vaspera_certification_duration_ms", {
158
+ description: "Certification total duration in milliseconds",
159
+ });
160
+ const agentRunsCounter = meter.createCounter("vaspera_agent_runs_total", {
161
+ description: "Total number of agent runs by type and status",
162
+ });
163
+ meter.createObservableGauge("vaspera_circuit_breaker_state", {
164
+ description: "Circuit breaker state (0=closed, 1=half-open, 2=open)",
165
+ });
166
+ const retryCounter = meter.createCounter("vaspera_retry_attempts_total", {
167
+ description: "Total number of retry attempts",
168
+ });
169
+ metricsInstance = {
170
+ findingsTotal: (severity, scanner) => {
171
+ findingsCounter.add(1, { severity, scanner });
172
+ },
173
+ scanDuration: (scanner, durationMs) => {
174
+ scanDurationHistogram.record(durationMs, { scanner });
175
+ },
176
+ certificationDuration: (durationMs) => {
177
+ certDurationHistogram.record(durationMs);
178
+ },
179
+ agentRuns: (agentType, status) => {
180
+ agentRunsCounter.add(1, { agent_type: agentType, status });
181
+ },
182
+ circuitBreakerState: (_name, _state) => {
183
+ // Observable gauge callback handles this
184
+ },
185
+ retryAttempts: (operation, attempt) => {
186
+ retryCounter.add(1, { operation, attempt: attempt.toString() });
187
+ },
188
+ };
189
+ // Create real tracer
190
+ const tracer = otelApi.trace.getTracer("vaspera-hardening");
191
+ tracerInstance = {
192
+ startSpan: (name, attributes) => {
193
+ const span = tracer.startSpan(name);
194
+ if (attributes) {
195
+ Object.entries(attributes).forEach(([key, value]) => {
196
+ span.setAttribute(key, value);
197
+ });
198
+ }
199
+ return {
200
+ setAttribute: (key, value) => span.setAttribute(key, value),
201
+ recordException: (error) => span.recordException(error),
202
+ end: () => span.end(),
203
+ getContext: () => {
204
+ const ctx = span.spanContext();
205
+ return {
206
+ traceId: ctx.traceId,
207
+ spanId: ctx.spanId,
208
+ };
209
+ },
210
+ };
211
+ },
212
+ withSpan: async (name, fn) => {
213
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
214
+ return tracer.startActiveSpan(name, async (otelSpan) => {
215
+ const span = {
216
+ setAttribute: (key, value) => otelSpan.setAttribute(key, value),
217
+ recordException: (error) => otelSpan.recordException(error),
218
+ end: () => otelSpan.end(),
219
+ getContext: () => ({
220
+ traceId: otelSpan.spanContext().traceId,
221
+ spanId: otelSpan.spanContext().spanId,
222
+ }),
223
+ };
224
+ try {
225
+ return await fn(span);
226
+ }
227
+ finally {
228
+ otelSpan.end();
229
+ }
230
+ });
231
+ },
232
+ };
233
+ if (process.env.VASPERA_OTEL_DEBUG === "true") {
234
+ console.log(`[otel] Initialized with endpoint: ${endpoint}`);
235
+ }
236
+ }
237
+ catch (error) {
238
+ // OpenTelemetry packages not installed or initialization failed
239
+ // This is expected - OTEL is optional
240
+ if (process.env.VASPERA_OTEL_DEBUG === "true") {
241
+ console.warn("[otel] OpenTelemetry not available. Install @opentelemetry/* packages for observability.", error.message);
242
+ }
243
+ // Fall back to no-op
244
+ metricsInstance = null;
245
+ tracerInstance = null;
246
+ }
247
+ }
248
+ /**
249
+ * Get the metrics instance
250
+ */
251
+ export function getMetrics() {
252
+ if (!metricsInstance) {
253
+ metricsInstance = createNoOpMetrics();
254
+ }
255
+ return metricsInstance;
256
+ }
257
+ /**
258
+ * Get the tracer instance
259
+ */
260
+ export function getTracer() {
261
+ if (!tracerInstance) {
262
+ tracerInstance = new NoOpTracer();
263
+ }
264
+ return tracerInstance;
265
+ }
266
+ /**
267
+ * Get in-memory metrics stats (when OTEL is disabled)
268
+ */
269
+ export function getInMemoryStats() {
270
+ return {
271
+ findings: Object.fromEntries(inMemoryMetrics.findings),
272
+ recentScans: inMemoryMetrics.scanDurations.slice(-100),
273
+ agentRuns: Object.fromEntries(inMemoryMetrics.agentRuns),
274
+ };
275
+ }
276
+ /**
277
+ * Reset in-memory metrics (for testing)
278
+ */
279
+ export function resetInMemoryStats() {
280
+ inMemoryMetrics.findings.clear();
281
+ inMemoryMetrics.scanDurations.length = 0;
282
+ inMemoryMetrics.agentRuns.clear();
283
+ }
284
+ //# sourceMappingURL=otel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/observability/otel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Scanner Plugin System
3
+ *
4
+ * Provides extensibility through external scanner plugins.
5
+ *
6
+ * @module plugins
7
+ */
8
+ export { PluginManifestSchema, isValidManifest, validateManifest, type PluginManifest, type LoadedPlugin, type PluginLoadOptions, type PluginExecutionResult, type ScannerPluginContext, type ScannerPluginFn, type PluginRegistryEntry, type PluginSeverityMapping, type PluginFinding, } from "./types.js";
9
+ export { loadPlugins, executePlugins, executePluginDirect, executePluginSandboxed, PluginRegistry, } from "./loader.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,GACf,MAAM,aAAa,CAAC"}