agentic-qe 3.9.26 → 3.9.28

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 +94 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/bridge/captured-experience-bridge.d.ts +40 -0
  5. package/dist/bridge/captured-experience-bridge.js +232 -0
  6. package/dist/cli/bundle.js +5 -5
  7. package/dist/cli/chunks/adapter-EZP2PBUO.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-ZOADSKRX.js → agent-booster-wasm-V5PG6GFO.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-SPLFCIHA.js → agent-handler-7ZQNRIZC.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-R6ZVL2FT.js → agent-memory-branch-KGEYSKXW.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-RM4YQPRF.js +2 -0
  12. package/dist/cli/chunks/{audit-6TQQFGQN.js → audit-5A4AC2NA.js} +2 -2
  13. package/dist/cli/chunks/base-2KYCMSPN.js +2 -0
  14. package/dist/cli/chunks/{hnswlib-node-TULXUZI4.js → better-sqlite3-RZZIAME7.js} +2 -2
  15. package/dist/cli/chunks/{brain-handler-6BQCTD3M.js → brain-handler-KNERI5RC.js} +3 -3
  16. package/dist/cli/chunks/{branch-enumerator-JTESSKID.js → branch-enumerator-DGR3U73T.js} +2 -2
  17. package/dist/cli/chunks/{browser-YDZLFZNH.js → browser-Y5DC6QCK.js} +2 -2
  18. package/dist/cli/chunks/browser-workflow-FZ2BRH4H.js +2 -0
  19. package/dist/cli/chunks/{chunk-IKRLPS4M.js → chunk-2RKR6KT5.js} +2 -2
  20. package/dist/cli/chunks/{chunk-SDD3XQ7X.js → chunk-33VVPBAK.js} +1 -1
  21. package/dist/cli/chunks/{chunk-QFXOKERO.js → chunk-3ZPK7HCD.js} +1 -1
  22. package/dist/cli/chunks/{chunk-SYRUG2T7.js → chunk-4MYXPDXX.js} +1 -1
  23. package/dist/cli/chunks/chunk-4R6DN7IO.js +2 -0
  24. package/dist/cli/chunks/{chunk-TZ73IAF5.js → chunk-5KOR5ZMG.js} +2 -2
  25. package/dist/cli/chunks/{chunk-SYQZPNHQ.js → chunk-5RZ26J4J.js} +2 -2
  26. package/dist/cli/chunks/{chunk-6UFMNYQV.js → chunk-5UHMNAK2.js} +1 -1
  27. package/dist/cli/chunks/{chunk-RLAXE5HU.js → chunk-6BJ6O7JZ.js} +2 -2
  28. package/dist/cli/chunks/{chunk-PJPNRDEF.js → chunk-6WKX2O66.js} +2 -2
  29. package/dist/cli/chunks/{chunk-MW4WEMLE.js → chunk-7GLCWLZL.js} +2 -2
  30. package/dist/cli/chunks/{chunk-7T2KT74O.js → chunk-7MLACLCT.js} +2 -2
  31. package/dist/cli/chunks/{chunk-MSPY7HMF.js → chunk-7MVFQGFZ.js} +2 -2
  32. package/dist/cli/chunks/{chunk-Y3YJMKXS.js → chunk-7NDBKLDK.js} +2 -2
  33. package/dist/cli/chunks/{chunk-HKHRIPXP.js → chunk-A77JCFFC.js} +9 -9
  34. package/dist/cli/chunks/{chunk-QXQWQRZA.js → chunk-AFSVRY7S.js} +1 -1
  35. package/dist/cli/chunks/{chunk-G3KTLF57.js → chunk-AL7LMXTA.js} +2 -2
  36. package/dist/cli/chunks/{chunk-2OFL5HSB.js → chunk-B5KYS65U.js} +2 -2
  37. package/dist/cli/chunks/{chunk-FWPV44HL.js → chunk-BRCWESMJ.js} +2 -2
  38. package/dist/cli/chunks/{chunk-EPCKRFMU.js → chunk-C5RA5PDV.js} +2 -2
  39. package/dist/cli/chunks/{chunk-3QPQZJUY.js → chunk-CAZ2CIU4.js} +2 -2
  40. package/dist/cli/chunks/{chunk-FRUDEEZH.js → chunk-CCZGT2HD.js} +1 -1
  41. package/dist/cli/chunks/{chunk-RNVXTNEB.js → chunk-CGQN4R76.js} +2 -2
  42. package/dist/cli/chunks/{chunk-OFAXQGU5.js → chunk-CKDW7YFV.js} +2 -2
  43. package/dist/cli/chunks/{chunk-6AH4SN6I.js → chunk-D4YJ3SDF.js} +1 -1
  44. package/dist/cli/chunks/{chunk-JWKNHSXP.js → chunk-DHLT7OCI.js} +2 -2
  45. package/dist/cli/chunks/{chunk-EYFL6QLX.js → chunk-DMMFUB3Z.js} +2 -2
  46. package/dist/cli/chunks/{chunk-CMFRBO4N.js → chunk-DQ3FERVR.js} +3 -3
  47. package/dist/cli/chunks/{chunk-F24XTOID.js → chunk-DTS3ZD7P.js} +2 -2
  48. package/dist/cli/chunks/{chunk-UJPERPQU.js → chunk-FI2JQJYJ.js} +1 -1
  49. package/dist/cli/chunks/{chunk-LPDPGCDC.js → chunk-FQJXLJ6G.js} +2 -2
  50. package/dist/cli/chunks/{chunk-EFAN5HUX.js → chunk-FTQXXYHG.js} +2 -2
  51. package/dist/cli/chunks/{chunk-A4U4DNPR.js → chunk-FUKWABUF.js} +1 -1
  52. package/dist/cli/chunks/{chunk-GHQ6QT47.js → chunk-G4YZWVOV.js} +2 -2
  53. package/dist/cli/chunks/{chunk-EQ4IZRD5.js → chunk-G6LGV6KD.js} +2 -2
  54. package/dist/cli/chunks/{chunk-RXQX6JNQ.js → chunk-GECEU6U3.js} +2 -2
  55. package/dist/cli/chunks/{chunk-4F6RPT7N.js → chunk-HEMQ4DEF.js} +3 -3
  56. package/dist/cli/chunks/{chunk-VBJ4UQ3X.js → chunk-HL26OBVJ.js} +2 -2
  57. package/dist/cli/chunks/{chunk-YYOKX7VH.js → chunk-HQFREWNC.js} +2 -2
  58. package/dist/cli/chunks/{chunk-HSQLB4GR.js → chunk-I4TSLBEZ.js} +2 -2
  59. package/dist/cli/chunks/{chunk-4GUVB7FG.js → chunk-IJNRJY2R.js} +2 -2
  60. package/dist/cli/chunks/{chunk-ARLHD5MG.js → chunk-IVRBWQBU.js} +1 -1
  61. package/dist/cli/chunks/{chunk-4U57VG6R.js → chunk-J62GSTYJ.js} +2 -2
  62. package/dist/cli/chunks/{chunk-QQMGUORN.js → chunk-JOSEPQIU.js} +2 -2
  63. package/dist/cli/chunks/{chunk-6VRKHHYI.js → chunk-JZ5TPG5T.js} +1 -1
  64. package/dist/cli/chunks/{chunk-XAA7ZBNG.js → chunk-KCP5CS4C.js} +1 -1
  65. package/dist/cli/chunks/{chunk-AOURUJFN.js → chunk-KYPNHW4G.js} +1 -1
  66. package/dist/cli/chunks/{chunk-CYPOU765.js → chunk-LCSDE5DQ.js} +1 -1
  67. package/dist/cli/chunks/{chunk-IVNZLESN.js → chunk-LE3V4QHG.js} +2 -2
  68. package/dist/cli/chunks/{chunk-XDEF6UFY.js → chunk-LG3F5F7B.js} +2 -2
  69. package/dist/cli/chunks/{chunk-RD3CNJWR.js → chunk-LKWJUZVH.js} +2 -2
  70. package/dist/cli/chunks/{chunk-K64UL5PA.js → chunk-LM624ZDD.js} +2 -2
  71. package/dist/cli/chunks/{chunk-PPP7KZQL.js → chunk-LQDKLJBO.js} +2 -2
  72. package/dist/cli/chunks/{chunk-ETBVBV2M.js → chunk-M3FFEZFJ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-YUMVG55I.js → chunk-MDXIESNH.js} +2 -2
  74. package/dist/cli/chunks/{chunk-CU5Q46NR.js → chunk-MFKVWTIY.js} +4 -4
  75. package/dist/cli/chunks/{chunk-ONYCSOAR.js → chunk-ML2XD4RS.js} +1 -1
  76. package/dist/cli/chunks/{chunk-AH3IPNOJ.js → chunk-MWVZTQOR.js} +2 -2
  77. package/dist/cli/chunks/{chunk-VC2FHUOY.js → chunk-NIWTQURH.js} +2 -2
  78. package/dist/cli/chunks/{chunk-GW5T4BSO.js → chunk-NNYRIYEZ.js} +4 -4
  79. package/dist/cli/chunks/{chunk-4EBC7ATS.js → chunk-NUN7N7MB.js} +9 -9
  80. package/dist/cli/chunks/{chunk-VPPXZORB.js → chunk-O22BAOMU.js} +1 -1
  81. package/dist/cli/chunks/{chunk-LP7ILPFQ.js → chunk-O5AZETA7.js} +2 -2
  82. package/dist/cli/chunks/{chunk-XHENTAXI.js → chunk-OE7U5SX2.js} +2 -2
  83. package/dist/cli/chunks/{chunk-U5BMUXV2.js → chunk-OQWTTKJU.js} +2 -2
  84. package/dist/cli/chunks/{chunk-5TTQNRAP.js → chunk-OVOXPXPC.js} +1 -1
  85. package/dist/cli/chunks/{chunk-AGBIQXB4.js → chunk-PHPT6QTF.js} +2 -2
  86. package/dist/cli/chunks/{chunk-F77VZ4IY.js → chunk-PMWIZ7TC.js} +2 -2
  87. package/dist/cli/chunks/{chunk-4RFODPDS.js → chunk-PNLEMDLY.js} +2 -2
  88. package/dist/cli/chunks/{chunk-TLBP7EVX.js → chunk-POOFM7MT.js} +1 -1
  89. package/dist/cli/chunks/{chunk-QU7TNCUB.js → chunk-Q2GEEKE4.js} +1 -1
  90. package/dist/cli/chunks/{chunk-C77FS4ER.js → chunk-QGQ6XWFK.js} +2 -2
  91. package/dist/cli/chunks/{chunk-MTRA6I7Y.js → chunk-QKODMLPS.js} +1 -1
  92. package/dist/cli/chunks/{chunk-N2ET2TL5.js → chunk-QMCRT3AX.js} +2 -2
  93. package/dist/cli/chunks/{chunk-FDC2ANCP.js → chunk-QY4NWJET.js} +3 -3
  94. package/dist/cli/chunks/{chunk-VHHFSVR3.js → chunk-RB5T2HNT.js} +2 -2
  95. package/dist/cli/chunks/{chunk-YCZEXLKL.js → chunk-RJGSHAHW.js} +2 -2
  96. package/dist/cli/chunks/{chunk-XYMUYLHY.js → chunk-ROXQZJ6J.js} +1 -1
  97. package/dist/cli/chunks/{chunk-N3GLRFMH.js → chunk-RPNBVYWZ.js} +1 -1
  98. package/dist/cli/chunks/{chunk-PS7YB3IV.js → chunk-RUOWR53U.js} +3 -3
  99. package/dist/cli/chunks/{chunk-KQQPUHQD.js → chunk-RX3S6244.js} +1 -1
  100. package/dist/cli/chunks/{chunk-BBALCRJM.js → chunk-S5YTV4G3.js} +1 -1
  101. package/dist/cli/chunks/{chunk-MXZY5IJA.js → chunk-S7RGN5OC.js} +1 -1
  102. package/dist/cli/chunks/{chunk-TU2A5BGA.js → chunk-SH7IVDWV.js} +2 -2
  103. package/dist/cli/chunks/{chunk-EX7UGFWX.js → chunk-SQHCTVEH.js} +2 -2
  104. package/dist/cli/chunks/{chunk-BOV44F3Z.js → chunk-SVPX24HJ.js} +2 -2
  105. package/dist/cli/chunks/{chunk-ZFLD5ATZ.js → chunk-T5YDBTD6.js} +2 -2
  106. package/dist/cli/chunks/{chunk-P6M6LNSI.js → chunk-TYR7ZETY.js} +2 -2
  107. package/dist/cli/chunks/{chunk-PSOF6DZA.js → chunk-UCQ2AFAR.js} +129 -124
  108. package/dist/cli/chunks/{chunk-AUD45G7X.js → chunk-UEADBMAA.js} +2 -2
  109. package/dist/cli/chunks/{chunk-22YZRYG4.js → chunk-UJRYZ6TO.js} +3 -3
  110. package/dist/cli/chunks/{chunk-B3KHJQ34.js → chunk-UYTAAWAO.js} +2 -2
  111. package/dist/cli/chunks/{chunk-3K2QCWFD.js → chunk-V6GKWUCS.js} +1 -1
  112. package/dist/cli/chunks/{chunk-G42KXBBG.js → chunk-V7VCP42A.js} +2 -2
  113. package/dist/cli/chunks/{chunk-C5ZA6UBI.js → chunk-VGQYRIQ2.js} +1 -1
  114. package/dist/cli/chunks/{chunk-TQBP3YGG.js → chunk-VJ7OJ7I3.js} +1 -1
  115. package/dist/cli/chunks/{chunk-5JGFDJA6.js → chunk-VK3VXDNA.js} +2 -2
  116. package/dist/cli/chunks/{chunk-MAPQ2UZ5.js → chunk-VPF2RECU.js} +2 -2
  117. package/dist/cli/chunks/{chunk-7L3F76MS.js → chunk-VQA6GDNN.js} +3 -3
  118. package/dist/cli/chunks/{chunk-TRIA62JA.js → chunk-VZEKUY3G.js} +2 -2
  119. package/dist/cli/chunks/{chunk-WCI2FMWZ.js → chunk-WQIT7I46.js} +1 -1
  120. package/dist/cli/chunks/{chunk-BFSKBIAM.js → chunk-WT2IUWYG.js} +1 -1
  121. package/dist/cli/chunks/{chunk-CBBVUZFD.js → chunk-XCLG5FGQ.js} +4 -4
  122. package/dist/cli/chunks/{chunk-PLB75ASZ.js → chunk-XCMM2NLF.js} +1 -1
  123. package/dist/cli/chunks/{chunk-2XOIJE7J.js → chunk-XLNWSI7Y.js} +2 -2
  124. package/dist/cli/chunks/{chunk-EEWGVVKH.js → chunk-Y7EPJRQT.js} +2 -2
  125. package/dist/cli/chunks/{chunk-4QUKBJAS.js → chunk-YF5JCM45.js} +2 -2
  126. package/dist/cli/chunks/{chunk-SGGYSL7J.js → chunk-YG6ZRK5N.js} +1 -1
  127. package/dist/cli/chunks/{chunk-ZUUNOGHI.js → chunk-YJPNL6K4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-4I6XGKSB.js → chunk-YLZZZRB7.js} +2 -2
  129. package/dist/cli/chunks/{chunk-QUHNBIUZ.js → chunk-YUV4EMRT.js} +1 -1
  130. package/dist/cli/chunks/{chunk-4ZAOHYFA.js → chunk-ZDM6AWU6.js} +2 -2
  131. package/dist/cli/chunks/{chunk-DBSEDJ7P.js → chunk-ZH2WOQP3.js} +2 -2
  132. package/dist/cli/chunks/{chunk-WND3EYCS.js → chunk-ZJEPVWBV.js} +2 -2
  133. package/dist/cli/chunks/{chunk-ANEIDNH7.js → chunk-ZKNO5AR4.js} +2 -2
  134. package/dist/cli/chunks/{ci-EAX5WWT6.js → ci-XTEXFMLT.js} +2 -2
  135. package/dist/cli/chunks/{ci-output-JCWHRJ2A.js → ci-output-5NU5WEOG.js} +2 -2
  136. package/dist/cli/chunks/{circuit-breaker-RAEDVT33.js → circuit-breaker-UBO4B3ER.js} +2 -2
  137. package/dist/cli/chunks/{claude-flow-setup-NJAY4WXY.js → claude-flow-setup-X7SVV2YA.js} +2 -2
  138. package/dist/cli/chunks/client-SRNILWCG.js +2 -0
  139. package/dist/cli/chunks/{cline-installer-X3GCUEWC.js → cline-installer-EBLJPYJW.js} +2 -2
  140. package/dist/cli/chunks/{code-GXJ6JC6O.js → code-WO52OOGB.js} +2 -2
  141. package/dist/cli/chunks/{code-index-extractor-TTA7HZEW.js → code-index-extractor-MVR5EQ4S.js} +2 -2
  142. package/dist/cli/chunks/{codex-installer-TXMSGJHK.js → codex-installer-LR2NDWTK.js} +2 -2
  143. package/dist/cli/chunks/{completions-RSFIDY22.js → completions-J5OYMQCR.js} +2 -2
  144. package/dist/cli/chunks/{complexity-analyzer-C6244ZOI.js → complexity-analyzer-GUFXAK6I.js} +2 -2
  145. package/dist/cli/chunks/{continuedev-installer-5WQIRQW4.js → continuedev-installer-45ZDPPTK.js} +2 -2
  146. package/dist/cli/chunks/{copilot-installer-5Q64SC52.js → copilot-installer-FIKML2UD.js} +2 -2
  147. package/dist/cli/chunks/{cost-tracker-6SBRULNN.js → cost-tracker-SSI3GZ5C.js} +2 -2
  148. package/dist/cli/chunks/{coverage-X2AG3K6E.js → coverage-GQSRYPVJ.js} +3 -3
  149. package/dist/cli/chunks/cross-domain-router-QCOROKUM.js +2 -0
  150. package/dist/cli/chunks/{cursor-installer-VHZ5LEPG.js → cursor-installer-WRIQ2MXB.js} +2 -2
  151. package/dist/cli/chunks/{daemon-CDQXWIV4.js → daemon-TKQOU66X.js} +3 -3
  152. package/dist/cli/chunks/{dag-attention-scheduler-33UWNTSB.js → dag-attention-scheduler-DZ4Y7G3P.js} +2 -2
  153. package/dist/cli/chunks/{detect-UDWTKRQL.js → detect-DLXIZ3JQ.js} +2 -2
  154. package/dist/cli/chunks/{dist-node-CKTPNPBG.js → dist-node-3QZ37HLE.js} +2 -2
  155. package/dist/cli/chunks/{domain-handler-5J4AH4XR.js → domain-handler-F2XFKJOG.js} +2 -2
  156. package/dist/cli/chunks/{domain-transfer-P6VPN56R.js → domain-transfer-NZNJ6O5Y.js} +2 -2
  157. package/dist/cli/chunks/dream-P5YCSXOG.js +2 -0
  158. package/dist/cli/chunks/{embed-and-insert-pattern-2YFFI7IN.js → embed-and-insert-pattern-IXQSPD2Q.js} +2 -2
  159. package/dist/cli/chunks/{eval-K7VFIO2T.js → eval-5VQNSHMZ.js} +2 -2
  160. package/dist/cli/chunks/{experience-capture-middleware-P4RQW7JV.js → experience-capture-middleware-SQQVSGWT.js} +3 -3
  161. package/dist/cli/chunks/{fast-paths-T27YLQWQ.js → fast-paths-XZ4PMW4T.js} +2 -2
  162. package/dist/cli/chunks/{feature-flags-YFPFETDZ.js → feature-flags-I3E33SWO.js} +2 -2
  163. package/dist/cli/chunks/{feature-flags-HHQNCU6V.js → feature-flags-VYNQQIWP.js} +2 -2
  164. package/dist/cli/chunks/{file-discovery-ZKNENDOJ.js → file-discovery-VBJYSQEB.js} +2 -2
  165. package/dist/cli/chunks/{fleet-N5OTMFIN.js → fleet-R24REKY3.js} +4 -4
  166. package/dist/cli/chunks/{gnn-wrapper-D6L4FIWY.js → gnn-wrapper-ZSS765OF.js} +2 -2
  167. package/dist/cli/chunks/{heartbeat-handler-5RDU3KKK.js → heartbeat-handler-DXMMYI3L.js} +4 -4
  168. package/dist/cli/chunks/{heartbeat-scheduler-FALV24GQ.js → heartbeat-scheduler-CAXANO7U.js} +2 -2
  169. package/dist/cli/chunks/hnsw-adapter-CR22XKGP.js +2 -0
  170. package/dist/cli/chunks/hnsw-index-BTN322XC.js +2 -0
  171. package/dist/cli/chunks/{hnsw-legacy-bridge-ARD7KA3G.js → hnsw-legacy-bridge-EU46A4HQ.js} +2 -2
  172. package/dist/cli/chunks/{better-sqlite3-QIKWKEGD.js → hnswlib-node-K5N5YEYS.js} +2 -2
  173. package/dist/cli/chunks/{hooks-6HA23JHQ.js → hooks-2AFKHPAH.js} +30 -30
  174. package/dist/cli/chunks/{hybrid-router-XUYQW7FJ.js → hybrid-router-TLHKB3V6.js} +2 -2
  175. package/dist/cli/chunks/{hypergraph-engine-OGGXYQAO.js → hypergraph-engine-QKIUFDJP.js} +2 -2
  176. package/dist/cli/chunks/{hypergraph-handler-UFV3XYVX.js → hypergraph-handler-CT77BGUK.js} +3 -3
  177. package/dist/cli/chunks/impact-analyzer-ZYIZG4GS.js +2 -0
  178. package/dist/cli/chunks/{init-handler-VUSXGONQ.js → init-handler-L5Y4EZPZ.js} +8 -8
  179. package/dist/cli/chunks/init-wizard-2GJYCDEQ.js +2 -0
  180. package/dist/cli/chunks/kernel-GR44AXQ6.js +2 -0
  181. package/dist/cli/chunks/{kilocode-installer-C2JMSYAU.js → kilocode-installer-5XLS62BE.js} +2 -2
  182. package/dist/cli/chunks/{kiro-installer-6LJFFEEZ.js → kiro-installer-YNGEFQJ6.js} +2 -2
  183. package/dist/cli/chunks/knowledge-graph-23VGRP7G.js +2 -0
  184. package/dist/cli/chunks/{learning-4B624JV3.js → learning-H4PJXEZT.js} +3 -3
  185. package/dist/cli/chunks/{llm-router-QUOLZECD.js → llm-router-5V7S4RBP.js} +4 -4
  186. package/dist/cli/chunks/{load-MIQWBMGE.js → load-MERCK5J7.js} +2 -2
  187. package/dist/cli/chunks/load-test-5O3AB7JK.js +2 -0
  188. package/dist/cli/chunks/{mcp-MBJWNXDM.js → mcp-AY3EW3M4.js} +2 -2
  189. package/dist/cli/chunks/{memory-WX3XHQZP.js → memory-L7QEPZ3O.js} +5 -5
  190. package/dist/cli/chunks/memory-backend-JMFE5AFK.js +2 -0
  191. package/dist/cli/chunks/{memory-handlers-Q3XCN5SC.js → memory-handlers-3MMKDYQH.js} +2 -2
  192. package/dist/cli/chunks/{multi-model-executor-RLY7OQOG.js → multi-model-executor-MCYVGMYJ.js} +2 -2
  193. package/dist/cli/chunks/{opencode-installer-JATQNZWA.js → opencode-installer-NSJCDEG7.js} +2 -2
  194. package/dist/cli/chunks/{orchestrator-7BNG32I2.js → orchestrator-PSFROJTM.js} +5 -5
  195. package/dist/cli/chunks/{pipeline-ORKGL7DP.js → pipeline-TXZZCEOG.js} +2 -2
  196. package/dist/cli/chunks/{platform-4SLJDRVL.js → platform-PUFZFG66.js} +2 -2
  197. package/dist/cli/chunks/{plugin-V6FRBF4W.js → plugin-ALNATTS7.js} +2 -2
  198. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NA7AXKCA.js → prime-radiant-advanced-wasm-PZZRWJEK.js} +2 -2
  199. package/dist/cli/chunks/protocol-executor-J6KJRPXK.js +2 -0
  200. package/dist/cli/chunks/{protocol-handler-RSJOZ4XL.js → protocol-handler-WR4JQLSR.js} +2 -2
  201. package/dist/cli/chunks/{prove-2ZMKUODH.js → prove-AI7HVVJW.js} +2 -2
  202. package/dist/cli/chunks/{provider-manager-PSPAFCK7.js → provider-manager-XWDJJTRQ.js} +2 -2
  203. package/dist/cli/chunks/qe-reasoning-bank-A2Z7QLTV.js +2 -0
  204. package/dist/cli/chunks/{quality-6PZOOQSK.js → quality-W5K6U7NU.js} +2 -2
  205. package/dist/cli/chunks/queen-coordinator-RSASVM4O.js +2 -0
  206. package/dist/cli/chunks/{real-embeddings-BGNTSKHD.js → real-embeddings-Y65TLGVT.js} +2 -2
  207. package/dist/cli/chunks/{roocode-installer-NOHRQJIP.js → roocode-installer-2INES4NP.js} +2 -2
  208. package/dist/cli/chunks/router-LIO2DAHL.js +2 -0
  209. package/dist/cli/chunks/routing-feedback-WQ4XI7TT.js +2 -0
  210. package/dist/cli/chunks/{routing-handler-ZAOGNENU.js → routing-handler-IR4K3W3W.js} +2 -2
  211. package/dist/cli/chunks/{ruvector-commands-5K3Q4N5H.js → ruvector-commands-JGIJKLE5.js} +2 -2
  212. package/dist/cli/chunks/{rvf-dual-writer-NWFQC4KN.js → rvf-dual-writer-3RPYL6GB.js} +2 -2
  213. package/dist/cli/chunks/{rvf-migration-adapter-MS7QGBWK.js → rvf-migration-adapter-DZO5RSBU.js} +2 -2
  214. package/dist/cli/chunks/{rvf-migration-coordinator-YUBSSB6Z.js → rvf-migration-coordinator-5OIXOLND.js} +2 -2
  215. package/dist/cli/chunks/rvf-native-adapter-E7ODRU4B.js +2 -0
  216. package/dist/cli/chunks/safe-db-BW2OSAL7.js +2 -0
  217. package/dist/cli/chunks/schedule-JF75BBFQ.js +2 -0
  218. package/dist/cli/chunks/scheduler-EYCKXDGY.js +2 -0
  219. package/dist/cli/chunks/{security-BJWJWQRB.js → security-6I65LIPS.js} +3 -3
  220. package/dist/cli/chunks/shared-rvf-adapter-4Z3AKN2H.js +2 -0
  221. package/dist/cli/chunks/{shared-rvf-dual-writer-LEBD3EHA.js → shared-rvf-dual-writer-LEY65TEP.js} +2 -2
  222. package/dist/cli/chunks/sqlite-persistence-RUVPC4L5.js +2 -0
  223. package/dist/cli/chunks/{status-handler-XANOAVIB.js → status-handler-DOJ2JTXS.js} +2 -2
  224. package/dist/cli/chunks/{structural-health-TZA7PJ2T.js → structural-health-GSWBOWZR.js} +2 -2
  225. package/dist/cli/chunks/{sync-MKNYPUYP.js → sync-VJ7W4F4G.js} +2 -2
  226. package/dist/cli/chunks/{task-handler-KXSUKNQV.js → task-handler-AETQISNK.js} +2 -2
  227. package/dist/cli/chunks/{task-handlers-54MMRT3D.js → task-handlers-OQSZGWCK.js} +3 -3
  228. package/dist/cli/chunks/{test-AKS5AAT7.js → test-G57YV5WH.js} +4 -4
  229. package/dist/cli/chunks/{test-scheduling-OA7UPWQ5.js → test-scheduling-ONWDZENP.js} +3 -3
  230. package/dist/cli/chunks/{token-bootstrap-ZIUNRF3E.js → token-bootstrap-CTG7NE77.js} +2 -2
  231. package/dist/cli/chunks/{token-usage-IJENSXPQ.js → token-usage-YDHUAMJQ.js} +2 -2
  232. package/dist/cli/chunks/{transformers-CACTFP7H.js → transformers-W7SFGSLI.js} +2 -2
  233. package/dist/cli/chunks/{tree-sitter-wasm-parser-4H4UVHAQ.js → tree-sitter-wasm-parser-K7UHIIO2.js} +2 -2
  234. package/dist/cli/chunks/{types-AGACOWV3.js → types-EIZ5IMMV.js} +2 -2
  235. package/dist/cli/chunks/unified-memory-XE5LJO5T.js +2 -0
  236. package/dist/cli/chunks/unified-memory-hnsw-DB6HGWEU.js +2 -0
  237. package/dist/cli/chunks/unified-persistence-XGXZG42H.js +2 -0
  238. package/dist/cli/chunks/{upgrade-EKE25VPL.js → upgrade-TIQBZYJ7.js} +2 -2
  239. package/dist/cli/chunks/{validate-BZTYZQGP.js → validate-IIN2ODDK.js} +2 -2
  240. package/dist/cli/chunks/{validate-swarm-GZANKJ7M.js → validate-swarm-V6Y4I77Q.js} +2 -2
  241. package/dist/cli/chunks/{vibium-5X7QY25W.js → vibium-NMIWAEGL.js} +2 -2
  242. package/dist/cli/chunks/visual-security-NF4MBB32.js +2 -0
  243. package/dist/cli/chunks/{web-tree-sitter-KDFT6ZUY.js → web-tree-sitter-BGIECWPA.js} +2 -2
  244. package/dist/cli/chunks/{windsurf-installer-QFZJISMO.js → windsurf-installer-WTZG4PZD.js} +2 -2
  245. package/dist/cli/chunks/{witness-chain-ESSANJ4X.js → witness-chain-EQ2RE7CZ.js} +2 -2
  246. package/dist/cli/chunks/witness-chain-ZIE7GCJI.js +2 -0
  247. package/dist/cli/chunks/{workflow-EQFV2P66.js → workflow-3ZDRY6TE.js} +4 -4
  248. package/dist/cli/chunks/workflow-orchestrator-Z4KE75MK.js +2 -0
  249. package/dist/cli/chunks/{wrappers-RKJJDJLC.js → wrappers-FOP76K6J.js} +2 -2
  250. package/dist/cli/commands/fleet.js +2 -0
  251. package/dist/cli/commands/hooks-handlers/hooks-shared.js +39 -6
  252. package/dist/cli/handlers/init-handler.js +2 -0
  253. package/dist/cli/index.js +3 -0
  254. package/dist/kernel/interfaces.d.ts +14 -0
  255. package/dist/kernel/kernel.d.ts +1 -0
  256. package/dist/kernel/kernel.js +42 -0
  257. package/dist/learning/pattern-promotion.d.ts +6 -0
  258. package/dist/learning/pattern-promotion.js +5 -0
  259. package/dist/learning/qe-reasoning-bank-types.d.ts +12 -3
  260. package/dist/learning/qe-reasoning-bank.d.ts +10 -3
  261. package/dist/learning/qe-reasoning-bank.js +28 -7
  262. package/dist/mcp/bundle.js +323 -318
  263. package/dist/optimization/index.d.ts +0 -2
  264. package/dist/optimization/index.js +0 -2
  265. package/dist/workers/workers/learning-consolidation.js +9 -3
  266. package/package.json +1 -1
  267. package/dist/cli/chunks/adapter-LIPKRUFH.js +0 -2
  268. package/dist/cli/chunks/aqe-learning-engine-XJGJ6YS7.js +0 -2
  269. package/dist/cli/chunks/base-22RFSMJU.js +0 -2
  270. package/dist/cli/chunks/browser-workflow-ST7DX7KA.js +0 -2
  271. package/dist/cli/chunks/chunk-RSNZQ3MN.js +0 -2
  272. package/dist/cli/chunks/client-6463JNJR.js +0 -2
  273. package/dist/cli/chunks/cross-domain-router-OYUCD42M.js +0 -2
  274. package/dist/cli/chunks/dream-R76KD347.js +0 -2
  275. package/dist/cli/chunks/hnsw-adapter-CYWGI732.js +0 -2
  276. package/dist/cli/chunks/hnsw-index-UOYT3QKQ.js +0 -2
  277. package/dist/cli/chunks/impact-analyzer-PWV7CJUA.js +0 -2
  278. package/dist/cli/chunks/init-wizard-DKIFAPJJ.js +0 -2
  279. package/dist/cli/chunks/kernel-WQL2MUBH.js +0 -2
  280. package/dist/cli/chunks/knowledge-graph-U5OZDWGT.js +0 -2
  281. package/dist/cli/chunks/load-test-D2CQYRZQ.js +0 -2
  282. package/dist/cli/chunks/memory-backend-HFIGDCZE.js +0 -2
  283. package/dist/cli/chunks/protocol-executor-LTJIEFVG.js +0 -2
  284. package/dist/cli/chunks/qe-reasoning-bank-ZJ56AWO2.js +0 -2
  285. package/dist/cli/chunks/queen-coordinator-CZA7SS4O.js +0 -2
  286. package/dist/cli/chunks/router-N23IDBEQ.js +0 -2
  287. package/dist/cli/chunks/routing-feedback-IADXJ4RV.js +0 -2
  288. package/dist/cli/chunks/rvf-native-adapter-MOR7NUA5.js +0 -2
  289. package/dist/cli/chunks/safe-db-IRAUFZTC.js +0 -2
  290. package/dist/cli/chunks/schedule-PKUUCNCA.js +0 -2
  291. package/dist/cli/chunks/scheduler-NE4NP4W5.js +0 -2
  292. package/dist/cli/chunks/shared-rvf-adapter-OTON2BMV.js +0 -2
  293. package/dist/cli/chunks/sqlite-persistence-DXFBYN5L.js +0 -2
  294. package/dist/cli/chunks/unified-memory-4M3V7XL6.js +0 -2
  295. package/dist/cli/chunks/unified-memory-hnsw-6IKIDXEW.js +0 -2
  296. package/dist/cli/chunks/unified-persistence-XJ4D23TB.js +0 -2
  297. package/dist/cli/chunks/visual-security-2X63QHFJ.js +0 -2
  298. package/dist/cli/chunks/witness-chain-MWIG363M.js +0 -2
  299. package/dist/cli/chunks/workflow-orchestrator-B3ECPAFI.js +0 -2
  300. package/dist/optimization/qe-workers.d.ts +0 -193
  301. package/dist/optimization/qe-workers.js +0 -692
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
- 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.26");process.exit(0)}
3
- import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}from"./chunk-RD3CNJWR.js";import{g as K}from"./chunk-HKHRIPXP.js";import"./chunk-GW5T4BSO.js";import"./chunk-A4U4DNPR.js";import"./chunk-FRUDEEZH.js";import"./chunk-VPPXZORB.js";import"./chunk-7T2KT74O.js";import"./chunk-AGBIQXB4.js";import{a as se}from"./chunk-G42KXBBG.js";import"./chunk-QQMGUORN.js";import"./chunk-4QUKBJAS.js";import"./chunk-TU2A5BGA.js";import{f as T,k as j,o as H}from"./chunk-SYQZPNHQ.js";import"./chunk-ANEIDNH7.js";import"./chunk-RSNZQ3MN.js";import"./chunk-F77VZ4IY.js";import{b as ne,d as we}from"./chunk-DBSEDJ7P.js";import"./chunk-SDD3XQ7X.js";import"./chunk-TZ73IAF5.js";import"./chunk-CYPOU765.js";import"./chunk-4I6XGKSB.js";import"./chunk-B3KHJQ34.js";import"./chunk-MW4WEMLE.js";import"./chunk-4ZAOHYFA.js";import"./chunk-OFAXQGU5.js";import"./chunk-2OFL5HSB.js";import"./chunk-ETBVBV2M.js";import"./chunk-BOV44F3Z.js";import"./chunk-RXQX6JNQ.js";import"./chunk-ARLHD5MG.js";import{Command as Be}from"commander";import P from"chalk";import me from"node:path";H();import{randomUUID as B}from"crypto";import x from"chalk";var N="dream-scheduler:hook-state",ce=36e5,de=20,ue=3e5;async function Y(n){try{let e=await n.get(N);if(!e)return{triggered:!1,reason:"no-state"};let t=Date.now(),s=e.lastDreamTime?new Date(e.lastDreamTime).getTime():0,o=t-s;if(o<ue)return{triggered:!1,reason:"too-soon"};let r=o>=ce,a=e.experienceCount>=de;if(!r&&!a)return{triggered:!1,reason:"conditions-not-met"};let c=r?"time-interval":"experience-threshold";console.log(x.dim(`[hooks] Dream trigger: ${c} (${e.experienceCount} experiences, ${Math.round(o/6e4)}min since last dream)`));try{let{getUnifiedMemory:m}=await import("./unified-memory-4M3V7XL6.js"),y=m();if(y.isInitialized()){let I=y.getDatabase().prepare(`SELECT COUNT(*) AS n FROM dream_cycles
2
+ 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.28");process.exit(0)}
3
+ import{a as R,b as oe,c as re}from"./chunk-DQ3FERVR.js";import{a as ae,b as ie}from"./chunk-LKWJUZVH.js";import{g as K}from"./chunk-A77JCFFC.js";import"./chunk-NNYRIYEZ.js";import"./chunk-FUKWABUF.js";import"./chunk-CCZGT2HD.js";import"./chunk-O22BAOMU.js";import"./chunk-7MLACLCT.js";import"./chunk-PHPT6QTF.js";import{a as se}from"./chunk-V7VCP42A.js";import"./chunk-JOSEPQIU.js";import"./chunk-YF5JCM45.js";import"./chunk-SH7IVDWV.js";import{f as T,k as j,o as H}from"./chunk-5RZ26J4J.js";import"./chunk-ZKNO5AR4.js";import"./chunk-4R6DN7IO.js";import"./chunk-PMWIZ7TC.js";import{b as ne,d as we}from"./chunk-ZH2WOQP3.js";import"./chunk-33VVPBAK.js";import"./chunk-5KOR5ZMG.js";import"./chunk-LCSDE5DQ.js";import"./chunk-YLZZZRB7.js";import"./chunk-UYTAAWAO.js";import"./chunk-7GLCWLZL.js";import"./chunk-ZDM6AWU6.js";import"./chunk-CKDW7YFV.js";import"./chunk-B5KYS65U.js";import"./chunk-M3FFEZFJ.js";import"./chunk-SVPX24HJ.js";import"./chunk-GECEU6U3.js";import"./chunk-IVRBWQBU.js";import{Command as Be}from"commander";import P from"chalk";import me from"node:path";H();import{randomUUID as B}from"crypto";import x from"chalk";var N="dream-scheduler:hook-state",ce=36e5,de=20,ue=3e5;async function Y(n){try{let e=await n.get(N);if(!e)return{triggered:!1,reason:"no-state"};let t=Date.now(),s=e.lastDreamTime?new Date(e.lastDreamTime).getTime():0,o=t-s;if(o<ue)return{triggered:!1,reason:"too-soon"};let r=o>=ce,a=e.experienceCount>=de;if(!r&&!a)return{triggered:!1,reason:"conditions-not-met"};let c=r?"time-interval":"experience-threshold";console.log(x.dim(`[hooks] Dream trigger: ${c} (${e.experienceCount} experiences, ${Math.round(o/6e4)}min since last dream)`));try{let{getUnifiedMemory:m}=await import("./unified-memory-XE5LJO5T.js"),y=m();if(y.isInitialized()){let I=y.getDatabase().prepare(`SELECT COUNT(*) AS n FROM dream_cycles
4
4
  WHERE status = 'running'
5
- AND start_time > datetime('now', '-60 seconds')`).get();if(I&&I.n>0)return{triggered:!1,reason:"already-running"}}}catch{}let{createDreamEngine:i}=await import("./dream-R76KD347.js"),{createQEReasoningBank:E}=await import("./qe-reasoning-bank-ZJ56AWO2.js"),d=i({maxDurationMs:1e4,minConceptsRequired:3});await d.initialize();let p=E(n,void 0,{enableLearning:!0,enableGuidance:!1,enableRouting:!1,embeddingDimension:384,useONNXEmbeddings:!0});await p.initialize();let u=await p.searchPatterns("",{limit:100,minConfidence:.3});if(u.success&&u.value.length>0){let m=u.value.map(y=>({id:y.pattern.id,name:y.pattern.name,description:y.pattern.description||`${y.pattern.patternType} pattern`,domain:y.pattern.qeDomain||"learning-optimization",patternType:y.pattern.patternType,confidence:y.pattern.confidence,successRate:y.pattern.successRate||.5}));await d.loadPatternsAsConcepts(m)}let l=await d.dream(1e4),f=0;try{for(let m of l.insights)m.actionable&&m.confidenceScore>=.5&&(await d.applyInsight(m.id)).success&&f++}catch(m){console.error(x.dim(`[hooks] Dream apply: ${m instanceof Error?m.message:"unknown"}`))}return e.lastDreamTime=new Date().toISOString(),e.experienceCount=0,e.totalDreamsThisSession++,await n.set(N,e),await d.close(),{triggered:!0,reason:c,insightsGenerated:l.insights.length,insightsApplied:f}}catch(e){return console.error(x.dim(`[hooks] Dream trigger failed: ${e instanceof Error?e.message:"unknown"}`)),{triggered:!1,reason:"error"}}}async function O(n){try{let e=await n.get(N);return e||(e={lastDreamTime:null,experienceCount:0,sessionStartTime:new Date().toISOString(),totalDreamsThisSession:0}),e.experienceCount++,await n.set(N,e),e.experienceCount}catch{return 0}}async function U(n){try{let{getUnifiedMemory:e}=await import("./unified-memory-4M3V7XL6.js"),t=e();t.isInitialized()||await t.initialize();let{initializeExperienceCapture:s}=await import("./experience-capture-middleware-P4RQW7JV.js");await s();let o=t.getDatabase();try{o.pragma("busy_timeout = 60000")}catch{}let r=`cli-${Date.now()}-${B().slice(0,8)}`,a=n.durationMs||0,c;if(n.success){let i=a>0&&a<5e3?.1:0,E=n.source.includes("post-task")?.1:n.source.includes("post-edit")?.05:0;c=Math.min(.95,.7+i+E)}else{let i=n.source.includes("post-task")?.15:n.source.includes("post-edit")?.1:0;c=Math.min(.6,.3+i)}o.prepare(`
5
+ AND start_time > datetime('now', '-60 seconds')`).get();if(I&&I.n>0)return{triggered:!1,reason:"already-running"}}}catch{}let{createDreamEngine:i}=await import("./dream-P5YCSXOG.js"),{createQEReasoningBank:h}=await import("./qe-reasoning-bank-A2Z7QLTV.js"),d=i({maxDurationMs:1e4,minConceptsRequired:3});await d.initialize();let p=h(n,void 0,{enableLearning:!0,enableGuidance:!1,enableRouting:!1,embeddingDimension:384,useONNXEmbeddings:!0});await p.initialize();let u=await p.searchPatterns("",{limit:100,minConfidence:.3});if(u.success&&u.value.length>0){let m=u.value.map(y=>({id:y.pattern.id,name:y.pattern.name,description:y.pattern.description||`${y.pattern.patternType} pattern`,domain:y.pattern.qeDomain||"learning-optimization",patternType:y.pattern.patternType,confidence:y.pattern.confidence,successRate:y.pattern.successRate||.5}));await d.loadPatternsAsConcepts(m)}let l=await d.dream(1e4),f=0;try{for(let m of l.insights)m.actionable&&m.confidenceScore>=.5&&(await d.applyInsight(m.id)).success&&f++}catch(m){console.error(x.dim(`[hooks] Dream apply: ${m instanceof Error?m.message:"unknown"}`))}return e.lastDreamTime=new Date().toISOString(),e.experienceCount=0,e.totalDreamsThisSession++,await n.set(N,e),await d.close(),{triggered:!0,reason:c,insightsGenerated:l.insights.length,insightsApplied:f}}catch(e){return console.error(x.dim(`[hooks] Dream trigger failed: ${e instanceof Error?e.message:"unknown"}`)),{triggered:!1,reason:"error"}}}async function O(n){try{let e=await n.get(N);return e||(e={lastDreamTime:null,experienceCount:0,sessionStartTime:new Date().toISOString(),totalDreamsThisSession:0}),e.experienceCount++,await n.set(N,e),e.experienceCount}catch{return 0}}async function U(n){try{let{getUnifiedMemory:e}=await import("./unified-memory-XE5LJO5T.js"),t=e();t.isInitialized()||await t.initialize();let{initializeExperienceCapture:s}=await import("./experience-capture-middleware-SQQVSGWT.js");await s();let o=t.getDatabase();try{o.pragma("busy_timeout = 60000")}catch{}let r=`cli-${Date.now()}-${B().slice(0,8)}`,a=n.durationMs||0,c;if(n.success){let i=a>0&&a<5e3?.1:0,h=n.source.includes("post-task")?.1:n.source.includes("post-edit")?.05:0;c=Math.min(.95,.7+i+h)}else{let i=n.source.includes("post-task")?.15:n.source.includes("post-edit")?.1:0;c=Math.min(.6,.3+i)}o.prepare(`
6
6
  INSERT OR REPLACE INTO captured_experiences
7
7
  (id, task, agent, domain, success, quality, duration_ms,
8
8
  started_at, completed_at, source)
9
9
  VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'), ?)
10
- `).run(r,n.task.slice(0,500),n.agent,n.domain,n.success?1:0,c,a,n.source),(async()=>{try{let{computeRealEmbedding:i}=await import("./real-embeddings-BGNTSKHD.js"),E=`${n.domain}: ${n.task}`.slice(0,512),d=await i(E);o.prepare("UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?").run(Buffer.from(new Float32Array(d).buffer),d.length,r)}catch{}})()}catch(e){console.error(x.dim(`[hooks] persistCommandExperience: ${e instanceof Error?e.message:"unknown"}`))}}async function Z(n){let{getUnifiedMemory:e}=await import("./unified-memory-4M3V7XL6.js"),t=e();t.isInitialized()||await t.initialize();let s=t.getDatabase();try{s.pragma("busy_timeout = 60000")}catch{}let o=`exp-${Date.now()}-${B().slice(0,8)}`,r=`${n.agent}:${n.taskId}`,a=n.durationMs??0,c=n.success?1:0,i=a<100?1:a<500?.8:a<2e3?.6:a<5e3?.4:a<1e4?.2:.1,E=.25*c+.325+.1*i,d=null,p=0,u=0,l=s.transaction(()=>{s.prepare(`
10
+ `).run(r,n.task.slice(0,500),n.agent,n.domain,n.success?1:0,c,a,n.source),(async()=>{try{let{computeRealEmbedding:i}=await import("./real-embeddings-Y65TLGVT.js"),h=`${n.domain}: ${n.task}`.slice(0,512),d=await i(h);o.prepare("UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?").run(Buffer.from(new Float32Array(d).buffer),d.length,r)}catch{}})()}catch(e){console.error(x.dim(`[hooks] persistCommandExperience: ${e instanceof Error?e.message:"unknown"}`))}}async function Z(n){let{getUnifiedMemory:e}=await import("./unified-memory-XE5LJO5T.js"),t=e();t.isInitialized()||await t.initialize();let s=t.getDatabase();try{s.pragma("busy_timeout = 60000")}catch{}let o=`exp-${Date.now()}-${B().slice(0,8)}`,r=`${n.agent}:${n.taskId}`,a=n.durationMs??0,c=n.success?1:0,i=a<100?1:a<500?.8:a<2e3?.6:a<5e3?.4:a<1e4?.2:.1,h=.25*c+.325+.1*i,d=null,p=0,u=0,l=s.transaction(()=>{s.prepare(`
11
11
  INSERT INTO captured_experiences
12
12
  (id, task, agent, domain, success, quality, duration_ms,
13
13
  model_tier, started_at, completed_at, source)
14
14
  VALUES (?, ?, ?, ?, ?, ?, ?, NULL, datetime('now'), datetime('now'), ?)
15
- `).run(o,r.slice(0,500),n.agent,n.domain??"general",n.success?1:0,E,a,"cli-hook-post-task"),s.prepare(`
15
+ `).run(o,r.slice(0,500),n.agent,n.domain??"general",n.success?1:0,h,a,"cli-hook-post-task"),s.prepare(`
16
16
  INSERT INTO experience_applications
17
17
  (id, experience_id, task, success, tokens_saved, feedback, applied_at)
18
18
  VALUES (?, ?, ?, ?, ?, ?, datetime('now'))
19
- `).run(`app-${Date.now()}-${B().slice(0,8)}`,o,r,n.success?1:0,Math.round(E*100),`[Patch 060] post-task outcome: ${n.success?"success":"failure"}`);try{let m=s.prepare(`
19
+ `).run(`app-${Date.now()}-${B().slice(0,8)}`,o,r,n.success?1:0,Math.round(h*100),`[Patch 060] post-task outcome: ${n.success?"success":"failure"}`);try{let m=s.prepare(`
20
20
  SELECT key, value FROM kv_store
21
21
  WHERE namespace = 'task-bridge'
22
22
  AND (expires_at IS NULL OR expires_at > strftime('%s','now') * 1000)
@@ -71,11 +71,11 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
71
71
  ORDER BY created_at DESC
72
72
  LIMIT 3
73
73
  )
74
- `).run().changes??0}catch{}});try{l()}catch(f){console.error(x.dim(`[hooks] persistTaskOutcome txn: ${f instanceof Error?f.message:"unknown"}`))}return(async()=>{try{let{computeRealEmbedding:f}=await import("./real-embeddings-BGNTSKHD.js"),m=`${n.domain??"general"}: ${r}`.slice(0,512),y=await f(m);s.prepare("UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?").run(Buffer.from(new Float32Array(y).buffer),y.length,o)}catch{}})(),{experienceId:o,qualityScore:E,bridge:d,stitchedSiblings:p,insightsApplied:u}}async function X(n){try{let{getUnifiedMemory:e}=await import("./unified-memory-4M3V7XL6.js"),t=e();t.isInitialized()||await t.initialize();let s=t.getDatabase();try{s.pragma("busy_timeout = 60000")}catch{}let o=`${n.taskType}|${n.priority}|${n.domain||"any"}|${n.complexityBucket}`,r=n.agent,a=`q-learning:aqe-hook-router:${o}:${r}`,c=n.success?.1:-1,i=.1,E=.9,d=s.prepare(`
74
+ `).run().changes??0}catch{}});try{l()}catch(f){console.error(x.dim(`[hooks] persistTaskOutcome txn: ${f instanceof Error?f.message:"unknown"}`))}return(async()=>{try{let{computeRealEmbedding:f}=await import("./real-embeddings-Y65TLGVT.js"),m=`${n.domain??"general"}: ${r}`.slice(0,512),y=await f(m);s.prepare("UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?").run(Buffer.from(new Float32Array(y).buffer),y.length,o)}catch{}})(),{experienceId:o,qualityScore:h,bridge:d,stitchedSiblings:p,insightsApplied:u}}async function X(n){try{let{getUnifiedMemory:e}=await import("./unified-memory-XE5LJO5T.js"),t=e();t.isInitialized()||await t.initialize();let s=t.getDatabase();try{s.pragma("busy_timeout = 60000")}catch{}let o=`${n.taskType}|${n.priority}|${n.domain||"any"}|${n.complexityBucket}`,r=n.agent,a=`q-learning:aqe-hook-router:${o}:${r}`,c=n.success?.1:-1,i=.1,h=.9,d=s.prepare(`
75
75
  SELECT q_value FROM rl_q_values WHERE id = ?
76
76
  `).get(a),p=d&&typeof d.q_value=="number"?d.q_value:0,u=s.prepare(`
77
77
  SELECT MAX(q_value) AS m FROM rl_q_values WHERE state_key = ?
78
- `).get(o),l=u&&typeof u.m=="number"?u.m:0,f=p+i*(c+E*l-p);s.prepare(`
78
+ `).get(o),l=u&&typeof u.m=="number"?u.m:0,f=p+i*(c+h*l-p);s.prepare(`
79
79
  INSERT INTO rl_q_values
80
80
  (id, algorithm, agent_id, state_key, action_key, q_value, visits, last_reward, domain, created_at, updated_at)
81
81
  VALUES (?, 'q-learning', 'aqe-hook-router', ?, ?, ?, 1, ?, ?, datetime('now'), datetime('now'))
@@ -84,7 +84,7 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
84
84
  visits = visits + 1,
85
85
  last_reward = excluded.last_reward,
86
86
  updated_at = datetime('now')
87
- `).run(a,o,r,f,c,n.domain||"any")}catch(e){console.error(x.dim(`[hooks] q-learning update: ${e instanceof Error?e.message:"unknown"}`))}}async function ee(n){try{let{getUnifiedMemory:e}=await import("./unified-memory-4M3V7XL6.js"),t=e();t.isInitialized()||await t.initialize();let s=t.getDatabase();try{s.pragma("busy_timeout = 60000")}catch{}s.prepare(`
87
+ `).run(a,o,r,f,c,n.domain||"any")}catch(e){console.error(x.dim(`[hooks] q-learning update: ${e instanceof Error?e.message:"unknown"}`))}}async function ee(n){try{let{getUnifiedMemory:e}=await import("./unified-memory-XE5LJO5T.js"),t=e();t.isInitialized()||await t.initialize();let s=t.getDatabase();try{s.pragma("busy_timeout = 60000")}catch{}s.prepare(`
88
88
  UPDATE routing_outcomes
89
89
  SET success = ?, quality_score = ?, duration_ms = ?
90
90
  WHERE id IN (
@@ -95,7 +95,7 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
95
95
  ORDER BY (CASE WHEN used_agent = ? THEN 0 ELSE 1 END), created_at DESC
96
96
  LIMIT 1
97
97
  )
98
- `).run(n.success?1:0,n.qualityScore,n.durationMs,n.agent)}catch(e){console.error(x.dim(`[hooks] routing UPDATE: ${e instanceof Error?e.message:"unknown"}`))}}async function te(){let{getUnifiedMemory:n}=await import("./unified-memory-4M3V7XL6.js"),e=n();e.isInitialized()||await e.initialize();let t=e.getDatabase();try{t.pragma("busy_timeout = 60000")}catch{}let s=new Set(t.prepare("PRAGMA table_info(captured_experiences)").all().map(i=>i.name)),o=[["consolidated_into","TEXT DEFAULT NULL"],["consolidation_count","INTEGER DEFAULT 1"],["quality_updated_at","TEXT DEFAULT NULL"],["reuse_success_count","INTEGER DEFAULT 0"],["reuse_failure_count","INTEGER DEFAULT 0"]];for(let[i,E]of o)s.has(i)||t.exec(`ALTER TABLE captured_experiences ADD COLUMN ${i} ${E}`);let r=t.prepare(`
98
+ `).run(n.success?1:0,n.qualityScore,n.durationMs,n.agent)}catch(e){console.error(x.dim(`[hooks] routing UPDATE: ${e instanceof Error?e.message:"unknown"}`))}}async function te(){let{getUnifiedMemory:n}=await import("./unified-memory-XE5LJO5T.js"),e=n();e.isInitialized()||await e.initialize();let t=e.getDatabase();try{t.pragma("busy_timeout = 60000")}catch{}let s=new Set(t.prepare("PRAGMA table_info(captured_experiences)").all().map(i=>i.name)),o=[["consolidated_into","TEXT DEFAULT NULL"],["consolidation_count","INTEGER DEFAULT 1"],["quality_updated_at","TEXT DEFAULT NULL"],["reuse_success_count","INTEGER DEFAULT 0"],["reuse_failure_count","INTEGER DEFAULT 0"]];for(let[i,h]of o)s.has(i)||t.exec(`ALTER TABLE captured_experiences ADD COLUMN ${i} ${h}`);let r=t.prepare(`
99
99
  SELECT
100
100
  domain,
101
101
  agent,
@@ -111,7 +111,7 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
111
111
  HAVING cnt >= 3 AND avg_quality >= 0.5 AND success_rate >= 0.6
112
112
  ORDER BY avg_quality DESC
113
113
  LIMIT 50
114
- `).all();if(r.length===0)return 0;let{v4:a}=await import("./dist-node-CKTPNPBG.js"),c=0;for(let i of r)try{let E=new Date().toISOString().slice(0,7),d=`${i.agent}-${i.domain}-${E}`,p=t.prepare(`
114
+ `).all();if(r.length===0)return 0;let{v4:a}=await import("./dist-node-3QZ37HLE.js"),c=0;for(let i of r)try{let h=new Date().toISOString().slice(0,7),d=`${i.agent}-${i.domain}-${h}`,p=t.prepare(`
115
115
  SELECT id FROM qe_patterns
116
116
  WHERE qe_domain = ? AND name = ?
117
117
  LIMIT 1
@@ -129,11 +129,11 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
129
129
  confidence, usage_count, success_rate, quality_score, tier,
130
130
  template_json, context_json, created_at, successful_uses
131
131
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), ?)
132
- `).run(u,"workflow",i.domain,i.domain,d,m,l,i.cnt,i.success_rate,f,"short-term",JSON.stringify({type:"workflow",content:`${i.agent} pattern for ${i.domain}`,variables:[]}),JSON.stringify({tags:y,sourceType:"session-consolidation",extractedAt:new Date().toISOString()}),i.successes);let{ensurePatternEmbedding:$}=await import("./embed-and-insert-pattern-2YFFI7IN.js");await $(t,u,d,m,y),c++}t.prepare(`
132
+ `).run(u,"workflow",i.domain,i.domain,d,m,l,i.cnt,i.success_rate,f,"short-term",JSON.stringify({type:"workflow",content:`${i.agent} pattern for ${i.domain}`,variables:[]}),JSON.stringify({tags:y,sourceType:"session-consolidation",extractedAt:new Date().toISOString()}),i.successes);let{ensurePatternEmbedding:$}=await import("./embed-and-insert-pattern-IXQSPD2Q.js");await $(t,u,d,m,y),c++}t.prepare(`
133
133
  UPDATE captured_experiences
134
134
  SET application_count = application_count + 1
135
135
  WHERE domain = ? AND agent = ? AND application_count = 0
136
- `).run(i.domain,i.agent)}catch{}return c}var g={reasoningBank:null,hookRegistry:null,coherenceService:null,sessionId:null,initialized:!1,initializationPromise:null};async function S(){if(g.initializationPromise&&await g.initializationPromise,g.initialized&&g.reasoningBank&&g.hookRegistry)return{reasoningBank:g.reasoningBank,hookRegistry:g.hookRegistry};if(g.initializationPromise=be(),await g.initializationPromise,g.initializationPromise=null,!g.reasoningBank||!g.hookRegistry)throw new Error("Failed to initialize hooks system");return{reasoningBank:g.reasoningBank,hookRegistry:g.hookRegistry}}async function be(){if(!g.initialized)try{let n=T(),e=me.join(n,".agentic-qe"),t=await D(e);try{g.coherenceService=await ae(ie),console.log(P.dim("[hooks] CoherenceService initialized with WASM engines"))}catch(a){console.log(P.dim(`[hooks] CoherenceService WASM unavailable, using fallback: ${a instanceof Error?a.message:"unknown"}`))}g.reasoningBank=K(t,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0,embeddingDimension:384,useONNXEmbeddings:!0},g.coherenceService??void 0);let s=1e4,o=g.reasoningBank.initialize(),r=new Promise((a,c)=>setTimeout(()=>c(new Error("ReasoningBank init timeout")),s));await Promise.race([o,r]);try{let{getSharedRvfDualWriter:a}=await import("./shared-rvf-dual-writer-LEBD3EHA.js"),c=await a();c&&g.reasoningBank.setRvfDualWriter(c)}catch(a){process.env.DEBUG&&console.debug("[hooks] RVF wiring skipped:",a instanceof Error?a.message:a)}g.hookRegistry=re(g.reasoningBank),g.initialized=!0,console.log(P.dim("[hooks] System initialized"))}catch(n){console.warn(P.yellow(`[hooks] Using fallback mode: ${n instanceof Error?n.message:"unknown error"}`));let e=Te();g.reasoningBank=K(e,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0}),g.hookRegistry=new oe,g.hookRegistry.initialize(g.reasoningBank),g.initialized=!0}}function L(n){try{n.pragma("busy_timeout = 60000")}catch{}}async function D(n){let t=new se({sqlite:{path:me.join(n,"memory.db"),walMode:!0,poolSize:3,busyTimeout:6e4},enableFallback:!0,defaultNamespace:"qe-patterns"}),s=t.initialize(),o=new Promise((r,a)=>setTimeout(()=>a(new Error("Backend init timeout")),5e3));return await Promise.race([s,o]),t}function Te(){let n=new Map;return{initialize:async()=>{},dispose:async()=>{n.clear()},get:async e=>{let t=n.get(e);return t?t.value:void 0},set:async(e,t,s)=>{n.set(e,{value:t})},delete:async e=>n.delete(e),has:async e=>n.has(e),search:async(e,t)=>{let s=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&"),o=new RegExp(s.replace(/\*/g,".*"));return Array.from(n.keys()).filter(r=>o.test(r))},vectorSearch:async(e,t)=>[],storeVector:async(e,t,s)=>{},count:async e=>{let t=0,s=`${e}:`;for(let o of n.keys())o.startsWith(s)&&t++;return t},hasCodeIntelligenceIndex:async()=>{let e="code-intelligence:kg:";for(let t of n.keys())if(t.startsWith(e))return!0;return!1}}}function k(n){console.log(JSON.stringify(n,null,2))}function v(n){console.log(P.green("\u2713"),n)}function _(n){console.error(P.red("\u2717"),n)}function W(n){if(n.length===0){console.log(P.dim(" No specific guidance"));return}n.forEach((e,t)=>{console.log(P.cyan(` ${t+1}.`),e)})}async function Q(n=500){return process.stdin.isTTY?"":new Promise(e=>{let t="",s=setTimeout(()=>{process.stdin.removeAllListeners(),process.stdin.pause(),e(t)},n);process.stdin.setEncoding("utf8"),process.stdin.on("data",o=>{t+=o}),process.stdin.on("end",()=>{clearTimeout(s),e(t)}),process.stdin.on("error",()=>{clearTimeout(s),e(t)}),process.stdin.resume()})}function le(n){if(!n.trim())return"";let e;try{e=JSON.parse(n)}catch{return""}let t=e.tool_input,s=e.toolInput,o=[t?.file_path,t?.filePath,s?.file_path,s?.filePath,e.file_path,e.filePath];for(let r of o)if(typeof r=="string"&&r.trim())return r;return""}import C from"chalk";import Re from"node:path";H();function ge(n){n.command("pre-edit").description("Get context and guidance before editing a file").requiredOption("-f, --file <path>","File path to edit").option("-o, --operation <type>","Operation type: create, update, delete, refactor","update").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),o=(await t.emit(R.PreTestGeneration,{targetFile:e.file,testType:"unit",operation:e.operation}))[0]||{success:!0,guidance:[],routing:null};if(e.json){let r=o.guidance||[],c=[o.routing?.recommendedAgent?`Recommended agent: ${o.routing.recommendedAgent} (${(o.routing.confidence*100).toFixed(0)}% confidence).`:"",...r.map(i=>i)].filter(Boolean).join(" ");k({hookSpecificOutput:{hookEventName:"PreToolUse",additionalContext:c||void 0},file:e.file,operation:e.operation,patterns:o.routing?.patterns?.length||0})}else console.log(C.bold(`
136
+ `).run(i.domain,i.agent)}catch{}return c}var g={reasoningBank:null,hookRegistry:null,coherenceService:null,sessionId:null,initialized:!1,initializationPromise:null};async function S(){if(g.initializationPromise&&await g.initializationPromise,g.initialized&&g.reasoningBank&&g.hookRegistry)return{reasoningBank:g.reasoningBank,hookRegistry:g.hookRegistry};if(g.initializationPromise=be(),await g.initializationPromise,g.initializationPromise=null,!g.reasoningBank||!g.hookRegistry)throw new Error("Failed to initialize hooks system");return{reasoningBank:g.reasoningBank,hookRegistry:g.hookRegistry}}async function be(){if(!g.initialized)try{let n=T(),e=me.join(n,".agentic-qe"),t=await D(e);try{g.coherenceService=await ae(ie),console.log(P.dim("[hooks] CoherenceService initialized with WASM engines"))}catch(a){console.log(P.dim(`[hooks] CoherenceService WASM unavailable, using fallback: ${a instanceof Error?a.message:"unknown"}`))}g.reasoningBank=K(t,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0,embeddingDimension:384,useONNXEmbeddings:!0},g.coherenceService??void 0);let s=1e4,o=new AbortController,r=setTimeout(()=>o.abort(new Error("ReasoningBank init timeout")),s);try{await g.reasoningBank.initialize({signal:o.signal})}finally{clearTimeout(r)}try{let{getSharedRvfDualWriter:a}=await import("./shared-rvf-dual-writer-LEY65TEP.js"),c=await a();c&&g.reasoningBank.setRvfDualWriter(c)}catch(a){process.env.DEBUG&&console.debug("[hooks] RVF wiring skipped:",a instanceof Error?a.message:a)}g.hookRegistry=re(g.reasoningBank),g.initialized=!0,console.log(P.dim("[hooks] System initialized"))}catch(n){console.warn(P.yellow(`[hooks] Using fallback mode: ${n instanceof Error?n.message:"unknown error"}`));let e=Te();g.reasoningBank=K(e,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0}),g.hookRegistry=new oe,g.hookRegistry.initialize(g.reasoningBank),g.initialized=!0}}function L(n){try{n.pragma("busy_timeout = 60000")}catch{}}async function D(n){let t=new se({sqlite:{path:me.join(n,"memory.db"),walMode:!0,poolSize:3,busyTimeout:6e4},enableFallback:!0,defaultNamespace:"qe-patterns"}),s=!1,o=t.initialize(),r=new Promise((a,c)=>setTimeout(()=>{s=!0,c(new Error("Backend init timeout"))},5e3));try{await Promise.race([o,r])}catch(a){throw s&&o.then(()=>t.dispose()).catch(()=>{}),a}return t}function Te(){let n=new Map;return{initialize:async()=>{},dispose:async()=>{n.clear()},get:async e=>{let t=n.get(e);return t?t.value:void 0},set:async(e,t,s)=>{n.set(e,{value:t})},delete:async e=>n.delete(e),has:async e=>n.has(e),search:async(e,t)=>{let s=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&"),o=new RegExp(s.replace(/\*/g,".*"));return Array.from(n.keys()).filter(r=>o.test(r))},vectorSearch:async(e,t)=>[],storeVector:async(e,t,s)=>{},count:async e=>{let t=0,s=`${e}:`;for(let o of n.keys())o.startsWith(s)&&t++;return t},hasCodeIntelligenceIndex:async()=>{let e="code-intelligence:kg:";for(let t of n.keys())if(t.startsWith(e))return!0;return!1}}}function k(n){console.log(JSON.stringify(n,null,2))}function v(n){console.log(P.green("\u2713"),n)}function _(n){console.error(P.red("\u2717"),n)}function W(n){if(n.length===0){console.log(P.dim(" No specific guidance"));return}n.forEach((e,t)=>{console.log(P.cyan(` ${t+1}.`),e)})}async function Q(n=500){return process.stdin.isTTY?"":new Promise(e=>{let t="",s=setTimeout(()=>{process.stdin.removeAllListeners(),process.stdin.pause(),e(t)},n);process.stdin.setEncoding("utf8"),process.stdin.on("data",o=>{t+=o}),process.stdin.on("end",()=>{clearTimeout(s),e(t)}),process.stdin.on("error",()=>{clearTimeout(s),e(t)}),process.stdin.resume()})}function le(n){if(!n.trim())return"";let e;try{e=JSON.parse(n)}catch{return""}let t=e.tool_input,s=e.toolInput,o=[t?.file_path,t?.filePath,s?.file_path,s?.filePath,e.file_path,e.filePath];for(let r of o)if(typeof r=="string"&&r.trim())return r;return""}import C from"chalk";import Re from"node:path";H();function ge(n){n.command("pre-edit").description("Get context and guidance before editing a file").requiredOption("-f, --file <path>","File path to edit").option("-o, --operation <type>","Operation type: create, update, delete, refactor","update").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),o=(await t.emit(R.PreTestGeneration,{targetFile:e.file,testType:"unit",operation:e.operation}))[0]||{success:!0,guidance:[],routing:null};if(e.json){let r=o.guidance||[],c=[o.routing?.recommendedAgent?`Recommended agent: ${o.routing.recommendedAgent} (${(o.routing.confidence*100).toFixed(0)}% confidence).`:"",...r.map(i=>i)].filter(Boolean).join(" ");k({hookSpecificOutput:{hookEventName:"PreToolUse",additionalContext:c||void 0},file:e.file,operation:e.operation,patterns:o.routing?.patterns?.length||0})}else console.log(C.bold(`
137
137
  \u{1F4DD} Pre-Edit Analysis`)),console.log(C.dim(` File: ${e.file}`)),console.log(C.dim(` Operation: ${e.operation}`)),o.routing&&(console.log(C.bold(`
138
138
  \u{1F3AF} Recommended Agent:`),C.cyan(o.routing.recommendedAgent)),console.log(C.dim(` Confidence: ${(o.routing.confidence*100).toFixed(1)}%`))),console.log(C.bold(`
139
139
  \u{1F4A1} Guidance:`)),W(o.guidance||[]);return}catch(t){throw _(`pre-edit failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("post-edit").description("Record editing outcome for pattern learning").requiredOption("-f, --file <path>","File path that was edited").option("--success","Edit was successful").option("--failure","Edit failed").option("--pattern-id <id>","Pattern ID that was applied").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),s=e.success||!e.failure,o=e.file||"";if(!o.trim())try{let u=await Q();o=le(u)}catch{}let r=o.split("/").pop()||"unknown",c=/\.(test|spec)\.(ts|js|tsx|jsx)$/.test(r)?"test-generation":"code-intelligence",i=e.patternId||`edit:${c}:${r}`,d=(await t.emit(R.PostTestGeneration,{targetFile:o,success:s,patternId:i,generatedTests:null,testCount:0}))[0]||{success:!0,patternsLearned:0};try{let{reasoningBank:u}=await S();await u.recordOutcome({patternId:i,success:s,metrics:{executionTimeMs:0},feedback:`Edit ${s?"succeeded":"failed"}: ${o}`})}catch{}try{await U({task:`edit: ${o}`,agent:"cli-hook",domain:c,success:s,source:"cli-hook-post-edit"})}catch{}let p=!1;try{let u=T(),l=Re.join(u,".agentic-qe"),f=await D(l);await O(f)}catch{}e.json?k({success:!0,file:o,editSuccess:s,patternsLearned:d.patternsLearned||0,dreamTriggered:p}):(v(`Recorded edit outcome for ${o||"(unknown file)"}`),d.patternsLearned&&console.log(C.green(` Patterns learned: ${d.patternsLearned}`)));return}catch(t){throw _(`post-edit failed: ${t instanceof Error?t.message:"unknown"}`),t}})}H();import{randomUUID as Ae}from"crypto";import w from"chalk";import De from"node:path";function ve(n){if(!n.trim())return"";let e;try{e=JSON.parse(n)}catch{return n.trim()}let t=[e.prompt,e.user_prompt,e.command,e.tool_input?.prompt,e.tool_input?.description,e.toolInput?.prompt,e.toolInput?.description];for(let s of t)if(typeof s=="string"&&s.trim())return s;return""}function pe(n){n.command("route").description("Route a task to the optimal QE agent").option("-t, --task <description>","Task description (falls back to stdin event JSON)").option("-d, --domain <domain>","Target QE domain hint").option("-c, --capabilities <caps...>","Required capabilities").option("--json","Output as JSON").action(async e=>{try{let t=e.task??"";if(!t.trim()){let c=await Q();t=ve(c)}if(!t.trim())throw new Error("No task provided. Pass --task <description> or pipe a Claude Code hook event JSON to stdin.");let{reasoningBank:s}=await S(),o={task:t,domain:e.domain,capabilities:e.capabilities},r=await s.routeTask(o);if(!r.success)throw new Error(r.error.message);let a=r.value;e.json?k({recommendedAgent:a.recommendedAgent,confidence:a.confidence,alternatives:a.alternatives,domains:a.domains,patternCount:a.patterns.length,guidance:a.guidance,reasoning:a.reasoning}):(console.log(w.bold(`
@@ -142,7 +142,7 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
142
142
  \u{1F504} Alternatives:`)),a.alternatives.forEach(c=>{console.log(w.dim(` - ${c.agent}: ${(c.score*100).toFixed(1)}%`))})),console.log(w.bold(`
143
143
  \u{1F4C2} Detected Domains:`),a.domains.join(", ")),console.log(w.bold(`
144
144
  \u{1F4A1} Guidance:`)),W(a.guidance),console.log(w.bold(`
145
- \u{1F4D6} Reasoning:`),w.dim(a.reasoning)));try{let{getUnifiedMemory:c}=await import("./unified-memory-4M3V7XL6.js"),i=c();i.isInitialized()||await i.initialize();let E=i.getDatabase();L(E);let d=`route-${Date.now()}-${Ae().slice(0,8)}`,p=a.confidence<.5;E.prepare(`
145
+ \u{1F4D6} Reasoning:`),w.dim(a.reasoning)));try{let{getUnifiedMemory:c}=await import("./unified-memory-XE5LJO5T.js"),i=c();i.isInitialized()||await i.initialize();let h=i.getDatabase();L(h);let d=`route-${Date.now()}-${Ae().slice(0,8)}`,p=a.confidence<.5;h.prepare(`
146
146
  INSERT OR REPLACE INTO routing_outcomes (
147
147
  id, task_json, decision_json, used_agent,
148
148
  followed_recommendation, success, quality_score,
@@ -167,19 +167,19 @@ import{a as R,b as oe,c as re}from"./chunk-CMFRBO4N.js";import{a as ae,b as ie}f
167
167
  WHERE quality_score = -1
168
168
  AND task_json NOT LIKE '%"taskId"%'
169
169
  AND created_at < datetime('now', '-300 seconds')
170
- `).run();e.json?k({success:!0,resolved:a.changes>0,staleSwept:c.changes,qualityScore:s,turnSuccess:t}):c.changes>0&&console.log(w.dim(`[hooks] post-route: swept ${c.changes} stale sentinel(s)`));return}catch(t){e.json?k({success:!1,error:t instanceof Error?t.message:"unknown"}):console.error(w.dim(`[hooks] post-route: ${t instanceof Error?t.message:"unknown"}`));return}})}import h from"chalk";we();function fe(n){n.command("stats").description("Display hooks system statistics").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=await t.getStats();if(e.json)k(s);else{console.log(h.bold(`
170
+ `).run();e.json?k({success:!0,resolved:a.changes>0,staleSwept:c.changes,qualityScore:s,turnSuccess:t}):c.changes>0&&console.log(w.dim(`[hooks] post-route: swept ${c.changes} stale sentinel(s)`));return}catch(t){e.json?k({success:!1,error:t instanceof Error?t.message:"unknown"}):console.error(w.dim(`[hooks] post-route: ${t instanceof Error?t.message:"unknown"}`));return}})}import E from"chalk";we();function fe(n){n.command("stats").description("Display hooks system statistics").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=await t.getStats();if(e.json)k(s);else{console.log(E.bold(`
171
171
  \u{1F4CA} Hooks System Statistics
172
- `)),console.log(h.bold("Patterns:")),console.log(` Total: ${h.cyan(s.totalPatterns)}`),console.log(` Short-term: ${s.patternStoreStats.byTier.shortTerm}`),console.log(` Long-term: ${s.patternStoreStats.byTier.longTerm}`),console.log(h.bold(`
173
- By Domain:`));for(let[o,r]of Object.entries(s.byDomain))r>0&&console.log(` ${o}: ${r}`);console.log(h.bold(`
174
- Routing:`)),console.log(` Requests: ${s.routingRequests}`),console.log(` Avg Confidence: ${(s.avgRoutingConfidence*100).toFixed(1)}%`),console.log(h.bold(`
175
- Learning:`)),console.log(` Outcomes: ${s.learningOutcomes}`),console.log(` Success Rate: ${(s.patternSuccessRate*100).toFixed(1)}%`),console.log(h.bold(`
176
- Search Performance:`)),console.log(` Operations: ${s.patternStoreStats.searchOperations}`),console.log(` Avg Latency: ${s.patternStoreStats.avgSearchLatencyMs.toFixed(2)}ms`),console.log(` HNSW Native: ${s.patternStoreStats.hnswStats.nativeAvailable?"\u2713":"\u2717"}`)}}catch(t){throw _(`stats failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("list").description("List all registered QE hook events").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),s=t.getRegisteredEvents();if(e.json)k({events:s,totalEvents:Object.keys(R).length,registeredEvents:s.length});else{console.log(h.bold(`
172
+ `)),console.log(E.bold("Patterns:")),console.log(` Total: ${E.cyan(s.totalPatterns)}`),console.log(` Short-term: ${s.patternStoreStats.byTier.shortTerm}`),console.log(` Long-term: ${s.patternStoreStats.byTier.longTerm}`),console.log(E.bold(`
173
+ By Domain:`));for(let[o,r]of Object.entries(s.byDomain))r>0&&console.log(` ${o}: ${r}`);console.log(E.bold(`
174
+ Routing:`)),console.log(` Requests: ${s.routingRequests}`),console.log(` Avg Confidence: ${(s.avgRoutingConfidence*100).toFixed(1)}%`),console.log(E.bold(`
175
+ Learning:`)),console.log(` Outcomes: ${s.learningOutcomes}`),console.log(` Success Rate: ${(s.patternSuccessRate*100).toFixed(1)}%`),console.log(E.bold(`
176
+ Search Performance:`)),console.log(` Operations: ${s.patternStoreStats.searchOperations}`),console.log(` Avg Latency: ${s.patternStoreStats.avgSearchLatencyMs.toFixed(2)}ms`),console.log(` HNSW Native: ${s.patternStoreStats.hnswStats.nativeAvailable?"\u2713":"\u2717"}`)}}catch(t){throw _(`stats failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("list").description("List all registered QE hook events").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),s=t.getRegisteredEvents();if(e.json)k({events:s,totalEvents:Object.keys(R).length,registeredEvents:s.length});else{console.log(E.bold(`
177
177
  \u{1F4CB} Registered QE Hook Events
178
- `)),console.log(h.bold("All Available Events:"));for(let[o,r]of Object.entries(R)){let c=s.includes(r)?h.green("\u2713"):h.dim("\u25CB");console.log(` ${c} ${o}: ${h.dim(r)}`)}console.log(h.dim(`
179
- Registered: ${s.length}/${Object.keys(R).length}`))}}catch(t){throw _(`list failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("emit").description("Emit a QE hook event").requiredOption("-e, --event <name>","Event name (e.g., qe:pattern-applied)").option("-d, --data <json>","Event data as JSON","{}").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),s;try{s=ne(e.data)}catch{throw new Error(`Invalid JSON data: ${e.data}`)}let o=await t.emit(e.event,s);e.json?k({event:e.event,results:o}):(console.log(h.bold(`
180
- \u{1F4E1} Hook Event Emitted`)),console.log(h.dim(` Event: ${e.event}`)),console.log(h.dim(` Handlers: ${o.length}`)),o.forEach((r,a)=>{let c=r.success?h.green("\u2713"):h.red("\u2717");console.log(` ${c} Handler ${a+1}: ${r.success?"success":r.error}`),r.patternsLearned&&console.log(h.green(` Patterns learned: ${r.patternsLearned}`))}))}catch(t){throw _(`emit failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("learn").description("Store a new pattern in the reasoning bank").requiredOption("-n, --name <name>","Pattern name").requiredOption("-d, --description <desc>","Pattern description").option("-t, --type <type>","Pattern type","test-template").option("--domain <domain>","QE domain").option("--tags <tags...>","Pattern tags").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=await t.storePattern({patternType:e.type,name:e.name,description:e.description,template:{type:"prompt",content:e.description,variables:[]},context:{tags:e.tags||[]}});if(!s.success)throw new Error(s.error.message);let o=s.value;e.json?k({success:!0,pattern:{id:o.id,name:o.name,type:o.patternType,domain:o.qeDomain}}):(v(`Pattern stored: ${o.name}`),console.log(h.dim(` ID: ${o.id}`)),console.log(h.dim(` Domain: ${o.qeDomain}`)),console.log(h.dim(` Tier: ${o.tier}`)))}catch(t){throw _(`learn failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("search").description("Search for patterns in the reasoning bank").requiredOption("-q, --query <query>","Search query").option("-l, --limit <n>","Maximum results","10").option("-d, --domain <domain>","Filter by domain").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=await t.searchPatterns(e.query,{limit:parseInt(e.limit,10),domain:e.domain});if(!s.success)throw new Error(s.error.message);let o=s.value;e.json?k({query:e.query,total:o.length,patterns:o.map(r=>({id:r.pattern.id,name:r.pattern.name,score:r.score,domain:r.pattern.qeDomain,matchType:r.matchType}))}):(console.log(h.bold(`
178
+ `)),console.log(E.bold("All Available Events:"));for(let[o,r]of Object.entries(R)){let c=s.includes(r)?E.green("\u2713"):E.dim("\u25CB");console.log(` ${c} ${o}: ${E.dim(r)}`)}console.log(E.dim(`
179
+ Registered: ${s.length}/${Object.keys(R).length}`))}}catch(t){throw _(`list failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("emit").description("Emit a QE hook event").requiredOption("-e, --event <name>","Event name (e.g., qe:pattern-applied)").option("-d, --data <json>","Event data as JSON","{}").option("--json","Output as JSON").action(async e=>{try{let{hookRegistry:t}=await S(),s;try{s=ne(e.data)}catch{throw new Error(`Invalid JSON data: ${e.data}`)}let o=await t.emit(e.event,s);e.json?k({event:e.event,results:o}):(console.log(E.bold(`
180
+ \u{1F4E1} Hook Event Emitted`)),console.log(E.dim(` Event: ${e.event}`)),console.log(E.dim(` Handlers: ${o.length}`)),o.forEach((r,a)=>{let c=r.success?E.green("\u2713"):E.red("\u2717");console.log(` ${c} Handler ${a+1}: ${r.success?"success":r.error}`),r.patternsLearned&&console.log(E.green(` Patterns learned: ${r.patternsLearned}`))}))}catch(t){throw _(`emit failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("learn").description("Store a new pattern in the reasoning bank").requiredOption("-n, --name <name>","Pattern name").requiredOption("-d, --description <desc>","Pattern description").option("-t, --type <type>","Pattern type","test-template").option("--domain <domain>","QE domain").option("--tags <tags...>","Pattern tags").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=await t.storePattern({patternType:e.type,name:e.name,description:e.description,template:{type:"prompt",content:e.description,variables:[]},context:{tags:e.tags||[]}});if(!s.success)throw new Error(s.error.message);let o=s.value;e.json?k({success:!0,pattern:{id:o.id,name:o.name,type:o.patternType,domain:o.qeDomain}}):(v(`Pattern stored: ${o.name}`),console.log(E.dim(` ID: ${o.id}`)),console.log(E.dim(` Domain: ${o.qeDomain}`)),console.log(E.dim(` Tier: ${o.tier}`)))}catch(t){throw _(`learn failed: ${t instanceof Error?t.message:"unknown"}`),t}}),n.command("search").description("Search for patterns in the reasoning bank").requiredOption("-q, --query <query>","Search query").option("-l, --limit <n>","Maximum results","10").option("-d, --domain <domain>","Filter by domain").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=await t.searchPatterns(e.query,{limit:parseInt(e.limit,10),domain:e.domain});if(!s.success)throw new Error(s.error.message);let o=s.value;e.json?k({query:e.query,total:o.length,patterns:o.map(r=>({id:r.pattern.id,name:r.pattern.name,score:r.score,domain:r.pattern.qeDomain,matchType:r.matchType}))}):(console.log(E.bold(`
181
181
  \u{1F50D} Search Results for "${e.query}"
182
- `)),o.length===0?console.log(h.dim(" No patterns found")):o.forEach((r,a)=>{console.log(`${h.cyan(`${a+1}.`)} ${r.pattern.name} ${h.dim(`(${(r.score*100).toFixed(1)}%)`)}`),console.log(h.dim(` Domain: ${r.pattern.qeDomain}`)),console.log(h.dim(` Match: ${r.matchType}`)),console.log(h.dim(` ID: ${r.pattern.id}`)),console.log()}),console.log(h.dim(`Found ${o.length} pattern(s)`)))}catch(t){throw _(`search failed: ${t instanceof Error?t.message:"unknown"}`),t}})}H();import F from"chalk";import $e from"node:path";function ke(n){n.command("session-start").description("Initialize session state when Claude Code session starts").option("-s, --session-id <id>","Session ID").option("--json","Output as JSON").action(async e=>{try{let t=e.sessionId||`session-${Date.now()}`;g.sessionId=t;let{reasoningBank:s}=await S(),o=await s.getStats(),r=T(),a=$e.join(r,".agentic-qe"),c=await D(a),i=await c.get(N),E=!i||!i.sessionStartTime;i?(i.sessionStartTime=new Date().toISOString(),i.totalDreamsThisSession=0):i={lastDreamTime:null,experienceCount:0,sessionStartTime:new Date().toISOString(),totalDreamsThisSession:0},await c.set(N,i);let d=[];d.push(`AQE Learning: ${o.totalPatterns} patterns loaded`);let p=Object.entries(o.byDomain).filter(([,l])=>l>0).sort(([,l],[,f])=>f-l).slice(0,5);p.length>0&&d.push(`Top domains: ${p.map(([l,f])=>`${l}(${f})`).join(", ")}`),o.patternSuccessRate>0&&d.push(`Pattern success rate: ${(o.patternSuccessRate*100).toFixed(0)}%`),o.routingRequests>0&&d.push(`Routing confidence: ${(o.avgRoutingConfidence*100).toFixed(0)}% across ${o.routingRequests} requests`);let u=d.join(". ")+".";e.json?k({hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:u},sessionId:t,initialized:!0,patternsLoaded:o.totalPatterns,dreamScheduler:{enabled:!0,lastDreamTime:i.lastDreamTime,pendingExperiences:i.experienceCount}}):(v(`Session started: ${t}`),console.log(F.dim(` Patterns loaded: ${o.totalPatterns}`)),console.log(F.dim(` Dream scheduler: enabled (${i.experienceCount} pending experiences)`)));return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}}),n.command("session-end").description("Save session state when Claude Code session ends").option("--save-state","Save learning state to disk").option("--export-metrics","Export session metrics").option("--json","Output as JSON").action(async e=>{try{let t=g.sessionId||"unknown",s=null;if(g.initialized&&g.reasoningBank)try{s=await g.reasoningBank.getStats()}catch{}let o=0;try{o=await te()}catch{}if(e.json){let r=s?`Session complete: ${s.totalPatterns} patterns, ${s.routingRequests} routings, ${(s.patternSuccessRate*100).toFixed(0)}% success rate`:"Session complete";k({continue:!0,sessionId:t,stateSaved:e.saveState||!1,metricsExported:e.exportMetrics||!1,patternsConsolidated:o,finalStats:s?{patternsLearned:s.totalPatterns,routingRequests:s.routingRequests,successRate:s.patternSuccessRate}:null})}else v(`Session ended: ${t}`),s&&(console.log(F.dim(` Patterns: ${s.totalPatterns}`)),console.log(F.dim(` Routing requests: ${s.routingRequests}`))),o>0&&console.log(F.dim(` Patterns consolidated: ${o}`));return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}})}import{createHash as xe,randomUUID as Oe}from"node:crypto";import b from"chalk";import Ie from"node:path";H();var Ne="task-bridge",Pe=6e5,ye=.5;function Ce(n){let e=n.toLowerCase();return/\bgenerate[- ]?test|\btest[- ]?gen|\bgenerate.+spec/.test(e)?"test-generation":/\bcoverage|\banalyze.+cover/.test(e)?"coverage-analysis":/\bquality|\bassess|\baudit/.test(e)?"quality-assessment":/\bsecurity|\bvulnerab|\bcompliance/.test(e)?"security-compliance":/\bdefect|\bbug|\bdiagnos/.test(e)?"defect-intelligence":/\brequirement|\bspec\b/.test(e)?"requirements-validation":/\brefactor|\brewrite|\boptim/.test(e)?"refactoring":/\btest|\brun.+test/.test(e)?"test-execution":"unknown"}function qe(n){return xe("sha256").update(n).digest("hex").slice(0,16)}function Ee(n){n.command("pre-task").description("Get context and guidance before spawning a Task agent").option("--task-id <id>","Task identifier").option("-d, --description <desc>","Task description").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=null;if(e.description){let d=await t.routeTask({task:e.description});d.success&&(s=d.value)}let o=(s?.patterns??[]).slice(0,5).map(d=>d?.id).filter(d=>typeof d=="string"),r=null,a=[],c=0,i=null;try{let d=j();d.isInitialized()||await d.initialize();let p=d.getDatabase();L(p);try{let u=p.prepare(`
182
+ `)),o.length===0?console.log(E.dim(" No patterns found")):o.forEach((r,a)=>{console.log(`${E.cyan(`${a+1}.`)} ${r.pattern.name} ${E.dim(`(${(r.score*100).toFixed(1)}%)`)}`),console.log(E.dim(` Domain: ${r.pattern.qeDomain}`)),console.log(E.dim(` Match: ${r.matchType}`)),console.log(E.dim(` ID: ${r.pattern.id}`)),console.log()}),console.log(E.dim(`Found ${o.length} pattern(s)`)))}catch(t){throw _(`search failed: ${t instanceof Error?t.message:"unknown"}`),t}})}H();import F from"chalk";import $e from"node:path";function ke(n){n.command("session-start").description("Initialize session state when Claude Code session starts").option("-s, --session-id <id>","Session ID").option("--json","Output as JSON").action(async e=>{try{let t=e.sessionId||`session-${Date.now()}`;g.sessionId=t;let{reasoningBank:s}=await S(),o=await s.getStats(),r=T(),a=$e.join(r,".agentic-qe"),c=await D(a),i=await c.get(N),h=!i||!i.sessionStartTime;i?(i.sessionStartTime=new Date().toISOString(),i.totalDreamsThisSession=0):i={lastDreamTime:null,experienceCount:0,sessionStartTime:new Date().toISOString(),totalDreamsThisSession:0},await c.set(N,i);let d=[];d.push(`AQE Learning: ${o.totalPatterns} patterns loaded`);let p=Object.entries(o.byDomain).filter(([,l])=>l>0).sort(([,l],[,f])=>f-l).slice(0,5);p.length>0&&d.push(`Top domains: ${p.map(([l,f])=>`${l}(${f})`).join(", ")}`),o.patternSuccessRate>0&&d.push(`Pattern success rate: ${(o.patternSuccessRate*100).toFixed(0)}%`),o.routingRequests>0&&d.push(`Routing confidence: ${(o.avgRoutingConfidence*100).toFixed(0)}% across ${o.routingRequests} requests`);let u=d.join(". ")+".";e.json?k({hookSpecificOutput:{hookEventName:"SessionStart",additionalContext:u},sessionId:t,initialized:!0,patternsLoaded:o.totalPatterns,dreamScheduler:{enabled:!0,lastDreamTime:i.lastDreamTime,pendingExperiences:i.experienceCount}}):(v(`Session started: ${t}`),console.log(F.dim(` Patterns loaded: ${o.totalPatterns}`)),console.log(F.dim(` Dream scheduler: enabled (${i.experienceCount} pending experiences)`)));return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}}),n.command("session-end").description("Save session state when Claude Code session ends").option("--save-state","Save learning state to disk").option("--export-metrics","Export session metrics").option("--json","Output as JSON").action(async e=>{try{let t=g.sessionId||"unknown",s=null;if(g.initialized&&g.reasoningBank)try{s=await g.reasoningBank.getStats()}catch{}let o=0;try{o=await te()}catch{}if(e.json){let r=s?`Session complete: ${s.totalPatterns} patterns, ${s.routingRequests} routings, ${(s.patternSuccessRate*100).toFixed(0)}% success rate`:"Session complete";k({continue:!0,sessionId:t,stateSaved:e.saveState||!1,metricsExported:e.exportMetrics||!1,patternsConsolidated:o,finalStats:s?{patternsLearned:s.totalPatterns,routingRequests:s.routingRequests,successRate:s.patternSuccessRate}:null})}else v(`Session ended: ${t}`),s&&(console.log(F.dim(` Patterns: ${s.totalPatterns}`)),console.log(F.dim(` Routing requests: ${s.routingRequests}`))),o>0&&console.log(F.dim(` Patterns consolidated: ${o}`));return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}})}import{createHash as xe,randomUUID as Oe}from"node:crypto";import b from"chalk";import Ie from"node:path";H();var Ne="task-bridge",Pe=6e5,ye=.5;function Ce(n){let e=n.toLowerCase();return/\bgenerate[- ]?test|\btest[- ]?gen|\bgenerate.+spec/.test(e)?"test-generation":/\bcoverage|\banalyze.+cover/.test(e)?"coverage-analysis":/\bquality|\bassess|\baudit/.test(e)?"quality-assessment":/\bsecurity|\bvulnerab|\bcompliance/.test(e)?"security-compliance":/\bdefect|\bbug|\bdiagnos/.test(e)?"defect-intelligence":/\brequirement|\bspec\b/.test(e)?"requirements-validation":/\brefactor|\brewrite|\boptim/.test(e)?"refactoring":/\btest|\brun.+test/.test(e)?"test-execution":"unknown"}function qe(n){return xe("sha256").update(n).digest("hex").slice(0,16)}function he(n){n.command("pre-task").description("Get context and guidance before spawning a Task agent").option("--task-id <id>","Task identifier").option("-d, --description <desc>","Task description").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await S(),s=null;if(e.description){let d=await t.routeTask({task:e.description});d.success&&(s=d.value)}let o=(s?.patterns??[]).slice(0,5).map(d=>d?.id).filter(d=>typeof d=="string"),r=null,a=[],c=0,i=null;try{let d=j();d.isInitialized()||await d.initialize();let p=d.getDatabase();L(p);try{let u=p.prepare(`
183
183
  SELECT used_agent AS agent,
184
184
  ROUND(AVG(quality_score), 3) AS avgQuality,
185
185
  COUNT(*) AS n
@@ -208,15 +208,15 @@ Registered: ${s.length}/${Object.keys(R).length}`))}}catch(t){throw _(`list fail
208
208
  followed_recommendation, success, quality_score,
209
209
  duration_ms, error
210
210
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
211
- `).run(l,JSON.stringify({description:e.description,taskId:u}),JSON.stringify({recommended:s.recommendedAgent,confidence:s.confidence,alternatives:s.alternatives,lowConfidence:f}),s.recommendedAgent,1,0,-1,0,f?"low-confidence":null)}catch(u){console.error(b.dim(`[hooks] pre-task sentinel: ${u instanceof Error?u.message:"unknown"}`))}}catch(d){console.error(b.dim(`[hooks] pre-task memory: ${d instanceof Error?d.message:"unknown"}`))}let E=s?s.confidence<ye:!1;e.json?k({success:!0,taskId:e.taskId,description:e.description,recommendedAgent:s?.recommendedAgent,confidence:s?.confidence,guidance:s?.guidance||[],selectedPatternIds:o,historicalBest:r,priorVerdicts:a,estimatedTokenSavings:c,lowConfidence:E,bridgeKey:i}):(console.log(b.bold(`
211
+ `).run(l,JSON.stringify({description:e.description,taskId:u}),JSON.stringify({recommended:s.recommendedAgent,confidence:s.confidence,alternatives:s.alternatives,lowConfidence:f}),s.recommendedAgent,1,0,-1,0,f?"low-confidence":null)}catch(u){console.error(b.dim(`[hooks] pre-task sentinel: ${u instanceof Error?u.message:"unknown"}`))}}catch(d){console.error(b.dim(`[hooks] pre-task memory: ${d instanceof Error?d.message:"unknown"}`))}let h=s?s.confidence<ye:!1;e.json?k({success:!0,taskId:e.taskId,description:e.description,recommendedAgent:s?.recommendedAgent,confidence:s?.confidence,guidance:s?.guidance||[],selectedPatternIds:o,historicalBest:r,priorVerdicts:a,estimatedTokenSavings:c,lowConfidence:h,bridgeKey:i}):(console.log(b.bold(`
212
212
  \u{1F680} Pre-Task Analysis`)),console.log(b.dim(` Task ID: ${e.taskId||"N/A"}`)),s&&(console.log(b.bold(`
213
- \u{1F3AF} Recommended:`),b.cyan(s.recommendedAgent)),console.log(b.dim(` Confidence: ${(s.confidence*100).toFixed(1)}%`)),E&&console.log(b.yellow(" \u26A0 Low confidence \u2014 consider providing more context"))));return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}}),n.command("post-task").description("Record task outcome for pattern learning").option("--task-id <id>","Task identifier").option("--success <bool>","Whether task succeeded","true").option("--agent <name>","Agent that executed the task").option("--duration <ms>","Task duration in milliseconds").option("--json","Output as JSON").action(async e=>{try{let t=e.success==="true"||e.success===!0,s=0,o={triggered:!1};try{let{hookRegistry:r,reasoningBank:a}=await S();s=(await r.emit(R.QEAgentCompletion,{taskId:e.taskId,success:t,agent:e.agent,duration:e.duration?parseInt(e.duration,10):void 0,timestamp:Date.now()})).reduce((u,l)=>u+(l.patternsLearned||0),0);{let u=e.taskId||`hook-${Date.now()}`,l=e.agent||"unknown",f=e.duration?parseInt(e.duration,10):0;await a.recordOutcome({patternId:`task:${l}:${u}`,success:t,metrics:{executionTimeMs:f},feedback:`Agent: ${l}, Task: ${u}`});let m=await Z({taskId:u,agent:l,durationMs:f,success:t}),y=l==="unknown"&&m.bridge?.agent?m.bridge.agent:l;await ee({agent:y,success:t,durationMs:f,qualityScore:m.qualityScore}),m.bridge&&await X({taskType:m.bridge.taskType,priority:m.bridge.priority,domain:m.bridge.domain,complexityBucket:m.bridge.complexityBucket,agent:y,success:t})}let i=T(),E=Ie.join(i,".agentic-qe"),d=await D(E),p=await O(d);o=await Y(d)}catch(r){console.error(b.dim(`[hooks] Learning init: ${r instanceof Error?r.message:"unknown"}`))}if(e.json)k({success:!0,taskId:e.taskId,taskSuccess:t,patternsLearned:s,dreamTriggered:o.triggered,dreamReason:o.reason,dreamInsights:o.insightsGenerated,dreamInsightsApplied:o.insightsApplied});else if(v(`Task completed: ${e.taskId||"unknown"}`),console.log(b.dim(` Success: ${t}`)),s>0&&console.log(b.green(` Patterns learned: ${s}`)),o.triggered){let r=typeof o.insightsApplied=="number"?`, ${o.insightsApplied} applied`:"";console.log(b.blue(` \u{1F319} Dream cycle triggered (${o.reason}): ${o.insightsGenerated} insights${r}`))}return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}})}import{existsSync as Le,readFileSync as Me}from"node:fs";import{randomUUID as he}from"node:crypto";import z from"chalk";import Se from"node:path";H();function je(n){return/\bjest\b/i.test(n)?"jest":/\bvitest\b/i.test(n)?"vitest":/\bpytest\b/i.test(n)?"pytest":/\bmocha\b/i.test(n)?"mocha":null}async function He(n){try{let e=j();e.isInitialized()||await e.initialize();let t=e.getDatabase();L(t);let s=n.framework==="pytest"?"python":"javascript",o=n.command.split(/\s+/).slice(0,3).join("-").slice(0,80);t.prepare(`
213
+ \u{1F3AF} Recommended:`),b.cyan(s.recommendedAgent)),console.log(b.dim(` Confidence: ${(s.confidence*100).toFixed(1)}%`)),h&&console.log(b.yellow(" \u26A0 Low confidence \u2014 consider providing more context"))));return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}}),n.command("post-task").description("Record task outcome for pattern learning").option("--task-id <id>","Task identifier").option("--success <bool>","Whether task succeeded","true").option("--agent <name>","Agent that executed the task").option("--duration <ms>","Task duration in milliseconds").option("--json","Output as JSON").action(async e=>{try{let t=e.success==="true"||e.success===!0,s=0,o={triggered:!1};try{let{hookRegistry:r,reasoningBank:a}=await S();s=(await r.emit(R.QEAgentCompletion,{taskId:e.taskId,success:t,agent:e.agent,duration:e.duration?parseInt(e.duration,10):void 0,timestamp:Date.now()})).reduce((u,l)=>u+(l.patternsLearned||0),0);{let u=e.taskId||`hook-${Date.now()}`,l=e.agent||"unknown",f=e.duration?parseInt(e.duration,10):0;await a.recordOutcome({patternId:`task:${l}:${u}`,success:t,metrics:{executionTimeMs:f},feedback:`Agent: ${l}, Task: ${u}`});let m=await Z({taskId:u,agent:l,durationMs:f,success:t}),y=l==="unknown"&&m.bridge?.agent?m.bridge.agent:l;await ee({agent:y,success:t,durationMs:f,qualityScore:m.qualityScore}),m.bridge&&await X({taskType:m.bridge.taskType,priority:m.bridge.priority,domain:m.bridge.domain,complexityBucket:m.bridge.complexityBucket,agent:y,success:t})}let i=T(),h=Ie.join(i,".agentic-qe"),d=await D(h),p=await O(d);o=await Y(d)}catch(r){console.error(b.dim(`[hooks] Learning init: ${r instanceof Error?r.message:"unknown"}`))}if(e.json)k({success:!0,taskId:e.taskId,taskSuccess:t,patternsLearned:s,dreamTriggered:o.triggered,dreamReason:o.reason,dreamInsights:o.insightsGenerated,dreamInsightsApplied:o.insightsApplied});else if(v(`Task completed: ${e.taskId||"unknown"}`),console.log(b.dim(` Success: ${t}`)),s>0&&console.log(b.green(` Patterns learned: ${s}`)),o.triggered){let r=typeof o.insightsApplied=="number"?`, ${o.insightsApplied} applied`:"";console.log(b.blue(` \u{1F319} Dream cycle triggered (${o.reason}): ${o.insightsGenerated} insights${r}`))}return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}})}import{existsSync as Le,readFileSync as Me}from"node:fs";import{randomUUID as Ee}from"node:crypto";import z from"chalk";import Se from"node:path";H();function je(n){return/\bjest\b/i.test(n)?"jest":/\bvitest\b/i.test(n)?"vitest":/\bpytest\b/i.test(n)?"pytest":/\bmocha\b/i.test(n)?"mocha":null}async function He(n){try{let e=j();e.isInitialized()||await e.initialize();let t=e.getDatabase();L(t);let s=n.framework==="pytest"?"python":"javascript",o=n.command.split(/\s+/).slice(0,3).join("-").slice(0,80);t.prepare(`
214
214
  INSERT INTO test_outcomes (
215
215
  id, test_id, test_name, generated_by, framework, language, domain,
216
216
  passed, execution_time_ms, maintainability_score, created_at
217
217
  ) VALUES (?, ?, ?, 'cli-hook-post-command', ?, ?, 'test-execution',
218
218
  ?, ?, 0.5, datetime('now'))
219
- `).run(`to-${Date.now()}-${he().slice(0,8)}`,`cmd:${o}`,n.command.slice(0,200),n.framework,s,n.success?1:0,n.durationMs);try{let r=Se.join(process.cwd(),"coverage","coverage-summary.json");if(Le(r)){let c=JSON.parse(Me(r,"utf-8")).total??{},i=Number(c.lines?.pct??0),E=Number(c.branches?.pct??0),d=Number(c.functions?.pct??0),p=t.prepare(`
219
+ `).run(`to-${Date.now()}-${Ee().slice(0,8)}`,`cmd:${o}`,n.command.slice(0,200),n.framework,s,n.success?1:0,n.durationMs);try{let r=Se.join(process.cwd(),"coverage","coverage-summary.json");if(Le(r)){let c=JSON.parse(Me(r,"utf-8")).total??{},i=Number(c.lines?.pct??0),h=Number(c.branches?.pct??0),d=Number(c.functions?.pct??0),p=t.prepare(`
220
220
  SELECT after_lines, after_branches, after_functions
221
221
  FROM coverage_sessions
222
222
  WHERE target_path = ?
@@ -230,8 +230,8 @@ Registered: ${s.length}/${Object.keys(R).length}`))}}catch(t){throw _(`list fail
230
230
  tests_generated, tests_passed, duration_ms,
231
231
  started_at, completed_at
232
232
  ) VALUES (?, ?, 'cli-hook-post-command', ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?)
233
- `).run(`cs-${Date.now()}-${he().slice(0,8)}`,process.cwd(),n.framework,p?.after_lines??0,p?.after_branches??0,p?.after_functions??0,i,E,d,n.success?1:0,n.durationMs,u,u)}}catch(r){console.error(z.dim(`[hooks] coverage_sessions: ${r instanceof Error?r.message:"unknown"}`))}}catch(e){console.error(z.dim(`[hooks] test_outcomes: ${e instanceof Error?e.message:"unknown"}`))}}function _e(n){n.command("guard").description("File guardian - block edits to protected files").requiredOption("-f, --file <path>","File path to check").option("--json","Output as JSON (required for hook API)").action(async e=>{try{let t=e.file||"",s=t.replace(/\\/g,"/"),r=[{pattern:/^\.env($|\.)/,reason:"Environment file contains secrets"},{pattern:/\.env\.[a-zA-Z]+$/,reason:"Environment file contains secrets"},{pattern:/\.lock$/,reason:"Lock files are auto-generated"},{pattern:/(^|\/)node_modules\//,reason:"node_modules is managed by package manager"},{pattern:/(^|\/)\.agentic-qe\/memory\.db/,reason:"AQE memory database must not be directly edited"},{pattern:/(^|\/)\.agentic-qe\/memory\.db-wal$/,reason:"AQE WAL file must not be directly edited"},{pattern:/(^|\/)\.agentic-qe\/memory\.db-shm$/,reason:"AQE shared memory file must not be directly edited"}].find(a=>a.pattern.test(s));r?e.json?k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:`Protected file: ${r.reason} (${t})`}}):_(`Blocked: ${r.reason} (${t})`):e.json?k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}}):v(`Allowed: ${t}`);return}catch{e.json&&k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}});return}}),n.command("pre-command").description("Get context before executing a Bash command").option("-c, --command <cmd>","Command to be executed").option("--json","Output as JSON").action(async e=>{try{let t=e.command||"",s=[{pattern:/rm\s+(-[a-zA-Z]*f[a-zA-Z]*\s+)?-[a-zA-Z]*r[a-zA-Z]*\s+\/(?!\w)/,reason:"Recursive delete of root filesystem"},{pattern:/rm\s+(-[a-zA-Z]*r[a-zA-Z]*\s+)?-[a-zA-Z]*f[a-zA-Z]*\s+\/(?!\w)/,reason:"Recursive delete of root filesystem"},{pattern:/rm\s+-rf\s+~/,reason:"Recursive delete of home directory"},{pattern:/DROP\s+(TABLE|DATABASE|SCHEMA)/i,reason:"Destructive SQL operation"},{pattern:/git\s+push\s+.*--force(?!-)/,reason:"Force push can overwrite remote history"},{pattern:/git\s+reset\s+--hard/,reason:"Hard reset discards uncommitted changes"},{pattern:/>\s*\/dev\/sd[a-z]/,reason:"Direct write to block device"},{pattern:/dd\s+if=.*of=\/dev\/sd/,reason:"Direct disk write via dd"},{pattern:/chmod\s+777\s/,reason:"World-writable permissions are a security risk"},{pattern:/:\(\)\s*\{\s*:\|\s*:&\s*\}\s*;?\s*:/,reason:"Fork bomb detected"},{pattern:/mkfs\./,reason:"Filesystem format operation"},{pattern:/>\s*\/dev\/null\s*2>&1\s*&\s*disown/,reason:"Stealth background process"}],o=[{pattern:/\.agentic-qe.*rm/,reason:"Deleting AQE data files"},{pattern:/rm\s+-rf\s/,reason:"Recursive force delete"},{pattern:/git\s+clean\s+-[a-zA-Z]*f/,reason:"Force cleaning untracked files"}],r=s.find(c=>c.pattern.test(t)),a=o.filter(c=>c.pattern.test(t)).map(c=>c.reason);if(r)e.json?k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:`Dangerous command blocked: ${r.reason}`}}):_(`Blocked: ${r.reason}`);else if(e.json){let c={hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}};a.length>0&&(c.hookSpecificOutput.additionalContext=`Warnings: ${a.join("; ")}`),k(c)}else a.length>0&&(console.log(z.yellow(`
234
- \u26A0\uFE0F Command Warnings:`)),a.forEach(c=>console.log(z.yellow(` - ${c}`))));return}catch{e.json&&k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}});return}}),n.command("post-command").description("Record Bash command outcome").option("-c, --command <cmd>","Command that was executed").option("--success <bool>","Whether command succeeded","true").option("--exit-code <code>","Command exit code").option("--json","Output as JSON").action(async e=>{try{let t=e.success==="true"||e.success===!0,s=e.exitCode?parseInt(e.exitCode,10):t?0:1,o=(e.command||"").substring(0,200),r=/\b(test|vitest|jest|pytest|mocha)\b/i.test(o),a=/\b(build|compile|tsc)\b/i.test(o),c=/\b(lint|eslint|prettier)\b/i.test(o),i=0,E=!1;try{let{reasoningBank:d}=await S();if(r){let{hookRegistry:$}=await S();await $.emit(R.TestExecutionResult,{runId:`cmd-${Date.now()}`,patternId:`cmd:test:${o.split(/\s+/).slice(0,3).join("-")}`,passed:t?1:0,failed:t?0:1,duration:0,flaky:!1})}let p=o.replace(/[^a-zA-Z0-9]/g,"-").slice(0,80),u=r?"test-execution":a?"code-intelligence":c?"quality-assessment":"code-intelligence";await d.recordOutcome({patternId:`cmd:${p}`,success:t,metrics:{executionTimeMs:0},feedback:`Command: ${o}, exit: ${s}`}),i=1,(r||a||c)&&(await U({task:`bash: ${o}`,agent:"cli-hook",domain:u,success:t,source:"cli-hook-post-command"}),E=!0);let l=je(o);l&&await He({command:o,framework:l,success:t,durationMs:0});let f=T(),m=Se.join(f,".agentic-qe"),y=await D(m);await O(y)}catch(d){console.error(z.dim(`[hooks] post-command learning: ${d instanceof Error?d.message:"unknown"}`))}e.json&&k({success:!0,command:o.substring(0,100),commandSuccess:t,exitCode:s,patternsLearned:i,experienceRecorded:E});return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}})}function Gt(){let n=new Be("hooks").description("Self-learning QE hooks for pattern recognition and guidance").addHelpText("after",`
233
+ `).run(`cs-${Date.now()}-${Ee().slice(0,8)}`,process.cwd(),n.framework,p?.after_lines??0,p?.after_branches??0,p?.after_functions??0,i,h,d,n.success?1:0,n.durationMs,u,u)}}catch(r){console.error(z.dim(`[hooks] coverage_sessions: ${r instanceof Error?r.message:"unknown"}`))}}catch(e){console.error(z.dim(`[hooks] test_outcomes: ${e instanceof Error?e.message:"unknown"}`))}}function _e(n){n.command("guard").description("File guardian - block edits to protected files").requiredOption("-f, --file <path>","File path to check").option("--json","Output as JSON (required for hook API)").action(async e=>{try{let t=e.file||"",s=t.replace(/\\/g,"/"),r=[{pattern:/^\.env($|\.)/,reason:"Environment file contains secrets"},{pattern:/\.env\.[a-zA-Z]+$/,reason:"Environment file contains secrets"},{pattern:/\.lock$/,reason:"Lock files are auto-generated"},{pattern:/(^|\/)node_modules\//,reason:"node_modules is managed by package manager"},{pattern:/(^|\/)\.agentic-qe\/memory\.db/,reason:"AQE memory database must not be directly edited"},{pattern:/(^|\/)\.agentic-qe\/memory\.db-wal$/,reason:"AQE WAL file must not be directly edited"},{pattern:/(^|\/)\.agentic-qe\/memory\.db-shm$/,reason:"AQE shared memory file must not be directly edited"}].find(a=>a.pattern.test(s));r?e.json?k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:`Protected file: ${r.reason} (${t})`}}):_(`Blocked: ${r.reason} (${t})`):e.json?k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}}):v(`Allowed: ${t}`);return}catch{e.json&&k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}});return}}),n.command("pre-command").description("Get context before executing a Bash command").option("-c, --command <cmd>","Command to be executed").option("--json","Output as JSON").action(async e=>{try{let t=e.command||"",s=[{pattern:/rm\s+(-[a-zA-Z]*f[a-zA-Z]*\s+)?-[a-zA-Z]*r[a-zA-Z]*\s+\/(?!\w)/,reason:"Recursive delete of root filesystem"},{pattern:/rm\s+(-[a-zA-Z]*r[a-zA-Z]*\s+)?-[a-zA-Z]*f[a-zA-Z]*\s+\/(?!\w)/,reason:"Recursive delete of root filesystem"},{pattern:/rm\s+-rf\s+~/,reason:"Recursive delete of home directory"},{pattern:/DROP\s+(TABLE|DATABASE|SCHEMA)/i,reason:"Destructive SQL operation"},{pattern:/git\s+push\s+.*--force(?!-)/,reason:"Force push can overwrite remote history"},{pattern:/git\s+reset\s+--hard/,reason:"Hard reset discards uncommitted changes"},{pattern:/>\s*\/dev\/sd[a-z]/,reason:"Direct write to block device"},{pattern:/dd\s+if=.*of=\/dev\/sd/,reason:"Direct disk write via dd"},{pattern:/chmod\s+777\s/,reason:"World-writable permissions are a security risk"},{pattern:/:\(\)\s*\{\s*:\|\s*:&\s*\}\s*;?\s*:/,reason:"Fork bomb detected"},{pattern:/mkfs\./,reason:"Filesystem format operation"},{pattern:/>\s*\/dev\/null\s*2>&1\s*&\s*disown/,reason:"Stealth background process"}],o=[{pattern:/\.agentic-qe.*rm/,reason:"Deleting AQE data files"},{pattern:/rm\s+-rf\s/,reason:"Recursive force delete"},{pattern:/git\s+clean\s+-[a-zA-Z]*f/,reason:"Force cleaning untracked files"}],r=s.find(c=>c.pattern.test(t)),a=o.filter(c=>c.pattern.test(t)).map(c=>c.reason);if(r)e.json?k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:`Dangerous command blocked: ${r.reason}`}}):_(`Blocked: ${r.reason}`);else if(e.json){let c={hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}};a.length>0&&(c.hookSpecificOutput.additionalContext=`Warnings: ${a.join("; ")}`),k(c)}else a.length>0&&(console.log(z.yellow(`
234
+ \u26A0\uFE0F Command Warnings:`)),a.forEach(c=>console.log(z.yellow(` - ${c}`))));return}catch{e.json&&k({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}});return}}),n.command("post-command").description("Record Bash command outcome").option("-c, --command <cmd>","Command that was executed").option("--success <bool>","Whether command succeeded","true").option("--exit-code <code>","Command exit code").option("--json","Output as JSON").action(async e=>{try{let t=e.success==="true"||e.success===!0,s=e.exitCode?parseInt(e.exitCode,10):t?0:1,o=(e.command||"").substring(0,200),r=/\b(test|vitest|jest|pytest|mocha)\b/i.test(o),a=/\b(build|compile|tsc)\b/i.test(o),c=/\b(lint|eslint|prettier)\b/i.test(o),i=0,h=!1;try{let{reasoningBank:d}=await S();if(r){let{hookRegistry:$}=await S();await $.emit(R.TestExecutionResult,{runId:`cmd-${Date.now()}`,patternId:`cmd:test:${o.split(/\s+/).slice(0,3).join("-")}`,passed:t?1:0,failed:t?0:1,duration:0,flaky:!1})}let p=o.replace(/[^a-zA-Z0-9]/g,"-").slice(0,80),u=r?"test-execution":a?"code-intelligence":c?"quality-assessment":"code-intelligence";await d.recordOutcome({patternId:`cmd:${p}`,success:t,metrics:{executionTimeMs:0},feedback:`Command: ${o}, exit: ${s}`}),i=1,(r||a||c)&&(await U({task:`bash: ${o}`,agent:"cli-hook",domain:u,success:t,source:"cli-hook-post-command"}),h=!0);let l=je(o);l&&await He({command:o,framework:l,success:t,durationMs:0});let f=T(),m=Se.join(f,".agentic-qe"),y=await D(m);await O(y)}catch(d){console.error(z.dim(`[hooks] post-command learning: ${d instanceof Error?d.message:"unknown"}`))}e.json&&k({success:!0,command:o.substring(0,100),commandSuccess:t,exitCode:s,patternsLearned:i,experienceRecorded:h});return}catch(t){e.json&&k({success:!1,error:t instanceof Error?t.message:"unknown"});return}})}function Gt(){let n=new Be("hooks").description("Self-learning QE hooks for pattern recognition and guidance").addHelpText("after",`
235
235
  Examples:
236
236
  # File editing hooks (learning from edits)
237
237
  aqe hooks pre-edit --file src/utils.ts --operation create
@@ -256,4 +256,4 @@ Examples:
256
256
  aqe hooks search --query "authentication"
257
257
  aqe hooks stats
258
258
  aqe hooks list
259
- `);return ge(n),pe(n),fe(n),ke(n),Ee(n),_e(n),n}export{R as QE_HOOK_EVENTS,Gt as createHooksCommand,S as getHooksSystem,g as hooksState};
259
+ `);return ge(n),pe(n),fe(n),ke(n),he(n),_e(n),n}export{R as QE_HOOK_EVENTS,Gt as createHooksCommand,S as getHooksSystem,g as hooksState};
@@ -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.26");process.exit(0)}
2
- import{a as h,b as z}from"./chunk-6VRKHHYI.js";import{a as b,b as B,c as P,d as O,e as F}from"./chunk-PLB75ASZ.js";import{b as k,c as x,d as _,e as w}from"./chunk-N3GLRFMH.js";import{a as M}from"./chunk-6AH4SN6I.js";import{b as S,c as U}from"./chunk-TZ73IAF5.js";import{i as I}from"./chunk-CYPOU765.js";import"./chunk-ARLHD5MG.js";var m={heavyweight:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!0,requiresJsonMode:!0,minContextSize:1e5,costSensitivity:"low",latencySensitivity:"low"},standard:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:5e4,costSensitivity:"medium",latencySensitivity:"medium"},lightweight:{requiresReasoning:!1,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:16e3,costSensitivity:"medium",latencySensitivity:"high"},minimal:{requiresReasoning:!1,requiresTools:!1,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!1,minContextSize:4e3,costSensitivity:"high",latencySensitivity:"medium"}},$={security:m.heavyweight,"test-generation":m.standard,"code-analysis":m.standard,learning:m.standard,performance:{...m.lightweight,costSensitivity:"high"},coordination:m.lightweight,general:{...m.lightweight,requiresJsonMode:!1,latencySensitivity:"medium"},documentation:{...m.minimal,minContextSize:16e3},simple:m.minimal};var v=class{rules=[];constructor(e=[]){this.setRules(e)}setRules(e){this.rules=[...e].filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}getRules(){return[...this.rules]}addRule(e){this.rules.push(e),this.rules=this.rules.filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}removeRule(e){let t=this.rules.findIndex(r=>r.id===e);return t>=0?(this.rules.splice(t,1),!0):!1}setRuleEnabled(e,t){let r=this.rules.find(i=>i.id===e);return r?(r.enabled=t,this.rules=this.rules.filter(i=>i.enabled).sort((i,o)=>o.priority-i.priority),!0):!1}evaluate(e){let t=0;for(let r of this.rules)if(t++,this.matchesCondition(e,r.condition))return{rule:r,rulesEvaluated:t};return null}evaluateAll(e){return this.rules.filter(t=>this.matchesCondition(e,t.condition))}matchesCondition(e,t){if(t.agentType!==void 0&&(!e.agentType||!t.agentType.includes(e.agentType))||t.requiresTools!==void 0&&!!e.requiresTools!==t.requiresTools)return!1;if(t.complexity!==void 0){let r=Array.isArray(t.complexity)?t.complexity:[t.complexity];if(!e.complexity||!r.includes(e.complexity))return!1}if(t.localOnly!==void 0&&t.localOnly){let r=["ollama","onnx"];if(e.preferredProvider&&!r.includes(e.preferredProvider))return!1}if(t.requiresReasoning!==void 0&&t.requiresReasoning&&e.complexity==="low")return!1;if(t.tokenRange!==void 0){let r=this.estimateTokens(e);if(t.tokenRange.min!==void 0&&r<t.tokenRange.min||t.tokenRange.max!==void 0&&r>t.tokenRange.max)return!1}return!(t.requiredCapabilities!==void 0&&t.requiredCapabilities.length>0&&(!e.requiredCapabilities||e.requiredCapabilities.length===0||!t.requiredCapabilities.every(i=>e.requiredCapabilities.includes(i)))||t.custom!==void 0&&!t.custom(e))}estimateTokens(e){let t=0;e.systemPrompt&&(t+=Math.ceil(e.systemPrompt.length/4));for(let r of e.messages)t+=Math.ceil(r.content.length/4);return t}},A=[{id:"security-agents-opus",name:"Security Agents to Claude Opus",description:"Route security-critical agents to Claude Opus for best security analysis",condition:{agentType:["security-auditor","security-architect","v3-qe-security-scanner"]},action:{provider:"claude",model:"claude-opus-4-7",temperature:.1},enabled:!0,priority:100},{id:"test-gen-with-tools",name:"Test Generation with Tools",description:"Route test generation requests that need tools to Claude Sonnet",condition:{agentType:["v3-qe-test-generator","tester"],requiresTools:!0},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:95},{id:"high-complexity-reasoning",name:"High Complexity Reasoning",description:"Route high complexity tasks requiring reasoning to advanced models",condition:{complexity:"high",requiresReasoning:!0},action:{provider:"claude",model:"claude-opus-4-7",temperature:.2},enabled:!0,priority:90},{id:"code-analysis-agents",name:"Code Analysis Agents",description:"Route code analysis to Claude Sonnet for balanced performance",condition:{agentType:["code-analyzer","v3-qe-code-intelligence","reviewer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.2},enabled:!0,priority:85},{id:"coverage-analysis",name:"Coverage Analysis Agents",description:"Route coverage analysis to efficient models",condition:{agentType:["v3-qe-coverage-analyzer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.1},enabled:!0,priority:80},{id:"defect-prediction",name:"Defect Prediction Agents",description:"Route defect prediction to capable models",condition:{agentType:["v3-qe-defect-predictor"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:75},{id:"medium-complexity",name:"Medium Complexity Tasks",description:"Route medium complexity to balanced Claude Sonnet",condition:{complexity:"medium"},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:60},{id:"low-complexity-haiku",name:"Low Complexity to Haiku",description:"Route low complexity tasks to Haiku for cost efficiency",condition:{complexity:"low"},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:50},{id:"local-only-ollama",name:"Local Only Requests",description:"Route local-only requests to Ollama",condition:{localOnly:!0},action:{provider:"ollama",model:"llama3.1",temperature:.3},enabled:!0,priority:40},{id:"small-requests-haiku",name:"Small Token Requests",description:"Route small requests to Haiku for efficiency",condition:{tokenRange:{max:500}},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:30}];import{randomUUID as H}from"crypto";var f=class{decisions=[];providerCalls=[];fallbacks=[];cacheHits=0;cacheMisses=0;startTime=new Date;maxRecords;maxCallRecords;constructor(e={}){this.maxRecords=e.maxRecords??1e4,this.maxCallRecords=e.maxCallRecords??5e3}recordRoutingDecision(e,t,r={}){let i={id:`rd-${Date.now()}-${H().slice(0,8)}`,timestamp:new Date,provider:e.providerType,model:e.model,mode:this.inferMode(e.reason),reason:e.reason,latencyMs:t,decisionTimeMs:e.metadata.decisionTimeMs,agentType:r.agentType,success:r.success??!0,tokenUsage:r.tokenUsage,cost:r.cost,wasFallback:e.reason==="fallback",ruleId:e.matchedRule?.id};this.decisions.push(i),this.trimRecords()}recordProviderCall(e,t,r,i,o={}){let n=o.inputTokens??Math.floor(i*.7),a=o.outputTokens??i-n,c={timestamp:new Date,provider:e,model:t,latencyMs:r,inputTokens:n,outputTokens:a,totalTokens:i,success:o.success??!0,cost:o.cost,agentType:o.agentType};this.providerCalls.push(c),this.trimCallRecords()}recordFallback(e,t,r,i){let o={timestamp:new Date,fromProvider:e,toProvider:t,reason:r,agentType:i};this.fallbacks.push(o),this.fallbacks.length>1e3&&(this.fallbacks=this.fallbacks.slice(-1e3))}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(e="all"){let t=this.getWindowStart(e),r=this.filterByTime(this.decisions,t),i=this.filterByTime(this.providerCalls,t),o=this.filterByTime(this.fallbacks,t),n=this.calculateProviderMetrics(r,i),a=this.calculateAgentMetrics(r,i),c=r.map(u=>u.decisionTimeMs),s=r.length,l=this.countByMode(r),d=r.filter(u=>u.wasFallback).length,g=r.filter(u=>u.ruleId).length;return{byProvider:Object.fromEntries(n),byAgentType:a,totalDecisions:s,decisionsByMode:l,avgDecisionTimeMs:this.average(c),p95DecisionTimeMs:this.percentile(c,95),p99DecisionTimeMs:this.percentile(c,99),fallbackRate:s>0?d/s:0,ruleMatchRate:s>0?g/s:0,estimatedCostSavings:this.calculateCostSavings(r),ruleStats:{totalEvaluated:r.reduce((u,y)=>u+1,0),matched:g,avgRulesPerDecision:1},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:t,end:new Date},recentDecisions:r.slice(-50),fallbackStats:this.calculateFallbackStats(o)}}getMetricsByProvider(e){let t=this.decisions.filter(c=>c.provider===e),r=this.providerCalls.filter(c=>c.provider===e),i=r.map(c=>c.latencyMs),o=t.map(c=>c.decisionTimeMs),n=r.filter(c=>c.success),a=r.filter(c=>!c.success);return{provider:e,selectionCount:t.length,ruleMatchCount:t.filter(c=>c.ruleId).length,fallbackCount:t.filter(c=>c.wasFallback).length,avgDecisionTimeMs:this.average(o),successRate:r.length>0?n.length/r.length:1,avgLatencyMs:this.average(i),p95LatencyMs:this.percentile(i,95),p99LatencyMs:this.percentile(i,99),totalCost:r.reduce((c,s)=>c+(s.cost??0),0),totalTokens:r.reduce((c,s)=>c+s.totalTokens,0),totalInputTokens:r.reduce((c,s)=>c+s.inputTokens,0),totalOutputTokens:r.reduce((c,s)=>c+s.outputTokens,0),circuitState:"closed",latencyHistogram:i.slice(-100),decisionTimeHistogram:o.slice(-100),errorCount:a.length,lastError:a.length>0?a[a.length-1].timestamp:void 0,recentCalls:r.slice(-20)}}getMetricsByAgentType(e){let t=this.decisions.filter(s=>s.agentType===e),r=this.providerCalls.filter(s=>s.agentType===e),i=new Map,o=new Map;for(let s of t)i.set(s.provider,(i.get(s.provider)??0)+1),o.set(s.model,(o.get(s.model)??0)+1);let n=r.map(s=>s.latencyMs),a=t.filter(s=>s.wasFallback).length,c=t.filter(s=>s.success).length;return{agentType:e,totalDecisions:t.length,providerDistribution:i,modelDistribution:o,avgLatencyMs:this.average(n),totalCost:r.reduce((s,l)=>s+(l.cost??0),0),totalTokens:r.reduce((s,l)=>s+l.totalTokens,0),fallbackRate:t.length>0?a/t.length:0,successRate:t.length>0?c/t.length:1}}getAuditLog(e={}){let t=this.decisions;e.since&&(t=t.filter(i=>i.timestamp>=e.since)),e.provider&&(t=t.filter(i=>i.provider===e.provider)),e.agentType&&(t=t.filter(i=>i.agentType===e.agentType));let r=e.limit??100;return t.slice(-r).map(i=>({id:i.id,timestamp:i.timestamp,context:{agentType:i.agentType},decision:{providerType:i.provider,model:i.model,providerModelId:i.model,reason:i.reason,confidence:1,metadata:{decisionTimeMs:i.decisionTimeMs,timestamp:i.timestamp}},outcome:{success:i.success,latencyMs:i.latencyMs,tokenUsage:i.tokenUsage,cost:i.cost}}))}resetMetrics(){this.decisions=[],this.providerCalls=[],this.fallbacks=[],this.cacheHits=0,this.cacheMisses=0,this.startTime=new Date}inferMode(e){switch(e){case"manual":return"manual";case"rule-match":return"rule-based";case"cost-optimization":return"cost-optimized";case"performance-optimization":return"performance-optimized";default:return"rule-based"}}trimRecords(){this.decisions.length>this.maxRecords&&(this.decisions=this.decisions.slice(-this.maxRecords))}trimCallRecords(){this.providerCalls.length>this.maxCallRecords&&(this.providerCalls=this.providerCalls.slice(-this.maxCallRecords))}getWindowStart(e){let t=new Date;switch(e){case"1m":return new Date(t.getTime()-60*1e3);case"5m":return new Date(t.getTime()-300*1e3);case"15m":return new Date(t.getTime()-900*1e3);case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);default:return this.startTime}}filterByTime(e,t){return e.filter(r=>r.timestamp>=t)}calculateProviderMetrics(e,t){let r=new Map;for(let i of h){let o=e.filter(l=>l.provider===i),n=t.filter(l=>l.provider===i);if(o.length===0&&n.length===0)continue;let a=n.map(l=>l.latencyMs),c=o.map(l=>l.decisionTimeMs),s=n.filter(l=>l.success);r.set(i,{provider:i,selectionCount:o.length,ruleMatchCount:o.filter(l=>l.ruleId).length,fallbackCount:o.filter(l=>l.wasFallback).length,avgDecisionTimeMs:this.average(c),successRate:n.length>0?s.length/n.length:1,avgLatencyMs:this.average(a),p95LatencyMs:this.percentile(a,95),p99LatencyMs:this.percentile(a,99),totalCost:n.reduce((l,d)=>l+(d.cost??0),0),totalTokens:n.reduce((l,d)=>l+d.totalTokens,0),circuitState:"closed"})}return r}calculateAgentMetrics(e,t){let r=new Set;e.forEach(o=>o.agentType&&r.add(o.agentType)),t.forEach(o=>o.agentType&&r.add(o.agentType));let i=new Map;for(let o of r)i.set(o,this.getMetricsByAgentType(o));return i}countByMode(e){let t={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};for(let r of e)t[r.mode]++;return t}calculateFallbackStats(e){let t=new Map,r=new Map;for(let i of e)t.set(i.fromProvider,(t.get(i.fromProvider)??0)+1),r.set(i.reason,(r.get(i.reason)??0)+1);return{total:e.length,byProvider:t,byReason:r}}calculateCostSavings(e){return e.reduce((t,r)=>r.cost&&r.mode==="cost-optimized"?t+r.cost.totalCost*.2:t,0)}average(e){return e.length===0?0:e.reduce((t,r)=>t+r,0)/e.length}percentile(e,t){if(e.length===0)return 0;let r=[...e].sort((o,n)=>o-n),i=Math.ceil(t/100*r.length)-1;return r[Math.max(0,i)]}};function D(p){return new f(p)}var C=class{records=[];alerts=[];maxRecords;alertCheckInterval;constructor(e={}){this.maxRecords=e.maxRecords??1e4}recordCost(e,t,r,i,o={}){let n=this.calculateCost(t,r,i),a={timestamp:new Date,provider:e,model:t,inputTokens:r,outputTokens:i,inputCost:n.inputCost,outputCost:n.outputCost,totalCost:n.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(a),this.trimRecords(),this.checkAlerts(),a}recordCostFromInfo(e,t,r,i,o={}){let n={timestamp:new Date,provider:e,model:t,inputTokens:r.promptTokens,outputTokens:r.completionTokens,inputCost:i.inputCost,outputCost:i.outputCost,totalCost:i.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(n),this.trimRecords(),this.checkAlerts(),n}getCostByProvider(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Map;for(let o of h){let n=r.filter(s=>s.provider===o);if(n.length===0)continue;let a=n.reduce((s,l)=>s+l.totalCost,0),c=n.reduce((s,l)=>s+l.inputTokens+l.outputTokens,0);i.set(o,{totalCost:a,totalTokens:c,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:c>0?a/c:0})}return i}getCostByAgentType(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(a=>a.agentType&&i.add(a.agentType));let o=new Map;for(let a of i){let c=r.filter(d=>d.agentType===a),s=c.reduce((d,g)=>d+g.totalCost,0),l=c.reduce((d,g)=>d+g.inputTokens+g.outputTokens,0);o.set(a,{totalCost:s,totalTokens:l,totalRequests:c.length,avgCostPerRequest:c.length>0?s/c.length:0,avgCostPerToken:l>0?s/l:0})}let n=r.filter(a=>!a.agentType);if(n.length>0){let a=n.reduce((s,l)=>s+l.totalCost,0),c=n.reduce((s,l)=>s+l.inputTokens+l.outputTokens,0);o.set("unknown",{totalCost:a,totalTokens:c,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:c>0?a/c:0})}return o}getCostByModel(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(n=>i.add(n.model));let o=new Map;for(let n of i){let a=r.filter(l=>l.model===n),c=a.reduce((l,d)=>l+d.totalCost,0),s=a.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0);o.set(n,{totalCost:c,totalTokens:s,totalRequests:a.length,avgCostPerRequest:a.length>0?c/a.length:0,avgCostPerToken:s>0?c/s:0})}return o}getTotalCost(e="all"){let t=this.getPeriodStart(e);return this.filterByTime(t).reduce((i,o)=>i+o.totalCost,0)}getCostTrend(e){let t=new Date,r=[],i,o;switch(e){case"1h":i=300*1e3,o=12;break;case"24h":i=3600*1e3,o=24;break;case"7d":i=1440*60*1e3,o=7;break}for(let n=o-1;n>=0;n--){let a=new Date(t.getTime()-n*i),c=new Date(a.getTime()-i),s=this.records.filter(l=>l.timestamp>=c&&l.timestamp<a);r.push({timestamp:a,cost:s.reduce((l,d)=>l+d.totalCost,0),tokens:s.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0),requests:s.length})}return r}addBudgetAlert(e,t,r){let i={threshold:e,period:t,callback:r,active:!0};return this.alerts.push(i),this.alertCheckInterval||(this.alertCheckInterval=setInterval(()=>this.checkAlerts(),6e4)),`alert-${this.alerts.length-1}`}removeBudgetAlert(e){return e>=0&&e<this.alerts.length?(this.alerts.splice(e,1),this.alerts.length===0&&this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0),!0):!1}getOptimizationSuggestions(){let e=[],t=this.getCostByModel("24h");for(let[n,a]of t)M[n]&&a.totalCost>1&&(n.includes("opus")&&e.push({type:"model-switch",description:"Consider using Sonnet instead of Opus for non-critical tasks",estimatedSavings:a.totalCost*.5,currentCost:a.totalCost,suggestedModel:"claude-sonnet-4-6"}),n==="gpt-4o"&&e.push({type:"model-switch",description:"Consider using GPT-4o-mini for simpler tasks",estimatedSavings:a.totalCost*.7,currentCost:a.totalCost,suggestedModel:"gpt-4o-mini"}));let r=this.getCostByProvider("24h"),i=[...r.values()].reduce((n,a)=>n+a.totalCost,0);return i>10&&!r.has("ollama")&&e.push({type:"provider-switch",description:"Consider using Ollama for development/testing workloads",estimatedSavings:i*.3,currentCost:i,suggestedProvider:"ollama"}),[...t.values()].reduce((n,a)=>n+a.totalRequests,0)>100&&e.push({type:"caching",description:"Enable response caching to reduce redundant API calls",estimatedSavings:i*.15,currentCost:i}),e}getRecords(){return[...this.records]}clear(){this.records=[]}reset(){this.records=[],this.alerts=[],this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}dispose(){this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}calculateCost(e,t,r){let i=M[e];if(!i)return{inputCost:0,outputCost:0,totalCost:0,currency:"USD"};let o=t/1e6*i.input,n=r/1e6*i.output;return{inputCost:o,outputCost:n,totalCost:o+n,currency:"USD"}}trimRecords(){this.records.length>this.maxRecords&&(this.records=this.records.slice(-this.maxRecords))}getPeriodStart(e){let t=new Date;switch(e){case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);case"30d":return new Date(t.getTime()-720*60*60*1e3);default:return new Date(0)}}filterByTime(e){return this.records.filter(t=>t.timestamp>=e)}checkAlerts(){for(let e of this.alerts){if(!e.active)continue;let t=this.getTotalCost(e.period);if(t>=e.threshold){e.active=!1;let r=this.getPeriodStart(e.period),i=this.filterByTime(r),o=i.reduce((n,a)=>n+a.inputTokens+a.outputTokens,0);try{e.callback({totalCost:t,totalTokens:o,totalRequests:i.length,avgCostPerRequest:i.length>0?t/i.length:0,avgCostPerToken:o>0?t/o:0})}catch(n){console.error("Budget alert callback error:",n)}}}}};function E(p){return new C(p)}U();var R=class{cache=new Map;maxSize;ttlMs;constructor(e=100,t=6e4){this.maxSize=e,this.ttlMs=t}get(e){let t=this.cache.get(e);return t?Date.now()>t.expiresAt?(this.cache.delete(e),null):t.decision:null}set(e,t){if(this.cache.size>=this.maxSize){let r=this.cache.keys().next().value;r&&this.cache.delete(r)}this.cache.set(e,{decision:t,expiresAt:Date.now()+this.ttlMs})}clear(){this.cache.clear()}getStats(){return{hits:0,misses:0,size:this.cache.size}}},T=class{config;providerManager;ruleEngine;decisionCache;metrics;routerMetrics;costMetrics;initialized=!1;constructor(e,t){this.providerManager=e,this.config={...z,...t};let r=this.config.rules.length>0?this.config.rules:A;this.ruleEngine=new v(r),this.decisionCache=new R(100,this.config.decisionCacheTtlMs),this.metrics=new q,this.routerMetrics=D(),this.costMetrics=E()}async initialize(){this.initialized||(await this.providerManager.initialize(),this.initialized=!0)}getMode(){return this.config.mode}setMode(e){this.config.mode=e,this.decisionCache.clear()}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e},e.rules&&this.ruleEngine.setRules(e.rules),e.decisionCacheTtlMs&&(this.decisionCache=new R(100,e.decisionCacheTtlMs))}async selectProvider(e){await this.ensureInitialized();let t=Date.now();if(this.config.cacheDecisions){let i=this.generateCacheKey(e),o=this.decisionCache.get(i);if(o)return this.metrics.recordCacheHit(),this.routerMetrics.recordCacheHit(),o;this.metrics.recordCacheMiss(),this.routerMetrics.recordCacheMiss()}let r;switch(this.config.mode){case"manual":r=await this.selectManual(e);break;case"rule-based":r=await this.selectRuleBased(e);break;case"cost-optimized":r=await this.selectCostOptimized(e);break;case"performance-optimized":r=await this.selectPerformanceOptimized(e);break;default:r=await this.selectRuleBased(e)}if(r.metadata.decisionTimeMs=Date.now()-t,this.config.cacheDecisions){let i=this.generateCacheKey(e);this.decisionCache.set(i,r)}return this.metrics.recordDecision(r,this.config.mode),r}async chat(e){await this.ensureInitialized();let t=I(),r=await this.selectProvider(e),i=e.agentType??"";if(_(i)&&(x(r.model)||x(r.providerModelId))){let n=r.model,a=r.providerModelId;r.model=w(i,r.model,k),r.providerModelId=w(i,r.providerModelId,k),console.warn(`[aqe] ADR-093: ${i} pinned to ${r.model} (was ${n}/${a}); set AQE_CYBER_VERIFIED=true after Cyber Verification Program approval`)}return await this.executeWithFallback(e,r,t)}async*stream(e){await this.ensureInitialized();let t=await this.selectProvider(e),r=await this.chat(e),i=100;for(let o=0;o<r.content.length;o+=i){let n=o+i>=r.content.length;yield{type:n?"done":"content",delta:r.content.slice(o,o+i),accumulated:r.content.slice(0,o+i),done:n,tokenCount:Math.ceil((o+i)/4),model:r.model,provider:t.providerType,usage:n?r.usage:void 0}}}getMetrics(){return this.metrics.getMetrics()}getEnhancedMetrics(e){return this.routerMetrics.getMetrics(e)}getProviderMetrics(e){return this.routerMetrics.getMetricsByProvider(e)}getAgentMetrics(e){return this.routerMetrics.getMetricsByAgentType(e)}getCostByProvider(e){return this.costMetrics.getCostByProvider(e)}getCostByAgentType(e){return this.costMetrics.getCostByAgentType(e)}getCostByModel(e){return this.costMetrics.getCostByModel(e)}getTotalCost(e){return this.costMetrics.getTotalCost(e)}getCostTrend(e){return this.costMetrics.getCostTrend(e)}getAuditLog(e){return this.routerMetrics.getAuditLog(e)}getOptimizationSuggestions(){return this.costMetrics.getOptimizationSuggestions()}resetMetrics(){this.metrics.reset(),this.routerMetrics.resetMetrics(),this.costMetrics.reset()}clearCache(){this.decisionCache.clear()}async selectManual(e){let t=e.preferredProvider??this.config.defaultProvider,r=e.model??this.config.defaultModel,i=this.providerManager.getProvider(t);return i?this.createDecision(i,t,r,"manual"):this.createFallbackDecision(e,"manual")}async selectRuleBased(e){let t=this.ruleEngine.evaluate(e);if(t){let{rule:o,rulesEvaluated:n}=t,a=o.action.provider,c=this.providerManager.getProvider(a);if(c){let s=this.createDecision(c,a,o.action.model,"rule-match",o);return s.metadata.rulesEvaluated=n,s}}let r=this.config.defaultProvider,i=this.providerManager.getProvider(r);return i?this.createDecision(i,r,this.config.defaultModel,"default"):this.createFallbackDecision(e,"rule-based")}async selectCostOptimized(e){let t=this.providerManager.getAvailableProviders();if(t.length===0)return this.createFallbackDecision(e,"cost-optimized");let r=1/0,i=t[0],o,n=[];for(let a of t){let c=this.providerManager.getProvider(a);if(!c)continue;let{input:s,output:l}=c.getCostPerToken(),d=this.estimateCostValue(e,s,l);n.push({provider:a,model:c.getConfig().model,reason:`Estimated cost: $${d.toFixed(6)}`,estimatedCost:d,excluded:!1}),d<r&&(r=d,i=a,o=c)}if(o){let a=o.getConfig(),c=this.createDecision(o,i,a.model,"cost-optimization");return c.metadata.estimatedCost=this.createCostEstimate(e,o),c.metadata.alternativesConsidered=n,c}return this.createFallbackDecision(e,"cost-optimized")}async selectPerformanceOptimized(e){let t=this.providerManager.getAvailableProviders(),r=this.providerManager.getMetrics();if(t.length===0)return this.createFallbackDecision(e,"performance-optimized");let i=1/0,o=t[0],n,a=[];for(let c of t){let s=this.providerManager.getProvider(c);if(!s)continue;let d=r[c]?.avgLatencyMs??1/0;a.push({provider:c,model:s.getConfig().model,reason:`Avg latency: ${d}ms`,estimatedLatencyMs:d,excluded:!1}),d<i&&(i=d,o=c,n=s)}if(n){let c=n.getConfig(),s=this.createDecision(n,o,c.model,"performance-optimization");return s.metadata.estimatedLatencyMs=i,s.metadata.alternativesConsidered=a,s}return this.createFallbackDecision(e,"performance-optimized")}async executeWithFallback(e,t,r){let{fallbackChain:i,fallbackBehavior:o}=this.config,n,a=0,c=[{provider:t.providerType,model:t.providerModelId}];for(let s of i.entries)if(!(!s.enabled||s.provider===t.providerType||!["claude","openai","ollama"].includes(s.provider)))for(let d of s.models)c.push({provider:s.provider,model:d});for(let{provider:s,model:l}of c){if(a>=o.maxAttempts)break;let d=this.providerManager.getProvider(s);if(!d)continue;a++;let g=Date.now();try{let u=await d.generate(e.messages,{model:l,temperature:e.temperature,maxTokens:e.maxTokens,systemPrompt:e.systemPrompt,timeoutMs:e.timeoutMs,skipCache:e.skipCache,metadata:e.metadata}),y=Date.now()-g;return this.metrics.recordSuccess(s),this.routerMetrics.recordRoutingDecision(t,y,{agentType:e.agentType,success:!0,tokenUsage:u.usage,cost:u.cost}),this.routerMetrics.recordProviderCall(s,l,y,u.usage.totalTokens,{inputTokens:u.usage.promptTokens,outputTokens:u.usage.completionTokens,success:!0,cost:u.cost.totalCost,agentType:e.agentType}),this.costMetrics.recordCostFromInfo(s,l,u.usage,u.cost,{agentType:e.agentType,requestId:u.requestId}),{content:u.content,model:u.model,providerModelId:u.model,provider:u.provider,usage:u.usage,cost:u.cost,latencyMs:u.latencyMs,finishReason:u.finishReason,cached:u.cached,requestId:u.requestId,routingDecision:t}}catch(u){n=S(u);let y=Date.now()-g;if(this.metrics.recordFailure(s),this.routerMetrics.recordProviderCall(s,l,y,0,{success:!1,agentType:e.agentType}),a<c.length){let L=c[a];L&&this.routerMetrics.recordFallback(s,L.provider,n.message,e.agentType)}if(B(u)&&!u.retryable)throw u;a<o.maxAttempts&&await this.delay(o.delayMs)}}throw b(`All providers failed after ${a} attempts: ${n?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:n})}createDecision(e,t,r,i,o){let{canonicalModel:n,providerModelId:a}=this.resolveModelIds(r,t);return{provider:e,providerType:t,model:n,providerModelId:a,reason:i,matchedRule:o,confidence:i==="rule-match"?.95:.8,metadata:{decisionTimeMs:0,timestamp:new Date}}}resolveModelIds(e,t){let i={claude:"anthropic",openai:"openai",ollama:"ollama",openrouter:"openrouter",gemini:"gemini","azure-openai":"azure",bedrock:"bedrock"}[t];if(!i)return{canonicalModel:e,providerModelId:e};try{let o=O(e),n=P(o,i);return{canonicalModel:o,providerModelId:n}}catch{try{if(F(e)){let n=P(e,i);return{canonicalModel:e,providerModelId:n}}}catch{}return{canonicalModel:e,providerModelId:e}}}createFallbackDecision(e,t){for(let i of this.config.fallbackChain.entries){if(!i.enabled||!["claude","openai","ollama"].includes(i.provider))continue;let n=this.providerManager.getProvider(i.provider);if(n)return this.createDecision(n,i.provider,i.models[0],"fallback")}let r=this.providerManager.getAvailableProviders();if(r.length>0){let i=r[0],o=this.providerManager.getProvider(i);return this.createDecision(o,i,o.getConfig().model,"fallback")}throw b(`No providers available for ${t} selection`,"PROVIDER_UNAVAILABLE",{retryable:!1})}generateCacheKey(e){return[this.config.mode,e.agentType??"default",e.complexity??"medium",e.requiresTools?"tools":"no-tools",e.preferredProvider??"any"].join(":")}estimateCostValue(e,t,r){let i=0;e.systemPrompt&&(i+=Math.ceil(e.systemPrompt.length/4));for(let n of e.messages)i+=Math.ceil(n.content.length/4);let o=e.maxTokens??1e3;return i*t+o*r}createCostEstimate(e,t){let{input:r,output:i}=t.getCostPerToken(),o=0;e.systemPrompt&&(o+=Math.ceil(e.systemPrompt.length/4));for(let c of e.messages)o+=Math.ceil(c.content.length/4);let n=e.maxTokens??1e3,a=o*r+n*i;return{inputTokens:o,outputTokens:n,totalCostUsd:a,inputCostPer1M:r*1e6,outputCostPer1M:i*1e6}}delay(e){return new Promise(t=>setTimeout(t,e))}async ensureInitialized(){this.initialized||await this.initialize()}},q=class{decisions=new Map;decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};totalDecisions=0;cacheHits=0;cacheMisses=0;totalRulesEvaluated=0;rulesMatched=0;fallbackCount=0;startTime=new Date;recordDecision(e,t){this.totalDecisions++,this.decisionsByMode[t]++,e.metadata.rulesEvaluated&&(this.totalRulesEvaluated+=e.metadata.rulesEvaluated),e.matchedRule&&this.rulesMatched++,e.reason==="fallback"&&this.fallbackCount++;let r=this.decisions.get(e.providerType);r||(r=this.createEmptyMetrics(e.providerType),this.decisions.set(e.providerType,r)),r.selectionCount++,e.reason==="rule-match"&&r.ruleMatchCount++,e.reason==="fallback"&&r.fallbackCount++}recordSuccess(e){let t=this.decisions.get(e);if(t){let r=t.successRate*t.selectionCount;t.successRate=(r+1)/t.selectionCount}}recordFailure(e){}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(){let e={};for(let[r,i]of this.decisions)e[r]={...i};let t=this.totalDecisions>0?this.rulesMatched/this.totalDecisions:0;return{byProvider:e,totalDecisions:this.totalDecisions,decisionsByMode:{...this.decisionsByMode},avgDecisionTimeMs:0,p95DecisionTimeMs:0,p99DecisionTimeMs:0,fallbackRate:this.totalDecisions>0?this.fallbackCount/this.totalDecisions:0,ruleMatchRate:t,estimatedCostSavings:0,ruleStats:{totalEvaluated:this.totalRulesEvaluated,matched:this.rulesMatched,avgRulesPerDecision:this.totalDecisions>0?this.totalRulesEvaluated/this.totalDecisions:0},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:this.startTime,end:new Date}}}reset(){this.decisions.clear(),this.decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0},this.totalDecisions=0,this.cacheHits=0,this.cacheMisses=0,this.totalRulesEvaluated=0,this.rulesMatched=0,this.fallbackCount=0,this.startTime=new Date}createEmptyMetrics(e){return{provider:e,selectionCount:0,ruleMatchCount:0,fallbackCount:0,avgDecisionTimeMs:0,successRate:1,avgLatencyMs:0,p95LatencyMs:0,p99LatencyMs:0,totalCost:0,totalTokens:0,circuitState:"closed"}}};function Je(p,e){return new T(p,e)}function Qe(p){return new T(p,{mode:"rule-based",rules:A,defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",enableMetrics:!0,cacheDecisions:!0})}export{T as HybridRouter,Je as createHybridRouter,Qe as createQERouter};
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.28");process.exit(0)}
2
+ import{a as h,b as z}from"./chunk-JZ5TPG5T.js";import{a as b,b as B,c as P,d as O,e as F}from"./chunk-XCMM2NLF.js";import{b as k,c as x,d as _,e as w}from"./chunk-RPNBVYWZ.js";import{a as M}from"./chunk-D4YJ3SDF.js";import{b as S,c as U}from"./chunk-5KOR5ZMG.js";import{i as I}from"./chunk-LCSDE5DQ.js";import"./chunk-IVRBWQBU.js";var m={heavyweight:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!0,requiresJsonMode:!0,minContextSize:1e5,costSensitivity:"low",latencySensitivity:"low"},standard:{requiresReasoning:!0,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:5e4,costSensitivity:"medium",latencySensitivity:"medium"},lightweight:{requiresReasoning:!1,requiresTools:!0,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!0,minContextSize:16e3,costSensitivity:"medium",latencySensitivity:"high"},minimal:{requiresReasoning:!1,requiresTools:!1,requiresVision:!1,requiresExtendedThinking:!1,requiresJsonMode:!1,minContextSize:4e3,costSensitivity:"high",latencySensitivity:"medium"}},$={security:m.heavyweight,"test-generation":m.standard,"code-analysis":m.standard,learning:m.standard,performance:{...m.lightweight,costSensitivity:"high"},coordination:m.lightweight,general:{...m.lightweight,requiresJsonMode:!1,latencySensitivity:"medium"},documentation:{...m.minimal,minContextSize:16e3},simple:m.minimal};var v=class{rules=[];constructor(e=[]){this.setRules(e)}setRules(e){this.rules=[...e].filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}getRules(){return[...this.rules]}addRule(e){this.rules.push(e),this.rules=this.rules.filter(t=>t.enabled).sort((t,r)=>r.priority-t.priority)}removeRule(e){let t=this.rules.findIndex(r=>r.id===e);return t>=0?(this.rules.splice(t,1),!0):!1}setRuleEnabled(e,t){let r=this.rules.find(i=>i.id===e);return r?(r.enabled=t,this.rules=this.rules.filter(i=>i.enabled).sort((i,o)=>o.priority-i.priority),!0):!1}evaluate(e){let t=0;for(let r of this.rules)if(t++,this.matchesCondition(e,r.condition))return{rule:r,rulesEvaluated:t};return null}evaluateAll(e){return this.rules.filter(t=>this.matchesCondition(e,t.condition))}matchesCondition(e,t){if(t.agentType!==void 0&&(!e.agentType||!t.agentType.includes(e.agentType))||t.requiresTools!==void 0&&!!e.requiresTools!==t.requiresTools)return!1;if(t.complexity!==void 0){let r=Array.isArray(t.complexity)?t.complexity:[t.complexity];if(!e.complexity||!r.includes(e.complexity))return!1}if(t.localOnly!==void 0&&t.localOnly){let r=["ollama","onnx"];if(e.preferredProvider&&!r.includes(e.preferredProvider))return!1}if(t.requiresReasoning!==void 0&&t.requiresReasoning&&e.complexity==="low")return!1;if(t.tokenRange!==void 0){let r=this.estimateTokens(e);if(t.tokenRange.min!==void 0&&r<t.tokenRange.min||t.tokenRange.max!==void 0&&r>t.tokenRange.max)return!1}return!(t.requiredCapabilities!==void 0&&t.requiredCapabilities.length>0&&(!e.requiredCapabilities||e.requiredCapabilities.length===0||!t.requiredCapabilities.every(i=>e.requiredCapabilities.includes(i)))||t.custom!==void 0&&!t.custom(e))}estimateTokens(e){let t=0;e.systemPrompt&&(t+=Math.ceil(e.systemPrompt.length/4));for(let r of e.messages)t+=Math.ceil(r.content.length/4);return t}},A=[{id:"security-agents-opus",name:"Security Agents to Claude Opus",description:"Route security-critical agents to Claude Opus for best security analysis",condition:{agentType:["security-auditor","security-architect","v3-qe-security-scanner"]},action:{provider:"claude",model:"claude-opus-4-7",temperature:.1},enabled:!0,priority:100},{id:"test-gen-with-tools",name:"Test Generation with Tools",description:"Route test generation requests that need tools to Claude Sonnet",condition:{agentType:["v3-qe-test-generator","tester"],requiresTools:!0},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:95},{id:"high-complexity-reasoning",name:"High Complexity Reasoning",description:"Route high complexity tasks requiring reasoning to advanced models",condition:{complexity:"high",requiresReasoning:!0},action:{provider:"claude",model:"claude-opus-4-7",temperature:.2},enabled:!0,priority:90},{id:"code-analysis-agents",name:"Code Analysis Agents",description:"Route code analysis to Claude Sonnet for balanced performance",condition:{agentType:["code-analyzer","v3-qe-code-intelligence","reviewer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.2},enabled:!0,priority:85},{id:"coverage-analysis",name:"Coverage Analysis Agents",description:"Route coverage analysis to efficient models",condition:{agentType:["v3-qe-coverage-analyzer"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.1},enabled:!0,priority:80},{id:"defect-prediction",name:"Defect Prediction Agents",description:"Route defect prediction to capable models",condition:{agentType:["v3-qe-defect-predictor"]},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:75},{id:"medium-complexity",name:"Medium Complexity Tasks",description:"Route medium complexity to balanced Claude Sonnet",condition:{complexity:"medium"},action:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3},enabled:!0,priority:60},{id:"low-complexity-haiku",name:"Low Complexity to Haiku",description:"Route low complexity tasks to Haiku for cost efficiency",condition:{complexity:"low"},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:50},{id:"local-only-ollama",name:"Local Only Requests",description:"Route local-only requests to Ollama",condition:{localOnly:!0},action:{provider:"ollama",model:"llama3.1",temperature:.3},enabled:!0,priority:40},{id:"small-requests-haiku",name:"Small Token Requests",description:"Route small requests to Haiku for efficiency",condition:{tokenRange:{max:500}},action:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.3},enabled:!0,priority:30}];import{randomUUID as H}from"crypto";var f=class{decisions=[];providerCalls=[];fallbacks=[];cacheHits=0;cacheMisses=0;startTime=new Date;maxRecords;maxCallRecords;constructor(e={}){this.maxRecords=e.maxRecords??1e4,this.maxCallRecords=e.maxCallRecords??5e3}recordRoutingDecision(e,t,r={}){let i={id:`rd-${Date.now()}-${H().slice(0,8)}`,timestamp:new Date,provider:e.providerType,model:e.model,mode:this.inferMode(e.reason),reason:e.reason,latencyMs:t,decisionTimeMs:e.metadata.decisionTimeMs,agentType:r.agentType,success:r.success??!0,tokenUsage:r.tokenUsage,cost:r.cost,wasFallback:e.reason==="fallback",ruleId:e.matchedRule?.id};this.decisions.push(i),this.trimRecords()}recordProviderCall(e,t,r,i,o={}){let n=o.inputTokens??Math.floor(i*.7),a=o.outputTokens??i-n,c={timestamp:new Date,provider:e,model:t,latencyMs:r,inputTokens:n,outputTokens:a,totalTokens:i,success:o.success??!0,cost:o.cost,agentType:o.agentType};this.providerCalls.push(c),this.trimCallRecords()}recordFallback(e,t,r,i){let o={timestamp:new Date,fromProvider:e,toProvider:t,reason:r,agentType:i};this.fallbacks.push(o),this.fallbacks.length>1e3&&(this.fallbacks=this.fallbacks.slice(-1e3))}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(e="all"){let t=this.getWindowStart(e),r=this.filterByTime(this.decisions,t),i=this.filterByTime(this.providerCalls,t),o=this.filterByTime(this.fallbacks,t),n=this.calculateProviderMetrics(r,i),a=this.calculateAgentMetrics(r,i),c=r.map(u=>u.decisionTimeMs),s=r.length,l=this.countByMode(r),d=r.filter(u=>u.wasFallback).length,g=r.filter(u=>u.ruleId).length;return{byProvider:Object.fromEntries(n),byAgentType:a,totalDecisions:s,decisionsByMode:l,avgDecisionTimeMs:this.average(c),p95DecisionTimeMs:this.percentile(c,95),p99DecisionTimeMs:this.percentile(c,99),fallbackRate:s>0?d/s:0,ruleMatchRate:s>0?g/s:0,estimatedCostSavings:this.calculateCostSavings(r),ruleStats:{totalEvaluated:r.reduce((u,y)=>u+1,0),matched:g,avgRulesPerDecision:1},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:t,end:new Date},recentDecisions:r.slice(-50),fallbackStats:this.calculateFallbackStats(o)}}getMetricsByProvider(e){let t=this.decisions.filter(c=>c.provider===e),r=this.providerCalls.filter(c=>c.provider===e),i=r.map(c=>c.latencyMs),o=t.map(c=>c.decisionTimeMs),n=r.filter(c=>c.success),a=r.filter(c=>!c.success);return{provider:e,selectionCount:t.length,ruleMatchCount:t.filter(c=>c.ruleId).length,fallbackCount:t.filter(c=>c.wasFallback).length,avgDecisionTimeMs:this.average(o),successRate:r.length>0?n.length/r.length:1,avgLatencyMs:this.average(i),p95LatencyMs:this.percentile(i,95),p99LatencyMs:this.percentile(i,99),totalCost:r.reduce((c,s)=>c+(s.cost??0),0),totalTokens:r.reduce((c,s)=>c+s.totalTokens,0),totalInputTokens:r.reduce((c,s)=>c+s.inputTokens,0),totalOutputTokens:r.reduce((c,s)=>c+s.outputTokens,0),circuitState:"closed",latencyHistogram:i.slice(-100),decisionTimeHistogram:o.slice(-100),errorCount:a.length,lastError:a.length>0?a[a.length-1].timestamp:void 0,recentCalls:r.slice(-20)}}getMetricsByAgentType(e){let t=this.decisions.filter(s=>s.agentType===e),r=this.providerCalls.filter(s=>s.agentType===e),i=new Map,o=new Map;for(let s of t)i.set(s.provider,(i.get(s.provider)??0)+1),o.set(s.model,(o.get(s.model)??0)+1);let n=r.map(s=>s.latencyMs),a=t.filter(s=>s.wasFallback).length,c=t.filter(s=>s.success).length;return{agentType:e,totalDecisions:t.length,providerDistribution:i,modelDistribution:o,avgLatencyMs:this.average(n),totalCost:r.reduce((s,l)=>s+(l.cost??0),0),totalTokens:r.reduce((s,l)=>s+l.totalTokens,0),fallbackRate:t.length>0?a/t.length:0,successRate:t.length>0?c/t.length:1}}getAuditLog(e={}){let t=this.decisions;e.since&&(t=t.filter(i=>i.timestamp>=e.since)),e.provider&&(t=t.filter(i=>i.provider===e.provider)),e.agentType&&(t=t.filter(i=>i.agentType===e.agentType));let r=e.limit??100;return t.slice(-r).map(i=>({id:i.id,timestamp:i.timestamp,context:{agentType:i.agentType},decision:{providerType:i.provider,model:i.model,providerModelId:i.model,reason:i.reason,confidence:1,metadata:{decisionTimeMs:i.decisionTimeMs,timestamp:i.timestamp}},outcome:{success:i.success,latencyMs:i.latencyMs,tokenUsage:i.tokenUsage,cost:i.cost}}))}resetMetrics(){this.decisions=[],this.providerCalls=[],this.fallbacks=[],this.cacheHits=0,this.cacheMisses=0,this.startTime=new Date}inferMode(e){switch(e){case"manual":return"manual";case"rule-match":return"rule-based";case"cost-optimization":return"cost-optimized";case"performance-optimization":return"performance-optimized";default:return"rule-based"}}trimRecords(){this.decisions.length>this.maxRecords&&(this.decisions=this.decisions.slice(-this.maxRecords))}trimCallRecords(){this.providerCalls.length>this.maxCallRecords&&(this.providerCalls=this.providerCalls.slice(-this.maxCallRecords))}getWindowStart(e){let t=new Date;switch(e){case"1m":return new Date(t.getTime()-60*1e3);case"5m":return new Date(t.getTime()-300*1e3);case"15m":return new Date(t.getTime()-900*1e3);case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);default:return this.startTime}}filterByTime(e,t){return e.filter(r=>r.timestamp>=t)}calculateProviderMetrics(e,t){let r=new Map;for(let i of h){let o=e.filter(l=>l.provider===i),n=t.filter(l=>l.provider===i);if(o.length===0&&n.length===0)continue;let a=n.map(l=>l.latencyMs),c=o.map(l=>l.decisionTimeMs),s=n.filter(l=>l.success);r.set(i,{provider:i,selectionCount:o.length,ruleMatchCount:o.filter(l=>l.ruleId).length,fallbackCount:o.filter(l=>l.wasFallback).length,avgDecisionTimeMs:this.average(c),successRate:n.length>0?s.length/n.length:1,avgLatencyMs:this.average(a),p95LatencyMs:this.percentile(a,95),p99LatencyMs:this.percentile(a,99),totalCost:n.reduce((l,d)=>l+(d.cost??0),0),totalTokens:n.reduce((l,d)=>l+d.totalTokens,0),circuitState:"closed"})}return r}calculateAgentMetrics(e,t){let r=new Set;e.forEach(o=>o.agentType&&r.add(o.agentType)),t.forEach(o=>o.agentType&&r.add(o.agentType));let i=new Map;for(let o of r)i.set(o,this.getMetricsByAgentType(o));return i}countByMode(e){let t={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};for(let r of e)t[r.mode]++;return t}calculateFallbackStats(e){let t=new Map,r=new Map;for(let i of e)t.set(i.fromProvider,(t.get(i.fromProvider)??0)+1),r.set(i.reason,(r.get(i.reason)??0)+1);return{total:e.length,byProvider:t,byReason:r}}calculateCostSavings(e){return e.reduce((t,r)=>r.cost&&r.mode==="cost-optimized"?t+r.cost.totalCost*.2:t,0)}average(e){return e.length===0?0:e.reduce((t,r)=>t+r,0)/e.length}percentile(e,t){if(e.length===0)return 0;let r=[...e].sort((o,n)=>o-n),i=Math.ceil(t/100*r.length)-1;return r[Math.max(0,i)]}};function D(p){return new f(p)}var C=class{records=[];alerts=[];maxRecords;alertCheckInterval;constructor(e={}){this.maxRecords=e.maxRecords??1e4}recordCost(e,t,r,i,o={}){let n=this.calculateCost(t,r,i),a={timestamp:new Date,provider:e,model:t,inputTokens:r,outputTokens:i,inputCost:n.inputCost,outputCost:n.outputCost,totalCost:n.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(a),this.trimRecords(),this.checkAlerts(),a}recordCostFromInfo(e,t,r,i,o={}){let n={timestamp:new Date,provider:e,model:t,inputTokens:r.promptTokens,outputTokens:r.completionTokens,inputCost:i.inputCost,outputCost:i.outputCost,totalCost:i.totalCost,agentType:o.agentType,requestId:o.requestId};return this.records.push(n),this.trimRecords(),this.checkAlerts(),n}getCostByProvider(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Map;for(let o of h){let n=r.filter(s=>s.provider===o);if(n.length===0)continue;let a=n.reduce((s,l)=>s+l.totalCost,0),c=n.reduce((s,l)=>s+l.inputTokens+l.outputTokens,0);i.set(o,{totalCost:a,totalTokens:c,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:c>0?a/c:0})}return i}getCostByAgentType(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(a=>a.agentType&&i.add(a.agentType));let o=new Map;for(let a of i){let c=r.filter(d=>d.agentType===a),s=c.reduce((d,g)=>d+g.totalCost,0),l=c.reduce((d,g)=>d+g.inputTokens+g.outputTokens,0);o.set(a,{totalCost:s,totalTokens:l,totalRequests:c.length,avgCostPerRequest:c.length>0?s/c.length:0,avgCostPerToken:l>0?s/l:0})}let n=r.filter(a=>!a.agentType);if(n.length>0){let a=n.reduce((s,l)=>s+l.totalCost,0),c=n.reduce((s,l)=>s+l.inputTokens+l.outputTokens,0);o.set("unknown",{totalCost:a,totalTokens:c,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:c>0?a/c:0})}return o}getCostByModel(e="all"){let t=this.getPeriodStart(e),r=this.filterByTime(t),i=new Set;r.forEach(n=>i.add(n.model));let o=new Map;for(let n of i){let a=r.filter(l=>l.model===n),c=a.reduce((l,d)=>l+d.totalCost,0),s=a.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0);o.set(n,{totalCost:c,totalTokens:s,totalRequests:a.length,avgCostPerRequest:a.length>0?c/a.length:0,avgCostPerToken:s>0?c/s:0})}return o}getTotalCost(e="all"){let t=this.getPeriodStart(e);return this.filterByTime(t).reduce((i,o)=>i+o.totalCost,0)}getCostTrend(e){let t=new Date,r=[],i,o;switch(e){case"1h":i=300*1e3,o=12;break;case"24h":i=3600*1e3,o=24;break;case"7d":i=1440*60*1e3,o=7;break}for(let n=o-1;n>=0;n--){let a=new Date(t.getTime()-n*i),c=new Date(a.getTime()-i),s=this.records.filter(l=>l.timestamp>=c&&l.timestamp<a);r.push({timestamp:a,cost:s.reduce((l,d)=>l+d.totalCost,0),tokens:s.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0),requests:s.length})}return r}addBudgetAlert(e,t,r){let i={threshold:e,period:t,callback:r,active:!0};return this.alerts.push(i),this.alertCheckInterval||(this.alertCheckInterval=setInterval(()=>this.checkAlerts(),6e4)),`alert-${this.alerts.length-1}`}removeBudgetAlert(e){return e>=0&&e<this.alerts.length?(this.alerts.splice(e,1),this.alerts.length===0&&this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0),!0):!1}getOptimizationSuggestions(){let e=[],t=this.getCostByModel("24h");for(let[n,a]of t)M[n]&&a.totalCost>1&&(n.includes("opus")&&e.push({type:"model-switch",description:"Consider using Sonnet instead of Opus for non-critical tasks",estimatedSavings:a.totalCost*.5,currentCost:a.totalCost,suggestedModel:"claude-sonnet-4-6"}),n==="gpt-4o"&&e.push({type:"model-switch",description:"Consider using GPT-4o-mini for simpler tasks",estimatedSavings:a.totalCost*.7,currentCost:a.totalCost,suggestedModel:"gpt-4o-mini"}));let r=this.getCostByProvider("24h"),i=[...r.values()].reduce((n,a)=>n+a.totalCost,0);return i>10&&!r.has("ollama")&&e.push({type:"provider-switch",description:"Consider using Ollama for development/testing workloads",estimatedSavings:i*.3,currentCost:i,suggestedProvider:"ollama"}),[...t.values()].reduce((n,a)=>n+a.totalRequests,0)>100&&e.push({type:"caching",description:"Enable response caching to reduce redundant API calls",estimatedSavings:i*.15,currentCost:i}),e}getRecords(){return[...this.records]}clear(){this.records=[]}reset(){this.records=[],this.alerts=[],this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}dispose(){this.alertCheckInterval&&(clearInterval(this.alertCheckInterval),this.alertCheckInterval=void 0)}calculateCost(e,t,r){let i=M[e];if(!i)return{inputCost:0,outputCost:0,totalCost:0,currency:"USD"};let o=t/1e6*i.input,n=r/1e6*i.output;return{inputCost:o,outputCost:n,totalCost:o+n,currency:"USD"}}trimRecords(){this.records.length>this.maxRecords&&(this.records=this.records.slice(-this.maxRecords))}getPeriodStart(e){let t=new Date;switch(e){case"1h":return new Date(t.getTime()-3600*1e3);case"24h":return new Date(t.getTime()-1440*60*1e3);case"7d":return new Date(t.getTime()-10080*60*1e3);case"30d":return new Date(t.getTime()-720*60*60*1e3);default:return new Date(0)}}filterByTime(e){return this.records.filter(t=>t.timestamp>=e)}checkAlerts(){for(let e of this.alerts){if(!e.active)continue;let t=this.getTotalCost(e.period);if(t>=e.threshold){e.active=!1;let r=this.getPeriodStart(e.period),i=this.filterByTime(r),o=i.reduce((n,a)=>n+a.inputTokens+a.outputTokens,0);try{e.callback({totalCost:t,totalTokens:o,totalRequests:i.length,avgCostPerRequest:i.length>0?t/i.length:0,avgCostPerToken:o>0?t/o:0})}catch(n){console.error("Budget alert callback error:",n)}}}}};function E(p){return new C(p)}U();var R=class{cache=new Map;maxSize;ttlMs;constructor(e=100,t=6e4){this.maxSize=e,this.ttlMs=t}get(e){let t=this.cache.get(e);return t?Date.now()>t.expiresAt?(this.cache.delete(e),null):t.decision:null}set(e,t){if(this.cache.size>=this.maxSize){let r=this.cache.keys().next().value;r&&this.cache.delete(r)}this.cache.set(e,{decision:t,expiresAt:Date.now()+this.ttlMs})}clear(){this.cache.clear()}getStats(){return{hits:0,misses:0,size:this.cache.size}}},T=class{config;providerManager;ruleEngine;decisionCache;metrics;routerMetrics;costMetrics;initialized=!1;constructor(e,t){this.providerManager=e,this.config={...z,...t};let r=this.config.rules.length>0?this.config.rules:A;this.ruleEngine=new v(r),this.decisionCache=new R(100,this.config.decisionCacheTtlMs),this.metrics=new q,this.routerMetrics=D(),this.costMetrics=E()}async initialize(){this.initialized||(await this.providerManager.initialize(),this.initialized=!0)}getMode(){return this.config.mode}setMode(e){this.config.mode=e,this.decisionCache.clear()}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e},e.rules&&this.ruleEngine.setRules(e.rules),e.decisionCacheTtlMs&&(this.decisionCache=new R(100,e.decisionCacheTtlMs))}async selectProvider(e){await this.ensureInitialized();let t=Date.now();if(this.config.cacheDecisions){let i=this.generateCacheKey(e),o=this.decisionCache.get(i);if(o)return this.metrics.recordCacheHit(),this.routerMetrics.recordCacheHit(),o;this.metrics.recordCacheMiss(),this.routerMetrics.recordCacheMiss()}let r;switch(this.config.mode){case"manual":r=await this.selectManual(e);break;case"rule-based":r=await this.selectRuleBased(e);break;case"cost-optimized":r=await this.selectCostOptimized(e);break;case"performance-optimized":r=await this.selectPerformanceOptimized(e);break;default:r=await this.selectRuleBased(e)}if(r.metadata.decisionTimeMs=Date.now()-t,this.config.cacheDecisions){let i=this.generateCacheKey(e);this.decisionCache.set(i,r)}return this.metrics.recordDecision(r,this.config.mode),r}async chat(e){await this.ensureInitialized();let t=I(),r=await this.selectProvider(e),i=e.agentType??"";if(_(i)&&(x(r.model)||x(r.providerModelId))){let n=r.model,a=r.providerModelId;r.model=w(i,r.model,k),r.providerModelId=w(i,r.providerModelId,k),console.warn(`[aqe] ADR-093: ${i} pinned to ${r.model} (was ${n}/${a}); set AQE_CYBER_VERIFIED=true after Cyber Verification Program approval`)}return await this.executeWithFallback(e,r,t)}async*stream(e){await this.ensureInitialized();let t=await this.selectProvider(e),r=await this.chat(e),i=100;for(let o=0;o<r.content.length;o+=i){let n=o+i>=r.content.length;yield{type:n?"done":"content",delta:r.content.slice(o,o+i),accumulated:r.content.slice(0,o+i),done:n,tokenCount:Math.ceil((o+i)/4),model:r.model,provider:t.providerType,usage:n?r.usage:void 0}}}getMetrics(){return this.metrics.getMetrics()}getEnhancedMetrics(e){return this.routerMetrics.getMetrics(e)}getProviderMetrics(e){return this.routerMetrics.getMetricsByProvider(e)}getAgentMetrics(e){return this.routerMetrics.getMetricsByAgentType(e)}getCostByProvider(e){return this.costMetrics.getCostByProvider(e)}getCostByAgentType(e){return this.costMetrics.getCostByAgentType(e)}getCostByModel(e){return this.costMetrics.getCostByModel(e)}getTotalCost(e){return this.costMetrics.getTotalCost(e)}getCostTrend(e){return this.costMetrics.getCostTrend(e)}getAuditLog(e){return this.routerMetrics.getAuditLog(e)}getOptimizationSuggestions(){return this.costMetrics.getOptimizationSuggestions()}resetMetrics(){this.metrics.reset(),this.routerMetrics.resetMetrics(),this.costMetrics.reset()}clearCache(){this.decisionCache.clear()}async selectManual(e){let t=e.preferredProvider??this.config.defaultProvider,r=e.model??this.config.defaultModel,i=this.providerManager.getProvider(t);return i?this.createDecision(i,t,r,"manual"):this.createFallbackDecision(e,"manual")}async selectRuleBased(e){let t=this.ruleEngine.evaluate(e);if(t){let{rule:o,rulesEvaluated:n}=t,a=o.action.provider,c=this.providerManager.getProvider(a);if(c){let s=this.createDecision(c,a,o.action.model,"rule-match",o);return s.metadata.rulesEvaluated=n,s}}let r=this.config.defaultProvider,i=this.providerManager.getProvider(r);return i?this.createDecision(i,r,this.config.defaultModel,"default"):this.createFallbackDecision(e,"rule-based")}async selectCostOptimized(e){let t=this.providerManager.getAvailableProviders();if(t.length===0)return this.createFallbackDecision(e,"cost-optimized");let r=1/0,i=t[0],o,n=[];for(let a of t){let c=this.providerManager.getProvider(a);if(!c)continue;let{input:s,output:l}=c.getCostPerToken(),d=this.estimateCostValue(e,s,l);n.push({provider:a,model:c.getConfig().model,reason:`Estimated cost: $${d.toFixed(6)}`,estimatedCost:d,excluded:!1}),d<r&&(r=d,i=a,o=c)}if(o){let a=o.getConfig(),c=this.createDecision(o,i,a.model,"cost-optimization");return c.metadata.estimatedCost=this.createCostEstimate(e,o),c.metadata.alternativesConsidered=n,c}return this.createFallbackDecision(e,"cost-optimized")}async selectPerformanceOptimized(e){let t=this.providerManager.getAvailableProviders(),r=this.providerManager.getMetrics();if(t.length===0)return this.createFallbackDecision(e,"performance-optimized");let i=1/0,o=t[0],n,a=[];for(let c of t){let s=this.providerManager.getProvider(c);if(!s)continue;let d=r[c]?.avgLatencyMs??1/0;a.push({provider:c,model:s.getConfig().model,reason:`Avg latency: ${d}ms`,estimatedLatencyMs:d,excluded:!1}),d<i&&(i=d,o=c,n=s)}if(n){let c=n.getConfig(),s=this.createDecision(n,o,c.model,"performance-optimization");return s.metadata.estimatedLatencyMs=i,s.metadata.alternativesConsidered=a,s}return this.createFallbackDecision(e,"performance-optimized")}async executeWithFallback(e,t,r){let{fallbackChain:i,fallbackBehavior:o}=this.config,n,a=0,c=[{provider:t.providerType,model:t.providerModelId}];for(let s of i.entries)if(!(!s.enabled||s.provider===t.providerType||!["claude","openai","ollama"].includes(s.provider)))for(let d of s.models)c.push({provider:s.provider,model:d});for(let{provider:s,model:l}of c){if(a>=o.maxAttempts)break;let d=this.providerManager.getProvider(s);if(!d)continue;a++;let g=Date.now();try{let u=await d.generate(e.messages,{model:l,temperature:e.temperature,maxTokens:e.maxTokens,systemPrompt:e.systemPrompt,timeoutMs:e.timeoutMs,skipCache:e.skipCache,metadata:e.metadata}),y=Date.now()-g;return this.metrics.recordSuccess(s),this.routerMetrics.recordRoutingDecision(t,y,{agentType:e.agentType,success:!0,tokenUsage:u.usage,cost:u.cost}),this.routerMetrics.recordProviderCall(s,l,y,u.usage.totalTokens,{inputTokens:u.usage.promptTokens,outputTokens:u.usage.completionTokens,success:!0,cost:u.cost.totalCost,agentType:e.agentType}),this.costMetrics.recordCostFromInfo(s,l,u.usage,u.cost,{agentType:e.agentType,requestId:u.requestId}),{content:u.content,model:u.model,providerModelId:u.model,provider:u.provider,usage:u.usage,cost:u.cost,latencyMs:u.latencyMs,finishReason:u.finishReason,cached:u.cached,requestId:u.requestId,routingDecision:t}}catch(u){n=S(u);let y=Date.now()-g;if(this.metrics.recordFailure(s),this.routerMetrics.recordProviderCall(s,l,y,0,{success:!1,agentType:e.agentType}),a<c.length){let L=c[a];L&&this.routerMetrics.recordFallback(s,L.provider,n.message,e.agentType)}if(B(u)&&!u.retryable)throw u;a<o.maxAttempts&&await this.delay(o.delayMs)}}throw b(`All providers failed after ${a} attempts: ${n?.message??"Unknown error"}`,"PROVIDER_UNAVAILABLE",{retryable:!1,cause:n})}createDecision(e,t,r,i,o){let{canonicalModel:n,providerModelId:a}=this.resolveModelIds(r,t);return{provider:e,providerType:t,model:n,providerModelId:a,reason:i,matchedRule:o,confidence:i==="rule-match"?.95:.8,metadata:{decisionTimeMs:0,timestamp:new Date}}}resolveModelIds(e,t){let i={claude:"anthropic",openai:"openai",ollama:"ollama",openrouter:"openrouter",gemini:"gemini","azure-openai":"azure",bedrock:"bedrock"}[t];if(!i)return{canonicalModel:e,providerModelId:e};try{let o=O(e),n=P(o,i);return{canonicalModel:o,providerModelId:n}}catch{try{if(F(e)){let n=P(e,i);return{canonicalModel:e,providerModelId:n}}}catch{}return{canonicalModel:e,providerModelId:e}}}createFallbackDecision(e,t){for(let i of this.config.fallbackChain.entries){if(!i.enabled||!["claude","openai","ollama"].includes(i.provider))continue;let n=this.providerManager.getProvider(i.provider);if(n)return this.createDecision(n,i.provider,i.models[0],"fallback")}let r=this.providerManager.getAvailableProviders();if(r.length>0){let i=r[0],o=this.providerManager.getProvider(i);return this.createDecision(o,i,o.getConfig().model,"fallback")}throw b(`No providers available for ${t} selection`,"PROVIDER_UNAVAILABLE",{retryable:!1})}generateCacheKey(e){return[this.config.mode,e.agentType??"default",e.complexity??"medium",e.requiresTools?"tools":"no-tools",e.preferredProvider??"any"].join(":")}estimateCostValue(e,t,r){let i=0;e.systemPrompt&&(i+=Math.ceil(e.systemPrompt.length/4));for(let n of e.messages)i+=Math.ceil(n.content.length/4);let o=e.maxTokens??1e3;return i*t+o*r}createCostEstimate(e,t){let{input:r,output:i}=t.getCostPerToken(),o=0;e.systemPrompt&&(o+=Math.ceil(e.systemPrompt.length/4));for(let c of e.messages)o+=Math.ceil(c.content.length/4);let n=e.maxTokens??1e3,a=o*r+n*i;return{inputTokens:o,outputTokens:n,totalCostUsd:a,inputCostPer1M:r*1e6,outputCostPer1M:i*1e6}}delay(e){return new Promise(t=>setTimeout(t,e))}async ensureInitialized(){this.initialized||await this.initialize()}},q=class{decisions=new Map;decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0};totalDecisions=0;cacheHits=0;cacheMisses=0;totalRulesEvaluated=0;rulesMatched=0;fallbackCount=0;startTime=new Date;recordDecision(e,t){this.totalDecisions++,this.decisionsByMode[t]++,e.metadata.rulesEvaluated&&(this.totalRulesEvaluated+=e.metadata.rulesEvaluated),e.matchedRule&&this.rulesMatched++,e.reason==="fallback"&&this.fallbackCount++;let r=this.decisions.get(e.providerType);r||(r=this.createEmptyMetrics(e.providerType),this.decisions.set(e.providerType,r)),r.selectionCount++,e.reason==="rule-match"&&r.ruleMatchCount++,e.reason==="fallback"&&r.fallbackCount++}recordSuccess(e){let t=this.decisions.get(e);if(t){let r=t.successRate*t.selectionCount;t.successRate=(r+1)/t.selectionCount}}recordFailure(e){}recordCacheHit(){this.cacheHits++}recordCacheMiss(){this.cacheMisses++}getMetrics(){let e={};for(let[r,i]of this.decisions)e[r]={...i};let t=this.totalDecisions>0?this.rulesMatched/this.totalDecisions:0;return{byProvider:e,totalDecisions:this.totalDecisions,decisionsByMode:{...this.decisionsByMode},avgDecisionTimeMs:0,p95DecisionTimeMs:0,p99DecisionTimeMs:0,fallbackRate:this.totalDecisions>0?this.fallbackCount/this.totalDecisions:0,ruleMatchRate:t,estimatedCostSavings:0,ruleStats:{totalEvaluated:this.totalRulesEvaluated,matched:this.rulesMatched,avgRulesPerDecision:this.totalDecisions>0?this.totalRulesEvaluated/this.totalDecisions:0},cacheStats:{hits:this.cacheHits,misses:this.cacheMisses,hitRate:this.cacheHits+this.cacheMisses>0?this.cacheHits/(this.cacheHits+this.cacheMisses):0},period:{start:this.startTime,end:new Date}}}reset(){this.decisions.clear(),this.decisionsByMode={manual:0,"rule-based":0,"cost-optimized":0,"performance-optimized":0},this.totalDecisions=0,this.cacheHits=0,this.cacheMisses=0,this.totalRulesEvaluated=0,this.rulesMatched=0,this.fallbackCount=0,this.startTime=new Date}createEmptyMetrics(e){return{provider:e,selectionCount:0,ruleMatchCount:0,fallbackCount:0,avgDecisionTimeMs:0,successRate:1,avgLatencyMs:0,p95LatencyMs:0,p99LatencyMs:0,totalCost:0,totalTokens:0,circuitState:"closed"}}};function Je(p,e){return new T(p,e)}function Qe(p){return new T(p,{mode:"rule-based",rules:A,defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",enableMetrics:!0,cacheDecisions:!0})}export{T as HybridRouter,Je as createHybridRouter,Qe as createQERouter};
@@ -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.26");process.exit(0)}
2
- import{a,b,c,d,e}from"./chunk-4U57VG6R.js";import"./chunk-ANEIDNH7.js";import"./chunk-DBSEDJ7P.js";import"./chunk-TZ73IAF5.js";import"./chunk-CYPOU765.js";import"./chunk-ARLHD5MG.js";export{a as DEFAULT_HYPERGRAPH_ENGINE_CONFIG,b as HypergraphEngine,c as createHypergraphEngine,d as createHypergraphEngineSync,e as default};
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.28");process.exit(0)}
2
+ import{a,b,c,d,e}from"./chunk-J62GSTYJ.js";import"./chunk-ZKNO5AR4.js";import"./chunk-ZH2WOQP3.js";import"./chunk-5KOR5ZMG.js";import"./chunk-LCSDE5DQ.js";import"./chunk-IVRBWQBU.js";export{a as DEFAULT_HYPERGRAPH_ENGINE_CONFIG,b as HypergraphEngine,c as createHypergraphEngine,d as createHypergraphEngineSync,e as default};
@@ -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.26");process.exit(0)}
2
- import"./chunk-ARLHD5MG.js";import e from"chalk";import{join as m,resolve as h}from"path";import{existsSync as y}from"fs";var c=class{name="hypergraph";description="Query the code knowledge hypergraph";cleanupAndExit;ensureInitialized;constructor(n,r){this.cleanupAndExit=n,this.ensureInitialized=r}register(n,r){let s=n.command("hypergraph").alias("hg").description(this.description);s.command("stats").description("Show hypergraph statistics (node/edge counts by type)").option("--db <path>","Database path").action(async t=>{await this.executeStats(t)}),s.command("untested").description("Find functions with no test coverage").option("--db <path>","Database path").option("--limit <number>","Max results","20").action(async t=>{await this.executeUntested(t)}),s.command("impacted <files...>").description("Find tests impacted by changed files").option("--db <path>","Database path").action(async(t,i)=>{await this.executeImpacted(t,i)}),s.command("gaps").description("Find functions with low coverage").option("--db <path>","Database path").option("--max-coverage <number>","Coverage threshold (%)","50").option("--limit <number>","Max results","20").action(async t=>{await this.executeGaps(t)})}async executeStats(n){if(!await this.ensureInitialized())return;let{engine:r,close:s}=await this.openEngine(n.db);try{let t=await r.getStats();if(console.log(e.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.28");process.exit(0)}
2
+ import"./chunk-IVRBWQBU.js";import e from"chalk";import{join as m,resolve as h}from"path";import{existsSync as y}from"fs";var c=class{name="hypergraph";description="Query the code knowledge hypergraph";cleanupAndExit;ensureInitialized;constructor(n,r){this.cleanupAndExit=n,this.ensureInitialized=r}register(n,r){let s=n.command("hypergraph").alias("hg").description(this.description);s.command("stats").description("Show hypergraph statistics (node/edge counts by type)").option("--db <path>","Database path").action(async t=>{await this.executeStats(t)}),s.command("untested").description("Find functions with no test coverage").option("--db <path>","Database path").option("--limit <number>","Max results","20").action(async t=>{await this.executeUntested(t)}),s.command("impacted <files...>").description("Find tests impacted by changed files").option("--db <path>","Database path").action(async(t,i)=>{await this.executeImpacted(t,i)}),s.command("gaps").description("Find functions with low coverage").option("--db <path>","Database path").option("--max-coverage <number>","Coverage threshold (%)","50").option("--limit <number>","Max results","20").action(async t=>{await this.executeGaps(t)})}async executeStats(n){if(!await this.ensureInitialized())return;let{engine:r,close:s}=await this.openEngine(n.db);try{let t=await r.getStats();if(console.log(e.blue(`
3
3
  Hypergraph Statistics
4
4
  `)),console.log(e.white(` Total nodes: ${t.totalNodes}`)),console.log(e.white(` Total edges: ${t.totalEdges}`)),t.totalNodes>0){console.log(e.gray(`
5
5
  Nodes by type:`));for(let[i,o]of Object.entries(t.nodesByType))o>0&&console.log(e.gray(` ${i}: ${o}`));console.log(e.gray(`
@@ -15,7 +15,7 @@ import"./chunk-ARLHD5MG.js";import e from"chalk";import{join as m,resolve as h}f
15
15
  `))}finally{i()}await this.cleanupAndExit(0)}async executeGaps(n){if(!await this.ensureInitialized())return;let{engine:r,close:s}=await this.openEngine(n.db);try{let t=parseInt(n.maxCoverage,10)||50,i=parseInt(n.limit,10)||20,o=await r.findCoverageGaps(t),a=o.slice(0,i);if(console.log(e.blue(`
16
16
  Coverage Gaps (<= ${t}%) \u2014 ${o.length} total
17
17
  `)),a.length===0)console.log(e.green(" No coverage gaps found!"));else{for(let l of a){let d=l.coverage!==void 0?e.red(` ${l.coverage}%`):"",p=l.complexity?e.yellow(` complexity=${l.complexity}`):"";console.log(e.white(` ${l.name}`)+d+e.gray(` ${l.filePath||""}`)+p)}o.length>i&&console.log(e.gray(`
18
- ... and ${o.length-i} more (use --limit to show more)`))}console.log("")}finally{s()}await this.cleanupAndExit(0)}async openEngine(n){let{findProjectRoot:r}=await import("./unified-memory-4M3V7XL6.js"),{openDatabase:s}=await import("./safe-db-IRAUFZTC.js"),{createHypergraphEngine:t}=await import("./hypergraph-engine-OGGXYQAO.js"),i=r(),o=n||m(i,".agentic-qe","memory.db");if(!y(o))throw new Error(`Database not found: ${o}
18
+ ... and ${o.length-i} more (use --limit to show more)`))}console.log("")}finally{s()}await this.cleanupAndExit(0)}async openEngine(n){let{findProjectRoot:r}=await import("./unified-memory-XE5LJO5T.js"),{openDatabase:s}=await import("./safe-db-BW2OSAL7.js"),{createHypergraphEngine:t}=await import("./hypergraph-engine-QKIUFDJP.js"),i=r(),o=n||m(i,".agentic-qe","memory.db");if(!y(o))throw new Error(`Database not found: ${o}
19
19
  Run "aqe init --auto" first.`);let a=s(o);try{return{engine:await t({db:a,maxTraversalDepth:10,maxQueryResults:1e3,enableVectorSearch:!1}),close:()=>{try{a.close()}catch{}}}}catch(l){try{a.close()}catch{}throw l}}getHelp(){return`
20
20
  Query the code knowledge hypergraph for untested functions,
21
21
  impacted tests, and coverage gaps.
@@ -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.28");process.exit(0)}
2
+ import{a}from"./chunk-BRCWESMJ.js";import"./chunk-VQA6GDNN.js";import"./chunk-4R6DN7IO.js";import"./chunk-PMWIZ7TC.js";import"./chunk-ZH2WOQP3.js";import"./chunk-33VVPBAK.js";import"./chunk-5KOR5ZMG.js";import"./chunk-LCSDE5DQ.js";import"./chunk-IVRBWQBU.js";export{a as ImpactAnalyzerService};