agentic-qe 3.14.6 → 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 +204 -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 +8 -8
- package/dist/cli/chunks/adapter-XYCOXQCC.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-2YGML6OU.js → agent-booster-wasm-67OKGDGZ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-D5SSQYNU.js → agent-handler-4HZEQ3WQ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-YHPLTITV.js → agent-memory-branch-IBHZQSRN.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DTJCROTG.js +2 -0
- package/dist/cli/chunks/{arena-7BGOXGXO.js → arena-EJBIGSF4.js} +2 -2
- package/dist/cli/chunks/{arena-MCE6EU7K.js → arena-LCLRGUIK.js} +4 -4
- package/dist/cli/chunks/{audit-BMWTQECB.js → audit-PY4JNDQQ.js} +3 -3
- package/dist/cli/chunks/base-5TQ34GMD.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-PMUNGASU.js → better-sqlite3-2JG5K6XT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-QPUFYX7F.js → brain-handler-3UYK55GA.js} +4 -4
- package/dist/cli/chunks/{branch-enumerator-WKFDGRN4.js → branch-enumerator-GOSWOX46.js} +2 -2
- package/dist/cli/chunks/{browser-VY5HKH5X.js → browser-DC2JV47Z.js} +2 -2
- package/dist/cli/chunks/browser-workflow-KWX4ESTJ.js +2 -0
- package/dist/cli/chunks/{chunk-FWASDOT2.js → chunk-25EEIAHS.js} +2 -2
- package/dist/cli/chunks/{chunk-P6OYS755.js → chunk-3576QGPP.js} +1 -1
- package/dist/cli/chunks/{chunk-2TMWAQQ3.js → chunk-3EKG7HFV.js} +4 -4
- package/dist/cli/chunks/{chunk-QZANMBIT.js → chunk-3FCHH4VP.js} +1 -1
- package/dist/cli/chunks/{chunk-CD542DNJ.js → chunk-3S5IIK32.js} +1 -1
- package/dist/cli/chunks/{chunk-5VFPCSK7.js → chunk-3X2JSW3R.js} +1 -1
- package/dist/cli/chunks/{chunk-D45SG6CP.js → chunk-4HXFPBAA.js} +1 -1
- package/dist/cli/chunks/{chunk-JVNTSNWU.js → chunk-4PY44TKH.js} +2 -2
- package/dist/cli/chunks/{chunk-DZ3AUAAB.js → chunk-4RNCVSVN.js} +2 -2
- package/dist/cli/chunks/{chunk-JBTPOIAC.js → chunk-56M4QNXU.js} +2 -2
- package/dist/cli/chunks/{chunk-H52HZ67P.js → chunk-5X4HDW5W.js} +2 -2
- package/dist/cli/chunks/{chunk-UNFFDHER.js → chunk-673XJBGW.js} +10 -32
- package/dist/cli/chunks/{chunk-RTFO5UQH.js → chunk-6F7MFHTY.js} +2 -2
- package/dist/cli/chunks/{chunk-Y3LZ35OG.js → chunk-6GJWT2OY.js} +2 -2
- package/dist/cli/chunks/{chunk-JXGFRBUO.js → chunk-6GNWVPMR.js} +2 -2
- package/dist/cli/chunks/{chunk-3EA536JF.js → chunk-6VTC3OHD.js} +2 -2
- package/dist/cli/chunks/{chunk-W6HXLH5G.js → chunk-775WGWLL.js} +3 -3
- package/dist/cli/chunks/{chunk-TVYY3OCX.js → chunk-77WL5HQW.js} +1 -1
- package/dist/cli/chunks/chunk-7STWD4KJ.js +3 -0
- package/dist/cli/chunks/{chunk-YSLL6VSL.js → chunk-7TNCEVWX.js} +2 -2
- package/dist/cli/chunks/{chunk-Z7WODOTH.js → chunk-7X3LMTRA.js} +2 -2
- package/dist/cli/chunks/{chunk-RZZCUIAI.js → chunk-A53MMSGC.js} +2 -2
- package/dist/cli/chunks/{chunk-QW6VMTBR.js → chunk-A5CLVZC3.js} +2 -2
- package/dist/cli/chunks/{chunk-IG5GNEC6.js → chunk-AEYJ4ZLA.js} +1 -1
- package/dist/cli/chunks/{chunk-NMAIY4PX.js → chunk-AJ5PCJQ2.js} +11 -11
- package/dist/cli/chunks/{chunk-WO4QMXIG.js → chunk-AJMAKUS3.js} +2 -2
- package/dist/cli/chunks/{chunk-2NPKIBAZ.js → chunk-AOD2ES44.js} +2 -2
- package/dist/cli/chunks/chunk-AR2S4DOB.js +2 -0
- package/dist/cli/chunks/{chunk-257E2A5M.js → chunk-AUFV2G2J.js} +5 -5
- package/dist/cli/chunks/{chunk-BVR7RMC5.js → chunk-B2QKBQYD.js} +1 -1
- package/dist/cli/chunks/{chunk-B6D2CHEH.js → chunk-BCCSV3RH.js} +1 -1
- package/dist/cli/chunks/{chunk-2YXGBZWV.js → chunk-BFIXUKOR.js} +1 -1
- package/dist/cli/chunks/chunk-BHPTHC5O.js +4 -0
- package/dist/cli/chunks/{chunk-AIRGNL55.js → chunk-BITFGVZ4.js} +2 -2
- package/dist/cli/chunks/{chunk-MBRHSU6W.js → chunk-BL6273KR.js} +10 -10
- package/dist/cli/chunks/{chunk-SMDN3BQZ.js → chunk-BOIUENWW.js} +1 -1
- package/dist/cli/chunks/{chunk-YS4FCTWF.js → chunk-BT3MI2BW.js} +1 -1
- package/dist/cli/chunks/{chunk-JZOS5FCX.js → chunk-BTBJ2NLH.js} +2 -2
- package/dist/cli/chunks/{chunk-CCK4BF76.js → chunk-BUVJIVFG.js} +1 -1
- package/dist/cli/chunks/{chunk-2JVWITNK.js → chunk-BZIPW2PA.js} +56 -80
- package/dist/cli/chunks/{chunk-BPEDWS6O.js → chunk-C647D42G.js} +2 -2
- package/dist/cli/chunks/{chunk-6U7LNMWZ.js → chunk-CBWM5NOO.js} +3 -3
- package/dist/cli/chunks/{chunk-72KXSMWI.js → chunk-CIEXUYY7.js} +1 -1
- package/dist/cli/chunks/{chunk-SE4WIB26.js → chunk-CLUHGBLN.js} +4 -4
- package/dist/cli/chunks/{chunk-JIXUMYKZ.js → chunk-CQEWL32R.js} +1 -1
- package/dist/cli/chunks/{chunk-CM7U6TAX.js → chunk-CXUC7YKA.js} +2 -2
- package/dist/cli/chunks/{chunk-7LPR6HJG.js → chunk-D2Y36V5J.js} +2 -2
- package/dist/cli/chunks/{chunk-BJTJLJRZ.js → chunk-DSJJHPPS.js} +4 -4
- package/dist/cli/chunks/{chunk-ZVWVV4EX.js → chunk-DZHXCOSK.js} +1 -1
- package/dist/cli/chunks/{chunk-7Z5LHRC3.js → chunk-EBV3WFIR.js} +2 -2
- package/dist/cli/chunks/{chunk-KNNISEDY.js → chunk-EKO5QL2B.js} +1 -1
- package/dist/cli/chunks/{chunk-XAS3XRYM.js → chunk-EMOZ5O5S.js} +1 -1
- package/dist/cli/chunks/{chunk-62N4NUJH.js → chunk-ES7TAJRJ.js} +2 -2
- package/dist/cli/chunks/chunk-EXQGHTPD.js +65 -0
- package/dist/cli/chunks/{chunk-Q7EAGKAE.js → chunk-F2WAB4WK.js} +2 -2
- package/dist/cli/chunks/{chunk-L4RUBPLR.js → chunk-F57FTFWS.js} +2 -2
- package/dist/cli/chunks/{chunk-GGRHV6D7.js → chunk-F6JJNBE5.js} +1 -1
- package/dist/cli/chunks/{chunk-3EZOZN25.js → chunk-FRC7AFB4.js} +2 -2
- package/dist/cli/chunks/{chunk-RSXXCL4A.js → chunk-G36RZF2Y.js} +1 -1
- package/dist/cli/chunks/{chunk-ZSPU4MOS.js → chunk-G3C7Z6FO.js} +2 -2
- package/dist/cli/chunks/{chunk-SNOBH4AZ.js → chunk-GA63ESNT.js} +2 -2
- package/dist/cli/chunks/{chunk-HNFVJP4I.js → chunk-GHMJFICO.js} +2 -2
- package/dist/cli/chunks/{chunk-7D3V65N5.js → chunk-GK5WLUX3.js} +1 -1
- package/dist/cli/chunks/{chunk-RETBYIAC.js → chunk-GQJ4QDEN.js} +6 -6
- package/dist/cli/chunks/chunk-GVLRE3BV.js +12 -0
- package/dist/cli/chunks/{chunk-MW2GGZZ5.js → chunk-H5UH234L.js} +1 -1
- package/dist/cli/chunks/{chunk-HM6ZSCPI.js → chunk-HBAFXWSO.js} +1 -1
- package/dist/cli/chunks/{chunk-DHVX5UB2.js → chunk-HE3BDBAO.js} +2 -2
- package/dist/cli/chunks/{chunk-YFBSPLJG.js → chunk-HHANMCD2.js} +1 -1
- package/dist/cli/chunks/chunk-HPVYJ6JH.js +2 -0
- package/dist/cli/chunks/{chunk-PX5YDCRH.js → chunk-I6NZFBT3.js} +3 -3
- package/dist/cli/chunks/{chunk-5J6W7SIA.js → chunk-ISBOHF6Y.js} +1 -1
- package/dist/cli/chunks/{chunk-UCFQALXO.js → chunk-J24AJEDE.js} +2 -2
- package/dist/cli/chunks/{chunk-FBMN7B46.js → chunk-J5HTQHJK.js} +2 -2
- package/dist/cli/chunks/{chunk-GPYVDFB3.js → chunk-JDOVO4E4.js} +205 -195
- package/dist/cli/chunks/chunk-JQAJUXRE.js +2 -0
- package/dist/cli/chunks/{chunk-RG52OKAM.js → chunk-JRK5GX56.js} +1 -1
- package/dist/cli/chunks/{chunk-I33ERSGB.js → chunk-JRLZ7LZ3.js} +2 -2
- package/dist/cli/chunks/{chunk-NQZ5AR3D.js → chunk-JTOFLDU7.js} +2 -2
- package/dist/cli/chunks/{chunk-NHWGMJAP.js → chunk-K6EOHGKS.js} +2 -2
- package/dist/cli/chunks/{chunk-5QQSIGUA.js → chunk-KKXH25IH.js} +2 -2
- package/dist/cli/chunks/{chunk-VGFFFKGK.js → chunk-KNSQWM2E.js} +2 -2
- package/dist/cli/chunks/{chunk-B6MOJC3X.js → chunk-L5T32SRF.js} +1 -1
- package/dist/cli/chunks/{chunk-WGM35YWL.js → chunk-LKFBW2QM.js} +2 -2
- package/dist/cli/chunks/{chunk-AJRUJAAK.js → chunk-LMAI74EP.js} +1 -1
- package/dist/cli/chunks/{chunk-C6KWXUFJ.js → chunk-LQVS5IWH.js} +2 -2
- package/dist/cli/chunks/{chunk-H5BS5VH7.js → chunk-LRGTPUJA.js} +2 -2
- package/dist/cli/chunks/{chunk-3HZS4M3O.js → chunk-LTHV4PIG.js} +2 -2
- package/dist/cli/chunks/{chunk-7CUQCCMD.js → chunk-M7QKCHLQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CF2ISEOJ.js → chunk-N3ASALOL.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCRTRYXK.js → chunk-NEXBTLN6.js} +2 -2
- package/dist/cli/chunks/{chunk-VMNWDJIZ.js → chunk-NJEEKYEP.js} +3 -3
- package/dist/cli/chunks/{chunk-ZEV3YTO7.js → chunk-NWUFTLSF.js} +2 -2
- package/dist/cli/chunks/{chunk-MQROI74N.js → chunk-O4QB2GFL.js} +2 -2
- package/dist/cli/chunks/{chunk-GDSXITFH.js → chunk-OA75C4HY.js} +2 -2
- package/dist/cli/chunks/{chunk-SESK3ARK.js → chunk-OVMG6EEF.js} +2 -2
- package/dist/cli/chunks/{chunk-MUOG6QXR.js → chunk-OX7MJFLC.js} +2 -2
- package/dist/cli/chunks/{chunk-ELLBS5RP.js → chunk-OZJQN7YE.js} +2 -2
- package/dist/cli/chunks/{chunk-D6CJIGRU.js → chunk-PFXCRRR6.js} +55 -55
- package/dist/cli/chunks/{chunk-ZL6SYKUK.js → chunk-PVJLQ2YZ.js} +1 -1
- package/dist/cli/chunks/{chunk-6LIHFV7O.js → chunk-QDRFLM77.js} +2 -2
- package/dist/cli/chunks/{chunk-H6ZM3PUT.js → chunk-QH7C4PTX.js} +1 -1
- package/dist/cli/chunks/chunk-QKM4XT2F.js +2 -0
- package/dist/cli/chunks/{chunk-V4DM6ELU.js → chunk-QP7EKLWU.js} +2 -2
- package/dist/cli/chunks/{chunk-BAMN2CHI.js → chunk-QPACHVDI.js} +1 -1
- package/dist/cli/chunks/{chunk-QDFTT3RF.js → chunk-QQVE65ER.js} +2 -2
- package/dist/cli/chunks/{chunk-LL3IGZBI.js → chunk-QYCZYJH7.js} +2 -2
- package/dist/cli/chunks/{chunk-DUYOVM5I.js → chunk-R6I5I724.js} +2 -2
- package/dist/cli/chunks/{chunk-ENGZ4D5V.js → chunk-RJJIPTVH.js} +2 -2
- package/dist/cli/chunks/{chunk-7NITCZWD.js → chunk-RM6OC35G.js} +1 -1
- package/dist/cli/chunks/{chunk-Q5XTSMWR.js → chunk-RTD4U7IW.js} +2 -2
- package/dist/cli/chunks/{chunk-DBDPRORT.js → chunk-SKJQKOFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ICTXTNQZ.js → chunk-SMBGK7XI.js} +1 -1
- package/dist/cli/chunks/{chunk-PI7TJS62.js → chunk-SPS472C5.js} +2 -2
- package/dist/cli/chunks/{chunk-IV5UZOHH.js → chunk-SUNXA2UR.js} +2 -2
- package/dist/cli/chunks/{chunk-IB27QACC.js → chunk-SVP3BP52.js} +2 -2
- package/dist/cli/chunks/{chunk-5OOMJGFN.js → chunk-T4WQPE77.js} +1 -1
- package/dist/cli/chunks/{chunk-66VWCR67.js → chunk-T53ZN4NO.js} +2 -2
- package/dist/cli/chunks/chunk-T6W2EYHC.js +2 -0
- package/dist/cli/chunks/{chunk-EAY2JMZG.js → chunk-T7YCNOW5.js} +2 -2
- package/dist/cli/chunks/{chunk-FZOBD67M.js → chunk-TCQWVVSR.js} +1 -1
- package/dist/cli/chunks/{chunk-SJUXE4IC.js → chunk-TGRHO4ES.js} +2 -2
- package/dist/cli/chunks/{chunk-6RE3X4V5.js → chunk-TP7L4EX6.js} +2 -2
- package/dist/cli/chunks/{chunk-6SQM2MUX.js → chunk-TT45RCLN.js} +2 -2
- package/dist/cli/chunks/{chunk-AVBJYI5I.js → chunk-TUZNWRYC.js} +1 -1
- package/dist/cli/chunks/{chunk-YHKEDEAA.js → chunk-U2QTL5T2.js} +3 -3
- package/dist/cli/chunks/chunk-U64QORFO.js +2 -0
- package/dist/cli/chunks/{chunk-BBT64TII.js → chunk-UHLZKH6B.js} +4 -4
- package/dist/cli/chunks/{chunk-GSF6MB64.js → chunk-UIWXKRTK.js} +2 -2
- package/dist/cli/chunks/{chunk-JMONHE4B.js → chunk-UNFE4RPV.js} +1 -1
- package/dist/cli/chunks/{chunk-DPYSUDAO.js → chunk-UQGIC5OX.js} +1 -1
- package/dist/cli/chunks/{chunk-IAF6T27S.js → chunk-VAXTPLO3.js} +2 -2
- package/dist/cli/chunks/{chunk-6SH5VZUD.js → chunk-VCSNNLWL.js} +2 -2
- package/dist/cli/chunks/chunk-VSPNIDQK.js +21 -0
- package/dist/cli/chunks/{chunk-6OS76PHI.js → chunk-VV2JVYOI.js} +2 -2
- package/dist/cli/chunks/{chunk-IQO7UCFR.js → chunk-VW7AXJQS.js} +2 -2
- package/dist/cli/chunks/{chunk-UQ32JHES.js → chunk-W7JUD4EZ.js} +2 -2
- package/dist/cli/chunks/chunk-WFKE7NZ5.js +12 -0
- package/dist/cli/chunks/{chunk-RFNPJK6N.js → chunk-WVEHKAIH.js} +3 -3
- package/dist/cli/chunks/{chunk-64VGZQLB.js → chunk-XAESN54Q.js} +1 -1
- package/dist/cli/chunks/{chunk-BMAPORJ7.js → chunk-XECZYQT5.js} +2 -2
- package/dist/cli/chunks/chunk-XFT4FYTC.js +2 -0
- package/dist/cli/chunks/{chunk-Y3UOUNHM.js → chunk-YHX74M7C.js} +2 -2
- package/dist/cli/chunks/chunk-YIWBJ637.js +2 -0
- package/dist/cli/chunks/{chunk-SDRHUMJB.js → chunk-Z5UZOYQS.js} +2 -2
- package/dist/cli/chunks/{chunk-7J6QC567.js → chunk-Z6G3QVZ4.js} +12 -12
- package/dist/cli/chunks/ci-5LIV2HW5.js +82 -0
- package/dist/cli/chunks/{ci-output-LDT24TS3.js → ci-output-UO5BDFU4.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-F5V4KITU.js → circuit-breaker-UQDPXYRD.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-DT6WQQVD.js → claude-flow-setup-62QES3QX.js} +2 -2
- package/dist/cli/chunks/client-AJZKCP4I.js +2 -0
- package/dist/cli/chunks/{cline-installer-G7TJOAEX.js → cline-installer-X7VZTSZG.js} +2 -2
- package/dist/cli/chunks/{code-PGE6A42V.js → code-H3BF4L4H.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-RNITH372.js → code-index-extractor-BJGFZGGL.js} +2 -2
- package/dist/cli/chunks/{codex-installer-LBX77AI3.js → codex-installer-KVZWKU6S.js} +2 -2
- package/dist/cli/chunks/{completions-4AWLAARX.js → completions-YMILE6V7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-ZPNSS476.js → complexity-analyzer-J26N2PWG.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-UAPWX6OA.js → continuedev-installer-MAR42OV7.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-BJN2YJGI.js → copilot-installer-CVOJF6OT.js} +2 -2
- package/dist/cli/chunks/core-handlers-MQHEMGDV.js +2 -0
- package/dist/cli/chunks/{cost-tracker-MHP2VJ63.js → cost-tracker-SXLWXE55.js} +2 -2
- package/dist/cli/chunks/{coverage-PQB4IEFG.js → coverage-D7HCHFP3.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-3QNMZV5R.js +2 -0
- package/dist/cli/chunks/{cursor-installer-ZXBWYAS3.js → cursor-installer-X37VHIKW.js} +2 -2
- package/dist/cli/chunks/{daemon-64C7R6OJ.js → daemon-JN7SOH6F.js} +4 -4
- package/dist/cli/chunks/{daemon-N2BEGEFY.js → daemon-LIW47IDM.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-SPZDAPNL.js → dag-attention-scheduler-QCHHIZBT.js} +2 -2
- package/dist/cli/chunks/{detect-LXJBSSZW.js → detect-WRFCWAX5.js} +2 -2
- package/dist/cli/chunks/{dist-node-U3TKZ2IZ.js → dist-node-6FWT4XZO.js} +2 -2
- package/dist/cli/chunks/{domain-handler-3DDWUVSR.js → domain-handler-SNFPNMRT.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-JJVWI4OQ.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-JPAR7TXX.js → embed-and-insert-pattern-LZFAUNBQ.js} +2 -2
- package/dist/cli/chunks/{eval-SOLG23EA.js → eval-AMUXTMJB.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-T7G2VOOD.js → experience-capture-middleware-3D65TR2C.js} +4 -4
- package/dist/cli/chunks/{fast-paths-32N3ELI4.js → fast-paths-Y7BBMM56.js} +2 -2
- package/dist/cli/chunks/{feature-flags-APJDQ4N7.js → feature-flags-JMQQ7JW4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-NAHKLDRN.js → feature-flags-VESRRQ6V.js} +2 -2
- package/dist/cli/chunks/{file-discovery-YKVM3MDB.js → file-discovery-JJKQQUV6.js} +2 -2
- package/dist/cli/chunks/{fleet-55M5CJS4.js → fleet-WIGHICJF.js} +4 -4
- package/dist/cli/chunks/{gnn-wrapper-UD6E6S6Z.js → gnn-wrapper-BFNPETTT.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-OYVW3VSC.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-HBYIS3ZW.js → hnsw-legacy-bridge-6A7OTAPT.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-EQPM42OU.js → hnswlib-node-LKV2H47B.js} +2 -2
- package/dist/cli/chunks/{hooks-5ZSSJWO6.js → hooks-KDSFYQQG.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-2B3LCLR4.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-XBGVQ4PD.js → hypergraph-engine-GDLPEPUC.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-CAWAQ673.js → hypergraph-handler-4UMFA2EW.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-4R4VWOGQ.js +2 -0
- package/dist/cli/chunks/{init-handler-PRHXSARK.js → init-handler-4GCHPQHD.js} +16 -14
- 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-F7LXBM7I.js → kilocode-installer-HJZMT2G5.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-NM723ZRG.js → kiro-installer-WUPY67HG.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-KFMTTUR5.js +2 -0
- package/dist/cli/chunks/{learning-5QYIDHH3.js → learning-AXKIS7IG.js} +4 -4
- package/dist/cli/chunks/{llm-router-43HKWPSX.js → llm-router-HUDPNZLJ.js} +4 -4
- package/dist/cli/chunks/llm-router-service-2D74XVM3.js +2 -0
- package/dist/cli/chunks/{load-5YDBWSCS.js → load-RM44POD7.js} +2 -2
- package/dist/cli/chunks/load-test-53FWOWNS.js +2 -0
- package/dist/cli/chunks/{mcp-UMAPMNMY.js → mcp-5JVQRBOP.js} +2 -2
- package/dist/cli/chunks/{memory-FWCPCQFP.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-2XTBGLE4.js → multi-model-executor-WPRKCSCM.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-GIXOJ6NS.js → opencode-installer-YAJMRCQO.js} +2 -2
- package/dist/cli/chunks/{orchestrator-VW6BKHLI.js → orchestrator-MUGWBUYP.js} +17 -17
- package/dist/cli/chunks/pattern-null-store-7DMU5CJ4.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-7CEUC3J7.js → pattern-usage-recorder-ZQJJ2YNG.js} +2 -2
- package/dist/cli/chunks/{pipeline-IGUQPPPO.js → pipeline-F4DXDUDC.js} +2 -2
- package/dist/cli/chunks/{platform-2P636I7B.js → platform-HI3A3OWF.js} +2 -2
- package/dist/cli/chunks/{plugin-NY6SWDPE.js → plugin-XRITPTR7.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-2UUDTIO2.js → prime-radiant-advanced-wasm-HHNJP7CQ.js} +2 -2
- package/dist/cli/chunks/{project-root-IOISG5KX.js → project-root-2VN4WO2A.js} +2 -2
- package/dist/cli/chunks/protocol-executor-2EMTBTMG.js +2 -0
- package/dist/cli/chunks/{protocol-handler-ZTPCRQ5W.js → protocol-handler-ZEVHSEBG.js} +2 -2
- package/dist/cli/chunks/{prove-SQX5A3IG.js → prove-C4BLZWBS.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-VZHZZPHE.js +2 -0
- package/dist/cli/chunks/{quality-DROILKRY.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-P5U3MGYC.js → real-embeddings-YWSE3IRT.js} +2 -2
- package/dist/cli/chunks/{ref-validation-KY73NQXD.js → ref-validation-ZWOTFA3T.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-6JPPRB3W.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-VTJIVFUO.js → routing-handler-CFYLGNAR.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-C6RPSJJO.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-R53URRIO.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-MMXN5TEJ.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-3B3R2NL4.js → security-ZU2GW3ZM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-VIJB7JUS.js → shared-rvf-adapter-5FOVSL3T.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-UVWGDUWC.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-M4LWAAYZ.js → standalone-memory-3UXDZ7HI.js} +2 -2
- package/dist/cli/chunks/{status-handler-YYFV6OZL.js → status-handler-264CHTWS.js} +2 -2
- package/dist/cli/chunks/{structural-health-27E6LLKB.js → structural-health-E2QPUOZE.js} +2 -2
- package/dist/cli/chunks/{sync-J3LJ56WN.js → sync-2ACMWM7D.js} +2 -2
- package/dist/cli/chunks/sync-N2L2OST4.js +2 -0
- package/dist/cli/chunks/{task-handler-4MCEBQZL.js → task-handler-IB5CVOTY.js} +2 -2
- package/dist/cli/chunks/task-handlers-QBMYNJHE.js +9 -0
- package/dist/cli/chunks/test-7RGLRDSP.js +33 -0
- package/dist/cli/chunks/{test-scheduling-ZJBFRZ3J.js → test-scheduling-RJABJT2W.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-JVHMHB72.js +2 -0
- package/dist/cli/chunks/{token-usage-3X5WMTG2.js → token-usage-3ECHQVCY.js} +2 -2
- package/dist/cli/chunks/{transformers-MVL4C5IX.js → transformers-KJH3IJWI.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-SLW65ZFO.js → tree-sitter-wasm-parser-XN6PFI32.js} +2 -2
- package/dist/cli/chunks/{types-TG5P3CRS.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-ETBHDEPY.js → upgrade-S5NFQZID.js} +2 -2
- package/dist/cli/chunks/{validate-C2A73LZK.js → validate-BIBWOLJD.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-67XN42ML.js → validate-swarm-WAA3LBHH.js} +2 -2
- package/dist/cli/chunks/visual-security-APOXJ3Q3.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-USJN77P4.js → web-tree-sitter-OTBQTHAV.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-5GGZXGJW.js → windsurf-installer-NNQ22EW6.js} +2 -2
- package/dist/cli/chunks/witness-chain-7IP5IJGT.js +2 -0
- package/dist/cli/chunks/{witness-chain-IWS5ZHHL.js → witness-chain-E7MUBOJW.js} +2 -2
- package/dist/cli/chunks/witness-chain-repair-FW4QSN4C.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-3GEADWPE.js → witness-chain-verifier-YMROEBVL.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-ZWEIK3VJ.js → witness-key-manager-4CGRNDMJ.js} +2 -2
- package/dist/cli/chunks/{workflow-KHMVVBBA.js → workflow-4VRSTRAN.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-2HNW5ZMQ.js +2 -0
- package/dist/cli/chunks/wrappers-4M4UTGEU.js +2 -0
- package/dist/cli/commands/ci.js +18 -7
- package/dist/cli/commands/quality-gate.js +6 -1
- package/dist/cli/commands/test.js +18 -3
- package/dist/cli/handlers/init-handler.d.ts +2 -0
- package/dist/cli/handlers/init-handler.js +8 -2
- package/dist/cli/index.js +15 -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/coordination/handlers/test-execution-handlers.js +13 -8
- package/dist/coordination/index.d.ts +1 -1
- package/dist/coordination/queen-event-handlers.js +9 -6
- package/dist/coordination/result-saver.js +1 -1
- package/dist/coordination/services/index.d.ts +1 -1
- package/dist/coordination/services/task-audit-logger.d.ts +38 -13
- package/dist/coordination/services/task-audit-logger.js +33 -5
- package/dist/coordination/task-executor.d.ts +5 -0
- package/dist/coordination/task-executor.js +10 -5
- 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/domains/test-generation/coordinator.js +6 -5
- package/dist/domains/test-generation/interfaces.d.ts +11 -1
- package/dist/domains/test-generation/services/behavior-example-validation.d.ts +36 -0
- package/dist/domains/test-generation/services/behavior-example-validation.js +89 -0
- package/dist/domains/test-generation/services/behavior-examples.d.ts +8 -0
- package/dist/domains/test-generation/services/behavior-examples.js +65 -0
- package/dist/domains/test-generation/services/test-generator.d.ts +1 -1
- package/dist/domains/test-generation/services/test-generator.js +59 -30
- package/dist/domains/visual-accessibility/services/axe-core-audit.d.ts +0 -15
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +12 -10
- package/dist/init/browser-engine-installer.d.ts +5 -5
- package/dist/init/browser-engine-installer.js +28 -6
- package/dist/init/fleet-integration.js +3 -2
- package/dist/init/init-wizard-steps.js +3 -2
- package/dist/init/init-wizard.d.ts +2 -0
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/06-code-intelligence.js +6 -4
- package/dist/init/phases/09-assets.js +8 -18
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +2 -5
- 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/integrations/vibium/client.d.ts +1 -0
- package/dist/integrations/vibium/client.js +24 -11
- package/dist/integrations/vibium/runtime.d.ts +14 -0
- package/dist/integrations/vibium/runtime.js +94 -0
- package/dist/kernel/memory-backend.js +5 -4
- package/dist/kernel/pattern-fts-self-heal.d.ts +63 -0
- package/dist/kernel/pattern-fts-self-heal.js +193 -0
- package/dist/kernel/process-lifecycle.d.ts +60 -0
- package/dist/kernel/process-lifecycle.js +91 -0
- package/dist/kernel/unified-memory-schemas.d.ts +15 -1
- package/dist/kernel/unified-memory-schemas.js +53 -25
- package/dist/kernel/unified-memory.js +34 -36
- package/dist/kernel/unified-persistence.js +12 -6
- package/dist/learning/aqe-learning-engine.js +3 -2
- package/dist/learning/experience-capture.d.ts +2 -1
- package/dist/learning/experience-capture.js +23 -8
- package/dist/learning/pattern-store.d.ts +1 -1
- package/dist/learning/pattern-store.js +27 -30
- package/dist/learning/qe-patterns.d.ts +6 -0
- package/dist/learning/qe-reasoning-bank.d.ts +1 -0
- package/dist/learning/qe-reasoning-bank.js +14 -4
- package/dist/learning/real-qe-reasoning-bank.d.ts +9 -4
- package/dist/learning/real-qe-reasoning-bank.js +28 -4
- package/dist/learning/rvf-pattern-store.js +19 -19
- package/dist/learning/sqlite-persistence.js +9 -24
- package/dist/mcp/bundle.js +545 -581
- package/dist/mcp/connection-pool.d.ts +2 -0
- package/dist/mcp/connection-pool.js +13 -2
- package/dist/mcp/entry.js +52 -6
- package/dist/mcp/handlers/domain-handler-configs.js +12 -4
- package/dist/mcp/handlers/memory-handlers.d.ts +1 -0
- package/dist/mcp/handlers/memory-handlers.js +16 -6
- package/dist/mcp/handlers/task-handlers.js +11 -7
- package/dist/mcp/protocol-server.js +47 -11
- package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
- package/dist/mcp/services/reasoning-bank-service.js +5 -1
- package/dist/mcp/tools/test-execution/e2e-execute.js +9 -1
- package/dist/mcp/tools/test-generation/generate.d.ts +6 -1
- package/dist/mcp/tools/test-generation/generate.js +8 -0
- package/dist/mcp/types.d.ts +8 -2
- 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/error-utils.d.ts +15 -0
- package/dist/shared/error-utils.js +21 -0
- package/dist/shared/events/domain-events.d.ts +2 -1
- 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 +10 -6
- package/dist/cli/chunks/adapter-UYOJPTOX.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-JR5AVQXR.js +0 -2
- package/dist/cli/chunks/base-DRZ2LS6X.js +0 -2
- package/dist/cli/chunks/browser-workflow-CJ7T3MXF.js +0 -2
- package/dist/cli/chunks/chunk-3NIG7S5W.js +0 -2
- package/dist/cli/chunks/chunk-4N23RFDU.js +0 -2
- package/dist/cli/chunks/chunk-AHKELLIO.js +0 -12
- package/dist/cli/chunks/chunk-DK4XN4CU.js +0 -2
- package/dist/cli/chunks/chunk-E6G2RD5H.js +0 -4
- package/dist/cli/chunks/chunk-MJS53PRX.js +0 -2
- package/dist/cli/chunks/chunk-PZPWRQ2M.js +0 -21
- package/dist/cli/chunks/chunk-QGA55PFM.js +0 -12
- package/dist/cli/chunks/chunk-SPV2VKC5.js +0 -3
- package/dist/cli/chunks/chunk-TCHGOB2N.js +0 -2
- package/dist/cli/chunks/chunk-UKA2KOXE.js +0 -2
- package/dist/cli/chunks/chunk-WCJBU2KI.js +0 -2
- package/dist/cli/chunks/chunk-Z6GGIRQQ.js +0 -65
- package/dist/cli/chunks/ci-W6K6G2KZ.js +0 -81
- package/dist/cli/chunks/client-KHWJT6FB.js +0 -2
- package/dist/cli/chunks/core-handlers-HING5RRG.js +0 -2
- package/dist/cli/chunks/cross-domain-router-PQTD6AZN.js +0 -2
- package/dist/cli/chunks/domain-transfer-M36KUJ2U.js +0 -2
- package/dist/cli/chunks/dream-WUGRSNCV.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-33XX5XNQ.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-XQPERX3H.js +0 -2
- package/dist/cli/chunks/hnsw-index-2GNXTWHH.js +0 -2
- package/dist/cli/chunks/hybrid-backend-CCF7URKI.js +0 -2
- package/dist/cli/chunks/impact-analyzer-HGKAZWIG.js +0 -2
- package/dist/cli/chunks/init-wizard-72MFBI3G.js +0 -2
- package/dist/cli/chunks/kernel-BRCBVMSK.js +0 -2
- package/dist/cli/chunks/knowledge-graph-DG44IPEI.js +0 -2
- package/dist/cli/chunks/llm-router-service-24KXFX32.js +0 -2
- package/dist/cli/chunks/load-test-N4TAYJY3.js +0 -2
- package/dist/cli/chunks/memory-backend-NVYFYVAU.js +0 -2
- package/dist/cli/chunks/memory-handlers-UTWCNCHL.js +0 -2
- package/dist/cli/chunks/pattern-null-store-SBPNYDBR.js +0 -2
- package/dist/cli/chunks/protocol-executor-IBYEII5Q.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-7IETWW6W.js +0 -2
- package/dist/cli/chunks/quality-gate-PWKWDJY2.js +0 -7
- package/dist/cli/chunks/queen-coordinator-NHUK2MWJ.js +0 -2
- package/dist/cli/chunks/router-SRSO3IHF.js +0 -2
- package/dist/cli/chunks/routing-feedback-PASRE5HY.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-4M4J67OU.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-TSXGT5LF.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-MOF3E7BR.js +0 -2
- package/dist/cli/chunks/safe-db-QJLFO33B.js +0 -2
- package/dist/cli/chunks/schedule-YIVXW5O2.js +0 -2
- package/dist/cli/chunks/scheduler-AON7DWSJ.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-75VHKKQB.js +0 -2
- package/dist/cli/chunks/sync-26CEGSTC.js +0 -2
- package/dist/cli/chunks/task-handlers-GYBAWKE2.js +0 -9
- package/dist/cli/chunks/test-MPC5HRH5.js +0 -33
- package/dist/cli/chunks/token-bootstrap-2Y2XITBX.js +0 -2
- package/dist/cli/chunks/unified-memory-UCQ6AB32.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-IXYUMKRR.js +0 -2
- package/dist/cli/chunks/unified-persistence-7E6JQ4FZ.js +0 -2
- package/dist/cli/chunks/vibium-NILGKHLN.js +0 -2
- package/dist/cli/chunks/visual-security-4VZXPEVG.js +0 -2
- package/dist/cli/chunks/witness-chain-JQA2VPZI.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-4UA7IPS3.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-GI5NQH7C.js +0 -2
- package/dist/cli/chunks/wrappers-N6XIK5PT.js +0 -2
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { MCPToolBase, MCPToolConfig, MCPToolContext } from '../base';
|
|
10
10
|
import { ToolResult } from '../../types';
|
|
11
|
+
import { GenerateTestsRequest } from '../../../domains/test-generation/interfaces';
|
|
11
12
|
export interface TestGenerateParams {
|
|
13
|
+
behaviorExamples?: GenerateTestsRequest['behaviorExamples'];
|
|
12
14
|
sourceFiles: string[];
|
|
13
15
|
testType?: 'unit' | 'integration' | 'e2e';
|
|
14
16
|
framework?: 'jest' | 'vitest' | 'mocha' | 'pytest' | 'node-test';
|
|
@@ -21,7 +23,8 @@ export interface TestGenerateParams {
|
|
|
21
23
|
}
|
|
22
24
|
export interface TestGenerateResult {
|
|
23
25
|
tests: GeneratedTest[];
|
|
24
|
-
|
|
26
|
+
/** null means unmeasured; never coerce unknown coverage to measured zero. */
|
|
27
|
+
coverageEstimate: number | null;
|
|
25
28
|
patternsUsed: string[];
|
|
26
29
|
suggestions: string[];
|
|
27
30
|
antiPatterns?: AntiPattern[];
|
|
@@ -34,6 +37,8 @@ export interface GeneratedTest {
|
|
|
34
37
|
testCode: string;
|
|
35
38
|
type: 'unit' | 'integration' | 'e2e';
|
|
36
39
|
assertions: number;
|
|
40
|
+
generationMode?: string;
|
|
41
|
+
generationLimits?: string[];
|
|
37
42
|
}
|
|
38
43
|
export interface AntiPattern {
|
|
39
44
|
name: string;
|
|
@@ -10,6 +10,7 @@ import { MCPToolBase, getSharedMemoryBackend, getLLMRouter } from '../base.js';
|
|
|
10
10
|
import { createTestGeneratorServiceWithDependencies } from '../../../domains/test-generation/services/test-generator.js';
|
|
11
11
|
import { TokenOptimizerService } from '../../../optimization/token-optimizer-service.js';
|
|
12
12
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
13
|
+
import { BEHAVIOR_EXAMPLE_ITEM_SCHEMA, validateBehaviorExamples } from '../../../domains/test-generation/services/behavior-example-validation.js';
|
|
13
14
|
// ============================================================================
|
|
14
15
|
// Tool Implementation
|
|
15
16
|
// ============================================================================
|
|
@@ -45,6 +46,9 @@ export class TestGenerateTool extends MCPToolBase {
|
|
|
45
46
|
async execute(params, context) {
|
|
46
47
|
const { sourceFiles, testType = 'unit', framework = 'vitest', language = 'typescript', coverageTarget = 80, patterns = [], aiEnhancement = true, detectAntiPatterns = false, } = params;
|
|
47
48
|
try {
|
|
49
|
+
// #795: reject malformed caller fixtures at the tool boundary, before
|
|
50
|
+
// any service or domain work runs.
|
|
51
|
+
const behaviorExamples = validateBehaviorExamples(params.behaviorExamples);
|
|
48
52
|
// Stream progress updates
|
|
49
53
|
this.emitStream(context, {
|
|
50
54
|
status: 'analyzing',
|
|
@@ -79,6 +83,7 @@ export class TestGenerateTool extends MCPToolBase {
|
|
|
79
83
|
const service = await this.getService(context);
|
|
80
84
|
// Build the domain request from MCP params
|
|
81
85
|
const domainRequest = {
|
|
86
|
+
behaviorExamples,
|
|
82
87
|
sourceFiles,
|
|
83
88
|
testType: testType,
|
|
84
89
|
framework: framework,
|
|
@@ -103,6 +108,8 @@ export class TestGenerateTool extends MCPToolBase {
|
|
|
103
108
|
testCode: test.testCode,
|
|
104
109
|
type: test.type,
|
|
105
110
|
assertions: test.assertions,
|
|
111
|
+
generationMode: test.generationMode,
|
|
112
|
+
generationLimits: test.generationLimits,
|
|
106
113
|
}));
|
|
107
114
|
this.emitStream(context, {
|
|
108
115
|
status: 'generating',
|
|
@@ -150,6 +157,7 @@ export class TestGenerateTool extends MCPToolBase {
|
|
|
150
157
|
const TEST_GENERATE_SCHEMA = {
|
|
151
158
|
type: 'object',
|
|
152
159
|
properties: {
|
|
160
|
+
behaviorExamples: { type: 'array', description: 'Trusted JSON specification fixtures: functionName, args, expected', items: BEHAVIOR_EXAMPLE_ITEM_SCHEMA },
|
|
153
161
|
sourceFiles: {
|
|
154
162
|
type: 'array',
|
|
155
163
|
description: 'Array of source file paths to generate tests for',
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface ToolParameter {
|
|
|
14
14
|
required?: boolean;
|
|
15
15
|
default?: unknown;
|
|
16
16
|
enum?: string[];
|
|
17
|
+
/** JSON Schema for array elements (only meaningful when type is 'array'). */
|
|
18
|
+
items?: Record<string, unknown>;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Optional safety metadata advertised by an MCP tool.
|
|
@@ -40,6 +42,8 @@ export interface ToolDefinition {
|
|
|
40
42
|
domain?: DomainName;
|
|
41
43
|
lazyLoad?: boolean;
|
|
42
44
|
isConcurrencySafe?: boolean;
|
|
45
|
+
/** False for live reads whose results must not be reused by the session cache. */
|
|
46
|
+
isCacheable?: boolean;
|
|
43
47
|
annotations?: ToolAnnotations;
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
@@ -171,6 +175,7 @@ export interface TestGenerateParams {
|
|
|
171
175
|
framework?: string;
|
|
172
176
|
testType?: 'unit' | 'integration' | 'e2e' | 'property-based';
|
|
173
177
|
coverageGoal?: number;
|
|
178
|
+
behaviorExamples?: import('../domains/test-generation/interfaces').BehaviorExample[];
|
|
174
179
|
aiEnhancement?: boolean;
|
|
175
180
|
detectAntiPatterns?: boolean;
|
|
176
181
|
}
|
|
@@ -467,14 +472,15 @@ export interface TestGenerateResult {
|
|
|
467
472
|
status: string;
|
|
468
473
|
duration: number;
|
|
469
474
|
testsGenerated: number;
|
|
470
|
-
|
|
475
|
+
/** null means unmeasured; never coerce unknown coverage to measured zero. */
|
|
476
|
+
coverageEstimate: number | null;
|
|
471
477
|
antiPatternsDetected?: number;
|
|
472
478
|
suggestions?: string[];
|
|
473
479
|
savedFiles?: string[];
|
|
474
480
|
patternsUsed?: string[];
|
|
475
481
|
/**
|
|
476
482
|
* #567: true when the ADR-051 LLM branch actually ran. When false the tests
|
|
477
|
-
*
|
|
483
|
+
* come from deterministic fixtures or scaffolding — see `generationMode`/`note`.
|
|
478
484
|
*/
|
|
479
485
|
llmEnhanced?: boolean;
|
|
480
486
|
/** #567: set to 'deterministic-template' when no LLM enhancement was applied. */
|
|
@@ -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
|
}
|
|
@@ -13,4 +13,19 @@ export declare function toErrorMessage(error: unknown): string;
|
|
|
13
13
|
* Coerce unknown error value to an Error instance.
|
|
14
14
|
*/
|
|
15
15
|
export declare function toError(error: unknown): Error;
|
|
16
|
+
/**
|
|
17
|
+
* A request was rejected because the caller's input is invalid (a malformed
|
|
18
|
+
* argument, an unknown function name, an unsupported option combination).
|
|
19
|
+
*
|
|
20
|
+
* The failure is deterministic and says nothing about the health of the
|
|
21
|
+
* component that rejected it, so it must not be retried and must not count
|
|
22
|
+
* toward a domain circuit breaker (ADR-064). The marker survives being
|
|
23
|
+
* flattened to a message string via `callerError` on TaskFailed events.
|
|
24
|
+
*/
|
|
25
|
+
export declare class CallerInputError extends Error {
|
|
26
|
+
readonly callerError: true;
|
|
27
|
+
constructor(message: string);
|
|
28
|
+
}
|
|
29
|
+
/** True when `error` is (or is marked as) a caller-input error. */
|
|
30
|
+
export declare function isCallerInputError(error: unknown): boolean;
|
|
16
31
|
//# sourceMappingURL=error-utils.d.ts.map
|
|
@@ -17,4 +17,25 @@ export function toErrorMessage(error) {
|
|
|
17
17
|
export function toError(error) {
|
|
18
18
|
return error instanceof Error ? error : new Error(String(error));
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A request was rejected because the caller's input is invalid (a malformed
|
|
22
|
+
* argument, an unknown function name, an unsupported option combination).
|
|
23
|
+
*
|
|
24
|
+
* The failure is deterministic and says nothing about the health of the
|
|
25
|
+
* component that rejected it, so it must not be retried and must not count
|
|
26
|
+
* toward a domain circuit breaker (ADR-064). The marker survives being
|
|
27
|
+
* flattened to a message string via `callerError` on TaskFailed events.
|
|
28
|
+
*/
|
|
29
|
+
export class CallerInputError extends Error {
|
|
30
|
+
callerError = true;
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = 'CallerInputError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** True when `error` is (or is marked as) a caller-input error. */
|
|
37
|
+
export function isCallerInputError(error) {
|
|
38
|
+
return error instanceof CallerInputError
|
|
39
|
+
|| (typeof error === 'object' && error !== null && error.callerError === true);
|
|
40
|
+
}
|
|
20
41
|
//# sourceMappingURL=error-utils.js.map
|
|
@@ -17,7 +17,8 @@ export interface TestSuiteCreatedPayload {
|
|
|
17
17
|
suiteId: string;
|
|
18
18
|
testCount: number;
|
|
19
19
|
sourceFiles: string[];
|
|
20
|
-
|
|
20
|
+
/** null means unmeasured; never coerce unknown coverage to measured zero. */
|
|
21
|
+
coverageEstimate: number | null;
|
|
21
22
|
}
|
|
22
23
|
export declare const TestGenerationEvents: {
|
|
23
24
|
readonly TestGenerated: "test-generation.TestGenerated";
|
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
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { execFileSync, spawn } from 'node:child_process';
|
|
2
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
3
|
+
/** Linux signal 0 also sees zombies, which can never execute or write files. */
|
|
4
|
+
function hasLiveLinuxGroupMember(group) {
|
|
5
|
+
for (const pid of readdirSync('/proc')) {
|
|
6
|
+
if (!/^\d+$/.test(pid))
|
|
7
|
+
continue;
|
|
8
|
+
let stat;
|
|
9
|
+
try {
|
|
10
|
+
stat = readFileSync(`/proc/${pid}/stat`, 'utf8');
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
if (['ENOENT', 'ESRCH'].includes(error.code ?? ''))
|
|
14
|
+
continue;
|
|
15
|
+
throw error; // Unknown process state must not be claimed as stopped.
|
|
16
|
+
}
|
|
17
|
+
// The comm field can contain spaces and parentheses; its final ')' is the
|
|
18
|
+
// boundary before state, ppid and pgrp, not the first whitespace token.
|
|
19
|
+
const fields = stat.slice(stat.lastIndexOf(')') + 1).trim().split(/\s+/);
|
|
20
|
+
if (fields.length < 3 || !/^\d+$/.test(fields[2]))
|
|
21
|
+
throw new Error(`Invalid process stat for ${pid}`);
|
|
22
|
+
if (Number(fields[2]) === group && fields[0] !== 'Z' && fields[0] !== 'X')
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
/** Signal probes on Darwin may deny access while dead group members are reaped. */
|
|
28
|
+
function hasLiveDarwinGroupMember(group) {
|
|
29
|
+
const snapshot = execFileSync('ps', ['-axo', 'pgid=,stat='], {
|
|
30
|
+
encoding: 'utf8', timeout: 1000, maxBuffer: 1024 * 1024,
|
|
31
|
+
});
|
|
32
|
+
for (const line of snapshot.split('\n')) {
|
|
33
|
+
if (!line.trim())
|
|
34
|
+
continue;
|
|
35
|
+
const match = /^\s*(\d+)\s+([A-Z?])\S*\s*$/.exec(line);
|
|
36
|
+
if (!match)
|
|
37
|
+
throw new Error('Could not determine Darwin process group state');
|
|
38
|
+
if (Number(match[1]) === group && match[2] !== 'Z')
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const activeGroups = new Set();
|
|
44
|
+
const stopGroupsOnExit = () => {
|
|
45
|
+
for (const pid of activeGroups) {
|
|
46
|
+
try {
|
|
47
|
+
process.kill(-pid, 'SIGKILL');
|
|
48
|
+
}
|
|
49
|
+
catch { /* Already exited. */ }
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/** Keep detached runners subject to the CLI's synchronous exit handling. */
|
|
53
|
+
export function trackTestRunnerExit(proc) {
|
|
54
|
+
const pid = proc.pid;
|
|
55
|
+
if (process.platform === 'win32' || pid === undefined)
|
|
56
|
+
return () => { };
|
|
57
|
+
if (activeGroups.size === 0)
|
|
58
|
+
process.once('exit', stopGroupsOnExit);
|
|
59
|
+
activeGroups.add(pid);
|
|
60
|
+
return () => {
|
|
61
|
+
activeGroups.delete(pid);
|
|
62
|
+
if (activeGroups.size === 0)
|
|
63
|
+
process.off('exit', stopGroupsOnExit);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Stop a test runner spawned in its own POSIX process group. The returned
|
|
68
|
+
* promise waits for the group to stop before report files may be removed.
|
|
69
|
+
* Windows uses taskkill's tree operation while the root PID still exists.
|
|
70
|
+
*/
|
|
71
|
+
export function terminateTestRunner(proc) {
|
|
72
|
+
return new Promise((resolve, reject) => {
|
|
73
|
+
const platform = process.platform;
|
|
74
|
+
const linux = platform === 'linux';
|
|
75
|
+
const grouped = process.platform !== 'win32' && proc.pid !== undefined;
|
|
76
|
+
const windowsTree = process.platform === 'win32' && proc.pid !== undefined;
|
|
77
|
+
let timer;
|
|
78
|
+
let finished = false;
|
|
79
|
+
let forceSent = false;
|
|
80
|
+
let closed = false;
|
|
81
|
+
let treeStopped = false;
|
|
82
|
+
const finish = () => {
|
|
83
|
+
if (finished)
|
|
84
|
+
return;
|
|
85
|
+
finished = true;
|
|
86
|
+
clearTimeout(timer);
|
|
87
|
+
proc.off('close', onClose);
|
|
88
|
+
resolve();
|
|
89
|
+
};
|
|
90
|
+
const fail = (error) => {
|
|
91
|
+
if (finished)
|
|
92
|
+
return;
|
|
93
|
+
finished = true;
|
|
94
|
+
clearTimeout(timer);
|
|
95
|
+
proc.off('close', onClose);
|
|
96
|
+
reject(error);
|
|
97
|
+
};
|
|
98
|
+
const groupExists = () => {
|
|
99
|
+
try {
|
|
100
|
+
process.kill(-proc.pid, 0);
|
|
101
|
+
return forceSent && linux ? hasLiveLinuxGroupMember(proc.pid) : true;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (error.code === 'ESRCH')
|
|
105
|
+
return false;
|
|
106
|
+
// A delivered group signal is not proof every member died. Inspect
|
|
107
|
+
// actual states; failures/malformed snapshots remain unknown and reject.
|
|
108
|
+
if (platform === 'darwin' && error.code === 'EPERM') {
|
|
109
|
+
return hasLiveDarwinGroupMember(proc.pid);
|
|
110
|
+
}
|
|
111
|
+
if (forceSent && linux && error.code === 'EPERM') {
|
|
112
|
+
return hasLiveLinuxGroupMember(proc.pid);
|
|
113
|
+
}
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const signalGroup = (signal) => {
|
|
118
|
+
try {
|
|
119
|
+
process.kill(-proc.pid, signal);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error.code === 'ESRCH')
|
|
124
|
+
return false;
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const onClose = () => {
|
|
129
|
+
closed = true;
|
|
130
|
+
try {
|
|
131
|
+
if (windowsTree) {
|
|
132
|
+
if (treeStopped)
|
|
133
|
+
finish();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// A root can exit before a TERM-resistant descendant. Keep escalation
|
|
137
|
+
// active while its owned group exists, even when stdio has closed.
|
|
138
|
+
if (!grouped || !groupExists())
|
|
139
|
+
finish();
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
fail(error);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
proc.once('close', onClose);
|
|
146
|
+
try {
|
|
147
|
+
if (grouped) {
|
|
148
|
+
if (!signalGroup('SIGTERM')) {
|
|
149
|
+
finish();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
timer = setTimeout(() => {
|
|
153
|
+
try {
|
|
154
|
+
if (!signalGroup('SIGKILL')) {
|
|
155
|
+
finish();
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
forceSent = true;
|
|
159
|
+
const deadline = Date.now() + 1000;
|
|
160
|
+
const poll = () => {
|
|
161
|
+
try {
|
|
162
|
+
// Do not discard report files while group exit is unknown.
|
|
163
|
+
if (!groupExists())
|
|
164
|
+
finish();
|
|
165
|
+
else if (Date.now() >= deadline)
|
|
166
|
+
fail(new Error(`Test runner group ${proc.pid} survived SIGKILL.`));
|
|
167
|
+
else
|
|
168
|
+
timer = setTimeout(poll, 20);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
fail(error);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
poll();
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
fail(error);
|
|
178
|
+
}
|
|
179
|
+
}, 1000);
|
|
180
|
+
}
|
|
181
|
+
else if (windowsTree) {
|
|
182
|
+
const killer = spawn('taskkill', ['/PID', String(proc.pid), '/T', '/F'], {
|
|
183
|
+
stdio: 'ignore', windowsHide: true, timeout: 2000,
|
|
184
|
+
});
|
|
185
|
+
killer.once('error', fail);
|
|
186
|
+
killer.once('close', code => {
|
|
187
|
+
if (code !== 0) {
|
|
188
|
+
fail(new Error(`Test runner tree termination failed (taskkill exit ${code}).`));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
treeStopped = true;
|
|
192
|
+
if (closed)
|
|
193
|
+
finish();
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// No PID is available before spawn failure (and in test doubles).
|
|
199
|
+
proc.kill('SIGTERM');
|
|
200
|
+
if (finished)
|
|
201
|
+
return;
|
|
202
|
+
timer = setTimeout(() => { proc.kill('SIGKILL'); }, 1000);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
fail(error);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=test-runner-process.js.map
|
|
@@ -37,11 +37,12 @@ export async function computeQualityVerdict(input) {
|
|
|
37
37
|
throw new Error('RequirementChecklist must have a non-empty, constant denominator (ADR-117).');
|
|
38
38
|
}
|
|
39
39
|
// 1. Mechanical gate (ADR-113). Non-execution ⇒ fail, no judge consulted.
|
|
40
|
-
const mechanicalPass = input.oracle != null
|
|
40
|
+
const mechanicalPass = input.oracle != null
|
|
41
|
+
&& input.oracle.baselinePassed === true && input.oracle.passed === true;
|
|
41
42
|
if (!mechanicalPass) {
|
|
42
43
|
const why = input.oracle == null
|
|
43
44
|
? 'oracle did not run'
|
|
44
|
-
:
|
|
45
|
+
: input.oracle.baselinePassed !== true
|
|
45
46
|
? 'tests did not execute against the reference implementation'
|
|
46
47
|
: 'mutation score below threshold';
|
|
47
48
|
return {
|
|
@@ -30,7 +30,10 @@ export class PriorityQueue {
|
|
|
30
30
|
*/
|
|
31
31
|
enqueue(item) {
|
|
32
32
|
if (this.size >= this._maxSize) {
|
|
33
|
-
|
|
33
|
+
// Stale background tasks must not consume capacity needed by new alerts.
|
|
34
|
+
this.pruneExpired();
|
|
35
|
+
if (this.size >= this._maxSize)
|
|
36
|
+
return false;
|
|
34
37
|
}
|
|
35
38
|
this.queues[item.priority].push(item);
|
|
36
39
|
return true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.14.
|
|
3
|
+
"version": "3.14.8",
|
|
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",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"mcp": "tsx src/mcp/entry.ts",
|
|
79
79
|
"test": "NODE_OPTIONS='--max-old-space-size=1024 --expose-gc' vitest run",
|
|
80
80
|
"test:unit": "npm run test:unit:fast && npm run test:unit:heavy && npm run test:unit:mcp",
|
|
81
|
-
"test:unit:fast": "vitest run --exclude='**/qe-reasoning-bank.test.ts' --exclude='**/
|
|
81
|
+
"test:unit:fast": "vitest run --exclude='**/qe-reasoning-bank.test.ts' --exclude='**/aqe-learning-engine.test.ts' --exclude='**/aqe-learning-engine-patterns.test.ts' tests/unit/adapters tests/unit/shared tests/unit/cli tests/unit/learning tests/unit/kernel tests/unit/workers tests/unit/routing tests/unit/strange-loop tests/unit/sync tests/unit/feedback tests/unit/error-paths tests/unit/early-exit tests/unit/causal-discovery tests/unit/neural-optimizer tests/unit/test-scheduling tests/unit/logging tests/unit/validation tests/unit/memory tests/unit/performance tests/unit/scripts tests/unit/planning tests/context",
|
|
82
82
|
"test:unit:heavy": "vitest run tests/unit/coordination tests/unit/domains tests/unit/integrations tests/unit/optimization tests/unit/init --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/browser-swarm-coordinator.test.ts'",
|
|
83
83
|
"test:unit:mcp": "vitest run tests/unit/mcp --exclude='**/mcp/handlers/domain-handlers.test.ts' --fileParallelism=false",
|
|
84
84
|
"test:ci": "vitest run --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/integration/browser/**' --exclude='**/browser-swarm-coordinator.test.ts' --exclude='**/mcp/handlers/domain-handlers.test.ts' --exclude='**/fixtures/init-corpus/**'",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"test:journeys:ci": "vitest run tests/integration/ --exclude='**/browser/**' --exclude='**/browser-integration/**' --exclude='**/integration/mcp/**' --exclude='**/integration/sync/**' --exclude='**/integration/learning/**' --exclude='**/integration/domains/**' --exclude='**/integration/llm/**' --exclude='**/integration/n8n/**' --exclude='**/*.e2e.test.ts'",
|
|
116
116
|
"test:watch": "vitest",
|
|
117
117
|
"performance:gate": "npx tsx src/performance/run-gates.ts",
|
|
118
|
-
"test:integration:browser": "VIBIUM_REAL_TESTS=true vitest run
|
|
118
|
+
"test:integration:browser": "VIBIUM_REAL_TESTS=true vitest run --config config/vitest.browser.config.ts",
|
|
119
119
|
"benchmark:token-reduction": "vitest bench tests/benchmarks/code-intelligence-token-reduction.bench.ts",
|
|
120
120
|
"benchmark:self-learning": "tsx scripts/benchmark-self-learning.ts",
|
|
121
121
|
"benchmark:rabitq": "tsx scripts/benchmark-rabitq.ts",
|
|
@@ -186,7 +186,6 @@
|
|
|
186
186
|
"chalk": "^5.6.2",
|
|
187
187
|
"cli-progress": "^3.12.0",
|
|
188
188
|
"commander": "^14.0.3",
|
|
189
|
-
"fast-glob": "^3.3.3",
|
|
190
189
|
"fast-json-patch": "^3.1.1",
|
|
191
190
|
"jose": "^6.1.3",
|
|
192
191
|
"ora": "^9.0.0",
|
|
@@ -194,15 +193,16 @@
|
|
|
194
193
|
"prime-radiant-advanced-wasm": "^0.1.3",
|
|
195
194
|
"secure-json-parse": "^4.1.0",
|
|
196
195
|
"semver": "^7.8.5",
|
|
196
|
+
"tinyglobby": "^0.2.17",
|
|
197
197
|
"typescript": "^5.9.3",
|
|
198
198
|
"uuid": "^14.0.0",
|
|
199
|
-
"vibium": "^0.1.2",
|
|
200
199
|
"web-tree-sitter": "~0.26.8",
|
|
201
200
|
"yaml": "^2.8.2"
|
|
202
201
|
},
|
|
203
202
|
"peerDependencies": {
|
|
204
203
|
"@claude-flow/browser": "3.0.0-alpha.1",
|
|
205
|
-
"@claude-flow/guidance": "3.0.0-alpha.1"
|
|
204
|
+
"@claude-flow/guidance": "3.0.0-alpha.1",
|
|
205
|
+
"vibium": "^26.8.21"
|
|
206
206
|
},
|
|
207
207
|
"peerDependenciesMeta": {
|
|
208
208
|
"@claude-flow/browser": {
|
|
@@ -210,6 +210,9 @@
|
|
|
210
210
|
},
|
|
211
211
|
"@claude-flow/guidance": {
|
|
212
212
|
"optional": true
|
|
213
|
+
},
|
|
214
|
+
"vibium": {
|
|
215
|
+
"optional": true
|
|
213
216
|
}
|
|
214
217
|
},
|
|
215
218
|
"optionalDependencies": {
|
|
@@ -276,6 +279,7 @@
|
|
|
276
279
|
"glob": "^13.0.0",
|
|
277
280
|
"msw": "^2.12.7",
|
|
278
281
|
"tsx": "^4.21.0",
|
|
282
|
+
"vibium": "^26.8.21",
|
|
279
283
|
"vitest": "^5.0.1"
|
|
280
284
|
},
|
|
281
285
|
"engines": {
|
|
@@ -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.14.6");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-RFNPJK6N.js";import"./chunk-YSLL6VSL.js";import"./chunk-2YXGBZWV.js";import"./chunk-AIRGNL55.js";import"./chunk-MJS53PRX.js";import"./chunk-64VGZQLB.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.14.6");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-AHKELLIO.js";import"./chunk-CM7U6TAX.js";import"./chunk-MBRHSU6W.js";import"./chunk-Z6GGIRQQ.js";import"./chunk-CD542DNJ.js";import"./chunk-7LPR6HJG.js";import"./chunk-7D3V65N5.js";import"./chunk-CCK4BF76.js";import"./chunk-YFBSPLJG.js";import"./chunk-7CUQCCMD.js";import"./chunk-3HZS4M3O.js";import"./chunk-Y3LZ35OG.js";import"./chunk-JVNTSNWU.js";import"./chunk-SMDN3BQZ.js";import"./chunk-6U7LNMWZ.js";import"./chunk-I33ERSGB.js";import"./chunk-IG5GNEC6.js";import"./chunk-UNFFDHER.js";import"./chunk-2TMWAQQ3.js";import"./chunk-2JVWITNK.js";import"./chunk-Q5XTSMWR.js";import"./chunk-AIRGNL55.js";import"./chunk-QW6VMTBR.js";import"./chunk-SDRHUMJB.js";import"./chunk-5J6W7SIA.js";import"./chunk-KNNISEDY.js";import"./chunk-TCHGOB2N.js";import"./chunk-FBMN7B46.js";import"./chunk-ENGZ4D5V.js";import"./chunk-MJS53PRX.js";import"./chunk-DPYSUDAO.js";import"./chunk-PI7TJS62.js";import"./chunk-EAY2JMZG.js";import"./chunk-C6KWXUFJ.js";import"./chunk-IB27QACC.js";import"./chunk-6SH5VZUD.js";import"./chunk-SESK3ARK.js";import"./chunk-SNOBH4AZ.js";import"./chunk-IQO7UCFR.js";import"./chunk-DUYOVM5I.js";import"./chunk-64VGZQLB.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};
|