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,454 @@
1
+ /**
2
+ * Logic Flaw Detector Agent
3
+ *
4
+ * Finds business logic vulnerabilities that pattern-based scanners miss.
5
+ * Analyzes control flow, state management, and business rule implementations.
6
+ *
7
+ * Focus areas:
8
+ * - State inconsistency: Variables mutable when should be immutable
9
+ * - Race conditions: Check-then-act without locks
10
+ * - Boundary conditions: Off-by-one, integer overflow
11
+ * - Error handling: Swallowed exceptions, incomplete cleanup
12
+ * - Trust boundaries: Client-supplied data used unsafely
13
+ * - Business rule violations: Incorrect implementations of business logic
14
+ *
15
+ * @module agents/logic-flaw-detector
16
+ */
17
+ import { readFile } from "fs/promises";
18
+ import * as path from "path";
19
+ import { glob } from "glob";
20
+ const LOGIC_PATTERNS = [
21
+ // State Inconsistency
22
+ {
23
+ id: "lfd-state-001",
24
+ title: "Mutable shared state in async context",
25
+ pattern: /let\s+\w+\s*=[\s\S]{0,50}(?:await|\.then|setTimeout|setInterval)/g,
26
+ severity: "medium",
27
+ category: "state-inconsistency",
28
+ cweIds: ["CWE-362", "CWE-820"],
29
+ description: "Mutable variable declared before async operation may lead to race conditions.",
30
+ impact: "Concurrent modifications can cause data corruption or unexpected behavior.",
31
+ recommendation: "Use const or atomic operations. Consider using immutable data structures.",
32
+ languages: ["typescript", "javascript"],
33
+ },
34
+ {
35
+ id: "lfd-state-002",
36
+ title: "Global state modification in function",
37
+ pattern: /(?:global|window|globalThis)\.\w+\s*=(?!=)/g,
38
+ severity: "medium",
39
+ category: "state-inconsistency",
40
+ cweIds: ["CWE-362"],
41
+ description: "Function modifies global state which can cause unexpected side effects.",
42
+ impact: "Global state mutations make code unpredictable and hard to test.",
43
+ recommendation: "Pass state as parameters or use dependency injection.",
44
+ languages: ["typescript", "javascript"],
45
+ },
46
+ // Boundary Violations
47
+ {
48
+ id: "lfd-boundary-001",
49
+ title: "Array access without bounds check",
50
+ pattern: /\[\s*(?:\w+\s*[-+]\s*\d+|\w+\s*\*\s*\w+)\s*\]/g,
51
+ severity: "medium",
52
+ category: "boundary-violation",
53
+ cweIds: ["CWE-129", "CWE-787"],
54
+ description: "Array index calculation without explicit bounds validation.",
55
+ impact: "Out-of-bounds access can cause crashes or security vulnerabilities.",
56
+ recommendation: "Add explicit bounds checking before array access.",
57
+ },
58
+ {
59
+ id: "lfd-boundary-002",
60
+ title: "Loop condition off-by-one risk",
61
+ pattern: /for\s*\([^;]+;\s*\w+\s*<=\s*\w+\.length[^;]*;/g,
62
+ severity: "medium",
63
+ category: "boundary-violation",
64
+ cweIds: ["CWE-193"],
65
+ description: "Loop condition uses <= with length, potential off-by-one error.",
66
+ impact: "Off-by-one errors can cause array out-of-bounds access.",
67
+ recommendation: "Use < instead of <= when iterating to array length.",
68
+ languages: ["typescript", "javascript"],
69
+ },
70
+ {
71
+ id: "lfd-boundary-003",
72
+ title: "Unchecked arithmetic in financial calculation",
73
+ pattern: /(?:price|amount|total|balance|cost|fee|rate)\s*(?:\*|\/)(?!\s*0)/g,
74
+ severity: "high",
75
+ category: "boundary-violation",
76
+ cweIds: ["CWE-190", "CWE-682"],
77
+ description: "Financial calculation without overflow/precision checking.",
78
+ impact: "Arithmetic errors in financial code can cause monetary losses.",
79
+ recommendation: "Use decimal libraries (decimal.js) for financial calculations.",
80
+ },
81
+ // Error Handling
82
+ {
83
+ id: "lfd-error-001",
84
+ title: "Empty catch block",
85
+ pattern: /catch\s*\([^)]*\)\s*\{\s*\}/g,
86
+ severity: "medium",
87
+ category: "error-handling",
88
+ cweIds: ["CWE-390"],
89
+ description: "Exception caught but not handled, silently ignoring errors.",
90
+ impact: "Errors are silently swallowed, making debugging difficult.",
91
+ recommendation: "Log the error or handle it appropriately. Use error monitoring.",
92
+ },
93
+ {
94
+ id: "lfd-error-002",
95
+ title: "Catch block only logs error",
96
+ pattern: /catch\s*\([^)]*\)\s*\{\s*(?:console\.(?:log|error)|logger\.\w+)\s*\([^)]+\)\s*;?\s*\}/g,
97
+ severity: "low",
98
+ category: "error-handling",
99
+ cweIds: ["CWE-755"],
100
+ description: "Exception caught and logged but execution continues as if successful.",
101
+ impact: "Application may continue in an invalid state after error.",
102
+ recommendation: "Consider re-throwing the error or returning an error result.",
103
+ },
104
+ {
105
+ id: "lfd-error-003",
106
+ title: "Missing cleanup in error path",
107
+ pattern: /try\s*\{[\s\S]{0,500}(?:open|connect|acquire|lock)[\s\S]{0,500}\}\s*catch[\s\S]{0,200}(?!\s*(?:close|disconnect|release|unlock))/g,
108
+ severity: "high",
109
+ category: "error-handling",
110
+ cweIds: ["CWE-404"],
111
+ description: "Resource acquired in try block may not be released in catch block.",
112
+ impact: "Resource leaks can cause denial of service or system instability.",
113
+ recommendation: "Use try-finally or resource management patterns (using, with).",
114
+ },
115
+ // Trust Boundary
116
+ {
117
+ id: "lfd-trust-001",
118
+ title: "User input used in object property access",
119
+ pattern: /\[\s*(?:req|request)\.(?:body|query|params)\.\w+\s*\]/g,
120
+ severity: "high",
121
+ category: "trust-boundary",
122
+ cweIds: ["CWE-915"],
123
+ description: "User-supplied key used for object property access enables prototype pollution.",
124
+ impact: "Attacker can access or modify unexpected object properties.",
125
+ recommendation: "Validate user input against allowlist of permitted keys.",
126
+ languages: ["typescript", "javascript"],
127
+ },
128
+ {
129
+ id: "lfd-trust-002",
130
+ title: "Client-provided value used for authorization",
131
+ pattern: /(?:req|request)\.(?:body|query|params)\.(?:role|admin|permission|isAdmin|userId|user_id)/gi,
132
+ severity: "critical",
133
+ category: "trust-boundary",
134
+ cweIds: ["CWE-807"],
135
+ description: "Authorization decision based on client-provided value.",
136
+ impact: "Attacker can elevate privileges by modifying request parameters.",
137
+ recommendation: "Derive authorization data from session/token, never from client input.",
138
+ languages: ["typescript", "javascript"],
139
+ },
140
+ {
141
+ id: "lfd-trust-003",
142
+ title: "Deserialization of untrusted data",
143
+ pattern: /(?:JSON\.parse|pickle\.loads?|yaml\.load|eval)\s*\([^)]*(?:req|request|input|data|body)/gi,
144
+ severity: "critical",
145
+ category: "trust-boundary",
146
+ cweIds: ["CWE-502"],
147
+ description: "Deserializing data from untrusted source without validation.",
148
+ impact: "Deserialization vulnerabilities can lead to remote code execution.",
149
+ recommendation: "Validate input schema before deserialization. Use safe parsers.",
150
+ },
151
+ // Business Logic
152
+ {
153
+ id: "lfd-biz-001",
154
+ title: "Price calculation after discount check",
155
+ pattern: /if\s*\([^)]*discount[^)]*\)[\s\S]{0,100}(?:price|total)\s*=/gi,
156
+ severity: "medium",
157
+ category: "business-logic",
158
+ cweIds: ["CWE-840"],
159
+ description: "Discount logic may be bypassable if not validated server-side.",
160
+ impact: "Attackers may manipulate pricing to get unauthorized discounts.",
161
+ recommendation: "Validate all pricing calculations server-side. Log anomalies.",
162
+ },
163
+ {
164
+ id: "lfd-biz-002",
165
+ title: "Quantity/amount not validated as positive",
166
+ pattern: /(?:quantity|amount|count)\s*[:=]\s*(?:parseInt|Number|parseFloat)\s*\([^)]+\)(?![\s\S]{0,50}(?:>|>=)\s*0)/gi,
167
+ severity: "medium",
168
+ category: "business-logic",
169
+ cweIds: ["CWE-20"],
170
+ description: "Numeric value from user input not validated as positive.",
171
+ impact: "Negative values may cause unexpected behavior or financial loss.",
172
+ recommendation: "Validate that quantities and amounts are positive numbers.",
173
+ },
174
+ // Null Safety
175
+ {
176
+ id: "lfd-null-001",
177
+ title: "Optional chaining followed by method call",
178
+ pattern: /\?\.\w+\s*\([^)]*\)\s*\./g,
179
+ severity: "low",
180
+ category: "null-safety",
181
+ cweIds: ["CWE-476"],
182
+ description: "Method called on potentially undefined result of optional chain.",
183
+ impact: "TypeError if the optional chain returns undefined.",
184
+ recommendation: "Add null check or continue optional chaining.",
185
+ languages: ["typescript", "javascript"],
186
+ },
187
+ {
188
+ id: "lfd-null-002",
189
+ title: "Nullable value used without check",
190
+ pattern: /:\s*\w+\s*\|\s*(?:null|undefined)[\s\S]{0,200}(?<!\?\.)\.\w+/g,
191
+ severity: "medium",
192
+ category: "null-safety",
193
+ cweIds: ["CWE-476"],
194
+ description: "Nullable type accessed without null check.",
195
+ impact: "Runtime error when accessing property of null/undefined.",
196
+ recommendation: "Add null check or use optional chaining.",
197
+ languages: ["typescript"],
198
+ },
199
+ // Resource Leaks
200
+ {
201
+ id: "lfd-resource-001",
202
+ title: "Event listener not removed",
203
+ pattern: /addEventListener\s*\([^)]+\)(?![\s\S]{0,500}removeEventListener)/g,
204
+ severity: "low",
205
+ category: "resource-leak",
206
+ cweIds: ["CWE-401"],
207
+ description: "Event listener added without corresponding removal.",
208
+ impact: "Memory leaks in long-running applications.",
209
+ recommendation: "Remove event listeners in cleanup/unmount lifecycle.",
210
+ languages: ["typescript", "javascript"],
211
+ },
212
+ {
213
+ id: "lfd-resource-002",
214
+ title: "Timer not cleared",
215
+ pattern: /(?:setInterval|setTimeout)\s*\([^)]+\)(?![\s\S]{0,300}clear(?:Interval|Timeout))/g,
216
+ severity: "low",
217
+ category: "resource-leak",
218
+ cweIds: ["CWE-401"],
219
+ description: "Timer created without being cleared.",
220
+ impact: "Timers may continue running after component/scope is destroyed.",
221
+ recommendation: "Store timer ID and clear in cleanup.",
222
+ languages: ["typescript", "javascript"],
223
+ },
224
+ // Invariant Violations
225
+ {
226
+ id: "lfd-inv-001",
227
+ title: "State modified without validation",
228
+ pattern: /this\.state\.\w+\s*=(?!=)/g,
229
+ severity: "medium",
230
+ category: "invariant-violation",
231
+ cweIds: ["CWE-20"],
232
+ description: "Direct state mutation may bypass validation invariants.",
233
+ impact: "Object may enter invalid state, causing downstream errors.",
234
+ recommendation: "Use setter methods with validation.",
235
+ languages: ["typescript", "javascript"],
236
+ },
237
+ {
238
+ id: "lfd-inv-002",
239
+ title: "Enum value not exhaustively checked",
240
+ pattern: /switch\s*\([^)]+\)\s*\{(?![\s\S]*default\s*:)/g,
241
+ severity: "low",
242
+ category: "invariant-violation",
243
+ cweIds: ["CWE-478"],
244
+ description: "Switch statement without default case may miss enum values.",
245
+ impact: "Unhandled enum values cause unexpected behavior.",
246
+ recommendation: "Add default case or exhaustive type checking.",
247
+ },
248
+ ];
249
+ // ============================================================================
250
+ // Analysis Functions
251
+ // ============================================================================
252
+ /**
253
+ * Detect language from file extension
254
+ */
255
+ function detectLanguage(file) {
256
+ const ext = path.extname(file).toLowerCase();
257
+ const langMap = {
258
+ ".ts": "typescript",
259
+ ".tsx": "typescript",
260
+ ".js": "javascript",
261
+ ".jsx": "javascript",
262
+ ".py": "python",
263
+ ".go": "go",
264
+ ".java": "java",
265
+ };
266
+ return langMap[ext] || "unknown";
267
+ }
268
+ /**
269
+ * Extract code snippet around a line
270
+ */
271
+ function extractSnippet(content, lineNumber, context = 2) {
272
+ const lines = content.split("\n");
273
+ const start = Math.max(0, lineNumber - context - 1);
274
+ const end = Math.min(lines.length, lineNumber + context);
275
+ return lines.slice(start, end).join("\n");
276
+ }
277
+ /**
278
+ * Find line number from character index
279
+ */
280
+ function findLineNumber(content, index) {
281
+ return content.slice(0, index).split("\n").length;
282
+ }
283
+ /**
284
+ * Check if a finding is in a test file
285
+ */
286
+ function isTestFile(file) {
287
+ return (file.includes(".test.") ||
288
+ file.includes(".spec.") ||
289
+ file.includes("__tests__") ||
290
+ file.includes("/test/") ||
291
+ file.includes("/tests/"));
292
+ }
293
+ /**
294
+ * Run logic flaw detection on a single file
295
+ */
296
+ function analyzeFile(file, content, categories) {
297
+ const findings = [];
298
+ const language = detectLanguage(file);
299
+ // Skip test files
300
+ if (isTestFile(file)) {
301
+ return findings;
302
+ }
303
+ let findingId = 1;
304
+ for (const pattern of LOGIC_PATTERNS) {
305
+ // Filter by category if specified
306
+ if (categories.length > 0 && !categories.includes(pattern.category)) {
307
+ continue;
308
+ }
309
+ // Filter by language if specified
310
+ if (pattern.languages && !pattern.languages.includes(language)) {
311
+ continue;
312
+ }
313
+ // Reset regex
314
+ pattern.pattern.lastIndex = 0;
315
+ let match;
316
+ while ((match = pattern.pattern.exec(content)) !== null) {
317
+ const lineNumber = findLineNumber(content, match.index);
318
+ const snippet = extractSnippet(content, lineNumber);
319
+ findings.push({
320
+ id: `lfd-${file.slice(-10).replace(/[^a-z0-9]/gi, "")}-${String(findingId++).padStart(3, "0")}`,
321
+ title: pattern.title,
322
+ description: pattern.description,
323
+ severity: pattern.severity,
324
+ confidence: 75,
325
+ category: pattern.category,
326
+ file,
327
+ line: lineNumber,
328
+ codeSnippet: snippet,
329
+ impact: pattern.impact,
330
+ cweIds: pattern.cweIds,
331
+ recommendation: pattern.recommendation,
332
+ });
333
+ }
334
+ }
335
+ return findings;
336
+ }
337
+ // ============================================================================
338
+ // Main Entry Point
339
+ // ============================================================================
340
+ /**
341
+ * Run logic flaw detection on a project
342
+ */
343
+ export async function runLogicFlawDetector(projectPath, config) {
344
+ const absolutePath = path.resolve(projectPath);
345
+ const findings = [];
346
+ let filesAnalyzed = 0;
347
+ // Get files to analyze
348
+ let files;
349
+ if (config.focusFiles && config.focusFiles.length > 0) {
350
+ files = config.focusFiles;
351
+ }
352
+ else {
353
+ const patterns = ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.py", "**/*.go", "**/*.java"];
354
+ const ignore = [
355
+ "**/node_modules/**",
356
+ "**/vendor/**",
357
+ "**/dist/**",
358
+ "**/build/**",
359
+ "**/*.test.*",
360
+ "**/*.spec.*",
361
+ "**/test/**",
362
+ "**/tests/**",
363
+ "**/__tests__/**",
364
+ ];
365
+ files = await glob(patterns, {
366
+ cwd: absolutePath,
367
+ ignore,
368
+ nodir: true,
369
+ });
370
+ }
371
+ // Limit files based on depth
372
+ const maxFiles = config.maxFilesToAnalyze ||
373
+ (config.analysisDepth === "quick" ? 30 :
374
+ config.analysisDepth === "standard" ? 75 : 150);
375
+ const selectedFiles = files.slice(0, maxFiles);
376
+ const categories = config.categories || [];
377
+ // Analyze each file
378
+ for (const file of selectedFiles) {
379
+ const fullPath = path.join(absolutePath, file);
380
+ try {
381
+ const content = await readFile(fullPath, "utf-8");
382
+ const fileFindings = analyzeFile(file, content, categories);
383
+ findings.push(...fileFindings);
384
+ filesAnalyzed++;
385
+ }
386
+ catch {
387
+ // Skip unreadable files
388
+ }
389
+ }
390
+ // Generate recommendations
391
+ const recommendations = [];
392
+ const categoryCounts = {};
393
+ for (const finding of findings) {
394
+ categoryCounts[finding.category] = (categoryCounts[finding.category] || 0) + 1;
395
+ }
396
+ if (categoryCounts["trust-boundary"]) {
397
+ recommendations.push(`${categoryCounts["trust-boundary"]} trust boundary issues found. Implement strict input validation at all API boundaries.`);
398
+ }
399
+ if (categoryCounts["error-handling"]) {
400
+ recommendations.push(`${categoryCounts["error-handling"]} error handling issues found. Review exception handling patterns and ensure proper cleanup.`);
401
+ }
402
+ if (categoryCounts["boundary-violation"]) {
403
+ recommendations.push(`${categoryCounts["boundary-violation"]} boundary violations found. Add explicit bounds checking for array access and arithmetic.`);
404
+ }
405
+ if (categoryCounts["business-logic"]) {
406
+ recommendations.push(`${categoryCounts["business-logic"]} business logic issues found. Add server-side validation for all business rules.`);
407
+ }
408
+ const detectedCategories = Object.keys(categoryCounts);
409
+ return {
410
+ filesAnalyzed,
411
+ findings,
412
+ categories: detectedCategories,
413
+ recommendations,
414
+ };
415
+ }
416
+ /**
417
+ * Convert logic flaw findings to certification findings
418
+ */
419
+ export function logicFlawToFindings(result) {
420
+ return result.findings.map((f) => ({
421
+ id: f.id,
422
+ severity: f.severity,
423
+ category: mapLogicCategory(f.category),
424
+ description: `${f.title}: ${f.description}`,
425
+ evidence: `File: ${f.file}:${f.line}\nCode: ${f.codeSnippet.slice(0, 200)}\nImpact: ${f.impact}`,
426
+ confidence: f.confidence,
427
+ verifications: [],
428
+ created_at: new Date().toISOString(),
429
+ scanner_source: "logic-flaw-detector",
430
+ metadata: {
431
+ cweIds: f.cweIds,
432
+ recommendation: f.recommendation,
433
+ relatedFunctions: f.relatedFunctions,
434
+ },
435
+ }));
436
+ }
437
+ /**
438
+ * Map logic flaw category to finding category
439
+ */
440
+ function mapLogicCategory(category) {
441
+ const mapping = {
442
+ "state-inconsistency": "logic-flaw",
443
+ "race-condition": "race-condition",
444
+ "boundary-violation": "input-validation",
445
+ "error-handling": "error-handling",
446
+ "trust-boundary": "input-validation",
447
+ "business-logic": "logic-flaw",
448
+ "null-safety": "code-quality",
449
+ "resource-leak": "resource-management",
450
+ "invariant-violation": "logic-flaw",
451
+ };
452
+ return mapping[category] || "code-quality";
453
+ }
454
+ //# sourceMappingURL=logic-flaw-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logic-flaw-detector.js","sourceRoot":"","sources":["../../src/agents/logic-flaw-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
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 type { Severity, Finding } from "../certification/types.js";
17
+ /**
18
+ * Configuration for zero-day hunter
19
+ */
20
+ export interface ZeroDayHunterConfig {
21
+ model?: "claude-sonnet-4" | "claude-opus-4" | "claude-haiku";
22
+ analysisDepth: "quick" | "standard" | "thorough";
23
+ focusAreas: ZeroDayFocusArea[];
24
+ maxFilesToAnalyze?: number;
25
+ includePatterns?: string[];
26
+ excludePatterns?: string[];
27
+ }
28
+ export type ZeroDayFocusArea = "auth" | "crypto" | "injection" | "logic" | "state" | "access-control" | "data-validation" | "session" | "api";
29
+ /**
30
+ * Zero-day finding with AI analysis
31
+ */
32
+ export interface ZeroDayFinding {
33
+ id: string;
34
+ title: string;
35
+ description: string;
36
+ severity: Severity;
37
+ confidence: number;
38
+ category: ZeroDayFocusArea;
39
+ file: string;
40
+ line: number;
41
+ endLine?: number;
42
+ codeSnippet: string;
43
+ attackScenario: string;
44
+ cweIds: string[];
45
+ recommendation: string;
46
+ exploitability: "proven" | "likely" | "possible" | "theoretical";
47
+ aiReasoning: string;
48
+ }
49
+ /**
50
+ * Result of zero-day hunting
51
+ */
52
+ export interface ZeroDayHunterResult {
53
+ filesAnalyzed: number;
54
+ findings: ZeroDayFinding[];
55
+ analysisDepth: string;
56
+ focusAreas: ZeroDayFocusArea[];
57
+ modelUsed: string;
58
+ totalTokensUsed?: number;
59
+ recommendations: string[];
60
+ }
61
+ /**
62
+ * Run zero-day hunting on a project
63
+ */
64
+ export declare function runZeroDayHunter(projectPath: string, config: ZeroDayHunterConfig): Promise<ZeroDayHunterResult>;
65
+ /**
66
+ * Convert zero-day findings to certification findings
67
+ */
68
+ export declare function zeroDayToFindings(result: ZeroDayHunterResult): Finding[];
69
+ //# sourceMappingURL=zero-day-hunter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zero-day-hunter.d.ts","sourceRoot":"","sources":["../../src/agents/zero-day-hunter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAmB,MAAM,2BAA2B,CAAC;AAMpF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAC;IAC7D,aAAa,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,QAAQ,GACR,WAAW,GACX,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,GACT,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAeD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AA8iBD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA6D9B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,EAAE,CAkBxE"}