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
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Structured Verdict Contracts (ADR-103)
|
|
3
|
+
*
|
|
4
|
+
* Typed, versioned verdict envelopes for agent-to-agent and MCP-boundary
|
|
5
|
+
* handoffs: RiskDecision (quality gates), FindingVerdict (review findings
|
|
6
|
+
* with adversarial refutations), CoverageGap (risk-weighted gap reports).
|
|
7
|
+
*
|
|
8
|
+
* Validators are dependency-free and are the source of truth; the exported
|
|
9
|
+
* JSON Schemas (published to schemas/*.schema.json by
|
|
10
|
+
* scripts/generate-verdict-schemas.mjs) mirror them for external tooling
|
|
11
|
+
* (ajv, workflow agent() schema option). Envelopes are versioned and
|
|
12
|
+
* additive-only within a major version: consumers must tolerate unknown
|
|
13
|
+
* fields, so schemas keep `additionalProperties: true`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const VERDICT_CONTRACT_VERSION: "1.0";
|
|
16
|
+
export type RiskDecisionOutcome = 'approve' | 'block' | 'escalate';
|
|
17
|
+
export interface RiskDecision {
|
|
18
|
+
/** Envelope discriminator + version */
|
|
19
|
+
contract: 'risk-decision@1';
|
|
20
|
+
decision: RiskDecisionOutcome;
|
|
21
|
+
riskFactors: string[];
|
|
22
|
+
/** 0..1 */
|
|
23
|
+
confidence: number;
|
|
24
|
+
rationale: string;
|
|
25
|
+
}
|
|
26
|
+
export type FindingSeverity = 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
27
|
+
export type FindingOutcome = 'upheld' | 'refuted' | 'uncertain';
|
|
28
|
+
export interface FindingVerdict {
|
|
29
|
+
contract: 'finding-verdict@1';
|
|
30
|
+
id: string;
|
|
31
|
+
title: string;
|
|
32
|
+
file?: string;
|
|
33
|
+
severity: FindingSeverity;
|
|
34
|
+
/** 0..1 */
|
|
35
|
+
confidence: number;
|
|
36
|
+
evidence: string[];
|
|
37
|
+
verdict: FindingOutcome;
|
|
38
|
+
/** One entry per refuter that voted to refute (empty when none) */
|
|
39
|
+
refutations: string[];
|
|
40
|
+
}
|
|
41
|
+
export interface CoverageGap {
|
|
42
|
+
contract: 'coverage-gap@1';
|
|
43
|
+
file: string;
|
|
44
|
+
/** 1-based inclusive line range; omit for whole-file gaps */
|
|
45
|
+
rangeStart?: number;
|
|
46
|
+
rangeEnd?: number;
|
|
47
|
+
/** 0..1 risk weighting */
|
|
48
|
+
riskScore: number;
|
|
49
|
+
suggestedTests: string[];
|
|
50
|
+
}
|
|
51
|
+
export interface ValidationResult {
|
|
52
|
+
valid: boolean;
|
|
53
|
+
errors: string[];
|
|
54
|
+
}
|
|
55
|
+
export declare function validateRiskDecision(value: unknown): ValidationResult;
|
|
56
|
+
export declare function validateFindingVerdict(value: unknown): ValidationResult;
|
|
57
|
+
export declare function validateCoverageGap(value: unknown): ValidationResult;
|
|
58
|
+
/**
|
|
59
|
+
* Derive a RiskDecision from a quality-gate outcome (quality_assess boundary).
|
|
60
|
+
* Indeterminate gates (passed undefined) escalate rather than guess.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildRiskDecisionFromQualityGate(input: {
|
|
63
|
+
passed?: boolean;
|
|
64
|
+
qualityScore?: number;
|
|
65
|
+
recommendations?: string[];
|
|
66
|
+
}): RiskDecision;
|
|
67
|
+
export declare const RISK_DECISION_SCHEMA: {
|
|
68
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
69
|
+
readonly $id: "https://agentic-qe.dev/schemas/risk-decision.schema.json";
|
|
70
|
+
readonly title: "RiskDecision";
|
|
71
|
+
readonly type: "object";
|
|
72
|
+
readonly required: readonly ["contract", "decision", "riskFactors", "confidence", "rationale"];
|
|
73
|
+
readonly additionalProperties: true;
|
|
74
|
+
readonly properties: {
|
|
75
|
+
readonly contract: {
|
|
76
|
+
readonly const: "risk-decision@1";
|
|
77
|
+
};
|
|
78
|
+
readonly decision: {
|
|
79
|
+
readonly enum: readonly ["approve", "block", "escalate"];
|
|
80
|
+
};
|
|
81
|
+
readonly riskFactors: {
|
|
82
|
+
readonly type: "array";
|
|
83
|
+
readonly items: {
|
|
84
|
+
readonly type: "string";
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
readonly confidence: {
|
|
88
|
+
readonly type: "number";
|
|
89
|
+
readonly minimum: 0;
|
|
90
|
+
readonly maximum: 1;
|
|
91
|
+
};
|
|
92
|
+
readonly rationale: {
|
|
93
|
+
readonly type: "string";
|
|
94
|
+
readonly minLength: 1;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
export declare const FINDING_VERDICT_SCHEMA: {
|
|
99
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
100
|
+
readonly $id: "https://agentic-qe.dev/schemas/finding-verdict.schema.json";
|
|
101
|
+
readonly title: "FindingVerdict";
|
|
102
|
+
readonly type: "object";
|
|
103
|
+
readonly required: readonly ["contract", "id", "title", "severity", "confidence", "evidence", "verdict", "refutations"];
|
|
104
|
+
readonly additionalProperties: true;
|
|
105
|
+
readonly properties: {
|
|
106
|
+
readonly contract: {
|
|
107
|
+
readonly const: "finding-verdict@1";
|
|
108
|
+
};
|
|
109
|
+
readonly id: {
|
|
110
|
+
readonly type: "string";
|
|
111
|
+
readonly minLength: 1;
|
|
112
|
+
};
|
|
113
|
+
readonly title: {
|
|
114
|
+
readonly type: "string";
|
|
115
|
+
readonly minLength: 1;
|
|
116
|
+
};
|
|
117
|
+
readonly file: {
|
|
118
|
+
readonly type: "string";
|
|
119
|
+
};
|
|
120
|
+
readonly severity: {
|
|
121
|
+
readonly enum: readonly ["critical", "high", "medium", "low", "info"];
|
|
122
|
+
};
|
|
123
|
+
readonly confidence: {
|
|
124
|
+
readonly type: "number";
|
|
125
|
+
readonly minimum: 0;
|
|
126
|
+
readonly maximum: 1;
|
|
127
|
+
};
|
|
128
|
+
readonly evidence: {
|
|
129
|
+
readonly type: "array";
|
|
130
|
+
readonly items: {
|
|
131
|
+
readonly type: "string";
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
readonly verdict: {
|
|
135
|
+
readonly enum: readonly ["upheld", "refuted", "uncertain"];
|
|
136
|
+
};
|
|
137
|
+
readonly refutations: {
|
|
138
|
+
readonly type: "array";
|
|
139
|
+
readonly items: {
|
|
140
|
+
readonly type: "string";
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
export declare const COVERAGE_GAP_SCHEMA: {
|
|
146
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
147
|
+
readonly $id: "https://agentic-qe.dev/schemas/coverage-gap.schema.json";
|
|
148
|
+
readonly title: "CoverageGap";
|
|
149
|
+
readonly type: "object";
|
|
150
|
+
readonly required: readonly ["contract", "file", "riskScore", "suggestedTests"];
|
|
151
|
+
readonly additionalProperties: true;
|
|
152
|
+
readonly properties: {
|
|
153
|
+
readonly contract: {
|
|
154
|
+
readonly const: "coverage-gap@1";
|
|
155
|
+
};
|
|
156
|
+
readonly file: {
|
|
157
|
+
readonly type: "string";
|
|
158
|
+
readonly minLength: 1;
|
|
159
|
+
};
|
|
160
|
+
readonly rangeStart: {
|
|
161
|
+
readonly type: "integer";
|
|
162
|
+
readonly minimum: 1;
|
|
163
|
+
};
|
|
164
|
+
readonly rangeEnd: {
|
|
165
|
+
readonly type: "integer";
|
|
166
|
+
readonly minimum: 1;
|
|
167
|
+
};
|
|
168
|
+
readonly riskScore: {
|
|
169
|
+
readonly type: "number";
|
|
170
|
+
readonly minimum: 0;
|
|
171
|
+
readonly maximum: 1;
|
|
172
|
+
};
|
|
173
|
+
readonly suggestedTests: {
|
|
174
|
+
readonly type: "array";
|
|
175
|
+
readonly items: {
|
|
176
|
+
readonly type: "string";
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
export declare const VERDICT_SCHEMAS: {
|
|
182
|
+
readonly 'risk-decision': {
|
|
183
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
184
|
+
readonly $id: "https://agentic-qe.dev/schemas/risk-decision.schema.json";
|
|
185
|
+
readonly title: "RiskDecision";
|
|
186
|
+
readonly type: "object";
|
|
187
|
+
readonly required: readonly ["contract", "decision", "riskFactors", "confidence", "rationale"];
|
|
188
|
+
readonly additionalProperties: true;
|
|
189
|
+
readonly properties: {
|
|
190
|
+
readonly contract: {
|
|
191
|
+
readonly const: "risk-decision@1";
|
|
192
|
+
};
|
|
193
|
+
readonly decision: {
|
|
194
|
+
readonly enum: readonly ["approve", "block", "escalate"];
|
|
195
|
+
};
|
|
196
|
+
readonly riskFactors: {
|
|
197
|
+
readonly type: "array";
|
|
198
|
+
readonly items: {
|
|
199
|
+
readonly type: "string";
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
readonly confidence: {
|
|
203
|
+
readonly type: "number";
|
|
204
|
+
readonly minimum: 0;
|
|
205
|
+
readonly maximum: 1;
|
|
206
|
+
};
|
|
207
|
+
readonly rationale: {
|
|
208
|
+
readonly type: "string";
|
|
209
|
+
readonly minLength: 1;
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
readonly 'finding-verdict': {
|
|
214
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
215
|
+
readonly $id: "https://agentic-qe.dev/schemas/finding-verdict.schema.json";
|
|
216
|
+
readonly title: "FindingVerdict";
|
|
217
|
+
readonly type: "object";
|
|
218
|
+
readonly required: readonly ["contract", "id", "title", "severity", "confidence", "evidence", "verdict", "refutations"];
|
|
219
|
+
readonly additionalProperties: true;
|
|
220
|
+
readonly properties: {
|
|
221
|
+
readonly contract: {
|
|
222
|
+
readonly const: "finding-verdict@1";
|
|
223
|
+
};
|
|
224
|
+
readonly id: {
|
|
225
|
+
readonly type: "string";
|
|
226
|
+
readonly minLength: 1;
|
|
227
|
+
};
|
|
228
|
+
readonly title: {
|
|
229
|
+
readonly type: "string";
|
|
230
|
+
readonly minLength: 1;
|
|
231
|
+
};
|
|
232
|
+
readonly file: {
|
|
233
|
+
readonly type: "string";
|
|
234
|
+
};
|
|
235
|
+
readonly severity: {
|
|
236
|
+
readonly enum: readonly ["critical", "high", "medium", "low", "info"];
|
|
237
|
+
};
|
|
238
|
+
readonly confidence: {
|
|
239
|
+
readonly type: "number";
|
|
240
|
+
readonly minimum: 0;
|
|
241
|
+
readonly maximum: 1;
|
|
242
|
+
};
|
|
243
|
+
readonly evidence: {
|
|
244
|
+
readonly type: "array";
|
|
245
|
+
readonly items: {
|
|
246
|
+
readonly type: "string";
|
|
247
|
+
};
|
|
248
|
+
};
|
|
249
|
+
readonly verdict: {
|
|
250
|
+
readonly enum: readonly ["upheld", "refuted", "uncertain"];
|
|
251
|
+
};
|
|
252
|
+
readonly refutations: {
|
|
253
|
+
readonly type: "array";
|
|
254
|
+
readonly items: {
|
|
255
|
+
readonly type: "string";
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
readonly 'coverage-gap': {
|
|
261
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
262
|
+
readonly $id: "https://agentic-qe.dev/schemas/coverage-gap.schema.json";
|
|
263
|
+
readonly title: "CoverageGap";
|
|
264
|
+
readonly type: "object";
|
|
265
|
+
readonly required: readonly ["contract", "file", "riskScore", "suggestedTests"];
|
|
266
|
+
readonly additionalProperties: true;
|
|
267
|
+
readonly properties: {
|
|
268
|
+
readonly contract: {
|
|
269
|
+
readonly const: "coverage-gap@1";
|
|
270
|
+
};
|
|
271
|
+
readonly file: {
|
|
272
|
+
readonly type: "string";
|
|
273
|
+
readonly minLength: 1;
|
|
274
|
+
};
|
|
275
|
+
readonly rangeStart: {
|
|
276
|
+
readonly type: "integer";
|
|
277
|
+
readonly minimum: 1;
|
|
278
|
+
};
|
|
279
|
+
readonly rangeEnd: {
|
|
280
|
+
readonly type: "integer";
|
|
281
|
+
readonly minimum: 1;
|
|
282
|
+
};
|
|
283
|
+
readonly riskScore: {
|
|
284
|
+
readonly type: "number";
|
|
285
|
+
readonly minimum: 0;
|
|
286
|
+
readonly maximum: 1;
|
|
287
|
+
};
|
|
288
|
+
readonly suggestedTests: {
|
|
289
|
+
readonly type: "array";
|
|
290
|
+
readonly items: {
|
|
291
|
+
readonly type: "string";
|
|
292
|
+
};
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
//# sourceMappingURL=verdicts.d.ts.map
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Structured Verdict Contracts (ADR-103)
|
|
3
|
+
*
|
|
4
|
+
* Typed, versioned verdict envelopes for agent-to-agent and MCP-boundary
|
|
5
|
+
* handoffs: RiskDecision (quality gates), FindingVerdict (review findings
|
|
6
|
+
* with adversarial refutations), CoverageGap (risk-weighted gap reports).
|
|
7
|
+
*
|
|
8
|
+
* Validators are dependency-free and are the source of truth; the exported
|
|
9
|
+
* JSON Schemas (published to schemas/*.schema.json by
|
|
10
|
+
* scripts/generate-verdict-schemas.mjs) mirror them for external tooling
|
|
11
|
+
* (ajv, workflow agent() schema option). Envelopes are versioned and
|
|
12
|
+
* additive-only within a major version: consumers must tolerate unknown
|
|
13
|
+
* fields, so schemas keep `additionalProperties: true`.
|
|
14
|
+
*/
|
|
15
|
+
export const VERDICT_CONTRACT_VERSION = '1.0';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Validators (dependency-free, boundary-grade)
|
|
18
|
+
// ============================================================================
|
|
19
|
+
function isRecord(v) {
|
|
20
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
21
|
+
}
|
|
22
|
+
function isStringArray(v) {
|
|
23
|
+
return Array.isArray(v) && v.every((x) => typeof x === 'string');
|
|
24
|
+
}
|
|
25
|
+
function inUnitRange(v) {
|
|
26
|
+
return typeof v === 'number' && Number.isFinite(v) && v >= 0 && v <= 1;
|
|
27
|
+
}
|
|
28
|
+
export function validateRiskDecision(value) {
|
|
29
|
+
const errors = [];
|
|
30
|
+
if (!isRecord(value))
|
|
31
|
+
return { valid: false, errors: ['not an object'] };
|
|
32
|
+
if (value.contract !== 'risk-decision@1')
|
|
33
|
+
errors.push(`contract must be "risk-decision@1"`);
|
|
34
|
+
if (!['approve', 'block', 'escalate'].includes(value.decision)) {
|
|
35
|
+
errors.push('decision must be approve|block|escalate');
|
|
36
|
+
}
|
|
37
|
+
if (!isStringArray(value.riskFactors))
|
|
38
|
+
errors.push('riskFactors must be string[]');
|
|
39
|
+
if (!inUnitRange(value.confidence))
|
|
40
|
+
errors.push('confidence must be a number in [0,1]');
|
|
41
|
+
if (typeof value.rationale !== 'string' || value.rationale.length === 0) {
|
|
42
|
+
errors.push('rationale must be a non-empty string');
|
|
43
|
+
}
|
|
44
|
+
return { valid: errors.length === 0, errors };
|
|
45
|
+
}
|
|
46
|
+
export function validateFindingVerdict(value) {
|
|
47
|
+
const errors = [];
|
|
48
|
+
if (!isRecord(value))
|
|
49
|
+
return { valid: false, errors: ['not an object'] };
|
|
50
|
+
if (value.contract !== 'finding-verdict@1')
|
|
51
|
+
errors.push(`contract must be "finding-verdict@1"`);
|
|
52
|
+
if (typeof value.id !== 'string' || value.id.length === 0)
|
|
53
|
+
errors.push('id must be a non-empty string');
|
|
54
|
+
if (typeof value.title !== 'string' || value.title.length === 0)
|
|
55
|
+
errors.push('title must be a non-empty string');
|
|
56
|
+
if (value.file !== undefined && typeof value.file !== 'string')
|
|
57
|
+
errors.push('file must be a string when present');
|
|
58
|
+
if (!['critical', 'high', 'medium', 'low', 'info'].includes(value.severity)) {
|
|
59
|
+
errors.push('severity must be critical|high|medium|low|info');
|
|
60
|
+
}
|
|
61
|
+
if (!inUnitRange(value.confidence))
|
|
62
|
+
errors.push('confidence must be a number in [0,1]');
|
|
63
|
+
if (!isStringArray(value.evidence))
|
|
64
|
+
errors.push('evidence must be string[]');
|
|
65
|
+
if (!['upheld', 'refuted', 'uncertain'].includes(value.verdict)) {
|
|
66
|
+
errors.push('verdict must be upheld|refuted|uncertain');
|
|
67
|
+
}
|
|
68
|
+
if (!isStringArray(value.refutations))
|
|
69
|
+
errors.push('refutations must be string[]');
|
|
70
|
+
return { valid: errors.length === 0, errors };
|
|
71
|
+
}
|
|
72
|
+
export function validateCoverageGap(value) {
|
|
73
|
+
const errors = [];
|
|
74
|
+
if (!isRecord(value))
|
|
75
|
+
return { valid: false, errors: ['not an object'] };
|
|
76
|
+
if (value.contract !== 'coverage-gap@1')
|
|
77
|
+
errors.push(`contract must be "coverage-gap@1"`);
|
|
78
|
+
if (typeof value.file !== 'string' || value.file.length === 0)
|
|
79
|
+
errors.push('file must be a non-empty string');
|
|
80
|
+
for (const k of ['rangeStart', 'rangeEnd']) {
|
|
81
|
+
const v = value[k];
|
|
82
|
+
if (v !== undefined && (!Number.isInteger(v) || v < 1)) {
|
|
83
|
+
errors.push(`${k} must be a positive integer when present`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (Number.isInteger(value.rangeStart) &&
|
|
87
|
+
Number.isInteger(value.rangeEnd) &&
|
|
88
|
+
value.rangeEnd < value.rangeStart) {
|
|
89
|
+
errors.push('rangeEnd must be >= rangeStart');
|
|
90
|
+
}
|
|
91
|
+
if (!inUnitRange(value.riskScore))
|
|
92
|
+
errors.push('riskScore must be a number in [0,1]');
|
|
93
|
+
if (!isStringArray(value.suggestedTests))
|
|
94
|
+
errors.push('suggestedTests must be string[]');
|
|
95
|
+
return { valid: errors.length === 0, errors };
|
|
96
|
+
}
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Builders — derive contract envelopes at MCP boundaries
|
|
99
|
+
// ============================================================================
|
|
100
|
+
/**
|
|
101
|
+
* Derive a RiskDecision from a quality-gate outcome (quality_assess boundary).
|
|
102
|
+
* Indeterminate gates (passed undefined) escalate rather than guess.
|
|
103
|
+
*/
|
|
104
|
+
export function buildRiskDecisionFromQualityGate(input) {
|
|
105
|
+
const { passed, qualityScore, recommendations = [] } = input;
|
|
106
|
+
const decision = passed === true ? 'approve' : passed === false ? 'block' : 'escalate';
|
|
107
|
+
return {
|
|
108
|
+
contract: 'risk-decision@1',
|
|
109
|
+
decision,
|
|
110
|
+
riskFactors: recommendations.slice(0, 10),
|
|
111
|
+
confidence: decision === 'escalate' ? 0.5 : 0.9,
|
|
112
|
+
rationale: decision === 'escalate'
|
|
113
|
+
? 'Quality gate outcome indeterminate — manual review required'
|
|
114
|
+
: `Quality gate ${passed ? 'passed' : 'failed'}${typeof qualityScore === 'number' ? ` with score ${qualityScore}` : ''}`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// JSON Schemas (draft-07) — mirrors of the validators above, published to
|
|
119
|
+
// schemas/*.schema.json for ajv / workflow agent({schema}) consumers
|
|
120
|
+
// ============================================================================
|
|
121
|
+
const unit = { type: 'number', minimum: 0, maximum: 1 };
|
|
122
|
+
const stringArray = { type: 'array', items: { type: 'string' } };
|
|
123
|
+
export const RISK_DECISION_SCHEMA = {
|
|
124
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
125
|
+
$id: 'https://agentic-qe.dev/schemas/risk-decision.schema.json',
|
|
126
|
+
title: 'RiskDecision',
|
|
127
|
+
type: 'object',
|
|
128
|
+
required: ['contract', 'decision', 'riskFactors', 'confidence', 'rationale'],
|
|
129
|
+
additionalProperties: true,
|
|
130
|
+
properties: {
|
|
131
|
+
contract: { const: 'risk-decision@1' },
|
|
132
|
+
decision: { enum: ['approve', 'block', 'escalate'] },
|
|
133
|
+
riskFactors: stringArray,
|
|
134
|
+
confidence: unit,
|
|
135
|
+
rationale: { type: 'string', minLength: 1 },
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
export const FINDING_VERDICT_SCHEMA = {
|
|
139
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
140
|
+
$id: 'https://agentic-qe.dev/schemas/finding-verdict.schema.json',
|
|
141
|
+
title: 'FindingVerdict',
|
|
142
|
+
type: 'object',
|
|
143
|
+
required: ['contract', 'id', 'title', 'severity', 'confidence', 'evidence', 'verdict', 'refutations'],
|
|
144
|
+
additionalProperties: true,
|
|
145
|
+
properties: {
|
|
146
|
+
contract: { const: 'finding-verdict@1' },
|
|
147
|
+
id: { type: 'string', minLength: 1 },
|
|
148
|
+
title: { type: 'string', minLength: 1 },
|
|
149
|
+
file: { type: 'string' },
|
|
150
|
+
severity: { enum: ['critical', 'high', 'medium', 'low', 'info'] },
|
|
151
|
+
confidence: unit,
|
|
152
|
+
evidence: stringArray,
|
|
153
|
+
verdict: { enum: ['upheld', 'refuted', 'uncertain'] },
|
|
154
|
+
refutations: stringArray,
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
export const COVERAGE_GAP_SCHEMA = {
|
|
158
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
159
|
+
$id: 'https://agentic-qe.dev/schemas/coverage-gap.schema.json',
|
|
160
|
+
title: 'CoverageGap',
|
|
161
|
+
type: 'object',
|
|
162
|
+
required: ['contract', 'file', 'riskScore', 'suggestedTests'],
|
|
163
|
+
additionalProperties: true,
|
|
164
|
+
properties: {
|
|
165
|
+
contract: { const: 'coverage-gap@1' },
|
|
166
|
+
file: { type: 'string', minLength: 1 },
|
|
167
|
+
rangeStart: { type: 'integer', minimum: 1 },
|
|
168
|
+
rangeEnd: { type: 'integer', minimum: 1 },
|
|
169
|
+
riskScore: unit,
|
|
170
|
+
suggestedTests: stringArray,
|
|
171
|
+
},
|
|
172
|
+
};
|
|
173
|
+
export const VERDICT_SCHEMAS = {
|
|
174
|
+
'risk-decision': RISK_DECISION_SCHEMA,
|
|
175
|
+
'finding-verdict': FINDING_VERDICT_SCHEMA,
|
|
176
|
+
'coverage-gap': COVERAGE_GAP_SCHEMA,
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=verdicts.js.map
|
|
@@ -45,6 +45,10 @@ export interface TaskExecution {
|
|
|
45
45
|
readonly result?: unknown;
|
|
46
46
|
readonly error?: string;
|
|
47
47
|
readonly retryCount: number;
|
|
48
|
+
/** ADR-101: agent that spawned this task (nested-subagent provenance) */
|
|
49
|
+
readonly parentAgentId?: string;
|
|
50
|
+
/** ADR-101: nesting depth, 0 = top-level (Anthropic cap is 5; bound is 32) */
|
|
51
|
+
readonly depth?: number;
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
50
54
|
* Domain group for coordination
|
|
@@ -18,6 +18,7 @@ import { computeRealEmbedding, } from '../../../learning/real-embeddings.js';
|
|
|
18
18
|
import { CircularBuffer } from '../../../shared/utils/circular-buffer.js';
|
|
19
19
|
import { HNSWEmbeddingIndex } from '../../embeddings/index/HNSWIndex.js';
|
|
20
20
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
21
|
+
import { scrubReasoningBlocks } from '../../../shared/reasoning-scrub.js';
|
|
21
22
|
import { ExperienceConsolidator } from '../../../learning/experience-consolidation.js';
|
|
22
23
|
import { getRuVectorFeatureFlags } from '../../ruvector/feature-flags.js';
|
|
23
24
|
import { ReservoirReplayBuffer } from '../../ruvector/reservoir-replay.js';
|
|
@@ -126,7 +127,8 @@ export class ExperienceReplay {
|
|
|
126
127
|
`);
|
|
127
128
|
let written = 0;
|
|
128
129
|
for (const row of ghosts) {
|
|
129
|
-
|
|
130
|
+
// ADR-099: legacy rows may predate ingestion-time scrubbing
|
|
131
|
+
const text = scrubReasoningBlocks(`${row.domain ?? ''}: ${row.task}`).slice(0, 512);
|
|
130
132
|
const embedding = await computeRealEmbedding(text);
|
|
131
133
|
const buf = Buffer.from(new Float32Array(embedding).buffer);
|
|
132
134
|
updateStmt.run(buf, embedding.length, row.id);
|
|
@@ -174,7 +176,8 @@ export class ExperienceReplay {
|
|
|
174
176
|
const updateStmt = this.db.prepare(`UPDATE qe_trajectories SET embedding = ? WHERE id = ?`);
|
|
175
177
|
let written = 0;
|
|
176
178
|
for (const row of rows) {
|
|
177
|
-
|
|
179
|
+
// ADR-099: legacy rows may predate ingestion-time scrubbing
|
|
180
|
+
const text = scrubReasoningBlocks(`${row.domain ?? ''}: ${row.task}`).slice(0, 512);
|
|
178
181
|
const embedding = await computeRealEmbedding(text);
|
|
179
182
|
updateStmt.run(Buffer.from(new Float32Array(embedding).buffer), row.id);
|
|
180
183
|
written++;
|
|
@@ -373,18 +376,22 @@ export class ExperienceReplay {
|
|
|
373
376
|
return null;
|
|
374
377
|
}
|
|
375
378
|
// Extract key actions
|
|
379
|
+
// ADR-099: scrub reasoning scratchpad blocks so neither the stored
|
|
380
|
+
// experience nor its embedding carries extended-thinking text
|
|
381
|
+
const task = scrubReasoningBlocks(trajectory.task);
|
|
382
|
+
strategy = scrubReasoningBlocks(strategy);
|
|
376
383
|
const keyActions = trajectory.steps
|
|
377
384
|
.filter(s => s.result.outcome === 'success')
|
|
378
|
-
.map(s => s.action);
|
|
385
|
+
.map(s => scrubReasoningBlocks(s.action));
|
|
379
386
|
// Generate embedding for similarity search
|
|
380
|
-
const embeddingText = `${
|
|
387
|
+
const embeddingText = `${task} ${strategy} ${keyActions.join(' ')}`;
|
|
381
388
|
const embedding = await computeRealEmbedding(embeddingText, this.config.embedding);
|
|
382
389
|
const id = uuidv4();
|
|
383
390
|
const domain = trajectory.domain || 'test-generation';
|
|
384
391
|
const experience = {
|
|
385
392
|
id,
|
|
386
393
|
trajectoryId: trajectory.id,
|
|
387
|
-
task
|
|
394
|
+
task,
|
|
388
395
|
domain,
|
|
389
396
|
strategy,
|
|
390
397
|
keyActions,
|
|
@@ -401,7 +408,7 @@ export class ExperienceReplay {
|
|
|
401
408
|
const insertStmt = this.prepared.get('insertExperience');
|
|
402
409
|
if (insertStmt) {
|
|
403
410
|
const embeddingBuffer = embedding ? this.floatArrayToBuffer(embedding) : null;
|
|
404
|
-
insertStmt.run(id,
|
|
411
|
+
insertStmt.run(id, task, strategy, // agent column stores strategy
|
|
405
412
|
domain, trajectory.metrics.efficiencyScore, JSON.stringify(keyActions), // steps_json stores key actions
|
|
406
413
|
JSON.stringify(trajectory.metrics), // routing_json stores original metrics
|
|
407
414
|
embeddingBuffer, embedding?.length ?? null, JSON.stringify(tags));
|
|
@@ -523,6 +530,8 @@ export class ExperienceReplay {
|
|
|
523
530
|
return [];
|
|
524
531
|
}
|
|
525
532
|
// Generate embedding for the task
|
|
533
|
+
// ADR-099: scrub so query embeddings match the scrubbed stored embeddings
|
|
534
|
+
task = scrubReasoningBlocks(task);
|
|
526
535
|
const taskEmbedding = await computeRealEmbedding(task, this.config.embedding);
|
|
527
536
|
// Create query embedding for HNSW search
|
|
528
537
|
const queryEmbedding = {
|
|
@@ -11,6 +11,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
11
11
|
import { getUnifiedMemory } from '../../../kernel/unified-memory.js';
|
|
12
12
|
import { CircularBuffer } from '../../../shared/utils/circular-buffer.js';
|
|
13
13
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
14
|
+
import { scrubReasoningBlocks, scrubReasoningDeep } from '../../../shared/reasoning-scrub.js';
|
|
14
15
|
const DEFAULT_CONFIG = {
|
|
15
16
|
maxStepsPerTrajectory: 100,
|
|
16
17
|
autoEndTimeoutMs: 30 * 60 * 1000, // 30 minutes
|
|
@@ -222,6 +223,9 @@ export class TrajectoryTracker {
|
|
|
222
223
|
*/
|
|
223
224
|
async startTrajectory(task, options = {}) {
|
|
224
225
|
this.ensureInitialized();
|
|
226
|
+
// ADR-099: strip reasoning scratchpad blocks before the task text enters
|
|
227
|
+
// persistence and (later) embedding generation
|
|
228
|
+
task = scrubReasoningBlocks(task);
|
|
225
229
|
const id = uuidv4();
|
|
226
230
|
const startedAt = new Date();
|
|
227
231
|
// Store in memory for active tracking
|
|
@@ -270,6 +274,14 @@ export class TrajectoryTracker {
|
|
|
270
274
|
}
|
|
271
275
|
const stepId = uuidv4();
|
|
272
276
|
const quality = options.quality ?? this.calculateStepQuality(result);
|
|
277
|
+
// ADR-099: scrub reasoning blocks from step content before it is held
|
|
278
|
+
// in memory (distilled into experiences at endTrajectory) and persisted
|
|
279
|
+
action = scrubReasoningBlocks(action);
|
|
280
|
+
result = {
|
|
281
|
+
...result,
|
|
282
|
+
data: result.data ? scrubReasoningDeep(result.data) : result.data,
|
|
283
|
+
error: result.error ? scrubReasoningBlocks(result.error) : result.error,
|
|
284
|
+
};
|
|
273
285
|
const step = {
|
|
274
286
|
id: stepId,
|
|
275
287
|
action,
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* Extracted from unified-memory.ts for maintainability.
|
|
6
6
|
*/
|
|
7
7
|
import { HYPERGRAPH_SCHEMA } from '../migrations/20260120_add_hypergraph_tables.js';
|
|
8
|
-
|
|
9
|
-
export
|
|
8
|
+
import { PATTERN_NULLS_SCHEMA } from '../migrations/20260611_add_pattern_nulls_table.js';
|
|
9
|
+
export { HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA };
|
|
10
|
+
export declare const SCHEMA_VERSION = 10;
|
|
10
11
|
export declare const SCHEMA_VERSION_TABLE = "\n CREATE TABLE IF NOT EXISTS schema_version (\n id INTEGER PRIMARY KEY CHECK (id = 1),\n version INTEGER NOT NULL,\n migrated_at TEXT DEFAULT (datetime('now'))\n );\n";
|
|
11
12
|
export declare const KV_STORE_SCHEMA = "\n -- Key-Value Store (v2 compatible - same schema as HybridBackend)\n CREATE TABLE IF NOT EXISTS kv_store (\n key TEXT NOT NULL,\n namespace TEXT NOT NULL,\n value TEXT NOT NULL,\n expires_at INTEGER,\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\n PRIMARY KEY (namespace, key)\n );\n CREATE INDEX IF NOT EXISTS idx_kv_namespace ON kv_store(namespace);\n CREATE INDEX IF NOT EXISTS idx_kv_expires ON kv_store(expires_at) WHERE expires_at IS NOT NULL;\n";
|
|
12
13
|
export declare const VECTORS_SCHEMA = "\n -- Vector Embeddings (new in v3 - replaces in-memory AgentDB)\n CREATE TABLE IF NOT EXISTS vectors (\n id TEXT PRIMARY KEY,\n namespace TEXT NOT NULL DEFAULT 'default',\n embedding BLOB NOT NULL,\n dimensions INTEGER NOT NULL,\n metadata TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_vectors_namespace ON vectors(namespace);\n CREATE INDEX IF NOT EXISTS idx_vectors_dimensions ON vectors(dimensions);\n";
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
* Extracted from unified-memory.ts for maintainability.
|
|
6
6
|
*/
|
|
7
7
|
import { HYPERGRAPH_SCHEMA } from '../migrations/20260120_add_hypergraph_tables.js';
|
|
8
|
+
import { PATTERN_NULLS_SCHEMA } from '../migrations/20260611_add_pattern_nulls_table.js';
|
|
8
9
|
// Re-export for convenience
|
|
9
|
-
export { HYPERGRAPH_SCHEMA };
|
|
10
|
+
export { HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA };
|
|
10
11
|
// ============================================================================
|
|
11
12
|
// Schema Version for Migrations
|
|
12
13
|
// ============================================================================
|
|
13
|
-
export const SCHEMA_VERSION =
|
|
14
|
+
export const SCHEMA_VERSION = 10; // v10: adds qe_pattern_nulls — kept negative pattern records (ADR-110)
|
|
14
15
|
export const SCHEMA_VERSION_TABLE = `
|
|
15
16
|
CREATE TABLE IF NOT EXISTS schema_version (
|
|
16
17
|
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
@@ -40,7 +40,7 @@ export { BinaryHeap, UnifiedHnswIndex, createHnswIndex } from './unified-memory-
|
|
|
40
40
|
// parity tests or benchmarks only.
|
|
41
41
|
import { UnifiedHnswIndex } from './unified-memory-hnsw.js';
|
|
42
42
|
// Import schemas
|
|
43
|
-
import { SCHEMA_VERSION, SCHEMA_VERSION_TABLE, KV_STORE_SCHEMA, VECTORS_SCHEMA, RL_QVALUES_SCHEMA, GOAP_SCHEMA, DREAM_SCHEMA, QE_PATTERNS_SCHEMA, MINCUT_SCHEMA, SONA_PATTERNS_SCHEMA, FEEDBACK_SCHEMA, HYPERGRAPH_SCHEMA, STATS_TABLES, } from './unified-memory-schemas.js';
|
|
43
|
+
import { SCHEMA_VERSION, SCHEMA_VERSION_TABLE, KV_STORE_SCHEMA, VECTORS_SCHEMA, RL_QVALUES_SCHEMA, GOAP_SCHEMA, DREAM_SCHEMA, QE_PATTERNS_SCHEMA, MINCUT_SCHEMA, SONA_PATTERNS_SCHEMA, FEEDBACK_SCHEMA, HYPERGRAPH_SCHEMA, PATTERN_NULLS_SCHEMA, STATS_TABLES, } from './unified-memory-schemas.js';
|
|
44
44
|
// CRDT imports for distributed state synchronization
|
|
45
45
|
import { createCRDTStore, } from '../memory/crdt/index.js';
|
|
46
46
|
// ============================================================================
|
|
@@ -452,6 +452,8 @@ export class UnifiedMemoryManager {
|
|
|
452
452
|
SELECT rowid, name, description, pattern_type, qe_domain FROM qe_patterns;
|
|
453
453
|
`);
|
|
454
454
|
}
|
|
455
|
+
if (currentVersion < 10)
|
|
456
|
+
this.db.exec(PATTERN_NULLS_SCHEMA);
|
|
455
457
|
this.db.prepare(`
|
|
456
458
|
INSERT OR REPLACE INTO schema_version (id, version, migrated_at)
|
|
457
459
|
VALUES (1, ?, datetime('now'))
|