agentic-qe 3.14.5 → 3.14.7
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 +150 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/ag-ui/event-types.d.ts +1 -1
- package/dist/audit/witness-chain-hash.d.ts +18 -0
- package/dist/audit/witness-chain-hash.js +37 -0
- package/dist/audit/witness-chain-repair.d.ts +71 -0
- package/dist/audit/witness-chain-repair.js +203 -0
- package/dist/audit/witness-chain-verifier.d.ts +152 -0
- package/dist/audit/witness-chain-verifier.js +293 -0
- package/dist/audit/witness-chain.d.ts +10 -43
- package/dist/audit/witness-chain.js +16 -106
- package/dist/audit/witness-findings.js +4 -1
- package/dist/cli/bundle.js +8 -8
- package/dist/cli/chunks/adapter-TVQKH65T.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-AK2W76RG.js +2 -0
- package/dist/cli/chunks/{agent-handler-V6CZ7Q6S.js → agent-handler-MGZCWHIY.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-ZMD6ULC3.js → agent-memory-branch-JZ54MCSP.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-ULGTVVWE.js +2 -0
- package/dist/cli/chunks/{arena-QLSBESC7.js → arena-CUVH3V7H.js} +2 -2
- package/dist/cli/chunks/{arena-4UPAEHFT.js → arena-YSWTKBCL.js} +4 -4
- package/dist/cli/chunks/audit-LVU76QGA.js +4 -0
- package/dist/cli/chunks/base-W42BURDL.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-4DSBPDRH.js → better-sqlite3-DB3LOJQU.js} +2 -2
- package/dist/cli/chunks/{brain-handler-GBY4EZ4P.js → brain-handler-SD63KOQ6.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-XYBVXCNO.js → branch-enumerator-4MNOPUC7.js} +2 -2
- package/dist/cli/chunks/{browser-32F6MREU.js → browser-OLPNTWQE.js} +2 -2
- package/dist/cli/chunks/browser-workflow-HKGHFFFT.js +2 -0
- package/dist/cli/chunks/{chunk-WLXK2KNU.js → chunk-23CX7JNL.js} +2 -2
- package/dist/cli/chunks/{chunk-O3JTQ7N4.js → chunk-25P6JA6V.js} +1 -1
- package/dist/cli/chunks/{chunk-DO6EI5KB.js → chunk-2G63VIJE.js} +1 -1
- package/dist/cli/chunks/{chunk-G3L5L6YQ.js → chunk-2IMSJ7IO.js} +1 -1
- package/dist/cli/chunks/{chunk-RD6TEZ64.js → chunk-36VKMAMN.js} +2 -2
- package/dist/cli/chunks/{chunk-KIP6WZGV.js → chunk-3M7J4U74.js} +3 -3
- package/dist/cli/chunks/chunk-3QJU4Q4R.js +5 -0
- package/dist/cli/chunks/{chunk-2JGEZHWY.js → chunk-4EKV7PHB.js} +2 -2
- package/dist/cli/chunks/chunk-4INST4ZL.js +4 -0
- package/dist/cli/chunks/{chunk-DPBRWP4J.js → chunk-53BXTTRO.js} +3 -3
- package/dist/cli/chunks/chunk-5D7ZFWDS.js +2 -0
- package/dist/cli/chunks/{chunk-XLAUGSW7.js → chunk-5FSLMYAC.js} +2 -2
- package/dist/cli/chunks/chunk-5GFKTJ65.js +4 -0
- package/dist/cli/chunks/{chunk-WOIGKU2N.js → chunk-5U6N4V5M.js} +11 -11
- package/dist/cli/chunks/{chunk-PSPKSUF6.js → chunk-6EGS77BB.js} +1 -1
- package/dist/cli/chunks/{chunk-QIRL6B3C.js → chunk-6PJPQGF4.js} +2 -2
- package/dist/cli/chunks/{chunk-I6X3EGJI.js → chunk-6RD44SCE.js} +1 -1
- package/dist/cli/chunks/{chunk-IGBEJ4UJ.js → chunk-74IOEOMH.js} +2 -2
- package/dist/cli/chunks/{chunk-E3W6XQ57.js → chunk-77QZHIVX.js} +2 -2
- package/dist/cli/chunks/{chunk-R74ZKREV.js → chunk-7EZ2Z2CK.js} +1 -1
- package/dist/cli/chunks/{chunk-UTBYJ4RF.js → chunk-7MIOK72I.js} +18 -35
- package/dist/cli/chunks/{chunk-URVHZPWY.js → chunk-7QYOTUOX.js} +2 -2
- package/dist/cli/chunks/{chunk-K27SU3RE.js → chunk-A2VUCUTT.js} +2 -2
- package/dist/cli/chunks/{chunk-2KJQ2UQE.js → chunk-A3DK3XNZ.js} +1 -1
- package/dist/cli/chunks/{chunk-5D36YHS3.js → chunk-A5MA7A23.js} +4 -4
- package/dist/cli/chunks/{chunk-WJHWH5D2.js → chunk-AEUEMVJK.js} +2 -2
- package/dist/cli/chunks/{chunk-6CR4VQBQ.js → chunk-AJUBT4NP.js} +2 -2
- package/dist/cli/chunks/chunk-B2YGVSOP.js +27 -0
- package/dist/cli/chunks/{chunk-D6OUCB2H.js → chunk-B4I43GE2.js} +2 -2
- package/dist/cli/chunks/{chunk-WK7B4B6Y.js → chunk-BD7FEUN3.js} +2 -2
- package/dist/cli/chunks/{chunk-OEIQTWQP.js → chunk-BE4KALTE.js} +1 -1
- package/dist/cli/chunks/{chunk-JROVR6YS.js → chunk-BEFTQVEW.js} +2 -2
- package/dist/cli/chunks/{chunk-HBCGYMQU.js → chunk-BLG7SH4A.js} +1 -1
- package/dist/cli/chunks/{chunk-2OMLTYQK.js → chunk-C3FXFU2T.js} +1 -1
- package/dist/cli/chunks/{chunk-6A44AOGN.js → chunk-CBONQM5D.js} +2 -2
- package/dist/cli/chunks/{chunk-73EI4C2E.js → chunk-CQNMGK6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-IIAR5S7Q.js → chunk-CVOQ6ESD.js} +2 -2
- package/dist/cli/chunks/{chunk-6TU7FEMD.js → chunk-DOBKEXMJ.js} +1 -1
- package/dist/cli/chunks/{chunk-BHFR2EXL.js → chunk-DYTQHRUS.js} +1 -1
- package/dist/cli/chunks/{chunk-E4AZXCT5.js → chunk-EADSQN5T.js} +1 -1
- package/dist/cli/chunks/{chunk-CYE2TJFV.js → chunk-EGOIIUBD.js} +2 -2
- package/dist/cli/chunks/{chunk-DKUBQQFG.js → chunk-EIGRV3J6.js} +2 -2
- package/dist/cli/chunks/{chunk-RP2ZKPYV.js → chunk-EJ6MMYLK.js} +1 -1
- package/dist/cli/chunks/{chunk-HSVKZ5KI.js → chunk-ENK44A6Q.js} +2 -2
- package/dist/cli/chunks/{chunk-67YV75XP.js → chunk-EYXE2XKP.js} +2 -2
- package/dist/cli/chunks/{chunk-HYEJJJY3.js → chunk-F2OPFVQH.js} +1 -1
- package/dist/cli/chunks/{chunk-XUR2M2WB.js → chunk-FBZC4IGB.js} +2 -2
- package/dist/cli/chunks/{chunk-BXVAVFGU.js → chunk-FSSR6WBE.js} +2 -2
- package/dist/cli/chunks/{chunk-W2XCZU62.js → chunk-FW4DJ4FJ.js} +1 -1
- package/dist/cli/chunks/{chunk-KKHYJF5U.js → chunk-FYPX5WBJ.js} +1 -1
- package/dist/cli/chunks/{chunk-K7NJHFLZ.js → chunk-G367W7XR.js} +3 -3
- package/dist/cli/chunks/{chunk-IUDWEOLX.js → chunk-GLGKQX2V.js} +2 -2
- package/dist/cli/chunks/{chunk-JVQBWYHW.js → chunk-GV4DYPJP.js} +2 -2
- package/dist/cli/chunks/{chunk-GTKCGPJZ.js → chunk-GVVFTFMB.js} +2 -2
- package/dist/cli/chunks/{chunk-AFEDJ3RU.js → chunk-H5RQPO3X.js} +2 -2
- package/dist/cli/chunks/{chunk-4FWTLJEP.js → chunk-HPWWYT67.js} +2 -2
- package/dist/cli/chunks/{chunk-G3W6BMVJ.js → chunk-HXXHMLJ5.js} +1 -1
- package/dist/cli/chunks/{chunk-NU7UTXMP.js → chunk-HYFQUWNB.js} +2 -2
- package/dist/cli/chunks/chunk-HYOPJHHW.js +2 -0
- package/dist/cli/chunks/{chunk-6LKDHEBY.js → chunk-HZY42OVU.js} +2 -2
- package/dist/cli/chunks/{chunk-C3HQL6S4.js → chunk-IAENZ2DR.js} +2 -2
- package/dist/cli/chunks/{chunk-M23ZOZVY.js → chunk-IEJ7ZV3M.js} +1 -1
- package/dist/cli/chunks/{chunk-RIZVC4XY.js → chunk-IWFFO6VT.js} +2 -2
- package/dist/cli/chunks/chunk-J7AQZLIH.js +21 -0
- package/dist/cli/chunks/{chunk-3KDL6QDK.js → chunk-JHJUSSAU.js} +2 -2
- package/dist/cli/chunks/{chunk-DLF5BOJD.js → chunk-JOZ47MV6.js} +1 -1
- package/dist/cli/chunks/{chunk-ELBZON4V.js → chunk-JZT7BU44.js} +2 -2
- package/dist/cli/chunks/{chunk-3DDXWYMO.js → chunk-KD2BLA5Y.js} +1 -1
- package/dist/cli/chunks/{chunk-VD5IO5EO.js → chunk-KUHLTVWC.js} +1 -1
- package/dist/cli/chunks/{chunk-YDFL445W.js → chunk-LU2EDWQK.js} +2 -2
- package/dist/cli/chunks/chunk-LXZMP3VX.js +736 -0
- package/dist/cli/chunks/{chunk-3YUB5HER.js → chunk-LY7MFGBD.js} +196 -187
- package/dist/cli/chunks/chunk-MM56VPNE.js +180 -0
- package/dist/cli/chunks/{chunk-37TUN44F.js → chunk-MNQN7UZX.js} +2 -2
- package/dist/cli/chunks/{chunk-7DETTOPZ.js → chunk-MQZ53OR3.js} +2 -2
- package/dist/cli/chunks/{chunk-BYG36QC5.js → chunk-MT7UNBZ7.js} +2 -2
- package/dist/cli/chunks/{chunk-JES6R5KP.js → chunk-MZB2UV2O.js} +1 -1
- package/dist/cli/chunks/{chunk-QZMUXJHZ.js → chunk-MZMG6CUJ.js} +2 -2
- package/dist/cli/chunks/chunk-N5XOXPHZ.js +4 -0
- package/dist/cli/chunks/{chunk-RD2VGOUH.js → chunk-NBLDBVAW.js} +1 -1
- package/dist/cli/chunks/{chunk-HVU64GP5.js → chunk-ND4QTZOL.js} +2 -2
- package/dist/cli/chunks/{chunk-SQF6HRXR.js → chunk-NHUGHAY6.js} +1 -1
- package/dist/cli/chunks/{chunk-TUSSPKRM.js → chunk-NOHWJOBS.js} +1 -1
- package/dist/cli/chunks/{chunk-NVYBM3R4.js → chunk-O5V7RHVG.js} +2 -2
- package/dist/cli/chunks/{chunk-6VAZAHQG.js → chunk-O6MO5KMR.js} +2 -2
- package/dist/cli/chunks/{chunk-IUHB5GVS.js → chunk-OAZX6WFU.js} +2 -2
- package/dist/cli/chunks/{chunk-LSUILON7.js → chunk-OEPNNLR4.js} +1 -1
- package/dist/cli/chunks/{chunk-IJHCIXJC.js → chunk-OIDWDGLG.js} +2 -2
- package/dist/cli/chunks/{chunk-CPC7FN52.js → chunk-ON2UTP2U.js} +2 -2
- package/dist/cli/chunks/{chunk-UJWAWIRV.js → chunk-ONR2NXXD.js} +7 -7
- package/dist/cli/chunks/{chunk-7VFY7TUR.js → chunk-OXHF3L2T.js} +2 -2
- package/dist/cli/chunks/{chunk-QYOGD2VW.js → chunk-OZGIOKEA.js} +1 -1
- package/dist/cli/chunks/{chunk-WJTSY5MC.js → chunk-P2UPYSDJ.js} +1 -1
- package/dist/cli/chunks/{chunk-52L77RMG.js → chunk-P7XSPP5D.js} +2 -2
- package/dist/cli/chunks/{chunk-M5AEL7IS.js → chunk-PCJQCEBA.js} +2 -2
- package/dist/cli/chunks/chunk-PELENDDQ.js +2 -0
- package/dist/cli/chunks/{chunk-C3Z4VVHP.js → chunk-PYKY22GC.js} +5 -5
- package/dist/cli/chunks/{chunk-AF4XKLXO.js → chunk-Q3NSU24F.js} +2 -2
- package/dist/cli/chunks/chunk-Q6NTEICT.js +2 -0
- package/dist/cli/chunks/chunk-QFETNCNN.js +12 -0
- package/dist/cli/chunks/{chunk-KYA5LARK.js → chunk-QGOWNVVG.js} +1 -1
- package/dist/cli/chunks/{chunk-Y5L3ES4L.js → chunk-QPLSYEWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-F34OAHOM.js → chunk-QQFQDEUE.js} +2 -2
- package/dist/cli/chunks/{chunk-EFV4ADMO.js → chunk-QUORH2MG.js} +55 -79
- package/dist/cli/chunks/{chunk-QWUXCG2L.js → chunk-QVH5Y7AP.js} +1 -1
- package/dist/cli/chunks/{chunk-I2NENQ44.js → chunk-RC2A4JZ5.js} +2 -2
- package/dist/cli/chunks/{chunk-XZSMZHM2.js → chunk-RDGPXENG.js} +2 -2
- package/dist/cli/chunks/{chunk-N7H767TP.js → chunk-RKI3IQKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-LULD4JV2.js → chunk-RKUAWQOF.js} +2 -2
- package/dist/cli/chunks/chunk-RLW25X66.js +2 -0
- package/dist/cli/chunks/{chunk-UKGXWW64.js → chunk-ROVZSZCS.js} +3 -3
- package/dist/cli/chunks/{chunk-EOR2UT72.js → chunk-RT6O2HW2.js} +2 -2
- package/dist/cli/chunks/{chunk-75QJ5HWE.js → chunk-SM2YJ2AL.js} +2 -2
- package/dist/cli/chunks/{chunk-KO4FNAUR.js → chunk-SRPLERER.js} +3 -3
- package/dist/cli/chunks/{chunk-NRE4NAVA.js → chunk-T77GZF4B.js} +1 -1
- package/dist/cli/chunks/{chunk-R6IU3EWP.js → chunk-TFK2AYIN.js} +2 -2
- package/dist/cli/chunks/chunk-TW3SR4TS.js +2 -0
- package/dist/cli/chunks/{chunk-IYTLXUBO.js → chunk-TXSPBLBT.js} +2 -2
- package/dist/cli/chunks/chunk-UA7TDVL7.js +12 -0
- package/dist/cli/chunks/{chunk-WX6RRIGW.js → chunk-UBJG3IHT.js} +2 -2
- package/dist/cli/chunks/{chunk-NQI7FWCS.js → chunk-UFSVUBTR.js} +2 -2
- package/dist/cli/chunks/{chunk-FUNGTIF2.js → chunk-UOI6ULCH.js} +2 -2
- package/dist/cli/chunks/{chunk-HVXJC3OC.js → chunk-UYUJT6QO.js} +2 -2
- package/dist/cli/chunks/{chunk-KEY43ANX.js → chunk-V5AK56DA.js} +2 -2
- package/dist/cli/chunks/{chunk-XFPPERA2.js → chunk-V6RE4YRQ.js} +2 -2
- package/dist/cli/chunks/{chunk-DDCIYOGT.js → chunk-VW6FRMLW.js} +2 -2
- package/dist/cli/chunks/chunk-VXKWNRGA.js +2 -0
- package/dist/cli/chunks/{chunk-CVMNJSCB.js → chunk-VYDVI6FZ.js} +2 -2
- package/dist/cli/chunks/{chunk-7JZJJA7U.js → chunk-WF6UISKW.js} +3 -3
- package/dist/cli/chunks/{chunk-SQKW3B6B.js → chunk-WIH522AP.js} +1 -1
- package/dist/cli/chunks/{chunk-KLTP5IDB.js → chunk-WOV6XI3A.js} +1 -1
- package/dist/cli/chunks/{chunk-VTOVWHEM.js → chunk-X7ADKL7T.js} +2 -2
- package/dist/cli/chunks/{chunk-SX4JLSLV.js → chunk-XBYQ2BS4.js} +2 -2
- package/dist/cli/chunks/{chunk-E4EYPYR3.js → chunk-XL5KIYE3.js} +2 -2
- package/dist/cli/chunks/{chunk-3VIXOHMS.js → chunk-XWYELBZS.js} +1 -1
- package/dist/cli/chunks/{chunk-YQGPQBCX.js → chunk-XYLQZWF6.js} +2 -2
- package/dist/cli/chunks/{chunk-XEZIIQYJ.js → chunk-Y6AKKQIQ.js} +1 -1
- package/dist/cli/chunks/{chunk-BJPL6THQ.js → chunk-YMW57PEL.js} +1 -1
- package/dist/cli/chunks/{chunk-JSZ663MU.js → chunk-YO4ESCB4.js} +1 -1
- package/dist/cli/chunks/{chunk-AMMQOV35.js → chunk-YRHTQZU4.js} +2 -2
- package/dist/cli/chunks/chunk-Z4Q5PCRZ.js +65 -0
- package/dist/cli/chunks/{chunk-RKOUXVZZ.js → chunk-ZELWDJXT.js} +2 -2
- package/dist/cli/chunks/{chunk-QRCIZFNK.js → chunk-ZQZD55MN.js} +2 -2
- package/dist/cli/chunks/{chunk-UMGFMKDW.js → chunk-ZS4XVJGV.js} +2 -2
- package/dist/cli/chunks/{chunk-6ITZZIQX.js → chunk-ZUB5YOCM.js} +2 -2
- package/dist/cli/chunks/chunk-ZUOVNFXK.js +2 -0
- package/dist/cli/chunks/{chunk-RGGK6VZ7.js → chunk-ZWEKAEEV.js} +1 -1
- package/dist/cli/chunks/{ci-RACDAJMR.js → ci-J3TDK5RA.js} +8 -8
- package/dist/cli/chunks/{ci-output-EHRSZBKG.js → ci-output-RLS32FUY.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-GBV7M5XG.js → circuit-breaker-MRCC7WCM.js} +2 -2
- package/dist/cli/chunks/claude-flow-setup-LIZCEKDF.js +2 -0
- package/dist/cli/chunks/client-3BD2DI4N.js +2 -0
- package/dist/cli/chunks/{cline-installer-W4NMXJSG.js → cline-installer-T7H6R2RC.js} +2 -2
- package/dist/cli/chunks/{code-JWXJMYXB.js → code-XMBLI7OF.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-RVI2IFTM.js → code-index-extractor-QS7BYLEX.js} +2 -2
- package/dist/cli/chunks/{codex-installer-3BORJINH.js → codex-installer-6PGT5FM6.js} +6 -6
- package/dist/cli/chunks/{completions-A55NCTAO.js → completions-2A3WRXY2.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-JCXHGGLY.js → complexity-analyzer-23HOOGJ7.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-PUVFMGYW.js → continuedev-installer-4FSF7B3N.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-4DCMYWHB.js → copilot-installer-A5GRQQUU.js} +2 -2
- package/dist/cli/chunks/core-handlers-C3H2ZCS2.js +2 -0
- package/dist/cli/chunks/{cost-tracker-5TV2GGKY.js → cost-tracker-Z4STQ5VB.js} +2 -2
- package/dist/cli/chunks/{coverage-NNWM7TX3.js → coverage-NUPP6KZZ.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-JCQ7SWDP.js +2 -0
- package/dist/cli/chunks/{cursor-installer-4NCHGJGK.js → cursor-installer-FVJ7ROPJ.js} +2 -2
- package/dist/cli/chunks/{daemon-QIKCXKWO.js → daemon-7ZZA2MMN.js} +4 -4
- package/dist/cli/chunks/{daemon-T4JO4IXP.js → daemon-D662EX5N.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-RPAAIDAD.js → dag-attention-scheduler-IB4TQ2KA.js} +2 -2
- package/dist/cli/chunks/{detect-SBEEVDSN.js → detect-LGLBZN4I.js} +2 -2
- package/dist/cli/chunks/{dist-node-ZHI6NCSU.js → dist-node-Z3OL42YE.js} +2 -2
- package/dist/cli/chunks/{domain-handler-LBC3GJ7Z.js → domain-handler-L3CLNL7U.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-H6IZ5USZ.js → domain-plugins-GQ3V5X6L.js} +2 -2
- package/dist/cli/chunks/domain-transfer-MFCI76IY.js +2 -0
- package/dist/cli/chunks/dream-FTP33IJB.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-AHTR7CRU.js → embed-and-insert-pattern-UGD6USYH.js} +2 -2
- package/dist/cli/chunks/{eval-DZU2KISM.js → eval-3B7UIYGY.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-5IQCWKSL.js → experience-capture-middleware-3RQ4NYY3.js} +3 -3
- package/dist/cli/chunks/{fast-paths-2KLDUWCY.js → fast-paths-QOSAEPYD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-7AC3XDZA.js → feature-flags-3S5TH6P4.js} +2 -2
- package/dist/cli/chunks/{feature-flags-N6UAEZY4.js → feature-flags-TLF4NKOH.js} +2 -2
- package/dist/cli/chunks/{file-discovery-5SDIW4V2.js → file-discovery-AEVMJRNB.js} +2 -2
- package/dist/cli/chunks/{fleet-ZIQCAZ2Y.js → fleet-E6WTXWFL.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-DUMBZJEV.js → gnn-wrapper-MCKH3AUU.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-6HVM6ZMR.js → heartbeat-handler-U7XENHRR.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-HXBJVJL2.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-TU6WG2ME.js +2 -0
- package/dist/cli/chunks/hnsw-index-MS5KODD7.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-5DRL5FLX.js → hnsw-legacy-bridge-5GW4SAEI.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-GW67GTCL.js → hnswlib-node-7BLZBK5T.js} +2 -2
- package/dist/cli/chunks/{hooks-QHH6FVO4.js → hooks-F3O2SB6H.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-HT45LBHC.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-7XDCCVG2.js → hypergraph-engine-PV4EKXHB.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-QHF7NOU5.js → hypergraph-handler-VOWO5ZTW.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-AP4AGTG5.js +2 -0
- package/dist/cli/chunks/{init-handler-5UIVOM7K.js → init-handler-ENJ5ONJX.js} +16 -14
- package/dist/cli/chunks/init-wizard-I5DFZUQL.js +2 -0
- package/dist/cli/chunks/kernel-MISPSPPA.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-TGGV6K5Q.js → kilocode-installer-HNNJOOPE.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-4XYBHZWW.js → kiro-installer-UZBIQ3IC.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-L26JESGE.js +2 -0
- package/dist/cli/chunks/{learning-STE5W6BS.js → learning-YMLCVFUT.js} +3 -3
- package/dist/cli/chunks/{llm-router-NKF7J3RI.js → llm-router-YWTARCCT.js} +4 -4
- package/dist/cli/chunks/llm-router-service-MWGC43ZA.js +2 -0
- package/dist/cli/chunks/{load-B2T77UJQ.js → load-DKE3F3IP.js} +2 -2
- package/dist/cli/chunks/load-test-H5ISNNM5.js +2 -0
- package/dist/cli/chunks/mcp-5PSGIUCW.js +2 -0
- package/dist/cli/chunks/{memory-WRFZKG56.js → memory-3L3O6JMM.js} +5 -5
- package/dist/cli/chunks/memory-backend-HWDNOBKW.js +2 -0
- package/dist/cli/chunks/memory-handlers-ZFDVQZM5.js +2 -0
- package/dist/cli/chunks/multi-model-executor-AEEO7IA4.js +14 -0
- package/dist/cli/chunks/{opencode-installer-J36EMQU7.js → opencode-installer-ABBO355U.js} +2 -2
- package/dist/cli/chunks/orchestrator-E36Q7MKE.js +393 -0
- package/dist/cli/chunks/pattern-null-store-GQP6ICWK.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-BVMTWI3E.js → pattern-usage-recorder-H4XKSID4.js} +2 -2
- package/dist/cli/chunks/{pipeline-OWAHDUAQ.js → pipeline-BGFEHXIN.js} +2 -2
- package/dist/cli/chunks/{platform-ANGBFWBV.js → platform-GK7ZVDJI.js} +2 -2
- package/dist/cli/chunks/{plugin-OO7ON2YW.js → plugin-CAH2CKI6.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-HFG3BXWU.js → prime-radiant-advanced-wasm-M5EYRONA.js} +2 -2
- package/dist/cli/chunks/{project-root-LNOYVTYY.js → project-root-BSNZC243.js} +2 -2
- package/dist/cli/chunks/protocol-executor-AD5A4DAI.js +2 -0
- package/dist/cli/chunks/{protocol-handler-CE3Q6LY4.js → protocol-handler-JDSSC2SF.js} +2 -2
- package/dist/cli/chunks/{prove-7XPN53PY.js → prove-ANPTOZJE.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-W3Z2PKTR.js +2 -0
- package/dist/cli/chunks/{quality-TT23JRFX.js → quality-SXWGYRQR.js} +2 -2
- package/dist/cli/chunks/{quality-gate-PPPRP255.js → quality-gate-GYNCA4ZY.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-HQRHLIJX.js +2 -0
- package/dist/cli/chunks/{real-embeddings-EYNZIFJE.js → real-embeddings-WSRYAOZM.js} +2 -2
- package/dist/cli/chunks/{ref-validation-QQR64ZXD.js → ref-validation-AZ3LRWEK.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-UIGS7ZJD.js → roocode-installer-2QKGFIEU.js} +2 -2
- package/dist/cli/chunks/router-MTP5LH4H.js +2 -0
- package/dist/cli/chunks/routing-feedback-GWETVB4L.js +2 -0
- package/dist/cli/chunks/{routing-handler-6AENUIRG.js → routing-handler-UYDC5MMD.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-5AWMEV34.js → ruvector-commands-QXADPVEY.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-4UE5S7WP.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-PHH3HF4Q.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-NWRJ7C22.js → rvf-migration-coordinator-GD4NBFKT.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-KTLZBUWV.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-ISKRP563.js → rvf-store-integrity-7SXG66IL.js} +2 -2
- package/dist/cli/chunks/safe-db-FWWGAPVE.js +2 -0
- package/dist/cli/chunks/schedule-TPA4V4D5.js +2 -0
- package/dist/cli/chunks/scheduler-5ZTEPNDD.js +2 -0
- package/dist/cli/chunks/{security-325A7FMB.js → security-YKB622PK.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-KMLAV7JK.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-THFDYS2Z.js → shared-rvf-dual-writer-OYY27DFV.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HPTT624C.js +2 -0
- package/dist/cli/chunks/{standalone-memory-UD4MJ6GZ.js → standalone-memory-2DOABVLC.js} +2 -2
- package/dist/cli/chunks/{status-handler-CPFTN4XL.js → status-handler-EXRKETV7.js} +2 -2
- package/dist/cli/chunks/{structural-health-2MG2IVBL.js → structural-health-2SKK6DU6.js} +2 -2
- package/dist/cli/chunks/sync-DQ2YUNI6.js +2 -0
- package/dist/cli/chunks/{sync-EE4VVKOW.js → sync-UW7SX7GO.js} +2 -2
- package/dist/cli/chunks/{task-handler-7H5OYJG4.js → task-handler-LYQ6WYUY.js} +2 -2
- package/dist/cli/chunks/task-handlers-DIJO232S.js +9 -0
- package/dist/cli/chunks/test-WRHZMUCW.js +33 -0
- package/dist/cli/chunks/{test-scheduling-CHQ4ZLLJ.js → test-scheduling-HI23RXFK.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-23SA6SWZ.js +2 -0
- package/dist/cli/chunks/{token-usage-EBXUJNRB.js → token-usage-M7RRDPXO.js} +2 -2
- package/dist/cli/chunks/{transformers-ZEKS2OJZ.js → transformers-4TC35KKS.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-F4LTKAWD.js +2 -0
- package/dist/cli/chunks/{types-KYAA5VLV.js → types-NBXV6LXQ.js} +2 -2
- package/dist/cli/chunks/unified-memory-OVFEPRPS.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-KKRSCZHR.js +2 -0
- package/dist/cli/chunks/unified-persistence-7GLR4RI3.js +2 -0
- package/dist/cli/chunks/{upgrade-UJBJ5AYM.js → upgrade-4BGOU5RM.js} +2 -2
- package/dist/cli/chunks/{validate-RUV6YMWS.js → validate-EDWAR63H.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-IVEVMGVM.js → validate-swarm-VI72CPR7.js} +2 -2
- package/dist/cli/chunks/visual-security-2FUM5GLI.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-AVWA6HKE.js → web-tree-sitter-Y5XBRQXF.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-DAH7HI2W.js → windsurf-installer-VEX23WAF.js} +2 -2
- package/dist/cli/chunks/witness-chain-3YNL6YGY.js +2 -0
- package/dist/cli/chunks/witness-chain-MH6GA5L6.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-MJZGZRWT.js +2 -0
- package/dist/cli/chunks/witness-chain-verifier-TTJYXTBE.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-JSTBMG43.js → witness-key-manager-EM6YXYOY.js} +2 -2
- package/dist/cli/chunks/{workflow-TWOIA6LZ.js → workflow-2RBDOM7V.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-H6G65YKU.js +2 -0
- package/dist/cli/chunks/wrappers-5OTAVVOV.js +2 -0
- package/dist/cli/commands/audit.d.ts +20 -2
- package/dist/cli/commands/audit.js +158 -16
- package/dist/cli/commands/ci.js +1 -1
- package/dist/cli/commands/claude-flow-setup.js +5 -4
- package/dist/cli/commands/test.js +18 -3
- package/dist/cli/handlers/init-handler.d.ts +2 -0
- package/dist/cli/handlers/init-handler.js +8 -2
- package/dist/cli/index.js +10 -1
- package/dist/coordination/handlers/test-execution-handlers.js +13 -8
- package/dist/coordination/index.d.ts +1 -1
- package/dist/coordination/queen-event-handlers.js +9 -6
- package/dist/coordination/result-saver.js +1 -1
- package/dist/coordination/services/index.d.ts +1 -1
- package/dist/coordination/services/task-audit-logger.d.ts +38 -13
- package/dist/coordination/services/task-audit-logger.js +33 -5
- package/dist/coordination/task-executor.d.ts +5 -0
- package/dist/coordination/task-executor.js +10 -5
- package/dist/domains/test-generation/coordinator.js +6 -5
- package/dist/domains/test-generation/interfaces.d.ts +11 -1
- package/dist/domains/test-generation/services/behavior-example-validation.d.ts +36 -0
- package/dist/domains/test-generation/services/behavior-example-validation.js +89 -0
- package/dist/domains/test-generation/services/behavior-examples.d.ts +8 -0
- package/dist/domains/test-generation/services/behavior-examples.js +65 -0
- package/dist/domains/test-generation/services/test-generator.d.ts +1 -1
- package/dist/domains/test-generation/services/test-generator.js +59 -30
- package/dist/domains/visual-accessibility/services/axe-core-audit.d.ts +0 -15
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +12 -10
- package/dist/init/agents-installer.d.ts +4 -0
- package/dist/init/agents-installer.js +24 -11
- package/dist/init/browser-engine-installer.d.ts +5 -5
- package/dist/init/browser-engine-installer.js +28 -6
- package/dist/init/codex-installer.js +4 -2
- package/dist/init/idempotent-write.d.ts +53 -0
- package/dist/init/idempotent-write.js +160 -0
- package/dist/init/init-wizard.d.ts +2 -0
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/05-learning.js +3 -1
- package/dist/init/phases/07-hooks.js +32 -16
- package/dist/init/phases/08-mcp.js +4 -2
- package/dist/init/phases/09-assets.js +8 -18
- package/dist/init/phases/10-workers.js +7 -5
- package/dist/init/phases/12-verification.js +7 -2
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/init/project-analyzer.d.ts +9 -0
- package/dist/init/project-analyzer.js +20 -1
- package/dist/init/self-configurator.d.ts +5 -3
- package/dist/init/self-configurator.js +18 -29
- package/dist/init/skills-installer.js +4 -2
- package/dist/init/types.d.ts +6 -0
- package/dist/init/types.js +20 -24
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +2 -5
- package/dist/integrations/coherence/coherence-service.js +84 -24
- package/dist/integrations/coherence/vote-tally.d.ts +38 -0
- package/dist/integrations/coherence/vote-tally.js +39 -0
- package/dist/integrations/ruvector/shared-rvf-adapter.d.ts +23 -0
- package/dist/integrations/ruvector/shared-rvf-adapter.js +24 -0
- package/dist/integrations/vibium/client.d.ts +1 -0
- package/dist/integrations/vibium/client.js +24 -11
- package/dist/integrations/vibium/runtime.d.ts +14 -0
- package/dist/integrations/vibium/runtime.js +94 -0
- package/dist/kernel/kernel.js +3 -2
- package/dist/kernel/pattern-fts-self-heal.d.ts +63 -0
- package/dist/kernel/pattern-fts-self-heal.js +193 -0
- package/dist/kernel/process-lifecycle.d.ts +60 -0
- package/dist/kernel/process-lifecycle.js +91 -0
- package/dist/kernel/unified-memory-schemas.d.ts +15 -1
- package/dist/kernel/unified-memory-schemas.js +53 -25
- package/dist/kernel/unified-memory.js +31 -34
- package/dist/kernel/unified-persistence.js +12 -6
- package/dist/learning/experience-capture.d.ts +2 -1
- package/dist/learning/experience-capture.js +23 -8
- package/dist/learning/pattern-store.d.ts +12 -1
- package/dist/learning/pattern-store.js +45 -30
- package/dist/learning/qe-patterns.d.ts +12 -0
- package/dist/learning/qe-patterns.js +7 -1
- package/dist/learning/qe-reasoning-bank.d.ts +1 -0
- package/dist/learning/qe-reasoning-bank.js +17 -4
- package/dist/learning/real-qe-reasoning-bank.d.ts +9 -4
- package/dist/learning/real-qe-reasoning-bank.js +28 -4
- package/dist/learning/rvf-pattern-store.js +36 -23
- package/dist/learning/sqlite-persistence.d.ts +8 -1
- package/dist/learning/sqlite-persistence.js +58 -33
- package/dist/logging/console-logger.d.ts +2 -5
- package/dist/logging/console-logger.js +10 -46
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.js +1 -0
- package/dist/logging/redaction.d.ts +27 -0
- package/dist/logging/redaction.js +170 -0
- package/dist/mcp/bundle.js +522 -545
- package/dist/mcp/entry.js +52 -6
- package/dist/mcp/handlers/core-handlers.js +5 -4
- package/dist/mcp/handlers/domain-handler-configs.js +12 -4
- package/dist/mcp/handlers/task-handlers.js +11 -7
- package/dist/mcp/protocol-server.js +20 -4
- package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
- package/dist/mcp/services/reasoning-bank-service.js +5 -1
- package/dist/mcp/tools/base.d.ts +9 -2
- package/dist/mcp/tools/base.js +7 -0
- package/dist/mcp/tools/coherence/consensus.js +51 -2
- package/dist/mcp/tools/planning/goap-plan.d.ts +20 -7
- package/dist/mcp/tools/planning/goap-plan.js +92 -20
- package/dist/mcp/tools/planning/goap-status.d.ts +37 -12
- package/dist/mcp/tools/planning/goap-status.js +52 -23
- package/dist/mcp/tools/planning/world-state.d.ts +101 -0
- package/dist/mcp/tools/planning/world-state.js +274 -0
- package/dist/mcp/tools/test-execution/e2e-execute.js +9 -1
- package/dist/mcp/tools/test-generation/generate.d.ts +6 -1
- package/dist/mcp/tools/test-generation/generate.js +8 -0
- package/dist/mcp/types.d.ts +10 -4
- package/dist/planning/goap-planner.d.ts +60 -4
- package/dist/planning/goap-planner.js +218 -60
- package/dist/planning/index.d.ts +1 -1
- package/dist/planning/index.js +1 -1
- package/dist/planning/plan-executor.d.ts +20 -1
- package/dist/planning/plan-executor.js +209 -100
- package/dist/planning/types.d.ts +16 -0
- package/dist/planning/types.js +17 -0
- package/dist/shared/error-utils.d.ts +15 -0
- package/dist/shared/error-utils.js +21 -0
- package/dist/shared/events/domain-events.d.ts +2 -1
- package/package.json +10 -6
- package/dist/cli/chunks/adapter-IYC62SXA.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-EDNKP3SP.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-LLOU2IXD.js +0 -2
- package/dist/cli/chunks/audit-CVZQMF55.js +0 -3
- package/dist/cli/chunks/base-P3Z4IKCT.js +0 -2
- package/dist/cli/chunks/browser-workflow-YYHQQ25X.js +0 -2
- package/dist/cli/chunks/chunk-3EZ5DR2R.js +0 -21
- package/dist/cli/chunks/chunk-5WOSWNDN.js +0 -2
- package/dist/cli/chunks/chunk-7CD7PBHY.js +0 -3
- package/dist/cli/chunks/chunk-7X7JYWT4.js +0 -27
- package/dist/cli/chunks/chunk-CZO4BJG5.js +0 -2
- package/dist/cli/chunks/chunk-J27F4NSB.js +0 -2
- package/dist/cli/chunks/chunk-J5UNP6W3.js +0 -2
- package/dist/cli/chunks/chunk-MI5Q55DG.js +0 -65
- package/dist/cli/chunks/chunk-TY5WC3FT.js +0 -12
- package/dist/cli/chunks/chunk-UDHVCKGA.js +0 -5
- package/dist/cli/chunks/chunk-XQSIRBKT.js +0 -180
- package/dist/cli/chunks/chunk-YXP6BKGS.js +0 -730
- package/dist/cli/chunks/chunk-ZBABIZ2D.js +0 -2
- package/dist/cli/chunks/chunk-ZCWERUYB.js +0 -12
- package/dist/cli/chunks/claude-flow-setup-5LVJOFKP.js +0 -2
- package/dist/cli/chunks/client-HUVFA5PF.js +0 -2
- package/dist/cli/chunks/core-handlers-UEXO3VAA.js +0 -2
- package/dist/cli/chunks/cross-domain-router-ODU5IZD6.js +0 -2
- package/dist/cli/chunks/domain-transfer-JZA5TMW3.js +0 -2
- package/dist/cli/chunks/dream-HE3OX42F.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-QUIFGGLX.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-42KB37KP.js +0 -2
- package/dist/cli/chunks/hnsw-index-T2PGO77J.js +0 -2
- package/dist/cli/chunks/hybrid-backend-FRNWYRKH.js +0 -2
- package/dist/cli/chunks/impact-analyzer-A5QYOYBR.js +0 -2
- package/dist/cli/chunks/init-wizard-XBU674YH.js +0 -2
- package/dist/cli/chunks/kernel-DV5MTNZD.js +0 -2
- package/dist/cli/chunks/knowledge-graph-4ACGVJQK.js +0 -2
- package/dist/cli/chunks/llm-router-service-PSMASERT.js +0 -2
- package/dist/cli/chunks/load-test-MRUO2VPF.js +0 -2
- package/dist/cli/chunks/mcp-JGSFCEMH.js +0 -2
- package/dist/cli/chunks/memory-backend-2MPGI6JW.js +0 -2
- package/dist/cli/chunks/memory-handlers-XT4HMITB.js +0 -2
- package/dist/cli/chunks/multi-model-executor-26Q5BSVG.js +0 -14
- package/dist/cli/chunks/orchestrator-D5IFV65I.js +0 -393
- package/dist/cli/chunks/pattern-null-store-TGWUL237.js +0 -2
- package/dist/cli/chunks/protocol-executor-GEVH5KD6.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-DJ2JL6QB.js +0 -2
- package/dist/cli/chunks/queen-coordinator-F7E3AS26.js +0 -2
- package/dist/cli/chunks/router-OZH3QSAU.js +0 -2
- package/dist/cli/chunks/routing-feedback-J2E3ADZB.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-HK525Y5Y.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-Q7FB3BKR.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-5ZRCGUI6.js +0 -2
- package/dist/cli/chunks/safe-db-3OYEPVEH.js +0 -2
- package/dist/cli/chunks/schedule-AG4C2EIQ.js +0 -2
- package/dist/cli/chunks/scheduler-SQS2CZFZ.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-NFL6QSZ6.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-MAKDFSHC.js +0 -2
- package/dist/cli/chunks/sync-MBTW5XBF.js +0 -2
- package/dist/cli/chunks/task-handlers-NH4GJHCJ.js +0 -9
- package/dist/cli/chunks/test-MPHGT4T6.js +0 -33
- package/dist/cli/chunks/token-bootstrap-SSDCYEKK.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-J6ZMAK37.js +0 -2
- package/dist/cli/chunks/unified-memory-DDWMC435.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-4JA7SGBK.js +0 -2
- package/dist/cli/chunks/unified-persistence-F6OSNTXY.js +0 -2
- package/dist/cli/chunks/vibium-HOGMFJ2Z.js +0 -2
- package/dist/cli/chunks/visual-security-25SMBIYT.js +0 -2
- package/dist/cli/chunks/witness-chain-PJOQPFUX.js +0 -2
- package/dist/cli/chunks/witness-chain-ZW6KKUZU.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-UKSIDM7Q.js +0 -2
- package/dist/cli/chunks/wrappers-UR7BLXKV.js +0 -2
|
@@ -24,6 +24,7 @@ const DEFAULT_CONFIG = {
|
|
|
24
24
|
maxRetries: 2,
|
|
25
25
|
stepTimeoutMs: 60000,
|
|
26
26
|
replanOnFailure: true,
|
|
27
|
+
maxReplans: 3,
|
|
27
28
|
parallelExecution: false,
|
|
28
29
|
recordWorldState: true,
|
|
29
30
|
useUnified: true, // ADR-046: Default to unified storage
|
|
@@ -44,6 +45,24 @@ function safeStringify(value, maxLength = 2000) {
|
|
|
44
45
|
return String(value);
|
|
45
46
|
}
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Issue #535: render the `error` of a domain Result err as text — an Error's
|
|
50
|
+
* message, a string as-is, else a (truncated) JSON rendering.
|
|
51
|
+
*/
|
|
52
|
+
function describeDomainError(reason) {
|
|
53
|
+
if (reason === undefined || reason === null)
|
|
54
|
+
return 'unknown error';
|
|
55
|
+
if (reason instanceof Error || typeof reason === 'string')
|
|
56
|
+
return toErrorMessage(reason);
|
|
57
|
+
const message = reason.message;
|
|
58
|
+
return typeof message === 'string' ? message : safeStringify(reason, 500);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Issue #535: goap_execution_steps marker row recording that an execution
|
|
62
|
+
* was cancelled (see persistExecutionResult). Excluded from step lists.
|
|
63
|
+
*/
|
|
64
|
+
const CANCELLED_MARKER_ACTION_ID = '__execution_cancelled__';
|
|
65
|
+
const CANCELLED_MARKER_STATUS = 'cancelled';
|
|
47
66
|
// ============================================================================
|
|
48
67
|
// Plan Executor Class
|
|
49
68
|
// ============================================================================
|
|
@@ -200,9 +219,30 @@ export class PlanExecutor {
|
|
|
200
219
|
*/
|
|
201
220
|
async executeWithCallbacks(plan, onStepStart, onStepComplete, initialState) {
|
|
202
221
|
await this.initialize();
|
|
203
|
-
const startTime = Date.now();
|
|
204
222
|
const executionId = `exec-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
205
223
|
this.currentExecution = { planId: plan.id, cancelled: false };
|
|
224
|
+
try {
|
|
225
|
+
const result = await this.runPlan(plan, onStepStart, onStepComplete, initialState, {
|
|
226
|
+
excludedActions: new Set(),
|
|
227
|
+
replanDepth: 0,
|
|
228
|
+
});
|
|
229
|
+
// Persist once per top-level execution. Issue #535: replanned
|
|
230
|
+
// sub-plans used to persist their own steps AND hand them back to the
|
|
231
|
+
// parent, which persisted them again under the same step ids
|
|
232
|
+
// ("UNIQUE constraint failed: goap_execution_steps.id").
|
|
233
|
+
await this.persistExecutionResult(executionId, result);
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
finally {
|
|
237
|
+
this.currentExecution = null;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Run a plan's steps (and any replacement plans after a failure) without
|
|
242
|
+
* persisting or resetting execution tracking — see executeWithCallbacks.
|
|
243
|
+
*/
|
|
244
|
+
async runPlan(plan, onStepStart, onStepComplete, initialState, replan) {
|
|
245
|
+
const startTime = Date.now();
|
|
206
246
|
const result = {
|
|
207
247
|
planId: plan.id,
|
|
208
248
|
status: 'completed',
|
|
@@ -222,106 +262,115 @@ export class PlanExecutor {
|
|
|
222
262
|
stepOrder: index,
|
|
223
263
|
status: 'pending',
|
|
224
264
|
}));
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
265
|
+
for (const step of steps) {
|
|
266
|
+
// Check for cancellation
|
|
267
|
+
if (this.currentExecution?.cancelled) {
|
|
268
|
+
result.status = 'cancelled';
|
|
269
|
+
result.error = 'Execution was cancelled';
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
// Record world state before execution
|
|
273
|
+
if (this.config.recordWorldState) {
|
|
274
|
+
step.worldStateBefore = this.cloneState(currentState);
|
|
275
|
+
}
|
|
276
|
+
// Notify step start
|
|
277
|
+
onStepStart(step);
|
|
278
|
+
// Execute with retries
|
|
279
|
+
let success = false;
|
|
280
|
+
let lastError;
|
|
281
|
+
let retries = 0;
|
|
282
|
+
let output;
|
|
283
|
+
let agentId;
|
|
284
|
+
const stepStartTime = Date.now();
|
|
285
|
+
for (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {
|
|
286
|
+
const execResult = await this.executeStep(step, currentState);
|
|
287
|
+
if (execResult.success) {
|
|
288
|
+
success = true;
|
|
289
|
+
currentState = execResult.newState;
|
|
290
|
+
output = execResult.output;
|
|
291
|
+
agentId = execResult.agentId;
|
|
231
292
|
break;
|
|
232
293
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
//
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
let success = false;
|
|
241
|
-
let lastError;
|
|
242
|
-
let retries = 0;
|
|
243
|
-
let output;
|
|
244
|
-
let agentId;
|
|
245
|
-
const stepStartTime = Date.now();
|
|
246
|
-
for (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {
|
|
247
|
-
const execResult = await this.executeStep(step, currentState);
|
|
248
|
-
if (execResult.success) {
|
|
249
|
-
success = true;
|
|
250
|
-
currentState = execResult.newState;
|
|
251
|
-
output = execResult.output;
|
|
252
|
-
agentId = execResult.agentId;
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
255
|
-
lastError = execResult.error;
|
|
256
|
-
retries = attempt;
|
|
257
|
-
// Wait before retry (exponential backoff)
|
|
258
|
-
if (attempt < this.config.maxRetries) {
|
|
259
|
-
await this.delay(Math.min(1000 * Math.pow(2, attempt), 5000));
|
|
260
|
-
}
|
|
294
|
+
lastError = execResult.error;
|
|
295
|
+
retries = attempt;
|
|
296
|
+
// Issue #535: deterministic failures (no implementation, domain
|
|
297
|
+
// not loaded, missing method, unmet preconditions) cannot succeed
|
|
298
|
+
// on retry — don't burn seconds of backoff on them.
|
|
299
|
+
if (execResult.retryable === false) {
|
|
300
|
+
break;
|
|
261
301
|
}
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
status: success ? 'completed' : 'failed',
|
|
266
|
-
retries,
|
|
267
|
-
startedAt: new Date(stepStartTime),
|
|
268
|
-
completedAt: new Date(),
|
|
269
|
-
durationMs: Date.now() - stepStartTime,
|
|
270
|
-
agentId,
|
|
271
|
-
agentOutput: output,
|
|
272
|
-
worldStateAfter: this.config.recordWorldState
|
|
273
|
-
? this.cloneState(currentState)
|
|
274
|
-
: undefined,
|
|
275
|
-
error: lastError,
|
|
276
|
-
};
|
|
277
|
-
result.steps.push(executedStep);
|
|
278
|
-
onStepComplete(executedStep);
|
|
279
|
-
if (success) {
|
|
280
|
-
result.stepsCompleted++;
|
|
281
|
-
await this.updateActionStats(step.action.id, true, executedStep.durationMs ?? 0);
|
|
302
|
+
// Wait before retry (exponential backoff)
|
|
303
|
+
if (attempt < this.config.maxRetries) {
|
|
304
|
+
await this.delay(Math.min(1000 * Math.pow(2, attempt), 5000));
|
|
282
305
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
306
|
+
}
|
|
307
|
+
// Record executed step
|
|
308
|
+
const executedStep = {
|
|
309
|
+
...step,
|
|
310
|
+
status: success ? 'completed' : 'failed',
|
|
311
|
+
retries,
|
|
312
|
+
startedAt: new Date(stepStartTime),
|
|
313
|
+
completedAt: new Date(),
|
|
314
|
+
durationMs: Date.now() - stepStartTime,
|
|
315
|
+
agentId,
|
|
316
|
+
agentOutput: output,
|
|
317
|
+
worldStateAfter: this.config.recordWorldState
|
|
318
|
+
? this.cloneState(currentState)
|
|
319
|
+
: undefined,
|
|
320
|
+
error: lastError,
|
|
321
|
+
};
|
|
322
|
+
result.steps.push(executedStep);
|
|
323
|
+
onStepComplete(executedStep);
|
|
324
|
+
if (success) {
|
|
325
|
+
result.stepsCompleted++;
|
|
326
|
+
await this.updateActionStats(step.action.id, true, executedStep.durationMs ?? 0);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
result.stepsFailed++;
|
|
330
|
+
await this.updateActionStats(step.action.id, false, 0);
|
|
331
|
+
// Try to replan if configured (bounded — issue #535)
|
|
332
|
+
const maxReplans = this.config.maxReplans ?? 3;
|
|
333
|
+
if (this.config.replanOnFailure && replan.replanDepth < maxReplans) {
|
|
334
|
+
// Accumulate exclusions across successive replans so a chain of
|
|
335
|
+
// failures can't bounce back to an action that already failed.
|
|
336
|
+
replan.excludedActions.add(step.action.id);
|
|
337
|
+
const newPlan = await this.replanFromFailure(plan, step.stepOrder, currentState, [...replan.excludedActions]);
|
|
338
|
+
if (newPlan) {
|
|
339
|
+
const replanResult = await this.runPlan(newPlan, onStepStart, onStepComplete, currentState, { excludedActions: replan.excludedActions, replanDepth: replan.replanDepth + 1 });
|
|
340
|
+
result.steps.push(...replanResult.steps);
|
|
341
|
+
result.stepsCompleted += replanResult.stepsCompleted;
|
|
342
|
+
result.stepsFailed += replanResult.stepsFailed;
|
|
343
|
+
if (replanResult.status === 'completed' && replanResult.finalWorldState) {
|
|
344
|
+
currentState = replanResult.finalWorldState;
|
|
302
345
|
}
|
|
303
346
|
else {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
347
|
+
// The goal was not reached — report it as such rather than
|
|
348
|
+
// the old 'partial' ("Replanning partially succeeded").
|
|
349
|
+
result.status = replanResult.status === 'cancelled' ? 'cancelled' : 'failed';
|
|
350
|
+
result.error =
|
|
351
|
+
`Step ${step.stepOrder} failed (${lastError}); replanning did not recover: ` +
|
|
352
|
+
`${replanResult.error || 'unknown error'}`;
|
|
307
353
|
}
|
|
354
|
+
// The replacement plan supersedes the rest of this plan —
|
|
355
|
+
// don't keep executing stale steps after it.
|
|
356
|
+
break;
|
|
308
357
|
}
|
|
309
358
|
else {
|
|
310
359
|
result.status = 'failed';
|
|
311
|
-
result.error = `Step ${step.stepOrder} failed: ${lastError}`;
|
|
360
|
+
result.error = `Step ${step.stepOrder} failed and replanning unsuccessful: ${lastError}`;
|
|
312
361
|
break;
|
|
313
362
|
}
|
|
314
363
|
}
|
|
364
|
+
else {
|
|
365
|
+
result.status = 'failed';
|
|
366
|
+
result.error = `Step ${step.stepOrder} failed: ${lastError}`;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
315
369
|
}
|
|
316
|
-
result.finalWorldState = currentState;
|
|
317
|
-
result.totalDurationMs = Date.now() - startTime;
|
|
318
|
-
// Persist execution result
|
|
319
|
-
await this.persistExecutionResult(executionId, result);
|
|
320
|
-
return result;
|
|
321
|
-
}
|
|
322
|
-
finally {
|
|
323
|
-
this.currentExecution = null;
|
|
324
370
|
}
|
|
371
|
+
result.finalWorldState = currentState;
|
|
372
|
+
result.totalDurationMs = Date.now() - startTime;
|
|
373
|
+
return result;
|
|
325
374
|
}
|
|
326
375
|
/**
|
|
327
376
|
* Execute a single step
|
|
@@ -334,6 +383,7 @@ export class PlanExecutor {
|
|
|
334
383
|
success: false,
|
|
335
384
|
newState: currentState,
|
|
336
385
|
error: `Preconditions not met for action: ${action.name}`,
|
|
386
|
+
retryable: false,
|
|
337
387
|
};
|
|
338
388
|
}
|
|
339
389
|
// A14: an action explicitly marked as having no real domain backing
|
|
@@ -347,6 +397,7 @@ export class PlanExecutor {
|
|
|
347
397
|
success: false,
|
|
348
398
|
newState: currentState,
|
|
349
399
|
error: `Action '${action.name}' has no real implementation yet (not simulated — see GOAPAction.implemented)`,
|
|
400
|
+
retryable: false,
|
|
350
401
|
};
|
|
351
402
|
}
|
|
352
403
|
// A14: real dispatch — opt-in via constructor-injected getDomainAPI
|
|
@@ -359,9 +410,7 @@ export class PlanExecutor {
|
|
|
359
410
|
const taskDescription = this.buildTaskDescription(action);
|
|
360
411
|
try {
|
|
361
412
|
// Execute with timeout
|
|
362
|
-
const
|
|
363
|
-
const spawnPromise = this.spawner.spawn(action.agentType, taskDescription);
|
|
364
|
-
const agentResult = await Promise.race([spawnPromise, timeoutPromise]);
|
|
413
|
+
const agentResult = await this.withStepTimeout(this.spawner.spawn(action.agentType, taskDescription));
|
|
365
414
|
if (agentResult.success) {
|
|
366
415
|
// Apply action effects to world state
|
|
367
416
|
const newState = this.applyEffects(currentState, action.effects);
|
|
@@ -404,6 +453,7 @@ export class PlanExecutor {
|
|
|
404
453
|
success: false,
|
|
405
454
|
newState: currentState,
|
|
406
455
|
error: `Action '${action.name}' has no qeDomain to resolve a real API from`,
|
|
456
|
+
retryable: false,
|
|
407
457
|
};
|
|
408
458
|
}
|
|
409
459
|
if (!action.method) {
|
|
@@ -411,6 +461,7 @@ export class PlanExecutor {
|
|
|
411
461
|
success: false,
|
|
412
462
|
newState: currentState,
|
|
413
463
|
error: `Action '${action.name}' is marked implemented but has no method binding`,
|
|
464
|
+
retryable: false,
|
|
414
465
|
};
|
|
415
466
|
}
|
|
416
467
|
let api;
|
|
@@ -429,6 +480,7 @@ export class PlanExecutor {
|
|
|
429
480
|
success: false,
|
|
430
481
|
newState: currentState,
|
|
431
482
|
error: `Domain '${action.qeDomain}' is not available (kernel not initialized, or the domain isn't loaded — try fleet_init)`,
|
|
483
|
+
retryable: false,
|
|
432
484
|
};
|
|
433
485
|
}
|
|
434
486
|
const method = api[action.method];
|
|
@@ -437,12 +489,28 @@ export class PlanExecutor {
|
|
|
437
489
|
success: false,
|
|
438
490
|
newState: currentState,
|
|
439
491
|
error: `Domain '${action.qeDomain}' has no method '${action.method}'`,
|
|
492
|
+
retryable: false,
|
|
440
493
|
};
|
|
441
494
|
}
|
|
442
495
|
try {
|
|
443
|
-
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Step timeout after ${this.config.stepTimeoutMs}ms`)), this.config.stepTimeoutMs));
|
|
444
496
|
const invokePromise = method.call(api, action.params ?? {});
|
|
445
|
-
const result = await
|
|
497
|
+
const result = await this.withStepTimeout(invokePromise);
|
|
498
|
+
// Issue #535: domain APIs return Result<T, Error> ({ success: false,
|
|
499
|
+
// error }) rather than throwing. Treating any resolved value as
|
|
500
|
+
// success reported e.g. detectGaps({}) -> err("missing coverageData")
|
|
501
|
+
// as a completed step and applied its effects — a fabricated success.
|
|
502
|
+
if (typeof result === 'object' &&
|
|
503
|
+
result !== null &&
|
|
504
|
+
result.success === false) {
|
|
505
|
+
const reason = result.error;
|
|
506
|
+
return {
|
|
507
|
+
success: false,
|
|
508
|
+
newState: currentState,
|
|
509
|
+
agentId: `domain:${action.qeDomain}`,
|
|
510
|
+
error: `Domain '${action.qeDomain}' method '${action.method}' returned an error: ` +
|
|
511
|
+
describeDomainError(reason),
|
|
512
|
+
};
|
|
513
|
+
}
|
|
446
514
|
const newState = this.applyEffects(currentState, action.effects);
|
|
447
515
|
return {
|
|
448
516
|
success: true,
|
|
@@ -459,6 +527,25 @@ export class PlanExecutor {
|
|
|
459
527
|
};
|
|
460
528
|
}
|
|
461
529
|
}
|
|
530
|
+
/**
|
|
531
|
+
* Race `work` against the per-step timeout, clearing the timer once the
|
|
532
|
+
* race settles so completed steps don't leave a pending timer behind
|
|
533
|
+
* (codex review, #535: it kept short-lived processes alive for up to
|
|
534
|
+
* stepTimeoutMs and accumulated timers across executions).
|
|
535
|
+
*/
|
|
536
|
+
async withStepTimeout(work) {
|
|
537
|
+
let timer;
|
|
538
|
+
const timeout = new Promise((_, reject) => {
|
|
539
|
+
timer = setTimeout(() => reject(new Error(`Step timeout after ${this.config.stepTimeoutMs}ms`)), this.config.stepTimeoutMs);
|
|
540
|
+
});
|
|
541
|
+
try {
|
|
542
|
+
return await Promise.race([work, timeout]);
|
|
543
|
+
}
|
|
544
|
+
finally {
|
|
545
|
+
if (timer !== undefined)
|
|
546
|
+
clearTimeout(timer);
|
|
547
|
+
}
|
|
548
|
+
}
|
|
462
549
|
/**
|
|
463
550
|
* Build a task description for an agent
|
|
464
551
|
*/
|
|
@@ -494,11 +581,12 @@ export class PlanExecutor {
|
|
|
494
581
|
* @param currentState - Current world state at failure point
|
|
495
582
|
* @returns New plan or null if replanning fails
|
|
496
583
|
*/
|
|
497
|
-
async replanFromFailure(originalPlan, failedStepIndex, currentState) {
|
|
584
|
+
async replanFromFailure(originalPlan, failedStepIndex, currentState, additionalExcluded = []) {
|
|
498
585
|
try {
|
|
499
|
-
// Exclude the failed action
|
|
586
|
+
// Exclude the failed action (and any that failed earlier in this
|
|
587
|
+
// execution) from replanning
|
|
500
588
|
const failedAction = originalPlan.actions[failedStepIndex];
|
|
501
|
-
const excludedActions = [failedAction.id];
|
|
589
|
+
const excludedActions = [...new Set([failedAction.id, ...additionalExcluded])];
|
|
502
590
|
// Try to find a new plan
|
|
503
591
|
const newPlan = await this.planner.findPlan(currentState, originalPlan.goalState, { excludedActions });
|
|
504
592
|
return newPlan;
|
|
@@ -555,7 +643,8 @@ export class PlanExecutor {
|
|
|
555
643
|
SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) as steps_completed,
|
|
556
644
|
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) as steps_failed,
|
|
557
645
|
SUM(COALESCE(duration_ms, 0)) as total_duration_ms,
|
|
558
|
-
|
|
646
|
+
SUM(CASE WHEN action_id = '${CANCELLED_MARKER_ACTION_ID}' THEN 0 ELSE 1 END) as steps_recorded,
|
|
647
|
+
SUM(CASE WHEN action_id = '${CANCELLED_MARKER_ACTION_ID}' THEN 1 ELSE 0 END) as cancelled_markers,
|
|
559
648
|
MAX(CASE WHEN status = 'failed' THEN error_message END) as last_error
|
|
560
649
|
FROM goap_execution_steps
|
|
561
650
|
`;
|
|
@@ -571,9 +660,18 @@ export class PlanExecutor {
|
|
|
571
660
|
const steps = await this.getExecutedSteps(row.execution_id);
|
|
572
661
|
const finalWorldState = [...steps].reverse().find((s) => s.worldStateAfter)?.worldStateAfter;
|
|
573
662
|
const plannedStepCount = this.getPlannedActionCount(row.plan_id);
|
|
663
|
+
// Issue #535: a failed step followed by a successful replacement plan
|
|
664
|
+
// is a recovered (completed) execution; only a run that ENDS on a
|
|
665
|
+
// failed step failed. Without failures, fewer recorded steps than
|
|
666
|
+
// planned means it was cancelled.
|
|
667
|
+
const lastStep = steps[steps.length - 1];
|
|
574
668
|
let status;
|
|
575
|
-
if (row.
|
|
669
|
+
if (row.cancelled_markers > 0)
|
|
670
|
+
status = 'cancelled';
|
|
671
|
+
else if (lastStep?.status === 'failed')
|
|
576
672
|
status = 'failed';
|
|
673
|
+
else if (row.steps_failed > 0)
|
|
674
|
+
status = 'completed';
|
|
577
675
|
else if (plannedStepCount != null && row.steps_recorded < plannedStepCount)
|
|
578
676
|
status = 'cancelled';
|
|
579
677
|
else
|
|
@@ -605,8 +703,8 @@ export class PlanExecutor {
|
|
|
605
703
|
*/
|
|
606
704
|
async getExecutedSteps(executionId) {
|
|
607
705
|
const rows = this.db
|
|
608
|
-
.prepare(`SELECT * FROM goap_execution_steps WHERE execution_id = ? ORDER BY step_order`)
|
|
609
|
-
.all(executionId);
|
|
706
|
+
.prepare(`SELECT * FROM goap_execution_steps WHERE execution_id = ? AND action_id != ? ORDER BY step_order`)
|
|
707
|
+
.all(executionId, CANCELLED_MARKER_ACTION_ID);
|
|
610
708
|
return rows.map((row) => ({
|
|
611
709
|
id: row.id,
|
|
612
710
|
planId: row.plan_id,
|
|
@@ -662,8 +760,19 @@ export class PlanExecutor {
|
|
|
662
760
|
agent_output, world_state_before, world_state_after, error_message
|
|
663
761
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
664
762
|
`);
|
|
665
|
-
|
|
666
|
-
|
|
763
|
+
// Issue #535: steps from replacement plans (replanning) are recorded
|
|
764
|
+
// under the top-level plan id with a chronological step order, so one
|
|
765
|
+
// execution is one history record for the plan the caller executed —
|
|
766
|
+
// not split across sub-plan ids with colliding step orders.
|
|
767
|
+
result.steps.forEach((step, index) => {
|
|
768
|
+
insertStep.run(step.id, result.planId, executionId, step.action.id, index, step.status, step.retries, step.startedAt.toISOString(), step.durationMs ?? null, step.agentId ?? null, step.agentOutput ?? null, step.worldStateBefore ? JSON.stringify(step.worldStateBefore) : null, step.worldStateAfter ? JSON.stringify(step.worldStateAfter) : null, step.error ?? null);
|
|
769
|
+
});
|
|
770
|
+
// Issue #535 (codex review): an execution's cancellation cannot be
|
|
771
|
+
// inferred from its step rows once replanning is involved (the step
|
|
772
|
+
// count no longer matches the executed plan's action count), so record
|
|
773
|
+
// it explicitly with a marker row that history reads and then hides.
|
|
774
|
+
if (result.status === 'cancelled') {
|
|
775
|
+
insertStep.run(`${executionId}-${CANCELLED_MARKER_STATUS}`, result.planId, executionId, CANCELLED_MARKER_ACTION_ID, result.steps.length, CANCELLED_MARKER_STATUS, 0, new Date().toISOString(), null, null, null, null, null, result.error ?? 'Execution was cancelled');
|
|
667
776
|
}
|
|
668
777
|
// Reflects only the most recent execution attempt for this plan — a
|
|
669
778
|
// deliberate, documented scope limit: goap_plans is one row per plan,
|
package/dist/planning/types.d.ts
CHANGED
|
@@ -220,6 +220,12 @@ export interface PlanConstraints {
|
|
|
220
220
|
maxCost?: number;
|
|
221
221
|
/** Maximum total duration in milliseconds */
|
|
222
222
|
maxDurationMs?: number;
|
|
223
|
+
/**
|
|
224
|
+
* Maximum number of actions (steps) in the returned plan. Must be a
|
|
225
|
+
* positive integer; the planner rejects anything else. Defaults to
|
|
226
|
+
* DEFAULT_MAX_PLAN_STEPS when omitted. Issue #535.
|
|
227
|
+
*/
|
|
228
|
+
maxSteps?: number;
|
|
223
229
|
/** Only use actions that these agent types can execute */
|
|
224
230
|
requiredAgentTypes?: string[];
|
|
225
231
|
/** Exclude these specific action IDs */
|
|
@@ -227,6 +233,16 @@ export interface PlanConstraints {
|
|
|
227
233
|
/** Prefer actions in these QE domains */
|
|
228
234
|
preferredQeDomains?: QEDomain[];
|
|
229
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Default A* depth limit (plan length cap) when constraints.maxSteps is unset.
|
|
238
|
+
*/
|
|
239
|
+
export declare const DEFAULT_MAX_PLAN_STEPS = 20;
|
|
240
|
+
/**
|
|
241
|
+
* Validate a constraints.maxSteps value. Returns an error message, or null
|
|
242
|
+
* when the value is absent or a positive integer. Issue #535: shared by the
|
|
243
|
+
* planner and the goap_plan MCP tool so both boundaries reject the same input.
|
|
244
|
+
*/
|
|
245
|
+
export declare function validateMaxSteps(maxSteps: unknown): string | null;
|
|
230
246
|
/**
|
|
231
247
|
* Default world state for initialization
|
|
232
248
|
*/
|
package/dist/planning/types.js
CHANGED
|
@@ -12,6 +12,23 @@
|
|
|
12
12
|
* @module planning/types
|
|
13
13
|
* @version 3.0.0
|
|
14
14
|
*/
|
|
15
|
+
/**
|
|
16
|
+
* Default A* depth limit (plan length cap) when constraints.maxSteps is unset.
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_MAX_PLAN_STEPS = 20;
|
|
19
|
+
/**
|
|
20
|
+
* Validate a constraints.maxSteps value. Returns an error message, or null
|
|
21
|
+
* when the value is absent or a positive integer. Issue #535: shared by the
|
|
22
|
+
* planner and the goap_plan MCP tool so both boundaries reject the same input.
|
|
23
|
+
*/
|
|
24
|
+
export function validateMaxSteps(maxSteps) {
|
|
25
|
+
if (maxSteps === undefined)
|
|
26
|
+
return null;
|
|
27
|
+
if (typeof maxSteps !== 'number' || !Number.isInteger(maxSteps) || maxSteps < 1) {
|
|
28
|
+
return `constraints.maxSteps must be a positive integer, got ${String(maxSteps)}`;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
15
32
|
// ============================================================================
|
|
16
33
|
// Default World State
|
|
17
34
|
// ============================================================================
|
|
@@ -13,4 +13,19 @@ export declare function toErrorMessage(error: unknown): string;
|
|
|
13
13
|
* Coerce unknown error value to an Error instance.
|
|
14
14
|
*/
|
|
15
15
|
export declare function toError(error: unknown): Error;
|
|
16
|
+
/**
|
|
17
|
+
* A request was rejected because the caller's input is invalid (a malformed
|
|
18
|
+
* argument, an unknown function name, an unsupported option combination).
|
|
19
|
+
*
|
|
20
|
+
* The failure is deterministic and says nothing about the health of the
|
|
21
|
+
* component that rejected it, so it must not be retried and must not count
|
|
22
|
+
* toward a domain circuit breaker (ADR-064). The marker survives being
|
|
23
|
+
* flattened to a message string via `callerError` on TaskFailed events.
|
|
24
|
+
*/
|
|
25
|
+
export declare class CallerInputError extends Error {
|
|
26
|
+
readonly callerError: true;
|
|
27
|
+
constructor(message: string);
|
|
28
|
+
}
|
|
29
|
+
/** True when `error` is (or is marked as) a caller-input error. */
|
|
30
|
+
export declare function isCallerInputError(error: unknown): boolean;
|
|
16
31
|
//# sourceMappingURL=error-utils.d.ts.map
|
|
@@ -17,4 +17,25 @@ export function toErrorMessage(error) {
|
|
|
17
17
|
export function toError(error) {
|
|
18
18
|
return error instanceof Error ? error : new Error(String(error));
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A request was rejected because the caller's input is invalid (a malformed
|
|
22
|
+
* argument, an unknown function name, an unsupported option combination).
|
|
23
|
+
*
|
|
24
|
+
* The failure is deterministic and says nothing about the health of the
|
|
25
|
+
* component that rejected it, so it must not be retried and must not count
|
|
26
|
+
* toward a domain circuit breaker (ADR-064). The marker survives being
|
|
27
|
+
* flattened to a message string via `callerError` on TaskFailed events.
|
|
28
|
+
*/
|
|
29
|
+
export class CallerInputError extends Error {
|
|
30
|
+
callerError = true;
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = 'CallerInputError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** True when `error` is (or is marked as) a caller-input error. */
|
|
37
|
+
export function isCallerInputError(error) {
|
|
38
|
+
return error instanceof CallerInputError
|
|
39
|
+
|| (typeof error === 'object' && error !== null && error.callerError === true);
|
|
40
|
+
}
|
|
20
41
|
//# sourceMappingURL=error-utils.js.map
|
|
@@ -17,7 +17,8 @@ export interface TestSuiteCreatedPayload {
|
|
|
17
17
|
suiteId: string;
|
|
18
18
|
testCount: number;
|
|
19
19
|
sourceFiles: string[];
|
|
20
|
-
|
|
20
|
+
/** null means unmeasured; never coerce unknown coverage to measured zero. */
|
|
21
|
+
coverageEstimate: number | null;
|
|
21
22
|
}
|
|
22
23
|
export declare const TestGenerationEvents: {
|
|
23
24
|
readonly TestGenerated: "test-generation.TestGenerated";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.14.
|
|
3
|
+
"version": "3.14.7",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"mcp": "tsx src/mcp/entry.ts",
|
|
79
79
|
"test": "NODE_OPTIONS='--max-old-space-size=1024 --expose-gc' vitest run",
|
|
80
80
|
"test:unit": "npm run test:unit:fast && npm run test:unit:heavy && npm run test:unit:mcp",
|
|
81
|
-
"test:unit:fast": "vitest run --exclude='**/qe-reasoning-bank.test.ts' --exclude='**/
|
|
81
|
+
"test:unit:fast": "vitest run --exclude='**/qe-reasoning-bank.test.ts' --exclude='**/aqe-learning-engine.test.ts' --exclude='**/aqe-learning-engine-patterns.test.ts' tests/unit/adapters tests/unit/shared tests/unit/cli tests/unit/learning tests/unit/kernel tests/unit/workers tests/unit/routing tests/unit/strange-loop tests/unit/sync tests/unit/feedback tests/unit/error-paths tests/unit/early-exit tests/unit/causal-discovery tests/unit/neural-optimizer tests/unit/test-scheduling tests/unit/logging tests/unit/validation tests/unit/memory tests/unit/performance tests/unit/scripts tests/unit/planning tests/context",
|
|
82
82
|
"test:unit:heavy": "vitest run tests/unit/coordination tests/unit/domains tests/unit/integrations tests/unit/optimization tests/unit/init --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/browser-swarm-coordinator.test.ts'",
|
|
83
83
|
"test:unit:mcp": "vitest run tests/unit/mcp --exclude='**/mcp/handlers/domain-handlers.test.ts' --fileParallelism=false",
|
|
84
84
|
"test:ci": "vitest run --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/integration/browser/**' --exclude='**/browser-swarm-coordinator.test.ts' --exclude='**/mcp/handlers/domain-handlers.test.ts' --exclude='**/fixtures/init-corpus/**'",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"test:journeys:ci": "vitest run tests/integration/ --exclude='**/browser/**' --exclude='**/browser-integration/**' --exclude='**/integration/mcp/**' --exclude='**/integration/sync/**' --exclude='**/integration/learning/**' --exclude='**/integration/domains/**' --exclude='**/integration/llm/**' --exclude='**/integration/n8n/**' --exclude='**/*.e2e.test.ts'",
|
|
116
116
|
"test:watch": "vitest",
|
|
117
117
|
"performance:gate": "npx tsx src/performance/run-gates.ts",
|
|
118
|
-
"test:integration:browser": "VIBIUM_REAL_TESTS=true vitest run
|
|
118
|
+
"test:integration:browser": "VIBIUM_REAL_TESTS=true vitest run --config config/vitest.browser.config.ts",
|
|
119
119
|
"benchmark:token-reduction": "vitest bench tests/benchmarks/code-intelligence-token-reduction.bench.ts",
|
|
120
120
|
"benchmark:self-learning": "tsx scripts/benchmark-self-learning.ts",
|
|
121
121
|
"benchmark:rabitq": "tsx scripts/benchmark-rabitq.ts",
|
|
@@ -196,13 +196,13 @@
|
|
|
196
196
|
"semver": "^7.8.5",
|
|
197
197
|
"typescript": "^5.9.3",
|
|
198
198
|
"uuid": "^14.0.0",
|
|
199
|
-
"vibium": "^0.1.2",
|
|
200
199
|
"web-tree-sitter": "~0.26.8",
|
|
201
200
|
"yaml": "^2.8.2"
|
|
202
201
|
},
|
|
203
202
|
"peerDependencies": {
|
|
204
203
|
"@claude-flow/browser": "3.0.0-alpha.1",
|
|
205
|
-
"@claude-flow/guidance": "3.0.0-alpha.1"
|
|
204
|
+
"@claude-flow/guidance": "3.0.0-alpha.1",
|
|
205
|
+
"vibium": "^26.8.21"
|
|
206
206
|
},
|
|
207
207
|
"peerDependenciesMeta": {
|
|
208
208
|
"@claude-flow/browser": {
|
|
@@ -210,6 +210,9 @@
|
|
|
210
210
|
},
|
|
211
211
|
"@claude-flow/guidance": {
|
|
212
212
|
"optional": true
|
|
213
|
+
},
|
|
214
|
+
"vibium": {
|
|
215
|
+
"optional": true
|
|
213
216
|
}
|
|
214
217
|
},
|
|
215
218
|
"optionalDependencies": {
|
|
@@ -276,7 +279,8 @@
|
|
|
276
279
|
"glob": "^13.0.0",
|
|
277
280
|
"msw": "^2.12.7",
|
|
278
281
|
"tsx": "^4.21.0",
|
|
279
|
-
"vitest": "^5.0.1"
|
|
282
|
+
"vitest": "^5.0.1",
|
|
283
|
+
"vibium": "^26.8.21"
|
|
280
284
|
},
|
|
281
285
|
"engines": {
|
|
282
286
|
"node": ">=22.13.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.5");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-UKGXWW64.js";import"./chunk-I2NENQ44.js";import"./chunk-DLF5BOJD.js";import"./chunk-IJHCIXJC.js";import"./chunk-J5UNP6W3.js";import"./chunk-JSZ663MU.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.14.5");process.exit(0)}
|
|
2
|
-
import{a as x}from"./chunk-J27F4NSB.js";import{c as f}from"./chunk-7CD7PBHY.js";import"./chunk-JSZ663MU.js";x();import{createRequire as w}from"module";var S=f.create("agent-booster-wasm"),t={JavaScript:0,TypeScript:1,Python:2,Rust:3,Go:4,Java:5,C:6,Cpp:7},l={ExactReplace:0,FuzzyReplace:1,InsertAfter:2,InsertBefore:3,Append:4},v={0:"JavaScript",1:"TypeScript",2:"Python",3:"Rust",4:"Go",5:"Java",6:"C",7:"Cpp"},a=null,u=null,p=null;async function g(){if(a)return!0;if(p)return!1;try{if(a=w(import.meta.url)("./agent_booster_wasm.js"),!a)throw new Error("WASM module loaded but is null");return u=new a.AgentBoosterWasm,!0}catch(e){return p=e,console.warn("[AgentBoosterWASM] Failed to load WASM module:",e),!1}}function A(e){return{".js":t.JavaScript,".mjs":t.JavaScript,".cjs":t.JavaScript,".jsx":t.JavaScript,".ts":t.TypeScript,".tsx":t.TypeScript,".mts":t.TypeScript,".cts":t.TypeScript,".py":t.Python,".rs":t.Rust,".go":t.Go,".java":t.Java,".c":t.C,".h":t.C,".cpp":t.Cpp,".cc":t.Cpp,".cxx":t.Cpp,".hpp":t.Cpp}[e.toLowerCase()]??t.JavaScript}var M=[{name:"var-to-const",detect:(e,r)=>e.includes("var ")&&r.includes("const "),apply:(e,r)=>e.replace(/\bvar\s+/g,"const ")},{name:"var-to-let",detect:(e,r)=>e.includes("var ")&&r.includes("let "),apply:(e,r)=>e.replace(/\bvar\s+/g,"let ")},{name:"add-types-function",detect:(e,r)=>e.includes("function")&&!e.includes(":")&&r.includes(":"),apply:(e,r)=>r},{name:"async-wrapper",detect:(e,r)=>!e.includes("async")&&r.includes("async")&&r.includes("await"),apply:(e,r)=>r},{name:"try-catch-wrapper",detect:(e,r)=>!e.includes("try {")&&r.includes("try {"),apply:(e,r)=>r},{name:"null-check",detect:(e,r)=>!e.includes("if (!")&&!e.includes("if (!")&&(r.includes("if (!")||r.includes("?.")),apply:(e,r)=>r},{name:"test-assertion",detect:(e,r)=>e.includes("test(")&&!e.includes("expect(")&&r.includes("expect("),apply:(e,r)=>r}];function y(e,r){for(let n of M)if(n.detect(e,r))try{return{success:!0,code:n.apply(e,r),pattern:n.name}}catch(s){S.debug("Pattern transform failed, trying next",{pattern:n.name,error:s instanceof Error?s.message:String(s)});continue}return{success:!1,code:r}}async function b(e,r,n,s={}){let o=performance.now(),{confidenceThreshold:T=.5,allowFallback:d=!0}=s;if(!e.trim())return{success:!0,mergedCode:r,confidence:1,strategy:l.Append,syntaxValid:!0,source:"fallback",latencyMs:performance.now()-o};if(await g()&&u&&a)try{let c=a.WasmLanguage[v[n]],i=u.apply_edit(e,r,c);return{success:!0,mergedCode:i.merged_code,confidence:i.confidence,strategy:i.strategy,syntaxValid:i.syntax_valid,source:"wasm",latencyMs:performance.now()-o}}catch(c){let i=c;if(d){let m=y(e,r);if(m.success)return{success:!0,mergedCode:m.code,confidence:.7,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:i.message}}if(d){let c=y(e,r);return{success:c.success,mergedCode:c.code,confidence:c.success?.7:0,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:p?.message??"WASM not available"}}async function W(e,r={}){return Promise.all(e.map(({original:n,edit:s,language:o})=>b(n,s,o,r)))}async function C(){return g()}async function L(){return await g()&&a?a.AgentBoosterWasm.version():"unavailable"}async function R(){if(await g(),u&&a)try{u.apply_edit("function x() {}","function x() {}",a.WasmLanguage.JavaScript)}catch(e){console.debug("[AgentBoosterWASM] Warmup error:",e instanceof Error?e.message:e)}}var _={transform:b,batchTransform:W,isWasmAvailable:C,getVersion:L,warmup:R,Language:t,MergeStrategy:l,languageFromExtension:A};export{t as Language,l as MergeStrategy,W as batchTransform,_ as default,L as getVersion,C as isWasmAvailable,A as languageFromExtension,b as transform,R as warmup};
|