agentic-qe 3.9.34 → 3.9.36

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 (301) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +95 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/audit/witness-chain.d.ts +7 -0
  5. package/dist/audit/witness-chain.js +9 -0
  6. package/dist/cli/bundle.js +5 -5
  7. package/dist/cli/chunks/adapter-MISKG4JY.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-UD3YB7FC.js → agent-booster-wasm-L6D36M77.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-BNBGQS6N.js → agent-handler-3JNKP4OI.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-NJHROVKY.js → agent-memory-branch-QBRBX7O4.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-NDLBNM6C.js +2 -0
  12. package/dist/cli/chunks/{audit-4Y7M2S2O.js → audit-M4W43TXQ.js} +2 -2
  13. package/dist/cli/chunks/base-OMDJAHGF.js +2 -0
  14. package/dist/cli/chunks/{hnswlib-node-3LBUPOTX.js → better-sqlite3-SPABZYYQ.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-VWRD34M6.js → brain-handler-WQN7C55Z.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-H4WLPOU3.js → branch-enumerator-BOTGLI7M.js} +2 -2
  17. package/dist/cli/chunks/{browser-Y7ZNFLEU.js → browser-ZFZCR7LP.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-XUG5Z5CJ.js +2 -0
  19. package/dist/cli/chunks/{chunk-AIQHS7D2.js → chunk-27FNROZ2.js} +9 -9
  20. package/dist/cli/chunks/{chunk-ARKWPPBZ.js → chunk-2AANIKDG.js} +2 -2
  21. package/dist/cli/chunks/{chunk-AHEHD3AP.js → chunk-2EWOYVH3.js} +2 -2
  22. package/dist/cli/chunks/{chunk-AYLTFMTW.js → chunk-2KMCRASK.js} +1 -1
  23. package/dist/cli/chunks/{chunk-YIVJD5IY.js → chunk-3CIQ6CQ4.js} +2 -2
  24. package/dist/cli/chunks/{chunk-LUU2O2AZ.js → chunk-4R3WXD4U.js} +1 -1
  25. package/dist/cli/chunks/{chunk-DIX6AR2P.js → chunk-556GYKN5.js} +2 -2
  26. package/dist/cli/chunks/{chunk-SLHE7BA3.js → chunk-5ECOD4O6.js} +1 -1
  27. package/dist/cli/chunks/{chunk-WGMA22FN.js → chunk-5M63H6RY.js} +1 -1
  28. package/dist/cli/chunks/{chunk-PYQ7VCH2.js → chunk-5MSZREOD.js} +2 -2
  29. package/dist/cli/chunks/{chunk-UCBDYSNE.js → chunk-5OAAJUGO.js} +1 -1
  30. package/dist/cli/chunks/{chunk-FAQSUNVC.js → chunk-5RPHV7Y3.js} +1 -1
  31. package/dist/cli/chunks/{chunk-TH7BP4KG.js → chunk-5SYH5QMQ.js} +2 -2
  32. package/dist/cli/chunks/{chunk-53Y6ZKPN.js → chunk-5ZTY5JJX.js} +2 -2
  33. package/dist/cli/chunks/{chunk-DKA5WC6T.js → chunk-66636UWH.js} +2 -2
  34. package/dist/cli/chunks/{chunk-45SJSOSI.js → chunk-6BHUKCLI.js} +2 -2
  35. package/dist/cli/chunks/{chunk-7QTMWILQ.js → chunk-6DACR7QY.js} +2 -2
  36. package/dist/cli/chunks/{chunk-RJUWW4XE.js → chunk-6M2POFDF.js} +1 -1
  37. package/dist/cli/chunks/{chunk-AGHBG5E4.js → chunk-6M44C43I.js} +2 -2
  38. package/dist/cli/chunks/{chunk-RVG3DAU3.js → chunk-74DA4P5K.js} +1 -1
  39. package/dist/cli/chunks/{chunk-ZYF6F4MA.js → chunk-7TO7NTLT.js} +8 -8
  40. package/dist/cli/chunks/{chunk-RXQCDEDD.js → chunk-7ZCDG3IM.js} +1 -1
  41. package/dist/cli/chunks/{chunk-67Y5HBMW.js → chunk-A3TOJ4KN.js} +2 -2
  42. package/dist/cli/chunks/{chunk-3PRHEG4B.js → chunk-AH3TKDVW.js} +2 -2
  43. package/dist/cli/chunks/{chunk-VID5XDDQ.js → chunk-AH3UC4IV.js} +2 -2
  44. package/dist/cli/chunks/{chunk-E2IC6PHO.js → chunk-AJ2VFSLX.js} +5 -5
  45. package/dist/cli/chunks/{chunk-NKBLXHVM.js → chunk-AWC7G2D3.js} +2 -2
  46. package/dist/cli/chunks/{chunk-4GSUSYZK.js → chunk-AY2LLGZN.js} +4 -4
  47. package/dist/cli/chunks/{chunk-R7IYH6X2.js → chunk-BGD65PL4.js} +1 -1
  48. package/dist/cli/chunks/{chunk-CKJGWNIS.js → chunk-BI54GWTK.js} +2 -2
  49. package/dist/cli/chunks/{chunk-4K5KVC7R.js → chunk-BNFW4LMD.js} +2 -2
  50. package/dist/cli/chunks/{chunk-7YM2AZXK.js → chunk-BUVY7IGM.js} +1 -1
  51. package/dist/cli/chunks/{chunk-7II46WAF.js → chunk-C2JK5O55.js} +2 -2
  52. package/dist/cli/chunks/{chunk-YG5HLQAB.js → chunk-CAGRQR2U.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4W2GGE4Z.js → chunk-CJQT3MYN.js} +1 -1
  54. package/dist/cli/chunks/{chunk-3OTG4IXK.js → chunk-CK5TGFII.js} +1 -1
  55. package/dist/cli/chunks/{chunk-WGEKHWCJ.js → chunk-CLATNP57.js} +3 -3
  56. package/dist/cli/chunks/{chunk-P22YWOM2.js → chunk-CSDGFQKW.js} +2 -2
  57. package/dist/cli/chunks/{chunk-JZBBCQ7Y.js → chunk-D5CLABLM.js} +2 -2
  58. package/dist/cli/chunks/{chunk-7IUNZ653.js → chunk-DCXFHBHS.js} +2 -2
  59. package/dist/cli/chunks/{chunk-JNURLIOU.js → chunk-DKBBMZWB.js} +2 -2
  60. package/dist/cli/chunks/{chunk-RYFQYSVF.js → chunk-DTJHO3WI.js} +2 -2
  61. package/dist/cli/chunks/{chunk-7ZE5BXCN.js → chunk-EAMKH35X.js} +1 -1
  62. package/dist/cli/chunks/{chunk-XK2IKEXP.js → chunk-EDG4NEET.js} +1 -1
  63. package/dist/cli/chunks/{chunk-BP45DZKL.js → chunk-ESIE3MT5.js} +3 -3
  64. package/dist/cli/chunks/{chunk-RGQ2AOYV.js → chunk-EXBJCDFM.js} +2 -2
  65. package/dist/cli/chunks/{chunk-UAKD7J72.js → chunk-EXUT2LCP.js} +1 -1
  66. package/dist/cli/chunks/{chunk-BBULBXTO.js → chunk-F57OUXHJ.js} +2 -2
  67. package/dist/cli/chunks/{chunk-IT7TOO52.js → chunk-F5IVWV2P.js} +1 -1
  68. package/dist/cli/chunks/{chunk-DGEXLCOX.js → chunk-FK4B2HIW.js} +1 -1
  69. package/dist/cli/chunks/{chunk-JOOI3M6I.js → chunk-FSDUNGYM.js} +2 -2
  70. package/dist/cli/chunks/{chunk-K7EU2KJF.js → chunk-FYJE4QLL.js} +2 -2
  71. package/dist/cli/chunks/{chunk-HIZWO4J3.js → chunk-FZA674BT.js} +2 -2
  72. package/dist/cli/chunks/{chunk-GW7T2ABB.js → chunk-G6Q66YLG.js} +3 -3
  73. package/dist/cli/chunks/{chunk-Z6IQMLD7.js → chunk-G7YDYXQH.js} +2 -2
  74. package/dist/cli/chunks/{chunk-FCWQRUXQ.js → chunk-GAC4MD6S.js} +1 -1
  75. package/dist/cli/chunks/{chunk-GCMCU54O.js → chunk-GFMSAL5Y.js} +2 -2
  76. package/dist/cli/chunks/{chunk-4JILSEZT.js → chunk-GLI5EN6O.js} +2 -2
  77. package/dist/cli/chunks/{chunk-DOKH4EJX.js → chunk-GW7HWFWQ.js} +1 -1
  78. package/dist/cli/chunks/{chunk-XLDGQJWP.js → chunk-GWLLNJ64.js} +1 -1
  79. package/dist/cli/chunks/{chunk-4AIJOXQJ.js → chunk-HHGZ4LXC.js} +1 -1
  80. package/dist/cli/chunks/{chunk-VR65KHTH.js → chunk-HOZNVDFF.js} +2 -2
  81. package/dist/cli/chunks/{chunk-LH372B74.js → chunk-I7BXATQ6.js} +2 -2
  82. package/dist/cli/chunks/{chunk-QX74JLGO.js → chunk-IF4ZZ2HD.js} +2 -2
  83. package/dist/cli/chunks/{chunk-ULXDULD6.js → chunk-IMP43AXO.js} +2 -2
  84. package/dist/cli/chunks/{chunk-RASEXZD3.js → chunk-JA7YARLP.js} +1 -1
  85. package/dist/cli/chunks/{chunk-ZSOPY44S.js → chunk-JD3VV2BD.js} +2 -2
  86. package/dist/cli/chunks/{chunk-S43X3HTH.js → chunk-JFDNNXIX.js} +2 -2
  87. package/dist/cli/chunks/{chunk-REVCXO2R.js → chunk-KI6RXKP4.js} +2 -2
  88. package/dist/cli/chunks/{chunk-WUDJA3B6.js → chunk-L3JJ52N6.js} +2 -2
  89. package/dist/cli/chunks/{chunk-XM6CMEQK.js → chunk-LIE24NRL.js} +2 -2
  90. package/dist/cli/chunks/{chunk-MIH7Y46H.js → chunk-LPVRFVSC.js} +2 -2
  91. package/dist/cli/chunks/{chunk-CWM5LSLQ.js → chunk-LUFY3GGI.js} +2 -2
  92. package/dist/cli/chunks/{chunk-IH5MVTLA.js → chunk-MAHLTWGV.js} +2 -2
  93. package/dist/cli/chunks/{chunk-EWVKCXV3.js → chunk-MEQ4OPSL.js} +3 -3
  94. package/dist/cli/chunks/{chunk-6XI7MNHH.js → chunk-MFPVS2KP.js} +2 -2
  95. package/dist/cli/chunks/{chunk-QFBPVPYA.js → chunk-MJJAHA2T.js} +1 -1
  96. package/dist/cli/chunks/{chunk-5H44TVAY.js → chunk-NKA3X6VT.js} +1 -1
  97. package/dist/cli/chunks/{chunk-K5KL5MPG.js → chunk-NKBCAW27.js} +1 -1
  98. package/dist/cli/chunks/{chunk-AX7F6CNY.js → chunk-NMHULQAV.js} +2 -2
  99. package/dist/cli/chunks/{chunk-7AEFEPFH.js → chunk-NYU4YD5V.js} +2 -2
  100. package/dist/cli/chunks/{chunk-I74WDBHS.js → chunk-O4C3JEOR.js} +2 -2
  101. package/dist/cli/chunks/{chunk-KN6QHR7J.js → chunk-O5JNHH2D.js} +2 -2
  102. package/dist/cli/chunks/{chunk-LIIG3F7K.js → chunk-OLBYILKU.js} +2 -2
  103. package/dist/cli/chunks/{chunk-4FW4ZWPB.js → chunk-OO2JHVMS.js} +6 -6
  104. package/dist/cli/chunks/{chunk-4GHSIVTA.js → chunk-P4VQTIJE.js} +3 -3
  105. package/dist/cli/chunks/{chunk-VB2ZBN46.js → chunk-P7IOH7L4.js} +1 -1
  106. package/dist/cli/chunks/{chunk-JNLDMRUK.js → chunk-PGRDHDEJ.js} +1 -1
  107. package/dist/cli/chunks/{chunk-54HTQ3KQ.js → chunk-PUZAIRMY.js} +2 -2
  108. package/dist/cli/chunks/{chunk-XWD7QYS5.js → chunk-PY4B37U3.js} +1 -1
  109. package/dist/cli/chunks/{chunk-O4DJLMRE.js → chunk-PYCYZYIL.js} +4 -4
  110. package/dist/cli/chunks/{chunk-DXKZQYBK.js → chunk-QAGAEAKM.js} +2 -2
  111. package/dist/cli/chunks/{chunk-VSNLUVQI.js → chunk-QH7K2UPP.js} +2 -2
  112. package/dist/cli/chunks/{chunk-4YDLD5TW.js → chunk-QMUTKI34.js} +1 -1
  113. package/dist/cli/chunks/{chunk-6UUNB4AW.js → chunk-QXM3PRVR.js} +2 -2
  114. package/dist/cli/chunks/{chunk-GYJAPCP2.js → chunk-QYUWWTE3.js} +1 -1
  115. package/dist/cli/chunks/{chunk-EPETDHDV.js → chunk-RCU5L7FF.js} +2 -2
  116. package/dist/cli/chunks/{chunk-5Y3P6IAQ.js → chunk-RDXIRE2I.js} +2 -2
  117. package/dist/cli/chunks/{chunk-6FNPEC2I.js → chunk-SCBWRKPE.js} +1 -1
  118. package/dist/cli/chunks/{chunk-IPRUAUGV.js → chunk-SJ3SHZUC.js} +4 -4
  119. package/dist/cli/chunks/{chunk-WM6MDDHR.js → chunk-TCDGJYM2.js} +1 -1
  120. package/dist/cli/chunks/{chunk-A2FZAEIU.js → chunk-TG44VKO3.js} +2 -2
  121. package/dist/cli/chunks/{chunk-ZQZ4NYTM.js → chunk-TK7TGVVQ.js} +1 -1
  122. package/dist/cli/chunks/{chunk-LBKEWXMR.js → chunk-TOZ6WUAB.js} +2 -2
  123. package/dist/cli/chunks/{chunk-JRCHYAB7.js → chunk-TU2PSEDW.js} +2 -2
  124. package/dist/cli/chunks/{chunk-IPEUGCUK.js → chunk-TXSVZYFA.js} +2 -2
  125. package/dist/cli/chunks/{chunk-TZFIBU6S.js → chunk-U6QAKKNB.js} +2 -2
  126. package/dist/cli/chunks/{chunk-FW3EEASU.js → chunk-U7B4WCBY.js} +1 -1
  127. package/dist/cli/chunks/{chunk-L5W7KTBW.js → chunk-USLHYNYG.js} +2 -2
  128. package/dist/cli/chunks/{chunk-PMFV3ZFP.js → chunk-VENEJ3UI.js} +2 -2
  129. package/dist/cli/chunks/{chunk-JFGKC6D4.js → chunk-W2DF6FNE.js} +1 -1
  130. package/dist/cli/chunks/{chunk-LYOAIGIT.js → chunk-X6IEQVSF.js} +2 -2
  131. package/dist/cli/chunks/{chunk-IUZNVWCR.js → chunk-X6UGFKHW.js} +2 -2
  132. package/dist/cli/chunks/{chunk-2MC2YH4J.js → chunk-XNXFEMWT.js} +1 -1
  133. package/dist/cli/chunks/{chunk-JH5HQ2HW.js → chunk-Y4ERDIPP.js} +2 -2
  134. package/dist/cli/chunks/{chunk-26BODPAN.js → chunk-YE42UTLT.js} +2 -2
  135. package/dist/cli/chunks/{chunk-6FMMHW2R.js → chunk-YKZ3ZJWT.js} +2 -2
  136. package/dist/cli/chunks/{chunk-UZZKBGGQ.js → chunk-YMB4YVFX.js} +3 -3
  137. package/dist/cli/chunks/{chunk-3K3QGBH7.js → chunk-YUFUGGXY.js} +2 -2
  138. package/dist/cli/chunks/{chunk-M6NSPXHR.js → chunk-Z5A2ENBC.js} +2 -2
  139. package/dist/cli/chunks/{chunk-QPH72S4A.js → chunk-ZBY4HSHR.js} +2 -2
  140. package/dist/cli/chunks/{chunk-2C6LRXLU.js → chunk-ZK6GXL5J.js} +2 -2
  141. package/dist/cli/chunks/chunk-ZYPSXPQ5.js +2 -0
  142. package/dist/cli/chunks/{ci-SIPIBCBR.js → ci-YA6SQ3PU.js} +2 -2
  143. package/dist/cli/chunks/{ci-output-TDKJNSD4.js → ci-output-KKHXCQI4.js} +2 -2
  144. package/dist/cli/chunks/{circuit-breaker-4JC4THEE.js → circuit-breaker-RTBCXGKA.js} +2 -2
  145. package/dist/cli/chunks/{claude-flow-setup-7LCBF65N.js → claude-flow-setup-CRV3Y6LO.js} +2 -2
  146. package/dist/cli/chunks/client-VXJRAW3W.js +2 -0
  147. package/dist/cli/chunks/{cline-installer-X3RPF536.js → cline-installer-IS2VLXQS.js} +2 -2
  148. package/dist/cli/chunks/{code-QWSERFVQ.js → code-3CSNTK5O.js} +2 -2
  149. package/dist/cli/chunks/{code-index-extractor-B6C35JTM.js → code-index-extractor-P2YXEJGV.js} +2 -2
  150. package/dist/cli/chunks/{codex-installer-A427S2HR.js → codex-installer-QGDV2CAQ.js} +2 -2
  151. package/dist/cli/chunks/{completions-77KS3LAM.js → completions-TYECEYHY.js} +2 -2
  152. package/dist/cli/chunks/{complexity-analyzer-SJUYVCGS.js → complexity-analyzer-GA5KSFF2.js} +2 -2
  153. package/dist/cli/chunks/{continuedev-installer-HQMJQXFA.js → continuedev-installer-NW5Y4ZMI.js} +2 -2
  154. package/dist/cli/chunks/{copilot-installer-JVWVXFRV.js → copilot-installer-E5BIBYG6.js} +2 -2
  155. package/dist/cli/chunks/{cost-tracker-ATJWY2ZJ.js → cost-tracker-JLSEY4ID.js} +2 -2
  156. package/dist/cli/chunks/{coverage-OVUELXVF.js → coverage-4TH275AN.js} +3 -3
  157. package/dist/cli/chunks/cross-domain-router-AKHC7TFO.js +2 -0
  158. package/dist/cli/chunks/{cursor-installer-HMRQMVDC.js → cursor-installer-4SXSE5YT.js} +2 -2
  159. package/dist/cli/chunks/{daemon-KSWTELMB.js → daemon-7T4RZQH6.js} +3 -3
  160. package/dist/cli/chunks/{daemon-PJLXQV52.js → daemon-U6MP4P6S.js} +4 -4
  161. package/dist/cli/chunks/{dag-attention-scheduler-U2ENVYTQ.js → dag-attention-scheduler-DT2V46XR.js} +2 -2
  162. package/dist/cli/chunks/{detect-TMMIVPON.js → detect-WHSTB4QT.js} +2 -2
  163. package/dist/cli/chunks/{dist-node-ELGZENVQ.js → dist-node-4LC2RJXW.js} +2 -2
  164. package/dist/cli/chunks/{domain-handler-XERZXZL6.js → domain-handler-A2LOOU7Y.js} +2 -2
  165. package/dist/cli/chunks/{domain-transfer-QRERMYSJ.js → domain-transfer-4RJTMB3Y.js} +2 -2
  166. package/dist/cli/chunks/dream-FPWIC7KF.js +2 -0
  167. package/dist/cli/chunks/{embed-and-insert-pattern-Q2PARYU4.js → embed-and-insert-pattern-PR3KTT24.js} +2 -2
  168. package/dist/cli/chunks/{eval-A2QR6KW4.js → eval-2HRBMOOB.js} +2 -2
  169. package/dist/cli/chunks/{experience-capture-middleware-CQWPD3DM.js → experience-capture-middleware-X46IYOSD.js} +3 -3
  170. package/dist/cli/chunks/{fast-paths-IAOUZHSJ.js → fast-paths-LYYYU362.js} +2 -2
  171. package/dist/cli/chunks/{feature-flags-3D74EHP5.js → feature-flags-RNAMQPUN.js} +2 -2
  172. package/dist/cli/chunks/{feature-flags-CODLAMZU.js → feature-flags-TKDXIHOH.js} +2 -2
  173. package/dist/cli/chunks/{file-discovery-ZUBZH4Q6.js → file-discovery-MKGGMDIW.js} +2 -2
  174. package/dist/cli/chunks/{fleet-TTADPVN2.js → fleet-OY4IBCZG.js} +3 -3
  175. package/dist/cli/chunks/{gnn-wrapper-ZFDW3ZAW.js → gnn-wrapper-G5OGHVAQ.js} +2 -2
  176. package/dist/cli/chunks/{heartbeat-handler-IV67NVZW.js → heartbeat-handler-N7IUATSD.js} +4 -4
  177. package/dist/cli/chunks/heartbeat-scheduler-WHGMTRT7.js +2 -0
  178. package/dist/cli/chunks/hnsw-adapter-IA2M5KDH.js +2 -0
  179. package/dist/cli/chunks/hnsw-index-UBXTXXLQ.js +2 -0
  180. package/dist/cli/chunks/{hnsw-legacy-bridge-GMFHJ4OK.js → hnsw-legacy-bridge-TMCMZDVF.js} +2 -2
  181. package/dist/cli/chunks/{better-sqlite3-4JUNP7IW.js → hnswlib-node-NN6GB2YD.js} +2 -2
  182. package/dist/cli/chunks/{hooks-DOGCENUA.js → hooks-5QDXEZ25.js} +53 -53
  183. package/dist/cli/chunks/{hybrid-router-LQO3U6IH.js → hybrid-router-IY62NN7G.js} +2 -2
  184. package/dist/cli/chunks/{hypergraph-engine-KHKAUWVL.js → hypergraph-engine-QQYKS2F3.js} +2 -2
  185. package/dist/cli/chunks/{hypergraph-handler-T6X4F24T.js → hypergraph-handler-YXFNXMRF.js} +3 -3
  186. package/dist/cli/chunks/impact-analyzer-6PVCOS33.js +2 -0
  187. package/dist/cli/chunks/{init-handler-JTXMI2GF.js → init-handler-SFFSDGEF.js} +6 -6
  188. package/dist/cli/chunks/init-wizard-XHP5C6RD.js +2 -0
  189. package/dist/cli/chunks/kernel-YM5PY5SS.js +2 -0
  190. package/dist/cli/chunks/{kilocode-installer-P2WDAIOD.js → kilocode-installer-QFRYXQYY.js} +2 -2
  191. package/dist/cli/chunks/{kiro-installer-CLTOWLVB.js → kiro-installer-7L2EYEOR.js} +2 -2
  192. package/dist/cli/chunks/knowledge-graph-LTUOUHO7.js +2 -0
  193. package/dist/cli/chunks/{learning-CNDBY3JP.js → learning-7TVVL5UH.js} +3 -3
  194. package/dist/cli/chunks/{llm-router-SJOZ6EIJ.js → llm-router-S3HHVPH4.js} +4 -4
  195. package/dist/cli/chunks/{load-GXZWRYTU.js → load-Y46RO7BF.js} +2 -2
  196. package/dist/cli/chunks/load-test-CYCAQI3F.js +2 -0
  197. package/dist/cli/chunks/{mcp-LLMLANLC.js → mcp-PYNP2S5O.js} +2 -2
  198. package/dist/cli/chunks/{memory-MEBFXR4C.js → memory-DAVXW5OP.js} +5 -5
  199. package/dist/cli/chunks/memory-backend-RW2OPAJU.js +2 -0
  200. package/dist/cli/chunks/{memory-handlers-46WKVXKK.js → memory-handlers-6COHVON7.js} +2 -2
  201. package/dist/cli/chunks/{multi-model-executor-ZO35ZPDR.js → multi-model-executor-7ECJRCM3.js} +2 -2
  202. package/dist/cli/chunks/{opencode-installer-EG2MFPDZ.js → opencode-installer-H7QOONUC.js} +2 -2
  203. package/dist/cli/chunks/{orchestrator-PXA5IT5X.js → orchestrator-TSJ2F3MG.js} +5 -5
  204. package/dist/cli/chunks/{pipeline-T3XOEAKT.js → pipeline-SXR4MRY7.js} +2 -2
  205. package/dist/cli/chunks/{platform-CPKBJ4I6.js → platform-7NOS56VD.js} +2 -2
  206. package/dist/cli/chunks/{plugin-YDP2IK3D.js → plugin-VLSWBGJN.js} +2 -2
  207. package/dist/cli/chunks/{prime-radiant-advanced-wasm-GDN5WBH2.js → prime-radiant-advanced-wasm-7ZHSOP7H.js} +2 -2
  208. package/dist/cli/chunks/protocol-executor-CREUYOBZ.js +2 -0
  209. package/dist/cli/chunks/{protocol-handler-32QLWTY3.js → protocol-handler-LWNYDM4D.js} +2 -2
  210. package/dist/cli/chunks/{prove-7JFRIBOM.js → prove-JYFW3OBB.js} +2 -2
  211. package/dist/cli/chunks/{provider-manager-TNR7QM6Z.js → provider-manager-VPS4W7KG.js} +2 -2
  212. package/dist/cli/chunks/qe-reasoning-bank-J4DLHRJY.js +2 -0
  213. package/dist/cli/chunks/{quality-G36Z4FD3.js → quality-FCAOFXZ2.js} +2 -2
  214. package/dist/cli/chunks/queen-coordinator-MGLNSTPY.js +2 -0
  215. package/dist/cli/chunks/{real-embeddings-RYVIB5N2.js → real-embeddings-LE6YXNPZ.js} +2 -2
  216. package/dist/cli/chunks/{roocode-installer-ZANTFQAH.js → roocode-installer-ZVGJSAWD.js} +2 -2
  217. package/dist/cli/chunks/router-CXGPFUT2.js +2 -0
  218. package/dist/cli/chunks/routing-feedback-MZ73LFBP.js +2 -0
  219. package/dist/cli/chunks/{routing-handler-6YNDHLBC.js → routing-handler-AGDHK3A2.js} +2 -2
  220. package/dist/cli/chunks/{ruvector-commands-E42JA573.js → ruvector-commands-UGZINDCN.js} +2 -2
  221. package/dist/cli/chunks/{rvf-dual-writer-SQDEXP45.js → rvf-dual-writer-PW7H6G4V.js} +2 -2
  222. package/dist/cli/chunks/{rvf-migration-adapter-DMI4QBRX.js → rvf-migration-adapter-ZKOTVCHJ.js} +2 -2
  223. package/dist/cli/chunks/{rvf-migration-coordinator-AUEOD5MP.js → rvf-migration-coordinator-SCBEMOP3.js} +2 -2
  224. package/dist/cli/chunks/rvf-native-adapter-T6JBPHTE.js +2 -0
  225. package/dist/cli/chunks/safe-db-DS4SKPYB.js +2 -0
  226. package/dist/cli/chunks/schedule-H2Q7XWAK.js +2 -0
  227. package/dist/cli/chunks/scheduler-PMZMKQIF.js +2 -0
  228. package/dist/cli/chunks/{security-BJTKEGXZ.js → security-H7QX46VA.js} +3 -3
  229. package/dist/cli/chunks/{shared-rvf-adapter-RWX6AAVO.js → shared-rvf-adapter-LWYHWJIA.js} +2 -2
  230. package/dist/cli/chunks/{shared-rvf-dual-writer-PIZFXKKE.js → shared-rvf-dual-writer-P2U424FB.js} +2 -2
  231. package/dist/cli/chunks/sqlite-persistence-ONKEAMTQ.js +2 -0
  232. package/dist/cli/chunks/{status-handler-BSQJAFH2.js → status-handler-UNX3RA3S.js} +2 -2
  233. package/dist/cli/chunks/{structural-health-ZL4KQNQX.js → structural-health-65YV3M5E.js} +2 -2
  234. package/dist/cli/chunks/{sync-KH3IIPKB.js → sync-B4O3NDJ6.js} +2 -2
  235. package/dist/cli/chunks/{sync-BM32HBUY.js → sync-OZ7CHYYO.js} +2 -2
  236. package/dist/cli/chunks/{task-handler-SWMZVIZ5.js → task-handler-NIG3USPG.js} +2 -2
  237. package/dist/cli/chunks/{task-handlers-PJD6QWQP.js → task-handlers-Z2PI7BTO.js} +3 -3
  238. package/dist/cli/chunks/{test-ACQ2N7AK.js → test-MNLYS3WS.js} +4 -4
  239. package/dist/cli/chunks/{test-scheduling-BCSHQHZO.js → test-scheduling-VCL6D6T7.js} +3 -3
  240. package/dist/cli/chunks/{token-bootstrap-7DAATWOU.js → token-bootstrap-DGMEU3W4.js} +2 -2
  241. package/dist/cli/chunks/{token-usage-AYPCJN77.js → token-usage-IXTYAV5K.js} +2 -2
  242. package/dist/cli/chunks/{transformers-ZYSRJRXA.js → transformers-5CWLXT2M.js} +2 -2
  243. package/dist/cli/chunks/{tree-sitter-wasm-parser-HXHBILDS.js → tree-sitter-wasm-parser-W3FKJLJG.js} +2 -2
  244. package/dist/cli/chunks/{types-O5ODR3WQ.js → types-NVOCAZCQ.js} +2 -2
  245. package/dist/cli/chunks/unified-memory-PNHI6I3R.js +2 -0
  246. package/dist/cli/chunks/unified-memory-hnsw-CDV3UMBD.js +2 -0
  247. package/dist/cli/chunks/unified-persistence-FMCHCEZV.js +2 -0
  248. package/dist/cli/chunks/{upgrade-ULP5J35D.js → upgrade-VJYD4U4X.js} +2 -2
  249. package/dist/cli/chunks/{validate-JS6WD4S5.js → validate-CAKTCZ3T.js} +2 -2
  250. package/dist/cli/chunks/{validate-swarm-NCO5QBTJ.js → validate-swarm-H24JHUTN.js} +2 -2
  251. package/dist/cli/chunks/{vibium-RGRUK6EW.js → vibium-247XN6V3.js} +2 -2
  252. package/dist/cli/chunks/visual-security-3WRJQDUY.js +2 -0
  253. package/dist/cli/chunks/{web-tree-sitter-NGX5C2HB.js → web-tree-sitter-3DOMHLRH.js} +2 -2
  254. package/dist/cli/chunks/{windsurf-installer-KRAE3JB2.js → windsurf-installer-S2MOA5TQ.js} +2 -2
  255. package/dist/cli/chunks/witness-chain-5ZKCKNRJ.js +2 -0
  256. package/dist/cli/chunks/{witness-chain-62V6YLTM.js → witness-chain-CKLVPFLG.js} +2 -2
  257. package/dist/cli/chunks/{workflow-BVMZE2FE.js → workflow-GU3IV2OD.js} +4 -4
  258. package/dist/cli/chunks/workflow-orchestrator-OBSFY7YK.js +2 -0
  259. package/dist/cli/chunks/{wrappers-SEDAPKCG.js → wrappers-74Y4EKW3.js} +2 -2
  260. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.d.ts +3 -3
  261. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +4 -3
  262. package/dist/cli/commands/hooks-handlers/routing-hooks.js +50 -12
  263. package/dist/cli/commands/hooks-handlers/task-hooks.js +30 -6
  264. package/dist/learning/agent-routing.d.ts +13 -1
  265. package/dist/learning/agent-routing.js +14 -1
  266. package/dist/learning/qe-reasoning-bank.js +4 -2
  267. package/dist/mcp/bundle.js +253 -253
  268. package/package.json +6 -2
  269. package/dist/cli/chunks/adapter-OXCJPHRI.js +0 -2
  270. package/dist/cli/chunks/aqe-learning-engine-HDAC5FJJ.js +0 -2
  271. package/dist/cli/chunks/base-JY364ZUA.js +0 -2
  272. package/dist/cli/chunks/browser-workflow-DAGIWFJE.js +0 -2
  273. package/dist/cli/chunks/chunk-DXOFPU3A.js +0 -2
  274. package/dist/cli/chunks/client-N53TFCGN.js +0 -2
  275. package/dist/cli/chunks/cross-domain-router-3TYSHECB.js +0 -2
  276. package/dist/cli/chunks/dream-EU6ZE7N7.js +0 -2
  277. package/dist/cli/chunks/heartbeat-scheduler-JN775DB4.js +0 -2
  278. package/dist/cli/chunks/hnsw-adapter-PHMYMEDW.js +0 -2
  279. package/dist/cli/chunks/hnsw-index-BS65TOXD.js +0 -2
  280. package/dist/cli/chunks/impact-analyzer-BR25PT76.js +0 -2
  281. package/dist/cli/chunks/init-wizard-42IYSTTD.js +0 -2
  282. package/dist/cli/chunks/kernel-JFSTL7NN.js +0 -2
  283. package/dist/cli/chunks/knowledge-graph-JYRFHKO2.js +0 -2
  284. package/dist/cli/chunks/load-test-K7XFH5AD.js +0 -2
  285. package/dist/cli/chunks/memory-backend-5O4Y5PKW.js +0 -2
  286. package/dist/cli/chunks/protocol-executor-VACEWXHI.js +0 -2
  287. package/dist/cli/chunks/qe-reasoning-bank-4A5MKOA5.js +0 -2
  288. package/dist/cli/chunks/queen-coordinator-FF3W2BLZ.js +0 -2
  289. package/dist/cli/chunks/router-OTSEMLFG.js +0 -2
  290. package/dist/cli/chunks/routing-feedback-PHWP7EO3.js +0 -2
  291. package/dist/cli/chunks/rvf-native-adapter-E4XSLZPD.js +0 -2
  292. package/dist/cli/chunks/safe-db-ESTCAWF2.js +0 -2
  293. package/dist/cli/chunks/schedule-VJYEPFI4.js +0 -2
  294. package/dist/cli/chunks/scheduler-2SVKVACS.js +0 -2
  295. package/dist/cli/chunks/sqlite-persistence-KGN5AIVX.js +0 -2
  296. package/dist/cli/chunks/unified-memory-UBGLIO43.js +0 -2
  297. package/dist/cli/chunks/unified-memory-hnsw-BJMFYCFZ.js +0 -2
  298. package/dist/cli/chunks/unified-persistence-Q54OKOYY.js +0 -2
  299. package/dist/cli/chunks/visual-security-RRVHQBRP.js +0 -2
  300. package/dist/cli/chunks/witness-chain-2YIUBXAF.js +0 -2
  301. package/dist/cli/chunks/workflow-orchestrator-VGNC5PFE.js +0 -2
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.34");process.exit(0)}
2
- import"./chunk-6FNPEC2I.js";import{createRequire as t}from"module";var o=t(import.meta.url),e=o("web-tree-sitter"),i=e,{RuvectorLayer:n,TensorCompress:a,differentiableSearch:c,hierarchicalForward:s,getCompressionLevel:l,init:p,FlashAttention:m,DotProductAttention:u,MultiHeadAttention:d,HyperbolicAttention:A,LinearAttention:f,MoEAttention:h,SonaEngine:_,pipeline:b}=e||{};export{u as DotProductAttention,m as FlashAttention,A as HyperbolicAttention,f as LinearAttention,h as MoEAttention,d as MultiHeadAttention,n as RuvectorLayer,_ as SonaEngine,a as TensorCompress,i as default,c as differentiableSearch,l as getCompressionLevel,s as hierarchicalForward,p as init,b as pipeline};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import"./chunk-SCBWRKPE.js";import{createRequire as t}from"module";var o=t(import.meta.url),e=o("web-tree-sitter"),i=e,{RuvectorLayer:n,TensorCompress:a,differentiableSearch:c,hierarchicalForward:s,getCompressionLevel:l,init:p,FlashAttention:m,DotProductAttention:u,MultiHeadAttention:d,HyperbolicAttention:A,LinearAttention:f,MoEAttention:h,SonaEngine:_,pipeline:b}=e||{};export{u as DotProductAttention,m as FlashAttention,A as HyperbolicAttention,f as LinearAttention,h as MoEAttention,d as MultiHeadAttention,n as RuvectorLayer,_ as SonaEngine,a as TensorCompress,i as default,c as differentiableSearch,l as getCompressionLevel,s as hierarchicalForward,p as init,b as pipeline};
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.34");process.exit(0)}
2
- import{b as u}from"./chunk-FCWQRUXQ.js";import{a as f,c as h}from"./chunk-I74WDBHS.js";import"./chunk-6FNPEC2I.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import{b as u}from"./chunk-GAC4MD6S.js";import{a as f,c as h}from"./chunk-O4C3JEOR.js";import"./chunk-SCBWRKPE.js";h();import{existsSync as i,mkdirSync as d,readFileSync as g,writeFileSync as a}from"fs";import{join as p,dirname as v}from"path";var c=class{projectRoot;overwrite;generator;constructor(e){this.projectRoot=e.projectRoot,this.overwrite=e.overwrite??!1,this.generator=u()}async install(){let e={success:!0,mcpConfigured:!1,rulesInstalled:!1,errors:[],configPath:"",rulesPath:""};try{let t=this.generator.generateMcpConfig("windsurf"),r=p(this.projectRoot,t.path);if(e.configPath=r,!i(r)||this.overwrite){let o=v(r);if(i(o)||d(o,{recursive:!0}),i(r)&&this.overwrite){let m=this.mergeExistingConfig(r,t.content);a(r,m)}else a(r,t.content);e.mcpConfigured=!0}let n=this.generator.generateBehavioralRules("windsurf"),s=p(this.projectRoot,n.path);if(e.rulesPath=s,!i(s)||this.overwrite){if(i(s)&&this.overwrite){let o=this.mergeExistingRules(s,n.content);a(s,o)}else a(s,n.content);e.rulesInstalled=!0}}catch(t){e.success=!1,e.errors.push(`Windsurf installation failed: ${f(t)}`)}return e}mergeExistingConfig(e,t){try{let r=JSON.parse(g(e,"utf-8")),n=JSON.parse(t);return r.mcpServers||(r.mcpServers={}),Object.assign(r.mcpServers,n.mcpServers),JSON.stringify(r,null,2)+`
3
3
  `}catch{return t}}mergeExistingRules(e,t){try{let r=g(e,"utf-8");return r.includes("Agentic QE")||r.includes("fleet_init")?r:r.trimEnd()+`
4
4
 
5
5
  ---
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-AJ2VFSLX.js";import"./chunk-5MSZREOD.js";import"./chunk-QAGAEAKM.js";import"./chunk-HOZNVDFF.js";import"./chunk-ZYPSXPQ5.js";import"./chunk-VENEJ3UI.js";import"./chunk-O4C3JEOR.js";import"./chunk-TXSVZYFA.js";import"./chunk-RCU5L7FF.js";import"./chunk-Y4ERDIPP.js";import"./chunk-3CIQ6CQ4.js";import"./chunk-IF4ZZ2HD.js";import"./chunk-KI6RXKP4.js";import"./chunk-DTJHO3WI.js";import"./chunk-X6UGFKHW.js";import"./chunk-ZBY4HSHR.js";import"./chunk-SCBWRKPE.js";export{a as GENESIS_PREV_HASH,f as WitnessChain,i as _resetWitnessChainForTests,h as createWitnessChain,g as getWitnessChain,d as hashWith,e as serializeEntry,b as sha256,c as shake256};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.34");process.exit(0)}
2
- import{a,b,c,d,e,f,g}from"./chunk-7AEFEPFH.js";import"./chunk-DXOFPU3A.js";import"./chunk-PMFV3ZFP.js";import"./chunk-QPH72S4A.js";import"./chunk-6FNPEC2I.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import{a,b,c,d,e,f,g}from"./chunk-NYU4YD5V.js";import"./chunk-ZYPSXPQ5.js";import"./chunk-VENEJ3UI.js";import"./chunk-ZBY4HSHR.js";import"./chunk-SCBWRKPE.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
@@ -1,5 +1,5 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.34");process.exit(0)}
2
- import"./chunk-45SJSOSI.js";import{b as $}from"./chunk-4AIJOXQJ.js";import{d as R}from"./chunk-HIZWO4J3.js";import{b as k,c as C,d as b}from"./chunk-GCMCU54O.js";import{c as W}from"./chunk-VR65KHTH.js";import"./chunk-4YDLD5TW.js";import"./chunk-I74WDBHS.js";import"./chunk-6FNPEC2I.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import"./chunk-6BHUKCLI.js";import{b as $}from"./chunk-HHGZ4LXC.js";import{d as R}from"./chunk-FZA674BT.js";import{b as k,c as C,d as b}from"./chunk-GFMSAL5Y.js";import{c as W}from"./chunk-HOZNVDFF.js";import"./chunk-QMUTKI34.js";import"./chunk-O4C3JEOR.js";import"./chunk-SCBWRKPE.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
3
3
  Running workflow from: ${t}
4
4
  `));let s=k(c);if(!s.success||!s.workflow){console.log(o.red("Failed to parse pipeline:"));for(let w of s.errors)console.log(o.red(` ${w}`));await a(1)}let r={...W(l.params,"params")};if(s.pipeline){for(let w of s.pipeline.stages)if(w.params)for(let[S,h]of Object.entries(w.params))r[S]=h}if(!d.workflowOrchestrator.getWorkflow(s.workflow.id)){let w=d.workflowOrchestrator.registerWorkflow(s.workflow);w.success||(console.log(o.red(`Failed to register workflow: ${w.error.message}`)),await a(1))}let n=await d.workflowOrchestrator.executeWorkflow(s.workflow.id,r);if(!n.success){console.log(o.red(`Failed to start workflow: ${n.error.message}`)),await a(1);return}let p=n.value;if(console.log(o.cyan(` Execution ID: ${p}`)),console.log(o.gray(` Workflow: ${s.workflow.name}`)),console.log(o.gray(` Stages: ${s.workflow.steps.length}`)),console.log(""),l.watch){console.log(o.blue(`Workflow Progress:
5
5
  `));let w,S=Date.now();for(;;){let g=d.workflowOrchestrator.getWorkflowStatus(p);if(!g)break;if(!w||w.progress!==g.progress||w.status!==g.status||JSON.stringify(w.currentSteps)!==JSON.stringify(g.currentSteps)){process.stdout.write("\r\x1B[K");let v="\u2588".repeat(Math.floor(g.progress/5))+"\u2591".repeat(20-Math.floor(g.progress/5)),D=g.status==="completed"?o.green:g.status==="failed"?o.red:g.status==="running"?o.yellow:o.gray;console.log(` [${v}] ${g.progress}% - ${D(g.status)}`),g.currentSteps.length>0&&l.verbose&&console.log(o.gray(` Running: ${g.currentSteps.join(", ")}`)),w=g}if(g.status==="completed"||g.status==="failed"||g.status==="cancelled")break;await new Promise(v=>setTimeout(v,500))}let h=d.workflowOrchestrator.getWorkflowStatus(p);if(h){console.log("");let g=h.duration||Date.now()-S;h.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(g)}`)),console.log(o.gray(` Completed: ${h.completedSteps.length} stages`)),h.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${h.skippedSteps.length} stages`))):h.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${h.error}`)),console.log(o.gray(` Failed stages: ${h.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${h.status}`))}}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${p}' to check progress`));console.log(""),await a(0)}catch(s){console.error(o.red(`
@@ -35,10 +35,10 @@ Workflow cancelled: ${t}
35
35
  `)):console.log(o.red(`
36
36
  Failed to cancel workflow: ${l.error.message}
37
37
  `)),await a(l.success?0:1)}catch(l){console.error(o.red(`
38
- Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-DAGIWFJE.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
38
+ Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-XUG5Z5CJ.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
39
39
  Browser Workflow Templates:
40
40
  `));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await a(0)}catch(t){console.error(o.red(`
41
- Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-DAGIWFJE.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-TDKJNSD4.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
41
+ Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-XUG5Z5CJ.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-KKHXCQI4.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
42
42
  File not found: ${p}
43
43
  `)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
44
44
  Provide a template name or --yaml. Use "workflow browser-list" to see templates.
@@ -0,0 +1,2 @@
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-5ZTY5JJX.js";import"./chunk-2EWOYVH3.js";import"./chunk-5MSZREOD.js";import"./chunk-QAGAEAKM.js";import"./chunk-HOZNVDFF.js";import"./chunk-ZYPSXPQ5.js";import"./chunk-VENEJ3UI.js";import"./chunk-QMUTKI34.js";import"./chunk-O4C3JEOR.js";import"./chunk-NKA3X6VT.js";import"./chunk-TXSVZYFA.js";import"./chunk-RCU5L7FF.js";import"./chunk-Y4ERDIPP.js";import"./chunk-3CIQ6CQ4.js";import"./chunk-IF4ZZ2HD.js";import"./chunk-KI6RXKP4.js";import"./chunk-DTJHO3WI.js";import"./chunk-X6UGFKHW.js";import"./chunk-ZBY4HSHR.js";import"./chunk-SCBWRKPE.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
@@ -1,2 +1,2 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.34");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-ULXDULD6.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-2C6LRXLU.js";import"./chunk-PYQ7VCH2.js";import"./chunk-DXKZQYBK.js";import"./chunk-VR65KHTH.js";import"./chunk-DXOFPU3A.js";import"./chunk-PMFV3ZFP.js";import"./chunk-I74WDBHS.js";import"./chunk-IPEUGCUK.js";import"./chunk-EPETDHDV.js";import"./chunk-JH5HQ2HW.js";import"./chunk-YIVJD5IY.js";import"./chunk-QX74JLGO.js";import"./chunk-REVCXO2R.js";import"./chunk-RYFQYSVF.js";import"./chunk-IUZNVWCR.js";import"./chunk-QPH72S4A.js";import"./chunk-6FNPEC2I.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.36");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-IMP43AXO.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-ZK6GXL5J.js";import"./chunk-5MSZREOD.js";import"./chunk-QAGAEAKM.js";import"./chunk-HOZNVDFF.js";import"./chunk-ZYPSXPQ5.js";import"./chunk-VENEJ3UI.js";import"./chunk-O4C3JEOR.js";import"./chunk-TXSVZYFA.js";import"./chunk-RCU5L7FF.js";import"./chunk-Y4ERDIPP.js";import"./chunk-3CIQ6CQ4.js";import"./chunk-IF4ZZ2HD.js";import"./chunk-KI6RXKP4.js";import"./chunk-DTJHO3WI.js";import"./chunk-X6UGFKHW.js";import"./chunk-ZBY4HSHR.js";import"./chunk-SCBWRKPE.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
@@ -116,8 +116,9 @@ export declare function persistTaskOutcome(opts: {
116
116
  * - agent_id='aqe-hook-router' (per-instance partition; persistent-q-router
117
117
  * convention so we don't collide with canonical RuVector q-router writes
118
118
  * at agent_id='q-router')
119
- * - state_key='${taskType}|${priority}|${domain}|${complexityBucket}'
120
- * (structural; see q-learning-router.ts:591)
119
+ * - state_key='${taskType}|${priority}|${domain}' (ADR-096; was 4-dim
120
+ * pre-issue-#499 the 4th `complexityBucket` segment fragmented the
121
+ * Q-state space on raw description length so visits never accumulated)
121
122
  * - action_key=agent name chosen
122
123
  * - id='q-learning:aqe-hook-router:${stateKey}:${actionKey}'
123
124
  *
@@ -130,7 +131,6 @@ export declare function updateHookRouterQValue(opts: {
130
131
  taskType: string;
131
132
  priority: string;
132
133
  domain: string;
133
- complexityBucket: number;
134
134
  agent: string;
135
135
  success: boolean;
136
136
  }): Promise<void>;
@@ -489,8 +489,9 @@ export async function persistTaskOutcome(opts) {
489
489
  * - agent_id='aqe-hook-router' (per-instance partition; persistent-q-router
490
490
  * convention so we don't collide with canonical RuVector q-router writes
491
491
  * at agent_id='q-router')
492
- * - state_key='${taskType}|${priority}|${domain}|${complexityBucket}'
493
- * (structural; see q-learning-router.ts:591)
492
+ * - state_key='${taskType}|${priority}|${domain}' (ADR-096; was 4-dim
493
+ * pre-issue-#499 the 4th `complexityBucket` segment fragmented the
494
+ * Q-state space on raw description length so visits never accumulated)
494
495
  * - action_key=agent name chosen
495
496
  * - id='q-learning:aqe-hook-router:${stateKey}:${actionKey}'
496
497
  *
@@ -511,7 +512,7 @@ export async function updateHookRouterQValue(opts) {
511
512
  db.pragma('busy_timeout = 60000');
512
513
  }
513
514
  catch { /* hook-side patient timeout (ADR-001 / patch 260) */ }
514
- const stateKey = `${opts.taskType}|${opts.priority}|${opts.domain || 'any'}|${opts.complexityBucket}`;
515
+ const stateKey = `${opts.taskType}|${opts.priority}|${opts.domain || 'any'}`;
515
516
  const actionKey = opts.agent;
516
517
  const id = `q-learning:aqe-hook-router:${stateKey}:${actionKey}`;
517
518
  const reward = opts.success ? 0.1 : -1.0;
@@ -9,7 +9,9 @@ import { ensureRoutingOutcomesAdr095Columns } from '../../../routing/routing-out
9
9
  import chalk from 'chalk';
10
10
  import path from 'node:path';
11
11
  import { findProjectRoot, getUnifiedMemory } from '../../../kernel/unified-memory.js';
12
- import { applyHookBusyTimeout, getHooksSystem, createHybridBackendWithTimeout, incrementDreamExperience, printJson, printError, printGuidance, readStdinJsonEvent, } from './hooks-shared.js';
12
+ import { applyHookBusyTimeout, getHooksSystem, createHybridBackendWithTimeout, incrementDreamExperience, printJson, printError, printGuidance, readStdinJsonEvent, updateHookRouterQValue, } from './hooks-shared.js';
13
+ import { deriveTaskType } from '../../../learning/agent-routing.js';
14
+ import { detectQEDomains } from '../../../learning/qe-patterns.js';
13
15
  /**
14
16
  * Extract a routable task description from a Claude Code hook event JSON
15
17
  * payload. Different hook surfaces use different field names — try the
@@ -201,17 +203,53 @@ export function registerRoutingHooks(hooks) {
201
203
  }
202
204
  const db = um.getDatabase();
203
205
  applyHookBusyTimeout(db);
204
- const result = db.prepare(`
205
- UPDATE routing_outcomes
206
- SET success = ?, quality_score = ?, duration_ms = 0, error = NULL
207
- WHERE id = (
208
- SELECT id FROM routing_outcomes
209
- WHERE quality_score = -1
210
- AND task_json NOT LIKE '%"taskId"%'
211
- ORDER BY created_at DESC
212
- LIMIT 1
213
- )
214
- `).run(success ? 1 : 0, qualityScore);
206
+ // Issue #499: we need the sentinel's task_json + used_agent to train
207
+ // rl_q_values from this resolved outcome. SELECT first, then UPDATE
208
+ // by id so the row we close is the same row we read for state-key
209
+ // derivation, even if a concurrent insert happens between statements.
210
+ const sentinel = db.prepare(`
211
+ SELECT id, task_json, used_agent FROM routing_outcomes
212
+ WHERE quality_score = -1
213
+ AND task_json NOT LIKE '%"taskId"%'
214
+ ORDER BY created_at DESC
215
+ LIMIT 1
216
+ `).get();
217
+ const result = sentinel
218
+ ? db.prepare(`
219
+ UPDATE routing_outcomes
220
+ SET success = ?, quality_score = ?, duration_ms = 0, error = NULL
221
+ WHERE id = ?
222
+ `).run(success ? 1 : 0, qualityScore, sentinel.id)
223
+ : { changes: 0 };
224
+ // Issue #499 fix #1: train rl_q_values from the resolved route
225
+ // sentinel. The route hook computed a state_key for this same task
226
+ // (qe-reasoning-bank.ts:530-535) and never wrote it anywhere, so we
227
+ // re-derive from task_json.description using the same exported
228
+ // helpers. Writer and reader use identical state_key construction,
229
+ // so the row this trains is the row the next `route` hook reads.
230
+ // Best-effort: Stop hooks must never crash the host on a learning
231
+ // failure.
232
+ //
233
+ // ADR-096: state_key is 3-dim (taskType|priority|domain) — no
234
+ // complexity bucket. See agent-routing.ts buildRoutingStateKey.
235
+ if (sentinel) {
236
+ try {
237
+ const tj = JSON.parse(sentinel.task_json);
238
+ const description = String(tj.description ?? '');
239
+ if (description) {
240
+ await updateHookRouterQValue({
241
+ taskType: deriveTaskType(description),
242
+ priority: 'normal',
243
+ domain: detectQEDomains(description)[0] ?? 'any',
244
+ agent: sentinel.used_agent,
245
+ success,
246
+ });
247
+ }
248
+ }
249
+ catch {
250
+ /* swallow — Stop-hook must not crash the host on learning errors */
251
+ }
252
+ }
215
253
  // Issue #465: orphan-sentinel sweep. Sessions that terminate without
216
254
  // firing Stop (context compact, process kill, IDE crash) leave their
217
255
  // sentinels at quality_score=-1 forever — every subsequent post-route
@@ -12,6 +12,7 @@ import { findProjectRoot, getUnifiedMemory } from '../../../kernel/unified-memor
12
12
  import { applyHookBusyTimeout, getHooksSystem, createHybridBackendWithTimeout, incrementDreamExperience, persistTaskOutcome, updateHookRouterQValue, updateRoutingOutcomeQuality, printJson, printSuccess, } from './hooks-shared.js';
13
13
  import { ensureRoutingOutcomesAdr095Columns } from '../../../routing/routing-outcomes-migration.js';
14
14
  import { deriveTaskType } from '../../../learning/agent-routing.js';
15
+ import { detectQEDomains } from '../../../learning/qe-patterns.js';
15
16
  // ============================================================================
16
17
  // Constants — task-bridge / routing-quality / q-learning
17
18
  // ============================================================================
@@ -259,6 +260,7 @@ export function registerTaskHooks(hooks) {
259
260
  .option('--success <bool>', 'Whether task succeeded', 'true')
260
261
  .option('--agent <name>', 'Agent that executed the task')
261
262
  .option('--duration <ms>', 'Task duration in milliseconds')
263
+ .option('-d, --description <desc>', 'Task description — fallback Q-state source when pre-task bridge is absent (issue #499)')
262
264
  .option('--json', 'Output as JSON')
263
265
  .action(async (options) => {
264
266
  try {
@@ -326,13 +328,35 @@ export function registerTaskHooks(hooks) {
326
328
  qualityScore: outcome.qualityScore,
327
329
  });
328
330
  // Stream F (patch 280): Bellman Q-update for the hook-router state.
329
- // Bridge payload carries the structural state derivation.
330
- if (outcome.bridge) {
331
+ //
332
+ // Issue #499: the original `if (outcome.bridge)` gate silently
333
+ // dropped the Q-update whenever the pre-task bridge wasn't matched
334
+ // (direct Bash/Edit work without a Task tool spawn, or pre-task
335
+ // hook didn't fire). On real projects, `rl_q_values` stayed at ~2
336
+ // rows while `routing_outcomes` reached 139, so the consumer side
337
+ // ADR-095 wired up (qe-reasoning-bank.ts:530) had nothing to read.
338
+ //
339
+ // When bridge is absent, derive the state_key components from the
340
+ // task description directly — same derivation the route hook uses
341
+ // (qe-reasoning-bank.ts:530-535) so writer and reader address the
342
+ // same row in `rl_q_values`. Skip only when we have no description
343
+ // to work from (would land every update at a single "unknown"
344
+ // sentinel state, polluting the table).
345
+ //
346
+ // ADR-096: state_key is 3-dim (taskType|priority|domain); the
347
+ // bridge still carries `complexityBucket` for kv_store schema
348
+ // compatibility but we don't read it here.
349
+ const taskDescription = String(options.description ?? '');
350
+ if (outcome.bridge || taskDescription) {
351
+ const taskType = outcome.bridge?.taskType ?? deriveTaskType(taskDescription);
352
+ const priority = outcome.bridge?.priority ?? 'normal';
353
+ const domain = outcome.bridge?.domain ??
354
+ detectQEDomains(taskDescription)[0] ??
355
+ 'any';
331
356
  await updateHookRouterQValue({
332
- taskType: outcome.bridge.taskType,
333
- priority: outcome.bridge.priority,
334
- domain: outcome.bridge.domain,
335
- complexityBucket: outcome.bridge.complexityBucket,
357
+ taskType,
358
+ priority,
359
+ domain,
336
360
  agent: effectiveAgent,
337
361
  success,
338
362
  });
@@ -152,16 +152,28 @@ export declare function deriveTaskType(description: string): string;
152
152
  * Build the canonical Q-learning state_key. Must match the format used by
153
153
  * `updateHookRouterQValue` in hooks-dream-learning.ts — the writer and
154
154
  * reader must agree on the key shape.
155
+ *
156
+ * ADR-096 (issue #499): dropped `complexityBucket` from the state_key.
157
+ * The previous 4-dim key fragmented the state space on raw description
158
+ * length (a ~55-char vs ~130-char phrasing of the same task landed in
159
+ * different buckets), so `QWEIGHT_RAMP_VISITS=20` was rarely reached per
160
+ * cell and Q-values never converged. The 3-dim key collapses related
161
+ * tasks into the same state, letting Q-learning actually generalize.
155
162
  */
156
163
  export declare function buildRoutingStateKey(opts: {
157
164
  taskType: string;
158
165
  priority?: string;
159
166
  domain?: string;
160
- complexityBucket: number;
161
167
  }): string;
162
168
  /**
163
169
  * Compute the complexity bucket [0, 10] from a task description length.
164
170
  * Mirrors the formula in task-hooks.ts pre-task bridge.
171
+ *
172
+ * @deprecated ADR-096: no longer used for state_key construction (the
173
+ * length-keyed bucket fragmented the Q-state space). Retained for the
174
+ * pre-task bridge payload (kv_store schema compatibility) and any
175
+ * downstream telemetry that wants a coarse complexity signal. Do NOT use
176
+ * for new Q-routing surfaces.
165
177
  */
166
178
  export declare function deriveComplexityBucket(description: string): number;
167
179
  /**
@@ -216,13 +216,26 @@ export function deriveTaskType(description) {
216
216
  * Build the canonical Q-learning state_key. Must match the format used by
217
217
  * `updateHookRouterQValue` in hooks-dream-learning.ts — the writer and
218
218
  * reader must agree on the key shape.
219
+ *
220
+ * ADR-096 (issue #499): dropped `complexityBucket` from the state_key.
221
+ * The previous 4-dim key fragmented the state space on raw description
222
+ * length (a ~55-char vs ~130-char phrasing of the same task landed in
223
+ * different buckets), so `QWEIGHT_RAMP_VISITS=20` was rarely reached per
224
+ * cell and Q-values never converged. The 3-dim key collapses related
225
+ * tasks into the same state, letting Q-learning actually generalize.
219
226
  */
220
227
  export function buildRoutingStateKey(opts) {
221
- return `${opts.taskType}|${opts.priority ?? 'normal'}|${opts.domain ?? 'any'}|${opts.complexityBucket}`;
228
+ return `${opts.taskType}|${opts.priority ?? 'normal'}|${opts.domain ?? 'any'}`;
222
229
  }
223
230
  /**
224
231
  * Compute the complexity bucket [0, 10] from a task description length.
225
232
  * Mirrors the formula in task-hooks.ts pre-task bridge.
233
+ *
234
+ * @deprecated ADR-096: no longer used for state_key construction (the
235
+ * length-keyed bucket fragmented the Q-state space). Retained for the
236
+ * pre-task bridge payload (kv_store schema compatibility) and any
237
+ * downstream telemetry that wants a coarse complexity signal. Do NOT use
238
+ * for new Q-routing surfaces.
226
239
  */
227
240
  export function deriveComplexityBucket(description) {
228
241
  return Math.max(0, Math.min(10, Math.round(Math.min(description.length / 200, 1) * 10)));
@@ -25,7 +25,7 @@ import { getWitnessChain } from '../audit/witness-chain.js';
25
25
  // Import extracted modules
26
26
  import { DEFAULT_QE_REASONING_BANK_CONFIG } from './qe-reasoning-bank-types.js';
27
27
  import { PRETRAINED_PATTERNS } from './pretrained-patterns.js';
28
- import { AGENT_CAPABILITIES, calculateAgentScores, applyExplorationPolicy, resolveExplorationRate, deriveTaskType, buildRoutingStateKey, deriveComplexityBucket, } from './agent-routing.js';
28
+ import { AGENT_CAPABILITIES, calculateAgentScores, applyExplorationPolicy, resolveExplorationRate, deriveTaskType, buildRoutingStateKey, } from './agent-routing.js';
29
29
  import { resolveTopologyCriticalFromSharedMincut } from './routing-topology-gate.js';
30
30
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
31
31
  import { resizeEmbedding, hashEmbedding } from './embedding-utils.js';
@@ -417,11 +417,13 @@ export class QEReasoningBank {
417
417
  // ADR-095: build the Q-value lookup closure from the task's state_key.
418
418
  // The state_key MUST match what `updateHookRouterQValue` writes from
419
419
  // post-task — buildRoutingStateKey enforces that.
420
+ // ADR-096 (issue #499): state_key dropped `complexityBucket` — the
421
+ // length-keyed bucket fragmented identical tasks across cells so
422
+ // QWEIGHT_RAMP_VISITS=20 was never reached. 3-dim key now.
420
423
  const stateKey = buildRoutingStateKey({
421
424
  taskType: deriveTaskType(request.task),
422
425
  priority: 'normal',
423
426
  domain: detectedDomains[0],
424
- complexityBucket: deriveComplexityBucket(request.task),
425
427
  });
426
428
  const qValueLookup = this.buildQValueLookup(stateKey);
427
429
  // 4. Calculate agent scores (now Q-blended when lookup available)