agentic-qe 3.14.1 → 3.14.3
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 +109 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-AKQYU6UH.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-OY5Y2CUM.js → agent-booster-wasm-TQOMLWWX.js} +2 -2
- package/dist/cli/chunks/{agent-handler-TUOH55LD.js → agent-handler-Q3SEMMI2.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-XM3IYKT3.js → agent-memory-branch-SJXAQSZI.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-MICRPL3N.js +2 -0
- package/dist/cli/chunks/{arena-DOCLIEBL.js → arena-7RC7TBGW.js} +4 -4
- package/dist/cli/chunks/{arena-UMFJZKG7.js → arena-UPB7TKUY.js} +2 -2
- package/dist/cli/chunks/{audit-KZLU5VLW.js → audit-IXN5R4WB.js} +3 -3
- package/dist/cli/chunks/base-DZK36ITB.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-MIEZBNUI.js → better-sqlite3-RP4DEGK3.js} +2 -2
- package/dist/cli/chunks/{brain-handler-6PZN46B7.js → brain-handler-H5OVZ22L.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-XCETHA4F.js → branch-enumerator-VPRWDGFJ.js} +2 -2
- package/dist/cli/chunks/{browser-UEXISDCJ.js → browser-B6E7JPPJ.js} +2 -2
- package/dist/cli/chunks/browser-workflow-ADK54DOE.js +2 -0
- package/dist/cli/chunks/{chunk-PS6Y662P.js → chunk-26GM5CWD.js} +3 -3
- package/dist/cli/chunks/{chunk-IGRTQ6VT.js → chunk-2GNRW3OD.js} +2 -2
- package/dist/cli/chunks/{chunk-QIY43XQJ.js → chunk-2IGT5WNQ.js} +1 -1
- package/dist/cli/chunks/{chunk-LSXQPMPI.js → chunk-2WT7AKKK.js} +2 -2
- package/dist/cli/chunks/{chunk-5F5V4QYU.js → chunk-33VPWGCM.js} +3 -3
- package/dist/cli/chunks/{chunk-KXMW7XTJ.js → chunk-37BASGWC.js} +2 -2
- package/dist/cli/chunks/{chunk-5KP62DC3.js → chunk-3ABRGG3C.js} +2 -2
- package/dist/cli/chunks/{chunk-T7XYQX5G.js → chunk-3P6NCFI2.js} +2 -2
- package/dist/cli/chunks/{chunk-EEJP3WTQ.js → chunk-42VSQ2MX.js} +3 -3
- package/dist/cli/chunks/chunk-44WISFTU.js +2 -0
- package/dist/cli/chunks/{chunk-5T6PAUZD.js → chunk-4C6UJIHB.js} +1 -1
- package/dist/cli/chunks/{chunk-5TYGSQOL.js → chunk-4JBFJTHJ.js} +1 -1
- package/dist/cli/chunks/{chunk-FH7SCX2I.js → chunk-4OUPCTBS.js} +2 -2
- package/dist/cli/chunks/{chunk-UUE5CBZQ.js → chunk-4Q35TI6Z.js} +2 -2
- package/dist/cli/chunks/{chunk-HJD52N32.js → chunk-4RP5VUBI.js} +2 -2
- package/dist/cli/chunks/{chunk-GRVR3Y6I.js → chunk-4TXAP3YH.js} +1 -1
- package/dist/cli/chunks/{chunk-IIBXGHZT.js → chunk-4UDZLD42.js} +2 -2
- package/dist/cli/chunks/{chunk-GO66DCIZ.js → chunk-4W7QVUNO.js} +2 -2
- package/dist/cli/chunks/{chunk-AESYVAPH.js → chunk-4XPPMADQ.js} +2 -2
- package/dist/cli/chunks/{chunk-3FFMUB3B.js → chunk-527HQAY7.js} +2 -2
- package/dist/cli/chunks/chunk-5BLFXQEB.js +96 -0
- package/dist/cli/chunks/{chunk-QMTBWHGR.js → chunk-5DFHE4H5.js} +3 -3
- package/dist/cli/chunks/{chunk-AZUC7E5S.js → chunk-5F6DWHQG.js} +2 -2
- package/dist/cli/chunks/{chunk-6HMNN2Y2.js → chunk-5FOZO7KM.js} +81 -65
- package/dist/cli/chunks/{chunk-L4WATX6B.js → chunk-5IAB5NRZ.js} +2 -2
- package/dist/cli/chunks/{chunk-JMULRLD4.js → chunk-5P3G6ZW4.js} +1 -1
- package/dist/cli/chunks/{chunk-ND6JBUVH.js → chunk-5Y5TC6BY.js} +2 -2
- package/dist/cli/chunks/{chunk-DKSLJZVA.js → chunk-6F2RM6X2.js} +1 -1
- package/dist/cli/chunks/{chunk-J7VAD4RG.js → chunk-72UJXEKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-RCHDSUVU.js → chunk-74PK3NEW.js} +2 -2
- package/dist/cli/chunks/{chunk-FHBGALBG.js → chunk-7BUERZYL.js} +2 -2
- package/dist/cli/chunks/{chunk-IYB3GRXF.js → chunk-7FYMDKQH.js} +174 -169
- package/dist/cli/chunks/{chunk-CBWF42ET.js → chunk-7G6UX2QN.js} +2 -2
- package/dist/cli/chunks/{chunk-GH3NJOTC.js → chunk-7JQHPANT.js} +3 -3
- package/dist/cli/chunks/{chunk-J2VF7ZO7.js → chunk-7SLAZAVU.js} +2 -2
- package/dist/cli/chunks/{chunk-GYTWUOKU.js → chunk-7Y2CEXRS.js} +4 -4
- package/dist/cli/chunks/{chunk-7AF55H2D.js → chunk-AB4U6ZNI.js} +2 -2
- package/dist/cli/chunks/chunk-AWNYEAGB.js +2 -0
- package/dist/cli/chunks/chunk-B2ZONZPZ.js +5 -0
- package/dist/cli/chunks/{chunk-FZ47ZCRL.js → chunk-B5XFDFBT.js} +1 -1
- package/dist/cli/chunks/{chunk-TLD727EF.js → chunk-B7SWW5A6.js} +2 -2
- package/dist/cli/chunks/chunk-BN7DKW5D.js +2 -0
- package/dist/cli/chunks/{chunk-UWRMPRY5.js → chunk-C46DMCWF.js} +1 -1
- package/dist/cli/chunks/{chunk-5NSSJUWW.js → chunk-CB5JPRIZ.js} +2 -2
- package/dist/cli/chunks/{chunk-A6RB34Y6.js → chunk-CBOPBYPU.js} +1 -1
- package/dist/cli/chunks/{chunk-FRRRDCXY.js → chunk-CR3QGHVN.js} +2 -2
- package/dist/cli/chunks/{chunk-J33LKXVH.js → chunk-D4Z2N74A.js} +1 -1
- package/dist/cli/chunks/{chunk-HKU5PPS7.js → chunk-DBA3N742.js} +1 -1
- package/dist/cli/chunks/{chunk-JJ4GUO4K.js → chunk-DX3C5HPN.js} +1 -1
- package/dist/cli/chunks/{chunk-NNJ63W77.js → chunk-E3FBW6G2.js} +1 -1
- package/dist/cli/chunks/{chunk-6Z6Y3YBX.js → chunk-ELU4IC3I.js} +1 -1
- package/dist/cli/chunks/{chunk-MFAN5W27.js → chunk-EY4OQHU3.js} +1 -1
- package/dist/cli/chunks/{chunk-S53ZUAVI.js → chunk-F67AV5P2.js} +2 -2
- package/dist/cli/chunks/chunk-FD2JFEQC.js +2 -0
- package/dist/cli/chunks/chunk-FKG5OQFT.js +2 -0
- package/dist/cli/chunks/{chunk-RXPHQ4ZE.js → chunk-FUE6LL72.js} +2 -2
- package/dist/cli/chunks/{chunk-HPQU6XZH.js → chunk-G5C2XVZC.js} +1 -1
- package/dist/cli/chunks/{chunk-N22LMACN.js → chunk-G6DCESPU.js} +2 -2
- package/dist/cli/chunks/{chunk-VUXHJPUS.js → chunk-G6ZHTF42.js} +2 -2
- package/dist/cli/chunks/{chunk-QM6EJHP5.js → chunk-GNTVFN7D.js} +1 -1
- package/dist/cli/chunks/{chunk-B6Y6AF4M.js → chunk-H5ZRV5K5.js} +2 -2
- package/dist/cli/chunks/{chunk-X5G3UDWP.js → chunk-H6XBM2LY.js} +2 -2
- package/dist/cli/chunks/{chunk-KXTN3FR4.js → chunk-HOQQCY2K.js} +2 -2
- package/dist/cli/chunks/{chunk-NAJCQJSK.js → chunk-HRUU7E3D.js} +2 -2
- package/dist/cli/chunks/{chunk-ODNLKYOM.js → chunk-HXE5NBJG.js} +1 -1
- package/dist/cli/chunks/{chunk-CCZZZBAO.js → chunk-I4NDQGKP.js} +2 -2
- package/dist/cli/chunks/{chunk-SEKOMKNG.js → chunk-IFFZR6GY.js} +1 -1
- package/dist/cli/chunks/{chunk-WFJKLM6Z.js → chunk-IKIITGU5.js} +3 -3
- package/dist/cli/chunks/{chunk-PYAH4K2U.js → chunk-IP7NSFQQ.js} +2 -2
- package/dist/cli/chunks/{chunk-3BRR2FLH.js → chunk-IQEJGZV6.js} +3 -3
- package/dist/cli/chunks/{chunk-HRUQWABO.js → chunk-IU4EBTA2.js} +3 -3
- package/dist/cli/chunks/{chunk-5Y2QFSVZ.js → chunk-JBB7E26R.js} +2 -2
- package/dist/cli/chunks/{chunk-ZAHCVRR7.js → chunk-JRYZKBY2.js} +2 -2
- package/dist/cli/chunks/{chunk-PMUF7WU6.js → chunk-JV4FZUE7.js} +2 -2
- package/dist/cli/chunks/{chunk-PS5NIMWJ.js → chunk-KF63AYXD.js} +2 -2
- package/dist/cli/chunks/{chunk-F7TRO2OM.js → chunk-KPMGTVB4.js} +1 -1
- package/dist/cli/chunks/chunk-L2GKMBDP.js +2 -0
- package/dist/cli/chunks/{chunk-LMPK63PO.js → chunk-LHGNNZ76.js} +3 -3
- package/dist/cli/chunks/{chunk-HBAQVJDP.js → chunk-LKN7JQTW.js} +2 -2
- package/dist/cli/chunks/{chunk-JZUWPDVS.js → chunk-LLVGTEHU.js} +1 -1
- package/dist/cli/chunks/{chunk-7XL2D56F.js → chunk-LS3EUMBP.js} +6 -6
- package/dist/cli/chunks/{chunk-MDLLEUFN.js → chunk-LTBCAFTZ.js} +3 -3
- package/dist/cli/chunks/{chunk-S4WIAKPL.js → chunk-LVLBIKJD.js} +1 -1
- package/dist/cli/chunks/{chunk-ERTGGFXZ.js → chunk-MDZ6RRLX.js} +2 -2
- package/dist/cli/chunks/{chunk-OBLHI4HA.js → chunk-MWWAMDHI.js} +1 -1
- package/dist/cli/chunks/{chunk-45S5553E.js → chunk-MXMFGSWR.js} +2 -2
- package/dist/cli/chunks/{chunk-HCCILQGN.js → chunk-N4H2QOT5.js} +2 -2
- package/dist/cli/chunks/{chunk-L66BWYQH.js → chunk-NBWQBQO5.js} +1 -1
- package/dist/cli/chunks/{chunk-RYHCYTFE.js → chunk-NN76NTOX.js} +1 -1
- package/dist/cli/chunks/{chunk-75SC3GEX.js → chunk-NTSXHZTC.js} +2 -2
- package/dist/cli/chunks/{chunk-PZZX57ZA.js → chunk-OV5EZO3U.js} +2 -2
- package/dist/cli/chunks/{chunk-7GF6IRSU.js → chunk-OVDKWCD7.js} +2 -2
- package/dist/cli/chunks/{chunk-DFXQLHQM.js → chunk-OVPJQWHW.js} +2 -2
- package/dist/cli/chunks/{chunk-Y63V33M6.js → chunk-OY7MLMEX.js} +5 -5
- package/dist/cli/chunks/{chunk-LJ63HPPN.js → chunk-OYMLHX2B.js} +1 -1
- package/dist/cli/chunks/{chunk-FPBQ7BXU.js → chunk-PI74GOE4.js} +2 -2
- package/dist/cli/chunks/{chunk-LQDFWLKK.js → chunk-PZTVH2AS.js} +2 -2
- package/dist/cli/chunks/{chunk-UCJEAK7D.js → chunk-QLWNXBRU.js} +2 -2
- package/dist/cli/chunks/{chunk-O7KF3GBV.js → chunk-R2AFVFRF.js} +1 -1
- package/dist/cli/chunks/{chunk-TF33GKWA.js → chunk-RKJZWWB7.js} +2 -2
- package/dist/cli/chunks/{chunk-FOAFRC2W.js → chunk-ROX7NLS4.js} +2 -2
- package/dist/cli/chunks/{chunk-OBKMLOHU.js → chunk-RTJ2M6V6.js} +2 -2
- package/dist/cli/chunks/{chunk-7AYTM426.js → chunk-SG47AXJG.js} +1 -1
- package/dist/cli/chunks/{chunk-3AYNHOWS.js → chunk-SGXSB7YO.js} +1 -1
- package/dist/cli/chunks/{chunk-Z5YU2TDS.js → chunk-SHGKY3QB.js} +2 -2
- package/dist/cli/chunks/{chunk-TT7DF2GX.js → chunk-SJPZSCZP.js} +2 -2
- package/dist/cli/chunks/{chunk-RUEHSOE6.js → chunk-SQ3PPISY.js} +1 -1
- package/dist/cli/chunks/{chunk-NEEZ6M4W.js → chunk-STRDSVH3.js} +2 -2
- package/dist/cli/chunks/{chunk-DKXSJDII.js → chunk-T35GZXTU.js} +2 -2
- package/dist/cli/chunks/{chunk-KHUO4NCW.js → chunk-T62DH4GG.js} +2 -2
- package/dist/cli/chunks/{chunk-6YIMLUH6.js → chunk-TFHQE6NK.js} +2 -2
- package/dist/cli/chunks/{chunk-ZC3HC6FO.js → chunk-TGLAWI62.js} +1 -1
- package/dist/cli/chunks/{chunk-4MT62HKK.js → chunk-TISSZFHO.js} +1 -1
- package/dist/cli/chunks/{chunk-3XRXUVUI.js → chunk-TJEIOE7F.js} +1 -1
- package/dist/cli/chunks/{chunk-TQ2JZVZ3.js → chunk-TTMHIOQ3.js} +2 -2
- package/dist/cli/chunks/{chunk-VEWYUEVY.js → chunk-UHQY3GK7.js} +2 -2
- package/dist/cli/chunks/{chunk-MZ2PJUN6.js → chunk-UMENRGHK.js} +2 -2
- package/dist/cli/chunks/{chunk-H2DX36SC.js → chunk-UMNYF5EZ.js} +2 -2
- package/dist/cli/chunks/{chunk-SZRDEPUY.js → chunk-UTVRQEZM.js} +3 -3
- package/dist/cli/chunks/{chunk-4ZLFUO4I.js → chunk-UYJHYMEQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6DDMHZWH.js → chunk-V4AOVDCJ.js} +2 -2
- package/dist/cli/chunks/{chunk-CGDW47WP.js → chunk-VIDBBB6F.js} +2 -2
- package/dist/cli/chunks/{chunk-6B77GPWL.js → chunk-VWNHKYK7.js} +2 -2
- package/dist/cli/chunks/{chunk-EPBWFTHH.js → chunk-WYMGK5DX.js} +2 -2
- package/dist/cli/chunks/{chunk-3WSH4HD2.js → chunk-XA7CG3LH.js} +2 -2
- package/dist/cli/chunks/{chunk-FFRKTZYP.js → chunk-XX7HUSX2.js} +2 -2
- package/dist/cli/chunks/{chunk-PMREFRPP.js → chunk-XXCYQXK3.js} +2 -2
- package/dist/cli/chunks/{chunk-EHW62JL2.js → chunk-Y2DVFVGI.js} +1 -1
- package/dist/cli/chunks/{chunk-D6RCRTTR.js → chunk-Y5SQBI2F.js} +2 -2
- package/dist/cli/chunks/{chunk-VVP2ROXD.js → chunk-YAKS3CAB.js} +2 -2
- package/dist/cli/chunks/{chunk-C3XNFIOM.js → chunk-YCBDE2N7.js} +2 -2
- package/dist/cli/chunks/{chunk-RVCMZUSJ.js → chunk-YDNSLLBS.js} +2 -2
- package/dist/cli/chunks/{chunk-TGFJUL6M.js → chunk-YEXPFHV6.js} +2 -2
- package/dist/cli/chunks/{chunk-UN7EHLRV.js → chunk-YGB6R5DW.js} +1 -1
- package/dist/cli/chunks/{chunk-JNSTKE3K.js → chunk-YL7T3VV7.js} +2 -2
- package/dist/cli/chunks/{chunk-3TMUCJNJ.js → chunk-ZHXWGNYM.js} +1 -1
- package/dist/cli/chunks/{chunk-DKUKGBJE.js → chunk-ZK5JKHP4.js} +1 -1
- package/dist/cli/chunks/{chunk-IYIMLLUV.js → chunk-ZN3J6TZD.js} +1 -1
- package/dist/cli/chunks/{chunk-3JMSXOU4.js → chunk-ZUG5MOUB.js} +2 -2
- package/dist/cli/chunks/{ci-Q2VX75PS.js → ci-YVKDQWIX.js} +2 -2
- package/dist/cli/chunks/ci-output-LK3MBXLZ.js +2 -0
- package/dist/cli/chunks/{circuit-breaker-JMRLG2XI.js → circuit-breaker-7AIXACR7.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-IMXYALBU.js → claude-flow-setup-UA7EO6VN.js} +2 -2
- package/dist/cli/chunks/client-M72GXFVQ.js +2 -0
- package/dist/cli/chunks/{cline-installer-HWFASEGE.js → cline-installer-YDDCKKEV.js} +2 -2
- package/dist/cli/chunks/{code-3V37TCAD.js → code-URB7UAKW.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-5V54WGFL.js → code-index-extractor-BL6HWH4Q.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UCA5AVE6.js → codex-installer-2AVEO4EA.js} +2 -2
- package/dist/cli/chunks/{completions-2DMRCQU6.js → completions-RCKBSSSS.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-MMQRXBTD.js → complexity-analyzer-LEDG62YK.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-FAARXP3S.js → continuedev-installer-VOTCEBFH.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-AKQALMB5.js → copilot-installer-NVTGLZX3.js} +2 -2
- package/dist/cli/chunks/core-handlers-C32RAMVI.js +2 -0
- package/dist/cli/chunks/{cost-tracker-AXWHDND5.js → cost-tracker-GJIFB2BM.js} +2 -2
- package/dist/cli/chunks/{coverage-ZLSKKCG5.js → coverage-ZTPJWXWE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-UGFUCPKC.js +2 -0
- package/dist/cli/chunks/{cursor-installer-UALCQKVD.js → cursor-installer-CMGJQMHX.js} +2 -2
- package/dist/cli/chunks/{daemon-4LNOPJGN.js → daemon-V456IWR3.js} +8 -8
- package/dist/cli/chunks/{daemon-K3DFGCXC.js → daemon-Y2I3YVIU.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-LCQ7MYKC.js → dag-attention-scheduler-ZCBBOD3D.js} +2 -2
- package/dist/cli/chunks/{detect-P7PEN3MZ.js → detect-2GHEA4A3.js} +2 -2
- package/dist/cli/chunks/{dist-node-I72BJC2D.js → dist-node-44AGYJCH.js} +2 -2
- package/dist/cli/chunks/{domain-handler-LROF6KWN.js → domain-handler-IDLIEP6X.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-M2ZSSTPV.js → domain-transfer-KLEXGIRF.js} +2 -2
- package/dist/cli/chunks/dream-UFBBXY5W.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-MTBPUGO4.js → embed-and-insert-pattern-DUW6K35A.js} +2 -2
- package/dist/cli/chunks/{eval-O24ALB3W.js → eval-PR6YWDFM.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-7JXEOGRE.js → experience-capture-middleware-CJJJN7CF.js} +3 -3
- package/dist/cli/chunks/{fast-paths-4CFYJV4U.js → fast-paths-LGLLKX6P.js} +2 -2
- package/dist/cli/chunks/{feature-flags-CHPUA7IM.js → feature-flags-33D3I4DD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-E6PIM6ZB.js → feature-flags-QL4NCEGW.js} +2 -2
- package/dist/cli/chunks/{file-discovery-2ANIAUCP.js → file-discovery-GKCYJPFZ.js} +2 -2
- package/dist/cli/chunks/{fleet-2MQ3OGCP.js → fleet-QNT6X2YI.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-P7JW3622.js → gnn-wrapper-ELSGT67Z.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-WWWZSA7V.js → heartbeat-handler-ZUI3DOOP.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-VQWHSGTY.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-BS3NXWGU.js +2 -0
- package/dist/cli/chunks/hnsw-index-JP26B4HW.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-W634ZOTV.js → hnsw-legacy-bridge-EZMM5JWL.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-SLZDLMKM.js → hnswlib-node-G4CE3EOS.js} +2 -2
- package/dist/cli/chunks/{hooks-3BFAZGG7.js → hooks-LCVXXA55.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-XJSGXP2J.js → hypergraph-engine-6Z7RQ3HI.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-RVUWZMOX.js → hypergraph-handler-PLI2GYPK.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-WRE4CWPJ.js +2 -0
- package/dist/cli/chunks/{init-handler-FYOZNNNO.js → init-handler-7VH3QJ5Y.js} +6 -6
- package/dist/cli/chunks/init-wizard-OFOEYB75.js +2 -0
- package/dist/cli/chunks/kernel-MXNFWNUD.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-MAAKFVSB.js → kilocode-installer-U3MW62DE.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-GX3TLZC5.js → kiro-installer-PPEAC44T.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-7JE2TVKJ.js +2 -0
- package/dist/cli/chunks/{learning-T4QZ6C26.js → learning-7B5NITDV.js} +3 -3
- package/dist/cli/chunks/{llm-router-N2M4WXOC.js → llm-router-BNEPT5OB.js} +4 -4
- package/dist/cli/chunks/llm-router-service-GTDVDKSU.js +2 -0
- package/dist/cli/chunks/{load-6RU3G4P2.js → load-VO7ABNHV.js} +2 -2
- package/dist/cli/chunks/load-test-JZ4CLSBF.js +2 -0
- package/dist/cli/chunks/{mcp-EFBO7BAU.js → mcp-THXEINCL.js} +2 -2
- package/dist/cli/chunks/{memory-AXU2M3DN.js → memory-FZTT7ADM.js} +5 -5
- package/dist/cli/chunks/memory-backend-Q54CC5A5.js +2 -0
- package/dist/cli/chunks/memory-handlers-IIBJXKHZ.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-W7AFGVNH.js → multi-model-executor-HEDVOZ6X.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-KJE2RLCH.js → opencode-installer-GQ7J5SBG.js} +2 -2
- package/dist/cli/chunks/{orchestrator-CL6MLGVU.js → orchestrator-66JK2OS5.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-W33O7FYO.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-7SNSJ7K2.js → pattern-usage-recorder-O6XHM2G5.js} +2 -2
- package/dist/cli/chunks/{pipeline-3UU6ON3F.js → pipeline-UOG6UO6D.js} +2 -2
- package/dist/cli/chunks/{platform-SNMPIDIT.js → platform-Q7UH7FZQ.js} +2 -2
- package/dist/cli/chunks/{plugin-65IIUUCU.js → plugin-7OFLNGOS.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-WWWJRLRP.js → prime-radiant-advanced-wasm-OSRDK2FW.js} +2 -2
- package/dist/cli/chunks/protocol-executor-VGN4M7XY.js +2 -0
- package/dist/cli/chunks/{protocol-handler-SEBHCLLJ.js → protocol-handler-WLYTX6FS.js} +2 -2
- package/dist/cli/chunks/{prove-N4X7CCJ4.js → prove-QVNE4V3J.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-7VB5LJGS.js +2 -0
- package/dist/cli/chunks/{quality-LBCJWXMU.js → quality-DNE2RKE5.js} +2 -2
- package/dist/cli/chunks/{quality-gate-KZIQI7QT.js → quality-gate-2K35GCSI.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-HIDMJMMG.js +2 -0
- package/dist/cli/chunks/{real-embeddings-XCZFHFME.js → real-embeddings-SF42ML7G.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-P3O6B7PT.js → roocode-installer-NCEZPF5L.js} +2 -2
- package/dist/cli/chunks/router-CTIJS4D7.js +2 -0
- package/dist/cli/chunks/routing-feedback-LFYYZS5J.js +2 -0
- package/dist/cli/chunks/{routing-handler-OXZ4DOV4.js → routing-handler-4MXXZRYP.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-PSY5IDSL.js → ruvector-commands-WDFMMCMK.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-MNPMIWVM.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-DXOKSSNW.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-4SUT7GTJ.js → rvf-migration-coordinator-JT7ZCJY7.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-PZKUKA7R.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-TCKC22FH.js → rvf-store-integrity-Q3FGYKFT.js} +2 -2
- package/dist/cli/chunks/safe-db-73BLFV2C.js +2 -0
- package/dist/cli/chunks/schedule-YVTGTTI4.js +2 -0
- package/dist/cli/chunks/scheduler-5DSAFIRQ.js +2 -0
- package/dist/cli/chunks/security-CJJ3WJSB.js +13 -0
- package/dist/cli/chunks/{shared-rvf-adapter-ZJFN52C2.js → shared-rvf-adapter-6RGCTLHD.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-V2R37HWV.js → shared-rvf-dual-writer-KIA6Q6MT.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-LRG4IPCU.js +2 -0
- package/dist/cli/chunks/{status-handler-XEKWNVDR.js → status-handler-BADQV2KA.js} +2 -2
- package/dist/cli/chunks/{structural-health-QMIW6WUN.js → structural-health-VMYEYRZG.js} +2 -2
- package/dist/cli/chunks/{sync-H5SXWXPP.js → sync-PXLROLHB.js} +2 -2
- package/dist/cli/chunks/{sync-GDYJ2ULT.js → sync-ULY7T5II.js} +2 -2
- package/dist/cli/chunks/{task-handler-EPLKCQHY.js → task-handler-L7E2I267.js} +2 -2
- package/dist/cli/chunks/{task-handlers-22NTLWTC.js → task-handlers-6DPKE4AK.js} +3 -3
- package/dist/cli/chunks/{test-WHJFRZ3F.js → test-WCLURQUT.js} +11 -11
- package/dist/cli/chunks/test-scheduling-4CNJA6TW.js +15 -0
- package/dist/cli/chunks/{token-bootstrap-BW5WA6PY.js → token-bootstrap-GTI24JAL.js} +2 -2
- package/dist/cli/chunks/{token-usage-4A4O57R6.js → token-usage-DRVG6PKO.js} +2 -2
- package/dist/cli/chunks/{transformers-FYTBRV46.js → transformers-IMDDAMYQ.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-TZIJPLF3.js → tree-sitter-wasm-parser-WBZIHVFA.js} +2 -2
- package/dist/cli/chunks/{types-B2L6LKFA.js → types-TXMY5M2K.js} +2 -2
- package/dist/cli/chunks/unified-memory-VBQ572X4.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-J3L74ZRY.js +2 -0
- package/dist/cli/chunks/unified-persistence-EM2VYRTQ.js +2 -0
- package/dist/cli/chunks/{upgrade-O6U7EA7V.js → upgrade-6ALSDWDD.js} +2 -2
- package/dist/cli/chunks/{validate-FHNZ5XL3.js → validate-XF4ZG3LC.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-YOLLUEHE.js → validate-swarm-P5TAFRDA.js} +2 -2
- package/dist/cli/chunks/{vibium-UXRPEIXB.js → vibium-2XDXKNKZ.js} +2 -2
- package/dist/cli/chunks/visual-security-GX4S7K6O.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-JJ5UIYFD.js → web-tree-sitter-4JVRQPX5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-I4QMQPIL.js → windsurf-installer-WYJXVDO5.js} +2 -2
- package/dist/cli/chunks/witness-chain-QGKMHCNW.js +2 -0
- package/dist/cli/chunks/{witness-chain-BIJ7WDGS.js → witness-chain-RPZ2SE2V.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-3SMMLJLP.js → witness-key-manager-LXG2VBQQ.js} +2 -2
- package/dist/cli/chunks/{workflow-33PUXXJV.js → workflow-2OYNO7UU.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-KWHIJMFV.js +2 -0
- package/dist/cli/chunks/{wrappers-ASAU36VK.js → wrappers-DIJNNFU6.js} +2 -2
- package/dist/cli/commands/daemon.js +3 -0
- package/dist/cli/commands/security.js +167 -100
- package/dist/cli/commands/test.js +1 -0
- package/dist/cli/foreground-command.d.ts +3 -0
- package/dist/cli/foreground-command.js +22 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/utils/ci-output.d.ts +17 -0
- package/dist/cli/utils/ci-output.js +34 -2
- package/dist/coordination/handlers/handler-types.d.ts +3 -0
- package/dist/coordination/handlers/quality-handlers.js +10 -0
- package/dist/coordination/handlers/security-handlers.js +168 -72
- package/dist/coordination/handlers/test-execution-handlers.js +37 -43
- package/dist/coordination/protocols/security-audit.d.ts +3 -0
- package/dist/coordination/protocols/security-audit.js +61 -39
- package/dist/coordination/result-saver.js +36 -5
- package/dist/coordination/task-executor.d.ts +3 -1
- package/dist/coordination/task-executor.js +4 -0
- package/dist/domains/security-compliance/interfaces.d.ts +5 -0
- package/dist/domains/security-compliance/interfaces.js +0 -6
- package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
- package/dist/domains/security-compliance/scan-discovery.js +105 -0
- package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
- package/dist/domains/security-compliance/scan-evidence.js +2 -0
- package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +109 -65
- package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
- package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
- package/dist/domains/test-execution/services/flaky-detector.js +14 -3
- package/dist/domains/test-execution/services/retry-handler.js +18 -8
- package/dist/domains/test-execution/services/test-executor.js +46 -12
- package/dist/init/init-wizard-hooks.js +2 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
- package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
- package/dist/mcp/bundle.js +499 -478
- package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
- package/dist/mcp/handlers/domain-handler-configs.js +50 -19
- package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
- package/dist/mcp/handlers/domain-handlers.js +7 -5
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/protocol-server.js +20 -7
- package/dist/mcp/qe-tool-bridge.js +1 -0
- package/dist/mcp/tool-annotations.d.ts +25 -0
- package/dist/mcp/tool-annotations.js +75 -0
- package/dist/mcp/tool-registry.js +17 -12
- package/dist/mcp/tools/base.d.ts +7 -1
- package/dist/mcp/tools/base.js +8 -0
- package/dist/mcp/tools/registry.d.ts +3 -0
- package/dist/mcp/tools/registry.js +1 -0
- package/dist/mcp/types.d.ts +20 -0
- package/dist/shared/llm/router/hybrid-router.d.ts +4 -0
- package/dist/shared/llm/router/hybrid-router.js +74 -26
- package/dist/shared/llm/router/types.d.ts +9 -2
- package/dist/shared/test-runner-verdict.d.ts +29 -0
- package/dist/shared/test-runner-verdict.js +43 -0
- package/dist/shared/vitest-json-report.d.ts +45 -0
- package/dist/shared/vitest-json-report.js +71 -0
- package/dist/test-scheduling/executors/vitest-executor.js +18 -6
- package/dist/validation/frontier-judge.d.ts +7 -4
- package/dist/validation/frontier-judge.js +11 -6
- package/package.json +8 -7
- package/dist/cli/chunks/adapter-I2N7PEKG.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-U4ALUH6A.js +0 -2
- package/dist/cli/chunks/base-RCYIBNHM.js +0 -2
- package/dist/cli/chunks/browser-workflow-L6TDB5O5.js +0 -2
- package/dist/cli/chunks/chunk-CGZ7LTUK.js +0 -2
- package/dist/cli/chunks/chunk-H5LSXVWY.js +0 -5
- package/dist/cli/chunks/chunk-QAE4BOIV.js +0 -2
- package/dist/cli/chunks/chunk-RXHI6CKK.js +0 -81
- package/dist/cli/chunks/chunk-YXN47QOI.js +0 -2
- package/dist/cli/chunks/ci-output-MD5GTVR2.js +0 -2
- package/dist/cli/chunks/client-L4PIXCGV.js +0 -2
- package/dist/cli/chunks/core-handlers-KROSXP4V.js +0 -2
- package/dist/cli/chunks/cross-domain-router-WMTYBOON.js +0 -2
- package/dist/cli/chunks/dream-AV63YQ2Y.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-5IZUGMC2.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-NV2NNBJL.js +0 -2
- package/dist/cli/chunks/hnsw-index-GRJ3KA2O.js +0 -2
- package/dist/cli/chunks/impact-analyzer-YM4QUWVH.js +0 -2
- package/dist/cli/chunks/init-wizard-YESXGIK6.js +0 -2
- package/dist/cli/chunks/kernel-VH5SKESU.js +0 -2
- package/dist/cli/chunks/knowledge-graph-F3NL4WJV.js +0 -2
- package/dist/cli/chunks/llm-router-service-HQYCJMPK.js +0 -2
- package/dist/cli/chunks/load-test-GWRGKWMN.js +0 -2
- package/dist/cli/chunks/memory-backend-7A2PFKPV.js +0 -2
- package/dist/cli/chunks/memory-handlers-65CXN76C.js +0 -2
- package/dist/cli/chunks/pattern-null-store-K2WPRYCP.js +0 -2
- package/dist/cli/chunks/protocol-executor-TJDLEHND.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-CGRMFPDM.js +0 -2
- package/dist/cli/chunks/queen-coordinator-FKP6QZAQ.js +0 -2
- package/dist/cli/chunks/router-KZ5BISAM.js +0 -2
- package/dist/cli/chunks/routing-feedback-O4Y5TTR6.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-NG3UF3D5.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-PUHVTKQY.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-ODXFKZ6G.js +0 -2
- package/dist/cli/chunks/safe-db-BUQDNH2R.js +0 -2
- package/dist/cli/chunks/schedule-ZXNDZNNB.js +0 -2
- package/dist/cli/chunks/scheduler-YUQQWWW3.js +0 -2
- package/dist/cli/chunks/security-RQGUQGSI.js +0 -14
- package/dist/cli/chunks/sqlite-persistence-HVSX46C7.js +0 -2
- package/dist/cli/chunks/test-scheduling-KZVFZOQN.js +0 -15
- package/dist/cli/chunks/unified-memory-AHN4RVBP.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-XB7JPF74.js +0 -2
- package/dist/cli/chunks/unified-persistence-53KWNFQJ.js +0 -2
- package/dist/cli/chunks/visual-security-CRPYS7L7.js +0 -2
- package/dist/cli/chunks/witness-chain-5WCR2CAS.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-RZWCLTT5.js +0 -2
|
@@ -13,6 +13,8 @@ import { toErrorMessage, toError } from '../../../shared/error-utils.js';
|
|
|
13
13
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
14
14
|
import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-random.js';
|
|
15
15
|
import { writeQualityEvidence } from '../../quality-assessment/quality-evidence.js';
|
|
16
|
+
import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
|
|
17
|
+
import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
|
|
16
18
|
const DEFAULT_CONFIG = {
|
|
17
19
|
simulateForTesting: false,
|
|
18
20
|
simulatedTestsPerFile: 5,
|
|
@@ -340,6 +342,9 @@ Provide:
|
|
|
340
342
|
// Production mode: spawn actual test runner process
|
|
341
343
|
const result = await this.spawnTestRunner(files, framework, timeout);
|
|
342
344
|
if (result.success === false) {
|
|
345
|
+
// Runner/suite errors have no trustworthy assertion receipt to aggregate.
|
|
346
|
+
if (result.error instanceof TestRunnerExecutionError)
|
|
347
|
+
throw result.error;
|
|
343
348
|
// Return as a failed test rather than throwing — allows other files to still run
|
|
344
349
|
return {
|
|
345
350
|
total: files.length,
|
|
@@ -368,12 +373,16 @@ Provide:
|
|
|
368
373
|
return err(new Error(`Test file not found: ${missingFile}`));
|
|
369
374
|
}
|
|
370
375
|
// Build command based on framework
|
|
371
|
-
const { command, args } = this.buildTestCommand(files, framework);
|
|
376
|
+
const { command, args, report } = this.buildTestCommand(files, framework);
|
|
372
377
|
const fileLabel = files.join(', ');
|
|
373
378
|
return new Promise((resolve) => {
|
|
374
379
|
let stdout = '';
|
|
375
380
|
let stderr = '';
|
|
376
381
|
let killed = false;
|
|
382
|
+
const finish = (result) => {
|
|
383
|
+
report?.cleanup();
|
|
384
|
+
resolve(result);
|
|
385
|
+
};
|
|
377
386
|
// Spawn the test runner process
|
|
378
387
|
// Note: shell: false (default) to prevent command injection (CWE-78)
|
|
379
388
|
// Arguments are passed as array to avoid shell interpretation
|
|
@@ -389,7 +398,7 @@ Provide:
|
|
|
389
398
|
const timeoutId = setTimeout(() => {
|
|
390
399
|
killed = true;
|
|
391
400
|
proc.kill('SIGTERM');
|
|
392
|
-
|
|
401
|
+
finish(err(new Error(`Test execution timed out after ${timeout}ms for files: ${fileLabel}`)));
|
|
393
402
|
}, timeout);
|
|
394
403
|
proc.stdout?.on('data', (data) => {
|
|
395
404
|
stdout += data.toString();
|
|
@@ -402,8 +411,10 @@ Provide:
|
|
|
402
411
|
if (killed) {
|
|
403
412
|
return; // Already handled by timeout
|
|
404
413
|
}
|
|
405
|
-
// Parse results based on framework
|
|
406
|
-
|
|
414
|
+
// Parse results based on framework. Vitest 5 writes the JSON report to
|
|
415
|
+
// a file instead of stdout, so read it back through the report handle.
|
|
416
|
+
const reportText = report ? report.read(stdout) : stdout;
|
|
417
|
+
const parseResult = this.parseTestOutput(reportText, stderr, fileLabel, framework, code);
|
|
407
418
|
// If no coverage in stdout JSON, try reading from disk
|
|
408
419
|
// (vitest/jest write coverage to coverage/coverage-summary.json)
|
|
409
420
|
if (parseResult.success && !parseResult.value.coverage && ['vitest', 'jest'].includes(framework.toLowerCase())) {
|
|
@@ -415,11 +426,11 @@ Provide:
|
|
|
415
426
|
}
|
|
416
427
|
}
|
|
417
428
|
}
|
|
418
|
-
|
|
429
|
+
finish(parseResult);
|
|
419
430
|
});
|
|
420
431
|
proc.on('error', (error) => {
|
|
421
432
|
clearTimeout(timeoutId);
|
|
422
|
-
|
|
433
|
+
finish(err(new Error(`Failed to spawn test runner: ${error.message}. Is '${command}' installed?`)));
|
|
423
434
|
});
|
|
424
435
|
});
|
|
425
436
|
}
|
|
@@ -429,11 +440,16 @@ Provide:
|
|
|
429
440
|
buildTestCommand(fileOrFiles, framework) {
|
|
430
441
|
const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
|
|
431
442
|
switch (framework.toLowerCase()) {
|
|
432
|
-
case 'vitest':
|
|
443
|
+
case 'vitest': {
|
|
444
|
+
// --outputFile makes Vitest 4 and 5 both write the JSON report to a
|
|
445
|
+
// file we own; Vitest 5 no longer prints it to stdout.
|
|
446
|
+
const report = createVitestJsonReport();
|
|
433
447
|
return {
|
|
434
448
|
command: 'npx',
|
|
435
|
-
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color'],
|
|
449
|
+
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color', ...report.args],
|
|
450
|
+
report,
|
|
436
451
|
};
|
|
452
|
+
}
|
|
437
453
|
case 'jest':
|
|
438
454
|
return {
|
|
439
455
|
command: 'npx',
|
|
@@ -452,12 +468,15 @@ Provide:
|
|
|
452
468
|
command: process.execPath,
|
|
453
469
|
args: ['--test', ...files],
|
|
454
470
|
};
|
|
455
|
-
default:
|
|
471
|
+
default: {
|
|
456
472
|
// Default to vitest
|
|
473
|
+
const report = createVitestJsonReport();
|
|
457
474
|
return {
|
|
458
475
|
command: 'npx',
|
|
459
|
-
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color'],
|
|
476
|
+
args: ['vitest', 'run', ...files, '--reporter=json', '--no-color', ...report.args],
|
|
477
|
+
report,
|
|
460
478
|
};
|
|
479
|
+
}
|
|
461
480
|
}
|
|
462
481
|
}
|
|
463
482
|
/**
|
|
@@ -555,11 +574,14 @@ Provide:
|
|
|
555
574
|
duration: assertion.duration || 0,
|
|
556
575
|
});
|
|
557
576
|
}
|
|
558
|
-
else if (assertion.status === 'skipped' || assertion.status === 'pending') {
|
|
577
|
+
else if (assertion.status === 'skipped' || assertion.status === 'pending' || assertion.status === 'todo') {
|
|
559
578
|
skipped++;
|
|
560
579
|
}
|
|
561
580
|
}
|
|
562
581
|
}
|
|
582
|
+
const executionError = getTestRunnerExecutionError('vitest', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout, json);
|
|
583
|
+
if (executionError)
|
|
584
|
+
return err(executionError);
|
|
563
585
|
const covData = this.extractCoverageFromJson(json);
|
|
564
586
|
return ok({
|
|
565
587
|
total: passed + failed + skipped,
|
|
@@ -606,11 +628,14 @@ Provide:
|
|
|
606
628
|
duration: assertion.duration || 0,
|
|
607
629
|
});
|
|
608
630
|
}
|
|
609
|
-
else if (assertion.status === 'skipped' || assertion.status === 'pending') {
|
|
631
|
+
else if (assertion.status === 'skipped' || assertion.status === 'pending' || assertion.status === 'todo') {
|
|
610
632
|
skipped++;
|
|
611
633
|
}
|
|
612
634
|
}
|
|
613
635
|
}
|
|
636
|
+
const executionError = getTestRunnerExecutionError('jest', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout, json);
|
|
637
|
+
if (executionError)
|
|
638
|
+
return err(executionError);
|
|
614
639
|
const covData = this.extractCoverageFromJson(json);
|
|
615
640
|
return ok({
|
|
616
641
|
total: passed + failed + skipped,
|
|
@@ -646,6 +671,9 @@ Provide:
|
|
|
646
671
|
duration: failure.duration || 0,
|
|
647
672
|
});
|
|
648
673
|
}
|
|
674
|
+
const executionError = getTestRunnerExecutionError('mocha', file, exitCode, { passed, failed, skipped }, stderr + '\n' + stdout);
|
|
675
|
+
if (executionError)
|
|
676
|
+
return err(executionError);
|
|
649
677
|
return ok({
|
|
650
678
|
total: passed + failed + skipped,
|
|
651
679
|
passed,
|
|
@@ -673,6 +701,9 @@ Provide:
|
|
|
673
701
|
const passed = parseInt(vitestMatch[1], 10) || 0;
|
|
674
702
|
const failed = parseInt(vitestMatch[2], 10) || 0;
|
|
675
703
|
const skipped = parseInt(vitestMatch[3], 10) || 0;
|
|
704
|
+
const executionError = getTestRunnerExecutionError('Test runner', file, exitCode, { passed, failed, skipped }, combinedOutput);
|
|
705
|
+
if (executionError)
|
|
706
|
+
return err(executionError);
|
|
676
707
|
return ok({
|
|
677
708
|
total: passed + failed + skipped,
|
|
678
709
|
passed,
|
|
@@ -688,6 +719,9 @@ Provide:
|
|
|
688
719
|
const failed = parseInt(jestMatch[1], 10) || 0;
|
|
689
720
|
const skipped = parseInt(jestMatch[2], 10) || 0;
|
|
690
721
|
const passed = parseInt(jestMatch[3], 10) || 0;
|
|
722
|
+
const executionError = getTestRunnerExecutionError('Test runner', file, exitCode, { passed, failed, skipped }, combinedOutput);
|
|
723
|
+
if (executionError)
|
|
724
|
+
return err(executionError);
|
|
691
725
|
return ok({
|
|
692
726
|
total: passed + failed + skipped,
|
|
693
727
|
passed,
|
|
@@ -406,9 +406,9 @@ mcp__agentic-qe__test_generate_enhanced({
|
|
|
406
406
|
detectAntiPatterns: true
|
|
407
407
|
})
|
|
408
408
|
|
|
409
|
-
// Parallel test execution with retry
|
|
409
|
+
// Parallel test execution with retry (concrete paths; expand globs before calling)
|
|
410
410
|
mcp__agentic-qe__test_execute_parallel({
|
|
411
|
-
testFiles: ["tests
|
|
411
|
+
testFiles: ["tests/auth.test.ts", "tests/session.test.ts"],
|
|
412
412
|
parallelism: 4,
|
|
413
413
|
retryFailures: true,
|
|
414
414
|
maxRetries: 3,
|
|
@@ -155,15 +155,6 @@ export class EnhancedReasoningBankAdapter {
|
|
|
155
155
|
...guidance.suggestedActions.map(a => `Action: ${a}`),
|
|
156
156
|
...result.guidance,
|
|
157
157
|
];
|
|
158
|
-
this.stats.tokensSavedEstimate += guidance.estimatedTokenSavings;
|
|
159
|
-
this.stats.experiencesApplied++;
|
|
160
|
-
// Record application of each source experience for reuse tracking
|
|
161
|
-
for (const src of guidance.sourceExperiences) {
|
|
162
|
-
this.experienceReplay.recordApplication(src.id, request.task, true, // success=true at routing time; updated later via recordOutcome
|
|
163
|
-
Math.round(guidance.estimatedTokenSavings)).catch(err => {
|
|
164
|
-
console.warn(`[EnhancedAdapter] Failed to record experience application: ${err}`);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
158
|
}
|
|
168
159
|
}
|
|
169
160
|
// Find similar past trajectories
|
|
@@ -265,17 +256,8 @@ export class EnhancedReasoningBankAdapter {
|
|
|
265
256
|
if (!this.experienceReplay) {
|
|
266
257
|
return null;
|
|
267
258
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this.stats.experiencesApplied++;
|
|
271
|
-
// Record application for reuse tracking (experience_applications table)
|
|
272
|
-
for (const src of guidance.sourceExperiences) {
|
|
273
|
-
this.experienceReplay.recordApplication(src.id, task, true, Math.round(guidance.estimatedTokenSavings)).catch(err => {
|
|
274
|
-
console.warn(`[EnhancedAdapter] Failed to record experience application: ${err}`);
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return guidance;
|
|
259
|
+
// Retrieving guidance does not establish that it was applied successfully.
|
|
260
|
+
return this.experienceReplay.getGuidance(task, domain);
|
|
279
261
|
}
|
|
280
262
|
/**
|
|
281
263
|
* Record that an experience was applied
|
|
@@ -290,6 +272,7 @@ export class EnhancedReasoningBankAdapter {
|
|
|
290
272
|
if (!this.experienceReplay)
|
|
291
273
|
return;
|
|
292
274
|
await this.experienceReplay.recordApplication(experienceId, task, success, tokensSaved);
|
|
275
|
+
this.stats.experiencesApplied++;
|
|
293
276
|
this.stats.tokensSavedEstimate += tokensSaved;
|
|
294
277
|
}
|
|
295
278
|
// ============================================================================
|
|
@@ -19,6 +19,10 @@ import { WasmNotLoadedError, DEFAULT_COHERENCE_LOGGER } from '../types.js';
|
|
|
19
19
|
// ============================================================================
|
|
20
20
|
// WASM Engine Wrapper
|
|
21
21
|
// ============================================================================
|
|
22
|
+
// Dense restriction maps are copied into WASM. Bound each native call to
|
|
23
|
+
// 32 MiB of matrix cells and 256 MiB of cumulative cells per operation.
|
|
24
|
+
const MAX_NATIVE_BATCH_CELLS = 4 * 1024 * 1024;
|
|
25
|
+
const MAX_NATIVE_TOTAL_CELLS = 32 * 1024 * 1024;
|
|
22
26
|
/**
|
|
23
27
|
* Creates an ICohomologyEngine wrapper around the raw WASM engine
|
|
24
28
|
* Translates from snake_case adapter interface to camelCase WASM API
|
|
@@ -53,19 +57,78 @@ function createCohomologyEngineWrapper(rawEngine) {
|
|
|
53
57
|
// WASM sheaf cohomology expects:
|
|
54
58
|
// { nodes: [{id: number, label: string, section: number[], weight: number}], edges: [...] }
|
|
55
59
|
// "section" is the sheaf theory term for local data at each stalk
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
60
|
+
function* buildGraphs() {
|
|
61
|
+
// Native edge endpoints address the current nodes array by position, not
|
|
62
|
+
// node.id. Rebuild indices after removals or edges added before nodes.
|
|
63
|
+
stringToIndex.clear();
|
|
64
|
+
indexToString.clear();
|
|
65
|
+
nextIndex = 0;
|
|
66
|
+
const dimension = nodes.values().next().value?.embedding.length;
|
|
67
|
+
const graphNodes = Array.from(nodes.entries()).map(([id, data]) => {
|
|
68
|
+
if (data.embedding.length !== dimension) {
|
|
69
|
+
throw new RangeError('Cohomology graphs require matching embedding dimensions');
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
id: getOrCreateIndex(id),
|
|
73
|
+
label: id,
|
|
74
|
+
section: Array.from(data.embedding),
|
|
75
|
+
weight: 1.0,
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
// Validate the complete operation before allocating any dense matrices or
|
|
79
|
+
// calling WASM. A rejected graph must never yield partial energy/results.
|
|
80
|
+
let totalCells = 0;
|
|
81
|
+
const preparedEdges = edges.map(edge => {
|
|
82
|
+
const source = nodes.get(edge.source);
|
|
83
|
+
const target = nodes.get(edge.target);
|
|
84
|
+
if (!source || !target) {
|
|
85
|
+
throw new Error(`Cohomology edge references an unknown node: ${edge.source} -> ${edge.target}`);
|
|
86
|
+
}
|
|
87
|
+
const dimension = source.embedding.length;
|
|
88
|
+
const cells = dimension * dimension;
|
|
89
|
+
if (cells > MAX_NATIVE_BATCH_CELLS) {
|
|
90
|
+
throw new RangeError(`Cohomology restriction map exceeds ${MAX_NATIVE_BATCH_CELLS} cells`);
|
|
91
|
+
}
|
|
92
|
+
totalCells += cells;
|
|
93
|
+
if (totalCells > MAX_NATIVE_TOTAL_CELLS) {
|
|
94
|
+
throw new RangeError(`Cohomology graph exceeds ${MAX_NATIVE_TOTAL_CELLS} restriction-map cells`);
|
|
95
|
+
}
|
|
96
|
+
return { ...edge, dimension, cells };
|
|
97
|
+
});
|
|
98
|
+
let batch = [];
|
|
99
|
+
let batchCells = 0;
|
|
100
|
+
const restrictionMaps = new Map();
|
|
101
|
+
for (const edge of preparedEdges) {
|
|
102
|
+
if (batchCells + edge.cells > MAX_NATIVE_BATCH_CELLS) {
|
|
103
|
+
yield { nodes: graphNodes, edges: batch };
|
|
104
|
+
batch = [];
|
|
105
|
+
batchCells = 0;
|
|
106
|
+
restrictionMaps.clear();
|
|
107
|
+
}
|
|
108
|
+
let restrictionMap = restrictionMaps.get(edge.dimension);
|
|
109
|
+
if (!restrictionMap) {
|
|
110
|
+
// Sections share embedding coordinates; use a row-major identity map.
|
|
111
|
+
// Sharing the read-only JS matrix avoids per-edge JS allocations.
|
|
112
|
+
restrictionMap = Array(edge.cells).fill(0);
|
|
113
|
+
for (let i = 0; i < edge.dimension; i++) {
|
|
114
|
+
restrictionMap[i * edge.dimension + i] = 1;
|
|
115
|
+
}
|
|
116
|
+
restrictionMaps.set(edge.dimension, restrictionMap);
|
|
117
|
+
}
|
|
118
|
+
batch.push({
|
|
119
|
+
source: stringToIndex.get(edge.source),
|
|
120
|
+
target: stringToIndex.get(edge.target),
|
|
121
|
+
weight: edge.weight,
|
|
122
|
+
restriction_map: restrictionMap,
|
|
123
|
+
source_dim: edge.dimension,
|
|
124
|
+
target_dim: edge.dimension,
|
|
125
|
+
});
|
|
126
|
+
batchCells += edge.cells;
|
|
127
|
+
}
|
|
128
|
+
if (batch.length > 0 || preparedEdges.length === 0) {
|
|
129
|
+
yield { nodes: graphNodes, edges: batch };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
69
132
|
return {
|
|
70
133
|
add_node(id, embedding) {
|
|
71
134
|
nodes.set(id, { embedding });
|
|
@@ -79,8 +142,7 @@ function createCohomologyEngineWrapper(rawEngine) {
|
|
|
79
142
|
},
|
|
80
143
|
remove_node(id) {
|
|
81
144
|
nodes.delete(id);
|
|
82
|
-
//
|
|
83
|
-
// (indices are reused to avoid graph corruption)
|
|
145
|
+
// Native indices are rebuilt from current node order on serialization.
|
|
84
146
|
// Remove associated edges
|
|
85
147
|
for (let i = edges.length - 1; i >= 0; i--) {
|
|
86
148
|
if (edges[i].source === id || edges[i].target === id) {
|
|
@@ -94,22 +156,30 @@ function createCohomologyEngineWrapper(rawEngine) {
|
|
|
94
156
|
edges.splice(idx, 1);
|
|
95
157
|
},
|
|
96
158
|
sheaf_laplacian_energy() {
|
|
97
|
-
|
|
98
|
-
|
|
159
|
+
// Native consistency energy is the sum of independent edge energies.
|
|
160
|
+
let energy = 0;
|
|
161
|
+
for (const graph of buildGraphs()) {
|
|
162
|
+
energy += rawEngine.consistencyEnergy(graph);
|
|
163
|
+
}
|
|
164
|
+
return energy;
|
|
99
165
|
},
|
|
100
166
|
detect_contradictions(threshold) {
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
167
|
+
const contradictions = [];
|
|
168
|
+
for (const graph of buildGraphs()) {
|
|
169
|
+
const obstructions = rawEngine.detectObstructions(graph);
|
|
170
|
+
for (const obstruction of obstructions ?? []) {
|
|
171
|
+
if (obstruction.magnitude > threshold) {
|
|
172
|
+
contradictions.push({
|
|
173
|
+
node1: getStringId(obstruction.source_node),
|
|
174
|
+
node2: getStringId(obstruction.target_node),
|
|
175
|
+
severity: obstruction.magnitude,
|
|
176
|
+
distance: obstruction.magnitude,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Preserve the native global descending-magnitude order across batches.
|
|
182
|
+
return contradictions.sort((a, b) => b.distance - a.distance);
|
|
113
183
|
},
|
|
114
184
|
clear() {
|
|
115
185
|
nodes.clear();
|
|
@@ -297,7 +367,7 @@ export class CohomologyAdapter {
|
|
|
297
367
|
nodeIds: [raw.node1, raw.node2],
|
|
298
368
|
severity: this.severityFromDistance(raw.severity),
|
|
299
369
|
description: this.generateContradictionDescription(raw),
|
|
300
|
-
confidence: 1 - raw.distance, //
|
|
370
|
+
confidence: Math.max(0, 1 - raw.distance), // Native magnitudes can exceed one
|
|
301
371
|
resolution: this.suggestResolution(raw),
|
|
302
372
|
};
|
|
303
373
|
}
|