agentic-qe 3.10.5 → 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/skills-manifest.json +1 -1
- package/CHANGELOG.md +9012 -8934
- 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/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-AMIHQ243.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-3BC5LIEB.js → agent-booster-wasm-J5CITTTV.js} +2 -2
- package/dist/cli/chunks/{agent-handler-QLXWVZZF.js → agent-handler-HMN4ZBZ6.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-3U5PDYW7.js → agent-memory-branch-SCAKN4DU.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-LRG2UG6P.js +2 -0
- package/dist/cli/chunks/{arena-BMJQK4RD.js → arena-CJOLCHZW.js} +4 -4
- package/dist/cli/chunks/{arena-XENAGV4I.js → arena-FVBTSGKS.js} +2 -2
- package/dist/cli/chunks/audit-SOF6L5RY.js +3 -0
- package/dist/cli/chunks/base-WDL3FANJ.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-P6HSEFLW.js → better-sqlite3-5G7LRX7Q.js} +2 -2
- package/dist/cli/chunks/{brain-handler-PHSWG5PR.js → brain-handler-D2ZQQI2J.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-LNSYT34I.js → branch-enumerator-QQXOCGOR.js} +2 -2
- package/dist/cli/chunks/{browser-M5BVQMBI.js → browser-XASHKIEN.js} +2 -2
- package/dist/cli/chunks/browser-workflow-W7S4IKWD.js +2 -0
- package/dist/cli/chunks/{chunk-DN65ILSI.js → chunk-2CZQA3NN.js} +2 -2
- package/dist/cli/chunks/{chunk-VKWDMOR4.js → chunk-2I5RXDNO.js} +2 -2
- package/dist/cli/chunks/{chunk-5D7GLMT3.js → chunk-2IC2I525.js} +1 -1
- package/dist/cli/chunks/{chunk-RFVZMNYX.js → chunk-2RQSFRON.js} +2 -2
- package/dist/cli/chunks/{chunk-VESYE5YO.js → chunk-2UI5LQ7C.js} +3 -3
- package/dist/cli/chunks/{chunk-54IPDQIZ.js → chunk-3XUPDWMA.js} +8 -8
- package/dist/cli/chunks/chunk-434VUSZP.js +2 -0
- package/dist/cli/chunks/{chunk-FLYFNNSN.js → chunk-4B22URZJ.js} +3 -3
- package/dist/cli/chunks/{chunk-PGNQR2VM.js → chunk-4N4TU7ST.js} +1 -1
- package/dist/cli/chunks/{chunk-N2TJXGHG.js → chunk-4XEUJH2M.js} +1 -1
- package/dist/cli/chunks/{chunk-Q6BKJZTG.js → chunk-5QTUGFFP.js} +2 -2
- package/dist/cli/chunks/{chunk-A7HGS7FW.js → chunk-5V4IFRG5.js} +2 -2
- package/dist/cli/chunks/{chunk-G5UIGH4C.js → chunk-5VTRPOYL.js} +3 -3
- package/dist/cli/chunks/{chunk-HKJ3LG3N.js → chunk-6DHJPKAH.js} +2 -2
- package/dist/cli/chunks/{chunk-G4GX6YKX.js → chunk-6RFPELCD.js} +2 -2
- package/dist/cli/chunks/{chunk-JY7T2AQQ.js → chunk-6ZLVQTQ5.js} +4 -4
- package/dist/cli/chunks/{chunk-DJQYZ4RZ.js → chunk-7BPYFDWY.js} +1 -1
- package/dist/cli/chunks/{chunk-KIMJPTHD.js → chunk-7NXVVIJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-DIJ74M7V.js → chunk-7OK5H6ML.js} +1 -1
- package/dist/cli/chunks/{chunk-MGCW5FWH.js → chunk-7RTI5WT4.js} +2 -2
- package/dist/cli/chunks/{chunk-OATHXZYW.js → chunk-7SFCZ3AE.js} +1 -1
- package/dist/cli/chunks/{chunk-RCAIOTIF.js → chunk-A2DCROAN.js} +2 -2
- package/dist/cli/chunks/{chunk-DWLGFYXV.js → chunk-AJ2VDNPB.js} +3 -3
- package/dist/cli/chunks/chunk-AQPFTDGS.js +14 -0
- package/dist/cli/chunks/{chunk-ZTC64OJE.js → chunk-B3H2TTYT.js} +2 -2
- package/dist/cli/chunks/{chunk-7DU35D4M.js → chunk-BHD6THT5.js} +1 -1
- package/dist/cli/chunks/{chunk-TMD6IC6D.js → chunk-BXOGLZGU.js} +2 -2
- package/dist/cli/chunks/{chunk-MIMJVKJJ.js → chunk-C75ODWRP.js} +3 -3
- package/dist/cli/chunks/{chunk-CUAM34RQ.js → chunk-CH7KUYGO.js} +3 -3
- package/dist/cli/chunks/{chunk-MEN3UW7W.js → chunk-CSM4LXTH.js} +1 -1
- package/dist/cli/chunks/{chunk-VWN66V7U.js → chunk-DAUQIXHW.js} +2 -2
- package/dist/cli/chunks/{chunk-D4WDJ4ZF.js → chunk-DF4Z7TKZ.js} +2 -2
- package/dist/cli/chunks/{chunk-56RA6YPN.js → chunk-DFBVWMX3.js} +2 -2
- package/dist/cli/chunks/{chunk-UTORITJT.js → chunk-EDPVATNH.js} +2 -2
- package/dist/cli/chunks/{chunk-RR55MLD4.js → chunk-EJWAKPZD.js} +1 -1
- package/dist/cli/chunks/{chunk-2RLRPKCG.js → chunk-ELC6JIXL.js} +2 -2
- package/dist/cli/chunks/{chunk-K5KKZWED.js → chunk-ELTN4F4R.js} +2 -2
- package/dist/cli/chunks/{chunk-G6FP3S3G.js → chunk-ESZDW6G7.js} +2 -2
- package/dist/cli/chunks/{chunk-MWPFUBXS.js → chunk-EYKID5HA.js} +1 -1
- package/dist/cli/chunks/{chunk-VC256KH2.js → chunk-F72A356B.js} +2 -2
- package/dist/cli/chunks/{chunk-VB7DZVCI.js → chunk-GWHDPEBT.js} +1 -1
- package/dist/cli/chunks/{chunk-4K7T6AKM.js → chunk-GXNNKM7F.js} +1 -1
- package/dist/cli/chunks/{chunk-WFZUKXV5.js → chunk-H4Q36ILL.js} +2 -2
- package/dist/cli/chunks/{chunk-2UQWVF4P.js → chunk-H6UPZFI6.js} +2 -2
- package/dist/cli/chunks/{chunk-QAW6RVAR.js → chunk-H73FLSBV.js} +10 -10
- package/dist/cli/chunks/{chunk-24A7KD3D.js → chunk-HDEFCRHI.js} +1 -1
- package/dist/cli/chunks/{chunk-ZUBJBAUD.js → chunk-HFU3LTQX.js} +2 -2
- package/dist/cli/chunks/{chunk-IOE6LDPF.js → chunk-HMHQOEU7.js} +2 -2
- package/dist/cli/chunks/{chunk-CS3UB2OL.js → chunk-HWKFBRMX.js} +1 -1
- package/dist/cli/chunks/{chunk-DBR4TQPK.js → chunk-HZGOVRZ6.js} +2 -2
- package/dist/cli/chunks/{chunk-3JWV4GE6.js → chunk-I7ADT6AZ.js} +2 -2
- package/dist/cli/chunks/{chunk-D3Q4443B.js → chunk-IB3QQDC4.js} +1 -1
- package/dist/cli/chunks/{chunk-J533CJUN.js → chunk-J2SMTP2L.js} +3 -3
- package/dist/cli/chunks/{chunk-S7FGTHFE.js → chunk-J3WUBGLQ.js} +2 -2
- package/dist/cli/chunks/{chunk-IT7CEHAJ.js → chunk-JADBRSQN.js} +2 -2
- package/dist/cli/chunks/{chunk-BSRCL6RU.js → chunk-JP2YXWJD.js} +2 -2
- package/dist/cli/chunks/chunk-JPL53G4V.js +20 -0
- package/dist/cli/chunks/{chunk-IUKERFLT.js → chunk-JX7HZMW5.js} +1 -1
- package/dist/cli/chunks/{chunk-FE3FGMNB.js → chunk-JXCIRWLQ.js} +2 -2
- package/dist/cli/chunks/{chunk-IRS4HKAR.js → chunk-K32AUACO.js} +1 -1
- package/dist/cli/chunks/{chunk-A3BDPU5F.js → chunk-KQOJYO5Z.js} +4 -4
- package/dist/cli/chunks/{chunk-IIFCTJOF.js → chunk-KVMY2ABO.js} +2 -2
- package/dist/cli/chunks/{chunk-WFZ4DRIC.js → chunk-L2IMTNZF.js} +2 -2
- package/dist/cli/chunks/{chunk-HHEHGERJ.js → chunk-LAGNWKAD.js} +2 -2
- package/dist/cli/chunks/{chunk-RZ7D5SHS.js → chunk-LEDF3LGZ.js} +1 -1
- package/dist/cli/chunks/{chunk-YZFNPTGN.js → chunk-LHA4OQ7G.js} +2 -2
- package/dist/cli/chunks/{chunk-GTVXVYKE.js → chunk-LHZOIXJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-TISBFSDJ.js → chunk-LOQMQEKN.js} +1 -1
- package/dist/cli/chunks/{chunk-GMU7P5O3.js → chunk-LWUIK5DH.js} +2 -2
- package/dist/cli/chunks/{chunk-MFQIJ3HV.js → chunk-M3APJ7VS.js} +2 -2
- package/dist/cli/chunks/{chunk-CTG3GJIM.js → chunk-M4OYZMXE.js} +2 -2
- package/dist/cli/chunks/{chunk-AVQD7KEN.js → chunk-MCMVRPNG.js} +2 -2
- package/dist/cli/chunks/{chunk-YZD4VIE5.js → chunk-MJLDZSFB.js} +1 -1
- package/dist/cli/chunks/{chunk-PPM5D7LH.js → chunk-MQN3HYFX.js} +1 -1
- package/dist/cli/chunks/{chunk-RONMVGCT.js → chunk-MSJGDIRP.js} +2 -2
- package/dist/cli/chunks/{chunk-UOIT5JZ6.js → chunk-NEIJP6TG.js} +2 -2
- package/dist/cli/chunks/{chunk-3KGUP2SD.js → chunk-NHC635LL.js} +2 -2
- package/dist/cli/chunks/{chunk-SK6YRNXI.js → chunk-NKEGEQ3J.js} +2 -2
- package/dist/cli/chunks/{chunk-66LOFIBP.js → chunk-NN35QH6X.js} +2 -2
- package/dist/cli/chunks/{chunk-GKG6IQP6.js → chunk-NUCJS3Z7.js} +3 -3
- package/dist/cli/chunks/{chunk-IWRORKD7.js → chunk-O2H5WYFK.js} +2 -2
- package/dist/cli/chunks/{chunk-S73KENCH.js → chunk-O4MNYX4X.js} +2 -2
- package/dist/cli/chunks/{chunk-B4F5EPNR.js → chunk-OBLAWVXM.js} +1 -1
- package/dist/cli/chunks/{chunk-MRXKIXVV.js → chunk-OU4HRUVV.js} +2 -2
- package/dist/cli/chunks/{chunk-HNYSBE5J.js → chunk-P7EOYGR2.js} +2 -2
- package/dist/cli/chunks/{chunk-3BGGNHHZ.js → chunk-PFSBUTDA.js} +1 -1
- package/dist/cli/chunks/{chunk-FPWA73N6.js → chunk-PIIBVLFC.js} +2 -2
- package/dist/cli/chunks/{chunk-BB7MEGXD.js → chunk-PIJ5XOMM.js} +2 -2
- package/dist/cli/chunks/{chunk-O5OOUMBB.js → chunk-Q4LYWIEX.js} +2 -2
- package/dist/cli/chunks/{chunk-RFNEEDPQ.js → chunk-Q5432RIH.js} +2 -2
- package/dist/cli/chunks/{chunk-D7NKRCIL.js → chunk-QJXZ4SU7.js} +2 -2
- package/dist/cli/chunks/{chunk-6SAU7GXO.js → chunk-QNIL3D6E.js} +1 -1
- package/dist/cli/chunks/{chunk-W7KGHW4T.js → chunk-QUQA4NNZ.js} +2 -2
- package/dist/cli/chunks/{chunk-FNJZBIR3.js → chunk-QZSNYXYC.js} +2 -2
- package/dist/cli/chunks/{chunk-R573V37S.js → chunk-RA7HEY5G.js} +17 -17
- package/dist/cli/chunks/{chunk-253TDTPH.js → chunk-RBZWUWUG.js} +1 -1
- package/dist/cli/chunks/{chunk-HRORJ352.js → chunk-RH3I4Q23.js} +2 -2
- package/dist/cli/chunks/{chunk-CUY2EUSQ.js → chunk-ROXH622K.js} +2 -2
- package/dist/cli/chunks/{chunk-NGSA53GC.js → chunk-RTAGNKCV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZS4BGJJV.js → chunk-RTFFD263.js} +1 -1
- package/dist/cli/chunks/{chunk-ZG3DSWUA.js → chunk-S574AFAT.js} +1 -1
- package/dist/cli/chunks/{chunk-GDUGW6FZ.js → chunk-SA5FTDRS.js} +2 -2
- package/dist/cli/chunks/{chunk-NKW7VOZV.js → chunk-SHVTMMJB.js} +1 -1
- package/dist/cli/chunks/{chunk-QTDZS4U6.js → chunk-SUGQZCNI.js} +2 -2
- package/dist/cli/chunks/{chunk-TMTLWSSA.js → chunk-T6CUKJHS.js} +1 -1
- package/dist/cli/chunks/{chunk-HPKYIK7R.js → chunk-T6SCQVWH.js} +2 -2
- package/dist/cli/chunks/{chunk-75MP7JMV.js → chunk-TFA5UETW.js} +1 -1
- package/dist/cli/chunks/{chunk-JPOEI7CJ.js → chunk-TFJDJVPC.js} +2 -2
- package/dist/cli/chunks/chunk-TNVOINYC.js +12 -0
- package/dist/cli/chunks/{chunk-MJRYHHOG.js → chunk-TUFU3BAK.js} +2 -2
- package/dist/cli/chunks/{chunk-X4B3R3ZZ.js → chunk-TWH3ZL6B.js} +2 -2
- package/dist/cli/chunks/{chunk-RUQV3BTV.js → chunk-ULEVKOWQ.js} +1 -1
- package/dist/cli/chunks/{chunk-AMBIOEMO.js → chunk-ULV5K4V5.js} +1 -1
- package/dist/cli/chunks/{chunk-S7HQOGVD.js → chunk-UNDPB5SS.js} +1 -1
- package/dist/cli/chunks/{chunk-YEO2Z3UX.js → chunk-UQYDFT6I.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCYKWEAM.js → chunk-USPBUR6P.js} +2 -2
- package/dist/cli/chunks/{chunk-IVKSZNMI.js → chunk-UVWOIF6P.js} +1 -1
- package/dist/cli/chunks/{chunk-PYBVFG6T.js → chunk-UWDC3TZP.js} +2 -2
- package/dist/cli/chunks/{chunk-2Z7HIT5I.js → chunk-VFFIMJWT.js} +1 -1
- package/dist/cli/chunks/{chunk-7JZCEQFR.js → chunk-VQM2TC2V.js} +1 -1
- package/dist/cli/chunks/{chunk-4Z7XH4JE.js → chunk-WNAFMYND.js} +2 -2
- package/dist/cli/chunks/{chunk-AZCKTAUI.js → chunk-X3YWLJGT.js} +2 -2
- package/dist/cli/chunks/{chunk-SXQIH2QA.js → chunk-X5R6SUWM.js} +2 -2
- package/dist/cli/chunks/{chunk-4FTO3TPH.js → chunk-XKRJQIGP.js} +2 -2
- package/dist/cli/chunks/{chunk-XI6ZZMX7.js → chunk-XLFYVBOD.js} +1 -1
- package/dist/cli/chunks/chunk-XOGBTPJI.js +65 -0
- package/dist/cli/chunks/{chunk-ZT7JSFGT.js → chunk-XOYTW6LI.js} +2 -2
- package/dist/cli/chunks/{chunk-RLU7764Y.js → chunk-Z3RPA3RD.js} +2 -2
- package/dist/cli/chunks/{chunk-OJNG6ZXG.js → chunk-ZBSEXVEI.js} +2 -2
- package/dist/cli/chunks/{chunk-3WOQY6UL.js → chunk-ZMCMSDXR.js} +2 -2
- package/dist/cli/chunks/{chunk-FW3C4LWU.js → chunk-ZY4G7O7Y.js} +2 -2
- package/dist/cli/chunks/{ci-M2BSQBLL.js → ci-COQUVZH6.js} +2 -2
- package/dist/cli/chunks/{ci-output-Z4TMK6GZ.js → ci-output-KVUHUEOT.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-E3G4GGWB.js → circuit-breaker-O4JNXAYH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-MASRQU54.js → claude-flow-setup-J65U34NA.js} +2 -2
- package/dist/cli/chunks/client-VJNNIAMG.js +2 -0
- package/dist/cli/chunks/{cline-installer-P3BWAKQA.js → cline-installer-ZTG234Z2.js} +2 -2
- package/dist/cli/chunks/{code-7HY5HQAV.js → code-5GWPY4IX.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-MBVKLOEU.js → code-index-extractor-TWNKG4VS.js} +2 -2
- package/dist/cli/chunks/{codex-installer-WZ6QO2PH.js → codex-installer-4TM4BLAE.js} +2 -2
- package/dist/cli/chunks/{completions-TOJC2UFP.js → completions-BBNHQXMV.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-QYVDIAAW.js → complexity-analyzer-2SCI2VGH.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-J72CV7P4.js → continuedev-installer-CTIORASU.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-ACDA3GEA.js → copilot-installer-4R2V4IYB.js} +2 -2
- package/dist/cli/chunks/core-handlers-MV5CAR7O.js +2 -0
- package/dist/cli/chunks/{cost-tracker-BAYQJELE.js → cost-tracker-KDBYQBKG.js} +2 -2
- package/dist/cli/chunks/{coverage-QD3XJV6W.js → coverage-QQJQVDPZ.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-ULY4NIML.js +2 -0
- package/dist/cli/chunks/{cursor-installer-SPGZ4TQM.js → cursor-installer-5WEZCESZ.js} +2 -2
- package/dist/cli/chunks/{daemon-3EVOL2UH.js → daemon-M4DKHEEA.js} +3 -3
- package/dist/cli/chunks/{daemon-N4JKD5SO.js → daemon-Y7H3ZUXQ.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-3BVLL3L5.js → dag-attention-scheduler-SD2UIADT.js} +2 -2
- package/dist/cli/chunks/{detect-SWACKB45.js → detect-WONWUXFH.js} +2 -2
- package/dist/cli/chunks/{dist-node-LU4E7PI6.js → dist-node-Q5GQN2R6.js} +2 -2
- package/dist/cli/chunks/{domain-handler-5AKKAC43.js → domain-handler-EMXE2XQW.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-LB6H7RPX.js → domain-transfer-QATUJJRP.js} +2 -2
- package/dist/cli/chunks/dream-PIGWXWE4.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-7RBA5NDK.js → embed-and-insert-pattern-AAFHLBEJ.js} +2 -2
- package/dist/cli/chunks/{eval-ZZFPRENX.js → eval-73BDNLSK.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-HRO3EGIW.js → experience-capture-middleware-YPAPVSYY.js} +3 -3
- package/dist/cli/chunks/{fast-paths-IRRNQBTY.js → fast-paths-33ZKMNYY.js} +2 -2
- package/dist/cli/chunks/{feature-flags-R5N5IWI2.js → feature-flags-F3DVW4ST.js} +2 -2
- package/dist/cli/chunks/{feature-flags-W54ABAUA.js → feature-flags-QKO5YYDU.js} +2 -2
- package/dist/cli/chunks/{file-discovery-6CIDLVID.js → file-discovery-YYVZLRYD.js} +2 -2
- package/dist/cli/chunks/{fleet-YTFN64WE.js → fleet-EJX6BXLR.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-RXMPLMV2.js → gnn-wrapper-TBNLYPTM.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-HQQWEEQQ.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-GPZIKYFD.js → hnsw-legacy-bridge-Z6V6TOF5.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-6AGIBSVE.js → hnswlib-node-LFVNGGCL.js} +2 -2
- package/dist/cli/chunks/{hooks-AYLAGFOK.js → hooks-GG2Z3BDB.js} +10 -10
- package/dist/cli/chunks/hybrid-router-LVF6N345.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-56FMXI3T.js → hypergraph-engine-X4Q2TTET.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-APEVT5IE.js → hypergraph-handler-6BZWV5PL.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CCVVMGWE.js +2 -0
- package/dist/cli/chunks/{init-handler-5DWF4REQ.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-XKAUA5VA.js → kilocode-installer-BWAVVSQG.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-NI2KIYJE.js → kiro-installer-UADO53E5.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-C7LVHHLN.js +2 -0
- package/dist/cli/chunks/{learning-ZIUMUNXZ.js → learning-HMUTCYQM.js} +3 -3
- package/dist/cli/chunks/{llm-router-IL52EF2V.js → llm-router-453TBDUY.js} +4 -4
- package/dist/cli/chunks/llm-router-service-LMTRJCPP.js +2 -0
- package/dist/cli/chunks/{load-B5LFYD6O.js → load-DBBSNP6T.js} +2 -2
- package/dist/cli/chunks/load-test-FHMZXTXD.js +2 -0
- package/dist/cli/chunks/{mcp-K6GZLWBC.js → mcp-PK3SAKRF.js} +2 -2
- package/dist/cli/chunks/{memory-NCQRVSN6.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-R4LBSJWK.js → multi-model-executor-HUGRXJ6D.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-I6CBR3PV.js → opencode-installer-A6IXNF26.js} +2 -2
- package/dist/cli/chunks/{orchestrator-5FXUCES6.js → orchestrator-KDFYDNE3.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-5PS4JN6V.js +2 -0
- package/dist/cli/chunks/{pipeline-GDKCTXJH.js → pipeline-HSPRKEYE.js} +2 -2
- package/dist/cli/chunks/{platform-ZFY3F4T3.js → platform-X74IBN2H.js} +2 -2
- package/dist/cli/chunks/{plugin-HQMEN3OS.js → plugin-KDJZ7VFD.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-LSJGF4CV.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-BMDNIGPP.js → protocol-handler-I2SDHC7B.js} +2 -2
- package/dist/cli/chunks/{prove-ABVGAG4Z.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-ENJXPNP5.js → quality-2P7KHVY3.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-C7EDY7IS.js +2 -0
- package/dist/cli/chunks/{real-embeddings-W3GNAEJO.js → real-embeddings-L7NMMNDO.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-4FJNQ7PU.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-GFS5FA4F.js → routing-handler-B5CDEZF3.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-GBMYNJKN.js → ruvector-commands-SOVCRLJ6.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-STUAQT6U.js → rvf-dual-writer-M6WI2KFB.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-LO6DBNJH.js → rvf-migration-adapter-YDMZGPMA.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-I5AD4VJ2.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-X3WCA5K5.js → security-R3IXQXDA.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-Z4FSPWNP.js → shared-rvf-adapter-GZX7LSQZ.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-QOPOIRIC.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-B2B5QBVK.js → status-handler-7PZSPBHJ.js} +2 -2
- package/dist/cli/chunks/{structural-health-KT47LBVH.js → structural-health-UMJS6IVR.js} +2 -2
- package/dist/cli/chunks/sync-HA5SLSBA.js +2 -0
- package/dist/cli/chunks/{sync-VWD6OOUR.js → sync-UIREA3UG.js} +2 -2
- package/dist/cli/chunks/{task-handler-X5JT5YBF.js → task-handler-NV4HGMEG.js} +2 -2
- package/dist/cli/chunks/{task-handlers-IW4GQDW4.js → task-handlers-RXYWWOSU.js} +3 -3
- package/dist/cli/chunks/{test-MBZSUASD.js → test-2Y6OXGEU.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-E5KHKRZS.js → test-scheduling-N55VFOYT.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-FW3ZVMRP.js +2 -0
- package/dist/cli/chunks/{token-usage-ECJSPOQB.js → token-usage-YXKOB3U6.js} +2 -2
- package/dist/cli/chunks/{transformers-UZJAQ7OZ.js → transformers-GBRSFAVA.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-H6BU2E5R.js → tree-sitter-wasm-parser-FJHMEHJS.js} +2 -2
- package/dist/cli/chunks/{types-PM7NT3MH.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-FS2XYC2P.js → upgrade-L2OTYHD3.js} +2 -2
- package/dist/cli/chunks/{validate-4Y2BNN3A.js → validate-3NWRQYTP.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-Z7QXZSUE.js → validate-swarm-MDURRWXK.js} +2 -2
- package/dist/cli/chunks/{vibium-VZ6L3O2G.js → vibium-SZX7RB4H.js} +2 -2
- package/dist/cli/chunks/visual-security-CKSZZHKG.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-H7P37W5U.js → web-tree-sitter-LGQT7JRD.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-IB2VHSZS.js → windsurf-installer-EYYGHPPX.js} +2 -2
- package/dist/cli/chunks/witness-chain-IOQX3XFG.js +2 -0
- package/dist/cli/chunks/{witness-chain-C4DISYJN.js → witness-chain-YYYA2CU3.js} +2 -2
- package/dist/cli/chunks/{workflow-IGM7KVIO.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/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 +377 -347
- 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/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-XZVL3DHO.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-YIL25K6W.js +0 -2
- package/dist/cli/chunks/audit-WPIRUJNZ.js +0 -3
- package/dist/cli/chunks/base-YCYV23Q3.js +0 -2
- package/dist/cli/chunks/browser-workflow-ALCOCRA2.js +0 -2
- package/dist/cli/chunks/chunk-EIL7FQC4.js +0 -65
- package/dist/cli/chunks/chunk-RLZDXQNM.js +0 -2
- package/dist/cli/chunks/chunk-W5C7R2LS.js +0 -12
- package/dist/cli/chunks/client-RPB6RYVY.js +0 -2
- package/dist/cli/chunks/core-handlers-QFJT5NX6.js +0 -2
- package/dist/cli/chunks/cross-domain-router-5GJ7WZKX.js +0 -2
- package/dist/cli/chunks/dream-C6VNLTON.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-4SBO27BG.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-W7G6VNXW.js +0 -2
- package/dist/cli/chunks/hnsw-index-LENA5QML.js +0 -2
- package/dist/cli/chunks/hybrid-router-IXHIC45P.js +0 -2
- package/dist/cli/chunks/impact-analyzer-DKGVMYU6.js +0 -2
- package/dist/cli/chunks/init-wizard-BBY3LY3F.js +0 -2
- package/dist/cli/chunks/kernel-7CUW7G62.js +0 -2
- package/dist/cli/chunks/knowledge-graph-Q5CP47IP.js +0 -2
- package/dist/cli/chunks/llm-router-service-MTXCX7TO.js +0 -2
- package/dist/cli/chunks/load-test-YBWXASBO.js +0 -2
- package/dist/cli/chunks/memory-backend-52LANEA3.js +0 -2
- package/dist/cli/chunks/memory-handlers-KFW3HYAP.js +0 -2
- package/dist/cli/chunks/protocol-executor-TRYUS77M.js +0 -2
- package/dist/cli/chunks/provider-manager-6XQQN7FX.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-3IUPE4DJ.js +0 -2
- package/dist/cli/chunks/queen-coordinator-VWPH4XPX.js +0 -2
- package/dist/cli/chunks/router-OIB6ODHA.js +0 -2
- package/dist/cli/chunks/routing-feedback-EKYPCZYG.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-7RXP2Q4Q.js +0 -2
- package/dist/cli/chunks/safe-db-MNKFEPBX.js +0 -2
- package/dist/cli/chunks/schedule-AJXABVXX.js +0 -2
- package/dist/cli/chunks/scheduler-LDWYHIAW.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-A6GKDMOJ.js +0 -2
- package/dist/cli/chunks/sync-CKID22IW.js +0 -2
- package/dist/cli/chunks/token-bootstrap-TIDPJ5IG.js +0 -2
- package/dist/cli/chunks/unified-memory-27QJHABO.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-76VUXR4H.js +0 -2
- package/dist/cli/chunks/unified-persistence-QRCGDEXH.js +0 -2
- package/dist/cli/chunks/visual-security-KB27O7BE.js +0 -2
- package/dist/cli/chunks/witness-chain-EYPXHRDV.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-6AQZ3USU.js +0 -2
- package/dist/cli/chunks/wrappers-PQXC263L.js +0 -2
|
@@ -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'))
|
|
@@ -147,6 +147,20 @@ export class AQELearningEngine {
|
|
|
147
147
|
if (process.env.DEBUG)
|
|
148
148
|
console.debug('[AQELearningEngine] Witness chain wiring skipped:', e instanceof Error ? e.message : e);
|
|
149
149
|
}
|
|
150
|
+
// Wire ADR-110 kept-nulls recorder (fail-soft, mirrors witness wiring)
|
|
151
|
+
try {
|
|
152
|
+
const { getUnifiedPersistence } = await import('../kernel/unified-persistence.js');
|
|
153
|
+
const persistence = getUnifiedPersistence();
|
|
154
|
+
if (persistence.isInitialized()) {
|
|
155
|
+
const { PatternNullStore } = await import('./pattern-null-store.js');
|
|
156
|
+
const nullStore = new PatternNullStore(persistence.getDatabase());
|
|
157
|
+
this.experienceCapture.setNullRecorder((record) => nullStore.recordNull(record));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (e) {
|
|
161
|
+
if (process.env.DEBUG)
|
|
162
|
+
console.debug('[AQELearningEngine] Null recorder wiring skipped:', e instanceof Error ? e.message : e);
|
|
163
|
+
}
|
|
150
164
|
}
|
|
151
165
|
// Wire cross-domain transfer with real performance provider (Y-2 fix)
|
|
152
166
|
try {
|
|
@@ -316,10 +330,12 @@ export class AQELearningEngine {
|
|
|
316
330
|
return err(new Error('Engine not initialized'));
|
|
317
331
|
}
|
|
318
332
|
// Search for similar patterns before routing (Phase 5.1 & 5.3)
|
|
333
|
+
// ADR-110: pass context so previously-failed patterns are discounted here too
|
|
319
334
|
const patternSearchResult = await this.searchPatternsForTask(request.task, {
|
|
320
335
|
limit: 5,
|
|
321
336
|
minConfidence: 0.4,
|
|
322
337
|
domain: request.domain,
|
|
338
|
+
contextFingerprint: request.domain ? `${request.domain}:router` : undefined,
|
|
323
339
|
});
|
|
324
340
|
// Track pattern usage for found patterns (Phase 5.4)
|
|
325
341
|
if (patternSearchResult.success && patternSearchResult.value.length > 0) {
|
|
@@ -363,6 +379,7 @@ export class AQELearningEngine {
|
|
|
363
379
|
limit: options.limit || 5,
|
|
364
380
|
minConfidence: options.minConfidence || 0.4,
|
|
365
381
|
domain: options.domain,
|
|
382
|
+
contextFingerprint: options.contextFingerprint,
|
|
366
383
|
useVectorSearch: true,
|
|
367
384
|
});
|
|
368
385
|
}
|
|
@@ -555,6 +572,20 @@ export class AQELearningEngine {
|
|
|
555
572
|
// Fall through to local tracking
|
|
556
573
|
}
|
|
557
574
|
}
|
|
575
|
+
// ADR-110: retrieve the patterns that will GUIDE this task so a failure
|
|
576
|
+
// can be attributed to them as kept nulls. Fail-soft — guidance is
|
|
577
|
+
// best-effort and must never block task start.
|
|
578
|
+
const contextFingerprint = `${domain ?? 'unknown'}:${agent ?? 'unknown'}`;
|
|
579
|
+
let appliedPatterns;
|
|
580
|
+
try {
|
|
581
|
+
const guiding = await this.searchPatternsForTask(task, { domain, contextFingerprint });
|
|
582
|
+
if (guiding.success && guiding.value.length > 0) {
|
|
583
|
+
appliedPatterns = guiding.value.map(r => r.pattern.id);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
catch {
|
|
587
|
+
// guidance retrieval is non-critical; proceed without it
|
|
588
|
+
}
|
|
558
589
|
// Start experience capture (linked to trajectory if available)
|
|
559
590
|
let experienceId;
|
|
560
591
|
if (this.experienceCapture) {
|
|
@@ -562,6 +593,7 @@ export class AQELearningEngine {
|
|
|
562
593
|
agent,
|
|
563
594
|
domain,
|
|
564
595
|
trajectoryId: trajectoryId !== id ? trajectoryId : undefined,
|
|
596
|
+
appliedPatterns,
|
|
565
597
|
});
|
|
566
598
|
}
|
|
567
599
|
// Local tracking
|
|
@@ -75,6 +75,8 @@ export interface TaskExperience {
|
|
|
75
75
|
feedback?: string;
|
|
76
76
|
/** Extracted patterns (if any) */
|
|
77
77
|
patterns?: string[];
|
|
78
|
+
/** Patterns that GUIDED this task (retrieved before execution) — null-capture targets on failure (ADR-110) */
|
|
79
|
+
appliedPatterns?: string[];
|
|
78
80
|
/** Claude Flow trajectory ID (if available) */
|
|
79
81
|
trajectoryId?: string;
|
|
80
82
|
/** Additional metadata */
|
|
@@ -169,12 +171,16 @@ export declare class ExperienceCaptureService {
|
|
|
169
171
|
private sessionCaptureCount;
|
|
170
172
|
/** Optional witness chain for attaching audit receipts to experiences */
|
|
171
173
|
private witnessChain?;
|
|
174
|
+
/** Optional ADR-110 null recorder — wired by the composition root to PatternNullStore.recordNull */
|
|
175
|
+
private nullRecorder?;
|
|
172
176
|
constructor(memory: MemoryBackend, patternStore?: IPatternStore | undefined, eventBus?: EventBus | undefined, config?: Partial<ExperienceCaptureConfig>);
|
|
173
177
|
/**
|
|
174
178
|
* Set the witness chain for attaching audit receipts to captured experiences.
|
|
175
179
|
* Only creates witness records when the useWitnessChain feature flag is enabled.
|
|
176
180
|
*/
|
|
177
181
|
setWitnessChain(chain: WitnessChain): void;
|
|
182
|
+
/** Wire the ADR-110 kept-nulls recorder (typically PatternNullStore.recordNull). */
|
|
183
|
+
setNullRecorder(recorder: NonNullable<typeof this.nullRecorder>): void;
|
|
178
184
|
/**
|
|
179
185
|
* Initialize the experience capture service
|
|
180
186
|
*/
|
|
@@ -188,6 +194,8 @@ export declare class ExperienceCaptureService {
|
|
|
188
194
|
model?: 'haiku' | 'sonnet' | 'opus';
|
|
189
195
|
trajectoryId?: string;
|
|
190
196
|
metadata?: Record<string, unknown>;
|
|
197
|
+
/** Pattern ids retrieved to guide this task — enables ADR-110 null capture on failure */
|
|
198
|
+
appliedPatterns?: string[];
|
|
191
199
|
}): string;
|
|
192
200
|
/**
|
|
193
201
|
* Record a step in the experience
|
|
@@ -94,6 +94,8 @@ export class ExperienceCaptureService {
|
|
|
94
94
|
sessionCaptureCount = 0;
|
|
95
95
|
/** Optional witness chain for attaching audit receipts to experiences */
|
|
96
96
|
witnessChain;
|
|
97
|
+
/** Optional ADR-110 null recorder — wired by the composition root to PatternNullStore.recordNull */
|
|
98
|
+
nullRecorder;
|
|
97
99
|
constructor(memory, patternStore, eventBus, config = {}) {
|
|
98
100
|
this.memory = memory;
|
|
99
101
|
this.patternStore = patternStore;
|
|
@@ -107,6 +109,10 @@ export class ExperienceCaptureService {
|
|
|
107
109
|
setWitnessChain(chain) {
|
|
108
110
|
this.witnessChain = chain;
|
|
109
111
|
}
|
|
112
|
+
/** Wire the ADR-110 kept-nulls recorder (typically PatternNullStore.recordNull). */
|
|
113
|
+
setNullRecorder(recorder) {
|
|
114
|
+
this.nullRecorder = recorder;
|
|
115
|
+
}
|
|
110
116
|
/**
|
|
111
117
|
* Initialize the experience capture service
|
|
112
118
|
*/
|
|
@@ -141,6 +147,7 @@ export class ExperienceCaptureService {
|
|
|
141
147
|
quality: 0,
|
|
142
148
|
trajectoryId: options?.trajectoryId,
|
|
143
149
|
metadata: options?.metadata,
|
|
150
|
+
appliedPatterns: options?.appliedPatterns,
|
|
144
151
|
};
|
|
145
152
|
this.activeExperiences.set(id, experience);
|
|
146
153
|
return id;
|
|
@@ -216,6 +223,29 @@ export class ExperienceCaptureService {
|
|
|
216
223
|
await this.storeExperience(experience);
|
|
217
224
|
// Update stats
|
|
218
225
|
this.updateStats(experience);
|
|
226
|
+
// ADR-110: a pattern-guided failure is a kept null, not a discarded run.
|
|
227
|
+
// Failure = negative reward when a reward signal exists, else !success.
|
|
228
|
+
const failed = experience.reward !== undefined ? experience.reward < 0 : !experience.success;
|
|
229
|
+
if (this.nullRecorder && failed && experience.appliedPatterns?.length) {
|
|
230
|
+
const contextFingerprint = `${experience.domain ?? 'unknown'}:${experience.agent ?? 'unknown'}`;
|
|
231
|
+
for (const patternId of experience.appliedPatterns) {
|
|
232
|
+
try {
|
|
233
|
+
this.nullRecorder({
|
|
234
|
+
patternId,
|
|
235
|
+
contextFingerprint,
|
|
236
|
+
failureMode: experience.testOutcome ?? experience.feedback ?? 'task-failure',
|
|
237
|
+
trajectoryRef: experience.trajectoryId,
|
|
238
|
+
evidenceClass: 'EXECUTED',
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (nullError) {
|
|
242
|
+
logger.warn('Failed to record pattern null', {
|
|
243
|
+
patternId,
|
|
244
|
+
error: nullError instanceof Error ? nullError.message : String(nullError),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
219
249
|
// Extract patterns: require positive reward (or no reward signal) AND quality threshold
|
|
220
250
|
// Zero or negative reward blocks extraction — only learn from genuinely positive outcomes
|
|
221
251
|
const rewardAllowsExtraction = experience.reward === undefined || experience.reward > 0;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Database as DatabaseType } from 'better-sqlite3';
|
|
2
|
+
export type NullEvidenceClass = 'EXECUTED' | 'STATIC' | 'INFERRED' | 'CONJECTURE';
|
|
3
|
+
export interface PatternNullRecord {
|
|
4
|
+
patternId: string;
|
|
5
|
+
contextFingerprint: string;
|
|
6
|
+
failureMode: string;
|
|
7
|
+
trajectoryRef?: string;
|
|
8
|
+
/** What evidence backs this failure record (ADR-105). Verdict-pipeline failures are EXECUTED. */
|
|
9
|
+
evidenceClass?: NullEvidenceClass;
|
|
10
|
+
}
|
|
11
|
+
export interface NullSummary {
|
|
12
|
+
patternId: string;
|
|
13
|
+
/** Total consolidated failure count across all contexts */
|
|
14
|
+
totalFailures: number;
|
|
15
|
+
/** Per-context consolidated counts */
|
|
16
|
+
byContext: Record<string, number>;
|
|
17
|
+
}
|
|
18
|
+
export declare class PatternNullStore {
|
|
19
|
+
private readonly db;
|
|
20
|
+
constructor(db: DatabaseType);
|
|
21
|
+
/** Record a failure; consolidates on repeat (pattern, context) pairs. */
|
|
22
|
+
recordNull(record: PatternNullRecord): void;
|
|
23
|
+
/** Batch summaries for retrieval-time surfacing. Missing patterns simply have no entry. */
|
|
24
|
+
getNullSummaries(patternIds: string[]): Map<string, NullSummary>;
|
|
25
|
+
/**
|
|
26
|
+
* Pure ranking-discount helper (no DB) so retrieval code can apply it
|
|
27
|
+
* without coupling. A null in the caller's own context discounts hardest;
|
|
28
|
+
* remote nulls discount mildly; the floor keeps patterns retrievable.
|
|
29
|
+
*/
|
|
30
|
+
static applyNullDiscount(score: number, summary: NullSummary | undefined, contextFingerprint?: string): number;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=pattern-null-store.d.ts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Null Store (ADR-110, issue #522)
|
|
3
|
+
*
|
|
4
|
+
* First-class negative pattern records: when an applied pattern fails in a
|
|
5
|
+
* context, the failure is kept — consolidated per (pattern, context) — and
|
|
6
|
+
* surfaced at retrieval time so ranking can discount by context-matched null
|
|
7
|
+
* density. Nulls are information, not tombstones: a pattern that fails in one
|
|
8
|
+
* context may be right in another, and a deleted failure is unauditable (the
|
|
9
|
+
* Pattern Space v2.1 lesson).
|
|
10
|
+
*
|
|
11
|
+
* Persistence: qe_pattern_nulls (schema v10, migration
|
|
12
|
+
* 20260611_add_pattern_nulls_table). Obtain the handle via
|
|
13
|
+
* SQLitePatternStore.getDatabase().
|
|
14
|
+
*/
|
|
15
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
16
|
+
import { applyMigration } from '../migrations/20260611_add_pattern_nulls_table.js';
|
|
17
|
+
/** Weight of a context-matched null vs a null from elsewhere (ADR-110: local nulls outweigh remote successes). */
|
|
18
|
+
const CONTEXT_MATCHED_WEIGHT = 0.15;
|
|
19
|
+
const UNMATCHED_WEIGHT = 0.03;
|
|
20
|
+
/** Floor so heavily-nulled patterns remain retrievable (nulls inform, never erase). */
|
|
21
|
+
const DISCOUNT_FLOOR = 0.25;
|
|
22
|
+
export class PatternNullStore {
|
|
23
|
+
db;
|
|
24
|
+
constructor(db) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
// Additive, idempotent — safe on DBs that predate schema v10.
|
|
27
|
+
applyMigration(db);
|
|
28
|
+
}
|
|
29
|
+
/** Record a failure; consolidates on repeat (pattern, context) pairs. */
|
|
30
|
+
recordNull(record) {
|
|
31
|
+
this.db.prepare(`
|
|
32
|
+
INSERT INTO qe_pattern_nulls (id, pattern_id, context_fingerprint, failure_mode, trajectory_ref, evidence_class)
|
|
33
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
34
|
+
ON CONFLICT(pattern_id, context_fingerprint) DO UPDATE SET
|
|
35
|
+
consolidated_count = consolidated_count + 1,
|
|
36
|
+
failure_mode = excluded.failure_mode,
|
|
37
|
+
trajectory_ref = COALESCE(excluded.trajectory_ref, trajectory_ref),
|
|
38
|
+
updated_at = datetime('now')
|
|
39
|
+
`).run(uuidv4(), record.patternId, record.contextFingerprint, record.failureMode, record.trajectoryRef ?? null, record.evidenceClass ?? 'EXECUTED');
|
|
40
|
+
}
|
|
41
|
+
/** Batch summaries for retrieval-time surfacing. Missing patterns simply have no entry. */
|
|
42
|
+
getNullSummaries(patternIds) {
|
|
43
|
+
const out = new Map();
|
|
44
|
+
if (patternIds.length === 0)
|
|
45
|
+
return out;
|
|
46
|
+
const placeholders = patternIds.map(() => '?').join(',');
|
|
47
|
+
const rows = this.db.prepare(`
|
|
48
|
+
SELECT pattern_id, context_fingerprint, consolidated_count
|
|
49
|
+
FROM qe_pattern_nulls
|
|
50
|
+
WHERE pattern_id IN (${placeholders})
|
|
51
|
+
`).all(...patternIds);
|
|
52
|
+
for (const row of rows) {
|
|
53
|
+
let summary = out.get(row.pattern_id);
|
|
54
|
+
if (!summary) {
|
|
55
|
+
summary = { patternId: row.pattern_id, totalFailures: 0, byContext: {} };
|
|
56
|
+
out.set(row.pattern_id, summary);
|
|
57
|
+
}
|
|
58
|
+
summary.totalFailures += row.consolidated_count;
|
|
59
|
+
summary.byContext[row.context_fingerprint] = row.consolidated_count;
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Pure ranking-discount helper (no DB) so retrieval code can apply it
|
|
65
|
+
* without coupling. A null in the caller's own context discounts hardest;
|
|
66
|
+
* remote nulls discount mildly; the floor keeps patterns retrievable.
|
|
67
|
+
*/
|
|
68
|
+
static applyNullDiscount(score, summary, contextFingerprint) {
|
|
69
|
+
if (!summary || summary.totalFailures === 0)
|
|
70
|
+
return score;
|
|
71
|
+
const matched = contextFingerprint ? (summary.byContext[contextFingerprint] ?? 0) : 0;
|
|
72
|
+
const unmatched = summary.totalFailures - matched;
|
|
73
|
+
const factor = Math.max(DISCOUNT_FLOOR, 1 - matched * CONTEXT_MATCHED_WEIGHT - unmatched * UNMATCHED_WEIGHT);
|
|
74
|
+
return score * factor;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=pattern-null-store.js.map
|
|
@@ -9,6 +9,7 @@ import type { MemoryBackend } from '../kernel/interfaces.js';
|
|
|
9
9
|
import type { Result } from '../shared/types/index.js';
|
|
10
10
|
import { QEPattern, QEPatternContext, QEPatternType, QEDomain, CreateQEPatternOptions } from './qe-patterns.js';
|
|
11
11
|
import type { FilterExpression } from '../integrations/ruvector/interfaces.js';
|
|
12
|
+
import { type NullSummary } from './pattern-null-store.js';
|
|
12
13
|
/**
|
|
13
14
|
* Token tracking configuration (ADR-042)
|
|
14
15
|
*/
|
|
@@ -130,6 +131,11 @@ export interface PatternSearchOptions {
|
|
|
130
131
|
* When undefined, no additional filtering is applied (backward compatible).
|
|
131
132
|
*/
|
|
132
133
|
filter?: FilterExpression;
|
|
134
|
+
/**
|
|
135
|
+
* Caller's context fingerprint (domain:agent) for ADR-110 null discounting.
|
|
136
|
+
* Nulls recorded in this context discount matching patterns hardest.
|
|
137
|
+
*/
|
|
138
|
+
contextFingerprint?: string;
|
|
133
139
|
}
|
|
134
140
|
/**
|
|
135
141
|
* Pattern search result with reuse optimization (ADR-042)
|
|
@@ -149,6 +155,8 @@ export interface PatternSearchResult {
|
|
|
149
155
|
estimatedTokenSavings: number;
|
|
150
156
|
/** Confidence level for reusing this pattern (0-1) (ADR-042) */
|
|
151
157
|
reuseConfidence: number;
|
|
158
|
+
/** Kept-nulls summary when this pattern has recorded failures (ADR-110) */
|
|
159
|
+
nullSummary?: NullSummary;
|
|
152
160
|
}
|
|
153
161
|
/**
|
|
154
162
|
* Interface for pattern store operations
|
|
@@ -196,6 +204,8 @@ export declare class PatternStore implements IPatternStore {
|
|
|
196
204
|
private initialized;
|
|
197
205
|
private cleanupTimer?;
|
|
198
206
|
private sqliteStore;
|
|
207
|
+
/** Lazy ADR-110 null store over the sqlite handle */
|
|
208
|
+
private nullStore;
|
|
199
209
|
private loadingPromise;
|
|
200
210
|
private patternCache;
|
|
201
211
|
private domainIndex;
|
|
@@ -21,6 +21,7 @@ import { DeltaTracker } from '../integrations/ruvector/delta-tracker.js';
|
|
|
21
21
|
import { createVectorDeltaTracker, } from '../integrations/ruvector/vector-delta-tracker.js';
|
|
22
22
|
import { createHopfieldMemory } from '../integrations/ruvector/hopfield-memory.js';
|
|
23
23
|
import { createHyperbolicPatternIndex, } from './hyperbolic-pattern-index.js';
|
|
24
|
+
import { PatternNullStore } from './pattern-null-store.js';
|
|
24
25
|
// ============================================================================
|
|
25
26
|
// R1: HDC Fingerprint Singleton (lazy-initialized)
|
|
26
27
|
// ============================================================================
|
|
@@ -102,6 +103,8 @@ export class PatternStore {
|
|
|
102
103
|
cleanupTimer;
|
|
103
104
|
// Optional SQLite persistence delegate for delete/promote
|
|
104
105
|
sqliteStore = null;
|
|
106
|
+
/** Lazy ADR-110 null store over the sqlite handle */
|
|
107
|
+
nullStore = null;
|
|
105
108
|
loadingPromise = null;
|
|
106
109
|
// In-memory caches for fast access
|
|
107
110
|
patternCache = new Map();
|
|
@@ -767,6 +770,26 @@ export class PatternStore {
|
|
|
767
770
|
// while penalizing stale patterns (decayFactor is 0-1)
|
|
768
771
|
result.score = result.score * (0.7 + 0.3 * effectiveDecay);
|
|
769
772
|
}
|
|
773
|
+
// ADR-110: surface kept nulls and discount scores by context-matched
|
|
774
|
+
// null density — "succeeded elsewhere" never outranks "failed here".
|
|
775
|
+
const nullDb = this.sqliteStore?.getDatabase();
|
|
776
|
+
if (nullDb && results.length > 0) {
|
|
777
|
+
try {
|
|
778
|
+
if (!this.nullStore)
|
|
779
|
+
this.nullStore = new PatternNullStore(nullDb);
|
|
780
|
+
const summaries = this.nullStore.getNullSummaries(results.map(r => r.pattern.id));
|
|
781
|
+
for (const result of results) {
|
|
782
|
+
const summary = summaries.get(result.pattern.id);
|
|
783
|
+
if (summary) {
|
|
784
|
+
result.nullSummary = summary;
|
|
785
|
+
result.score = PatternNullStore.applyNullDiscount(result.score, summary, options.contextFingerprint);
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
catch (error) {
|
|
790
|
+
console.debug('[PatternStore] null discount skipped:', toErrorMessage(error));
|
|
791
|
+
}
|
|
792
|
+
}
|
|
770
793
|
// Sort by score
|
|
771
794
|
results.sort((a, b) => b.score - a.score);
|
|
772
795
|
// Apply metadata filter BEFORE limit so we don't lose matching results (W-3 fix)
|