agentic-qe 3.10.0 → 3.10.2

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 (397) hide show
  1. package/.claude/hooks/README.txt +17 -0
  2. package/.claude/hooks/aqe-hook.cjs +98 -0
  3. package/.claude/hooks/cross-phase-memory.yaml +296 -0
  4. package/.claude/hooks/post-task-sync.sh +113 -0
  5. package/.claude/hooks/v3-domain-workers.json +121 -0
  6. package/.claude/skills/skills-manifest.json +1 -1
  7. package/CHANGELOG.md +148 -0
  8. package/README.md +35 -8
  9. package/dist/cli/bundle.js +5 -5
  10. package/dist/cli/chunks/adapter-CR6J5C76.js +2 -0
  11. package/dist/cli/chunks/{agent-booster-wasm-5UDM2PWG.js → agent-booster-wasm-DHSIPFTH.js} +2 -2
  12. package/dist/cli/chunks/{agent-handler-JSYER5YC.js → agent-handler-FPQVHGGT.js} +2 -2
  13. package/dist/cli/chunks/{agent-memory-branch-T2SAHI4F.js → agent-memory-branch-OLOF5ZHV.js} +2 -2
  14. package/dist/cli/chunks/aqe-learning-engine-2MNTHMB6.js +2 -0
  15. package/dist/cli/chunks/{audit-HIBRVGXG.js → audit-ALRYPHGP.js} +2 -2
  16. package/dist/cli/chunks/base-AOQNGMTL.js +2 -0
  17. package/dist/cli/chunks/{hnswlib-node-TA4DZV62.js → better-sqlite3-5BT5FO64.js} +2 -2
  18. package/dist/cli/chunks/{brain-handler-N6AWIMXG.js → brain-handler-ROZUHCOT.js} +3 -3
  19. package/dist/cli/chunks/{branch-enumerator-VYQGBVEJ.js → branch-enumerator-VK7G4NKJ.js} +2 -2
  20. package/dist/cli/chunks/{browser-2X4WKZPT.js → browser-Q2S75M2F.js} +2 -2
  21. package/dist/cli/chunks/browser-workflow-UJ4A2ZXO.js +2 -0
  22. package/dist/cli/chunks/{chunk-BQX5QDU5.js → chunk-2244IFZA.js} +1 -1
  23. package/dist/cli/chunks/{chunk-S33246T4.js → chunk-22D6VBPD.js} +1 -1
  24. package/dist/cli/chunks/{chunk-UGX4EHT5.js → chunk-24LUQICS.js} +2 -2
  25. package/dist/cli/chunks/{chunk-6HCHW5TS.js → chunk-2EDWGHDA.js} +2 -2
  26. package/dist/cli/chunks/{chunk-4WYGUTSF.js → chunk-2JDLQWSV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-3QULDB7K.js → chunk-2OH3ALYB.js} +1 -1
  28. package/dist/cli/chunks/chunk-3RHHKYUR.js +2 -0
  29. package/dist/cli/chunks/{chunk-Z6JLPPAY.js → chunk-3Z4FHA2E.js} +1 -1
  30. package/dist/cli/chunks/{chunk-ZYZWBNKT.js → chunk-4BXGVM2C.js} +1 -1
  31. package/dist/cli/chunks/{chunk-6F3WJOU2.js → chunk-4F3ZTXHP.js} +2 -2
  32. package/dist/cli/chunks/{chunk-CU4IUJ2K.js → chunk-4GTDW2XL.js} +2 -2
  33. package/dist/cli/chunks/{chunk-4UUDFWOP.js → chunk-5HB54RUS.js} +2 -2
  34. package/dist/cli/chunks/{chunk-YHNEBCYQ.js → chunk-5PL7WTCU.js} +2 -2
  35. package/dist/cli/chunks/{chunk-MF3XRML3.js → chunk-5PRFFHFV.js} +2 -2
  36. package/dist/cli/chunks/{chunk-TEJPHJMW.js → chunk-5QHSLWLP.js} +2 -2
  37. package/dist/cli/chunks/{chunk-ZFBMBCKN.js → chunk-5WJ3FWL4.js} +2 -2
  38. package/dist/cli/chunks/{chunk-V5TRAL57.js → chunk-6KSCXPPL.js} +2 -2
  39. package/dist/cli/chunks/{chunk-P6XYFDXN.js → chunk-6NZHEM4V.js} +1 -1
  40. package/dist/cli/chunks/{chunk-HD6CZBZV.js → chunk-6ZFHIKQG.js} +2 -2
  41. package/dist/cli/chunks/{chunk-VEOQH4W6.js → chunk-7DKYCVJI.js} +2 -2
  42. package/dist/cli/chunks/{chunk-Y4I5JBOL.js → chunk-7IVQ6OVR.js} +2 -2
  43. package/dist/cli/chunks/chunk-7IZ2OPC2.js +2 -0
  44. package/dist/cli/chunks/{chunk-AFFYJSW2.js → chunk-7QRMARM7.js} +2 -2
  45. package/dist/cli/chunks/{chunk-L2AIES7X.js → chunk-7SJX4CFK.js} +1 -1
  46. package/dist/cli/chunks/{chunk-UCIJCRPB.js → chunk-7SWD3D6Y.js} +2 -2
  47. package/dist/cli/chunks/{chunk-FCSJ7GIZ.js → chunk-7V5UHLNY.js} +4 -4
  48. package/dist/cli/chunks/{chunk-5QJDH4Z5.js → chunk-7Z46RDDV.js} +2 -2
  49. package/dist/cli/chunks/{chunk-5RQT7EJP.js → chunk-A5RMQG4N.js} +3 -3
  50. package/dist/cli/chunks/{chunk-3BO7EKGO.js → chunk-AH7FXNFE.js} +3 -3
  51. package/dist/cli/chunks/chunk-AIUSZC6K.js +3 -0
  52. package/dist/cli/chunks/{chunk-MJBXQXSX.js → chunk-AOI67HA3.js} +1 -1
  53. package/dist/cli/chunks/{chunk-6H5MRVJS.js → chunk-AV7KYE5P.js} +7 -7
  54. package/dist/cli/chunks/{chunk-OGT45MZN.js → chunk-AWFIEGR3.js} +2 -2
  55. package/dist/cli/chunks/{chunk-J5RJYFRM.js → chunk-BQCSCAUC.js} +2 -2
  56. package/dist/cli/chunks/{chunk-OUJJ34JH.js → chunk-C2M74HCN.js} +1 -1
  57. package/dist/cli/chunks/{chunk-G2HA2O3R.js → chunk-CIRPP7RQ.js} +2 -2
  58. package/dist/cli/chunks/{chunk-LXHA55EB.js → chunk-CMACGG4Z.js} +1 -1
  59. package/dist/cli/chunks/{chunk-LRISVDVO.js → chunk-CTDLI2ON.js} +1 -1
  60. package/dist/cli/chunks/{chunk-DXV6NRG3.js → chunk-CV2SBMBW.js} +2 -2
  61. package/dist/cli/chunks/{chunk-WLLE54TA.js → chunk-DMQPO43S.js} +1 -1
  62. package/dist/cli/chunks/{chunk-I4E6CLC4.js → chunk-DRWGK3YO.js} +2 -2
  63. package/dist/cli/chunks/{chunk-Z2SCTEZD.js → chunk-DZZEHPSJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-DY7IRNE2.js → chunk-EA7ZSN3V.js} +1 -1
  65. package/dist/cli/chunks/{chunk-M4HDBRVJ.js → chunk-EQBEGDTG.js} +1 -1
  66. package/dist/cli/chunks/{chunk-HZPXOAFW.js → chunk-ETN5563K.js} +2 -2
  67. package/dist/cli/chunks/{chunk-OWMGD7FO.js → chunk-EVCOCGVJ.js} +3 -3
  68. package/dist/cli/chunks/{chunk-27ACATRH.js → chunk-FO43SQXP.js} +2 -2
  69. package/dist/cli/chunks/{chunk-DQJJS4AX.js → chunk-FO73PZVU.js} +2 -2
  70. package/dist/cli/chunks/{chunk-FEBXP74Y.js → chunk-FPAW77XV.js} +1 -1
  71. package/dist/cli/chunks/{chunk-KYLJERZ3.js → chunk-FY3CUPNN.js} +20 -17
  72. package/dist/cli/chunks/{chunk-LQ3TA22E.js → chunk-G5U6Q42D.js} +2 -2
  73. package/dist/cli/chunks/{chunk-JCKX2LEJ.js → chunk-HA63NBFK.js} +49 -49
  74. package/dist/cli/chunks/{chunk-NT4PI5HI.js → chunk-HHCYSAH3.js} +2 -2
  75. package/dist/cli/chunks/{chunk-GPKZ4MMH.js → chunk-HJME6G5M.js} +1 -1
  76. package/dist/cli/chunks/{chunk-TR7BZLB6.js → chunk-HJORBNXW.js} +1 -1
  77. package/dist/cli/chunks/{chunk-BXCS55GB.js → chunk-HO37VP4O.js} +1 -1
  78. package/dist/cli/chunks/{chunk-FX4SYT6Y.js → chunk-I677W5BT.js} +3 -3
  79. package/dist/cli/chunks/chunk-IAZEDWRX.js +2 -0
  80. package/dist/cli/chunks/{chunk-5UOV7T36.js → chunk-IICTTDAA.js} +2 -2
  81. package/dist/cli/chunks/{chunk-BQT4J3BD.js → chunk-JF53LRBL.js} +2 -2
  82. package/dist/cli/chunks/{chunk-S4CNA6Z5.js → chunk-KB5L5TTF.js} +3 -3
  83. package/dist/cli/chunks/{chunk-UE3XXKLN.js → chunk-L7VIX22Y.js} +2 -2
  84. package/dist/cli/chunks/{chunk-C5QESAYA.js → chunk-LQTWPSYL.js} +1 -1
  85. package/dist/cli/chunks/{chunk-2GL4GH52.js → chunk-LZCBSFAU.js} +4 -4
  86. package/dist/cli/chunks/{chunk-LDMG4372.js → chunk-MCOFJHSJ.js} +2 -2
  87. package/dist/cli/chunks/{chunk-ZCNVFULO.js → chunk-MCZHKXB4.js} +2 -2
  88. package/dist/cli/chunks/{chunk-VTIXFHZR.js → chunk-MEY43PIQ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-PNDO4W4L.js → chunk-MMIQ5DMA.js} +2 -2
  90. package/dist/cli/chunks/{chunk-NWHSEXHA.js → chunk-MNUTRAUV.js} +1 -1
  91. package/dist/cli/chunks/{chunk-XFUU2RCA.js → chunk-MNV3E5KY.js} +2 -2
  92. package/dist/cli/chunks/{chunk-WVCIZIKH.js → chunk-MYWQTCS4.js} +1 -1
  93. package/dist/cli/chunks/{chunk-T7DLX3LS.js → chunk-NZO4WUSO.js} +3 -3
  94. package/dist/cli/chunks/{chunk-RF6QKV7M.js → chunk-OIEQF7PG.js} +2 -2
  95. package/dist/cli/chunks/{chunk-NLCUQMUR.js → chunk-OIRZJCZY.js} +2 -2
  96. package/dist/cli/chunks/{chunk-KOSKGZK4.js → chunk-ON4D4TJ4.js} +2 -2
  97. package/dist/cli/chunks/chunk-OPFN5LFT.js +95 -0
  98. package/dist/cli/chunks/{chunk-55JPAF56.js → chunk-ORF2UKQH.js} +1 -1
  99. package/dist/cli/chunks/{chunk-M73IL7FA.js → chunk-OWQ6HEYI.js} +2 -2
  100. package/dist/cli/chunks/{chunk-O3NAUNFC.js → chunk-OXCEUR5F.js} +2 -2
  101. package/dist/cli/chunks/{chunk-BTIVIWIG.js → chunk-PEK6NGVJ.js} +1 -1
  102. package/dist/cli/chunks/{chunk-ALCQRJDY.js → chunk-PIZYRPMT.js} +2 -2
  103. package/dist/cli/chunks/{chunk-L3IFZ4IX.js → chunk-PXTDEO65.js} +2 -2
  104. package/dist/cli/chunks/{chunk-3U77XX6J.js → chunk-PYIHZXCI.js} +12 -12
  105. package/dist/cli/chunks/{chunk-FQ5FT7IE.js → chunk-QBRHKTFT.js} +1 -1
  106. package/dist/cli/chunks/{chunk-I4T4JPR2.js → chunk-QEPFXY6G.js} +1 -1
  107. package/dist/cli/chunks/{chunk-X4U5NYB6.js → chunk-QJ2EHLJ2.js} +1 -1
  108. package/dist/cli/chunks/{chunk-JKVNZASH.js → chunk-QQNCSEZG.js} +2 -2
  109. package/dist/cli/chunks/{chunk-URVDWF2Y.js → chunk-QSE67XJO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-RARSTEUO.js → chunk-R2O6OKT2.js} +1 -1
  111. package/dist/cli/chunks/{chunk-RGONSQ44.js → chunk-RLXTBL3H.js} +210 -210
  112. package/dist/cli/chunks/{chunk-RH3PHCJT.js → chunk-RNREAOY4.js} +2 -2
  113. package/dist/cli/chunks/{chunk-2POXDKUB.js → chunk-S3OZ7XSY.js} +1 -1
  114. package/dist/cli/chunks/{provider-manager-HV55NIIO.js → chunk-S3ZO7JXS.js} +13 -13
  115. package/dist/cli/chunks/{chunk-QWBO76AU.js → chunk-SJH3HYNC.js} +2 -2
  116. package/dist/cli/chunks/{chunk-WC6KZDPM.js → chunk-STEGWLH5.js} +2 -2
  117. package/dist/cli/chunks/{chunk-KCHFF4IE.js → chunk-SVYTN2GT.js} +2 -2
  118. package/dist/cli/chunks/{chunk-OKGK7DBT.js → chunk-SW4OKUTC.js} +2 -2
  119. package/dist/cli/chunks/{chunk-3OSCWD7Z.js → chunk-THRTUW4Z.js} +1 -1
  120. package/dist/cli/chunks/{chunk-U56TIYGP.js → chunk-TJKDATEU.js} +2 -2
  121. package/dist/cli/chunks/{chunk-4NQ6KANC.js → chunk-U3EUH6LX.js} +2 -2
  122. package/dist/cli/chunks/{chunk-7Y54QZKF.js → chunk-UUFOHMUG.js} +2 -2
  123. package/dist/cli/chunks/{chunk-W6U7SIIK.js → chunk-UVU7XLJY.js} +3 -3
  124. package/dist/cli/chunks/chunk-UWXH2UQK.js +2 -0
  125. package/dist/cli/chunks/{chunk-YYDHTBHE.js → chunk-UYYBPWU3.js} +1 -1
  126. package/dist/cli/chunks/{chunk-LYVFC7C7.js → chunk-VSUTI4G6.js} +2 -2
  127. package/dist/cli/chunks/{chunk-SGONA5GS.js → chunk-WDMPJ2M2.js} +2 -2
  128. package/dist/cli/chunks/{chunk-66GIKUI2.js → chunk-WNR2KAUH.js} +2 -2
  129. package/dist/cli/chunks/{chunk-M3M7HXDH.js → chunk-WSVUSIAZ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SCYF5CQA.js → chunk-WZJUMJ2S.js} +1 -1
  131. package/dist/cli/chunks/{chunk-WG6I7YF3.js → chunk-X2VAOIUY.js} +1 -1
  132. package/dist/cli/chunks/{chunk-7ZIRDBXH.js → chunk-XDSA7YUQ.js} +1 -1
  133. package/dist/cli/chunks/{chunk-HIWBW4IQ.js → chunk-XDU624HU.js} +1 -1
  134. package/dist/cli/chunks/{chunk-JUICZG3T.js → chunk-XGBAHAGC.js} +2 -2
  135. package/dist/cli/chunks/{chunk-DQLEZBWV.js → chunk-XMJTTF5N.js} +2 -2
  136. package/dist/cli/chunks/{chunk-KNL3QWVA.js → chunk-XPCNUX2U.js} +2 -2
  137. package/dist/cli/chunks/{chunk-VTO5O7DA.js → chunk-XRJECWZE.js} +1 -1
  138. package/dist/cli/chunks/{chunk-HD5NQDOL.js → chunk-XTCUN36Z.js} +2 -2
  139. package/dist/cli/chunks/{chunk-KDFW7MVM.js → chunk-Y63MBMOV.js} +2 -2
  140. package/dist/cli/chunks/{chunk-L4N6PTIC.js → chunk-YACT5WFC.js} +2 -2
  141. package/dist/cli/chunks/{chunk-QU54GUEA.js → chunk-YI6GNRQM.js} +2 -2
  142. package/dist/cli/chunks/chunk-YNNOY3XN.js +62 -0
  143. package/dist/cli/chunks/{chunk-GXCD7GNH.js → chunk-YWZHMXTO.js} +2 -2
  144. package/dist/cli/chunks/{chunk-XFMSHTXG.js → chunk-ZDHMZPSL.js} +1 -1
  145. package/dist/cli/chunks/{chunk-F363JJUI.js → chunk-ZGNZJJFF.js} +1 -1
  146. package/dist/cli/chunks/{chunk-UCXQQCIP.js → chunk-ZK2BH23O.js} +2 -2
  147. package/dist/cli/chunks/{chunk-IQNR662U.js → chunk-ZQUXNG5X.js} +2 -2
  148. package/dist/cli/chunks/{chunk-IBXNBLGM.js → chunk-ZXTO4C7R.js} +2 -2
  149. package/dist/cli/chunks/{ci-7TR4NQ5I.js → ci-PYCRCL7G.js} +2 -2
  150. package/dist/cli/chunks/{ci-output-SLTICF3O.js → ci-output-EKQQFE2D.js} +2 -2
  151. package/dist/cli/chunks/{circuit-breaker-7GVVTMBY.js → circuit-breaker-RH3Q2MJO.js} +2 -2
  152. package/dist/cli/chunks/{claude-flow-setup-TYCWYEMM.js → claude-flow-setup-DUDXB4VV.js} +2 -2
  153. package/dist/cli/chunks/client-RDPWGOSA.js +2 -0
  154. package/dist/cli/chunks/{cline-installer-ESIAJOLK.js → cline-installer-3Q4WIWUG.js} +2 -2
  155. package/dist/cli/chunks/{code-I42JGOVI.js → code-E4Q6DGOO.js} +2 -2
  156. package/dist/cli/chunks/{code-index-extractor-2CCXPCQW.js → code-index-extractor-2PCISUOW.js} +2 -2
  157. package/dist/cli/chunks/{codex-installer-HEZRDNUT.js → codex-installer-YNNNOLJ6.js} +2 -2
  158. package/dist/cli/chunks/{completions-44HLIZGI.js → completions-2F7TUFBD.js} +2 -2
  159. package/dist/cli/chunks/{complexity-analyzer-SOCSFDVO.js → complexity-analyzer-2B6MHO7W.js} +2 -2
  160. package/dist/cli/chunks/{continuedev-installer-Q7O4HLIM.js → continuedev-installer-ENOKRU5M.js} +2 -2
  161. package/dist/cli/chunks/{copilot-installer-GIWCVLCS.js → copilot-installer-6YD2KM5F.js} +2 -2
  162. package/dist/cli/chunks/{cost-tracker-G7BONKEV.js → cost-tracker-FCH4QOEA.js} +2 -2
  163. package/dist/cli/chunks/{coverage-5TWVP7KY.js → coverage-JTOXZE3T.js} +3 -3
  164. package/dist/cli/chunks/cross-domain-router-4K5ZVZEZ.js +2 -0
  165. package/dist/cli/chunks/{cursor-installer-43EQZSB5.js → cursor-installer-QZFBUGLQ.js} +2 -2
  166. package/dist/cli/chunks/{daemon-ZXHFRDKG.js → daemon-K4QFB5FQ.js} +3 -3
  167. package/dist/cli/chunks/{daemon-QQZE4BU2.js → daemon-M422U3ZA.js} +4 -4
  168. package/dist/cli/chunks/{dag-attention-scheduler-GOZAVAZQ.js → dag-attention-scheduler-BXAAW33V.js} +2 -2
  169. package/dist/cli/chunks/{detect-X777GVJ4.js → detect-UGSWIOAD.js} +2 -2
  170. package/dist/cli/chunks/{dist-node-EZZK46TB.js → dist-node-FN3HX3OK.js} +2 -2
  171. package/dist/cli/chunks/{domain-handler-ZT32DKYY.js → domain-handler-7PP7VYA7.js} +2 -2
  172. package/dist/cli/chunks/{domain-transfer-LHQVSLJW.js → domain-transfer-XZM44W7I.js} +2 -2
  173. package/dist/cli/chunks/dream-RPNWM7VS.js +2 -0
  174. package/dist/cli/chunks/{embed-and-insert-pattern-XFYPPWG7.js → embed-and-insert-pattern-JZVERJ5L.js} +2 -2
  175. package/dist/cli/chunks/{eval-V4NYJZUZ.js → eval-466NFF2D.js} +2 -2
  176. package/dist/cli/chunks/{experience-capture-middleware-HXX2W4GL.js → experience-capture-middleware-I7IQCC7V.js} +3 -3
  177. package/dist/cli/chunks/{fast-paths-RBPWQSFJ.js → fast-paths-34OICNZA.js} +2 -2
  178. package/dist/cli/chunks/{feature-flags-NX5EXRO3.js → feature-flags-6UBIVTAD.js} +2 -2
  179. package/dist/cli/chunks/{feature-flags-INJJZBMN.js → feature-flags-X5WBBWSO.js} +2 -2
  180. package/dist/cli/chunks/{file-discovery-SNFSG6NK.js → file-discovery-NLMDBWXX.js} +2 -2
  181. package/dist/cli/chunks/{fleet-6SDN4UWE.js → fleet-W7CYCHDI.js} +3 -3
  182. package/dist/cli/chunks/{gnn-wrapper-2JDRTDDK.js → gnn-wrapper-K4VTAG5X.js} +2 -2
  183. package/dist/cli/chunks/{heartbeat-handler-QLK6E7KA.js → heartbeat-handler-ZGKF2Z6T.js} +4 -4
  184. package/dist/cli/chunks/heartbeat-scheduler-JBCXMMZO.js +2 -0
  185. package/dist/cli/chunks/hnsw-adapter-3SC2HZIG.js +2 -0
  186. package/dist/cli/chunks/hnsw-index-FQORAR6K.js +2 -0
  187. package/dist/cli/chunks/{hnsw-legacy-bridge-Q2ZEZQKB.js → hnsw-legacy-bridge-ELDRLKK5.js} +2 -2
  188. package/dist/cli/chunks/{better-sqlite3-Y6GX6CGB.js → hnswlib-node-ZGSUMHDC.js} +2 -2
  189. package/dist/cli/chunks/{hooks-D4YENHO2.js → hooks-T4CBINAV.js} +13 -13
  190. package/dist/cli/chunks/hybrid-router-6CBFDXPR.js +2 -0
  191. package/dist/cli/chunks/{hypergraph-engine-G72U446M.js → hypergraph-engine-UWFW3XP5.js} +2 -2
  192. package/dist/cli/chunks/{hypergraph-handler-TRZ5FDRH.js → hypergraph-handler-PK2BI46K.js} +3 -3
  193. package/dist/cli/chunks/impact-analyzer-SOEFVZWG.js +2 -0
  194. package/dist/cli/chunks/{init-handler-3ZD4GCT4.js → init-handler-HNG6KJOU.js} +6 -6
  195. package/dist/cli/chunks/init-wizard-3E4IU5M4.js +2 -0
  196. package/dist/cli/chunks/kernel-GFZP4G5J.js +2 -0
  197. package/dist/cli/chunks/{kilocode-installer-AXSIW3XW.js → kilocode-installer-25V7FEJ4.js} +2 -2
  198. package/dist/cli/chunks/{kiro-installer-JQGIFWBK.js → kiro-installer-7RMTTCQB.js} +2 -2
  199. package/dist/cli/chunks/knowledge-graph-BKRKBU26.js +2 -0
  200. package/dist/cli/chunks/{learning-SPO7TGWX.js → learning-XQC2MG2R.js} +3 -3
  201. package/dist/cli/chunks/llm-router-6KTTONH4.js +36 -0
  202. package/dist/cli/chunks/llm-router-service-KE4IGZPP.js +2 -0
  203. package/dist/cli/chunks/{load-XIDDK64U.js → load-BV64P3AL.js} +2 -2
  204. package/dist/cli/chunks/load-test-VSYJV2AO.js +2 -0
  205. package/dist/cli/chunks/{mcp-3JXRGXO4.js → mcp-U5ZN77TA.js} +2 -2
  206. package/dist/cli/chunks/{memory-A66KRS2P.js → memory-WB5BNBK7.js} +5 -5
  207. package/dist/cli/chunks/memory-backend-B72RGHRF.js +2 -0
  208. package/dist/cli/chunks/memory-handlers-NWCH7AUO.js +2 -0
  209. package/dist/cli/chunks/{multi-model-executor-XCDGUVCE.js → multi-model-executor-3X3W3UTY.js} +2 -2
  210. package/dist/cli/chunks/{opencode-installer-GELXWLF2.js → opencode-installer-TTTMG7ZZ.js} +2 -2
  211. package/dist/cli/chunks/{orchestrator-CCS3K6NH.js → orchestrator-BLCGSHMZ.js} +18 -18
  212. package/dist/cli/chunks/{pipeline-Z5C72H5S.js → pipeline-DZPGMRG7.js} +2 -2
  213. package/dist/cli/chunks/{platform-4AK7XJ3Y.js → platform-EVMZAUNV.js} +2 -2
  214. package/dist/cli/chunks/{plugin-7RYBIZI7.js → plugin-OR55K4HT.js} +2 -2
  215. package/dist/cli/chunks/{prime-radiant-advanced-wasm-E5PARKRX.js → prime-radiant-advanced-wasm-4ODV27HD.js} +2 -2
  216. package/dist/cli/chunks/protocol-executor-V3F37FPO.js +2 -0
  217. package/dist/cli/chunks/{protocol-handler-R6QJQFNL.js → protocol-handler-ZOTI5PID.js} +2 -2
  218. package/dist/cli/chunks/{prove-7ESQ2YAL.js → prove-DIMBYJ7V.js} +2 -2
  219. package/dist/cli/chunks/provider-manager-2PN72TT6.js +2 -0
  220. package/dist/cli/chunks/qe-reasoning-bank-P665QNIR.js +2 -0
  221. package/dist/cli/chunks/{quality-4UE345QA.js → quality-7MX4VL6M.js} +2 -2
  222. package/dist/cli/chunks/queen-coordinator-XD4F7BGB.js +2 -0
  223. package/dist/cli/chunks/{real-embeddings-TYIVN3N5.js → real-embeddings-YPUHWRN2.js} +2 -2
  224. package/dist/cli/chunks/{roocode-installer-2KOANC47.js → roocode-installer-WG5AU4QM.js} +2 -2
  225. package/dist/cli/chunks/router-4SSNWDJC.js +2 -0
  226. package/dist/cli/chunks/routing-feedback-O2JSIBW6.js +2 -0
  227. package/dist/cli/chunks/{routing-handler-JFEYTN7T.js → routing-handler-LZB4MN2K.js} +2 -2
  228. package/dist/cli/chunks/{ruvector-commands-KSLSZRJX.js → ruvector-commands-YE4ADBMC.js} +2 -2
  229. package/dist/cli/chunks/{rvf-dual-writer-EPBL226J.js → rvf-dual-writer-QS5ATW4C.js} +2 -2
  230. package/dist/cli/chunks/{rvf-migration-adapter-25KSI6SF.js → rvf-migration-adapter-YIGKSBD3.js} +2 -2
  231. package/dist/cli/chunks/{rvf-migration-coordinator-2XBYHPZP.js → rvf-migration-coordinator-2NDCWP7F.js} +2 -2
  232. package/dist/cli/chunks/rvf-native-adapter-WIUHYXRB.js +2 -0
  233. package/dist/cli/chunks/safe-db-WL5Y7ZNS.js +2 -0
  234. package/dist/cli/chunks/schedule-U7QDGU5A.js +2 -0
  235. package/dist/cli/chunks/scheduler-LXKGQYXA.js +2 -0
  236. package/dist/cli/chunks/{security-4XWYKI4O.js → security-HT4SUT24.js} +3 -3
  237. package/dist/cli/chunks/{shared-rvf-adapter-WRZ3HGDQ.js → shared-rvf-adapter-4IZOJL33.js} +2 -2
  238. package/dist/cli/chunks/{shared-rvf-dual-writer-DX2N5STR.js → shared-rvf-dual-writer-ZKFO7CBY.js} +2 -2
  239. package/dist/cli/chunks/sqlite-persistence-4KFO3SEB.js +2 -0
  240. package/dist/cli/chunks/{status-handler-V75OSXMQ.js → status-handler-AMEMKBI4.js} +2 -2
  241. package/dist/cli/chunks/{structural-health-TLX3JHZ6.js → structural-health-RBADRLC3.js} +2 -2
  242. package/dist/cli/chunks/{sync-KGBEXUF7.js → sync-ARDDLQBS.js} +2 -2
  243. package/dist/cli/chunks/{sync-DXZFMVZQ.js → sync-PCB23M4K.js} +2 -2
  244. package/dist/cli/chunks/{task-handler-T3OJ6R7H.js → task-handler-J26FSCH5.js} +2 -2
  245. package/dist/cli/chunks/{task-handlers-NJYR54AS.js → task-handlers-AQRLR6BL.js} +3 -3
  246. package/dist/cli/chunks/{test-KMVDNNQA.js → test-YXWSIOSB.js} +4 -4
  247. package/dist/cli/chunks/{test-scheduling-R5EQ2XGV.js → test-scheduling-XY532GI4.js} +3 -3
  248. package/dist/cli/chunks/{token-bootstrap-PFKVV3RO.js → token-bootstrap-KL2QIQ36.js} +2 -2
  249. package/dist/cli/chunks/{token-usage-ZLOGA6LR.js → token-usage-2MJVE4DT.js} +2 -2
  250. package/dist/cli/chunks/{transformers-TNPSPQI3.js → transformers-QSNTOD2Z.js} +2 -2
  251. package/dist/cli/chunks/{tree-sitter-wasm-parser-A2EEB5BF.js → tree-sitter-wasm-parser-QJOKHOIW.js} +2 -2
  252. package/dist/cli/chunks/{types-DIXPI4NR.js → types-RNKRSYMO.js} +2 -2
  253. package/dist/cli/chunks/unified-memory-7AS4LIEF.js +2 -0
  254. package/dist/cli/chunks/unified-memory-hnsw-GREESNJX.js +2 -0
  255. package/dist/cli/chunks/unified-persistence-BPJOMZOA.js +2 -0
  256. package/dist/cli/chunks/{upgrade-LX5KP6VO.js → upgrade-EKJHIFWP.js} +2 -2
  257. package/dist/cli/chunks/{validate-3L6F7M36.js → validate-KS4T7LWC.js} +2 -2
  258. package/dist/cli/chunks/{validate-swarm-FD42ZKAQ.js → validate-swarm-SKKWRP2H.js} +2 -2
  259. package/dist/cli/chunks/{vibium-GSBSJR53.js → vibium-FLUQO4IF.js} +2 -2
  260. package/dist/cli/chunks/visual-security-BW662FHQ.js +2 -0
  261. package/dist/cli/chunks/{web-tree-sitter-TXHMO4BW.js → web-tree-sitter-UMC63DWD.js} +2 -2
  262. package/dist/cli/chunks/{windsurf-installer-3EUZ6RD3.js → windsurf-installer-V3FQGJIQ.js} +2 -2
  263. package/dist/cli/chunks/{witness-chain-ONAUEJ4M.js → witness-chain-GE74TLSO.js} +2 -2
  264. package/dist/cli/chunks/witness-chain-OXVDLNVT.js +2 -0
  265. package/dist/cli/chunks/{workflow-E7A6BV4C.js → workflow-4YZ2RPWA.js} +4 -4
  266. package/dist/cli/chunks/workflow-orchestrator-KKNR46XV.js +2 -0
  267. package/dist/cli/chunks/{wrappers-AHHAQJM3.js → wrappers-37NLMKPE.js} +2 -2
  268. package/dist/cli/commands/hooks-handlers/command-hooks.js +1 -1
  269. package/dist/cli/commands/hooks-handlers/routing-hooks.js +1 -1
  270. package/dist/cli/commands/hooks-handlers/task-hooks.js +1 -1
  271. package/dist/cli/commands/llm-router.js +83 -26
  272. package/dist/domains/chaos-resilience/coordinator.d.ts +2 -1
  273. package/dist/domains/chaos-resilience/coordinator.js +3 -2
  274. package/dist/domains/chaos-resilience/plugin.d.ts +4 -2
  275. package/dist/domains/chaos-resilience/plugin.js +8 -5
  276. package/dist/domains/code-intelligence/coordinator.d.ts +2 -1
  277. package/dist/domains/code-intelligence/coordinator.js +3 -2
  278. package/dist/domains/code-intelligence/plugin.d.ts +4 -2
  279. package/dist/domains/code-intelligence/plugin.js +8 -5
  280. package/dist/domains/contract-testing/coordinator.d.ts +2 -1
  281. package/dist/domains/contract-testing/coordinator.js +3 -2
  282. package/dist/domains/contract-testing/plugin.d.ts +4 -2
  283. package/dist/domains/contract-testing/plugin.js +8 -5
  284. package/dist/domains/coverage-analysis/coordinator.d.ts +2 -1
  285. package/dist/domains/coverage-analysis/coordinator.js +4 -3
  286. package/dist/domains/coverage-analysis/plugin.d.ts +3 -2
  287. package/dist/domains/coverage-analysis/plugin.js +4 -4
  288. package/dist/domains/defect-intelligence/coordinator.d.ts +2 -1
  289. package/dist/domains/defect-intelligence/coordinator.js +4 -3
  290. package/dist/domains/defect-intelligence/plugin.d.ts +4 -2
  291. package/dist/domains/defect-intelligence/plugin.js +9 -6
  292. package/dist/domains/learning-optimization/coordinator.d.ts +2 -1
  293. package/dist/domains/learning-optimization/coordinator.js +3 -2
  294. package/dist/domains/learning-optimization/plugin.d.ts +4 -2
  295. package/dist/domains/learning-optimization/plugin.js +8 -5
  296. package/dist/domains/quality-assessment/coordinator.d.ts +2 -1
  297. package/dist/domains/quality-assessment/coordinator.js +4 -3
  298. package/dist/domains/quality-assessment/plugin.d.ts +4 -2
  299. package/dist/domains/quality-assessment/plugin.js +10 -6
  300. package/dist/domains/requirements-validation/coordinator.d.ts +2 -1
  301. package/dist/domains/requirements-validation/coordinator.js +3 -2
  302. package/dist/domains/requirements-validation/plugin.d.ts +4 -2
  303. package/dist/domains/requirements-validation/plugin.js +8 -5
  304. package/dist/domains/security-compliance/coordinator.d.ts +2 -1
  305. package/dist/domains/security-compliance/coordinator.js +4 -2
  306. package/dist/domains/security-compliance/plugin.d.ts +4 -2
  307. package/dist/domains/security-compliance/plugin.js +11 -6
  308. package/dist/domains/test-execution/coordinator.d.ts +3 -2
  309. package/dist/domains/test-execution/coordinator.js +6 -5
  310. package/dist/domains/test-execution/plugin.d.ts +4 -2
  311. package/dist/domains/test-execution/plugin.js +6 -4
  312. package/dist/domains/test-generation/coordinator.d.ts +2 -1
  313. package/dist/domains/test-generation/coordinator.js +4 -3
  314. package/dist/domains/test-generation/plugin.d.ts +4 -2
  315. package/dist/domains/test-generation/plugin.js +12 -7
  316. package/dist/domains/visual-accessibility/coordinator.d.ts +2 -1
  317. package/dist/domains/visual-accessibility/coordinator.js +4 -3
  318. package/dist/domains/visual-accessibility/plugin.d.ts +4 -2
  319. package/dist/domains/visual-accessibility/plugin.js +9 -6
  320. package/dist/init/init-wizard-hooks.js +271 -271
  321. package/dist/init/phases/07-hooks.d.ts +7 -0
  322. package/dist/init/phases/07-hooks.js +132 -96
  323. package/dist/kernel/interfaces.d.ts +37 -0
  324. package/dist/kernel/kernel.d.ts +39 -0
  325. package/dist/kernel/kernel.js +157 -17
  326. package/dist/learning/agent-routing.d.ts +19 -0
  327. package/dist/learning/agent-routing.js +27 -1
  328. package/dist/learning/dream/dream-scheduler.d.ts +11 -36
  329. package/dist/learning/dream/dream-scheduler.js +44 -0
  330. package/dist/learning/experience-consolidation.d.ts +16 -0
  331. package/dist/learning/experience-consolidation.js +55 -11
  332. package/dist/learning/pattern-lifecycle.d.ts +21 -0
  333. package/dist/learning/pattern-lifecycle.js +70 -6
  334. package/dist/mcp/bundle.js +426 -401
  335. package/dist/mcp/protocol-server.js +13 -14
  336. package/dist/mcp/qe-tool-bridge.js +8 -1
  337. package/dist/mcp/tools/base.d.ts +56 -0
  338. package/dist/mcp/tools/base.js +104 -1
  339. package/dist/mcp/tools/chaos-resilience/inject.js +4 -2
  340. package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
  341. package/dist/mcp/tools/contract-testing/validate.js +4 -2
  342. package/dist/mcp/tools/coverage-analysis/index.js +11 -5
  343. package/dist/mcp/tools/defect-intelligence/predict.js +5 -10
  344. package/dist/mcp/tools/learning-optimization/optimize.js +4 -2
  345. package/dist/mcp/tools/registry.js +8 -1
  346. package/dist/mcp/tools/test-generation/generate.js +10 -6
  347. package/dist/mcp/tools/visual-accessibility/index.js +7 -4
  348. package/dist/mcp/transport/stdio.d.ts +20 -0
  349. package/dist/mcp/transport/stdio.js +35 -2
  350. package/dist/shared/llm/llm-router-service.d.ts +77 -0
  351. package/dist/shared/llm/llm-router-service.js +166 -0
  352. package/dist/shared/llm/providers/gemini.js +5 -2
  353. package/dist/shared/llm/router/config-store.d.ts +89 -0
  354. package/dist/shared/llm/router/config-store.js +261 -0
  355. package/dist/shared/llm/router/hybrid-router.js +33 -11
  356. package/dist/shared/utils/rabitq.d.ts +133 -0
  357. package/dist/shared/utils/rabitq.js +201 -0
  358. package/package.json +8 -2
  359. package/dist/cli/chunks/adapter-WTE6UVGP.js +0 -2
  360. package/dist/cli/chunks/aqe-learning-engine-LCLEBU7D.js +0 -2
  361. package/dist/cli/chunks/base-73I73HBF.js +0 -2
  362. package/dist/cli/chunks/browser-workflow-2NSV5O6W.js +0 -2
  363. package/dist/cli/chunks/chunk-6MONUYQ5.js +0 -2
  364. package/dist/cli/chunks/chunk-QL3U5VSM.js +0 -62
  365. package/dist/cli/chunks/chunk-VMJXNTJT.js +0 -95
  366. package/dist/cli/chunks/chunk-X73CRYF4.js +0 -2
  367. package/dist/cli/chunks/client-7GB4WWUD.js +0 -2
  368. package/dist/cli/chunks/cross-domain-router-7HQ74TLE.js +0 -2
  369. package/dist/cli/chunks/dream-G5SEFHI4.js +0 -2
  370. package/dist/cli/chunks/heartbeat-scheduler-NG7BY3FR.js +0 -2
  371. package/dist/cli/chunks/hnsw-adapter-TDSLUI7K.js +0 -2
  372. package/dist/cli/chunks/hnsw-index-OWLQSOQH.js +0 -2
  373. package/dist/cli/chunks/hybrid-router-URU2XLBD.js +0 -2
  374. package/dist/cli/chunks/impact-analyzer-NMTN75KA.js +0 -2
  375. package/dist/cli/chunks/init-wizard-SHBFYGBV.js +0 -2
  376. package/dist/cli/chunks/kernel-7KVY2JGO.js +0 -2
  377. package/dist/cli/chunks/knowledge-graph-V4G5J5B7.js +0 -2
  378. package/dist/cli/chunks/llm-router-G6N2OKDA.js +0 -36
  379. package/dist/cli/chunks/load-test-N4RNPLG4.js +0 -2
  380. package/dist/cli/chunks/memory-backend-HPGJ5YDQ.js +0 -2
  381. package/dist/cli/chunks/memory-handlers-K33YVCVQ.js +0 -2
  382. package/dist/cli/chunks/protocol-executor-GNVWUJUP.js +0 -2
  383. package/dist/cli/chunks/qe-reasoning-bank-DDSBHO6D.js +0 -2
  384. package/dist/cli/chunks/queen-coordinator-BQJ5O63C.js +0 -2
  385. package/dist/cli/chunks/router-C2RKWB7J.js +0 -2
  386. package/dist/cli/chunks/routing-feedback-RHATTSJ6.js +0 -2
  387. package/dist/cli/chunks/rvf-native-adapter-QG4CXHLL.js +0 -2
  388. package/dist/cli/chunks/safe-db-A4KQ2IDB.js +0 -2
  389. package/dist/cli/chunks/schedule-O7MLASQT.js +0 -2
  390. package/dist/cli/chunks/scheduler-HT7RNYQ2.js +0 -2
  391. package/dist/cli/chunks/sqlite-persistence-4NNKJ6CQ.js +0 -2
  392. package/dist/cli/chunks/unified-memory-CMNJVHOJ.js +0 -2
  393. package/dist/cli/chunks/unified-memory-hnsw-JQLU2KI6.js +0 -2
  394. package/dist/cli/chunks/unified-persistence-I25TEDIU.js +0 -2
  395. package/dist/cli/chunks/visual-security-AJJIEV5V.js +0 -2
  396. package/dist/cli/chunks/witness-chain-762QQBTN.js +0 -2
  397. package/dist/cli/chunks/workflow-orchestrator-ZGPYISKY.js +0 -2
@@ -172,6 +172,9 @@ export class HooksPhase extends BasePhase {
172
172
  this.installBrainCheckpoint(projectRoot, context);
173
173
  // Install statusline-v3 helper into .claude/helpers/
174
174
  this.installStatusline(projectRoot, context);
175
+ // Install the resilient hook shim into .claude/hooks/ — the generated
176
+ // settings.json hooks invoke it (`node .../aqe-hook.cjs <cmd>`).
177
+ this.installHookShim(projectRoot, context);
175
178
  // Install cross-phase memory config
176
179
  const crossPhasePath = join(hooksDir, 'cross-phase-memory.yaml');
177
180
  if (!existsSync(crossPhasePath)) {
@@ -290,40 +293,73 @@ export class HooksPhase extends BasePhase {
290
293
  context.services.log(' Installed statusline-v3.cjs (generated)');
291
294
  }
292
295
  }
296
+ /**
297
+ * Install the resilient hook shim (aqe-hook.cjs) into .claude/hooks/.
298
+ * The generated settings.json hooks run `node .../aqe-hook.cjs <cmd>` — the
299
+ * shim resolves a project-local AQE bundle (or falls back to npx), strips
300
+ * init noise from stdout, swallows stderr, and always exits 0.
301
+ */
302
+ installHookShim(projectRoot, context) {
303
+ const destDir = join(projectRoot, '.claude', 'hooks');
304
+ if (!existsSync(destDir)) {
305
+ mkdirSync(destDir, { recursive: true });
306
+ }
307
+ const destPath = join(destDir, 'aqe-hook.cjs');
308
+ // Source candidates: the installed dependency, then this package's own copy
309
+ // (resolved relative to the compiled init module — works for npx too).
310
+ const sourcePaths = [
311
+ join(projectRoot, 'node_modules', 'agentic-qe', '.claude', 'hooks', 'aqe-hook.cjs'),
312
+ join(__dirname, '..', '..', '..', '.claude', 'hooks', 'aqe-hook.cjs'),
313
+ ];
314
+ for (const src of sourcePaths) {
315
+ if (existsSync(src) && src !== destPath) {
316
+ const { copyFileSync } = require('fs');
317
+ copyFileSync(src, destPath);
318
+ context.services.log(' Installed aqe-hook.cjs (copied)');
319
+ return;
320
+ }
321
+ }
322
+ if (existsSync(destPath)) {
323
+ // Already present (e.g. dogfooding this repo) — leave it.
324
+ return;
325
+ }
326
+ // Should not happen for a real install (the file ships in the package).
327
+ context.services.log(' ⚠ aqe-hook.cjs source not found — hooks will fall back to `npx agentic-qe`');
328
+ }
293
329
  /**
294
330
  * Generate a minimal statusline-v3.cjs script as a fallback.
295
331
  * Used when the full asset isn't available for copying.
296
332
  */
297
333
  generateMinimalStatuslineScript() {
298
- return `#!/usr/bin/env node
299
- /**
300
- * Agentic QE v3 Statusline (minimal fallback, generated by aqe init)
301
- * For the full statusline, reinstall: npx agentic-qe init --auto
302
- */
303
- const fs = require('fs');
304
- const path = require('path');
305
- const { execFileSync } = require('child_process');
306
-
307
- function q(bin, args, d) { try { return execFileSync(bin, args, { encoding: 'utf-8', timeout: 3000, stdio: ['pipe', 'pipe', 'pipe'] }).trim(); } catch { return d || ''; } }
308
-
309
- const dir = path.resolve(__dirname, '..', '..');
310
- const dbPath = path.join(dir, '.agentic-qe', 'memory.db');
311
- let patterns = 0;
312
- try {
313
- if (fs.existsSync(dbPath)) {
314
- const Database = require('better-sqlite3');
315
- const db = new Database(dbPath, { readonly: true, fileMustExist: true });
316
- db.pragma('busy_timeout = 5000');
317
- patterns = db.prepare("SELECT COUNT(*) AS c FROM qe_patterns WHERE usage_count > 0 OR quality_score > 0 OR name NOT LIKE 'bench-%'").get()?.c || 0;
318
- db.close();
319
- }
320
- } catch { /* ignore */ }
321
-
322
- const branch = q('git', ['branch', '--show-current']);
323
- const branchStr = branch ? \` \\x1b[34m⎇ \${branch}\\x1b[0m\` : '';
324
- const patStr = patterns > 0 ? \` \\x1b[35m🎓 \${patterns} patterns\\x1b[0m\` : '';
325
-
326
- console.log(\`\\x1b[1m\\x1b[35m▊ Agentic QE v3\\x1b[0m\${branchStr}\${patStr}\`);
334
+ return `#!/usr/bin/env node
335
+ /**
336
+ * Agentic QE v3 Statusline (minimal fallback, generated by aqe init)
337
+ * For the full statusline, reinstall: npx agentic-qe init --auto
338
+ */
339
+ const fs = require('fs');
340
+ const path = require('path');
341
+ const { execFileSync } = require('child_process');
342
+
343
+ function q(bin, args, d) { try { return execFileSync(bin, args, { encoding: 'utf-8', timeout: 3000, stdio: ['pipe', 'pipe', 'pipe'] }).trim(); } catch { return d || ''; } }
344
+
345
+ const dir = path.resolve(__dirname, '..', '..');
346
+ const dbPath = path.join(dir, '.agentic-qe', 'memory.db');
347
+ let patterns = 0;
348
+ try {
349
+ if (fs.existsSync(dbPath)) {
350
+ const Database = require('better-sqlite3');
351
+ const db = new Database(dbPath, { readonly: true, fileMustExist: true });
352
+ db.pragma('busy_timeout = 5000');
353
+ patterns = db.prepare("SELECT COUNT(*) AS c FROM qe_patterns WHERE usage_count > 0 OR quality_score > 0 OR name NOT LIKE 'bench-%'").get()?.c || 0;
354
+ db.close();
355
+ }
356
+ } catch { /* ignore */ }
357
+
358
+ const branch = q('git', ['branch', '--show-current']);
359
+ const branchStr = branch ? \` \\x1b[34m⎇ \${branch}\\x1b[0m\` : '';
360
+ const patStr = patterns > 0 ? \` \\x1b[35m🎓 \${patterns} patterns\\x1b[0m\` : '';
361
+
362
+ console.log(\`\\x1b[1m\\x1b[35m▊ Agentic QE v3\\x1b[0m\${branchStr}\${patStr}\`);
327
363
  `;
328
364
  }
329
365
  /**
@@ -331,62 +367,62 @@ console.log(\`\\x1b[1m\\x1b[35m▊ Agentic QE v3\\x1b[0m\${branchStr}\${patStr}\
331
367
  * Used when the source file isn't available for copying.
332
368
  */
333
369
  generateBrainCheckpointScript() {
334
- return `#!/usr/bin/env node
335
- /**
336
- * Brain Checkpoint Helper (generated by aqe init)
337
- *
338
- * Usage:
339
- * node brain-checkpoint.cjs export # Export brain to aqe.rvf (session-end)
340
- * node brain-checkpoint.cjs verify # Verify aqe.rvf exists (session-start)
341
- */
342
- const { execFileSync } = require('child_process');
343
- const fs = require('fs');
344
- const path = require('path');
345
-
346
- const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
347
- const AQE_DIR = path.join(PROJECT_ROOT, '.agentic-qe');
348
- const RVF_PATH = path.join(AQE_DIR, 'aqe.rvf');
349
- const DB_PATH = path.join(AQE_DIR, 'memory.db');
350
- const MAX_AGE_HOURS = 24;
351
-
352
- function log(msg) { process.stderr.write('[brain-checkpoint] ' + msg + '\\n'); }
353
-
354
- function exportBrain() {
355
- if (!fs.existsSync(DB_PATH)) { log('No memory.db, skipping'); return { exported: false }; }
356
- try {
357
- if (fs.existsSync(RVF_PATH)) fs.unlinkSync(RVF_PATH);
358
- const idmap = RVF_PATH + '.idmap.json';
359
- if (fs.existsSync(idmap)) fs.unlinkSync(idmap);
360
- const result = execFileSync(
361
- 'npx', ['agentic-qe', 'brain', 'export', '-o', RVF_PATH, '--format', 'rvf'],
362
- { timeout: 60000, encoding: 'utf-8' }
363
- );
364
- const m = result.match(/Patterns:\\s+(\\d+)/);
365
- const p = m ? m[1] : '0';
366
- log('Exported ' + p + ' patterns to aqe.rvf');
367
- return { exported: true, patterns: parseInt(p) };
368
- } catch (e) {
369
- log('Export failed: ' + e.message);
370
- return { exported: false, reason: e.message };
371
- }
372
- }
373
-
374
- function verifyBrain() {
375
- if (!fs.existsSync(RVF_PATH)) {
376
- log('No aqe.rvf found');
377
- return { valid: false, reason: 'missing' };
378
- }
379
- const stat = fs.statSync(RVF_PATH);
380
- const ageH = (Date.now() - stat.mtimeMs) / 3600000;
381
- if (stat.size < 1024) { log('aqe.rvf too small'); return { valid: false, reason: 'too-small' }; }
382
- if (ageH > MAX_AGE_HOURS) { log('aqe.rvf is ' + ageH.toFixed(1) + 'h old'); return { valid: true, stale: true }; }
383
- log('aqe.rvf OK (' + (stat.size/1048576).toFixed(1) + ' MB)');
384
- return { valid: true, stale: false };
385
- }
386
-
387
- const cmd = process.argv[2] || 'verify';
388
- const result = cmd === 'export' ? exportBrain() : verifyBrain();
389
- if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result));
370
+ return `#!/usr/bin/env node
371
+ /**
372
+ * Brain Checkpoint Helper (generated by aqe init)
373
+ *
374
+ * Usage:
375
+ * node brain-checkpoint.cjs export # Export brain to aqe.rvf (session-end)
376
+ * node brain-checkpoint.cjs verify # Verify aqe.rvf exists (session-start)
377
+ */
378
+ const { execFileSync } = require('child_process');
379
+ const fs = require('fs');
380
+ const path = require('path');
381
+
382
+ const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
383
+ const AQE_DIR = path.join(PROJECT_ROOT, '.agentic-qe');
384
+ const RVF_PATH = path.join(AQE_DIR, 'aqe.rvf');
385
+ const DB_PATH = path.join(AQE_DIR, 'memory.db');
386
+ const MAX_AGE_HOURS = 24;
387
+
388
+ function log(msg) { process.stderr.write('[brain-checkpoint] ' + msg + '\\n'); }
389
+
390
+ function exportBrain() {
391
+ if (!fs.existsSync(DB_PATH)) { log('No memory.db, skipping'); return { exported: false }; }
392
+ try {
393
+ if (fs.existsSync(RVF_PATH)) fs.unlinkSync(RVF_PATH);
394
+ const idmap = RVF_PATH + '.idmap.json';
395
+ if (fs.existsSync(idmap)) fs.unlinkSync(idmap);
396
+ const result = execFileSync(
397
+ 'npx', ['agentic-qe', 'brain', 'export', '-o', RVF_PATH, '--format', 'rvf'],
398
+ { timeout: 60000, encoding: 'utf-8' }
399
+ );
400
+ const m = result.match(/Patterns:\\s+(\\d+)/);
401
+ const p = m ? m[1] : '0';
402
+ log('Exported ' + p + ' patterns to aqe.rvf');
403
+ return { exported: true, patterns: parseInt(p) };
404
+ } catch (e) {
405
+ log('Export failed: ' + e.message);
406
+ return { exported: false, reason: e.message };
407
+ }
408
+ }
409
+
410
+ function verifyBrain() {
411
+ if (!fs.existsSync(RVF_PATH)) {
412
+ log('No aqe.rvf found');
413
+ return { valid: false, reason: 'missing' };
414
+ }
415
+ const stat = fs.statSync(RVF_PATH);
416
+ const ageH = (Date.now() - stat.mtimeMs) / 3600000;
417
+ if (stat.size < 1024) { log('aqe.rvf too small'); return { valid: false, reason: 'too-small' }; }
418
+ if (ageH > MAX_AGE_HOURS) { log('aqe.rvf is ' + ageH.toFixed(1) + 'h old'); return { valid: true, stale: true }; }
419
+ log('aqe.rvf OK (' + (stat.size/1048576).toFixed(1) + ' MB)');
420
+ return { valid: true, stale: false };
421
+ }
422
+
423
+ const cmd = process.argv[2] || 'verify';
424
+ const result = cmd === 'export' ? exportBrain() : verifyBrain();
425
+ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result));
390
426
  `;
391
427
  }
392
428
  /**
@@ -410,7 +446,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
410
446
  hooks: [
411
447
  {
412
448
  type: 'command',
413
- command: 'npx agentic-qe hooks guard --file "$TOOL_INPUT_file_path" --json',
449
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" guard --file "$TOOL_INPUT_file_path" --json',
414
450
  timeout: 3000,
415
451
  continueOnError: true,
416
452
  },
@@ -422,7 +458,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
422
458
  hooks: [
423
459
  {
424
460
  type: 'command',
425
- command: 'npx agentic-qe hooks pre-edit --file "$TOOL_INPUT_file_path" --json',
461
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-edit --file "$TOOL_INPUT_file_path" --json',
426
462
  timeout: 5000,
427
463
  continueOnError: true,
428
464
  },
@@ -434,7 +470,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
434
470
  hooks: [
435
471
  {
436
472
  type: 'command',
437
- command: 'npx agentic-qe hooks pre-command --command "$TOOL_INPUT_command" --json',
473
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-command --command "$TOOL_INPUT_command" --json',
438
474
  timeout: 3000,
439
475
  continueOnError: true,
440
476
  },
@@ -446,7 +482,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
446
482
  hooks: [
447
483
  {
448
484
  type: 'command',
449
- command: 'npx agentic-qe hooks pre-task --description "$TOOL_INPUT_prompt" --json',
485
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-task --description "$TOOL_INPUT_prompt" --json',
450
486
  timeout: 5000,
451
487
  continueOnError: true,
452
488
  },
@@ -459,7 +495,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
459
495
  hooks: [
460
496
  {
461
497
  type: 'command',
462
- command: 'npx agentic-qe hooks post-edit --file "$TOOL_INPUT_file_path" --success --json',
498
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-edit --file "$TOOL_INPUT_file_path" --success --json',
463
499
  timeout: 5000,
464
500
  continueOnError: true,
465
501
  },
@@ -470,7 +506,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
470
506
  hooks: [
471
507
  {
472
508
  type: 'command',
473
- command: 'npx agentic-qe hooks post-command --command "$TOOL_INPUT_command" --success --json',
509
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-command --command "$TOOL_INPUT_command" --success true --json',
474
510
  timeout: 5000,
475
511
  continueOnError: true,
476
512
  },
@@ -481,7 +517,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
481
517
  hooks: [
482
518
  {
483
519
  type: 'command',
484
- command: 'npx agentic-qe hooks post-task --task-id "$TOOL_RESULT_agent_id" --success --json',
520
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-task --task-id "$TOOL_RESULT_agent_id" --agent "$TOOL_INPUT_subagent_type" --success true --description "$TOOL_INPUT_prompt" --json',
485
521
  timeout: 5000,
486
522
  continueOnError: true,
487
523
  },
@@ -496,7 +532,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
496
532
  // (e.g. {"prompt":"..."}). $PROMPT is NOT exposed as an env
497
533
  // var, so we let the CLI read stdin directly.
498
534
  type: 'command',
499
- command: 'npx agentic-qe hooks route --json',
535
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" route --json',
500
536
  timeout: 5000,
501
537
  continueOnError: true,
502
538
  },
@@ -508,7 +544,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
508
544
  hooks: [
509
545
  {
510
546
  type: 'command',
511
- command: 'npx agentic-qe hooks session-start --session-id "$SESSION_ID" --json',
547
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-start --session-id "$SESSION_ID" --json',
512
548
  timeout: 10000,
513
549
  continueOnError: true,
514
550
  },
@@ -530,7 +566,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
530
566
  hooks: [
531
567
  {
532
568
  type: 'command',
533
- command: 'npx agentic-qe hooks session-end --save-state --json',
569
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-end --save-state --json',
534
570
  timeout: 5000,
535
571
  continueOnError: true,
536
572
  },
@@ -544,7 +580,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
544
580
  // — without this, `routing_outcomes` accumulates quality_score=-1
545
581
  // rows forever in direct-work sessions (no Task/Agent spawned).
546
582
  type: 'command',
547
- command: 'npx agentic-qe hooks post-route --success true --json',
583
+ command: 'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-route --success true --json',
548
584
  timeout: 5000,
549
585
  continueOnError: true,
550
586
  },
@@ -259,6 +259,17 @@ export interface QEKernel extends Initializable, Disposable {
259
259
  readonly plugins: PluginLoader;
260
260
  /** Get the memory backend */
261
261
  readonly memory: MemoryBackend;
262
+ /**
263
+ * Get the LLM router (ADR-043). Returns undefined when no provider
264
+ * keys are present in env and the project has no router config — the
265
+ * kernel boots fine without a router; the LLM-enhancement branches
266
+ * in domain services simply stay dark.
267
+ *
268
+ * Type intentionally returned as `unknown` here to avoid a hard
269
+ * dependency from kernel/interfaces.ts on shared/llm/router/. Callers
270
+ * who need the typed HybridRouter import it directly.
271
+ */
272
+ readonly llmRouter?: unknown;
262
273
  /** Get a domain's API (synchronous, returns undefined if not loaded) */
263
274
  getDomainAPI<T>(domain: DomainName): T | undefined;
264
275
  /** Get a domain's API with lazy loading support */
@@ -324,6 +335,32 @@ export interface KernelConfig {
324
335
  * DreamEngine init cost.
325
336
  */
326
337
  enableDreamScheduler?: boolean;
338
+ /**
339
+ * LLM router configuration (ADR-043). Controls whether the kernel
340
+ * boots a HybridRouter and injects it into domain plugins so the
341
+ * isLLMAnalysisAvailable() branches in 14 services actually fire.
342
+ *
343
+ * - `enabled: 'auto'` (default): build a router iff at least one
344
+ * provider API key is present in env, OR the project's
345
+ * .agentic-qe/llm-config.json explicitly enables a provider.
346
+ * - `enabled: true`: always try to build a router; if no provider is
347
+ * available, log a warning and continue without one.
348
+ * - `enabled: false`: skip the router entirely. Use this to revert to
349
+ * the pre-wiring behavior (deterministic-only scanners).
350
+ *
351
+ * `configOverride` is merged on top of the disk + env config (highest
352
+ * precedence) — useful for tests.
353
+ */
354
+ llmRouter?: {
355
+ enabled?: 'auto' | true | false;
356
+ configOverride?: Partial<import('../shared/llm/router/types').RouterConfig>;
357
+ /**
358
+ * Inject a pre-built ProviderManager (for tests). When supplied,
359
+ * config-store loading is skipped and the provided manager is used
360
+ * directly. Typed as unknown to avoid the dependency.
361
+ */
362
+ providerManager?: unknown;
363
+ };
327
364
  }
328
365
  /**
329
366
  * Event middleware interface for anti-drift and other event processing (ADR-060)
@@ -6,6 +6,7 @@ import { DomainName } from '../shared/types';
6
6
  import { QEKernel, EventBus, AgentCoordinator, PluginLoader, MemoryBackend, KernelHealth, KernelConfig } from './interfaces';
7
7
  import { ToolCallSignatureTracker } from './anti-drift-middleware.js';
8
8
  import type { LoopDetectionResult } from './anti-drift-middleware.js';
9
+ import type { HybridRouter } from '../shared/llm/router/hybrid-router.js';
9
10
  import '../domains/test-generation';
10
11
  import '../domains/coverage-analysis';
11
12
  import '../domains/security-compliance';
@@ -22,12 +23,50 @@ export declare class QEKernelImpl implements QEKernel {
22
23
  private _loopTracker;
23
24
  private _experienceBridge?;
24
25
  private _dreamScheduler?;
26
+ private _llmRouter?;
27
+ private _llmRouterBuild?;
25
28
  constructor(config?: Partial<KernelConfig>);
26
29
  get eventBus(): EventBus;
27
30
  get coordinator(): AgentCoordinator;
28
31
  get plugins(): PluginLoader;
29
32
  get memory(): MemoryBackend;
33
+ /**
34
+ * ADR-043: Get the LLM router built during initialize(). Returns
35
+ * undefined when llmRouter.enabled is false or no provider was
36
+ * available. Domain plugins receive this as their factory's 4th arg
37
+ * via DOMAIN_FACTORIES.
38
+ */
39
+ get llmRouter(): HybridRouter | undefined;
30
40
  initialize(): Promise<void>;
41
+ /**
42
+ * ADR-043: Build the kernel-singleton HybridRouter.
43
+ *
44
+ * Behavior is gated, in order:
45
+ * 1. AQE_LLM_ROUTER_DISABLED env var (kill-switch): if set to a truthy
46
+ * value, ALWAYS skip — even when config.llmRouter.enabled === true.
47
+ * This is the env-only opt-out for users who upgrade with a
48
+ * provider key already in env and don't want billing surprises.
49
+ * 2. config.llmRouter.enabled:
50
+ * 'auto' (default): build iff at least one provider key is in env,
51
+ * or the project's llm-config.json enables a provider
52
+ * true: attempt to build; emit error event if no provider
53
+ * false: skip entirely (sets _llmRouter to undefined)
54
+ *
55
+ * On any error we publish a structured kernel.llm-router.init-failed
56
+ * event so monitoring catches misconfiguration. We also keep the
57
+ * console.warn for direct visibility in dev. The kernel still boots —
58
+ * a kernel that boots without LLMs is strictly better than a kernel
59
+ * that won't boot — but the failure is now observable.
60
+ */
61
+ private _initializeLLMRouter;
62
+ /**
63
+ * ADR-043: emit a structured event on the kernel event bus when the
64
+ * LLM router can't be built. Observability hook for monitoring and
65
+ * alerting — a silent warn is not enough for production systems where
66
+ * "tests run without LLM analysis" is a quality regression worth
67
+ * paging on.
68
+ */
69
+ private _publishLLMRouterEvent;
31
70
  dispose(): Promise<void>;
32
71
  getDomainAPI<T>(domain: DomainName): T | undefined;
33
72
  /**