agentic-qe 3.10.4 → 3.10.6
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/agents/v3/qe-accessibility-auditor.md +8 -0
- package/.claude/agents/v3/qe-bdd-generator.md +8 -0
- package/.claude/agents/v3/qe-chaos-engineer.md +8 -0
- package/.claude/agents/v3/qe-code-complexity.md +8 -0
- package/.claude/agents/v3/qe-code-intelligence.md +8 -0
- package/.claude/agents/v3/qe-contract-validator.md +8 -0
- package/.claude/agents/v3/qe-coverage-specialist.md +8 -0
- package/.claude/agents/v3/qe-defect-predictor.md +8 -0
- package/.claude/agents/v3/qe-dependency-mapper.md +8 -0
- package/.claude/agents/v3/qe-deployment-advisor.md +8 -0
- package/.claude/agents/v3/qe-devils-advocate.md +8 -0
- package/.claude/agents/v3/qe-flaky-hunter.md +8 -0
- package/.claude/agents/v3/qe-fleet-commander.md +8 -0
- package/.claude/agents/v3/qe-gap-detector.md +8 -0
- package/.claude/agents/v3/qe-graphql-tester.md +8 -0
- package/.claude/agents/v3/qe-impact-analyzer.md +8 -0
- package/.claude/agents/v3/qe-integration-tester.md +8 -0
- package/.claude/agents/v3/qe-kg-builder.md +8 -0
- package/.claude/agents/v3/qe-learning-coordinator.md +8 -0
- package/.claude/agents/v3/qe-load-tester.md +8 -0
- package/.claude/agents/v3/qe-message-broker-tester.md +8 -0
- package/.claude/agents/v3/qe-metrics-optimizer.md +8 -0
- package/.claude/agents/v3/qe-middleware-validator.md +8 -0
- package/.claude/agents/v3/qe-mutation-tester.md +8 -0
- package/.claude/agents/v3/qe-odata-contract-tester.md +8 -0
- package/.claude/agents/v3/qe-parallel-executor.md +8 -0
- package/.claude/agents/v3/qe-pattern-learner.md +8 -0
- package/.claude/agents/v3/qe-pentest-validator.md +8 -0
- package/.claude/agents/v3/qe-performance-tester.md +8 -0
- package/.claude/agents/v3/qe-product-factors-assessor.md +8 -0
- package/.claude/agents/v3/qe-property-tester.md +8 -0
- package/.claude/agents/v3/qe-quality-criteria-recommender.md +8 -0
- package/.claude/agents/v3/qe-quality-gate.md +8 -0
- package/.claude/agents/v3/qe-qx-partner.md +8 -0
- package/.claude/agents/v3/qe-regression-analyzer.md +8 -0
- package/.claude/agents/v3/qe-requirements-validator.md +8 -0
- package/.claude/agents/v3/qe-responsive-tester.md +8 -0
- package/.claude/agents/v3/qe-retry-handler.md +8 -0
- package/.claude/agents/v3/qe-risk-assessor.md +8 -0
- package/.claude/agents/v3/qe-root-cause-analyzer.md +8 -0
- package/.claude/agents/v3/qe-sap-idoc-tester.md +8 -0
- package/.claude/agents/v3/qe-sap-rfc-tester.md +8 -0
- package/.claude/agents/v3/qe-security-auditor.md +8 -0
- package/.claude/agents/v3/qe-security-scanner.md +8 -0
- package/.claude/agents/v3/qe-soap-tester.md +8 -0
- package/.claude/agents/v3/qe-sod-analyzer.md +8 -0
- package/.claude/agents/v3/qe-tdd-specialist.md +8 -0
- package/.claude/agents/v3/qe-test-architect.md +8 -0
- package/.claude/agents/v3/qe-test-idea-rewriter.md +8 -0
- package/.claude/agents/v3/qe-transfer-specialist.md +8 -0
- package/.claude/agents/v3/qe-visual-tester.md +8 -0
- package/.claude/skills/qcsd-development-swarm/SKILL.md +27 -6
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +9012 -8863
- package/assets/agents/v3/qe-accessibility-auditor.md +8 -0
- package/assets/agents/v3/qe-bdd-generator.md +8 -0
- package/assets/agents/v3/qe-chaos-engineer.md +8 -0
- package/assets/agents/v3/qe-code-complexity.md +8 -0
- package/assets/agents/v3/qe-code-intelligence.md +8 -0
- package/assets/agents/v3/qe-contract-validator.md +8 -0
- package/assets/agents/v3/qe-coverage-specialist.md +8 -0
- package/assets/agents/v3/qe-defect-predictor.md +8 -0
- package/assets/agents/v3/qe-dependency-mapper.md +8 -0
- package/assets/agents/v3/qe-deployment-advisor.md +8 -0
- package/assets/agents/v3/qe-devils-advocate.md +8 -0
- package/assets/agents/v3/qe-flaky-hunter.md +8 -0
- package/assets/agents/v3/qe-fleet-commander.md +8 -0
- package/assets/agents/v3/qe-gap-detector.md +8 -0
- package/assets/agents/v3/qe-graphql-tester.md +8 -0
- package/assets/agents/v3/qe-impact-analyzer.md +8 -0
- package/assets/agents/v3/qe-integration-tester.md +8 -0
- package/assets/agents/v3/qe-kg-builder.md +8 -0
- package/assets/agents/v3/qe-learning-coordinator.md +8 -0
- package/assets/agents/v3/qe-load-tester.md +8 -0
- package/assets/agents/v3/qe-message-broker-tester.md +8 -0
- package/assets/agents/v3/qe-metrics-optimizer.md +8 -0
- package/assets/agents/v3/qe-middleware-validator.md +8 -0
- package/assets/agents/v3/qe-mutation-tester.md +8 -0
- package/assets/agents/v3/qe-odata-contract-tester.md +8 -0
- package/assets/agents/v3/qe-parallel-executor.md +8 -0
- package/assets/agents/v3/qe-pattern-learner.md +8 -0
- package/assets/agents/v3/qe-pentest-validator.md +8 -0
- package/assets/agents/v3/qe-performance-tester.md +8 -0
- package/assets/agents/v3/qe-product-factors-assessor.md +8 -0
- package/assets/agents/v3/qe-property-tester.md +8 -0
- package/assets/agents/v3/qe-quality-criteria-recommender.md +8 -0
- package/assets/agents/v3/qe-quality-gate.md +8 -0
- package/assets/agents/v3/qe-qx-partner.md +8 -0
- package/assets/agents/v3/qe-regression-analyzer.md +8 -0
- package/assets/agents/v3/qe-requirements-validator.md +8 -0
- package/assets/agents/v3/qe-responsive-tester.md +8 -0
- package/assets/agents/v3/qe-retry-handler.md +8 -0
- package/assets/agents/v3/qe-risk-assessor.md +8 -0
- package/assets/agents/v3/qe-root-cause-analyzer.md +8 -0
- package/assets/agents/v3/qe-sap-idoc-tester.md +8 -0
- package/assets/agents/v3/qe-sap-rfc-tester.md +8 -0
- package/assets/agents/v3/qe-security-auditor.md +8 -0
- package/assets/agents/v3/qe-security-scanner.md +8 -0
- package/assets/agents/v3/qe-soap-tester.md +8 -0
- package/assets/agents/v3/qe-sod-analyzer.md +8 -0
- package/assets/agents/v3/qe-tdd-specialist.md +8 -0
- package/assets/agents/v3/qe-test-architect.md +8 -0
- package/assets/agents/v3/qe-test-idea-rewriter.md +8 -0
- package/assets/agents/v3/qe-transfer-specialist.md +8 -0
- package/assets/agents/v3/qe-visual-tester.md +8 -0
- package/dist/arena/arena.d.ts +68 -0
- package/dist/arena/arena.js +169 -0
- package/dist/arena/mutator.d.ts +23 -0
- package/dist/arena/mutator.js +112 -0
- package/dist/arena/rng.d.ts +15 -0
- package/dist/arena/rng.js +34 -0
- package/dist/arena/runner.d.ts +44 -0
- package/dist/arena/runner.js +79 -0
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-AMIHQ243.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-EJPDSWON.js → agent-booster-wasm-J5CITTTV.js} +2 -2
- package/dist/cli/chunks/{agent-handler-2DZB7LGI.js → agent-handler-HMN4ZBZ6.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-SSFYAVIK.js → agent-memory-branch-SCAKN4DU.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-LRG2UG6P.js +2 -0
- package/dist/cli/chunks/arena-CJOLCHZW.js +18 -0
- package/dist/cli/chunks/arena-FVBTSGKS.js +4 -0
- package/dist/cli/chunks/audit-SOF6L5RY.js +3 -0
- package/dist/cli/chunks/base-WDL3FANJ.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-3TZFES5I.js → better-sqlite3-5G7LRX7Q.js} +2 -2
- package/dist/cli/chunks/{brain-handler-LFHX2TYP.js → brain-handler-D2ZQQI2J.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-AX7DKGV7.js → branch-enumerator-QQXOCGOR.js} +2 -2
- package/dist/cli/chunks/{browser-4NYLZ7FA.js → browser-XASHKIEN.js} +2 -2
- package/dist/cli/chunks/browser-workflow-W7S4IKWD.js +2 -0
- package/dist/cli/chunks/{chunk-VJOPNK2L.js → chunk-2CZQA3NN.js} +2 -2
- package/dist/cli/chunks/{chunk-DPKECIKN.js → chunk-2I5RXDNO.js} +2 -2
- package/dist/cli/chunks/{chunk-M4ARHDY4.js → chunk-2IC2I525.js} +1 -1
- package/dist/cli/chunks/{chunk-M5DBKHM4.js → chunk-2RQSFRON.js} +2 -2
- package/dist/cli/chunks/{chunk-WYMQ6FZR.js → chunk-2UI5LQ7C.js} +3 -3
- package/dist/cli/chunks/{chunk-ISRTT4I7.js → chunk-3XUPDWMA.js} +8 -8
- package/dist/cli/chunks/chunk-434VUSZP.js +2 -0
- package/dist/cli/chunks/{chunk-SXMGNMFL.js → chunk-4B22URZJ.js} +3 -3
- package/dist/cli/chunks/{chunk-LHPR7ROV.js → chunk-4N4TU7ST.js} +1 -1
- package/dist/cli/chunks/{chunk-ND6YSW5N.js → chunk-4XEUJH2M.js} +1 -1
- package/dist/cli/chunks/{chunk-BEFRQOLH.js → chunk-5QTUGFFP.js} +2 -2
- package/dist/cli/chunks/{chunk-DAIM72HV.js → chunk-5V4IFRG5.js} +2 -2
- package/dist/cli/chunks/{chunk-F34OO2Q7.js → chunk-5VTRPOYL.js} +3 -3
- package/dist/cli/chunks/{chunk-GILL32E2.js → chunk-6DHJPKAH.js} +2 -2
- package/dist/cli/chunks/{chunk-YSLE6NNG.js → chunk-6RFPELCD.js} +2 -2
- package/dist/cli/chunks/{chunk-B6CT4ILU.js → chunk-6ZLVQTQ5.js} +4 -4
- package/dist/cli/chunks/{chunk-XJXCSCCP.js → chunk-7BPYFDWY.js} +1 -1
- package/dist/cli/chunks/{chunk-RJKYPWFD.js → chunk-7NXVVIJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-USB7GCIC.js → chunk-7OK5H6ML.js} +1 -1
- package/dist/cli/chunks/{chunk-MDWJXSBA.js → chunk-7RTI5WT4.js} +2 -2
- package/dist/cli/chunks/{chunk-O3SG32PS.js → chunk-7SFCZ3AE.js} +1 -1
- package/dist/cli/chunks/{chunk-OV4BLIKJ.js → chunk-A2DCROAN.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2EDDV5U.js → chunk-AJ2VDNPB.js} +3 -3
- package/dist/cli/chunks/chunk-AQPFTDGS.js +14 -0
- package/dist/cli/chunks/{chunk-MFWWPRBV.js → chunk-B3H2TTYT.js} +2 -2
- package/dist/cli/chunks/{chunk-PISW5HUX.js → chunk-BHD6THT5.js} +1 -1
- package/dist/cli/chunks/{chunk-5Q3L4QEE.js → chunk-BXOGLZGU.js} +2 -2
- package/dist/cli/chunks/{chunk-TWAWEP4X.js → chunk-C75ODWRP.js} +3 -3
- package/dist/cli/chunks/{chunk-AMW27FSS.js → chunk-CH7KUYGO.js} +3 -3
- package/dist/cli/chunks/{chunk-MHWYQHGN.js → chunk-CSM4LXTH.js} +1 -1
- package/dist/cli/chunks/{chunk-SC6UFGJ6.js → chunk-DAUQIXHW.js} +2 -2
- package/dist/cli/chunks/{chunk-NJYI7HX7.js → chunk-DF4Z7TKZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IYFMDIYZ.js → chunk-DFBVWMX3.js} +2 -2
- package/dist/cli/chunks/{chunk-FQ7I4JBQ.js → chunk-EDPVATNH.js} +2 -2
- package/dist/cli/chunks/{chunk-STMMZXS6.js → chunk-EJWAKPZD.js} +1 -1
- package/dist/cli/chunks/{chunk-EGTOSQZK.js → chunk-ELC6JIXL.js} +2 -2
- package/dist/cli/chunks/{chunk-TBJ566KV.js → chunk-ELTN4F4R.js} +2 -2
- package/dist/cli/chunks/{chunk-UXJVR323.js → chunk-ESZDW6G7.js} +2 -2
- package/dist/cli/chunks/{chunk-XDZXLEJK.js → chunk-EYKID5HA.js} +2 -2
- package/dist/cli/chunks/{chunk-VRE2EBFI.js → chunk-F72A356B.js} +2 -2
- package/dist/cli/chunks/{chunk-AZJYDM2K.js → chunk-GWHDPEBT.js} +1 -1
- package/dist/cli/chunks/{chunk-L6VNEEN6.js → chunk-GXNNKM7F.js} +1 -1
- package/dist/cli/chunks/{chunk-NSRDP7RD.js → chunk-H4Q36ILL.js} +2 -2
- package/dist/cli/chunks/{chunk-2G2PVVQG.js → chunk-H6UPZFI6.js} +2 -2
- package/dist/cli/chunks/chunk-H73FLSBV.js +699 -0
- package/dist/cli/chunks/{chunk-Q53M4LI7.js → chunk-HDEFCRHI.js} +1 -1
- package/dist/cli/chunks/{chunk-G5FPWH5O.js → chunk-HFU3LTQX.js} +15 -15
- package/dist/cli/chunks/{chunk-C2446H7G.js → chunk-HMHQOEU7.js} +2 -2
- package/dist/cli/chunks/{chunk-IAK76TIZ.js → chunk-HWKFBRMX.js} +1 -1
- package/dist/cli/chunks/{chunk-7BQXEYRV.js → chunk-HZGOVRZ6.js} +2 -2
- package/dist/cli/chunks/{chunk-VJ2D6FST.js → chunk-I7ADT6AZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3UGUX34A.js → chunk-IB3QQDC4.js} +1 -1
- package/dist/cli/chunks/{chunk-5T2HDET6.js → chunk-J2SMTP2L.js} +3 -3
- package/dist/cli/chunks/{chunk-4FTLYIMW.js → chunk-J3WUBGLQ.js} +2 -2
- package/dist/cli/chunks/{chunk-4BX72XG4.js → chunk-JADBRSQN.js} +2 -2
- package/dist/cli/chunks/{chunk-N4CXUGXE.js → chunk-JP2YXWJD.js} +2 -2
- package/dist/cli/chunks/chunk-JPL53G4V.js +20 -0
- package/dist/cli/chunks/{chunk-GLMDRGJD.js → chunk-JX7HZMW5.js} +1 -1
- package/dist/cli/chunks/{chunk-GDMH7NPV.js → chunk-JXCIRWLQ.js} +2 -2
- package/dist/cli/chunks/{chunk-UFKVKNAA.js → chunk-K32AUACO.js} +1 -1
- package/dist/cli/chunks/{chunk-XVA56PXZ.js → chunk-KQOJYO5Z.js} +4 -4
- package/dist/cli/chunks/{chunk-PLD4IGDL.js → chunk-KVMY2ABO.js} +2 -2
- package/dist/cli/chunks/{chunk-7VO5IEJ2.js → chunk-L2IMTNZF.js} +2 -2
- package/dist/cli/chunks/{chunk-KCXE2LZU.js → chunk-LAGNWKAD.js} +2 -2
- package/dist/cli/chunks/{chunk-OIFJH7TF.js → chunk-LEDF3LGZ.js} +1 -1
- package/dist/cli/chunks/{chunk-F6QPAVWS.js → chunk-LHA4OQ7G.js} +2 -2
- package/dist/cli/chunks/{chunk-EMZ3DXMG.js → chunk-LHZOIXJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-MU4P4P4E.js → chunk-LOQMQEKN.js} +1 -1
- package/dist/cli/chunks/{chunk-F77X5DAF.js → chunk-LWUIK5DH.js} +2 -2
- package/dist/cli/chunks/{chunk-KWZEBHAP.js → chunk-M3APJ7VS.js} +2 -2
- package/dist/cli/chunks/{chunk-RUC3FCRK.js → chunk-M4OYZMXE.js} +2 -2
- package/dist/cli/chunks/{chunk-IPAQ4HVX.js → chunk-MCMVRPNG.js} +2 -2
- package/dist/cli/chunks/{chunk-PMWWWYUM.js → chunk-MJLDZSFB.js} +1 -1
- package/dist/cli/chunks/{chunk-M3MKP5VN.js → chunk-MQN3HYFX.js} +1 -1
- package/dist/cli/chunks/{chunk-6OLHPWSN.js → chunk-MSJGDIRP.js} +2 -2
- package/dist/cli/chunks/{chunk-UW3ZSFFB.js → chunk-NEIJP6TG.js} +2 -2
- package/dist/cli/chunks/{chunk-XBFEHVBO.js → chunk-NHC635LL.js} +2 -2
- package/dist/cli/chunks/{chunk-Z4BTPQLG.js → chunk-NKEGEQ3J.js} +2 -2
- package/dist/cli/chunks/{chunk-6SCIX2W2.js → chunk-NN35QH6X.js} +2 -2
- package/dist/cli/chunks/{chunk-ZM4QGYGK.js → chunk-NUCJS3Z7.js} +3 -3
- package/dist/cli/chunks/{chunk-WI5WXYIS.js → chunk-O2H5WYFK.js} +2 -2
- package/dist/cli/chunks/{chunk-2B6ETC7C.js → chunk-O4MNYX4X.js} +2 -2
- package/dist/cli/chunks/{chunk-JYR3X4OC.js → chunk-OBLAWVXM.js} +1 -1
- package/dist/cli/chunks/{chunk-K7CW2X6U.js → chunk-OU4HRUVV.js} +2 -2
- package/dist/cli/chunks/{chunk-E6CGBOZY.js → chunk-P7EOYGR2.js} +2 -2
- package/dist/cli/chunks/{chunk-KJ56OXH4.js → chunk-PFSBUTDA.js} +1 -1
- package/dist/cli/chunks/{chunk-PZCSJZVJ.js → chunk-PIIBVLFC.js} +2 -2
- package/dist/cli/chunks/{chunk-LYKSIOOT.js → chunk-PIJ5XOMM.js} +2 -2
- package/dist/cli/chunks/{chunk-D7IWGQTW.js → chunk-Q4LYWIEX.js} +2 -2
- package/dist/cli/chunks/{chunk-TCV5DASI.js → chunk-Q5432RIH.js} +2 -2
- package/dist/cli/chunks/{chunk-U27GVYXA.js → chunk-QJXZ4SU7.js} +2 -2
- package/dist/cli/chunks/{chunk-K7K4TFJM.js → chunk-QNIL3D6E.js} +1 -1
- package/dist/cli/chunks/{chunk-D7PI4CYZ.js → chunk-QUQA4NNZ.js} +2 -2
- package/dist/cli/chunks/{chunk-N244P4MM.js → chunk-QZSNYXYC.js} +2 -2
- package/dist/cli/chunks/{chunk-NZGLDOU4.js → chunk-RA7HEY5G.js} +17 -17
- package/dist/cli/chunks/{chunk-HTLAPMTK.js → chunk-RBZWUWUG.js} +1 -1
- package/dist/cli/chunks/{chunk-3ISX5B77.js → chunk-RH3I4Q23.js} +2 -2
- package/dist/cli/chunks/{chunk-M2PSXKTG.js → chunk-ROXH622K.js} +2 -2
- package/dist/cli/chunks/{chunk-6WF2MOQB.js → chunk-RTAGNKCV.js} +2 -2
- package/dist/cli/chunks/{chunk-2L5VFVCG.js → chunk-RTFFD263.js} +1 -1
- package/dist/cli/chunks/{chunk-PWJZZCHJ.js → chunk-S574AFAT.js} +1 -1
- package/dist/cli/chunks/{chunk-SZKFT6CD.js → chunk-SA5FTDRS.js} +2 -2
- package/dist/cli/chunks/{chunk-AIBE3J4A.js → chunk-SHVTMMJB.js} +1 -1
- package/dist/cli/chunks/{chunk-MQIAN57O.js → chunk-SUGQZCNI.js} +2 -2
- package/dist/cli/chunks/{chunk-LOFA3U4X.js → chunk-T6CUKJHS.js} +1 -1
- package/dist/cli/chunks/{chunk-UWAUYDW4.js → chunk-T6SCQVWH.js} +2 -2
- package/dist/cli/chunks/{chunk-KUFC4DBX.js → chunk-TFA5UETW.js} +1 -1
- package/dist/cli/chunks/{chunk-OO7KJ34Y.js → chunk-TFJDJVPC.js} +2 -2
- package/dist/cli/chunks/chunk-TNVOINYC.js +12 -0
- package/dist/cli/chunks/{chunk-N3MM4Z33.js → chunk-TUFU3BAK.js} +2 -2
- package/dist/cli/chunks/{chunk-SJC7OKF3.js → chunk-TWH3ZL6B.js} +2 -2
- package/dist/cli/chunks/{chunk-VDKMBOUK.js → chunk-ULEVKOWQ.js} +1 -1
- package/dist/cli/chunks/{chunk-EWI37TJA.js → chunk-ULV5K4V5.js} +1 -1
- package/dist/cli/chunks/{chunk-SVILIQQQ.js → chunk-UNDPB5SS.js} +1 -1
- package/dist/cli/chunks/{chunk-K72J52JO.js → chunk-UQYDFT6I.js} +2 -2
- package/dist/cli/chunks/{chunk-5T4J3IPG.js → chunk-USPBUR6P.js} +2 -2
- package/dist/cli/chunks/{chunk-LKK3NIHC.js → chunk-UVWOIF6P.js} +1 -1
- package/dist/cli/chunks/{chunk-MKZQBBCU.js → chunk-UWDC3TZP.js} +2 -2
- package/dist/cli/chunks/{chunk-KGPAWNNR.js → chunk-VFFIMJWT.js} +1 -1
- package/dist/cli/chunks/{chunk-MIQBRVK2.js → chunk-VQM2TC2V.js} +1 -1
- package/dist/cli/chunks/{chunk-WIYWDON4.js → chunk-WNAFMYND.js} +2 -2
- package/dist/cli/chunks/{chunk-FDFJJFQT.js → chunk-X3YWLJGT.js} +2 -2
- package/dist/cli/chunks/{chunk-GS33ZRJH.js → chunk-X5R6SUWM.js} +2 -2
- package/dist/cli/chunks/{chunk-V5G3SMAJ.js → chunk-XKRJQIGP.js} +2 -2
- package/dist/cli/chunks/{chunk-5FNNCVXR.js → chunk-XLFYVBOD.js} +1 -1
- package/dist/cli/chunks/chunk-XOGBTPJI.js +65 -0
- package/dist/cli/chunks/{chunk-ICF5RPQU.js → chunk-XOYTW6LI.js} +2 -2
- package/dist/cli/chunks/{chunk-MWV4KPOB.js → chunk-Z3RPA3RD.js} +2 -2
- package/dist/cli/chunks/{chunk-QPMAXDJ2.js → chunk-ZBSEXVEI.js} +2 -2
- package/dist/cli/chunks/{chunk-JRBGHWAM.js → chunk-ZMCMSDXR.js} +2 -2
- package/dist/cli/chunks/{chunk-MQ5WMWUK.js → chunk-ZY4G7O7Y.js} +2 -2
- package/dist/cli/chunks/{ci-2BLMQNX3.js → ci-COQUVZH6.js} +2 -2
- package/dist/cli/chunks/{ci-output-XK4PPSN7.js → ci-output-KVUHUEOT.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-W7X4NPFE.js → circuit-breaker-O4JNXAYH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-GLBLSYNJ.js → claude-flow-setup-J65U34NA.js} +2 -2
- package/dist/cli/chunks/client-VJNNIAMG.js +2 -0
- package/dist/cli/chunks/{cline-installer-7WX7DBGI.js → cline-installer-ZTG234Z2.js} +2 -2
- package/dist/cli/chunks/{code-SP3HAQWG.js → code-5GWPY4IX.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-44HH36UG.js → code-index-extractor-TWNKG4VS.js} +2 -2
- package/dist/cli/chunks/{codex-installer-LMXRWLPU.js → codex-installer-4TM4BLAE.js} +2 -2
- package/dist/cli/chunks/{completions-GL5FTZAN.js → completions-BBNHQXMV.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-CQMYGETL.js → complexity-analyzer-2SCI2VGH.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-CYVYS5B7.js → continuedev-installer-CTIORASU.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-M7XVII2A.js → copilot-installer-4R2V4IYB.js} +2 -2
- package/dist/cli/chunks/core-handlers-MV5CAR7O.js +2 -0
- package/dist/cli/chunks/{cost-tracker-S4ET4FH3.js → cost-tracker-KDBYQBKG.js} +2 -2
- package/dist/cli/chunks/{coverage-DFVSSQ4A.js → coverage-QQJQVDPZ.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-ULY4NIML.js +2 -0
- package/dist/cli/chunks/{cursor-installer-KWDSQPQC.js → cursor-installer-5WEZCESZ.js} +2 -2
- package/dist/cli/chunks/{daemon-2HD54QVO.js → daemon-M4DKHEEA.js} +3 -3
- package/dist/cli/chunks/{daemon-CRX46BBO.js → daemon-Y7H3ZUXQ.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-SCP6WPZB.js → dag-attention-scheduler-SD2UIADT.js} +2 -2
- package/dist/cli/chunks/{detect-XS2GDCEX.js → detect-WONWUXFH.js} +2 -2
- package/dist/cli/chunks/{dist-node-U43MVQ3F.js → dist-node-Q5GQN2R6.js} +2 -2
- package/dist/cli/chunks/{domain-handler-HITMDULH.js → domain-handler-EMXE2XQW.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-TJF7DNI4.js → domain-transfer-QATUJJRP.js} +2 -2
- package/dist/cli/chunks/dream-PIGWXWE4.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-JKG33YZK.js → embed-and-insert-pattern-AAFHLBEJ.js} +2 -2
- package/dist/cli/chunks/{eval-NF5Y4W37.js → eval-73BDNLSK.js} +5 -5
- package/dist/cli/chunks/{experience-capture-middleware-VMMFYJ4D.js → experience-capture-middleware-YPAPVSYY.js} +3 -3
- package/dist/cli/chunks/{fast-paths-W2Q53IR2.js → fast-paths-33ZKMNYY.js} +2 -2
- package/dist/cli/chunks/{feature-flags-B4PBMQJO.js → feature-flags-F3DVW4ST.js} +2 -2
- package/dist/cli/chunks/{feature-flags-PVI7A4RE.js → feature-flags-QKO5YYDU.js} +2 -2
- package/dist/cli/chunks/{file-discovery-E4L3I33I.js → file-discovery-YYVZLRYD.js} +2 -2
- package/dist/cli/chunks/{fleet-LE5SHVLK.js → fleet-EJX6BXLR.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-MWWJBLOH.js → gnn-wrapper-TBNLYPTM.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-XOUVNPQK.js → heartbeat-handler-HPRTS6SI.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-5BBLZP6R.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-FMEBL5T4.js +2 -0
- package/dist/cli/chunks/hnsw-index-K2R24V4Z.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-W3T5ZDDP.js → hnsw-legacy-bridge-Z6V6TOF5.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-PX5JM3DG.js → hnswlib-node-LFVNGGCL.js} +2 -2
- package/dist/cli/chunks/hooks-GG2Z3BDB.js +285 -0
- package/dist/cli/chunks/hybrid-router-LVF6N345.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-VDFK3JYH.js → hypergraph-engine-X4Q2TTET.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-EUDGEF25.js → hypergraph-handler-6BZWV5PL.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CCVVMGWE.js +2 -0
- package/dist/cli/chunks/{init-handler-MZEAJOZK.js → init-handler-EKUS7U6L.js} +6 -6
- package/dist/cli/chunks/init-wizard-KDPMO4G3.js +2 -0
- package/dist/cli/chunks/kernel-PBYNK5VA.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-ECBYWT6M.js → kilocode-installer-BWAVVSQG.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-KYFCSYTG.js → kiro-installer-UADO53E5.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-C7LVHHLN.js +2 -0
- package/dist/cli/chunks/{learning-4RAFMDSB.js → learning-HMUTCYQM.js} +3 -3
- package/dist/cli/chunks/{llm-router-JHBNLYP3.js → llm-router-453TBDUY.js} +4 -4
- package/dist/cli/chunks/llm-router-service-LMTRJCPP.js +2 -0
- package/dist/cli/chunks/{load-4DVQML7P.js → load-DBBSNP6T.js} +2 -2
- package/dist/cli/chunks/load-test-FHMZXTXD.js +2 -0
- package/dist/cli/chunks/{mcp-LCWMU4GZ.js → mcp-PK3SAKRF.js} +2 -2
- package/dist/cli/chunks/{memory-3DTJAURT.js → memory-63NHVBXS.js} +5 -5
- package/dist/cli/chunks/memory-backend-UZHPCQTB.js +2 -0
- package/dist/cli/chunks/memory-handlers-YIKKORRY.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-AVR5SZOO.js → multi-model-executor-HUGRXJ6D.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-DW2426QM.js → opencode-installer-A6IXNF26.js} +2 -2
- package/dist/cli/chunks/{orchestrator-AHF4W5GS.js → orchestrator-KDFYDNE3.js} +10 -10
- package/dist/cli/chunks/pattern-null-store-5PS4JN6V.js +2 -0
- package/dist/cli/chunks/{pipeline-N6THEWYE.js → pipeline-HSPRKEYE.js} +2 -2
- package/dist/cli/chunks/{platform-MRCFQF7X.js → platform-X74IBN2H.js} +2 -2
- package/dist/cli/chunks/{plugin-6YKUN5QM.js → plugin-KDJZ7VFD.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-2YPAHSVS.js → prime-radiant-advanced-wasm-2YZGKQE7.js} +2 -2
- package/dist/cli/chunks/protocol-executor-2GTGIOFD.js +2 -0
- package/dist/cli/chunks/{protocol-handler-Y2NMUKWQ.js → protocol-handler-I2SDHC7B.js} +2 -2
- package/dist/cli/chunks/{prove-DZUNWBFD.js → prove-JQJDNIZH.js} +2 -2
- package/dist/cli/chunks/provider-manager-VH6YTBB3.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-47JSO76G.js +2 -0
- package/dist/cli/chunks/{quality-AIFQMGUV.js → quality-2P7KHVY3.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-C7EDY7IS.js +2 -0
- package/dist/cli/chunks/{real-embeddings-5XL4LOG2.js → real-embeddings-L7NMMNDO.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-LV3WONT5.js → roocode-installer-LA4QN5AG.js} +2 -2
- package/dist/cli/chunks/router-7DVH66WB.js +2 -0
- package/dist/cli/chunks/routing-feedback-4I2MF235.js +2 -0
- package/dist/cli/chunks/{routing-handler-WSMUILGD.js → routing-handler-B5CDEZF3.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BCEIDTW3.js → ruvector-commands-SOVCRLJ6.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-LRSPC6H3.js → rvf-dual-writer-M6WI2KFB.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-QHNX6353.js → rvf-migration-adapter-YDMZGPMA.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-SLNB3XPW.js → rvf-migration-coordinator-TFGQ5EO4.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-UN3ESMMW.js +2 -0
- package/dist/cli/chunks/safe-db-Y2ZXKWBK.js +2 -0
- package/dist/cli/chunks/schedule-PG2NVRGA.js +2 -0
- package/dist/cli/chunks/scheduler-CNH6WWU2.js +2 -0
- package/dist/cli/chunks/{security-CYY6TECQ.js → security-R3IXQXDA.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-U6JE4O6A.js → shared-rvf-adapter-GZX7LSQZ.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-PJBSNBRV.js → shared-rvf-dual-writer-YT7SJX7K.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-WWT4DRRP.js +2 -0
- package/dist/cli/chunks/{status-handler-W723LXX5.js → status-handler-7PZSPBHJ.js} +2 -2
- package/dist/cli/chunks/{structural-health-WZUPZBB5.js → structural-health-UMJS6IVR.js} +2 -2
- package/dist/cli/chunks/sync-HA5SLSBA.js +2 -0
- package/dist/cli/chunks/{sync-UA22CKUS.js → sync-UIREA3UG.js} +2 -2
- package/dist/cli/chunks/{task-handler-SENTEEXZ.js → task-handler-NV4HGMEG.js} +2 -2
- package/dist/cli/chunks/{task-handlers-FGVUZOCC.js → task-handlers-RXYWWOSU.js} +3 -3
- package/dist/cli/chunks/{test-Q37C3WI2.js → test-2Y6OXGEU.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-E6SPIBTH.js → test-scheduling-N55VFOYT.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-FW3ZVMRP.js +2 -0
- package/dist/cli/chunks/{token-usage-JHNWTZ7L.js → token-usage-YXKOB3U6.js} +2 -2
- package/dist/cli/chunks/{transformers-TEXDUVNI.js → transformers-GBRSFAVA.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-MWSS52H6.js → tree-sitter-wasm-parser-FJHMEHJS.js} +2 -2
- package/dist/cli/chunks/{types-YQRKHYH3.js → types-NVMRVSBH.js} +2 -2
- package/dist/cli/chunks/unified-memory-PXEJKKMN.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-M7OI5WUU.js +2 -0
- package/dist/cli/chunks/unified-persistence-WR4VDTAF.js +2 -0
- package/dist/cli/chunks/{upgrade-JKMEDURI.js → upgrade-L2OTYHD3.js} +2 -2
- package/dist/cli/chunks/{validate-URO7G6OE.js → validate-3NWRQYTP.js} +3 -3
- package/dist/cli/chunks/{validate-swarm-VZVJ56Z5.js → validate-swarm-MDURRWXK.js} +4 -4
- package/dist/cli/chunks/{vibium-G5WZILL6.js → vibium-SZX7RB4H.js} +2 -2
- package/dist/cli/chunks/visual-security-CKSZZHKG.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-LECH5T6H.js → web-tree-sitter-LGQT7JRD.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-2NPLC2YW.js → windsurf-installer-EYYGHPPX.js} +2 -2
- package/dist/cli/chunks/witness-chain-IOQX3XFG.js +2 -0
- package/dist/cli/chunks/{witness-chain-X347C36A.js → witness-chain-YYYA2CU3.js} +2 -2
- package/dist/cli/chunks/{workflow-V4ALYZ73.js → workflow-UD45FQAH.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-Z2ZJRWIN.js +2 -0
- package/dist/cli/chunks/wrappers-JXD3KNSR.js +2 -0
- package/dist/cli/commands/arena.d.ts +10 -0
- package/dist/cli/commands/arena.js +129 -0
- package/dist/cli/commands/hooks-handlers/command-hooks.js +38 -2
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.d.ts +4 -0
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +66 -3
- package/dist/cli/commands/hooks-handlers/nesting-provenance.d.ts +27 -0
- package/dist/cli/commands/hooks-handlers/nesting-provenance.js +46 -0
- package/dist/cli/commands/hooks-handlers/task-hooks.js +22 -1
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.d.ts +71 -0
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +142 -0
- package/dist/cli/index.js +17 -0
- package/dist/contracts/verdicts.d.ts +297 -0
- package/dist/contracts/verdicts.js +178 -0
- package/dist/coordination/queen-types.d.ts +4 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +15 -6
- package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +12 -0
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +3 -1
- package/dist/learning/aqe-learning-engine.js +32 -0
- package/dist/learning/experience-capture.d.ts +8 -0
- package/dist/learning/experience-capture.js +30 -0
- package/dist/learning/pattern-null-store.d.ts +32 -0
- package/dist/learning/pattern-null-store.js +77 -0
- package/dist/learning/pattern-store.d.ts +10 -0
- package/dist/learning/pattern-store.js +23 -0
- package/dist/mcp/bundle.js +400 -370
- package/dist/mcp/handlers/core-handlers.d.ts +20 -0
- package/dist/mcp/handlers/core-handlers.js +28 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +3 -0
- package/dist/mcp/handlers/domain-handler-configs.js +22 -10
- package/dist/mcp/handlers/validation-pipeline-handler.d.ts +19 -0
- package/dist/mcp/handlers/validation-pipeline-handler.js +10 -0
- package/dist/migrations/20260611_add_pattern_nulls_table.d.ts +26 -0
- package/dist/migrations/20260611_add_pattern_nulls_table.js +63 -0
- package/dist/shared/llm/cost-tracker.js +6 -2
- package/dist/shared/llm/interfaces.d.ts +4 -0
- package/dist/shared/llm/providers/claude.js +16 -2
- package/dist/shared/reasoning-scrub.d.ts +29 -0
- package/dist/shared/reasoning-scrub.js +75 -0
- package/dist/validation/pipeline.d.ts +25 -0
- package/dist/validation/pipeline.js +28 -5
- package/dist/validation/steps/requirements.js +5 -0
- package/package.json +2 -1
- package/dist/cli/chunks/adapter-A62ETL5C.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-MTCRAV6N.js +0 -2
- package/dist/cli/chunks/audit-42XG5JFB.js +0 -3
- package/dist/cli/chunks/base-KKEBUHZC.js +0 -2
- package/dist/cli/chunks/browser-workflow-XHYAJUB6.js +0 -2
- package/dist/cli/chunks/chunk-2TYO4VZH.js +0 -12
- package/dist/cli/chunks/chunk-HPYGMKZF.js +0 -2
- package/dist/cli/chunks/chunk-OKKTDHHF.js +0 -65
- package/dist/cli/chunks/chunk-PZ4PRZXN.js +0 -699
- package/dist/cli/chunks/client-C6CJOCRN.js +0 -2
- package/dist/cli/chunks/cross-domain-router-I3GEA5G6.js +0 -2
- package/dist/cli/chunks/dream-JCQMG2RL.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-FBHE4ZWH.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EOOA4WXD.js +0 -2
- package/dist/cli/chunks/hnsw-index-TD3KRPND.js +0 -2
- package/dist/cli/chunks/hooks-RUPQVIUM.js +0 -250
- package/dist/cli/chunks/hybrid-router-64O6PXZ2.js +0 -2
- package/dist/cli/chunks/impact-analyzer-ITQHXGTM.js +0 -2
- package/dist/cli/chunks/init-wizard-DZ4IKGQI.js +0 -2
- package/dist/cli/chunks/kernel-HSVY4ZYK.js +0 -2
- package/dist/cli/chunks/knowledge-graph-H32TXXX4.js +0 -2
- package/dist/cli/chunks/llm-router-service-3FKESBUX.js +0 -2
- package/dist/cli/chunks/load-test-LKHURZGZ.js +0 -2
- package/dist/cli/chunks/memory-backend-XRJRZ6CK.js +0 -2
- package/dist/cli/chunks/memory-handlers-BL6E3XAK.js +0 -2
- package/dist/cli/chunks/protocol-executor-KABPB6PQ.js +0 -2
- package/dist/cli/chunks/provider-manager-U7EBM3FA.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-64O2OQIW.js +0 -2
- package/dist/cli/chunks/queen-coordinator-SV3COGIL.js +0 -2
- package/dist/cli/chunks/router-QARRPMED.js +0 -2
- package/dist/cli/chunks/routing-feedback-KD2JFTPK.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-4LLGF5AY.js +0 -2
- package/dist/cli/chunks/safe-db-RAX3H2P7.js +0 -2
- package/dist/cli/chunks/schedule-RQZGLLUY.js +0 -2
- package/dist/cli/chunks/scheduler-ACWTN4LN.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-SWNBO257.js +0 -2
- package/dist/cli/chunks/sync-ZLMF53TB.js +0 -2
- package/dist/cli/chunks/token-bootstrap-HQFFMZUF.js +0 -2
- package/dist/cli/chunks/unified-memory-QG3FDRKR.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-KOR4EOIG.js +0 -2
- package/dist/cli/chunks/unified-persistence-J6NIRYKM.js +0 -2
- package/dist/cli/chunks/visual-security-RAWV6YLN.js +0 -2
- package/dist/cli/chunks/witness-chain-ZO7FIM35.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-7SKITNIJ.js +0 -2
- package/dist/cli/chunks/wrappers-QXOPRPR4.js +0 -2
|
@@ -37,6 +37,26 @@ export declare function getFleetState(): FleetState;
|
|
|
37
37
|
* Check if fleet is initialized
|
|
38
38
|
*/
|
|
39
39
|
export declare function isFleetInitialized(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Adopt already-initialized components into the fleet state.
|
|
42
|
+
*
|
|
43
|
+
* The CLI's autoInitialize() builds the same kernel/queen/router stack as
|
|
44
|
+
* handleFleetInit but kept it in its own CLIContext, so every handler guarded
|
|
45
|
+
* by isFleetInitialized() (memory, agent, task, team, pipeline) rejected CLI
|
|
46
|
+
* invocations with "Fleet not initialized" even after a successful auto-init.
|
|
47
|
+
* Bridging the components here gives the MCP server and the CLI one shared
|
|
48
|
+
* fleet state (MCP-CLI parity).
|
|
49
|
+
*
|
|
50
|
+
* Idempotent: if a fleet is already initialized, returns the existing fleetId
|
|
51
|
+
* without touching state.
|
|
52
|
+
*/
|
|
53
|
+
export declare function adoptExternalFleet(components: {
|
|
54
|
+
kernel: QEKernel;
|
|
55
|
+
queen: QueenCoordinator;
|
|
56
|
+
router?: CrossDomainEventRouter | null;
|
|
57
|
+
workflowOrchestrator?: WorkflowOrchestrator | null;
|
|
58
|
+
topology?: TopologyType;
|
|
59
|
+
}): string;
|
|
40
60
|
/**
|
|
41
61
|
* Get the current fleet topology
|
|
42
62
|
*/
|
|
@@ -42,6 +42,34 @@ export function getFleetState() {
|
|
|
42
42
|
export function isFleetInitialized() {
|
|
43
43
|
return state.initialized && state.kernel !== null && state.queen !== null;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Adopt already-initialized components into the fleet state.
|
|
47
|
+
*
|
|
48
|
+
* The CLI's autoInitialize() builds the same kernel/queen/router stack as
|
|
49
|
+
* handleFleetInit but kept it in its own CLIContext, so every handler guarded
|
|
50
|
+
* by isFleetInitialized() (memory, agent, task, team, pipeline) rejected CLI
|
|
51
|
+
* invocations with "Fleet not initialized" even after a successful auto-init.
|
|
52
|
+
* Bridging the components here gives the MCP server and the CLI one shared
|
|
53
|
+
* fleet state (MCP-CLI parity).
|
|
54
|
+
*
|
|
55
|
+
* Idempotent: if a fleet is already initialized, returns the existing fleetId
|
|
56
|
+
* without touching state.
|
|
57
|
+
*/
|
|
58
|
+
export function adoptExternalFleet(components) {
|
|
59
|
+
if (isFleetInitialized()) {
|
|
60
|
+
return state.fleetId;
|
|
61
|
+
}
|
|
62
|
+
state.fleetId = `fleet-${uuidv4().slice(0, 8)}`;
|
|
63
|
+
state.kernel = components.kernel;
|
|
64
|
+
state.queen = components.queen;
|
|
65
|
+
state.router = components.router ?? null;
|
|
66
|
+
state.workflowOrchestrator = components.workflowOrchestrator ?? null;
|
|
67
|
+
state.initialized = true;
|
|
68
|
+
state.initTime = new Date();
|
|
69
|
+
state.topology = components.topology ?? 'hierarchical';
|
|
70
|
+
state.agentLevels.clear();
|
|
71
|
+
return state.fleetId;
|
|
72
|
+
}
|
|
45
73
|
/**
|
|
46
74
|
* Get the current fleet topology
|
|
47
75
|
*/
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { DomainHandlerConfig } from './handler-factory';
|
|
10
10
|
import { TestGenerateParams, TestGenerateResult, TestExecuteParams, CoverageAnalyzeParams, CoverageAnalyzeResult, QualityAssessParams, SecurityScanParams, ContractValidateParams, AccessibilityTestParams, ChaosTestParams } from '../types';
|
|
11
|
+
import { type RiskDecision } from '../../contracts/verdicts.js';
|
|
11
12
|
export interface TestExecuteResult {
|
|
12
13
|
taskId: string;
|
|
13
14
|
status: string;
|
|
@@ -32,6 +33,8 @@ export interface QualityAssessResult {
|
|
|
32
33
|
recommendations: string[];
|
|
33
34
|
duration: number;
|
|
34
35
|
savedFiles?: string[];
|
|
36
|
+
/** ADR-103: versioned, schema-validated gate verdict (additive) */
|
|
37
|
+
riskDecision?: RiskDecision;
|
|
35
38
|
}
|
|
36
39
|
export interface SecurityScanResult {
|
|
37
40
|
taskId: string;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { generateV2LearningFeedback, analyzeComplexity, generateV2AIInsights, generateV2Tests, detectAntiPatterns, generateTestId, } from './handler-factory';
|
|
10
10
|
import { MetricsCollector } from '../metrics';
|
|
11
11
|
import { DEFAULT_FRAMEWORKS, FRAMEWORK_TO_LANGUAGE, } from '../../shared/types/test-frameworks.js';
|
|
12
|
+
import { buildRiskDecisionFromQualityGate, validateRiskDecision, } from '../../contracts/verdicts.js';
|
|
12
13
|
const SUPPORTED_LANGUAGES = Object.keys(DEFAULT_FRAMEWORKS);
|
|
13
14
|
/**
|
|
14
15
|
* Normalize a language string from MCP input. Returns the canonical
|
|
@@ -348,16 +349,27 @@ export const qualityAssessConfig = {
|
|
|
348
349
|
useAgentBooster: routingResult?.useAgentBooster,
|
|
349
350
|
compiledContext: routingResult?.compiledContext,
|
|
350
351
|
}),
|
|
351
|
-
mapToResult: (taskId, data, duration, savedFiles) =>
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
352
|
+
mapToResult: (taskId, data, duration, savedFiles) => {
|
|
353
|
+
// ADR-103: attach a schema-validated RiskDecision envelope at the MCP
|
|
354
|
+
// boundary (additive — existing fields unchanged). Omit rather than
|
|
355
|
+
// emit an invalid envelope.
|
|
356
|
+
const riskDecision = buildRiskDecisionFromQualityGate({
|
|
357
|
+
passed: typeof data.passed === 'boolean' ? data.passed : undefined,
|
|
358
|
+
qualityScore: data.qualityScore,
|
|
359
|
+
recommendations: data.recommendations || [],
|
|
360
|
+
});
|
|
361
|
+
return {
|
|
362
|
+
taskId,
|
|
363
|
+
status: 'completed',
|
|
364
|
+
qualityScore: data.qualityScore || 0,
|
|
365
|
+
passed: data.passed || false,
|
|
366
|
+
metrics: data.metrics || {},
|
|
367
|
+
recommendations: data.recommendations || [],
|
|
368
|
+
duration,
|
|
369
|
+
savedFiles,
|
|
370
|
+
...(validateRiskDecision(riskDecision).valid ? { riskDecision } : {}),
|
|
371
|
+
};
|
|
372
|
+
},
|
|
361
373
|
};
|
|
362
374
|
// ============================================================================
|
|
363
375
|
// Security Scan Configuration
|
|
@@ -42,6 +42,25 @@ export interface ValidationPipelineResult {
|
|
|
42
42
|
id: string;
|
|
43
43
|
stepId: string;
|
|
44
44
|
severity: string;
|
|
45
|
+
/** ADR-105: what kind of evidence backs this finding */
|
|
46
|
+
evidenceClass: string;
|
|
47
|
+
evidenceArtifact?: {
|
|
48
|
+
command?: string;
|
|
49
|
+
output?: string;
|
|
50
|
+
dataSource?: string;
|
|
51
|
+
};
|
|
52
|
+
title: string;
|
|
53
|
+
description: string;
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* INFERRED findings from failed blocking steps (ADR-105) — queued for
|
|
57
|
+
* adversarial verification, not allowed to gate. Same projection as findings.
|
|
58
|
+
*/
|
|
59
|
+
needsVerification: Array<{
|
|
60
|
+
id: string;
|
|
61
|
+
stepId: string;
|
|
62
|
+
severity: string;
|
|
63
|
+
evidenceClass: string;
|
|
45
64
|
title: string;
|
|
46
65
|
description: string;
|
|
47
66
|
}>;
|
|
@@ -102,9 +102,19 @@ export async function handleValidationPipeline(params) {
|
|
|
102
102
|
id: f.id,
|
|
103
103
|
stepId: f.stepId,
|
|
104
104
|
severity: f.severity,
|
|
105
|
+
evidenceClass: f.evidenceClass,
|
|
106
|
+
evidenceArtifact: f.evidenceArtifact,
|
|
105
107
|
title: f.title,
|
|
106
108
|
description: f.description,
|
|
107
109
|
}))),
|
|
110
|
+
needsVerification: result.needsVerification.map(f => ({
|
|
111
|
+
id: f.id,
|
|
112
|
+
stepId: f.stepId,
|
|
113
|
+
severity: f.severity,
|
|
114
|
+
evidenceClass: f.evidenceClass,
|
|
115
|
+
title: f.title,
|
|
116
|
+
description: f.description,
|
|
117
|
+
})),
|
|
108
118
|
},
|
|
109
119
|
};
|
|
110
120
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Pattern Nulls Migration (ADR-110, issue #522)
|
|
3
|
+
*
|
|
4
|
+
* Kept nulls: first-class negative pattern records. When an applied pattern
|
|
5
|
+
* fails in a context, the failure is stored and consolidated per
|
|
6
|
+
* (pattern, context_fingerprint) so retrieval can surface "succeeded 12x,
|
|
7
|
+
* failed 3x — failures clustered in <context>" and ranking can discount by
|
|
8
|
+
* context-matched null density. Nulls are information, not tombstones —
|
|
9
|
+
* never deleted on pattern success elsewhere.
|
|
10
|
+
*
|
|
11
|
+
* Additive-only: no existing table or row is touched.
|
|
12
|
+
*/
|
|
13
|
+
import type { Database as DatabaseType } from 'better-sqlite3';
|
|
14
|
+
export declare const MIGRATION_VERSION = "20260611_add_pattern_nulls_table";
|
|
15
|
+
export declare const PATTERN_NULLS_SCHEMA = "\n -- Negative pattern records (ADR-110 kept nulls)\n CREATE TABLE IF NOT EXISTS qe_pattern_nulls (\n id TEXT PRIMARY KEY,\n pattern_id TEXT NOT NULL REFERENCES qe_patterns(id),\n context_fingerprint TEXT NOT NULL,\n failure_mode TEXT NOT NULL,\n trajectory_ref TEXT,\n evidence_class TEXT NOT NULL DEFAULT 'EXECUTED'\n CHECK (evidence_class IN ('EXECUTED','STATIC','INFERRED','CONJECTURE')),\n consolidated_count INTEGER NOT NULL DEFAULT 1,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n UNIQUE (pattern_id, context_fingerprint)\n );\n\n CREATE INDEX IF NOT EXISTS idx_pattern_nulls_pattern ON qe_pattern_nulls(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_pattern_nulls_context ON qe_pattern_nulls(context_fingerprint);\n";
|
|
16
|
+
export declare function applyMigration(db: DatabaseType): void;
|
|
17
|
+
export declare function isMigrationApplied(db: DatabaseType): boolean;
|
|
18
|
+
export declare function rollbackMigration(db: DatabaseType): void;
|
|
19
|
+
declare const _default: {
|
|
20
|
+
version: string;
|
|
21
|
+
apply: typeof applyMigration;
|
|
22
|
+
isApplied: typeof isMigrationApplied;
|
|
23
|
+
rollback: typeof rollbackMigration;
|
|
24
|
+
};
|
|
25
|
+
export default _default;
|
|
26
|
+
//# sourceMappingURL=20260611_add_pattern_nulls_table.d.ts.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Pattern Nulls Migration (ADR-110, issue #522)
|
|
3
|
+
*
|
|
4
|
+
* Kept nulls: first-class negative pattern records. When an applied pattern
|
|
5
|
+
* fails in a context, the failure is stored and consolidated per
|
|
6
|
+
* (pattern, context_fingerprint) so retrieval can surface "succeeded 12x,
|
|
7
|
+
* failed 3x — failures clustered in <context>" and ranking can discount by
|
|
8
|
+
* context-matched null density. Nulls are information, not tombstones —
|
|
9
|
+
* never deleted on pattern success elsewhere.
|
|
10
|
+
*
|
|
11
|
+
* Additive-only: no existing table or row is touched.
|
|
12
|
+
*/
|
|
13
|
+
export const MIGRATION_VERSION = '20260611_add_pattern_nulls_table';
|
|
14
|
+
export const PATTERN_NULLS_SCHEMA = `
|
|
15
|
+
-- Negative pattern records (ADR-110 kept nulls)
|
|
16
|
+
CREATE TABLE IF NOT EXISTS qe_pattern_nulls (
|
|
17
|
+
id TEXT PRIMARY KEY,
|
|
18
|
+
pattern_id TEXT NOT NULL REFERENCES qe_patterns(id),
|
|
19
|
+
context_fingerprint TEXT NOT NULL,
|
|
20
|
+
failure_mode TEXT NOT NULL,
|
|
21
|
+
trajectory_ref TEXT,
|
|
22
|
+
evidence_class TEXT NOT NULL DEFAULT 'EXECUTED'
|
|
23
|
+
CHECK (evidence_class IN ('EXECUTED','STATIC','INFERRED','CONJECTURE')),
|
|
24
|
+
consolidated_count INTEGER NOT NULL DEFAULT 1,
|
|
25
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
26
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
27
|
+
UNIQUE (pattern_id, context_fingerprint)
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_pattern_nulls_pattern ON qe_pattern_nulls(pattern_id);
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_pattern_nulls_context ON qe_pattern_nulls(context_fingerprint);
|
|
32
|
+
`;
|
|
33
|
+
export function applyMigration(db) {
|
|
34
|
+
db.exec(PATTERN_NULLS_SCHEMA);
|
|
35
|
+
}
|
|
36
|
+
export function isMigrationApplied(db) {
|
|
37
|
+
try {
|
|
38
|
+
const result = db.prepare(`
|
|
39
|
+
SELECT COUNT(*) as count FROM sqlite_master
|
|
40
|
+
WHERE type='table' AND name = 'qe_pattern_nulls'
|
|
41
|
+
`).get();
|
|
42
|
+
return result.count === 1;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function rollbackMigration(db) {
|
|
49
|
+
// Safety check: refuse to drop a table that contains data (kept nulls are data)
|
|
50
|
+
const count = db.prepare('SELECT COUNT(*) as cnt FROM qe_pattern_nulls').get()?.cnt ?? 0;
|
|
51
|
+
if (count > 0) {
|
|
52
|
+
throw new Error(`REFUSING rollback: qe_pattern_nulls contains ${count} kept nulls. ` +
|
|
53
|
+
'Backup and manually drop if you really need to rollback.');
|
|
54
|
+
}
|
|
55
|
+
db.exec('DROP TABLE IF EXISTS qe_pattern_nulls;');
|
|
56
|
+
}
|
|
57
|
+
export default {
|
|
58
|
+
version: MIGRATION_VERSION,
|
|
59
|
+
apply: applyMigration,
|
|
60
|
+
isApplied: isMigrationApplied,
|
|
61
|
+
rollback: rollbackMigration,
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=20260611_add_pattern_nulls_table.js.map
|
|
@@ -116,8 +116,12 @@ export class CostTracker {
|
|
|
116
116
|
currency: 'USD',
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
|
-
// Convert from per-million to actual cost
|
|
120
|
-
|
|
119
|
+
// Convert from per-million to actual cost.
|
|
120
|
+
// ADR-088: cache reads bill at ~0.1x input rate, cache writes at ~1.25x
|
|
121
|
+
// (5-minute TTL); promptTokens already excludes both.
|
|
122
|
+
const inputCost = (usage.promptTokens / 1_000_000) * pricing.input +
|
|
123
|
+
((usage.cacheReadTokens ?? 0) / 1_000_000) * pricing.input * 0.1 +
|
|
124
|
+
((usage.cacheCreationTokens ?? 0) / 1_000_000) * pricing.input * 1.25;
|
|
121
125
|
const outputCost = (usage.completionTokens / 1_000_000) * pricing.output;
|
|
122
126
|
return {
|
|
123
127
|
inputCost,
|
|
@@ -30,6 +30,10 @@ export interface TokenUsage {
|
|
|
30
30
|
promptTokens: number;
|
|
31
31
|
completionTokens: number;
|
|
32
32
|
totalTokens: number;
|
|
33
|
+
/** ADR-088: tokens written to the prompt cache this request (billed ~1.25x input rate) */
|
|
34
|
+
cacheCreationTokens?: number;
|
|
35
|
+
/** ADR-088: tokens served from the prompt cache this request (billed ~0.1x input rate) */
|
|
36
|
+
cacheReadTokens?: number;
|
|
33
37
|
}
|
|
34
38
|
/**
|
|
35
39
|
* Cost information for a request
|
|
@@ -122,7 +122,15 @@ export class ClaudeProvider {
|
|
|
122
122
|
messages,
|
|
123
123
|
};
|
|
124
124
|
if (options?.systemPrompt) {
|
|
125
|
-
|
|
125
|
+
// ADR-088: when caching is enabled, send the system prompt as a
|
|
126
|
+
// content-block array with an ephemeral cache breakpoint — repeated
|
|
127
|
+
// calls within the TTL read the cached prefix at ~0.1x input price.
|
|
128
|
+
// Anthropic-native provider only (ADR-092: other providers untouched).
|
|
129
|
+
// Note: prefixes below the model's minimum (1024-4096 tokens) silently
|
|
130
|
+
// don't cache; the breakpoint is harmless in that case.
|
|
131
|
+
body.system = this.config.enableCache !== false
|
|
132
|
+
? [{ type: 'text', text: options.systemPrompt, cache_control: { type: 'ephemeral' } }]
|
|
133
|
+
: options.systemPrompt;
|
|
126
134
|
}
|
|
127
135
|
if (options?.stopSequences && options.stopSequences.length > 0) {
|
|
128
136
|
body.stop_sequences = options.stopSequences;
|
|
@@ -164,10 +172,16 @@ export class ClaudeProvider {
|
|
|
164
172
|
throw this.handleApiError(response.status, errorData, model);
|
|
165
173
|
}
|
|
166
174
|
const data = await response.json();
|
|
175
|
+
// ADR-088: input_tokens is the uncached remainder only — cache
|
|
176
|
+
// read/creation tokens are reported separately by the API.
|
|
177
|
+
const cacheCreationTokens = data.usage.cache_creation_input_tokens ?? 0;
|
|
178
|
+
const cacheReadTokens = data.usage.cache_read_input_tokens ?? 0;
|
|
167
179
|
const usage = {
|
|
168
180
|
promptTokens: data.usage.input_tokens,
|
|
169
181
|
completionTokens: data.usage.output_tokens,
|
|
170
|
-
totalTokens: data.usage.input_tokens + data.usage.output_tokens,
|
|
182
|
+
totalTokens: data.usage.input_tokens + cacheCreationTokens + cacheReadTokens + data.usage.output_tokens,
|
|
183
|
+
cacheCreationTokens,
|
|
184
|
+
cacheReadTokens,
|
|
171
185
|
};
|
|
172
186
|
const cost = CostTracker.calculateCost(model, usage);
|
|
173
187
|
// ADR-042: Track token usage in TokenMetricsCollector
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Reasoning-Tag Scrubber (ADR-099)
|
|
3
|
+
*
|
|
4
|
+
* Strips extended-thinking blocks (<think>, <thinking>, <reasoning>,
|
|
5
|
+
* <REASONING_SCRATCHPAD>) from text before it enters the learning pipeline —
|
|
6
|
+
* pattern distillation, trajectory persistence, and embedding generation.
|
|
7
|
+
*
|
|
8
|
+
* Why: reasoning-capable models (Fable 5 era) emit large scratchpad blocks
|
|
9
|
+
* inside task results and step actions. Embedding them verbatim contaminates
|
|
10
|
+
* the 384-dim pattern vectors in memory.db, degrading HNSW retrieval quality
|
|
11
|
+
* (the scratchpad dominates the signal of what the step actually did).
|
|
12
|
+
*
|
|
13
|
+
* Boundary-gated: only well-formed `<tag ...> ... </tag>` pairs are removed.
|
|
14
|
+
* Prose that merely *mentions* a tag name (e.g. documentation about
|
|
15
|
+
* "<thinking> blocks") without a closing tag is left intact.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Remove reasoning scratchpad blocks from text destined for the learning
|
|
19
|
+
* pipeline. Collapses the whitespace gap a removed block leaves behind so
|
|
20
|
+
* surrounding prose re-joins cleanly. Non-string / empty input returns as-is.
|
|
21
|
+
*/
|
|
22
|
+
export declare function scrubReasoningBlocks(text: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Scrub a value that may be a string or a JSON-serializable structure whose
|
|
25
|
+
* string leaves may contain reasoning blocks. Non-objects pass through.
|
|
26
|
+
* Used for trajectory step `result.data` payloads serialized into memory.db.
|
|
27
|
+
*/
|
|
28
|
+
export declare function scrubReasoningDeep<T>(value: T): T;
|
|
29
|
+
//# sourceMappingURL=reasoning-scrub.d.ts.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Reasoning-Tag Scrubber (ADR-099)
|
|
3
|
+
*
|
|
4
|
+
* Strips extended-thinking blocks (<think>, <thinking>, <reasoning>,
|
|
5
|
+
* <REASONING_SCRATCHPAD>) from text before it enters the learning pipeline —
|
|
6
|
+
* pattern distillation, trajectory persistence, and embedding generation.
|
|
7
|
+
*
|
|
8
|
+
* Why: reasoning-capable models (Fable 5 era) emit large scratchpad blocks
|
|
9
|
+
* inside task results and step actions. Embedding them verbatim contaminates
|
|
10
|
+
* the 384-dim pattern vectors in memory.db, degrading HNSW retrieval quality
|
|
11
|
+
* (the scratchpad dominates the signal of what the step actually did).
|
|
12
|
+
*
|
|
13
|
+
* Boundary-gated: only well-formed `<tag ...> ... </tag>` pairs are removed.
|
|
14
|
+
* Prose that merely *mentions* a tag name (e.g. documentation about
|
|
15
|
+
* "<thinking> blocks") without a closing tag is left intact.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Tag names treated as reasoning scratchpads. Matched case-insensitively
|
|
19
|
+
* as whole tag names (open tag may carry attributes).
|
|
20
|
+
*/
|
|
21
|
+
const REASONING_TAG_NAMES = ['think', 'thinking', 'reasoning', 'reasoning_scratchpad'];
|
|
22
|
+
/**
|
|
23
|
+
* One alternation per tag, each backreference-paired so an open tag is only
|
|
24
|
+
* consumed when its own matching close tag exists. Non-greedy body keeps
|
|
25
|
+
* adjacent blocks separate. The `\s*` before `>` tolerates `</thinking >`.
|
|
26
|
+
*/
|
|
27
|
+
const REASONING_BLOCK_RE = new RegExp(`<(${REASONING_TAG_NAMES.join('|')})(?:\\s[^>]*)?>[\\s\\S]*?</\\1\\s*>`, 'gi');
|
|
28
|
+
/**
|
|
29
|
+
* Remove reasoning scratchpad blocks from text destined for the learning
|
|
30
|
+
* pipeline. Collapses the whitespace gap a removed block leaves behind so
|
|
31
|
+
* surrounding prose re-joins cleanly. Non-string / empty input returns as-is.
|
|
32
|
+
*/
|
|
33
|
+
export function scrubReasoningBlocks(text) {
|
|
34
|
+
if (!text || typeof text !== 'string' || !text.includes('<')) {
|
|
35
|
+
return text;
|
|
36
|
+
}
|
|
37
|
+
let out = text;
|
|
38
|
+
// Repeat until stable: removing an inner block can expose an outer pair
|
|
39
|
+
// (e.g. <thinking><thinking>…</thinking></thinking>).
|
|
40
|
+
for (let i = 0; i < 5; i++) {
|
|
41
|
+
const next = out.replace(REASONING_BLOCK_RE, ' ');
|
|
42
|
+
if (next === out)
|
|
43
|
+
break;
|
|
44
|
+
out = next;
|
|
45
|
+
}
|
|
46
|
+
// If nothing was removed, return the original text untouched (don't
|
|
47
|
+
// re-format whitespace of clean input).
|
|
48
|
+
if (out === text) {
|
|
49
|
+
return text;
|
|
50
|
+
}
|
|
51
|
+
// Collapse the space runs left where blocks were removed; preserve newlines.
|
|
52
|
+
return out.replace(/[ \t]{2,}/g, ' ').trim();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Scrub a value that may be a string or a JSON-serializable structure whose
|
|
56
|
+
* string leaves may contain reasoning blocks. Non-objects pass through.
|
|
57
|
+
* Used for trajectory step `result.data` payloads serialized into memory.db.
|
|
58
|
+
*/
|
|
59
|
+
export function scrubReasoningDeep(value) {
|
|
60
|
+
if (typeof value === 'string') {
|
|
61
|
+
return scrubReasoningBlocks(value);
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
return value.map((v) => scrubReasoningDeep(v));
|
|
65
|
+
}
|
|
66
|
+
if (value !== null && typeof value === 'object') {
|
|
67
|
+
const out = {};
|
|
68
|
+
for (const [k, v] of Object.entries(value)) {
|
|
69
|
+
out[k] = scrubReasoningDeep(v);
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=reasoning-scrub.js.map
|
|
@@ -7,10 +7,28 @@
|
|
|
7
7
|
export type StepCategory = 'format' | 'content' | 'quality' | 'traceability' | 'compliance';
|
|
8
8
|
export type StepSeverity = 'blocking' | 'warning' | 'info';
|
|
9
9
|
export type StepStatus = 'pass' | 'fail' | 'warn' | 'skip';
|
|
10
|
+
/**
|
|
11
|
+
* Evidence class of a finding (ADR-105). Quality gates may pass/block only on
|
|
12
|
+
* EXECUTED or STATIC findings; INFERRED routes to adversarial verification
|
|
13
|
+
* (ADR-102) before it can gate; CONJECTURE never gates.
|
|
14
|
+
*/
|
|
15
|
+
export type EvidenceClass = 'EXECUTED' | 'STATIC' | 'INFERRED' | 'CONJECTURE';
|
|
16
|
+
/** Provenance attached to a finding — required for EXECUTED claims. */
|
|
17
|
+
export interface EvidenceArtifact {
|
|
18
|
+
/** Command that was actually run */
|
|
19
|
+
command?: string;
|
|
20
|
+
/** Captured output backing the claim */
|
|
21
|
+
output?: string;
|
|
22
|
+
/** Data source for STATIC findings (coverage file, AST, lockfile, …) */
|
|
23
|
+
dataSource?: string;
|
|
24
|
+
}
|
|
10
25
|
export interface Finding {
|
|
11
26
|
id: string;
|
|
12
27
|
stepId: string;
|
|
13
28
|
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
29
|
+
/** ADR-105: what kind of evidence backs this finding */
|
|
30
|
+
evidenceClass: EvidenceClass;
|
|
31
|
+
evidenceArtifact?: EvidenceArtifact;
|
|
14
32
|
title: string;
|
|
15
33
|
description: string;
|
|
16
34
|
location?: string;
|
|
@@ -63,7 +81,14 @@ export interface PipelineResult {
|
|
|
63
81
|
overall: 'pass' | 'fail' | 'warn';
|
|
64
82
|
score: number;
|
|
65
83
|
steps: StepResult[];
|
|
84
|
+
/** Findings from failed blocking steps that may gate (EXECUTED/STATIC only, ADR-105) */
|
|
66
85
|
blockers: Finding[];
|
|
86
|
+
/**
|
|
87
|
+
* INFERRED findings from failed blocking steps (ADR-105): not allowed to
|
|
88
|
+
* gate; queued for adversarial verification (ADR-102) to be promoted to
|
|
89
|
+
* blockers or demoted. Their presence downgrades overall to 'warn'.
|
|
90
|
+
*/
|
|
91
|
+
needsVerification: Finding[];
|
|
67
92
|
halted: boolean;
|
|
68
93
|
haltedAt?: string;
|
|
69
94
|
totalDuration: number;
|
|
@@ -25,6 +25,7 @@ export async function runPipeline(config, content, filePath, metadata) {
|
|
|
25
25
|
};
|
|
26
26
|
const stepResults = [];
|
|
27
27
|
const blockers = [];
|
|
28
|
+
const needsVerification = [];
|
|
28
29
|
let halted = false;
|
|
29
30
|
let haltedAt;
|
|
30
31
|
// Filter steps if specified
|
|
@@ -47,6 +48,8 @@ export async function runPipeline(config, content, filePath, metadata) {
|
|
|
47
48
|
id: `${step.id}-error`,
|
|
48
49
|
stepId: step.id,
|
|
49
50
|
severity: 'critical',
|
|
51
|
+
evidenceClass: 'EXECUTED',
|
|
52
|
+
evidenceArtifact: { output: err.message },
|
|
50
53
|
title: `Step execution failed: ${step.name}`,
|
|
51
54
|
description: err.message,
|
|
52
55
|
}],
|
|
@@ -60,10 +63,15 @@ export async function runPipeline(config, content, filePath, metadata) {
|
|
|
60
63
|
}
|
|
61
64
|
stepResults.push(result);
|
|
62
65
|
context.previousResults.push(result);
|
|
63
|
-
// Check for blocking failure
|
|
66
|
+
// Check for blocking failure (ADR-105: only EXECUTED/STATIC may gate)
|
|
64
67
|
if (step.severity === 'blocking' && result.status === 'fail') {
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
const gating = result.findings.filter(f => f.evidenceClass === 'EXECUTED' || f.evidenceClass === 'STATIC');
|
|
69
|
+
needsVerification.push(...result.findings.filter(f => f.evidenceClass === 'INFERRED'));
|
|
70
|
+
// CONJECTURE findings stay visible on the step but never gate.
|
|
71
|
+
blockers.push(...gating);
|
|
72
|
+
// Halt only when verified evidence blocks; a step that failed purely on
|
|
73
|
+
// unverified inference must not stop the pipeline.
|
|
74
|
+
if (gating.length > 0 && !config.continueOnFailure) {
|
|
67
75
|
halted = true;
|
|
68
76
|
haltedAt = step.id;
|
|
69
77
|
break;
|
|
@@ -91,11 +99,16 @@ export async function runPipeline(config, content, filePath, metadata) {
|
|
|
91
99
|
totalWeight += weight;
|
|
92
100
|
}
|
|
93
101
|
const finalScore = totalWeight > 0 ? Math.round(weightedScore / totalWeight) : 0;
|
|
94
|
-
// Determine overall status
|
|
102
|
+
// Determine overall status (ADR-105: unverified inference warns, never fails)
|
|
95
103
|
let overall;
|
|
96
104
|
if (blockers.length > 0) {
|
|
97
105
|
overall = 'fail';
|
|
98
106
|
}
|
|
107
|
+
else if (needsVerification.length > 0 || stepResults.some(r => r.status === 'fail')) {
|
|
108
|
+
// A failed step without gating evidence (INFERRED queued, or CONJECTURE
|
|
109
|
+
// suppressed) must never silently read as a clean pass.
|
|
110
|
+
overall = 'warn';
|
|
111
|
+
}
|
|
99
112
|
else if (stepResults.some(r => r.status === 'warn')) {
|
|
100
113
|
overall = 'warn';
|
|
101
114
|
}
|
|
@@ -112,6 +125,7 @@ export async function runPipeline(config, content, filePath, metadata) {
|
|
|
112
125
|
score: finalScore,
|
|
113
126
|
steps: stepResults,
|
|
114
127
|
blockers,
|
|
128
|
+
needsVerification,
|
|
115
129
|
halted,
|
|
116
130
|
haltedAt,
|
|
117
131
|
totalDuration: Date.now() - startTime,
|
|
@@ -146,13 +160,22 @@ export function formatPipelineReport(result) {
|
|
|
146
160
|
lines.push('## Blockers');
|
|
147
161
|
lines.push('');
|
|
148
162
|
for (const blocker of result.blockers) {
|
|
149
|
-
lines.push(`- **${blocker.title}** (${blocker.severity}): ${blocker.description}`);
|
|
163
|
+
lines.push(`- **${blocker.title}** (${blocker.severity}, ${blocker.evidenceClass}): ${blocker.description}`);
|
|
150
164
|
if (blocker.suggestion) {
|
|
151
165
|
lines.push(` - Suggestion: ${blocker.suggestion}`);
|
|
152
166
|
}
|
|
153
167
|
}
|
|
154
168
|
lines.push('');
|
|
155
169
|
}
|
|
170
|
+
// Unverified inference awaiting adversarial verification (ADR-105/ADR-102)
|
|
171
|
+
if (result.needsVerification.length > 0) {
|
|
172
|
+
lines.push('## Needs Verification (INFERRED — did not gate)');
|
|
173
|
+
lines.push('');
|
|
174
|
+
for (const f of result.needsVerification) {
|
|
175
|
+
lines.push(`- **${f.title}** (${f.severity}): ${f.description}`);
|
|
176
|
+
}
|
|
177
|
+
lines.push('');
|
|
178
|
+
}
|
|
156
179
|
// Detailed findings
|
|
157
180
|
const allFindings = result.steps.flatMap(s => s.findings);
|
|
158
181
|
if (allFindings.length > 0) {
|
|
@@ -9,6 +9,11 @@ function createFinding(stepId, severity, title, description, opts) {
|
|
|
9
9
|
id: `${stepId}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
10
10
|
stepId,
|
|
11
11
|
severity,
|
|
12
|
+
// Every step in this file is deterministic structure/content analysis of
|
|
13
|
+
// the document itself — STATIC per ADR-105. LLM-derived steps must pass
|
|
14
|
+
// evidenceClass explicitly.
|
|
15
|
+
evidenceClass: opts?.evidenceClass ?? 'STATIC',
|
|
16
|
+
evidenceArtifact: opts?.evidenceArtifact,
|
|
12
17
|
title,
|
|
13
18
|
description,
|
|
14
19
|
location: opts?.location,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.10.
|
|
3
|
+
"version": "3.10.6",
|
|
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",
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
"mcp:parity": "node scripts/audit-mcp-tool-parity.mjs",
|
|
73
73
|
"mcp:report": "echo 'MCP Report: uses vitest for test reporting' && exit 0",
|
|
74
74
|
"test:code-intelligence": "npm test -- --run tests/unit/domains/code-intelligence/ tests/unit/coordination/mincut/",
|
|
75
|
+
"verify:invariants": "tsx scripts/verify-shipped-invariants.ts",
|
|
75
76
|
"verify:counts": "node -e \"const fs=require('fs'),g=require('glob'),p=require('path');const src=g.globSync('src/**/*.ts',{ignore:'src/**/*.test.ts'});const tests=g.globSync('tests/**/*.test.ts');const agents=g.globSync('.claude/agents/v3/qe-*.md');const skills=g.globSync('.claude/skills/**/*.md');const ok=src.length>500&&tests.length>300;const r={status:ok?'pass':'fail',srcFiles:src.length,testFiles:tests.length,agents:agents.length,skills:skills.length};fs.mkdirSync('reports',{recursive:true});fs.writeFileSync(p.join('reports','verification-counts.json'),JSON.stringify(r,null,2));console.log('Counts:',JSON.stringify(r));if(!ok)process.exit(1)\"",
|
|
76
77
|
"verify:agent-skills": "node -e \"const fs=require('fs'),g=require('glob'),p=require('path');const agents=g.globSync('.claude/agents/v3/qe-*.md');const skills=g.globSync('.claude/skills/**/*.md');const missing=[];for(const a of agents){const name=p.basename(a,'.md');const hasSkill=skills.some(s=>s.includes(name.replace('qe-','')));if(!hasSkill)missing.push(name)}const ok=missing.length<agents.length/2;const r={status:ok?'pass':'fail',agents:agents.length,skills:skills.length,unmatchedAgents:missing.length,missing:missing.slice(0,10)};fs.mkdirSync('reports',{recursive:true});fs.writeFileSync(p.join('reports','verification-agent-skills.json'),JSON.stringify(r,null,2));console.log('Agent-Skills:',JSON.stringify(r));if(!ok)process.exit(1)\"",
|
|
77
78
|
"verify:features": "node -e \"const fs=require('fs'),p=require('path');const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const hasBin=!!pkg.bin&&Object.keys(pkg.bin).length>=2;const hasExports=!!pkg.exports&&Object.keys(pkg.exports).length>=3;const cliBundleExists=fs.existsSync('dist/cli/bundle.js');const mcpBundleExists=fs.existsSync('dist/mcp/bundle.js');const ok=hasBin&&hasExports&&cliBundleExists&&mcpBundleExists;const r={status:ok?'pass':'fail',binCount:Object.keys(pkg.bin||{}).length,exportsCount:Object.keys(pkg.exports||{}).length,cliBundleExists,mcpBundleExists};fs.mkdirSync('reports',{recursive:true});fs.writeFileSync(p.join('reports','verification-features.json'),JSON.stringify(r,null,2));console.log('Features:',JSON.stringify(r));if(!ok)process.exit(1)\"",
|
|
@@ -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.10.4");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-ZM4QGYGK.js";import"./chunk-LYKSIOOT.js";import"./chunk-USB7GCIC.js";import"./chunk-IYFMDIYZ.js";import"./chunk-2B6ETC7C.js";import"./chunk-SVILIQQQ.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.10.4");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-2TYO4VZH.js";import"./chunk-5Q3L4QEE.js";import"./chunk-AMW27FSS.js";import"./chunk-GLMDRGJD.js";import"./chunk-OKKTDHHF.js";import"./chunk-SC6UFGJ6.js";import"./chunk-VDKMBOUK.js";import"./chunk-KGPAWNNR.js";import"./chunk-OIFJH7TF.js";import"./chunk-MQIAN57O.js";import"./chunk-YSLE6NNG.js";import"./chunk-XBFEHVBO.js";import"./chunk-TCV5DASI.js";import"./chunk-5T2HDET6.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-KWZEBHAP.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-UFKVKNAA.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,3 +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.10.4");process.exit(0)}
|
|
2
|
-
import{d as c,e as u,f as h,g as m}from"./chunk-UW3ZSFFB.js";import{m as p}from"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import{b as s}from"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-RJKYPWFD.js";import{p as l,q as d}from"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import{g as f}from"./chunk-SVILIQQQ.js";import{Command as g}from"commander";import a from"chalk";p();import{existsSync as y}from"node:fs";import b from"node:path";function C(n,i){let t=[];t.push(a.bold("Witness Chain Audit Verification")),t.push("");let e=i?a.green("ENABLED"):a.yellow("DISABLED");t.push(` Feature Flag: ${e}`),t.push(` Chain Length: ${n.length} receipts`);let r=n.valid?a.green("VALID"):a.red("BROKEN");return t.push(` Integrity: ${r}`),n.length>0&&t.push(` Last Hash: ${n.lastHash.slice(0,16)}...`),!n.valid&&n.brokenAt>=0&&(t.push(""),t.push(a.red(` Break detected at index ${n.brokenAt}`)),t.push(a.red(` ${n.message}`))),t.push(""),t.join(`
|
|
3
|
-
`)}function x(){try{let n=s(),i=b.join(n,".agentic-qe","memory.db");if(!y(i))return null;let t=(d(),f(l)),e=new t(i),r=c(e),o=h(r);return e.close(),o}catch{return null}}async function A(n){let i=m(),e=(x()??u()).verifyChain(),r={featureEnabled:i,chainLength:e.length,integrity:e.valid,brokenAt:e.brokenAt,lastHash:e.lastHash,message:e.message};return n.format==="json"?console.log(JSON.stringify(r,null,2)):console.log(C(e,i)),r}function v(n,i,t){let e=new g("audit").description("Witness chain audit trail management");return e.command("verify").description("Verify witness chain integrity").option("-F, --format <format>","Output format (json|text)","text").action(async r=>{try{await A({format:r.format}),await i(0)}catch(o){console.error("Failed to verify witness chain:",o),await i(1)}}),e}export{v as createAuditCommand,C as formatVerificationText,A as handleAuditVerify};
|
|
@@ -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.10.4");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j}from"./chunk-F77X5DAF.js";import"./chunk-TBJ566KV.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{j as MCPToolBase,i as defaultToolLogger,h as getLLMRouter,d as getMemoryBackend,f as getSharedLLMRouter,b as getSharedMemoryBackend,a as registerRvfResetFn,g as resetSharedLLMRouter,c as resetSharedMemoryBackend,e as setSharedLLMRouter};
|
|
@@ -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.10.4");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-UXJVR323.js";import"./chunk-F77X5DAF.js";import"./chunk-TBJ566KV.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{a as BrowserWorkflowTool};
|