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
|
@@ -200,12 +200,13 @@ export async function runCodeIntelligenceScan(projectPath) {
|
|
|
200
200
|
namespace: 'code-intelligence:kg',
|
|
201
201
|
enableVectorEmbeddings: true,
|
|
202
202
|
});
|
|
203
|
-
const glob = await import('
|
|
204
|
-
const files = await glob
|
|
203
|
+
const { glob } = await import('tinyglobby');
|
|
204
|
+
const files = await glob([
|
|
205
205
|
'**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.py'
|
|
206
206
|
], {
|
|
207
207
|
cwd: projectPath,
|
|
208
208
|
ignore: ['node_modules/**', 'dist/**', 'coverage/**', '.agentic-qe/**'],
|
|
209
|
+
expandDirectories: false,
|
|
209
210
|
});
|
|
210
211
|
const result = await kgService.index({
|
|
211
212
|
paths: files.map(f => join(projectPath, f)),
|
|
@@ -16,6 +16,8 @@ export interface InitOrchestratorOptions {
|
|
|
16
16
|
autoMode?: boolean;
|
|
17
17
|
/** Skip pattern loading */
|
|
18
18
|
skipPatterns?: boolean;
|
|
19
|
+
/** Explicitly install the optional browser engine and browser payload. */
|
|
20
|
+
browserEngine?: boolean;
|
|
19
21
|
/** Minimal configuration */
|
|
20
22
|
minimal?: boolean;
|
|
21
23
|
/** Pre-trained patterns library */
|
|
@@ -33,6 +33,7 @@ export class ModularInitOrchestrator {
|
|
|
33
33
|
skipPatterns: options.skipPatterns,
|
|
34
34
|
skipCodeIndex: options.skipCodeIndex,
|
|
35
35
|
minimal: options.minimal,
|
|
36
|
+
browserEngine: options.browserEngine,
|
|
36
37
|
withN8n: options.withN8n,
|
|
37
38
|
withOpenCode: options.withOpenCode,
|
|
38
39
|
withKiro: options.withKiro,
|
|
@@ -230,12 +230,13 @@ export class CodeIntelligencePhase extends BasePhase {
|
|
|
230
230
|
filesToIndex = changedFiles;
|
|
231
231
|
}
|
|
232
232
|
else {
|
|
233
|
-
const glob = await import('
|
|
234
|
-
const files = await glob
|
|
233
|
+
const { glob } = await import('tinyglobby');
|
|
234
|
+
const files = await glob([
|
|
235
235
|
'**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.py'
|
|
236
236
|
], {
|
|
237
237
|
cwd: projectRoot,
|
|
238
238
|
ignore: SCAN_IGNORE_PATTERNS,
|
|
239
|
+
expandDirectories: false,
|
|
239
240
|
});
|
|
240
241
|
filesToIndex = files.map(f => join(projectRoot, f));
|
|
241
242
|
}
|
|
@@ -439,12 +440,13 @@ export class CodeIntelligencePhase extends BasePhase {
|
|
|
439
440
|
* Find files modified since the given date
|
|
440
441
|
*/
|
|
441
442
|
async findChangedFiles(projectRoot, since) {
|
|
442
|
-
const glob = await import('
|
|
443
|
-
const files = await glob
|
|
443
|
+
const { glob } = await import('tinyglobby');
|
|
444
|
+
const files = await glob([
|
|
444
445
|
'**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx', '**/*.py'
|
|
445
446
|
], {
|
|
446
447
|
cwd: projectRoot,
|
|
447
448
|
ignore: SCAN_IGNORE_PATTERNS,
|
|
449
|
+
expandDirectories: false,
|
|
448
450
|
});
|
|
449
451
|
const sinceMs = since.getTime();
|
|
450
452
|
const changed = [];
|
|
@@ -79,19 +79,9 @@ export class AssetsPhase extends BasePhase {
|
|
|
79
79
|
// Initialize overlay configs in agent registry for runtime use
|
|
80
80
|
initializeOverlays(projectRoot);
|
|
81
81
|
}
|
|
82
|
-
//
|
|
83
|
-
// Graceful — never fails init if Vibium cannot be installed.
|
|
84
|
-
// Skipped in --minimal mode per ADR-086 minimal-footprint guidance.
|
|
85
|
-
//
|
|
86
|
-
// H6 (devil's-advocate finding): the install can take up to 3 minutes
|
|
87
|
-
// on cold caches because npm downloads Vibium AND lazily downloads a
|
|
88
|
-
// Chrome for Testing binary. spawnSync blocks the event loop, so the
|
|
89
|
-
// user sees no output for the entire duration. We log a clear pre-spawn
|
|
90
|
-
// message so users don't Ctrl-C thinking init hung. Future work: move
|
|
91
|
-
// this to a lazy/on-first-use install path so non-browser users never
|
|
92
|
-
// pay the cost.
|
|
82
|
+
// Browser setup is explicitly requested; normal init never downloads a browser.
|
|
93
83
|
let browserEngine;
|
|
94
|
-
if (!options.minimal) {
|
|
84
|
+
if (options.browserEngine === true && !options.minimal) {
|
|
95
85
|
try {
|
|
96
86
|
// Pre-flight check: if vibium is already on PATH, skip the loud
|
|
97
87
|
// banner so we don't scare users on the common path.
|
|
@@ -108,7 +98,7 @@ export class AssetsPhase extends BasePhase {
|
|
|
108
98
|
else {
|
|
109
99
|
// Not installed → we're about to spawn `npm install -g vibium`
|
|
110
100
|
// which can take 1–3 minutes on a cold cache. Tell the user.
|
|
111
|
-
context.services.log(' Browser engine: installing vibium via npm (this can take 1–3 minutes on first run; downloads Chrome for Testing
|
|
101
|
+
context.services.log(' Browser engine: installing vibium via npm (this can take 1–3 minutes on first run; downloads Chrome for Testing)…');
|
|
112
102
|
browserEngine = installBrowserEngine({ skip: false });
|
|
113
103
|
switch (browserEngine.status) {
|
|
114
104
|
case 'installed':
|
|
@@ -118,10 +108,10 @@ export class AssetsPhase extends BasePhase {
|
|
|
118
108
|
context.services.log(' Browser engine: skipped');
|
|
119
109
|
break;
|
|
120
110
|
case 'install-failed':
|
|
121
|
-
context.services.warn(`Browser engine install failed (qe-browser skill will be unavailable until you run \`
|
|
111
|
+
context.services.warn(`Browser engine install failed (qe-browser skill will be unavailable until you run \`aqe init --browser-engine\`): ${browserEngine.message || 'unknown'}`);
|
|
122
112
|
break;
|
|
123
113
|
case 'npm-unavailable':
|
|
124
|
-
context.services.warn('Browser engine: npm not on PATH — install Node.js + npm, then `
|
|
114
|
+
context.services.warn('Browser engine: npm not on PATH — install Node.js + npm, then `aqe init --browser-engine` to enable qe-browser');
|
|
125
115
|
break;
|
|
126
116
|
// 'already-installed' handled by the pre-flight branch above
|
|
127
117
|
}
|
|
@@ -141,12 +131,12 @@ export class AssetsPhase extends BasePhase {
|
|
|
141
131
|
const msg = error instanceof Error ? error.message : String(error);
|
|
142
132
|
context.services.warn(`Browser engine install error: ${msg}\n` +
|
|
143
133
|
` qe-browser fleet skill will be unavailable until you run:\n` +
|
|
144
|
-
` npm install -g
|
|
145
|
-
` Then re-run \`aqe init\` to verify. The rest of the AQE install will continue.`);
|
|
134
|
+
` npm install -g ${DEFAULT_VIBIUM_SPEC}\n` +
|
|
135
|
+
` Then re-run \`aqe init --browser-engine\` to verify. The rest of the AQE install will continue.`);
|
|
146
136
|
}
|
|
147
137
|
}
|
|
148
138
|
else {
|
|
149
|
-
browserEngine = { status: 'skipped', packageSpec: DEFAULT_VIBIUM_SPEC, message: 'minimal mode' };
|
|
139
|
+
browserEngine = { status: 'skipped', packageSpec: DEFAULT_VIBIUM_SPEC, message: options.minimal ? 'minimal mode' : 'browser setup not requested; run aqe init --browser-engine' };
|
|
150
140
|
}
|
|
151
141
|
// Install n8n platform (optional)
|
|
152
142
|
if (options.withN8n) {
|
|
@@ -92,6 +92,8 @@ export interface InitOptions {
|
|
|
92
92
|
*/
|
|
93
93
|
skipCodeIndex?: boolean;
|
|
94
94
|
/** Minimal configuration (no skills, patterns, workers) */
|
|
95
|
+
/** Explicitly install the optional browser engine and browser payload. */
|
|
96
|
+
browserEngine?: boolean;
|
|
95
97
|
minimal?: boolean;
|
|
96
98
|
/** Automatically migrate from v2 if detected */
|
|
97
99
|
/** Install n8n workflow testing platform */
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - Automatic strategy recommendations
|
|
16
16
|
* - Pattern quality improvement over time
|
|
17
17
|
*/
|
|
18
|
-
import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
|
|
18
|
+
import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
|
|
19
19
|
import { TrajectoryTracker, type Trajectory, type TrajectoryStep, type TrajectoryOptions, type TrajectoryTrackerConfig } from './trajectory-tracker.js';
|
|
20
20
|
import { ExperienceReplay, type ExperienceGuidance, type ExperienceReplayConfig } from './experience-replay.js';
|
|
21
21
|
import { PatternEvolution, type PatternVersion, type DriftDetectionResult, type MergeCandidate, type PatternEvolutionConfig } from './pattern-evolution.js';
|
|
@@ -182,10 +182,7 @@ export declare class EnhancedReasoningBankAdapter {
|
|
|
182
182
|
limit?: number;
|
|
183
183
|
domain?: QEDomain;
|
|
184
184
|
minSimilarity?: number;
|
|
185
|
-
}): Promise<Result<
|
|
186
|
-
pattern: QEPattern;
|
|
187
|
-
similarity: number;
|
|
188
|
-
}>>>;
|
|
185
|
+
}): Promise<Result<RealQEPatternSearchResult[]>>;
|
|
189
186
|
/**
|
|
190
187
|
* Record a pattern outcome with evolution tracking
|
|
191
188
|
*/
|
|
@@ -112,6 +112,7 @@ export class PersistentSONAEngine {
|
|
|
112
112
|
initPromise = null;
|
|
113
113
|
pendingSaves = new Map();
|
|
114
114
|
saveTimer = null;
|
|
115
|
+
consecutiveSaveFailures = 0;
|
|
115
116
|
serverClient = null;
|
|
116
117
|
constructor(config) {
|
|
117
118
|
this.config = {
|
|
@@ -270,8 +271,6 @@ export class PersistentSONAEngine {
|
|
|
270
271
|
ON CONFLICT(id) DO UPDATE SET
|
|
271
272
|
confidence = excluded.confidence,
|
|
272
273
|
usage_count = excluded.usage_count,
|
|
273
|
-
success_count = excluded.success_count,
|
|
274
|
-
failure_count = excluded.failure_count,
|
|
275
274
|
metadata = excluded.metadata,
|
|
276
275
|
updated_at = datetime('now'),
|
|
277
276
|
last_used_at = excluded.last_used_at
|
|
@@ -288,6 +287,8 @@ export class PersistentSONAEngine {
|
|
|
288
287
|
SET confidence = ?,
|
|
289
288
|
success_count = success_count + ?,
|
|
290
289
|
failure_count = failure_count + ?,
|
|
290
|
+
usage_count = usage_count + 1,
|
|
291
|
+
last_used_at = datetime('now'),
|
|
291
292
|
updated_at = datetime('now')
|
|
292
293
|
WHERE id = ?
|
|
293
294
|
`));
|
|
@@ -432,6 +433,13 @@ export class PersistentSONAEngine {
|
|
|
432
433
|
// Get updated pattern and persist confidence change
|
|
433
434
|
const pattern = this.getPattern(patternId);
|
|
434
435
|
if (pattern) {
|
|
436
|
+
// Feedback needs a durable row before incrementing its counters.
|
|
437
|
+
// Remove the queued snapshot only after its write succeeds.
|
|
438
|
+
const pending = this.pendingSaves.get(patternId);
|
|
439
|
+
if (pending) {
|
|
440
|
+
this.savePatternToDb(pending);
|
|
441
|
+
this.pendingSaves.delete(patternId);
|
|
442
|
+
}
|
|
435
443
|
this.persistPatternConfidenceUpdate(patternId, pattern.confidence, success ? 1 : 0, success ? 0 : 1);
|
|
436
444
|
}
|
|
437
445
|
}
|
|
@@ -548,19 +556,27 @@ export class PersistentSONAEngine {
|
|
|
548
556
|
if (!stmt)
|
|
549
557
|
throw new Error('Statement not prepared');
|
|
550
558
|
const result = stmt.run(patternId);
|
|
551
|
-
|
|
559
|
+
// Delete queued writes too: otherwise the next batch or sync restores it.
|
|
560
|
+
const pending = this.pendingSaves.delete(patternId);
|
|
561
|
+
const cached = this.baseEngine.deletePattern(patternId);
|
|
562
|
+
return result.changes > 0 || pending || cached;
|
|
552
563
|
}
|
|
553
564
|
/**
|
|
554
565
|
* Clear all patterns for this domain
|
|
555
566
|
*/
|
|
556
567
|
clearDomainPatterns() {
|
|
557
568
|
this.ensureInitialized();
|
|
558
|
-
//
|
|
559
|
-
this.baseEngine.clear();
|
|
560
|
-
// Clear in SQLite for this domain
|
|
569
|
+
// Finish the durable delete first so a failed statement preserves memory.
|
|
561
570
|
const stmt = this.prepared.get('deleteByDomain');
|
|
562
|
-
if (stmt)
|
|
563
|
-
|
|
571
|
+
if (!stmt)
|
|
572
|
+
throw new Error('Statement not prepared');
|
|
573
|
+
stmt.run(this.config.domain);
|
|
574
|
+
for (const pattern of this.baseEngine.getPatternsByDomain(this.config.domain)) {
|
|
575
|
+
this.baseEngine.deletePattern(pattern.id);
|
|
576
|
+
}
|
|
577
|
+
for (const [id, pattern] of this.pendingSaves) {
|
|
578
|
+
if (pattern.domain === this.config.domain)
|
|
579
|
+
this.pendingSaves.delete(id);
|
|
564
580
|
}
|
|
565
581
|
}
|
|
566
582
|
/**
|
|
@@ -791,10 +807,19 @@ export class PersistentSONAEngine {
|
|
|
791
807
|
this.saveTimer = null;
|
|
792
808
|
}
|
|
793
809
|
if (this.pendingSaves.size > 0) {
|
|
810
|
+
const failures = [];
|
|
794
811
|
for (const pattern of this.pendingSaves.values()) {
|
|
795
|
-
|
|
812
|
+
try {
|
|
813
|
+
this.savePatternToDb(pattern);
|
|
814
|
+
this.pendingSaves.delete(pattern.id);
|
|
815
|
+
}
|
|
816
|
+
catch (error) {
|
|
817
|
+
failures.push(new Error(toErrorMessage(error)));
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
if (failures.length > 0) {
|
|
821
|
+
throw new AggregateError(failures, `Deferred SONA saves failed: ${failures.map(error => error.message).join('; ')}`);
|
|
796
822
|
}
|
|
797
|
-
this.pendingSaves.clear();
|
|
798
823
|
}
|
|
799
824
|
// A10 fix: checkpoint the request counter once per process lifetime
|
|
800
825
|
// (cheap — not on the instantAdapt hot path) so short-lived CLI/MCP
|
|
@@ -813,6 +838,8 @@ export class PersistentSONAEngine {
|
|
|
813
838
|
this.db = null;
|
|
814
839
|
this.persistence = null;
|
|
815
840
|
this.initialized = false;
|
|
841
|
+
// A completed initialization promise belongs to the closed lifecycle.
|
|
842
|
+
this.initPromise = null;
|
|
816
843
|
console.log(`[PersistentSONAEngine] Closed: domain=${this.config.domain}`);
|
|
817
844
|
}
|
|
818
845
|
// ==========================================================================
|
|
@@ -1018,6 +1045,8 @@ export class PersistentSONAEngine {
|
|
|
1018
1045
|
else {
|
|
1019
1046
|
// Batch saves
|
|
1020
1047
|
this.pendingSaves.set(pattern.id, pattern);
|
|
1048
|
+
// New explicit work starts a fresh, bounded recovery cycle.
|
|
1049
|
+
this.consecutiveSaveFailures = 0;
|
|
1021
1050
|
this.scheduleSave();
|
|
1022
1051
|
}
|
|
1023
1052
|
}
|
|
@@ -1034,11 +1063,12 @@ export class PersistentSONAEngine {
|
|
|
1034
1063
|
const actionEmbedding = pattern.action?.value && Array.isArray(pattern.action.value)
|
|
1035
1064
|
? this.floatArrayToBuffer(pattern.action.value)
|
|
1036
1065
|
: null;
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1066
|
+
// Encode strings too: the reader parses JSON, so raw "123"/"false"
|
|
1067
|
+
// would otherwise change the action type after restarting. Legacy raw
|
|
1068
|
+
// non-JSON strings remain readable through rowToPattern's fallback.
|
|
1069
|
+
const actionValue = pattern.action?.value !== undefined
|
|
1070
|
+
? JSON.stringify(pattern.action.value)
|
|
1071
|
+
: null;
|
|
1042
1072
|
stmt.run(pattern.id, pattern.type, pattern.domain, stateEmbedding, actionEmbedding, pattern.action?.type ?? 'unknown', actionValue, pattern.outcome?.reward ?? 0, pattern.outcome?.success ? 1 : 0, pattern.outcome?.quality ?? 0, pattern.confidence, pattern.usageCount, 0, // success_count (tracked separately from usageCount)
|
|
1043
1073
|
0, // failure_count
|
|
1044
1074
|
pattern.metadata ? JSON.stringify(pattern.metadata) : null, pattern.createdAt?.toISOString() ?? new Date().toISOString(), pattern.lastUsedAt?.toISOString() ?? null);
|
|
@@ -1046,17 +1076,41 @@ export class PersistentSONAEngine {
|
|
|
1046
1076
|
/**
|
|
1047
1077
|
* Schedule batched save
|
|
1048
1078
|
*/
|
|
1049
|
-
scheduleSave() {
|
|
1050
|
-
if (this.saveTimer)
|
|
1079
|
+
scheduleSave(delayMs = this.config.autoSaveInterval) {
|
|
1080
|
+
if (this.saveTimer) {
|
|
1081
|
+
// New explicit work must survive natural exit, even during a retry delay.
|
|
1082
|
+
if (this.consecutiveSaveFailures === 0)
|
|
1083
|
+
this.saveTimer.ref();
|
|
1051
1084
|
return;
|
|
1085
|
+
}
|
|
1052
1086
|
this.saveTimer = setTimeout(() => {
|
|
1053
1087
|
this.saveTimer = null;
|
|
1054
1088
|
const patterns = Array.from(this.pendingSaves.values());
|
|
1055
|
-
this.pendingSaves.clear();
|
|
1056
1089
|
for (const pattern of patterns) {
|
|
1057
|
-
|
|
1090
|
+
try {
|
|
1091
|
+
this.savePatternToDb(pattern);
|
|
1092
|
+
this.pendingSaves.delete(pattern.id);
|
|
1093
|
+
}
|
|
1094
|
+
catch (error) {
|
|
1095
|
+
logger.warn('Deferred SONA save failed; retaining pending pattern', {
|
|
1096
|
+
patternId: pattern.id, error: toErrorMessage(error),
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
if (this.pendingSaves.size > 0) {
|
|
1101
|
+
this.consecutiveSaveFailures++;
|
|
1102
|
+
// Stop after five failed batches; close() can still flush retained rows.
|
|
1103
|
+
if (this.consecutiveSaveFailures < 5 && this.db?.open) {
|
|
1104
|
+
this.scheduleSave(Math.min(60000, Math.max(1000, this.config.autoSaveInterval) * 2 ** (this.consecutiveSaveFailures - 1)));
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
else {
|
|
1108
|
+
this.consecutiveSaveFailures = 0;
|
|
1058
1109
|
}
|
|
1059
|
-
},
|
|
1110
|
+
}, delayMs);
|
|
1111
|
+
// The initial batch must flush on natural exit; only failure retries are optional.
|
|
1112
|
+
if (this.consecutiveSaveFailures > 0)
|
|
1113
|
+
this.saveTimer.unref();
|
|
1060
1114
|
}
|
|
1061
1115
|
/**
|
|
1062
1116
|
* Update pattern usage in SQLite
|
|
@@ -108,6 +108,15 @@ class QESONAPatternRegistry {
|
|
|
108
108
|
getByDomain(domain) {
|
|
109
109
|
return Array.from(this.patterns.values()).filter(p => p.domain === domain);
|
|
110
110
|
}
|
|
111
|
+
/** Remove a pattern and its trajectory associations from the registry. */
|
|
112
|
+
delete(id) {
|
|
113
|
+
const removed = this.patterns.delete(id);
|
|
114
|
+
for (const [trajectoryId, patternId] of this.trajectoryMap) {
|
|
115
|
+
if (patternId === id)
|
|
116
|
+
this.trajectoryMap.delete(trajectoryId);
|
|
117
|
+
}
|
|
118
|
+
return removed;
|
|
119
|
+
}
|
|
111
120
|
/**
|
|
112
121
|
* Clear all patterns
|
|
113
122
|
*/
|
|
@@ -380,6 +389,10 @@ export class QESONA {
|
|
|
380
389
|
engineStats,
|
|
381
390
|
};
|
|
382
391
|
}
|
|
392
|
+
/** Stop recalling a pattern without resetting learned model weights. */
|
|
393
|
+
deletePattern(patternId) {
|
|
394
|
+
return this.registry.delete(patternId);
|
|
395
|
+
}
|
|
383
396
|
/**
|
|
384
397
|
* Clear all patterns
|
|
385
398
|
*/
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @module integrations/vibium/client
|
|
8
8
|
*/
|
|
9
9
|
import { randomUUID } from 'crypto';
|
|
10
|
+
import { loadVibium, isVibiumReady, VIBIUM_SETUP } from './runtime.js';
|
|
10
11
|
import { DEFAULT_VIBIUM_CONFIG } from './types.js';
|
|
11
12
|
import { VibiumError, VibiumUnavailableError, VibiumTimeoutError, VibiumElementNotFoundError, VibiumConnectionError, VibiumNavigationError, VibiumScreenshotError, VibiumInteractionError, createVibiumError, } from './errors.js';
|
|
12
13
|
import { toError } from '../../shared/error-utils.js';
|
|
@@ -24,7 +25,7 @@ async function getVibiumBrowser() {
|
|
|
24
25
|
return vibiumBrowser;
|
|
25
26
|
}
|
|
26
27
|
try {
|
|
27
|
-
const vibium = await
|
|
28
|
+
const vibium = await loadVibium();
|
|
28
29
|
vibiumBrowser = vibium.browser;
|
|
29
30
|
vibiumAvailable = true;
|
|
30
31
|
return vibiumBrowser;
|
|
@@ -112,6 +113,7 @@ export class VibiumClientImpl {
|
|
|
112
113
|
_available = null;
|
|
113
114
|
// Real Vibium browser instance
|
|
114
115
|
vibeInstance = null;
|
|
116
|
+
browserInstance = null;
|
|
115
117
|
/**
|
|
116
118
|
* Create a new Vibium client
|
|
117
119
|
*
|
|
@@ -133,7 +135,7 @@ export class VibiumClientImpl {
|
|
|
133
135
|
try {
|
|
134
136
|
// Check if Vibium package is available
|
|
135
137
|
const browser = await getVibiumBrowser();
|
|
136
|
-
this._available = browser !== null;
|
|
138
|
+
this._available = browser !== null && isVibiumReady();
|
|
137
139
|
return this._available;
|
|
138
140
|
}
|
|
139
141
|
catch {
|
|
@@ -157,7 +159,7 @@ export class VibiumClientImpl {
|
|
|
157
159
|
if (isAvailable) {
|
|
158
160
|
this.lastHealthCheck = {
|
|
159
161
|
status: this.vibeInstance ? 'connected' : 'disconnected',
|
|
160
|
-
|
|
162
|
+
// Runtime availability is checked against the installed payload.
|
|
161
163
|
browserType: this.config.browserType,
|
|
162
164
|
features: [
|
|
163
165
|
'browser-launch',
|
|
@@ -177,7 +179,7 @@ export class VibiumClientImpl {
|
|
|
177
179
|
status: 'unavailable',
|
|
178
180
|
features: ['fallback-only'],
|
|
179
181
|
lastChecked,
|
|
180
|
-
error:
|
|
182
|
+
error: `Vibium runtime or browser payload unavailable; run ${VIBIUM_SETUP}`,
|
|
181
183
|
sessionActive: false,
|
|
182
184
|
};
|
|
183
185
|
}
|
|
@@ -209,13 +211,22 @@ export class VibiumClientImpl {
|
|
|
209
211
|
const operation = async () => {
|
|
210
212
|
const browser = await getVibiumBrowser();
|
|
211
213
|
if (!browser) {
|
|
212
|
-
throw new VibiumUnavailableError(
|
|
214
|
+
throw new VibiumUnavailableError(`Vibium runtime unavailable; run ${VIBIUM_SETUP}`);
|
|
213
215
|
}
|
|
214
216
|
// Launch REAL browser using Vibium
|
|
215
217
|
const headless = options?.headless ?? this.config.headless;
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
218
|
+
if (!isVibiumReady()) {
|
|
219
|
+
throw new VibiumUnavailableError(`Vibium browser payload unavailable; run ${VIBIUM_SETUP}`);
|
|
220
|
+
}
|
|
221
|
+
const instance = await browser.start({ headless });
|
|
222
|
+
try {
|
|
223
|
+
this.vibeInstance = await instance.page();
|
|
224
|
+
this.browserInstance = instance;
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
await instance.stop();
|
|
228
|
+
throw error;
|
|
229
|
+
}
|
|
219
230
|
const session = {
|
|
220
231
|
id: this.generateSessionId(),
|
|
221
232
|
browserType: this.config.browserType,
|
|
@@ -247,8 +258,9 @@ export class VibiumClientImpl {
|
|
|
247
258
|
}
|
|
248
259
|
const operation = async () => {
|
|
249
260
|
if (this.vibeInstance) {
|
|
250
|
-
await this.
|
|
261
|
+
await this.browserInstance?.stop();
|
|
251
262
|
this.vibeInstance = null;
|
|
263
|
+
this.browserInstance = null;
|
|
252
264
|
}
|
|
253
265
|
this.currentSession = null;
|
|
254
266
|
};
|
|
@@ -575,7 +587,7 @@ export class VibiumClientImpl {
|
|
|
575
587
|
this.ensureSession();
|
|
576
588
|
try {
|
|
577
589
|
// Use real Vibium evaluate method
|
|
578
|
-
const result = await this.vibeInstance.evaluate(script);
|
|
590
|
+
const result = await this.vibeInstance.evaluate(`(async () => { ${script} })()`);
|
|
579
591
|
return { success: true, value: result };
|
|
580
592
|
}
|
|
581
593
|
catch (error) {
|
|
@@ -608,13 +620,14 @@ export class VibiumClientImpl {
|
|
|
608
620
|
async dispose() {
|
|
609
621
|
if (this.vibeInstance) {
|
|
610
622
|
try {
|
|
611
|
-
await this.
|
|
623
|
+
await this.browserInstance?.stop();
|
|
612
624
|
}
|
|
613
625
|
catch (error) {
|
|
614
626
|
// Non-critical: Vibium disposal errors
|
|
615
627
|
console.debug('[VibiumClient] Disposal error:', error instanceof Error ? error.message : error);
|
|
616
628
|
}
|
|
617
629
|
this.vibeInstance = null;
|
|
630
|
+
this.browserInstance = null;
|
|
618
631
|
}
|
|
619
632
|
this.currentSession = null;
|
|
620
633
|
this._initialized = false;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const VIBIUM_SETUP = "aqe init --browser-engine (or npm install vibium@^26.8.21)";
|
|
2
|
+
type Runtime = typeof import('vibium');
|
|
3
|
+
/**
|
|
4
|
+
* How to run npm without a shell. On Windows `npm` is an `npm.cmd` shim, which
|
|
5
|
+
* execFile cannot start without `shell: true` (EINVAL/ENOENT since the
|
|
6
|
+
* CVE-2024-27980 fix), so run the npm CLI bundled next to node.exe instead.
|
|
7
|
+
* Falls back to plain `npm` when that layout is absent.
|
|
8
|
+
*/
|
|
9
|
+
export declare function npmInvocation(platform?: NodeJS.Platform, execPath?: string, exists?: (path: string) => boolean): [string, string[]];
|
|
10
|
+
export declare function loadVibium(): Promise<Runtime>;
|
|
11
|
+
/** Check the payload belonging to the resolved library, not a different PATH CLI. */
|
|
12
|
+
export declare function isVibiumReady(): boolean;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/** Resolve the opt-in Vibium runtime for both local and global AQE installs. */
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
export const VIBIUM_SETUP = 'aqe init --browser-engine (or npm install vibium@^26.8.21)';
|
|
7
|
+
const requireFromHere = createRequire(import.meta.url);
|
|
8
|
+
/**
|
|
9
|
+
* How to run npm without a shell. On Windows `npm` is an `npm.cmd` shim, which
|
|
10
|
+
* execFile cannot start without `shell: true` (EINVAL/ENOENT since the
|
|
11
|
+
* CVE-2024-27980 fix), so run the npm CLI bundled next to node.exe instead.
|
|
12
|
+
* Falls back to plain `npm` when that layout is absent.
|
|
13
|
+
*/
|
|
14
|
+
export function npmInvocation(platform = process.platform, execPath = process.execPath, exists = existsSync) {
|
|
15
|
+
if (platform === 'win32') {
|
|
16
|
+
const npmCli = join(dirname(execPath), 'node_modules', 'npm', 'bin', 'npm-cli.js');
|
|
17
|
+
if (exists(npmCli))
|
|
18
|
+
return [execPath, [npmCli]];
|
|
19
|
+
}
|
|
20
|
+
return ['npm', []];
|
|
21
|
+
}
|
|
22
|
+
/** Never install or download anything while probing availability. */
|
|
23
|
+
function resolveRuntime() {
|
|
24
|
+
try {
|
|
25
|
+
return requireFromHere.resolve('vibium');
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
try {
|
|
29
|
+
return createRequire(join(process.cwd(), 'package.json')).resolve('vibium');
|
|
30
|
+
}
|
|
31
|
+
catch { /* No project-local opt-in runtime. Try global setup below. */ }
|
|
32
|
+
// A global CLI installation is not on Node's normal module search path.
|
|
33
|
+
// npm root is read-only and honors the same npm prefix as explicit setup.
|
|
34
|
+
const [npmBin, npmPrefixArgs] = npmInvocation();
|
|
35
|
+
const root = execFileSync(npmBin, [...npmPrefixArgs, 'root', '-g'], {
|
|
36
|
+
encoding: 'utf8', timeout: 5000, stdio: ['ignore', 'pipe', 'pipe'],
|
|
37
|
+
}).trim();
|
|
38
|
+
return requireFromHere.resolve(join(root, 'vibium'));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Accept the modern API from the namespace itself or from its `default`
|
|
43
|
+
* export. CJS interop and bundler createRequire shims expose the package
|
|
44
|
+
* object only as `default`, so checking the namespace alone rejects a
|
|
45
|
+
* correctly installed runtime.
|
|
46
|
+
*/
|
|
47
|
+
function selectBrowserApi(loaded) {
|
|
48
|
+
if (typeof loaded?.browser?.start === 'function')
|
|
49
|
+
return loaded;
|
|
50
|
+
if (typeof loaded?.default?.browser?.start === 'function')
|
|
51
|
+
return loaded.default;
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
export async function loadVibium() {
|
|
55
|
+
let loaded;
|
|
56
|
+
try {
|
|
57
|
+
loaded = await import('vibium');
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
// Only a missing local package permits global resolution. A broken local
|
|
61
|
+
// installation must not be silently replaced by an unrelated runtime.
|
|
62
|
+
if (error.code !== 'ERR_MODULE_NOT_FOUND' &&
|
|
63
|
+
error.code !== 'MODULE_NOT_FOUND')
|
|
64
|
+
throw error;
|
|
65
|
+
let entry;
|
|
66
|
+
try {
|
|
67
|
+
entry = resolveRuntime();
|
|
68
|
+
}
|
|
69
|
+
catch (cause) {
|
|
70
|
+
throw new Error(`Vibium is not installed; run ${VIBIUM_SETUP}`, { cause });
|
|
71
|
+
}
|
|
72
|
+
loaded = requireFromHere(entry);
|
|
73
|
+
}
|
|
74
|
+
const runtime = selectBrowserApi(loaded);
|
|
75
|
+
if (!runtime) {
|
|
76
|
+
throw new Error('Unsupported Vibium API: the installed package exposes no browser.start() ' +
|
|
77
|
+
`(neither as a named nor a default export); run ${VIBIUM_SETUP}`);
|
|
78
|
+
}
|
|
79
|
+
return runtime;
|
|
80
|
+
}
|
|
81
|
+
/** Check the payload belonging to the resolved library, not a different PATH CLI. */
|
|
82
|
+
export function isVibiumReady() {
|
|
83
|
+
try {
|
|
84
|
+
const cli = join(dirname(resolveRuntime()), '..', 'bin', 'cli.js');
|
|
85
|
+
execFileSync(process.execPath, [cli, 'is-installed'], {
|
|
86
|
+
timeout: 5000, stdio: 'ignore',
|
|
87
|
+
});
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -56,9 +56,9 @@ export class InMemoryBackend {
|
|
|
56
56
|
return value !== undefined;
|
|
57
57
|
}
|
|
58
58
|
async search(pattern, limit = MEMORY_CONSTANTS.DEFAULT_SEARCH_LIMIT, options) {
|
|
59
|
-
//
|
|
60
|
-
const escaped = pattern.replace(/[
|
|
61
|
-
const regex = new RegExp(escaped.replace(/\*/g, '.*'));
|
|
59
|
+
// Match the same whole-key glob contract as persistent memory.
|
|
60
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
61
|
+
const regex = new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 'su');
|
|
62
62
|
const results = [];
|
|
63
63
|
// When a namespace is supplied, scope the scan to that prefix. Matches
|
|
64
64
|
// HybridBackend's namespace-aware search and lets LearningCoordinator's
|
|
@@ -68,7 +68,8 @@ export class InMemoryBackend {
|
|
|
68
68
|
for (const key of this.store.keys()) {
|
|
69
69
|
if (nsPrefix && !key.startsWith(nsPrefix))
|
|
70
70
|
continue;
|
|
71
|
-
|
|
71
|
+
const searchableKey = nsPrefix ? key.slice(nsPrefix.length) : key;
|
|
72
|
+
if (regex.test(searchableKey)) {
|
|
72
73
|
results.push(key);
|
|
73
74
|
if (results.length >= limit)
|
|
74
75
|
break;
|