agentic-qe 3.13.10 → 3.13.12
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.
- package/.claude/helpers/.helpers-version +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +1 -1
- package/.claude/helpers/helpers.manifest.json +6 -6
- package/.claude/helpers/hook-handler.cjs +30 -0
- package/.claude/helpers/intelligence.cjs +121 -10
- package/.claude/helpers/statusline.cjs +786 -8
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +78 -0
- package/README.md +1 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/agents/claim-verifier/claim-verifier-service.js +4 -4
- package/dist/agents/claim-verifier/index.js +6 -6
- package/dist/agents/claim-verifier/verifiers/file-verifier.js +1 -1
- package/dist/agents/claim-verifier/verifiers/index.js +3 -3
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +1 -1
- package/dist/causal-discovery/causal-graph.js +2 -2
- package/dist/causal-discovery/discovery-engine.js +2 -2
- package/dist/causal-discovery/weight-matrix.js +2 -2
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-FUV6LBJT.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-AWNQ6KB3.js → agent-booster-wasm-7I7LZFNC.js} +2 -2
- package/dist/cli/chunks/{agent-handler-RSHQZHPS.js → agent-handler-QZZT52BH.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-FU7Y3TQ3.js → agent-memory-branch-MLQS5Y26.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-QNFNA3J4.js +2 -0
- package/dist/cli/chunks/{arena-LOK2WYHC.js → arena-IM4CP6LP.js} +2 -2
- package/dist/cli/chunks/{arena-XQOCNKB6.js → arena-WRIY37EJ.js} +4 -4
- package/dist/cli/chunks/{audit-6ZS4EAD2.js → audit-BSAQ4EFN.js} +3 -3
- package/dist/cli/chunks/base-37W2XIXC.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IMBCIZK3.js → better-sqlite3-X2XZUXWZ.js} +2 -2
- package/dist/cli/chunks/{brain-handler-3U6BH4EO.js → brain-handler-TVTTWZGP.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-CJBPVBXM.js → branch-enumerator-NI4Q7DSJ.js} +2 -2
- package/dist/cli/chunks/{browser-M4VW3KJY.js → browser-PXBLORUZ.js} +2 -2
- package/dist/cli/chunks/browser-workflow-PDIUEK7B.js +2 -0
- package/dist/cli/chunks/{chunk-PVGOOKBF.js → chunk-2JAC57JE.js} +1 -1
- package/dist/cli/chunks/{chunk-JWV5ZM2S.js → chunk-2VTX4SYW.js} +2 -2
- package/dist/cli/chunks/{chunk-IYLSML27.js → chunk-2VY7FL6A.js} +2 -2
- package/dist/cli/chunks/{chunk-7QNN4GQU.js → chunk-2W3D5A4R.js} +2 -2
- package/dist/cli/chunks/{chunk-OZLMIEJC.js → chunk-33YZGOT6.js} +2 -2
- package/dist/cli/chunks/{chunk-WSPEAYPG.js → chunk-3ASVQILY.js} +2 -2
- package/dist/cli/chunks/{chunk-YO63NTJV.js → chunk-3XVZHJQT.js} +1 -1
- package/dist/cli/chunks/{chunk-H7AACUYS.js → chunk-42AS3HPO.js} +2 -2
- package/dist/cli/chunks/{chunk-HEY2ZRL7.js → chunk-44NPKZGI.js} +2 -2
- package/dist/cli/chunks/{chunk-PIV3QHGJ.js → chunk-4AITMWFZ.js} +2 -2
- package/dist/cli/chunks/{chunk-2SS2SSNZ.js → chunk-4ANJV6I4.js} +3 -3
- package/dist/cli/chunks/{chunk-CCAY7Q56.js → chunk-4FVOJBEU.js} +1 -1
- package/dist/cli/chunks/{chunk-EZY3DAIX.js → chunk-4M7YZ2X7.js} +4 -4
- package/dist/cli/chunks/{chunk-HZIT42TM.js → chunk-4THFPRFM.js} +2 -2
- package/dist/cli/chunks/chunk-4YFXF5AQ.js +21 -0
- package/dist/cli/chunks/{chunk-PUN3KZ6N.js → chunk-4Z4X2ND4.js} +2 -2
- package/dist/cli/chunks/{chunk-4TSLLWE7.js → chunk-52VGZJSD.js} +1 -1
- package/dist/cli/chunks/{chunk-NRD76M7A.js → chunk-5E76HULA.js} +2 -2
- package/dist/cli/chunks/{chunk-RQTXQ6C7.js → chunk-5PI75QYP.js} +2 -2
- package/dist/cli/chunks/{chunk-7BZUNNWC.js → chunk-5PNQNBDZ.js} +1 -1
- package/dist/cli/chunks/{chunk-KBJYXZI7.js → chunk-5VSS2RBD.js} +2 -2
- package/dist/cli/chunks/{chunk-7QSGUJE2.js → chunk-66OQ7AB3.js} +1 -1
- package/dist/cli/chunks/{chunk-WFEHOEYP.js → chunk-6BSZHNOC.js} +1 -1
- package/dist/cli/chunks/{chunk-KQVTTP2S.js → chunk-6KI6LAAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-NZRKWUBM.js → chunk-6KKVMPPR.js} +2 -2
- package/dist/cli/chunks/{chunk-KITVDY4T.js → chunk-7A4WTRWI.js} +1 -1
- package/dist/cli/chunks/{chunk-GRTU5QOT.js → chunk-7LATB5IR.js} +2 -2
- package/dist/cli/chunks/{chunk-J6H2LUBM.js → chunk-7PCIN7UN.js} +2 -2
- package/dist/cli/chunks/{chunk-FBJUNJ2A.js → chunk-7RVLVIAI.js} +1 -1
- package/dist/cli/chunks/{chunk-7NDJW2DU.js → chunk-7ZVO7I4Q.js} +1 -1
- package/dist/cli/chunks/{chunk-EE55ALFK.js → chunk-A5RWLPVT.js} +2 -2
- package/dist/cli/chunks/{chunk-U6YDS37V.js → chunk-AKUDUB3O.js} +2 -2
- package/dist/cli/chunks/{chunk-6SM74KJI.js → chunk-AM42ROKZ.js} +1 -1
- package/dist/cli/chunks/{chunk-VUCCPPQ6.js → chunk-AN5CGTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-QZOAU2N5.js → chunk-AOOCV56W.js} +1 -1
- package/dist/cli/chunks/{chunk-U562TIMO.js → chunk-ASWWBNX2.js} +2 -2
- package/dist/cli/chunks/{chunk-C5CP66K5.js → chunk-AYH3DMW2.js} +1 -1
- package/dist/cli/chunks/{chunk-U5NKLMF4.js → chunk-BODFJ3DC.js} +2 -2
- package/dist/cli/chunks/{chunk-YHAUBZ4H.js → chunk-BZIPYXSW.js} +3 -3
- package/dist/cli/chunks/{chunk-JMF3FMAO.js → chunk-DCVFHVPR.js} +2 -2
- package/dist/cli/chunks/{chunk-H633BGA7.js → chunk-DFLASG3B.js} +1 -1
- package/dist/cli/chunks/{chunk-CPXZC7LF.js → chunk-DGFINXUE.js} +1 -1
- package/dist/cli/chunks/{chunk-54RIPGMC.js → chunk-E67ZXRG6.js} +1 -1
- package/dist/cli/chunks/{chunk-A233TTUX.js → chunk-EDRPTLAX.js} +1 -1
- package/dist/cli/chunks/{chunk-UHSIP4DJ.js → chunk-EG73WYAW.js} +2 -2
- package/dist/cli/chunks/{chunk-EKZNA6HW.js → chunk-FI6J3UHJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6FIWTBR5.js → chunk-G45AOQDZ.js} +1 -1
- package/dist/cli/chunks/{chunk-IR7FZYPO.js → chunk-G6FJHDUG.js} +1 -1
- package/dist/cli/chunks/chunk-GEQWCK4F.js +2 -0
- package/dist/cli/chunks/{chunk-6L36EHM2.js → chunk-GJJWXRAD.js} +2 -2
- package/dist/cli/chunks/{chunk-MMRORLMM.js → chunk-GJUGG6UR.js} +2 -2
- package/dist/cli/chunks/{chunk-YC5UJVV3.js → chunk-GMLRIZ4E.js} +1 -1
- package/dist/cli/chunks/{chunk-UNXPBIX5.js → chunk-GQLJYTXN.js} +2 -2
- package/dist/cli/chunks/{chunk-IJ3HHUSD.js → chunk-H3GAR4SV.js} +2 -2
- package/dist/cli/chunks/{chunk-OSWAQX4G.js → chunk-HAJG44BD.js} +2 -2
- package/dist/cli/chunks/{chunk-GSN4QIDI.js → chunk-HQWFZQMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-JUVW4DOU.js → chunk-HRTSYT4N.js} +2 -2
- package/dist/cli/chunks/{chunk-2HMBDTSI.js → chunk-I5SXLV7D.js} +2 -2
- package/dist/cli/chunks/{chunk-DR4V75BF.js → chunk-IOJ34SXJ.js} +2 -2
- package/dist/cli/chunks/{chunk-JALFKAAD.js → chunk-IPDM3CAK.js} +1 -1
- package/dist/cli/chunks/{chunk-NL3KX4NE.js → chunk-IPZEBALY.js} +34 -29
- package/dist/cli/chunks/{chunk-PSBQRTNF.js → chunk-IQH2RDN3.js} +5 -5
- package/dist/cli/chunks/{chunk-SWZUMHIQ.js → chunk-IT5QIUUA.js} +2 -2
- package/dist/cli/chunks/{chunk-2LGQNT6Q.js → chunk-JTYCOFTD.js} +1 -1
- package/dist/cli/chunks/{chunk-Q7QKJY6Y.js → chunk-JVFZAJ5N.js} +2 -2
- package/dist/cli/chunks/{chunk-F3AHUNWH.js → chunk-KRZYWVS3.js} +2 -2
- package/dist/cli/chunks/{chunk-7JK57AI2.js → chunk-KXSUDN46.js} +1 -1
- package/dist/cli/chunks/{chunk-EP2HOAEB.js → chunk-KYJBJ56M.js} +2 -2
- package/dist/cli/chunks/{chunk-OLETDPH2.js → chunk-L3GBNX7B.js} +2 -2
- package/dist/cli/chunks/{chunk-VWZ743HH.js → chunk-LRO74LPA.js} +4 -4
- package/dist/cli/chunks/{chunk-FC47FRFI.js → chunk-LXVT6JXO.js} +4 -4
- package/dist/cli/chunks/{chunk-7XWFAPPI.js → chunk-M3354CE4.js} +2 -2
- package/dist/cli/chunks/{chunk-37GWETSW.js → chunk-M73KM3AZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BM5BSYPW.js → chunk-M7CPJW53.js} +2 -2
- package/dist/cli/chunks/{chunk-ZAEUW3Q4.js → chunk-MB2KLJ6Q.js} +1 -1
- package/dist/cli/chunks/{chunk-QHRMZP6J.js → chunk-MGKH4LCM.js} +1 -1
- package/dist/cli/chunks/{chunk-AJQGNQ3W.js → chunk-MLFELTJX.js} +2 -2
- package/dist/cli/chunks/{chunk-I3SBXWF2.js → chunk-MLXLGBQZ.js} +1 -1
- package/dist/cli/chunks/{chunk-6C5WRBGZ.js → chunk-MYVKTG55.js} +3 -3
- package/dist/cli/chunks/{chunk-EJRDL5W5.js → chunk-N4OQ4D4V.js} +2 -2
- package/dist/cli/chunks/{chunk-MMA6Q6NF.js → chunk-NDRZZSD5.js} +2 -2
- package/dist/cli/chunks/{chunk-HL5RC5YB.js → chunk-NG6A7LCG.js} +1 -1
- package/dist/cli/chunks/{chunk-JPDJARGR.js → chunk-NJ3QXJ54.js} +2 -2
- package/dist/cli/chunks/{chunk-DZNK4EM7.js → chunk-NJ4YVAG7.js} +3 -3
- package/dist/cli/chunks/chunk-NL2SCAGJ.js +12 -0
- package/dist/cli/chunks/chunk-NLZUGANH.js +11 -0
- package/dist/cli/chunks/{chunk-TIGBPVPZ.js → chunk-NNLZAVFH.js} +1 -1
- package/dist/cli/chunks/{chunk-7XCRPSSU.js → chunk-NTALX2YC.js} +2 -2
- package/dist/cli/chunks/{chunk-YALYPHSG.js → chunk-O4BWESH5.js} +2 -2
- package/dist/cli/chunks/{chunk-C656WHED.js → chunk-OG3DBHIV.js} +2 -2
- package/dist/cli/chunks/{chunk-BFX3N7KU.js → chunk-OZ53BIY5.js} +1 -1
- package/dist/cli/chunks/{chunk-BB4LWAAH.js → chunk-P6EFKHNI.js} +2 -2
- package/dist/cli/chunks/{chunk-2FFCL4BK.js → chunk-PGFCKE4G.js} +3 -3
- package/dist/cli/chunks/{chunk-66BUC3JG.js → chunk-PVINNJ4P.js} +2 -2
- package/dist/cli/chunks/{chunk-FOWBKCRK.js → chunk-QG5L2JM5.js} +10 -10
- package/dist/cli/chunks/{chunk-ATSVI6T4.js → chunk-QM4Z7TQH.js} +1 -1
- package/dist/cli/chunks/{chunk-Q26QKZYI.js → chunk-QXO35J6F.js} +2 -2
- package/dist/cli/chunks/{chunk-FOPLJRWL.js → chunk-R7LGVJMZ.js} +2 -2
- package/dist/cli/chunks/{chunk-PLJ72A3I.js → chunk-RACWX2ZX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZH3MVVXO.js → chunk-RP2BRRLX.js} +2 -2
- package/dist/cli/chunks/{chunk-T7OS4CB4.js → chunk-RP5VFZJO.js} +2 -2
- package/dist/cli/chunks/{chunk-7GZJMPTD.js → chunk-S6WHYOWV.js} +2 -2
- package/dist/cli/chunks/{chunk-C5HYQTD7.js → chunk-SCQNISGS.js} +1 -1
- package/dist/cli/chunks/chunk-SNC73DWF.js +2 -0
- package/dist/cli/chunks/{chunk-WKE2FUCP.js → chunk-SOS37ECY.js} +1 -1
- package/dist/cli/chunks/{chunk-BTG5UFMA.js → chunk-SXFSJJZF.js} +2 -2
- package/dist/cli/chunks/{chunk-IHNPXNFG.js → chunk-TB2N3CAK.js} +2 -2
- package/dist/cli/chunks/chunk-TDVMILKO.js +2 -0
- package/dist/cli/chunks/{chunk-RYHOV4E3.js → chunk-TJVTV3HP.js} +2 -2
- package/dist/cli/chunks/{chunk-2E35LWYJ.js → chunk-TK5XLF3Z.js} +4 -4
- package/dist/cli/chunks/{chunk-NCX4W65B.js → chunk-TWUWLSGQ.js} +6 -6
- package/dist/cli/chunks/{chunk-WIB6KRFJ.js → chunk-U5G6OC2C.js} +2 -2
- package/dist/cli/chunks/{chunk-OZO2JUEK.js → chunk-UBOGJHWC.js} +1 -1
- package/dist/cli/chunks/{chunk-WK5MKY45.js → chunk-UC4EIULB.js} +13 -13
- package/dist/cli/chunks/{chunk-KBOGA4GA.js → chunk-UJUK6T4V.js} +2 -2
- package/dist/cli/chunks/chunk-UQ4UCHO7.js +2 -0
- package/dist/cli/chunks/{chunk-4PRQMFVO.js → chunk-UWZYXI3R.js} +2 -2
- package/dist/cli/chunks/{chunk-GQ6H37RN.js → chunk-VA2ORJB5.js} +2 -2
- package/dist/cli/chunks/{chunk-U5WFVIKL.js → chunk-VBHA4SDU.js} +2 -2
- package/dist/cli/chunks/{chunk-PGJHCCR6.js → chunk-VD53LBF7.js} +3 -3
- package/dist/cli/chunks/{chunk-UHHWEWDA.js → chunk-VNODKACB.js} +2 -2
- package/dist/cli/chunks/{chunk-3E3YLEHB.js → chunk-VQCLSX7T.js} +1 -1
- package/dist/cli/chunks/{chunk-G7YD3BR3.js → chunk-VQD2ELNL.js} +2 -2
- package/dist/cli/chunks/{chunk-RCXC4YGL.js → chunk-VZGP77YU.js} +1 -1
- package/dist/cli/chunks/chunk-WA6CSEOX.js +2 -0
- package/dist/cli/chunks/{chunk-JGXU5FUZ.js → chunk-WE3VKDMK.js} +3 -3
- package/dist/cli/chunks/{chunk-MGJPS2YV.js → chunk-WXU7FAEB.js} +2 -2
- package/dist/cli/chunks/{chunk-O5QZB2AP.js → chunk-WYFAPA2G.js} +2 -2
- package/dist/cli/chunks/{chunk-MFGKSD44.js → chunk-WYIXNHPF.js} +2 -2
- package/dist/cli/chunks/{chunk-2HEHM2KV.js → chunk-X2SZCVDA.js} +2 -2
- package/dist/cli/chunks/{chunk-2CLM53W2.js → chunk-X3JNFQW2.js} +2 -2
- package/dist/cli/chunks/{chunk-NBUBGYLE.js → chunk-XIKYUBIV.js} +2 -2
- package/dist/cli/chunks/{chunk-2FPHM356.js → chunk-XM5I7J5S.js} +2 -2
- package/dist/cli/chunks/{chunk-35CHBX6K.js → chunk-XT473WPO.js} +2 -2
- package/dist/cli/chunks/{chunk-74QKFILD.js → chunk-YL2GOJF6.js} +2 -2
- package/dist/cli/chunks/{chunk-K6SXDKWV.js → chunk-YQOQVSYU.js} +1 -1
- package/dist/cli/chunks/{chunk-G427QR5W.js → chunk-Z56BBX77.js} +2 -2
- package/dist/cli/chunks/{chunk-LPVHYZAE.js → chunk-Z6DSYLAG.js} +1 -1
- package/dist/cli/chunks/{chunk-W3DCBOLL.js → chunk-ZMYV4R32.js} +1 -1
- package/dist/cli/chunks/{chunk-UL6PT654.js → chunk-ZSAGRDXA.js} +2 -2
- package/dist/cli/chunks/{ci-7QW7234M.js → ci-QAUD62WH.js} +2 -2
- package/dist/cli/chunks/{ci-output-WGP4YKPQ.js → ci-output-TZDVTNE7.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-AOHSCJYO.js → circuit-breaker-ZWPHJ7YJ.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-CIZ3TWR7.js → claude-flow-setup-SCB4EURN.js} +2 -2
- package/dist/cli/chunks/client-4W3KWTAU.js +2 -0
- package/dist/cli/chunks/{cline-installer-J2QVGPJY.js → cline-installer-EHZLMLXF.js} +2 -2
- package/dist/cli/chunks/{code-WH26MFMB.js → code-3N6PBJMK.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-DBOYEFZ4.js → code-index-extractor-6DIKHNRI.js} +2 -2
- package/dist/cli/chunks/{codex-installer-MWYVGZC4.js → codex-installer-P7DPQMYL.js} +2 -2
- package/dist/cli/chunks/{completions-LNBHGWUS.js → completions-5MKWWCCE.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-AMYCTQG2.js → complexity-analyzer-TPM4IPEK.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-73EQPP37.js → continuedev-installer-VXODKGVX.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-JWSY2272.js → copilot-installer-PVD5O56P.js} +2 -2
- package/dist/cli/chunks/core-handlers-BDU2XBLO.js +2 -0
- package/dist/cli/chunks/{cost-tracker-XQVIORRZ.js → cost-tracker-JOMZEQF3.js} +2 -2
- package/dist/cli/chunks/{coverage-HYGJIQ25.js → coverage-HTXLEV3B.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-BPB6IHN4.js +2 -0
- package/dist/cli/chunks/{cursor-installer-DNPNJGZM.js → cursor-installer-SHKDTDDZ.js} +2 -2
- package/dist/cli/chunks/{daemon-GSOGO6L3.js → daemon-FCFEWVVJ.js} +3 -3
- package/dist/cli/chunks/{daemon-6JNNBU33.js → daemon-PN4FEPLE.js} +6 -6
- package/dist/cli/chunks/{dag-attention-scheduler-7SGPLKGI.js → dag-attention-scheduler-PLOHU5SR.js} +2 -2
- package/dist/cli/chunks/{detect-IXD77HG4.js → detect-F3H4ZEZY.js} +2 -2
- package/dist/cli/chunks/{dist-node-ARTYK2HL.js → dist-node-5TC665N6.js} +2 -2
- package/dist/cli/chunks/{domain-handler-X4BOFLMY.js → domain-handler-ZIWVFXCU.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-7JBEXLFL.js → domain-transfer-7Q5JYMYR.js} +2 -2
- package/dist/cli/chunks/dream-WFCZGFDY.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-VSOLKM3Y.js → embed-and-insert-pattern-VESJQSYD.js} +2 -2
- package/dist/cli/chunks/{eval-HS2QQW42.js → eval-E2K2T75A.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-MWEPZYBT.js → experience-capture-middleware-Z5SE2O53.js} +3 -3
- package/dist/cli/chunks/{fast-paths-RONNJ6AC.js → fast-paths-3H52RSUK.js} +2 -2
- package/dist/cli/chunks/{feature-flags-4YE5A6XG.js → feature-flags-LUHSMHPS.js} +2 -2
- package/dist/cli/chunks/{feature-flags-CLW4K2HN.js → feature-flags-ONIKUZVK.js} +2 -2
- package/dist/cli/chunks/{file-discovery-56C2FW4V.js → file-discovery-FLYSYSS4.js} +2 -2
- package/dist/cli/chunks/{fleet-KMB6RM3R.js → fleet-6OJUAAKV.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-R2OMDND4.js → gnn-wrapper-PUL6B7KZ.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-FP3CIA2V.js → heartbeat-handler-HGHHDUDY.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-HWS4SHRM.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-7QOBHKRB.js +2 -0
- package/dist/cli/chunks/hnsw-index-6WUKYJH7.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-EQKXBLRX.js → hnsw-legacy-bridge-NDZSNMYX.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-JG3WOXKM.js → hnswlib-node-PISLKSO2.js} +2 -2
- package/dist/cli/chunks/{hooks-6QZYELUZ.js → hooks-WYG54MRI.js} +40 -40
- package/dist/cli/chunks/hybrid-router-525JTRA5.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-5HGNZFDH.js → hypergraph-engine-EDHKHZZ2.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-LO2ODOYD.js → hypergraph-handler-OCHZAPPL.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-GG6CJEOK.js +2 -0
- package/dist/cli/chunks/{init-handler-E346YK6H.js → init-handler-5TCJ672H.js} +6 -6
- package/dist/cli/chunks/init-wizard-4VFAOK4Y.js +2 -0
- package/dist/cli/chunks/kernel-N3FQGOST.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-ZBJNB6N4.js → kilocode-installer-SWUQRCTZ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-3TWFO4QZ.js → kiro-installer-L22EBAM5.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-I5QIHB4G.js +2 -0
- package/dist/cli/chunks/{learning-3MLFLTM2.js → learning-TQOGG3CR.js} +3 -3
- package/dist/cli/chunks/llm-router-F2L4LFT2.js +37 -0
- package/dist/cli/chunks/llm-router-service-NCJZYJLG.js +2 -0
- package/dist/cli/chunks/{load-P6XC2P74.js → load-A4ZF2KHC.js} +2 -2
- package/dist/cli/chunks/load-test-DCJEYIXD.js +2 -0
- package/dist/cli/chunks/{mcp-XEND7FPN.js → mcp-T2Z46NNK.js} +2 -2
- package/dist/cli/chunks/{memory-HZ2WSMWW.js → memory-PUC3J6XC.js} +5 -5
- package/dist/cli/chunks/memory-backend-O6KO2KTX.js +2 -0
- package/dist/cli/chunks/memory-handlers-4Z43WEKD.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-IYEHZP73.js → multi-model-executor-U5L4FI4O.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-GH3VVBM2.js → opencode-installer-UWI6KHYH.js} +2 -2
- package/dist/cli/chunks/{orchestrator-GOKIBTQG.js → orchestrator-3BEI7R5D.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-5WIJKX2K.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-J2X4DD5S.js → pattern-usage-recorder-EGWUI5LU.js} +2 -2
- package/dist/cli/chunks/{pipeline-ELINTMVF.js → pipeline-JG6M4RHD.js} +2 -2
- package/dist/cli/chunks/{platform-PIPUB3LU.js → platform-F76G6RUI.js} +2 -2
- package/dist/cli/chunks/{plugin-DXDNI6ZV.js → plugin-EEGN3PMK.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-K6WWURGX.js → prime-radiant-advanced-wasm-7KZAINFT.js} +2 -2
- package/dist/cli/chunks/protocol-executor-5TPNAZTB.js +2 -0
- package/dist/cli/chunks/{protocol-handler-NMO7VI64.js → protocol-handler-UCEHYK2R.js} +2 -2
- package/dist/cli/chunks/{prove-4BLOE4SC.js → prove-JSNG75VD.js} +2 -2
- package/dist/cli/chunks/provider-manager-3VMOZ6HV.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-BATV4NTT.js +2 -0
- package/dist/cli/chunks/{quality-MYXBP3GX.js → quality-7SRM2HBM.js} +2 -2
- package/dist/cli/chunks/{quality-gate-AXPBK3MT.js → quality-gate-A5MPWHST.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-EIHGYBUO.js +2 -0
- package/dist/cli/chunks/{real-embeddings-4AKAVZIY.js → real-embeddings-ZBF5EQOG.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-JE36LP4T.js → roocode-installer-UYQK64BZ.js} +2 -2
- package/dist/cli/chunks/router-EMVGY4HU.js +2 -0
- package/dist/cli/chunks/routing-feedback-JUP4OFB2.js +2 -0
- package/dist/cli/chunks/{routing-handler-LOJUJCVV.js → routing-handler-PY3KPDTH.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-6PNDYF32.js → ruvector-commands-GCAOUTYS.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-GSTQPRNA.js → rvf-dual-writer-BUNP4SKD.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-Z2DSEG3E.js → rvf-migration-adapter-VSOAPLMB.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-XRNODDH4.js → rvf-migration-coordinator-LSWEHAWX.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-LOC42TQ6.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-LVEFIUUW.js → rvf-store-integrity-HNDKOM4L.js} +2 -2
- package/dist/cli/chunks/safe-db-WQ62IQKV.js +2 -0
- package/dist/cli/chunks/schedule-XJRP57TE.js +2 -0
- package/dist/cli/chunks/scheduler-EZH5SDIM.js +2 -0
- package/dist/cli/chunks/{security-A2FK2DER.js → security-MQ2VB7PY.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-V7IBEGQQ.js → shared-rvf-adapter-TAZEU6QK.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-SMGECN2K.js → shared-rvf-dual-writer-B7N6AOCY.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HPEVCTIB.js +2 -0
- package/dist/cli/chunks/status-handler-NZP7DFHE.js +47 -0
- package/dist/cli/chunks/{structural-health-6BRP74EW.js → structural-health-ALLUQ4X6.js} +2 -2
- package/dist/cli/chunks/{sync-4PDTGP34.js → sync-MM7OCUYD.js} +2 -2
- package/dist/cli/chunks/{sync-KI573HOR.js → sync-WJJG5J6V.js} +2 -2
- package/dist/cli/chunks/{task-handler-QQGSAK6T.js → task-handler-CAQUEEB4.js} +2 -2
- package/dist/cli/chunks/{task-handlers-VUPCDYTI.js → task-handlers-25BJ7D3W.js} +3 -3
- package/dist/cli/chunks/{test-CJLXBSRH.js → test-HW7GVGVN.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-IKPQPQUB.js → test-scheduling-HTMFJMSP.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-FHLC3SHC.js → token-bootstrap-F2DCLWGW.js} +2 -2
- package/dist/cli/chunks/{token-usage-NCXAK7TB.js → token-usage-RJZDMBDP.js} +2 -2
- package/dist/cli/chunks/{transformers-SZFBEILB.js → transformers-3YFW3EUO.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-LFGJRML7.js → tree-sitter-wasm-parser-U3PQPIK7.js} +2 -2
- package/dist/cli/chunks/{types-NKXH7VTP.js → types-7Q762WDO.js} +2 -2
- package/dist/cli/chunks/unified-memory-ATILROKR.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-XJXAX7DW.js +2 -0
- package/dist/cli/chunks/unified-persistence-3TN5PBWE.js +2 -0
- package/dist/cli/chunks/{upgrade-PFCFH6M5.js → upgrade-F7MKJWBQ.js} +2 -2
- package/dist/cli/chunks/{validate-YEBJRWQM.js → validate-B27AVRA6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TD2NA6QF.js → validate-swarm-GYZR3GNL.js} +2 -2
- package/dist/cli/chunks/{vibium-ACC4GIOT.js → vibium-W4XQMPJP.js} +2 -2
- package/dist/cli/chunks/visual-security-VFWRBCNA.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-IWVW5FIE.js → web-tree-sitter-I7CDCFJU.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-5PVGLJ3T.js → windsurf-installer-UYLHFDHU.js} +2 -2
- package/dist/cli/chunks/{witness-chain-VZB4LJOJ.js → witness-chain-B66SYZKU.js} +2 -2
- package/dist/cli/chunks/witness-chain-JC5LEXRV.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-X632AZTN.js → witness-key-manager-U4JPAHVW.js} +2 -2
- package/dist/cli/chunks/{workflow-VNAYFUVY.js → workflow-DYMO47FF.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-TKQUF2KN.js +2 -0
- package/dist/cli/chunks/{wrappers-KO3QXNZP.js → wrappers-7S6DQTEA.js} +2 -2
- package/dist/cli/commands/daemon.js +3 -3
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +2 -2
- package/dist/cli/commands/hooks-handlers/routing-hooks.js +7 -0
- package/dist/cli/commands/llm-router.js +35 -6
- package/dist/cli/commands/plugin.js +4 -4
- package/dist/cli/commands/quality-gate.js +5 -1
- package/dist/cli/handlers/status-handler.js +18 -2
- package/dist/cli/index.js +1 -1
- package/dist/cli/utils/index.js +2 -2
- package/dist/context/compaction/index.js +11 -11
- package/dist/context/compaction/tier1-microcompact.js +1 -1
- package/dist/context/compaction/tier2-session-summary.js +1 -1
- package/dist/context/compaction/tier3-llm-compact.js +1 -1
- package/dist/context/compaction/tier4-reactive.js +1 -1
- package/dist/coordination/claims/index.js +8 -8
- package/dist/coordination/consensus/consensus-engine.js +4 -4
- package/dist/coordination/consensus/factory.js +4 -4
- package/dist/coordination/consensus/index.js +8 -8
- package/dist/coordination/consensus/providers/claude-provider.js +1 -1
- package/dist/coordination/consensus/providers/gemini-provider.js +1 -1
- package/dist/coordination/consensus/providers/index.js +7 -7
- package/dist/coordination/consensus/providers/native-learning-provider.js +1 -1
- package/dist/coordination/consensus/providers/ollama-provider.js +1 -1
- package/dist/coordination/consensus/providers/openai-provider.js +1 -1
- package/dist/coordination/consensus/providers/openrouter-provider.js +1 -1
- package/dist/coordination/consensus/strategies/index.js +3 -3
- package/dist/coordination/cross-domain-router.js +2 -2
- package/dist/coordination/dynamic-scaling/dynamic-scaler.js +1 -1
- package/dist/coordination/dynamic-scaling/index.js +2 -2
- package/dist/coordination/fleet-tiers/index.js +3 -3
- package/dist/coordination/fleet-tiers/tier-selector.js +2 -2
- package/dist/coordination/handlers/code-intelligence-handlers.js +2 -2
- package/dist/coordination/handlers/coverage-collection.js +1 -1
- package/dist/coordination/handlers/coverage-handlers.js +3 -3
- package/dist/coordination/handlers/index.js +7 -7
- package/dist/coordination/handlers/misc-handlers.js +1 -1
- package/dist/coordination/handlers/quality-handlers.js +2 -2
- package/dist/coordination/handlers/requirements-handlers.js +2 -2
- package/dist/coordination/handlers/security-handlers.js +2 -2
- package/dist/coordination/handlers/test-execution-handlers.js +1 -1
- package/dist/coordination/index.js +20 -20
- package/dist/coordination/mincut/dream-integration.js +1 -1
- package/dist/coordination/mincut/index.js +14 -14
- package/dist/coordination/mincut/mincut-health-monitor.js +2 -2
- package/dist/coordination/mincut/mincut-persistence.js +1 -1
- package/dist/coordination/mincut/morphogenetic-growth.js +1 -1
- package/dist/coordination/mincut/neural-goap.js +1 -1
- package/dist/coordination/mincut/queen-integration.js +5 -5
- package/dist/coordination/mincut/shared-singleton.js +3 -3
- package/dist/coordination/mincut/strange-loop.js +1 -1
- package/dist/coordination/mincut/time-crystal.js +8 -8
- package/dist/coordination/mixins/consensus-enabled-domain.js +2 -2
- package/dist/coordination/mixins/index.js +3 -3
- package/dist/coordination/protocol-executor.js +2 -2
- package/dist/coordination/protocols/code-intelligence-index.js +4 -4
- package/dist/coordination/protocols/defect-investigation.js +2 -2
- package/dist/coordination/protocols/morning-sync.js +1 -1
- package/dist/coordination/protocols/quality-gate.js +2 -2
- package/dist/coordination/queen-coordinator.js +4 -4
- package/dist/coordination/queen-task-management.js +1 -1
- package/dist/coordination/services/index.js +1 -1
- package/dist/coordination/task-executor.js +6 -6
- package/dist/domains/chaos-resilience/coordinator.js +6 -6
- package/dist/domains/chaos-resilience/index.js +5 -5
- package/dist/domains/chaos-resilience/plugin.js +6 -6
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +3 -3
- package/dist/domains/chaos-resilience/services/index.js +3 -3
- package/dist/domains/chaos-resilience/services/load-tester.js +2 -2
- package/dist/domains/chaos-resilience/services/performance-profiler.js +2 -2
- package/dist/domains/code-intelligence/coordinator-consensus.js +1 -1
- package/dist/domains/code-intelligence/coordinator-gnn.js +1 -1
- package/dist/domains/code-intelligence/coordinator-hypergraph.js +2 -2
- package/dist/domains/code-intelligence/coordinator.js +9 -9
- package/dist/domains/code-intelligence/index.js +7 -7
- package/dist/domains/code-intelligence/plugin.js +6 -6
- package/dist/domains/code-intelligence/services/c4-model/index.js +3 -3
- package/dist/domains/code-intelligence/services/impact-analyzer.js +2 -2
- package/dist/domains/code-intelligence/services/index.js +6 -6
- package/dist/domains/code-intelligence/services/knowledge-graph.js +4 -4
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +1 -1
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +5 -5
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +2 -2
- package/dist/domains/coverage-analysis/coordinator.js +9 -9
- package/dist/domains/coverage-analysis/index.js +10 -10
- package/dist/domains/coverage-analysis/plugin.js +4 -4
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +1 -1
- package/dist/domains/coverage-analysis/services/gap-detector.js +1 -1
- package/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js +1 -1
- package/dist/domains/coverage-analysis/services/index.js +7 -7
- package/dist/domains/coverage-analysis/services/risk-scorer.js +1 -1
- package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +3 -3
- package/dist/domains/defect-intelligence/coordinator.js +5 -5
- package/dist/domains/defect-intelligence/index.js +5 -5
- package/dist/domains/defect-intelligence/plugin.js +6 -6
- package/dist/domains/defect-intelligence/services/causal-root-cause-analyzer.js +2 -2
- package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -4
- package/dist/domains/defect-intelligence/services/index.js +4 -4
- package/dist/domains/defect-intelligence/services/pattern-learner.js +2 -2
- package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +1 -1
- package/dist/domains/domain-interface.js +1 -1
- package/dist/domains/index.js +14 -14
- package/dist/domains/learning-optimization/coordinator.d.ts +3 -0
- package/dist/domains/learning-optimization/coordinator.js +6 -0
- package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
- package/dist/domains/learning-optimization/plugin.d.ts +3 -0
- package/dist/domains/learning-optimization/plugin.js +5 -0
- package/dist/domains/quality-assessment/coherence/gate-controller.js +2 -2
- package/dist/domains/quality-assessment/coherence/lambda-calculator.js +1 -1
- package/dist/domains/quality-assessment/coherence/partition-detector.js +1 -1
- package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +1 -1
- package/dist/domains/quality-assessment/coordinator-reports.js +1 -1
- package/dist/domains/quality-assessment/coordinator-rl-integration.js +2 -2
- package/dist/domains/quality-assessment/coordinator.js +5 -5
- package/dist/domains/quality-assessment/index.js +9 -9
- package/dist/domains/quality-assessment/plugin.js +6 -6
- package/dist/domains/quality-assessment/services/coherence-gate.js +6 -6
- package/dist/domains/quality-assessment/services/deployment-advisor.js +1 -1
- package/dist/domains/quality-assessment/services/index.js +4 -4
- package/dist/domains/quality-assessment/services/quality-analyzer.js +2 -2
- package/dist/domains/quality-assessment/services/quality-gate.js +1 -1
- package/dist/domains/requirements-validation/services/product-factors-assessment/analyzers/brutal-honesty-analyzer.js +2 -2
- package/dist/domains/requirements-validation/services/product-factors-assessment/analyzers/sfdipot-analyzer.js +2 -2
- package/dist/domains/requirements-validation/services/product-factors-assessment/code-intelligence/codebase-analyzer.js +1 -1
- package/dist/domains/requirements-validation/services/product-factors-assessment/formatters/gherkin-formatter.js +1 -1
- package/dist/domains/requirements-validation/services/product-factors-assessment/formatters/html-formatter.js +2 -2
- package/dist/domains/requirements-validation/services/product-factors-assessment/formatters/markdown-formatter.js +1 -1
- package/dist/domains/requirements-validation/services/product-factors-assessment/generators/question-generator.js +3 -3
- package/dist/domains/requirements-validation/services/product-factors-assessment/generators/test-idea-generator.js +3 -3
- package/dist/domains/requirements-validation/services/product-factors-assessment/patterns/domain-registry.js +1 -1
- package/dist/domains/requirements-validation/services/product-factors-assessment/patterns/index.js +1 -1
- package/dist/domains/requirements-validation/services/product-factors-assessment/skills/skill-integration.js +1 -1
- package/dist/domains/security-compliance/coordinator.js +1 -1
- package/dist/domains/security-compliance/index.js +1 -1
- package/dist/domains/security-compliance/services/compliance-validator.js +1 -1
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +1 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +2 -2
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +4 -4
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +3 -3
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +2 -2
- package/dist/domains/test-execution/coordinator.js +8 -8
- package/dist/domains/test-execution/index.js +9 -9
- package/dist/domains/test-execution/interfaces.js +1 -1
- package/dist/domains/test-execution/plugin.js +3 -3
- package/dist/domains/test-execution/services/e2e/adaptive-locator-service.js +1 -1
- package/dist/domains/test-execution/services/e2e/assertion-handlers.js +2 -2
- package/dist/domains/test-execution/services/e2e/browser-orchestrator.js +3 -3
- package/dist/domains/test-execution/services/e2e/e2e-coordinator.js +7 -7
- package/dist/domains/test-execution/services/e2e/index.js +10 -10
- package/dist/domains/test-execution/services/e2e/step-executors.js +6 -6
- package/dist/domains/test-execution/services/e2e/step-retry-handler.js +3 -3
- package/dist/domains/test-execution/services/e2e/wait-condition-handler.js +1 -1
- package/dist/domains/test-execution/services/e2e-runner.js +6 -6
- package/dist/domains/test-execution/services/flaky-detector.js +1 -1
- package/dist/domains/test-execution/services/index.js +9 -9
- package/dist/domains/test-execution/services/retry-handler.js +1 -1
- package/dist/domains/test-execution/services/test-executor.js +1 -1
- package/dist/domains/test-execution/services/test-prioritizer.js +3 -3
- package/dist/domains/test-execution/services/user-flow-generator.js +3 -3
- package/dist/domains/test-execution/test-prioritization-types.js +1 -1
- package/dist/domains/test-execution/types/index.js +3 -3
- package/dist/domains/test-generation/coordinator.js +5 -5
- package/dist/domains/test-generation/factories/index.js +1 -1
- package/dist/domains/test-generation/factories/test-generator-factory.js +1 -1
- package/dist/domains/test-generation/generators/base-test-generator.js +1 -1
- package/dist/domains/test-generation/generators/go-test-generator.js +2 -2
- package/dist/domains/test-generation/generators/index.js +13 -13
- package/dist/domains/test-generation/generators/jest-vitest-generator.js +1 -1
- package/dist/domains/test-generation/generators/junit5-generator.js +2 -2
- package/dist/domains/test-generation/generators/kotlin-junit-generator.js +2 -2
- package/dist/domains/test-generation/generators/mocha-generator.js +1 -1
- package/dist/domains/test-generation/generators/node-test-generator.js +1 -1
- package/dist/domains/test-generation/generators/pytest-generator.js +2 -2
- package/dist/domains/test-generation/generators/rust-test-generator.js +3 -3
- package/dist/domains/test-generation/generators/swift-testing-generator.js +2 -2
- package/dist/domains/test-generation/generators/xunit-generator.js +2 -2
- package/dist/domains/test-generation/index.js +7 -7
- package/dist/domains/test-generation/interfaces/index.js +1 -1
- package/dist/domains/test-generation/plugin.js +5 -5
- package/dist/domains/test-generation/services/code-transform-integration.js +1 -1
- package/dist/domains/test-generation/services/index.js +10 -10
- package/dist/domains/test-generation/services/pattern-matcher.js +2 -2
- package/dist/domains/test-generation/services/test-generator.js +5 -5
- package/dist/domains/visual-accessibility/coordinator.js +1 -1
- package/dist/early-exit/early-exit-controller.js +4 -4
- package/dist/early-exit/early-exit-decision.js +2 -2
- package/dist/early-exit/index.js +5 -5
- package/dist/early-exit/quality-signal.js +1 -1
- package/dist/early-exit/speculative-executor.js +1 -1
- package/dist/index.js +18 -18
- package/dist/integrations/agentic-flow/agent-booster/adapter.js +4 -4
- package/dist/integrations/agentic-flow/agent-booster/index.js +10 -10
- package/dist/integrations/agentic-flow/index.js +6 -6
- package/dist/integrations/agentic-flow/metrics/index.js +3 -3
- package/dist/integrations/agentic-flow/metrics/metrics-tracker.js +2 -2
- package/dist/integrations/agentic-flow/metrics/pattern-updater.js +1 -1
- package/dist/integrations/agentic-flow/model-router/budget-enforcer.js +1 -1
- package/dist/integrations/agentic-flow/model-router/complexity-analyzer.js +7 -7
- package/dist/integrations/agentic-flow/model-router/example.js +1 -1
- package/dist/integrations/agentic-flow/model-router/index.js +16 -16
- package/dist/integrations/agentic-flow/model-router/router.js +6 -6
- package/dist/integrations/agentic-flow/model-router/signal-collector.js +1 -1
- package/dist/integrations/agentic-flow/model-router/tier-recommender.js +1 -1
- package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.js +11 -6
- package/dist/integrations/browser/agent-browser/client.js +4 -4
- package/dist/integrations/browser/agent-browser/index.js +4 -4
- package/dist/integrations/browser/agent-browser/session-manager.js +1 -1
- package/dist/integrations/browser/client-factory.js +3 -3
- package/dist/integrations/browser/index.js +8 -8
- package/dist/integrations/browser/page-pool.js +1 -1
- package/dist/integrations/browser/stealth/index.js +2 -2
- package/dist/integrations/browser/stealth/stealth-client.js +3 -3
- package/dist/integrations/browser/web-content-fetcher.js +1 -1
- package/dist/integrations/coherence/coherence-service.js +2 -2
- package/dist/integrations/coherence/engines/category-adapter.js +1 -1
- package/dist/integrations/coherence/engines/causal-adapter.js +1 -1
- package/dist/integrations/coherence/engines/cohomology-adapter.js +1 -1
- package/dist/integrations/coherence/engines/homotopy-adapter.js +1 -1
- package/dist/integrations/coherence/engines/index.js +6 -6
- package/dist/integrations/coherence/engines/spectral-adapter.js +1 -1
- package/dist/integrations/coherence/engines/witness-adapter.js +1 -1
- package/dist/integrations/coherence/index.js +7 -7
- package/dist/integrations/coherence/threshold-tuner.js +1 -1
- package/dist/integrations/coherence/wasm-loader.js +2 -2
- package/dist/integrations/rl-suite/algorithms/a2c.js +2 -2
- package/dist/integrations/rl-suite/algorithms/actor-critic.js +2 -2
- package/dist/integrations/rl-suite/algorithms/ddpg.js +1 -1
- package/dist/integrations/rl-suite/algorithms/decision-transformer.js +1 -1
- package/dist/integrations/rl-suite/algorithms/dqn.js +2 -2
- package/dist/integrations/rl-suite/algorithms/eprop.js +2 -2
- package/dist/integrations/rl-suite/algorithms/index.js +10 -10
- package/dist/integrations/rl-suite/algorithms/policy-gradient.js +2 -2
- package/dist/integrations/rl-suite/algorithms/ppo.js +2 -2
- package/dist/integrations/rl-suite/algorithms/q-learning.js +3 -3
- package/dist/integrations/rl-suite/algorithms/sarsa.js +2 -2
- package/dist/integrations/rl-suite/base-algorithm.js +1 -1
- package/dist/integrations/rl-suite/index.js +6 -6
- package/dist/integrations/rl-suite/neural/index.js +2 -2
- package/dist/integrations/rl-suite/orchestrator.js +11 -11
- package/dist/integrations/ruvector/ast-complexity.js +1 -1
- package/dist/integrations/ruvector/coverage-router.js +1 -1
- package/dist/integrations/ruvector/diff-risk-classifier.js +1 -1
- package/dist/integrations/ruvector/graph-boundaries.js +1 -1
- package/dist/integrations/ruvector/hypergraph-engine.js +1 -1
- package/dist/integrations/ruvector/hypergraph-schema.js +1 -1
- package/dist/integrations/ruvector/index.js +52 -52
- package/dist/integrations/ruvector/persistent-q-router.js +2 -2
- package/dist/integrations/ruvector/q-learning-router.js +1 -1
- package/dist/integrations/ruvector/solver-adapter.js +1 -1
- package/dist/integrations/ruvector/sona-persistence.d.ts +13 -11
- package/dist/integrations/ruvector/sona-persistence.js +1 -1
- package/dist/integrations/vibium/client.js +3 -3
- package/dist/integrations/vibium/fallback.js +2 -2
- package/dist/integrations/vibium/index.js +9 -9
- package/dist/kernel/agent-coordinator.js +1 -1
- package/dist/kernel/event-bus.js +1 -1
- package/dist/kernel/hybrid-backend.js +1 -1
- package/dist/kernel/index.js +11 -11
- package/dist/kernel/kernel.js +27 -27
- package/dist/kernel/memory-factory.js +2 -2
- package/dist/kernel/unified-persistence.js +1 -1
- package/dist/learning/aqe-learning-engine.d.ts +0 -1
- package/dist/learning/aqe-learning-engine.js +2 -36
- package/dist/learning/pattern-lifecycle.js +1 -1
- package/dist/learning/pattern-routing-guidance.d.ts +16 -0
- package/dist/learning/pattern-routing-guidance.js +34 -0
- package/dist/learning/qe-reasoning-bank-types.d.ts +2 -0
- package/dist/learning/qe-reasoning-bank.js +2 -1
- package/dist/learning/real-qe-reasoning-bank.d.ts +2 -0
- package/dist/learning/real-qe-reasoning-bank.js +4 -2
- package/dist/learning/token-tracker.js +1 -1
- package/dist/logging/index.js +1 -1
- package/dist/logging/logger-factory.js +1 -1
- package/dist/mcp/bundle.js +445 -432
- package/dist/mcp/entry.js +1 -1
- package/dist/mcp/handlers/agent-handlers.js +2 -2
- package/dist/mcp/handlers/core-handlers.js +9 -9
- package/dist/mcp/handlers/domain-handler-configs.js +2 -2
- package/dist/mcp/handlers/domain-handlers.js +2 -2
- package/dist/mcp/handlers/handler-factory.js +3 -3
- package/dist/mcp/handlers/index.js +7 -7
- package/dist/mcp/handlers/memory-handlers.js +1 -1
- package/dist/mcp/handlers/task-handlers.js +3 -3
- package/dist/mcp/handlers/team-handlers.js +1 -1
- package/dist/mcp/index.js +11 -11
- package/dist/mcp/metrics/index.js +1 -1
- package/dist/mcp/protocol-server.js +13 -13
- package/dist/mcp/security/cve-prevention.js +23 -23
- package/dist/mcp/security/index.js +9 -9
- package/dist/mcp/security/validators/index.js +6 -6
- package/dist/mcp/services/index.js +1 -1
- package/dist/mcp/services/task-router.js +1 -1
- package/dist/mcp/tool-registry.js +4 -4
- package/dist/mcp/tools/base.js +1 -1
- package/dist/mcp/tools/code-intelligence/analyze.js +4 -4
- package/dist/mcp/tools/code-intelligence/c4.js +6 -6
- package/dist/mcp/tools/coverage-analysis/index.js +4 -4
- package/dist/mcp/tools/defect-intelligence/predict.js +2 -2
- package/dist/mcp/tools/embeddings/embedding.js +2 -2
- package/dist/mcp/tools/embeddings/index.js +1 -1
- package/dist/mcp/tools/index.js +20 -20
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +11 -0
- package/dist/mcp/tools/learning-optimization/optimize.js +21 -0
- package/dist/mcp/tools/mincut/index.js +2 -2
- package/dist/mcp/tools/quality-assessment/evaluate.js +1 -1
- package/dist/mcp/tools/quality-assessment/gate.js +5 -2
- package/dist/mcp/tools/qx-analysis/analyze.js +5 -5
- package/dist/mcp/tools/qx-analysis/heuristics-engine.js +1 -1
- package/dist/mcp/tools/qx-analysis/index.js +6 -6
- package/dist/mcp/tools/registry.js +25 -25
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +1 -1
- package/dist/mcp/tools/requirements-validation/validate.js +1 -1
- package/dist/mcp/tools/security-compliance/scan.js +1 -1
- package/dist/mcp/tools/test-execution/e2e-execute.js +3 -3
- package/dist/mcp/tools/test-execution/execute.js +1 -1
- package/dist/mcp/tools/test-execution/index.js +2 -2
- package/dist/mcp/tools/test-generation/generate.js +3 -3
- package/dist/mcp/tools/visual-accessibility/index.js +3 -3
- package/dist/plugins/index.js +8 -8
- package/dist/plugins/lifecycle.js +5 -5
- package/dist/plugins/sources/github.js +1 -1
- package/dist/plugins/sources/local.js +1 -1
- package/dist/plugins/sources/npm.js +1 -1
- package/dist/shared/base-domain-plugin.js +1 -1
- package/dist/shared/c4-model/index.js +1 -1
- package/dist/shared/embeddings/index.js +4 -4
- package/dist/shared/embeddings/nomic-embedder.js +3 -3
- package/dist/shared/embeddings/ollama-client.js +1 -1
- package/dist/shared/entities/agent.js +1 -1
- package/dist/shared/entities/index.js +2 -2
- package/dist/shared/events/index.js +1 -1
- package/dist/shared/git/index.js +1 -1
- package/dist/shared/http/http-client.js +1 -1
- package/dist/shared/http/index.js +1 -1
- package/dist/shared/index.js +15 -15
- package/dist/shared/io/file-reader.js +1 -1
- package/dist/shared/io/index.js +1 -1
- package/dist/shared/llm/billing-modes.d.ts +5 -0
- package/dist/shared/llm/billing-modes.js +42 -3
- package/dist/shared/llm/circuit-breaker.js +1 -1
- package/dist/shared/llm/index.d.ts +4 -1
- package/dist/shared/llm/index.js +15 -11
- package/dist/shared/llm/interfaces.d.ts +34 -3
- package/dist/shared/llm/interfaces.js +17 -0
- package/dist/shared/llm/metrics/cost-metrics.js +2 -2
- package/dist/shared/llm/metrics/index.js +2 -2
- package/dist/shared/llm/metrics/router-metrics.js +1 -1
- package/dist/shared/llm/model-registry.js +1 -1
- package/dist/shared/llm/provider-manager.js +24 -17
- package/dist/shared/llm/provider-registry.d.ts +135 -0
- package/dist/shared/llm/provider-registry.js +227 -0
- package/dist/shared/llm/providers/azure-openai.js +2 -2
- package/dist/shared/llm/providers/bedrock.js +2 -2
- package/dist/shared/llm/providers/claude-code.js +1 -1
- package/dist/shared/llm/providers/claude.js +4 -4
- package/dist/shared/llm/providers/codex.js +1 -1
- package/dist/shared/llm/providers/cognitum.js +1 -1
- package/dist/shared/llm/providers/external-cli.d.ts +129 -0
- package/dist/shared/llm/providers/external-cli.js +385 -0
- package/dist/shared/llm/providers/gemini.js +1 -1
- package/dist/shared/llm/providers/index.js +10 -10
- package/dist/shared/llm/providers/ollama.js +2 -2
- package/dist/shared/llm/providers/openai.js +2 -2
- package/dist/shared/llm/providers/openrouter.js +1 -1
- package/dist/shared/llm/router/config-store.d.ts +14 -0
- package/dist/shared/llm/router/config-store.js +102 -14
- package/dist/shared/llm/router/external-provider-config.d.ts +47 -0
- package/dist/shared/llm/router/external-provider-config.js +105 -0
- package/dist/shared/llm/router/hybrid-router.js +7 -7
- package/dist/shared/llm/router/index.js +4 -4
- package/dist/shared/llm/router/routing-rules.js +1 -1
- package/dist/shared/llm/router/types.d.ts +50 -4
- package/dist/shared/llm/router/types.js +10 -0
- package/dist/shared/llm/translation/index.js +3 -3
- package/dist/shared/llm/translation/message-formatter.js +7 -1
- package/dist/shared/llm/translation/prompt-translator.js +2 -2
- package/dist/shared/metrics/code-metrics.js +2 -2
- package/dist/shared/metrics/index.js +2 -2
- package/dist/shared/parsers/index.js +3 -3
- package/dist/shared/security/compliance-patterns.js +1 -1
- package/dist/shared/security/index.js +8 -8
- package/dist/shared/security/osv-client.js +1 -1
- package/dist/test-scheduling/index.js +9 -9
- package/dist/test-scheduling/phase-scheduler.js +1 -1
- package/dist/test-scheduling/pipeline.js +9 -9
- package/dist/validation/provider-llm-executor.js +5 -5
- package/dist/workers/daemon.js +3 -3
- package/dist/workers/index.js +5 -5
- package/dist/workers/quality-daemon/index.js +15 -15
- package/dist/workers/workers/compliance-checker.js +2 -2
- package/dist/workers/workers/coverage-tracker.js +1 -1
- package/dist/workers/workers/defect-predictor.js +1 -1
- package/dist/workers/workers/flaky-detector.js +1 -1
- package/dist/workers/workers/learning-consolidation.js +4 -4
- package/dist/workers/workers/performance-baseline.js +1 -1
- package/dist/workers/workers/quality-gate.js +1 -1
- package/dist/workers/workers/regression-monitor.js +1 -1
- package/dist/workers/workers/security-scan.js +1 -1
- package/dist/workers/workers/test-health.js +1 -1
- package/dist/workflows/browser/index.js +1 -1
- package/package.json +8 -3
- package/dist/cli/chunks/adapter-6CNMDJVJ.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-JGHHNSFX.js +0 -2
- package/dist/cli/chunks/base-ND3KAA2L.js +0 -2
- package/dist/cli/chunks/browser-workflow-EBSNGTSH.js +0 -2
- package/dist/cli/chunks/chunk-3I5ZTLFY.js +0 -2
- package/dist/cli/chunks/chunk-4EWKERKV.js +0 -3
- package/dist/cli/chunks/chunk-4NXABNLF.js +0 -2
- package/dist/cli/chunks/chunk-A6V5NZCV.js +0 -21
- package/dist/cli/chunks/chunk-QR6NVCRT.js +0 -12
- package/dist/cli/chunks/chunk-TL5FMEKW.js +0 -2
- package/dist/cli/chunks/chunk-XPUPST5T.js +0 -2
- package/dist/cli/chunks/client-NEGGUFEM.js +0 -2
- package/dist/cli/chunks/core-handlers-Q2XPFYQ5.js +0 -2
- package/dist/cli/chunks/cross-domain-router-WNZMUQ3G.js +0 -2
- package/dist/cli/chunks/dream-OL5XLAYS.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-XUAW3I3Q.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EDK2YUZJ.js +0 -2
- package/dist/cli/chunks/hnsw-index-RDMT66NM.js +0 -2
- package/dist/cli/chunks/hybrid-router-BALMPXND.js +0 -2
- package/dist/cli/chunks/impact-analyzer-P6XLP3QX.js +0 -2
- package/dist/cli/chunks/init-wizard-HMU5OPKQ.js +0 -2
- package/dist/cli/chunks/kernel-HMSENQ6R.js +0 -2
- package/dist/cli/chunks/knowledge-graph-G7W72UC5.js +0 -2
- package/dist/cli/chunks/llm-router-XCBGZRKA.js +0 -36
- package/dist/cli/chunks/llm-router-service-VCM7LAGO.js +0 -2
- package/dist/cli/chunks/load-test-H5FATYS2.js +0 -2
- package/dist/cli/chunks/memory-backend-OPHD5UCR.js +0 -2
- package/dist/cli/chunks/memory-handlers-EA5UFT4G.js +0 -2
- package/dist/cli/chunks/pattern-null-store-XJOXEDQO.js +0 -2
- package/dist/cli/chunks/protocol-executor-XVN7GTLL.js +0 -2
- package/dist/cli/chunks/provider-manager-NQICCJZZ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-SVCH233Z.js +0 -2
- package/dist/cli/chunks/queen-coordinator-Z3PBE4EH.js +0 -2
- package/dist/cli/chunks/router-HMWZW2SF.js +0 -2
- package/dist/cli/chunks/routing-feedback-ZZYHE2CL.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-ZPT4RLBE.js +0 -2
- package/dist/cli/chunks/safe-db-VMYUKPV6.js +0 -2
- package/dist/cli/chunks/schedule-DOQ4X4MH.js +0 -2
- package/dist/cli/chunks/scheduler-FE2DH224.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-TKCACSFQ.js +0 -2
- package/dist/cli/chunks/status-handler-UHY36LOR.js +0 -47
- package/dist/cli/chunks/unified-memory-2PA3CIQT.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-W43H4ZKY.js +0 -2
- package/dist/cli/chunks/unified-persistence-SOW7AAZL.js +0 -2
- package/dist/cli/chunks/visual-security-R6BVIOYU.js +0 -2
- package/dist/cli/chunks/witness-chain-GSJW7VDF.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-TXEMI5DD.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.13.
|
|
2
|
-
import{b as w,c as E,d as k,i as de,m as ue}from"./chunk-37GWETSW.js";import{a as v}from"./chunk-TL5FMEKW.js";import{c as b}from"./chunk-DR4V75BF.js";import{b as j}from"./chunk-KQVTTP2S.js";import{a as Te,b as _,d as ee}from"./chunk-GQ6H37RN.js";import{a as d,b as L,c as P}from"./chunk-OLETDPH2.js";import{i as I}from"./chunk-4TSLLWE7.js";import{a as T,b as z}from"./chunk-G427QR5W.js";import{a as le,d as Ce}from"./chunk-Q7QKJY6Y.js";import{f as Ee}from"./chunk-W3DCBOLL.js";var A={cloud:{project:process.env.GCP_PROJECT||"",zone:process.env.GCP_ZONE||"",instance:process.env.GCP_INSTANCE||"",database:process.env.GCP_DATABASE||"",user:process.env.GCP_USER||"",tunnelPort:parseInt(process.env.GCP_TUNNEL_PORT||"15432",10)},environment:process.env.AQE_ENV||"all",batchSize:1e3,sources:[{name:"qe-patterns",cloudTable:"aqe.qe_patterns",localTable:"qe_patterns",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","embedding","sync_version"],transforms:{reusable:"boolean-to-int"}},{name:"sona-patterns",cloudTable:"aqe.sona_patterns",localTable:"sona_patterns",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],transforms:{is_active:"boolean-to-int",requires_fine_tuning:"boolean-to-int"}},{name:"goap-actions",cloudTable:"aqe.goap_actions",localTable:"goap_actions",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{duration_estimate:"estimated_duration_ms"}},{name:"goap-plans",cloudTable:"aqe.goap_plans",localTable:"goap_plans",enabled:!0,priority:"medium",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{estimated_duration:"estimated_duration_ms"}},{name:"memory-entries",cloudTable:"aqe.memory_entries",localTable:"kv_store",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{partition:"namespace"}},{name:"learning-experiences",cloudTable:"aqe.learning_experiences",localTable:"captured_experiences",enabled:!0,priority:"high",mode:"append",dropColumns:["id","source_env","sync_version"],columnMap:{agent_id:"agent",task_id:"task",task_type:"domain",state:"result_json",action:"steps_json",reward:"quality",next_state:"routing_json",episode_id:"tags",created_at:"started_at"}},{name:"qlearning-patterns",cloudTable:"aqe.qlearning_patterns",localTable:"rl_q_values",enabled:!0,priority:"medium",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{state:"state_key",action:"action_key",last_update:"updated_at"}},{name:"routing-outcomes",cloudTable:"aqe.routing_outcomes",localTable:"routing_outcomes",enabled:!0,priority:"medium",mode:"append",dropColumns:["source_env","sync_version"]},{name:"qe-trajectories",cloudTable:"aqe.qe_trajectories",localTable:"qe_trajectories",enabled:!0,priority:"medium",mode:"append",dropColumns:["source_env","sync_version","embedding"]},{name:"dream-insights",cloudTable:"aqe.dream_insights",localTable:"dream_insights",enabled:!0,priority:"low",mode:"append",dropColumns:["source_env","sync_version"]},{name:"claude-flow-memory",cloudTable:"aqe.claude_flow_memory",localTable:"kv_store",enabled:!0,priority:"low",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{partition:"namespace"}}]},Re={TEXT:"TEXT",INTEGER:"INTEGER",REAL:"REAL",BLOB:"BYTEA",NULL:"NULL"},x={local:{v3MemoryDb:"./.agentic-qe/memory.db",rootMemoryDb:"./.agentic-qe/memory.db",claudeFlowMemory:"./.claude-flow/memory/store.json",claudeFlowDaemon:"./.claude-flow/daemon-state.json",claudeFlowMetrics:"./.claude-flow/metrics/",intelligenceJson:"./.ruvector/intelligence.json",swarmMemoryDb:"./.swarm/memory.db",v2PatternsDb:""},cloud:{project:process.env.GCP_PROJECT||"",zone:process.env.GCP_ZONE||"",instance:process.env.GCP_INSTANCE||"",database:process.env.GCP_DATABASE||"",user:process.env.GCP_USER||"",tunnelPort:parseInt(process.env.GCP_TUNNEL_PORT||"15432",10)},sync:{mode:"incremental",interval:"1h",batchSize:1e3,conflictResolution:"newer-wins",sourcePriority:{qePatterns:1,sonaPatterns:2,goapActions:3,kvStore:4,experiences:5,claudeFlowMemory:6,intelligenceJson:7},sources:[{name:"root-qe-patterns",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qe_patterns",priority:"high",mode:"incremental",query:"SELECT id, pattern_type, qe_domain, domain, name, description, confidence, usage_count, success_rate, quality_score, tier, template_json, context_json, successful_uses, created_at, updated_at, last_used_at, tokens_used, input_tokens, output_tokens, latency_ms, reusable, reuse_count, average_token_savings, total_tokens_saved FROM qe_patterns",enabled:!0},{name:"root-sona-patterns",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.sona_patterns",priority:"high",mode:"incremental",query:"SELECT * FROM sona_patterns",enabled:!0},{name:"root-goap-actions",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.goap_actions",priority:"high",mode:"incremental",query:"SELECT * FROM goap_actions",enabled:!0},{name:"root-kv-store",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.memory_entries",priority:"high",mode:"incremental",query:"SELECT key, namespace as partition, CASE WHEN json_valid(value) THEN value ELSE json_quote(value) END as value, created_at, expires_at FROM kv_store WHERE json_valid(value) OR json_valid(json_quote(value))",enabled:!0},{name:"root-captured-experiences",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.learning_experiences",priority:"high",mode:"append",query:"SELECT agent as agent_id, task as task_id, domain as task_type, COALESCE(result_json, '{}') as state, COALESCE(steps_json, '{}') as action, quality as reward, COALESCE(routing_json, '{}') as next_state, tags as episode_id, started_at as created_at FROM captured_experiences",enabled:!0},{name:"root-goap-plans",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.goap_plans",priority:"medium",mode:"incremental",query:"SELECT id, goal_id, action_sequence as sequence, initial_state, goal_state, action_sequence, total_cost, estimated_duration_ms as estimated_duration, status, created_at, completed_at FROM goap_plans",enabled:!0},{name:"root-rl-q-values",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qlearning_patterns",priority:"medium",mode:"incremental",query:"SELECT DISTINCT state_key as state, action_key as action, q_value, visits, updated_at as last_update, created_at FROM rl_q_values GROUP BY state_key, action_key",enabled:!0},{name:"root-routing-outcomes",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.routing_outcomes",priority:"medium",mode:"append",query:"SELECT * FROM routing_outcomes",enabled:!0},{name:"root-qe-trajectories",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qe_trajectories",priority:"medium",mode:"append",query:"SELECT * FROM qe_trajectories",enabled:!0},{name:"root-dream-insights",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.dream_insights",priority:"low",mode:"append",query:"SELECT * FROM dream_insights",enabled:!0},{name:"claude-flow-memory",type:"json",path:"./.claude-flow/memory/store.json",targetTable:"aqe.claude_flow_memory",priority:"medium",mode:"full",enabled:!0},{name:"intelligence-qlearning",type:"json",path:"./.ruvector/intelligence.json",targetTable:"aqe.qlearning_patterns",priority:"low",mode:"full",jsonPath:"$.qvalues",enabled:!0}]},environment:process.env.AQE_ENV||"devpod"};z();k();ee();P();v();import*as te from"fs";import*as me from"path";var F=b.create("sqlite-reader"),W=class{name;type="sqlite";db=null;config;dbPath;constructor(e){this.config=e,this.name=e.source.name,this.dbPath=me.resolve(e.baseDir,e.source.path)}async initialize(){if(!this.db){if(!te.existsSync(this.dbPath))throw new Error(`SQLite database not found: ${this.dbPath}`);try{this.db=T(this.dbPath,{readonly:!0}),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),console.log(`[SQLiteReader:${this.name}] Initialized: ${this.dbPath}`)}catch(e){throw new Error(`Failed to open SQLite database ${this.dbPath}: ${d(e)}`)}}}async readAll(){if(!this.db)throw new Error("Reader not initialized");let e=this.config.source.query||`SELECT * FROM ${w(this.getTableName())}`;try{return this.tableExists(this.getTableName())?this.db.prepare(e).all().map(r=>this.transformRecord(r)):(console.warn(`[SQLiteReader:${this.name}] Table not found, returning empty`),[])}catch(t){throw new Error(`Failed to read from ${this.name}: ${d(t)}`)}}async readChanged(e){if(!this.db)throw new Error("Reader not initialized");let t=this.findTimestampColumn();if(!t)return console.warn(`[SQLiteReader:${this.name}] No timestamp column found, falling back to readAll`),this.readAll();let n=this.getTableName();if(!this.tableExists(n))return[];let r=e.toISOString(),i=`SELECT * FROM ${w(n)} WHERE ${t} > ?`;try{return this.db.prepare(i).all(r).map(a=>this.transformRecord(a))}catch{return console.warn(`[SQLiteReader:${this.name}] Changed query failed, falling back to readAll`),this.readAll()}}async count(){if(!this.db)throw new Error("Reader not initialized");let e=this.getTableName();if(!this.tableExists(e))return 0;try{return this.db.prepare(`SELECT COUNT(*) as count FROM ${w(e)}`).get().count}catch(t){return F.debug("Record count query failed",{table:e,error:d(t)}),0}}async close(){this.db&&(this.db.close(),this.db=null,console.log(`[SQLiteReader:${this.name}] Closed`))}getTableName(){let e=this.config.source.query;if(e){let r=e.match(/FROM\s+(\w+)/i);if(r)return r[1]}let n=this.config.source.targetTable.split(".");return n[n.length-1]}tableExists(e){if(!this.db)return!1;try{return!!this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(e)}catch(t){return F.debug("Table existence check failed",{table:e,error:t instanceof Error?t.message:String(t)}),!1}}findTimestampColumn(){if(!this.db)return null;let e=this.getTableName(),t=["updated_at","created_at","timestamp","last_used_at","modified_at"];try{let i=this.db.prepare(`PRAGMA table_info(${w(e)})`).all().map(o=>o.name.toLowerCase());for(let o of t)if(i.includes(o))return o}catch(n){return F.debug("Timestamp column detection failed",{table:e,error:n instanceof Error?n.message:String(n)}),null}return null}transformRecord(e){let t={...e,source_env:this.config.environment};for(let[n,r]of Object.entries(t)){if(typeof r=="string"&&this.looksLikeJson(r))try{t[n]=_(r)}catch(i){F.debug("JSON parse failed for record field",{key:n,error:i instanceof Error?i.message:String(i)})}if(n.endsWith("_at")&&typeof r=="number"&&(t[n]=new Date(r).toISOString()),r instanceof Buffer)if(n.includes("embedding")){let i=e.dimension||384;t[n]=Array.from(new Float32Array(r.buffer,r.byteOffset,i))}else t[n]=r.toString("base64")}return t}looksLikeJson(e){if(!e)return!1;let t=e.trim();return t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")}getInfo(){let e=te.existsSync(this.dbPath),t=[];if(e&&this.db)try{t=this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").all().map(r=>r.name)}catch(n){console.debug("[SQLiteReader] Table listing error:",n instanceof Error?n.message:n)}return{path:this.dbPath,exists:e,tables:t}}};function re(l){return new W(l)}var pe=Ee(Te(),1);P();import{randomUUID as Pe}from"crypto";import*as C from"fs";import*as ge from"path";var U=class{name;type="json";config;filePath;data=null;fileModTime=null;constructor(e){this.config=e,this.name=e.source.name,this.filePath=ge.resolve(e.baseDir,e.source.path)}async initialize(){if(!C.existsSync(this.filePath)){console.warn(`[JSONReader:${this.name}] File not found: ${this.filePath}`),this.data=[];return}let e=C.statSync(this.filePath);this.fileModTime=e.mtime,console.log(`[JSONReader:${this.name}] Initialized: ${this.filePath}`)}async readAll(){if(!C.existsSync(this.filePath))return[];try{let e=C.readFileSync(this.filePath,"utf-8"),t=pe.default.parse(e);return this.extractRecords(t).map(r=>this.transformRecord(r))}catch(e){return console.error(`[JSONReader:${this.name}] Failed to read: ${d(e)}`),[]}}async readChanged(e){return C.existsSync(this.filePath)?C.statSync(this.filePath).mtime<=e?[]:this.readAll():[]}async count(){return(await this.readAll()).length}async close(){this.data=null,this.fileModTime=null,console.log(`[JSONReader:${this.name}] Closed`)}extractRecords(e){return this.config.source.jsonPath?this.extractByPath(e,this.config.source.jsonPath):this.name.includes("claude-flow-memory")?this.extractClaudeFlowMemory(e):this.name.includes("intelligence")||this.name.includes("qlearning")?this.extractIntelligence(e):this.name.includes("daemon")?this.extractDaemonState(e):Array.isArray(e)?e:typeof e=="object"&&e!==null?Object.entries(e).map(([n,r])=>({key:n,value:r})):[]}extractByPath(e,t){let n=t.replace(/^\$\./,"").split("."),r=e;for(let i of n)if(r&&typeof r=="object"&&i in r)r=r[i];else return[];return Array.isArray(r)?r:typeof r=="object"&&r!==null?Object.entries(r).map(([i,o])=>({state:i,...typeof o=="object"?o:{value:o}})):[]}extractClaudeFlowMemory(e){if(!e||typeof e!="object")return[];let t=[],n=e;for(let[r,i]of Object.entries(n)){if(r.startsWith("_"))continue;let o="general";r.includes("adr")?o="adr-analysis":r.includes("agent")?o="agent-patterns":r.includes("pattern")?o="patterns":r.includes("metric")&&(o="metrics"),t.push({key:r,value:typeof i=="object"?i:{data:i},category:o})}return t}extractIntelligence(e){if(!e||typeof e!="object")return[];let t=[],n=e;if(n.qvalues&&typeof n.qvalues=="object"){let r=n.qvalues;for(let[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null)for(let[s,a]of Object.entries(o)){let c=typeof a=="object"?a:{value:a};t.push({state:i,action:s,q_value:c.value||c.q_value||0,visits:c.visits||0,last_update:c.lastUpdate||c.last_update})}}if(n.memories&&Array.isArray(n.memories)){for(let r of n.memories)if(typeof r=="object"&&r!==null){let i=r;t.push({id:i.id||`mem_${Date.now()}_${Pe().slice(0,12)}`,memory_type:i.type||"file_access",content:i.content||i.path,embedding:i.embedding,metadata:i.metadata,timestamp:i.timestamp})}}return t}extractDaemonState(e){if(!e||typeof e!="object")return[];let t=[],n=e;if(n.workers&&typeof n.workers=="object"){let r=n.workers;for(let[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null){let s=o;t.push({worker_type:i,run_count:s.runCount||s.runs||0,success_count:s.successCount||s.successes||0,failure_count:s.failureCount||s.failures||0,avg_duration_ms:s.avgDuration||s.averageDurationMs,last_run:s.lastRun})}}return t}transformRecord(e){let t={...e,source_env:this.config.environment};for(let[n,r]of Object.entries(t))(n.includes("timestamp")||n.endsWith("_at")||n==="last_update")&&(typeof r=="number"?t[n]=new Date(r).toISOString():typeof r=="string"&&!isNaN(Date.parse(r))&&(t[n]=new Date(r).toISOString())),typeof r=="object"&&r!==null&&!Array.isArray(r)&&["value","metadata","embedding"].includes(n);return t.created_at||(t.created_at=new Date().toISOString()),t}getInfo(){let e=C.existsSync(this.filePath),t=0,n=null;if(e){let r=C.statSync(this.filePath);t=r.size,n=r.mtime}return{path:this.filePath,exists:e,modTime:n,size:t}}};function ne(l){return new U(l)}v();import{spawn as ve}from"child_process";import{createConnection as _e}from"net";var xe=b.create("tunnel-manager");function he(l){try{let e=new URL(l);return e.password&&(e.password="***"),e.toString()}catch(e){return xe.debug("URL parse failed during redaction, using regex fallback",{error:e instanceof Error?e.message:String(e)}),l.replace(/:\/\/([^:]+):([^@]+)@/,"://$1:***@")}}var $=class{process=null;connection=null;config;constructor(e){this.config=e}checkPort(e,t,n=2e3){return new Promise(r=>{let i=_e({host:e,port:t}),o=setTimeout(()=>{i.destroy(),r(!1)},n);i.on("connect",()=>{clearTimeout(o),i.destroy(),r(!0)}),i.on("error",()=>{clearTimeout(o),i.destroy(),r(!1)})})}async start(){return this.process&&this.connection?(console.log("[TunnelManager] Tunnel already running"),this.connection):await this.checkPort("localhost",this.config.tunnelPort)?(console.log(`[TunnelManager] External tunnel detected on port ${this.config.tunnelPort}, reusing`),this.connection={host:"localhost",port:this.config.tunnelPort,startedAt:new Date},this.connection):new Promise((t,n)=>{let r=["compute","start-iap-tunnel",this.config.instance,"5432",`--local-host-port=localhost:${this.config.tunnelPort}`,`--zone=${this.config.zone}`,`--project=${this.config.project}`];console.log(`[TunnelManager] Starting IAP tunnel: gcloud ${r.join(" ")}`),this.process=ve("gcloud",r,{stdio:["ignore","pipe","pipe"]});let i=!1,o="",s=!1;this.process.stderr?.on("data",a=>{let c=a.toString();console.log(`[TunnelManager] ${c.trim()}`),["Listening on port","tunnel is running","Testing if tunnel connection works"].some(m=>c.includes(m))&&!i&&!s&&(s=!0,setTimeout(async()=>{for(let g=0;g<10;g++){if(console.log(`[TunnelManager] Checking port connectivity (attempt ${g+1}/10)...`),await this.checkPort("localhost",this.config.tunnelPort)){i=!0,this.connection={host:"localhost",port:this.config.tunnelPort,pid:this.process?.pid,startedAt:new Date},console.log(`[TunnelManager] Tunnel ready on port ${this.config.tunnelPort}`),t(this.connection);return}await new Promise(y=>setTimeout(y,1e3))}s=!1},2e3)),o+=c}),this.process.stdout?.on("data",a=>{let c=a.toString();console.log(`[TunnelManager] ${c.trim()}`)}),this.process.on("error",a=>{console.error(`[TunnelManager] Process error: ${a.message}`),i||n(new Error(`Failed to start tunnel: ${a.message}`))}),this.process.on("close",a=>{console.log(`[TunnelManager] Process closed with code ${a}`),this.process=null,this.connection=null,i||n(new Error(`Tunnel process exited with code ${a}: ${o}`))}),setTimeout(()=>{i||(this.stop(),n(new Error("Tunnel connection timeout")))},6e4)})}async stop(){this.process&&(console.log("[TunnelManager] Stopping tunnel"),this.process.kill("SIGTERM"),await new Promise(e=>setTimeout(e,1e3)),this.process&&this.process.kill("SIGKILL"),this.process=null,this.connection=null)}isActive(){return this.process!==null&&this.connection!==null}getConnection(){return this.connection}getConnectionString(){if(!this.connection)throw new Error("Tunnel not active");let{database:e,user:t}=this.config,n=process.env.PGPASSWORD||"",r=this.connection.host,i=this.connection.port;return`postgresql://${t}:${n}@${r}:${i}/${e}`}getRedactedConnectionString(){return he(this.getConnectionString())}};function ke(l){return new $(l)}var B=class{connection=null;connectionString;constructor(e){this.connectionString=e}async start(){let e=new URL(this.connectionString);return this.connection={host:e.hostname,port:parseInt(e.port||"5432",10),startedAt:new Date},this.connection}async stop(){this.connection=null}isActive(){return this.connection!==null}getConnection(){return this.connection}getConnectionString(){return this.connectionString}getRedactedConnectionString(){return he(this.connectionString)}};function M(l){return l.connectionString?new B(l.connectionString):new $(l)}k();P();v();import{createRequire as Ae}from"module";var N=b.create("postgres-writer"),$e=Ae(import.meta.url),J=class{client=null;config;inTransaction=!1;connected=!1;constructor(e){this.config=e}async connect(){if(this.connected)return;this.config.tunnelManager.isActive()||await this.config.tunnelManager.start();let e=this.config.tunnelManager.getConnection();if(!e)throw new Error("No tunnel connection available");let t;try{t=$e("pg")}catch(o){N.debug("pg module not installed, using mock mode",{error:o instanceof Error?o.message:String(o)}),console.warn("[PostgresWriter] pg module not installed, running in mock mode"),this.client=this.createMockClient(),this.connected=!0;return}let n=t.default,r=t.Client||n?.Client;if(!r){console.warn("[PostgresWriter] pg.Client not found in module, running in mock mode"),this.client=this.createMockClient(),this.connected=!0;return}let i={host:e.host,port:e.port,database:this.config.cloud.database,user:this.config.cloud.user,password:process.env.PGPASSWORD||"",connectionTimeoutMillis:this.config.connectionTimeout||1e4};this.client=new r(i),await this.client.connect(),this.connected=!0,console.log(`[PostgresWriter] Connected to ${e.host}:${e.port}/${this.config.cloud.database}`)}async beginTransaction(){if(!this.client)throw new Error("Not connected");await this.client.query("BEGIN"),this.inTransaction=!0}async commit(){if(!this.client||!this.inTransaction)throw new Error("No active transaction");await this.client.query("COMMIT"),this.inTransaction=!1}async rollback(){!this.client||!this.inTransaction||(await this.client.query("ROLLBACK"),this.inTransaction=!1)}async upsert(e,t,n){if(!this.client)throw new Error("Not connected");if(t.length===0)return 0;let r=t[0],i=Object.keys(r),o=n?.conflictColumns||this.inferConflictColumns(e,i),s=n?.updateColumns||i.filter(u=>!o.includes(u)),a=0,c=100;for(let u=0;u<t.length;u+=c){let p=t.slice(u,u+c);try{let m=await this.upsertBatch(e,p,i,o,s,n?.skipIfExists);a+=m}catch(m){let g=Math.floor(u/c)+1,h=Math.ceil(t.length/c);N.debug(`Batch ${g}/${h} failed for ${e}, retrying individually`,{error:d(m)});let y=0;for(let f of p)try{let S=await this.upsertBatch(e,[f],i,o,s,n?.skipIfExists);y+=S}catch(S){let R=f.id||f.key||"?";N.debug(`Skipped record ${String(R).slice(0,50)} in ${e}`,{error:d(S)})}a+=y,y<p.length&&console.warn(`[PostgresWriter] Batch ${g}/${h} for ${e}: ${y}/${p.length} recovered (${p.length-y} skipped)`)}}return a}async upsertBatch(e,t,n,r,i,o){if(!this.client)return 0;let s=[],a=[],c=1;for(let f of t){let S=[];for(let R of n){let we=f[R];S.push(`$${c++}`),a.push(this.serializeValue(we,R))}s.push(`(${S.join(", ")})`)}let u=E(e),p=n.map(E),m=r.map(E),g=i.map(E),h="";if(m.length>0){if(o)h=`ON CONFLICT (${m.join(", ")}) DO NOTHING`;else if(g.length>0){let f=g.map(S=>`${S} = EXCLUDED.${S}`).join(", ");h=`ON CONFLICT (${m.join(", ")}) DO UPDATE SET ${f}`}}let y=`
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{b as w,c as E,d as k,i as de,m as ue}from"./chunk-M73KM3AZ.js";import{a as v}from"./chunk-GEQWCK4F.js";import{c as b}from"./chunk-IOJ34SXJ.js";import{b as j}from"./chunk-6KI6LAAZ.js";import{a as Te,b as _,d as ee}from"./chunk-VA2ORJB5.js";import{a as d,b as L,c as P}from"./chunk-L3GBNX7B.js";import{i as I}from"./chunk-52VGZJSD.js";import{a as T,b as z}from"./chunk-Z56BBX77.js";import{a as le,d as Ce}from"./chunk-JVFZAJ5N.js";import{f as Ee}from"./chunk-ZMYV4R32.js";var A={cloud:{project:process.env.GCP_PROJECT||"",zone:process.env.GCP_ZONE||"",instance:process.env.GCP_INSTANCE||"",database:process.env.GCP_DATABASE||"",user:process.env.GCP_USER||"",tunnelPort:parseInt(process.env.GCP_TUNNEL_PORT||"15432",10)},environment:process.env.AQE_ENV||"all",batchSize:1e3,sources:[{name:"qe-patterns",cloudTable:"aqe.qe_patterns",localTable:"qe_patterns",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","embedding","sync_version"],transforms:{reusable:"boolean-to-int"}},{name:"sona-patterns",cloudTable:"aqe.sona_patterns",localTable:"sona_patterns",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],transforms:{is_active:"boolean-to-int",requires_fine_tuning:"boolean-to-int"}},{name:"goap-actions",cloudTable:"aqe.goap_actions",localTable:"goap_actions",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{duration_estimate:"estimated_duration_ms"}},{name:"goap-plans",cloudTable:"aqe.goap_plans",localTable:"goap_plans",enabled:!0,priority:"medium",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{estimated_duration:"estimated_duration_ms"}},{name:"memory-entries",cloudTable:"aqe.memory_entries",localTable:"kv_store",enabled:!0,priority:"high",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{partition:"namespace"}},{name:"learning-experiences",cloudTable:"aqe.learning_experiences",localTable:"captured_experiences",enabled:!0,priority:"high",mode:"append",dropColumns:["id","source_env","sync_version"],columnMap:{agent_id:"agent",task_id:"task",task_type:"domain",state:"result_json",action:"steps_json",reward:"quality",next_state:"routing_json",episode_id:"tags",created_at:"started_at"}},{name:"qlearning-patterns",cloudTable:"aqe.qlearning_patterns",localTable:"rl_q_values",enabled:!0,priority:"medium",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{state:"state_key",action:"action_key",last_update:"updated_at"}},{name:"routing-outcomes",cloudTable:"aqe.routing_outcomes",localTable:"routing_outcomes",enabled:!0,priority:"medium",mode:"append",dropColumns:["source_env","sync_version"]},{name:"qe-trajectories",cloudTable:"aqe.qe_trajectories",localTable:"qe_trajectories",enabled:!0,priority:"medium",mode:"append",dropColumns:["source_env","sync_version","embedding"]},{name:"dream-insights",cloudTable:"aqe.dream_insights",localTable:"dream_insights",enabled:!0,priority:"low",mode:"append",dropColumns:["source_env","sync_version"]},{name:"claude-flow-memory",cloudTable:"aqe.claude_flow_memory",localTable:"kv_store",enabled:!0,priority:"low",mode:"incremental",dropColumns:["source_env","sync_version"],columnMap:{partition:"namespace"}}]},Re={TEXT:"TEXT",INTEGER:"INTEGER",REAL:"REAL",BLOB:"BYTEA",NULL:"NULL"},x={local:{v3MemoryDb:"./.agentic-qe/memory.db",rootMemoryDb:"./.agentic-qe/memory.db",claudeFlowMemory:"./.claude-flow/memory/store.json",claudeFlowDaemon:"./.claude-flow/daemon-state.json",claudeFlowMetrics:"./.claude-flow/metrics/",intelligenceJson:"./.ruvector/intelligence.json",swarmMemoryDb:"./.swarm/memory.db",v2PatternsDb:""},cloud:{project:process.env.GCP_PROJECT||"",zone:process.env.GCP_ZONE||"",instance:process.env.GCP_INSTANCE||"",database:process.env.GCP_DATABASE||"",user:process.env.GCP_USER||"",tunnelPort:parseInt(process.env.GCP_TUNNEL_PORT||"15432",10)},sync:{mode:"incremental",interval:"1h",batchSize:1e3,conflictResolution:"newer-wins",sourcePriority:{qePatterns:1,sonaPatterns:2,goapActions:3,kvStore:4,experiences:5,claudeFlowMemory:6,intelligenceJson:7},sources:[{name:"root-qe-patterns",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qe_patterns",priority:"high",mode:"incremental",query:"SELECT id, pattern_type, qe_domain, domain, name, description, confidence, usage_count, success_rate, quality_score, tier, template_json, context_json, successful_uses, created_at, updated_at, last_used_at, tokens_used, input_tokens, output_tokens, latency_ms, reusable, reuse_count, average_token_savings, total_tokens_saved FROM qe_patterns",enabled:!0},{name:"root-sona-patterns",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.sona_patterns",priority:"high",mode:"incremental",query:"SELECT * FROM sona_patterns",enabled:!0},{name:"root-goap-actions",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.goap_actions",priority:"high",mode:"incremental",query:"SELECT * FROM goap_actions",enabled:!0},{name:"root-kv-store",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.memory_entries",priority:"high",mode:"incremental",query:"SELECT key, namespace as partition, CASE WHEN json_valid(value) THEN value ELSE json_quote(value) END as value, created_at, expires_at FROM kv_store WHERE json_valid(value) OR json_valid(json_quote(value))",enabled:!0},{name:"root-captured-experiences",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.learning_experiences",priority:"high",mode:"append",query:"SELECT agent as agent_id, task as task_id, domain as task_type, COALESCE(result_json, '{}') as state, COALESCE(steps_json, '{}') as action, quality as reward, COALESCE(routing_json, '{}') as next_state, tags as episode_id, started_at as created_at FROM captured_experiences",enabled:!0},{name:"root-goap-plans",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.goap_plans",priority:"medium",mode:"incremental",query:"SELECT id, goal_id, action_sequence as sequence, initial_state, goal_state, action_sequence, total_cost, estimated_duration_ms as estimated_duration, status, created_at, completed_at FROM goap_plans",enabled:!0},{name:"root-rl-q-values",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qlearning_patterns",priority:"medium",mode:"incremental",query:"SELECT DISTINCT state_key as state, action_key as action, q_value, visits, updated_at as last_update, created_at FROM rl_q_values GROUP BY state_key, action_key",enabled:!0},{name:"root-routing-outcomes",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.routing_outcomes",priority:"medium",mode:"append",query:"SELECT * FROM routing_outcomes",enabled:!0},{name:"root-qe-trajectories",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.qe_trajectories",priority:"medium",mode:"append",query:"SELECT * FROM qe_trajectories",enabled:!0},{name:"root-dream-insights",type:"sqlite",path:"./.agentic-qe/memory.db",targetTable:"aqe.dream_insights",priority:"low",mode:"append",query:"SELECT * FROM dream_insights",enabled:!0},{name:"claude-flow-memory",type:"json",path:"./.claude-flow/memory/store.json",targetTable:"aqe.claude_flow_memory",priority:"medium",mode:"full",enabled:!0},{name:"intelligence-qlearning",type:"json",path:"./.ruvector/intelligence.json",targetTable:"aqe.qlearning_patterns",priority:"low",mode:"full",jsonPath:"$.qvalues",enabled:!0}]},environment:process.env.AQE_ENV||"devpod"};z();k();ee();P();v();import*as te from"fs";import*as me from"path";var F=b.create("sqlite-reader"),W=class{name;type="sqlite";db=null;config;dbPath;constructor(e){this.config=e,this.name=e.source.name,this.dbPath=me.resolve(e.baseDir,e.source.path)}async initialize(){if(!this.db){if(!te.existsSync(this.dbPath))throw new Error(`SQLite database not found: ${this.dbPath}`);try{this.db=T(this.dbPath,{readonly:!0}),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),console.log(`[SQLiteReader:${this.name}] Initialized: ${this.dbPath}`)}catch(e){throw new Error(`Failed to open SQLite database ${this.dbPath}: ${d(e)}`)}}}async readAll(){if(!this.db)throw new Error("Reader not initialized");let e=this.config.source.query||`SELECT * FROM ${w(this.getTableName())}`;try{return this.tableExists(this.getTableName())?this.db.prepare(e).all().map(r=>this.transformRecord(r)):(console.warn(`[SQLiteReader:${this.name}] Table not found, returning empty`),[])}catch(t){throw new Error(`Failed to read from ${this.name}: ${d(t)}`)}}async readChanged(e){if(!this.db)throw new Error("Reader not initialized");let t=this.findTimestampColumn();if(!t)return console.warn(`[SQLiteReader:${this.name}] No timestamp column found, falling back to readAll`),this.readAll();let n=this.getTableName();if(!this.tableExists(n))return[];let r=e.toISOString(),i=`SELECT * FROM ${w(n)} WHERE ${t} > ?`;try{return this.db.prepare(i).all(r).map(a=>this.transformRecord(a))}catch{return console.warn(`[SQLiteReader:${this.name}] Changed query failed, falling back to readAll`),this.readAll()}}async count(){if(!this.db)throw new Error("Reader not initialized");let e=this.getTableName();if(!this.tableExists(e))return 0;try{return this.db.prepare(`SELECT COUNT(*) as count FROM ${w(e)}`).get().count}catch(t){return F.debug("Record count query failed",{table:e,error:d(t)}),0}}async close(){this.db&&(this.db.close(),this.db=null,console.log(`[SQLiteReader:${this.name}] Closed`))}getTableName(){let e=this.config.source.query;if(e){let r=e.match(/FROM\s+(\w+)/i);if(r)return r[1]}let n=this.config.source.targetTable.split(".");return n[n.length-1]}tableExists(e){if(!this.db)return!1;try{return!!this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(e)}catch(t){return F.debug("Table existence check failed",{table:e,error:t instanceof Error?t.message:String(t)}),!1}}findTimestampColumn(){if(!this.db)return null;let e=this.getTableName(),t=["updated_at","created_at","timestamp","last_used_at","modified_at"];try{let i=this.db.prepare(`PRAGMA table_info(${w(e)})`).all().map(o=>o.name.toLowerCase());for(let o of t)if(i.includes(o))return o}catch(n){return F.debug("Timestamp column detection failed",{table:e,error:n instanceof Error?n.message:String(n)}),null}return null}transformRecord(e){let t={...e,source_env:this.config.environment};for(let[n,r]of Object.entries(t)){if(typeof r=="string"&&this.looksLikeJson(r))try{t[n]=_(r)}catch(i){F.debug("JSON parse failed for record field",{key:n,error:i instanceof Error?i.message:String(i)})}if(n.endsWith("_at")&&typeof r=="number"&&(t[n]=new Date(r).toISOString()),r instanceof Buffer)if(n.includes("embedding")){let i=e.dimension||384;t[n]=Array.from(new Float32Array(r.buffer,r.byteOffset,i))}else t[n]=r.toString("base64")}return t}looksLikeJson(e){if(!e)return!1;let t=e.trim();return t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")}getInfo(){let e=te.existsSync(this.dbPath),t=[];if(e&&this.db)try{t=this.db.prepare("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").all().map(r=>r.name)}catch(n){console.debug("[SQLiteReader] Table listing error:",n instanceof Error?n.message:n)}return{path:this.dbPath,exists:e,tables:t}}};function re(l){return new W(l)}var pe=Ee(Te(),1);P();import{randomUUID as Pe}from"crypto";import*as C from"fs";import*as ge from"path";var U=class{name;type="json";config;filePath;data=null;fileModTime=null;constructor(e){this.config=e,this.name=e.source.name,this.filePath=ge.resolve(e.baseDir,e.source.path)}async initialize(){if(!C.existsSync(this.filePath)){console.warn(`[JSONReader:${this.name}] File not found: ${this.filePath}`),this.data=[];return}let e=C.statSync(this.filePath);this.fileModTime=e.mtime,console.log(`[JSONReader:${this.name}] Initialized: ${this.filePath}`)}async readAll(){if(!C.existsSync(this.filePath))return[];try{let e=C.readFileSync(this.filePath,"utf-8"),t=pe.default.parse(e);return this.extractRecords(t).map(r=>this.transformRecord(r))}catch(e){return console.error(`[JSONReader:${this.name}] Failed to read: ${d(e)}`),[]}}async readChanged(e){return C.existsSync(this.filePath)?C.statSync(this.filePath).mtime<=e?[]:this.readAll():[]}async count(){return(await this.readAll()).length}async close(){this.data=null,this.fileModTime=null,console.log(`[JSONReader:${this.name}] Closed`)}extractRecords(e){return this.config.source.jsonPath?this.extractByPath(e,this.config.source.jsonPath):this.name.includes("claude-flow-memory")?this.extractClaudeFlowMemory(e):this.name.includes("intelligence")||this.name.includes("qlearning")?this.extractIntelligence(e):this.name.includes("daemon")?this.extractDaemonState(e):Array.isArray(e)?e:typeof e=="object"&&e!==null?Object.entries(e).map(([n,r])=>({key:n,value:r})):[]}extractByPath(e,t){let n=t.replace(/^\$\./,"").split("."),r=e;for(let i of n)if(r&&typeof r=="object"&&i in r)r=r[i];else return[];return Array.isArray(r)?r:typeof r=="object"&&r!==null?Object.entries(r).map(([i,o])=>({state:i,...typeof o=="object"?o:{value:o}})):[]}extractClaudeFlowMemory(e){if(!e||typeof e!="object")return[];let t=[],n=e;for(let[r,i]of Object.entries(n)){if(r.startsWith("_"))continue;let o="general";r.includes("adr")?o="adr-analysis":r.includes("agent")?o="agent-patterns":r.includes("pattern")?o="patterns":r.includes("metric")&&(o="metrics"),t.push({key:r,value:typeof i=="object"?i:{data:i},category:o})}return t}extractIntelligence(e){if(!e||typeof e!="object")return[];let t=[],n=e;if(n.qvalues&&typeof n.qvalues=="object"){let r=n.qvalues;for(let[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null)for(let[s,a]of Object.entries(o)){let c=typeof a=="object"?a:{value:a};t.push({state:i,action:s,q_value:c.value||c.q_value||0,visits:c.visits||0,last_update:c.lastUpdate||c.last_update})}}if(n.memories&&Array.isArray(n.memories)){for(let r of n.memories)if(typeof r=="object"&&r!==null){let i=r;t.push({id:i.id||`mem_${Date.now()}_${Pe().slice(0,12)}`,memory_type:i.type||"file_access",content:i.content||i.path,embedding:i.embedding,metadata:i.metadata,timestamp:i.timestamp})}}return t}extractDaemonState(e){if(!e||typeof e!="object")return[];let t=[],n=e;if(n.workers&&typeof n.workers=="object"){let r=n.workers;for(let[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null){let s=o;t.push({worker_type:i,run_count:s.runCount||s.runs||0,success_count:s.successCount||s.successes||0,failure_count:s.failureCount||s.failures||0,avg_duration_ms:s.avgDuration||s.averageDurationMs,last_run:s.lastRun})}}return t}transformRecord(e){let t={...e,source_env:this.config.environment};for(let[n,r]of Object.entries(t))(n.includes("timestamp")||n.endsWith("_at")||n==="last_update")&&(typeof r=="number"?t[n]=new Date(r).toISOString():typeof r=="string"&&!isNaN(Date.parse(r))&&(t[n]=new Date(r).toISOString())),typeof r=="object"&&r!==null&&!Array.isArray(r)&&["value","metadata","embedding"].includes(n);return t.created_at||(t.created_at=new Date().toISOString()),t}getInfo(){let e=C.existsSync(this.filePath),t=0,n=null;if(e){let r=C.statSync(this.filePath);t=r.size,n=r.mtime}return{path:this.filePath,exists:e,modTime:n,size:t}}};function ne(l){return new U(l)}v();import{spawn as ve}from"child_process";import{createConnection as _e}from"net";var xe=b.create("tunnel-manager");function he(l){try{let e=new URL(l);return e.password&&(e.password="***"),e.toString()}catch(e){return xe.debug("URL parse failed during redaction, using regex fallback",{error:e instanceof Error?e.message:String(e)}),l.replace(/:\/\/([^:]+):([^@]+)@/,"://$1:***@")}}var $=class{process=null;connection=null;config;constructor(e){this.config=e}checkPort(e,t,n=2e3){return new Promise(r=>{let i=_e({host:e,port:t}),o=setTimeout(()=>{i.destroy(),r(!1)},n);i.on("connect",()=>{clearTimeout(o),i.destroy(),r(!0)}),i.on("error",()=>{clearTimeout(o),i.destroy(),r(!1)})})}async start(){return this.process&&this.connection?(console.log("[TunnelManager] Tunnel already running"),this.connection):await this.checkPort("localhost",this.config.tunnelPort)?(console.log(`[TunnelManager] External tunnel detected on port ${this.config.tunnelPort}, reusing`),this.connection={host:"localhost",port:this.config.tunnelPort,startedAt:new Date},this.connection):new Promise((t,n)=>{let r=["compute","start-iap-tunnel",this.config.instance,"5432",`--local-host-port=localhost:${this.config.tunnelPort}`,`--zone=${this.config.zone}`,`--project=${this.config.project}`];console.log(`[TunnelManager] Starting IAP tunnel: gcloud ${r.join(" ")}`),this.process=ve("gcloud",r,{stdio:["ignore","pipe","pipe"]});let i=!1,o="",s=!1;this.process.stderr?.on("data",a=>{let c=a.toString();console.log(`[TunnelManager] ${c.trim()}`),["Listening on port","tunnel is running","Testing if tunnel connection works"].some(m=>c.includes(m))&&!i&&!s&&(s=!0,setTimeout(async()=>{for(let g=0;g<10;g++){if(console.log(`[TunnelManager] Checking port connectivity (attempt ${g+1}/10)...`),await this.checkPort("localhost",this.config.tunnelPort)){i=!0,this.connection={host:"localhost",port:this.config.tunnelPort,pid:this.process?.pid,startedAt:new Date},console.log(`[TunnelManager] Tunnel ready on port ${this.config.tunnelPort}`),t(this.connection);return}await new Promise(y=>setTimeout(y,1e3))}s=!1},2e3)),o+=c}),this.process.stdout?.on("data",a=>{let c=a.toString();console.log(`[TunnelManager] ${c.trim()}`)}),this.process.on("error",a=>{console.error(`[TunnelManager] Process error: ${a.message}`),i||n(new Error(`Failed to start tunnel: ${a.message}`))}),this.process.on("close",a=>{console.log(`[TunnelManager] Process closed with code ${a}`),this.process=null,this.connection=null,i||n(new Error(`Tunnel process exited with code ${a}: ${o}`))}),setTimeout(()=>{i||(this.stop(),n(new Error("Tunnel connection timeout")))},6e4)})}async stop(){this.process&&(console.log("[TunnelManager] Stopping tunnel"),this.process.kill("SIGTERM"),await new Promise(e=>setTimeout(e,1e3)),this.process&&this.process.kill("SIGKILL"),this.process=null,this.connection=null)}isActive(){return this.process!==null&&this.connection!==null}getConnection(){return this.connection}getConnectionString(){if(!this.connection)throw new Error("Tunnel not active");let{database:e,user:t}=this.config,n=process.env.PGPASSWORD||"",r=this.connection.host,i=this.connection.port;return`postgresql://${t}:${n}@${r}:${i}/${e}`}getRedactedConnectionString(){return he(this.getConnectionString())}};function ke(l){return new $(l)}var B=class{connection=null;connectionString;constructor(e){this.connectionString=e}async start(){let e=new URL(this.connectionString);return this.connection={host:e.hostname,port:parseInt(e.port||"5432",10),startedAt:new Date},this.connection}async stop(){this.connection=null}isActive(){return this.connection!==null}getConnection(){return this.connection}getConnectionString(){return this.connectionString}getRedactedConnectionString(){return he(this.connectionString)}};function M(l){return l.connectionString?new B(l.connectionString):new $(l)}k();P();v();import{createRequire as Ae}from"module";var N=b.create("postgres-writer"),$e=Ae(import.meta.url),J=class{client=null;config;inTransaction=!1;connected=!1;constructor(e){this.config=e}async connect(){if(this.connected)return;this.config.tunnelManager.isActive()||await this.config.tunnelManager.start();let e=this.config.tunnelManager.getConnection();if(!e)throw new Error("No tunnel connection available");let t;try{t=$e("pg")}catch(o){N.debug("pg module not installed, using mock mode",{error:o instanceof Error?o.message:String(o)}),console.warn("[PostgresWriter] pg module not installed, running in mock mode"),this.client=this.createMockClient(),this.connected=!0;return}let n=t.default,r=t.Client||n?.Client;if(!r){console.warn("[PostgresWriter] pg.Client not found in module, running in mock mode"),this.client=this.createMockClient(),this.connected=!0;return}let i={host:e.host,port:e.port,database:this.config.cloud.database,user:this.config.cloud.user,password:process.env.PGPASSWORD||"",connectionTimeoutMillis:this.config.connectionTimeout||1e4};this.client=new r(i),await this.client.connect(),this.connected=!0,console.log(`[PostgresWriter] Connected to ${e.host}:${e.port}/${this.config.cloud.database}`)}async beginTransaction(){if(!this.client)throw new Error("Not connected");await this.client.query("BEGIN"),this.inTransaction=!0}async commit(){if(!this.client||!this.inTransaction)throw new Error("No active transaction");await this.client.query("COMMIT"),this.inTransaction=!1}async rollback(){!this.client||!this.inTransaction||(await this.client.query("ROLLBACK"),this.inTransaction=!1)}async upsert(e,t,n){if(!this.client)throw new Error("Not connected");if(t.length===0)return 0;let r=t[0],i=Object.keys(r),o=n?.conflictColumns||this.inferConflictColumns(e,i),s=n?.updateColumns||i.filter(u=>!o.includes(u)),a=0,c=100;for(let u=0;u<t.length;u+=c){let p=t.slice(u,u+c);try{let m=await this.upsertBatch(e,p,i,o,s,n?.skipIfExists);a+=m}catch(m){let g=Math.floor(u/c)+1,h=Math.ceil(t.length/c);N.debug(`Batch ${g}/${h} failed for ${e}, retrying individually`,{error:d(m)});let y=0;for(let f of p)try{let S=await this.upsertBatch(e,[f],i,o,s,n?.skipIfExists);y+=S}catch(S){let R=f.id||f.key||"?";N.debug(`Skipped record ${String(R).slice(0,50)} in ${e}`,{error:d(S)})}a+=y,y<p.length&&console.warn(`[PostgresWriter] Batch ${g}/${h} for ${e}: ${y}/${p.length} recovered (${p.length-y} skipped)`)}}return a}async upsertBatch(e,t,n,r,i,o){if(!this.client)return 0;let s=[],a=[],c=1;for(let f of t){let S=[];for(let R of n){let we=f[R];S.push(`$${c++}`),a.push(this.serializeValue(we,R))}s.push(`(${S.join(", ")})`)}let u=E(e),p=n.map(E),m=r.map(E),g=i.map(E),h="";if(m.length>0){if(o)h=`ON CONFLICT (${m.join(", ")}) DO NOTHING`;else if(g.length>0){let f=g.map(S=>`${S} = EXCLUDED.${S}`).join(", ");h=`ON CONFLICT (${m.join(", ")}) DO UPDATE SET ${f}`}}let y=`
|
|
3
3
|
INSERT INTO ${u} (${p.join(", ")})
|
|
4
4
|
VALUES ${s.join(", ")}
|
|
5
5
|
${h}
|
|
@@ -26,4 +26,4 @@ import{b as w,c as E,d as k,i as de,m as ue}from"./chunk-37GWETSW.js";import{a a
|
|
|
26
26
|
INSERT OR REPLACE INTO embeddings
|
|
27
27
|
(key, namespace, vector, dimension, text, timestamp, quantization, metadata, last_access)
|
|
28
28
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
29
|
-
`).run(e,n,r,t.dimension,t.text,t.timestamp,t.quantization,i,Date.now())}catch(r){console.warn("Failed to persist embedding:",r)}}flushPendingWrites(){if(this.pendingWrites.length===0||!this.db)return;let e=this.pendingWrites;this.pendingWrites=[];for(let{key:t,embedding:n,namespace:r}of e)this.persistToDisk(t,n,r);e.length>0&&console.log(`[EmbeddingCache] Flushed ${e.length} pending writes after DB init`)}loadFromDisk(){if(this.db)try{let t=this.db.prepare("SELECT * FROM embeddings").all();for(let n of t){let r={vector:this.deserializeVector(n.vector),dimension:n.dimension,namespace:n.namespace,text:n.text,timestamp:n.timestamp,quantization:n.quantization,metadata:n.metadata?_(n.metadata):void 0},i=this.memoryCache.get(n.namespace);i&&i.set(n.key,{key:n.key,embedding:r,accessCount:n.access_count||1,lastAccess:n.last_access})}}catch(e){console.warn("Failed to load embeddings from disk:",e)}}serializeVector(e){if(e instanceof Float32Array)return Buffer.from(e.buffer);if(e instanceof Int8Array)return Buffer.from(e.buffer);if(e instanceof Uint8Array)return Buffer.from(e.buffer);{let t=new Float32Array(e);return Buffer.from(t.buffer)}}deserializeVector(e){let t=new Float32Array(e.buffer,e.byteOffset,e.byteLength/Float32Array.BYTES_PER_ELEMENT);return Array.from(t)}getStats(){let e=0,t={text:0,code:0,test:0,coverage:0,defect:0,experiences:0};for(let[r,i]of this.memoryCache.entries()){let o=i.size;t[r]=o,e+=o}let n=e*384*4;return{totalEntries:e,entriesByNamespace:t,memoryUsage:n,hitRate:0}}resetStats(){}close(){this.db&&(this.unifiedMemory?console.log("[EmbeddingCache] Detached from unified storage (not closing shared connection)"):(this.db.close(),console.log("[EmbeddingCache] Database closed")),this.db=null,this.unifiedMemory=null,this.pendingWrites=[],this.dbInitializing=!1)}getMostAccessed(e="text",t=10){let n=this.memoryCache.get(e);return n?Array.from(n.entries()).map(([r,i])=>({key:r,accessCount:i.accessCount})).sort((r,i)=>i.accessCount-r.accessCount).slice(0,t):[]}optimize(e=2,t){let n=0,r=i=>{let o=this.memoryCache.get(i);if(!o)return;let s=[];for(let[a,c]of o.entries())c.accessCount<e&&s.push(a);for(let a of s)o.delete(a),n++};if(t)r(t);else for(let i of this.memoryCache.keys())r(i);return n}};Ce();var Z=class{model=null;config;cache;stats;constructor(e={}){this.config={type:e.type||"transformers",model:e.model||"Xenova/all-MiniLM-L6-v2",dimension:e.dimension||384,quantization:e.quantization||"none",cacheEnabled:e.cacheEnabled??!0,onnxEnabled:e.onnxEnabled??!0,maxSequenceLength:e.maxSequenceLength||512},this.cache=new K({maxSize:1e4,ttl:0,persistent:!0,compression:!0}),this.stats=this.initializeStats()}async initialize(){if(this.model)return;let e=performance.now();if(this.config.onnxEnabled){let n=this.config.quantization==="none"?"fp32":this.config.quantization==="fp16"?"fp16":this.config.quantization==="int8"?"int8":"q8",r;try{({pipeline:r}=await import("./transformers-SZFBEILB.js"))}catch(i){throw new Error(`Local (in-process) embeddings require the optional dependency "@huggingface/transformers", which is not installed. Either run \`npm install @huggingface/transformers\`, or configure an embedding endpoint (e.g. Cognitum /v1/embeddings) so the local backend is not needed. Underlying import error: ${i instanceof Error?i.message:String(i)}`)}this.model=await r("feature-extraction",this.config.model,{dtype:n,progress_callback:i=>{i.status==="progress"&&typeof i.progress=="number"&&console.log(`Downloading model: ${(i.progress*100).toFixed(0)}%`)}})}let t=performance.now()-e;console.log(`Model loaded in ${t.toFixed(2)}ms`)}async embed(e,t={}){let n=performance.now(),r=t.namespace||"text";if(t.cache!==!1&&this.config.cacheEnabled){let c=this.cache.get(e,r);if(c)return this.stats.cacheHits++,c;this.stats.cacheMisses++}await this.initialize();let i;if(this.model){let c=await this.model(e,{pooling:"mean",normalize:!0});i=Array.from(c.data)}else throw new Error("Model not initialized");let o=i;if(t.quantization||this.config.quantization){let c=t.quantization||this.config.quantization;o=this.quantize(i,c)}let s={vector:o,dimension:this.config.dimension,namespace:r,text:e,timestamp:Date.now(),quantization:t.quantization||this.config.quantization,metadata:t?.metadata};t.cache!==!1&&this.config.cacheEnabled&&this.cache.set(e,s,r);let a=performance.now()-n;return this.stats.avgEmbeddingTime=(this.stats.avgEmbeddingTime*this.stats.totalEmbeddings+a)/(this.stats.totalEmbeddings+1),this.stats.totalEmbeddings++,this.stats.byNamespace[r]++,s}async embedBatch(e,t={}){let n=performance.now(),r=0,i=0,o=[];for(let a of e){let c=await this.embed(a,t);this.cache.get(a,t.namespace||"text")?r++:i++,o.push(c),t.onProgress&&t.onProgress(o.length/e.length)}let s=performance.now()-n;return{embeddings:o,totalTime:s,avgTime:s/e.length,cacheHits:r,cacheMisses:i}}async findSimilar(e,t={}){let n=t.limit||10,r=t.threshold||.7,i=typeof e=="string"?await this.embed(e,{namespace:t.namespace}):e,s=this.cache.getAll(t.namespace).map(a=>({target:a.text,score:le(i.vector,a.vector),rank:0})).filter(a=>a.score>=r).sort((a,c)=>c.score-a.score).slice(0,n);return s.forEach((a,c)=>{a.rank=c+1}),s}quantize(e,t){switch(t){case"fp16":return new Float32Array(e.map(n=>Math.fround(n)));case"int8":{let n=Math.max(...e.map(Math.abs));return new Int8Array(e.map(r=>Math.round(r/n*127)))}case"binary":{let n=new Uint8Array(Math.ceil(e.length/8));for(let r=0;r<e.length;r++)e[r]>=0&&(n[Math.floor(r/8)]|=1<<r%8);return n}default:return e}}getStats(){let e=this.cache.getStats();return{...this.stats,cacheHitRate:this.stats.cacheHits+this.stats.cacheMisses>0?this.stats.cacheHits/(this.stats.cacheHits+this.stats.cacheMisses):0,memoryUsage:e.memoryUsage,memoryReduction:this.calculateMemoryReduction()}}calculateMemoryReduction(){switch(this.config.quantization){case"fp16":return 50;case"int8":return 75;case"binary":return 97;default:return 0}}initializeStats(){return{totalEmbeddings:0,byNamespace:{text:0,code:0,test:0,coverage:0,defect:0,experiences:0},cacheHits:0,cacheMisses:0,cacheHitRate:0,avgEmbeddingTime:0,memoryUsage:0,memoryReduction:0,indexSize:0,indexBuildTime:0}}resetStats(){this.stats=this.initializeStats(),this.cache.resetStats()}async clear(){this.cache.clear(),this.model=null}};z();k();P();ee();v();import{resolve as ze,dirname as je}from"path";import{fileURLToPath as Fe}from"url";var be=b.create("sync-embedding-generator"),We=Fe(import.meta.url),Ue=je(We),q=class{generator;dbPath;initialized=!1;constructor(e){this.dbPath=e||ze(Ue,"../../../../.agentic-qe/memory.db"),this.generator=new Z({model:"Xenova/all-MiniLM-L6-v2",dimension:384,cacheEnabled:!0,onnxEnabled:!0})}async initialize(){this.initialized||(await this.generator.initialize(),this.initialized=!0,console.log("[SyncEmbedding] Model initialized"))}async generateForPattern(e){await this.initialize();let t=this.extractText(e),n=await this.generator.embed(t,{namespace:"text"});return{id:e.id,embedding:Array.isArray(n.vector)?n.vector:Array.from(n.vector),text:t,dimension:n.dimension,generatedAt:new Date}}async generateForAllPatterns(e="patterns",t={}){let n=Date.now(),r={totalPatterns:0,patternsWithEmbeddings:0,patternsGenerated:0,patternsSkipped:0,errors:[],durationMs:0};await this.initialize();let i=T(this.dbPath);try{i.prepare(`PRAGMA table_info(${w(e)})`).all().some(h=>h.name==="embedding")||(i.prepare(`ALTER TABLE ${w(e)} ADD COLUMN embedding TEXT`).run(),console.log(`[SyncEmbedding] Added embedding column to ${e}`));let a=w(e),c=t.force?`SELECT * FROM ${a}`:`SELECT * FROM ${a} WHERE embedding IS NULL OR embedding = ''`,u=i.prepare(c).all();r.totalPatterns=u.length,t.verbose&&console.log(`[SyncEmbedding] Processing ${u.length} patterns from ${e}`);let p=i.prepare(`SELECT COUNT(*) as count FROM ${a} WHERE embedding IS NOT NULL AND embedding != ''`).get();r.patternsWithEmbeddings=p.count;let m=i.prepare(`UPDATE ${a} SET embedding = ? WHERE id = ?`),g=t.batchSize||50;for(let h=0;h<u.length;h+=g){let y=u.slice(h,Math.min(h+g,u.length));for(let f of y)try{let S=await this.generateForPattern(f),R=JSON.stringify(S.embedding);m.run(R,f.id),r.patternsGenerated++,t.verbose&&r.patternsGenerated%10===0&&console.log(`[SyncEmbedding] Generated ${r.patternsGenerated}/${u.length}`)}catch(S){let R=d(S);r.errors.push(`Pattern ${f.id}: ${R}`),r.patternsSkipped++}}return r.durationMs=Date.now()-n,t.verbose&&(console.log(`[SyncEmbedding] Completed: ${r.patternsGenerated} generated, ${r.patternsSkipped} skipped`),console.log(`[SyncEmbedding] Duration: ${r.durationMs}ms`)),r}finally{i.close()}}async findSimilarPatterns(e,t={}){await this.initialize();let n=t.limit||10,r=t.threshold||.5,i=t.tableName||"patterns",o=await this.generator.embed(e,{namespace:"text"}),s=Array.isArray(o.vector)?o.vector:Array.from(o.vector),a=T(this.dbPath,{readonly:!0});try{let c=a.prepare(`SELECT * FROM ${w(i)} WHERE embedding IS NOT NULL AND embedding != ''`).all(),u=[];for(let p of c)try{let m=typeof p.embedding=="string"?_(p.embedding):p.embedding;if(Array.isArray(m)&&m.length===s.length){let g=this.cosineSimilarity(s,m);g>=r&&u.push({pattern:p,similarity:g})}}catch(m){be.debug("Invalid embedding in search pattern",{error:m instanceof Error?m.message:String(m)})}return u.sort((p,m)=>m.similarity-p.similarity).slice(0,n)}finally{a.close()}}extractText(e){let t=[];if(e.pattern&&t.push(e.pattern),e.content)try{let r=typeof e.content=="string"?_(e.content):e.content;typeof r=="object"?(r.description&&t.push(r.description),r.name&&t.push(r.name),r.summary&&t.push(r.summary),r.text&&t.push(r.text)):typeof r=="string"&&t.push(r)}catch(r){be.debug("Pattern content is not JSON, using as string",{error:r instanceof Error?r.message:String(r)}),t.push(String(e.content))}return e.type&&t.push(`type:${e.type}`),e.domain&&t.push(`domain:${e.domain}`),t.join(" ").trim().substring(0,512)}cosineSimilarity(e,t){let n=0,r=0,i=0;for(let s=0;s<e.length;s++)n+=e[s]*t[s],r+=e[s]*e[s],i+=t[s]*t[s];let o=Math.sqrt(r)*Math.sqrt(i);return o===0?0:n/o}getStats(){return this.generator.getStats()}async clear(){await this.generator.clear(),this.initialized=!1}};function Se(l){return new q(l)}export{A as a,Re as b,x as c,W as d,re as e,U as f,ne as g,$ as h,ke as i,B as j,M as k,J as l,O as m,Q as n,ie as o,V as p,oe as q,H as r,se as s,Ne as t,Oe as u,X as v,ce as w,De as x,qe as y,q as z,Se as A};
|
|
29
|
+
`).run(e,n,r,t.dimension,t.text,t.timestamp,t.quantization,i,Date.now())}catch(r){console.warn("Failed to persist embedding:",r)}}flushPendingWrites(){if(this.pendingWrites.length===0||!this.db)return;let e=this.pendingWrites;this.pendingWrites=[];for(let{key:t,embedding:n,namespace:r}of e)this.persistToDisk(t,n,r);e.length>0&&console.log(`[EmbeddingCache] Flushed ${e.length} pending writes after DB init`)}loadFromDisk(){if(this.db)try{let t=this.db.prepare("SELECT * FROM embeddings").all();for(let n of t){let r={vector:this.deserializeVector(n.vector),dimension:n.dimension,namespace:n.namespace,text:n.text,timestamp:n.timestamp,quantization:n.quantization,metadata:n.metadata?_(n.metadata):void 0},i=this.memoryCache.get(n.namespace);i&&i.set(n.key,{key:n.key,embedding:r,accessCount:n.access_count||1,lastAccess:n.last_access})}}catch(e){console.warn("Failed to load embeddings from disk:",e)}}serializeVector(e){if(e instanceof Float32Array)return Buffer.from(e.buffer);if(e instanceof Int8Array)return Buffer.from(e.buffer);if(e instanceof Uint8Array)return Buffer.from(e.buffer);{let t=new Float32Array(e);return Buffer.from(t.buffer)}}deserializeVector(e){let t=new Float32Array(e.buffer,e.byteOffset,e.byteLength/Float32Array.BYTES_PER_ELEMENT);return Array.from(t)}getStats(){let e=0,t={text:0,code:0,test:0,coverage:0,defect:0,experiences:0};for(let[r,i]of this.memoryCache.entries()){let o=i.size;t[r]=o,e+=o}let n=e*384*4;return{totalEntries:e,entriesByNamespace:t,memoryUsage:n,hitRate:0}}resetStats(){}close(){this.db&&(this.unifiedMemory?console.log("[EmbeddingCache] Detached from unified storage (not closing shared connection)"):(this.db.close(),console.log("[EmbeddingCache] Database closed")),this.db=null,this.unifiedMemory=null,this.pendingWrites=[],this.dbInitializing=!1)}getMostAccessed(e="text",t=10){let n=this.memoryCache.get(e);return n?Array.from(n.entries()).map(([r,i])=>({key:r,accessCount:i.accessCount})).sort((r,i)=>i.accessCount-r.accessCount).slice(0,t):[]}optimize(e=2,t){let n=0,r=i=>{let o=this.memoryCache.get(i);if(!o)return;let s=[];for(let[a,c]of o.entries())c.accessCount<e&&s.push(a);for(let a of s)o.delete(a),n++};if(t)r(t);else for(let i of this.memoryCache.keys())r(i);return n}};Ce();var Z=class{model=null;config;cache;stats;constructor(e={}){this.config={type:e.type||"transformers",model:e.model||"Xenova/all-MiniLM-L6-v2",dimension:e.dimension||384,quantization:e.quantization||"none",cacheEnabled:e.cacheEnabled??!0,onnxEnabled:e.onnxEnabled??!0,maxSequenceLength:e.maxSequenceLength||512},this.cache=new K({maxSize:1e4,ttl:0,persistent:!0,compression:!0}),this.stats=this.initializeStats()}async initialize(){if(this.model)return;let e=performance.now();if(this.config.onnxEnabled){let n=this.config.quantization==="none"?"fp32":this.config.quantization==="fp16"?"fp16":this.config.quantization==="int8"?"int8":"q8",r;try{({pipeline:r}=await import("./transformers-3YFW3EUO.js"))}catch(i){throw new Error(`Local (in-process) embeddings require the optional dependency "@huggingface/transformers", which is not installed. Either run \`npm install @huggingface/transformers\`, or configure an embedding endpoint (e.g. Cognitum /v1/embeddings) so the local backend is not needed. Underlying import error: ${i instanceof Error?i.message:String(i)}`)}this.model=await r("feature-extraction",this.config.model,{dtype:n,progress_callback:i=>{i.status==="progress"&&typeof i.progress=="number"&&console.log(`Downloading model: ${(i.progress*100).toFixed(0)}%`)}})}let t=performance.now()-e;console.log(`Model loaded in ${t.toFixed(2)}ms`)}async embed(e,t={}){let n=performance.now(),r=t.namespace||"text";if(t.cache!==!1&&this.config.cacheEnabled){let c=this.cache.get(e,r);if(c)return this.stats.cacheHits++,c;this.stats.cacheMisses++}await this.initialize();let i;if(this.model){let c=await this.model(e,{pooling:"mean",normalize:!0});i=Array.from(c.data)}else throw new Error("Model not initialized");let o=i;if(t.quantization||this.config.quantization){let c=t.quantization||this.config.quantization;o=this.quantize(i,c)}let s={vector:o,dimension:this.config.dimension,namespace:r,text:e,timestamp:Date.now(),quantization:t.quantization||this.config.quantization,metadata:t?.metadata};t.cache!==!1&&this.config.cacheEnabled&&this.cache.set(e,s,r);let a=performance.now()-n;return this.stats.avgEmbeddingTime=(this.stats.avgEmbeddingTime*this.stats.totalEmbeddings+a)/(this.stats.totalEmbeddings+1),this.stats.totalEmbeddings++,this.stats.byNamespace[r]++,s}async embedBatch(e,t={}){let n=performance.now(),r=0,i=0,o=[];for(let a of e){let c=await this.embed(a,t);this.cache.get(a,t.namespace||"text")?r++:i++,o.push(c),t.onProgress&&t.onProgress(o.length/e.length)}let s=performance.now()-n;return{embeddings:o,totalTime:s,avgTime:s/e.length,cacheHits:r,cacheMisses:i}}async findSimilar(e,t={}){let n=t.limit||10,r=t.threshold||.7,i=typeof e=="string"?await this.embed(e,{namespace:t.namespace}):e,s=this.cache.getAll(t.namespace).map(a=>({target:a.text,score:le(i.vector,a.vector),rank:0})).filter(a=>a.score>=r).sort((a,c)=>c.score-a.score).slice(0,n);return s.forEach((a,c)=>{a.rank=c+1}),s}quantize(e,t){switch(t){case"fp16":return new Float32Array(e.map(n=>Math.fround(n)));case"int8":{let n=Math.max(...e.map(Math.abs));return new Int8Array(e.map(r=>Math.round(r/n*127)))}case"binary":{let n=new Uint8Array(Math.ceil(e.length/8));for(let r=0;r<e.length;r++)e[r]>=0&&(n[Math.floor(r/8)]|=1<<r%8);return n}default:return e}}getStats(){let e=this.cache.getStats();return{...this.stats,cacheHitRate:this.stats.cacheHits+this.stats.cacheMisses>0?this.stats.cacheHits/(this.stats.cacheHits+this.stats.cacheMisses):0,memoryUsage:e.memoryUsage,memoryReduction:this.calculateMemoryReduction()}}calculateMemoryReduction(){switch(this.config.quantization){case"fp16":return 50;case"int8":return 75;case"binary":return 97;default:return 0}}initializeStats(){return{totalEmbeddings:0,byNamespace:{text:0,code:0,test:0,coverage:0,defect:0,experiences:0},cacheHits:0,cacheMisses:0,cacheHitRate:0,avgEmbeddingTime:0,memoryUsage:0,memoryReduction:0,indexSize:0,indexBuildTime:0}}resetStats(){this.stats=this.initializeStats(),this.cache.resetStats()}async clear(){this.cache.clear(),this.model=null}};z();k();P();ee();v();import{resolve as ze,dirname as je}from"path";import{fileURLToPath as Fe}from"url";var be=b.create("sync-embedding-generator"),We=Fe(import.meta.url),Ue=je(We),q=class{generator;dbPath;initialized=!1;constructor(e){this.dbPath=e||ze(Ue,"../../../../.agentic-qe/memory.db"),this.generator=new Z({model:"Xenova/all-MiniLM-L6-v2",dimension:384,cacheEnabled:!0,onnxEnabled:!0})}async initialize(){this.initialized||(await this.generator.initialize(),this.initialized=!0,console.log("[SyncEmbedding] Model initialized"))}async generateForPattern(e){await this.initialize();let t=this.extractText(e),n=await this.generator.embed(t,{namespace:"text"});return{id:e.id,embedding:Array.isArray(n.vector)?n.vector:Array.from(n.vector),text:t,dimension:n.dimension,generatedAt:new Date}}async generateForAllPatterns(e="patterns",t={}){let n=Date.now(),r={totalPatterns:0,patternsWithEmbeddings:0,patternsGenerated:0,patternsSkipped:0,errors:[],durationMs:0};await this.initialize();let i=T(this.dbPath);try{i.prepare(`PRAGMA table_info(${w(e)})`).all().some(h=>h.name==="embedding")||(i.prepare(`ALTER TABLE ${w(e)} ADD COLUMN embedding TEXT`).run(),console.log(`[SyncEmbedding] Added embedding column to ${e}`));let a=w(e),c=t.force?`SELECT * FROM ${a}`:`SELECT * FROM ${a} WHERE embedding IS NULL OR embedding = ''`,u=i.prepare(c).all();r.totalPatterns=u.length,t.verbose&&console.log(`[SyncEmbedding] Processing ${u.length} patterns from ${e}`);let p=i.prepare(`SELECT COUNT(*) as count FROM ${a} WHERE embedding IS NOT NULL AND embedding != ''`).get();r.patternsWithEmbeddings=p.count;let m=i.prepare(`UPDATE ${a} SET embedding = ? WHERE id = ?`),g=t.batchSize||50;for(let h=0;h<u.length;h+=g){let y=u.slice(h,Math.min(h+g,u.length));for(let f of y)try{let S=await this.generateForPattern(f),R=JSON.stringify(S.embedding);m.run(R,f.id),r.patternsGenerated++,t.verbose&&r.patternsGenerated%10===0&&console.log(`[SyncEmbedding] Generated ${r.patternsGenerated}/${u.length}`)}catch(S){let R=d(S);r.errors.push(`Pattern ${f.id}: ${R}`),r.patternsSkipped++}}return r.durationMs=Date.now()-n,t.verbose&&(console.log(`[SyncEmbedding] Completed: ${r.patternsGenerated} generated, ${r.patternsSkipped} skipped`),console.log(`[SyncEmbedding] Duration: ${r.durationMs}ms`)),r}finally{i.close()}}async findSimilarPatterns(e,t={}){await this.initialize();let n=t.limit||10,r=t.threshold||.5,i=t.tableName||"patterns",o=await this.generator.embed(e,{namespace:"text"}),s=Array.isArray(o.vector)?o.vector:Array.from(o.vector),a=T(this.dbPath,{readonly:!0});try{let c=a.prepare(`SELECT * FROM ${w(i)} WHERE embedding IS NOT NULL AND embedding != ''`).all(),u=[];for(let p of c)try{let m=typeof p.embedding=="string"?_(p.embedding):p.embedding;if(Array.isArray(m)&&m.length===s.length){let g=this.cosineSimilarity(s,m);g>=r&&u.push({pattern:p,similarity:g})}}catch(m){be.debug("Invalid embedding in search pattern",{error:m instanceof Error?m.message:String(m)})}return u.sort((p,m)=>m.similarity-p.similarity).slice(0,n)}finally{a.close()}}extractText(e){let t=[];if(e.pattern&&t.push(e.pattern),e.content)try{let r=typeof e.content=="string"?_(e.content):e.content;typeof r=="object"?(r.description&&t.push(r.description),r.name&&t.push(r.name),r.summary&&t.push(r.summary),r.text&&t.push(r.text)):typeof r=="string"&&t.push(r)}catch(r){be.debug("Pattern content is not JSON, using as string",{error:r instanceof Error?r.message:String(r)}),t.push(String(e.content))}return e.type&&t.push(`type:${e.type}`),e.domain&&t.push(`domain:${e.domain}`),t.join(" ").trim().substring(0,512)}cosineSimilarity(e,t){let n=0,r=0,i=0;for(let s=0;s<e.length;s++)n+=e[s]*t[s],r+=e[s]*e[s],i+=t[s]*t[s];let o=Math.sqrt(r)*Math.sqrt(i);return o===0?0:n/o}getStats(){return this.generator.getStats()}async clear(){await this.generator.clear(),this.initialized=!1}};function Se(l){return new q(l)}export{A as a,Re as b,x as c,W as d,re as e,U as f,ne as g,$ as h,ke as i,B as j,M as k,J as l,O as m,Q as n,ie as o,V as p,oe as q,H as r,se as s,Ne as t,Oe as u,X as v,ce as w,De as x,qe as y,q as z,Se as A};
|
|
@@ -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.13.
|
|
2
|
-
import{b as m,c as y}from"./chunk-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{b as m,c as y}from"./chunk-6KI6LAAZ.js";import{e as S,f as A}from"./chunk-HQWFZQMJ.js";import{a as R,b as g,c as v}from"./chunk-EDRPTLAX.js";import{a as p,g as b}from"./chunk-ZMYV4R32.js";y();var s=null,f=!1;function w(t){s=t,f=t!==null}var E=(()=>{let t=process.env.AQE_RVF_SIZE_GUARD_BYTES,r=t?Number(t):NaN;return Number.isFinite(r)&&r>0?r:256*1024*1024})(),C=(()=>{let t=process.env.AQE_RVF_DEAD_RATIO_THRESHOLD,r=t?Number(t):NaN;return Number.isFinite(r)&&r>0&&r<=1?r:.3})();function _(t=".agentic-qe",r=384){if(f)return s;f=!0;try{let{isRvfNativeAvailable:e,createRvfStore:o,openRvfStore:i}=(A(),b(S));if(!e())return console.warn("[RVF] Native bindings unavailable \u2014 agent branching and dream COW disabled. Install @ruvector/rvf-node to enable."),null;let l=p("path"),c=l.isAbsolute(t)?t:l.join(process.env.AQE_PROJECT_ROOT??m(),t),u=l.join(c,"patterns.rvf");return s=$(i,o,u,r),N(s,u),s}catch(e){return console.warn("[RVF] Shared adapter init failed:",e instanceof Error?e.message:e),null}}function $(t,r,e,o){let i=()=>{try{return{adapter:t(e),err:null}}catch(n){return{adapter:null,err:n}}},l=n=>{let a=n instanceof Error?n.message:String(n);return a.includes("LockHeld")||a.includes("0x0300")},{adapter:c,err:u}=i();if(!c&&l(u))try{let n=p("fs"),a=`${e}.lock`;n.existsSync(a)&&g(e)?console.warn(`[RVF] ${e} is locked by a live process (pid ${R(e)}) \u2014 not breaking the lock; degrading to SQLite for this run.`):n.existsSync(a)&&(n.unlinkSync(a),console.warn(`[RVF] Removed stale lock file at ${a} (prior process exited without closing). Retrying open. If you see this repeatedly under live concurrency, file an issue.`),{adapter:c,err:u}=i())}catch(n){process.env.DEBUG&&console.debug("[RVF] stale-lock recovery failed:",n instanceof Error?n.message:n)}if(c){let n=c.dimension();if(n===o)return c;console.warn(`[RVF] patterns.rvf dimension mismatch: file=${n} requested=${o} \u2014 closing and degrading. Delete the .rvf file to recreate at the requested dim.`);try{c.close()}catch{}throw new Error(`RVF dimension mismatch (file=${n}, requested=${o})`)}try{return r(e,o)}catch(n){try{let a=t(e);if(a.dimension()!==o){try{a.close()}catch{}throw new Error(`RVF dimension mismatch after race (file=${a.dimension()}, requested=${o})`)}return a}catch{if(v(e,n instanceof Error?n.message:String(n)))return r(e,o);throw n instanceof Error?n:new Error(String(n))}}}function h(t,r){if(r?.force)return{shouldCompact:!0,trigger:"force"};let e=r?.sizeGuardBytes??E,o=r?.deadRatioThreshold??C;return t.fileSizeBytes>=e?{shouldCompact:!0,trigger:"size-guard"}:(t.deadSpaceRatio??0)>=o?{shouldCompact:!0,trigger:"dead-ratio"}:{shouldCompact:!1,trigger:"none"}}function k(t){if(!s)return null;let r;try{r=s.status()}catch{return null}let e=h(r,t);if(!e.shouldCompact)return null;let o=r.fileSizeBytes,i;try{i=s.compact()}catch{return null}return i?((i.bytesReclaimed>0||i.segmentsCompacted>0)&&console.log(`[RVF] compacted patterns.rvf: reclaimed ${d(i.bytesReclaimed)} (${i.segmentsCompacted} segments, fileSize ${d(o)} \u2192 ${d(Math.max(0,o-i.bytesReclaimed))}, trigger: ${e.trigger})`),i):null}function N(t,r){try{let e=t.status(),o=h(e);if(!o.shouldCompact)return null;let i=t.compact();return i&&(i.bytesReclaimed>0||i.segmentsCompacted>0)&&console.log(`[RVF] boot-time compact (${r}): reclaimed ${d(i.bytesReclaimed)} from ${i.segmentsCompacted} segments (trigger: ${o.trigger})`),i}catch(e){return process.env.DEBUG&&console.debug("[RVF] boot-time compact guard skipped:",e instanceof Error?e.message:e),null}}function d(t){if(!Number.isFinite(t)||t<0)return`${t}B`;let r=["B","KB","MB","GB","TB"],e=0,o=t;for(;o>=1024&&e<r.length-1;)o/=1024,e++;return`${o.toFixed(e===0?0:1)}${r[e]}`}function T(){if(s){try{s.close()}catch{}s=null}f=!1}export{w as a,_ as b,h as c,k as d,N as e,T as f};
|
|
@@ -1,4 +1,4 @@
|
|
|
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.13.
|
|
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.13.12");process.exit(0)}
|
|
2
2
|
var P="quality-daemon",x=class{constructor(e){this.backend=e}backend;async get(e){return this.backend.kvGet(e,P)}async set(e,t){await this.backend.kvSet(e,t,P)}async search(e){return this.backend.kvSearch(e,P)}};import{cpus as Z,freemem as ee,totalmem as te,loadavg as ie}from"os";var g=class{queues={now:[],next:[],later:[]};_maxSize;constructor(e=1e3){this._maxSize=e}enqueue(e){return this.size>=this._maxSize?!1:(this.queues[e.priority].push(e),!0)}dequeue(){let e=Date.now();for(let t of["now","next","later"]){let i=this.queues[t];for(;i.length>0;){let o=i.shift();if(!(o.ttlMs&&e-o.createdAt>o.ttlMs))return o}}}peek(){let e=Date.now();for(let t of["now","next","later"]){let i=this.queues[t];for(let o of i)if(!o.ttlMs||e-o.createdAt<=o.ttlMs)return o}}drainPriority(e){let t=this.queues[e].splice(0),i=Date.now();return t.filter(o=>!o.ttlMs||i-o.createdAt<=o.ttlMs)}pruneExpired(){let e=0,t=Date.now();for(let i of["now","next","later"]){let o=this.queues[i].length;this.queues[i]=this.queues[i].filter(r=>!r.ttlMs||t-r.createdAt<=r.ttlMs),e+=o-this.queues[i].length}return e}get size(){return this.queues.now.length+this.queues.next.length+this.queues.later.length}get depths(){return{now:this.queues.now.length,next:this.queues.next.length,later:this.queues.later.length}}get isEmpty(){return this.size===0}clear(){this.queues.now=[],this.queues.next=[],this.queues.later=[]}};import{watch as G}from"fs";import{execFile as Q}from"child_process";import{promisify as $}from"util";import{resolve as q,join as H}from"path";import{existsSync as L,readFileSync as U}from"fs";var _=$(Q),z={repoRoot:process.cwd(),debounceMs:500,maxChangedFiles:200,pollIntervalMs:5e3},p=class{constructor(e,t){this.queue=e;this.options={...z,...t}}queue;watcher;pollTimer;options;lastKnownHeads=new Map;debounceTimer;_running=!1;_polling=!1;get running(){return this._running}async start(){if(this._running)return;let e=q(this.options.repoRoot,".git","refs","heads");if(!L(e))throw new Error(`Git refs directory not found: ${e}`);await this.snapshotHeads(),process.platform==="darwin"||process.platform==="win32"?this.watcher=G(e,{recursive:!0},(i,o)=>{o&&this.handleRefChange(o)}):(this.pollTimer=setInterval(()=>{this.poll().catch(i=>{console.debug("[GitWatcher] Poll error:",i)})},this.options.pollIntervalMs),this.pollTimer.unref?.()),this._running=!0}stop(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=void 0),this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=void 0),this.watcher&&(this.watcher.close(),this.watcher=void 0),this._running=!1}async poll(){if(this._polling)return[];this._polling=!0;let e=[];try{let{stdout:t}=await _("git",["for-each-ref","--format=%(refname:short) %(objectname:short)","refs/heads/"],{cwd:this.options.repoRoot});for(let i of t.trim().split(`
|
|
3
3
|
`)){if(!i)continue;let[o,r]=i.split(" "),n=this.lastKnownHeads.get(o);n&&n!==r&&(e.push(o),await this.enqueueCommitAnalysis(o,r)),this.lastKnownHeads.set(o,r)}}catch{}finally{this._polling=!1}return e}handleRefChange(e){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.processRefChange(e).catch(t=>{console.debug("[GitWatcher] Error processing ref change:",t)})},this.options.debounceMs)}async processRefChange(e){let t=e.replace(/\\/g,"/"),i=q(this.options.repoRoot,".git","refs","heads"),o=H(i,e),r;try{r=U(o,"utf-8").trim()}catch{return}this.lastKnownHeads.get(t)!==r&&(this.lastKnownHeads.set(t,r),await this.enqueueCommitAnalysis(t,r))}async enqueueCommitAnalysis(e,t){let i=[];try{let{stdout:n}=await _("git",["diff-tree","--no-commit-id","--name-only","-r",t],{cwd:this.options.repoRoot});i=n.trim().split(`
|
|
4
4
|
`).filter(Boolean).slice(0,this.options.maxChangedFiles)}catch{}let o={type:"git_commit",branch:e,commitHash:t,changedFiles:i},r={id:`git-${t}-${Date.now()}`,priority:"next",payload:o,createdAt:Date.now(),source:"git-watcher",ttlMs:300*1e3};this.queue.enqueue(r)}async snapshotHeads(){try{let{stdout:e}=await _("git",["for-each-ref","--format=%(refname:short) %(objectname:short)","refs/heads/"],{cwd:this.options.repoRoot});for(let t of e.trim().split(`
|
|
@@ -1,3 +1,3 @@
|
|
|
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.13.
|
|
2
|
-
import{b as c,d as p}from"./chunk-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{b as c,d as p}from"./chunk-VA2ORJB5.js";import{a as f}from"./chunk-ZMYV4R32.js";p();import{existsSync as l,readFileSync as i}from"node:fs";import{join as a}from"node:path";import{execSync as m}from"node:child_process";var s=null,d=0,g=6e4;function S(){s=null,d=0}function b(e){if(s&&Date.now()-d<g)return s;let n=w(e);return s=n,d=Date.now(),n}function w(e){let n=h(e);if(n)return n;let r=v(e);if(r)return r;let t=k(e);return t||{available:!1}}function h(e){let n=a(e,".mcp.json");if(l(n))try{let o=c(i(n,"utf-8"));if(o.mcpServers?.ruflo||o.mcpServers?.["claude-flow"])return{available:!0,method:"mcp-config"}}catch{}let r=a(e,".claude","mcp.json");if(l(r))try{let o=c(i(r,"utf-8"));if(o.mcpServers?.ruflo||o.mcpServers?.["claude-flow"])return{available:!0,method:"mcp-config"}}catch{}let t=a(e,".claude","settings.json");if(l(t))try{let o=c(i(t,"utf-8")),u=o.mcpServers||o.mcp?.servers||{};if(u.ruflo||u["claude-flow"]||u["@anthropic/claude-flow"])return{available:!0,method:"mcp-config"}}catch{}return null}function v(e){let n=a(e,"package.json");if(!l(n))return null;try{let r=c(i(n,"utf-8")),t={...r.dependencies,...r.devDependencies};if(t.ruflo||t["@claude-flow/cli"]||t["claude-flow"])return{available:!0,method:"npm-dependency"}}catch{}return null}function k(e){for(let n of["ruflo","@claude-flow/cli"])try{return{available:!0,method:"npx-cached",version:m(`npx --no-install ${n} --version`,{encoding:"utf-8",timeout:5e3,cwd:e,stdio:["pipe","pipe","pipe"]}).trim().match(/\d+\.\d+\.\d+[\w.-]*/)?.[0]}}catch{}return null}function x(){for(let e of["ruflo","@claude-flow/cli"])try{return f.resolve(`${e}/package.json`),e}catch{}return"ruflo"}function P(){return[" Claude Flow not found \u2014 running in standalone mode.",""," Claude Flow adds optional features:"," - SONA trajectory tracking (reinforcement learning)"," - 3-tier model routing (haiku / sonnet / opus)"," - Codebase pretrain analysis",""," To install later:"," npm install -g ruflo"," claude mcp add ruflo -- npx -y ruflo@3.5.18"," aqe init --auto --with-claude-flow"].join(`
|
|
3
3
|
`)}export{S as a,b,x as c,P as d};
|
|
@@ -1,4 +1,4 @@
|
|
|
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.13.
|
|
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.13.12");process.exit(0)}
|
|
2
2
|
var h={0:"sqlite-only",1:"hybrid",2:"dual-write-sqlite-primary",3:"dual-write-rvf-primary",4:"rvf-primary"},g=class{config;db=null;rvfStore=null;totalWrites=0;totalReads=0;rvfWriteFailures=0;rvfReadFailures=0;fallbacksUsed=0;sqliteLatencies=[];rvfLatencies=[];sqliteWriteLatencies=[];rvfWriteLatencies=[];constructor(e){this.config={rvfPath:".agentic-qe/patterns.rvf",dimensions:384,enableFallback:!0,...e}}setSqliteDb(e){this.db=e}setRvfStore(e){this.rvfStore=e}get stage(){return this.config.stage}setStage(e){this.config={...this.config,stage:e}}write(e,t){this.totalWrites++;let s={sqliteSuccess:!1,rvfSuccess:!1,stage:this.config.stage,fallbackUsed:!1},n=this.config.stage<4,o=this.config.stage>=2;if(n&&this.db){let i=performance.now();try{let r=Buffer.from(t instanceof Float32Array?t.buffer:new Float32Array(t).buffer);this.db.prepare(`
|
|
3
3
|
INSERT INTO qe_pattern_embeddings (pattern_id, embedding, dimension, model, created_at)
|
|
4
4
|
VALUES (?, ?, ?, 'all-MiniLM-L6-v2', datetime('now'))
|
|
@@ -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.13.12");process.exit(0)}
|
|
2
|
+
import{a as d,b as n}from"./chunk-UQ4UCHO7.js";var o=new Map,u=new Set(["anthropic"]),s=/^[a-z0-9][a-z0-9-]{0,62}$/;function g(e){if(typeof e!="string"||e.trim().length===0)return"provider type must be a non-empty string";if(e!==e.toLowerCase())return`provider type "${e}" must be lowercase (AQE_LLM_PROVIDER is matched case-insensitively)`;if(!s.test(e))return`provider type "${e}" must match ${s.source} (lowercase alphanumeric and dashes)`;if(d(e))return`provider type "${e}" is built in and cannot be overridden`;if(u.has(e))return`provider type "${e}" is reserved`}function c(e,r,t={}){let i=g(e);if(i)throw n(i,"INVALID_REGISTRATION",{retryable:!1});if(typeof r!="function")throw n(`provider "${e}" must be registered with a factory function`,"INVALID_REGISTRATION",{retryable:!1});o.set(e,{...t,type:e,factory:r,source:t.source??"api"})}function v(e,r,t={}){try{c(e,r,t);return}catch(i){return i instanceof Error?i.message:String(i)}}function y(e){return o.delete(e)}function P(e){return o.has(e)}function R(e){return o.get(e)}function L(){return[...o.keys()]}var l=["isAvailable","healthCheck","generate","complete","getConfig","getSupportedModels","getCostPerToken","dispose"];function f(e,r){if(!r||typeof r!="object")return`provider "${e}" factory returned ${r===null?"null":typeof r}, expected an LLMProvider`;let t=r,i=l.filter(a=>typeof t[a]!="function");if(i.length>0)return`provider "${e}" is missing required LLMProvider method(s): ${i.join(", ")}`;if(typeof t.type!="string"||t.type.length===0)return`provider "${e}" must expose a non-empty \`type\``;if(t.type!==e)return`provider "${e}" reports type "${t.type}" \u2014 a provider must not claim an identity other than the one it was registered under`}function m(e){let r=o.get(e);if(!r)throw n(`Unknown provider type: ${e}`,"PROVIDER_UNAVAILABLE",{retryable:!1});let t=r.factory(r.config),i=f(e,t);if(i)throw n(i,"INVALID_REGISTRATION",{retryable:!1});return t}function h(e){let r=o.get(e);if(r)return{mode:r.billingMode??"metered-api",source:r.source,detail:r.sourceDetail}}export{g as a,v as b,y as c,P as d,R as e,L as f,m as g,h};
|
|
@@ -1,6 +1,6 @@
|
|
|
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.13.
|
|
2
|
-
import{e as x,f as C,j as y,k as R,q as F}from"./chunk-
|
|
3
|
-
Caused by: ${s.stack}`)}code;cause},c=class extends o{constructor(e="Vibium MCP server is unavailable",t){super(e,"VIBIUM_UNAVAILABLE",t),this.name="VibiumUnavailableError"}},f=class extends o{constructor(e="Browser operation timed out",t){super(e,"VIBIUM_TIMEOUT",t),this.name="VibiumTimeoutError"}},g=class extends o{selector;constructor(e,t){super(`Element not found: ${e}`,"ELEMENT_NOT_FOUND",t),this.name="VibiumElementNotFoundError",this.selector=e}},l=class extends o{constructor(e="Failed to connect to browser",t){super(e,"CONNECTION_ERROR",t),this.name="VibiumConnectionError"}},p=class extends o{url;statusCode;constructor(e,t,r){let s=t?`Navigation failed: ${e} (HTTP ${t})`:`Navigation failed: ${e}`;super(s,"NAVIGATION_ERROR",r),this.name="VibiumNavigationError",this.url=e,this.statusCode=t}},m=class extends o{constructor(e="Failed to capture screenshot",t){super(e,"SCREENSHOT_ERROR",t),this.name="VibiumScreenshotError"}},b=class extends o{action;selector;constructor(e,t,r){super(`Failed to ${e} element: ${t}`,"INTERACTION_ERROR",r),this.name="VibiumInteractionError",this.action=e,this.selector=t}}});import{randomUUID as _}from"crypto";async function V(){if(v!==null)return v;try{return v=(await import("./vibium-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{e as x,f as C,j as y,k as R,q as F}from"./chunk-ZSAGRDXA.js";import{b as I,c as k}from"./chunk-L3GBNX7B.js";import{c as w}from"./chunk-ZMYV4R32.js";var P,S=w(()=>{"use strict";P={enabled:!0,headless:!0,timeout:3e4,retryAttempts:3,fallbackEnabled:!0,browserType:"chromium",viewport:{width:1280,height:720},userAgent:"",devtools:!1,slowMo:0,screenshotDir:".agentic-qe/screenshots"}});function B(i){return i instanceof o}function a(i,e="Unknown Vibium error"){return B(i)?i:i instanceof Error?new o(i.message||e,"UNKNOWN_ERROR",i):new o(typeof i=="string"?i:e,"UNKNOWN_ERROR")}var o,c,f,g,l,p,m,b,A=w(()=>{"use strict";o=class i extends Error{constructor(t,r,s){super(t);this.code=r;this.cause=s;this.name="VibiumError",Error.captureStackTrace&&Error.captureStackTrace(this,i),s?.stack&&(this.stack+=`
|
|
3
|
+
Caused by: ${s.stack}`)}code;cause},c=class extends o{constructor(e="Vibium MCP server is unavailable",t){super(e,"VIBIUM_UNAVAILABLE",t),this.name="VibiumUnavailableError"}},f=class extends o{constructor(e="Browser operation timed out",t){super(e,"VIBIUM_TIMEOUT",t),this.name="VibiumTimeoutError"}},g=class extends o{selector;constructor(e,t){super(`Element not found: ${e}`,"ELEMENT_NOT_FOUND",t),this.name="VibiumElementNotFoundError",this.selector=e}},l=class extends o{constructor(e="Failed to connect to browser",t){super(e,"CONNECTION_ERROR",t),this.name="VibiumConnectionError"}},p=class extends o{url;statusCode;constructor(e,t,r){let s=t?`Navigation failed: ${e} (HTTP ${t})`:`Navigation failed: ${e}`;super(s,"NAVIGATION_ERROR",r),this.name="VibiumNavigationError",this.url=e,this.statusCode=t}},m=class extends o{constructor(e="Failed to capture screenshot",t){super(e,"SCREENSHOT_ERROR",t),this.name="VibiumScreenshotError"}},b=class extends o{action;selector;constructor(e,t,r){super(`Failed to ${e} element: ${t}`,"INTERACTION_ERROR",r),this.name="VibiumInteractionError",this.action=e,this.selector=t}}});import{randomUUID as _}from"crypto";async function V(){if(v!==null)return v;try{return v=(await import("./vibium-W4XQMPJP.js")).browser,O=!0,v}catch(i){return console.warn("[Vibium] Failed to load vibium package:",i),O=!1,null}}async function T(i,e,t){let r;for(let s=1;s<=e;s++)try{return await i()}catch(n){if(r=I(n),s<e){let u=Math.min(100*Math.pow(2,s-1),2e3);await new Promise(d=>setTimeout(d,u))}}throw new o(`${t} failed after ${e} attempts`,"RETRY_EXHAUSTED",r)}async function h(i,e){let t=Date.now();try{let r=await i();return R()&&console.log(`[Vibium] ${e}: ${Date.now()-t}ms`),r}catch(r){throw R()&&console.log(`[Vibium] ${e} failed: ${Date.now()-t}ms`,r),r}}var v,O,E,N,M=w(()=>{S();A();k();F();v=null,O=!1;E=class{config;currentSession=null;lastHealthCheck=null;_initialized=!1;_available=null;vibeInstance=null;constructor(e={}){this.config={...P,...e}}async isAvailable(){if(!this.config.enabled)return!1;if(this._available!==null)return this._available;try{let e=await V();return this._available=e!==null,this._available}catch{return this._available=!1,!1}}async getHealth(){let e=new Date;if(!this.config.enabled)return{status:"unavailable",features:["fallback-only"],lastChecked:e,error:"Vibium is disabled by configuration",sessionActive:!1};try{await this.isAvailable()?this.lastHealthCheck={status:this.vibeInstance?"connected":"disconnected",version:"0.1.2",browserType:this.config.browserType,features:["browser-launch","navigation","element-interaction","screenshots","script-evaluation","accessibility-testing"],latencyMs:10,lastChecked:e,sessionActive:this.vibeInstance!==null}:this.lastHealthCheck={status:"unavailable",features:["fallback-only"],lastChecked:e,error:"Vibium package not available - install with: npm install vibium",sessionActive:!1}}catch(t){this.lastHealthCheck={status:"error",features:["fallback-only"],lastChecked:e,error:t instanceof Error?t.message:"Unknown error",sessionActive:!1}}return this.lastHealthCheck}async getSession(){return this.currentSession}async launch(e){if(!x())return{success:!1,error:new c("Browser mode is disabled by feature flags")};let t=async()=>{let r=await V();if(!r)throw new c("Vibium package not available. Install with: npm install vibium");let s=e?.headless??this.config.headless;this.vibeInstance=await r.launch({headless:s});let n={id:this.generateSessionId(),browserType:this.config.browserType,launchedAt:new Date,status:"connected",viewport:e?.viewport??this.config.viewport,headless:s};return this.currentSession=n,n};try{return{success:!0,value:y()?await T(()=>h(t,"browser_launch"),this.config.retryAttempts,"browser_launch"):await h(t,"browser_launch")}}catch(r){return{success:!1,error:a(r,"Failed to launch browser")}}}async quit(){if(!this.vibeInstance)return{success:!1,error:new l("No active browser session")};let e=async()=>{this.vibeInstance&&(await this.vibeInstance.quit(),this.vibeInstance=null),this.currentSession=null};try{return await h(e,"browser_quit"),{success:!0,value:void 0}}catch(t){return{success:!1,error:a(t,"Failed to quit browser")}}}async navigate(e){this.ensureSession();let t=async()=>{let r=Date.now();await this.vibeInstance.go(e.url);let s="";try{s=await this.vibeInstance.evaluate("document.title")}catch{s="Unknown"}let n={url:e.url,statusCode:200,title:s,durationMs:Date.now()-r,success:!0};return this.currentSession&&(this.currentSession.currentUrl=e.url),n};try{return{success:!0,value:y()?await T(()=>h(t,"page_navigate"),this.config.retryAttempts,"page_navigate"):await h(t,"page_navigate")}}catch(r){return{success:!1,error:new p(e.url,void 0,r instanceof Error?r:void 0)}}}async getPageInfo(){this.ensureSession();try{let e=await this.vibeInstance.evaluate("window.location.href"),t=await this.vibeInstance.evaluate("document.title");return{success:!0,value:{url:e,title:t,viewport:this.config.viewport,loadState:"loaded"}}}catch(e){return{success:!1,error:a(e,"Failed to get page info")}}}async goBack(){this.ensureSession();try{return await this.vibeInstance.evaluate("window.history.back()"),{success:!0,value:void 0}}catch(e){return{success:!1,error:a(e,"Failed to go back")}}}async goForward(){this.ensureSession();try{return await this.vibeInstance.evaluate("window.history.forward()"),{success:!0,value:void 0}}catch(e){return{success:!1,error:a(e,"Failed to go forward")}}}async reload(){this.ensureSession();try{return await this.vibeInstance.evaluate("window.location.reload()"),{success:!0,value:void 0}}catch(e){return{success:!1,error:a(e,"Failed to reload page")}}}async findElement(e){this.ensureSession();try{let t=await this.vibeInstance.find(e.selector,{timeout:e.timeout??this.config.timeout});return{success:!0,value:{selector:e.selector,tagName:t.info.tag,textContent:t.info.text,attributes:{},boundingBox:t.info.box,visible:!0,enabled:!0}}}catch(t){return{success:!1,error:new g(e.selector,t instanceof Error?t:void 0)}}}async findElements(e){this.ensureSession();try{let t=e.selector.replace(/\\/g,"\\\\").replace(/'/g,"\\'");return{success:!0,value:(await this.vibeInstance.evaluate(`
|
|
4
4
|
Array.from(document.querySelectorAll('${t}'))
|
|
5
5
|
.map(el => ({
|
|
6
6
|
tag: el.tagName.toLowerCase(),
|
|
@@ -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.13.
|
|
2
|
-
import{a as w,b as A,c as O,e as D,f as z}from"./chunk-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{a as w,b as A,c as O,e as D,f as z}from"./chunk-KRZYWVS3.js";import{b as S,d as $}from"./chunk-VA2ORJB5.js";import{a as N,c as F}from"./chunk-L3GBNX7B.js";import{i as v}from"./chunk-52VGZJSD.js";import*as I from"node:path";z();$();var P=["function","module","test","file","class"],L=["calls","imports","tests","depends_on","covers"],b=class{ensureSchema(e){e.transaction(()=>{e.exec(w),e.exec(A),e.exec(O)})()}schemaExists(e){return D(e)}getNodeTypes(){return P}getEdgeTypes(){return L}isValidNodeType(e){return P.includes(e)}isValidEdgeType(e){return L.includes(e)}getStats(e){if(!this.schemaExists(e))return{nodeCount:0,edgeCount:0};let t=e.prepare("SELECT COUNT(*) as count FROM hypergraph_nodes").get().count,r=e.prepare("SELECT COUNT(*) as count FROM hypergraph_edges").get().count;return{nodeCount:t,edgeCount:r}}dropSchema(e){let t=e.prepare("SELECT COUNT(*) as cnt FROM hypergraph_nodes").get()?.cnt??0,r=e.prepare("SELECT COUNT(*) as cnt FROM hypergraph_edges").get()?.cnt??0;if(t>0||r>0)throw new Error(`REFUSING to drop hypergraph schema: tables contain data (${t} nodes, ${r} edges). Backup and manually drop if needed.`);e.transaction(()=>{e.exec("DROP TABLE IF EXISTS hypergraph_edges"),e.exec("DROP TABLE IF EXISTS hypergraph_nodes")})()}};function C(n){return{id:n.id,type:n.type,name:n.name,file_path:n.filePath??null,line_start:n.lineStart??null,line_end:n.lineEnd??null,complexity:n.complexity??null,coverage:n.coverage??null,metadata:n.metadata?JSON.stringify(n.metadata):null,embedding:n.embedding?U(n.embedding):null}}function T(n){return{id:n.id,type:n.type,name:n.name,filePath:n.file_path??void 0,lineStart:n.line_start??void 0,lineEnd:n.line_end??void 0,complexity:n.complexity??void 0,coverage:n.coverage??void 0,metadata:n.metadata?S(n.metadata):void 0,embedding:n.embedding?W(n.embedding):void 0,createdAt:n.created_at,updatedAt:n.updated_at}}function M(n){return{id:n.id,source_id:n.sourceId,target_id:n.targetId,type:n.type,weight:n.weight??1,properties:n.properties?JSON.stringify(n.properties):null}}function H(n){return{id:n.id,sourceId:n.source_id,targetId:n.target_id,type:n.type,weight:n.weight,properties:n.properties?S(n.properties):void 0,createdAt:n.created_at}}function x(n,e,t){return`${n}--${t}-->${e}`}function U(n){let e=Buffer.alloc(n.length*4);for(let t=0;t<n.length;t++)e.writeFloatLE(n[t],t*4);return e}function W(n){let e=[],t=n.length/4;for(let r=0;r<t;r++)e.push(n.readFloatLE(r*4));return e}F();var B={maxTraversalDepth:10,maxQueryResults:1e3,enableVectorSearch:!1},R=class{config;schemaManager;initialized=!1;constructor(e){this.config={...B,...e},this.schemaManager=new b}async initialize(){this.initialized||(this.schemaManager.ensureSchema(this.config.db),this.initialized=!0)}isInitialized(){return this.initialized}async addNode(e){this.ensureInitialized();let t=v(),r={id:t,...e},s=C(r);return this.config.db.prepare(`
|
|
3
3
|
INSERT INTO hypergraph_nodes (id, type, name, file_path, line_start, line_end, complexity, coverage, metadata, embedding)
|
|
4
4
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
5
5
|
`).run(s.id,s.type,s.name,s.file_path,s.line_start,s.line_end,s.complexity,s.coverage,s.metadata,s.embedding),t}async addEdge(e){this.ensureInitialized();let t=x(e.sourceId,e.targetId,e.type),r={id:t,...e},s=M(r);return this.config.db.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.13.
|
|
2
|
-
import{c as s}from"./chunk-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{c as s}from"./chunk-ZMYV4R32.js";function A(r=l,o=process.env){let t=o.AQE_OLLAMA_URL??o.OLLAMA_URL??r,e=t.length;for(;e>0&&t.charCodeAt(e-1)===47;)e-=1;return t.slice(0,e)}var l,n=s(()=>{"use strict";l="http://localhost:11434"});export{A as a,n as b};
|
|
@@ -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.13.
|
|
2
|
-
import{b as A,c as D,d as V,e as E}from"./chunk-QHRMZP6J.js";import{a as v,b as G}from"./chunk-3I5ZTLFY.js";import{a as P,b as U}from"./chunk-XPUPST5T.js";import{a as x,b as $,c as H,e as w}from"./chunk-IR7FZYPO.js";import{a as k}from"./chunk-LPVHYZAE.js";import{b as F,c as J}from"./chunk-OLETDPH2.js";import{i as _}from"./chunk-4TSLLWE7.js";var N={security:{provider:"claude",model:"claude-opus-4-7",temperature:.1,maxTokens:16e3,priority:100},"test-generation":{provider:"claude",model:"claude-sonnet-4-6",temperature:.3,maxTokens:8e3,priority:90},"code-analysis":{provider:"claude",model:"claude-sonnet-4-6",temperature:.2,maxTokens:8e3,priority:85},performance:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.2,maxTokens:4e3,priority:70},documentation:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.4,maxTokens:4e3,priority:60},learning:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3,maxTokens:8e3,priority:80},coordination:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.2,maxTokens:2e3,priority:75},simple:{provider:"openai",model:"gpt-4o-mini",temperature:.3,maxTokens:2e3,priority:50},general:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3,maxTokens:4e3,priority:60}},q={"security-auditor":"security","security-architect":"security","security-scanner":"security","v3-qe-security-scanner":"security","security-manager":"security","vulnerability-scanner":"security","penetration-tester":"security","compliance-auditor":"security","threat-analyzer":"security","test-generator":"test-generation","v3-qe-test-generator":"test-generation",tester:"test-generation","tdd-specialist":"test-generation","tdd-london-swarm":"test-generation","unit-test-generator":"test-generation","integration-test-generator":"test-generation","e2e-test-generator":"test-generation","mutation-tester":"test-generation","property-based-tester":"test-generation","contract-tester":"test-generation","v3-qe-contract-tester":"test-generation","api-tester":"test-generation","visual-tester":"test-generation","v3-qe-visual-tester":"test-generation","accessibility-tester":"test-generation","code-reviewer":"code-analysis","code-analyzer":"code-analysis",reviewer:"code-analysis","v3-qe-code-intelligence":"code-analysis","v3-qe-code-analyzer":"code-analysis","coverage-analyzer":"code-analysis","v3-qe-coverage-analyzer":"code-analysis","defect-predictor":"code-analysis","v3-qe-defect-predictor":"code-analysis","static-analyzer":"code-analysis","complexity-analyzer":"code-analysis","dependency-analyzer":"code-analysis","refactoring-advisor":"code-analysis","quality-assessor":"code-analysis","v3-qe-quality-assessor":"code-analysis","test-executor":"code-analysis","v3-qe-test-executor":"code-analysis","parallel-executor":"code-analysis","flaky-test-detector":"code-analysis","test-orchestrator":"code-analysis","performance-tester":"performance","performance-engineer":"performance","perf-analyzer":"performance","performance-benchmarker":"performance","load-tester":"performance","stress-tester":"performance","v3-qe-chaos-engineer":"performance","chaos-engineer":"performance","resilience-tester":"performance","scalability-tester":"performance","api-docs":"documentation","doc-generator":"documentation","readme-generator":"documentation","changelog-generator":"documentation","specification-writer":"documentation","v3-qe-learning-optimizer":"learning","learning-optimizer":"learning","ml-developer":"learning","pattern-learner":"learning","optimization-agent":"learning","smart-agent":"learning","requirements-validator":"code-analysis","v3-qe-requirements-validator":"code-analysis","bdd-generator":"test-generation","acceptance-tester":"test-generation",coordinator:"coordination","hierarchical-coordinator":"coordination","mesh-coordinator":"coordination","adaptive-coordinator":"coordination","collective-intelligence-coordinator":"coordination","swarm-memory-manager":"coordination","byzantine-coordinator":"coordination","raft-manager":"coordination","gossip-coordinator":"coordination","consensus-builder":"coordination","crdt-synchronizer":"coordination","quorum-manager":"coordination","task-orchestrator":"coordination","memory-coordinator":"coordination",coder:"code-analysis",planner:"code-analysis",researcher:"code-analysis","backend-dev":"code-analysis","mobile-dev":"code-analysis","cicd-engineer":"code-analysis","system-architect":"code-analysis","base-template-generator":"test-generation","github-modes":"coordination","pr-manager":"coordination","code-review-swarm":"code-analysis","issue-tracker":"coordination","release-manager":"coordination","workflow-automation":"coordination","project-board-sync":"coordination","repo-architect":"code-analysis","multi-repo-swarm":"coordination","sparc-coord":"coordination","sparc-coder":"code-analysis",specification:"documentation",pseudocode:"code-analysis",architecture:"code-analysis",refinement:"code-analysis","memory-specialist":"learning","production-validator":"code-analysis"},y={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"}},X={security:y.heavyweight,"test-generation":y.standard,"code-analysis":y.standard,learning:y.standard,performance:{...y.lightweight,costSensitivity:"high"},coordination:y.lightweight,general:{...y.lightweight,requiresJsonMode:!1,latencySensitivity:"medium"},documentation:{...y.minimal,minContextSize:16e3},simple:y.minimal};function j(u){if(u in q)return q[u];let e=u.toLowerCase();return e.includes("security")||e.includes("audit")||e.includes("vulnerab")||e.includes("penetration")||e.includes("threat")||e.includes("compliance")?"security":e.includes("test-gen")||e.includes("tdd")||e.includes("unit-test")||e.includes("e2e-test")||e.includes("integration-test")||e.includes("mutation")?"test-generation":e.includes("code-")||e.includes("coverage")||e.includes("defect")||e.includes("review")||e.includes("analyzer")||e.includes("quality")?"code-analysis":e.includes("perf")||e.includes("load")||e.includes("stress")||e.includes("benchmark")||e.includes("chaos")||e.includes("resilience")?"performance":e.includes("doc")||e.includes("readme")||e.includes("changelog")||e.includes("spec")?"documentation":e.includes("learn")||e.includes("ml-")||e.includes("pattern")||e.includes("optim")?"learning":e.includes("coord")||e.includes("swarm")||e.includes("orchestrat")||e.includes("consensus")||e.includes("manager")?"coordination":"general"}var S={},W={};function Z(u,e){S={...u??{}},W={...e??{}}}function Y(u){let e=j(u),t=N[e],r=S[u];if(!r)return t;let i=r.provider!==void 0&&r.provider!==t.provider,o=r.model??(i?W[r.provider]:void 0);return{...t,...r.provider!==void 0?{provider:r.provider}:{},...o!==void 0?{model:o}:{},...r.temperature!==void 0?{temperature:r.temperature}:{},...r.maxTokens!==void 0?{maxTokens:r.maxTokens}:{},priority:r.priority??t.priority+100}}function ee(){return Object.keys(S).map(u=>{let e=Y(u);return{id:`agent-override-${u}`,name:`User override: ${u} -> ${e.provider}/${e.model}`,description:`Per-agent routing override from .agentic-qe/llm-config.json (agentOverrides["${u}"])`,condition:{agentType:[u]},action:{provider:e.provider,model:e.model,temperature:e.temperature,maxTokens:e.maxTokens,priority:e.priority},enabled:!0,priority:e.priority}}).sort((u,e)=>e.priority-u.priority)}var f=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}},L=[{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 K}from"crypto";var C=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()}-${K().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,s={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(s),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),s=r.map(m=>m.decisionTimeMs),c=r.length,l=this.countByMode(r),d=r.filter(m=>m.wasFallback).length,g=r.filter(m=>m.ruleId).length;return{byProvider:Object.fromEntries(n),byAgentType:a,totalDecisions:c,decisionsByMode:l,avgDecisionTimeMs:this.average(s),p95DecisionTimeMs:this.percentile(s,95),p99DecisionTimeMs:this.percentile(s,99),fallbackRate:c>0?d/c:0,ruleMatchRate:c>0?g/c:0,estimatedCostSavings:this.calculateCostSavings(r),ruleStats:{totalEvaluated:r.reduce((m,b)=>m+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(s=>s.provider===e),r=this.providerCalls.filter(s=>s.provider===e),i=r.map(s=>s.latencyMs),o=t.map(s=>s.decisionTimeMs),n=r.filter(s=>s.success),a=r.filter(s=>!s.success);return{provider:e,selectionCount:t.length,ruleMatchCount:t.filter(s=>s.ruleId).length,fallbackCount:t.filter(s=>s.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((s,c)=>s+(c.cost??0),0),totalTokens:r.reduce((s,c)=>s+c.totalTokens,0),totalInputTokens:r.reduce((s,c)=>s+c.inputTokens,0),totalOutputTokens:r.reduce((s,c)=>s+c.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(c=>c.agentType===e),r=this.providerCalls.filter(c=>c.agentType===e),i=new Map,o=new Map;for(let c of t)i.set(c.provider,(i.get(c.provider)??0)+1),o.set(c.model,(o.get(c.model)??0)+1);let n=r.map(c=>c.latencyMs),a=t.filter(c=>c.wasFallback).length,s=t.filter(c=>c.success).length;return{agentType:e,totalDecisions:t.length,providerDistribution:i,modelDistribution:o,avgLatencyMs:this.average(n),totalCost:r.reduce((c,l)=>c+(l.cost??0),0),totalTokens:r.reduce((c,l)=>c+l.totalTokens,0),fallbackRate:t.length>0?a/t.length:0,successRate:t.length>0?s/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 v){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),s=o.map(l=>l.decisionTimeMs),c=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(s),successRate:n.length>0?c.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 I(u){return new C(u)}var R=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 v){let n=r.filter(c=>c.provider===o);if(n.length===0)continue;let a=n.reduce((c,l)=>c+l.totalCost,0),s=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);i.set(o,{totalCost:a,totalTokens:s,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:s>0?a/s: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 s=r.filter(d=>d.agentType===a),c=s.reduce((d,g)=>d+g.totalCost,0),l=s.reduce((d,g)=>d+g.inputTokens+g.outputTokens,0);o.set(a,{totalCost:c,totalTokens:l,totalRequests:s.length,avgCostPerRequest:s.length>0?c/s.length:0,avgCostPerToken:l>0?c/l:0})}let n=r.filter(a=>!a.agentType);if(n.length>0){let a=n.reduce((c,l)=>c+l.totalCost,0),s=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);o.set("unknown",{totalCost:a,totalTokens:s,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:s>0?a/s: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),s=a.reduce((l,d)=>l+d.totalCost,0),c=a.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0);o.set(n,{totalCost:s,totalTokens:c,totalRequests:a.length,avgCostPerRequest:a.length>0?s/a.length:0,avgCostPerToken:c>0?s/c: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),s=new Date(a.getTime()-i),c=this.records.filter(l=>l.timestamp>=s&&l.timestamp<a);r.push({timestamp:a,cost:c.reduce((l,d)=>l+d.totalCost,0),tokens:c.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0),requests:c.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)k[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=k[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 z(u){return new R(u)}J();var T=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}}},M=class{config;providerManager;ruleEngine;decisionCache;metrics;routerMetrics;costMetrics;initialized=!1;constructor(e,t){this.providerManager=e,this.config={...G,...t};let r=this.config.rules.length>0?this.config.rules:L;this.ruleEngine=new f(r),this.decisionCache=new T(100,this.config.decisionCacheTtlMs),this.metrics=new O,this.routerMetrics=I(),this.costMetrics=z()}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 T(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=_(),r=await this.selectProvider(e),i=e.agentType??"";if(V(i)&&(D(r.model)||D(r.providerModelId))){let n=r.model,a=r.providerModelId;r.model=E(i,r.model,A),r.providerModelId=E(i,r.providerModelId,A),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,s=this.providerManager.getProvider(a);if(s){let c=this.createDecision(s,a,o.action.model,"rule-match",o);return c.metadata.rulesEvaluated=n,c}}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 s=this.providerManager.getProvider(a);if(!s)continue;let{input:c,output:l}=s.getCostPerToken(),d=this.estimateCostValue(e,c,l);n.push({provider:a,model:s.getConfig().model,reason:`Estimated cost: $${d.toFixed(6)}`,estimatedCost:d,excluded:!1}),d<r&&(r=d,i=a,o=s)}if(o){let a=o.getConfig(),s=this.createDecision(o,i,a.model,"cost-optimization");return s.metadata.estimatedCost=this.createCostEstimate(e,o),s.metadata.alternativesConsidered=n,s}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 s of t){let c=this.providerManager.getProvider(s);if(!c)continue;let d=r[s]?.avgLatencyMs??1/0;a.push({provider:s,model:c.getConfig().model,reason:`Avg latency: ${d}ms`,estimatedLatencyMs:d,excluded:!1}),d<i&&(i=d,o=s,n=c)}if(n){let s=n.getConfig(),c=this.createDecision(n,o,s.model,"performance-optimization");return c.metadata.estimatedLatencyMs=i,c.metadata.alternativesConsidered=a,c}return this.createFallbackDecision(e,"performance-optimized")}async executeWithFallback(e,t,r){let{fallbackChain:i,fallbackBehavior:o}=this.config,n,a=0,s=[{provider:t.providerType,model:t.providerModelId}],c=this.config.defaultProvider;c&&c!==t.providerType&&s.push({provider:c,model:this.config.defaultModel});for(let d of i.entries)if(d.enabled&&d.provider!==t.providerType)for(let g of d.models)s.push({provider:d.provider,model:g});let l=s;if(e.requiresTools){let d=s.filter(g=>w(g.model));if(d.length>0&&d.length<s.length){let g=s.filter(m=>!w(m.model)).map(m=>`${m.provider}:${m.model}`);console.warn(`[llm-router] requiresTools: skipping tool-less model(s) ${g.join(", ")}`),l=d}}this.providerManager.assertWithinBudget(e.messages,{model:l[0]?.model,maxTokens:e.maxTokens});for(let{provider:d,model:g}of l){if(a>=o.maxAttempts)break;let m=this.providerManager.getProvider(d);if(!m)continue;a++;let b=Date.now();try{let p=await m.generate(e.messages,{model:g,temperature:e.temperature,maxTokens:e.maxTokens,systemPrompt:e.systemPrompt,timeoutMs:e.timeoutMs,skipCache:e.skipCache,metadata:e.metadata});this.providerManager.recordResponseSpend(p,e.agentType);let h=Date.now()-b;return this.metrics.recordSuccess(d),this.routerMetrics.recordRoutingDecision(t,h,{agentType:e.agentType,success:!0,tokenUsage:p.usage,cost:p.cost}),this.routerMetrics.recordProviderCall(d,g,h,p.usage.totalTokens,{inputTokens:p.usage.promptTokens,outputTokens:p.usage.completionTokens,success:!0,cost:p.cost.totalCost,agentType:e.agentType}),this.costMetrics.recordCostFromInfo(d,g,p.usage,p.cost,{agentType:e.agentType,requestId:p.requestId}),{content:p.content,model:p.model,providerModelId:p.model,provider:p.provider,usage:p.usage,cost:p.cost,latencyMs:p.latencyMs,finishReason:p.finishReason,cached:p.cached,requestId:p.requestId,routingDecision:t}}catch(p){n=F(p);let h=Date.now()-b;if(this.metrics.recordFailure(d),this.routerMetrics.recordProviderCall(d,g,h,0,{success:!1,agentType:e.agentType}),a<s.length){let B=s[a];B&&this.routerMetrics.recordFallback(d,B.provider,n.message,e.agentType)}!(U(p)&&!p.retryable)&&a<o.maxAttempts&&await this.delay(o.delayMs)}}throw P(`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","claude-code":"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=$(e),n=x(o,i);return{canonicalModel:o,providerModelId:n}}catch{try{if(H(e)){let n=x(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 P(`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 s of e.messages)o+=Math.ceil(s.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()}},O=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 tt(u,e){return new M(u,e)}function rt(u){return new M(u,{mode:"rule-based",rules:L,defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",enableMetrics:!0,cacheDecisions:!0})}export{Z as a,ee as b,L as c,M as d,tt as e,rt as f};
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{b as A,c as D,d as V,e as E}from"./chunk-MGKH4LCM.js";import{b as v,c as G}from"./chunk-TDVMILKO.js";import{a as x,b as $,c as H,e as w}from"./chunk-G6FJHDUG.js";import{b as P,c as U}from"./chunk-UQ4UCHO7.js";import{a as k}from"./chunk-Z6DSYLAG.js";import{b as F,c as J}from"./chunk-L3GBNX7B.js";import{i as _}from"./chunk-52VGZJSD.js";var N={security:{provider:"claude",model:"claude-opus-4-7",temperature:.1,maxTokens:16e3,priority:100},"test-generation":{provider:"claude",model:"claude-sonnet-4-6",temperature:.3,maxTokens:8e3,priority:90},"code-analysis":{provider:"claude",model:"claude-sonnet-4-6",temperature:.2,maxTokens:8e3,priority:85},performance:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.2,maxTokens:4e3,priority:70},documentation:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.4,maxTokens:4e3,priority:60},learning:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3,maxTokens:8e3,priority:80},coordination:{provider:"claude",model:"claude-haiku-4-5-20251001",temperature:.2,maxTokens:2e3,priority:75},simple:{provider:"openai",model:"gpt-4o-mini",temperature:.3,maxTokens:2e3,priority:50},general:{provider:"claude",model:"claude-sonnet-4-6",temperature:.3,maxTokens:4e3,priority:60}},q={"security-auditor":"security","security-architect":"security","security-scanner":"security","v3-qe-security-scanner":"security","security-manager":"security","vulnerability-scanner":"security","penetration-tester":"security","compliance-auditor":"security","threat-analyzer":"security","test-generator":"test-generation","v3-qe-test-generator":"test-generation",tester:"test-generation","tdd-specialist":"test-generation","tdd-london-swarm":"test-generation","unit-test-generator":"test-generation","integration-test-generator":"test-generation","e2e-test-generator":"test-generation","mutation-tester":"test-generation","property-based-tester":"test-generation","contract-tester":"test-generation","v3-qe-contract-tester":"test-generation","api-tester":"test-generation","visual-tester":"test-generation","v3-qe-visual-tester":"test-generation","accessibility-tester":"test-generation","code-reviewer":"code-analysis","code-analyzer":"code-analysis",reviewer:"code-analysis","v3-qe-code-intelligence":"code-analysis","v3-qe-code-analyzer":"code-analysis","coverage-analyzer":"code-analysis","v3-qe-coverage-analyzer":"code-analysis","defect-predictor":"code-analysis","v3-qe-defect-predictor":"code-analysis","static-analyzer":"code-analysis","complexity-analyzer":"code-analysis","dependency-analyzer":"code-analysis","refactoring-advisor":"code-analysis","quality-assessor":"code-analysis","v3-qe-quality-assessor":"code-analysis","test-executor":"code-analysis","v3-qe-test-executor":"code-analysis","parallel-executor":"code-analysis","flaky-test-detector":"code-analysis","test-orchestrator":"code-analysis","performance-tester":"performance","performance-engineer":"performance","perf-analyzer":"performance","performance-benchmarker":"performance","load-tester":"performance","stress-tester":"performance","v3-qe-chaos-engineer":"performance","chaos-engineer":"performance","resilience-tester":"performance","scalability-tester":"performance","api-docs":"documentation","doc-generator":"documentation","readme-generator":"documentation","changelog-generator":"documentation","specification-writer":"documentation","v3-qe-learning-optimizer":"learning","learning-optimizer":"learning","ml-developer":"learning","pattern-learner":"learning","optimization-agent":"learning","smart-agent":"learning","requirements-validator":"code-analysis","v3-qe-requirements-validator":"code-analysis","bdd-generator":"test-generation","acceptance-tester":"test-generation",coordinator:"coordination","hierarchical-coordinator":"coordination","mesh-coordinator":"coordination","adaptive-coordinator":"coordination","collective-intelligence-coordinator":"coordination","swarm-memory-manager":"coordination","byzantine-coordinator":"coordination","raft-manager":"coordination","gossip-coordinator":"coordination","consensus-builder":"coordination","crdt-synchronizer":"coordination","quorum-manager":"coordination","task-orchestrator":"coordination","memory-coordinator":"coordination",coder:"code-analysis",planner:"code-analysis",researcher:"code-analysis","backend-dev":"code-analysis","mobile-dev":"code-analysis","cicd-engineer":"code-analysis","system-architect":"code-analysis","base-template-generator":"test-generation","github-modes":"coordination","pr-manager":"coordination","code-review-swarm":"code-analysis","issue-tracker":"coordination","release-manager":"coordination","workflow-automation":"coordination","project-board-sync":"coordination","repo-architect":"code-analysis","multi-repo-swarm":"coordination","sparc-coord":"coordination","sparc-coder":"code-analysis",specification:"documentation",pseudocode:"code-analysis",architecture:"code-analysis",refinement:"code-analysis","memory-specialist":"learning","production-validator":"code-analysis"},y={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"}},X={security:y.heavyweight,"test-generation":y.standard,"code-analysis":y.standard,learning:y.standard,performance:{...y.lightweight,costSensitivity:"high"},coordination:y.lightweight,general:{...y.lightweight,requiresJsonMode:!1,latencySensitivity:"medium"},documentation:{...y.minimal,minContextSize:16e3},simple:y.minimal};function j(u){if(u in q)return q[u];let e=u.toLowerCase();return e.includes("security")||e.includes("audit")||e.includes("vulnerab")||e.includes("penetration")||e.includes("threat")||e.includes("compliance")?"security":e.includes("test-gen")||e.includes("tdd")||e.includes("unit-test")||e.includes("e2e-test")||e.includes("integration-test")||e.includes("mutation")?"test-generation":e.includes("code-")||e.includes("coverage")||e.includes("defect")||e.includes("review")||e.includes("analyzer")||e.includes("quality")?"code-analysis":e.includes("perf")||e.includes("load")||e.includes("stress")||e.includes("benchmark")||e.includes("chaos")||e.includes("resilience")?"performance":e.includes("doc")||e.includes("readme")||e.includes("changelog")||e.includes("spec")?"documentation":e.includes("learn")||e.includes("ml-")||e.includes("pattern")||e.includes("optim")?"learning":e.includes("coord")||e.includes("swarm")||e.includes("orchestrat")||e.includes("consensus")||e.includes("manager")?"coordination":"general"}var S={},W={};function Z(u,e){S={...u??{}},W={...e??{}}}function Y(u){let e=j(u),t=N[e],r=S[u];if(!r)return t;let i=r.provider!==void 0&&r.provider!==t.provider,o=r.model??(i?W[r.provider]:void 0);return{...t,...r.provider!==void 0?{provider:r.provider}:{},...o!==void 0?{model:o}:{},...r.temperature!==void 0?{temperature:r.temperature}:{},...r.maxTokens!==void 0?{maxTokens:r.maxTokens}:{},priority:r.priority??t.priority+100}}function ee(){return Object.keys(S).map(u=>{let e=Y(u);return{id:`agent-override-${u}`,name:`User override: ${u} -> ${e.provider}/${e.model}`,description:`Per-agent routing override from .agentic-qe/llm-config.json (agentOverrides["${u}"])`,condition:{agentType:[u]},action:{provider:e.provider,model:e.model,temperature:e.temperature,maxTokens:e.maxTokens,priority:e.priority},enabled:!0,priority:e.priority}}).sort((u,e)=>e.priority-u.priority)}var f=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}},L=[{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 K}from"crypto";var C=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()}-${K().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,s={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(s),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),s=r.map(m=>m.decisionTimeMs),c=r.length,l=this.countByMode(r),d=r.filter(m=>m.wasFallback).length,g=r.filter(m=>m.ruleId).length;return{byProvider:Object.fromEntries(n),byAgentType:a,totalDecisions:c,decisionsByMode:l,avgDecisionTimeMs:this.average(s),p95DecisionTimeMs:this.percentile(s,95),p99DecisionTimeMs:this.percentile(s,99),fallbackRate:c>0?d/c:0,ruleMatchRate:c>0?g/c:0,estimatedCostSavings:this.calculateCostSavings(r),ruleStats:{totalEvaluated:r.reduce((m,b)=>m+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(s=>s.provider===e),r=this.providerCalls.filter(s=>s.provider===e),i=r.map(s=>s.latencyMs),o=t.map(s=>s.decisionTimeMs),n=r.filter(s=>s.success),a=r.filter(s=>!s.success);return{provider:e,selectionCount:t.length,ruleMatchCount:t.filter(s=>s.ruleId).length,fallbackCount:t.filter(s=>s.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((s,c)=>s+(c.cost??0),0),totalTokens:r.reduce((s,c)=>s+c.totalTokens,0),totalInputTokens:r.reduce((s,c)=>s+c.inputTokens,0),totalOutputTokens:r.reduce((s,c)=>s+c.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(c=>c.agentType===e),r=this.providerCalls.filter(c=>c.agentType===e),i=new Map,o=new Map;for(let c of t)i.set(c.provider,(i.get(c.provider)??0)+1),o.set(c.model,(o.get(c.model)??0)+1);let n=r.map(c=>c.latencyMs),a=t.filter(c=>c.wasFallback).length,s=t.filter(c=>c.success).length;return{agentType:e,totalDecisions:t.length,providerDistribution:i,modelDistribution:o,avgLatencyMs:this.average(n),totalCost:r.reduce((c,l)=>c+(l.cost??0),0),totalTokens:r.reduce((c,l)=>c+l.totalTokens,0),fallbackRate:t.length>0?a/t.length:0,successRate:t.length>0?s/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 v){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),s=o.map(l=>l.decisionTimeMs),c=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(s),successRate:n.length>0?c.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 I(u){return new C(u)}var R=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 v){let n=r.filter(c=>c.provider===o);if(n.length===0)continue;let a=n.reduce((c,l)=>c+l.totalCost,0),s=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);i.set(o,{totalCost:a,totalTokens:s,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:s>0?a/s: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 s=r.filter(d=>d.agentType===a),c=s.reduce((d,g)=>d+g.totalCost,0),l=s.reduce((d,g)=>d+g.inputTokens+g.outputTokens,0);o.set(a,{totalCost:c,totalTokens:l,totalRequests:s.length,avgCostPerRequest:s.length>0?c/s.length:0,avgCostPerToken:l>0?c/l:0})}let n=r.filter(a=>!a.agentType);if(n.length>0){let a=n.reduce((c,l)=>c+l.totalCost,0),s=n.reduce((c,l)=>c+l.inputTokens+l.outputTokens,0);o.set("unknown",{totalCost:a,totalTokens:s,totalRequests:n.length,avgCostPerRequest:a/n.length,avgCostPerToken:s>0?a/s: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),s=a.reduce((l,d)=>l+d.totalCost,0),c=a.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0);o.set(n,{totalCost:s,totalTokens:c,totalRequests:a.length,avgCostPerRequest:a.length>0?s/a.length:0,avgCostPerToken:c>0?s/c: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),s=new Date(a.getTime()-i),c=this.records.filter(l=>l.timestamp>=s&&l.timestamp<a);r.push({timestamp:a,cost:c.reduce((l,d)=>l+d.totalCost,0),tokens:c.reduce((l,d)=>l+d.inputTokens+d.outputTokens,0),requests:c.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)k[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=k[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 z(u){return new R(u)}J();var T=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}}},M=class{config;providerManager;ruleEngine;decisionCache;metrics;routerMetrics;costMetrics;initialized=!1;constructor(e,t){this.providerManager=e,this.config={...G,...t};let r=this.config.rules.length>0?this.config.rules:L;this.ruleEngine=new f(r),this.decisionCache=new T(100,this.config.decisionCacheTtlMs),this.metrics=new O,this.routerMetrics=I(),this.costMetrics=z()}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 T(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=_(),r=await this.selectProvider(e),i=e.agentType??"";if(V(i)&&(D(r.model)||D(r.providerModelId))){let n=r.model,a=r.providerModelId;r.model=E(i,r.model,A),r.providerModelId=E(i,r.providerModelId,A),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,s=this.providerManager.getProvider(a);if(s){let c=this.createDecision(s,a,o.action.model,"rule-match",o);return c.metadata.rulesEvaluated=n,c}}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 s=this.providerManager.getProvider(a);if(!s)continue;let{input:c,output:l}=s.getCostPerToken(),d=this.estimateCostValue(e,c,l);n.push({provider:a,model:s.getConfig().model,reason:`Estimated cost: $${d.toFixed(6)}`,estimatedCost:d,excluded:!1}),d<r&&(r=d,i=a,o=s)}if(o){let a=o.getConfig(),s=this.createDecision(o,i,a.model,"cost-optimization");return s.metadata.estimatedCost=this.createCostEstimate(e,o),s.metadata.alternativesConsidered=n,s}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 s of t){let c=this.providerManager.getProvider(s);if(!c)continue;let d=r[s]?.avgLatencyMs??1/0;a.push({provider:s,model:c.getConfig().model,reason:`Avg latency: ${d}ms`,estimatedLatencyMs:d,excluded:!1}),d<i&&(i=d,o=s,n=c)}if(n){let s=n.getConfig(),c=this.createDecision(n,o,s.model,"performance-optimization");return c.metadata.estimatedLatencyMs=i,c.metadata.alternativesConsidered=a,c}return this.createFallbackDecision(e,"performance-optimized")}async executeWithFallback(e,t,r){let{fallbackChain:i,fallbackBehavior:o}=this.config,n,a=0,s=[{provider:t.providerType,model:t.providerModelId}],c=this.config.defaultProvider;c&&c!==t.providerType&&s.push({provider:c,model:this.config.defaultModel});for(let d of i.entries)if(d.enabled&&d.provider!==t.providerType)for(let g of d.models)s.push({provider:d.provider,model:g});let l=s;if(e.requiresTools){let d=s.filter(g=>w(g.model));if(d.length>0&&d.length<s.length){let g=s.filter(m=>!w(m.model)).map(m=>`${m.provider}:${m.model}`);console.warn(`[llm-router] requiresTools: skipping tool-less model(s) ${g.join(", ")}`),l=d}}this.providerManager.assertWithinBudget(e.messages,{model:l[0]?.model,maxTokens:e.maxTokens});for(let{provider:d,model:g}of l){if(a>=o.maxAttempts)break;let m=this.providerManager.getProvider(d);if(!m)continue;a++;let b=Date.now();try{let p=await m.generate(e.messages,{model:g,temperature:e.temperature,maxTokens:e.maxTokens,systemPrompt:e.systemPrompt,timeoutMs:e.timeoutMs,skipCache:e.skipCache,metadata:e.metadata});this.providerManager.recordResponseSpend(p,e.agentType);let h=Date.now()-b;return this.metrics.recordSuccess(d),this.routerMetrics.recordRoutingDecision(t,h,{agentType:e.agentType,success:!0,tokenUsage:p.usage,cost:p.cost}),this.routerMetrics.recordProviderCall(d,g,h,p.usage.totalTokens,{inputTokens:p.usage.promptTokens,outputTokens:p.usage.completionTokens,success:!0,cost:p.cost.totalCost,agentType:e.agentType}),this.costMetrics.recordCostFromInfo(d,g,p.usage,p.cost,{agentType:e.agentType,requestId:p.requestId}),{content:p.content,model:p.model,providerModelId:p.model,provider:p.provider,usage:p.usage,cost:p.cost,latencyMs:p.latencyMs,finishReason:p.finishReason,cached:p.cached,requestId:p.requestId,routingDecision:t}}catch(p){n=F(p);let h=Date.now()-b;if(this.metrics.recordFailure(d),this.routerMetrics.recordProviderCall(d,g,h,0,{success:!1,agentType:e.agentType}),a<s.length){let B=s[a];B&&this.routerMetrics.recordFallback(d,B.provider,n.message,e.agentType)}!(U(p)&&!p.retryable)&&a<o.maxAttempts&&await this.delay(o.delayMs)}}throw P(`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","claude-code":"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=$(e),n=x(o,i);return{canonicalModel:o,providerModelId:n}}catch{try{if(H(e)){let n=x(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 P(`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 s of e.messages)o+=Math.ceil(s.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()}},O=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 tt(u,e){return new M(u,e)}function rt(u){return new M(u,{mode:"rule-based",rules:L,defaultProvider:"claude",defaultModel:"claude-sonnet-4-6",enableMetrics:!0,cacheDecisions:!0})}export{Z as a,ee as b,L as c,M as d,tt as e,rt as f};
|
|
@@ -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.13.
|
|
2
|
-
import{b as d,d as L}from"./chunk-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{b as d,d as L}from"./chunk-M73KM3AZ.js";import{createHash as m}from"crypto";import{existsSync as g,readFileSync as R,writeFileSync as A,openSync as X,writeSync as U,closeSync as f}from"fs";var p=[`CREATE TABLE IF NOT EXISTS qe_patterns (
|
|
3
3
|
id TEXT PRIMARY KEY, pattern_type TEXT NOT NULL, qe_domain TEXT NOT NULL,
|
|
4
4
|
domain TEXT NOT NULL, name TEXT NOT NULL, description TEXT,
|
|
5
5
|
confidence REAL DEFAULT 0.5, usage_count INTEGER DEFAULT 0,
|
|
@@ -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.13.
|
|
2
|
-
import{e as l,l as i}from"./chunk-
|
|
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.13.12");process.exit(0)}
|
|
2
|
+
import{e as l,l as i}from"./chunk-XIKYUBIV.js";import{a as r,c as g}from"./chunk-L3GBNX7B.js";g();var c=class extends i{config={name:"qe/tests/schedule",description:"Schedule and execute tests using phase-based pipeline with git-aware selection and flaky tracking. Runs tests in phases (unit, integration, e2e), selects affected tests from git changes, and tracks flaky tests.",domain:"test-execution",schema:this.buildSchema()};buildSchema(){return{type:"object",properties:{cwd:{type:"string",description:"Working directory for test execution (defaults to project root)"},gitRef:{type:"string",description:'Git ref to compare for affected test selection (e.g., "main", "HEAD~3")'},useGitAware:{type:"boolean",description:"Enable git-aware test selection to only run affected tests",default:!0},trackFlaky:{type:"boolean",description:"Enable flaky test tracking and quarantine",default:!0}}}}async execute(s,o){try{let{runTestPipeline:n}=await import("./test-scheduling-HTMFJMSP.js"),d=await l(o),t=await n({cwd:s.cwd||process.cwd(),memory:d,baseRef:s.gitRef,flakyHistoryPath:s.trackFlaky!==!1?".agentic-qe/flaky-history.json":void 0,runAllTests:s.useGitAware===!1}),u=t.phaseResults.reduce((e,a)=>e+a.totalTests,0),f=t.phaseResults.reduce((e,a)=>e+a.passed,0),p=t.phaseResults.reduce((e,a)=>e+a.failed,0);return{success:!0,data:{pipelineId:o.requestId,phases:t.phaseResults.map(e=>({phaseId:e.phaseId,phaseName:e.phaseName,totalTests:e.totalTests,passed:e.passed,failed:e.failed,passRate:e.passRate,durationMs:e.durationMs})),gitAware:{enabled:!t.ranAllTests,selectedTests:t.selectedTests.length,gitRef:s.gitRef},flakyTracking:{enabled:s.trackFlaky!==!1},totalDuration:t.totalDurationMs,ranAllTests:t.ranAllTests,summary:`Executed ${t.phaseResults.length} phases, ${u} tests (${f} passed, ${p} failed) in ${t.totalDurationMs}ms`}}}catch(n){return{success:!1,error:r(n)}}}};export{c as a};
|