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,591 @@
1
+ /**
2
+ * Zero-Day Hunter Agent
3
+ *
4
+ * AI agent that reasons about code semantics to find novel vulnerabilities.
5
+ * Uses Claude to analyze code for patterns that pattern-based scanners miss.
6
+ *
7
+ * Focus areas:
8
+ * - Logic Flaws: Inconsistent state handling, broken assumptions
9
+ * - Authentication Bypasses: Ways to skip auth checks
10
+ * - Authorization Issues: Privilege escalation paths
11
+ * - Cryptographic Weaknesses: Weak algorithms, key management
12
+ * - Injection Vectors: Novel injection patterns beyond OWASP
13
+ *
14
+ * @module agents/zero-day-hunter
15
+ */
16
+ import { readFile } from "fs/promises";
17
+ import * as path from "path";
18
+ import { glob } from "glob";
19
+ // ============================================================================
20
+ // Code Context Building
21
+ // ============================================================================
22
+ /**
23
+ * Detect language from file extension
24
+ */
25
+ function detectLanguage(file) {
26
+ const ext = path.extname(file).toLowerCase();
27
+ const langMap = {
28
+ ".ts": "typescript",
29
+ ".tsx": "typescript",
30
+ ".js": "javascript",
31
+ ".jsx": "javascript",
32
+ ".py": "python",
33
+ ".go": "go",
34
+ ".rs": "rust",
35
+ ".java": "java",
36
+ ".rb": "ruby",
37
+ ".php": "php",
38
+ ".cs": "csharp",
39
+ ".c": "c",
40
+ ".cpp": "cpp",
41
+ ".h": "c",
42
+ ".hpp": "cpp",
43
+ };
44
+ return langMap[ext] || "unknown";
45
+ }
46
+ /**
47
+ * Extract function signatures from code
48
+ */
49
+ function extractFunctionSignatures(content, language) {
50
+ const signatures = [];
51
+ const patterns = {
52
+ typescript: [
53
+ /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\([^)]*\)/g,
54
+ /(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s+)?\([^)]*\)\s*=>/g,
55
+ /(?:public|private|protected)?\s*(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\w+)?\s*\{/g,
56
+ ],
57
+ javascript: [
58
+ /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\([^)]*\)/g,
59
+ /(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s+)?\([^)]*\)\s*=>/g,
60
+ ],
61
+ python: [
62
+ /def\s+(\w+)\s*\([^)]*\)\s*(?:->.*)?:/g,
63
+ /async\s+def\s+(\w+)\s*\([^)]*\)\s*(?:->.*)?:/g,
64
+ ],
65
+ go: [
66
+ /func\s+(?:\([^)]+\)\s+)?(\w+)\s*\([^)]*\)/g,
67
+ ],
68
+ java: [
69
+ /(?:public|private|protected)\s+(?:static\s+)?(?:\w+\s+)?(\w+)\s*\([^)]*\)/g,
70
+ ],
71
+ };
72
+ const langPatterns = patterns[language] || patterns.javascript;
73
+ for (const pattern of langPatterns) {
74
+ let match;
75
+ while ((match = pattern.exec(content)) !== null) {
76
+ signatures.push(match[0]);
77
+ }
78
+ }
79
+ return signatures.slice(0, 50); // Limit to 50 signatures
80
+ }
81
+ /**
82
+ * Extract imports from code
83
+ */
84
+ function extractImports(content, language) {
85
+ const imports = [];
86
+ const patterns = {
87
+ typescript: /import\s+(?:(?:\{[^}]+\}|[\w*]+)\s+from\s+)?['"]([^'"]+)['"]/g,
88
+ javascript: /(?:import|require)\s*\(?['"]([^'"]+)['"]\)?/g,
89
+ python: /(?:from\s+(\S+)\s+import|import\s+(\S+))/g,
90
+ go: /import\s+(?:\([^)]+\)|"[^"]+")/g,
91
+ java: /import\s+([\w.]+);/g,
92
+ };
93
+ const pattern = patterns[language] || patterns.javascript;
94
+ let match;
95
+ while ((match = pattern.exec(content)) !== null) {
96
+ imports.push(match[1] || match[0]);
97
+ }
98
+ return imports;
99
+ }
100
+ /**
101
+ * Determine focus areas based on code content
102
+ */
103
+ function determineFocusAreas(content, imports) {
104
+ const areas = [];
105
+ const contentLower = content.toLowerCase();
106
+ const importsStr = imports.join(" ").toLowerCase();
107
+ // Authentication
108
+ if (contentLower.includes("password") ||
109
+ contentLower.includes("login") ||
110
+ contentLower.includes("authenticate") ||
111
+ contentLower.includes("jwt") ||
112
+ contentLower.includes("session") ||
113
+ importsStr.includes("passport") ||
114
+ importsStr.includes("auth")) {
115
+ areas.push("auth");
116
+ }
117
+ // Cryptography
118
+ if (contentLower.includes("encrypt") ||
119
+ contentLower.includes("decrypt") ||
120
+ contentLower.includes("hash") ||
121
+ contentLower.includes("crypto") ||
122
+ contentLower.includes("hmac") ||
123
+ importsStr.includes("crypto")) {
124
+ areas.push("crypto");
125
+ }
126
+ // Injection
127
+ if (contentLower.includes("exec") ||
128
+ contentLower.includes("eval") ||
129
+ contentLower.includes("query") ||
130
+ contentLower.includes("sql") ||
131
+ contentLower.includes("command") ||
132
+ contentLower.includes("shell")) {
133
+ areas.push("injection");
134
+ }
135
+ // Access Control
136
+ if (contentLower.includes("role") ||
137
+ contentLower.includes("permission") ||
138
+ contentLower.includes("authorize") ||
139
+ contentLower.includes("isadmin") ||
140
+ contentLower.includes("acl")) {
141
+ areas.push("access-control");
142
+ }
143
+ // Data Validation
144
+ if (contentLower.includes("validate") ||
145
+ contentLower.includes("sanitize") ||
146
+ contentLower.includes("request.body") ||
147
+ contentLower.includes("req.params") ||
148
+ contentLower.includes("user input")) {
149
+ areas.push("data-validation");
150
+ }
151
+ // Session Management
152
+ if (contentLower.includes("session") ||
153
+ contentLower.includes("cookie") ||
154
+ contentLower.includes("token")) {
155
+ areas.push("session");
156
+ }
157
+ // API
158
+ if (contentLower.includes("api") ||
159
+ contentLower.includes("endpoint") ||
160
+ contentLower.includes("route") ||
161
+ contentLower.includes("controller")) {
162
+ areas.push("api");
163
+ }
164
+ // State management
165
+ if (contentLower.includes("state") ||
166
+ contentLower.includes("store") ||
167
+ contentLower.includes("global") ||
168
+ contentLower.includes("singleton")) {
169
+ areas.push("state");
170
+ }
171
+ // Logic (catch-all for complex code)
172
+ if (areas.length === 0 || contentLower.includes("if") && contentLower.includes("else")) {
173
+ areas.push("logic");
174
+ }
175
+ return [...new Set(areas)];
176
+ }
177
+ /**
178
+ * Check if file is security-relevant
179
+ */
180
+ function isSecurityRelevant(content, imports) {
181
+ const securityKeywords = [
182
+ "password", "secret", "key", "token", "auth", "login", "session",
183
+ "encrypt", "decrypt", "hash", "sign", "verify", "validate",
184
+ "admin", "role", "permission", "access", "grant", "deny",
185
+ "sql", "query", "exec", "eval", "command", "shell",
186
+ "certificate", "ssl", "tls", "https", "cors",
187
+ "sanitize", "escape", "encode", "decode",
188
+ "credit", "ssn", "pii", "gdpr", "hipaa",
189
+ ];
190
+ const contentLower = content.toLowerCase();
191
+ const importsLower = imports.join(" ").toLowerCase();
192
+ return securityKeywords.some(kw => contentLower.includes(kw) || importsLower.includes(kw));
193
+ }
194
+ /**
195
+ * Build code context for analysis
196
+ */
197
+ async function buildCodeContext(projectPath, config) {
198
+ const contexts = [];
199
+ const absolutePath = path.resolve(projectPath);
200
+ const defaultInclude = [
201
+ "**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx",
202
+ "**/*.py", "**/*.go", "**/*.java", "**/*.rb",
203
+ ];
204
+ const defaultExclude = [
205
+ "**/node_modules/**", "**/vendor/**", "**/dist/**",
206
+ "**/build/**", "**/*.test.*", "**/*.spec.*",
207
+ "**/test/**", "**/tests/**", "**/__tests__/**",
208
+ ];
209
+ const includePatterns = config.includePatterns || defaultInclude;
210
+ const excludePatterns = config.excludePatterns || defaultExclude;
211
+ const files = await glob(includePatterns, {
212
+ cwd: absolutePath,
213
+ ignore: excludePatterns,
214
+ nodir: true,
215
+ });
216
+ // Limit files based on analysis depth
217
+ const maxFiles = config.maxFilesToAnalyze ||
218
+ (config.analysisDepth === "quick" ? 20 :
219
+ config.analysisDepth === "standard" ? 50 : 100);
220
+ // Prioritize security-relevant files
221
+ const prioritizedFiles = [];
222
+ for (const file of files) {
223
+ const fullPath = path.join(absolutePath, file);
224
+ try {
225
+ const content = await readFile(fullPath, "utf-8");
226
+ const language = detectLanguage(file);
227
+ const imports = extractImports(content, language);
228
+ let priority = 0;
229
+ if (isSecurityRelevant(content, imports))
230
+ priority += 10;
231
+ if (file.includes("auth"))
232
+ priority += 5;
233
+ if (file.includes("api"))
234
+ priority += 3;
235
+ if (file.includes("route"))
236
+ priority += 3;
237
+ if (file.includes("controller"))
238
+ priority += 3;
239
+ if (file.includes("service"))
240
+ priority += 2;
241
+ prioritizedFiles.push({ file, priority });
242
+ }
243
+ catch {
244
+ // Skip unreadable files
245
+ }
246
+ }
247
+ // Sort by priority and take top N
248
+ prioritizedFiles.sort((a, b) => b.priority - a.priority);
249
+ const selectedFiles = prioritizedFiles.slice(0, maxFiles);
250
+ for (const { file } of selectedFiles) {
251
+ const fullPath = path.join(absolutePath, file);
252
+ try {
253
+ const content = await readFile(fullPath, "utf-8");
254
+ const language = detectLanguage(file);
255
+ const imports = extractImports(content, language);
256
+ const signatures = extractFunctionSignatures(content, language);
257
+ const focusArea = determineFocusAreas(content, imports);
258
+ const securityRelevant = isSecurityRelevant(content, imports);
259
+ contexts.push({
260
+ file,
261
+ language,
262
+ content: content.slice(0, 50000), // Limit content size
263
+ functionSignatures: signatures,
264
+ imports,
265
+ securityRelevant,
266
+ focusArea,
267
+ });
268
+ }
269
+ catch {
270
+ // Skip unreadable files
271
+ }
272
+ }
273
+ return contexts;
274
+ }
275
+ const VULN_PATTERNS = [
276
+ // Auth bypasses
277
+ {
278
+ id: "zdh-auth-001",
279
+ title: "Admin check using string comparison",
280
+ pattern: /(?:req|request)\.\w+(?:\.\w+)*\s*===?\s*['"]admin['"]/gi,
281
+ severity: "high",
282
+ category: "auth",
283
+ cweIds: ["CWE-287"],
284
+ description: "Direct string comparison for admin check can be bypassed with role manipulation.",
285
+ recommendation: "Use role-based access control with proper session validation.",
286
+ },
287
+ {
288
+ id: "zdh-auth-002",
289
+ title: "JWT without expiration check",
290
+ pattern: /jwt\.(?:verify|decode)\s*\([^)]*\)(?![\s\S]{0,200}exp)/gi,
291
+ severity: "high",
292
+ category: "auth",
293
+ cweIds: ["CWE-613"],
294
+ description: "JWT verification without expiration check allows replay attacks.",
295
+ recommendation: "Always verify token expiration with maxAge or exp claim validation.",
296
+ },
297
+ // Crypto weaknesses
298
+ {
299
+ id: "zdh-crypto-001",
300
+ title: "Weak hash algorithm (MD5/SHA1)",
301
+ pattern: /(?:createHash|hashlib\.)(?:md5|sha1)\s*\(/gi,
302
+ severity: "high",
303
+ category: "crypto",
304
+ cweIds: ["CWE-328"],
305
+ description: "MD5 and SHA1 are cryptographically broken for password hashing.",
306
+ recommendation: "Use bcrypt, argon2, or SHA-256+ with proper salting.",
307
+ },
308
+ {
309
+ id: "zdh-crypto-002",
310
+ title: "Hardcoded encryption key",
311
+ pattern: /(?:key|secret|password)\s*[:=]\s*['"][A-Za-z0-9+/=]{16,}['"]/gi,
312
+ severity: "critical",
313
+ category: "crypto",
314
+ cweIds: ["CWE-321"],
315
+ description: "Hardcoded encryption key can be extracted from source code.",
316
+ recommendation: "Use environment variables or secure key management system.",
317
+ },
318
+ // Injection
319
+ {
320
+ id: "zdh-injection-001",
321
+ title: "Dynamic query construction",
322
+ pattern: /(?:query|execute|exec)\s*\([^)]*\$\{[^}]+\}|(?:query|execute|exec)\s*\([^)]*\+\s*\w+/gi,
323
+ severity: "critical",
324
+ category: "injection",
325
+ cweIds: ["CWE-89"],
326
+ description: "Dynamic SQL query construction is vulnerable to injection.",
327
+ recommendation: "Use parameterized queries or prepared statements.",
328
+ },
329
+ {
330
+ id: "zdh-injection-002",
331
+ title: "Command injection via template literal",
332
+ pattern: /exec(?:Sync)?\s*\(`[^`]*\$\{[^}]+\}/gi,
333
+ severity: "critical",
334
+ category: "injection",
335
+ cweIds: ["CWE-78"],
336
+ description: "User input in command execution enables command injection.",
337
+ recommendation: "Use parameterized APIs or strict input validation.",
338
+ },
339
+ // Logic flaws
340
+ {
341
+ id: "zdh-logic-001",
342
+ title: "Race condition in balance check",
343
+ pattern: /if\s*\(\s*\w*balance\w*\s*[><=]+[^{]+\{[\s\S]{0,200}balance\s*[-+]?=/gi,
344
+ severity: "high",
345
+ category: "logic",
346
+ cweIds: ["CWE-367"],
347
+ description: "Balance check followed by modification is vulnerable to race conditions.",
348
+ recommendation: "Use atomic transactions or optimistic locking.",
349
+ },
350
+ {
351
+ id: "zdh-logic-002",
352
+ title: "Integer overflow in calculation",
353
+ pattern: /\w+\s*\*\s*\w+\s*[+\-\*]\s*\w+(?!\s*>>>)/gi,
354
+ severity: "medium",
355
+ category: "logic",
356
+ cweIds: ["CWE-190"],
357
+ description: "Arithmetic operations may overflow without proper bounds checking.",
358
+ recommendation: "Use BigInt for large numbers or add overflow checks.",
359
+ },
360
+ // Access control
361
+ {
362
+ id: "zdh-acl-001",
363
+ title: "Missing authorization check in endpoint",
364
+ pattern: /app\.(?:get|post|put|delete)\s*\([^,]+,\s*(?:async\s*)?\([^)]*\)\s*=>\s*\{(?![\s\S]{0,100}(?:isAuth|checkAuth|requireAuth|authorize))/gi,
365
+ severity: "high",
366
+ category: "access-control",
367
+ cweIds: ["CWE-862"],
368
+ description: "API endpoint without apparent authorization check.",
369
+ recommendation: "Add authentication middleware to protected routes.",
370
+ },
371
+ // Data validation
372
+ {
373
+ id: "zdh-valid-001",
374
+ title: "Unchecked file path from user input",
375
+ pattern: /(?:readFile|writeFile|unlink|open)\s*\([^)]*(?:req|request)\.[^)]+\)/gi,
376
+ severity: "critical",
377
+ category: "data-validation",
378
+ cweIds: ["CWE-22"],
379
+ description: "File path from user input without validation enables path traversal.",
380
+ recommendation: "Validate and sanitize file paths, use allowlist of permitted directories.",
381
+ },
382
+ ];
383
+ /**
384
+ * Run pattern-based zero-day detection
385
+ */
386
+ function runPatternAnalysis(contexts) {
387
+ const findings = [];
388
+ let findingId = 1;
389
+ for (const ctx of contexts) {
390
+ for (const vuln of VULN_PATTERNS) {
391
+ vuln.pattern.lastIndex = 0;
392
+ let match;
393
+ while ((match = vuln.pattern.exec(ctx.content)) !== null) {
394
+ // Find line number
395
+ const upToMatch = ctx.content.slice(0, match.index);
396
+ const lineNumber = upToMatch.split("\n").length;
397
+ // Extract code snippet (3 lines context)
398
+ const lines = ctx.content.split("\n");
399
+ const startLine = Math.max(0, lineNumber - 2);
400
+ const endLine = Math.min(lines.length, lineNumber + 2);
401
+ const snippet = lines.slice(startLine, endLine).join("\n");
402
+ findings.push({
403
+ id: `zdh-${String(findingId++).padStart(3, "0")}`,
404
+ title: vuln.title,
405
+ description: vuln.description,
406
+ severity: vuln.severity,
407
+ confidence: 80,
408
+ category: vuln.category,
409
+ file: ctx.file,
410
+ line: lineNumber,
411
+ codeSnippet: snippet,
412
+ attackScenario: generateAttackScenario(vuln.category, vuln.id),
413
+ cweIds: vuln.cweIds,
414
+ recommendation: vuln.recommendation,
415
+ exploitability: "likely",
416
+ aiReasoning: `Pattern-based detection: ${vuln.pattern.toString().slice(0, 100)}`,
417
+ });
418
+ }
419
+ }
420
+ }
421
+ return findings;
422
+ }
423
+ /**
424
+ * Generate attack scenario description
425
+ */
426
+ function generateAttackScenario(category, vulnId) {
427
+ const scenarios = {
428
+ "zdh-auth-001": "Attacker manipulates role field in request to gain admin access without proper authentication.",
429
+ "zdh-auth-002": "Attacker captures a JWT and replays it indefinitely since expiration is not validated.",
430
+ "zdh-crypto-001": "Attacker uses rainbow tables or collision attacks to crack MD5/SHA1 hashed passwords.",
431
+ "zdh-crypto-002": "Attacker extracts hardcoded key from source/binary to decrypt sensitive data.",
432
+ "zdh-injection-001": "Attacker injects SQL payload via user input to extract or modify database contents.",
433
+ "zdh-injection-002": "Attacker injects shell commands to achieve remote code execution on the server.",
434
+ "zdh-logic-001": "Attacker exploits race condition to perform double-spend or bypass balance checks.",
435
+ "zdh-logic-002": "Attacker causes integer overflow to bypass security checks or corrupt application state.",
436
+ "zdh-acl-001": "Attacker accesses protected endpoint directly without authentication, exposing sensitive data.",
437
+ "zdh-valid-001": "Attacker uses ../../../ sequences to read arbitrary files from the server filesystem.",
438
+ };
439
+ return scenarios[vulnId] || `Attacker exploits ${category} vulnerability to compromise application security.`;
440
+ }
441
+ // ============================================================================
442
+ // AI Analysis (when API key available)
443
+ // ============================================================================
444
+ /**
445
+ * Build AI analysis prompt
446
+ */
447
+ function buildAnalysisPrompt(ctx, focusAreas) {
448
+ return `You are a security researcher analyzing code for novel vulnerabilities.
449
+
450
+ ## File: ${ctx.file}
451
+ ## Language: ${ctx.language}
452
+ ## Focus Areas: ${focusAreas.join(", ")}
453
+
454
+ ## Code:
455
+ \`\`\`${ctx.language}
456
+ ${ctx.content.slice(0, 10000)}
457
+ \`\`\`
458
+
459
+ ## Instructions:
460
+ Analyze this code for security vulnerabilities, focusing on:
461
+
462
+ 1. **Logic Flaws**: Inconsistent state handling, broken assumptions, edge cases
463
+ 2. **Authentication Bypasses**: Ways to skip or circumvent auth checks
464
+ 3. **Authorization Issues**: Privilege escalation, missing access controls
465
+ 4. **Cryptographic Weaknesses**: Weak algorithms, key management issues
466
+ 5. **Injection Vectors**: Novel injection patterns, template injection, etc.
467
+ 6. **Race Conditions**: TOCTOU, concurrent access issues
468
+ 7. **Data Exposure**: Information leakage, verbose errors
469
+
470
+ For each potential vulnerability found:
471
+ - Provide exact line numbers
472
+ - Include the vulnerable code snippet
473
+ - Explain the attack scenario
474
+ - Rate confidence (0-100)
475
+ - Map to CWE if applicable
476
+
477
+ Output as JSON array:
478
+ [{
479
+ "title": "Vulnerability title",
480
+ "line": 42,
481
+ "endLine": 45,
482
+ "codeSnippet": "vulnerable code",
483
+ "severity": "critical|high|medium|low",
484
+ "confidence": 85,
485
+ "category": "auth|crypto|injection|logic|access-control|data-validation|session|api|state",
486
+ "attackScenario": "How an attacker would exploit this",
487
+ "cweIds": ["CWE-XXX"],
488
+ "recommendation": "How to fix",
489
+ "reasoning": "Why this is a vulnerability"
490
+ }]
491
+
492
+ Return empty array [] if no vulnerabilities found.`;
493
+ }
494
+ // ============================================================================
495
+ // Main Entry Point
496
+ // ============================================================================
497
+ /**
498
+ * Run zero-day hunting on a project
499
+ */
500
+ export async function runZeroDayHunter(projectPath, config) {
501
+ // 1. Build code context
502
+ const contexts = await buildCodeContext(projectPath, config);
503
+ if (contexts.length === 0) {
504
+ return {
505
+ filesAnalyzed: 0,
506
+ findings: [],
507
+ analysisDepth: config.analysisDepth,
508
+ focusAreas: config.focusAreas,
509
+ modelUsed: "pattern-only",
510
+ recommendations: ["No analyzable source files found."],
511
+ };
512
+ }
513
+ // 2. Filter contexts by focus areas if specified
514
+ const filteredContexts = config.focusAreas.length > 0
515
+ ? contexts.filter(ctx => ctx.focusArea.some(area => config.focusAreas.includes(area)))
516
+ : contexts;
517
+ // 3. Run pattern-based analysis (always runs)
518
+ const patternFindings = runPatternAnalysis(filteredContexts);
519
+ // 4. AI analysis would go here if API key is configured
520
+ // For now, we rely on pattern-based detection
521
+ // TODO: Integrate with Claude API when available
522
+ // 5. Generate recommendations
523
+ const recommendations = [];
524
+ const criticalCount = patternFindings.filter(f => f.severity === "critical").length;
525
+ const highCount = patternFindings.filter(f => f.severity === "high").length;
526
+ if (criticalCount > 0) {
527
+ recommendations.push(`CRITICAL: ${criticalCount} critical vulnerabilities require immediate attention.`);
528
+ }
529
+ if (highCount > 0) {
530
+ recommendations.push(`HIGH: ${highCount} high-severity issues should be fixed before deployment.`);
531
+ }
532
+ // Category-specific recommendations
533
+ const categories = [...new Set(patternFindings.map(f => f.category))];
534
+ if (categories.includes("injection")) {
535
+ recommendations.push("Implement input validation and use parameterized queries throughout the codebase.");
536
+ }
537
+ if (categories.includes("auth")) {
538
+ recommendations.push("Review authentication flow for bypass opportunities. Consider multi-factor authentication.");
539
+ }
540
+ if (categories.includes("crypto")) {
541
+ recommendations.push("Audit cryptographic implementations. Use established libraries and avoid custom crypto.");
542
+ }
543
+ return {
544
+ filesAnalyzed: filteredContexts.length,
545
+ findings: patternFindings,
546
+ analysisDepth: config.analysisDepth,
547
+ focusAreas: config.focusAreas,
548
+ modelUsed: "pattern-analysis",
549
+ recommendations,
550
+ };
551
+ }
552
+ /**
553
+ * Convert zero-day findings to certification findings
554
+ */
555
+ export function zeroDayToFindings(result) {
556
+ return result.findings.map((f) => ({
557
+ id: f.id,
558
+ severity: f.severity,
559
+ category: mapZeroDayCategory(f.category),
560
+ description: `${f.title}: ${f.description}`,
561
+ evidence: `File: ${f.file}:${f.line}\nCode: ${f.codeSnippet.slice(0, 200)}\nAttack: ${f.attackScenario}`,
562
+ confidence: f.confidence,
563
+ verifications: [],
564
+ created_at: new Date().toISOString(),
565
+ scanner_source: "zero-day-hunter",
566
+ metadata: {
567
+ cweIds: f.cweIds,
568
+ recommendation: f.recommendation,
569
+ exploitability: f.exploitability,
570
+ aiReasoning: f.aiReasoning,
571
+ },
572
+ }));
573
+ }
574
+ /**
575
+ * Map zero-day category to finding category
576
+ */
577
+ function mapZeroDayCategory(category) {
578
+ const mapping = {
579
+ auth: "authentication",
580
+ crypto: "cryptography",
581
+ injection: "injection",
582
+ logic: "logic-flaw",
583
+ state: "logic-flaw",
584
+ "access-control": "authorization",
585
+ "data-validation": "input-validation",
586
+ session: "session-management",
587
+ api: "api-security",
588
+ };
589
+ return mapping[category] || "code-quality";
590
+ }
591
+ //# sourceMappingURL=zero-day-hunter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zero-day-hunter.js","sourceRoot":"","sources":["../../src/agents/zero-day-hunter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Enterprise Certification System - Artifact Generation
3
+ */
4
+ import { Certification } from "./types.js";
5
+ /**
6
+ * Generate the CERTIFICATION.md report
7
+ */
8
+ export declare function generateCertificationMarkdown(certification: Certification): string;
9
+ /**
10
+ * Generate the CERTIFICATION.json file
11
+ */
12
+ export declare function generateCertificationJson(certification: Certification): string;
13
+ /**
14
+ * Write certification artifacts to project
15
+ */
16
+ export declare function writeCertificationArtifacts(projectPath: string, certification: Certification): Promise<{
17
+ markdown: string;
18
+ json: string;
19
+ badge: string;
20
+ }>;
21
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/certification/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,aAAa,EAMd,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAmNlF;AAqED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAuB9E;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB5D"}