agentic-qe 3.14.7 → 3.14.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/helpers/.helpers-version +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +18 -9
- package/.claude/helpers/helpers.manifest.json +6 -5
- package/.claude/helpers/hook-handler.cjs +40 -12
- package/.claude/helpers/memory.cjs +86 -0
- package/.claude/helpers/router.cjs +105 -0
- package/.claude/helpers/session.cjs +166 -0
- package/.claude/helpers/statusline.cjs +73 -621
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +130 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2a/notifications/retry-queue.js +5 -0
- package/dist/adapters/claude-flow/pretrain-bridge.js +3 -2
- package/dist/agents/claim-verifier/verifiers/file-verifier.js +3 -2
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-XYCOXQCC.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-AK2W76RG.js → agent-booster-wasm-67OKGDGZ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-MGZCWHIY.js → agent-handler-4HZEQ3WQ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-JZ54MCSP.js → agent-memory-branch-IBHZQSRN.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DTJCROTG.js +2 -0
- package/dist/cli/chunks/{arena-CUVH3V7H.js → arena-EJBIGSF4.js} +2 -2
- package/dist/cli/chunks/{arena-YSWTKBCL.js → arena-LCLRGUIK.js} +4 -4
- package/dist/cli/chunks/{audit-LVU76QGA.js → audit-PY4JNDQQ.js} +3 -3
- package/dist/cli/chunks/base-5TQ34GMD.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-DB3LOJQU.js → better-sqlite3-2JG5K6XT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-SD63KOQ6.js → brain-handler-3UYK55GA.js} +4 -4
- package/dist/cli/chunks/{branch-enumerator-4MNOPUC7.js → branch-enumerator-GOSWOX46.js} +2 -2
- package/dist/cli/chunks/{browser-OLPNTWQE.js → browser-DC2JV47Z.js} +2 -2
- package/dist/cli/chunks/browser-workflow-KWX4ESTJ.js +2 -0
- package/dist/cli/chunks/{chunk-QQFQDEUE.js → chunk-25EEIAHS.js} +2 -2
- package/dist/cli/chunks/{chunk-DOBKEXMJ.js → chunk-3576QGPP.js} +1 -1
- package/dist/cli/chunks/{chunk-3M7J4U74.js → chunk-3EKG7HFV.js} +4 -4
- package/dist/cli/chunks/{chunk-DYTQHRUS.js → chunk-3FCHH4VP.js} +1 -1
- package/dist/cli/chunks/{chunk-EJ6MMYLK.js → chunk-3S5IIK32.js} +1 -1
- package/dist/cli/chunks/{chunk-NOHWJOBS.js → chunk-3X2JSW3R.js} +1 -1
- package/dist/cli/chunks/{chunk-7EZ2Z2CK.js → chunk-4HXFPBAA.js} +1 -1
- package/dist/cli/chunks/{chunk-XBYQ2BS4.js → chunk-4PY44TKH.js} +2 -2
- package/dist/cli/chunks/{chunk-5FSLMYAC.js → chunk-4RNCVSVN.js} +2 -2
- package/dist/cli/chunks/{chunk-X7ADKL7T.js → chunk-56M4QNXU.js} +2 -2
- package/dist/cli/chunks/{chunk-JHJUSSAU.js → chunk-5X4HDW5W.js} +2 -2
- package/dist/cli/chunks/{chunk-7MIOK72I.js → chunk-673XJBGW.js} +7 -7
- package/dist/cli/chunks/{chunk-77QZHIVX.js → chunk-6F7MFHTY.js} +2 -2
- package/dist/cli/chunks/{chunk-Q6NTEICT.js → chunk-6GJWT2OY.js} +2 -2
- package/dist/cli/chunks/{chunk-GV4DYPJP.js → chunk-6GNWVPMR.js} +2 -2
- package/dist/cli/chunks/{chunk-V5AK56DA.js → chunk-6VTC3OHD.js} +2 -2
- package/dist/cli/chunks/{chunk-MM56VPNE.js → chunk-775WGWLL.js} +3 -3
- package/dist/cli/chunks/{chunk-A3DK3XNZ.js → chunk-77WL5HQW.js} +1 -1
- package/dist/cli/chunks/chunk-7STWD4KJ.js +3 -0
- package/dist/cli/chunks/{chunk-RC2A4JZ5.js → chunk-7TNCEVWX.js} +2 -2
- package/dist/cli/chunks/{chunk-XL5KIYE3.js → chunk-7X3LMTRA.js} +2 -2
- package/dist/cli/chunks/{chunk-VW6FRMLW.js → chunk-A53MMSGC.js} +2 -2
- package/dist/cli/chunks/{chunk-UFSVUBTR.js → chunk-A5CLVZC3.js} +2 -2
- package/dist/cli/chunks/{chunk-4INST4ZL.js → chunk-AEYJ4ZLA.js} +1 -1
- package/dist/cli/chunks/{chunk-5U6N4V5M.js → chunk-AJ5PCJQ2.js} +4 -4
- package/dist/cli/chunks/{chunk-OAZX6WFU.js → chunk-AJMAKUS3.js} +2 -2
- package/dist/cli/chunks/{chunk-74IOEOMH.js → chunk-AOD2ES44.js} +2 -2
- package/dist/cli/chunks/chunk-AR2S4DOB.js +2 -0
- package/dist/cli/chunks/{chunk-PYKY22GC.js → chunk-AUFV2G2J.js} +5 -5
- package/dist/cli/chunks/{chunk-KD2BLA5Y.js → chunk-B2QKBQYD.js} +1 -1
- package/dist/cli/chunks/{chunk-6EGS77BB.js → chunk-BCCSV3RH.js} +1 -1
- package/dist/cli/chunks/{chunk-JOZ47MV6.js → chunk-BFIXUKOR.js} +1 -1
- package/dist/cli/chunks/chunk-BHPTHC5O.js +4 -0
- package/dist/cli/chunks/{chunk-OIDWDGLG.js → chunk-BITFGVZ4.js} +2 -2
- package/dist/cli/chunks/{chunk-ONR2NXXD.js → chunk-BL6273KR.js} +3 -3
- package/dist/cli/chunks/{chunk-BLG7SH4A.js → chunk-BOIUENWW.js} +1 -1
- package/dist/cli/chunks/{chunk-T77GZF4B.js → chunk-BT3MI2BW.js} +1 -1
- package/dist/cli/chunks/{chunk-UYUJT6QO.js → chunk-BTBJ2NLH.js} +2 -2
- package/dist/cli/chunks/{chunk-YMW57PEL.js → chunk-BUVJIVFG.js} +1 -1
- package/dist/cli/chunks/{chunk-QUORH2MG.js → chunk-BZIPW2PA.js} +8 -8
- package/dist/cli/chunks/{chunk-GVVFTFMB.js → chunk-C647D42G.js} +2 -2
- package/dist/cli/chunks/{chunk-AJUBT4NP.js → chunk-CBWM5NOO.js} +3 -3
- package/dist/cli/chunks/{chunk-F2OPFVQH.js → chunk-CIEXUYY7.js} +1 -1
- package/dist/cli/chunks/{chunk-QGOWNVVG.js → chunk-CLUHGBLN.js} +4 -4
- package/dist/cli/chunks/{chunk-WOV6XI3A.js → chunk-CQEWL32R.js} +1 -1
- package/dist/cli/chunks/{chunk-3QJU4Q4R.js → chunk-CXUC7YKA.js} +2 -2
- package/dist/cli/chunks/{chunk-HZY42OVU.js → chunk-D2Y36V5J.js} +2 -2
- package/dist/cli/chunks/{chunk-WF6UISKW.js → chunk-DSJJHPPS.js} +4 -4
- package/dist/cli/chunks/{chunk-FYPX5WBJ.js → chunk-DZHXCOSK.js} +1 -1
- package/dist/cli/chunks/{chunk-TXSPBLBT.js → chunk-EBV3WFIR.js} +2 -2
- package/dist/cli/chunks/{chunk-Y6AKKQIQ.js → chunk-EKO5QL2B.js} +1 -1
- package/dist/cli/chunks/{chunk-MZB2UV2O.js → chunk-EMOZ5O5S.js} +1 -1
- package/dist/cli/chunks/{chunk-23CX7JNL.js → chunk-ES7TAJRJ.js} +2 -2
- package/dist/cli/chunks/{chunk-Z4Q5PCRZ.js → chunk-EXQGHTPD.js} +4 -4
- package/dist/cli/chunks/{chunk-A2VUCUTT.js → chunk-F2WAB4WK.js} +2 -2
- package/dist/cli/chunks/{chunk-CQNMGK6Y.js → chunk-F57FTFWS.js} +2 -2
- package/dist/cli/chunks/{chunk-OEPNNLR4.js → chunk-F6JJNBE5.js} +1 -1
- package/dist/cli/chunks/{chunk-UBJG3IHT.js → chunk-FRC7AFB4.js} +2 -2
- package/dist/cli/chunks/{chunk-2G63VIJE.js → chunk-G36RZF2Y.js} +1 -1
- package/dist/cli/chunks/{chunk-YRHTQZU4.js → chunk-G3C7Z6FO.js} +2 -2
- package/dist/cli/chunks/{chunk-B4I43GE2.js → chunk-GA63ESNT.js} +2 -2
- package/dist/cli/chunks/{chunk-7QYOTUOX.js → chunk-GHMJFICO.js} +2 -2
- package/dist/cli/chunks/{chunk-HYOPJHHW.js → chunk-GK5WLUX3.js} +1 -1
- package/dist/cli/chunks/{chunk-A5MA7A23.js → chunk-GQJ4QDEN.js} +6 -6
- package/dist/cli/chunks/{chunk-UA7TDVL7.js → chunk-GVLRE3BV.js} +4 -4
- package/dist/cli/chunks/{chunk-25P6JA6V.js → chunk-H5UH234L.js} +1 -1
- package/dist/cli/chunks/{chunk-BE4KALTE.js → chunk-HBAFXWSO.js} +1 -1
- package/dist/cli/chunks/{chunk-EGOIIUBD.js → chunk-HE3BDBAO.js} +2 -2
- package/dist/cli/chunks/{chunk-P2UPYSDJ.js → chunk-HHANMCD2.js} +1 -1
- package/dist/cli/chunks/{chunk-ZUOVNFXK.js → chunk-HPVYJ6JH.js} +2 -2
- package/dist/cli/chunks/{chunk-RKI3IQKQ.js → chunk-I6NZFBT3.js} +3 -3
- package/dist/cli/chunks/{chunk-QVH5Y7AP.js → chunk-ISBOHF6Y.js} +1 -1
- package/dist/cli/chunks/{chunk-IWFFO6VT.js → chunk-J24AJEDE.js} +2 -2
- package/dist/cli/chunks/{chunk-5GFKTJ65.js → chunk-J5HTQHJK.js} +2 -2
- package/dist/cli/chunks/{chunk-LY7MFGBD.js → chunk-JDOVO4E4.js} +150 -149
- package/dist/cli/chunks/chunk-JQAJUXRE.js +2 -0
- package/dist/cli/chunks/{chunk-HXXHMLJ5.js → chunk-JRK5GX56.js} +1 -1
- package/dist/cli/chunks/{chunk-36VKMAMN.js → chunk-JRLZ7LZ3.js} +2 -2
- package/dist/cli/chunks/{chunk-6PJPQGF4.js → chunk-JTOFLDU7.js} +2 -2
- package/dist/cli/chunks/{chunk-CVOQ6ESD.js → chunk-K6EOHGKS.js} +2 -2
- package/dist/cli/chunks/{chunk-LU2EDWQK.js → chunk-KKXH25IH.js} +2 -2
- package/dist/cli/chunks/{chunk-EYXE2XKP.js → chunk-KNSQWM2E.js} +2 -2
- package/dist/cli/chunks/{chunk-IEJ7ZV3M.js → chunk-L5T32SRF.js} +1 -1
- package/dist/cli/chunks/{chunk-BEFTQVEW.js → chunk-LKFBW2QM.js} +2 -2
- package/dist/cli/chunks/{chunk-C3FXFU2T.js → chunk-LMAI74EP.js} +1 -1
- package/dist/cli/chunks/{chunk-P7XSPP5D.js → chunk-LQVS5IWH.js} +2 -2
- package/dist/cli/chunks/{chunk-4EKV7PHB.js → chunk-LRGTPUJA.js} +2 -2
- package/dist/cli/chunks/{chunk-MT7UNBZ7.js → chunk-LTHV4PIG.js} +2 -2
- package/dist/cli/chunks/{chunk-B2YGVSOP.js → chunk-M7QKCHLQ.js} +2 -2
- package/dist/cli/chunks/{chunk-H5RQPO3X.js → chunk-N3ASALOL.js} +2 -2
- package/dist/cli/chunks/{chunk-MQZ53OR3.js → chunk-NEXBTLN6.js} +2 -2
- package/dist/cli/chunks/{chunk-BD7FEUN3.js → chunk-NJEEKYEP.js} +3 -3
- package/dist/cli/chunks/{chunk-UOI6ULCH.js → chunk-NWUFTLSF.js} +2 -2
- package/dist/cli/chunks/{chunk-RT6O2HW2.js → chunk-O4QB2GFL.js} +2 -2
- package/dist/cli/chunks/{chunk-MZMG6CUJ.js → chunk-OA75C4HY.js} +2 -2
- package/dist/cli/chunks/{chunk-HYFQUWNB.js → chunk-OVMG6EEF.js} +2 -2
- package/dist/cli/chunks/{chunk-FSSR6WBE.js → chunk-OX7MJFLC.js} +2 -2
- package/dist/cli/chunks/{chunk-ENK44A6Q.js → chunk-OZJQN7YE.js} +2 -2
- package/dist/cli/chunks/{chunk-LXZMP3VX.js → chunk-PFXCRRR6.js} +25 -25
- package/dist/cli/chunks/{chunk-WIH522AP.js → chunk-PVJLQ2YZ.js} +1 -1
- package/dist/cli/chunks/{chunk-ZUB5YOCM.js → chunk-QDRFLM77.js} +2 -2
- package/dist/cli/chunks/{chunk-NHUGHAY6.js → chunk-QH7C4PTX.js} +1 -1
- package/dist/cli/chunks/{chunk-VXKWNRGA.js → chunk-QKM4XT2F.js} +2 -2
- package/dist/cli/chunks/{chunk-ON2UTP2U.js → chunk-QP7EKLWU.js} +2 -2
- package/dist/cli/chunks/{chunk-KUHLTVWC.js → chunk-QPACHVDI.js} +1 -1
- package/dist/cli/chunks/{chunk-PCJQCEBA.js → chunk-QQVE65ER.js} +2 -2
- package/dist/cli/chunks/{chunk-Q3NSU24F.js → chunk-QYCZYJH7.js} +2 -2
- package/dist/cli/chunks/{chunk-AEUEMVJK.js → chunk-R6I5I724.js} +2 -2
- package/dist/cli/chunks/{chunk-5D7ZFWDS.js → chunk-RJJIPTVH.js} +2 -2
- package/dist/cli/chunks/{chunk-ZWEKAEEV.js → chunk-RM6OC35G.js} +1 -1
- package/dist/cli/chunks/{chunk-ZELWDJXT.js → chunk-RTD4U7IW.js} +2 -2
- package/dist/cli/chunks/{chunk-O5V7RHVG.js → chunk-SKJQKOFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-6RD44SCE.js → chunk-SMBGK7XI.js} +1 -1
- package/dist/cli/chunks/{chunk-ND4QTZOL.js → chunk-SPS472C5.js} +2 -2
- package/dist/cli/chunks/{chunk-TFK2AYIN.js → chunk-SUNXA2UR.js} +2 -2
- package/dist/cli/chunks/{chunk-RDGPXENG.js → chunk-SVP3BP52.js} +2 -2
- package/dist/cli/chunks/{chunk-NBLDBVAW.js → chunk-T4WQPE77.js} +1 -1
- package/dist/cli/chunks/{chunk-ZS4XVJGV.js → chunk-T53ZN4NO.js} +2 -2
- package/dist/cli/chunks/chunk-T6W2EYHC.js +2 -0
- package/dist/cli/chunks/{chunk-JZT7BU44.js → chunk-T7YCNOW5.js} +2 -2
- package/dist/cli/chunks/{chunk-EADSQN5T.js → chunk-TCQWVVSR.js} +1 -1
- package/dist/cli/chunks/{chunk-XYLQZWF6.js → chunk-TGRHO4ES.js} +2 -2
- package/dist/cli/chunks/{chunk-QPLSYEWJ.js → chunk-TP7L4EX6.js} +2 -2
- package/dist/cli/chunks/{chunk-N5XOXPHZ.js → chunk-TT45RCLN.js} +2 -2
- package/dist/cli/chunks/{chunk-OZGIOKEA.js → chunk-TUZNWRYC.js} +1 -1
- package/dist/cli/chunks/{chunk-53BXTTRO.js → chunk-U2QTL5T2.js} +3 -3
- package/dist/cli/chunks/chunk-U64QORFO.js +2 -0
- package/dist/cli/chunks/{chunk-SRPLERER.js → chunk-UHLZKH6B.js} +4 -4
- package/dist/cli/chunks/{chunk-HPWWYT67.js → chunk-UIWXKRTK.js} +2 -2
- package/dist/cli/chunks/{chunk-XWYELBZS.js → chunk-UNFE4RPV.js} +1 -1
- package/dist/cli/chunks/{chunk-FW4DJ4FJ.js → chunk-UQGIC5OX.js} +1 -1
- package/dist/cli/chunks/{chunk-GLGKQX2V.js → chunk-VAXTPLO3.js} +2 -2
- package/dist/cli/chunks/{chunk-VYDVI6FZ.js → chunk-VCSNNLWL.js} +2 -2
- package/dist/cli/chunks/{chunk-J7AQZLIH.js → chunk-VSPNIDQK.js} +4 -4
- package/dist/cli/chunks/{chunk-EIGRV3J6.js → chunk-VV2JVYOI.js} +2 -2
- package/dist/cli/chunks/{chunk-CBONQM5D.js → chunk-VW7AXJQS.js} +2 -2
- package/dist/cli/chunks/{chunk-O6MO5KMR.js → chunk-W7JUD4EZ.js} +2 -2
- package/dist/cli/chunks/{chunk-QFETNCNN.js → chunk-WFKE7NZ5.js} +2 -2
- package/dist/cli/chunks/{chunk-ROVZSZCS.js → chunk-WVEHKAIH.js} +3 -3
- package/dist/cli/chunks/{chunk-YO4ESCB4.js → chunk-XAESN54Q.js} +1 -1
- package/dist/cli/chunks/{chunk-RKUAWQOF.js → chunk-XECZYQT5.js} +2 -2
- package/dist/cli/chunks/{chunk-RLW25X66.js → chunk-XFT4FYTC.js} +2 -2
- package/dist/cli/chunks/{chunk-SM2YJ2AL.js → chunk-YHX74M7C.js} +2 -2
- package/dist/cli/chunks/chunk-YIWBJ637.js +2 -0
- package/dist/cli/chunks/{chunk-IAENZ2DR.js → chunk-Z5UZOYQS.js} +2 -2
- package/dist/cli/chunks/{chunk-G367W7XR.js → chunk-Z6G3QVZ4.js} +12 -12
- package/dist/cli/chunks/ci-5LIV2HW5.js +82 -0
- package/dist/cli/chunks/{ci-output-RLS32FUY.js → ci-output-UO5BDFU4.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-MRCC7WCM.js → circuit-breaker-UQDPXYRD.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-LIZCEKDF.js → claude-flow-setup-62QES3QX.js} +2 -2
- package/dist/cli/chunks/client-AJZKCP4I.js +2 -0
- package/dist/cli/chunks/{cline-installer-T7H6R2RC.js → cline-installer-X7VZTSZG.js} +2 -2
- package/dist/cli/chunks/{code-XMBLI7OF.js → code-H3BF4L4H.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-QS7BYLEX.js → code-index-extractor-BJGFZGGL.js} +2 -2
- package/dist/cli/chunks/{codex-installer-6PGT5FM6.js → codex-installer-KVZWKU6S.js} +2 -2
- package/dist/cli/chunks/{completions-2A3WRXY2.js → completions-YMILE6V7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-23HOOGJ7.js → complexity-analyzer-J26N2PWG.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-4FSF7B3N.js → continuedev-installer-MAR42OV7.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-A5GRQQUU.js → copilot-installer-CVOJF6OT.js} +2 -2
- package/dist/cli/chunks/core-handlers-MQHEMGDV.js +2 -0
- package/dist/cli/chunks/{cost-tracker-Z4STQ5VB.js → cost-tracker-SXLWXE55.js} +2 -2
- package/dist/cli/chunks/{coverage-NUPP6KZZ.js → coverage-D7HCHFP3.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-3QNMZV5R.js +2 -0
- package/dist/cli/chunks/{cursor-installer-FVJ7ROPJ.js → cursor-installer-X37VHIKW.js} +2 -2
- package/dist/cli/chunks/{daemon-D662EX5N.js → daemon-JN7SOH6F.js} +4 -4
- package/dist/cli/chunks/{daemon-7ZZA2MMN.js → daemon-LIW47IDM.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-IB4TQ2KA.js → dag-attention-scheduler-QCHHIZBT.js} +2 -2
- package/dist/cli/chunks/{detect-LGLBZN4I.js → detect-WRFCWAX5.js} +2 -2
- package/dist/cli/chunks/{dist-node-Z3OL42YE.js → dist-node-6FWT4XZO.js} +2 -2
- package/dist/cli/chunks/{domain-handler-L3CLNL7U.js → domain-handler-SNFPNMRT.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GQ3V5X6L.js → domain-plugins-MXKHH62P.js} +2 -2
- package/dist/cli/chunks/domain-transfer-47UJNERX.js +2 -0
- package/dist/cli/chunks/dream-OSWAITPT.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-UGD6USYH.js → embed-and-insert-pattern-LZFAUNBQ.js} +2 -2
- package/dist/cli/chunks/{eval-3B7UIYGY.js → eval-AMUXTMJB.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-3RQ4NYY3.js → experience-capture-middleware-3D65TR2C.js} +4 -4
- package/dist/cli/chunks/{fast-paths-QOSAEPYD.js → fast-paths-Y7BBMM56.js} +2 -2
- package/dist/cli/chunks/{feature-flags-TLF4NKOH.js → feature-flags-JMQQ7JW4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-3S5TH6P4.js → feature-flags-VESRRQ6V.js} +2 -2
- package/dist/cli/chunks/{file-discovery-AEVMJRNB.js → file-discovery-JJKQQUV6.js} +2 -2
- package/dist/cli/chunks/{fleet-E6WTXWFL.js → fleet-WIGHICJF.js} +4 -4
- package/dist/cli/chunks/{gnn-wrapper-MCKH3AUU.js → gnn-wrapper-BFNPETTT.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-U7XENHRR.js → heartbeat-handler-HDXKTGUI.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-BVRVVIE2.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-MZTHXULS.js +2 -0
- package/dist/cli/chunks/hnsw-index-KHEX4VDG.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-5GW4SAEI.js → hnsw-legacy-bridge-6A7OTAPT.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-7BLZBK5T.js → hnswlib-node-LKV2H47B.js} +2 -2
- package/dist/cli/chunks/{hooks-F3O2SB6H.js → hooks-KDSFYQQG.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-2B3LCLR4.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-PV4EKXHB.js → hypergraph-engine-GDLPEPUC.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-VOWO5ZTW.js → hypergraph-handler-4UMFA2EW.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-4R4VWOGQ.js +2 -0
- package/dist/cli/chunks/{init-handler-ENJ5ONJX.js → init-handler-4GCHPQHD.js} +6 -6
- package/dist/cli/chunks/init-wizard-TAOPXHHD.js +2 -0
- package/dist/cli/chunks/kernel-6I6VZUWY.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-HNNJOOPE.js → kilocode-installer-HJZMT2G5.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-UZBIQ3IC.js → kiro-installer-WUPY67HG.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-KFMTTUR5.js +2 -0
- package/dist/cli/chunks/{learning-YMLCVFUT.js → learning-AXKIS7IG.js} +4 -4
- package/dist/cli/chunks/{llm-router-YWTARCCT.js → llm-router-HUDPNZLJ.js} +4 -4
- package/dist/cli/chunks/llm-router-service-2D74XVM3.js +2 -0
- package/dist/cli/chunks/{load-DKE3F3IP.js → load-RM44POD7.js} +2 -2
- package/dist/cli/chunks/load-test-53FWOWNS.js +2 -0
- package/dist/cli/chunks/{mcp-5PSGIUCW.js → mcp-5JVQRBOP.js} +2 -2
- package/dist/cli/chunks/{memory-3L3O6JMM.js → memory-VGZ2V6PL.js} +5 -5
- package/dist/cli/chunks/memory-backend-KFJDDPEZ.js +2 -0
- package/dist/cli/chunks/memory-handlers-EI537Z32.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-AEEO7IA4.js → multi-model-executor-WPRKCSCM.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-ABBO355U.js → opencode-installer-YAJMRCQO.js} +2 -2
- package/dist/cli/chunks/{orchestrator-E36Q7MKE.js → orchestrator-MUGWBUYP.js} +6 -6
- package/dist/cli/chunks/pattern-null-store-7DMU5CJ4.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-H4XKSID4.js → pattern-usage-recorder-ZQJJ2YNG.js} +2 -2
- package/dist/cli/chunks/{pipeline-BGFEHXIN.js → pipeline-F4DXDUDC.js} +2 -2
- package/dist/cli/chunks/{platform-GK7ZVDJI.js → platform-HI3A3OWF.js} +2 -2
- package/dist/cli/chunks/{plugin-CAH2CKI6.js → plugin-XRITPTR7.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-M5EYRONA.js → prime-radiant-advanced-wasm-HHNJP7CQ.js} +2 -2
- package/dist/cli/chunks/{project-root-BSNZC243.js → project-root-2VN4WO2A.js} +2 -2
- package/dist/cli/chunks/protocol-executor-2EMTBTMG.js +2 -0
- package/dist/cli/chunks/{protocol-handler-JDSSC2SF.js → protocol-handler-ZEVHSEBG.js} +2 -2
- package/dist/cli/chunks/{prove-ANPTOZJE.js → prove-C4BLZWBS.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-VZHZZPHE.js +2 -0
- package/dist/cli/chunks/{quality-SXWGYRQR.js → quality-M3DTE4KK.js} +2 -2
- package/dist/cli/chunks/quality-gate-V6KS7ML3.js +7 -0
- package/dist/cli/chunks/queen-coordinator-7MYTTUHI.js +2 -0
- package/dist/cli/chunks/{real-embeddings-WSRYAOZM.js → real-embeddings-YWSE3IRT.js} +2 -2
- package/dist/cli/chunks/{ref-validation-AZ3LRWEK.js → ref-validation-ZWOTFA3T.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-2QKGFIEU.js → roocode-installer-GJBIWETD.js} +2 -2
- package/dist/cli/chunks/router-ZD4LXAWA.js +2 -0
- package/dist/cli/chunks/routing-feedback-FSLMDVGD.js +2 -0
- package/dist/cli/chunks/{routing-handler-UYDC5MMD.js → routing-handler-CFYLGNAR.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QXADPVEY.js → ruvector-commands-EDKG456B.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-LTKTDRFS.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-IF24EVC5.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-GD4NBFKT.js → rvf-migration-coordinator-ZMEYMAI6.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-E6JNBKMZ.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-7SXG66IL.js → rvf-store-integrity-AH6PNJP6.js} +2 -2
- package/dist/cli/chunks/safe-db-F6TRB5KZ.js +2 -0
- package/dist/cli/chunks/schedule-HBD4BYTE.js +2 -0
- package/dist/cli/chunks/scheduler-6FYWPMQC.js +2 -0
- package/dist/cli/chunks/{security-YKB622PK.js → security-ZU2GW3ZM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-KMLAV7JK.js → shared-rvf-adapter-5FOVSL3T.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-OYY27DFV.js → shared-rvf-dual-writer-IO4DC4XV.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-DOU72F5Z.js +2 -0
- package/dist/cli/chunks/{standalone-memory-2DOABVLC.js → standalone-memory-3UXDZ7HI.js} +2 -2
- package/dist/cli/chunks/{status-handler-EXRKETV7.js → status-handler-264CHTWS.js} +2 -2
- package/dist/cli/chunks/{structural-health-2SKK6DU6.js → structural-health-E2QPUOZE.js} +2 -2
- package/dist/cli/chunks/{sync-UW7SX7GO.js → sync-2ACMWM7D.js} +2 -2
- package/dist/cli/chunks/{sync-DQ2YUNI6.js → sync-N2L2OST4.js} +2 -2
- package/dist/cli/chunks/{task-handler-LYQ6WYUY.js → task-handler-IB5CVOTY.js} +2 -2
- package/dist/cli/chunks/{task-handlers-DIJO232S.js → task-handlers-QBMYNJHE.js} +3 -3
- package/dist/cli/chunks/{test-WRHZMUCW.js → test-7RGLRDSP.js} +6 -6
- package/dist/cli/chunks/{test-scheduling-HI23RXFK.js → test-scheduling-RJABJT2W.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-23SA6SWZ.js → token-bootstrap-JVHMHB72.js} +2 -2
- package/dist/cli/chunks/{token-usage-M7RRDPXO.js → token-usage-3ECHQVCY.js} +2 -2
- package/dist/cli/chunks/{transformers-4TC35KKS.js → transformers-KJH3IJWI.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-F4LTKAWD.js → tree-sitter-wasm-parser-XN6PFI32.js} +2 -2
- package/dist/cli/chunks/{types-NBXV6LXQ.js → types-5BAPXOLS.js} +2 -2
- package/dist/cli/chunks/unified-memory-GHAYAXWZ.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-CCC63YXT.js +2 -0
- package/dist/cli/chunks/unified-persistence-HKRHI5PG.js +2 -0
- package/dist/cli/chunks/{upgrade-4BGOU5RM.js → upgrade-S5NFQZID.js} +2 -2
- package/dist/cli/chunks/{validate-EDWAR63H.js → validate-BIBWOLJD.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-VI72CPR7.js → validate-swarm-WAA3LBHH.js} +2 -2
- package/dist/cli/chunks/visual-security-APOXJ3Q3.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-Y5XBRQXF.js → web-tree-sitter-OTBQTHAV.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VEX23WAF.js → windsurf-installer-NNQ22EW6.js} +2 -2
- package/dist/cli/chunks/witness-chain-7IP5IJGT.js +2 -0
- package/dist/cli/chunks/{witness-chain-3YNL6YGY.js → witness-chain-E7MUBOJW.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-MJZGZRWT.js → witness-chain-repair-FW4QSN4C.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-TTJYXTBE.js → witness-chain-verifier-YMROEBVL.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-EM6YXYOY.js → witness-key-manager-4CGRNDMJ.js} +2 -2
- package/dist/cli/chunks/{workflow-2RBDOM7V.js → workflow-4VRSTRAN.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-2HNW5ZMQ.js +2 -0
- package/dist/cli/chunks/{wrappers-5OTAVVOV.js → wrappers-4M4UTGEU.js} +2 -2
- package/dist/cli/commands/ci.js +17 -6
- package/dist/cli/commands/quality-gate.js +6 -1
- package/dist/cli/index.js +7 -2
- package/dist/cli/process-store-cleanup.d.ts +7 -0
- package/dist/cli/process-store-cleanup.js +27 -0
- package/dist/cli/utils/ci-config.d.ts +3 -3
- package/dist/cli/utils/ci-config.js +202 -68
- package/dist/domains/quality-assessment/quality-evidence.d.ts +3 -1
- package/dist/domains/quality-assessment/quality-evidence.js +7 -2
- package/dist/domains/test-execution/services/retry-handler.js +32 -13
- package/dist/domains/test-execution/services/test-executor.d.ts +3 -3
- package/dist/domains/test-execution/services/test-executor.js +66 -22
- package/dist/init/fleet-integration.js +3 -2
- package/dist/init/init-wizard-steps.js +3 -2
- package/dist/init/phases/06-code-intelligence.js +6 -4
- package/dist/integrations/ruvector/sona-persistence.d.ts +1 -0
- package/dist/integrations/ruvector/sona-persistence.js +74 -20
- package/dist/integrations/ruvector/sona-wrapper.d.ts +2 -0
- package/dist/integrations/ruvector/sona-wrapper.js +13 -0
- package/dist/kernel/memory-backend.js +5 -4
- package/dist/kernel/unified-memory.js +3 -2
- package/dist/learning/aqe-learning-engine.js +3 -2
- package/dist/mcp/bundle.js +440 -439
- package/dist/mcp/connection-pool.d.ts +2 -0
- package/dist/mcp/connection-pool.js +13 -2
- package/dist/mcp/handlers/memory-handlers.d.ts +1 -0
- package/dist/mcp/handlers/memory-handlers.js +16 -6
- package/dist/mcp/protocol-server.js +29 -8
- package/dist/mcp/types.d.ts +2 -0
- package/dist/optimization/session-cache.js +13 -11
- package/dist/plugins/cache.js +10 -3
- package/dist/shared/embeddings/embedding-cache.js +4 -4
- package/dist/shared/llm/cache.js +7 -10
- package/dist/shared/retry-engine.js +4 -0
- package/dist/shared/test-runner-process.d.ts +10 -0
- package/dist/shared/test-runner-process.js +210 -0
- package/dist/validation/quality-verdict.js +3 -2
- package/dist/workers/quality-daemon/priority-queue.js +4 -1
- package/package.json +4 -4
- package/dist/cli/chunks/adapter-TVQKH65T.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-ULGTVVWE.js +0 -2
- package/dist/cli/chunks/base-W42BURDL.js +0 -2
- package/dist/cli/chunks/browser-workflow-HKGHFFFT.js +0 -2
- package/dist/cli/chunks/chunk-2IMSJ7IO.js +0 -2
- package/dist/cli/chunks/chunk-FBZC4IGB.js +0 -2
- package/dist/cli/chunks/chunk-MNQN7UZX.js +0 -4
- package/dist/cli/chunks/chunk-OXHF3L2T.js +0 -2
- package/dist/cli/chunks/chunk-PELENDDQ.js +0 -2
- package/dist/cli/chunks/chunk-TW3SR4TS.js +0 -2
- package/dist/cli/chunks/chunk-V6RE4YRQ.js +0 -2
- package/dist/cli/chunks/chunk-ZQZD55MN.js +0 -3
- package/dist/cli/chunks/ci-J3TDK5RA.js +0 -81
- package/dist/cli/chunks/client-3BD2DI4N.js +0 -2
- package/dist/cli/chunks/core-handlers-C3H2ZCS2.js +0 -2
- package/dist/cli/chunks/cross-domain-router-JCQ7SWDP.js +0 -2
- package/dist/cli/chunks/domain-transfer-MFCI76IY.js +0 -2
- package/dist/cli/chunks/dream-FTP33IJB.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-HXBJVJL2.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-TU6WG2ME.js +0 -2
- package/dist/cli/chunks/hnsw-index-MS5KODD7.js +0 -2
- package/dist/cli/chunks/hybrid-backend-HT45LBHC.js +0 -2
- package/dist/cli/chunks/impact-analyzer-AP4AGTG5.js +0 -2
- package/dist/cli/chunks/init-wizard-I5DFZUQL.js +0 -2
- package/dist/cli/chunks/kernel-MISPSPPA.js +0 -2
- package/dist/cli/chunks/knowledge-graph-L26JESGE.js +0 -2
- package/dist/cli/chunks/llm-router-service-MWGC43ZA.js +0 -2
- package/dist/cli/chunks/load-test-H5ISNNM5.js +0 -2
- package/dist/cli/chunks/memory-backend-HWDNOBKW.js +0 -2
- package/dist/cli/chunks/memory-handlers-ZFDVQZM5.js +0 -2
- package/dist/cli/chunks/pattern-null-store-GQP6ICWK.js +0 -2
- package/dist/cli/chunks/protocol-executor-AD5A4DAI.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-W3Z2PKTR.js +0 -2
- package/dist/cli/chunks/quality-gate-GYNCA4ZY.js +0 -7
- package/dist/cli/chunks/queen-coordinator-HQRHLIJX.js +0 -2
- package/dist/cli/chunks/router-MTP5LH4H.js +0 -2
- package/dist/cli/chunks/routing-feedback-GWETVB4L.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-4UE5S7WP.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-PHH3HF4Q.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-KTLZBUWV.js +0 -2
- package/dist/cli/chunks/safe-db-FWWGAPVE.js +0 -2
- package/dist/cli/chunks/schedule-TPA4V4D5.js +0 -2
- package/dist/cli/chunks/scheduler-5ZTEPNDD.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-HPTT624C.js +0 -2
- package/dist/cli/chunks/unified-memory-OVFEPRPS.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-KKRSCZHR.js +0 -2
- package/dist/cli/chunks/unified-persistence-7GLR4RI3.js +0 -2
- package/dist/cli/chunks/visual-security-2FUM5GLI.js +0 -2
- package/dist/cli/chunks/witness-chain-MH6GA5L6.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-H6G65YKU.js +0 -2
|
@@ -56,6 +56,7 @@ declare class ConnectionPoolImpl {
|
|
|
56
56
|
private readonly config;
|
|
57
57
|
private healthCheckInterval;
|
|
58
58
|
private initialized;
|
|
59
|
+
private initializationPromise;
|
|
59
60
|
private totalRequests;
|
|
60
61
|
private cacheHits;
|
|
61
62
|
private acquisitionTimes;
|
|
@@ -67,6 +68,7 @@ declare class ConnectionPoolImpl {
|
|
|
67
68
|
* Initialize the connection pool with minConnections
|
|
68
69
|
*/
|
|
69
70
|
initialize(): Promise<void>;
|
|
71
|
+
private initializeOnce;
|
|
70
72
|
/**
|
|
71
73
|
* Acquire a connection from the pool (O(1) operation)
|
|
72
74
|
* Uses semaphore pattern to prevent race conditions
|
|
@@ -27,6 +27,7 @@ class ConnectionPoolImpl {
|
|
|
27
27
|
config;
|
|
28
28
|
healthCheckInterval = null;
|
|
29
29
|
initialized = false;
|
|
30
|
+
initializationPromise = null;
|
|
30
31
|
// Performance tracking
|
|
31
32
|
totalRequests = 0;
|
|
32
33
|
cacheHits = 0;
|
|
@@ -45,6 +46,14 @@ class ConnectionPoolImpl {
|
|
|
45
46
|
if (this.initialized) {
|
|
46
47
|
return;
|
|
47
48
|
}
|
|
49
|
+
if (!this.initializationPromise) {
|
|
50
|
+
this.initializationPromise = this.initializeOnce().finally(() => {
|
|
51
|
+
this.initializationPromise = null;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return this.initializationPromise;
|
|
55
|
+
}
|
|
56
|
+
async initializeOnce() {
|
|
48
57
|
// Pre-warm minimum connections
|
|
49
58
|
const warmupPromises = [];
|
|
50
59
|
for (let i = 0; i < this.config.minConnections; i++) {
|
|
@@ -115,7 +124,7 @@ class ConnectionPoolImpl {
|
|
|
115
124
|
// O(1) acquisition from idle set
|
|
116
125
|
for (const connId of this.idleConnections) {
|
|
117
126
|
const conn = this.connections.get(connId);
|
|
118
|
-
if (conn && conn.isHealthy) {
|
|
127
|
+
if (conn && conn.isHealthy && !conn.inUse) {
|
|
119
128
|
// Mark as in use and remove from idle set
|
|
120
129
|
conn.inUse = true;
|
|
121
130
|
conn.lastUsedAt = Date.now();
|
|
@@ -134,6 +143,7 @@ class ConnectionPoolImpl {
|
|
|
134
143
|
const newConn = this.createConnectionSync();
|
|
135
144
|
if (newConn) {
|
|
136
145
|
newConn.inUse = true;
|
|
146
|
+
this.idleConnections.delete(newConn.id);
|
|
137
147
|
this.cacheHits++;
|
|
138
148
|
const elapsed = performance.now() - startTime;
|
|
139
149
|
this.trackAcquisitionTime(elapsed);
|
|
@@ -224,7 +234,7 @@ class ConnectionPoolImpl {
|
|
|
224
234
|
const pruned = [];
|
|
225
235
|
for (const [id, conn] of this.connections.entries()) {
|
|
226
236
|
// Prune if unhealthy or idle for too long
|
|
227
|
-
if (!conn.isHealthy || (now - conn.lastUsedAt > this.config.idleTimeoutMs)) {
|
|
237
|
+
if (!conn.inUse && (!conn.isHealthy || (now - conn.lastUsedAt > this.config.idleTimeoutMs))) {
|
|
228
238
|
pruned.push(id);
|
|
229
239
|
}
|
|
230
240
|
}
|
|
@@ -252,6 +262,7 @@ class ConnectionPoolImpl {
|
|
|
252
262
|
* Shutdown the pool
|
|
253
263
|
*/
|
|
254
264
|
async shutdown() {
|
|
265
|
+
await this.initializationPromise;
|
|
255
266
|
if (this.healthCheckInterval) {
|
|
256
267
|
clearInterval(this.healthCheckInterval);
|
|
257
268
|
this.healthCheckInterval = null;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* ADR-058: Integrated with MemoryWriteGate for contradiction detection
|
|
6
6
|
* and ComplianceReporter for violation tracking.
|
|
7
7
|
*/
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
8
9
|
import { getFleetState, isFleetInitialized } from './core-handlers.js';
|
|
9
10
|
// ADR-058: Governance integration for memory writes
|
|
10
11
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
@@ -199,8 +200,15 @@ export async function handleMemoryQuery(params) {
|
|
|
199
200
|
}
|
|
200
201
|
try {
|
|
201
202
|
const namespace = params.namespace || 'default';
|
|
202
|
-
const limit = params.limit
|
|
203
|
-
const offset = params.offset
|
|
203
|
+
const limit = params.limit ?? 100;
|
|
204
|
+
const offset = params.offset ?? 0;
|
|
205
|
+
if (!Number.isSafeInteger(limit) || limit < 0 ||
|
|
206
|
+
!Number.isSafeInteger(offset) || offset < 0 ||
|
|
207
|
+
!Number.isSafeInteger(limit + offset + 1)) {
|
|
208
|
+
return { success: false, error: 'Memory query limit and offset must be non-negative safe integers with a safe combined page size.' };
|
|
209
|
+
}
|
|
210
|
+
// One extra candidate proves whether another page exists without scanning all memory.
|
|
211
|
+
const fetchLimit = limit + offset + 1;
|
|
204
212
|
// Determine if we should use semantic (HNSW vector) search
|
|
205
213
|
const useSemantic = params.semantic === true ||
|
|
206
214
|
(params.semantic !== false && params.pattern && isNaturalLanguageQuery(params.pattern));
|
|
@@ -209,8 +217,9 @@ export async function handleMemoryQuery(params) {
|
|
|
209
217
|
try {
|
|
210
218
|
// Generate real 384-dim transformer embedding for accurate cosine similarity search
|
|
211
219
|
const embedding = await computeRealEmbedding(params.pattern);
|
|
212
|
-
|
|
213
|
-
const
|
|
220
|
+
// Semantic queries have the same namespace boundary as pattern queries.
|
|
221
|
+
const keyPrefix = `${namespace}:`;
|
|
222
|
+
const filtered = await memory.vectorSearch(embedding, fetchLimit, keyPrefix);
|
|
214
223
|
const paginatedResults = filtered.slice(offset, offset + limit);
|
|
215
224
|
const entries = paginatedResults.map(r => {
|
|
216
225
|
const parts = r.key.split(':');
|
|
@@ -240,7 +249,7 @@ export async function handleMemoryQuery(params) {
|
|
|
240
249
|
const pattern = params.pattern
|
|
241
250
|
? `${namespace}:${params.pattern}`
|
|
242
251
|
: `${namespace}:*`;
|
|
243
|
-
const keys = await memory.search(pattern,
|
|
252
|
+
const keys = await memory.search(pattern, fetchLimit);
|
|
244
253
|
// Apply pagination
|
|
245
254
|
const paginatedKeys = keys.slice(offset, offset + limit);
|
|
246
255
|
const entries = paginatedKeys.map((key) => {
|
|
@@ -353,7 +362,8 @@ export async function handleMemoryShare(params) {
|
|
|
353
362
|
}
|
|
354
363
|
try {
|
|
355
364
|
// Store shared knowledge for each target agent
|
|
356
|
-
|
|
365
|
+
// Concurrent agents can publish several findings within the same millisecond.
|
|
366
|
+
const sharedKey = `shared:${params.knowledgeDomain}:${Date.now()}:${randomUUID()}`;
|
|
357
367
|
const sharedContent = {
|
|
358
368
|
source: params.sourceAgentId,
|
|
359
369
|
targets: params.targetAgentIds,
|
|
@@ -417,6 +417,7 @@ export class MCPProtocolServer {
|
|
|
417
417
|
const startTime = performance.now();
|
|
418
418
|
let success = false;
|
|
419
419
|
let cacheable;
|
|
420
|
+
let invalidatesCache = false;
|
|
420
421
|
// Emit AG-UI progress event for tool start
|
|
421
422
|
const stepId = `${name}-${Date.now()}`;
|
|
422
423
|
this.eventAdapter.adapt({
|
|
@@ -461,14 +462,13 @@ export class MCPProtocolServer {
|
|
|
461
462
|
// IMP-00: Execute pre-tool-call middleware
|
|
462
463
|
const processedCtx = await this.middlewareChain.executePreHooks(ctx);
|
|
463
464
|
// Issue #473: Session-cache lookup for read-only tools.
|
|
464
|
-
// Concurrency
|
|
465
|
-
//
|
|
466
|
-
//
|
|
467
|
-
//
|
|
468
|
-
// Explicit quality gates depend on current measured evidence and its age,
|
|
469
|
-
// not just arguments. A cached approval can outlive or contradict evidence.
|
|
465
|
+
// Concurrency safety does not imply stable output: status and metrics
|
|
466
|
+
// can change in the background without another MCP mutation. Live reads
|
|
467
|
+
// opt out of reuse while retaining their concurrency-safe scheduling hint.
|
|
468
|
+
// Explicit quality gates also depend on current measured evidence/age.
|
|
470
469
|
const measuredQualityGate = name === 'quality_assess' && processedCtx.params?.runGate === true;
|
|
471
|
-
|
|
470
|
+
invalidatesCache = tool.definition.isConcurrencySafe !== true || measuredQualityGate;
|
|
471
|
+
cacheable = !invalidatesCache && tool.definition.isCacheable !== false;
|
|
472
472
|
let cacheFingerprint = null;
|
|
473
473
|
let cacheGeneration = null;
|
|
474
474
|
if (cacheable && process.env.AQE_SESSION_CACHE !== 'off') {
|
|
@@ -592,7 +592,7 @@ export class MCPProtocolServer {
|
|
|
592
592
|
// Tool names and success flags do not prove whether state changed.
|
|
593
593
|
// Unknown cross-domain effects require a global flush, including after
|
|
594
594
|
// a handler throws or reports failure following a partial effect.
|
|
595
|
-
if (
|
|
595
|
+
if (invalidatesCache && process.env.AQE_SESSION_CACHE !== 'off') {
|
|
596
596
|
try {
|
|
597
597
|
const { getSessionCache } = await import('../optimization/session-cache.js');
|
|
598
598
|
getSessionCache().invalidateAll();
|
|
@@ -631,6 +631,7 @@ export class MCPProtocolServer {
|
|
|
631
631
|
description: 'Get fleet status: agents, tasks, health, and learning stats. Example: fleet_status({ verbose: true })',
|
|
632
632
|
category: 'core',
|
|
633
633
|
isConcurrencySafe: true,
|
|
634
|
+
isCacheable: false,
|
|
634
635
|
parameters: [
|
|
635
636
|
{ name: 'verbose', type: 'boolean', description: 'Include detailed information', default: false },
|
|
636
637
|
],
|
|
@@ -643,6 +644,7 @@ export class MCPProtocolServer {
|
|
|
643
644
|
description: 'Check fleet and per-domain health status with load metrics. Example: fleet_health({ domain: "test-generation" })',
|
|
644
645
|
category: 'core',
|
|
645
646
|
isConcurrencySafe: true,
|
|
647
|
+
isCacheable: false,
|
|
646
648
|
parameters: [
|
|
647
649
|
{ name: 'domain', type: 'string', description: 'Specific domain to check' },
|
|
648
650
|
],
|
|
@@ -670,6 +672,7 @@ export class MCPProtocolServer {
|
|
|
670
672
|
description: 'List tasks with optional status/limit filtering. Example: task_list({ status: "running", limit: 10 })',
|
|
671
673
|
category: 'task',
|
|
672
674
|
isConcurrencySafe: true,
|
|
675
|
+
isCacheable: false,
|
|
673
676
|
parameters: [
|
|
674
677
|
{ name: 'status', type: 'string', description: 'Filter by status' },
|
|
675
678
|
{ name: 'limit', type: 'number', description: 'Maximum results', default: 50 },
|
|
@@ -683,6 +686,7 @@ export class MCPProtocolServer {
|
|
|
683
686
|
description: 'Get detailed status, progress, and result of a specific task. Example: task_status({ taskId: "abc-123" })',
|
|
684
687
|
category: 'task',
|
|
685
688
|
isConcurrencySafe: true,
|
|
689
|
+
isCacheable: false,
|
|
686
690
|
parameters: [
|
|
687
691
|
{ name: 'taskId', type: 'string', description: 'Task ID', required: true },
|
|
688
692
|
],
|
|
@@ -719,6 +723,7 @@ export class MCPProtocolServer {
|
|
|
719
723
|
description: 'List all active agents, optionally filtered by domain. Example: agent_list({ domain: "test-generation" })',
|
|
720
724
|
category: 'agent',
|
|
721
725
|
isConcurrencySafe: true,
|
|
726
|
+
isCacheable: false,
|
|
722
727
|
parameters: [
|
|
723
728
|
{ name: 'domain', type: 'string', description: 'Filter by domain' },
|
|
724
729
|
],
|
|
@@ -743,6 +748,7 @@ export class MCPProtocolServer {
|
|
|
743
748
|
description: 'Get CPU, memory, and task performance metrics for agents. Example: agent_metrics({ agentId: "agent-1" })',
|
|
744
749
|
category: 'agent',
|
|
745
750
|
isConcurrencySafe: true,
|
|
751
|
+
isCacheable: false,
|
|
746
752
|
parameters: [
|
|
747
753
|
{ name: 'agentId', type: 'string', description: 'Specific agent ID', required: true },
|
|
748
754
|
],
|
|
@@ -755,6 +761,7 @@ export class MCPProtocolServer {
|
|
|
755
761
|
description: 'Get detailed status and current task of a specific agent. Example: agent_status({ agentId: "agent-1" })',
|
|
756
762
|
category: 'agent',
|
|
757
763
|
isConcurrencySafe: true,
|
|
764
|
+
isCacheable: false,
|
|
758
765
|
parameters: [
|
|
759
766
|
{ name: 'agentId', type: 'string', description: 'Agent ID', required: true },
|
|
760
767
|
],
|
|
@@ -768,6 +775,7 @@ export class MCPProtocolServer {
|
|
|
768
775
|
description: 'List all active domain teams and their agent counts. Example: team_list({ domain: "coverage-analysis" })',
|
|
769
776
|
category: 'agent',
|
|
770
777
|
isConcurrencySafe: true,
|
|
778
|
+
isCacheable: false,
|
|
771
779
|
parameters: [
|
|
772
780
|
{ name: 'domain', type: 'string', description: 'Filter by domain' },
|
|
773
781
|
],
|
|
@@ -780,6 +788,7 @@ export class MCPProtocolServer {
|
|
|
780
788
|
description: 'Get team health, agent utilization, and consensus status for a domain. Example: team_health({ domain: "security-compliance" })',
|
|
781
789
|
category: 'agent',
|
|
782
790
|
isConcurrencySafe: true,
|
|
791
|
+
isCacheable: false,
|
|
783
792
|
parameters: [
|
|
784
793
|
{ name: 'domain', type: 'string', description: 'Domain to check', required: true },
|
|
785
794
|
],
|
|
@@ -1024,6 +1033,8 @@ export class MCPProtocolServer {
|
|
|
1024
1033
|
{ name: 'pattern', type: 'string', description: 'Key pattern (glob) or natural language query (for semantic search)' },
|
|
1025
1034
|
{ name: 'namespace', type: 'string', description: 'Memory namespace' },
|
|
1026
1035
|
{ name: 'semantic', type: 'boolean', description: 'Use HNSW vector search instead of pattern matching. Auto-detected when pattern contains spaces and no wildcards.' },
|
|
1036
|
+
{ name: 'limit', type: 'number', description: 'Maximum entries in the page (non-negative safe integer)', default: 100 },
|
|
1037
|
+
{ name: 'offset', type: 'number', description: 'Number of entries to skip (non-negative safe integer)', default: 0 },
|
|
1027
1038
|
],
|
|
1028
1039
|
},
|
|
1029
1040
|
handler: (params) => handleMemoryQuery(params),
|
|
@@ -1046,6 +1057,7 @@ export class MCPProtocolServer {
|
|
|
1046
1057
|
description: 'Get memory usage statistics: entry counts, namespaces, and storage size. Example: memory_usage({})',
|
|
1047
1058
|
category: 'memory',
|
|
1048
1059
|
isConcurrencySafe: true,
|
|
1060
|
+
isCacheable: false,
|
|
1049
1061
|
parameters: [],
|
|
1050
1062
|
},
|
|
1051
1063
|
handler: () => handleMemoryUsage(),
|
|
@@ -1089,6 +1101,7 @@ export class MCPProtocolServer {
|
|
|
1089
1101
|
description: 'Get model routing statistics: tier distribution, cost savings, and routing log. Example: routing_metrics({ includeLog: true, logLimit: 20 })',
|
|
1090
1102
|
category: 'routing',
|
|
1091
1103
|
isConcurrencySafe: true,
|
|
1104
|
+
isCacheable: false,
|
|
1092
1105
|
parameters: [
|
|
1093
1106
|
{ name: 'includeLog', type: 'boolean', description: 'Include routing log entries', default: false },
|
|
1094
1107
|
{ name: 'logLimit', type: 'number', description: 'Max log entries to return', default: 100 },
|
|
@@ -1102,6 +1115,7 @@ export class MCPProtocolServer {
|
|
|
1102
1115
|
description: 'Get economic routing report: tier efficiency, budget status, cost-per-quality analysis, and savings opportunities. Example: routing_economics({ taskComplexity: 0.5 })',
|
|
1103
1116
|
category: 'routing',
|
|
1104
1117
|
isConcurrencySafe: true,
|
|
1118
|
+
isCacheable: false,
|
|
1105
1119
|
parameters: [
|
|
1106
1120
|
{ name: 'taskComplexity', type: 'number', description: 'Task complexity score 0-1 for tier scoring (default: 0.5)', default: 0.5 },
|
|
1107
1121
|
],
|
|
@@ -1115,6 +1129,7 @@ export class MCPProtocolServer {
|
|
|
1115
1129
|
description: 'Get infrastructure self-healing status: detected failures, recovery stats, and failing services. Example: infra_healing_status({ verbose: true })',
|
|
1116
1130
|
category: 'infra-healing',
|
|
1117
1131
|
isConcurrencySafe: true,
|
|
1132
|
+
isCacheable: false,
|
|
1118
1133
|
parameters: [
|
|
1119
1134
|
{ name: 'verbose', type: 'boolean', description: 'Include detailed observation data', default: false },
|
|
1120
1135
|
],
|
|
@@ -1215,6 +1230,7 @@ export class MCPProtocolServer {
|
|
|
1215
1230
|
description: 'Get cross-phase memory statistics (total signals, by loop, by namespace)',
|
|
1216
1231
|
category: 'cross-phase',
|
|
1217
1232
|
isConcurrencySafe: true,
|
|
1233
|
+
isCacheable: false,
|
|
1218
1234
|
parameters: [],
|
|
1219
1235
|
},
|
|
1220
1236
|
handler: () => handleCrossPhaseStats(),
|
|
@@ -1307,6 +1323,7 @@ export class MCPProtocolServer {
|
|
|
1307
1323
|
description: 'List all loaded YAML pipelines. Example: pipeline_list({})',
|
|
1308
1324
|
category: 'coordination',
|
|
1309
1325
|
isConcurrencySafe: true,
|
|
1326
|
+
isCacheable: false,
|
|
1310
1327
|
parameters: [],
|
|
1311
1328
|
},
|
|
1312
1329
|
handler: (params) => handlePipelineList(params),
|
|
@@ -1346,6 +1363,7 @@ export class MCPProtocolServer {
|
|
|
1346
1363
|
description: 'Get session operation cache statistics: hit rate, cache size, tokens saved via O(1) fingerprint reuse. Example: session_cache_stats({})',
|
|
1347
1364
|
category: 'learning',
|
|
1348
1365
|
isConcurrencySafe: true,
|
|
1366
|
+
isCacheable: false,
|
|
1349
1367
|
parameters: [],
|
|
1350
1368
|
},
|
|
1351
1369
|
handler: async () => {
|
|
@@ -1380,6 +1398,7 @@ export class MCPProtocolServer {
|
|
|
1380
1398
|
description: 'Check AQE server health: returns status, loaded domains, memory stats, HNSW index status, and pattern count. Example: aqe_health({})',
|
|
1381
1399
|
category: 'core',
|
|
1382
1400
|
isConcurrencySafe: true,
|
|
1401
|
+
isCacheable: false,
|
|
1383
1402
|
parameters: [],
|
|
1384
1403
|
},
|
|
1385
1404
|
handler: () => handleAQEHealth(),
|
|
@@ -1391,6 +1410,7 @@ export class MCPProtocolServer {
|
|
|
1391
1410
|
description: 'Get RVF migration status: current stage, metrics, consistency, and gate evaluation. Example: migration_status({})',
|
|
1392
1411
|
category: 'persistence',
|
|
1393
1412
|
isConcurrencySafe: true,
|
|
1413
|
+
isCacheable: false,
|
|
1394
1414
|
parameters: [],
|
|
1395
1415
|
},
|
|
1396
1416
|
handler: () => handleMigrationStatus(),
|
|
@@ -1401,6 +1421,7 @@ export class MCPProtocolServer {
|
|
|
1401
1421
|
description: 'Run a consistency check comparing SQLite and RVF search results. Samples random patterns and reports divergences. Example: migration_check({})',
|
|
1402
1422
|
category: 'persistence',
|
|
1403
1423
|
isConcurrencySafe: true,
|
|
1424
|
+
isCacheable: false,
|
|
1404
1425
|
parameters: [],
|
|
1405
1426
|
},
|
|
1406
1427
|
handler: () => handleMigrationCheck(),
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -42,6 +42,8 @@ export interface ToolDefinition {
|
|
|
42
42
|
domain?: DomainName;
|
|
43
43
|
lazyLoad?: boolean;
|
|
44
44
|
isConcurrencySafe?: boolean;
|
|
45
|
+
/** False for live reads whose results must not be reused by the session cache. */
|
|
46
|
+
isCacheable?: boolean;
|
|
45
47
|
annotations?: ToolAnnotations;
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
@@ -40,17 +40,19 @@ export const DEFAULT_SESSION_CACHE_CONFIG = {
|
|
|
40
40
|
* Ensures identical logical objects always produce the same fingerprint.
|
|
41
41
|
*/
|
|
42
42
|
function canonicalStringify(value) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
// Honor JSON's array holes, undefined fields and toJSON (for example Date)
|
|
44
|
+
// before ordering keys. Hand-built fragments can conflate distinct inputs.
|
|
45
|
+
const normalized = JSON.parse(JSON.stringify(value));
|
|
46
|
+
function encode(item) {
|
|
47
|
+
if (item === null || typeof item !== 'object')
|
|
48
|
+
return JSON.stringify(item);
|
|
49
|
+
if (Array.isArray(item))
|
|
50
|
+
return '[' + item.map(encode).join(',') + ']';
|
|
51
|
+
const obj = item;
|
|
52
|
+
return '{' + Object.keys(obj).sort()
|
|
53
|
+
.map(key => JSON.stringify(key) + ':' + encode(obj[key])).join(',') + '}';
|
|
49
54
|
}
|
|
50
|
-
|
|
51
|
-
const sortedKeys = Object.keys(obj).sort();
|
|
52
|
-
const pairs = sortedKeys.map(k => JSON.stringify(k) + ':' + canonicalStringify(obj[k]));
|
|
53
|
-
return '{' + pairs.join(',') + '}';
|
|
55
|
+
return encode(normalized);
|
|
54
56
|
}
|
|
55
57
|
// ============================================================================
|
|
56
58
|
// Implementation
|
|
@@ -114,7 +116,7 @@ export class SessionOperationCache {
|
|
|
114
116
|
if (!this.config.enabled)
|
|
115
117
|
return;
|
|
116
118
|
// Evict oldest if at capacity
|
|
117
|
-
if (this.cache.size >= this.config.maxEntries) {
|
|
119
|
+
if (!this.cache.has(fingerprint) && this.cache.size >= this.config.maxEntries) {
|
|
118
120
|
this.evictOldest();
|
|
119
121
|
}
|
|
120
122
|
const entry = {
|
package/dist/plugins/cache.js
CHANGED
|
@@ -51,9 +51,16 @@ export class PluginCache {
|
|
|
51
51
|
}
|
|
52
52
|
// Copy source to cache
|
|
53
53
|
fs.mkdirSync(dir, { recursive: true });
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
try {
|
|
55
|
+
this.copyDir(sourceDir, dir);
|
|
56
|
+
// Write the manifest (ensure it's present even if source didn't have it at root)
|
|
57
|
+
fs.writeFileSync(path.join(dir, 'qe-plugin.json'), JSON.stringify(manifest, null, 2));
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
// A partial directory must not satisfy the immutable-cache fast path on retry.
|
|
61
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
57
64
|
// Cleanup old versions
|
|
58
65
|
this.pruneOldVersions(manifest.name);
|
|
59
66
|
return dir;
|
|
@@ -36,7 +36,7 @@ export class EmbeddingCache {
|
|
|
36
36
|
// Move to end (LRU update)
|
|
37
37
|
this.cache.delete(key);
|
|
38
38
|
this.cache.set(key, entry);
|
|
39
|
-
return entry.embedding;
|
|
39
|
+
return [...entry.embedding];
|
|
40
40
|
}
|
|
41
41
|
this.misses++;
|
|
42
42
|
return null;
|
|
@@ -54,7 +54,7 @@ export class EmbeddingCache {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
const entry = {
|
|
57
|
-
embedding,
|
|
57
|
+
embedding: [...embedding],
|
|
58
58
|
timestamp: Date.now(),
|
|
59
59
|
model,
|
|
60
60
|
};
|
|
@@ -118,7 +118,7 @@ export class EmbeddingCache {
|
|
|
118
118
|
export() {
|
|
119
119
|
return Array.from(this.cache.entries()).map(([key, entry]) => ({
|
|
120
120
|
key,
|
|
121
|
-
entry,
|
|
121
|
+
entry: { ...entry, embedding: [...entry.embedding] },
|
|
122
122
|
}));
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
@@ -128,7 +128,7 @@ export class EmbeddingCache {
|
|
|
128
128
|
this.cache.clear();
|
|
129
129
|
for (const { key, entry } of data) {
|
|
130
130
|
if (this.cache.size < this.maxSize) {
|
|
131
|
-
this.cache.set(key, entry);
|
|
131
|
+
this.cache.set(key, { ...entry, embedding: [...entry.embedding] });
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
}
|
package/dist/shared/llm/cache.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Provides efficient caching of LLM responses to reduce costs and latency
|
|
6
6
|
* for repeated queries. Uses LRU (Least Recently Used) eviction policy.
|
|
7
7
|
*/
|
|
8
|
+
import { createHash } from 'node:crypto';
|
|
8
9
|
/**
|
|
9
10
|
* Default cache configuration
|
|
10
11
|
*/
|
|
@@ -41,15 +42,9 @@ export class LLMCache {
|
|
|
41
42
|
options?.systemPrompt ?? '',
|
|
42
43
|
input,
|
|
43
44
|
];
|
|
44
|
-
//
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
for (let i = 0; i < str.length; i++) {
|
|
48
|
-
const char = str.charCodeAt(i);
|
|
49
|
-
hash = ((hash << 5) - hash) + char;
|
|
50
|
-
hash = hash & hash;
|
|
51
|
-
}
|
|
52
|
-
return `${type}:${Math.abs(hash).toString(36)}`;
|
|
45
|
+
// Encode field boundaries before hashing: prompt text may contain delimiters.
|
|
46
|
+
const hash = createHash('sha256').update(JSON.stringify(parts)).digest('hex');
|
|
47
|
+
return `${type}:${hash}`;
|
|
53
48
|
}
|
|
54
49
|
/**
|
|
55
50
|
* Get a cached value
|
|
@@ -182,7 +177,9 @@ export class LLMCache {
|
|
|
182
177
|
entry.createdAt = new Date(entry.createdAt);
|
|
183
178
|
entry.lastAccessedAt = new Date(entry.lastAccessedAt);
|
|
184
179
|
this.cache.set(key, entry);
|
|
185
|
-
this.
|
|
180
|
+
if (this.config.enableLRU) {
|
|
181
|
+
this.updateAccessOrder(key);
|
|
182
|
+
}
|
|
186
183
|
}
|
|
187
184
|
// Evict if over capacity
|
|
188
185
|
while (this.cache.size > this.config.maxSize) {
|
|
@@ -142,6 +142,10 @@ function delay(ms, signal) {
|
|
|
142
142
|
* promise rejects with an `AbortError`.
|
|
143
143
|
*/
|
|
144
144
|
export async function withRetry(fn, options) {
|
|
145
|
+
// Disabling retries must not bypass the caller's cancellation boundary.
|
|
146
|
+
if (options?.abortSignal?.aborted) {
|
|
147
|
+
throw options.abortSignal.reason ?? new DOMException('The operation was aborted.', 'AbortError');
|
|
148
|
+
}
|
|
145
149
|
// Kill switch: bypass retry entirely when disabled
|
|
146
150
|
if (process.env.AQE_RETRY_DISABLED === 'true') {
|
|
147
151
|
const result = await fn();
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ChildProcess } from 'node:child_process';
|
|
2
|
+
/** Keep detached runners subject to the CLI's synchronous exit handling. */
|
|
3
|
+
export declare function trackTestRunnerExit(proc: ChildProcess): () => void;
|
|
4
|
+
/**
|
|
5
|
+
* Stop a test runner spawned in its own POSIX process group. The returned
|
|
6
|
+
* promise waits for the group to stop before report files may be removed.
|
|
7
|
+
* Windows uses taskkill's tree operation while the root PID still exists.
|
|
8
|
+
*/
|
|
9
|
+
export declare function terminateTestRunner(proc: ChildProcess): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=test-runner-process.d.ts.map
|