agentic-qe 3.15.12 → 3.15.14

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 (506) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +124 -5
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +196 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-23KA2YW7.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-5VZCKTIJ.js → agent-booster-wasm-2DLAEZK6.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-K3C6CQCD.js → agent-handler-P3IY7XEE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-NVFQ25WS.js → agent-memory-branch-WWKC2H3G.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +2 -0
  11. package/dist/cli/chunks/{arena-TSZVDSXS.js → arena-4BMFF6BS.js} +4 -4
  12. package/dist/cli/chunks/{arena-QGWIJADQ.js → arena-EIV5OALF.js} +2 -2
  13. package/dist/cli/chunks/{audit-KIEE2SHJ.js → audit-DNTI453H.js} +3 -3
  14. package/dist/cli/chunks/base-XPWGYDKD.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BNB32NW3.js → better-sqlite3-TQBQGNC6.js} +2 -2
  16. package/dist/cli/chunks/brain-handler-HY57CNAO.js +95 -0
  17. package/dist/cli/chunks/{branch-enumerator-LZ7UXKAY.js → branch-enumerator-THPMZPHQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-VDHAW4RK.js → browser-O6JJOZCK.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +2 -0
  20. package/dist/cli/chunks/{chunk-4PU5GTZW.js → chunk-2HPNGK7A.js} +2 -2
  21. package/dist/cli/chunks/{chunk-MCPXNUDK.js → chunk-2IJO3657.js} +2 -2
  22. package/dist/cli/chunks/{chunk-4Y6OEBJZ.js → chunk-2QLE6NDW.js} +1 -1
  23. package/dist/cli/chunks/{chunk-DZGPUGUG.js → chunk-2UZBLC5H.js} +2 -2
  24. package/dist/cli/chunks/{chunk-5A66EGEW.js → chunk-2W5MQDHM.js} +2 -2
  25. package/dist/cli/chunks/{chunk-JRYWLOBD.js → chunk-3FITMWWJ.js} +2 -2
  26. package/dist/cli/chunks/{chunk-RCOLPF3B.js → chunk-3TF27MG5.js} +2 -2
  27. package/dist/cli/chunks/{chunk-KGA7VAI4.js → chunk-3XACRXBY.js} +2 -2
  28. package/dist/cli/chunks/{chunk-SQVZ3TRU.js → chunk-43XHGWYH.js} +2 -2
  29. package/dist/cli/chunks/{chunk-JR6CUKAI.js → chunk-4RPBODN5.js} +2 -2
  30. package/dist/cli/chunks/{chunk-C3YOVASQ.js → chunk-4T7XV5KQ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-N7O3PF6Y.js → chunk-4WLIOPHX.js} +2 -2
  32. package/dist/cli/chunks/{chunk-PGSJBXTD.js → chunk-52KOPIMI.js} +2 -2
  33. package/dist/cli/chunks/{chunk-4KUOYDY2.js → chunk-56NSE3LJ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-3IU4LDZR.js → chunk-57DRT6UA.js} +2 -2
  35. package/dist/cli/chunks/{chunk-2JYUA27M.js → chunk-57FX3GP6.js} +1 -1
  36. package/dist/cli/chunks/{chunk-7QEUHNKO.js → chunk-5PLBQZ5J.js} +1 -1
  37. package/dist/cli/chunks/{chunk-VF7FTD64.js → chunk-5Y7UFHJD.js} +1 -1
  38. package/dist/cli/chunks/{chunk-7JFDLL2F.js → chunk-5Z4MO2F3.js} +1 -1
  39. package/dist/cli/chunks/chunk-65EE2EST.js +8 -0
  40. package/dist/cli/chunks/{chunk-66PXR3NI.js → chunk-6NIGSY5L.js} +2 -2
  41. package/dist/cli/chunks/chunk-6O63ZTVX.js +3 -0
  42. package/dist/cli/chunks/{chunk-ZYOYR3UR.js → chunk-6OI5SK7M.js} +1 -1
  43. package/dist/cli/chunks/{chunk-5TAEW5OV.js → chunk-6P4Q4RTC.js} +1 -1
  44. package/dist/cli/chunks/{chunk-W5HQIYQU.js → chunk-7724KXM2.js} +3 -3
  45. package/dist/cli/chunks/{chunk-A2JCRXTK.js → chunk-7MISCSL5.js} +2 -2
  46. package/dist/cli/chunks/{chunk-OHVYINGM.js → chunk-7MUO4DEH.js} +3 -3
  47. package/dist/cli/chunks/{chunk-QCPVUNN3.js → chunk-7QUSNBAA.js} +2 -2
  48. package/dist/cli/chunks/{chunk-YUA6ZKKY.js → chunk-7SQTLUEN.js} +2 -2
  49. package/dist/cli/chunks/{chunk-CA5UNWQF.js → chunk-7T6L3LFN.js} +2 -2
  50. package/dist/cli/chunks/{chunk-UREDS662.js → chunk-7TH4PJSU.js} +2 -2
  51. package/dist/cli/chunks/{chunk-TVA5GRIU.js → chunk-7Y3LXH57.js} +2 -2
  52. package/dist/cli/chunks/{chunk-A5Y7DAVQ.js → chunk-A2T56XVL.js} +2 -2
  53. package/dist/cli/chunks/{chunk-ZROAMFX2.js → chunk-AJVLVF7V.js} +2 -2
  54. package/dist/cli/chunks/{chunk-26672ISV.js → chunk-ARRBXCII.js} +2 -2
  55. package/dist/cli/chunks/{chunk-5S4UIDFK.js → chunk-AYLEH2UF.js} +1 -1
  56. package/dist/cli/chunks/{chunk-DRCBRUGN.js → chunk-BBYJBZHG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-BMG2JLSQ.js → chunk-BM3EJLMV.js} +2 -2
  58. package/dist/cli/chunks/{chunk-6QRI3JVE.js → chunk-BNG4J3CE.js} +2 -2
  59. package/dist/cli/chunks/{chunk-EN7GRVEQ.js → chunk-BPDAQB3F.js} +2 -2
  60. package/dist/cli/chunks/{chunk-J7Y7ZBIT.js → chunk-BQJ7CV53.js} +9 -9
  61. package/dist/cli/chunks/{chunk-ADUAJIAU.js → chunk-C3OIBFAA.js} +2 -2
  62. package/dist/cli/chunks/{chunk-4LWMAAWK.js → chunk-CAZM63TP.js} +2 -2
  63. package/dist/cli/chunks/{chunk-UZED4YZ5.js → chunk-CIINJHOX.js} +1 -1
  64. package/dist/cli/chunks/{chunk-C74M4WUI.js → chunk-CPPYZYXC.js} +2 -2
  65. package/dist/cli/chunks/chunk-D3ZZ2NLL.js +62 -0
  66. package/dist/cli/chunks/{chunk-U7ZHDGXG.js → chunk-D5GB5PUU.js} +1 -1
  67. package/dist/cli/chunks/{chunk-HZBXJFGN.js → chunk-DLTB5KCR.js} +2 -2
  68. package/dist/cli/chunks/{chunk-NNBQZR73.js → chunk-DRLSJJIC.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HLGFHHWV.js → chunk-DSQESXL4.js} +2 -2
  70. package/dist/cli/chunks/{chunk-LFBA735S.js → chunk-E2JLAW3U.js} +3 -3
  71. package/dist/cli/chunks/{chunk-PT2NXS43.js → chunk-E3QIQMMN.js} +1 -1
  72. package/dist/cli/chunks/{chunk-35MIUSXQ.js → chunk-E7OR6V3V.js} +2 -2
  73. package/dist/cli/chunks/{chunk-G24SWTAX.js → chunk-E7QTWGPI.js} +413 -413
  74. package/dist/cli/chunks/{chunk-PX5OPXY6.js → chunk-EC65UZ77.js} +1 -1
  75. package/dist/cli/chunks/{chunk-JNXK47OL.js → chunk-EIEEST4T.js} +2 -2
  76. package/dist/cli/chunks/{chunk-2PPSS4JD.js → chunk-FHPNWHY7.js} +2 -2
  77. package/dist/cli/chunks/{chunk-PTBOLBM4.js → chunk-FJOIBZUB.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TXEUVUMO.js → chunk-FTYRPEJS.js} +1 -1
  79. package/dist/cli/chunks/{chunk-ZPVGX4DI.js → chunk-G7HGUQAE.js} +2 -2
  80. package/dist/cli/chunks/{chunk-EF6OERRR.js → chunk-GY4P7KAI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-UUZZXHUF.js → chunk-H3C5FJRH.js} +2 -2
  82. package/dist/cli/chunks/{chunk-L3PV7VXK.js → chunk-H4LYXLAT.js} +1 -1
  83. package/dist/cli/chunks/{chunk-5Z23ZMXZ.js → chunk-HAYKLXCT.js} +63 -61
  84. package/dist/cli/chunks/{chunk-IPA7K556.js → chunk-HEDGFKC5.js} +2 -2
  85. package/dist/cli/chunks/{chunk-BC4T6SCV.js → chunk-HHBF2BZC.js} +4 -4
  86. package/dist/cli/chunks/{chunk-IVTQF55W.js → chunk-HSDWPQQY.js} +3 -3
  87. package/dist/cli/chunks/{chunk-SG2TX72G.js → chunk-HTVGHHX2.js} +2 -2
  88. package/dist/cli/chunks/{chunk-FZJCBSN4.js → chunk-HV43NX4A.js} +2 -2
  89. package/dist/cli/chunks/{chunk-MMEALJ4D.js → chunk-IDBA5GK2.js} +2 -2
  90. package/dist/cli/chunks/{chunk-IA55PFLG.js → chunk-INGXD5IX.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RYHG3I7J.js → chunk-IQRPR4KB.js} +2 -2
  92. package/dist/cli/chunks/{chunk-7OEFBWAG.js → chunk-IRPNEXOU.js} +2 -2
  93. package/dist/cli/chunks/{chunk-P7UFJ6DO.js → chunk-J35JWDJE.js} +1 -1
  94. package/dist/cli/chunks/chunk-J6ASX536.js +2 -0
  95. package/dist/cli/chunks/{chunk-2ASQRBK2.js → chunk-JAOCHPYX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-G3AABG4Q.js → chunk-JB7R77SH.js} +2 -2
  97. package/dist/cli/chunks/{chunk-HSA5IGGW.js → chunk-JI67T6Q2.js} +2 -2
  98. package/dist/cli/chunks/{chunk-ZGROHCOW.js → chunk-JJHLGGPP.js} +1 -1
  99. package/dist/cli/chunks/{chunk-L7NGKANW.js → chunk-JK6PMLQQ.js} +2 -2
  100. package/dist/cli/chunks/{chunk-IL7GQNNE.js → chunk-JO26SG47.js} +2 -2
  101. package/dist/cli/chunks/{chunk-3EWQN37E.js → chunk-JSSU4RIK.js} +2 -2
  102. package/dist/cli/chunks/{chunk-TOWOJGEI.js → chunk-K2SMP4OD.js} +1 -1
  103. package/dist/cli/chunks/{chunk-YVJEUX3I.js → chunk-K7GFYFBO.js} +2 -2
  104. package/dist/cli/chunks/{chunk-DAUEK66C.js → chunk-K7RT6ITZ.js} +1 -1
  105. package/dist/cli/chunks/{chunk-33I2ZP6E.js → chunk-KJ5A54ZH.js} +2 -2
  106. package/dist/cli/chunks/{chunk-W4II6SIH.js → chunk-L5VSLPMW.js} +2 -2
  107. package/dist/cli/chunks/{chunk-NVRYELCY.js → chunk-L752CNG3.js} +3 -3
  108. package/dist/cli/chunks/{chunk-MAJXZYGK.js → chunk-L7PC675Y.js} +1 -1
  109. package/dist/cli/chunks/{chunk-YWWMNTBF.js → chunk-LTGQJYYO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-7DNR4KKR.js → chunk-M2TG7VDK.js} +1 -1
  111. package/dist/cli/chunks/{chunk-2E2QO44T.js → chunk-M5JEA6ZY.js} +2 -2
  112. package/dist/cli/chunks/{chunk-IETBWYHW.js → chunk-MB4UKUBV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-W7H55PY4.js → chunk-MKYOE7NE.js} +1 -1
  114. package/dist/cli/chunks/{chunk-FNUFTWEO.js → chunk-MQXWG55U.js} +3 -3
  115. package/dist/cli/chunks/{chunk-O4QJMANM.js → chunk-MR2OPUSA.js} +1 -1
  116. package/dist/cli/chunks/{chunk-KA5SHLMW.js → chunk-N736GLWZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-NV74SICL.js → chunk-NHEG2DLN.js} +2 -2
  118. package/dist/cli/chunks/chunk-NKOLILT7.js +86 -0
  119. package/dist/cli/chunks/{chunk-KJDI5CHX.js → chunk-NPCXGX7N.js} +2 -2
  120. package/dist/cli/chunks/{chunk-2IVE5AR3.js → chunk-NZQYJCO6.js} +1 -1
  121. package/dist/cli/chunks/{chunk-4SA7M34P.js → chunk-O2AAYJUV.js} +1 -1
  122. package/dist/cli/chunks/{chunk-ULCW6IVQ.js → chunk-O32BFQV4.js} +2 -2
  123. package/dist/cli/chunks/{chunk-JOWUS2X5.js → chunk-O3ERGUXH.js} +1 -1
  124. package/dist/cli/chunks/{chunk-BYRCB5JT.js → chunk-O5CEL447.js} +2 -2
  125. package/dist/cli/chunks/{chunk-CPIBIR3X.js → chunk-O756AOUX.js} +2 -2
  126. package/dist/cli/chunks/{chunk-TSOQ2QLT.js → chunk-OCN53CCK.js} +2 -2
  127. package/dist/cli/chunks/{chunk-YLKIXEPP.js → chunk-OGEIHS76.js} +1 -1
  128. package/dist/cli/chunks/{chunk-ICKUINKD.js → chunk-OLUOVNUF.js} +2 -2
  129. package/dist/cli/chunks/{chunk-5ADXFUMO.js → chunk-P2TPH3TC.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SBHM5X2S.js → chunk-PCQZIAXB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-CDA5Z74H.js → chunk-PGN4TARY.js} +2 -2
  132. package/dist/cli/chunks/{chunk-P5E26N2X.js → chunk-PNRPVQGI.js} +2 -2
  133. package/dist/cli/chunks/{chunk-23PQF7NN.js → chunk-PWQWKYBG.js} +1 -1
  134. package/dist/cli/chunks/{chunk-T4EN5VVK.js → chunk-QNQE3EOH.js} +2 -2
  135. package/dist/cli/chunks/chunk-QP2HLKTS.js +2 -0
  136. package/dist/cli/chunks/{chunk-7TA5MUPW.js → chunk-QP6GL3O5.js} +1 -1
  137. package/dist/cli/chunks/{chunk-GKFV6CUD.js → chunk-QUZ745UQ.js} +2 -2
  138. package/dist/cli/chunks/{chunk-INZARYUD.js → chunk-R5RRWLRI.js} +2 -2
  139. package/dist/cli/chunks/{chunk-VZBC6DP7.js → chunk-RE6JTSDM.js} +1 -1
  140. package/dist/cli/chunks/{chunk-JGIJPDGD.js → chunk-TOJF3ZG4.js} +2 -2
  141. package/dist/cli/chunks/{chunk-WLRU6ESI.js → chunk-TSP6SU5V.js} +2 -2
  142. package/dist/cli/chunks/{chunk-6E6HB4N4.js → chunk-TW6Z6W4X.js} +4 -4
  143. package/dist/cli/chunks/{chunk-ENGL7FIJ.js → chunk-TWOV3I3A.js} +1 -1
  144. package/dist/cli/chunks/chunk-U4TML2VD.js +3 -0
  145. package/dist/cli/chunks/{chunk-O3IM4WRZ.js → chunk-U6IOQKCT.js} +2 -2
  146. package/dist/cli/chunks/{chunk-SPC4RBLF.js → chunk-UDSB3XCG.js} +2 -2
  147. package/dist/cli/chunks/{chunk-URSTP3WI.js → chunk-UFP7SN5V.js} +2 -2
  148. package/dist/cli/chunks/{chunk-MYF5CNGV.js → chunk-UMHFTQTR.js} +2 -2
  149. package/dist/cli/chunks/{chunk-65TH6RPD.js → chunk-UNYTHZDZ.js} +1 -1
  150. package/dist/cli/chunks/{chunk-FAGKBOX2.js → chunk-UPWLMIDY.js} +2 -2
  151. package/dist/cli/chunks/{chunk-4CB3QPZM.js → chunk-USAKCGHC.js} +2 -2
  152. package/dist/cli/chunks/{chunk-QUJJYTJH.js → chunk-V3MGY76S.js} +2 -2
  153. package/dist/cli/chunks/{chunk-WDEXOLK2.js → chunk-V6SE2ZU2.js} +1 -1
  154. package/dist/cli/chunks/{chunk-JW5PDJ5O.js → chunk-VCVRZD4Y.js} +3 -3
  155. package/dist/cli/chunks/{chunk-TGMXUZZC.js → chunk-VG32EEUG.js} +2 -2
  156. package/dist/cli/chunks/{chunk-MYUMJ2ZI.js → chunk-VGZOPQQY.js} +1 -1
  157. package/dist/cli/chunks/{chunk-BOSMELJX.js → chunk-VJBJRFUO.js} +2 -2
  158. package/dist/cli/chunks/{chunk-K3A3NWT3.js → chunk-WBC6WB32.js} +2 -2
  159. package/dist/cli/chunks/{chunk-QWG3SILX.js → chunk-WCM6WE7G.js} +5 -5
  160. package/dist/cli/chunks/{chunk-GJKZ7UQO.js → chunk-WCPSR4MJ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-U6IXYQO4.js → chunk-WKI46WWN.js} +2 -2
  162. package/dist/cli/chunks/{chunk-NX4BCSOZ.js → chunk-WM2QRIRD.js} +2 -2
  163. package/dist/cli/chunks/{chunk-32UTHIY5.js → chunk-WRC3HLUY.js} +3 -3
  164. package/dist/cli/chunks/{chunk-AJEXPFAB.js → chunk-WUGXXNK4.js} +1 -1
  165. package/dist/cli/chunks/{chunk-NA3F6FEO.js → chunk-WZQADC5R.js} +2 -2
  166. package/dist/cli/chunks/{chunk-SDRJJUPO.js → chunk-X6NJOT3V.js} +1 -1
  167. package/dist/cli/chunks/{chunk-CU36D7TN.js → chunk-X6Q2N5S5.js} +2 -2
  168. package/dist/cli/chunks/{chunk-UIKQPO4Y.js → chunk-X7CUI7KH.js} +2 -2
  169. package/dist/cli/chunks/{chunk-MCPEC6OO.js → chunk-XMCSKYDE.js} +1 -1
  170. package/dist/cli/chunks/{chunk-WTAUF6O4.js → chunk-XN3KCKAM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-TLRHAMX5.js → chunk-XSPMLJCQ.js} +1 -1
  172. package/dist/cli/chunks/{chunk-VUR5THML.js → chunk-XTZGAG6P.js} +2 -2
  173. package/dist/cli/chunks/{chunk-47RMGDG4.js → chunk-YE54T2NQ.js} +2 -2
  174. package/dist/cli/chunks/{chunk-HM3LSFTY.js → chunk-YEFTK4HD.js} +2 -2
  175. package/dist/cli/chunks/{chunk-4HWUECVD.js → chunk-YGC5QKQ4.js} +2 -2
  176. package/dist/cli/chunks/{chunk-SUX5XB2Z.js → chunk-YGOSSVY5.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UJNGGFGX.js → chunk-YKQWIXUY.js} +2 -2
  178. package/dist/cli/chunks/{chunk-SITL5YZV.js → chunk-Z2S7DNFP.js} +2 -2
  179. package/dist/cli/chunks/{chunk-WGTEZT7G.js → chunk-Z54G2YOL.js} +2 -2
  180. package/dist/cli/chunks/{chunk-YNVEDFPQ.js → chunk-ZJGFQK27.js} +1 -1
  181. package/dist/cli/chunks/{chunk-35NW676P.js → chunk-ZUE524JL.js} +2 -2
  182. package/dist/cli/chunks/{ci-BZNWW3I3.js → ci-UMA2SMNW.js} +2 -2
  183. package/dist/cli/chunks/{ci-config-LOHNXOKV.js → ci-config-UQSILJFQ.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-LCOQBSJL.js → ci-output-U6YZLLKH.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-7LRXTLFE.js → circuit-breaker-ATYQP6X2.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-HBU4VWC3.js → claude-flow-setup-6YHFD7AN.js} +2 -2
  187. package/dist/cli/chunks/client-E43GWLQH.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-CO6MLH6X.js → cline-installer-EPE7IOZE.js} +2 -2
  189. package/dist/cli/chunks/{code-SIXBS6JM.js → code-NUEJ4XYO.js} +19 -18
  190. package/dist/cli/chunks/{code-index-extractor-GWJKZ2IQ.js → code-index-extractor-D4DBT6OL.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-6NINVWXJ.js → codex-installer-633SM4LR.js} +2 -2
  192. package/dist/cli/chunks/{completions-7VIX3GML.js → completions-WUKVIW3L.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-FBQR6ZP2.js → complexity-analyzer-F73ACR5H.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-VA7RIXW5.js → continuedev-installer-QH42TKMS.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-4QEBC4MU.js → copilot-installer-Y3XC7BTT.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-R5A3SQDY.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-GRYKHPWL.js → cost-tracker-57QPV7E3.js} +2 -2
  198. package/dist/cli/chunks/coverage-IBCHMBCR.js +51 -0
  199. package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-ZXIPSZVH.js → cursor-installer-F4UYQHIN.js} +2 -2
  201. package/dist/cli/chunks/{daemon-N2VRHPSJ.js → daemon-BYYPIJ7G.js} +4 -4
  202. package/dist/cli/chunks/{daemon-D7F3RGI5.js → daemon-XR4Q6YZF.js} +3 -3
  203. package/dist/cli/chunks/{dag-attention-scheduler-NL6BA7BY.js → dag-attention-scheduler-ZR5ZD3TW.js} +2 -2
  204. package/dist/cli/chunks/{detect-XC2HCIIT.js → detect-GEGYURLL.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-A3Y26MEI.js → dist-node-JU3KT2JO.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-WV6SFXRB.js → domain-handler-7QI3FJGE.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-KJIF6Z2B.js → domain-plugins-O2YRM2PD.js} +2 -2
  208. package/dist/cli/chunks/domain-transfer-7J3S2OS6.js +2 -0
  209. package/dist/cli/chunks/dream-6C4NURSE.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-PA3Y4KGO.js → embed-and-insert-pattern-URES5Q6J.js} +2 -2
  211. package/dist/cli/chunks/{eval-YGEZNUVE.js → eval-RVMCIUOR.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-D4T7NW6B.js → experience-capture-middleware-SYJQSBKE.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-6JYK7RYQ.js → fast-paths-QUKPKWKZ.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-DKXMDVPE.js → feature-flags-5JCSKL2P.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-RBH2GDSR.js → feature-flags-K7JXNKJI.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-J5IE5KP7.js +2 -0
  217. package/dist/cli/chunks/fleet-II4Q6HXK.js +44 -0
  218. package/dist/cli/chunks/{gnn-wrapper-MV54UC4C.js → gnn-wrapper-M7VO2EMS.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-7DKMVQQH.js → heartbeat-handler-ND5CY26N.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-6IWREDQC.js → hnsw-legacy-bridge-N3AUUUU7.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-5BIESSCK.js → hnswlib-node-NZY3E5EN.js} +2 -2
  225. package/dist/cli/chunks/{hooks-3EETRM62.js → hooks-QVJDTII5.js} +10 -10
  226. package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-RSWCB2D3.js → hypergraph-engine-ZRY6MTDV.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-552LXKL3.js → hypergraph-handler-56DO4XZQ.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +2 -0
  230. package/dist/cli/chunks/{init-guard-OTDBJ5HD.js → init-guard-DTF4EVUY.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-3FK3TKEA.js → init-handler-M6CNQHMX.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-RTLCRWDT.js +2 -0
  233. package/dist/cli/chunks/kernel-2OWIGGGT.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-KZ2O4LF3.js → kilocode-installer-IJN7XKBH.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-MLCCXRF7.js → kiro-installer-UKKPGPDC.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +2 -0
  237. package/dist/cli/chunks/learning-W2HETWQ4.js +131 -0
  238. package/dist/cli/chunks/{llm-router-PDEV3UP2.js → llm-router-Y546K4VX.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +2 -0
  240. package/dist/cli/chunks/{load-XFVVLO7E.js → load-MKAB2AXE.js} +2 -2
  241. package/dist/cli/chunks/load-test-D6QYNIVT.js +2 -0
  242. package/dist/cli/chunks/{mcp-74G3CL2S.js → mcp-AZKUS6K3.js} +2 -2
  243. package/dist/cli/chunks/{memory-XIFM6JNX.js → memory-ZDOQN2KU.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-ZCKURV6S.js → memory-handlers-3SQVY7FE.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-7L4W3O2Q.js → multi-model-executor-WWVXDHG4.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-BPG422LF.js → opencode-installer-YUJNXXWS.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-OEAFLAEV.js → orchestrator-Z6PWPLRE.js} +109 -25
  249. package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-LOPNCULT.js → pattern-usage-recorder-TPWPX32U.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-VWTYUZB7.js → pipeline-4BBGTE4M.js} +2 -2
  252. package/dist/cli/chunks/{platform-WFJJ3X2E.js → platform-5GSHXCV5.js} +2 -2
  253. package/dist/cli/chunks/{plugin-744TPUSG.js → plugin-OFDVF5HS.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-BD5BLNDR.js → prime-radiant-advanced-wasm-NC6MUYGJ.js} +2 -2
  255. package/dist/cli/chunks/project-root-DDGBWDP6.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-JIBILI74.js → protocol-handler-MPOAAEPA.js} +2 -2
  258. package/dist/cli/chunks/{prove-MNOL5FYW.js → prove-CDKMAIVM.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +2 -0
  260. package/dist/cli/chunks/{quality-JEGBDGGX.js → quality-ZH4F7R7R.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-SYJ6ROMI.js → quality-gate-IDRMW6OE.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +2 -0
  263. package/dist/cli/chunks/{real-embeddings-ZWXS5ZFV.js → real-embeddings-I2UVNNB3.js} +2 -2
  264. package/dist/cli/chunks/{ref-validation-RRHUFW2N.js → ref-validation-Z5GCGVXK.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-XFO6JSVN.js → roocode-installer-IZ2S7PH2.js} +2 -2
  266. package/dist/cli/chunks/router-FT5WJPUH.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-L2K3JASE.js → routing-handler-NAX35VUW.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-A6CINHGM.js → ruvector-commands-5YW2SOFF.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-T4RY7L53.js → rvf-migration-coordinator-VUIZHTVG.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-IR33TGQS.js → rvf-store-integrity-IPGCAT6C.js} +2 -2
  275. package/dist/cli/chunks/safe-db-TDZKUOZJ.js +2 -0
  276. package/dist/cli/chunks/schedule-CRKTRY2A.js +2 -0
  277. package/dist/cli/chunks/scheduler-6ZBDVQWN.js +2 -0
  278. package/dist/cli/chunks/{security-Z5GDE2IH.js → security-3IH4BO5Z.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-SIZMEHPM.js → shared-rvf-adapter-ABY7PAY2.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-HLM65RDS.js → shared-rvf-dual-writer-6KENLN2W.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-SKSZG7P5.js → standalone-memory-RLFAUGOW.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-766YOOMJ.js → status-handler-FCOZBPE5.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-M45FNOLT.js → structural-health-4RDA5UUM.js} +2 -2
  285. package/dist/cli/chunks/{sync-B2U366I3.js → sync-54LUAUTK.js} +2 -2
  286. package/dist/cli/chunks/{sync-6CJ24B5T.js → sync-KGEEXXCC.js} +2 -2
  287. package/dist/cli/chunks/task-handler-K3OXHYKU.js +62 -0
  288. package/dist/cli/chunks/task-handlers-6H7L2UT4.js +9 -0
  289. package/dist/cli/chunks/{test-TODH7KRF.js → test-S7IG6EIX.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-VMVMVRHT.js → test-scheduling-7XYXI4L2.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-XQW7BMCK.js → token-bootstrap-3QMABE45.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-JCZEIRKO.js → token-usage-Y2YTPOFE.js} +2 -2
  294. package/dist/cli/chunks/{transformers-U2ML3OHE.js → transformers-UCJ3HHHC.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +2 -0
  296. package/dist/cli/chunks/{types-GGEPCHP6.js → types-6CMFPETH.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-QARWQKJ2.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +2 -0
  300. package/dist/cli/chunks/{upgrade-T5GRM7HS.js → upgrade-K25DN6WU.js} +2 -2
  301. package/dist/cli/chunks/{validate-XMUJPLP3.js → validate-T4V3TBY3.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-KJLF7JEH.js → validate-swarm-XSRC576T.js} +2 -2
  303. package/dist/cli/chunks/visual-security-O4ALMCXQ.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-LOHVZ7G5.js → web-tree-sitter-YOZXHRTN.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-33FBTXJU.js → windsurf-installer-ITPU2IYL.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-B3YW5NMS.js +2 -0
  307. package/dist/cli/chunks/witness-chain-PIYR72HJ.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-VWBO4NXE.js → witness-chain-repair-YUG7E3UX.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-BHJ3ZAEK.js → witness-chain-verifier-DTDSVKOG.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-WNVPH2Z3.js → witness-key-manager-EWACWGAW.js} +2 -2
  311. package/dist/cli/chunks/{workflow-6QR5MQTO.js → workflow-ZIQ4FV42.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +2 -0
  313. package/dist/cli/chunks/{wrappers-EHOL62TS.js → wrappers-PW2O27LL.js} +2 -2
  314. package/dist/cli/commands/code.js +6 -0
  315. package/dist/cli/commands/coverage.js +6 -0
  316. package/dist/cli/commands/fleet-run.d.ts +12 -0
  317. package/dist/cli/commands/fleet-run.js +175 -0
  318. package/dist/cli/commands/fleet.js +2 -117
  319. package/dist/cli/commands/learning-prune.d.ts +14 -0
  320. package/dist/cli/commands/learning-prune.js +105 -0
  321. package/dist/cli/commands/learning.js +9 -0
  322. package/dist/cli/handlers/brain-handler.js +12 -1
  323. package/dist/cli/handlers/task-handler.d.ts +5 -0
  324. package/dist/cli/handlers/task-handler.js +20 -0
  325. package/dist/cli/utils/coverage-verdict.js +14 -3
  326. package/dist/cli/utils/fleet-operation.d.ts +5 -2
  327. package/dist/cli/utils/fleet-operation.js +13 -2
  328. package/dist/cli/utils/fleet-result.d.ts +16 -2
  329. package/dist/cli/utils/fleet-result.js +26 -21
  330. package/dist/cli/utils/fleet-shard.d.ts +36 -0
  331. package/dist/cli/utils/fleet-shard.js +110 -0
  332. package/dist/context/compaction/index.d.ts +7 -0
  333. package/dist/context/compaction/index.js +30 -6
  334. package/dist/coordination/handlers/code-intelligence-handlers.js +21 -1
  335. package/dist/coordination/handlers/coverage-evidence.d.ts +19 -0
  336. package/dist/coordination/handlers/coverage-evidence.js +31 -2
  337. package/dist/coordination/handlers/coverage-handlers.js +5 -1
  338. package/dist/coordination/handlers/coverage-target.js +8 -1
  339. package/dist/coordination/handlers/handler-types.d.ts +2 -2
  340. package/dist/coordination/handlers/handler-utils.d.ts +6 -0
  341. package/dist/coordination/handlers/handler-utils.js +14 -4
  342. package/dist/coordination/handlers/misc-handlers.js +5 -2
  343. package/dist/coordination/handlers/quality-handlers.js +11 -3
  344. package/dist/coordination/handlers/security-handlers.js +12 -2
  345. package/dist/coordination/protocols/security-audit.js +11 -1
  346. package/dist/coordination/result-saver-adapters.js +1 -0
  347. package/dist/coordination/result-saver.js +9 -5
  348. package/dist/coordination/task-executor.js +7 -2
  349. package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +1 -0
  350. package/dist/domains/chaos-resilience/services/chaos-engineer.js +23 -45
  351. package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
  352. package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
  353. package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
  354. package/dist/domains/code-intelligence/coordinator.js +24 -27
  355. package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
  356. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +43 -5
  357. package/dist/domains/code-intelligence/services/semantic-analyzer.js +134 -71
  358. package/dist/domains/coverage-analysis/collected-metrics.d.ts +26 -0
  359. package/dist/domains/coverage-analysis/collected-metrics.js +54 -0
  360. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +13 -3
  361. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +2 -0
  362. package/dist/domains/coverage-analysis/services/coverage-parser.js +18 -2
  363. package/dist/domains/defect-intelligence/services/defect-predictor.js +3 -6
  364. package/dist/domains/quality-assessment/coherence/gate-controller.js +16 -4
  365. package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
  366. package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
  367. package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
  368. package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
  369. package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
  370. package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
  371. package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
  372. package/dist/domains/quality-assessment/coordinator.js +10 -4
  373. package/dist/domains/quality-assessment/coverage-report-event.d.ts +8 -0
  374. package/dist/domains/quality-assessment/coverage-report-event.js +22 -1
  375. package/dist/domains/quality-assessment/interfaces.d.ts +8 -0
  376. package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
  377. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +4 -0
  378. package/dist/domains/quality-assessment/services/quality-analyzer.js +63 -17
  379. package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
  380. package/dist/domains/security-compliance/index.d.ts +1 -1
  381. package/dist/domains/security-compliance/interfaces.d.ts +46 -5
  382. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
  383. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
  384. package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
  385. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
  386. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
  387. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
  388. package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
  389. package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
  390. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
  391. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
  392. package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
  393. package/dist/domains/security-compliance/services/scanners/index.js +1 -1
  394. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
  395. package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
  396. package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
  397. package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
  398. package/dist/domains/security-compliance/services/security-auditor.js +106 -65
  399. package/dist/domains/test-execution/coordinator.d.ts +2 -1
  400. package/dist/domains/test-execution/coordinator.js +33 -27
  401. package/dist/domains/test-execution/interfaces.d.ts +10 -0
  402. package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
  403. package/dist/domains/test-execution/services/test-executor.js +22 -4
  404. package/dist/domains/visual-accessibility/coordinator.js +34 -9
  405. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
  406. package/dist/domains/visual-accessibility/plugin.js +5 -0
  407. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
  408. package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
  409. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
  410. package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
  411. package/dist/init/phases/07-hooks.js +90 -6
  412. package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
  413. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +25 -0
  414. package/dist/integrations/ruvector/brain-rvf-exporter.js +154 -61
  415. package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
  416. package/dist/learning/dream/dream-engine.d.ts +24 -1
  417. package/dist/learning/dream/dream-engine.js +57 -6
  418. package/dist/learning/learning-retention.d.ts +103 -0
  419. package/dist/learning/learning-retention.js +213 -0
  420. package/dist/mcp/bundle.js +508 -503
  421. package/dist/mcp/handlers/domain-handler-configs.d.ts +17 -1
  422. package/dist/mcp/handlers/domain-handler-configs.js +33 -16
  423. package/dist/mcp/handlers/handler-factory.js +3 -0
  424. package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
  425. package/dist/mcp/handlers/model-route-handlers.js +139 -0
  426. package/dist/mcp/handlers/orchestrate-routes.js +41 -3
  427. package/dist/mcp/handlers/task-handlers.d.ts +3 -251
  428. package/dist/mcp/handlers/task-handlers.js +6 -828
  429. package/dist/mcp/handlers/task-inference.d.ts +26 -0
  430. package/dist/mcp/handlers/task-inference.js +156 -0
  431. package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
  432. package/dist/mcp/handlers/task-learning-handlers.js +230 -0
  433. package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
  434. package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
  435. package/dist/mcp/protocol-server.js +13 -3
  436. package/dist/mcp/tools/chaos-resilience/inject.d.ts +3 -4
  437. package/dist/mcp/tools/chaos-resilience/inject.js +11 -81
  438. package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
  439. package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
  440. package/dist/mcp/tools/coverage-analysis/index.js +8 -2
  441. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -0
  442. package/dist/mcp/tools/learning-optimization/dream.js +4 -0
  443. package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
  444. package/dist/mcp/tools/visual-accessibility/index.js +29 -13
  445. package/dist/shared/events/domain-events.d.ts +2 -0
  446. package/dist/shared/metrics/code-metrics.js +21 -3
  447. package/dist/shared/parsers/typescript-parser.d.ts +6 -0
  448. package/dist/shared/parsers/typescript-parser.js +13 -1
  449. package/package.json +1 -1
  450. package/dist/cli/chunks/adapter-HL7MOCQN.js +0 -2
  451. package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +0 -2
  452. package/dist/cli/chunks/base-WIM7G3HC.js +0 -2
  453. package/dist/cli/chunks/brain-handler-MPC5SPYI.js +0 -94
  454. package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +0 -2
  455. package/dist/cli/chunks/chunk-4A76VPU4.js +0 -3
  456. package/dist/cli/chunks/chunk-QSGEBCDB.js +0 -62
  457. package/dist/cli/chunks/chunk-UCSK2RMI.js +0 -2
  458. package/dist/cli/chunks/chunk-VXVTFKRA.js +0 -2
  459. package/dist/cli/chunks/chunk-XCNSGSKV.js +0 -3
  460. package/dist/cli/chunks/chunk-XZOYKB22.js +0 -79
  461. package/dist/cli/chunks/chunk-YIDAXOUX.js +0 -8
  462. package/dist/cli/chunks/client-4PNYDFYS.js +0 -2
  463. package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +0 -2
  464. package/dist/cli/chunks/coverage-USPMNKOU.js +0 -50
  465. package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +0 -2
  466. package/dist/cli/chunks/domain-transfer-L3F6AES2.js +0 -2
  467. package/dist/cli/chunks/dream-QOB3JCOM.js +0 -2
  468. package/dist/cli/chunks/file-discovery-BN76S2PR.js +0 -2
  469. package/dist/cli/chunks/fleet-43YMXACN.js +0 -46
  470. package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +0 -2
  471. package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +0 -2
  472. package/dist/cli/chunks/hnsw-index-HE4AX22U.js +0 -2
  473. package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +0 -2
  474. package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +0 -2
  475. package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +0 -2
  476. package/dist/cli/chunks/kernel-2WZOQEZS.js +0 -2
  477. package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +0 -2
  478. package/dist/cli/chunks/learning-QUCMBD77.js +0 -122
  479. package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +0 -2
  480. package/dist/cli/chunks/load-test-BEWEE44J.js +0 -2
  481. package/dist/cli/chunks/memory-backend-NYKBBKZR.js +0 -2
  482. package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +0 -2
  483. package/dist/cli/chunks/project-root-C7ELXZRK.js +0 -2
  484. package/dist/cli/chunks/protocol-executor-SUVE33BM.js +0 -2
  485. package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +0 -2
  486. package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +0 -2
  487. package/dist/cli/chunks/router-4FTAVYLJ.js +0 -2
  488. package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +0 -2
  489. package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +0 -2
  490. package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +0 -2
  491. package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +0 -2
  492. package/dist/cli/chunks/safe-db-QXDZ6QY3.js +0 -2
  493. package/dist/cli/chunks/schedule-CZKD6RIY.js +0 -2
  494. package/dist/cli/chunks/scheduler-BLA3Q4CH.js +0 -2
  495. package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +0 -2
  496. package/dist/cli/chunks/task-handler-P6IFLCKP.js +0 -62
  497. package/dist/cli/chunks/task-handlers-DPWMUKFC.js +0 -9
  498. package/dist/cli/chunks/test-runner-process-46IPK3GH.js +0 -2
  499. package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +0 -2
  500. package/dist/cli/chunks/unified-memory-FL26RTV3.js +0 -2
  501. package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +0 -2
  502. package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +0 -2
  503. package/dist/cli/chunks/visual-security-IJVPO5FA.js +0 -2
  504. package/dist/cli/chunks/witness-chain-5FAFCQKP.js +0 -2
  505. package/dist/cli/chunks/witness-chain-V2M32W5D.js +0 -2
  506. package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +0 -2
@@ -2,7 +2,7 @@
2
2
  * Agentic QE v3 - DAST Scanner Helper Functions
3
3
  * Utility functions for dynamic security analysis
4
4
  */
5
- import type { Vulnerability, ScanSummary, MemoryBackend } from './scanner-types.js';
5
+ import type { Vulnerability, ScanSummary, MemoryBackend, DASTRequestFailure } from './scanner-types.js';
6
6
  export { testXSS, testSQLi } from './dast-injection-testing.js';
7
7
  export { testAuthorizationBypass, testIDOR, validateCredentials, buildAuthHeaders, } from './dast-auth-testing.js';
8
8
  /**
@@ -20,23 +20,19 @@ export declare function analyzeServerHeaders(headers: Headers, targetUrl: string
20
20
  /**
21
21
  * Scan for sensitive file exposure
22
22
  */
23
- export declare function scanSensitiveFiles(parsedUrl: URL, crawledUrls: number, maxDepth: number, vulnerabilities: Vulnerability[]): Promise<number>;
23
+ export declare function scanSensitiveFiles(parsedUrl: URL, crawledUrls: number, maxDepth: number, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<number>;
24
24
  /**
25
25
  * Analyze CORS configuration
26
26
  */
27
- export declare function analyzeCORS(targetUrl: string, vulnerabilities: Vulnerability[]): Promise<void>;
27
+ export declare function analyzeCORS(targetUrl: string, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<void>;
28
28
  /**
29
29
  * Extract links from HTML and crawl discovered pages
30
30
  */
31
- export declare function extractAndCrawlLinks(html: string, baseUrl: URL, currentCrawled: number, maxDepth: number, vulnerabilities: Vulnerability[]): Promise<number>;
31
+ export declare function extractAndCrawlLinks(html: string, baseUrl: URL, currentCrawled: number, maxDepth: number, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<number>;
32
32
  /**
33
33
  * Analyze HTML forms for security issues
34
34
  */
35
35
  export declare function analyzeFormsForSecurityIssues(html: string, baseUrl: string, vulnerabilities: Vulnerability[]): void;
36
- /**
37
- * Handle fetch errors and add appropriate vulnerabilities
38
- */
39
- export declare function handleFetchError(fetchError: unknown, targetUrl: string, vulnerabilities: Vulnerability[]): void;
40
36
  /**
41
37
  * Calculate scan summary from vulnerabilities
42
38
  */
@@ -44,5 +40,8 @@ export declare function calculateSummary(vulnerabilities: Vulnerability[], total
44
40
  /**
45
41
  * Store scan results in memory
46
42
  */
47
- export declare function storeScanResults(memory: MemoryBackend, scanId: string, scanType: string, vulnerabilities: Vulnerability[], summary: ScanSummary): Promise<void>;
43
+ export declare function storeScanResults(memory: MemoryBackend, scanId: string, scanType: string, vulnerabilities: Vulnerability[], summary: ScanSummary, completeness?: {
44
+ status: string;
45
+ failedRequests: DASTRequestFailure[];
46
+ }): Promise<void>;
48
47
  //# sourceMappingURL=dast-helpers.d.ts.map
@@ -3,7 +3,7 @@
3
3
  * Utility functions for dynamic security analysis
4
4
  */
5
5
  import { v4 as uuidv4 } from 'uuid';
6
- import { toErrorMessage } from '../../../../shared/error-utils.js';
6
+ import { probe } from './dast-requests.js';
7
7
  // Re-export from specialized modules for convenience
8
8
  export { testXSS, testSQLi } from './dast-injection-testing.js';
9
9
  export { testAuthorizationBypass, testIDOR, validateCredentials, buildAuthHeaders, } from './dast-auth-testing.js';
@@ -100,7 +100,7 @@ export function analyzeServerHeaders(headers, targetUrl, vulnerabilities) {
100
100
  /**
101
101
  * Scan for sensitive file exposure
102
102
  */
103
- export async function scanSensitiveFiles(parsedUrl, crawledUrls, maxDepth, vulnerabilities) {
103
+ export async function scanSensitiveFiles(parsedUrl, crawledUrls, maxDepth, vulnerabilities, failures) {
104
104
  const sensitiveEndpoints = [
105
105
  { path: '/.git/config', name: 'Git Configuration' },
106
106
  { path: '/.env', name: 'Environment File' },
@@ -113,13 +113,13 @@ export async function scanSensitiveFiles(parsedUrl, crawledUrls, maxDepth, vulne
113
113
  if (crawledUrls >= maxDepth * 10)
114
114
  break;
115
115
  const testUrl = new URL(endpoint.path, parsedUrl.origin).toString();
116
- const testResponse = await fetch(testUrl, {
116
+ const testResponse = await probe(testUrl, {
117
117
  method: 'GET',
118
118
  signal: AbortSignal.timeout(5000),
119
- });
120
- if (testResponse.ok) {
119
+ }, failures);
120
+ if (testResponse?.ok) {
121
121
  crawledUrls++;
122
- const text = await testResponse.text();
122
+ const text = testResponse.text;
123
123
  if (text.length > 20 && !text.toLowerCase().includes('not found') && !text.toLowerCase().includes('404')) {
124
124
  const isSensitive = endpoint.path.includes('.git') ||
125
125
  endpoint.path.includes('.env') ||
@@ -148,15 +148,17 @@ export async function scanSensitiveFiles(parsedUrl, crawledUrls, maxDepth, vulne
148
148
  /**
149
149
  * Analyze CORS configuration
150
150
  */
151
- export async function analyzeCORS(targetUrl, vulnerabilities) {
152
- const corsResponse = await fetch(targetUrl, {
151
+ export async function analyzeCORS(targetUrl, vulnerabilities, failures) {
152
+ const corsResponse = await probe(targetUrl, {
153
153
  method: 'OPTIONS',
154
154
  headers: {
155
155
  'Origin': 'https://evil-attacker.com',
156
156
  'Access-Control-Request-Method': 'GET',
157
157
  },
158
158
  signal: AbortSignal.timeout(5000),
159
- });
159
+ }, failures);
160
+ if (!corsResponse)
161
+ return;
160
162
  const allowOrigin = corsResponse.headers.get('access-control-allow-origin');
161
163
  if (allowOrigin === '*' || allowOrigin === 'https://evil-attacker.com') {
162
164
  vulnerabilities.push({
@@ -177,7 +179,7 @@ export async function analyzeCORS(targetUrl, vulnerabilities) {
177
179
  /**
178
180
  * Extract links from HTML and crawl discovered pages
179
181
  */
180
- export async function extractAndCrawlLinks(html, baseUrl, currentCrawled, maxDepth, vulnerabilities) {
182
+ export async function extractAndCrawlLinks(html, baseUrl, currentCrawled, maxDepth, vulnerabilities, failures) {
181
183
  let crawledUrls = currentCrawled;
182
184
  const maxCrawl = maxDepth * 5;
183
185
  const linkPattern = /href=["']([^"']+)["']/gi;
@@ -200,12 +202,14 @@ export async function extractAndCrawlLinks(html, baseUrl, currentCrawled, maxDep
200
202
  if (crawledUrls >= maxCrawl)
201
203
  break;
202
204
  const crawlUrl = new URL(path, baseUrl.origin).toString();
203
- const crawlResponse = await fetch(crawlUrl, {
205
+ const crawlResponse = await probe(crawlUrl, {
204
206
  method: 'GET',
205
207
  headers: { 'User-Agent': 'AgenticQE-DAST-Scanner/3.0' },
206
208
  signal: AbortSignal.timeout(5000),
207
209
  redirect: 'follow',
208
- });
210
+ }, failures);
211
+ if (!crawlResponse)
212
+ continue;
209
213
  crawledUrls++;
210
214
  if (crawlResponse.ok) {
211
215
  if (path.includes('password') || path.includes('token') || path.includes('api_key')) {
@@ -220,7 +224,7 @@ export async function extractAndCrawlLinks(html, baseUrl, currentCrawled, maxDep
220
224
  references: ['https://owasp.org/www-community/vulnerabilities/Information_exposure_through_query_strings_in_url'],
221
225
  });
222
226
  }
223
- const responseText = await crawlResponse.text();
227
+ const responseText = crawlResponse.text;
224
228
  if (responseText.includes('Index of /') || responseText.includes('Directory listing for')) {
225
229
  vulnerabilities.push({
226
230
  id: uuidv4(),
@@ -308,36 +312,6 @@ export function analyzeFormsForSecurityIssues(html, baseUrl, vulnerabilities) {
308
312
  // ============================================================================
309
313
  // Utility Functions
310
314
  // ============================================================================
311
- /**
312
- * Handle fetch errors and add appropriate vulnerabilities
313
- */
314
- export function handleFetchError(fetchError, targetUrl, vulnerabilities) {
315
- const errorMsg = toErrorMessage(fetchError);
316
- if (errorMsg.includes('CERT') || errorMsg.includes('SSL') || errorMsg.includes('TLS') || errorMsg.includes('certificate')) {
317
- vulnerabilities.push({
318
- id: uuidv4(),
319
- title: 'TLS Certificate Error',
320
- description: `SSL/TLS error: ${errorMsg}`,
321
- severity: 'high',
322
- category: 'security-misconfiguration',
323
- location: { file: targetUrl },
324
- remediation: { description: 'Fix TLS certificate configuration', estimatedEffort: 'moderate', automatable: false },
325
- references: ['https://owasp.org/www-project-web-security-testing-guide/'],
326
- });
327
- }
328
- else if (errorMsg.includes('timeout') || errorMsg.includes('abort')) {
329
- vulnerabilities.push({
330
- id: uuidv4(),
331
- title: 'Connection Timeout',
332
- description: `Target did not respond within timeout: ${errorMsg}`,
333
- severity: 'informational',
334
- category: 'security-misconfiguration',
335
- location: { file: targetUrl },
336
- remediation: { description: 'Verify target is accessible', estimatedEffort: 'trivial', automatable: false },
337
- references: [],
338
- });
339
- }
340
- }
341
315
  /**
342
316
  * Calculate scan summary from vulnerabilities
343
317
  */
@@ -359,12 +333,13 @@ export function calculateSummary(vulnerabilities, totalFiles, scanDurationMs) {
359
333
  /**
360
334
  * Store scan results in memory
361
335
  */
362
- export async function storeScanResults(memory, scanId, scanType, vulnerabilities, summary) {
336
+ export async function storeScanResults(memory, scanId, scanType, vulnerabilities, summary, completeness) {
363
337
  await memory.set(`security:scan:${scanId}`, {
364
338
  scanId,
365
339
  scanType,
366
340
  vulnerabilities,
367
341
  summary,
342
+ ...completeness,
368
343
  timestamp: new Date().toISOString(),
369
344
  }, { namespace: 'security-compliance', ttl: 86400 * 7 });
370
345
  }
@@ -2,19 +2,19 @@
2
2
  * Agentic QE v3 - DAST Injection Testing
3
3
  * XSS and SQL injection testing utilities
4
4
  */
5
- import type { Vulnerability } from './scanner-types.js';
5
+ import type { Vulnerability, DASTRequestFailure } from './scanner-types.js';
6
6
  /**
7
7
  * Test for XSS vulnerabilities
8
8
  */
9
9
  export declare function testXSS(targetUrl: string, parsedUrl: URL, paramName: string, payloads: Array<{
10
10
  payload: string;
11
11
  name: string;
12
- }>, vulnerabilities: Vulnerability[]): Promise<void>;
12
+ }>, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<void>;
13
13
  /**
14
14
  * Test for SQL injection vulnerabilities
15
15
  */
16
16
  export declare function testSQLi(targetUrl: string, parsedUrl: URL, paramName: string, payloads: Array<{
17
17
  payload: string;
18
18
  name: string;
19
- }>, vulnerabilities: Vulnerability[]): Promise<void>;
19
+ }>, vulnerabilities: Vulnerability[], failures?: DASTRequestFailure[]): Promise<void>;
20
20
  //# sourceMappingURL=dast-injection-testing.d.ts.map
@@ -3,24 +3,25 @@
3
3
  * XSS and SQL injection testing utilities
4
4
  */
5
5
  import { v4 as uuidv4 } from 'uuid';
6
+ import { probe } from './dast-requests.js';
6
7
  // ============================================================================
7
8
  // Injection Testing
8
9
  // ============================================================================
9
10
  /**
10
11
  * Test for XSS vulnerabilities
11
12
  */
12
- export async function testXSS(targetUrl, parsedUrl, paramName, payloads, vulnerabilities) {
13
+ export async function testXSS(targetUrl, parsedUrl, paramName, payloads, vulnerabilities, failures) {
13
14
  for (const xss of payloads) {
14
15
  const testParams = new URLSearchParams(parsedUrl.search);
15
16
  testParams.set(paramName, xss.payload);
16
17
  const testUrl = `${parsedUrl.origin}${parsedUrl.pathname}?${testParams.toString()}`;
17
- const response = await fetch(testUrl, {
18
+ const response = await probe(testUrl, {
18
19
  method: 'GET',
19
20
  headers: { 'User-Agent': 'AgenticQE-DAST-Scanner/3.0' },
20
21
  signal: AbortSignal.timeout(5000),
21
- });
22
- if (response.ok) {
23
- const text = await response.text();
22
+ }, failures);
23
+ if (response?.ok) {
24
+ const text = response.text;
24
25
  const escapedPayload = xss.payload
25
26
  .replace(/&/g, '&amp;')
26
27
  .replace(/</g, '&lt;')
@@ -48,7 +49,7 @@ export async function testXSS(targetUrl, parsedUrl, paramName, payloads, vulnera
48
49
  /**
49
50
  * Test for SQL injection vulnerabilities
50
51
  */
51
- export async function testSQLi(targetUrl, parsedUrl, paramName, payloads, vulnerabilities) {
52
+ export async function testSQLi(targetUrl, parsedUrl, paramName, payloads, vulnerabilities, failures) {
52
53
  const sqlErrorPatterns = [
53
54
  /SQL syntax.*MySQL/i,
54
55
  /Warning.*mysql/i,
@@ -63,12 +64,15 @@ export async function testSQLi(targetUrl, parsedUrl, paramName, payloads, vulner
63
64
  const testParams = new URLSearchParams(parsedUrl.search);
64
65
  testParams.set(paramName, sqli.payload);
65
66
  const testUrl = `${parsedUrl.origin}${parsedUrl.pathname}?${testParams.toString()}`;
66
- const response = await fetch(testUrl, {
67
+ // SQL errors often come back as HTTP 500: that body is analysed.
68
+ const response = await probe(testUrl, {
67
69
  method: 'GET',
68
70
  headers: { 'User-Agent': 'AgenticQE-DAST-Scanner/3.0' },
69
71
  signal: AbortSignal.timeout(5000),
70
- });
71
- const text = await response.text();
72
+ }, failures, { analyzeServerErrors: true });
73
+ if (!response)
74
+ continue;
75
+ const text = response.text;
72
76
  for (const pattern of sqlErrorPatterns) {
73
77
  if (pattern.test(text)) {
74
78
  vulnerabilities.push({
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Agentic QE v3 - DAST request outcomes (#1092, #1135)
3
+ * Classifies what a DAST request did not answer, so a failed or partial scan
4
+ * is reported as such and never as a scan that found nothing.
5
+ */
6
+ import type { DASTRequestFailure } from './scanner-types.js';
7
+ /** Error carrying a DAST failure code. */
8
+ export type DASTError = Error & {
9
+ code: string;
10
+ };
11
+ export declare function dastError(message: string, code: string, cause?: unknown): DASTError;
12
+ export declare function isDastError(error: unknown): error is DASTError;
13
+ /**
14
+ * The scan subject must be an http(s) URL. Anything else is a validation
15
+ * error, not a completed scan with a synthetic finding (#1135).
16
+ */
17
+ export declare function parseDastTarget(targetUrl: string): URL;
18
+ /**
19
+ * A response status that says nothing about the target's security: the request
20
+ * was refused, throttled or not served. Findings from such a page would be the
21
+ * headers of the error page (#1092, #1135).
22
+ */
23
+ export declare function unansweredStatus(status: number): {
24
+ code: string;
25
+ label: string;
26
+ } | null;
27
+ /** Throws when the initial response cannot be scanned. */
28
+ export declare function assertScannableResponse(status: number): void;
29
+ /** Transport failure classification; TLS failures are told apart from a closed port (#1135). */
30
+ export declare function classifyRequestError(error: unknown): {
31
+ code: string;
32
+ reason: string;
33
+ };
34
+ /** Transport failures are execution errors, not absence of vulnerabilities. */
35
+ export declare function dastRequestFailure(error: unknown): DASTError;
36
+ export interface ProbeResponse {
37
+ readonly status: number;
38
+ readonly ok: boolean;
39
+ readonly headers: Headers;
40
+ readonly text: string;
41
+ }
42
+ export interface ProbeOptions {
43
+ /** A 5xx body is analysed (SQL error pages), not counted as unanswered. */
44
+ readonly analyzeServerErrors?: boolean;
45
+ }
46
+ /**
47
+ * A follow-up probe. When the target does not answer it (transport failure,
48
+ * timeout, 407/408/429, or 5xx unless `analyzeServerErrors`), the failure is
49
+ * recorded in `failures` and null is returned so the remaining probes still
50
+ * run and the scan is reported incomplete (#1135). Without `failures`, it throws.
51
+ */
52
+ export declare function probe(url: string, init: RequestInit, failures?: DASTRequestFailure[], options?: ProbeOptions): Promise<ProbeResponse | null>;
53
+ export declare function summarizeFailures(failures: readonly DASTRequestFailure[]): string;
54
+ //# sourceMappingURL=dast-requests.d.ts.map
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Agentic QE v3 - DAST request outcomes (#1092, #1135)
3
+ * Classifies what a DAST request did not answer, so a failed or partial scan
4
+ * is reported as such and never as a scan that found nothing.
5
+ */
6
+ export function dastError(message, code, cause) {
7
+ return Object.assign(new Error(message, cause === undefined ? undefined : { cause }), { code });
8
+ }
9
+ export function isDastError(error) {
10
+ return error instanceof Error && 'code' in error && /^DAST_[A-Z_]+$/.test(String(error.code));
11
+ }
12
+ /**
13
+ * The scan subject must be an http(s) URL. Anything else is a validation
14
+ * error, not a completed scan with a synthetic finding (#1135).
15
+ */
16
+ export function parseDastTarget(targetUrl) {
17
+ let parsed;
18
+ try {
19
+ parsed = new URL(targetUrl);
20
+ }
21
+ catch {
22
+ throw dastError('DAST target is not a valid URL; no dynamic analysis ran', 'DAST_INVALID_TARGET');
23
+ }
24
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
25
+ throw dastError(`DAST target must be an http(s) URL, not ${parsed.protocol}; no dynamic analysis ran`, 'DAST_INVALID_TARGET');
26
+ }
27
+ return parsed;
28
+ }
29
+ /**
30
+ * A response status that says nothing about the target's security: the request
31
+ * was refused, throttled or not served. Findings from such a page would be the
32
+ * headers of the error page (#1092, #1135).
33
+ */
34
+ export function unansweredStatus(status) {
35
+ if (status === 401 || status === 403 || status === 407)
36
+ return { code: 'DAST_AUTHENTICATION_FAILED', label: 'authentication rejected' };
37
+ if (status === 408)
38
+ return { code: 'DAST_REQUEST_TIMEOUT', label: 'request timed out' };
39
+ if (status === 429)
40
+ return { code: 'DAST_RATE_LIMITED', label: 'rate limited' };
41
+ if (status >= 500)
42
+ return { code: 'DAST_TARGET_UNAVAILABLE', label: 'target unavailable' };
43
+ return null;
44
+ }
45
+ /** Throws when the initial response cannot be scanned. */
46
+ export function assertScannableResponse(status) {
47
+ const unanswered = unansweredStatus(status);
48
+ if (unanswered) {
49
+ throw dastError(`DAST ${unanswered.label} (HTTP ${status}); dynamic analysis is incomplete`, unanswered.code);
50
+ }
51
+ }
52
+ const TLS_CODE = /^(ERR_TLS_|ERR_SSL_|ERR_CERT_|CERT_|UNABLE_TO_(GET|VERIFY)_|DEPTH_ZERO_SELF_SIGNED_CERT$|SELF_SIGNED_CERT_IN_CHAIN$|EPROTO$)/;
53
+ /** The errno-style code on an error or its causes (undici wraps it as `cause.code`). */
54
+ function causeCode(error) {
55
+ for (let current = error, depth = 0; current && depth < 5; depth++) {
56
+ const code = current.code;
57
+ if (typeof code === 'string' && /^[A-Z0-9_]{1,48}$/.test(code))
58
+ return code;
59
+ current = current.cause;
60
+ }
61
+ return undefined;
62
+ }
63
+ function isTimeout(error) {
64
+ return error instanceof Error && (error.name === 'TimeoutError' || error.name === 'AbortError' || /timeout|abort/i.test(error.message));
65
+ }
66
+ /** Transport failure classification; TLS failures are told apart from a closed port (#1135). */
67
+ export function classifyRequestError(error) {
68
+ const cause = causeCode(error);
69
+ if (isTimeout(error))
70
+ return { code: 'DAST_REQUEST_TIMEOUT', reason: cause ?? 'timeout' };
71
+ if (cause && TLS_CODE.test(cause))
72
+ return { code: 'DAST_TLS_FAILED', reason: cause };
73
+ return { code: 'DAST_REQUEST_FAILED', reason: cause ?? 'transport error' };
74
+ }
75
+ /** Transport failures are execution errors, not absence of vulnerabilities. */
76
+ export function dastRequestFailure(error) {
77
+ if (isDastError(error))
78
+ return error;
79
+ const { code, reason } = classifyRequestError(error);
80
+ const what = code === 'DAST_REQUEST_TIMEOUT' ? 'request timeout'
81
+ : code === 'DAST_TLS_FAILED' ? 'TLS handshake failed' : 'request failed';
82
+ return dastError(`DAST target ${what} (${reason}); dynamic analysis is incomplete`, code, error);
83
+ }
84
+ /** Origin and path only: probe URLs can carry user credentials or query tokens. */
85
+ function requestLabel(url) {
86
+ try {
87
+ const parsed = new URL(url);
88
+ return `${parsed.origin}${parsed.pathname}`;
89
+ }
90
+ catch {
91
+ return '(invalid url)';
92
+ }
93
+ }
94
+ /**
95
+ * A follow-up probe. When the target does not answer it (transport failure,
96
+ * timeout, 407/408/429, or 5xx unless `analyzeServerErrors`), the failure is
97
+ * recorded in `failures` and null is returned so the remaining probes still
98
+ * run and the scan is reported incomplete (#1135). Without `failures`, it throws.
99
+ */
100
+ export async function probe(url, init, failures, options = {}) {
101
+ try {
102
+ const response = await fetch(url, init);
103
+ const unanswered = response.status >= 500 && options.analyzeServerErrors ? null : unansweredStatus(response.status);
104
+ // 401/403 on a probed path is an answer: the path is protected.
105
+ if (unanswered && response.status !== 401 && response.status !== 403) {
106
+ await response.body?.cancel().catch(() => undefined);
107
+ throw dastError(`DAST probe ${unanswered.label} (HTTP ${response.status})`, unanswered.code);
108
+ }
109
+ return { status: response.status, ok: response.ok, headers: response.headers, text: await response.text() };
110
+ }
111
+ catch (error) {
112
+ const failure = isDastError(error)
113
+ ? { code: error.code, reason: error.message.replace(/^DAST probe /, '') }
114
+ : classifyRequestError(error);
115
+ if (!failures)
116
+ throw isDastError(error) ? error : dastRequestFailure(error);
117
+ failures.push({ url: requestLabel(url), ...failure });
118
+ return null;
119
+ }
120
+ }
121
+ export function summarizeFailures(failures) {
122
+ const codes = [...new Set(failures.map(failure => failure.code))].join(', ');
123
+ return `${failures.length} DAST request(s) were not answered (${codes}); findings cover only the answered requests`;
124
+ }
125
+ //# sourceMappingURL=dast-requests.js.map
@@ -42,6 +42,11 @@ export declare class DASTScanner {
42
42
  * Get scan status
43
43
  */
44
44
  getScanStatus(scanId: string): Promise<ScanStatus>;
45
+ /**
46
+ * #1135: probes the target did not answer leave the scan incomplete. The
47
+ * findings already collected are real and kept; the failed URLs are listed.
48
+ */
49
+ private toResult;
45
50
  /**
46
51
  * Perform dynamic (DAST) scanning on a target URL
47
52
  */
@@ -50,7 +55,6 @@ export declare class DASTScanner {
50
55
  * Perform authenticated dynamic scanning
51
56
  */
52
57
  private performAuthenticatedScan;
53
- private createInvalidUrlVuln;
54
58
  private createInsecureProtocolVuln;
55
59
  private createTokenInUrlVuln;
56
60
  /**