agentic-qe 3.15.13 → 3.15.14
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/helpers/brain-checkpoint.cjs +124 -5
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +78 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-23KA2YW7.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-6RRQWMNE.js → agent-booster-wasm-2DLAEZK6.js} +2 -2
- package/dist/cli/chunks/{agent-handler-AOH6TV7W.js → agent-handler-P3IY7XEE.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-2P54SF5N.js → agent-memory-branch-WWKC2H3G.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +2 -0
- package/dist/cli/chunks/{arena-X6MOGQHA.js → arena-4BMFF6BS.js} +4 -4
- package/dist/cli/chunks/{arena-NSVFCAF5.js → arena-EIV5OALF.js} +2 -2
- package/dist/cli/chunks/{audit-27DJLQNM.js → audit-DNTI453H.js} +3 -3
- package/dist/cli/chunks/base-XPWGYDKD.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-BU5GXILS.js → better-sqlite3-TQBQGNC6.js} +2 -2
- package/dist/cli/chunks/brain-handler-HY57CNAO.js +95 -0
- package/dist/cli/chunks/{branch-enumerator-5CLULOCU.js → branch-enumerator-THPMZPHQ.js} +2 -2
- package/dist/cli/chunks/{browser-R4DMU3LN.js → browser-O6JJOZCK.js} +2 -2
- package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +2 -0
- package/dist/cli/chunks/{chunk-VU5TBX2V.js → chunk-2HPNGK7A.js} +2 -2
- package/dist/cli/chunks/{chunk-5FKWCZNF.js → chunk-2IJO3657.js} +2 -2
- package/dist/cli/chunks/{chunk-K3TLLJMX.js → chunk-2QLE6NDW.js} +1 -1
- package/dist/cli/chunks/{chunk-J2ZIFFM6.js → chunk-2UZBLC5H.js} +2 -2
- package/dist/cli/chunks/{chunk-HD7YIFOI.js → chunk-2W5MQDHM.js} +2 -2
- package/dist/cli/chunks/{chunk-F3YS57NF.js → chunk-3FITMWWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K4CZA77U.js → chunk-3TF27MG5.js} +2 -2
- package/dist/cli/chunks/{chunk-BLSLEVDI.js → chunk-3XACRXBY.js} +2 -2
- package/dist/cli/chunks/{chunk-A64JFBWI.js → chunk-43XHGWYH.js} +2 -2
- package/dist/cli/chunks/{chunk-42J34YG4.js → chunk-4RPBODN5.js} +2 -2
- package/dist/cli/chunks/{chunk-W26B7ERY.js → chunk-4T7XV5KQ.js} +1 -1
- package/dist/cli/chunks/{chunk-SSU73QAX.js → chunk-4WLIOPHX.js} +2 -2
- package/dist/cli/chunks/{chunk-P7A4NKTZ.js → chunk-52KOPIMI.js} +2 -2
- package/dist/cli/chunks/{chunk-HQZGPJYG.js → chunk-56NSE3LJ.js} +2 -2
- package/dist/cli/chunks/{chunk-AQSVJNEH.js → chunk-57DRT6UA.js} +2 -2
- package/dist/cli/chunks/{chunk-M6AAGIG7.js → chunk-57FX3GP6.js} +1 -1
- package/dist/cli/chunks/{chunk-O6FGXMHD.js → chunk-5PLBQZ5J.js} +1 -1
- package/dist/cli/chunks/{chunk-ASQYASNV.js → chunk-5Y7UFHJD.js} +1 -1
- package/dist/cli/chunks/{chunk-5VMAV6T6.js → chunk-5Z4MO2F3.js} +1 -1
- package/dist/cli/chunks/chunk-65EE2EST.js +8 -0
- package/dist/cli/chunks/{chunk-7CMTY45A.js → chunk-6NIGSY5L.js} +2 -2
- package/dist/cli/chunks/chunk-6O63ZTVX.js +3 -0
- package/dist/cli/chunks/{chunk-FZ76G4QJ.js → chunk-6OI5SK7M.js} +1 -1
- package/dist/cli/chunks/{chunk-5ZGM3RMH.js → chunk-6P4Q4RTC.js} +1 -1
- package/dist/cli/chunks/{chunk-LUZNKJE6.js → chunk-7724KXM2.js} +3 -3
- package/dist/cli/chunks/{chunk-XPRVF4YE.js → chunk-7MISCSL5.js} +2 -2
- package/dist/cli/chunks/{chunk-TCBBNUBP.js → chunk-7MUO4DEH.js} +3 -3
- package/dist/cli/chunks/{chunk-NT4DBXSX.js → chunk-7QUSNBAA.js} +2 -2
- package/dist/cli/chunks/{chunk-TWDW32W2.js → chunk-7SQTLUEN.js} +2 -2
- package/dist/cli/chunks/{chunk-QPNG5ZN2.js → chunk-7T6L3LFN.js} +2 -2
- package/dist/cli/chunks/{chunk-E56B6IDX.js → chunk-7TH4PJSU.js} +2 -2
- package/dist/cli/chunks/{chunk-LZYQHVD4.js → chunk-7Y3LXH57.js} +2 -2
- package/dist/cli/chunks/{chunk-YQFLQE53.js → chunk-A2T56XVL.js} +2 -2
- package/dist/cli/chunks/{chunk-KV4T4MXK.js → chunk-AJVLVF7V.js} +2 -2
- package/dist/cli/chunks/{chunk-VTDFVFST.js → chunk-ARRBXCII.js} +2 -2
- package/dist/cli/chunks/{chunk-G6WDYBLQ.js → chunk-AYLEH2UF.js} +1 -1
- package/dist/cli/chunks/{chunk-526QYFJU.js → chunk-BBYJBZHG.js} +2 -2
- package/dist/cli/chunks/{chunk-CM4LSLKR.js → chunk-BM3EJLMV.js} +2 -2
- package/dist/cli/chunks/{chunk-DVGRPK7A.js → chunk-BNG4J3CE.js} +2 -2
- package/dist/cli/chunks/{chunk-BK577VL7.js → chunk-BPDAQB3F.js} +2 -2
- package/dist/cli/chunks/{chunk-C6JTLKG7.js → chunk-BQJ7CV53.js} +9 -9
- package/dist/cli/chunks/{chunk-GB6HBNH2.js → chunk-C3OIBFAA.js} +2 -2
- package/dist/cli/chunks/{chunk-RF7HWBHN.js → chunk-CAZM63TP.js} +2 -2
- package/dist/cli/chunks/{chunk-KWYH3FI4.js → chunk-CIINJHOX.js} +1 -1
- package/dist/cli/chunks/{chunk-ARJW4I2O.js → chunk-CPPYZYXC.js} +2 -2
- package/dist/cli/chunks/{chunk-CRWPZT74.js → chunk-D3ZZ2NLL.js} +2 -2
- package/dist/cli/chunks/{chunk-Q3UDLV5Z.js → chunk-D5GB5PUU.js} +1 -1
- package/dist/cli/chunks/{chunk-7PLIEBY7.js → chunk-DLTB5KCR.js} +2 -2
- package/dist/cli/chunks/{chunk-YZWBNBTW.js → chunk-DRLSJJIC.js} +2 -2
- package/dist/cli/chunks/{chunk-BEGR4D6N.js → chunk-DSQESXL4.js} +2 -2
- package/dist/cli/chunks/{chunk-72ASBE35.js → chunk-E2JLAW3U.js} +3 -3
- package/dist/cli/chunks/{chunk-MAMQA43L.js → chunk-E3QIQMMN.js} +1 -1
- package/dist/cli/chunks/{chunk-WOCGL4QP.js → chunk-E7OR6V3V.js} +2 -2
- package/dist/cli/chunks/{chunk-MVVB7C2E.js → chunk-E7QTWGPI.js} +156 -156
- package/dist/cli/chunks/{chunk-JQGMW45H.js → chunk-EC65UZ77.js} +1 -1
- package/dist/cli/chunks/{chunk-YXRASAPI.js → chunk-EIEEST4T.js} +2 -2
- package/dist/cli/chunks/{chunk-AL6FBH3E.js → chunk-FHPNWHY7.js} +2 -2
- package/dist/cli/chunks/{chunk-C7JM7CD3.js → chunk-FJOIBZUB.js} +2 -2
- package/dist/cli/chunks/{chunk-LL7LDPXS.js → chunk-FTYRPEJS.js} +1 -1
- package/dist/cli/chunks/{chunk-MFW5HSG4.js → chunk-G7HGUQAE.js} +2 -2
- package/dist/cli/chunks/{chunk-WQL7WCIZ.js → chunk-GY4P7KAI.js} +1 -1
- package/dist/cli/chunks/{chunk-3YNLWPBF.js → chunk-H3C5FJRH.js} +2 -2
- package/dist/cli/chunks/{chunk-W3INMZZ6.js → chunk-H4LYXLAT.js} +1 -1
- package/dist/cli/chunks/{chunk-W3PPFHI5.js → chunk-HAYKLXCT.js} +52 -50
- package/dist/cli/chunks/{chunk-XNBOGCF3.js → chunk-HEDGFKC5.js} +2 -2
- package/dist/cli/chunks/{chunk-SYV2V3PL.js → chunk-HHBF2BZC.js} +4 -4
- package/dist/cli/chunks/{chunk-75RDHBAX.js → chunk-HSDWPQQY.js} +3 -3
- package/dist/cli/chunks/{chunk-6KATY3KS.js → chunk-HTVGHHX2.js} +2 -2
- package/dist/cli/chunks/{chunk-VRVMIPTM.js → chunk-HV43NX4A.js} +2 -2
- package/dist/cli/chunks/{chunk-RFNW2LGD.js → chunk-IDBA5GK2.js} +2 -2
- package/dist/cli/chunks/{chunk-DNDL7SOS.js → chunk-INGXD5IX.js} +2 -2
- package/dist/cli/chunks/{chunk-IJUHSJ2U.js → chunk-IQRPR4KB.js} +2 -2
- package/dist/cli/chunks/{chunk-UOC3O6RP.js → chunk-IRPNEXOU.js} +2 -2
- package/dist/cli/chunks/{chunk-KDVZND5Q.js → chunk-J35JWDJE.js} +1 -1
- package/dist/cli/chunks/{chunk-CV77DMDQ.js → chunk-J6ASX536.js} +2 -2
- package/dist/cli/chunks/{chunk-7YTGHGK4.js → chunk-JAOCHPYX.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NXFXH.js → chunk-JB7R77SH.js} +2 -2
- package/dist/cli/chunks/{chunk-PB6J6HAA.js → chunk-JI67T6Q2.js} +2 -2
- package/dist/cli/chunks/{chunk-E7CLYGS7.js → chunk-JJHLGGPP.js} +1 -1
- package/dist/cli/chunks/{chunk-3Y7TJFHU.js → chunk-JK6PMLQQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CCMKSHAT.js → chunk-JO26SG47.js} +2 -2
- package/dist/cli/chunks/{chunk-NU3W5WFT.js → chunk-JSSU4RIK.js} +2 -2
- package/dist/cli/chunks/{chunk-756CGMEH.js → chunk-K2SMP4OD.js} +1 -1
- package/dist/cli/chunks/{chunk-OCAEXYFA.js → chunk-K7GFYFBO.js} +2 -2
- package/dist/cli/chunks/{chunk-VRHRBAEM.js → chunk-K7RT6ITZ.js} +1 -1
- package/dist/cli/chunks/{chunk-LFJALJOA.js → chunk-KJ5A54ZH.js} +2 -2
- package/dist/cli/chunks/{chunk-3Y2ROSCL.js → chunk-L5VSLPMW.js} +2 -2
- package/dist/cli/chunks/{chunk-WKGTGOYS.js → chunk-L752CNG3.js} +3 -3
- package/dist/cli/chunks/{chunk-IC3TQEOA.js → chunk-L7PC675Y.js} +1 -1
- package/dist/cli/chunks/{chunk-TOQWL2ZF.js → chunk-LTGQJYYO.js} +2 -2
- package/dist/cli/chunks/{chunk-SVLQRAMF.js → chunk-M2TG7VDK.js} +1 -1
- package/dist/cli/chunks/{chunk-X7N2JF2X.js → chunk-M5JEA6ZY.js} +2 -2
- package/dist/cli/chunks/{chunk-GHM6MQNK.js → chunk-MB4UKUBV.js} +2 -2
- package/dist/cli/chunks/{chunk-R7SYRCRP.js → chunk-MKYOE7NE.js} +1 -1
- package/dist/cli/chunks/{chunk-3AN5TNGD.js → chunk-MQXWG55U.js} +3 -3
- package/dist/cli/chunks/{chunk-3QZEGE67.js → chunk-MR2OPUSA.js} +1 -1
- package/dist/cli/chunks/{chunk-6Z7PRBSG.js → chunk-N736GLWZ.js} +2 -2
- package/dist/cli/chunks/{chunk-PIDQVU3L.js → chunk-NHEG2DLN.js} +2 -2
- package/dist/cli/chunks/chunk-NKOLILT7.js +86 -0
- package/dist/cli/chunks/{chunk-UXZSUMEA.js → chunk-NPCXGX7N.js} +2 -2
- package/dist/cli/chunks/{chunk-XEAEYC6Y.js → chunk-NZQYJCO6.js} +1 -1
- package/dist/cli/chunks/{chunk-G77ERMUD.js → chunk-O2AAYJUV.js} +1 -1
- package/dist/cli/chunks/{chunk-H4GG2NLO.js → chunk-O32BFQV4.js} +2 -2
- package/dist/cli/chunks/{chunk-3LJ7LQMV.js → chunk-O3ERGUXH.js} +1 -1
- package/dist/cli/chunks/{chunk-QDEJ4CI2.js → chunk-O5CEL447.js} +2 -2
- package/dist/cli/chunks/{chunk-W2QWSQVE.js → chunk-O756AOUX.js} +2 -2
- package/dist/cli/chunks/{chunk-PSFSPGUD.js → chunk-OCN53CCK.js} +2 -2
- package/dist/cli/chunks/{chunk-KCW47QR5.js → chunk-OGEIHS76.js} +1 -1
- package/dist/cli/chunks/{chunk-3RZV5DGO.js → chunk-OLUOVNUF.js} +2 -2
- package/dist/cli/chunks/{chunk-KADFXPPN.js → chunk-P2TPH3TC.js} +2 -2
- package/dist/cli/chunks/{chunk-7NA7JXNB.js → chunk-PCQZIAXB.js} +2 -2
- package/dist/cli/chunks/{chunk-HOAJUIBQ.js → chunk-PGN4TARY.js} +2 -2
- package/dist/cli/chunks/{chunk-KB56CPU4.js → chunk-PNRPVQGI.js} +2 -2
- package/dist/cli/chunks/{chunk-CE7B5LU7.js → chunk-PWQWKYBG.js} +1 -1
- package/dist/cli/chunks/{chunk-DLD7RUZ4.js → chunk-QNQE3EOH.js} +2 -2
- package/dist/cli/chunks/chunk-QP2HLKTS.js +2 -0
- package/dist/cli/chunks/{chunk-H4H2YSFH.js → chunk-QP6GL3O5.js} +1 -1
- package/dist/cli/chunks/{chunk-LWR3FV3Y.js → chunk-QUZ745UQ.js} +2 -2
- package/dist/cli/chunks/{chunk-X2Z7F4EU.js → chunk-R5RRWLRI.js} +2 -2
- package/dist/cli/chunks/{chunk-NURIILUB.js → chunk-RE6JTSDM.js} +1 -1
- package/dist/cli/chunks/{chunk-YSZ5OE3Z.js → chunk-TOJF3ZG4.js} +2 -2
- package/dist/cli/chunks/{chunk-7JUC2MVZ.js → chunk-TSP6SU5V.js} +2 -2
- package/dist/cli/chunks/{chunk-NW7IBHJA.js → chunk-TW6Z6W4X.js} +4 -4
- package/dist/cli/chunks/{chunk-UDQSYWVF.js → chunk-TWOV3I3A.js} +1 -1
- package/dist/cli/chunks/chunk-U4TML2VD.js +3 -0
- package/dist/cli/chunks/{chunk-WO274FRI.js → chunk-U6IOQKCT.js} +2 -2
- package/dist/cli/chunks/{chunk-KDNJ4F3P.js → chunk-UDSB3XCG.js} +2 -2
- package/dist/cli/chunks/{chunk-SG3NX7QE.js → chunk-UFP7SN5V.js} +2 -2
- package/dist/cli/chunks/{chunk-UTRV7T2N.js → chunk-UMHFTQTR.js} +2 -2
- package/dist/cli/chunks/{chunk-4OVC4RIL.js → chunk-UNYTHZDZ.js} +1 -1
- package/dist/cli/chunks/{chunk-32ZMWEP3.js → chunk-UPWLMIDY.js} +2 -2
- package/dist/cli/chunks/{chunk-T3PGQFDI.js → chunk-USAKCGHC.js} +2 -2
- package/dist/cli/chunks/{chunk-2G7TVT6W.js → chunk-V3MGY76S.js} +2 -2
- package/dist/cli/chunks/{chunk-ZAKQLAHT.js → chunk-V6SE2ZU2.js} +1 -1
- package/dist/cli/chunks/{chunk-SE4VNN4I.js → chunk-VCVRZD4Y.js} +3 -3
- package/dist/cli/chunks/{chunk-PHP5UBT4.js → chunk-VG32EEUG.js} +2 -2
- package/dist/cli/chunks/{chunk-YZEXYO4W.js → chunk-VGZOPQQY.js} +1 -1
- package/dist/cli/chunks/{chunk-OFACHK5O.js → chunk-VJBJRFUO.js} +2 -2
- package/dist/cli/chunks/{chunk-NZ3GUMB2.js → chunk-WBC6WB32.js} +2 -2
- package/dist/cli/chunks/{chunk-GHY6Z6KO.js → chunk-WCM6WE7G.js} +3 -3
- package/dist/cli/chunks/{chunk-NZD4DPSU.js → chunk-WCPSR4MJ.js} +2 -2
- package/dist/cli/chunks/{chunk-I3C7JOXC.js → chunk-WKI46WWN.js} +2 -2
- package/dist/cli/chunks/{chunk-5K26BEYB.js → chunk-WM2QRIRD.js} +2 -2
- package/dist/cli/chunks/{chunk-U2FUXDDJ.js → chunk-WRC3HLUY.js} +3 -3
- package/dist/cli/chunks/{chunk-GII6UM3F.js → chunk-WUGXXNK4.js} +1 -1
- package/dist/cli/chunks/{chunk-JGZ722G3.js → chunk-WZQADC5R.js} +2 -2
- package/dist/cli/chunks/{chunk-GU5HNCWI.js → chunk-X6NJOT3V.js} +1 -1
- package/dist/cli/chunks/{chunk-DFUASIKA.js → chunk-X6Q2N5S5.js} +2 -2
- package/dist/cli/chunks/{chunk-G2Q66Z23.js → chunk-X7CUI7KH.js} +2 -2
- package/dist/cli/chunks/{chunk-5MDERQH3.js → chunk-XMCSKYDE.js} +1 -1
- package/dist/cli/chunks/{chunk-VTOBUZL6.js → chunk-XN3KCKAM.js} +2 -2
- package/dist/cli/chunks/{chunk-KUAKV3IW.js → chunk-XSPMLJCQ.js} +1 -1
- package/dist/cli/chunks/{chunk-YBQH2VOP.js → chunk-XTZGAG6P.js} +2 -2
- package/dist/cli/chunks/{chunk-MGZ5FJUW.js → chunk-YE54T2NQ.js} +2 -2
- package/dist/cli/chunks/{chunk-BTVEYBW2.js → chunk-YEFTK4HD.js} +2 -2
- package/dist/cli/chunks/{chunk-CT6SAVXQ.js → chunk-YGC5QKQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-TWJTK4CC.js → chunk-YGOSSVY5.js} +2 -2
- package/dist/cli/chunks/chunk-YKQWIXUY.js +2 -0
- package/dist/cli/chunks/{chunk-TSQC2KKZ.js → chunk-Z2S7DNFP.js} +2 -2
- package/dist/cli/chunks/{chunk-JRRXCODW.js → chunk-Z54G2YOL.js} +2 -2
- package/dist/cli/chunks/{chunk-EXGMJFAT.js → chunk-ZJGFQK27.js} +1 -1
- package/dist/cli/chunks/{chunk-WNQS4WTS.js → chunk-ZUE524JL.js} +2 -2
- package/dist/cli/chunks/{ci-ENOASTYB.js → ci-UMA2SMNW.js} +2 -2
- package/dist/cli/chunks/{ci-config-B26OXHQM.js → ci-config-UQSILJFQ.js} +2 -2
- package/dist/cli/chunks/{ci-output-JTCLLNOQ.js → ci-output-U6YZLLKH.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-23JMFNM5.js → circuit-breaker-ATYQP6X2.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-ON6L462G.js → claude-flow-setup-6YHFD7AN.js} +2 -2
- package/dist/cli/chunks/client-E43GWLQH.js +2 -0
- package/dist/cli/chunks/{cline-installer-OWQ4D2FQ.js → cline-installer-EPE7IOZE.js} +2 -2
- package/dist/cli/chunks/{code-2ZRL7SEU.js → code-NUEJ4XYO.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-JXSQVM67.js → code-index-extractor-D4DBT6OL.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7LXZYBSQ.js → codex-installer-633SM4LR.js} +2 -2
- package/dist/cli/chunks/{completions-C2LR623C.js → completions-WUKVIW3L.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-TGQLHCYJ.js → complexity-analyzer-F73ACR5H.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-RUGD24D2.js → continuedev-installer-QH42TKMS.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-ZLFVLEJP.js → copilot-installer-Y3XC7BTT.js} +2 -2
- package/dist/cli/chunks/core-handlers-R5A3SQDY.js +2 -0
- package/dist/cli/chunks/{cost-tracker-RT4QL745.js → cost-tracker-57QPV7E3.js} +2 -2
- package/dist/cli/chunks/coverage-IBCHMBCR.js +51 -0
- package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +2 -0
- package/dist/cli/chunks/{cursor-installer-LJKLNFF6.js → cursor-installer-F4UYQHIN.js} +2 -2
- package/dist/cli/chunks/{daemon-FBH3IRYN.js → daemon-BYYPIJ7G.js} +4 -4
- package/dist/cli/chunks/{daemon-BMDXCQT5.js → daemon-XR4Q6YZF.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-JGDED55I.js → dag-attention-scheduler-ZR5ZD3TW.js} +2 -2
- package/dist/cli/chunks/{detect-SZIHIVCJ.js → detect-GEGYURLL.js} +2 -2
- package/dist/cli/chunks/{dist-node-FV3KWXQ6.js → dist-node-JU3KT2JO.js} +2 -2
- package/dist/cli/chunks/{domain-handler-GI5JWQOV.js → domain-handler-7QI3FJGE.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-BUWY36TL.js → domain-plugins-O2YRM2PD.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-GCY7W5DA.js → domain-transfer-7J3S2OS6.js} +2 -2
- package/dist/cli/chunks/dream-6C4NURSE.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-GPRR3ZGD.js → embed-and-insert-pattern-URES5Q6J.js} +2 -2
- package/dist/cli/chunks/{eval-XPB3IGAP.js → eval-RVMCIUOR.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2E554UB3.js → experience-capture-middleware-SYJQSBKE.js} +3 -3
- package/dist/cli/chunks/{fast-paths-ZSMWZPUC.js → fast-paths-QUKPKWKZ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-N7EOGE5P.js → feature-flags-5JCSKL2P.js} +2 -2
- package/dist/cli/chunks/{feature-flags-GIWVDVVC.js → feature-flags-K7JXNKJI.js} +2 -2
- package/dist/cli/chunks/file-discovery-J5IE5KP7.js +2 -0
- package/dist/cli/chunks/{fleet-HCHDOUCX.js → fleet-II4Q6HXK.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-CZNCNXXZ.js → gnn-wrapper-M7VO2EMS.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-6YUIF2YQ.js → heartbeat-handler-ND5CY26N.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +2 -0
- package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-J3M3IK24.js → hnsw-legacy-bridge-N3AUUUU7.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-ULGTGDZW.js → hnswlib-node-NZY3E5EN.js} +2 -2
- package/dist/cli/chunks/{hooks-C4BUGYUQ.js → hooks-QVJDTII5.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-WINGVMPG.js → hypergraph-engine-ZRY6MTDV.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-GADMWKAU.js → hypergraph-handler-56DO4XZQ.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +2 -0
- package/dist/cli/chunks/{init-guard-K2T4QWAO.js → init-guard-DTF4EVUY.js} +2 -2
- package/dist/cli/chunks/{init-handler-PCZTDZYI.js → init-handler-M6CNQHMX.js} +6 -6
- package/dist/cli/chunks/init-wizard-RTLCRWDT.js +2 -0
- package/dist/cli/chunks/kernel-2OWIGGGT.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-XENXNEIU.js → kilocode-installer-IJN7XKBH.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-3PG2TJ67.js → kiro-installer-UKKPGPDC.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +2 -0
- package/dist/cli/chunks/learning-W2HETWQ4.js +131 -0
- package/dist/cli/chunks/{llm-router-RKVDEWU2.js → llm-router-Y546K4VX.js} +4 -4
- package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +2 -0
- package/dist/cli/chunks/{load-ITHC564X.js → load-MKAB2AXE.js} +2 -2
- package/dist/cli/chunks/load-test-D6QYNIVT.js +2 -0
- package/dist/cli/chunks/{mcp-TCL5UW3N.js → mcp-AZKUS6K3.js} +2 -2
- package/dist/cli/chunks/{memory-BKDAY2N2.js → memory-ZDOQN2KU.js} +5 -5
- package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +2 -0
- package/dist/cli/chunks/{memory-handlers-WN4FXFOA.js → memory-handlers-3SQVY7FE.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-VHAT7ZPF.js → multi-model-executor-WWVXDHG4.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-E3VM3EEY.js → opencode-installer-YUJNXXWS.js} +2 -2
- package/dist/cli/chunks/{orchestrator-BMQ6X762.js → orchestrator-Z6PWPLRE.js} +109 -25
- package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-GOOR2BV5.js → pattern-usage-recorder-TPWPX32U.js} +2 -2
- package/dist/cli/chunks/{pipeline-5NSFQQIX.js → pipeline-4BBGTE4M.js} +2 -2
- package/dist/cli/chunks/{platform-SQM34J5G.js → platform-5GSHXCV5.js} +2 -2
- package/dist/cli/chunks/{plugin-UQJZRMZG.js → plugin-OFDVF5HS.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-WMDJOL4S.js → prime-radiant-advanced-wasm-NC6MUYGJ.js} +2 -2
- package/dist/cli/chunks/project-root-DDGBWDP6.js +2 -0
- package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +2 -0
- package/dist/cli/chunks/{protocol-handler-OBDCVY6X.js → protocol-handler-MPOAAEPA.js} +2 -2
- package/dist/cli/chunks/{prove-XDC7I4XT.js → prove-CDKMAIVM.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +2 -0
- package/dist/cli/chunks/{quality-L4GQ6WX4.js → quality-ZH4F7R7R.js} +2 -2
- package/dist/cli/chunks/{quality-gate-MJG66LKN.js → quality-gate-IDRMW6OE.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +2 -0
- package/dist/cli/chunks/{real-embeddings-HW4G2LWL.js → real-embeddings-I2UVNNB3.js} +2 -2
- package/dist/cli/chunks/{ref-validation-FC7JOJ2C.js → ref-validation-Z5GCGVXK.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-KWS4CEIC.js → roocode-installer-IZ2S7PH2.js} +2 -2
- package/dist/cli/chunks/router-FT5WJPUH.js +2 -0
- package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +2 -0
- package/dist/cli/chunks/{routing-handler-QF4WVB2S.js → routing-handler-NAX35VUW.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-2MTCOUK6.js → ruvector-commands-5YW2SOFF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-BREJCXWN.js → rvf-migration-coordinator-VUIZHTVG.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-KKC6HOJD.js → rvf-store-integrity-IPGCAT6C.js} +2 -2
- package/dist/cli/chunks/safe-db-TDZKUOZJ.js +2 -0
- package/dist/cli/chunks/schedule-CRKTRY2A.js +2 -0
- package/dist/cli/chunks/scheduler-6ZBDVQWN.js +2 -0
- package/dist/cli/chunks/{security-OSAE7VAP.js → security-3IH4BO5Z.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-COUOS665.js → shared-rvf-adapter-ABY7PAY2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-YXMPZKQE.js → shared-rvf-dual-writer-6KENLN2W.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +2 -0
- package/dist/cli/chunks/{standalone-memory-E6JBMOIL.js → standalone-memory-RLFAUGOW.js} +2 -2
- package/dist/cli/chunks/{status-handler-AFTCIYIX.js → status-handler-FCOZBPE5.js} +2 -2
- package/dist/cli/chunks/{structural-health-2FROCEI4.js → structural-health-4RDA5UUM.js} +2 -2
- package/dist/cli/chunks/{sync-VAYTOWDC.js → sync-54LUAUTK.js} +2 -2
- package/dist/cli/chunks/{sync-YIQYOFGW.js → sync-KGEEXXCC.js} +2 -2
- package/dist/cli/chunks/{task-handler-KVQHDEX3.js → task-handler-K3OXHYKU.js} +2 -2
- package/dist/cli/chunks/{task-handlers-MVVECQA6.js → task-handlers-6H7L2UT4.js} +3 -3
- package/dist/cli/chunks/{test-5JSVTOMY.js → test-S7IG6EIX.js} +4 -4
- package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +2 -0
- package/dist/cli/chunks/{test-scheduling-HBOHVLI3.js → test-scheduling-7XYXI4L2.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-5VEPTPFA.js → token-bootstrap-3QMABE45.js} +2 -2
- package/dist/cli/chunks/{token-usage-TBJHDLY6.js → token-usage-Y2YTPOFE.js} +2 -2
- package/dist/cli/chunks/{transformers-VAWYMHMZ.js → transformers-UCJ3HHHC.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +2 -0
- package/dist/cli/chunks/{types-R5SDZU2E.js → types-6CMFPETH.js} +2 -2
- package/dist/cli/chunks/unified-memory-QARWQKJ2.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +2 -0
- package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +2 -0
- package/dist/cli/chunks/{upgrade-K5PIHXRB.js → upgrade-K25DN6WU.js} +2 -2
- package/dist/cli/chunks/{validate-RPTS7RYJ.js → validate-T4V3TBY3.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-B2ZL556X.js → validate-swarm-XSRC576T.js} +2 -2
- package/dist/cli/chunks/visual-security-O4ALMCXQ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-K4DUJC32.js → web-tree-sitter-YOZXHRTN.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-OK2AJN35.js → windsurf-installer-ITPU2IYL.js} +2 -2
- package/dist/cli/chunks/witness-chain-B3YW5NMS.js +2 -0
- package/dist/cli/chunks/witness-chain-PIYR72HJ.js +2 -0
- package/dist/cli/chunks/{witness-chain-repair-L6Y5RFXR.js → witness-chain-repair-YUG7E3UX.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-N4CW7FZX.js → witness-chain-verifier-DTDSVKOG.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-TDNPS3WD.js → witness-key-manager-EWACWGAW.js} +2 -2
- package/dist/cli/chunks/{workflow-XRZA3YCY.js → workflow-ZIQ4FV42.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +2 -0
- package/dist/cli/chunks/{wrappers-5JIFWKN6.js → wrappers-PW2O27LL.js} +2 -2
- package/dist/cli/commands/coverage.js +6 -0
- package/dist/cli/commands/learning-prune.d.ts +14 -0
- package/dist/cli/commands/learning-prune.js +105 -0
- package/dist/cli/commands/learning.js +9 -0
- package/dist/cli/handlers/brain-handler.js +12 -1
- package/dist/cli/utils/coverage-verdict.js +14 -3
- package/dist/context/compaction/index.d.ts +7 -0
- package/dist/context/compaction/index.js +30 -6
- package/dist/coordination/handlers/coverage-evidence.d.ts +19 -0
- package/dist/coordination/handlers/coverage-evidence.js +31 -2
- package/dist/coordination/handlers/coverage-handlers.js +5 -1
- package/dist/coordination/handlers/coverage-target.js +8 -1
- package/dist/coordination/handlers/quality-handlers.js +9 -1
- package/dist/coordination/result-saver-adapters.js +1 -0
- package/dist/coordination/result-saver.js +9 -5
- package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +1 -0
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +23 -45
- package/dist/domains/coverage-analysis/collected-metrics.d.ts +22 -6
- package/dist/domains/coverage-analysis/collected-metrics.js +37 -12
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +3 -6
- package/dist/domains/quality-assessment/coverage-report-event.d.ts +8 -0
- package/dist/domains/quality-assessment/coverage-report-event.js +22 -1
- package/dist/domains/quality-assessment/interfaces.d.ts +6 -0
- package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +4 -0
- package/dist/domains/quality-assessment/services/quality-analyzer.js +63 -17
- package/dist/domains/test-execution/interfaces.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.js +6 -0
- package/dist/init/phases/07-hooks.js +90 -6
- package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +25 -0
- package/dist/integrations/ruvector/brain-rvf-exporter.js +154 -61
- package/dist/learning/dream/dream-engine.d.ts +24 -1
- package/dist/learning/dream/dream-engine.js +57 -6
- package/dist/learning/learning-retention.d.ts +103 -0
- package/dist/learning/learning-retention.js +213 -0
- package/dist/mcp/bundle.js +494 -489
- package/dist/mcp/handlers/domain-handler-configs.d.ts +9 -1
- package/dist/mcp/handlers/domain-handler-configs.js +24 -14
- package/dist/mcp/protocol-server.js +1 -1
- package/dist/mcp/tools/chaos-resilience/inject.d.ts +3 -4
- package/dist/mcp/tools/chaos-resilience/inject.js +11 -81
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -0
- package/dist/mcp/tools/learning-optimization/dream.js +4 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-KCQDVYY2.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-SAQOHSGN.js +0 -2
- package/dist/cli/chunks/base-WCACU3FN.js +0 -2
- package/dist/cli/chunks/brain-handler-GTQNHHZS.js +0 -94
- package/dist/cli/chunks/browser-workflow-G6IASEAP.js +0 -2
- package/dist/cli/chunks/chunk-K65CGKLD.js +0 -8
- package/dist/cli/chunks/chunk-MB46UBGY.js +0 -3
- package/dist/cli/chunks/chunk-N4CYAKOX.js +0 -79
- package/dist/cli/chunks/chunk-PT4FMJPQ.js +0 -3
- package/dist/cli/chunks/chunk-S5AZCIZS.js +0 -2
- package/dist/cli/chunks/chunk-UT2VZ33P.js +0 -2
- package/dist/cli/chunks/client-TV3V2YZ5.js +0 -2
- package/dist/cli/chunks/core-handlers-PZT4OLWR.js +0 -2
- package/dist/cli/chunks/coverage-NV3C4IMM.js +0 -50
- package/dist/cli/chunks/cross-domain-router-QOFCZ7G4.js +0 -2
- package/dist/cli/chunks/dream-TRFBGDSQ.js +0 -2
- package/dist/cli/chunks/file-discovery-WCKGMSPZ.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-P44A2OX3.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-ZJQIQJKC.js +0 -2
- package/dist/cli/chunks/hnsw-index-HMG2GH3Z.js +0 -2
- package/dist/cli/chunks/hybrid-backend-B7M74PZG.js +0 -2
- package/dist/cli/chunks/impact-analyzer-PZYOVKQO.js +0 -2
- package/dist/cli/chunks/init-wizard-TZDJQK3U.js +0 -2
- package/dist/cli/chunks/kernel-Y6RRIOKW.js +0 -2
- package/dist/cli/chunks/knowledge-graph-BVD5Z66M.js +0 -2
- package/dist/cli/chunks/learning-6KDH7FK4.js +0 -122
- package/dist/cli/chunks/llm-router-service-KHCAMSUU.js +0 -2
- package/dist/cli/chunks/load-test-RUF7DZA5.js +0 -2
- package/dist/cli/chunks/memory-backend-7ZLFOVGG.js +0 -2
- package/dist/cli/chunks/pattern-null-store-RY6CVYHP.js +0 -2
- package/dist/cli/chunks/project-root-IO5KRNGL.js +0 -2
- package/dist/cli/chunks/protocol-executor-U2CUDWDE.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-DQSSX2IP.js +0 -2
- package/dist/cli/chunks/queen-coordinator-6FN4BZIX.js +0 -2
- package/dist/cli/chunks/router-YUO3I7RU.js +0 -2
- package/dist/cli/chunks/routing-feedback-36SLQGJE.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-FRYZH3WZ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-XXNITL5I.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-D2WWKJIV.js +0 -2
- package/dist/cli/chunks/safe-db-4RRIGRXD.js +0 -2
- package/dist/cli/chunks/schedule-25RTO4DQ.js +0 -2
- package/dist/cli/chunks/scheduler-BPIOJZ5P.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-EDF47DDX.js +0 -2
- package/dist/cli/chunks/test-runner-process-LEPF2OSS.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TSZTCMFV.js +0 -2
- package/dist/cli/chunks/unified-memory-TLGSSLMI.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-MSUR7ZOO.js +0 -2
- package/dist/cli/chunks/unified-persistence-VFFOTWK7.js +0 -2
- package/dist/cli/chunks/visual-security-6Q44XNLB.js +0 -2
- package/dist/cli/chunks/witness-chain-KDOMXDQX.js +0 -2
- package/dist/cli/chunks/witness-chain-N3OY2RMH.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-CVNNT2RJ.js +0 -2
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learning Retention (#1239)
|
|
3
|
+
*
|
|
4
|
+
* Bounds the learning tables that otherwise grow for as long as a project
|
|
5
|
+
* lives. Two kinds of step, kept apart on purpose:
|
|
6
|
+
*
|
|
7
|
+
* - Dream retention steps remove only rows that carry no learning value.
|
|
8
|
+
* They are off by default. With `AQE_DREAM_RETENTION=on` they run after
|
|
9
|
+
* each committed dream cycle; while off, the dream reports what they
|
|
10
|
+
* would remove (COUNT queries only, nothing is written):
|
|
11
|
+
* - failed/interrupted `dream_cycles` past a retention window. A cycle
|
|
12
|
+
* that did not commit wrote no insights, and any cycle that still has
|
|
13
|
+
* an insight is kept.
|
|
14
|
+
* - `outcome` concept nodes beyond a cap, with their edges. They are
|
|
15
|
+
* derived from `qe_pattern_usage`, which is not touched, and only the
|
|
16
|
+
* newest 100 usage rows are ever loaded back, so a cap >= 100 does not
|
|
17
|
+
* churn.
|
|
18
|
+
*
|
|
19
|
+
* - Opt-in steps drop data that could still matter to someone, so they run
|
|
20
|
+
* only from `aqe learning prune`, which defaults to a dry run:
|
|
21
|
+
* - compacting soft-archived and merged experiences: `result_json` and the
|
|
22
|
+
* embedding are cleared, the row and its counters stay (the experience
|
|
23
|
+
* count stays monotonic, v3.9.22).
|
|
24
|
+
* - `routing_outcomes` older than a number of days.
|
|
25
|
+
*
|
|
26
|
+
* Every step reports the row counts it measured before and after, or, in a
|
|
27
|
+
* dry run, the counts it would change.
|
|
28
|
+
*/
|
|
29
|
+
export const DEFAULT_FAILED_DREAM_CYCLE_RETENTION_DAYS = 7;
|
|
30
|
+
export const DEFAULT_OUTCOME_CONCEPT_CAP = 2000;
|
|
31
|
+
/** Below this the cap would delete outcome nodes that the next dream reloads. */
|
|
32
|
+
export const MIN_OUTCOME_CONCEPT_CAP = 100;
|
|
33
|
+
function tableExists(db, table) {
|
|
34
|
+
return !!db.prepare(`SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?`).get(table);
|
|
35
|
+
}
|
|
36
|
+
function count(db, sql, ...params) {
|
|
37
|
+
return db.prepare(sql).get(...params).n;
|
|
38
|
+
}
|
|
39
|
+
function rowCount(db, table) {
|
|
40
|
+
return count(db, `SELECT COUNT(*) AS n FROM ${table}`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Measure, then apply, in one transaction, reading the table counts around
|
|
44
|
+
* it. A real run is IMMEDIATE (waits on busy_timeout instead of failing on
|
|
45
|
+
* lock upgrade); a dry run only reads.
|
|
46
|
+
*/
|
|
47
|
+
function runStep(db, step, tables, dryRun, measure, apply) {
|
|
48
|
+
if (!tables.every(t => tableExists(db, t))) {
|
|
49
|
+
return { step, dryRun, affected: 0, tables: [] };
|
|
50
|
+
}
|
|
51
|
+
const run = db.transaction(() => {
|
|
52
|
+
const before = tables.map(t => rowCount(db, t));
|
|
53
|
+
const { affected, deletes, payloadBytes } = measure();
|
|
54
|
+
if (!dryRun && affected > 0)
|
|
55
|
+
apply();
|
|
56
|
+
const after = dryRun
|
|
57
|
+
? tables.map((t, i) => before[i] - (deletes[t] ?? 0))
|
|
58
|
+
: tables.map(t => rowCount(db, t));
|
|
59
|
+
return {
|
|
60
|
+
step,
|
|
61
|
+
dryRun,
|
|
62
|
+
affected,
|
|
63
|
+
tables: tables.map((table, i) => ({ table, before: before[i], after: after[i] })),
|
|
64
|
+
...(payloadBytes !== undefined ? { payloadBytes } : {}),
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
return dryRun ? run() : run.immediate();
|
|
68
|
+
}
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Default steps
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
/** Failed or interrupted cycles older than `retentionDays` that have no insight. */
|
|
73
|
+
export function pruneFailedDreamCycles(db, options = {}) {
|
|
74
|
+
const retentionDays = options.retentionDays ?? DEFAULT_FAILED_DREAM_CYCLE_RETENTION_DAYS;
|
|
75
|
+
assertWholeNumber('retentionDays', retentionDays, 1);
|
|
76
|
+
// julianday() reads both the ISO strings the engine writes and SQLite's own
|
|
77
|
+
// datetime('now') format, which a plain string comparison would mix up.
|
|
78
|
+
const where = `status IN ('failed', 'interrupted')
|
|
79
|
+
AND julianday(COALESCE(end_time, start_time, created_at)) < julianday('now', ?)
|
|
80
|
+
AND NOT EXISTS (SELECT 1 FROM dream_insights i WHERE i.cycle_id = dream_cycles.id)`;
|
|
81
|
+
const window = `-${retentionDays} days`;
|
|
82
|
+
return runStep(db, 'failed-dream-cycles', ['dream_cycles', 'dream_insights'], options.dryRun ?? false, () => {
|
|
83
|
+
const n = count(db, `SELECT COUNT(*) AS n FROM dream_cycles WHERE ${where}`, window);
|
|
84
|
+
return { affected: n, deletes: { dream_cycles: n } };
|
|
85
|
+
}, () => { db.prepare(`DELETE FROM dream_cycles WHERE ${where}`).run(window); });
|
|
86
|
+
}
|
|
87
|
+
/** Keep the newest `maxNodes` outcome concept nodes; delete the rest and their edges. */
|
|
88
|
+
export function capOutcomeConcepts(db, options = {}) {
|
|
89
|
+
const maxNodes = options.maxNodes ?? DEFAULT_OUTCOME_CONCEPT_CAP;
|
|
90
|
+
assertWholeNumber('maxNodes', maxNodes, MIN_OUTCOME_CONCEPT_CAP);
|
|
91
|
+
const doomed = `SELECT id FROM concept_nodes WHERE concept_type = 'outcome'
|
|
92
|
+
ORDER BY created_at DESC, id DESC LIMIT -1 OFFSET ?`;
|
|
93
|
+
return runStep(db, 'outcome-concepts', ['concept_nodes', 'concept_edges'], options.dryRun ?? false, () => {
|
|
94
|
+
const nodes = count(db, `SELECT COUNT(*) AS n FROM (${doomed})`, maxNodes);
|
|
95
|
+
const edges = count(db, `SELECT COUNT(*) AS n FROM concept_edges WHERE source IN (${doomed}) OR target IN (${doomed})`, maxNodes, maxNodes);
|
|
96
|
+
return { affected: nodes, deletes: { concept_nodes: nodes, concept_edges: edges } };
|
|
97
|
+
}, () => {
|
|
98
|
+
// Edges first and explicitly: the ON DELETE CASCADE only fires when the
|
|
99
|
+
// connection has foreign_keys on, which not every caller sets.
|
|
100
|
+
db.prepare(`DELETE FROM concept_edges WHERE source IN (${doomed}) OR target IN (${doomed})`)
|
|
101
|
+
.run(maxNodes, maxNodes);
|
|
102
|
+
db.prepare(`DELETE FROM concept_nodes WHERE id IN (${doomed})`).run(maxNodes);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Opt-in steps (aqe learning prune)
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
/** Soft-archived ('archived') and merged (survivor id) rows; 'contradicted' is left alone. */
|
|
109
|
+
const CONSOLIDATED = `consolidated_into IS NOT NULL AND consolidated_into <> 'contradicted'`;
|
|
110
|
+
const HAS_PAYLOAD = `(result_json IS NOT NULL OR embedding IS NOT NULL)`;
|
|
111
|
+
/** Clear `result_json` and the embedding of archived and merged experiences. */
|
|
112
|
+
export function compactConsolidatedExperiences(db, options = {}) {
|
|
113
|
+
const where = `${CONSOLIDATED} AND ${HAS_PAYLOAD}`;
|
|
114
|
+
return runStep(db, 'compact-experiences', ['captured_experiences'], options.dryRun ?? false, () => {
|
|
115
|
+
const row = db.prepare(`SELECT COUNT(*) AS n,
|
|
116
|
+
COALESCE(SUM(COALESCE(length(result_json), 0) + COALESCE(length(embedding), 0)), 0) AS bytes
|
|
117
|
+
FROM captured_experiences WHERE ${where}`).get();
|
|
118
|
+
return { affected: row.n, deletes: {}, payloadBytes: row.bytes };
|
|
119
|
+
}, () => {
|
|
120
|
+
db.prepare(`UPDATE captured_experiences
|
|
121
|
+
SET result_json = NULL, embedding = NULL, embedding_dimension = NULL
|
|
122
|
+
WHERE ${where}`).run();
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/** Delete routing outcomes older than `olderThanDays`. */
|
|
126
|
+
export function pruneRoutingOutcomes(db, options) {
|
|
127
|
+
assertWholeNumber('olderThanDays', options.olderThanDays, 1);
|
|
128
|
+
const where = `julianday(created_at) < julianday('now', ?)`;
|
|
129
|
+
const window = `-${options.olderThanDays} days`;
|
|
130
|
+
return runStep(db, 'routing-outcomes', ['routing_outcomes'], options.dryRun ?? false, () => {
|
|
131
|
+
const n = count(db, `SELECT COUNT(*) AS n FROM routing_outcomes WHERE ${where}`, window);
|
|
132
|
+
return { affected: n, deletes: { routing_outcomes: n } };
|
|
133
|
+
}, () => { db.prepare(`DELETE FROM routing_outcomes WHERE ${where}`).run(window); });
|
|
134
|
+
}
|
|
135
|
+
const OFF_VALUES = new Set(['off', 'false', 'no', '0']);
|
|
136
|
+
function parseSetting(name, raw, fallback, min, warnings) {
|
|
137
|
+
if (raw === undefined || raw.trim() === '')
|
|
138
|
+
return fallback;
|
|
139
|
+
const value = raw.trim().toLowerCase();
|
|
140
|
+
if (OFF_VALUES.has(value))
|
|
141
|
+
return null;
|
|
142
|
+
if (/^\d+$/.test(value) && Number(value) >= min)
|
|
143
|
+
return Number(value);
|
|
144
|
+
// These settings delete rows, so a value that cannot be read turns the step off.
|
|
145
|
+
warnings.push(`Invalid ${name}=${JSON.stringify(raw)}; expected a whole number >= ${min} or "off". ` +
|
|
146
|
+
'That retention step is off until this is fixed; nothing is deleted by it.');
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
const ON_VALUES = new Set(['on', 'true', 'yes', '1']);
|
|
150
|
+
/** Unset or "off" disables; "on" enables; anything else disables with a warning. */
|
|
151
|
+
function parseSwitch(name, raw, warnings) {
|
|
152
|
+
if (raw === undefined || raw.trim() === '')
|
|
153
|
+
return false;
|
|
154
|
+
const value = raw.trim().toLowerCase();
|
|
155
|
+
if (ON_VALUES.has(value))
|
|
156
|
+
return true;
|
|
157
|
+
if (!OFF_VALUES.has(value)) {
|
|
158
|
+
warnings.push(`Invalid ${name}=${JSON.stringify(raw)}; expected "on" or "off". ` +
|
|
159
|
+
'Dream retention stays off until this is fixed; nothing is deleted.');
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Read `AQE_DREAM_RETENTION` (off by default) and the per-step settings
|
|
165
|
+
* `AQE_FAILED_DREAM_CYCLE_RETENTION_DAYS` (default 7) and
|
|
166
|
+
* `AQE_OUTCOME_CONCEPT_CAP` (default 2000). Each step setting accepts "off".
|
|
167
|
+
*/
|
|
168
|
+
export function resolveDefaultRetention(env = process.env) {
|
|
169
|
+
const warnings = [];
|
|
170
|
+
return {
|
|
171
|
+
enabled: parseSwitch('AQE_DREAM_RETENTION', env.AQE_DREAM_RETENTION, warnings),
|
|
172
|
+
failedDreamCycleRetentionDays: parseSetting('AQE_FAILED_DREAM_CYCLE_RETENTION_DAYS', env.AQE_FAILED_DREAM_CYCLE_RETENTION_DAYS, DEFAULT_FAILED_DREAM_CYCLE_RETENTION_DAYS, 1, warnings),
|
|
173
|
+
outcomeConceptCap: parseSetting('AQE_OUTCOME_CONCEPT_CAP', env.AQE_OUTCOME_CONCEPT_CAP, DEFAULT_OUTCOME_CONCEPT_CAP, MIN_OUTCOME_CONCEPT_CAP, warnings),
|
|
174
|
+
warnings,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The dream retention steps that are not switched off individually: run
|
|
179
|
+
* when retention is enabled, otherwise previewed as a dry run.
|
|
180
|
+
*/
|
|
181
|
+
export function runDreamRetention(db, settings = resolveDefaultRetention()) {
|
|
182
|
+
const dryRun = !settings.enabled;
|
|
183
|
+
const steps = [];
|
|
184
|
+
if (settings.failedDreamCycleRetentionDays !== null) {
|
|
185
|
+
steps.push(pruneFailedDreamCycles(db, { retentionDays: settings.failedDreamCycleRetentionDays, dryRun }));
|
|
186
|
+
}
|
|
187
|
+
if (settings.outcomeConceptCap !== null) {
|
|
188
|
+
steps.push(capOutcomeConcepts(db, { maxNodes: settings.outcomeConceptCap, dryRun }));
|
|
189
|
+
}
|
|
190
|
+
return { enabled: settings.enabled, steps };
|
|
191
|
+
}
|
|
192
|
+
/** Lines for a dream's output: what retention removed, or would remove while off. */
|
|
193
|
+
export function describeDreamRetention(report) {
|
|
194
|
+
if (report.error)
|
|
195
|
+
return [`skipped: ${report.error}`];
|
|
196
|
+
const lines = report.steps.filter(s => s.affected > 0).map(describeRetention);
|
|
197
|
+
return report.enabled ? lines : lines.map(l => `${l} [off: set AQE_DREAM_RETENTION=on]`);
|
|
198
|
+
}
|
|
199
|
+
/** One line per step, for logs: "outcome-concepts: 3000 removed (concept_nodes 5000 -> 2000, ...)". */
|
|
200
|
+
export function describeRetention(result) {
|
|
201
|
+
const verb = result.step === 'compact-experiences' ? 'compacted' : 'removed';
|
|
202
|
+
const counts = result.tables
|
|
203
|
+
.map(t => `${t.table} ${t.before} -> ${t.after}${result.dryRun ? ' projected' : ''}`)
|
|
204
|
+
.join(', ');
|
|
205
|
+
return `${result.step}: ${result.affected} ${result.dryRun ? `would be ${verb}` : verb}` +
|
|
206
|
+
(counts ? ` (${counts})` : '');
|
|
207
|
+
}
|
|
208
|
+
function assertWholeNumber(name, value, min) {
|
|
209
|
+
if (!Number.isInteger(value) || value < min) {
|
|
210
|
+
throw new Error(`${name} must be a whole number >= ${min}, got ${value}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=learning-retention.js.map
|