agentic-qe 3.9.13 → 3.9.15

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 (326) hide show
  1. package/.claude/skills/accessibility-testing/SKILL.md +18 -0
  2. package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
  3. package/.claude/skills/pentest-validation/SKILL.md +1 -1
  4. package/.claude/skills/qe-browser/evals/qe-browser.yaml +46 -63
  5. package/.claude/skills/qe-browser/scripts/smoke-test.sh +16 -4
  6. package/.claude/skills/skills-manifest.json +1 -1
  7. package/CHANGELOG.md +51 -0
  8. package/assets/skills/accessibility-testing/SKILL.md +18 -0
  9. package/assets/skills/qe-browser/evals/qe-browser.yaml +46 -63
  10. package/assets/skills/qe-browser/scripts/smoke-test.sh +16 -4
  11. package/assets/skills/skills-manifest.json +1 -1
  12. package/dist/cli/bundle.js +5 -5
  13. package/dist/cli/chunks/adapter-P2EPBJLF.js +2 -0
  14. package/dist/cli/chunks/{agent-booster-wasm-3RBPTJAU.js → agent-booster-wasm-NA2VN5U2.js} +2 -2
  15. package/dist/cli/chunks/{agent-handler-XV45GCWC.js → agent-handler-NRIF5IOC.js} +2 -2
  16. package/dist/cli/chunks/{agent-memory-branch-V6EXWWMY.js → agent-memory-branch-NW3UB2UW.js} +2 -2
  17. package/dist/cli/chunks/aqe-learning-engine-6UITO3NJ.js +2 -0
  18. package/dist/cli/chunks/{audit-WXFI4AC4.js → audit-5CSEDVJR.js} +2 -2
  19. package/dist/cli/chunks/base-JHBJXVGP.js +2 -0
  20. package/dist/cli/chunks/{better-sqlite3-23MIVVHF.js → better-sqlite3-FZ32SHZ6.js} +2 -2
  21. package/dist/cli/chunks/{brain-handler-LQUMAACV.js → brain-handler-ISVST4MR.js} +3 -3
  22. package/dist/cli/chunks/{branch-enumerator-HE37VX7G.js → branch-enumerator-IUHWHIMV.js} +2 -2
  23. package/dist/cli/chunks/{browser-3VG5M7WM.js → browser-D4F3327X.js} +2 -2
  24. package/dist/cli/chunks/browser-workflow-U4OON5DZ.js +2 -0
  25. package/dist/cli/chunks/{chunk-ZS5BM2EE.js → chunk-2BBKAX7X.js} +2 -2
  26. package/dist/cli/chunks/{chunk-6GYMFSPA.js → chunk-2CN2NPJQ.js} +2 -2
  27. package/dist/cli/chunks/{chunk-OGHIQCJU.js → chunk-2L5ZFBHP.js} +2 -2
  28. package/dist/cli/chunks/{chunk-VCJP7HQG.js → chunk-2XW36KDQ.js} +2 -2
  29. package/dist/cli/chunks/{chunk-AOTEEGQA.js → chunk-37ZSWRRP.js} +2 -2
  30. package/dist/cli/chunks/chunk-3BA2FGSA.js +2 -0
  31. package/dist/cli/chunks/{chunk-54A2LVKM.js → chunk-3FUKJT4S.js} +2 -2
  32. package/dist/cli/chunks/chunk-3NIHJIWP.js +2 -0
  33. package/dist/cli/chunks/{chunk-LHZLH6I4.js → chunk-3RSPEFU3.js} +2 -2
  34. package/dist/cli/chunks/{chunk-I6O4MVEY.js → chunk-3Y4YZDHJ.js} +4 -4
  35. package/dist/cli/chunks/{chunk-AEKTVLLF.js → chunk-4M7RBSW6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-LRHJOYKY.js → chunk-4T36OQUK.js} +3 -3
  37. package/dist/cli/chunks/{chunk-XV42SKJD.js → chunk-56YHSI6R.js} +2 -2
  38. package/dist/cli/chunks/{chunk-OBDM6OJL.js → chunk-62MVVEGH.js} +1 -1
  39. package/dist/cli/chunks/chunk-65QA7MYW.js +2 -0
  40. package/dist/cli/chunks/{chunk-RYPUA6E2.js → chunk-6AMD4PZB.js} +2 -2
  41. package/dist/cli/chunks/{chunk-OUNZPHTA.js → chunk-6BHAGCZD.js} +1 -1
  42. package/dist/cli/chunks/{chunk-YBKSENTJ.js → chunk-6F3H2C5H.js} +5 -5
  43. package/dist/cli/chunks/{chunk-OM7A3YC3.js → chunk-6OEGZSRK.js} +2 -2
  44. package/dist/cli/chunks/{chunk-Q3MQYATA.js → chunk-6TOUMCSE.js} +2 -2
  45. package/dist/cli/chunks/chunk-6Z7LYE2B.js +2 -0
  46. package/dist/cli/chunks/{chunk-TRJRRJV3.js → chunk-7J5KWUC2.js} +1 -1
  47. package/dist/cli/chunks/{chunk-VWEGO7BY.js → chunk-7ZPNQ3T6.js} +1 -1
  48. package/dist/cli/chunks/{chunk-6LDRSG7C.js → chunk-AE65B2ZE.js} +3 -3
  49. package/dist/cli/chunks/{chunk-D22MEX2U.js → chunk-AVKUFN3C.js} +2 -2
  50. package/dist/cli/chunks/{chunk-4VETZICF.js → chunk-B4BOOOYM.js} +1 -1
  51. package/dist/cli/chunks/{chunk-Y7YSJD4I.js → chunk-BGUCXJEJ.js} +2 -2
  52. package/dist/cli/chunks/{chunk-JV7HKHQS.js → chunk-C5BRTU4V.js} +2 -2
  53. package/dist/cli/chunks/{chunk-FEGITTAE.js → chunk-CF3W34BA.js} +1 -1
  54. package/dist/cli/chunks/chunk-CSB2M7IX.js +2 -0
  55. package/dist/cli/chunks/{chunk-ERGY45RL.js → chunk-CUQBOVRP.js} +1 -1
  56. package/dist/cli/chunks/{chunk-W6LEOFA4.js → chunk-CWWUBZNX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-GKRKCJ6D.js → chunk-D32YCVCA.js} +2 -2
  58. package/dist/cli/chunks/{chunk-E7P6GAD7.js → chunk-D3FV5NNA.js} +2 -2
  59. package/dist/cli/chunks/{chunk-YYQVSVBO.js → chunk-D3ZUSXFY.js} +2 -2
  60. package/dist/cli/chunks/{chunk-6HSHLSGU.js → chunk-DATFN5DG.js} +2 -2
  61. package/dist/cli/chunks/{chunk-UCCNB75R.js → chunk-DPEG44BS.js} +2 -2
  62. package/dist/cli/chunks/chunk-DYQ7HTEU.js +12 -0
  63. package/dist/cli/chunks/{chunk-SL66MHDM.js → chunk-E3EDVRB5.js} +1 -1
  64. package/dist/cli/chunks/chunk-ELLNKP3I.js +24 -0
  65. package/dist/cli/chunks/{chunk-3RM2VNYG.js → chunk-EORSYD66.js} +2 -2
  66. package/dist/cli/chunks/{chunk-OHG6SNIA.js → chunk-ESQSX37W.js} +2 -2
  67. package/dist/cli/chunks/{chunk-H53V7GI3.js → chunk-EY2DGYQX.js} +1 -1
  68. package/dist/cli/chunks/chunk-FEVTMHO6.js +2 -0
  69. package/dist/cli/chunks/{chunk-Q7TWE55T.js → chunk-FSOY2XB4.js} +4 -4
  70. package/dist/cli/chunks/{chunk-QIE76ERL.js → chunk-FW6QBTPE.js} +1 -1
  71. package/dist/cli/chunks/{chunk-5TDHUYYF.js → chunk-G3FUOFXA.js} +2 -2
  72. package/dist/cli/chunks/{chunk-BUIMIUJA.js → chunk-GHEO5YVA.js} +1 -1
  73. package/dist/cli/chunks/chunk-GLJ6CJNY.js +5 -0
  74. package/dist/cli/chunks/{chunk-V6UODTBP.js → chunk-GWUO3RY5.js} +1 -1
  75. package/dist/cli/chunks/{chunk-3IJ4NRJF.js → chunk-H6DAP4KS.js} +2 -2
  76. package/dist/cli/chunks/chunk-HJNFBJT5.js +3021 -0
  77. package/dist/cli/chunks/{chunk-KULWZMVC.js → chunk-HNAQNAGI.js} +4 -4
  78. package/dist/cli/chunks/{chunk-VU7ENCSU.js → chunk-HPY7HGVQ.js} +2 -2
  79. package/dist/cli/chunks/{chunk-4PCHU2X7.js → chunk-HWK27KJK.js} +1 -1
  80. package/dist/cli/chunks/chunk-ICXWXO5P.js +2 -0
  81. package/dist/cli/chunks/{chunk-OKCI6BNZ.js → chunk-IHDW4HW7.js} +2 -2
  82. package/dist/cli/chunks/chunk-II5KTTIS.js +65 -0
  83. package/dist/cli/chunks/{chunk-OP54A7C6.js → chunk-IMLH32AG.js} +2 -2
  84. package/dist/cli/chunks/{chunk-TNQBHQFH.js → chunk-IPTGPCEL.js} +2 -2
  85. package/dist/cli/chunks/{chunk-V2CV6J2A.js → chunk-IPVKVPAF.js} +2 -2
  86. package/dist/cli/chunks/{chunk-AV23XNRL.js → chunk-ISNXE6TP.js} +2 -2
  87. package/dist/cli/chunks/{chunk-CF5EJGOV.js → chunk-JAIIPEE6.js} +2 -2
  88. package/dist/cli/chunks/{chunk-3AOWTHLS.js → chunk-JJDHD7SC.js} +2 -2
  89. package/dist/cli/chunks/{chunk-HXLAXSEM.js → chunk-JQRR37YY.js} +2 -2
  90. package/dist/cli/chunks/chunk-KJTXY3DW.js +3 -0
  91. package/dist/cli/chunks/{chunk-XXQYSDLV.js → chunk-KKBSX43Q.js} +2 -2
  92. package/dist/cli/chunks/{chunk-EBQUXPIG.js → chunk-LLVS3UYZ.js} +2 -2
  93. package/dist/cli/chunks/{chunk-VJN7NQGI.js → chunk-LNUWNRRJ.js} +10 -10
  94. package/dist/cli/chunks/{chunk-IQGVQBVS.js → chunk-MBDX4OHD.js} +1 -1
  95. package/dist/cli/chunks/{chunk-ZXJNX5D2.js → chunk-MHL6CPGY.js} +1 -1
  96. package/dist/cli/chunks/{chunk-YCQ2GHFH.js → chunk-MO4Q5ZGE.js} +2 -2
  97. package/dist/cli/chunks/{chunk-AZPDX4KS.js → chunk-MS6T4VCU.js} +2 -2
  98. package/dist/cli/chunks/chunk-N2RPLPVG.js +18 -0
  99. package/dist/cli/chunks/chunk-NL2PQLRD.js +2 -0
  100. package/dist/cli/chunks/{chunk-GHAEDZDE.js → chunk-NWMYV7KG.js} +2 -2
  101. package/dist/cli/chunks/{chunk-ZUW3KVML.js → chunk-O6CHLZYT.js} +2 -2
  102. package/dist/cli/chunks/{chunk-EC2CI3ZC.js → chunk-O6J7MKRV.js} +2 -2
  103. package/dist/cli/chunks/{chunk-SSZMISGC.js → chunk-OBZMQFWG.js} +3 -3
  104. package/dist/cli/chunks/{chunk-TU3JIH3U.js → chunk-OHESV6I3.js} +4 -4
  105. package/dist/cli/chunks/{chunk-X3UVXJIK.js → chunk-OMTYOIOS.js} +2 -2
  106. package/dist/cli/chunks/{chunk-TPTKR5ZO.js → chunk-ORKGVVXK.js} +1 -1
  107. package/dist/cli/chunks/{chunk-QHCOAG7D.js → chunk-OUP2X3LT.js} +1 -1
  108. package/dist/cli/chunks/{chunk-DY5JRJXV.js → chunk-PSOIVDD2.js} +3 -3
  109. package/dist/cli/chunks/{chunk-UDIRBCZW.js → chunk-Q3E6Z2RQ.js} +1 -1
  110. package/dist/cli/chunks/{chunk-RMNZSGTE.js → chunk-Q3GDSFGA.js} +2 -2
  111. package/dist/cli/chunks/{chunk-FLML5IT7.js → chunk-QNLZKD7E.js} +2 -2
  112. package/dist/cli/chunks/{chunk-WVWB7K6H.js → chunk-R4G64UH3.js} +2 -2
  113. package/dist/cli/chunks/{chunk-ES6CEZG2.js → chunk-REUGPZIA.js} +1 -1
  114. package/dist/cli/chunks/{chunk-FS4TPAAA.js → chunk-RODJK6G6.js} +1 -1
  115. package/dist/cli/chunks/{chunk-4MZZMWF6.js → chunk-RPOW5LWO.js} +1 -1
  116. package/dist/cli/chunks/{chunk-BE2DYHUB.js → chunk-RSOOENGE.js} +2 -2
  117. package/dist/cli/chunks/{chunk-RURYOWWU.js → chunk-RTVD7SZQ.js} +1 -1
  118. package/dist/cli/chunks/{chunk-Z6F4GRXY.js → chunk-RWVFOXYM.js} +2 -2
  119. package/dist/cli/chunks/{chunk-2RTGP76Y.js → chunk-SSQ42GI7.js} +2 -2
  120. package/dist/cli/chunks/{chunk-AXDGBI4Y.js → chunk-SXUX6PTE.js} +1 -1
  121. package/dist/cli/chunks/{chunk-MXT7YUOZ.js → chunk-TJDAXI6E.js} +2 -2
  122. package/dist/cli/chunks/{chunk-ZN7KPIJW.js → chunk-TZWCVGG2.js} +1 -1
  123. package/dist/cli/chunks/{chunk-TWRGM5TY.js → chunk-U4WDJPRL.js} +2 -2
  124. package/dist/cli/chunks/chunk-UZOFXYNC.js +2 -0
  125. package/dist/cli/chunks/{chunk-TOS3PI5Q.js → chunk-V65DK6ZZ.js} +1 -1
  126. package/dist/cli/chunks/{chunk-7HX2PMBB.js → chunk-V6QARSVQ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-VHSDZEYF.js → chunk-V775NJOM.js} +1 -1
  128. package/dist/cli/chunks/{chunk-QNUVC6OX.js → chunk-VBEVZUQW.js} +1 -1
  129. package/dist/cli/chunks/{chunk-OJGR56BP.js → chunk-VDDQSW4L.js} +2 -2
  130. package/dist/cli/chunks/{chunk-DHYJMGKC.js → chunk-W4PUKTBF.js} +1 -1
  131. package/dist/cli/chunks/{chunk-CPRYUCPC.js → chunk-WAQ3U4FC.js} +1 -1
  132. package/dist/cli/chunks/{chunk-HJHFGPGP.js → chunk-WCOJGDGO.js} +2 -2
  133. package/dist/cli/chunks/{chunk-77GZ7LXL.js → chunk-WI6UA5HV.js} +2 -2
  134. package/dist/cli/chunks/{chunk-HHRUXDLT.js → chunk-XALB3KRR.js} +2 -2
  135. package/dist/cli/chunks/{chunk-W2YCNX4O.js → chunk-XXRDI53H.js} +2 -2
  136. package/dist/cli/chunks/{chunk-JOCR5TWI.js → chunk-YCYFUYCE.js} +2 -2
  137. package/dist/cli/chunks/{chunk-WQIB5ERQ.js → chunk-ZHTCZGML.js} +2 -2
  138. package/dist/cli/chunks/{chunk-WQGP5ULD.js → chunk-ZOAPOVYW.js} +2 -2
  139. package/dist/cli/chunks/{chunk-VVVIRGO7.js → chunk-ZSC7NHK3.js} +2 -2
  140. package/dist/cli/chunks/{ci-FEEIAOQN.js → ci-BGUUHDUS.js} +2 -2
  141. package/dist/cli/chunks/{ci-output-2WMUTORB.js → ci-output-CDFRGBNU.js} +2 -2
  142. package/dist/cli/chunks/{circuit-breaker-MFEE23XA.js → circuit-breaker-S3NFX6RQ.js} +2 -2
  143. package/dist/cli/chunks/{claude-flow-setup-6D655INK.js → claude-flow-setup-AJIPJFMC.js} +2 -2
  144. package/dist/cli/chunks/client-UHHMKUPF.js +2 -0
  145. package/dist/cli/chunks/{cline-installer-5PIYMPAG.js → cline-installer-6O4KZ5UH.js} +2 -2
  146. package/dist/cli/chunks/{code-ACS453WG.js → code-IZALXUL5.js} +2 -2
  147. package/dist/cli/chunks/{code-index-extractor-5SERI6TM.js → code-index-extractor-N7VDH4XF.js} +2 -2
  148. package/dist/cli/chunks/{codex-installer-WCUUWHP5.js → codex-installer-35GTWCFJ.js} +2 -2
  149. package/dist/cli/chunks/{completions-6WFG3FPJ.js → completions-XPJFHGG2.js} +2 -2
  150. package/dist/cli/chunks/{complexity-analyzer-IFZEFCB6.js → complexity-analyzer-DNLCJGUJ.js} +2 -2
  151. package/dist/cli/chunks/{continuedev-installer-RW6FEEND.js → continuedev-installer-PXAIKNYO.js} +2 -2
  152. package/dist/cli/chunks/{copilot-installer-UZPE65RL.js → copilot-installer-2TQ5IZNY.js} +2 -2
  153. package/dist/cli/chunks/{cost-tracker-2R4FT6TY.js → cost-tracker-A5XH4W6S.js} +2 -2
  154. package/dist/cli/chunks/{coverage-ZUC5U47P.js → coverage-EPIMXTLW.js} +3 -3
  155. package/dist/cli/chunks/cross-domain-router-GEBXTPZW.js +2 -0
  156. package/dist/cli/chunks/{cursor-installer-7JBZT7JZ.js → cursor-installer-WMMRPW44.js} +2 -2
  157. package/dist/cli/chunks/daemon-55DSODOH.js +19 -0
  158. package/dist/cli/chunks/{dag-attention-scheduler-MS7D2NFM.js → dag-attention-scheduler-5DSWXMMK.js} +2 -2
  159. package/dist/cli/chunks/{detect-UHOSHYVB.js → detect-NOS46AWN.js} +2 -2
  160. package/dist/cli/chunks/{domain-handler-BVW4AX7O.js → domain-handler-BFRNU6S3.js} +2 -2
  161. package/dist/cli/chunks/{domain-transfer-PA2ENF3D.js → domain-transfer-BPSA4HFR.js} +2 -2
  162. package/dist/cli/chunks/dream-XBRGYPBC.js +2 -0
  163. package/dist/cli/chunks/esm-node-EV4HOHTZ.js +2 -0
  164. package/dist/cli/chunks/eval-YDLM23FB.js +15 -0
  165. package/dist/cli/chunks/{fast-paths-DYQ5NC4Y.js → fast-paths-GISZ7HBO.js} +2 -2
  166. package/dist/cli/chunks/{feature-flags-V34UZPHG.js → feature-flags-3FLJF6CQ.js} +2 -2
  167. package/dist/cli/chunks/{feature-flags-YMMGYWT3.js → feature-flags-5WGZLUPQ.js} +2 -2
  168. package/dist/cli/chunks/{file-discovery-75ZHSK4G.js → file-discovery-PPHUMFSI.js} +2 -2
  169. package/dist/cli/chunks/{fleet-DD2CFGJL.js → fleet-LHFZ53FS.js} +3 -3
  170. package/dist/cli/chunks/{gnn-wrapper-UXM3L5LV.js → gnn-wrapper-Z45DRWGI.js} +2 -2
  171. package/dist/cli/chunks/{heartbeat-handler-ANHRYXNS.js → heartbeat-handler-VMLJ5PDH.js} +4 -4
  172. package/dist/cli/chunks/heartbeat-scheduler-GUWYDHEY.js +2 -0
  173. package/dist/cli/chunks/hnsw-adapter-BG73YVXI.js +2 -0
  174. package/dist/cli/chunks/hnsw-index-K73ZTLJN.js +2 -0
  175. package/dist/cli/chunks/{hnsw-legacy-bridge-IFUEUOVF.js → hnsw-legacy-bridge-S7UZWDUP.js} +2 -2
  176. package/dist/cli/chunks/{hnswlib-node-GYVDPTWU.js → hnswlib-node-MIAAS7OI.js} +2 -2
  177. package/dist/cli/chunks/{hooks-R3DQNG2F.js → hooks-ZN4FV5XS.js} +6 -6
  178. package/dist/cli/chunks/{hybrid-router-MSCQ2XGU.js → hybrid-router-Y6LBFPL7.js} +2 -2
  179. package/dist/cli/chunks/{hypergraph-engine-3TKB5O7T.js → hypergraph-engine-KK73LZYZ.js} +2 -2
  180. package/dist/cli/chunks/{hypergraph-handler-4APYID2S.js → hypergraph-handler-OBGDPIWG.js} +3 -3
  181. package/dist/cli/chunks/impact-analyzer-GWIUYYCQ.js +2 -0
  182. package/dist/cli/chunks/{init-handler-E7B2GKH3.js → init-handler-JJJ7VHM4.js} +6 -6
  183. package/dist/cli/chunks/init-wizard-RIJJAKE3.js +2 -0
  184. package/dist/cli/chunks/kernel-SIPBCRGL.js +2 -0
  185. package/dist/cli/chunks/{kilocode-installer-WY6VTFSA.js → kilocode-installer-EF6DPX2D.js} +2 -2
  186. package/dist/cli/chunks/{kiro-installer-SCNF3JXD.js → kiro-installer-SG74CEVO.js} +2 -2
  187. package/dist/cli/chunks/knowledge-graph-NOYZXHIG.js +2 -0
  188. package/dist/cli/chunks/learning-LVWYMHF6.js +107 -0
  189. package/dist/cli/chunks/{llm-router-RBKYYHBJ.js → llm-router-QFK7MNPY.js} +4 -4
  190. package/dist/cli/chunks/{load-FY64UGHV.js → load-6XPV4WA2.js} +2 -2
  191. package/dist/cli/chunks/load-test-DIMUH75F.js +2 -0
  192. package/dist/cli/chunks/{mcp-6VMQOWMX.js → mcp-GZXOPYMH.js} +2 -2
  193. package/dist/cli/chunks/{memory-Y5RO4PGM.js → memory-QTE2Z5HU.js} +5 -5
  194. package/dist/cli/chunks/memory-backend-IWOGO4BV.js +2 -0
  195. package/dist/cli/chunks/{memory-handlers-CMMVHHPG.js → memory-handlers-PC4P4YEF.js} +2 -2
  196. package/dist/cli/chunks/{multi-model-executor-JO3MNMPZ.js → multi-model-executor-FZOPSUOT.js} +3 -3
  197. package/dist/cli/chunks/{opencode-installer-WQBTY6JT.js → opencode-installer-CITDTCUQ.js} +2 -2
  198. package/dist/cli/chunks/{orchestrator-4J7OSNSG.js → orchestrator-ZTG7MFHQ.js} +20 -20
  199. package/dist/cli/chunks/{pipeline-63T6HN72.js → pipeline-QXO4EJP4.js} +2 -2
  200. package/dist/cli/chunks/{platform-UJMD4EPZ.js → platform-JJEDYCAK.js} +2 -2
  201. package/dist/cli/chunks/{plugin-NDOZ63JW.js → plugin-ZEKRM6F7.js} +2 -2
  202. package/dist/cli/chunks/{prime-radiant-advanced-wasm-ELGHVIFI.js → prime-radiant-advanced-wasm-GRS4T6LR.js} +2 -2
  203. package/dist/cli/chunks/protocol-executor-NT4TILJW.js +2 -0
  204. package/dist/cli/chunks/{protocol-handler-KYERIMVF.js → protocol-handler-KWI2T6OR.js} +2 -2
  205. package/dist/cli/chunks/{prove-ATSSBP4Z.js → prove-7FJN2HEH.js} +2 -2
  206. package/dist/cli/chunks/{provider-manager-YYMIF23V.js → provider-manager-QYYZZLLO.js} +2 -2
  207. package/dist/cli/chunks/qe-reasoning-bank-VDROHXFS.js +2 -0
  208. package/dist/cli/chunks/{quality-2AGJSJW6.js → quality-4NHO2NY5.js} +2 -2
  209. package/dist/cli/chunks/queen-coordinator-7LO73IV3.js +2 -0
  210. package/dist/cli/chunks/{real-embeddings-H36GVXMI.js → real-embeddings-SIELAOWX.js} +2 -2
  211. package/dist/cli/chunks/{roocode-installer-PMRBAY7O.js → roocode-installer-ANYXH3NR.js} +2 -2
  212. package/dist/cli/chunks/router-SFVOLN2W.js +2 -0
  213. package/dist/cli/chunks/routing-feedback-MRFV7WUZ.js +2 -0
  214. package/dist/cli/chunks/{routing-handler-Z7VZSDXW.js → routing-handler-6QQHK4KV.js} +2 -2
  215. package/dist/cli/chunks/{ruvector-commands-N3FZ3ZEE.js → ruvector-commands-YEUA3MZB.js} +2 -2
  216. package/dist/cli/chunks/{rvf-dual-writer-L5DQHUF3.js → rvf-dual-writer-UJFRHPVE.js} +2 -2
  217. package/dist/cli/chunks/{rvf-migration-adapter-NPGFA3SL.js → rvf-migration-adapter-CSDFG7UA.js} +2 -2
  218. package/dist/cli/chunks/{rvf-migration-coordinator-MCJDNKXG.js → rvf-migration-coordinator-QO7OENQF.js} +2 -2
  219. package/dist/cli/chunks/rvf-native-adapter-6L7FZZC7.js +2 -0
  220. package/dist/cli/chunks/safe-db-PYWBVGOV.js +2 -0
  221. package/dist/cli/chunks/schedule-BUQU75HY.js +2 -0
  222. package/dist/cli/chunks/scheduler-XOSKWZO2.js +2 -0
  223. package/dist/cli/chunks/{security-TX7TXUGI.js → security-QCIUC5FX.js} +3 -3
  224. package/dist/cli/chunks/shared-rvf-adapter-OZ7S4ZQL.js +2 -0
  225. package/dist/cli/chunks/{shared-rvf-dual-writer-6K3ZAG7P.js → shared-rvf-dual-writer-LVJJS3PD.js} +2 -2
  226. package/dist/cli/chunks/sqlite-persistence-7UXQZ5Y6.js +2 -0
  227. package/dist/cli/chunks/{status-handler-MIRLQRNN.js → status-handler-O77A4JWM.js} +2 -2
  228. package/dist/cli/chunks/{structural-health-CIHASLUE.js → structural-health-WIIBIIQI.js} +2 -2
  229. package/dist/cli/chunks/{sync-FGLAP7EK.js → sync-UN6D6OF2.js} +2 -2
  230. package/dist/cli/chunks/{task-handler-7HMPRCHY.js → task-handler-RBOSMJCK.js} +2 -2
  231. package/dist/cli/chunks/{task-handlers-DQLQCLCT.js → task-handlers-VWMXQKAT.js} +2 -2
  232. package/dist/cli/chunks/{test-JKDO5ZHU.js → test-XK5M3PGT.js} +4 -4
  233. package/dist/cli/chunks/{test-scheduling-2YKZ7PVZ.js → test-scheduling-CTQ3JJ7G.js} +4 -4
  234. package/dist/cli/chunks/{token-bootstrap-C7UUPMQN.js → token-bootstrap-D5CQ3I5M.js} +2 -2
  235. package/dist/cli/chunks/{token-usage-2RVIPCY4.js → token-usage-L4QSLWQ5.js} +2 -2
  236. package/dist/cli/chunks/{transformers-UEMAGHQ5.js → transformers-SRPJDBKA.js} +2 -2
  237. package/dist/cli/chunks/{tree-sitter-wasm-parser-MELABICK.js → tree-sitter-wasm-parser-DOU5ITWB.js} +2 -2
  238. package/dist/cli/chunks/{types-5B4RD7ZV.js → types-LECYZUBN.js} +2 -2
  239. package/dist/cli/chunks/unified-memory-L6735TFM.js +2 -0
  240. package/dist/cli/chunks/unified-memory-hnsw-7TZNEDGY.js +2 -0
  241. package/dist/cli/chunks/unified-persistence-FNYZ3C2B.js +2 -0
  242. package/dist/cli/chunks/{validate-CHDG7SC3.js → validate-SIKNIS6B.js} +2 -2
  243. package/dist/cli/chunks/{validate-swarm-LB7GORKE.js → validate-swarm-EHAMMILJ.js} +2 -2
  244. package/dist/cli/chunks/{vibium-ZMC4G2YA.js → vibium-LJ4NYXMZ.js} +2 -2
  245. package/dist/cli/chunks/visual-security-SMPZPDY4.js +2 -0
  246. package/dist/cli/chunks/{web-tree-sitter-THNO6S2V.js → web-tree-sitter-DZQ3T4JD.js} +2 -2
  247. package/dist/cli/chunks/{windsurf-installer-LRB43BPX.js → windsurf-installer-U6Z73O6J.js} +2 -2
  248. package/dist/cli/chunks/witness-chain-FNCOTWFA.js +2 -0
  249. package/dist/cli/chunks/{witness-chain-JC5UBXPM.js → witness-chain-JE3QU4YP.js} +2 -2
  250. package/dist/cli/chunks/{workflow-Q4IYQ6F2.js → workflow-62QXGZQO.js} +4 -4
  251. package/dist/cli/chunks/workflow-orchestrator-RCR4N7OA.js +2 -0
  252. package/dist/cli/chunks/{wrappers-WSSLMFSE.js → wrappers-CAX5EZSH.js} +2 -2
  253. package/dist/cli/commands/eval.js +86 -0
  254. package/dist/cli/commands/learning.js +28 -8
  255. package/dist/domains/chaos-resilience/services/chaos-engineer.js +1 -1
  256. package/dist/domains/constants.d.ts +1 -1
  257. package/dist/domains/constants.js +1 -1
  258. package/dist/domains/contract-testing/services/contract-validator.js +1 -1
  259. package/dist/domains/learning-optimization/services/learning-coordinator.js +1 -1
  260. package/dist/domains/test-execution/services/test-executor.js +1 -1
  261. package/dist/domains/test-generation/services/test-data-generator.d.ts +1 -0
  262. package/dist/domains/test-generation/services/test-data-generator.js +17 -3
  263. package/dist/domains/visual-accessibility/services/visual-tester.js +1 -1
  264. package/dist/init/browser-engine-installer.d.ts +60 -1
  265. package/dist/init/browser-engine-installer.js +73 -3
  266. package/dist/init/phases/09-assets.js +9 -2
  267. package/dist/mcp/bundle.js +1782 -1790
  268. package/dist/mcp/protocol-server.js +20 -10
  269. package/dist/validation/command-eval-runner.d.ts +154 -0
  270. package/dist/validation/command-eval-runner.js +293 -0
  271. package/dist/validation/index.d.ts +2 -0
  272. package/dist/validation/index.js +4 -0
  273. package/package.json +7 -5
  274. package/dist/cli/chunks/adapter-VP3WBXE5.js +0 -2
  275. package/dist/cli/chunks/aqe-learning-engine-ASPPEOKQ.js +0 -2
  276. package/dist/cli/chunks/base-SIAOYPTD.js +0 -2
  277. package/dist/cli/chunks/browser-workflow-BG3M3RZU.js +0 -2
  278. package/dist/cli/chunks/chunk-3I6KWFJT.js +0 -2
  279. package/dist/cli/chunks/chunk-4WJ3BHCN.js +0 -24
  280. package/dist/cli/chunks/chunk-67TMNSO3.js +0 -3
  281. package/dist/cli/chunks/chunk-APQYMAKG.js +0 -65
  282. package/dist/cli/chunks/chunk-BSTCXDVH.js +0 -2
  283. package/dist/cli/chunks/chunk-F74IVEON.js +0 -2
  284. package/dist/cli/chunks/chunk-FHWDVN65.js +0 -18
  285. package/dist/cli/chunks/chunk-HEHGQM2H.js +0 -3029
  286. package/dist/cli/chunks/chunk-HRD7LL7Q.js +0 -2
  287. package/dist/cli/chunks/chunk-QKTB5FZP.js +0 -2
  288. package/dist/cli/chunks/chunk-R4B2B6MZ.js +0 -5
  289. package/dist/cli/chunks/chunk-SI7AQK7I.js +0 -2
  290. package/dist/cli/chunks/chunk-TVASP2E6.js +0 -2
  291. package/dist/cli/chunks/chunk-VLZBQ3XN.js +0 -2
  292. package/dist/cli/chunks/chunk-Y2ONHWXI.js +0 -2
  293. package/dist/cli/chunks/chunk-YCTGWMCP.js +0 -12
  294. package/dist/cli/chunks/client-LMOHUGOA.js +0 -2
  295. package/dist/cli/chunks/cross-domain-router-IZB5ZMXO.js +0 -2
  296. package/dist/cli/chunks/daemon-YNF54UYB.js +0 -19
  297. package/dist/cli/chunks/dream-SAPSS25B.js +0 -2
  298. package/dist/cli/chunks/esm-node-FTBUMV4L.js +0 -2
  299. package/dist/cli/chunks/eval-Y3ODM7JU.js +0 -15
  300. package/dist/cli/chunks/heartbeat-scheduler-HYVMXCXT.js +0 -2
  301. package/dist/cli/chunks/hnsw-adapter-CBDRZLXX.js +0 -2
  302. package/dist/cli/chunks/hnsw-index-EOJG4VF4.js +0 -2
  303. package/dist/cli/chunks/impact-analyzer-C2TXXYPC.js +0 -2
  304. package/dist/cli/chunks/init-wizard-IQV7SBMW.js +0 -2
  305. package/dist/cli/chunks/kernel-NJOPFGK7.js +0 -2
  306. package/dist/cli/chunks/knowledge-graph-EUMGCQPH.js +0 -2
  307. package/dist/cli/chunks/learning-Y4OZJFBV.js +0 -107
  308. package/dist/cli/chunks/load-test-LBYVVG35.js +0 -2
  309. package/dist/cli/chunks/memory-backend-NQMJKHCQ.js +0 -2
  310. package/dist/cli/chunks/protocol-executor-ZSWPG5SU.js +0 -2
  311. package/dist/cli/chunks/qe-reasoning-bank-4RLPRCGF.js +0 -2
  312. package/dist/cli/chunks/queen-coordinator-KQ673NYE.js +0 -2
  313. package/dist/cli/chunks/router-UBNV4H5S.js +0 -2
  314. package/dist/cli/chunks/routing-feedback-BMMGZ346.js +0 -2
  315. package/dist/cli/chunks/rvf-native-adapter-LXBCTTVF.js +0 -2
  316. package/dist/cli/chunks/safe-db-FFSPBUAK.js +0 -2
  317. package/dist/cli/chunks/schedule-2MOMNZ6B.js +0 -2
  318. package/dist/cli/chunks/scheduler-5VGVANFG.js +0 -2
  319. package/dist/cli/chunks/shared-rvf-adapter-6JWYF7WV.js +0 -2
  320. package/dist/cli/chunks/sqlite-persistence-LCOAORK7.js +0 -2
  321. package/dist/cli/chunks/unified-memory-CZCWZUFP.js +0 -2
  322. package/dist/cli/chunks/unified-memory-hnsw-QEOXVSOZ.js +0 -2
  323. package/dist/cli/chunks/unified-persistence-HGZAYZGP.js +0 -2
  324. package/dist/cli/chunks/visual-security-ITKF4E4Z.js +0 -2
  325. package/dist/cli/chunks/witness-chain-SYFYXQD3.js +0 -2
  326. package/dist/cli/chunks/workflow-orchestrator-GZS2O3KW.js +0 -2
@@ -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.13");process.exit(0)}
2
- import{a as i}from"./chunk-4PCHU2X7.js";import{a as r}from"./chunk-QIE76ERL.js";import"./chunk-ERGY45RL.js";import n from"chalk";var s=class{name="domain";description="Domain operations";cleanupAndExit;ensureInitialized;constructor(o,t){this.cleanupAndExit=o,this.ensureInitialized=t}register(o,t){let e=o.command("domain").description(this.description);e.command("list").description("List all domains").action(async()=>{await this.executeList(t)}),e.command("health <domain>").description("Get domain health").action(async a=>{await this.executeHealth(a,t)})}async executeList(o){if(await this.ensureInitialized())try{console.log(n.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.15");process.exit(0)}
2
+ import{a as i}from"./chunk-HWK27KJK.js";import{a as r}from"./chunk-FW6QBTPE.js";import"./chunk-CUQBOVRP.js";import n from"chalk";var s=class{name="domain";description="Domain operations";cleanupAndExit;ensureInitialized;constructor(o,t){this.cleanupAndExit=o,this.ensureInitialized=t}register(o,t){let e=o.command("domain").description(this.description);e.command("list").description("List all domains").action(async()=>{await this.executeList(t)}),e.command("health <domain>").description("Get domain health").action(async a=>{await this.executeHealth(a,t)})}async executeList(o){if(await this.ensureInitialized())try{console.log(n.blue(`
3
3
  Domains
4
4
  `));for(let t of r){let e=o.queen.getDomainHealth(t),a=o.queen.getDomainLoad(t);console.log(` ${n.cyan(t)}`),console.log(` Status: ${i(e?.status||"unknown")}`),console.log(` Load: ${a} tasks`),e&&console.log(` Agents: ${e.agents.active}/${e.agents.total}`),console.log("")}}catch(t){console.error(n.red(`
5
5
  Failed to list domains:`),t),await this.cleanupAndExit(1)}}async executeHealth(o,t){if(await this.ensureInitialized())try{let e=t.queen.getDomainHealth(o);if(!e){console.log(n.red(`
@@ -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.13");process.exit(0)}
2
- import{a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-HRD7LL7Q.js";import"./chunk-Y2ONHWXI.js";import"./chunk-HHRUXDLT.js";import"./chunk-W2YCNX4O.js";import"./chunk-ERGY45RL.js";export{f as CuriosityBonus,b as DEFAULT_DOMAIN_TRANSFER_CONFIG,c as DecayingBeta,g as DomainTransferEngine,e as ParetoFront,d as PlateauDetector,a as ThompsonSampler,h as createDomainTransferEngine};
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.15");process.exit(0)}
2
+ import{a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-3BA2FGSA.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{f as CuriosityBonus,b as DEFAULT_DOMAIN_TRANSFER_CONFIG,c as DecayingBeta,g as DomainTransferEngine,e as ParetoFront,d as PlateauDetector,a as ThompsonSampler,h as createDomainTransferEngine};
@@ -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.15");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u}from"./chunk-3Y4YZDHJ.js";import"./chunk-TJDAXI6E.js";import"./chunk-ELLNKP3I.js";import"./chunk-GLJ6CJNY.js";import"./chunk-FSOY2XB4.js";import"./chunk-II5KTTIS.js";import"./chunk-7J5KWUC2.js";import"./chunk-62MVVEGH.js";import"./chunk-V65DK6ZZ.js";import"./chunk-ZSC7NHK3.js";import"./chunk-DPEG44BS.js";import"./chunk-QNLZKD7E.js";import"./chunk-6AMD4PZB.js";import"./chunk-V6QARSVQ.js";import"./chunk-U4WDJPRL.js";import"./chunk-CWWUBZNX.js";import"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-2XW36KDQ.js";import"./chunk-FW6QBTPE.js";import"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{t as BUILT_IN_STRATEGIES,b as ConceptGraph,g as DEFAULT_ACTIVATION_CONFIG,a as DEFAULT_CONCEPT_GRAPH_CONFIG,m as DEFAULT_DREAM_CONFIG,q as DEFAULT_DREAM_SCHEDULER_CONFIG,i as DEFAULT_INSIGHT_CONFIG,k as DEFAULT_VALIDATION_THRESHOLDS,n as DreamEngine,r as DreamScheduler,f as HISTORY_TRIM_TARGET_RATIO,j as InsightGenerator,d as MAX_ACTIVATION_HISTORY_ENTRIES,e as MAX_COACTIVATION_ENTRIES,l as RVCOWBranchManager,u as SpeculativeDreamer,h as SpreadingActivation,c as createConceptGraph,o as createDreamEngine,s as createDreamScheduler,p as default};
@@ -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.15");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-MBDX4OHD.js";import"./chunk-CUQBOVRP.js";export{h as NIL,d as parse,b as stringify,c as v1,e as v3,f as v4,g as v5,a as validate,i as version};
@@ -0,0 +1,15 @@
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.15");process.exit(0)}
2
+ import{a as T}from"./chunk-2CN2NPJQ.js";import{a as R,b as g,c as S,d as b}from"./chunk-N2RPLPVG.js";import{a as y}from"./chunk-65QA7MYW.js";import"./chunk-E3EDVRB5.js";import"./chunk-ISNXE6TP.js";import"./chunk-ICXWXO5P.js";import"./chunk-7J5KWUC2.js";import"./chunk-V65DK6ZZ.js";import"./chunk-ZSC7NHK3.js";import"./chunk-U4WDJPRL.js";import"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-ZHTCZGML.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-2XW36KDQ.js";import"./chunk-FW6QBTPE.js";import"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";import{Command as M}from"commander";import s from"chalk";import*as d from"fs";import*as p from"path";import*as x from"yaml";var f=["accessibility-testing","security-testing","performance-testing","chaos-engineering-resilience","contract-testing"],E=["risk-based-testing","test-design-techniques","regression-testing","test-data-management","localization-testing"],C=["quality-metrics","refactoring-patterns","iterative-loop","stream-chain"];function L(e){switch(e){case 3:return f;case 2:return[...f,...E];case 1:return[...f,...E,...C];default:return f}}var h="";function O(e){let t=Math.round(e.completedTasks/e.totalTasks*100),l=k(e.elapsedMs),o=k(e.estimatedRemainingMs),n=A(t,30),i=`${s.cyan("Progress:")} ${n} ${t}% | ${s.green(e.completedTasks)}/${e.totalTasks} tasks | ${s.yellow(e.failedTasks)} failed | ${s.blue(e.activeWorkers)} workers | ${l} elapsed, ~${o} remaining`;h&&process.stdout.write("\r"+" ".repeat(h.length)+"\r"),process.stdout.write(i),h=i}function A(e,t){let l=Math.round(e/100*t),o=t-l;return s.green("=".repeat(l))+s.gray("-".repeat(o))}function k(e){if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(1)}s`;let t=Math.floor(e/6e4),l=Math.round(e%6e4/1e3);return`${t}m ${l}s`}function F(e){let t=[];t.push(""),t.push(s.bold(`Eval Results: ${e.skill}`)+s.dim(` (${e.model})`)),t.push("=".repeat(60));let l=e.passed?s.green("PASSED"):s.red("FAILED");t.push(`Status: ${l}`),t.push(""),t.push(s.bold("Metrics:")),t.push(` Total Tests: ${e.totalTests}`),t.push(` Passed: ${s.green(e.passedTests)}`),t.push(` Failed: ${s.red(e.failedTests)}`),t.push(` Skipped: ${s.yellow(e.skippedTests)}`),t.push(` Pass Rate: ${(e.passRate*100).toFixed(1)}%`),t.push(` Reasoning Avg: ${(e.avgReasoningQuality*100).toFixed(1)}%`),t.push(""),t.push(s.bold("Performance:")),t.push(` Duration: ${k(e.totalDurationMs)}`),t.push(` Workers Used: ${e.workersUsed}`),t.push(` Parallel Speedup: ${s.cyan(e.parallelSpeedup.toFixed(2)+"x")}`),t.push("");let o=e.testResults.filter(n=>!n.passed);if(o.length>0){t.push(s.bold.red("Failed Tests:"));for(let n of o.slice(0,5))t.push(` ${s.red("x")} ${n.testId}`),n.error&&t.push(` ${s.dim(n.error)}`);o.length>5&&t.push(` ... and ${o.length-5} more`),t.push("")}return t.join(`
3
+ `)}function D(e){let t=[];t.push("# Skill Evaluation Report"),t.push(""),t.push(`Generated: ${new Date().toISOString()}`),t.push(""),t.push("## Summary"),t.push(""),t.push("| Skill | Model | Pass Rate | Duration | Speedup | Status |"),t.push("|-------|-------|-----------|----------|---------|--------|");for(let l of e){let o=l.passed?"PASSED":"FAILED";t.push(`| ${l.skill} | ${l.model} | ${(l.passRate*100).toFixed(1)}% | ${k(l.totalDurationMs)} | ${l.parallelSpeedup.toFixed(2)}x | ${o} |`)}t.push(""),t.push("## Detailed Results"),t.push("");for(let l of e){t.push(`### ${l.skill} (${l.model})`),t.push(""),t.push(`- **Total Tests:** ${l.totalTests}`),t.push(`- **Passed:** ${l.passedTests}`),t.push(`- **Failed:** ${l.failedTests}`),t.push(`- **Pass Rate:** ${(l.passRate*100).toFixed(1)}%`),t.push(`- **Avg Reasoning Quality:** ${(l.avgReasoningQuality*100).toFixed(1)}%`),t.push("");let o=l.testResults.filter(n=>!n.passed);if(o.length>0){t.push("**Failed Tests:**"),t.push("");for(let n of o)t.push(`- \`${n.testId}\`: ${n.error||"No error message"}`);t.push("")}}return t.join(`
4
+ `)}var I=".claude/skills";function j(e){let t=p.join(process.cwd(),I,e,"evals",`${e}.yaml`);if(!d.existsSync(t))return null;try{let l=x.parse(d.readFileSync(t,"utf-8"));return S(l)?"command":"llm"}catch{return null}}function B(e,t){return{skill:e.skill,model:t,totalTests:e.totalTests,passedTests:e.passedTests,failedTests:e.failedTests,skippedTests:0,passRate:e.passRate,testResults:e.testResults.map(l=>q(l)),totalDurationMs:e.totalDurationMs,parallelSpeedup:1,avgReasoningQuality:0,passed:e.passed,workersUsed:1,timestamp:e.timestamp}}function q(e){let t=[];return e.setupFailure&&t.push(e.setupFailure),e.failures.length&&t.push(...e.failures),{testId:e.testId,passed:e.passed,expectedPatterns:[],actualPatterns:[],reasoningQuality:0,executionTimeMs:e.durationMs,category:e.category??"uncategorized",priority:e.priority??"medium",error:t.length?t.join("; "):void 0}}async function v(){let e=await T({sqlite:{dbPath:".agentic-qe/eval-runner.db"},hnsw:{M:16,efConstruction:100,efSearch:50}});await e.initialize();let t=y(e);return{runner:g(t),learner:t,reasoningBank:e}}async function V(e){if(console.log(s.bold(`
5
+ AQE Parallel Eval Runner`)),console.log(s.dim(`ADR-056 Phase 5: Worker Pool Pattern
6
+ `)),j(e.skill)==="command"){console.log(s.cyan(`Running eval suite: ${e.skill}`)),console.log(s.dim("Mode: command-eval (shell-based, ADR-091)")),console.log("");let i=await b({timeoutMs:e.timeout}).run(e.skill),r=B(i,e.model);if(console.log(F(r)),e.output){let a=p.resolve(e.output);d.writeFileSync(a,JSON.stringify(r,null,2)),console.log(s.green(`Results saved to: ${a}`))}process.exit(r.passed?0:1)}let{runner:l,reasoningBank:o}=await v();try{let n={...R,maxWorkers:e.parallel?e.workers:1,batchSize:e.batchSize,timeout:e.timeout,retryFailedTests:e.retry},i=g(y(o),n);e.verbose&&i.onProgress(O),console.log(s.cyan(`Running eval suite: ${e.skill}`)),console.log(s.cyan(`Model: ${e.model}`)),console.log(s.cyan(`Mode: ${e.parallel?`Parallel (${e.workers} workers)`:"Sequential"}`)),console.log("");let r=await i.runEvalParallel(e.skill,e.model);if(h&&console.log(""),console.log(F(r)),e.output){let a=p.resolve(e.output);d.writeFileSync(a,JSON.stringify(r,null,2)),console.log(s.green(`Results saved to: ${a}`))}process.exit(r.passed?0:1)}finally{await o.dispose()}}async function z(e){console.log(s.bold(`
7
+ AQE Parallel Eval Runner - Multi-Skill`)),console.log(s.dim(`ADR-056 Phase 5: Worker Pool Pattern
8
+ `));let{runner:t,learner:l,reasoningBank:o}=await v();try{let n=L(e.skillsTier),i=e.models.split(",").map(u=>u.trim());console.log(s.cyan(`Running evals for ${n.length} skills`)),console.log(s.cyan(`Models: ${i.join(", ")}`)),console.log(s.cyan(`Mode: ${e.parallel?`Parallel (${e.workers} workers)`:"Sequential"}`)),console.log("");let r={...R,maxWorkers:e.parallel?e.workers:1},m=await g(l,r).runMultipleEvalsParallel(n,i),c=[];for(let u of m.values())c.push(...u);console.log(s.bold(`
9
+ Eval Summary`)),console.log("=".repeat(60));let w=0,$=0;for(let u of c){let P=u.passed?s.green("v"):s.red("x");console.log(`${P} ${u.skill} (${u.model}): ${(u.passRate*100).toFixed(1)}% (${u.parallelSpeedup.toFixed(2)}x speedup)`),u.passed?w++:$++}if(console.log(""),console.log(`Total: ${s.green(w)} passed, ${s.red($)} failed`),e.output){let u=p.resolve(e.output);(u.endsWith(".md")?"markdown":"json")==="markdown"?d.writeFileSync(u,D(c)):d.writeFileSync(u,JSON.stringify(c,null,2)),console.log(s.green(`
10
+ Report saved to: ${u}`))}process.exit($===0?0:1)}finally{await o.dispose()}}async function N(e){let{learner:t,reasoningBank:l}=await v();try{let o=await t.getSkillConfidence(e);if(!o){console.log(s.yellow(`No validation history found for skill: ${e}`));return}if(console.log(s.bold(`
11
+ Skill Validation Status: ${e}`)),console.log("=".repeat(50)),console.log(`Average Score: ${(o.avgScore*100).toFixed(1)}%`),console.log(`Trend: ${o.trend}`),console.log(`Validation Count: ${o.outcomes.length}`),console.log(`Last Updated: ${o.lastUpdated}`),o.byLevel){console.log(`
12
+ By Validation Level:`);for(let[i,r]of Object.entries(o.byLevel))r!==void 0&&console.log(` ${i}: ${(r*100).toFixed(1)}%`)}let n=await t.getCrossModelAnalysis(e);if(n&&(console.log(`
13
+ Cross-Model Analysis:`),console.log(` Variance: ${(n.variance*100).toFixed(2)}%`),console.log(` Has Anomalies: ${n.hasAnomalies}`),n.models)){console.log(`
14
+ Model Performance:`);for(let[i,r]of Object.entries(n.models))console.log(` ${i}: ${(r.passRate*100).toFixed(1)}% pass rate (${r.sampleCount} samples)`)}}finally{await l.dispose()}}async function Q(e){let{learner:t,reasoningBank:l}=await v();try{let o=await t.queryValidationPatterns(e.skill,50);if(o.length===0){console.log(s.yellow(`No validation patterns found for skill: ${e.skill}`));return}let n=await t.extractLearnedPatterns(e.skill),i=await t.getValidationTrends(e.skill),r={skill:e.skill,generated:new Date().toISOString(),patternCount:o.length,learnedPatterns:n,trends:i};if(e.format==="json"){let a=JSON.stringify(r,null,2);e.output?(d.writeFileSync(p.resolve(e.output),a),console.log(s.green(`Report saved to: ${e.output}`))):console.log(a)}else{let a=[];if(a.push(`# Validation Report: ${e.skill}`),a.push(""),a.push(`Generated: ${r.generated}`),a.push(""),a.push("## Overview"),a.push(`- Patterns Collected: ${r.patternCount}`),a.push(`- Learned Patterns: ${r.learnedPatterns.length}`),a.push(""),r.trends&&(a.push("## Trends"),a.push(`- Overall: ${r.trends.overall}`),a.push(`- Recent Pass Rate: ${(r.trends.recentPassRate*100).toFixed(1)}%`),a.push("")),r.learnedPatterns.length>0){a.push("## Learned Patterns"),a.push("");for(let c of r.learnedPatterns)a.push(`### ${c.category}`),a.push(`- Confidence: ${(c.confidence*100).toFixed(1)}%`),a.push(`- Observations: ${c.observationCount}`),a.push(`- Models: ${c.models.join(", ")}`),a.push("")}let m=a.join(`
15
+ `);e.output?(d.writeFileSync(p.resolve(e.output),m),console.log(s.green(`Report saved to: ${e.output}`))):console.log(m)}}finally{await l.dispose()}}function se(){let e=new M("eval").description("Run skill evaluation suites in parallel");return e.command("run").description("Run eval suite for a single skill").requiredOption("-s, --skill <skill>","Skill name to evaluate").requiredOption("-m, --model <model>","Model to use (e.g., claude-3.5-sonnet)").option("-p, --parallel","Enable parallel execution",!1).option("-w, --workers <n>","Number of parallel workers",parseInt,5).option("-b, --batch-size <n>","Test cases per batch",parseInt,4).option("-t, --timeout <ms>","Timeout per test case (ms)",parseInt,3e4).option("--no-retry","Disable retry of failed tests").option("-o, --output <path>","Output file path for results").option("-v, --verbose","Show progress during execution",!1).action(async t=>{await V({skill:t.skill,model:t.model,parallel:t.parallel,workers:t.workers,batchSize:t.batchSize,timeout:t.timeout,retry:t.retry!==!1,output:t.output,verbose:t.verbose})}),e.command("run-all").description("Run eval suites for multiple skills").option("--skills-tier <tier>","Skill tier (1=all, 2=P0+P1, 3=P0 only)",parseInt,3).option("--models <models>","Comma-separated models to test","claude-3.5-sonnet").option("-p, --parallel","Enable parallel execution",!0).option("-w, --workers <n>","Number of parallel workers",parseInt,5).option("-o, --output <path>","Output file path for report").option("-v, --verbose","Show progress during execution",!1).action(async t=>{await z({skillsTier:t.skillsTier,models:t.models,parallel:t.parallel,workers:t.workers,output:t.output,verbose:t.verbose})}),e.command("status").description("Show validation status for a skill").requiredOption("-s, --skill <skill>","Skill name").action(async t=>{await N(t.skill)}),e.command("report").description("Generate validation report for a skill").requiredOption("-s, --skill <skill>","Skill name").option("-f, --format <format>","Output format (json|markdown)","markdown").option("-o, --output <path>","Output file path").action(async t=>{await Q({skill:t.skill,format:t.format,output:t.output})}),e}export{se as createEvalCommand};
@@ -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.13");process.exit(0)}
2
- import"./chunk-ERGY45RL.js";function n(e){return e.includes("--version")||e.includes("-v")?"cli-version":e[2]==="health"?"cli-health":process.env.AQE_MCP==="1"||process.env.AQE_MCP_MODE==="1"?"mcp":process.env.AQE_HTTP_PORT?"http":"cli-full"}function o(e){return process.env.AQE_FAST_PATHS==="false"?!1:e.includes("--version")||e.includes("-v")}function r(e){return e[2]==="health"}export{n as detectBootMode,r as isHealthFastPath,o as isVersionFastPath};
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.15");process.exit(0)}
2
+ import"./chunk-CUQBOVRP.js";function n(e){return e.includes("--version")||e.includes("-v")?"cli-version":e[2]==="health"?"cli-health":process.env.AQE_MCP==="1"||process.env.AQE_MCP_MODE==="1"?"mcp":process.env.AQE_HTTP_PORT?"http":"cli-full"}function o(e){return process.env.AQE_FAST_PATHS==="false"?!1:e.includes("--version")||e.includes("-v")}function r(e){return e[2]==="health"}export{n as detectBootMode,r as isHealthFastPath,o as isVersionFastPath};
@@ -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.13");process.exit(0)}
2
- import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S as R,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-W2YCNX4O.js";import"./chunk-ERGY45RL.js";R();export{a as DEFAULT_FEATURE_FLAGS,b as getRuVectorFeatureFlags,A as getRvfMigrationStage,Q as initFeatureFlagsFromEnv,y as isAgentMemoryBranchingEnabled,t as isCNNVisualRegressionEnabled,O as isCognitiveRoutingEnabled,v as isCoherenceActionGateEnabled,r as isCoherenceGateEnabled,H as isColdTierGNNEnabled,o as isCrossDomainTransferEnabled,C as isCusumDriftDetectionEnabled,u as isDAGAttentionEnabled,D as isDeltaEventSourcingEnabled,l as isDeterministicDitherEnabled,M as isEpropOnlineLearningEnabled,E as isEwcPlusPlusEnabled,f as isFlashAttentionEnabled,g as isGNNIndexEnabled,N as isGrangerCausalityEnabled,F as isGraphMAEEnabled,B as isHDCFingerprintingEnabled,p as isHnswHealthMonitorEnabled,G as isHopfieldMemoryEnabled,P as isHyperbolicHnswEnabled,I as isMetaLearningEnabled,k as isMetadataFilteringEnabled,i as isNativeHNSWEnabled,m as isNeuralRoutingEnabled,x as isRVFPatternStoreEnabled,w as isReasoningQECEnabled,q as isRegretTrackingEnabled,L as isReservoirReplayEnabled,e as isSONAEnabled,n as isSONAThreeLoopEnabled,K as isSpectralSparsificationEnabled,J as isSublinearSolverEnabled,j as isTemporalCompressionEnabled,z as isUnifiedHnswEnabled,s as isWitnessChainEnabled,d as resetRuVectorFeatureFlags,c as setRuVectorFeatureFlags,h as shouldLogMigrationMetrics};
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.15");process.exit(0)}
2
+ import{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S as R,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";R();export{a as DEFAULT_FEATURE_FLAGS,b as getRuVectorFeatureFlags,A as getRvfMigrationStage,Q as initFeatureFlagsFromEnv,y as isAgentMemoryBranchingEnabled,t as isCNNVisualRegressionEnabled,O as isCognitiveRoutingEnabled,v as isCoherenceActionGateEnabled,r as isCoherenceGateEnabled,H as isColdTierGNNEnabled,o as isCrossDomainTransferEnabled,C as isCusumDriftDetectionEnabled,u as isDAGAttentionEnabled,D as isDeltaEventSourcingEnabled,l as isDeterministicDitherEnabled,M as isEpropOnlineLearningEnabled,E as isEwcPlusPlusEnabled,f as isFlashAttentionEnabled,g as isGNNIndexEnabled,N as isGrangerCausalityEnabled,F as isGraphMAEEnabled,B as isHDCFingerprintingEnabled,p as isHnswHealthMonitorEnabled,G as isHopfieldMemoryEnabled,P as isHyperbolicHnswEnabled,I as isMetaLearningEnabled,k as isMetadataFilteringEnabled,i as isNativeHNSWEnabled,m as isNeuralRoutingEnabled,x as isRVFPatternStoreEnabled,w as isReasoningQECEnabled,q as isRegretTrackingEnabled,L as isReservoirReplayEnabled,e as isSONAEnabled,n as isSONAThreeLoopEnabled,K as isSpectralSparsificationEnabled,J as isSublinearSolverEnabled,j as isTemporalCompressionEnabled,z as isUnifiedHnswEnabled,s as isWitnessChainEnabled,d as resetRuVectorFeatureFlags,c as setRuVectorFeatureFlags,h as shouldLogMigrationMetrics};
@@ -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.13");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q}from"./chunk-XV42SKJD.js";import"./chunk-ERGY45RL.js";q();export{a as DEFAULT_FEATURE_FLAGS,n as configureForCI,o as configureForDevelopment,p as configureForHeuristicMode,b as getVibiumFeatureFlags,m as initVibiumFeatureFlagsFromEnv,j as isAutoRetryEnabled,l as isAxeCoreEnabled,e as isBrowserModeEnabled,i as isDefaultHeadless,h as isE2EExecutionEnabled,f as isScreenshotCaptureEnabled,g as isVisualRegressionEnabled,d as resetVibiumFeatureFlags,c as setVibiumFeatureFlags,k as shouldLogPerformanceMetrics};
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.15");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q}from"./chunk-56YHSI6R.js";import"./chunk-CUQBOVRP.js";q();export{a as DEFAULT_FEATURE_FLAGS,n as configureForCI,o as configureForDevelopment,p as configureForHeuristicMode,b as getVibiumFeatureFlags,m as initVibiumFeatureFlagsFromEnv,j as isAutoRetryEnabled,l as isAxeCoreEnabled,e as isBrowserModeEnabled,i as isDefaultHeadless,h as isE2EExecutionEnabled,f as isScreenshotCaptureEnabled,g as isVisualRegressionEnabled,d as resetVibiumFeatureFlags,c as setVibiumFeatureFlags,k as shouldLogPerformanceMetrics};
@@ -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.13");process.exit(0)}
2
- import{a,b}from"./chunk-4VETZICF.js";import"./chunk-ERGY45RL.js";export{a as SOURCE_EXTENSIONS,b as walkSourceFiles};
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.15");process.exit(0)}
2
+ import{a,b}from"./chunk-B4BOOOYM.js";import"./chunk-CUQBOVRP.js";export{a as SOURCE_EXTENSIONS,b as walkSourceFiles};
@@ -1,8 +1,8 @@
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.13");process.exit(0)}
2
- import{a as k,b as K,c as x,d as T,e as H,f as F,g as Q,j as _}from"./chunk-67TMNSO3.js";import{a as v,b as V}from"./chunk-GHAEDZDE.js";import{a as G}from"./chunk-TU3JIH3U.js";import"./chunk-AOTEEGQA.js";import"./chunk-FEGITTAE.js";import{c as C,d as S}from"./chunk-H53V7GI3.js";import"./chunk-CPRYUCPC.js";import{v as q}from"./chunk-HEHGQM2H.js";import"./chunk-BUIMIUJA.js";import"./chunk-OUNZPHTA.js";import"./chunk-KULWZMVC.js";import"./chunk-QHCOAG7D.js";import"./chunk-ZUW3KVML.js";import{c as L}from"./chunk-6LDRSG7C.js";import{a as W}from"./chunk-QKTB5FZP.js";import{a as E}from"./chunk-SI7AQK7I.js";import"./chunk-TPTKR5ZO.js";import"./chunk-WQGP5ULD.js";import{f as j}from"./chunk-YBKSENTJ.js";import"./chunk-UDIRBCZW.js";import"./chunk-LHZLH6I4.js";import"./chunk-V6UODTBP.js";import"./chunk-HXLAXSEM.js";import"./chunk-FS4TPAAA.js";import"./chunk-AV23XNRL.js";import"./chunk-BSTCXDVH.js";import{b as N}from"./chunk-GKRKCJ6D.js";import"./chunk-X3UVXJIK.js";import"./chunk-YCTGWMCP.js";import"./chunk-I6O4MVEY.js";import"./chunk-MXT7YUOZ.js";import"./chunk-4WJ3BHCN.js";import"./chunk-R4B2B6MZ.js";import"./chunk-Q7TWE55T.js";import"./chunk-APQYMAKG.js";import"./chunk-TRJRRJV3.js";import"./chunk-OBDM6OJL.js";import"./chunk-TOS3PI5Q.js";import"./chunk-VVVIRGO7.js";import"./chunk-UCCNB75R.js";import"./chunk-2RTGP76Y.js";import"./chunk-FLML5IT7.js";import"./chunk-YCQ2GHFH.js";import"./chunk-OKCI6BNZ.js";import"./chunk-XV42SKJD.js";import"./chunk-Q3MQYATA.js";import"./chunk-3I6KWFJT.js";import"./chunk-RYPUA6E2.js";import"./chunk-TVASP2E6.js";import"./chunk-DY5JRJXV.js";import"./chunk-5TDHUYYF.js";import"./chunk-HRD7LL7Q.js";import"./chunk-7HX2PMBB.js";import"./chunk-TWRGM5TY.js";import"./chunk-W6LEOFA4.js";import"./chunk-EBQUXPIG.js";import"./chunk-XXQYSDLV.js";import"./chunk-WQIB5ERQ.js";import"./chunk-Y2ONHWXI.js";import"./chunk-HHRUXDLT.js";import"./chunk-EC2CI3ZC.js";import"./chunk-VCJP7HQG.js";import{a as I}from"./chunk-QIE76ERL.js";import{a as B,c as ee}from"./chunk-3AOWTHLS.js";import"./chunk-IQGVQBVS.js";import"./chunk-Y7YSJD4I.js";import{a as z,b as te}from"./chunk-CF5EJGOV.js";import"./chunk-OM7A3YC3.js";import"./chunk-77GZ7LXL.js";import{c as $,d as ne}from"./chunk-YYQVSVBO.js";import"./chunk-ZS5BM2EE.js";import"./chunk-AZPDX4KS.js";import"./chunk-V2CV6J2A.js";import"./chunk-JOCR5TWI.js";import"./chunk-W2YCNX4O.js";import"./chunk-ERGY45RL.js";ne();import{Command as ie}from"commander";import t from"chalk";ee();te();import h from"chalk";import{existsSync as oe}from"fs";import{join as P}from"path";var R=class{projectRoot;options;orchestrator;constructor(e){this.options=e,this.projectRoot=e.projectRoot}async checkCodeIntelligence(){if(this.options.skipCodeScan)return console.log(h.yellow(" Code intelligence scan skipped (--skip-code-scan flag)")),{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!1,scanRequested:!1},shouldProceed:!0,skipReason:"skip-flag"};if(await this.hasCodeIntelligenceIndex()){let i=await this.getKGEntryCount();return console.log(h.green(` \u2713 Code intelligence index found (${i} entries)`)),{codeIntelligence:{hasIndex:!0,entryCount:i,wasPrompted:!1,scanRequested:!1},shouldProceed:!0}}return!this.options.nonInteractive&&(console.log(h.yellow(`
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.15");process.exit(0)}
2
+ import{a as k,b as K,c as x,d as T,e as H,f as F,g as Q,j as _}from"./chunk-KJTXY3DW.js";import{a as v,b as V}from"./chunk-NWMYV7KG.js";import{a as G}from"./chunk-OHESV6I3.js";import"./chunk-37ZSWRRP.js";import"./chunk-CF3W34BA.js";import{c as C,d as S}from"./chunk-EY2DGYQX.js";import"./chunk-WAQ3U4FC.js";import{v as q}from"./chunk-HJNFBJT5.js";import"./chunk-GHEO5YVA.js";import"./chunk-6BHAGCZD.js";import"./chunk-HNAQNAGI.js";import"./chunk-OUP2X3LT.js";import"./chunk-O6CHLZYT.js";import{c as L}from"./chunk-AE65B2ZE.js";import{a as W}from"./chunk-6Z7LYE2B.js";import{a as E}from"./chunk-3NIHJIWP.js";import"./chunk-ORKGVVXK.js";import"./chunk-ZOAPOVYW.js";import{f as j}from"./chunk-6F3H2C5H.js";import"./chunk-Q3E6Z2RQ.js";import"./chunk-3RSPEFU3.js";import"./chunk-GWUO3RY5.js";import"./chunk-JQRR37YY.js";import"./chunk-RODJK6G6.js";import"./chunk-ISNXE6TP.js";import"./chunk-ICXWXO5P.js";import{b as N}from"./chunk-D32YCVCA.js";import"./chunk-OMTYOIOS.js";import"./chunk-DYQ7HTEU.js";import"./chunk-3Y4YZDHJ.js";import"./chunk-TJDAXI6E.js";import"./chunk-ELLNKP3I.js";import"./chunk-GLJ6CJNY.js";import"./chunk-FSOY2XB4.js";import"./chunk-II5KTTIS.js";import"./chunk-7J5KWUC2.js";import"./chunk-62MVVEGH.js";import"./chunk-V65DK6ZZ.js";import"./chunk-ZSC7NHK3.js";import"./chunk-DPEG44BS.js";import"./chunk-SSQ42GI7.js";import"./chunk-QNLZKD7E.js";import"./chunk-MO4Q5ZGE.js";import"./chunk-IHDW4HW7.js";import"./chunk-56YHSI6R.js";import"./chunk-6TOUMCSE.js";import"./chunk-CSB2M7IX.js";import"./chunk-6AMD4PZB.js";import"./chunk-UZOFXYNC.js";import"./chunk-PSOIVDD2.js";import"./chunk-G3FUOFXA.js";import"./chunk-3BA2FGSA.js";import"./chunk-V6QARSVQ.js";import"./chunk-U4WDJPRL.js";import"./chunk-CWWUBZNX.js";import"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-ZHTCZGML.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-O6J7MKRV.js";import"./chunk-2XW36KDQ.js";import{a as I}from"./chunk-FW6QBTPE.js";import{a as B,c as ee}from"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-BGUCXJEJ.js";import{a as z,b as te}from"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import{c as $,d as ne}from"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";ne();import{Command as ie}from"commander";import t from"chalk";ee();te();import h from"chalk";import{existsSync as oe}from"fs";import{join as P}from"path";var R=class{projectRoot;options;orchestrator;constructor(e){this.options=e,this.projectRoot=e.projectRoot}async checkCodeIntelligence(){if(this.options.skipCodeScan)return console.log(h.yellow(" Code intelligence scan skipped (--skip-code-scan flag)")),{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!1,scanRequested:!1},shouldProceed:!0,skipReason:"skip-flag"};if(await this.hasCodeIntelligenceIndex()){let i=await this.getKGEntryCount();return console.log(h.green(` \u2713 Code intelligence index found (${i} entries)`)),{codeIntelligence:{hasIndex:!0,entryCount:i,wasPrompted:!1,scanRequested:!1},shouldProceed:!0}}return!this.options.nonInteractive&&(console.log(h.yellow(`
3
3
  \u26A0 No code intelligence index found`)),console.log(h.gray(" Building a knowledge graph improves agent accuracy by 80%")),console.log(h.gray(" This is a one-time operation and can be run later with:")),console.log(h.cyan(` aqe code-intelligence index
4
4
  `)),await this.promptScan())?{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!0,scanRequested:!0},shouldProceed:!1,skipReason:"scan-requested"}:(console.log(h.gray(" Continuing without code intelligence index")),{codeIntelligence:{hasIndex:!1,entryCount:0,wasPrompted:!this.options.nonInteractive,scanRequested:!1},shouldProceed:!0})}async runCodeIntelligenceScan(){try{if(console.log(h.blue(`
5
- Building code intelligence knowledge graph...`)),this.orchestrator||(this.orchestrator=new G({projectRoot:this.projectRoot,autoMode:!0,...this.options.initOptions})),await this.hasCodeIntelligenceIndex()){let s=await this.getKGEntryCount();return console.log(h.green(` \u2713 Index already exists (${s} entries)`)),{success:!0,entries:s}}let{KnowledgeGraphService:i}=await import("./knowledge-graph-EUMGCQPH.js"),{InMemoryBackend:c}=await import("./memory-backend-NQMJKHCQ.js"),m=new c;await m.initialize();let n=new i(m,{namespace:"code-intelligence:kg",enableVectorEmbeddings:!0}),g=await(await import("fast-glob")).default(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:this.projectRoot,ignore:["node_modules/**","dist/**","coverage/**",".agentic-qe/**"]});console.log(h.gray(` Indexing ${g.length} files...`));let o=await n.index({paths:g.map(s=>P(this.projectRoot,s)),incremental:!1,includeTests:!0});if(n.destroy(),o.success){let s=o.value.nodesCreated+o.value.edgesCreated;return console.log(h.green(` \u2713 Indexed ${s} knowledge graph entries`)),{success:!0,entries:s}}return console.log(h.yellow(" \u26A0 Code intelligence scan completed with warnings")),{success:!1,entries:0}}catch(e){return console.error(h.red(" \u2717 Code intelligence scan failed:"),B(e)),{success:!1,entries:0}}}async getStatusForAgents(){let e=await this.hasCodeIntelligenceIndex(),i=e?await this.getKGEntryCount():0;return{codeIntelligenceAvailable:e,knowledgeGraphSize:i,recommendedCapabilities:e?["semantic-search","code-analysis","context-aware"]:["basic-analysis"]}}async hasCodeIntelligenceIndex(){let e=P(this.projectRoot,".agentic-qe","memory.db");if(!oe(e))return!1;try{let i=z(e),c=i.prepare(`
5
+ Building code intelligence knowledge graph...`)),this.orchestrator||(this.orchestrator=new G({projectRoot:this.projectRoot,autoMode:!0,...this.options.initOptions})),await this.hasCodeIntelligenceIndex()){let s=await this.getKGEntryCount();return console.log(h.green(` \u2713 Index already exists (${s} entries)`)),{success:!0,entries:s}}let{KnowledgeGraphService:i}=await import("./knowledge-graph-NOYZXHIG.js"),{InMemoryBackend:c}=await import("./memory-backend-IWOGO4BV.js"),m=new c;await m.initialize();let n=new i(m,{namespace:"code-intelligence:kg",enableVectorEmbeddings:!0}),g=await(await import("fast-glob")).default(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:this.projectRoot,ignore:["node_modules/**","dist/**","coverage/**",".agentic-qe/**"]});console.log(h.gray(` Indexing ${g.length} files...`));let o=await n.index({paths:g.map(s=>P(this.projectRoot,s)),incremental:!1,includeTests:!0});if(n.destroy(),o.success){let s=o.value.nodesCreated+o.value.edgesCreated;return console.log(h.green(` \u2713 Indexed ${s} knowledge graph entries`)),{success:!0,entries:s}}return console.log(h.yellow(" \u26A0 Code intelligence scan completed with warnings")),{success:!1,entries:0}}catch(e){return console.error(h.red(" \u2717 Code intelligence scan failed:"),B(e)),{success:!1,entries:0}}}async getStatusForAgents(){let e=await this.hasCodeIntelligenceIndex(),i=e?await this.getKGEntryCount():0;return{codeIntelligenceAvailable:e,knowledgeGraphSize:i,recommendedCapabilities:e?["semantic-search","code-analysis","context-aware"]:["basic-analysis"]}}async hasCodeIntelligenceIndex(){let e=P(this.projectRoot,".agentic-qe","memory.db");if(!oe(e))return!1;try{let i=z(e),c=i.prepare(`
6
6
  SELECT COUNT(*) as count FROM kv_store
7
7
  WHERE namespace = 'code-intelligence:kg'
8
8
  `).get();return i.close(),c.count>0}catch{return!1}}async getKGEntryCount(){let e=P(this.projectRoot,".agentic-qe","memory.db");try{let i=z(e),c=i.prepare(`
@@ -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.13");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}from"./chunk-EC2CI3ZC.js";import"./chunk-VCJP7HQG.js";import"./chunk-JOCR5TWI.js";import"./chunk-W2YCNX4O.js";import"./chunk-ERGY45RL.js";export{e as GNNLayerFactory,c as QEGNNEmbeddingIndex,d as QEGNNIndexFactory,f as TensorCompressionFactory,p as batchDifferentiableSearch,i as getDifferentiableSearch,k as getGetCompressionLevel,j as getHierarchicalForward,l as getInit,g as getRuvectorLayer,h as getTensorCompress,b as initGNN,a as isGNNAvailable,m as toFloat32Array,o as toIEmbedding,n as toNumberArray};
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.15");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p}from"./chunk-O6J7MKRV.js";import"./chunk-2XW36KDQ.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{e as GNNLayerFactory,c as QEGNNEmbeddingIndex,d as QEGNNIndexFactory,f as TensorCompressionFactory,p as batchDifferentiableSearch,i as getDifferentiableSearch,k as getGetCompressionLevel,j as getHierarchicalForward,l as getInit,g as getRuvectorLayer,h as getTensorCompress,b as initGNN,a as isGNNAvailable,m as toFloat32Array,o as toIEmbedding,n as toNumberArray};
@@ -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.13");process.exit(0)}
2
- import{b as d}from"./chunk-4PCHU2X7.js";import{a as c,c as f}from"./chunk-3AOWTHLS.js";import"./chunk-ERGY45RL.js";import*as s from"fs";import*as l from"path";import e from"chalk";f();var h=class{name="heartbeat";description="Manage the token-free heartbeat scheduler";cleanupAndExit;worker;constructor(t){this.cleanupAndExit=t}async getWorker(){if(!this.worker){let{HeartbeatSchedulerWorker:t}=await import("./heartbeat-scheduler-HYVMXCXT.js");this.worker=new t}return this.worker}register(t,o){let a=t.command("heartbeat").description(this.description);a.command("status").description("Show heartbeat worker status, health, and schedule").action(async()=>{await this.executeStatus()}),a.command("run-now").description("Trigger an immediate heartbeat cycle").option("-t, --timeout <ms>","Timeout in milliseconds (default: worker built-in 60s)").action(async n=>{let i=n.timeout?parseInt(n.timeout,10):void 0;await this.executeRunNow(i)}),a.command("history").description("Show recent heartbeat results").option("-n, --count <count>","Number of entries to show","10").action(async n=>{await this.executeHistory(parseInt(n.count,10)||10)}),a.command("log").description("Show today's daily log entries").option("-d, --date <date>","Show log for specific date (YYYY-MM-DD)").action(async n=>{await this.executeLog(n.date)}),a.command("pause").description("Pause the heartbeat worker").action(async()=>{await this.executePause()}),a.command("resume").description("Resume the heartbeat worker").action(async()=>{await this.executeResume()})}async executeStatus(){try{this.worker=await this.getWorker(),await this.worker.initialize();let t=this.worker.getHealth(),o=this.worker.lastResult;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.15");process.exit(0)}
2
+ import{b as d}from"./chunk-HWK27KJK.js";import{a as c,c as f}from"./chunk-JJDHD7SC.js";import"./chunk-CUQBOVRP.js";import*as s from"fs";import*as l from"path";import e from"chalk";f();var h=class{name="heartbeat";description="Manage the token-free heartbeat scheduler";cleanupAndExit;worker;constructor(t){this.cleanupAndExit=t}async getWorker(){if(!this.worker){let{HeartbeatSchedulerWorker:t}=await import("./heartbeat-scheduler-GUWYDHEY.js");this.worker=new t}return this.worker}register(t,o){let a=t.command("heartbeat").description(this.description);a.command("status").description("Show heartbeat worker status, health, and schedule").action(async()=>{await this.executeStatus()}),a.command("run-now").description("Trigger an immediate heartbeat cycle").option("-t, --timeout <ms>","Timeout in milliseconds (default: worker built-in 60s)").action(async n=>{let i=n.timeout?parseInt(n.timeout,10):void 0;await this.executeRunNow(i)}),a.command("history").description("Show recent heartbeat results").option("-n, --count <count>","Number of entries to show","10").action(async n=>{await this.executeHistory(parseInt(n.count,10)||10)}),a.command("log").description("Show today's daily log entries").option("-d, --date <date>","Show log for specific date (YYYY-MM-DD)").action(async n=>{await this.executeLog(n.date)}),a.command("pause").description("Pause the heartbeat worker").action(async()=>{await this.executePause()}),a.command("resume").description("Resume the heartbeat worker").action(async()=>{await this.executeResume()})}async executeStatus(){try{this.worker=await this.getWorker(),await this.worker.initialize();let t=this.worker.getHealth(),o=this.worker.lastResult;if(console.log(e.blue(`
3
3
  Heartbeat Scheduler Status`)),console.log(e.gray(" "+"\u2500".repeat(35))),console.log(` Status: ${x(t.status)}`),console.log(` Health Score: ${y(t.healthScore)}${e.gray("/100")}`),this.worker.lastRunAt){let n=p(this.worker.lastRunAt);console.log(` Last Run: ${e.cyan(this.worker.lastRunAt.toISOString().replace("T"," ").slice(0,19))} ${e.gray(`(${n})`)}`)}else console.log(` Last Run: ${e.gray("never")}`);if(this.worker.nextRunAt){let n=p(this.worker.nextRunAt,!0);console.log(` Next Run: ${e.cyan(this.worker.nextRunAt.toISOString().replace("T"," ").slice(0,19))} ${e.gray(`(${n})`)}`)}console.log(` Total Runs: ${e.cyan(String(t.totalExecutions))}`);let a=t.totalExecutions>0?(t.successfulExecutions/t.totalExecutions*100).toFixed(1):"100.0";if(console.log(` Success Rate: ${e.cyan(a+"%")}`),o?.metrics?.domainMetrics){let n=o.metrics.domainMetrics;console.log(""),console.log(e.blue(" Last Result:")),console.log(` Promoted: ${e.cyan(String(n.promoted??0))} patterns`),console.log(` Deprecated: ${e.cyan(String(n.deprecated??0))} patterns`),console.log(` Decayed: ${e.cyan(String(n.decayed??0))} patterns`),console.log(` Pending Exp: ${e.cyan(String(n.pendingExperiences??0))}`),console.log(` Avg Conf: ${e.cyan(String(n.avgConfidence??0))}`)}console.log(""),await this.cleanupAndExit(0)}catch(t){console.error(e.red(`
4
4
  Failed to get heartbeat status:`),c(t)),await this.cleanupAndExit(1)}}async executeRunNow(t){try{this.worker=await this.getWorker(),console.log(e.blue(`
5
5
  Triggering heartbeat cycle...
@@ -8,7 +8,7 @@ import{b as d}from"./chunk-4PCHU2X7.js";import{a as c,c as f}from"./chunk-3AOWTH
8
8
  Heartbeat History (last ${o.length})`)),console.log(e.gray(" "+"\u2500".repeat(60)));for(let a of o){let n=a.success?e.green("OK"):e.red("FAIL"),i=a.timestamp.slice(0,19).replace("T"," "),u=a.domainMetrics||{};console.log(` ${e.gray(i)} ${n} score:${e.cyan(String(a.healthScore))} +${u.promoted??0}/-${u.deprecated??0} ${e.gray(d(a.durationMs))}`)}console.log(""),await this.cleanupAndExit(0)}catch(o){console.error(e.red(`
9
9
  Failed to load history:`),c(o)),await this.cleanupAndExit(1)}}async executeLog(t){try{let o=t||new Date().toISOString().split("T")[0];if(!/^\d{4}-\d{2}-\d{2}$/.test(o)){console.error(e.red(`
10
10
  Invalid date format: "${o}". Use YYYY-MM-DD.
11
- `)),await this.cleanupAndExit(1);return}let{findProjectRoot:a}=await import("./unified-memory-CZCWZUFP.js"),n=l.join(a(),".agentic-qe","logs"),i=l.join(n,`${o}.md`);if(!s.existsSync(i)){console.log(e.yellow(`
11
+ `)),await this.cleanupAndExit(1);return}let{findProjectRoot:a}=await import("./unified-memory-L6735TFM.js"),n=l.join(a(),".agentic-qe","logs"),i=l.join(n,`${o}.md`);if(!s.existsSync(i)){console.log(e.yellow(`
12
12
  No daily log found for ${o}.
13
13
  `)),await this.cleanupAndExit(0);return}let u=s.readFileSync(i,"utf-8");console.log(e.blue(`
14
14
  Daily Log \u2014 ${o}`)),console.log(e.gray(" "+"\u2500".repeat(40)));for(let g of u.split(`
@@ -45,4 +45,4 @@ Examples:
45
45
  aqe heartbeat log --date 2026-03-25
46
46
  aqe heartbeat pause
47
47
  aqe heartbeat resume
48
- `}},m=100;async function w(){let{findProjectRoot:r}=await import("./unified-memory-CZCWZUFP.js");return l.join(r(),".agentic-qe","heartbeat-history.json")}async function b(r){try{let t=await w(),o=l.dirname(t);s.existsSync(o)||s.mkdirSync(o,{recursive:!0});let a=[];if(s.existsSync(t))try{a=JSON.parse(s.readFileSync(t,"utf-8"))}catch{a=[]}a.unshift({timestamp:r.timestamp.toISOString(),success:r.success,durationMs:r.durationMs,healthScore:r.metrics.healthScore,domainMetrics:r.metrics.domainMetrics}),a.length>m&&(a=a.slice(0,m)),s.writeFileSync(t,JSON.stringify(a,null,2))}catch{}}async function S(r){try{let t=await w();return s.existsSync(t)?JSON.parse(s.readFileSync(t,"utf-8")).slice(0,r):[]}catch{return[]}}function x(r){switch(r){case"idle":return e.cyan(r);case"running":return e.yellow(r);case"paused":return e.yellow(r);case"stopped":return e.gray(r);case"error":return e.red(r);default:return e.white(r)}}function y(r){return r>=80?e.green(String(r)):r>=50?e.yellow(String(r)):e.red(String(r))}function k(r){switch(r){case"improving":return e.green(r);case"stable":return e.cyan(r);case"degrading":return e.red(r);default:return e.gray(r)}}function p(r,t=!1){let o=t?r.getTime()-Date.now():Date.now()-r.getTime();return o<0?t?"now":"just now":o<6e4?`${Math.floor(o/1e3)}s ${t?"from now":"ago"}`:o<36e5?`${Math.floor(o/6e4)}m ${t?"from now":"ago"}`:`${Math.floor(o/36e5)}h ${t?"from now":"ago"}`}function A(r){return new h(r)}export{h as HeartbeatHandler,A as createHeartbeatHandler};
48
+ `}},m=100;async function w(){let{findProjectRoot:r}=await import("./unified-memory-L6735TFM.js");return l.join(r(),".agentic-qe","heartbeat-history.json")}async function b(r){try{let t=await w(),o=l.dirname(t);s.existsSync(o)||s.mkdirSync(o,{recursive:!0});let a=[];if(s.existsSync(t))try{a=JSON.parse(s.readFileSync(t,"utf-8"))}catch{a=[]}a.unshift({timestamp:r.timestamp.toISOString(),success:r.success,durationMs:r.durationMs,healthScore:r.metrics.healthScore,domainMetrics:r.metrics.domainMetrics}),a.length>m&&(a=a.slice(0,m)),s.writeFileSync(t,JSON.stringify(a,null,2))}catch{}}async function S(r){try{let t=await w();return s.existsSync(t)?JSON.parse(s.readFileSync(t,"utf-8")).slice(0,r):[]}catch{return[]}}function x(r){switch(r){case"idle":return e.cyan(r);case"running":return e.yellow(r);case"paused":return e.yellow(r);case"stopped":return e.gray(r);case"error":return e.red(r);default:return e.white(r)}}function y(r){return r>=80?e.green(String(r)):r>=50?e.yellow(String(r)):e.red(String(r))}function k(r){switch(r){case"improving":return e.green(r);case"stable":return e.cyan(r);case"degrading":return e.red(r);default:return e.gray(r)}}function p(r,t=!1){let o=t?r.getTime()-Date.now():Date.now()-r.getTime();return o<0?t?"now":"just now":o<6e4?`${Math.floor(o/1e3)}s ${t?"from now":"ago"}`:o<36e5?`${Math.floor(o/6e4)}m ${t?"from now":"ago"}`:`${Math.floor(o/36e5)}h ${t?"from now":"ago"}`}function A(r){return new h(r)}export{h as HeartbeatHandler,A as createHeartbeatHandler};
@@ -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.15");process.exit(0)}
2
+ import{a as v,b as k}from"./chunk-IMLH32AG.js";import"./chunk-E3EDVRB5.js";import"./chunk-V65DK6ZZ.js";import{k as g,o as P}from"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-2XW36KDQ.js";import{a as d,b as y,c as R}from"./chunk-JJDHD7SC.js";import"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";R();import{randomUUID as M}from"crypto";var p=class{constructor(e){this.config=e}config;_status="idle";_lastResult;_lastRunAt;_nextRunAt;_totalExecutions=0;_successfulExecutions=0;_failedExecutions=0;_executionDurations=[];_recentResults=[];get status(){return this._status}get lastResult(){return this._lastResult}get lastRunAt(){return this._lastRunAt}get nextRunAt(){return this._nextRunAt}async initialize(){this._status="idle",this._nextRunAt=new Date(Date.now()+this.config.intervalMs)}async execute(e){let r=Date.now();this._status="running",this._lastRunAt=new Date,this._totalExecutions++;let n,t;for(let a=0;a<=this.config.retryCount;a++)try{if(e.signal.aborted)throw new Error("Worker execution aborted");t=await this.executeWithTimeout(()=>this.doExecute(e),this.config.timeoutMs,e.signal);break}catch(u){n=y(u),e.logger.warn(`Worker ${this.config.id} attempt ${a+1} failed: ${n.message}`),a<this.config.retryCount&&await this.delay(this.config.retryDelayMs)}let o=Date.now()-r;return t?(this._successfulExecutions++,this._lastResult=t):(this._failedExecutions++,t=this.createErrorResult(n,o),this._lastResult=t),this._executionDurations.push(o),this._executionDurations.length>100&&this._executionDurations.shift(),this._recentResults.push({timestamp:new Date,success:t.success,durationMs:o}),this._recentResults.length>5&&this._recentResults.shift(),this._nextRunAt=new Date(Date.now()+this.config.intervalMs),this._status=t.success?"idle":"error",await e.eventBus.publish({type:"worker.executed",workerId:this.config.id,timestamp:new Date,payload:{success:t.success,durationMs:o,findingsCount:t.findings.length,healthScore:t.metrics.healthScore}}),t}pause(){this._status!=="stopped"&&(this._status="paused")}resume(){this._status==="paused"&&(this._status="idle")}async stop(){this._status="stopped"}getHealth(){let e=this._executionDurations.length>0?this._executionDurations.reduce((n,t)=>n+t,0)/this._executionDurations.length:0,r=this._totalExecutions>0?this._successfulExecutions/this._totalExecutions:1;return{status:this._status,healthScore:Math.round(r*100),totalExecutions:this._totalExecutions,successfulExecutions:this._successfulExecutions,failedExecutions:this._failedExecutions,avgDurationMs:Math.round(e),recentResults:[...this._recentResults]}}async executeWithTimeout(e,r,n){return new Promise((t,o)=>{let a=setTimeout(()=>{o(new Error(`Worker execution timed out after ${r}ms`))},r),u=()=>{clearTimeout(a),o(new Error("Worker execution aborted"))};n.addEventListener("abort",u,{once:!0}),e().then(c=>{clearTimeout(a),n.removeEventListener("abort",u),t(c)}).catch(c=>{clearTimeout(a),n.removeEventListener("abort",u),o(c)})})}createErrorResult(e,r){return{workerId:this.config.id,timestamp:new Date,durationMs:r,success:!1,error:e.message,metrics:{itemsAnalyzed:0,issuesFound:0,healthScore:0,trend:"degrading",domainMetrics:{}},findings:[],recommendations:[]}}createResult(e,r,n,t){return{workerId:this.config.id,timestamp:new Date,durationMs:e,success:!0,metrics:r,findings:n,recommendations:t}}delay(e){return new Promise(r=>setTimeout(r,e))}generateId(){return`${Date.now()}-${M().slice(0,9)}`}};P();R();var W={id:"heartbeat-scheduler",name:"Heartbeat Scheduler",description:"Token-free maintenance: pattern promotion, stale detection, experience buffer monitoring",intervalMs:1800*1e3,priority:"normal",targetDomains:["learning-optimization"],enabled:!0,timeoutMs:6e4,retryCount:1,retryDelayMs:5e3},b=class extends p{lifecycleManager=null;dailyLogger;lastRunTimestamp=0;constructor(){super(W),this.dailyLogger=new k}async getLifecycleManager(){if(this.lifecycleManager)return this.lifecycleManager;try{let e=g();await e.initialize();let r=e.getDatabase();return this.lifecycleManager=v(r,{promotionRewardThreshold:.7,promotionMinOccurrences:2,promotionMinSuccessRate:.7,deprecationFailureThreshold:3,staleDaysThreshold:30,confidenceDecayRate:.01,minActiveConfidence:.3}),this.lifecycleManager}catch{return null}}getPendingExperienceCount(){try{return g().getDatabase().prepare("SELECT COUNT(*) as pending FROM qe_pattern_usage WHERE created_at > datetime('now', '-1 day')").get()?.pending??0}catch{return 0}}async doExecute(e){let r=Date.now();e.logger.info("Heartbeat scheduler running (token-free maintenance)");let n=[],t=[],o=await this.getLifecycleManager();if(!o)return e.logger.warn("Unified memory unavailable \u2014 returning zero-metric heartbeat"),this.createResult(Date.now()-r,{itemsAnalyzed:0,issuesFound:0,healthScore:50,trend:"stable",domainMetrics:{promoted:0,deprecated:0,decayed:0,stalePatterns:0,pendingExperiences:0,avgConfidence:0,avgSuccessRate:0}},[],[]);let a=0,u=0;try{let s=o.promoteEligiblePatterns();a=s.promoted,u=s.checked,a>0&&n.push({type:"heartbeat-promotion",severity:"info",domain:"learning-optimization",title:"Patterns Promoted",description:`${a} of ${u} short-term patterns promoted to long-term`})}catch(s){e.logger.warn("Pattern promotion failed",{error:d(s)})}let c=0,h=0;try{let s=o.deprecateStalePatterns();c=s.deprecated,h=s.checked,c>0&&n.push({type:"heartbeat-deprecation",severity:"low",domain:"learning-optimization",title:"Stale Patterns Deprecated",description:`${c} of ${h} patterns deprecated (stale, failed, or low confidence)`})}catch(s){e.logger.warn("Stale pattern detection failed",{error:d(s)})}let l=0;try{let s=this.lastRunTimestamp>0?(Date.now()-this.lastRunTimestamp)/864e5:1;l=o.applyConfidenceDecay(Math.min(s,7)).decayed}catch(s){e.logger.warn("Confidence decay failed",{error:d(s)})}let m=this.getPendingExperienceCount(),i={totalPatterns:0,activePatterns:0,deprecatedPatterns:0,promotedPatterns:0,shortTermPatterns:0,longTermPatterns:0,avgConfidence:0,avgSuccessRate:0,patternsNearDeprecation:0};try{i=o.getStats()}catch(s){e.logger.warn("Stats retrieval failed",{error:d(s)})}try{this.dailyLogger.log({timestamp:new Date,type:"pattern-promoted",summary:`Heartbeat: ${a} promoted, ${c} deprecated, ${l} decayed, ${m} pending exp, ${i.activePatterns} active patterns (avg conf: ${i.avgConfidence.toFixed(2)})`,details:{promoted:a,deprecated:c,decayed:l,pendingExperiences:m,totalPatterns:i.totalPatterns,activePatterns:i.activePatterns,avgConfidence:i.avgConfidence,avgSuccessRate:i.avgSuccessRate}}),this.dailyLogger.flush()}catch(s){e.logger.warn("Daily log write failed",{error:d(s)})}this.lastRunTimestamp=Date.now(),i.activePatterns>0&&i.patternsNearDeprecation/i.activePatterns>.5&&t.push({priority:"p2",domain:"learning-optimization",action:"Review At-Risk Patterns",description:`${i.patternsNearDeprecation} of ${i.activePatterns} active patterns are near deprecation. Manual review recommended.`,estimatedImpact:"medium",effort:"low",autoFixable:!1});let f=this.calculateHealthScore(i,a,c),D=this.determineTrend(a,c,i.activePatterns),_=Math.max(u,h),x=a+c+i.patternsNearDeprecation;return e.logger.info("Heartbeat complete",{promoted:a,deprecated:c,decayed:l,pendingExperiences:m,healthScore:f}),this.createResult(Date.now()-r,{itemsAnalyzed:_,issuesFound:x,healthScore:f,trend:D,domainMetrics:{promoted:a,deprecated:c,decayed:l,stalePatterns:i.patternsNearDeprecation,pendingExperiences:m,avgConfidence:Number(i.avgConfidence.toFixed(3)),avgSuccessRate:Number(i.avgSuccessRate.toFixed(3))}},n,t)}calculateHealthScore(e,r,n){let t=70;if(t+=Math.min(15,r*5),e.avgConfidence>0&&(t+=Math.round((e.avgConfidence-.5)*30)),e.activePatterns>0){let o=n/e.activePatterns;t-=Math.round(o*20)}return e.activePatterns>0&&e.patternsNearDeprecation/e.activePatterns>.5&&(t-=10),Math.max(0,Math.min(100,Math.round(t)))}determineTrend(e,r,n){return n===0?"stable":e>r?"improving":r>e&&r/n>.1?"degrading":"stable"}};export{b as HeartbeatSchedulerWorker};
@@ -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.15");process.exit(0)}
2
+ import{a,c as b}from"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";b();export{a as HnswAdapter};
@@ -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.15");process.exit(0)}
2
+ import{a,b,c,d}from"./chunk-CSB2M7IX.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-D3ZUSXFY.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{a as DEFAULT_HNSW_CONFIG,b as HNSWIndex,d as benchmarkHNSW,c as createHNSWIndex};
@@ -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.13");process.exit(0)}
2
- import"./chunk-ERGY45RL.js";var s=class{adapter;metadataMap=new Map;insertCount=0;constructor(e){this.adapter=e}async initialize(){}async insert(e,t,r){this.adapter.addByStringId(e,t),this.insertCount++,r&&this.metadataMap.set(e,r)}async search(e,t){return this.adapter.searchByArray(e,t).map(a=>({key:a.id,score:a.score,distance:1-a.score,metadata:this.metadataMap.get(a.id)}))}async batchInsert(e){for(let t of e)await this.insert(t.key,t.vector,t.metadata)}async delete(e){let t=this.adapter.removeByStringId(e);return t&&this.metadataMap.delete(e),t}async getStats(){return{nativeHNSW:!0,backendType:"ruvector-gnn",vectorCount:this.adapter.size(),indexSizeBytes:this.adapter.size()*this.adapter.dimensions()*4,avgSearchLatencyMs:this.adapter.lastSearchLatencyMs,p95SearchLatencyMs:0,p99SearchLatencyMs:0,searchOperations:0,insertOperations:this.insertCount}}async clear(){this.adapter.clear(),this.metadataMap.clear(),this.insertCount=0}isNativeAvailable(){return!0}};export{s as HnswLegacyBridge};
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.15");process.exit(0)}
2
+ import"./chunk-CUQBOVRP.js";var s=class{adapter;metadataMap=new Map;insertCount=0;constructor(e){this.adapter=e}async initialize(){}async insert(e,t,r){this.adapter.addByStringId(e,t),this.insertCount++,r&&this.metadataMap.set(e,r)}async search(e,t){return this.adapter.searchByArray(e,t).map(a=>({key:a.id,score:a.score,distance:1-a.score,metadata:this.metadataMap.get(a.id)}))}async batchInsert(e){for(let t of e)await this.insert(t.key,t.vector,t.metadata)}async delete(e){let t=this.adapter.removeByStringId(e);return t&&this.metadataMap.delete(e),t}async getStats(){return{nativeHNSW:!0,backendType:"ruvector-gnn",vectorCount:this.adapter.size(),indexSizeBytes:this.adapter.size()*this.adapter.dimensions()*4,avgSearchLatencyMs:this.adapter.lastSearchLatencyMs,p95SearchLatencyMs:0,p99SearchLatencyMs:0,searchOperations:0,insertOperations:this.insertCount}}async clear(){this.adapter.clear(),this.metadataMap.clear(),this.insertCount=0}isNativeAvailable(){return!0}};export{s as HnswLegacyBridge};
@@ -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.13");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o}from"./chunk-AXDGBI4Y.js";import"./chunk-ERGY45RL.js";export{i as DotProductAttention,h as FlashAttention,k as HyperbolicAttention,l as LinearAttention,m as MoEAttention,j as MultiHeadAttention,b as RuvectorLayer,n as SonaEngine,c as TensorCompress,a as default,d as differentiableSearch,f as getCompressionLevel,e as hierarchicalForward,g as init,o as pipeline};
1
+ import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.15");process.exit(0)}
2
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o}from"./chunk-SXUX6PTE.js";import"./chunk-CUQBOVRP.js";export{i as DotProductAttention,h as FlashAttention,k as HyperbolicAttention,l as LinearAttention,m as MoEAttention,j as MultiHeadAttention,b as RuvectorLayer,n as SonaEngine,c as TensorCompress,a as default,d as differentiableSearch,f as getCompressionLevel,e as hierarchicalForward,g as init,o as pipeline};
@@ -1,11 +1,11 @@
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.13");process.exit(0)}
3
- import{a as S,b as z,c as F}from"./chunk-KULWZMVC.js";import{a as U,b as Q}from"./chunk-R4B2B6MZ.js";import{g as j}from"./chunk-Q7TWE55T.js";import"./chunk-APQYMAKG.js";import"./chunk-TRJRRJV3.js";import"./chunk-OBDM6OJL.js";import"./chunk-TOS3PI5Q.js";import"./chunk-VVVIRGO7.js";import"./chunk-FLML5IT7.js";import{a as L}from"./chunk-YCQ2GHFH.js";import"./chunk-RYPUA6E2.js";import"./chunk-7HX2PMBB.js";import"./chunk-TWRGM5TY.js";import{f as E,o as O}from"./chunk-EBQUXPIG.js";import"./chunk-XXQYSDLV.js";import"./chunk-Y2ONHWXI.js";import"./chunk-HHRUXDLT.js";import{b as M,d as oe}from"./chunk-VCJP7HQG.js";import"./chunk-QIE76ERL.js";import"./chunk-3AOWTHLS.js";import"./chunk-IQGVQBVS.js";import"./chunk-CF5EJGOV.js";import"./chunk-OM7A3YC3.js";import"./chunk-77GZ7LXL.js";import"./chunk-YYQVSVBO.js";import"./chunk-ZS5BM2EE.js";import"./chunk-AZPDX4KS.js";import"./chunk-V2CV6J2A.js";import"./chunk-JOCR5TWI.js";import"./chunk-W2YCNX4O.js";import"./chunk-ERGY45RL.js";import{Command as ge}from"commander";import A from"chalk";import V from"node:path";O();import{randomUUID as se}from"crypto";import I from"chalk";var v="dream-scheduler:hook-state",G=36e5,J=20,W=3e5;async function N(r){try{let e=await r.get(v);if(!e)return{triggered:!1,reason:"no-state"};let t=Date.now(),o=e.lastDreamTime?new Date(e.lastDreamTime).getTime():0,n=t-o;if(n<W)return{triggered:!1,reason:"too-soon"};let s=n>=G,a=e.experienceCount>=J;if(!s&&!a)return{triggered:!1,reason:"conditions-not-met"};let c=s?"time-interval":"experience-threshold";console.log(I.dim(`[hooks] Dream trigger: ${c} (${e.experienceCount} experiences, ${Math.round(n/6e4)}min since last dream)`));let{createDreamEngine:i}=await import("./dream-SAPSS25B.js"),{createQEReasoningBank:h}=await import("./qe-reasoning-bank-4RLPRCGF.js"),u=i({maxDurationMs:1e4,minConceptsRequired:3});await u.initialize();let k=h(r,void 0,{enableLearning:!0,enableGuidance:!1,enableRouting:!1,embeddingDimension:384,useONNXEmbeddings:!0});await k.initialize();let p=await k.searchPatterns("",{limit:100,minConfidence:.3});if(p.success&&p.value.length>0){let R=p.value.map($=>({id:$.pattern.id,name:$.pattern.name,description:$.pattern.description||`${$.pattern.patternType} pattern`,domain:$.pattern.qeDomain||"learning-optimization",patternType:$.pattern.patternType,confidence:$.pattern.confidence,successRate:$.pattern.successRate||.5}));await u.loadPatternsAsConcepts(R)}let f=await u.dream(1e4);return e.lastDreamTime=new Date().toISOString(),e.experienceCount=0,e.totalDreamsThisSession++,await r.set(v,e),await u.close(),{triggered:!0,reason:c,insightsGenerated:f.insights.length}}catch(e){return console.error(I.dim(`[hooks] Dream trigger failed: ${e instanceof Error?e.message:"unknown"}`)),{triggered:!1,reason:"error"}}}async function D(r){try{let e=await r.get(v);return e||(e={lastDreamTime:null,experienceCount:0,sessionStartTime:new Date().toISOString(),totalDreamsThisSession:0}),e.experienceCount++,await r.set(v,e),e.experienceCount}catch{return 0}}async function P(r){try{let{getUnifiedMemory:e}=await import("./unified-memory-CZCWZUFP.js"),t=e();t.isInitialized()||await t.initialize();let o=t.getDatabase(),n=`cli-${Date.now()}-${se().slice(0,8)}`,s=r.durationMs||0,a;if(r.success){let c=s>0&&s<5e3?.1:0,i=r.source.includes("post-task")?.1:r.source.includes("post-edit")?.05:0;a=Math.min(.95,.7+c+i)}else{let c=r.source.includes("post-task")?.15:r.source.includes("post-edit")?.1:0;a=Math.min(.6,.3+c)}o.prepare(`
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.15");process.exit(0)}
3
+ import{a as S,b as z,c as F}from"./chunk-HNAQNAGI.js";import{a as U,b as Q}from"./chunk-GLJ6CJNY.js";import{g as j}from"./chunk-FSOY2XB4.js";import"./chunk-II5KTTIS.js";import"./chunk-7J5KWUC2.js";import"./chunk-62MVVEGH.js";import"./chunk-V65DK6ZZ.js";import"./chunk-ZSC7NHK3.js";import"./chunk-QNLZKD7E.js";import{a as L}from"./chunk-MO4Q5ZGE.js";import"./chunk-6AMD4PZB.js";import"./chunk-V6QARSVQ.js";import"./chunk-U4WDJPRL.js";import{f as E,o as O}from"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import{b as M,d as oe}from"./chunk-2XW36KDQ.js";import"./chunk-FW6QBTPE.js";import"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";import{Command as ge}from"commander";import A from"chalk";import V from"node:path";O();import{randomUUID as se}from"crypto";import I from"chalk";var v="dream-scheduler:hook-state",G=36e5,J=20,W=3e5;async function N(r){try{let e=await r.get(v);if(!e)return{triggered:!1,reason:"no-state"};let t=Date.now(),o=e.lastDreamTime?new Date(e.lastDreamTime).getTime():0,n=t-o;if(n<W)return{triggered:!1,reason:"too-soon"};let s=n>=G,a=e.experienceCount>=J;if(!s&&!a)return{triggered:!1,reason:"conditions-not-met"};let c=s?"time-interval":"experience-threshold";console.log(I.dim(`[hooks] Dream trigger: ${c} (${e.experienceCount} experiences, ${Math.round(n/6e4)}min since last dream)`));let{createDreamEngine:i}=await import("./dream-XBRGYPBC.js"),{createQEReasoningBank:h}=await import("./qe-reasoning-bank-VDROHXFS.js"),u=i({maxDurationMs:1e4,minConceptsRequired:3});await u.initialize();let k=h(r,void 0,{enableLearning:!0,enableGuidance:!1,enableRouting:!1,embeddingDimension:384,useONNXEmbeddings:!0});await k.initialize();let p=await k.searchPatterns("",{limit:100,minConfidence:.3});if(p.success&&p.value.length>0){let R=p.value.map($=>({id:$.pattern.id,name:$.pattern.name,description:$.pattern.description||`${$.pattern.patternType} pattern`,domain:$.pattern.qeDomain||"learning-optimization",patternType:$.pattern.patternType,confidence:$.pattern.confidence,successRate:$.pattern.successRate||.5}));await u.loadPatternsAsConcepts(R)}let f=await u.dream(1e4);return e.lastDreamTime=new Date().toISOString(),e.experienceCount=0,e.totalDreamsThisSession++,await r.set(v,e),await u.close(),{triggered:!0,reason:c,insightsGenerated:f.insights.length}}catch(e){return console.error(I.dim(`[hooks] Dream trigger failed: ${e instanceof Error?e.message:"unknown"}`)),{triggered:!1,reason:"error"}}}async function D(r){try{let e=await r.get(v);return e||(e={lastDreamTime:null,experienceCount:0,sessionStartTime:new Date().toISOString(),totalDreamsThisSession:0}),e.experienceCount++,await r.set(v,e),e.experienceCount}catch{return 0}}async function P(r){try{let{getUnifiedMemory:e}=await import("./unified-memory-L6735TFM.js"),t=e();t.isInitialized()||await t.initialize();let o=t.getDatabase(),n=`cli-${Date.now()}-${se().slice(0,8)}`,s=r.durationMs||0,a;if(r.success){let c=s>0&&s<5e3?.1:0,i=r.source.includes("post-task")?.1:r.source.includes("post-edit")?.05:0;a=Math.min(.95,.7+c+i)}else{let c=r.source.includes("post-task")?.15:r.source.includes("post-edit")?.1:0;a=Math.min(.6,.3+c)}o.prepare(`
4
4
  INSERT OR REPLACE INTO captured_experiences
5
5
  (id, task, agent, domain, success, quality, duration_ms,
6
6
  started_at, completed_at, source)
7
7
  VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'), ?)
8
- `).run(n,r.task.slice(0,500),r.agent,r.domain,r.success?1:0,a,s,r.source)}catch(e){console.error(I.dim(`[hooks] persistCommandExperience: ${e instanceof Error?e.message:"unknown"}`))}}async function B(){let{getUnifiedMemory:r}=await import("./unified-memory-CZCWZUFP.js"),e=r();e.isInitialized()||await e.initialize();let t=e.getDatabase(),o=new Set(t.prepare("PRAGMA table_info(captured_experiences)").all().map(i=>i.name)),n=[["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 n)o.has(i)||t.exec(`ALTER TABLE captured_experiences ADD COLUMN ${i} ${h}`);let s=t.prepare(`
8
+ `).run(n,r.task.slice(0,500),r.agent,r.domain,r.success?1:0,a,s,r.source)}catch(e){console.error(I.dim(`[hooks] persistCommandExperience: ${e instanceof Error?e.message:"unknown"}`))}}async function B(){let{getUnifiedMemory:r}=await import("./unified-memory-L6735TFM.js"),e=r();e.isInitialized()||await e.initialize();let t=e.getDatabase(),o=new Set(t.prepare("PRAGMA table_info(captured_experiences)").all().map(i=>i.name)),n=[["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 n)o.has(i)||t.exec(`ALTER TABLE captured_experiences ADD COLUMN ${i} ${h}`);let s=t.prepare(`
9
9
  SELECT
10
10
  domain,
11
11
  agent,
@@ -22,7 +22,7 @@ import{a as S,b as z,c as F}from"./chunk-KULWZMVC.js";import{a as U,b as Q}from"
22
22
  HAVING cnt >= 3 AND avg_quality >= 0.5 AND success_rate >= 0.6
23
23
  ORDER BY avg_quality DESC
24
24
  LIMIT 50
25
- `).all();if(s.length===0)return 0;let{v4:a}=await import("./esm-node-FTBUMV4L.js"),c=0;for(let i of s)try{let h=new Date().toISOString().slice(0,7),u=`${i.agent}-${i.domain}-${h}`,k=t.prepare(`
25
+ `).all();if(s.length===0)return 0;let{v4:a}=await import("./esm-node-EV4HOHTZ.js"),c=0;for(let i of s)try{let h=new Date().toISOString().slice(0,7),u=`${i.agent}-${i.domain}-${h}`,k=t.prepare(`
26
26
  SELECT id FROM qe_patterns
27
27
  WHERE qe_domain = ? AND name = ?
28
28
  LIMIT 1
@@ -44,7 +44,7 @@ import{a as S,b as z,c as F}from"./chunk-KULWZMVC.js";import{a as U,b as Q}from"
44
44
  UPDATE captured_experiences
45
45
  SET application_count = application_count + 1
46
46
  WHERE domain = ? AND agent = ? AND application_count = 0
47
- `).run(i.domain,i.agent)}catch{}return c}var d={reasoningBank:null,hookRegistry:null,coherenceService:null,sessionId:null,initialized:!1,initializationPromise:null};async function g(){if(d.initializationPromise&&await d.initializationPromise,d.initialized&&d.reasoningBank&&d.hookRegistry)return{reasoningBank:d.reasoningBank,hookRegistry:d.hookRegistry};if(d.initializationPromise=re(),await d.initializationPromise,d.initializationPromise=null,!d.reasoningBank||!d.hookRegistry)throw new Error("Failed to initialize hooks system");return{reasoningBank:d.reasoningBank,hookRegistry:d.hookRegistry}}async function re(){if(!d.initialized)try{let r=E(),e=V.join(r,".agentic-qe"),t=await T(e);try{d.coherenceService=await U(Q),console.log(A.dim("[hooks] CoherenceService initialized with WASM engines"))}catch(a){console.log(A.dim(`[hooks] CoherenceService WASM unavailable, using fallback: ${a instanceof Error?a.message:"unknown"}`))}d.reasoningBank=j(t,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0,embeddingDimension:384,useONNXEmbeddings:!0},d.coherenceService??void 0);let o=1e4,n=d.reasoningBank.initialize(),s=new Promise((a,c)=>setTimeout(()=>c(new Error("ReasoningBank init timeout")),o));await Promise.race([n,s]);try{let{getSharedRvfDualWriter:a}=await import("./shared-rvf-dual-writer-6K3ZAG7P.js"),c=await a();c&&d.reasoningBank.setRvfDualWriter(c)}catch(a){process.env.DEBUG&&console.debug("[hooks] RVF wiring skipped:",a instanceof Error?a.message:a)}d.hookRegistry=F(d.reasoningBank),d.initialized=!0,console.log(A.dim("[hooks] System initialized"))}catch(r){console.warn(A.yellow(`[hooks] Using fallback mode: ${r instanceof Error?r.message:"unknown error"}`));let e=ie();d.reasoningBank=j(e,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0}),d.hookRegistry=new z,d.hookRegistry.initialize(d.reasoningBank),d.initialized=!0}}async function T(r){let t=new L({sqlite:{path:V.join(r,"memory.db"),walMode:!0,poolSize:3,busyTimeout:5e3},enableFallback:!0,defaultNamespace:"qe-patterns"}),o=t.initialize(),n=new Promise((s,a)=>setTimeout(()=>a(new Error("Backend init timeout")),5e3));return await Promise.race([o,n]),t}function ie(){let r=new Map;return{initialize:async()=>{},dispose:async()=>{r.clear()},get:async e=>{let t=r.get(e);return t?t.value:void 0},set:async(e,t,o)=>{r.set(e,{value:t})},delete:async e=>r.delete(e),has:async e=>r.has(e),search:async(e,t)=>{let o=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(o.replace(/\*/g,".*"));return Array.from(r.keys()).filter(s=>n.test(s))},vectorSearch:async(e,t)=>[],storeVector:async(e,t,o)=>{},count:async e=>{let t=0,o=`${e}:`;for(let n of r.keys())n.startsWith(o)&&t++;return t},hasCodeIntelligenceIndex:async()=>{let e="code-intelligence:kg:";for(let t of r.keys())if(t.startsWith(e))return!0;return!1}}}function m(r){console.log(JSON.stringify(r,null,2))}function b(r){console.log(A.green("\u2713"),r)}function y(r){console.error(A.red("\u2717"),r)}function C(r){if(r.length===0){console.log(A.dim(" No specific guidance"));return}r.forEach((e,t)=>{console.log(A.cyan(` ${t+1}.`),e)})}import _ from"chalk";import ae from"node:path";O();function Z(r){r.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 g(),n=(await t.emit(S.PreTestGeneration,{targetFile:e.file,testType:"unit",operation:e.operation}))[0]||{success:!0,guidance:[],routing:null};if(e.json){let s=n.guidance||[],c=[n.routing?.recommendedAgent?`Recommended agent: ${n.routing.recommendedAgent} (${(n.routing.confidence*100).toFixed(0)}% confidence).`:"",...s.map(i=>i)].filter(Boolean).join(" ");m({hookSpecificOutput:{hookEventName:"PreToolUse",additionalContext:c||void 0},file:e.file,operation:e.operation,patterns:n.routing?.patterns?.length||0})}else console.log(_.bold(`
47
+ `).run(i.domain,i.agent)}catch{}return c}var d={reasoningBank:null,hookRegistry:null,coherenceService:null,sessionId:null,initialized:!1,initializationPromise:null};async function g(){if(d.initializationPromise&&await d.initializationPromise,d.initialized&&d.reasoningBank&&d.hookRegistry)return{reasoningBank:d.reasoningBank,hookRegistry:d.hookRegistry};if(d.initializationPromise=re(),await d.initializationPromise,d.initializationPromise=null,!d.reasoningBank||!d.hookRegistry)throw new Error("Failed to initialize hooks system");return{reasoningBank:d.reasoningBank,hookRegistry:d.hookRegistry}}async function re(){if(!d.initialized)try{let r=E(),e=V.join(r,".agentic-qe"),t=await T(e);try{d.coherenceService=await U(Q),console.log(A.dim("[hooks] CoherenceService initialized with WASM engines"))}catch(a){console.log(A.dim(`[hooks] CoherenceService WASM unavailable, using fallback: ${a instanceof Error?a.message:"unknown"}`))}d.reasoningBank=j(t,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0,embeddingDimension:384,useONNXEmbeddings:!0},d.coherenceService??void 0);let o=1e4,n=d.reasoningBank.initialize(),s=new Promise((a,c)=>setTimeout(()=>c(new Error("ReasoningBank init timeout")),o));await Promise.race([n,s]);try{let{getSharedRvfDualWriter:a}=await import("./shared-rvf-dual-writer-LVJJS3PD.js"),c=await a();c&&d.reasoningBank.setRvfDualWriter(c)}catch(a){process.env.DEBUG&&console.debug("[hooks] RVF wiring skipped:",a instanceof Error?a.message:a)}d.hookRegistry=F(d.reasoningBank),d.initialized=!0,console.log(A.dim("[hooks] System initialized"))}catch(r){console.warn(A.yellow(`[hooks] Using fallback mode: ${r instanceof Error?r.message:"unknown error"}`));let e=ie();d.reasoningBank=j(e,void 0,{enableLearning:!0,enableGuidance:!0,enableRouting:!0}),d.hookRegistry=new z,d.hookRegistry.initialize(d.reasoningBank),d.initialized=!0}}async function T(r){let t=new L({sqlite:{path:V.join(r,"memory.db"),walMode:!0,poolSize:3,busyTimeout:5e3},enableFallback:!0,defaultNamespace:"qe-patterns"}),o=t.initialize(),n=new Promise((s,a)=>setTimeout(()=>a(new Error("Backend init timeout")),5e3));return await Promise.race([o,n]),t}function ie(){let r=new Map;return{initialize:async()=>{},dispose:async()=>{r.clear()},get:async e=>{let t=r.get(e);return t?t.value:void 0},set:async(e,t,o)=>{r.set(e,{value:t})},delete:async e=>r.delete(e),has:async e=>r.has(e),search:async(e,t)=>{let o=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&"),n=new RegExp(o.replace(/\*/g,".*"));return Array.from(r.keys()).filter(s=>n.test(s))},vectorSearch:async(e,t)=>[],storeVector:async(e,t,o)=>{},count:async e=>{let t=0,o=`${e}:`;for(let n of r.keys())n.startsWith(o)&&t++;return t},hasCodeIntelligenceIndex:async()=>{let e="code-intelligence:kg:";for(let t of r.keys())if(t.startsWith(e))return!0;return!1}}}function m(r){console.log(JSON.stringify(r,null,2))}function b(r){console.log(A.green("\u2713"),r)}function y(r){console.error(A.red("\u2717"),r)}function C(r){if(r.length===0){console.log(A.dim(" No specific guidance"));return}r.forEach((e,t)=>{console.log(A.cyan(` ${t+1}.`),e)})}import _ from"chalk";import ae from"node:path";O();function Z(r){r.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 g(),n=(await t.emit(S.PreTestGeneration,{targetFile:e.file,testType:"unit",operation:e.operation}))[0]||{success:!0,guidance:[],routing:null};if(e.json){let s=n.guidance||[],c=[n.routing?.recommendedAgent?`Recommended agent: ${n.routing.recommendedAgent} (${(n.routing.confidence*100).toFixed(0)}% confidence).`:"",...s.map(i=>i)].filter(Boolean).join(" ");m({hookSpecificOutput:{hookEventName:"PreToolUse",additionalContext:c||void 0},file:e.file,operation:e.operation,patterns:n.routing?.patterns?.length||0})}else console.log(_.bold(`
48
48
  \u{1F4DD} Pre-Edit Analysis`)),console.log(_.dim(` File: ${e.file}`)),console.log(_.dim(` Operation: ${e.operation}`)),n.routing&&(console.log(_.bold(`
49
49
  \u{1F3AF} Recommended Agent:`),_.cyan(n.routing.recommendedAgent)),console.log(_.dim(` Confidence: ${(n.routing.confidence*100).toFixed(1)}%`))),console.log(_.bold(`
50
50
  \u{1F4A1} Guidance:`)),C(n.guidance||[]);return}catch(t){throw y(`pre-edit failed: ${t instanceof Error?t.message:"unknown"}`),t}}),r.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 g(),o=e.success||!e.failure,n=e.file||"",s=n.split("/").pop()||"unknown",c=/\.(test|spec)\.(ts|js|tsx|jsx)$/.test(s)?"test-generation":"code-intelligence",i=e.patternId||`edit:${c}:${s}`,u=(await t.emit(S.PostTestGeneration,{targetFile:e.file,success:o,patternId:i,generatedTests:null,testCount:0}))[0]||{success:!0,patternsLearned:0};try{let{reasoningBank:p}=await g();await p.recordOutcome({patternId:i,success:o,metrics:{executionTimeMs:0},feedback:`Edit ${o?"succeeded":"failed"}: ${n}`})}catch{}try{await P({task:`edit: ${n}`,agent:"cli-hook",domain:c,success:o,source:"cli-hook-post-edit"})}catch{}let k=!1;try{let p=E(),f=ae.join(p,".agentic-qe"),R=await T(f);await D(R)}catch{}e.json?m({success:!0,file:e.file,editSuccess:o,patternsLearned:u.patternsLearned||0,dreamTriggered:k}):(b(`Recorded edit outcome for ${e.file}`),u.patternsLearned&&console.log(_.green(` Patterns learned: ${u.patternsLearned}`)));return}catch(t){throw y(`post-edit failed: ${t instanceof Error?t.message:"unknown"}`),t}})}O();import{randomUUID as ce}from"crypto";import w from"chalk";import de from"node:path";function K(r){r.command("route").description("Route a task to the optimal QE agent").requiredOption("-t, --task <description>","Task description").option("-d, --domain <domain>","Target QE domain hint").option("-c, --capabilities <caps...>","Required capabilities").option("--json","Output as JSON").action(async e=>{try{let{reasoningBank:t}=await g(),o={task:e.task,domain:e.domain,capabilities:e.capabilities},n=await t.routeTask(o);if(!n.success)throw new Error(n.error.message);let s=n.value;e.json?m({recommendedAgent:s.recommendedAgent,confidence:s.confidence,alternatives:s.alternatives,domains:s.domains,patternCount:s.patterns.length,guidance:s.guidance,reasoning:s.reasoning}):(console.log(w.bold(`
@@ -53,7 +53,7 @@ import{a as S,b as z,c as F}from"./chunk-KULWZMVC.js";import{a as U,b as Q}from"
53
53
  \u{1F504} Alternatives:`)),s.alternatives.forEach(a=>{console.log(w.dim(` - ${a.agent}: ${(a.score*100).toFixed(1)}%`))})),console.log(w.bold(`
54
54
  \u{1F4C2} Detected Domains:`),s.domains.join(", ")),console.log(w.bold(`
55
55
  \u{1F4A1} Guidance:`)),C(s.guidance),console.log(w.bold(`
56
- \u{1F4D6} Reasoning:`),w.dim(s.reasoning)));try{let{getUnifiedMemory:a}=await import("./unified-memory-CZCWZUFP.js"),c=a();c.isInitialized()||await c.initialize();let i=c.getDatabase(),h=`route-${Date.now()}-${ce().slice(0,8)}`;i.prepare(`
56
+ \u{1F4D6} Reasoning:`),w.dim(s.reasoning)));try{let{getUnifiedMemory:a}=await import("./unified-memory-L6735TFM.js"),c=a();c.isInitialized()||await c.initialize();let i=c.getDatabase(),h=`route-${Date.now()}-${ce().slice(0,8)}`;i.prepare(`
57
57
  INSERT OR REPLACE INTO routing_outcomes (
58
58
  id, task_json, decision_json, used_agent,
59
59
  followed_recommendation, success, quality_score,
@@ -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.13");process.exit(0)}
2
- import{a as b,b as B,c as P,d as O,e as F}from"./chunk-VWEGO7BY.js";import{b as k,c as x,d as _,e as w}from"./chunk-ZN7KPIJW.js";import{a as h,b as z}from"./chunk-ZXJNX5D2.js";import{a as M}from"./chunk-VHSDZEYF.js";import{b as S,c as U}from"./chunk-3AOWTHLS.js";import{f as I}from"./chunk-IQGVQBVS.js";import"./chunk-ERGY45RL.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.15");process.exit(0)}
2
+ import{a as b,b as B,c as P,d as O,e as F}from"./chunk-7ZPNQ3T6.js";import{b as k,c as x,d as _,e as w}from"./chunk-TZWCVGG2.js";import{a as h,b as z}from"./chunk-MHL6CPGY.js";import{a as M}from"./chunk-V775NJOM.js";import{b as S,c as U}from"./chunk-JJDHD7SC.js";import{f as I}from"./chunk-MBDX4OHD.js";import"./chunk-CUQBOVRP.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.13");process.exit(0)}
2
- import{a,b,c,d,e}from"./chunk-5TDHUYYF.js";import"./chunk-XXQYSDLV.js";import"./chunk-VCJP7HQG.js";import"./chunk-3AOWTHLS.js";import"./chunk-IQGVQBVS.js";import"./chunk-ERGY45RL.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.15");process.exit(0)}
2
+ import{a,b,c,d,e}from"./chunk-G3FUOFXA.js";import"./chunk-KKBSX43Q.js";import"./chunk-2XW36KDQ.js";import"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-CUQBOVRP.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.13");process.exit(0)}
2
- import"./chunk-ERGY45RL.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.15");process.exit(0)}
2
+ import"./chunk-CUQBOVRP.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-ERGY45RL.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-CZCWZUFP.js"),{openDatabase:s}=await import("./safe-db-FFSPBUAK.js"),{createHypergraphEngine:t}=await import("./hypergraph-engine-3TKB5O7T.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-L6735TFM.js"),{openDatabase:s}=await import("./safe-db-PYWBVGOV.js"),{createHypergraphEngine:t}=await import("./hypergraph-engine-KK73LZYZ.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.15");process.exit(0)}
2
+ import{a}from"./chunk-UZOFXYNC.js";import"./chunk-PSOIVDD2.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-2XW36KDQ.js";import"./chunk-FW6QBTPE.js";import"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-CUQBOVRP.js";export{a as ImpactAnalyzerService};