agentic-qe 3.10.2 → 3.10.3

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 (387) hide show
  1. package/.claude/skills/release/SKILL.md +10 -10
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +55 -0
  4. package/assets/grammars/tree-sitter-c_sharp.wasm +0 -0
  5. package/assets/grammars/tree-sitter-java.wasm +0 -0
  6. package/assets/grammars/tree-sitter-javascript.wasm +0 -0
  7. package/assets/grammars/tree-sitter-python.wasm +0 -0
  8. package/assets/grammars/tree-sitter-rust.wasm +0 -0
  9. package/assets/grammars/tree-sitter-swift.wasm +0 -0
  10. package/assets/grammars/tree-sitter-tsx.wasm +0 -0
  11. package/assets/grammars/tree-sitter-typescript.wasm +0 -0
  12. package/assets/skills/skills-manifest.json +1 -1
  13. package/dist/agents/claim-verifier/claim-verifier-service.js +4 -2
  14. package/dist/agents/claim-verifier/verifiers/test-verifier.js +31 -23
  15. package/dist/agents/devils-advocate/agent.js +1 -1
  16. package/dist/cli/bundle.js +5 -5
  17. package/dist/cli/chunks/adapter-BHPUKMJ5.js +2 -0
  18. package/dist/cli/chunks/{agent-booster-wasm-DHSIPFTH.js → agent-booster-wasm-NGC6LSQP.js} +2 -2
  19. package/dist/cli/chunks/{agent-handler-FPQVHGGT.js → agent-handler-P2IJE4GK.js} +2 -2
  20. package/dist/cli/chunks/{agent-memory-branch-OLOF5ZHV.js → agent-memory-branch-JXRJ5GKQ.js} +2 -2
  21. package/dist/cli/chunks/aqe-learning-engine-JQ5WD2HM.js +2 -0
  22. package/dist/cli/chunks/{audit-ALRYPHGP.js → audit-BMQ3VESB.js} +2 -2
  23. package/dist/cli/chunks/base-E32WLGY2.js +2 -0
  24. package/dist/cli/chunks/{hnswlib-node-ZGSUMHDC.js → better-sqlite3-HP4JZS6K.js} +2 -2
  25. package/dist/cli/chunks/{brain-handler-ROZUHCOT.js → brain-handler-SACNDFSW.js} +3 -3
  26. package/dist/cli/chunks/{branch-enumerator-VK7G4NKJ.js → branch-enumerator-LFOTVUDA.js} +2 -2
  27. package/dist/cli/chunks/{browser-Q2S75M2F.js → browser-FK7PRF3W.js} +2 -2
  28. package/dist/cli/chunks/browser-workflow-LNNXXAJG.js +2 -0
  29. package/dist/cli/chunks/{chunk-UWXH2UQK.js → chunk-2EQVYYBF.js} +2 -2
  30. package/dist/cli/chunks/{chunk-JF53LRBL.js → chunk-2L73WXA4.js} +2 -2
  31. package/dist/cli/chunks/{chunk-5HB54RUS.js → chunk-2ULVCLOW.js} +2 -2
  32. package/dist/cli/chunks/{chunk-UUFOHMUG.js → chunk-3HBWDG62.js} +2 -2
  33. package/dist/cli/chunks/{chunk-22D6VBPD.js → chunk-3JAOFKEU.js} +2 -2
  34. package/dist/cli/chunks/{chunk-XPCNUX2U.js → chunk-3LRK7PYN.js} +2 -2
  35. package/dist/cli/chunks/{chunk-WNR2KAUH.js → chunk-3RZL4QTT.js} +2 -2
  36. package/dist/cli/chunks/chunk-3VF3HCG4.js +2 -0
  37. package/dist/cli/chunks/{chunk-3Z4FHA2E.js → chunk-3X2ZQ55B.js} +4 -4
  38. package/dist/cli/chunks/{chunk-YACT5WFC.js → chunk-4CYLSXA6.js} +2 -2
  39. package/dist/cli/chunks/{chunk-7QRMARM7.js → chunk-4OUAHZX2.js} +2 -2
  40. package/dist/cli/chunks/{chunk-G5U6Q42D.js → chunk-4QFAUSWQ.js} +2 -2
  41. package/dist/cli/chunks/{chunk-SJH3HYNC.js → chunk-5ER3COX3.js} +2 -2
  42. package/dist/cli/chunks/{chunk-LZCBSFAU.js → chunk-5EWWA4QP.js} +4 -4
  43. package/dist/cli/chunks/{chunk-VSUTI4G6.js → chunk-5G5AAEFF.js} +2 -2
  44. package/dist/cli/chunks/{chunk-7V5UHLNY.js → chunk-5IBJURYB.js} +3 -3
  45. package/dist/cli/chunks/chunk-5LON3MLI.js +2 -0
  46. package/dist/cli/chunks/{chunk-3RHHKYUR.js → chunk-5SGEOO2F.js} +2 -2
  47. package/dist/cli/chunks/{chunk-6NZHEM4V.js → chunk-6B4S7PKP.js} +3 -3
  48. package/dist/cli/chunks/{chunk-MEY43PIQ.js → chunk-6FL3GN4T.js} +2 -2
  49. package/dist/cli/chunks/{chunk-Y63MBMOV.js → chunk-6GCOIIHY.js} +2 -2
  50. package/dist/cli/chunks/{chunk-EQBEGDTG.js → chunk-6Q2PPOOF.js} +1 -1
  51. package/dist/cli/chunks/{chunk-PXTDEO65.js → chunk-6ZK24V2Y.js} +2 -2
  52. package/dist/cli/chunks/{chunk-7Z46RDDV.js → chunk-72LE6PHL.js} +3 -3
  53. package/dist/cli/chunks/{chunk-SVYTN2GT.js → chunk-7RMZAVGO.js} +2 -2
  54. package/dist/cli/chunks/{chunk-S3OZ7XSY.js → chunk-7SEHQTYD.js} +1 -1
  55. package/dist/cli/chunks/{chunk-UYYBPWU3.js → chunk-7YYTTWGY.js} +1 -1
  56. package/dist/cli/chunks/{chunk-DRWGK3YO.js → chunk-7ZSPCGTI.js} +2 -2
  57. package/dist/cli/chunks/{chunk-UVU7XLJY.js → chunk-ADV4DH3W.js} +5 -5
  58. package/dist/cli/chunks/{chunk-FO43SQXP.js → chunk-AEJVOJPT.js} +2 -2
  59. package/dist/cli/chunks/{chunk-ETN5563K.js → chunk-B5MMDMH6.js} +2 -2
  60. package/dist/cli/chunks/{chunk-ZXTO4C7R.js → chunk-BO2OV2RH.js} +2 -2
  61. package/dist/cli/chunks/{chunk-TJKDATEU.js → chunk-BT3QLWII.js} +2 -2
  62. package/dist/cli/chunks/{chunk-AV7KYE5P.js → chunk-BWP3UVPE.js} +5 -5
  63. package/dist/cli/chunks/{chunk-PEK6NGVJ.js → chunk-C6BBRM2J.js} +1 -1
  64. package/dist/cli/chunks/{chunk-ORF2UKQH.js → chunk-CAMEFWRK.js} +1 -1
  65. package/dist/cli/chunks/{chunk-EVCOCGVJ.js → chunk-CNEWYJKT.js} +4 -4
  66. package/dist/cli/chunks/{chunk-MYWQTCS4.js → chunk-CTDO2UB2.js} +1 -1
  67. package/dist/cli/chunks/{chunk-2OH3ALYB.js → chunk-D2FBUOAR.js} +1 -1
  68. package/dist/cli/chunks/{chunk-ZDHMZPSL.js → chunk-DF3MJ2YL.js} +1 -1
  69. package/dist/cli/chunks/{chunk-7SJX4CFK.js → chunk-DY5KEOHX.js} +1 -1
  70. package/dist/cli/chunks/{chunk-DZZEHPSJ.js → chunk-E2BJT6A7.js} +3 -3
  71. package/dist/cli/chunks/{chunk-2244IFZA.js → chunk-EETVN2OJ.js} +1 -1
  72. package/dist/cli/chunks/{chunk-FY3CUPNN.js → chunk-ERYMAYJW.js} +2 -2
  73. package/dist/cli/chunks/{chunk-ZK2BH23O.js → chunk-FJGSEPFL.js} +2 -2
  74. package/dist/cli/chunks/{chunk-HJORBNXW.js → chunk-FLTPHVZ3.js} +1 -1
  75. package/dist/cli/chunks/{chunk-RLXTBL3H.js → chunk-FND6V2RV.js} +22 -22
  76. package/dist/cli/chunks/{chunk-PIZYRPMT.js → chunk-FU77CDEM.js} +2 -2
  77. package/dist/cli/chunks/{chunk-HA63NBFK.js → chunk-GELF4ILR.js} +37 -37
  78. package/dist/cli/chunks/{chunk-U3EUH6LX.js → chunk-GHNNJHH3.js} +2 -2
  79. package/dist/cli/chunks/{chunk-NZO4WUSO.js → chunk-GJUGSH7T.js} +3 -3
  80. package/dist/cli/chunks/{chunk-QJ2EHLJ2.js → chunk-GL3HZN3O.js} +1 -1
  81. package/dist/cli/chunks/{chunk-MMIQ5DMA.js → chunk-H56AROF2.js} +2 -2
  82. package/dist/cli/chunks/{chunk-AWFIEGR3.js → chunk-HAO3SPOE.js} +2 -2
  83. package/dist/cli/chunks/{chunk-MNUTRAUV.js → chunk-HM523MTQ.js} +1 -1
  84. package/dist/cli/chunks/{chunk-IICTTDAA.js → chunk-HMFEPKAR.js} +2 -2
  85. package/dist/cli/chunks/{chunk-4GTDW2XL.js → chunk-HQJMCTWN.js} +2 -2
  86. package/dist/cli/chunks/{chunk-5PL7WTCU.js → chunk-HRLXU4LH.js} +2 -2
  87. package/dist/cli/chunks/{chunk-5WJ3FWL4.js → chunk-HWM2XJ3P.js} +24 -24
  88. package/dist/cli/chunks/{chunk-BQCSCAUC.js → chunk-I42R57ON.js} +2 -2
  89. package/dist/cli/chunks/chunk-IL2KOW5W.js +2 -0
  90. package/dist/cli/chunks/{chunk-QSE67XJO.js → chunk-IRR7YA3Q.js} +2 -2
  91. package/dist/cli/chunks/{chunk-FPAW77XV.js → chunk-JD2PG4KS.js} +1 -1
  92. package/dist/cli/chunks/{chunk-LQTWPSYL.js → chunk-JE3C7JYN.js} +1 -1
  93. package/dist/cli/chunks/{chunk-6KSCXPPL.js → chunk-JLL27IGU.js} +2 -2
  94. package/dist/cli/chunks/{chunk-7DKYCVJI.js → chunk-JOLDCS6X.js} +2 -2
  95. package/dist/cli/chunks/{chunk-YNNOY3XN.js → chunk-JP63XACW.js} +2 -2
  96. package/dist/cli/chunks/{chunk-ZQUXNG5X.js → chunk-JSFYPLMQ.js} +2 -2
  97. package/dist/cli/chunks/{chunk-MNV3E5KY.js → chunk-JTF6D2RJ.js} +4 -4
  98. package/dist/cli/chunks/{chunk-OXCEUR5F.js → chunk-JTZ3Q2QS.js} +2 -2
  99. package/dist/cli/chunks/{chunk-OPFN5LFT.js → chunk-JXIPRMAY.js} +4 -4
  100. package/dist/cli/chunks/{chunk-XDU624HU.js → chunk-KG5SM36Y.js} +1 -1
  101. package/dist/cli/chunks/{chunk-SW4OKUTC.js → chunk-KTRB3L53.js} +2 -2
  102. package/dist/cli/chunks/{chunk-MCZHKXB4.js → chunk-L74CHKFR.js} +2 -2
  103. package/dist/cli/chunks/{chunk-2EDWGHDA.js → chunk-LZ6TNTGO.js} +2 -2
  104. package/dist/cli/chunks/{chunk-5PRFFHFV.js → chunk-M5CDW2ZH.js} +2 -2
  105. package/dist/cli/chunks/{chunk-PYIHZXCI.js → chunk-MBSJ5G4I.js} +4 -4
  106. package/dist/cli/chunks/{chunk-OIRZJCZY.js → chunk-MC7K44M4.js} +2 -2
  107. package/dist/cli/chunks/{chunk-2JDLQWSV.js → chunk-MQOFFRTA.js} +2 -2
  108. package/dist/cli/chunks/{chunk-4BXGVM2C.js → chunk-N7IBYDW5.js} +1 -1
  109. package/dist/cli/chunks/{chunk-MCOFJHSJ.js → chunk-NEYYLAYS.js} +5 -5
  110. package/dist/cli/chunks/{chunk-A5RMQG4N.js → chunk-NNVXHC74.js} +3 -3
  111. package/dist/cli/chunks/{chunk-QBRHKTFT.js → chunk-NNZMEYLT.js} +1 -1
  112. package/dist/cli/chunks/{chunk-WDMPJ2M2.js → chunk-NRCL3WCP.js} +2 -2
  113. package/dist/cli/chunks/{chunk-ZGNZJJFF.js → chunk-NXPFGPHV.js} +1 -1
  114. package/dist/cli/chunks/{chunk-AH7FXNFE.js → chunk-NZHOKLII.js} +3 -3
  115. package/dist/cli/chunks/{chunk-EA7ZSN3V.js → chunk-OG7CWWFR.js} +1 -1
  116. package/dist/cli/chunks/{chunk-YWZHMXTO.js → chunk-OPDTDKN3.js} +2 -2
  117. package/dist/cli/chunks/{chunk-24LUQICS.js → chunk-OX4R55T3.js} +2 -2
  118. package/dist/cli/chunks/{chunk-QEPFXY6G.js → chunk-PFCAMX6H.js} +1 -1
  119. package/dist/cli/chunks/{chunk-DMQPO43S.js → chunk-PL5SLO2W.js} +1 -1
  120. package/dist/cli/chunks/{chunk-XGBAHAGC.js → chunk-PZHZPX3O.js} +4 -4
  121. package/dist/cli/chunks/{chunk-HJME6G5M.js → chunk-Q7EBD24B.js} +1 -1
  122. package/dist/cli/chunks/{chunk-4F3ZTXHP.js → chunk-QEODION5.js} +2 -2
  123. package/dist/cli/chunks/{chunk-AIUSZC6K.js → chunk-QM65UGPV.js} +2 -2
  124. package/dist/cli/chunks/{chunk-HHCYSAH3.js → chunk-QWG76RHA.js} +2 -2
  125. package/dist/cli/chunks/{chunk-5QHSLWLP.js → chunk-R5ONQAQL.js} +2 -2
  126. package/dist/cli/chunks/{chunk-S3ZO7JXS.js → chunk-RNF47IJ5.js} +4 -4
  127. package/dist/cli/chunks/{chunk-AOI67HA3.js → chunk-RTDHWOAG.js} +1 -1
  128. package/dist/cli/chunks/{chunk-C2M74HCN.js → chunk-RZCAA2PZ.js} +1 -1
  129. package/dist/cli/chunks/{chunk-7IVQ6OVR.js → chunk-SL6YZAT4.js} +2 -2
  130. package/dist/cli/chunks/{chunk-KB5L5TTF.js → chunk-SNTMAVPH.js} +5 -5
  131. package/dist/cli/chunks/{chunk-XTCUN36Z.js → chunk-SWOG3PBD.js} +2 -2
  132. package/dist/cli/chunks/{chunk-7IZ2OPC2.js → chunk-T63EK6GH.js} +2 -2
  133. package/dist/cli/chunks/chunk-U6UK3UMX.js +59 -0
  134. package/dist/cli/chunks/{chunk-7SWD3D6Y.js → chunk-U7NMPZE2.js} +2 -2
  135. package/dist/cli/chunks/{chunk-THRTUW4Z.js → chunk-UDV4YB42.js} +1 -1
  136. package/dist/cli/chunks/{chunk-CV2SBMBW.js → chunk-UHDBM7QS.js} +2 -2
  137. package/dist/cli/chunks/{chunk-CIRPP7RQ.js → chunk-UIJFU4KD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-L7VIX22Y.js → chunk-USFZ4IJD.js} +2 -2
  139. package/dist/cli/chunks/{chunk-CMACGG4Z.js → chunk-UZL366ZI.js} +1 -1
  140. package/dist/cli/chunks/{chunk-QQNCSEZG.js → chunk-VDTFRMES.js} +2 -2
  141. package/dist/cli/chunks/{chunk-6ZFHIKQG.js → chunk-VIWIO27R.js} +3 -3
  142. package/dist/cli/chunks/{chunk-YI6GNRQM.js → chunk-VRXY4T22.js} +2 -2
  143. package/dist/cli/chunks/{chunk-WSVUSIAZ.js → chunk-WPVCSFDA.js} +2 -2
  144. package/dist/cli/chunks/{chunk-X2VAOIUY.js → chunk-WWD5IWTV.js} +1 -1
  145. package/dist/cli/chunks/{chunk-WZJUMJ2S.js → chunk-X2B7SANM.js} +1 -1
  146. package/dist/cli/chunks/{chunk-R2O6OKT2.js → chunk-X3RJ6SFC.js} +1 -1
  147. package/dist/cli/chunks/{chunk-OWQ6HEYI.js → chunk-XTP2GHI7.js} +2 -2
  148. package/dist/cli/chunks/{chunk-XRJECWZE.js → chunk-YDDZJCKY.js} +1 -1
  149. package/dist/cli/chunks/{chunk-HO37VP4O.js → chunk-YDKYLNKZ.js} +1 -1
  150. package/dist/cli/chunks/{chunk-ON4D4TJ4.js → chunk-YIYV2JB6.js} +2 -2
  151. package/dist/cli/chunks/{chunk-RNREAOY4.js → chunk-YX2HY4MX.js} +2 -2
  152. package/dist/cli/chunks/{chunk-XDSA7YUQ.js → chunk-YXH2CVAF.js} +1 -1
  153. package/dist/cli/chunks/{chunk-XMJTTF5N.js → chunk-YYAPO3CU.js} +3 -3
  154. package/dist/cli/chunks/{chunk-STEGWLH5.js → chunk-Z2K5IZM6.js} +2 -2
  155. package/dist/cli/chunks/{chunk-OIEQF7PG.js → chunk-ZG4P3DTL.js} +2 -2
  156. package/dist/cli/chunks/{chunk-CTDLI2ON.js → chunk-ZXQNE4QV.js} +1 -1
  157. package/dist/cli/chunks/{ci-PYCRCL7G.js → ci-AWZ3S5OT.js} +6 -6
  158. package/dist/cli/chunks/{ci-output-EKQQFE2D.js → ci-output-JLCYTIMT.js} +2 -2
  159. package/dist/cli/chunks/{circuit-breaker-RH3Q2MJO.js → circuit-breaker-BJDKBDIL.js} +2 -2
  160. package/dist/cli/chunks/{claude-flow-setup-DUDXB4VV.js → claude-flow-setup-KKOP5ZMO.js} +2 -2
  161. package/dist/cli/chunks/client-2UKBYFX4.js +2 -0
  162. package/dist/cli/chunks/{cline-installer-3Q4WIWUG.js → cline-installer-7M525SEA.js} +2 -2
  163. package/dist/cli/chunks/{code-E4Q6DGOO.js → code-27SUVJDO.js} +20 -19
  164. package/dist/cli/chunks/{code-index-extractor-2PCISUOW.js → code-index-extractor-TTQQZLAK.js} +2 -2
  165. package/dist/cli/chunks/{codex-installer-YNNNOLJ6.js → codex-installer-GHNGNPKP.js} +2 -2
  166. package/dist/cli/chunks/{completions-2F7TUFBD.js → completions-JPJD24DG.js} +2 -2
  167. package/dist/cli/chunks/{complexity-analyzer-2B6MHO7W.js → complexity-analyzer-Q74EJV33.js} +2 -2
  168. package/dist/cli/chunks/{continuedev-installer-ENOKRU5M.js → continuedev-installer-ULTRDIML.js} +2 -2
  169. package/dist/cli/chunks/{copilot-installer-6YD2KM5F.js → copilot-installer-EK52X4CG.js} +2 -2
  170. package/dist/cli/chunks/{cost-tracker-FCH4QOEA.js → cost-tracker-2GKBRYXL.js} +2 -2
  171. package/dist/cli/chunks/{coverage-JTOXZE3T.js → coverage-YCLC3W2A.js} +3 -3
  172. package/dist/cli/chunks/cross-domain-router-FPM3L27L.js +2 -0
  173. package/dist/cli/chunks/{cursor-installer-QZFBUGLQ.js → cursor-installer-B3ALFW5E.js} +2 -2
  174. package/dist/cli/chunks/{daemon-M422U3ZA.js → daemon-YWINEHG4.js} +4 -4
  175. package/dist/cli/chunks/{daemon-K4QFB5FQ.js → daemon-ZKEBVLJA.js} +3 -3
  176. package/dist/cli/chunks/{dag-attention-scheduler-BXAAW33V.js → dag-attention-scheduler-OQPJ6ULA.js} +2 -2
  177. package/dist/cli/chunks/{detect-UGSWIOAD.js → detect-YMYIQH3Q.js} +2 -2
  178. package/dist/cli/chunks/{dist-node-FN3HX3OK.js → dist-node-R4FAYQRY.js} +2 -2
  179. package/dist/cli/chunks/{domain-handler-7PP7VYA7.js → domain-handler-IGWXLF2S.js} +2 -2
  180. package/dist/cli/chunks/{domain-transfer-XZM44W7I.js → domain-transfer-A7YNO76C.js} +2 -2
  181. package/dist/cli/chunks/dream-XM33US3V.js +2 -0
  182. package/dist/cli/chunks/{embed-and-insert-pattern-JZVERJ5L.js → embed-and-insert-pattern-KODZAS7Y.js} +2 -2
  183. package/dist/cli/chunks/{eval-466NFF2D.js → eval-ALQW7Q2S.js} +3 -3
  184. package/dist/cli/chunks/{experience-capture-middleware-I7IQCC7V.js → experience-capture-middleware-3WK4RXWK.js} +3 -3
  185. package/dist/cli/chunks/{fast-paths-34OICNZA.js → fast-paths-PQWDFIJZ.js} +2 -2
  186. package/dist/cli/chunks/{feature-flags-X5WBBWSO.js → feature-flags-6X33B3WX.js} +2 -2
  187. package/dist/cli/chunks/{feature-flags-6UBIVTAD.js → feature-flags-JRUAZCND.js} +2 -2
  188. package/dist/cli/chunks/{file-discovery-NLMDBWXX.js → file-discovery-SA3YU3IH.js} +2 -2
  189. package/dist/cli/chunks/{fleet-W7CYCHDI.js → fleet-7TXCAOKQ.js} +3 -3
  190. package/dist/cli/chunks/{gnn-wrapper-K4VTAG5X.js → gnn-wrapper-ZKNYACEC.js} +2 -2
  191. package/dist/cli/chunks/{heartbeat-handler-ZGKF2Z6T.js → heartbeat-handler-KRZRZ23F.js} +4 -4
  192. package/dist/cli/chunks/heartbeat-scheduler-GM3M2MTG.js +2 -0
  193. package/dist/cli/chunks/hnsw-adapter-K62GEHIL.js +2 -0
  194. package/dist/cli/chunks/hnsw-index-VCAK3TWN.js +2 -0
  195. package/dist/cli/chunks/{hnsw-legacy-bridge-ELDRLKK5.js → hnsw-legacy-bridge-LVHQ5SG7.js} +2 -2
  196. package/dist/cli/chunks/{better-sqlite3-5BT5FO64.js → hnswlib-node-64EGGWIC.js} +2 -2
  197. package/dist/cli/chunks/{hooks-T4CBINAV.js → hooks-6Y3UHYI2.js} +12 -12
  198. package/dist/cli/chunks/hybrid-router-432QNCNG.js +2 -0
  199. package/dist/cli/chunks/{hypergraph-engine-UWFW3XP5.js → hypergraph-engine-2EZBZMFK.js} +2 -2
  200. package/dist/cli/chunks/{hypergraph-handler-PK2BI46K.js → hypergraph-handler-GLPWYII2.js} +3 -3
  201. package/dist/cli/chunks/impact-analyzer-VTSISNN4.js +2 -0
  202. package/dist/cli/chunks/{init-handler-HNG6KJOU.js → init-handler-ZSDO5VMA.js} +6 -6
  203. package/dist/cli/chunks/init-wizard-COB5AH7Q.js +2 -0
  204. package/dist/cli/chunks/kernel-ROK7X5FM.js +2 -0
  205. package/dist/cli/chunks/{kilocode-installer-25V7FEJ4.js → kilocode-installer-ATYSDWIV.js} +2 -2
  206. package/dist/cli/chunks/{kiro-installer-7RMTTCQB.js → kiro-installer-K66YT6PC.js} +2 -2
  207. package/dist/cli/chunks/knowledge-graph-YUWIDIWW.js +2 -0
  208. package/dist/cli/chunks/{learning-XQC2MG2R.js → learning-BVYCC4RI.js} +3 -3
  209. package/dist/cli/chunks/{llm-router-6KTTONH4.js → llm-router-VBCXE6DN.js} +12 -12
  210. package/dist/cli/chunks/llm-router-service-7VLXJ7VE.js +2 -0
  211. package/dist/cli/chunks/{load-BV64P3AL.js → load-AREDQE2U.js} +2 -2
  212. package/dist/cli/chunks/load-test-32524DL3.js +2 -0
  213. package/dist/cli/chunks/{mcp-U5ZN77TA.js → mcp-NG6H6UC5.js} +2 -2
  214. package/dist/cli/chunks/{memory-WB5BNBK7.js → memory-Y65EHG6N.js} +5 -5
  215. package/dist/cli/chunks/memory-backend-BI2V5AAB.js +2 -0
  216. package/dist/cli/chunks/memory-handlers-NSOFWVFN.js +2 -0
  217. package/dist/cli/chunks/{multi-model-executor-3X3W3UTY.js → multi-model-executor-VRPRFUZT.js} +2 -2
  218. package/dist/cli/chunks/{opencode-installer-TTTMG7ZZ.js → opencode-installer-CKQXPM5R.js} +3 -3
  219. package/dist/cli/chunks/{orchestrator-BLCGSHMZ.js → orchestrator-I7JBKD6G.js} +8 -8
  220. package/dist/cli/chunks/{pipeline-DZPGMRG7.js → pipeline-MV2RWCBI.js} +2 -2
  221. package/dist/cli/chunks/{platform-EVMZAUNV.js → platform-VU5P3SOG.js} +2 -2
  222. package/dist/cli/chunks/{plugin-OR55K4HT.js → plugin-6TERLKCB.js} +2 -2
  223. package/dist/cli/chunks/{prime-radiant-advanced-wasm-4ODV27HD.js → prime-radiant-advanced-wasm-WIUIN2DL.js} +2 -2
  224. package/dist/cli/chunks/protocol-executor-2UPB7SPI.js +2 -0
  225. package/dist/cli/chunks/{protocol-handler-ZOTI5PID.js → protocol-handler-HKWBGARO.js} +2 -2
  226. package/dist/cli/chunks/{prove-DIMBYJ7V.js → prove-7CQPHBRJ.js} +2 -2
  227. package/dist/cli/chunks/provider-manager-PDT37MIJ.js +2 -0
  228. package/dist/cli/chunks/qe-reasoning-bank-AQQ2BI4V.js +2 -0
  229. package/dist/cli/chunks/{quality-7MX4VL6M.js → quality-VLUVXKVG.js} +2 -2
  230. package/dist/cli/chunks/queen-coordinator-6DVDVEU4.js +2 -0
  231. package/dist/cli/chunks/{real-embeddings-YPUHWRN2.js → real-embeddings-JPZ64KK2.js} +2 -2
  232. package/dist/cli/chunks/{roocode-installer-WG5AU4QM.js → roocode-installer-NONVB3UE.js} +2 -2
  233. package/dist/cli/chunks/router-O2G4KQ6L.js +2 -0
  234. package/dist/cli/chunks/routing-feedback-TAGTD3KQ.js +2 -0
  235. package/dist/cli/chunks/{routing-handler-LZB4MN2K.js → routing-handler-YYXDT4J2.js} +2 -2
  236. package/dist/cli/chunks/{ruvector-commands-YE4ADBMC.js → ruvector-commands-5PFMNDLR.js} +2 -2
  237. package/dist/cli/chunks/{rvf-dual-writer-QS5ATW4C.js → rvf-dual-writer-TF6H7AXH.js} +2 -2
  238. package/dist/cli/chunks/{rvf-migration-adapter-YIGKSBD3.js → rvf-migration-adapter-VNGIUZCO.js} +2 -2
  239. package/dist/cli/chunks/{rvf-migration-coordinator-2NDCWP7F.js → rvf-migration-coordinator-VA52YAIY.js} +2 -2
  240. package/dist/cli/chunks/rvf-native-adapter-46GRWQJR.js +2 -0
  241. package/dist/cli/chunks/safe-db-LNIPXXHH.js +2 -0
  242. package/dist/cli/chunks/schedule-AUH3ZALY.js +2 -0
  243. package/dist/cli/chunks/scheduler-KK3OYPWW.js +2 -0
  244. package/dist/cli/chunks/{security-HT4SUT24.js → security-62HEETBF.js} +3 -3
  245. package/dist/cli/chunks/{shared-rvf-adapter-4IZOJL33.js → shared-rvf-adapter-XWTQPGCT.js} +2 -2
  246. package/dist/cli/chunks/{shared-rvf-dual-writer-ZKFO7CBY.js → shared-rvf-dual-writer-JTZK7LRD.js} +2 -2
  247. package/dist/cli/chunks/sqlite-persistence-CYESP7NG.js +2 -0
  248. package/dist/cli/chunks/{status-handler-AMEMKBI4.js → status-handler-LSUPUKRF.js} +2 -2
  249. package/dist/cli/chunks/{structural-health-RBADRLC3.js → structural-health-Z75A666N.js} +2 -2
  250. package/dist/cli/chunks/{sync-PCB23M4K.js → sync-M3O4T3A3.js} +2 -2
  251. package/dist/cli/chunks/{sync-ARDDLQBS.js → sync-VI37UHHH.js} +2 -2
  252. package/dist/cli/chunks/{task-handler-J26FSCH5.js → task-handler-AQBSZAQC.js} +2 -2
  253. package/dist/cli/chunks/{task-handlers-AQRLR6BL.js → task-handlers-BOZP247V.js} +3 -3
  254. package/dist/cli/chunks/{test-YXWSIOSB.js → test-FTEGPNN2.js} +4 -4
  255. package/dist/cli/chunks/{test-scheduling-XY532GI4.js → test-scheduling-IGR4U2VQ.js} +4 -4
  256. package/dist/cli/chunks/{token-bootstrap-KL2QIQ36.js → token-bootstrap-2DFRVMBM.js} +2 -2
  257. package/dist/cli/chunks/{token-usage-2MJVE4DT.js → token-usage-VCHV47EO.js} +3 -3
  258. package/dist/cli/chunks/{transformers-QSNTOD2Z.js → transformers-M27QSNFH.js} +2 -2
  259. package/dist/cli/chunks/tree-sitter-wasm-parser-IIGEJYFU.js +2 -0
  260. package/dist/cli/chunks/{types-RNKRSYMO.js → types-RQFPUUKA.js} +2 -2
  261. package/dist/cli/chunks/unified-memory-RISHEANP.js +2 -0
  262. package/dist/cli/chunks/unified-memory-hnsw-2IKXGMNZ.js +2 -0
  263. package/dist/cli/chunks/unified-persistence-ZTTUJNTU.js +2 -0
  264. package/dist/cli/chunks/{upgrade-EKJHIFWP.js → upgrade-VJMYX3AL.js} +2 -2
  265. package/dist/cli/chunks/{validate-KS4T7LWC.js → validate-ML7HUAU5.js} +4 -4
  266. package/dist/cli/chunks/{validate-swarm-SKKWRP2H.js → validate-swarm-RCR6EYRC.js} +7 -7
  267. package/dist/cli/chunks/{vibium-FLUQO4IF.js → vibium-ZOOS3W5L.js} +2 -2
  268. package/dist/cli/chunks/visual-security-D66DTAO5.js +2 -0
  269. package/dist/cli/chunks/{web-tree-sitter-UMC63DWD.js → web-tree-sitter-2YPGYLWK.js} +2 -2
  270. package/dist/cli/chunks/{windsurf-installer-V3FQGJIQ.js → windsurf-installer-GOJWUWC5.js} +2 -2
  271. package/dist/cli/chunks/{witness-chain-GE74TLSO.js → witness-chain-3MGSS3Q4.js} +2 -2
  272. package/dist/cli/chunks/witness-chain-RHWHHDLV.js +2 -0
  273. package/dist/cli/chunks/{workflow-4YZ2RPWA.js → workflow-B5Q77BI4.js} +4 -4
  274. package/dist/cli/chunks/workflow-orchestrator-OQMFW2TC.js +2 -0
  275. package/dist/cli/chunks/{wrappers-37NLMKPE.js → wrappers-MM5VLEPG.js} +2 -2
  276. package/dist/cli/commands/code.js +6 -0
  277. package/dist/cli/commands/learning.js +5 -5
  278. package/dist/cli/commands/llm-router.js +1 -1
  279. package/dist/cli/commands/workflow.js +1 -0
  280. package/dist/coordination/consensus/providers/native-learning-provider.d.ts +1 -1
  281. package/dist/coordination/consensus/providers/ollama-provider.d.ts +1 -1
  282. package/dist/coordination/consensus/providers/openrouter-provider.d.ts +1 -1
  283. package/dist/coordination/handlers/code-intelligence-handlers.js +6 -0
  284. package/dist/coordination/mincut/neural-goap.js +24 -20
  285. package/dist/coordination/protocols/code-intelligence-index.js +31 -25
  286. package/dist/coordination/queen-coordinator.js +4 -0
  287. package/dist/coordination/queen-work-stealing.js +1 -2
  288. package/dist/domains/chaos-resilience/coordinator.js +19 -15
  289. package/dist/domains/chaos-resilience/services/chaos-engineer.js +5 -2
  290. package/dist/domains/chaos-resilience/services/load-tester.js +15 -11
  291. package/dist/domains/code-intelligence/interfaces.d.ts +5 -0
  292. package/dist/domains/code-intelligence/services/c4-model/index.js +12 -6
  293. package/dist/domains/code-intelligence/services/impact-analyzer.js +6 -2
  294. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +42 -0
  295. package/dist/domains/code-intelligence/services/knowledge-graph.js +278 -93
  296. package/dist/domains/code-intelligence/services/semantic-analyzer.js +8 -2
  297. package/dist/domains/contract-testing/coordinator.js +1 -1
  298. package/dist/domains/coverage-analysis/coordinator.js +4 -2
  299. package/dist/domains/learning-optimization/coordinator.js +1 -0
  300. package/dist/domains/quality-assessment/coherence/gate-controller.js +32 -26
  301. package/dist/domains/requirements-validation/coordinator.js +1 -0
  302. package/dist/domains/test-execution/services/e2e/wait-condition-handler.js +1 -1
  303. package/dist/domains/test-execution/services/retry-handler.js +18 -12
  304. package/dist/domains/test-generation/coordinator.js +1 -1
  305. package/dist/domains/test-generation/services/pattern-matcher.js +7 -5
  306. package/dist/domains/test-generation/services/test-generator.js +3 -2
  307. package/dist/domains/visual-accessibility/coordinator.js +24 -20
  308. package/dist/index.d.ts +2 -2
  309. package/dist/index.js +2 -2
  310. package/dist/init/phases/12-verification.js +3 -3
  311. package/dist/integrations/agentic-flow/model-router/router.js +1 -1
  312. package/dist/integrations/embeddings/base/EmbeddingGenerator.js +11 -7
  313. package/dist/integrations/ruvector/hypergraph-engine.js +2 -2
  314. package/dist/integrations/ruvector/spectral-math.js +2 -2
  315. package/dist/integrations/ruvector/spectral-sparsifier.js +1 -1
  316. package/dist/kernel/kernel.js +1 -1
  317. package/dist/kernel/unified-memory-hnsw.js +1 -0
  318. package/dist/learning/experience-capture.js +1 -1
  319. package/dist/learning/qe-reasoning-bank.js +9 -1
  320. package/dist/learning/qe-unified-memory.js +8 -6
  321. package/dist/mcp/bundle.js +354 -354
  322. package/dist/mcp/handlers/core-handlers.js +2 -2
  323. package/dist/mcp/handlers/cross-phase-handlers.js +5 -3
  324. package/dist/mcp/handlers/handler-factory.d.ts +5 -0
  325. package/dist/mcp/handlers/handler-factory.js +44 -4
  326. package/dist/mcp/http-server.js +1 -0
  327. package/dist/mcp/protocol-server.js +2 -2
  328. package/dist/mcp/tools/code-intelligence/analyze.js +1 -1
  329. package/dist/mcp/tools/learning-optimization/optimize.js +1 -1
  330. package/dist/mcp/tools/qx-analysis/heuristics-engine.js +195 -173
  331. package/dist/mcp/tools/visual-accessibility/index.js +1 -1
  332. package/dist/mcp/transport/websocket/websocket-transport.js +1 -0
  333. package/dist/optimization/auto-tuner.js +1 -1
  334. package/dist/planning/goap-planner.js +1 -0
  335. package/dist/routing/agent-dependency-graph.js +4 -1
  336. package/dist/shared/llm/router/config-store.js +1 -1
  337. package/dist/shared/metrics/system-metrics.js +6 -4
  338. package/dist/shared/parsers/tree-sitter-wasm-parser.d.ts +12 -0
  339. package/dist/shared/parsers/tree-sitter-wasm-parser.js +35 -0
  340. package/dist/shared/parsers/treesitter-ts-extractor.d.ts +39 -0
  341. package/dist/shared/parsers/treesitter-ts-extractor.js +196 -0
  342. package/dist/shared/utils/safe-expression-evaluator.js +8 -5
  343. package/dist/sync/cloud/postgres-writer.js +2 -0
  344. package/dist/sync/readers/json-reader.js +1 -1
  345. package/dist/test-scheduling/git-aware/test-selector.js +1 -1
  346. package/dist/workers/quality-daemon/index.js +26 -24
  347. package/package.json +5 -4
  348. package/dist/cli/chunks/adapter-CR6J5C76.js +0 -2
  349. package/dist/cli/chunks/aqe-learning-engine-2MNTHMB6.js +0 -2
  350. package/dist/cli/chunks/base-AOQNGMTL.js +0 -2
  351. package/dist/cli/chunks/browser-workflow-UJ4A2ZXO.js +0 -2
  352. package/dist/cli/chunks/chunk-FO73PZVU.js +0 -2
  353. package/dist/cli/chunks/chunk-I677W5BT.js +0 -59
  354. package/dist/cli/chunks/chunk-IAZEDWRX.js +0 -2
  355. package/dist/cli/chunks/client-RDPWGOSA.js +0 -2
  356. package/dist/cli/chunks/cross-domain-router-4K5ZVZEZ.js +0 -2
  357. package/dist/cli/chunks/dream-RPNWM7VS.js +0 -2
  358. package/dist/cli/chunks/heartbeat-scheduler-JBCXMMZO.js +0 -2
  359. package/dist/cli/chunks/hnsw-adapter-3SC2HZIG.js +0 -2
  360. package/dist/cli/chunks/hnsw-index-FQORAR6K.js +0 -2
  361. package/dist/cli/chunks/hybrid-router-6CBFDXPR.js +0 -2
  362. package/dist/cli/chunks/impact-analyzer-SOEFVZWG.js +0 -2
  363. package/dist/cli/chunks/init-wizard-3E4IU5M4.js +0 -2
  364. package/dist/cli/chunks/kernel-GFZP4G5J.js +0 -2
  365. package/dist/cli/chunks/knowledge-graph-BKRKBU26.js +0 -2
  366. package/dist/cli/chunks/llm-router-service-KE4IGZPP.js +0 -2
  367. package/dist/cli/chunks/load-test-VSYJV2AO.js +0 -2
  368. package/dist/cli/chunks/memory-backend-B72RGHRF.js +0 -2
  369. package/dist/cli/chunks/memory-handlers-NWCH7AUO.js +0 -2
  370. package/dist/cli/chunks/protocol-executor-V3F37FPO.js +0 -2
  371. package/dist/cli/chunks/provider-manager-2PN72TT6.js +0 -2
  372. package/dist/cli/chunks/qe-reasoning-bank-P665QNIR.js +0 -2
  373. package/dist/cli/chunks/queen-coordinator-XD4F7BGB.js +0 -2
  374. package/dist/cli/chunks/router-4SSNWDJC.js +0 -2
  375. package/dist/cli/chunks/routing-feedback-O2JSIBW6.js +0 -2
  376. package/dist/cli/chunks/rvf-native-adapter-WIUHYXRB.js +0 -2
  377. package/dist/cli/chunks/safe-db-WL5Y7ZNS.js +0 -2
  378. package/dist/cli/chunks/schedule-U7QDGU5A.js +0 -2
  379. package/dist/cli/chunks/scheduler-LXKGQYXA.js +0 -2
  380. package/dist/cli/chunks/sqlite-persistence-4KFO3SEB.js +0 -2
  381. package/dist/cli/chunks/tree-sitter-wasm-parser-QJOKHOIW.js +0 -2
  382. package/dist/cli/chunks/unified-memory-7AS4LIEF.js +0 -2
  383. package/dist/cli/chunks/unified-memory-hnsw-GREESNJX.js +0 -2
  384. package/dist/cli/chunks/unified-persistence-BPJOMZOA.js +0 -2
  385. package/dist/cli/chunks/visual-security-BW662FHQ.js +0 -2
  386. package/dist/cli/chunks/witness-chain-OXVDLNVT.js +0 -2
  387. package/dist/cli/chunks/workflow-orchestrator-KKNR46XV.js +0 -2
@@ -463,8 +463,8 @@ export async function handleAQEHealth() {
463
463
  ? Date.now() - state.initTime.getTime()
464
464
  : 0;
465
465
  // Collect memory stats
466
- let memoryStats = { connected: false, totalEntries: 0, namespaces: 0 };
467
- let hnswStats = { enabled: false, vectorCount: 0 };
466
+ const memoryStats = { connected: false, totalEntries: 0, namespaces: 0 };
467
+ const hnswStats = { enabled: false, vectorCount: 0 };
468
468
  let patternCount = 0;
469
469
  if (isInit && state.kernel) {
470
470
  const mem = state.kernel.memory;
@@ -82,9 +82,11 @@ export async function handleCrossPhaseQuery(params) {
82
82
  signals = await memory.queryRiskSignals();
83
83
  break;
84
84
  case 'tactical':
85
- const featureFilter = params.filter?.featureContext;
86
- signals = await memory.querySFDIPOTSignals(featureFilter);
87
- break;
85
+ {
86
+ const featureFilter = params.filter?.featureContext;
87
+ signals = await memory.querySFDIPOTSignals(featureFilter);
88
+ break;
89
+ }
88
90
  case 'operational':
89
91
  signals = await memory.queryTestHealthSignals();
90
92
  break;
@@ -135,6 +135,11 @@ export declare function detectAntiPatterns(sourceCode: string, language: string)
135
135
  severity: string;
136
136
  suggestion: string;
137
137
  }>;
138
+ /**
139
+ * Race a promise against a timeout, resolving to `fallback` if it doesn't settle
140
+ * in time. The underlying promise is left to settle in the background.
141
+ */
142
+ export declare function withTimeout<T>(promise: Promise<T>, ms: number, fallback: T): Promise<T>;
138
143
  /**
139
144
  * Get or create the task executor
140
145
  */
@@ -336,6 +336,40 @@ let taskExecutor = null;
336
336
  let _feedbackLoopPromise = null;
337
337
  // Cached learning engine for pattern search (declared here for use in resetTaskExecutor)
338
338
  let cachedLearningEngine = null;
339
+ /**
340
+ * Advisory-routing budget. Pattern search + model routing are optional hints, so
341
+ * they must never block a tool call. If they exceed this budget (e.g. a slow or
342
+ * stuck learning-engine init), we abandon the hint and proceed with default
343
+ * routing. Defense-in-depth after the QEReasoningBank init recursion that hung
344
+ * every MCP domain tool — a future async stall here can no longer block tools.
345
+ */
346
+ const ROUTE_ADVISORY_TIMEOUT_MS = Number(process.env.AQE_ROUTE_TIMEOUT_MS) || 5000;
347
+ /**
348
+ * Race a promise against a timeout, resolving to `fallback` if it doesn't settle
349
+ * in time. The underlying promise is left to settle in the background.
350
+ */
351
+ export function withTimeout(promise, ms, fallback) {
352
+ return new Promise((resolve) => {
353
+ let settled = false;
354
+ const timer = setTimeout(() => {
355
+ if (!settled) {
356
+ settled = true;
357
+ resolve(fallback);
358
+ }
359
+ }, ms);
360
+ if (typeof timer.unref === 'function')
361
+ timer.unref();
362
+ promise.then((v) => { if (!settled) {
363
+ settled = true;
364
+ clearTimeout(timer);
365
+ resolve(v);
366
+ } }, () => { if (!settled) {
367
+ settled = true;
368
+ clearTimeout(timer);
369
+ resolve(fallback);
370
+ } });
371
+ });
372
+ }
339
373
  /**
340
374
  * Get or create the task executor
341
375
  */
@@ -389,11 +423,14 @@ async function getLearningEngine() {
389
423
  }
390
424
  const { createAQELearningEngine } = await import('../../learning/aqe-learning-engine.js');
391
425
  const memory = kernel.memory;
392
- cachedLearningEngine = createAQELearningEngine(memory, {
426
+ const engine = createAQELearningEngine(memory, {
393
427
  projectRoot: process.cwd(),
394
428
  enableClaudeFlow: false, // Don't need Claude Flow for pattern search
395
429
  });
396
- await cachedLearningEngine.initialize();
430
+ // Cache only AFTER a successful init so a failed/slow init doesn't leave a
431
+ // half-initialized engine to be served on the next call.
432
+ await engine.initialize();
433
+ cachedLearningEngine = engine;
397
434
  return cachedLearningEngine;
398
435
  }
399
436
  catch (error) {
@@ -557,10 +594,13 @@ export function createDomainHandler(config) {
557
594
  const { queen } = getFleetState();
558
595
  let routingResult = null;
559
596
  try {
560
- // Step 2: Route task to optimal model tier (ADR-051)
597
+ // Step 2: Route task to optimal model tier (ADR-051).
598
+ // Bounded by ROUTE_ADVISORY_TIMEOUT_MS — routing is an advisory hint and
599
+ // must never block the tool; on timeout we proceed with null routing
600
+ // (mapToPayload handles a null routingResult).
561
601
  const taskDescription = buildTaskDescription(params);
562
602
  const codeContext = includeCodeContext?.(params);
563
- routingResult = await routeDomainTask(taskDescription, domain, codeContext);
603
+ routingResult = await withTimeout(routeDomainTask(taskDescription, domain, codeContext), ROUTE_ADVISORY_TIMEOUT_MS, null);
564
604
  // Step 3: Build payload and submit task
565
605
  const payload = mapToPayload(params, routingResult);
566
606
  const timeout = calculateTimeout?.(params) ?? defaultTimeout;
@@ -715,6 +715,7 @@ class HTTPServerImpl {
715
715
  // Non-fatal, discovery will return empty results
716
716
  }
717
717
  }
718
+ // eslint-disable-next-line no-async-promise-executor -- inner awaits are caught; server.on("error", reject) handles startup failures
718
719
  return new Promise(async (resolve, reject) => {
719
720
  this.server = createServer((req, res) => {
720
721
  this.handleHttpRequest(req, res).catch((error) => {
@@ -1387,7 +1387,7 @@ export class MCPProtocolServer {
1387
1387
  try {
1388
1388
  unlinkSync(transcriptPath);
1389
1389
  }
1390
- catch { }
1390
+ catch { /* best-effort cleanup */ }
1391
1391
  const lines = result.split('\n');
1392
1392
  let jsonStr = '';
1393
1393
  let depth = 0;
@@ -1410,7 +1410,7 @@ export class MCPProtocolServer {
1410
1410
  try {
1411
1411
  unlinkSync(transcriptPath);
1412
1412
  }
1413
- catch { }
1413
+ catch { /* best-effort cleanup */ }
1414
1414
  return { error: err.message?.slice(0, 300) ?? 'Unknown error' };
1415
1415
  }
1416
1416
  },
@@ -73,7 +73,7 @@ export class CodeAnalyzeTool extends MCPToolBase {
73
73
  if (this.isAborted(context)) {
74
74
  return { success: false, error: 'Operation aborted' };
75
75
  }
76
- let result = { action };
76
+ const result = { action };
77
77
  switch (action) {
78
78
  case 'index':
79
79
  result.indexResult = await this.executeIndex(paths, incremental, context);
@@ -55,7 +55,7 @@ export class LearningOptimizeTool extends MCPToolBase {
55
55
  if (this.isAborted(context)) {
56
56
  return { success: false, error: 'Operation aborted' };
57
57
  }
58
- let result = { action };
58
+ const result = { action };
59
59
  switch (action) {
60
60
  case 'learn':
61
61
  result.learnResult = await this.executeLearn(domain, experienceIds, context);
@@ -51,140 +51,150 @@ export class QXHeuristicsEngine {
51
51
  }
52
52
  break;
53
53
  case QXHeuristic.INTUITIVE_DESIGN:
54
- const hasNav = context.domMetrics?.semanticStructure?.hasNav;
55
- const focusable = context.accessibility?.focusableElementsCount || 0;
56
- if (hasNav && focusable > 10) {
57
- score = 82;
58
- findings.push('Intuitive navigation and interaction design');
54
+ {
55
+ const hasNav = context.domMetrics?.semanticStructure?.hasNav;
56
+ const focusable = context.accessibility?.focusableElementsCount || 0;
57
+ if (hasNav && focusable > 10) {
58
+ score = 82;
59
+ findings.push('Intuitive navigation and interaction design');
60
+ }
61
+ else {
62
+ score = 55;
63
+ issues.push({ description: 'Navigation or interaction patterns unclear', severity: 'medium' });
64
+ }
65
+ break;
59
66
  }
60
- else {
61
- score = 55;
62
- issues.push({ description: 'Navigation or interaction patterns unclear', severity: 'medium' });
63
- }
64
- break;
65
67
  case QXHeuristic.EXACTNESS_AND_CLARITY:
66
- score = 70;
67
- const hasSemanticStructure = context.domMetrics?.semanticStructure;
68
- const structureScore = [
69
- hasSemanticStructure?.hasHeader,
70
- hasSemanticStructure?.hasMain,
71
- hasSemanticStructure?.hasNav,
72
- hasSemanticStructure?.hasFooter,
73
- ].filter(Boolean).length;
74
- score = 50 + structureScore * 10;
75
- if (structureScore >= 3) {
76
- findings.push('Strong visual hierarchy with semantic HTML elements');
77
- }
78
- else if (structureScore >= 2) {
79
- findings.push('Moderate visual hierarchy - some semantic elements present');
80
- recommendations.push('Add more semantic HTML5 elements for clarity');
81
- }
82
- else {
83
- issues.push({ description: 'Weak visual hierarchy - missing semantic structure', severity: 'high' });
84
- recommendations.push('Implement semantic HTML5: header, nav, main, footer');
68
+ {
69
+ score = 70;
70
+ const hasSemanticStructure = context.domMetrics?.semanticStructure;
71
+ const structureScore = [
72
+ hasSemanticStructure?.hasHeader,
73
+ hasSemanticStructure?.hasMain,
74
+ hasSemanticStructure?.hasNav,
75
+ hasSemanticStructure?.hasFooter,
76
+ ].filter(Boolean).length;
77
+ score = 50 + structureScore * 10;
78
+ if (structureScore >= 3) {
79
+ findings.push('Strong visual hierarchy with semantic HTML elements');
80
+ }
81
+ else if (structureScore >= 2) {
82
+ findings.push('Moderate visual hierarchy - some semantic elements present');
83
+ recommendations.push('Add more semantic HTML5 elements for clarity');
84
+ }
85
+ else {
86
+ issues.push({ description: 'Weak visual hierarchy - missing semantic structure', severity: 'high' });
87
+ recommendations.push('Implement semantic HTML5: header, nav, main, footer');
88
+ }
89
+ if (context.metadata?.description && context.metadata.description.length > 20) {
90
+ score += 10;
91
+ findings.push('Page has descriptive metadata');
92
+ }
93
+ break;
85
94
  }
86
- if (context.metadata?.description && context.metadata.description.length > 20) {
87
- score += 10;
88
- findings.push('Page has descriptive metadata');
89
- }
90
- break;
91
95
  case QXHeuristic.COUNTER_INTUITIVE_DESIGN:
92
- score = 85; // High score means few counter-intuitive elements (good)
93
- const confusingNav = !context.domMetrics?.semanticStructure?.hasNav && (context.domMetrics?.interactiveElements || 0) > 10;
94
- const poorStructure = !context.domMetrics?.semanticStructure?.hasHeader && !context.domMetrics?.semanticStructure?.hasFooter;
95
- if (confusingNav) {
96
- score = 45;
97
- issues.push({ description: 'Navigation structure may be counter-intuitive', severity: 'high' });
98
- recommendations.push('Add semantic navigation elements');
99
- }
100
- if (poorStructure) {
101
- score -= 15;
102
- issues.push({ description: 'Page structure lacks expected header/footer', severity: 'medium' });
96
+ {
97
+ score = 85; // High score means few counter-intuitive elements (good)
98
+ const confusingNav = !context.domMetrics?.semanticStructure?.hasNav && (context.domMetrics?.interactiveElements || 0) > 10;
99
+ const poorStructure = !context.domMetrics?.semanticStructure?.hasHeader && !context.domMetrics?.semanticStructure?.hasFooter;
100
+ if (confusingNav) {
101
+ score = 45;
102
+ issues.push({ description: 'Navigation structure may be counter-intuitive', severity: 'high' });
103
+ recommendations.push('Add semantic navigation elements');
104
+ }
105
+ if (poorStructure) {
106
+ score -= 15;
107
+ issues.push({ description: 'Page structure lacks expected header/footer', severity: 'medium' });
108
+ }
109
+ if (score > 75) {
110
+ findings.push('No counter-intuitive design patterns detected');
111
+ }
112
+ break;
103
113
  }
104
- if (score > 75) {
105
- findings.push('No counter-intuitive design patterns detected');
106
- }
107
- break;
108
114
  // ========== Impact Analysis Heuristics (H5.x) ==========
109
115
  case QXHeuristic.USER_FEELINGS_IMPACT:
110
- const altCoverage = context.accessibility?.altTextsCoverage || 0;
111
- const loadTime = context.performance?.loadTime || 0;
112
- const ariaLabels = context.accessibility?.ariaLabelsCount || 0;
113
- const focusableElements = context.accessibility?.focusableElementsCount || 0;
114
- score = 60;
115
- // Accessibility impact on feelings (35% weight)
116
- if (altCoverage >= 90) {
117
- score += 20;
118
- findings.push('Excellent accessibility (90%+ alt coverage) creates inclusive, positive experience');
119
- }
120
- else if (altCoverage >= 70) {
121
- score += 12;
122
- findings.push('Good accessibility creates generally positive user feelings');
123
- }
124
- else if (altCoverage < 50) {
125
- score -= 15;
126
- issues.push({
127
- description: 'Poor accessibility (<50% alt coverage) frustrates users with disabilities',
128
- severity: 'high',
129
- });
130
- recommendations.push('Improve alt text coverage to at least 80% for better accessibility');
131
- }
132
- // ARIA support impact
133
- if (ariaLabels > 5) {
134
- score += 8;
135
- findings.push('Strong ARIA labeling enhances screen reader experience');
136
- }
137
- // Performance impact on feelings (35% weight)
138
- if (loadTime < 1500) {
139
- score += 15;
140
- findings.push('Very fast load time (<1.5s) delights users');
141
- }
142
- else if (loadTime < 2500) {
143
- score += 8;
144
- findings.push('Fast load time enhances user satisfaction');
145
- }
146
- else if (loadTime > 4000) {
147
- score -= 20;
148
- issues.push({ description: 'Very slow load time (>4s) causes significant frustration', severity: 'critical' });
149
- recommendations.push('Optimize page load time - target under 2.5 seconds');
150
- }
151
- else if (loadTime > 3000) {
152
- score -= 12;
153
- issues.push({ description: 'Slow load time causes user frustration', severity: 'high' });
154
- }
155
- // Error visibility impact
156
- if (context.errorIndicators?.hasErrorMessages) {
157
- score -= 12;
158
- issues.push({ description: 'Visible errors reduce user confidence and satisfaction', severity: 'high' });
159
- recommendations.push('Review and fix visible error messages');
160
- }
161
- // Interaction capability
162
- if (focusableElements > 20) {
163
- score += 5;
164
- findings.push('Rich interactive elements provide user control and engagement');
165
- }
166
- else if (focusableElements < 5) {
167
- score -= 8;
168
- issues.push({ description: 'Limited interactivity may feel restrictive', severity: 'medium' });
116
+ {
117
+ const altCoverage = context.accessibility?.altTextsCoverage || 0;
118
+ const loadTime = context.performance?.loadTime || 0;
119
+ const ariaLabels = context.accessibility?.ariaLabelsCount || 0;
120
+ const focusableElements = context.accessibility?.focusableElementsCount || 0;
121
+ score = 60;
122
+ // Accessibility impact on feelings (35% weight)
123
+ if (altCoverage >= 90) {
124
+ score += 20;
125
+ findings.push('Excellent accessibility (90%+ alt coverage) creates inclusive, positive experience');
126
+ }
127
+ else if (altCoverage >= 70) {
128
+ score += 12;
129
+ findings.push('Good accessibility creates generally positive user feelings');
130
+ }
131
+ else if (altCoverage < 50) {
132
+ score -= 15;
133
+ issues.push({
134
+ description: 'Poor accessibility (<50% alt coverage) frustrates users with disabilities',
135
+ severity: 'high',
136
+ });
137
+ recommendations.push('Improve alt text coverage to at least 80% for better accessibility');
138
+ }
139
+ // ARIA support impact
140
+ if (ariaLabels > 5) {
141
+ score += 8;
142
+ findings.push('Strong ARIA labeling enhances screen reader experience');
143
+ }
144
+ // Performance impact on feelings (35% weight)
145
+ if (loadTime < 1500) {
146
+ score += 15;
147
+ findings.push('Very fast load time (<1.5s) delights users');
148
+ }
149
+ else if (loadTime < 2500) {
150
+ score += 8;
151
+ findings.push('Fast load time enhances user satisfaction');
152
+ }
153
+ else if (loadTime > 4000) {
154
+ score -= 20;
155
+ issues.push({ description: 'Very slow load time (>4s) causes significant frustration', severity: 'critical' });
156
+ recommendations.push('Optimize page load time - target under 2.5 seconds');
157
+ }
158
+ else if (loadTime > 3000) {
159
+ score -= 12;
160
+ issues.push({ description: 'Slow load time causes user frustration', severity: 'high' });
161
+ }
162
+ // Error visibility impact
163
+ if (context.errorIndicators?.hasErrorMessages) {
164
+ score -= 12;
165
+ issues.push({ description: 'Visible errors reduce user confidence and satisfaction', severity: 'high' });
166
+ recommendations.push('Review and fix visible error messages');
167
+ }
168
+ // Interaction capability
169
+ if (focusableElements > 20) {
170
+ score += 5;
171
+ findings.push('Rich interactive elements provide user control and engagement');
172
+ }
173
+ else if (focusableElements < 5) {
174
+ score -= 8;
175
+ issues.push({ description: 'Limited interactivity may feel restrictive', severity: 'medium' });
176
+ }
177
+ score = Math.max(20, Math.min(100, score));
178
+ break;
169
179
  }
170
- score = Math.max(20, Math.min(100, score));
171
- break;
172
180
  case QXHeuristic.GUI_FLOW_IMPACT:
173
- const interactiveElements = context.domMetrics?.interactiveElements || 0;
174
- const forms = context.domMetrics?.forms || 0;
175
- if (interactiveElements > 20) {
176
- score = 75;
177
- findings.push(`${interactiveElements} interactive elements provide user control`);
178
- }
179
- if (forms > 0) {
180
- findings.push(`${forms} forms impact user input flows`);
181
- score = Math.min(100, score + 10);
182
- }
183
- if (interactiveElements === 0) {
184
- score = 30;
185
- issues.push({ description: 'Limited user interaction capability', severity: 'high' });
181
+ {
182
+ const interactiveElements = context.domMetrics?.interactiveElements || 0;
183
+ const forms = context.domMetrics?.forms || 0;
184
+ if (interactiveElements > 20) {
185
+ score = 75;
186
+ findings.push(`${interactiveElements} interactive elements provide user control`);
187
+ }
188
+ if (forms > 0) {
189
+ findings.push(`${forms} forms impact user input flows`);
190
+ score = Math.min(100, score + 10);
191
+ }
192
+ if (interactiveElements === 0) {
193
+ score = 30;
194
+ issues.push({ description: 'Limited user interaction capability', severity: 'high' });
195
+ }
196
+ break;
186
197
  }
187
- break;
188
198
  case QXHeuristic.CROSS_FUNCTIONAL_IMPACT:
189
199
  score = 70;
190
200
  if (context.accessibility && (context.accessibility.altTextsCoverage || 0) < 100) {
@@ -232,14 +242,16 @@ export class QXHeuristicsEngine {
232
242
  break;
233
243
  // ========== User Needs Heuristics (H2.x) ==========
234
244
  case QXHeuristic.USER_NEEDS_IDENTIFICATION:
235
- score = userNeeds.alignmentScore;
236
- findings.push(`${userNeeds.needs.length} user needs identified`);
237
- const mustHave = userNeeds.needs.filter((n) => n.priority === 'must-have').length;
238
- findings.push(`${mustHave} must-have features`);
239
- if (userNeeds.challenges.length > 0) {
240
- issues.push({ description: `${userNeeds.challenges.length} user need challenges found`, severity: 'medium' });
245
+ {
246
+ score = userNeeds.alignmentScore;
247
+ findings.push(`${userNeeds.needs.length} user needs identified`);
248
+ const mustHave = userNeeds.needs.filter((n) => n.priority === 'must-have').length;
249
+ findings.push(`${mustHave} must-have features`);
250
+ if (userNeeds.challenges.length > 0) {
251
+ issues.push({ description: `${userNeeds.challenges.length} user need challenges found`, severity: 'medium' });
252
+ }
253
+ break;
241
254
  }
242
- break;
243
255
  case QXHeuristic.USER_NEEDS_SUITABILITY:
244
256
  score =
245
257
  userNeeds.suitability === 'excellent'
@@ -252,10 +264,12 @@ export class QXHeuristicsEngine {
252
264
  findings.push(`User needs suitability: ${userNeeds.suitability}`);
253
265
  break;
254
266
  case QXHeuristic.USER_NEEDS_VALIDATION:
255
- const addressedNeeds = userNeeds.needs.filter((n) => n.addressed).length;
256
- score = userNeeds.needs.length > 0 ? (addressedNeeds / userNeeds.needs.length) * 100 : 50;
257
- findings.push(`${addressedNeeds}/${userNeeds.needs.length} needs validated and addressed`);
258
- break;
267
+ {
268
+ const addressedNeeds = userNeeds.needs.filter((n) => n.addressed).length;
269
+ score = userNeeds.needs.length > 0 ? (addressedNeeds / userNeeds.needs.length) * 100 : 50;
270
+ findings.push(`${addressedNeeds}/${userNeeds.needs.length} needs validated and addressed`);
271
+ break;
272
+ }
259
273
  // ========== Business Needs Heuristics (H3.x) ==========
260
274
  case QXHeuristic.BUSINESS_NEEDS_IDENTIFICATION:
261
275
  score = businessNeeds.alignmentScore;
@@ -264,16 +278,18 @@ export class QXHeuristicsEngine {
264
278
  findings.push(`${businessNeeds.crossTeamImpact.length} cross-team impacts`);
265
279
  break;
266
280
  case QXHeuristic.USER_VS_BUSINESS_BALANCE:
267
- const balanceScore = 100 - Math.abs(userNeeds.alignmentScore - businessNeeds.alignmentScore);
268
- score = balanceScore;
269
- if (balanceScore > 80) {
270
- findings.push('Good balance between user and business needs');
271
- }
272
- else {
273
- issues.push({ description: 'Imbalance between user and business priorities', severity: 'medium' });
274
- recommendations.push('Align user and business objectives more closely');
281
+ {
282
+ const balanceScore = 100 - Math.abs(userNeeds.alignmentScore - businessNeeds.alignmentScore);
283
+ score = balanceScore;
284
+ if (balanceScore > 80) {
285
+ findings.push('Good balance between user and business needs');
286
+ }
287
+ else {
288
+ issues.push({ description: 'Imbalance between user and business priorities', severity: 'medium' });
289
+ recommendations.push('Align user and business objectives more closely');
290
+ }
291
+ break;
275
292
  }
276
- break;
277
293
  case QXHeuristic.KPI_IMPACT_ANALYSIS:
278
294
  score = businessNeeds.impactsKPIs ? 85 : 50;
279
295
  findings.push(`KPIs impacted: ${businessNeeds.kpisAffected.join(', ')}`);
@@ -297,18 +313,20 @@ export class QXHeuristicsEngine {
297
313
  }
298
314
  break;
299
315
  case QXHeuristic.SUPPORTING_DATA_ANALYSIS:
300
- score = 75;
301
- const hasData = (context.domMetrics?.forms || 0) > 0 || (context.domMetrics?.interactiveElements || 0) > 20;
302
- if (hasData) {
303
- score = 82;
304
- findings.push('Sufficient data points for informed decision-making');
305
- }
306
- else {
307
- score = 60;
308
- issues.push({ description: 'Limited data for comprehensive analysis', severity: 'medium' });
309
- recommendations.push('Collect more user interaction data');
316
+ {
317
+ score = 75;
318
+ const hasData = (context.domMetrics?.forms || 0) > 0 || (context.domMetrics?.interactiveElements || 0) > 20;
319
+ if (hasData) {
320
+ score = 82;
321
+ findings.push('Sufficient data points for informed decision-making');
322
+ }
323
+ else {
324
+ score = 60;
325
+ issues.push({ description: 'Limited data for comprehensive analysis', severity: 'medium' });
326
+ recommendations.push('Collect more user interaction data');
327
+ }
328
+ break;
310
329
  }
311
- break;
312
330
  // ========== Creativity Heuristics (H6.x) ==========
313
331
  case QXHeuristic.COMPETITIVE_ANALYSIS:
314
332
  score = 70;
@@ -324,27 +342,31 @@ export class QXHeuristicsEngine {
324
342
  }
325
343
  break;
326
344
  case QXHeuristic.DOMAIN_INSPIRATION:
327
- score = 72;
328
- const hasModernElements = context.accessibility && (context.accessibility.ariaLabelsCount || 0) > 0;
329
- if (hasModernElements) {
330
- score = 80;
331
- findings.push('Modern accessibility patterns show domain inspiration');
332
- }
333
- else {
334
- recommendations.push('Research domain-specific design patterns and best practices');
345
+ {
346
+ score = 72;
347
+ const hasModernElements = context.accessibility && (context.accessibility.ariaLabelsCount || 0) > 0;
348
+ if (hasModernElements) {
349
+ score = 80;
350
+ findings.push('Modern accessibility patterns show domain inspiration');
351
+ }
352
+ else {
353
+ recommendations.push('Research domain-specific design patterns and best practices');
354
+ }
355
+ break;
335
356
  }
336
- break;
337
357
  case QXHeuristic.INNOVATIVE_SOLUTIONS:
338
- score = 65;
339
- const hasAdvancedFeatures = (context.accessibility?.landmarkRoles || 0) > 3;
340
- if (hasAdvancedFeatures) {
341
- score = 75;
342
- findings.push('Advanced accessibility features show innovative thinking');
358
+ {
359
+ score = 65;
360
+ const hasAdvancedFeatures = (context.accessibility?.landmarkRoles || 0) > 3;
361
+ if (hasAdvancedFeatures) {
362
+ score = 75;
363
+ findings.push('Advanced accessibility features show innovative thinking');
364
+ }
365
+ else {
366
+ recommendations.push('Explore innovative UX patterns to differentiate experience');
367
+ }
368
+ break;
343
369
  }
344
- else {
345
- recommendations.push('Explore innovative UX patterns to differentiate experience');
346
- }
347
- break;
348
370
  default:
349
371
  // Generic heuristic evaluation based on category
350
372
  if (category === 'user-needs') {
@@ -258,7 +258,7 @@ export class A11yAuditTool extends MCPToolBase {
258
258
  }
259
259
  }
260
260
  // Optionally check keyboard navigation
261
- let keyboardViolations = [];
261
+ const keyboardViolations = [];
262
262
  if (checkKeyboard) {
263
263
  const keyboardResult = await service.checkKeyboardNavigation(url);
264
264
  if (keyboardResult.success) {
@@ -122,6 +122,7 @@ export class WebSocketTransport extends EventEmitter {
122
122
  * Handle a manual WebSocket upgrade (for testing or custom servers)
123
123
  */
124
124
  handleUpgrade(request, socket, head) {
125
+ // eslint-disable-next-line no-async-promise-executor -- body is wrapped in try/catch that calls reject()
125
126
  return new Promise(async (resolve, reject) => {
126
127
  if (this.disposed) {
127
128
  socket.write('HTTP/1.1 503 Service Unavailable\r\n\r\n');
@@ -303,7 +303,7 @@ export class AQEAutoTuner {
303
303
  const parameterValues = this.algorithm.suggestNextConfiguration(this.parameters, this.evaluationHistory, this.config);
304
304
  // Check if we have applicators registered for real system integration
305
305
  const hasApplicators = this.applicatorRegistry.getAll().length > 0;
306
- let metricValues = {};
306
+ const metricValues = {};
307
307
  if (hasApplicators) {
308
308
  // REAL EVALUATION: Apply configuration to actual systems
309
309
  try {