agentic-qe 3.15.11 → 3.15.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/hooks/aqe-hook.cjs +38 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +149 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-TIDSQ3ZK.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-G3EPBVA7.js → agent-handler-K3C6CQCD.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-ARC5C7GW.js → agent-memory-branch-NVFQ25WS.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
- package/dist/cli/chunks/{arena-K4I4QDXB.js → arena-QGWIJADQ.js} +2 -2
- package/dist/cli/chunks/{arena-36DTATJV.js → arena-TSZVDSXS.js} +4 -4
- package/dist/cli/chunks/{audit-WQSJSJZF.js → audit-KIEE2SHJ.js} +3 -3
- package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-BB4K67MT.js → better-sqlite3-BNB32NW3.js} +2 -2
- package/dist/cli/chunks/{brain-handler-CU3GOIU3.js → brain-handler-MPC5SPYI.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-NJQX7ZNB.js → branch-enumerator-LZ7UXKAY.js} +2 -2
- package/dist/cli/chunks/{browser-6YJF4FQW.js → browser-VDHAW4RK.js} +2 -2
- package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
- package/dist/cli/chunks/{chunk-V7DA4HAK.js → chunk-23PQF7NN.js} +1 -1
- package/dist/cli/chunks/{chunk-IENZSO3K.js → chunk-26672ISV.js} +2 -2
- package/dist/cli/chunks/{chunk-OURITHFV.js → chunk-2ASQRBK2.js} +2 -2
- package/dist/cli/chunks/{chunk-VBK2YAYY.js → chunk-2E2QO44T.js} +2 -2
- package/dist/cli/chunks/{chunk-NT7JRHMH.js → chunk-2IVE5AR3.js} +1 -1
- package/dist/cli/chunks/{chunk-672XOJDG.js → chunk-2JYUA27M.js} +1 -1
- package/dist/cli/chunks/{chunk-OHR7C777.js → chunk-2PPSS4JD.js} +2 -2
- package/dist/cli/chunks/{chunk-FUYOOKTH.js → chunk-32UTHIY5.js} +3 -3
- package/dist/cli/chunks/{chunk-UKKYMW3S.js → chunk-33I2ZP6E.js} +2 -2
- package/dist/cli/chunks/{chunk-76SNL7GU.js → chunk-35MIUSXQ.js} +2 -2
- package/dist/cli/chunks/{chunk-4X4MWMHB.js → chunk-35NW676P.js} +2 -2
- package/dist/cli/chunks/{chunk-BZPE3LDO.js → chunk-3EWQN37E.js} +2 -2
- package/dist/cli/chunks/{chunk-5N25I53C.js → chunk-3IU4LDZR.js} +2 -2
- package/dist/cli/chunks/{chunk-NKTWKYHB.js → chunk-47RMGDG4.js} +2 -2
- package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
- package/dist/cli/chunks/{chunk-4RH5I24Q.js → chunk-4CB3QPZM.js} +2 -2
- package/dist/cli/chunks/{chunk-U3LJNNVJ.js → chunk-4HWUECVD.js} +2 -2
- package/dist/cli/chunks/{chunk-T5KHJ3J7.js → chunk-4KUOYDY2.js} +2 -2
- package/dist/cli/chunks/{chunk-XNLIWQYE.js → chunk-4LWMAAWK.js} +2 -2
- package/dist/cli/chunks/{chunk-KKYO2NKV.js → chunk-4PU5GTZW.js} +2 -2
- package/dist/cli/chunks/{chunk-VWUZSNVC.js → chunk-4SA7M34P.js} +1 -1
- package/dist/cli/chunks/{chunk-5WYZHDIZ.js → chunk-4Y6OEBJZ.js} +1 -1
- package/dist/cli/chunks/{chunk-J4JMCZVA.js → chunk-5A66EGEW.js} +2 -2
- package/dist/cli/chunks/{chunk-HFFPYC4G.js → chunk-5ADXFUMO.js} +2 -2
- package/dist/cli/chunks/{chunk-KJCIMNHS.js → chunk-5S4UIDFK.js} +1 -1
- package/dist/cli/chunks/{chunk-YBBT3YYG.js → chunk-5TAEW5OV.js} +1 -1
- package/dist/cli/chunks/{chunk-FLU5FDSC.js → chunk-5Z23ZMXZ.js} +59 -59
- package/dist/cli/chunks/{chunk-YNOCQ2SL.js → chunk-65TH6RPD.js} +1 -1
- package/dist/cli/chunks/{chunk-XGPTZUKQ.js → chunk-66PXR3NI.js} +2 -2
- package/dist/cli/chunks/{chunk-ITPGWGQS.js → chunk-6E6HB4N4.js} +4 -4
- package/dist/cli/chunks/{chunk-EJPK7OTR.js → chunk-6QRI3JVE.js} +2 -2
- package/dist/cli/chunks/{chunk-ZP75ASUU.js → chunk-7DNR4KKR.js} +1 -1
- package/dist/cli/chunks/{chunk-V5AADCBC.js → chunk-7JFDLL2F.js} +1 -1
- package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
- package/dist/cli/chunks/{chunk-EIDJNT5C.js → chunk-7QEUHNKO.js} +1 -1
- package/dist/cli/chunks/{chunk-7R5HC56U.js → chunk-7TA5MUPW.js} +1 -1
- package/dist/cli/chunks/{chunk-LCVEEII4.js → chunk-A2JCRXTK.js} +2 -2
- package/dist/cli/chunks/{chunk-JUMICXM6.js → chunk-A5Y7DAVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-FZHSG75I.js → chunk-ADUAJIAU.js} +2 -2
- package/dist/cli/chunks/{chunk-TFW7CCKS.js → chunk-AJEXPFAB.js} +1 -1
- package/dist/cli/chunks/{chunk-JGJXXAS6.js → chunk-BC4T6SCV.js} +4 -4
- package/dist/cli/chunks/{chunk-4RAQ7PJA.js → chunk-BMG2JLSQ.js} +2 -2
- package/dist/cli/chunks/{chunk-Y7B5EUIJ.js → chunk-BOSMELJX.js} +2 -2
- package/dist/cli/chunks/{chunk-CIAL4YRY.js → chunk-BYRCB5JT.js} +2 -2
- package/dist/cli/chunks/{chunk-XS2XF3YG.js → chunk-C3YOVASQ.js} +1 -1
- package/dist/cli/chunks/{chunk-FL32MTKT.js → chunk-C74M4WUI.js} +2 -2
- package/dist/cli/chunks/{chunk-S6IYEBAI.js → chunk-CA5UNWQF.js} +2 -2
- package/dist/cli/chunks/{chunk-5MTWCCZJ.js → chunk-CDA5Z74H.js} +2 -2
- package/dist/cli/chunks/{chunk-DOFREOPQ.js → chunk-CPIBIR3X.js} +2 -2
- package/dist/cli/chunks/{chunk-UMVSWQNB.js → chunk-CU36D7TN.js} +2 -2
- package/dist/cli/chunks/{chunk-G4CKPWF6.js → chunk-DAUEK66C.js} +1 -1
- package/dist/cli/chunks/{chunk-2KFFEKSI.js → chunk-DRCBRUGN.js} +2 -2
- package/dist/cli/chunks/{chunk-EH2S6AOR.js → chunk-DZGPUGUG.js} +2 -2
- package/dist/cli/chunks/{chunk-HYXUN7BW.js → chunk-EF6OERRR.js} +1 -1
- package/dist/cli/chunks/{chunk-G77MLBDF.js → chunk-EN7GRVEQ.js} +2 -2
- package/dist/cli/chunks/{chunk-XDI5X3FR.js → chunk-ENGL7FIJ.js} +1 -1
- package/dist/cli/chunks/{chunk-HDNWSKHA.js → chunk-FAGKBOX2.js} +2 -2
- package/dist/cli/chunks/{chunk-FWSGPE3V.js → chunk-FNUFTWEO.js} +3 -3
- package/dist/cli/chunks/{chunk-AUUJBXWX.js → chunk-FZJCBSN4.js} +2 -2
- package/dist/cli/chunks/{chunk-ERN43HOX.js → chunk-G24SWTAX.js} +35 -35
- package/dist/cli/chunks/{chunk-VEEYL2CZ.js → chunk-G3AABG4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-35M2X3C5.js → chunk-GJKZ7UQO.js} +2 -2
- package/dist/cli/chunks/{chunk-OV5RPLKV.js → chunk-GKFV6CUD.js} +2 -2
- package/dist/cli/chunks/{chunk-4HJKQIX5.js → chunk-HLGFHHWV.js} +2 -2
- package/dist/cli/chunks/{chunk-R5LGV6GZ.js → chunk-HM3LSFTY.js} +2 -2
- package/dist/cli/chunks/{chunk-M7XFBSIK.js → chunk-HSA5IGGW.js} +2 -2
- package/dist/cli/chunks/{chunk-GWJWSLDA.js → chunk-HZBXJFGN.js} +2 -2
- package/dist/cli/chunks/{chunk-4MUBW4RT.js → chunk-IA55PFLG.js} +2 -2
- package/dist/cli/chunks/{chunk-RBZCA7SD.js → chunk-ICKUINKD.js} +2 -2
- package/dist/cli/chunks/{chunk-KDI5JOYZ.js → chunk-IETBWYHW.js} +2 -2
- package/dist/cli/chunks/{chunk-325QCVDI.js → chunk-IL7GQNNE.js} +2 -2
- package/dist/cli/chunks/{chunk-BTVWA35P.js → chunk-INZARYUD.js} +2 -2
- package/dist/cli/chunks/{chunk-G2IJFNZS.js → chunk-IPA7K556.js} +2 -2
- package/dist/cli/chunks/{chunk-UTTSH4NH.js → chunk-IVTQF55W.js} +3 -3
- package/dist/cli/chunks/{chunk-2CW7VRPH.js → chunk-J7Y7ZBIT.js} +5 -5
- package/dist/cli/chunks/{chunk-M5RQ6U3G.js → chunk-JGIJPDGD.js} +2 -2
- package/dist/cli/chunks/{chunk-RQMCZQN2.js → chunk-JNXK47OL.js} +2 -2
- package/dist/cli/chunks/{chunk-X4J73KP3.js → chunk-JOWUS2X5.js} +1 -1
- package/dist/cli/chunks/{chunk-ZMC543GI.js → chunk-JR6CUKAI.js} +2 -2
- package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
- package/dist/cli/chunks/{chunk-ETVAYGCB.js → chunk-JW5PDJ5O.js} +3 -3
- package/dist/cli/chunks/{chunk-OD5D4LSZ.js → chunk-K3A3NWT3.js} +2 -2
- package/dist/cli/chunks/{chunk-LPU6PAJE.js → chunk-KA5SHLMW.js} +2 -2
- package/dist/cli/chunks/{chunk-NPZOBSAN.js → chunk-KGA7VAI4.js} +2 -2
- package/dist/cli/chunks/{chunk-ZMHCMJ4J.js → chunk-KJDI5CHX.js} +2 -2
- package/dist/cli/chunks/{chunk-KSLLHFVY.js → chunk-L3PV7VXK.js} +1 -1
- package/dist/cli/chunks/{chunk-LD5CFK53.js → chunk-L7NGKANW.js} +2 -2
- package/dist/cli/chunks/{chunk-6NA3KZZT.js → chunk-LFBA735S.js} +7 -7
- package/dist/cli/chunks/{chunk-Z2EA7A4Z.js → chunk-MAJXZYGK.js} +1 -1
- package/dist/cli/chunks/{chunk-TCYSBC7Y.js → chunk-MCPEC6OO.js} +1 -1
- package/dist/cli/chunks/{chunk-LBX7M4LW.js → chunk-MCPXNUDK.js} +2 -2
- package/dist/cli/chunks/{chunk-5YLOLACR.js → chunk-MMEALJ4D.js} +2 -2
- package/dist/cli/chunks/{chunk-IOZRKXR5.js → chunk-MYF5CNGV.js} +2 -2
- package/dist/cli/chunks/{chunk-X3PZCXWG.js → chunk-MYUMJ2ZI.js} +1 -1
- package/dist/cli/chunks/{chunk-VYTILW4R.js → chunk-N7O3PF6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-GVKVJJQX.js → chunk-NA3F6FEO.js} +2 -2
- package/dist/cli/chunks/{chunk-TL6OFMXF.js → chunk-NNBQZR73.js} +2 -2
- package/dist/cli/chunks/{chunk-KXS3Y2AX.js → chunk-NV74SICL.js} +2 -2
- package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
- package/dist/cli/chunks/{chunk-OH5V5EJW.js → chunk-NX4BCSOZ.js} +2 -2
- package/dist/cli/chunks/{chunk-XJKZ7FTR.js → chunk-O3IM4WRZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3RHOPP7A.js → chunk-O4QJMANM.js} +1 -1
- package/dist/cli/chunks/{chunk-O4JAKWWM.js → chunk-OHVYINGM.js} +17 -17
- package/dist/cli/chunks/{chunk-APPZATXA.js → chunk-P5E26N2X.js} +2 -2
- package/dist/cli/chunks/{chunk-5ERFHEEE.js → chunk-P7UFJ6DO.js} +1 -1
- package/dist/cli/chunks/{chunk-5MNASJOH.js → chunk-PGSJBXTD.js} +2 -2
- package/dist/cli/chunks/{chunk-WCAVIJ64.js → chunk-PT2NXS43.js} +1 -1
- package/dist/cli/chunks/{chunk-EWPUQCN4.js → chunk-PTBOLBM4.js} +2 -2
- package/dist/cli/chunks/{chunk-EK5GMOSO.js → chunk-PX5OPXY6.js} +1 -1
- package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
- package/dist/cli/chunks/{chunk-K2HBNYAZ.js → chunk-QSGEBCDB.js} +2 -2
- package/dist/cli/chunks/{chunk-G4FAPO57.js → chunk-QUJJYTJH.js} +2 -2
- package/dist/cli/chunks/{chunk-H7BLYMNU.js → chunk-QWG3SILX.js} +3 -3
- package/dist/cli/chunks/{chunk-LXQ3B4RY.js → chunk-RCOLPF3B.js} +2 -2
- package/dist/cli/chunks/{chunk-E44NNCEU.js → chunk-RYHG3I7J.js} +2 -2
- package/dist/cli/chunks/{chunk-RTFKTKSO.js → chunk-SBHM5X2S.js} +2 -2
- package/dist/cli/chunks/{chunk-DOBZPSKE.js → chunk-SDRJJUPO.js} +1 -1
- package/dist/cli/chunks/{chunk-RTY7VSZB.js → chunk-SG2TX72G.js} +2 -2
- package/dist/cli/chunks/{chunk-NTB342NJ.js → chunk-SITL5YZV.js} +4 -4
- package/dist/cli/chunks/{chunk-WM3SRRA6.js → chunk-SPC4RBLF.js} +2 -2
- package/dist/cli/chunks/{chunk-ITL3IN2E.js → chunk-SQVZ3TRU.js} +2 -2
- package/dist/cli/chunks/{chunk-CO3DX2AX.js → chunk-SUX5XB2Z.js} +2 -2
- package/dist/cli/chunks/{chunk-KSE5TDM5.js → chunk-T4EN5VVK.js} +2 -2
- package/dist/cli/chunks/{chunk-5HQP4SLM.js → chunk-TGMXUZZC.js} +2 -2
- package/dist/cli/chunks/{chunk-YOCULVHR.js → chunk-TLRHAMX5.js} +1 -1
- package/dist/cli/chunks/{chunk-GBFUANTC.js → chunk-TOWOJGEI.js} +1 -1
- package/dist/cli/chunks/{chunk-4UBVAJFO.js → chunk-TSOQ2QLT.js} +2 -2
- package/dist/cli/chunks/{chunk-SMVVAVN2.js → chunk-TVA5GRIU.js} +2 -2
- package/dist/cli/chunks/{chunk-K7V2WZNF.js → chunk-TXEUVUMO.js} +1 -1
- package/dist/cli/chunks/{chunk-LQ4NUC6Q.js → chunk-U6IXYQO4.js} +2 -2
- package/dist/cli/chunks/{chunk-HDJUYAZG.js → chunk-U7ZHDGXG.js} +1 -1
- package/dist/cli/chunks/{chunk-2VLYUF7U.js → chunk-UCSK2RMI.js} +2 -2
- package/dist/cli/chunks/{chunk-4UX35V7P.js → chunk-UIKQPO4Y.js} +2 -2
- package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
- package/dist/cli/chunks/{chunk-AFFN6E6Q.js → chunk-ULCW6IVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-WCVCOT4E.js → chunk-UREDS662.js} +2 -2
- package/dist/cli/chunks/{chunk-E6PF35JZ.js → chunk-URSTP3WI.js} +2 -2
- package/dist/cli/chunks/{chunk-I36CRDHF.js → chunk-UUZZXHUF.js} +2 -2
- package/dist/cli/chunks/{chunk-MIK4RBEH.js → chunk-UZED4YZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-ZQHDA4O7.js → chunk-VF7FTD64.js} +1 -1
- package/dist/cli/chunks/{chunk-AMZKAJLJ.js → chunk-VUR5THML.js} +2 -2
- package/dist/cli/chunks/{chunk-H43AFUKL.js → chunk-VXVTFKRA.js} +2 -2
- package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
- package/dist/cli/chunks/{chunk-DDEOZPWJ.js → chunk-W4II6SIH.js} +2 -2
- package/dist/cli/chunks/{chunk-55CH76ZO.js → chunk-W5HQIYQU.js} +3 -3
- package/dist/cli/chunks/{chunk-YPX2TV3M.js → chunk-W7H55PY4.js} +1 -1
- package/dist/cli/chunks/{chunk-CFWGGRE7.js → chunk-WDEXOLK2.js} +1 -1
- package/dist/cli/chunks/{chunk-XGBU3KEM.js → chunk-WGTEZT7G.js} +2 -2
- package/dist/cli/chunks/{chunk-NC6K7SCQ.js → chunk-WLRU6ESI.js} +2 -2
- package/dist/cli/chunks/{chunk-JFLU7L3W.js → chunk-WTAUF6O4.js} +2 -2
- package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
- package/dist/cli/chunks/{chunk-57LNKSW7.js → chunk-XZOYKB22.js} +2 -2
- package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
- package/dist/cli/chunks/{chunk-25P77WA5.js → chunk-YLKIXEPP.js} +1 -1
- package/dist/cli/chunks/{chunk-R5GRABPQ.js → chunk-YNVEDFPQ.js} +1 -1
- package/dist/cli/chunks/{chunk-NQZNMCZU.js → chunk-YUA6ZKKY.js} +2 -2
- package/dist/cli/chunks/{chunk-OYJC3YON.js → chunk-YVJEUX3I.js} +2 -2
- package/dist/cli/chunks/{chunk-QDESWOZP.js → chunk-YWWMNTBF.js} +2 -2
- package/dist/cli/chunks/{chunk-7HEMJHPP.js → chunk-ZGROHCOW.js} +1 -1
- package/dist/cli/chunks/{chunk-AP3ADWDK.js → chunk-ZPVGX4DI.js} +2 -2
- package/dist/cli/chunks/{chunk-M5XYIQYZ.js → chunk-ZROAMFX2.js} +2 -2
- package/dist/cli/chunks/{chunk-I4K2HTQU.js → chunk-ZYOYR3UR.js} +1 -1
- package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
- package/dist/cli/chunks/{ci-config-J665XNOX.js → ci-config-LOHNXOKV.js} +2 -2
- package/dist/cli/chunks/{ci-output-PEQQQWVD.js → ci-output-LCOQBSJL.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-HHB2JSKH.js → circuit-breaker-7LRXTLFE.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-JKUJRWPN.js → claude-flow-setup-HBU4VWC3.js} +2 -2
- package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
- package/dist/cli/chunks/{cline-installer-Y77BWTAN.js → cline-installer-CO6MLH6X.js} +2 -2
- package/dist/cli/chunks/{code-LV2HAGJY.js → code-SIXBS6JM.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-4GKKSETB.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
- package/dist/cli/chunks/{codex-installer-WMKBYE5Y.js → codex-installer-6NINVWXJ.js} +2 -2
- package/dist/cli/chunks/{completions-SBGFAOIJ.js → completions-7VIX3GML.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-AQHFIJXC.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-26AYFS2E.js → continuedev-installer-VA7RIXW5.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-4UD3DK55.js → copilot-installer-4QEBC4MU.js} +2 -2
- package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
- package/dist/cli/chunks/{cost-tracker-TP4NZCG4.js → cost-tracker-GRYKHPWL.js} +2 -2
- package/dist/cli/chunks/{coverage-B2KIXHAI.js → coverage-USPMNKOU.js} +11 -10
- package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
- package/dist/cli/chunks/{cursor-installer-AVZEQZ4W.js → cursor-installer-ZXIPSZVH.js} +2 -2
- package/dist/cli/chunks/{daemon-XM2A7LQU.js → daemon-D7F3RGI5.js} +3 -3
- package/dist/cli/chunks/{daemon-P574WWBW.js → daemon-N2VRHPSJ.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-MIWOZ6ET.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
- package/dist/cli/chunks/{detect-TYR7HT23.js → detect-XC2HCIIT.js} +2 -2
- package/dist/cli/chunks/{dist-node-2DGVQGLS.js → dist-node-A3Y26MEI.js} +2 -2
- package/dist/cli/chunks/{domain-handler-RRA4ZOMF.js → domain-handler-WV6SFXRB.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-IVZEZ5RB.js → domain-plugins-KJIF6Z2B.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-DOBI67K6.js → domain-transfer-L3F6AES2.js} +2 -2
- package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-VNIEOVPO.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
- package/dist/cli/chunks/{eval-QV4LVPUF.js → eval-YGEZNUVE.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-DAPKT763.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
- package/dist/cli/chunks/{fast-paths-WVRFPHX7.js → fast-paths-6JYK7RYQ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-O7ZXDDCD.js → feature-flags-DKXMDVPE.js} +2 -2
- package/dist/cli/chunks/{feature-flags-DEFTUIYT.js → feature-flags-RBH2GDSR.js} +2 -2
- package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
- package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-LS4LZJDR.js → gnn-wrapper-MV54UC4C.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-RFTERD4K.js → heartbeat-handler-7DKMVQQH.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
- package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-GPKGFFHY.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-PHL3F2PR.js → hnswlib-node-5BIESSCK.js} +2 -2
- package/dist/cli/chunks/{hooks-GYJ6D4QM.js → hooks-3EETRM62.js} +28 -28
- package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-YGEQPCKJ.js → hypergraph-engine-RSWCB2D3.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ZIMM647V.js → hypergraph-handler-552LXKL3.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
- package/dist/cli/chunks/{init-guard-VOMBXJXG.js → init-guard-OTDBJ5HD.js} +2 -2
- package/dist/cli/chunks/{init-handler-PSMUBWK5.js → init-handler-3FK3TKEA.js} +6 -6
- package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
- package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2YNTFBWJ.js → kilocode-installer-KZ2O4LF3.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-XHJDPVAZ.js → kiro-installer-MLCCXRF7.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
- package/dist/cli/chunks/{learning-GNSIDRNG.js → learning-QUCMBD77.js} +3 -3
- package/dist/cli/chunks/{llm-router-LQDM7IU2.js → llm-router-PDEV3UP2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
- package/dist/cli/chunks/{load-YATHI72E.js → load-XFVVLO7E.js} +2 -2
- package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
- package/dist/cli/chunks/{mcp-4Y6GDLYK.js → mcp-74G3CL2S.js} +2 -2
- package/dist/cli/chunks/{memory-OUW3L7H2.js → memory-XIFM6JNX.js} +5 -5
- package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
- package/dist/cli/chunks/{memory-handlers-G3LFF53U.js → memory-handlers-ZCKURV6S.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-UBZJXAD2.js → multi-model-executor-7L4W3O2Q.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-AMMNWVH5.js → opencode-installer-BPG422LF.js} +2 -2
- package/dist/cli/chunks/{orchestrator-Y44WDOER.js → orchestrator-OEAFLAEV.js} +58 -20
- package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-ESR42RME.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
- package/dist/cli/chunks/{pipeline-EDTS6OSC.js → pipeline-VWTYUZB7.js} +2 -2
- package/dist/cli/chunks/{platform-5WONJSUX.js → platform-WFJJ3X2E.js} +2 -2
- package/dist/cli/chunks/{plugin-IJXPCLD4.js → plugin-744TPUSG.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-5ECKGZK6.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
- package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
- package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
- package/dist/cli/chunks/{protocol-handler-DRD3GVNW.js → protocol-handler-JIBILI74.js} +2 -2
- package/dist/cli/chunks/{prove-KTGW2HMJ.js → prove-MNOL5FYW.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
- package/dist/cli/chunks/{quality-DV2WPRRS.js → quality-JEGBDGGX.js} +2 -2
- package/dist/cli/chunks/{quality-gate-HFUAFVZC.js → quality-gate-SYJ6ROMI.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
- package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
- package/dist/cli/chunks/{ref-validation-QWSKS5OY.js → ref-validation-RRHUFW2N.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-RBAYRCHX.js → roocode-installer-XFO6JSVN.js} +2 -2
- package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
- package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
- package/dist/cli/chunks/{routing-handler-FMPP3XKO.js → routing-handler-L2K3JASE.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-KZZT4HWF.js → ruvector-commands-A6CINHGM.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-7CHEV35N.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-Q2TH52SN.js → rvf-store-integrity-IR33TGQS.js} +2 -2
- package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
- package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
- package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
- package/dist/cli/chunks/{security-CUEA3UIM.js → security-Z5GDE2IH.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-DROMBRV2.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-DBNABOP7.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
- package/dist/cli/chunks/{standalone-memory-IAHA3M6B.js → standalone-memory-SKSZG7P5.js} +2 -2
- package/dist/cli/chunks/{status-handler-AFUCASTX.js → status-handler-766YOOMJ.js} +2 -2
- package/dist/cli/chunks/{structural-health-AQRV6JJ6.js → structural-health-M45FNOLT.js} +2 -2
- package/dist/cli/chunks/{sync-GX7FMJHL.js → sync-6CJ24B5T.js} +2 -2
- package/dist/cli/chunks/{sync-XW5TLZ7M.js → sync-B2U366I3.js} +2 -2
- package/dist/cli/chunks/{task-handler-TFKVUTNF.js → task-handler-P6IFLCKP.js} +17 -15
- package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
- package/dist/cli/chunks/{test-D2XDJNDX.js → test-TODH7KRF.js} +4 -4
- package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
- package/dist/cli/chunks/{test-scheduling-TS6I2PR7.js → test-scheduling-VMVMVRHT.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-HBBLPCZ3.js → token-bootstrap-XQW7BMCK.js} +2 -2
- package/dist/cli/chunks/{token-usage-3MBUX4PR.js → token-usage-JCZEIRKO.js} +2 -2
- package/dist/cli/chunks/{transformers-ZWMQO3L2.js → transformers-U2ML3OHE.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
- package/dist/cli/chunks/{types-5YEMGPSQ.js → types-GGEPCHP6.js} +2 -2
- package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
- package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
- package/dist/cli/chunks/{upgrade-2TPBKIHI.js → upgrade-T5GRM7HS.js} +2 -2
- package/dist/cli/chunks/{validate-XRAXXFW6.js → validate-XMUJPLP3.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-IYSCS3BZ.js → validate-swarm-KJLF7JEH.js} +2 -2
- package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-PZQ3ZG2P.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-U6XWFRVT.js → windsurf-installer-33FBTXJU.js} +2 -2
- package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
- package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
- package/dist/cli/chunks/{witness-chain-repair-K7YX2AO6.js → witness-chain-repair-VWBO4NXE.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-GUTC3W7N.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-YBNKMOP6.js → witness-key-manager-WNVPH2Z3.js} +2 -2
- package/dist/cli/chunks/{workflow-UAJUILFQ.js → workflow-6QR5MQTO.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
- package/dist/cli/chunks/{wrappers-AVZ3GPAL.js → wrappers-EHOL62TS.js} +2 -2
- package/dist/cli/commands/ci.js +7 -0
- package/dist/cli/commands/coverage.js +7 -1
- package/dist/cli/commands/fleet.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
- package/dist/cli/handlers/task-handler.js +6 -0
- package/dist/cli/utils/coverage-verdict.d.ts +11 -2
- package/dist/cli/utils/coverage-verdict.js +26 -6
- package/dist/cli/utils/fleet-operation.d.ts +5 -0
- package/dist/cli/utils/fleet-operation.js +7 -1
- package/dist/cli/utils/fleet-result.d.ts +5 -3
- package/dist/cli/utils/fleet-result.js +9 -3
- package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
- package/dist/coordination/handlers/coverage-collection.js +2 -1
- package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
- package/dist/coordination/handlers/coverage-evidence.js +159 -0
- package/dist/coordination/handlers/coverage-handlers.js +16 -3
- package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
- package/dist/coordination/handlers/coverage-scope.js +321 -0
- package/dist/coordination/handlers/coverage-target.d.ts +9 -0
- package/dist/coordination/handlers/coverage-target.js +15 -5
- package/dist/coordination/handlers/handler-utils.d.ts +5 -0
- package/dist/coordination/handlers/handler-utils.js +8 -4
- package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
- package/dist/init/phases/10-workers.js +42 -4
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +23 -1
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +50 -15
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +7 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +8 -0
- package/dist/learning/embedder-endpoint-client.d.ts +8 -0
- package/dist/learning/embedder-endpoint-client.js +20 -0
- package/dist/learning/embedder-recovery.d.ts +63 -0
- package/dist/learning/embedder-recovery.js +94 -0
- package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
- package/dist/learning/qe-reasoning-bank.d.ts +21 -0
- package/dist/learning/qe-reasoning-bank.js +54 -8
- package/dist/learning/real-embeddings.d.ts +23 -0
- package/dist/learning/real-embeddings.js +69 -2
- package/dist/learning/real-qe-reasoning-bank.d.ts +24 -4
- package/dist/learning/real-qe-reasoning-bank.js +58 -20
- package/dist/logging/redaction.js +142 -12
- package/dist/mcp/bundle.js +504 -492
- package/dist/mcp/daemon-mode.d.ts +126 -0
- package/dist/mcp/daemon-mode.js +257 -0
- package/dist/mcp/entry.d.ts +4 -0
- package/dist/mcp/entry.js +50 -2
- package/dist/mcp/handlers/domain-handler-configs.js +5 -0
- package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
- package/dist/mcp/handlers/orchestrate-routes.js +53 -0
- package/dist/mcp/handlers/task-handlers.d.ts +11 -2
- package/dist/mcp/handlers/task-handlers.js +50 -5
- package/dist/mcp/protocol-server.js +3 -0
- package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
- package/dist/mcp/services/reasoning-bank-service.js +9 -0
- package/dist/mcp/types.d.ts +14 -0
- package/dist/routing/advisor/redaction.js +22 -2
- package/dist/shared/llm/providers/response-deadline.js +16 -2
- package/dist/shared/types/index.js +3 -1
- package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
- package/package.json +3 -3
- package/dist/cli/chunks/adapter-V4GSGOOK.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +0 -2
- package/dist/cli/chunks/base-AK7BXBX2.js +0 -2
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +0 -2
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +0 -6
- package/dist/cli/chunks/chunk-72ZBJD2E.js +0 -3
- package/dist/cli/chunks/chunk-EBPJY4DI.js +0 -3
- package/dist/cli/chunks/chunk-HJ3XNTTJ.js +0 -2
- package/dist/cli/chunks/chunk-IO5537OM.js +0 -2
- package/dist/cli/chunks/chunk-IW6WDGHM.js +0 -2
- package/dist/cli/chunks/chunk-LRL56ZYL.js +0 -21
- package/dist/cli/chunks/chunk-VLD7Z2ED.js +0 -13
- package/dist/cli/chunks/chunk-VO3DRK4P.js +0 -3
- package/dist/cli/chunks/ci-6GUFAZMJ.js +0 -81
- package/dist/cli/chunks/client-HL2COSFM.js +0 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +0 -2
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +0 -2
- package/dist/cli/chunks/dream-T6EP7B3F.js +0 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +0 -2
- package/dist/cli/chunks/fleet-FVAUMKUT.js +0 -46
- package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +0 -2
- package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +0 -2
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +0 -2
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +0 -2
- package/dist/cli/chunks/init-wizard-FUC7KDVX.js +0 -2
- package/dist/cli/chunks/kernel-ZCPMCVMW.js +0 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +0 -2
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +0 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +0 -2
- package/dist/cli/chunks/memory-backend-AAMQG6WH.js +0 -2
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +0 -2
- package/dist/cli/chunks/project-root-7QL4KP5C.js +0 -2
- package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +0 -2
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +0 -2
- package/dist/cli/chunks/real-embeddings-RQRVOKVM.js +0 -2
- package/dist/cli/chunks/router-LQB5SWAF.js +0 -2
- package/dist/cli/chunks/routing-feedback-OEEXA55N.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +0 -2
- package/dist/cli/chunks/safe-db-PE6G3L55.js +0 -2
- package/dist/cli/chunks/schedule-OLKQ6QYW.js +0 -2
- package/dist/cli/chunks/scheduler-LSGBDFAT.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +0 -2
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +0 -9
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +0 -2
- package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +0 -2
- package/dist/cli/chunks/unified-persistence-UCV7YETW.js +0 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +0 -2
- package/dist/cli/chunks/witness-chain-CVIWYTD2.js +0 -2
- package/dist/cli/chunks/witness-chain-VBKORKOX.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +0 -2
|
@@ -13,6 +13,7 @@ import { toErrorMessage } from '../../shared/error-utils.js';
|
|
|
13
13
|
import { ALL_DOMAINS, invalidPriorityMessage, isDomainName, isPriority } from '../../shared/types/index.js';
|
|
14
14
|
import { validateIndexPaths, validateIndexTaskPayload } from '../../domains/code-intelligence/index-path-guard.js';
|
|
15
15
|
import { routeInferredTask } from './orchestrate-routes.js';
|
|
16
|
+
import { getTaskExecutor } from './handler-factory.js';
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Task Type to Workflow Mapping (Issue #206)
|
|
18
19
|
// Maps TaskTypes to their associated workflow IDs for auto-execution
|
|
@@ -111,6 +112,11 @@ export async function handleTaskList(params) {
|
|
|
111
112
|
error: 'Fleet not initialized. Call fleet_init first.',
|
|
112
113
|
};
|
|
113
114
|
}
|
|
115
|
+
// A priority outside the allowed set is an error, not an empty list.
|
|
116
|
+
// Parity with `aqe task list --priority`.
|
|
117
|
+
if (params.priority !== undefined && !isPriority(params.priority)) {
|
|
118
|
+
return { success: false, error: invalidPriorityMessage(params.priority) };
|
|
119
|
+
}
|
|
114
120
|
const { queen } = getFleetState();
|
|
115
121
|
try {
|
|
116
122
|
const tasks = queen.listTasks({
|
|
@@ -250,6 +256,11 @@ async function getOrchestrateLearningContext(task, guidanceDomain, patternDomain
|
|
|
250
256
|
learning: { patternSearch: 'unavailable', reason: toErrorMessage(error) },
|
|
251
257
|
};
|
|
252
258
|
}
|
|
259
|
+
// #1204: a background embedder retry can finish while this call runs.
|
|
260
|
+
// Report vector matching only if the embedder was usable for the whole
|
|
261
|
+
// call, so hints found by text alone are never labelled vector.
|
|
262
|
+
const patternStatusBefore = service.getPatternSearchStatus();
|
|
263
|
+
const experienceStatusBefore = service.getExperienceGuidanceStatus();
|
|
253
264
|
const experienceGuidance = await service.getExperienceGuidance(task, guidanceDomain);
|
|
254
265
|
// Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
|
|
255
266
|
// (experienceGuidance). Without this, only past trajectories influenced
|
|
@@ -258,13 +269,25 @@ async function getOrchestrateLearningContext(task, guidanceDomain, patternDomain
|
|
|
258
269
|
const patternHintMatches = await service
|
|
259
270
|
.searchPatternMatches(task, { limit: 5, domain: patternDomain })
|
|
260
271
|
.catch(() => []);
|
|
261
|
-
const status = service.getPatternSearchStatus();
|
|
272
|
+
const status = notVectorIfEither(patternStatusBefore, service.getPatternSearchStatus());
|
|
273
|
+
const experienceStatusAfter = service.getExperienceGuidanceStatus();
|
|
274
|
+
const experienceStatus = experienceStatusBefore && experienceStatusAfter
|
|
275
|
+
? notVectorIfEither(experienceStatusBefore, experienceStatusAfter)
|
|
276
|
+
: experienceStatusAfter;
|
|
262
277
|
return {
|
|
263
278
|
experienceGuidance,
|
|
264
279
|
patternHintMatches,
|
|
265
|
-
learning: {
|
|
280
|
+
learning: {
|
|
281
|
+
patternSearch: status.mode,
|
|
282
|
+
...(status.reason ? { reason: status.reason } : {}),
|
|
283
|
+
...(experienceStatus ? { experienceGuidance: experienceStatus } : {}),
|
|
284
|
+
},
|
|
266
285
|
};
|
|
267
286
|
}
|
|
287
|
+
/** #1204: the status before the call unless it was vector; otherwise the one after. */
|
|
288
|
+
function notVectorIfEither(before, after) {
|
|
289
|
+
return before.mode === 'vector' ? after : before;
|
|
290
|
+
}
|
|
268
291
|
export async function handleTaskOrchestrate(params) {
|
|
269
292
|
if (!isFleetInitialized()) {
|
|
270
293
|
return {
|
|
@@ -280,6 +303,11 @@ export async function handleTaskOrchestrate(params) {
|
|
|
280
303
|
return { success: false, error: filePaths.error.message };
|
|
281
304
|
}
|
|
282
305
|
}
|
|
306
|
+
// #1117: an unrecognised priority used to fall through to p1 (and a
|
|
307
|
+
// requested p0 was downgraded). Reject it up front, as task_submit does.
|
|
308
|
+
if (params.priority !== undefined && mapPriority(params.priority) === undefined) {
|
|
309
|
+
return { success: false, error: invalidOrchestratePriorityMessage(params.priority) };
|
|
310
|
+
}
|
|
283
311
|
const { queen, workflowOrchestrator } = getFleetState();
|
|
284
312
|
try {
|
|
285
313
|
// ADR-051: Route task to optimal model tier BEFORE execution
|
|
@@ -306,7 +334,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
306
334
|
const { experienceGuidance, patternHintMatches, learning } = await getOrchestrateLearningContext(params.task, params.context?.project, params.context?.project ?? inferredDomain);
|
|
307
335
|
// Parse task description to determine task type
|
|
308
336
|
const taskType = inferTaskType(params.task);
|
|
309
|
-
const priority = mapPriority(params.priority
|
|
337
|
+
const priority = mapPriority(params.priority ?? 'medium') ?? 'p2';
|
|
310
338
|
// Issue #206: Check if this task type has an associated workflow
|
|
311
339
|
const workflowId = TASK_WORKFLOW_MAP[taskType];
|
|
312
340
|
if (workflowId && workflowOrchestrator) {
|
|
@@ -391,6 +419,9 @@ export async function handleTaskOrchestrate(params) {
|
|
|
391
419
|
}
|
|
392
420
|
const submitType = route.kind === 'route' ? route.type : taskType;
|
|
393
421
|
const targetDomains = route.kind === 'route' ? [route.domain] : [];
|
|
422
|
+
// #1200: a caller-owned task runs through the MCP task executor, as the
|
|
423
|
+
// domain's own tool does; the Queen does not dispatch it.
|
|
424
|
+
const callerExecutor = route.kind === 'route' && route.executionOwner === 'caller' ? getTaskExecutor() : null;
|
|
394
425
|
// #1081: the type must have a domain handler. Otherwise the Queen can
|
|
395
426
|
// only fail the task at dispatch, so reject it here with the reason.
|
|
396
427
|
const executable = queen.validateTaskExecutable(submitType, targetDomains);
|
|
@@ -424,6 +455,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
424
455
|
Object.assign(taskPayload, route.payload);
|
|
425
456
|
const result = await queen.submitTask({
|
|
426
457
|
type: submitType,
|
|
458
|
+
...(callerExecutor ? { executionOwner: 'caller' } : {}),
|
|
427
459
|
priority,
|
|
428
460
|
targetDomains,
|
|
429
461
|
payload: {
|
|
@@ -478,6 +510,14 @@ export async function handleTaskOrchestrate(params) {
|
|
|
478
510
|
// Issue N1: Trajectory auto-close is handled by subscribeTrajectoryEvents(),
|
|
479
511
|
// which listens for TaskCompleted/TaskFailed on the event router.
|
|
480
512
|
// No per-task polling needed.
|
|
513
|
+
// #1200: run a caller-owned task after its trajectory started, without
|
|
514
|
+
// waiting: the executor's TaskCompleted / TaskFailed settle it for task_status.
|
|
515
|
+
const execution = callerExecutor ? queen.getTaskStatus(taskId) : undefined;
|
|
516
|
+
if (callerExecutor && execution) {
|
|
517
|
+
void callerExecutor.execute(execution.task).catch(error => {
|
|
518
|
+
console.error(`[TaskOrchestrate] Task ${taskId} failed to execute: ${toErrorMessage(error)}`);
|
|
519
|
+
});
|
|
520
|
+
}
|
|
481
521
|
// Trajectory judge: opt-in LLM scoring of recent unscored trajectories.
|
|
482
522
|
// Hook-created rows in qe_trajectories never receive feedback unless
|
|
483
523
|
// something goes back and judges them. This catches up by scoring ≤5
|
|
@@ -768,7 +808,9 @@ function inferTaskType(description) {
|
|
|
768
808
|
return 'generate-tests';
|
|
769
809
|
}
|
|
770
810
|
/**
|
|
771
|
-
* Map priority
|
|
811
|
+
* Map a task_orchestrate priority to the canonical Priority type.
|
|
812
|
+
* Accepts the named levels and the canonical p0-p3 values; returns
|
|
813
|
+
* undefined for anything else so the caller can reject it (#1117).
|
|
772
814
|
*/
|
|
773
815
|
function mapPriority(priority) {
|
|
774
816
|
switch (priority) {
|
|
@@ -781,9 +823,12 @@ function mapPriority(priority) {
|
|
|
781
823
|
case 'low':
|
|
782
824
|
return 'p3';
|
|
783
825
|
default:
|
|
784
|
-
return
|
|
826
|
+
return isPriority(priority) ? priority : undefined;
|
|
785
827
|
}
|
|
786
828
|
}
|
|
829
|
+
function invalidOrchestratePriorityMessage(value) {
|
|
830
|
+
return `${invalidPriorityMessage(value)} (or critical, high, medium, low)`;
|
|
831
|
+
}
|
|
787
832
|
/**
|
|
788
833
|
* Record a task outcome for ReasoningBank learning
|
|
789
834
|
* ADR-051: Enables cross-session learning from task execution
|
|
@@ -684,6 +684,8 @@ export class MCPProtocolServer {
|
|
|
684
684
|
isCacheable: false,
|
|
685
685
|
parameters: [
|
|
686
686
|
{ name: 'status', type: 'string', description: 'Filter by status' },
|
|
687
|
+
{ name: 'priority', type: 'string', description: 'Filter by priority', enum: ['p0', 'p1', 'p2', 'p3'] },
|
|
688
|
+
{ name: 'domain', type: 'string', description: 'Filter by assigned domain' },
|
|
687
689
|
{ name: 'limit', type: 'number', description: 'Maximum results', default: 50 },
|
|
688
690
|
],
|
|
689
691
|
},
|
|
@@ -722,6 +724,7 @@ export class MCPProtocolServer {
|
|
|
722
724
|
{ name: 'task', type: 'string', description: 'Task description', required: true },
|
|
723
725
|
{ name: 'strategy', type: 'string', description: 'Execution strategy', enum: ['parallel', 'sequential', 'adaptive'] },
|
|
724
726
|
{ name: 'filePaths', type: 'array', description: 'Project files the task works on. A security scan or quality assessment runs on these files and is refused without them.', items: { type: 'string' } },
|
|
727
|
+
{ name: 'priority', type: 'string', description: 'Task priority (default: medium/p2)', enum: ['p0', 'p1', 'p2', 'p3', 'critical', 'high', 'medium', 'low'] },
|
|
725
728
|
],
|
|
726
729
|
},
|
|
727
730
|
handler: (params) => handleTaskOrchestrate(params),
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - Pattern evolution and consolidation
|
|
12
12
|
* - Synchronous learning (no fire-and-forget)
|
|
13
13
|
*/
|
|
14
|
-
import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
|
|
14
|
+
import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type ExperienceGuidanceStatus, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
|
|
15
15
|
import { type RealQERoutingRequest, type RealQERoutingResult, type RealQEReasoningBankStats, type PatternSearchStatus, type RealQEPatternSearchResult } from '../../learning/real-qe-reasoning-bank.js';
|
|
16
16
|
import type { QEPattern, QEDomain } from '../../learning/qe-patterns.js';
|
|
17
17
|
/**
|
|
@@ -210,6 +210,11 @@ export declare class ReasoningBankService {
|
|
|
210
210
|
}): Promise<RealQEPatternSearchResult[]>;
|
|
211
211
|
/** #1022: whether pattern search uses vectors or text matching only. */
|
|
212
212
|
getPatternSearchStatus(): PatternSearchStatus;
|
|
213
|
+
/**
|
|
214
|
+
* #1204: whether similar-experience guidance can use vectors; null when
|
|
215
|
+
* experience replay is disabled or the service is disposed.
|
|
216
|
+
*/
|
|
217
|
+
getExperienceGuidanceStatus(): ExperienceGuidanceStatus | null;
|
|
213
218
|
/**
|
|
214
219
|
* Get service statistics
|
|
215
220
|
*/
|
|
@@ -519,6 +519,15 @@ export class ReasoningBankService {
|
|
|
519
519
|
getPatternSearchStatus() {
|
|
520
520
|
return this.enhancedAdapter.getPatternSearchStatus();
|
|
521
521
|
}
|
|
522
|
+
/**
|
|
523
|
+
* #1204: whether similar-experience guidance can use vectors; null when
|
|
524
|
+
* experience replay is disabled or the service is disposed.
|
|
525
|
+
*/
|
|
526
|
+
getExperienceGuidanceStatus() {
|
|
527
|
+
if (!this.config.enableExperienceReplay || this.disposed)
|
|
528
|
+
return null;
|
|
529
|
+
return this.enhancedAdapter.getExperienceGuidanceStatus();
|
|
530
|
+
}
|
|
522
531
|
/**
|
|
523
532
|
* Get service statistics
|
|
524
533
|
*/
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -584,6 +584,20 @@ export interface CoverageAnalyzeResult {
|
|
|
584
584
|
* this is "no measurement", never 0%.
|
|
585
585
|
*/
|
|
586
586
|
unmeasured?: boolean;
|
|
587
|
+
/**
|
|
588
|
+
* #1154: `insufficient-evidence` when source files under the target are not
|
|
589
|
+
* in the report, or the report is older than the sources. The figures then
|
|
590
|
+
* cover the measured files only and must not be read as a pass.
|
|
591
|
+
*/
|
|
592
|
+
evidenceStatus?: 'complete' | 'insufficient-evidence';
|
|
593
|
+
/** #1154: source files under the target with no entry in the report. */
|
|
594
|
+
unmeasuredFiles?: string[];
|
|
595
|
+
/** #1154: the report is older than these source files. */
|
|
596
|
+
staleReport?: {
|
|
597
|
+
reportPath: string;
|
|
598
|
+
reportModified: string;
|
|
599
|
+
newerFiles: string[];
|
|
600
|
+
};
|
|
587
601
|
/** Caveats the caller should surface (e.g. "no instrumentation ran"). */
|
|
588
602
|
warning?: string;
|
|
589
603
|
}
|
|
@@ -26,7 +26,7 @@ const PATTERNS = [
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
category: 'api_key_header',
|
|
29
|
-
regex: /(Authorization:\s*Bearer\s+)\S+/gi,
|
|
29
|
+
regex: /(Authorization:\s*(?:Bearer|Token)\s+)\S+/gi,
|
|
30
30
|
replacement: '$1<REDACTED:api_key>',
|
|
31
31
|
modes: ['strict', 'balanced'],
|
|
32
32
|
},
|
|
@@ -38,7 +38,8 @@ const PATTERNS = [
|
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
category: 'private_key',
|
|
41
|
-
|
|
41
|
+
// A block with no END line (truncated output) is redacted to end of input.
|
|
42
|
+
regex: /-----BEGIN\s[\w\s]*PRIVATE KEY-----(?:[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----|[\s\S]*)/g,
|
|
42
43
|
replacement: '<REDACTED:private_key>',
|
|
43
44
|
modes: ['strict', 'balanced'],
|
|
44
45
|
},
|
|
@@ -66,6 +67,25 @@ const PATTERNS = [
|
|
|
66
67
|
replacement: '<REDACTED:slack_token>',
|
|
67
68
|
modes: ['strict', 'balanced'],
|
|
68
69
|
},
|
|
70
|
+
{
|
|
71
|
+
category: 'huggingface_token',
|
|
72
|
+
regex: /\bhf_[A-Za-z0-9]{30,}\b/g,
|
|
73
|
+
replacement: '<REDACTED:huggingface_token>',
|
|
74
|
+
modes: ['strict', 'balanced'],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
category: 'npm_token',
|
|
78
|
+
regex: /\bnpm_[A-Za-z0-9]{36,}\b/g,
|
|
79
|
+
replacement: '<REDACTED:npm_token>',
|
|
80
|
+
modes: ['strict', 'balanced'],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
// Cognitum API keys; the trailing lookahead skips snake_case identifiers.
|
|
84
|
+
category: 'cognitum_key',
|
|
85
|
+
regex: /\bcog_[A-Za-z0-9-]{20,}(?!\w)/g,
|
|
86
|
+
replacement: '<REDACTED:cognitum_key>',
|
|
87
|
+
modes: ['strict', 'balanced'],
|
|
88
|
+
},
|
|
69
89
|
{
|
|
70
90
|
category: 'stripe_key',
|
|
71
91
|
regex: /\b(sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_)[A-Za-z0-9]{10,}\b/g,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const IDLE_READ_AHEAD_BYTES = 1024 * 1024;
|
|
1
2
|
/**
|
|
2
3
|
* Bound headers and bodies; streaming callers may use an idle body deadline.
|
|
3
4
|
* `maxDurationMs` adds an absolute cap from the start of the request, so an
|
|
@@ -40,22 +41,35 @@ export async function fetchWithResponseDeadline(url, options, timeoutMs, timeout
|
|
|
40
41
|
resetIdleDeadline();
|
|
41
42
|
const reader = response.body.getReader();
|
|
42
43
|
let finished = false;
|
|
44
|
+
let expiry;
|
|
43
45
|
const finish = () => {
|
|
44
46
|
finished = true;
|
|
45
47
|
clearTimers();
|
|
46
48
|
};
|
|
49
|
+
// Idle streams read ahead of the consumer, so the deadline measures network
|
|
50
|
+
// silence rather than consumer pauses (#962). The read-ahead is bounded; a
|
|
51
|
+
// consumer stalled behind a full buffer still meets the deadline.
|
|
52
|
+
const highWaterMark = bodyDeadline === 'idle' ? IDLE_READ_AHEAD_BYTES : 0;
|
|
53
|
+
// Bytes already received are delivered before the deadline error surfaces.
|
|
54
|
+
const failWhenDrained = (controller) => {
|
|
55
|
+
if (expiry && controller.desiredSize === highWaterMark)
|
|
56
|
+
controller.error(expiry);
|
|
57
|
+
};
|
|
47
58
|
const body = new ReadableStream({
|
|
48
59
|
start(controller) {
|
|
49
60
|
expireBody = error => {
|
|
50
61
|
if (finished)
|
|
51
62
|
return;
|
|
52
63
|
finish();
|
|
53
|
-
|
|
64
|
+
expiry = error;
|
|
65
|
+
failWhenDrained(controller);
|
|
54
66
|
// Cancel also settles any pending read before releasing its lock.
|
|
55
67
|
void reader.cancel(error).catch(() => { }).finally(() => reader.releaseLock());
|
|
56
68
|
};
|
|
57
69
|
},
|
|
58
70
|
async pull(controller) {
|
|
71
|
+
if (expiry)
|
|
72
|
+
return failWhenDrained(controller);
|
|
59
73
|
try {
|
|
60
74
|
const result = await reader.read();
|
|
61
75
|
if (finished)
|
|
@@ -89,7 +103,7 @@ export async function fetchWithResponseDeadline(url, options, timeoutMs, timeout
|
|
|
89
103
|
reader.releaseLock();
|
|
90
104
|
}
|
|
91
105
|
},
|
|
92
|
-
}, { highWaterMark
|
|
106
|
+
}, new ByteLengthQueuingStrategy({ highWaterMark }));
|
|
93
107
|
const bounded = new Response(body, {
|
|
94
108
|
status: response.status,
|
|
95
109
|
statusText: response.statusText,
|
|
@@ -43,6 +43,8 @@ export function isPriority(value) {
|
|
|
43
43
|
}
|
|
44
44
|
/** Shared rejection message so `task_submit` and `aqe task submit` stay in parity (#1108). */
|
|
45
45
|
export function invalidPriorityMessage(value) {
|
|
46
|
-
|
|
46
|
+
// An empty string would otherwise render as "Invalid priority: ." (#1117).
|
|
47
|
+
const shown = value === '' ? '(empty)' : String(value);
|
|
48
|
+
return `Invalid priority: ${shown}. Valid priorities: ${ALL_PRIORITIES.join(', ')}`;
|
|
47
49
|
}
|
|
48
50
|
//# sourceMappingURL=index.js.map
|
|
@@ -79,7 +79,14 @@ export class InfraAwareAgentProvider {
|
|
|
79
79
|
* Failing services get responsiveness=0, healthy services get 1.0.
|
|
80
80
|
*/
|
|
81
81
|
getInfraAgentHealth(agentId) {
|
|
82
|
-
|
|
82
|
+
// The prefix is a literal, not a pattern: createInfraAgents() builds ids
|
|
83
|
+
// by concatenation and getAgentHealth() routes by startsWith(). Strip it
|
|
84
|
+
// the same way so a prefix containing regex metacharacters still recovers
|
|
85
|
+
// the real service name instead of silently reporting a down service as
|
|
86
|
+
// healthy (and so an unparseable prefix can't throw).
|
|
87
|
+
const serviceName = agentId.startsWith(this.prefix)
|
|
88
|
+
? agentId.slice(this.prefix.length)
|
|
89
|
+
: agentId;
|
|
83
90
|
const failingServices = this.observer.getFailingServices();
|
|
84
91
|
const isFailing = failingServices.has(serviceName);
|
|
85
92
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.12",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
"@types/ws": "^8.18.1",
|
|
272
272
|
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
273
273
|
"@typescript-eslint/parser": "^8.59.3",
|
|
274
|
-
"@vitest/coverage-v8": "^5.0.
|
|
274
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
275
275
|
"ajv": "^8.20.0",
|
|
276
276
|
"ajv-formats": "^3.0.1",
|
|
277
277
|
"dotenv": "^17.2.3",
|
|
@@ -282,7 +282,7 @@
|
|
|
282
282
|
"msw": "^2.12.7",
|
|
283
283
|
"tsx": "^4.21.0",
|
|
284
284
|
"vibium": "^26.8.21",
|
|
285
|
-
"vitest": "^5.0.
|
|
285
|
+
"vitest": "^5.0.5"
|
|
286
286
|
},
|
|
287
287
|
"engines": {
|
|
288
288
|
"node": ">=22.13.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-UTTSH4NH.js";import"./chunk-HDNWSKHA.js";import"./chunk-YPX2TV3M.js";import"./chunk-JFLU7L3W.js";import"./chunk-DDEOZPWJ.js";import"./chunk-CFWGGRE7.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-FWSGPE3V.js";import"./chunk-I36CRDHF.js";import"./chunk-6NA3KZZT.js";import"./chunk-NTB342NJ.js";import"./chunk-JGJXXAS6.js";import"./chunk-35M2X3C5.js";import"./chunk-7HEMJHPP.js";import"./chunk-DOBZPSKE.js";import"./chunk-V5AADCBC.js";import"./chunk-CO3DX2AX.js";import"./chunk-KDI5JOYZ.js";import"./chunk-NT7JRHMH.js";import"./chunk-CIAL4YRY.js";import"./chunk-AUUJBXWX.js";import"./chunk-YNOCQ2SL.js";import"./chunk-IOZRKXR5.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-VLD7Z2ED.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-IW6WDGHM.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-DOFREOPQ.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-Z2EA7A4Z.js";import"./chunk-J4JMCZVA.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-ZMHCMJ4J.js";import"./chunk-RTY7VSZB.js";import"./chunk-OV5RPLKV.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-HFFPYC4G.js";import"./chunk-ZMHCMJ4J.js";import"./chunk-RTY7VSZB.js";import"./chunk-OV5RPLKV.js";import"./chunk-LD5CFK53.js";import"./chunk-XGPTZUKQ.js";import"./chunk-JFLU7L3W.js";import"./chunk-WM3SRRA6.js";import"./chunk-XGBU3KEM.js";import"./chunk-G2IJFNZS.js";import"./chunk-M5XYIQYZ.js";import"./chunk-NQZNMCZU.js";import"./chunk-5N25I53C.js";import"./chunk-OYJC3YON.js";import"./chunk-EJPK7OTR.js";import"./chunk-7R5HC56U.js";import"./chunk-QDESWOZP.js";import"./chunk-IO5537OM.js";import"./chunk-FZHSG75I.js";import"./chunk-VO3DRK4P.js";import"./chunk-HJ3XNTTJ.js";import"./chunk-76SNL7GU.js";import"./chunk-EH2S6AOR.js";import"./chunk-XNLIWQYE.js";import"./chunk-4MUBW4RT.js";import"./chunk-DDEOZPWJ.js";import"./chunk-XJKZ7FTR.js";import"./chunk-CFWGGRE7.js";export{a as BrowserWorkflowTool};
|
|
@@ -1,6 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a as F,c as $,d as N,e as b,f as L}from"./chunk-72ZBJD2E.js";import{c as _,d as v}from"./chunk-M7XFBSIK.js";import{c as C,e as se}from"./chunk-ITL3IN2E.js";import{c as A,d as re}from"./chunk-EH2S6AOR.js";import*as p from"fs";import*as X from"os";import*as l from"path";import*as f from"fs";import*as O from"os";import*as u from"path";se();function oe(n=process.env){let t=(n.AQE_COVERAGE_NO_EXEC??"").trim().toLowerCase();return t?t!=="false"&&t!=="0"&&t!=="no"&&t!=="off":!1}var ae=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".go",".rs",".java",".rb"]),I=new Set(["node_modules","dist","build","coverage",".git",".claude",".agentic-qe","__pycache__",".venv","target","vendor"]),W=new Set(["tests","test","__tests__","benches","examples","spec"]),ie=[/\.test\./i,/\.spec\./i,/_test\./i,/_spec\./i,/^test_/i,/^test\./i,/^conftest\./i];function y(n,t){let e=n.split(u.sep).join("/"),r=u.basename(e);if(ie.some(s=>s.test(r)))return!0;let o=e;if(t){let s=u.resolve(t).split(u.sep).join("/"),i=u.resolve(n).split(u.sep).join("/");(i===s||i.startsWith(`${s}/`))&&(o=i.slice(s.length).replace(/^\//,""))}return o.split("/").some(s=>W.has(s))}function ce(n){let t=n.split(""),e=n.length,r=0,o=(s,i)=>{for(let a=s;a<i&&a<e;a++)n[a]!==`
|
|
3
|
-
`&&(t[a]=" ")};for(;r<e;){let s=n[r];if(s==="/"&&n[r+1]==="/"){let a=n.indexOf(`
|
|
4
|
-
`,r),c=a===-1?e:a;o(r,c),r=c;continue}if(s==="/"&&n[r+1]==="*"){let a=0,c=r;for(;r<e;){if(n[r]==="/"&&n[r+1]==="*"){a++,r+=2;continue}if(n[r]==="*"&&n[r+1]==="/"){if(a--,r+=2,a===0)break;continue}r++}o(c,r);continue}let i=/^b?r(#*)"/.exec(n.slice(r,r+300));if(i){let a=`"${i[1]}`,c=r+i[0].length,g=n.indexOf(a,c),h=g===-1?e:g+a.length;o(r,h),r=h;continue}if(s==='"'){let a=r;for(r++;r<e;){if(n[r]==="\\"){r+=2;continue}if(n[r]==='"'){r++;break}r++}o(a,r);continue}if(s==="'"){let a=-1;if(n[r+1]==="\\"){let c=n.indexOf("'",r+2);c!==-1&&c<=r+5&&(a=c+1)}else n[r+2]==="'"&&(a=r+3);if(a!==-1){o(r,a),r=a;continue}}r++}return t.join("")}function le(n,t){if(t!==".rs")return[];let e=ce(n).split(`
|
|
5
|
-
`),r=[];for(let o=0;o<e.length;o++){if(!/#\s*\[\s*cfg\s*\(\s*test\s*\)\s*\]/.test(e[o]))continue;let s=-1;for(let c=o;c<Math.min(e.length,o+10);c++){let g=e[c],h=g.indexOf("{"),d=g.indexOf(";");if(d!==-1&&(h===-1||d<h))break;if(h!==-1){let x=e.slice(o,c+1).join(" ");/\bmod\s+\w+/.test(x)&&(s=c);break}}if(s===-1)continue;let i=0,a=-1;for(let c=s;c<e.length;c++){for(let g of e[c])g==="{"?i++:g==="}"&&i--;if(i<=0){a=c;break}}r.push([o+1,(a===-1?e.length-1:a)+1]),o=a===-1?e.length:a}return r}function ue(n){if(n.length===0)return 0;let t=n.split(`
|
|
6
|
-
`);return t[t.length-1]===""&&t.pop(),t.length}function U(n,t=6){let e=u.resolve(n);try{if(!f.existsSync(e))return null;f.statSync(e).isDirectory()||(e=u.dirname(e))}catch{return null}for(let r=0;r<=t;r++){if(f.existsSync(u.join(e,"Cargo.toml")))return f.realpathSync(e);let o=u.dirname(e);if(o===e)break;e=o}return null}function J(n,t=0){if(t>4)return!1;let e;try{e=f.readdirSync(n,{withFileTypes:!0})}catch{return!1}for(let r of e)if(r.isFile()&&u.extname(r.name)===".rs")return!0;for(let r of e)if(r.isDirectory()&&!I.has(r.name)&&J(u.join(n,r.name),t+1))return!0;return!1}function Fe(n){let t=U(n);if(t===null)return!1;let e=u.resolve(n);return e===t||J(e)}async function $e(n,t={}){if(oe())return null;let e=t.timeoutMs??3e5,r=U(n);if(!r)return null;let o=await C("cargo",["llvm-cov","--version"],{cwd:r,timeout:3e4});if(o.error||o.status!==0)return null;let s=u.join(f.mkdtempSync(u.join(O.tmpdir(),"aqe-rust-cov-")),"lcov.info");try{let i=await C("cargo",["llvm-cov","--lcov","--output-path",s],{cwd:r,timeout:e});if(i.error||i.status!==0||!f.existsSync(s))return null;let c=b(f.readFileSync(s,"utf-8")).files.filter(d=>!y(d.path,r));if(c.length===0)return null;let g=z(c),h=c.some(d=>d.branches.total>0);return{data:g,provenance:{method:"cargo-llvm-cov",estimated:!1,branchDataCollected:h,functionDataCollected:c.some(d=>d.functions.total>0),notes:h?[]:["cargo-llvm-cov reported no branch data (Rust branch coverage requires a nightly toolchain with -Z coverage-options=branch). Branch coverage is reported as null rather than assumed."]}}}catch{return null}finally{try{f.rmSync(u.dirname(s),{recursive:!0,force:!0})}catch{}}}var M={".rs":{fn:/\bfn\s+\w+/g,branch:/\b(if|match|while|for)\b|\?\?|\|\||&&/g},".go":{fn:/\bfunc\s+\w*/g,branch:/\b(if|switch|case|for|select)\b|\|\||&&/g},".py":{fn:/\b(def|lambda)\b/g,branch:/\b(if|elif|for|while|except)\b|\band\b|\bor\b/g},".java":{fn:/\b(public|private|protected|static)[\w<>,\s[\]]+\w+\s*\(/g,branch:/\b(if|switch|case|for|while|catch)\b|\|\||&&/g},".rb":{fn:/\bdef\s+\w+/g,branch:/\b(if|elsif|unless|case|when|while)\b|\|\||&&/g},default:{fn:/\bfunction\b|=>|\b\w+\s*\([^)]*\)\s*\{/g,branch:/\b(if|switch|case|for|while|catch)\b|\?\?|\|\||&&/g}};function fe(n){return M[n]??M.default}function P(n,t){return(n.match(new RegExp(t.source,t.flags))||[]).length}function z(n){let t=s=>n.reduce((i,a)=>i+s(a),0),e=(s,i)=>i>0?Math.round(s/i*100):0,r=t(s=>s.lines.total),o=t(s=>s.lines.covered);return{files:n,summary:{line:e(o,r),branch:e(t(s=>s.branches.covered),t(s=>s.branches.total)),function:e(t(s=>s.functions.covered),t(s=>s.functions.total)),statement:e(o,r),files:n.length}}}function pe(n){let t=[],e=n;function r(o,s){if(s>6)return;let i;try{i=f.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of i){let c=u.join(o,a.name);if(a.isDirectory()){if(I.has(a.name)||W.has(a.name))continue;r(c,s+1)}else if(a.isFile()){if(!ae.has(u.extname(a.name))||y(c,e))continue;t.push(c)}}}return r(n,0),t}function Ne(n){if(!f.existsSync(n)||!f.statSync(n).isDirectory())return null;let t=pe(n);if(t.length===0)return null;let e=t.map(r=>{let o="";try{o=v(r,{outsideRoot:"allow"})}catch{}let s=u.extname(r),i=ue(o),a=le(o,s),c=m=>a.some(([w,R])=>m>=w&&m<=R),g=a.reduce((m,[w,R])=>m+(R-w+1),0),h=Math.max(i-g,0),d=fe(s),x=P(o,d.fn),Y=a.length>0,K=ge(r),Z=Y||K,H=P(o,d.branch),Q=Math.min(H*.005,.15),ee=Math.min(h*1e-4,.1),te=Math.max(.05,Math.min(.95,Z?.85-Q-ee:.2)),j=Math.floor(h*te),D=[];for(let m=1;m<=i;m++)c(m)||D.push(m);let ne=D.slice(j);return{path:r,lines:{covered:j,total:h},branches:{covered:0,total:0},functions:{covered:0,total:x},statements:{covered:j,total:h},uncoveredLines:ne,uncoveredBranches:[]}});return{data:z(e),provenance:{method:"static-estimation",estimated:!0,branchDataCollected:!1,functionDataCollected:!1,notes:["No instrumentation ran. These numbers are a STATIC ESTIMATE derived from source shape (file size, declaration counts, presence of a test file) \u2014 they are not measured coverage and must not be reported as such.","Branch and function coverage were not collected and are reported as null."]}}}function ge(n){let t=u.extname(n),e=n.slice(0,-t.length);return[`${e}.test${t}`,`${e}.spec${t}`,`${e}_test${t}`,`${e}.test${t}`.replace("/src/","/tests/"),`${e}.spec${t}`.replace("/src/","/tests/"),`${e}${t}`.replace("/src/","/tests/")].some(o=>{try{return f.existsSync(o)}catch{return!1}})}re();var he=["package.json","pyproject.toml","setup.py","setup.cfg","go.mod","Cargo.toml","pom.xml","build.gradle","build.gradle.kts",".git"],de=["vitest.config.ts","vitest.config.js","vitest.config.mts","vitest.config.mjs","vitest.config.cts","vitest.config.cjs","vitest.workspace.ts","vitest.workspace.js","vitest.workspace.mts","vitest.workspace.mjs","vitest.workspace.json","vite.config.ts","vite.config.js","vite.config.mts","vite.config.mjs","jest.config.ts","jest.config.js","jest.config.mts","jest.config.mjs","jest.config.cts","jest.config.cjs","jest.config.json"];function G(n){return de.some(t=>p.existsSync(l.join(n,t)))?!0:T(n)?.jest!==void 0}function S(n){let t=T(n);if(!t)return null;let e={...t.devDependencies,...t.dependencies};return e.jest||e["@jest/core"]?"jest":e.mocha||e.nyc?"nyc":e.vitest?"vitest":null}function me(n){try{return p.readdirSync(n).some(t=>/^\.(mocharc|nycrc)(\.|$)/.test(t))}catch{return!1}}function ve(n,t){if(me(n))return(S(t)??"vitest")==="nyc";let e=S(n);return e===null||e===(S(t)??"vitest")}function T(n){try{let t=JSON.parse(v(l.join(n,"package.json"),{outsideRoot:"allow"}));return typeof t=="object"&&t!==null?t:null}catch{return null}}function V(n){let t=[],e=!1,o=T(n)?.workspaces,s=Array.isArray(o)?o:typeof o=="object"&&o!==null&&Array.isArray(o.packages)?o.packages:null;o!=null&&typeof o=="object"&&(e=!0),s&&t.push(...s.filter(i=>typeof i=="string"));try{let i=v(l.join(n,"pnpm-workspace.yaml"),{outsideRoot:"allow"});e=!0;let a=!1;for(let c of i.split(/\r?\n/)){let g=c.replace(/\s+#.*$/,"").trimEnd();if(/^packages\s*:/.test(g)){a=!0;continue}if(a){let h=/^\s+-\s+(.+)$/.exec(g);h?t.push(h[1].trim().replace(/^['"]|['"]$/g,"")):/^\S/.test(g)&&(a=!1)}}}catch{}return e?t:null}function be(n){let r=n.replace(/^\.\//,"").replace(/\/+$/,"").replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"\0").replace(/\*\*/g,"").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").split("\0").join("(?:.*/)?").split("").join(".*");return new RegExp(`^${r}$`)}function ye(n,t){let e=V(n);if(!e)return!1;let r=l.relative(n,t).split(l.sep).join("/");if(r===""||r.startsWith("..")||l.isAbsolute(r))return!1;let o=!1;for(let s of e){let i=s.startsWith("!"),a=i?s.slice(1):s;l.isAbsolute(a)||/^[A-Za-z]:/.test(a)||a.split(/[\\/]/).includes("..")||be(a).test(r)&&(o=!i)}return o}function k(n,t){let e=l.relative(t,n);return e===""||!e.startsWith("..")&&!l.isAbsolute(e)}function xe(n){try{return p.realpathSync(l.resolve(A(n)))}catch{return null}}function q(n,t=12){let e;try{let a=l.resolve(n);if(!p.existsSync(a))return null;let c=p.realpathSync(a);e=p.statSync(c).isDirectory()?c:l.dirname(c)}catch{return null}let r=null;try{r=p.realpathSync(X.homedir())}catch{r=null}let o=e,s=null,i=null;for(let a=0;a<=t;a++){if(r!==null&&e===r&&e!==o)return s;if(!s&&he.some(g=>p.existsSync(l.join(e,g)))){if(s=e,G(e)||!p.existsSync(l.join(e,"package.json")))return e}else if(s&&V(e)!==null)return i??=xe(o)??"",i&&k(e,i)&&k(s,i)&&ye(e,s)&&G(e)&&ve(s,e)?e:s;if(s&&p.existsSync(l.join(e,".git")))return s;let c=l.dirname(e);if(c===e)return s;e=c}return s}function We(n,t){try{let e=p.realpathSync(t),r=p.realpathSync(l.resolve(n)),o=p.statSync(r).isDirectory()?r:l.dirname(r);for(;o!==e&&k(o,e);){if(p.existsSync(l.join(o,"package.json")))return`${l.relative(e,o).split(l.sep).join("/")}/`;let s=l.dirname(o);if(s===o)break;o=s}}catch{}return null}var je=new Set(["lcov.info","coverage-final.json","coverage-summary.json","coverage.xml","cobertura-coverage.xml","cobertura.xml"]);function we(n){let t=l.basename(n).toLowerCase();return je.has(t)||t.endsWith(".lcov")||t.endsWith(".lcov.info")}async function Re(n){let t;try{t=await _(n,{outsideRoot:"allow"})}catch{return null}if(t.trim().length===0)return null;try{let e=l.basename(n).toLowerCase(),r;if(e.endsWith(".json")){let o=JSON.parse(t);if(Se(o))r=N(t);else if(Ce(o))r=$(t);else return null}else e.endsWith(".xml")?r=L(t):r=b(t);return r.files.length>0?r:null}catch{return null}}function Ce(n){let t=Object.values(n);return t.length>0&&t.every(e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.s=="object"&&typeof e.statementMap=="object")}function Se(n){let t=n.total;return typeof t=="object"&&t!==null&&typeof t.lines=="object"}function Ee(n,t){let e=l.relative(t,n);return e===""||!e.startsWith("..")&&!l.isAbsolute(e)}function E(n){try{return p.realpathSync(n)}catch{return l.resolve(n)}}function ke(n,t,e){let r=E(t),o=E(e);return o===r?[...n.files]:n.files.filter(s=>{let i=l.isAbsolute(s.path)?E(s.path):l.resolve(r,s.path);return Ee(i,o)})}function B(n,t,e,r={}){if(r.numTotalTests===0)return{status:"no-data",reason:"no-tests-ran"};let o=ke(n,t,e);if(o.length===0)return{status:"no-data",reason:"target-not-covered"};let s=o.filter(i=>!y(i.path,t));return s.length===0?{status:"no-data",reason:"test-only-report"}:{status:"measured",files:s}}async function Ue(n){let t=l.resolve(n),e;try{e=p.statSync(t)}catch{return{status:"target-missing",target:t}}if(e.isFile()&&we(t)){let s=l.dirname(t),i=q(s)??(l.basename(s)==="coverage"?l.dirname(s):s),a=await Re(t),c=a?B(a,i,i):{status:"no-data",reason:"unreadable-report"};return{status:"evaluated",target:t,projectRoot:i,source:"report-file",evaluation:c}}let r=q(t)??(e.isDirectory()?t:l.dirname(t)),o=await F(r);return o?{status:"evaluated",target:t,projectRoot:r,source:"project-report",evaluation:B(o,r,t)}:{status:"no-report",target:t,projectRoot:r}}function Je(n,t,e){let r=[n.line];e.statement!==!1&&r.push(n.statement),e.branch&&r.push(n.branch),e.function&&r.push(n.function);let o=r.reduce((s,i)=>s+i,0)/r.length;return{overall:o,meetsThreshold:o>=t}}var Te=/^Coverage is [\d.]+% below threshold/i;function ze(n,t,e,r){let o=n.filter(s=>!Te.test(s)&&(r.branch||!/branch coverage/i.test(s))&&(r.function||!/function coverage/i.test(s)));return t.meetsThreshold?o:[`Coverage is ${(e-t.overall).toFixed(1)}% below threshold. Focus on high-risk files first.`,...o]}function Ge(n){return n==="target-not-covered"||n==="no-tests-ran"}function qe(n,t,e){switch(n){case"target-missing":return`Target does not exist: ${t}`;case"unreadable-report":return`Unreadable coverage report: ${t}. It could not be parsed or lists no files. Supported: lcov.info, istanbul coverage-final.json / coverage-summary.json, Cobertura XML. Raw V8 output is not supported \u2014 convert it with c8 or your runner's istanbul reporter.`;case"test-only-report":return"The coverage report contains only test files, so there is no production coverage to report. Coverage OF a test file is not a meaningful metric. Check that your coverage tool is instrumenting your source directory.";case"target-not-covered":return`Target is UNMEASURED: the coverage data for project ${e??"?"} has no entry for any production file under ${t}. This is not 0% coverage \u2014 no measurement exists for it. Check your coverage tool's include/exclude settings, or regenerate the report.`;case"no-tests-ran":return`Target is UNMEASURED: the test runner reported running 0 tests from ${e??"?"}. This is not 0% coverage.`}}export{oe as a,U as b,Fe as c,$e as d,Ne as e,We as f,Re as g,ke as h,B as i,Ue as j,Je as k,ze as l,Ge as m,qe as n};
|
|
@@ -1,3 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{c as P}from"./chunk-TCYSBC7Y.js";import{c as J}from"./chunk-M7XFBSIK.js";import{b as E,d as q}from"./chunk-JFLU7L3W.js";import*as O from"fs/promises";import*as y from"path";q();async function Z(o){let i=[y.join(o,"coverage","coverage-final.json"),y.join(o,"coverage","lcov.info"),y.join(o,".nyc_output","coverage-final.json"),y.join(o,"coverage-final.json"),y.join(o,"coverage","coverage-summary.json"),y.join(o,"coverage.xml"),y.join(o,"htmlcov","status.json"),y.join(o,"cobertura-coverage.xml")];for(let t of i)try{let a=await J(t,{outsideRoot:"allow"});if(t.endsWith("coverage-summary.json"))return X(a);if(t.endsWith(".json"))return K(a);if(t.endsWith(".info"))return $(a);if(t.endsWith(".xml"))return G(a)}catch{}return null}function U(o){let i=new Map,t=o.statementMap||{};for(let[a,l]of Object.entries(o.s||{})){let r=t[a]?.start?.line;if(typeof r!="number")continue;let e=i.get(r);(e===void 0||e<l)&&i.set(r,l)}return i}function K(o){let i=E(o),t=[],a=0,l=0,r=0,e=0,c=0,n=0,h=0,u=0;for(let[m,g]of Object.entries(i)){let p=g,f=p.s||{},F=p.branchMap||{},v=p.b||{},R=p.f||{},s=U(p),x=s.size,C=[...s.values()].filter(d=>d>0).length,b=Object.values(v).flat().length,w=Object.values(v).flat().filter(d=>d>0).length,M=Object.keys(R).length,L=Object.values(R).filter(d=>d>0).length,I=Object.keys(f).length,B=Object.values(f).filter(d=>d>0).length,_=[...s.entries()].filter(([,d])=>d===0).map(([d])=>d),k=[];for(let[d,N]of Object.entries(v)){let W=F[d];N.forEach((D,j)=>{D===0&&W?.locations?.[j]?.start?.line&&k.push(W.locations[j].start.line)})}t.push({path:m,lines:{covered:C,total:x},branches:{covered:w,total:b},functions:{covered:L,total:M},statements:{covered:B,total:I},uncoveredLines:_.sort((d,N)=>d-N),uncoveredBranches:Array.from(new Set(k)).sort((d,N)=>d-N)}),a+=x,l+=C,r+=b,e+=w,c+=M,n+=L,h+=I,u+=B}return{files:t,summary:{line:a>0?l/a*100:0,branch:r>0?e/r*100:0,function:c>0?n/c*100:0,statement:h>0?u/h*100:0,files:t.length}}}function X(o){let i=E(o),t=e=>({covered:Number(e?.covered)||0,total:Number(e?.total)||0}),a=[];for(let[e,c]of Object.entries(i))e==="total"||typeof c!="object"||c===null||!c.lines||a.push({path:e,lines:t(c.lines),branches:t(c.branches),functions:t(c.functions),statements:t(c.statements??c.lines),uncoveredLines:[],uncoveredBranches:[]});let l=e=>a.reduce((c,n)=>({covered:c.covered+e(n).covered,total:c.total+e(n).total}),{covered:0,total:0}),r=e=>e.total>0?e.covered/e.total*100:0;return{files:a,summary:{line:r(l(e=>e.lines)),branch:r(l(e=>e.branches)),function:r(l(e=>e.functions)),statement:r(l(e=>e.statements)),files:a.length}}}function $(o){let i=[],t=o.split(`
|
|
3
|
-
`),a=null,l=0,r=0,e=0,c=0,n=0,h=0,u=[],m=[];for(let s of t)if(s.startsWith("SF:"))a=s.slice(3);else if(s.startsWith("LF:"))l=parseInt(s.slice(3),10);else if(s.startsWith("LH:"))r=parseInt(s.slice(3),10);else if(s.startsWith("BRF:"))e=parseInt(s.slice(4),10);else if(s.startsWith("BRH:"))c=parseInt(s.slice(4),10);else if(s.startsWith("FNF:"))n=parseInt(s.slice(4),10);else if(s.startsWith("FNH:"))h=parseInt(s.slice(4),10);else if(s.startsWith("DA:")){let[x,C]=s.slice(3).split(",").map(b=>parseInt(b,10));C===0&&u.push(x)}else if(s.startsWith("BRDA:")){let x=s.slice(5).split(","),C=parseInt(x[0],10),b=x[3];(b==="0"||b==="-")&&m.push(C)}else s==="end_of_record"&&a&&(i.push({path:a,lines:{covered:r,total:l},branches:{covered:c,total:e},functions:{covered:h,total:n},statements:{covered:0,total:0},uncoveredLines:Array.from(new Set(u)),uncoveredBranches:Array.from(new Set(m))}),a=null,l=r=0,e=c=0,n=h=0,u.length=0,m.length=0);let g=0,p=0,f=0,F=0,v=0,R=0;for(let s of i)g+=s.lines.total,p+=s.lines.covered,f+=s.branches.total,F+=s.branches.covered,v+=s.functions.total,R+=s.functions.covered;return{files:i,summary:{line:g>0?p/g*100:0,branch:f>0?F/f*100:0,function:v>0?R/v*100:0,statement:g>0?p/g*100:0,files:i.length}}}function G(o){let i=[];function t(f,F){let v=f.match(new RegExp(`${F}=["']([^"']*)["']`));return v?v[1]:null}let a=/<class\s[^>]*?>/g,l;for(;(l=a.exec(o))!==null;){let f=l[0],F=t(f,"filename");if(!F)continue;let v=parseFloat(t(f,"line-rate")||"NaN"),R=parseFloat(t(f,"branch-rate")||"NaN"),s=l.index,x=o.indexOf("</class>",s),C=x>s?o.slice(s,x):"",b=0,w=0,M=0,L=0,I=0,B=0,_=[],k=[],d=/<line\s([^>]*?)\/>/g,N;for(;(N=d.exec(C))!==null;){let j=N[1],S=parseInt(t(j,"number")||"0",10),A=parseInt(t(j,"hits")||"0",10),z=t(j,"branch")==="true",T=t(j,"condition-coverage");b++,A>0?w++:_.push(S),z&&(M++,(T?parseInt(T,10):A>0?100:0)===100?L++:k.push(S))}let W=/<method\s([^>]*?)>/g,D;for(;(D=W.exec(C))!==null;){I++;let j=D.index,S=C.indexOf("</method>",j);if(S>j){let A=C.slice(j,S),z=/<line\s([^>]*?)\/>/g,T=!1,H;for(;(H=z.exec(A))!==null;)if(parseInt(t(H[1],"hits")||"0",10)>0){T=!0;break}T&&B++}}b===0&&!isNaN(v)&&(b=100,w=Math.round(Math.max(0,Math.min(1,v))*100)),i.push({path:F,lines:{covered:w,total:b},branches:{covered:L,total:M},functions:{covered:B,total:I},statements:{covered:0,total:0},uncoveredLines:_,uncoveredBranches:k})}let r=0,e=0,c=0,n=0,h=0,u=0;for(let f of i)r+=f.lines.total,e+=f.lines.covered,c+=f.branches.total,n+=f.branches.covered,h+=f.functions.total,u+=f.functions.covered;let m=o.match(/<coverage\s[^>]*?>/),g=m?parseFloat(t(m[0],"line-rate")||"NaN")*100:NaN,p=m?parseFloat(t(m[0],"branch-rate")||"NaN")*100:NaN;return{files:i,summary:{line:isNaN(g)?r>0?e/r*100:0:g,branch:isNaN(p)?c>0?n/c*100:0:p,function:h>0?u/h*100:0,statement:r>0?e/r*100:0,files:i.length}}}async function ee(o,i={}){let t=[],{includeTests:a=!0,languages:l,maxFiles:r=5e3}=i,e=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".pyw",".go",".rs",".java",".kt",".kts",".rb",".cs",".php",".swift",".c",".h",".cpp",".hpp",".cc",".scala"];if(l&&l.length>0){e=[];for(let n of l)n==="typescript"&&e.push(".ts",".tsx"),n==="javascript"&&e.push(".js",".jsx",".mjs",".cjs"),n==="python"&&e.push(".py",".pyw"),n==="go"&&e.push(".go"),n==="rust"&&e.push(".rs"),n==="java"&&e.push(".java"),n==="kotlin"&&e.push(".kt",".kts"),n==="ruby"&&e.push(".rb"),(n==="csharp"||n==="c#")&&e.push(".cs"),n==="php"&&e.push(".php"),n==="swift"&&e.push(".swift"),(n==="c"||n==="cpp"||n==="c++")&&e.push(".c",".h",".cpp",".hpp",".cc"),n==="scala"&&e.push(".scala")}async function c(n){try{let h=await O.readdir(n,{withFileTypes:!0});for(let u of h){let m=y.join(n,u.name);if(u.isDirectory()){if(["node_modules",".git","dist","build","coverage",".nyc_output","__pycache__",".venv","venv",".tox",".mypy_cache","target",".gradle","vendor",".bundle",".cache",".npm",".yarn",".next",".nuxt",".svelte-kit","out",".turbo","tmp","temp",".tmp"].includes(u.name)||P(n,u.name,n===o))continue;if(t.length>=r)return;await c(m)}else if(u.isFile()){let g=y.extname(u.name);if(!e.includes(g)||!a&&(u.name.includes(".test.")||u.name.includes(".spec.")||u.name.endsWith("_test.ts")||u.name.endsWith("_test.js")||m.includes("/__tests__/")||m.includes("/test/")||m.includes("/tests/")))continue;if(t.length>=r)return;t.push(m)}}}catch{}}try{if((await O.stat(o)).isFile())return[o];await c(o)}catch{}return t}function te(o){let i=new Set,t={injection:"Use parameterized queries and input validation to prevent injection attacks",xss:"Sanitize user input and use Content-Security-Policy headers","sensitive-data":"Never hardcode secrets; use environment variables or secret managers","access-control":"Implement proper authentication and authorization checks","security-misconfiguration":"Review and harden security configurations","insecure-deserialization":"Avoid deserializing untrusted data; use safe alternatives","broken-auth":"Use strong authentication mechanisms and secure session management",dependencies:"Keep dependencies updated and regularly audit for vulnerabilities"};for(let r of o){let e=t[r.category];e&&i.add(e)}let a=o.some(r=>r.severity==="critical"),l=o.some(r=>r.severity==="high");return a&&i.add("CRITICAL: Address critical vulnerabilities immediately before deployment"),l&&i.add("Prioritize fixing high-severity issues in the next sprint"),i.size===0&&o.length===0&&i.add("No vulnerabilities found - maintain current security practices"),Array.from(i)}export{Z as a,U as b,K as c,X as d,$ as e,G as f,ee as g,te as h};
|
|
@@ -1,3 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a as b,b as y}from"./chunk-UKKYMW3S.js";import{b as v}from"./chunk-LPU6PAJE.js";import{j as d,k as g,l as f,n as l}from"./chunk-2DTX7YAZ.js";import p from"chalk";var C=3,h="instrumented-report",k="static-estimation";async function D(e,r=a=>console.log(a)){let a=await d(e);if(a.status==="target-missing")return{kind:"no-data",reason:"target-missing",message:l("target-missing",e,null)};if(a.status==="evaluated"){let{evaluation:n,projectRoot:t}=a;if(n.status==="measured"){let u=n.files;return{kind:"data",data:{files:u,summary:b(u),instrumented:!0},projectRoot:t}}return{kind:"no-data",reason:n.reason,message:l(n.reason,e,t)}}let s=v(a.target,{includeTests:!1});return s.length===0?{kind:"no-sources"}:(r(p.gray(` Analyzing ${s.length} files...
|
|
3
|
-
`)),{kind:"data",data:y(s,a.projectRoot),projectRoot:a.projectRoot})}function R(e){return{branch:e.files.some(r=>r.branches.total>0),function:e.files.some(r=>r.functions.total>0),statement:e.files.some(r=>r.statements.total>0)}}var T=e=>e==="target-missing"||e==="unreadable-report";function x(){return"UNMEASURED: no coverage report exists for this project, so these figures are a STATIC ESTIMATE derived from source shape \u2014 not measured coverage. No threshold verdict is given and nothing is stored as evidence. Run your tests with coverage first (e.g. `npm test -- --coverage`) and re-run."}async function j(e,r,a,s){let n=await D(r,s);if(n.kind==="no-sources")return n;if(n.kind==="no-data")return T(n.reason)?{kind:"error",reason:n.reason,message:n.message}:{kind:"unmeasured",reason:n.reason,message:n.message};let t=n.data,u=t.instrumented,m=await e.analyze({coverageData:t,threshold:a,includeFileDetails:!0,measured:u,...n.projectRoot?{projectRoot:n.projectRoot}:{}});if(!m.success||!m.value)return{kind:"analysis-failed",message:m.error?.message||"Coverage analysis failed"};let o=m.value;if(!u)return{kind:"estimate",data:t,summary:{...o.summary},message:x()};let i=R(t),c=g(o.summary,a,i);return{kind:"measured",data:t,collected:i,verdict:c,summary:{...o.summary,branch:i.branch?o.summary.branch:null,function:i.function?o.summary.function:null,statement:i.statement?o.summary.statement:null},recommendations:f(o.recommendations??[],c,a,i)}}function M(e,r){switch(e.kind){case"measured":{let{overall:a,meetsThreshold:s}=e.verdict;return s?a<r+5?2:0:1}case"estimate":case"unmeasured":return C;case"no-sources":return 0;default:return 1}}function S(e,r,a){let s={line:null,branch:null,function:null,statement:null};switch(e.kind){case"measured":return{summary:e.summary,meetsThreshold:e.verdict.meetsThreshold,threshold:r,recommendations:e.recommendations,measured:!0,estimated:!1,coverageMethod:h,branchDataCollected:e.collected.branch,functionDataCollected:e.collected.function,statementDataCollected:e.collected.statement,...e.data.unmeasuredFiles?.length?{unmeasuredFiles:e.data.unmeasuredFiles}:{}};case"estimate":return{summary:e.summary,meetsThreshold:null,threshold:r,measured:!1,estimated:!0,unmeasured:!0,coverageMethod:k,reason:"no-coverage-report",target:a,warning:e.message};case"unmeasured":case"error":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,unmeasured:e.kind==="unmeasured",reason:e.reason,target:a,warning:e.message};case"analysis-failed":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,target:a,error:e.message};case"no-sources":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,target:a,warning:"No source files found"}}}export{C as a,D as b,j as c,M as d,S as e};
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{b as _}from"./chunk-CFWGGRE7.js";function p(e){return g.has(e)}function m(e){return l.has(e)}function b(e){return/^qe-security|^qe-pentest/.test(e)}function x(e,t="strict"){if(t==="off")return{text:e,redactions:[],replacementCount:0};let r=e,s=new Set,c=0;for(let a of d){if(!a.modes.includes(t))continue;let i=new RegExp(a.regex.source,a.regex.flags),n=r.match(i);n&&n.length>0&&(s.add(a.category),c+=n.length,r=r.replace(i,a.replacement))}return{text:r,redactions:Array.from(s).sort(),replacementCount:c}}function E(e,t,r){if(b(e)&&!m(t))throw new o(`Security agent "${e}" may only use providers: ${[...l].join(", ")}. Got: "${t}". OpenRouter is excluded (third-party proxy risk).`,6);if(r==="off"&&!p(t))throw new o(`Redaction mode "off" is only allowed for self-hosted providers (${[...g].join(", ")}). Got: "${t}".`,6)}var d,g,l,o,A=_(()=>{"use strict";d=[{category:"aws_key",regex:/\b(AKIA[0-9A-Z]{16})\b/g,replacement:"<REDACTED:aws_key>",modes:["strict","balanced"]},{category:"env_value",regex:/^([A-Z][A-Z0-9_]{2,})=(.+)$/gm,replacement:"$1=<REDACTED:env_value>",modes:["strict","balanced"]},{category:"api_key_header",regex:/(Authorization:\s*Bearer\s+)\S+/gi,replacement:"$1<REDACTED:api_key>",modes:["strict","balanced"]},{category:"api_key_header",regex:/(x-api-key:\s*)\S+/gi,replacement:"$1<REDACTED:api_key>",modes:["strict","balanced"]},{category:"private_key",regex:/-----BEGIN\s[\w\s]*PRIVATE KEY-----[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----/g,replacement:"<REDACTED:private_key>",modes:["strict","balanced"]},{category:"jwt",regex:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"<REDACTED:jwt>",modes:["strict","balanced"]},{category:"github_token",regex:/\b(ghp_|gho_|ghs_|ghr_|github_pat_)[A-Za-z0-9_]{16,}\b/g,replacement:"<REDACTED:github_token>",modes:["strict","balanced"]},{category:"gitlab_token",regex:/\b(glpat-)[A-Za-z0-9_-]{20,}\b/g,replacement:"<REDACTED:gitlab_token>",modes:["strict","balanced"]},{category:"slack_token",regex:/\b(xoxb-|xoxp-|xoxs-|xoxa-)[A-Za-z0-9-]{10,}\b/g,replacement:"<REDACTED:slack_token>",modes:["strict","balanced"]},{category:"stripe_key",regex:/\b(sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_)[A-Za-z0-9]{10,}\b/g,replacement:"<REDACTED:stripe_key>",modes:["strict","balanced"]},{category:"google_api_key",regex:/\bAIzaSy[A-Za-z0-9_-]{33}\b/g,replacement:"<REDACTED:google_api_key>",modes:["strict","balanced"]},{category:"aws_session_token",regex:/\bASIA[0-9A-Z]{16}\b/g,replacement:"<REDACTED:aws_session_token>",modes:["strict","balanced"]},{category:"connection_string",regex:/\b(mongodb(\+srv)?|postgres(ql)?|mysql|redis|amqp):\/\/[^\s"']+/gi,replacement:"<REDACTED:connection_string>",modes:["strict","balanced"]},{category:"generic_secret",regex:/\b(password|secret|token|apikey|api_key|access_key|secret_key)\s*[:=]\s*['"]?(?!ghp_|gho_|ghs_|ghr_|github_pat_|glpat-|xoxb-|xoxp-|xoxs-|xoxa-|sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_|AIzaSy|AKIA|ASIA|<REDACTED:)[^\s'"]{8,}['"]?/gi,replacement:"<REDACTED:generic_secret>",modes:["strict","balanced"]},{category:"email",regex:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"<REDACTED:pii_email>",modes:["strict"]},{category:"phone",regex:/\b(\+?1?[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,replacement:"<REDACTED:pii_phone>",modes:["strict"]},{category:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"<REDACTED:pii_ssn>",modes:["strict"]}],g=new Set(["ollama"]),l=new Set(["claude","ollama"]);o=class extends Error{constructor(r,s){super(r);this.exitCode=s;this.name="AdvisorRedactionError"}exitCode}});export{p as a,x as b,E as c,A as d};
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a as e,b as g,e as t}from"./chunk-FZHSG75I.js";import{d as r}from"./chunk-VO3DRK4P.js";import{b as o}from"./chunk-CFWGGRE7.js";var L=o(()=>{"use strict";e();g();t();r()});export{L as a};
|
|
@@ -1,2 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
var t=["test-generation","test-execution","coverage-analysis","quality-assessment","defect-intelligence","requirements-validation","code-intelligence","security-compliance","contract-testing","visual-accessibility","chaos-resilience","learning-optimization","enterprise-integration","coordination"];function r(e){return typeof e=="string"&&t.includes(e)}function i(e){return{success:!0,value:e}}function o(e){return{success:!1,error:e}}var n=["p0","p1","p2","p3"];function a(e){return typeof e=="string"&&n.includes(e)}function s(e){return`Invalid priority: ${String(e)}. Valid priorities: ${n.join(", ")}`}export{t as a,r as b,i as c,o as d,a as e,s as f};
|
|
@@ -1,21 +0,0 @@
|
|
|
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.15.11");process.exit(0)}
|
|
2
|
-
import{a as K}from"./chunk-V7DA4HAK.js";import{a as C,e as x,f as Y}from"./chunk-U3LJNNVJ.js";import{a as O}from"./chunk-XDI5X3FR.js";import{a as H,b as F,c as G,d as j,f as V}from"./chunk-NTB342NJ.js";import{c as $,d as J}from"./chunk-JGJXXAS6.js";import{a as W,b as U,g as _,j as z}from"./chunk-7HEMJHPP.js";import{i as B}from"./chunk-AUUJBXWX.js";import{b as q,d as ne}from"./chunk-JFLU7L3W.js";import{a as D,g as S,i as M,k as L,l as v,p as A}from"./chunk-VLD7Z2ED.js";import{i as N}from"./chunk-7R5HC56U.js";import{c as p,d as h}from"./chunk-IW6WDGHM.js";import{a as te}from"./chunk-IO5537OM.js";import{c as I}from"./chunk-FZHSG75I.js";import{a as w,b as f,e as ee}from"./chunk-DDEOZPWJ.js";te();ee();ne();var c=I.create("RealQEReasoningBank"),ie={sqlite:{dbPath:".agentic-qe/memory.db",walMode:!0,useUnified:!0},embeddings:{modelName:"Xenova/all-MiniLM-L6-v2",quantized:!0,enableCache:!0},enableLearning:!0,enableRouting:!0,enableGuidance:!0,hnsw:{M:16,efConstruction:200,efSearch:100},routingWeights:{similarity:.3,performance:.4,capabilities:.3},coherenceThreshold:.4},Q=class{constructor(e={},t){this.coherenceService=t;this.qeConfig={...ie,...e},this.sqliteStore=B(this.qeConfig.sqlite),this.asymmetricEngine=new K}coherenceService;qeConfig;sqliteStore;hnswIndex=null;patternIdMap=new Map;initialized=!1;embedderUnavailableReason=null;stats={routingRequests:0,totalRoutingLatency:0,learningOutcomes:0,successfulOutcomes:0};routingLatencies=new O(1e3);asymmetricEngine;agentCapabilities={"qe-test-generator":{domains:["test-generation"],capabilities:["test-generation","tdd","bdd","unit-test","integration-test"],performanceScore:.85},"qe-coverage-analyzer":{domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","risk-scoring"],performanceScore:.92},"qe-coverage-specialist":{domains:["coverage-analysis"],capabilities:["sublinear-analysis","branch-coverage","mutation-testing"],performanceScore:.88},"qe-test-architect":{domains:["test-generation","coverage-analysis"],capabilities:["test-strategy","test-pyramid","architecture"],performanceScore:.9},"qe-api-contract-validator":{domains:["contract-testing"],capabilities:["contract-testing","openapi","graphql","pact"],performanceScore:.87},"qe-security-auditor":{domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp"],performanceScore:.82},"qe-visual-tester":{domains:["visual-accessibility"],capabilities:["screenshot","visual-regression","percy","chromatic"],performanceScore:.8},"qe-a11y-ally":{domains:["visual-accessibility"],capabilities:["wcag","aria","screen-reader","contrast"],performanceScore:.85},"qe-performance-tester":{domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery"],performanceScore:.83},"qe-flaky-investigator":{domains:["test-execution"],capabilities:["flaky-detection","test-stability","retry"],performanceScore:.78},"qe-chaos-engineer":{domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],performanceScore:.75}};async initialize(){if(this.initialized)return;let e=performance.now();await this.sqliteStore.initialize(),c.info("SQLite persistence initialized");try{await S(D,this.qeConfig.embeddings)}catch(n){this.embedderUnavailableReason=w(n),c.warn("No embedding runtime: patterns are stored without vectors (pending `aqe learning backfill-embeddings`) and searched by text matching only",{reason:this.embedderUnavailableReason})}this.embedderUnavailableReason===null&&(await this.initializeHNSW(),c.info("HNSW index initialized"),await this.loadPatternsIntoHNSW()),this.sqliteStore.getStats().totalPatterns===0&&(this.sqliteStore.hasAnyHistoricalData?.()??!1?c.error("qe_patterns table is EMPTY but historical data exists \u2014 possible data loss! Restore from backup instead of loading seed patterns. Skipping foundational pattern load to avoid masking data loss."):await this.loadFoundationalPatterns()),this.initialized=!0;let i=performance.now()-e;c.info("Fully initialized",{durationMs:Math.round(i)})}getPatternSearchStatus(){return this.embedderUnavailableReason===null?{mode:"vector"}:{mode:"lexical-only",reason:this.embedderUnavailableReason}}async initializeHNSW(){try{let e=await import("./hnswlib-node-PHL3F2PR.js"),i=e.default?.HierarchicalNSW||e.HierarchicalNSW;if(typeof i!="function")throw new Error("HierarchicalNSW not found in hnswlib-node module");let n=i,r=v();this.hnswIndex=new n("cosine",r),this.hnswIndex.initIndex(1e5,this.qeConfig.hnsw.M,this.qeConfig.hnsw.efConstruction),this.hnswIndex.setEf(this.qeConfig.hnsw.efSearch),c.info("HNSW initialized",{dimension:r,M:this.qeConfig.hnsw.M})}catch(e){throw c.error("HNSW initialization failed",e instanceof Error?e:void 0),e}}async loadPatternsIntoHNSW(){if(!this.hnswIndex)return;let e=this.sqliteStore.getAllEmbeddings(),t=v(),i=0,n=0,r=A()?.spaceId;for(let{patternId:s,embedding:a,spaceId:o}of e){if(!r||o!==r||!a||!Array.isArray(a)||a.length!==t){n++;continue}let d=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(a,d),this.patternIdMap.set(d,s),i++}n>0&&c.warn("Skipped invalid embeddings",{skipped:n,expectedDim:t}),c.info("Loaded patterns into HNSW index",{count:i})}async loadFoundationalPatterns(){let e=[{patternType:"test-template",name:"AAA Unit Test",description:"Arrange-Act-Assert pattern for clear, maintainable unit tests",template:{type:"code",content:`describe('{{className}}', () => {
|
|
3
|
-
describe('{{methodName}}', () => {
|
|
4
|
-
it('should {{expectedBehavior}}', {{async}} () => {
|
|
5
|
-
// Arrange
|
|
6
|
-
{{arrangeCode}}
|
|
7
|
-
|
|
8
|
-
// Act
|
|
9
|
-
{{actCode}}
|
|
10
|
-
|
|
11
|
-
// Assert
|
|
12
|
-
{{assertCode}}
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
});`,variables:[{name:"className",type:"string",required:!0},{name:"methodName",type:"string",required:!0},{name:"expectedBehavior",type:"string",required:!0}]},context:{testType:"unit",tags:["unit-test","aaa","best-practice"]}},{patternType:"coverage-strategy",name:"Risk-Based Coverage",description:"Prioritize coverage by code risk and complexity",template:{type:"prompt",content:"Analyze coverage gaps focusing on critical business logic, error handling, and high-complexity functions.",variables:[]},context:{tags:["coverage","risk-based"]}}];for(let t of e)try{await this.storeQEPattern(t)}catch(i){c.warn("Failed to load foundational pattern",{name:t.name,error:i})}c.info("Loaded foundational patterns",{count:e.length})}async storeQEPattern(e){try{let t=`${e.name} ${e.description||""} ${e.context?.tags?.join(" ")||""}`,i=this.embedderUnavailableReason===null?await S(t,this.qeConfig.embeddings):void 0,n=W(t)||"test-generation";if(C())try{let a=Y(e.name,{description:e.description,template:e.template,patternType:e.patternType},n,{tags:e.context?.tags}),o=await x.evaluateWrite(a);if(!o.allowed&&(c.warn("Pattern blocked by MemoryWriteGate",{name:e.name,reason:o.reason,conflicts:o.conflictingPatterns?.join(", ")||"none"}),o.reason?.includes("strict")))return h(new Error(`Pattern blocked by governance: ${o.reason}`))}catch(a){c.warn("MemoryWriteGate check error (continuing)",{error:a})}let r=N(),s={id:r,patternType:e.patternType,qeDomain:n,domain:n,name:e.name,description:e.description||"",confidence:.5,usageCount:0,successRate:0,qualityScore:0,tier:"short-term",template:e.template,context:{tags:[],...e.context},createdAt:new Date,lastUsedAt:new Date,successfulUses:0,embedding:i,reusable:!1,reuseCount:0,averageTokenSavings:0};if(this.sqliteStore.storePattern(s,i),this.hnswIndex&&i){let a=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(i,a),this.patternIdMap.set(a,r)}if(C())try{x.registerPattern({key:r,value:{name:s.name,description:s.description,patternType:s.patternType},domain:s.domain})}catch(a){c.warn("Pattern registration with MemoryWriteGate failed",{error:a})}return p(s)}catch(t){return h(f(t))}}async searchQEPatterns(e,t={}){let i=performance.now();try{let n=t.limit||10,r=[];if(this.embedderUnavailableReason===null){if(!this.hnswIndex)return h(new Error("HNSW index not available"));await this.collectVectorMatches(e,n,t,r)}let s=new Map(r.map(o=>[o.pattern.id,o]));for(let o of this.sqliteStore.searchFTS(e,n*2)){let d=s.get(o.id);if(d){d.score=J(d.score,o.ftsScore*o.coverage);continue}if(t.minSimilarity!==void 0)continue;let m=this.sqliteStore.getPattern(o.id);!m||t.domain&&m.qeDomain!==t.domain||r.push({pattern:m,score:.5*o.ftsScore*o.coverage,similarity:0,matchType:"lexical",canReuse:!1})}r.sort((o,d)=>d.score-o.score);let a=performance.now()-i;return a>10&&c.warn("Slow search",{searchTimeMs:Number(a.toFixed(1))}),p(r.slice(0,n))}catch(n){return h(f(n))}}async collectVectorMatches(e,t,i,n){let r=await S(e,this.qeConfig.embeddings),s=this.hnswIndex.searchKnn(r,t*2);for(let a=0;a<s.neighbors.length;a++){let o=s.neighbors[a],m=1-s.distances[a];if(i.minSimilarity!==void 0&&m<i.minSimilarity)continue;let b=this.patternIdMap.get(o);if(!b)continue;let l=this.sqliteStore.getPattern(b);if(!l||i.domain&&l.qeDomain!==i.domain)continue;let u=$.reuseOptimization,g=(Date.now()-new Date(l.lastUsedAt).getTime())/864e5;n.push({pattern:l,similarity:m,score:m,matchType:"vector",canReuse:!!(l.reusable&&m>=u.minSimilarityForReuse&&l.successRate>=u.minSuccessRateForReuse&&g<=u.maxAgeForReuse)})}}async routeTask(e){let t=performance.now();this.stats.routingRequests++;try{let i=e.domain?[e.domain]:U(e.task);i.length===0&&i.push("test-generation");let n=await this.searchQEPatterns(e.task,{limit:10,domain:i[0]}),r=n.success?n.value.map(l=>l.pattern):[],s=[];for(let[l,u]of Object.entries(this.agentCapabilities)){let g=0,y=[],T=i.filter(P=>u.domains.includes(P)).length,E=T>0?T/i.length*.4:0;if(g+=E*this.qeConfig.routingWeights.similarity,E>0&&y.push(`Domain: ${(E*100).toFixed(0)}%`),e.capabilities&&e.capabilities.length>0){let P=e.capabilities.filter(X=>u.capabilities.some(Z=>Z.toLowerCase().includes(X.toLowerCase()))).length,R=P>0?P/e.capabilities.length*.3:0;g+=R*this.qeConfig.routingWeights.capabilities,R>0&&y.push(`Caps: ${(R*100).toFixed(0)}%`)}else g+=.15*this.qeConfig.routingWeights.capabilities;g+=u.performanceScore*.3*this.qeConfig.routingWeights.performance,y.push(`Perf: ${(u.performanceScore*100).toFixed(0)}%`),s.push({agent:l,score:g,reasoning:y})}s.sort((l,u)=>u.score-l.score);let a=s[0],o=s.slice(1,4),d=[];if(this.qeConfig.enableGuidance&&i.length>0){let l=F(i[0],{framework:e.context?.framework,language:e.context?.language,includeAntiPatterns:!0});d.push(...l.slice(0,5))}let m=performance.now()-t;this.stats.totalRoutingLatency+=m,this.routingLatencies.push(m);let b={recommendedAgent:a.agent,confidence:a.score,alternatives:o.map(l=>({agent:l.agent,score:l.score})),domains:i,patterns:r,guidance:d,reasoning:a.reasoning.join("; "),latencyMs:m};return p(V(e.includePatternGuidance,b,n.success?n.value:[]))}catch(i){return h(f(i))}}async recordOutcome(e){if(!this.qeConfig.enableLearning)return p(void 0);try{this.sqliteStore.recordUsage(e.patternId,e.success,e.metrics,e.feedback),this.stats.learningOutcomes++,e.success&&this.stats.successfulOutcomes++;let t=this.sqliteStore.getPattern(e.patternId);if(t){let i=t.qeDomain,n=this.asymmetricEngine.computeConfidenceUpdate(t.confidence,e.success?"success":"failure",i);this.asymmetricEngine.shouldQuarantine(n,i).shouldQuarantine&&c.info("Pattern quarantined (asymmetric drop)",{name:t.name}),this.sqliteStore.updatePattern(e.patternId,{confidence:n}),await this.checkPatternPromotionWithCoherence(t)&&(this.sqliteStore.promotePattern(e.patternId),c.info("Pattern promoted to long-term",{name:t.name}))}return p(void 0)}catch(t){return h(f(t))}}async checkPatternPromotionWithCoherence(e){let t=_(e);if(!t.meetsUsageCriteria||!t.meetsQualityCriteria)return!1;if(this.coherenceService&&this.coherenceService.isInitialized()){let r=[...await this.getLongTermPatterns(),e].map(a=>({id:a.id,embedding:a.embedding||[],weight:a.confidence,metadata:{name:a.name,domain:a.qeDomain}})),s=await this.coherenceService.checkCoherence(r);if(s.energy>=(this.qeConfig.coherenceThreshold||.4))return c.info("Pattern promotion blocked due to coherence violation",{name:e.name,energy:s.energy}),s.contradictions&&s.contradictions.length>0&&c.info("Conflicts with existing patterns",{conflictingNodeIds:s.contradictions.map(a=>a.nodeIds).flat()}),!1}return!0}async getLongTermPatterns(){return this.sqliteStore.getPatterns({limit:1e3}).filter(t=>t.tier==="long-term")}shouldPromote(e){return e.tier==="short-term"&&e.successfulUses>=3&&e.successRate>=.7&&e.confidence>=.6}getQEGuidance(e){return H(e)}generateQEContext(e,t){return j(e,t||{})}checkQEAntiPatterns(e,t){return G(e,t)}async getQEStats(){let e=this.sqliteStore.getStats(),t=this.routingLatencies.percentile(95)||0,i={};for(let n of z)i[n]=e.byDomain[n]||0;return{totalPatterns:e.totalPatterns,byDomain:i,byTier:e.byTier,routingRequests:this.stats.routingRequests,avgRoutingLatencyMs:this.stats.routingRequests>0?this.stats.totalRoutingLatency/this.stats.routingRequests:0,p95RoutingLatencyMs:t,learningOutcomes:this.stats.learningOutcomes,patternSuccessRate:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes:0,embeddingCacheSize:0,transformerAvailable:L(),patternSearch:this.getPatternSearchStatus(),embeddingDimension:v(),sqliteDbPath:this.qeConfig.sqlite.dbPath||".agentic-qe/memory.db",asymmetricLearning:{failurePenaltyRatio:"10:1",quarantinedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(n=>n.quarantined===!0).length,rehabilitatedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(n=>n.quarantined===!1&&n.quarantinedAt).length,avgConfidenceDelta:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes-.5:0}}}async storeLoopPattern(e){try{let t=await this.storeQEPattern({patternType:"anti-pattern",name:`loop-detection:${e.toolCallSignature}`,description:`Tool call loop detected for agent ${e.agentId} during ${e.taskType}. Steering: ${e.steeringUsed}. Resolved: ${e.resolved}`,template:{type:"prompt",content:e.steeringUsed,variables:[]},context:{tags:["anti-pattern","loop-detection","learning-optimization",e.taskType]}});return t.success?{success:!0,patternId:t.value.id}:{success:!1,error:t.error?.message??"Unknown error"}}catch(t){return{success:!1,error:w(t)}}}async recordPatternOutcome(e,t,i){let n=this.sqliteStore.getPattern(e);if(!n)return;let r=n.usageCount+1,s=t?n.successfulUses+1:n.successfulUses,a=s/r,o=.3,d=(1-o)*n.qualityScore+o*i,m=Math.min(1,.5+r*.05+a*.3);this.sqliteStore.updatePattern(e,{usageCount:r,successfulUses:s,successRate:a,qualityScore:d,confidence:m})}async checkPatternPromotion(e,t,i,n){let r=this.sqliteStore.getPattern(e);return r?r.tier==="short-term"?t>=3&&i>=.6&&n>=.5:r.tier==="long-term"?t>=10&&i>=.75&&n>=.7:!1:!1}async promotePattern(e){this.sqliteStore.promotePattern(e)}async demotePattern(e){let t=this.sqliteStore.getPattern(e);if(!t)return;let i=["short-term","working","long-term"],n=i.indexOf(t.tier);if(n>0){let r=i[n-1];this.sqliteStore.updatePattern(e,{tier:r}),c.info("Pattern demoted",{name:t.name,newTier:r})}}cleanupPatternIdMap(){if(!this.initialized)return 0;let e=0,t=this.sqliteStore.getPatterns({limit:1e5}),i=new Set(t.map(n=>n.id));for(let[n,r]of Array.from(this.patternIdMap.entries()))i.has(r)||(this.patternIdMap.delete(n),e++);return e>0&&c.info("Cleaned stale patternIdMap entries",{count:e}),e}removePatternFromHNSW(e){for(let[t,i]of Array.from(this.patternIdMap.entries()))if(i===e)return this.patternIdMap.delete(t),c.info("Removed pattern from HNSW mapping",{patternId:e}),!0;return!1}getMemoryStats(){return{patternIdMapSize:this.patternIdMap.size,routingLatenciesSize:this.routingLatencies.length,hnswIndexCount:this.hnswIndex?.getCurrentCount()??0}}async storeTrajectory(e){return this.sqliteStore.getDb().prepare(`
|
|
16
|
-
INSERT OR REPLACE INTO qe_trajectories (
|
|
17
|
-
id, task, agent, domain, started_at, ended_at, success, steps_json, metadata_json
|
|
18
|
-
) VALUES (?, ?, ?, ?, datetime('now'), datetime('now'), ?, ?, ?)
|
|
19
|
-
`).run(e.id,e.task,e.agent??null,e.domain??null,e.success?1:0,JSON.stringify(e.steps),JSON.stringify(e.metrics??{})),e.id}async getTrajectories(e,t=50){let i=this.sqliteStore.getDb(),n="SELECT * FROM qe_trajectories",r=[];return e&&(n+=" WHERE domain = ?",r.push(e)),n+=" ORDER BY ended_at DESC LIMIT ?",r.push(t),i.prepare(n).all(...r).map(a=>({id:a.id,task:a.task,agent:a.agent??void 0,domain:a.domain,success:a.success===1,steps:q(a.steps_json||"[]"),metrics:a.metadata_json?q(a.metadata_json):void 0}))}async linkPatternToTrajectory(e,t){let i=this.sqliteStore.getDb(),n=this.sqliteStore.getPattern(e);if(n){let r={...n.context,sourceTrajectoryId:t};i.prepare(`
|
|
20
|
-
UPDATE qe_patterns SET context_json = ?, updated_at = datetime('now') WHERE id = ?
|
|
21
|
-
`).run(JSON.stringify(r),e)}}async getEnhancedAdapter(){return{message:"Use EnhancedReasoningBankAdapter for full agentic-flow integration",importPath:"../integrations/agentic-flow/reasoning-bank/index.js"}}async dispose(){this.sqliteStore.close(),M(),this.hnswIndex=null,this.patternIdMap.clear(),this.routingLatencies.clear(),this.stats.routingRequests=0,this.stats.totalRoutingLatency=0,this.stats.learningOutcomes=0,this.stats.successfulOutcomes=0,this.initialized=!1,c.info("Disposed")}async destroy(){return this.dispose()}};function xe(k={},e){return new Q(k,e)}export{xe as a};
|