agentic-qe 3.15.9 → 3.15.11
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/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +365 -0
- package/README.md +8 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2a/agent-cards/generator.js +6 -3
- package/dist/adapters/a2a/tasks/task-router.js +3 -1
- package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
- package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
- package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
- package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
- package/dist/adapters/ag-ui/json-patch.js +10 -6
- package/dist/adapters/trajectory-adapter.js +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
- package/dist/agents/overlay-loader.js +26 -21
- package/dist/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
- package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
- package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
- package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
- package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
- package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
- package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
- package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
- package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
- package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
- package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
- package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
- package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
- package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
- package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
- package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
- package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
- package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
- package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
- package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
- package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
- package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
- package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
- package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
- package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
- package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
- package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
- package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
- package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
- package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
- package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
- package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
- package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
- package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
- package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
- package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
- package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
- package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
- package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
- package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
- package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
- package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
- package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
- package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
- package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
- package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
- package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
- package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
- package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
- package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
- package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
- package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
- package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
- package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
- package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
- package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
- package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
- package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
- package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
- package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
- package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
- package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
- package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
- package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
- package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
- package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
- package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
- package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
- package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
- package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
- package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
- package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
- package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
- package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
- package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
- package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
- package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
- package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
- package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
- package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
- package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
- package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
- package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
- package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
- package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
- package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
- package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
- package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
- package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
- package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
- package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
- package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
- package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
- package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
- package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
- package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
- package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
- package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
- package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
- package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
- package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
- package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
- package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
- package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
- package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
- package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
- package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
- package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
- package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
- package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
- package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
- package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
- package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
- package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
- package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
- package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
- package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
- package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
- package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
- package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
- package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
- package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
- package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
- package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
- package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
- package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
- package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
- package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
- package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
- package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
- package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
- package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
- package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
- package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
- package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
- package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
- package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
- package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
- package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
- package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
- package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
- package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
- package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
- package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
- package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
- package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
- package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
- package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
- package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
- package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
- package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
- package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
- package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
- package/dist/cli/chunks/client-HL2COSFM.js +2 -0
- package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
- package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
- package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
- package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
- package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
- package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
- package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
- package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
- package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
- package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
- package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
- package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
- package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
- package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
- package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
- package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
- package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
- package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
- package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
- package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
- package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
- package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
- package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
- package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
- package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
- package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
- package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
- package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
- package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
- package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
- package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
- package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
- package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
- package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
- package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
- package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
- package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
- package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
- package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
- package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
- package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
- package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
- package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
- package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
- package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
- package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
- package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
- package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
- package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
- package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
- package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
- package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
- package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
- package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
- package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
- package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
- package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
- package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
- package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
- package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
- package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
- package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
- package/dist/cli/commands/fleet.js +23 -13
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
- package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +11 -2
- package/dist/cli/handlers/init-handler.d.ts +12 -0
- package/dist/cli/handlers/init-handler.js +27 -12
- package/dist/cli/utils/ci-output.d.ts +11 -0
- package/dist/cli/utils/ci-output.js +2 -0
- package/dist/cli/utils/fleet-operation.d.ts +32 -0
- package/dist/cli/utils/fleet-operation.js +71 -0
- package/dist/cli/utils/fleet-result.d.ts +31 -0
- package/dist/cli/utils/fleet-result.js +124 -0
- package/dist/cli/utils/progress.d.ts +16 -2
- package/dist/cli/utils/progress.js +31 -14
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/consensus/consensus-engine.js +3 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
- package/dist/coordination/handlers/coverage-collection.js +3 -1
- package/dist/coordination/handlers/coverage-handlers.js +10 -1
- package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
- package/dist/coordination/handlers/coverage-runner.js +6 -22
- package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
- package/dist/coordination/handlers/coverage-stderr.js +39 -0
- package/dist/coordination/handlers/coverage-target.js +6 -3
- package/dist/coordination/handlers/handler-utils.js +3 -1
- package/dist/coordination/handlers/requirements-handlers.js +18 -3
- package/dist/coordination/handlers/security-handlers.js +45 -21
- package/dist/coordination/handlers/test-execution-handlers.js +25 -7
- package/dist/coordination/mincut/queen-integration.d.ts +39 -1
- package/dist/coordination/mincut/queen-integration.js +83 -6
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
- package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
- package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
- package/dist/coordination/protocols/learning-consolidation.js +71 -22
- package/dist/coordination/queen-coordinator.d.ts +1 -1
- package/dist/coordination/queen-coordinator.js +27 -10
- package/dist/coordination/queen-event-handlers.js +13 -0
- package/dist/coordination/queen-task-management.d.ts +18 -24
- package/dist/coordination/queen-task-management.js +62 -168
- package/dist/coordination/queen-task-queue.d.ts +41 -0
- package/dist/coordination/queen-task-queue.js +194 -0
- package/dist/coordination/queen-types.d.ts +1 -1
- package/dist/coordination/queen-work-stealing.d.ts +6 -1
- package/dist/coordination/queen-work-stealing.js +7 -4
- package/dist/coordination/result-saver-adapters.d.ts +15 -0
- package/dist/coordination/result-saver-adapters.js +57 -0
- package/dist/coordination/result-saver.d.ts +1 -1
- package/dist/coordination/result-saver.js +8 -5
- package/dist/coordination/task-executability.d.ts +12 -0
- package/dist/coordination/task-executability.js +27 -0
- package/dist/coordination/workflow-orchestrator.d.ts +6 -0
- package/dist/coordination/workflow-orchestrator.js +22 -8
- package/dist/coordination/yaml-pipeline-loader.js +5 -2
- package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
- package/dist/domains/code-intelligence/index-path-guard.js +20 -50
- package/dist/domains/code-intelligence/plugin.js +5 -1
- package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
- package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
- package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
- package/dist/domains/contract-testing/services/contract-validator.js +6 -4
- package/dist/domains/contract-testing/services/schema-validator.js +8 -5
- package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
- package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
- package/dist/domains/defect-intelligence/plugin.js +11 -2
- package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
- package/dist/domains/defect-intelligence/prediction-history.js +68 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
- package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
- package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
- package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
- package/dist/domains/learning-optimization/active-patterns.js +2 -2
- package/dist/domains/learning-optimization/coordinator.js +9 -5
- package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
- package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
- package/dist/domains/learning-optimization/pattern-archive.js +56 -0
- package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
- package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
- package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
- package/dist/domains/learning-optimization/reward-source.js +8 -1
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
- package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
- package/dist/domains/learning-optimization/services/production-intel.js +3 -1
- package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
- package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
- package/dist/domains/security-compliance/plugin.js +17 -3
- package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
- package/dist/domains/security-compliance/sast-path-guard.js +17 -0
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
- package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
- package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor.js +3 -2
- package/dist/domains/test-execution/coordinator.d.ts +6 -0
- package/dist/domains/test-execution/coordinator.js +28 -22
- package/dist/domains/test-execution/interfaces.d.ts +36 -1
- package/dist/domains/test-execution/plugin.js +19 -4
- package/dist/domains/test-execution/services/flaky-detector.js +9 -7
- package/dist/domains/test-execution/services/retry-handler.js +46 -7
- package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
- package/dist/domains/test-execution/services/retry-outcome.js +53 -0
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
- package/dist/domains/test-execution/services/test-executor.js +8 -8
- package/dist/domains/test-generation/coordinator.js +2 -2
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/test-generation/services/test-generator.js +2 -2
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/governance/evolution-pipeline-integration.js +3 -1
- package/dist/hooks/cross-phase-hooks.js +5 -2
- package/dist/init/init-wizard-steps.js +5 -1
- package/dist/init/phases/04-database.js +7 -0
- package/dist/init/phases/10-workers.js +50 -6
- package/dist/init/phases/12-verification.js +14 -4
- package/dist/init/settings-merge.js +7 -4
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
- package/dist/integrations/browser/agent-browser/client.js +37 -52
- package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
- package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
- package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
- package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
- package/dist/integrations/browser/web-content-fetcher.js +9 -3
- package/dist/integrations/ruvector/filter-adapter.js +2 -1
- package/dist/integrations/vibium/client.js +2 -2
- package/dist/integrations/vibium/runtime.d.ts +1 -1
- package/dist/integrations/vibium/runtime.js +14 -11
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +25 -6
- package/dist/learning/dream/dream-commit.d.ts +65 -0
- package/dist/learning/dream/dream-commit.js +104 -0
- package/dist/learning/dream/dream-engine.d.ts +81 -31
- package/dist/learning/dream/dream-engine.js +225 -168
- package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
- package/dist/learning/dream/dream-insights-pruner.js +16 -30
- package/dist/learning/dream/index.d.ts +3 -2
- package/dist/learning/dream/index.js +3 -1
- package/dist/learning/dream/insight-generator.js +5 -4
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
- package/dist/learning/dream/rvcow-branch-manager.js +8 -1
- package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
- package/dist/learning/dream/speculative-dreamer.js +64 -111
- package/dist/learning/dream/spreading-activation.d.ts +2 -1
- package/dist/learning/dream/spreading-activation.js +15 -6
- package/dist/learning/experience-capture.d.ts +9 -0
- package/dist/learning/experience-capture.js +18 -4
- package/dist/learning/memory-auditor.js +3 -1
- package/dist/learning/qe-patterns.js +2 -1
- package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
- package/dist/learning/real-qe-reasoning-bank.js +70 -38
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +16 -2
- package/dist/learning/usage-outcome.d.ts +68 -0
- package/dist/learning/usage-outcome.js +84 -0
- package/dist/mcp/background-workers.d.ts +13 -1
- package/dist/mcp/background-workers.js +17 -3
- package/dist/mcp/bundle.js +612 -580
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
- package/dist/mcp/handlers/domain-handler-configs.js +19 -5
- package/dist/mcp/handlers/handler-factory.d.ts +2 -1
- package/dist/mcp/handlers/handler-factory.js +36 -15
- package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
- package/dist/mcp/handlers/orchestrate-routes.js +88 -0
- package/dist/mcp/handlers/task-handlers.d.ts +16 -0
- package/dist/mcp/handlers/task-handlers.js +77 -24
- package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
- package/dist/mcp/protocol-server.js +10 -8
- package/dist/mcp/qe-tool-bridge.js +3 -0
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
- package/dist/mcp/services/reasoning-bank-service.js +4 -0
- package/dist/mcp/tool-annotations.js +4 -1
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coherence/check.js +1 -0
- package/dist/mcp/tools/coherence/consensus.js +4 -2
- package/dist/mcp/tools/coverage-analysis/index.js +31 -2
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
- package/dist/mcp/tools/learning-optimization/dream.js +38 -34
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
- package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
- package/dist/mcp/tools/mincut/index.js +3 -0
- package/dist/mcp/tools/quality-assessment/gate.js +19 -1
- package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
- package/dist/mcp/tools/security-compliance/scan.js +4 -2
- package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
- package/dist/mcp/tools/test-execution/execute.js +3 -2
- package/dist/memory/crdt/crdt-store.js +5 -0
- package/dist/memory/crdt/lww-register.js +12 -2
- package/dist/migration/agent-compat.js +7 -5
- package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
- package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
- package/dist/optimization/early-exit-token-optimizer.js +3 -1
- package/dist/planning/goap-planner.js +5 -0
- package/dist/planning/plan-executor.js +5 -0
- package/dist/shared/git/git-analyzer.d.ts +49 -0
- package/dist/shared/git/git-analyzer.js +159 -319
- package/dist/shared/git/git-process.d.ts +22 -0
- package/dist/shared/git/git-process.js +37 -0
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/io/confined-read.d.ts +74 -0
- package/dist/shared/io/confined-read.js +256 -0
- package/dist/shared/io/file-reader.d.ts +6 -6
- package/dist/shared/io/file-reader.js +16 -42
- package/dist/shared/io/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/providers/claude-code.js +4 -1
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -1
- package/dist/shared/native-module-errors.d.ts +51 -0
- package/dist/shared/native-module-errors.js +129 -0
- package/dist/shared/safe-db.js +14 -4
- package/dist/shared/security/osv-client.js +4 -1
- package/dist/shared/test-runner-args.d.ts +5 -0
- package/dist/shared/test-runner-args.js +6 -1
- package/dist/shared/test-runner-process.d.ts +6 -0
- package/dist/shared/test-runner-process.js +14 -0
- package/dist/shared/test-runner-verdict.d.ts +9 -1
- package/dist/shared/test-runner-verdict.js +15 -4
- package/dist/shared/types/test-frameworks.js +2 -2
- package/dist/shared/utils/namespaced-search.d.ts +14 -0
- package/dist/shared/utils/namespaced-search.js +19 -1
- package/dist/shared/utils/safe-expression-evaluator.js +4 -3
- package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
- package/dist/sync/readers/json-reader.js +2 -1
- package/dist/validation/anchor-set.d.ts +6 -0
- package/dist/validation/anchor-set.js +9 -1
- package/dist/validation/gate-reexecute.js +7 -4
- package/dist/validation/quality-gate-runner.d.ts +7 -1
- package/dist/validation/quality-gate-runner.js +3 -3
- package/dist/workers/daemon.js +13 -1
- package/dist/workers/quality-daemon/git-watcher.js +9 -9
- package/dist/workers/workers/defect-predictor.d.ts +8 -3
- package/dist/workers/workers/defect-predictor.js +48 -49
- package/dist/workers/workers/learning-consolidation.d.ts +2 -0
- package/dist/workers/workers/learning-consolidation.js +12 -1
- package/dist/workflows/browser/workflow-loader.js +8 -5
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
- package/dist/cli/chunks/base-67DXSAYM.js +0 -2
- package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
- package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
- package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
- package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
- package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
- package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
- package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
- package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
- package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
- package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
- package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
- package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
- package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
- package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
- package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
- package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
- package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
- package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
- package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
- package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
- package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
- package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
- package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
- package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
- package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
- package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
- package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
- package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
- package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
- package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
- package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
- package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
- package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
- package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
- package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
- package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
- package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
- package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
- package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
- package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
- package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
- package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
- package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
- package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
- package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
- package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
- package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
- package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
- package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
|
@@ -11,6 +11,7 @@ import { createSkillsInstaller } from './skills-installer.js';
|
|
|
11
11
|
import { createAgentsInstaller } from './agents-installer.js';
|
|
12
12
|
import { createN8nInstaller } from './n8n-installer.js';
|
|
13
13
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
14
|
+
import { isNativeModuleLoadFailure, withNativeModuleRemedy } from '../shared/native-module-errors.js';
|
|
14
15
|
import { openDatabase } from '../shared/safe-db.js';
|
|
15
16
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
16
17
|
// ============================================================================
|
|
@@ -112,7 +113,7 @@ export async function initializePersistenceDatabase(projectRoot) {
|
|
|
112
113
|
const mod = await import('better-sqlite3');
|
|
113
114
|
Database = mod.default;
|
|
114
115
|
}
|
|
115
|
-
catch
|
|
116
|
+
catch {
|
|
116
117
|
throw new Error('SQLite persistence REQUIRED but better-sqlite3 is not installed.\n' +
|
|
117
118
|
'Install it with: npm install better-sqlite3\n' +
|
|
118
119
|
'If you see native compilation errors, ensure build tools are installed:\n' +
|
|
@@ -157,6 +158,9 @@ export async function initializePersistenceDatabase(projectRoot) {
|
|
|
157
158
|
return true;
|
|
158
159
|
}
|
|
159
160
|
catch (error) {
|
|
161
|
+
if (isNativeModuleLoadFailure(error)) {
|
|
162
|
+
throw new Error(`SQLite persistence initialization FAILED: ${toErrorMessage(withNativeModuleRemedy(error))}`, { cause: error });
|
|
163
|
+
}
|
|
160
164
|
throw new Error(`SQLite persistence initialization FAILED: ${error}\n` +
|
|
161
165
|
`Database path: ${dbPath}\n` +
|
|
162
166
|
'Ensure the directory is writable and has sufficient disk space.');
|
|
@@ -17,6 +17,8 @@ import { existsSync, mkdirSync } from 'fs';
|
|
|
17
17
|
import { join } from 'path';
|
|
18
18
|
import { BasePhase, } from './phase-interface.js';
|
|
19
19
|
import { getAQEVersion } from '../types.js';
|
|
20
|
+
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
21
|
+
import { isNativeModuleLoadFailure, withNativeModuleRemedy } from '../../shared/native-module-errors.js';
|
|
20
22
|
/**
|
|
21
23
|
* Database phase - initializes SQLite persistence via UnifiedMemoryManager
|
|
22
24
|
*/
|
|
@@ -106,6 +108,11 @@ export class DatabasePhase extends BasePhase {
|
|
|
106
108
|
};
|
|
107
109
|
}
|
|
108
110
|
catch (error) {
|
|
111
|
+
// A native-addon load failure (#1173) is not a disk/permission problem:
|
|
112
|
+
// report the cause and the install fix instead of the generic advice.
|
|
113
|
+
if (isNativeModuleLoadFailure(error)) {
|
|
114
|
+
throw new Error(`SQLite persistence initialization FAILED: ${toErrorMessage(withNativeModuleRemedy(error))}`, { cause: error });
|
|
115
|
+
}
|
|
109
116
|
throw new Error(`SQLite persistence initialization FAILED: ${error}\n` +
|
|
110
117
|
`Database path: ${dbPath}\n` +
|
|
111
118
|
'Ensure the directory is writable and has sufficient disk space.');
|
|
@@ -150,6 +150,29 @@ if (existsSync(pidFile) && isRegularOrAbsent(pidFile)) {
|
|
|
150
150
|
try { process.kill(pid, 0); console.log('Daemon already running (PID: ' + pid + ')'); process.exit(0); } catch {}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
// #1116: honour AQE_WORKERS_ENABLED, from the environment or else the project's
|
|
154
|
+
// .claude/settings.local.json or settings.json env (where \`aqe init
|
|
155
|
+
// --no-database\` writes it; the local file wins, as in Claude Code), the same
|
|
156
|
+
// falsy values as the MCP server. A JSON boolean counts as its string.
|
|
157
|
+
// Disabled means nothing is spawned.
|
|
158
|
+
function workersEnabledSetting() {
|
|
159
|
+
if (process.env.AQE_WORKERS_ENABLED !== undefined) return process.env.AQE_WORKERS_ENABLED;
|
|
160
|
+
for (const file of ['settings.local.json', 'settings.json']) {
|
|
161
|
+
try {
|
|
162
|
+
const settings = JSON.parse(readFileSync(join(projectRoot, '.claude', file), 'utf-8'));
|
|
163
|
+
const value = settings && settings.env && settings.env.AQE_WORKERS_ENABLED;
|
|
164
|
+
if (typeof value === 'string') return value;
|
|
165
|
+
if (typeof value === 'boolean') return String(value);
|
|
166
|
+
} catch { /* missing or unreadable: try the next file */ }
|
|
167
|
+
}
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const workersSetting = workersEnabledSetting();
|
|
171
|
+
if (workersSetting !== undefined && ['false', '0', 'off', 'no'].includes(workersSetting.trim().toLowerCase())) {
|
|
172
|
+
console.log('AQE v3 Worker Daemon not started: background workers are disabled (AQE_WORKERS_ENABLED=' + workersSetting + ')');
|
|
173
|
+
process.exit(0);
|
|
174
|
+
}
|
|
175
|
+
|
|
153
176
|
const ts = new Date().toISOString();
|
|
154
177
|
appendFileSync(logFile, '[' + ts + '] Starting AQE v3 Worker Daemon...\\n');
|
|
155
178
|
|
|
@@ -205,17 +228,38 @@ if (binCandidate && binCandidate.endsWith('bundle.js')) {
|
|
|
205
228
|
appendFileSync(logFile, '[' + ts + '] Using: ' + mcpCmd + ' ' + mcpArgs.join(' ') + '\\n');
|
|
206
229
|
|
|
207
230
|
// #1066: keep a user's AQE_WORKERS_ENABLED (for example false) instead of forcing it on.
|
|
208
|
-
const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED:
|
|
231
|
+
const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: workersSetting ?? 'true', AQE_HTTP_PORT: '0' };
|
|
209
232
|
const child = spawn(mcpCmd, mcpArgs, { cwd: projectRoot, env, detached: true, stdio: ['ignore', 'pipe', 'pipe'] });
|
|
210
233
|
child.stdout.on('data', d => appendFileSync(logFile, d));
|
|
211
234
|
child.stderr.on('data', d => appendFileSync(logFile, d));
|
|
235
|
+
let exited = null;
|
|
236
|
+
child.on('exit', (code, signal) => { exited = { code, signal }; });
|
|
237
|
+
// #1116: a command that cannot be started (no npx on PATH: spawn ENOENT) emits
|
|
238
|
+
// 'error' instead of 'exit'; without a handler the script crashed and left
|
|
239
|
+
// "undefined" in daemon.pid.
|
|
240
|
+
child.on('error', (error) => {
|
|
241
|
+
try { fs.unlinkSync(pidFile); } catch {}
|
|
242
|
+
appendFileSync(logFile, '[' + ts + '] Daemon could not be started: ' + error.message + '\\n');
|
|
243
|
+
console.error('AQE v3 Worker Daemon not started: ' + error.message + '; see ' + logFile);
|
|
244
|
+
process.exit(1);
|
|
245
|
+
});
|
|
212
246
|
child.unref();
|
|
213
247
|
|
|
214
|
-
writeFileSync(pidFile, String(child.pid));
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
248
|
+
if (child.pid !== undefined) writeFileSync(pidFile, String(child.pid));
|
|
249
|
+
// #1116: say "started" only if the server is still running a moment later.
|
|
250
|
+
setTimeout(() => {
|
|
251
|
+
if (exited) {
|
|
252
|
+
try { fs.unlinkSync(pidFile); } catch {}
|
|
253
|
+
appendFileSync(logFile, '[' + ts + '] Daemon exited right away (code ' + exited.code + ', signal ' + exited.signal + ')\\n');
|
|
254
|
+
console.error('AQE v3 Worker Daemon not started: the MCP server exited right away (code ' + exited.code + '); see ' + logFile);
|
|
255
|
+
process.exitCode = 1;
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
appendFileSync(logFile, '[' + ts + '] Daemon started with PID: ' + child.pid + '\\n');
|
|
259
|
+
console.log('AQE v3 Worker Daemon started (PID: ' + child.pid + ')');
|
|
260
|
+
console.log('Log file: ' + logFile);
|
|
261
|
+
console.log('To stop: node ' + join(workersDir, 'stop-daemon.cjs'));
|
|
262
|
+
}, 3000);
|
|
219
263
|
`;
|
|
220
264
|
writeFileIfChanged(daemonScriptPath, daemonScript);
|
|
221
265
|
// Also write a cross-platform stop script
|
|
@@ -13,6 +13,8 @@ import { BasePhase, } from './phase-interface.js';
|
|
|
13
13
|
import { openDatabase } from '../../shared/safe-db.js';
|
|
14
14
|
/** The `# <ISO timestamp>` header line written by configToYAML(). */
|
|
15
15
|
const CONFIG_TIMESTAMP_LINE = /^# \d{4}-\d{2}-\d{2}T[\d:.]+Z$/;
|
|
16
|
+
/** #1157: config keys that would reach Object.prototype through a plain object. */
|
|
17
|
+
const UNSAFE_YAML_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
16
18
|
/**
|
|
17
19
|
* Verification phase - verifies installation and writes markers
|
|
18
20
|
*/
|
|
@@ -173,8 +175,12 @@ export class VerificationPhase extends BasePhase {
|
|
|
173
175
|
// Top-level key (no indentation)
|
|
174
176
|
const topMatch = line.match(/^(\w+):\s*(.*)$/);
|
|
175
177
|
if (topMatch) {
|
|
176
|
-
|
|
178
|
+
// #1157: keys come from config.yaml; a `__proto__` section (and
|
|
179
|
+
// everything under it) is skipped instead of re-prototyping result.
|
|
180
|
+
currentSection = UNSAFE_YAML_KEYS.has(topMatch[1]) ? '' : topMatch[1];
|
|
177
181
|
currentSubSection = '';
|
|
182
|
+
if (!currentSection)
|
|
183
|
+
continue;
|
|
178
184
|
const value = topMatch[2].trim();
|
|
179
185
|
if (value && !value.startsWith('"')) {
|
|
180
186
|
// Simple value
|
|
@@ -191,9 +197,11 @@ export class VerificationPhase extends BasePhase {
|
|
|
191
197
|
// Second-level key (2-space indent)
|
|
192
198
|
const subMatch = line.match(/^ {2}(\w+):\s*(.*)$/);
|
|
193
199
|
if (subMatch && currentSection) {
|
|
194
|
-
currentSubSection = subMatch[1];
|
|
200
|
+
currentSubSection = UNSAFE_YAML_KEYS.has(subMatch[1]) ? '' : subMatch[1];
|
|
201
|
+
if (!currentSubSection)
|
|
202
|
+
continue;
|
|
195
203
|
const value = subMatch[2].trim();
|
|
196
|
-
if (!result[currentSection]) {
|
|
204
|
+
if (!Object.hasOwn(result, currentSection) || !result[currentSection]) {
|
|
197
205
|
result[currentSection] = {};
|
|
198
206
|
}
|
|
199
207
|
if (value) {
|
|
@@ -210,8 +218,10 @@ export class VerificationPhase extends BasePhase {
|
|
|
210
218
|
if (thirdMatch && currentSection && currentSubSection) {
|
|
211
219
|
const key = thirdMatch[1];
|
|
212
220
|
const value = thirdMatch[2].trim();
|
|
221
|
+
if (UNSAFE_YAML_KEYS.has(key))
|
|
222
|
+
continue;
|
|
213
223
|
const section = result[currentSection];
|
|
214
|
-
if (!section[currentSubSection]) {
|
|
224
|
+
if (!Object.hasOwn(section, currentSubSection) || !section[currentSubSection]) {
|
|
215
225
|
section[currentSubSection] = {};
|
|
216
226
|
}
|
|
217
227
|
if (typeof section[currentSubSection] === 'object' && !Array.isArray(section[currentSubSection])) {
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - Generates full env vars and v3 settings sections
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
11
|
+
import { getOwn, setOwn } from '../shared/utils/safe-record.js';
|
|
11
12
|
/**
|
|
12
13
|
* Create a one-time `.backup` of an existing settings.json before AQE modifies
|
|
13
14
|
* it — mirroring the CLAUDE.md backup convention.
|
|
@@ -75,22 +76,24 @@ export function isAqeHookEntry(entry) {
|
|
|
75
76
|
* 3. Preserve any hook types not in the new config
|
|
76
77
|
*/
|
|
77
78
|
export function mergeHooksSmart(existingHooks, newAqeHooks) {
|
|
79
|
+
// #1157: hook types come from the user's settings.json; read and write own
|
|
80
|
+
// entries only, so a type named `constructor` or `__proto__` is kept as-is.
|
|
78
81
|
const merged = {};
|
|
79
82
|
// Process hook types that have new AQE entries
|
|
80
83
|
for (const [hookType, newEntries] of Object.entries(newAqeHooks)) {
|
|
81
|
-
const existing = existingHooks
|
|
84
|
+
const existing = getOwn(existingHooks, hookType) || [];
|
|
82
85
|
// Keep only non-AQE entries from existing config
|
|
83
86
|
const userEntries = Array.isArray(existing)
|
|
84
87
|
? existing.filter((entry) => !isAqeHookEntry(entry))
|
|
85
88
|
: [];
|
|
86
89
|
// New AQE hooks go after user hooks (except PreToolUse guard which should be first)
|
|
87
|
-
merged
|
|
90
|
+
setOwn(merged, hookType, [...newEntries, ...userEntries]);
|
|
88
91
|
}
|
|
89
92
|
// Preserve hook types that are not in our new config (user's custom hook types)
|
|
90
93
|
for (const [hookType, hookArray] of Object.entries(existingHooks)) {
|
|
91
|
-
if (!merged
|
|
94
|
+
if (!Object.hasOwn(merged, hookType)) {
|
|
92
95
|
// This hook type isn't one we manage — keep it as-is
|
|
93
|
-
merged
|
|
96
|
+
setOwn(merged, hookType, hookArray);
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
return merged;
|
|
@@ -113,6 +113,7 @@ export declare class ExperienceReplay {
|
|
|
113
113
|
private prepared;
|
|
114
114
|
private initialized;
|
|
115
115
|
private initializationPromise;
|
|
116
|
+
private embedderUnavailableLogged;
|
|
116
117
|
private hnswIndex;
|
|
117
118
|
private idToExperienceId;
|
|
118
119
|
private experienceIdToHnswId;
|
|
@@ -150,6 +151,12 @@ export declare class ExperienceReplay {
|
|
|
150
151
|
* @returns The stored experience
|
|
151
152
|
*/
|
|
152
153
|
storeExperience(trajectory: Trajectory, strategy: string, tags?: string[]): Promise<Experience | null>;
|
|
154
|
+
/**
|
|
155
|
+
* #1022: embed text, or return null when no embedding runtime is available.
|
|
156
|
+
* The experience is then stored without a vector (backfilled at a later
|
|
157
|
+
* start that has an embedder) and similarity search finds no matches.
|
|
158
|
+
*/
|
|
159
|
+
private embedOrNull;
|
|
153
160
|
/**
|
|
154
161
|
* Get guidance for a new task based on similar experiences
|
|
155
162
|
*
|
|
@@ -60,6 +60,7 @@ export class ExperienceReplay {
|
|
|
60
60
|
prepared = new Map();
|
|
61
61
|
initialized = false;
|
|
62
62
|
initializationPromise = null;
|
|
63
|
+
embedderUnavailableLogged = false;
|
|
63
64
|
// Real HNSW index for O(log n) similarity search (150x-12,500x faster than linear scan)
|
|
64
65
|
hnswIndex;
|
|
65
66
|
// Mapping from HNSW numeric IDs to experience string IDs
|
|
@@ -399,7 +400,7 @@ export class ExperienceReplay {
|
|
|
399
400
|
.map(s => scrubReasoningBlocks(s.action));
|
|
400
401
|
// Generate embedding for similarity search
|
|
401
402
|
const embeddingText = `${task} ${strategy} ${keyActions.join(' ')}`;
|
|
402
|
-
const embedding = await
|
|
403
|
+
const embedding = (await this.embedOrNull(embeddingText)) ?? undefined;
|
|
403
404
|
const id = uuidv4();
|
|
404
405
|
const domain = trajectory.domain || 'test-generation';
|
|
405
406
|
const experience = {
|
|
@@ -456,6 +457,24 @@ export class ExperienceReplay {
|
|
|
456
457
|
}
|
|
457
458
|
return experience;
|
|
458
459
|
}
|
|
460
|
+
/**
|
|
461
|
+
* #1022: embed text, or return null when no embedding runtime is available.
|
|
462
|
+
* The experience is then stored without a vector (backfilled at a later
|
|
463
|
+
* start that has an embedder) and similarity search finds no matches.
|
|
464
|
+
*/
|
|
465
|
+
async embedOrNull(text) {
|
|
466
|
+
try {
|
|
467
|
+
return await computeRealEmbedding(text, this.config.embedding);
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
if (!this.embedderUnavailableLogged) {
|
|
471
|
+
this.embedderUnavailableLogged = true;
|
|
472
|
+
console.warn('[ExperienceReplay] No embedding runtime; experiences are stored without vectors ' +
|
|
473
|
+
'and similar-experience guidance is unavailable:', error instanceof Error ? error.message : error);
|
|
474
|
+
}
|
|
475
|
+
return null;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
459
478
|
/**
|
|
460
479
|
* Get guidance for a new task based on similar experiences
|
|
461
480
|
*
|
|
@@ -465,6 +484,13 @@ export class ExperienceReplay {
|
|
|
465
484
|
*/
|
|
466
485
|
async getGuidance(task, domain) {
|
|
467
486
|
this.ensureInitialized();
|
|
487
|
+
// #1022: the reservoir blend below picks experiences without looking at
|
|
488
|
+
// the query and gives them a coherence-derived similarity. Without an
|
|
489
|
+
// embedding of the query nothing measures relevance, so return no guidance
|
|
490
|
+
// rather than query-independent picks with a made-up similarity.
|
|
491
|
+
if (!(await this.embedOrNull(scrubReasoningBlocks(task)))) {
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
468
494
|
// Find similar experiences via HNSW
|
|
469
495
|
const similar = await this.findSimilarExperiences(task, domain);
|
|
470
496
|
// Blend in high-coherence experiences from reservoir buffer (R10, ADR-087)
|
|
@@ -546,7 +572,10 @@ export class ExperienceReplay {
|
|
|
546
572
|
// Generate embedding for the task
|
|
547
573
|
// ADR-099: scrub so query embeddings match the scrubbed stored embeddings
|
|
548
574
|
task = scrubReasoningBlocks(task);
|
|
549
|
-
const taskEmbedding = await
|
|
575
|
+
const taskEmbedding = await this.embedOrNull(task);
|
|
576
|
+
if (!taskEmbedding) {
|
|
577
|
+
return [];
|
|
578
|
+
}
|
|
550
579
|
// Create query embedding for HNSW search
|
|
551
580
|
const queryEmbedding = {
|
|
552
581
|
vector: taskEmbedding,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - Automatic strategy recommendations
|
|
16
16
|
* - Pattern quality improvement over time
|
|
17
17
|
*/
|
|
18
|
-
import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type RealQERoutingRequest, type RealQERoutingResult, type LearningOutcome } from '../../../learning/real-qe-reasoning-bank.js';
|
|
18
|
+
import { RealQEReasoningBank, type RealQEReasoningBankConfig, type RealQEPatternSearchResult, type PatternSearchStatus, 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';
|
|
@@ -183,6 +183,8 @@ export declare class EnhancedReasoningBankAdapter {
|
|
|
183
183
|
domain?: QEDomain;
|
|
184
184
|
minSimilarity?: number;
|
|
185
185
|
}): Promise<Result<RealQEPatternSearchResult[]>>;
|
|
186
|
+
/** #1022: whether pattern search uses vectors or text matching only. */
|
|
187
|
+
getPatternSearchStatus(): PatternSearchStatus;
|
|
186
188
|
/**
|
|
187
189
|
* Record a pattern outcome with evolution tracking
|
|
188
190
|
*/
|
|
@@ -297,6 +297,11 @@ export class EnhancedReasoningBankAdapter {
|
|
|
297
297
|
this.ensureInitialized();
|
|
298
298
|
return this.reasoningBank.searchQEPatterns(query, options);
|
|
299
299
|
}
|
|
300
|
+
/** #1022: whether pattern search uses vectors or text matching only. */
|
|
301
|
+
getPatternSearchStatus() {
|
|
302
|
+
this.ensureInitialized();
|
|
303
|
+
return this.reasoningBank.getPatternSearchStatus();
|
|
304
|
+
}
|
|
300
305
|
/**
|
|
301
306
|
* Record a pattern outcome with evolution tracking
|
|
302
307
|
*/
|
|
@@ -210,7 +210,7 @@ export class AgentBrowserClient {
|
|
|
210
210
|
// Extra safety: also terminate via executor if we have one
|
|
211
211
|
if (this.executor) {
|
|
212
212
|
try {
|
|
213
|
-
this.executor.terminateDaemon();
|
|
213
|
+
await this.executor.terminateDaemon();
|
|
214
214
|
}
|
|
215
215
|
catch (error) {
|
|
216
216
|
// Non-critical: best effort daemon termination
|
|
@@ -251,7 +251,7 @@ export class AgentBrowserClient {
|
|
|
251
251
|
async navigate(url) {
|
|
252
252
|
const startTime = Date.now();
|
|
253
253
|
try {
|
|
254
|
-
const result = this.executor.open(url);
|
|
254
|
+
const result = await this.executor.open(url);
|
|
255
255
|
if (!result.success) {
|
|
256
256
|
return err(new BrowserError(result.error ?? 'Navigation failed', 'NAVIGATION_FAILED', 'agent-browser'));
|
|
257
257
|
}
|
|
@@ -260,7 +260,7 @@ export class AgentBrowserClient {
|
|
|
260
260
|
this.sessionManager.updateSessionUrl(this.currentSessionId, url);
|
|
261
261
|
}
|
|
262
262
|
// Get page info for result
|
|
263
|
-
const evalResult = this.executor.eval('JSON.stringify({ title: document.title, url: window.location.href })');
|
|
263
|
+
const evalResult = await this.executor.eval('JSON.stringify({ title: document.title, url: window.location.href })');
|
|
264
264
|
const pageInfo = evalResult.success && evalResult.data
|
|
265
265
|
? typeof evalResult.data === 'string'
|
|
266
266
|
? safeJsonParse(evalResult.data)
|
|
@@ -282,7 +282,7 @@ export class AgentBrowserClient {
|
|
|
282
282
|
*/
|
|
283
283
|
async reload() {
|
|
284
284
|
try {
|
|
285
|
-
const result = this.executor.eval('window.location.reload()');
|
|
285
|
+
const result = await this.executor.eval('window.location.reload()');
|
|
286
286
|
if (!result.success) {
|
|
287
287
|
return err(new BrowserError(result.error ?? 'Reload failed', 'RELOAD_FAILED', 'agent-browser'));
|
|
288
288
|
}
|
|
@@ -297,7 +297,7 @@ export class AgentBrowserClient {
|
|
|
297
297
|
*/
|
|
298
298
|
async goBack() {
|
|
299
299
|
try {
|
|
300
|
-
const result = this.executor.eval('window.history.back()');
|
|
300
|
+
const result = await this.executor.eval('window.history.back()');
|
|
301
301
|
if (!result.success) {
|
|
302
302
|
return err(new BrowserError(result.error ?? 'Go back failed', 'HISTORY_FAILED', 'agent-browser'));
|
|
303
303
|
}
|
|
@@ -312,7 +312,7 @@ export class AgentBrowserClient {
|
|
|
312
312
|
*/
|
|
313
313
|
async goForward() {
|
|
314
314
|
try {
|
|
315
|
-
const result = this.executor.eval('window.history.forward()');
|
|
315
|
+
const result = await this.executor.eval('window.history.forward()');
|
|
316
316
|
if (!result.success) {
|
|
317
317
|
return err(new BrowserError(result.error ?? 'Go forward failed', 'HISTORY_FAILED', 'agent-browser'));
|
|
318
318
|
}
|
|
@@ -331,7 +331,7 @@ export class AgentBrowserClient {
|
|
|
331
331
|
async click(target) {
|
|
332
332
|
try {
|
|
333
333
|
const resolvedTarget = resolveTarget(target);
|
|
334
|
-
const result = this.executor.click(resolvedTarget);
|
|
334
|
+
const result = await this.executor.click(resolvedTarget);
|
|
335
335
|
if (!result.success) {
|
|
336
336
|
return err(new BrowserElementNotFoundError('agent-browser', target, new Error(result.error)));
|
|
337
337
|
}
|
|
@@ -347,7 +347,7 @@ export class AgentBrowserClient {
|
|
|
347
347
|
async fill(target, text) {
|
|
348
348
|
try {
|
|
349
349
|
const resolvedTarget = resolveTarget(target);
|
|
350
|
-
const result = this.executor.fill(resolvedTarget, text);
|
|
350
|
+
const result = await this.executor.fill(resolvedTarget, text);
|
|
351
351
|
if (!result.success) {
|
|
352
352
|
return err(new BrowserElementNotFoundError('agent-browser', target, new Error(result.error)));
|
|
353
353
|
}
|
|
@@ -363,7 +363,7 @@ export class AgentBrowserClient {
|
|
|
363
363
|
async getText(target) {
|
|
364
364
|
try {
|
|
365
365
|
const resolvedTarget = resolveTarget(target);
|
|
366
|
-
const result = this.executor.getText(resolvedTarget);
|
|
366
|
+
const result = await this.executor.getText(resolvedTarget);
|
|
367
367
|
if (!result.success) {
|
|
368
368
|
return err(new BrowserElementNotFoundError('agent-browser', target, new Error(result.error)));
|
|
369
369
|
}
|
|
@@ -400,7 +400,7 @@ export class AgentBrowserClient {
|
|
|
400
400
|
async isVisible(target) {
|
|
401
401
|
try {
|
|
402
402
|
const resolvedTarget = resolveTarget(target);
|
|
403
|
-
const result = this.executor.isVisible(resolvedTarget);
|
|
403
|
+
const result = await this.executor.isVisible(resolvedTarget);
|
|
404
404
|
if (!result.success) {
|
|
405
405
|
// Element not found means not visible
|
|
406
406
|
return ok(false);
|
|
@@ -419,12 +419,12 @@ export class AgentBrowserClient {
|
|
|
419
419
|
*/
|
|
420
420
|
async screenshot(options) {
|
|
421
421
|
try {
|
|
422
|
-
const result = this.executor.screenshot(options?.path, options?.fullPage);
|
|
422
|
+
const result = await this.executor.screenshot(options?.path, options?.fullPage);
|
|
423
423
|
if (!result.success) {
|
|
424
424
|
return err(new BrowserError(result.error ?? 'Screenshot failed', 'SCREENSHOT_FAILED', 'agent-browser'));
|
|
425
425
|
}
|
|
426
426
|
// Get viewport dimensions
|
|
427
|
-
const dimensionsResult = this.executor.eval('JSON.stringify({ width: window.innerWidth, height: window.innerHeight })');
|
|
427
|
+
const dimensionsResult = await this.executor.eval('JSON.stringify({ width: window.innerWidth, height: window.innerHeight })');
|
|
428
428
|
let dimensions = { width: 1280, height: 720 };
|
|
429
429
|
if (dimensionsResult.success && dimensionsResult.data) {
|
|
430
430
|
const parsed = typeof dimensionsResult.data === 'string'
|
|
@@ -451,7 +451,7 @@ export class AgentBrowserClient {
|
|
|
451
451
|
*/
|
|
452
452
|
async evaluate(script) {
|
|
453
453
|
try {
|
|
454
|
-
const result = this.executor.eval(script);
|
|
454
|
+
const result = await this.executor.eval(script);
|
|
455
455
|
if (!result.success) {
|
|
456
456
|
return err(new BrowserError(result.error ?? 'Evaluation failed', 'EVAL_FAILED', 'agent-browser'));
|
|
457
457
|
}
|
|
@@ -487,7 +487,7 @@ export class AgentBrowserClient {
|
|
|
487
487
|
*/
|
|
488
488
|
async getSnapshot(options) {
|
|
489
489
|
try {
|
|
490
|
-
const result = this.executor.snapshot({
|
|
490
|
+
const result = await this.executor.snapshot({
|
|
491
491
|
interactive: options?.interactive,
|
|
492
492
|
depth: options?.depth,
|
|
493
493
|
});
|
|
@@ -504,8 +504,8 @@ export class AgentBrowserClient {
|
|
|
504
504
|
parsed = this.snapshotParser.parse(String(result.data));
|
|
505
505
|
}
|
|
506
506
|
// Get current URL and title
|
|
507
|
-
const urlResult = this.executor.eval('window.location.href');
|
|
508
|
-
const titleResult = this.executor.eval('document.title');
|
|
507
|
+
const urlResult = await this.executor.eval('window.location.href');
|
|
508
|
+
const titleResult = await this.executor.eval('document.title');
|
|
509
509
|
if (urlResult.success) {
|
|
510
510
|
parsed.url = String(urlResult.data);
|
|
511
511
|
}
|
|
@@ -578,7 +578,7 @@ export class AgentBrowserClient {
|
|
|
578
578
|
body: response.body,
|
|
579
579
|
headers: response.headers,
|
|
580
580
|
};
|
|
581
|
-
const result = this.executor.mockRoute(urlPattern, mockBody);
|
|
581
|
+
const result = await this.executor.mockRoute(urlPattern, mockBody);
|
|
582
582
|
if (!result.success) {
|
|
583
583
|
return err(new BrowserError(result.error ?? 'Mock route failed', 'MOCK_ROUTE_FAILED', 'agent-browser'));
|
|
584
584
|
}
|
|
@@ -593,7 +593,7 @@ export class AgentBrowserClient {
|
|
|
593
593
|
*/
|
|
594
594
|
async abortRoute(urlPattern) {
|
|
595
595
|
try {
|
|
596
|
-
const result = this.executor.abortRoute(urlPattern);
|
|
596
|
+
const result = await this.executor.abortRoute(urlPattern);
|
|
597
597
|
if (!result.success) {
|
|
598
598
|
return err(new BrowserError(result.error ?? 'Abort route failed', 'ABORT_ROUTE_FAILED', 'agent-browser'));
|
|
599
599
|
}
|
|
@@ -608,7 +608,7 @@ export class AgentBrowserClient {
|
|
|
608
608
|
*/
|
|
609
609
|
async clearRoutes() {
|
|
610
610
|
try {
|
|
611
|
-
const result = this.executor.clearRoutes();
|
|
611
|
+
const result = await this.executor.clearRoutes();
|
|
612
612
|
if (!result.success) {
|
|
613
613
|
return err(new BrowserError(result.error ?? 'Clear routes failed', 'CLEAR_ROUTES_FAILED', 'agent-browser'));
|
|
614
614
|
}
|
|
@@ -626,7 +626,7 @@ export class AgentBrowserClient {
|
|
|
626
626
|
*/
|
|
627
627
|
async setDevice(deviceName) {
|
|
628
628
|
try {
|
|
629
|
-
const result = this.executor.setDevice(deviceName);
|
|
629
|
+
const result = await this.executor.setDevice(deviceName);
|
|
630
630
|
if (!result.success) {
|
|
631
631
|
return err(new BrowserError(result.error ?? 'Set device failed', 'SET_DEVICE_FAILED', 'agent-browser'));
|
|
632
632
|
}
|
|
@@ -641,7 +641,7 @@ export class AgentBrowserClient {
|
|
|
641
641
|
*/
|
|
642
642
|
async setViewport(width, height) {
|
|
643
643
|
try {
|
|
644
|
-
const result = this.executor.setViewport(width, height);
|
|
644
|
+
const result = await this.executor.setViewport(width, height);
|
|
645
645
|
if (!result.success) {
|
|
646
646
|
return err(new BrowserError(result.error ?? 'Set viewport failed', 'SET_VIEWPORT_FAILED', 'agent-browser'));
|
|
647
647
|
}
|
|
@@ -659,7 +659,7 @@ export class AgentBrowserClient {
|
|
|
659
659
|
*/
|
|
660
660
|
async saveState(path) {
|
|
661
661
|
try {
|
|
662
|
-
const result = this.executor.saveState(path);
|
|
662
|
+
const result = await this.executor.saveState(path);
|
|
663
663
|
if (!result.success) {
|
|
664
664
|
return err(new BrowserError(result.error ?? 'Save state failed', 'SAVE_STATE_FAILED', 'agent-browser'));
|
|
665
665
|
}
|
|
@@ -674,7 +674,7 @@ export class AgentBrowserClient {
|
|
|
674
674
|
*/
|
|
675
675
|
async loadState(path) {
|
|
676
676
|
try {
|
|
677
|
-
const result = this.executor.loadState(path);
|
|
677
|
+
const result = await this.executor.loadState(path);
|
|
678
678
|
if (!result.success) {
|
|
679
679
|
return err(new BrowserError(result.error ?? 'Load state failed', 'LOAD_STATE_FAILED', 'agent-browser'));
|
|
680
680
|
}
|
|
@@ -693,7 +693,7 @@ export class AgentBrowserClient {
|
|
|
693
693
|
async waitForElement(target, timeout) {
|
|
694
694
|
try {
|
|
695
695
|
const resolvedTarget = resolveTarget(target);
|
|
696
|
-
const result = this.executor.waitForElement(resolvedTarget, timeout);
|
|
696
|
+
const result = await this.executor.waitForElement(resolvedTarget, timeout);
|
|
697
697
|
if (!result.success) {
|
|
698
698
|
return err(new BrowserTimeoutError('agent-browser', `waitForElement(${resolvedTarget})`, new Error(result.error)));
|
|
699
699
|
}
|
|
@@ -711,7 +711,7 @@ export class AgentBrowserClient {
|
|
|
711
711
|
// The timeout parameter is ignored by the current CLI implementation
|
|
712
712
|
// but we accept it for interface compatibility
|
|
713
713
|
void timeout;
|
|
714
|
-
const result = this.executor.waitForText(text);
|
|
714
|
+
const result = await this.executor.waitForText(text);
|
|
715
715
|
if (!result.success) {
|
|
716
716
|
return err(new BrowserTimeoutError('agent-browser', `waitForText("${text}")`, new Error(result.error)));
|
|
717
717
|
}
|
|
@@ -728,7 +728,7 @@ export class AgentBrowserClient {
|
|
|
728
728
|
try {
|
|
729
729
|
// The timeout parameter is ignored by the current CLI implementation
|
|
730
730
|
void timeout;
|
|
731
|
-
const result = this.executor.waitForUrl(pattern);
|
|
731
|
+
const result = await this.executor.waitForUrl(pattern);
|
|
732
732
|
if (!result.success) {
|
|
733
733
|
return err(new BrowserTimeoutError('agent-browser', `waitForUrl("${pattern}")`, new Error(result.error)));
|
|
734
734
|
}
|
|
@@ -745,7 +745,7 @@ export class AgentBrowserClient {
|
|
|
745
745
|
try {
|
|
746
746
|
// The timeout parameter is ignored by the current CLI implementation
|
|
747
747
|
void timeout;
|
|
748
|
-
const result = this.executor.waitForNetworkIdle();
|
|
748
|
+
const result = await this.executor.waitForNetworkIdle();
|
|
749
749
|
if (!result.success) {
|
|
750
750
|
return err(new BrowserTimeoutError('agent-browser', 'waitForNetworkIdle', new Error(result.error)));
|
|
751
751
|
}
|
|
@@ -766,7 +766,7 @@ export class AgentBrowserClient {
|
|
|
766
766
|
*/
|
|
767
767
|
async startTrace() {
|
|
768
768
|
try {
|
|
769
|
-
const result = this.executor.startTrace();
|
|
769
|
+
const result = await this.executor.startTrace();
|
|
770
770
|
if (!result.success) {
|
|
771
771
|
return err(new BrowserError(result.error ?? 'Start trace failed', 'START_TRACE_FAILED', 'agent-browser'));
|
|
772
772
|
}
|
|
@@ -784,7 +784,7 @@ export class AgentBrowserClient {
|
|
|
784
784
|
*/
|
|
785
785
|
async stopTrace(outputPath) {
|
|
786
786
|
try {
|
|
787
|
-
const result = this.executor.stopTrace(outputPath);
|
|
787
|
+
const result = await this.executor.stopTrace(outputPath);
|
|
788
788
|
if (!result.success) {
|
|
789
789
|
return err(new BrowserError(result.error ?? 'Stop trace failed', 'STOP_TRACE_FAILED', 'agent-browser'));
|
|
790
790
|
}
|
|
@@ -815,28 +815,13 @@ export function createAgentBrowserClient(config) {
|
|
|
815
815
|
* Only use in test environments.
|
|
816
816
|
*/
|
|
817
817
|
export async function cleanupAllBrowserProcesses() {
|
|
818
|
-
const {
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
catch (error) {
|
|
827
|
-
// Non-critical: daemon cleanup errors
|
|
828
|
-
console.debug('[AgentBrowserClient] Daemon cleanup error:', error instanceof Error ? error.message : error);
|
|
829
|
-
}
|
|
830
|
-
try {
|
|
831
|
-
// Kill chromium headless shell processes
|
|
832
|
-
execSync('pkill -9 -f "chromium_headless_shell\\|headless_shell" 2>/dev/null || true', {
|
|
833
|
-
timeout: 5000,
|
|
834
|
-
stdio: 'ignore'
|
|
835
|
-
});
|
|
836
|
-
}
|
|
837
|
-
catch (error) {
|
|
838
|
-
// Non-critical: chromium cleanup errors
|
|
839
|
-
console.debug('[AgentBrowserClient] Chromium cleanup error:', error instanceof Error ? error.message : error);
|
|
840
|
-
}
|
|
818
|
+
const { runTestRunnerProcess } = await import('../../../shared/test-runner-process.js');
|
|
819
|
+
// pkill exits 1 when nothing matched; cleanup is best effort either way
|
|
820
|
+
const pkill = async (pattern) => {
|
|
821
|
+
await runTestRunnerProcess('pkill', ['-9', '-f', pattern], { cwd: process.cwd(), timeout: 5000 });
|
|
822
|
+
};
|
|
823
|
+
// Kill agent-browser daemons, then chromium headless shell processes
|
|
824
|
+
await pkill('agent-browser.*daemon');
|
|
825
|
+
await pkill('chromium_headless_shell\\|headless_shell');
|
|
841
826
|
}
|
|
842
827
|
//# sourceMappingURL=client.js.map
|