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.
Files changed (409) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +124 -5
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +78 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +6 -6
  6. package/dist/cli/chunks/adapter-23KA2YW7.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-6RRQWMNE.js → agent-booster-wasm-2DLAEZK6.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-AOH6TV7W.js → agent-handler-P3IY7XEE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-2P54SF5N.js → agent-memory-branch-WWKC2H3G.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +2 -0
  11. package/dist/cli/chunks/{arena-X6MOGQHA.js → arena-4BMFF6BS.js} +4 -4
  12. package/dist/cli/chunks/{arena-NSVFCAF5.js → arena-EIV5OALF.js} +2 -2
  13. package/dist/cli/chunks/{audit-27DJLQNM.js → audit-DNTI453H.js} +3 -3
  14. package/dist/cli/chunks/base-XPWGYDKD.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-BU5GXILS.js → better-sqlite3-TQBQGNC6.js} +2 -2
  16. package/dist/cli/chunks/brain-handler-HY57CNAO.js +95 -0
  17. package/dist/cli/chunks/{branch-enumerator-5CLULOCU.js → branch-enumerator-THPMZPHQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-R4DMU3LN.js → browser-O6JJOZCK.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +2 -0
  20. package/dist/cli/chunks/{chunk-VU5TBX2V.js → chunk-2HPNGK7A.js} +2 -2
  21. package/dist/cli/chunks/{chunk-5FKWCZNF.js → chunk-2IJO3657.js} +2 -2
  22. package/dist/cli/chunks/{chunk-K3TLLJMX.js → chunk-2QLE6NDW.js} +1 -1
  23. package/dist/cli/chunks/{chunk-J2ZIFFM6.js → chunk-2UZBLC5H.js} +2 -2
  24. package/dist/cli/chunks/{chunk-HD7YIFOI.js → chunk-2W5MQDHM.js} +2 -2
  25. package/dist/cli/chunks/{chunk-F3YS57NF.js → chunk-3FITMWWJ.js} +2 -2
  26. package/dist/cli/chunks/{chunk-K4CZA77U.js → chunk-3TF27MG5.js} +2 -2
  27. package/dist/cli/chunks/{chunk-BLSLEVDI.js → chunk-3XACRXBY.js} +2 -2
  28. package/dist/cli/chunks/{chunk-A64JFBWI.js → chunk-43XHGWYH.js} +2 -2
  29. package/dist/cli/chunks/{chunk-42J34YG4.js → chunk-4RPBODN5.js} +2 -2
  30. package/dist/cli/chunks/{chunk-W26B7ERY.js → chunk-4T7XV5KQ.js} +1 -1
  31. package/dist/cli/chunks/{chunk-SSU73QAX.js → chunk-4WLIOPHX.js} +2 -2
  32. package/dist/cli/chunks/{chunk-P7A4NKTZ.js → chunk-52KOPIMI.js} +2 -2
  33. package/dist/cli/chunks/{chunk-HQZGPJYG.js → chunk-56NSE3LJ.js} +2 -2
  34. package/dist/cli/chunks/{chunk-AQSVJNEH.js → chunk-57DRT6UA.js} +2 -2
  35. package/dist/cli/chunks/{chunk-M6AAGIG7.js → chunk-57FX3GP6.js} +1 -1
  36. package/dist/cli/chunks/{chunk-O6FGXMHD.js → chunk-5PLBQZ5J.js} +1 -1
  37. package/dist/cli/chunks/{chunk-ASQYASNV.js → chunk-5Y7UFHJD.js} +1 -1
  38. package/dist/cli/chunks/{chunk-5VMAV6T6.js → chunk-5Z4MO2F3.js} +1 -1
  39. package/dist/cli/chunks/chunk-65EE2EST.js +8 -0
  40. package/dist/cli/chunks/{chunk-7CMTY45A.js → chunk-6NIGSY5L.js} +2 -2
  41. package/dist/cli/chunks/chunk-6O63ZTVX.js +3 -0
  42. package/dist/cli/chunks/{chunk-FZ76G4QJ.js → chunk-6OI5SK7M.js} +1 -1
  43. package/dist/cli/chunks/{chunk-5ZGM3RMH.js → chunk-6P4Q4RTC.js} +1 -1
  44. package/dist/cli/chunks/{chunk-LUZNKJE6.js → chunk-7724KXM2.js} +3 -3
  45. package/dist/cli/chunks/{chunk-XPRVF4YE.js → chunk-7MISCSL5.js} +2 -2
  46. package/dist/cli/chunks/{chunk-TCBBNUBP.js → chunk-7MUO4DEH.js} +3 -3
  47. package/dist/cli/chunks/{chunk-NT4DBXSX.js → chunk-7QUSNBAA.js} +2 -2
  48. package/dist/cli/chunks/{chunk-TWDW32W2.js → chunk-7SQTLUEN.js} +2 -2
  49. package/dist/cli/chunks/{chunk-QPNG5ZN2.js → chunk-7T6L3LFN.js} +2 -2
  50. package/dist/cli/chunks/{chunk-E56B6IDX.js → chunk-7TH4PJSU.js} +2 -2
  51. package/dist/cli/chunks/{chunk-LZYQHVD4.js → chunk-7Y3LXH57.js} +2 -2
  52. package/dist/cli/chunks/{chunk-YQFLQE53.js → chunk-A2T56XVL.js} +2 -2
  53. package/dist/cli/chunks/{chunk-KV4T4MXK.js → chunk-AJVLVF7V.js} +2 -2
  54. package/dist/cli/chunks/{chunk-VTDFVFST.js → chunk-ARRBXCII.js} +2 -2
  55. package/dist/cli/chunks/{chunk-G6WDYBLQ.js → chunk-AYLEH2UF.js} +1 -1
  56. package/dist/cli/chunks/{chunk-526QYFJU.js → chunk-BBYJBZHG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-CM4LSLKR.js → chunk-BM3EJLMV.js} +2 -2
  58. package/dist/cli/chunks/{chunk-DVGRPK7A.js → chunk-BNG4J3CE.js} +2 -2
  59. package/dist/cli/chunks/{chunk-BK577VL7.js → chunk-BPDAQB3F.js} +2 -2
  60. package/dist/cli/chunks/{chunk-C6JTLKG7.js → chunk-BQJ7CV53.js} +9 -9
  61. package/dist/cli/chunks/{chunk-GB6HBNH2.js → chunk-C3OIBFAA.js} +2 -2
  62. package/dist/cli/chunks/{chunk-RF7HWBHN.js → chunk-CAZM63TP.js} +2 -2
  63. package/dist/cli/chunks/{chunk-KWYH3FI4.js → chunk-CIINJHOX.js} +1 -1
  64. package/dist/cli/chunks/{chunk-ARJW4I2O.js → chunk-CPPYZYXC.js} +2 -2
  65. package/dist/cli/chunks/{chunk-CRWPZT74.js → chunk-D3ZZ2NLL.js} +2 -2
  66. package/dist/cli/chunks/{chunk-Q3UDLV5Z.js → chunk-D5GB5PUU.js} +1 -1
  67. package/dist/cli/chunks/{chunk-7PLIEBY7.js → chunk-DLTB5KCR.js} +2 -2
  68. package/dist/cli/chunks/{chunk-YZWBNBTW.js → chunk-DRLSJJIC.js} +2 -2
  69. package/dist/cli/chunks/{chunk-BEGR4D6N.js → chunk-DSQESXL4.js} +2 -2
  70. package/dist/cli/chunks/{chunk-72ASBE35.js → chunk-E2JLAW3U.js} +3 -3
  71. package/dist/cli/chunks/{chunk-MAMQA43L.js → chunk-E3QIQMMN.js} +1 -1
  72. package/dist/cli/chunks/{chunk-WOCGL4QP.js → chunk-E7OR6V3V.js} +2 -2
  73. package/dist/cli/chunks/{chunk-MVVB7C2E.js → chunk-E7QTWGPI.js} +156 -156
  74. package/dist/cli/chunks/{chunk-JQGMW45H.js → chunk-EC65UZ77.js} +1 -1
  75. package/dist/cli/chunks/{chunk-YXRASAPI.js → chunk-EIEEST4T.js} +2 -2
  76. package/dist/cli/chunks/{chunk-AL6FBH3E.js → chunk-FHPNWHY7.js} +2 -2
  77. package/dist/cli/chunks/{chunk-C7JM7CD3.js → chunk-FJOIBZUB.js} +2 -2
  78. package/dist/cli/chunks/{chunk-LL7LDPXS.js → chunk-FTYRPEJS.js} +1 -1
  79. package/dist/cli/chunks/{chunk-MFW5HSG4.js → chunk-G7HGUQAE.js} +2 -2
  80. package/dist/cli/chunks/{chunk-WQL7WCIZ.js → chunk-GY4P7KAI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-3YNLWPBF.js → chunk-H3C5FJRH.js} +2 -2
  82. package/dist/cli/chunks/{chunk-W3INMZZ6.js → chunk-H4LYXLAT.js} +1 -1
  83. package/dist/cli/chunks/{chunk-W3PPFHI5.js → chunk-HAYKLXCT.js} +52 -50
  84. package/dist/cli/chunks/{chunk-XNBOGCF3.js → chunk-HEDGFKC5.js} +2 -2
  85. package/dist/cli/chunks/{chunk-SYV2V3PL.js → chunk-HHBF2BZC.js} +4 -4
  86. package/dist/cli/chunks/{chunk-75RDHBAX.js → chunk-HSDWPQQY.js} +3 -3
  87. package/dist/cli/chunks/{chunk-6KATY3KS.js → chunk-HTVGHHX2.js} +2 -2
  88. package/dist/cli/chunks/{chunk-VRVMIPTM.js → chunk-HV43NX4A.js} +2 -2
  89. package/dist/cli/chunks/{chunk-RFNW2LGD.js → chunk-IDBA5GK2.js} +2 -2
  90. package/dist/cli/chunks/{chunk-DNDL7SOS.js → chunk-INGXD5IX.js} +2 -2
  91. package/dist/cli/chunks/{chunk-IJUHSJ2U.js → chunk-IQRPR4KB.js} +2 -2
  92. package/dist/cli/chunks/{chunk-UOC3O6RP.js → chunk-IRPNEXOU.js} +2 -2
  93. package/dist/cli/chunks/{chunk-KDVZND5Q.js → chunk-J35JWDJE.js} +1 -1
  94. package/dist/cli/chunks/{chunk-CV77DMDQ.js → chunk-J6ASX536.js} +2 -2
  95. package/dist/cli/chunks/{chunk-7YTGHGK4.js → chunk-JAOCHPYX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-HZ5NXFXH.js → chunk-JB7R77SH.js} +2 -2
  97. package/dist/cli/chunks/{chunk-PB6J6HAA.js → chunk-JI67T6Q2.js} +2 -2
  98. package/dist/cli/chunks/{chunk-E7CLYGS7.js → chunk-JJHLGGPP.js} +1 -1
  99. package/dist/cli/chunks/{chunk-3Y7TJFHU.js → chunk-JK6PMLQQ.js} +2 -2
  100. package/dist/cli/chunks/{chunk-CCMKSHAT.js → chunk-JO26SG47.js} +2 -2
  101. package/dist/cli/chunks/{chunk-NU3W5WFT.js → chunk-JSSU4RIK.js} +2 -2
  102. package/dist/cli/chunks/{chunk-756CGMEH.js → chunk-K2SMP4OD.js} +1 -1
  103. package/dist/cli/chunks/{chunk-OCAEXYFA.js → chunk-K7GFYFBO.js} +2 -2
  104. package/dist/cli/chunks/{chunk-VRHRBAEM.js → chunk-K7RT6ITZ.js} +1 -1
  105. package/dist/cli/chunks/{chunk-LFJALJOA.js → chunk-KJ5A54ZH.js} +2 -2
  106. package/dist/cli/chunks/{chunk-3Y2ROSCL.js → chunk-L5VSLPMW.js} +2 -2
  107. package/dist/cli/chunks/{chunk-WKGTGOYS.js → chunk-L752CNG3.js} +3 -3
  108. package/dist/cli/chunks/{chunk-IC3TQEOA.js → chunk-L7PC675Y.js} +1 -1
  109. package/dist/cli/chunks/{chunk-TOQWL2ZF.js → chunk-LTGQJYYO.js} +2 -2
  110. package/dist/cli/chunks/{chunk-SVLQRAMF.js → chunk-M2TG7VDK.js} +1 -1
  111. package/dist/cli/chunks/{chunk-X7N2JF2X.js → chunk-M5JEA6ZY.js} +2 -2
  112. package/dist/cli/chunks/{chunk-GHM6MQNK.js → chunk-MB4UKUBV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-R7SYRCRP.js → chunk-MKYOE7NE.js} +1 -1
  114. package/dist/cli/chunks/{chunk-3AN5TNGD.js → chunk-MQXWG55U.js} +3 -3
  115. package/dist/cli/chunks/{chunk-3QZEGE67.js → chunk-MR2OPUSA.js} +1 -1
  116. package/dist/cli/chunks/{chunk-6Z7PRBSG.js → chunk-N736GLWZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-PIDQVU3L.js → chunk-NHEG2DLN.js} +2 -2
  118. package/dist/cli/chunks/chunk-NKOLILT7.js +86 -0
  119. package/dist/cli/chunks/{chunk-UXZSUMEA.js → chunk-NPCXGX7N.js} +2 -2
  120. package/dist/cli/chunks/{chunk-XEAEYC6Y.js → chunk-NZQYJCO6.js} +1 -1
  121. package/dist/cli/chunks/{chunk-G77ERMUD.js → chunk-O2AAYJUV.js} +1 -1
  122. package/dist/cli/chunks/{chunk-H4GG2NLO.js → chunk-O32BFQV4.js} +2 -2
  123. package/dist/cli/chunks/{chunk-3LJ7LQMV.js → chunk-O3ERGUXH.js} +1 -1
  124. package/dist/cli/chunks/{chunk-QDEJ4CI2.js → chunk-O5CEL447.js} +2 -2
  125. package/dist/cli/chunks/{chunk-W2QWSQVE.js → chunk-O756AOUX.js} +2 -2
  126. package/dist/cli/chunks/{chunk-PSFSPGUD.js → chunk-OCN53CCK.js} +2 -2
  127. package/dist/cli/chunks/{chunk-KCW47QR5.js → chunk-OGEIHS76.js} +1 -1
  128. package/dist/cli/chunks/{chunk-3RZV5DGO.js → chunk-OLUOVNUF.js} +2 -2
  129. package/dist/cli/chunks/{chunk-KADFXPPN.js → chunk-P2TPH3TC.js} +2 -2
  130. package/dist/cli/chunks/{chunk-7NA7JXNB.js → chunk-PCQZIAXB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-HOAJUIBQ.js → chunk-PGN4TARY.js} +2 -2
  132. package/dist/cli/chunks/{chunk-KB56CPU4.js → chunk-PNRPVQGI.js} +2 -2
  133. package/dist/cli/chunks/{chunk-CE7B5LU7.js → chunk-PWQWKYBG.js} +1 -1
  134. package/dist/cli/chunks/{chunk-DLD7RUZ4.js → chunk-QNQE3EOH.js} +2 -2
  135. package/dist/cli/chunks/chunk-QP2HLKTS.js +2 -0
  136. package/dist/cli/chunks/{chunk-H4H2YSFH.js → chunk-QP6GL3O5.js} +1 -1
  137. package/dist/cli/chunks/{chunk-LWR3FV3Y.js → chunk-QUZ745UQ.js} +2 -2
  138. package/dist/cli/chunks/{chunk-X2Z7F4EU.js → chunk-R5RRWLRI.js} +2 -2
  139. package/dist/cli/chunks/{chunk-NURIILUB.js → chunk-RE6JTSDM.js} +1 -1
  140. package/dist/cli/chunks/{chunk-YSZ5OE3Z.js → chunk-TOJF3ZG4.js} +2 -2
  141. package/dist/cli/chunks/{chunk-7JUC2MVZ.js → chunk-TSP6SU5V.js} +2 -2
  142. package/dist/cli/chunks/{chunk-NW7IBHJA.js → chunk-TW6Z6W4X.js} +4 -4
  143. package/dist/cli/chunks/{chunk-UDQSYWVF.js → chunk-TWOV3I3A.js} +1 -1
  144. package/dist/cli/chunks/chunk-U4TML2VD.js +3 -0
  145. package/dist/cli/chunks/{chunk-WO274FRI.js → chunk-U6IOQKCT.js} +2 -2
  146. package/dist/cli/chunks/{chunk-KDNJ4F3P.js → chunk-UDSB3XCG.js} +2 -2
  147. package/dist/cli/chunks/{chunk-SG3NX7QE.js → chunk-UFP7SN5V.js} +2 -2
  148. package/dist/cli/chunks/{chunk-UTRV7T2N.js → chunk-UMHFTQTR.js} +2 -2
  149. package/dist/cli/chunks/{chunk-4OVC4RIL.js → chunk-UNYTHZDZ.js} +1 -1
  150. package/dist/cli/chunks/{chunk-32ZMWEP3.js → chunk-UPWLMIDY.js} +2 -2
  151. package/dist/cli/chunks/{chunk-T3PGQFDI.js → chunk-USAKCGHC.js} +2 -2
  152. package/dist/cli/chunks/{chunk-2G7TVT6W.js → chunk-V3MGY76S.js} +2 -2
  153. package/dist/cli/chunks/{chunk-ZAKQLAHT.js → chunk-V6SE2ZU2.js} +1 -1
  154. package/dist/cli/chunks/{chunk-SE4VNN4I.js → chunk-VCVRZD4Y.js} +3 -3
  155. package/dist/cli/chunks/{chunk-PHP5UBT4.js → chunk-VG32EEUG.js} +2 -2
  156. package/dist/cli/chunks/{chunk-YZEXYO4W.js → chunk-VGZOPQQY.js} +1 -1
  157. package/dist/cli/chunks/{chunk-OFACHK5O.js → chunk-VJBJRFUO.js} +2 -2
  158. package/dist/cli/chunks/{chunk-NZ3GUMB2.js → chunk-WBC6WB32.js} +2 -2
  159. package/dist/cli/chunks/{chunk-GHY6Z6KO.js → chunk-WCM6WE7G.js} +3 -3
  160. package/dist/cli/chunks/{chunk-NZD4DPSU.js → chunk-WCPSR4MJ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-I3C7JOXC.js → chunk-WKI46WWN.js} +2 -2
  162. package/dist/cli/chunks/{chunk-5K26BEYB.js → chunk-WM2QRIRD.js} +2 -2
  163. package/dist/cli/chunks/{chunk-U2FUXDDJ.js → chunk-WRC3HLUY.js} +3 -3
  164. package/dist/cli/chunks/{chunk-GII6UM3F.js → chunk-WUGXXNK4.js} +1 -1
  165. package/dist/cli/chunks/{chunk-JGZ722G3.js → chunk-WZQADC5R.js} +2 -2
  166. package/dist/cli/chunks/{chunk-GU5HNCWI.js → chunk-X6NJOT3V.js} +1 -1
  167. package/dist/cli/chunks/{chunk-DFUASIKA.js → chunk-X6Q2N5S5.js} +2 -2
  168. package/dist/cli/chunks/{chunk-G2Q66Z23.js → chunk-X7CUI7KH.js} +2 -2
  169. package/dist/cli/chunks/{chunk-5MDERQH3.js → chunk-XMCSKYDE.js} +1 -1
  170. package/dist/cli/chunks/{chunk-VTOBUZL6.js → chunk-XN3KCKAM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-KUAKV3IW.js → chunk-XSPMLJCQ.js} +1 -1
  172. package/dist/cli/chunks/{chunk-YBQH2VOP.js → chunk-XTZGAG6P.js} +2 -2
  173. package/dist/cli/chunks/{chunk-MGZ5FJUW.js → chunk-YE54T2NQ.js} +2 -2
  174. package/dist/cli/chunks/{chunk-BTVEYBW2.js → chunk-YEFTK4HD.js} +2 -2
  175. package/dist/cli/chunks/{chunk-CT6SAVXQ.js → chunk-YGC5QKQ4.js} +2 -2
  176. package/dist/cli/chunks/{chunk-TWJTK4CC.js → chunk-YGOSSVY5.js} +2 -2
  177. package/dist/cli/chunks/chunk-YKQWIXUY.js +2 -0
  178. package/dist/cli/chunks/{chunk-TSQC2KKZ.js → chunk-Z2S7DNFP.js} +2 -2
  179. package/dist/cli/chunks/{chunk-JRRXCODW.js → chunk-Z54G2YOL.js} +2 -2
  180. package/dist/cli/chunks/{chunk-EXGMJFAT.js → chunk-ZJGFQK27.js} +1 -1
  181. package/dist/cli/chunks/{chunk-WNQS4WTS.js → chunk-ZUE524JL.js} +2 -2
  182. package/dist/cli/chunks/{ci-ENOASTYB.js → ci-UMA2SMNW.js} +2 -2
  183. package/dist/cli/chunks/{ci-config-B26OXHQM.js → ci-config-UQSILJFQ.js} +2 -2
  184. package/dist/cli/chunks/{ci-output-JTCLLNOQ.js → ci-output-U6YZLLKH.js} +2 -2
  185. package/dist/cli/chunks/{circuit-breaker-23JMFNM5.js → circuit-breaker-ATYQP6X2.js} +2 -2
  186. package/dist/cli/chunks/{claude-flow-setup-ON6L462G.js → claude-flow-setup-6YHFD7AN.js} +2 -2
  187. package/dist/cli/chunks/client-E43GWLQH.js +2 -0
  188. package/dist/cli/chunks/{cline-installer-OWQ4D2FQ.js → cline-installer-EPE7IOZE.js} +2 -2
  189. package/dist/cli/chunks/{code-2ZRL7SEU.js → code-NUEJ4XYO.js} +3 -3
  190. package/dist/cli/chunks/{code-index-extractor-JXSQVM67.js → code-index-extractor-D4DBT6OL.js} +2 -2
  191. package/dist/cli/chunks/{codex-installer-7LXZYBSQ.js → codex-installer-633SM4LR.js} +2 -2
  192. package/dist/cli/chunks/{completions-C2LR623C.js → completions-WUKVIW3L.js} +2 -2
  193. package/dist/cli/chunks/{complexity-analyzer-TGQLHCYJ.js → complexity-analyzer-F73ACR5H.js} +2 -2
  194. package/dist/cli/chunks/{continuedev-installer-RUGD24D2.js → continuedev-installer-QH42TKMS.js} +2 -2
  195. package/dist/cli/chunks/{copilot-installer-ZLFVLEJP.js → copilot-installer-Y3XC7BTT.js} +2 -2
  196. package/dist/cli/chunks/core-handlers-R5A3SQDY.js +2 -0
  197. package/dist/cli/chunks/{cost-tracker-RT4QL745.js → cost-tracker-57QPV7E3.js} +2 -2
  198. package/dist/cli/chunks/coverage-IBCHMBCR.js +51 -0
  199. package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +2 -0
  200. package/dist/cli/chunks/{cursor-installer-LJKLNFF6.js → cursor-installer-F4UYQHIN.js} +2 -2
  201. package/dist/cli/chunks/{daemon-FBH3IRYN.js → daemon-BYYPIJ7G.js} +4 -4
  202. package/dist/cli/chunks/{daemon-BMDXCQT5.js → daemon-XR4Q6YZF.js} +3 -3
  203. package/dist/cli/chunks/{dag-attention-scheduler-JGDED55I.js → dag-attention-scheduler-ZR5ZD3TW.js} +2 -2
  204. package/dist/cli/chunks/{detect-SZIHIVCJ.js → detect-GEGYURLL.js} +2 -2
  205. package/dist/cli/chunks/{dist-node-FV3KWXQ6.js → dist-node-JU3KT2JO.js} +2 -2
  206. package/dist/cli/chunks/{domain-handler-GI5JWQOV.js → domain-handler-7QI3FJGE.js} +2 -2
  207. package/dist/cli/chunks/{domain-plugins-BUWY36TL.js → domain-plugins-O2YRM2PD.js} +2 -2
  208. package/dist/cli/chunks/{domain-transfer-GCY7W5DA.js → domain-transfer-7J3S2OS6.js} +2 -2
  209. package/dist/cli/chunks/dream-6C4NURSE.js +2 -0
  210. package/dist/cli/chunks/{embed-and-insert-pattern-GPRR3ZGD.js → embed-and-insert-pattern-URES5Q6J.js} +2 -2
  211. package/dist/cli/chunks/{eval-XPB3IGAP.js → eval-RVMCIUOR.js} +2 -2
  212. package/dist/cli/chunks/{experience-capture-middleware-2E554UB3.js → experience-capture-middleware-SYJQSBKE.js} +3 -3
  213. package/dist/cli/chunks/{fast-paths-ZSMWZPUC.js → fast-paths-QUKPKWKZ.js} +2 -2
  214. package/dist/cli/chunks/{feature-flags-N7EOGE5P.js → feature-flags-5JCSKL2P.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-GIWVDVVC.js → feature-flags-K7JXNKJI.js} +2 -2
  216. package/dist/cli/chunks/file-discovery-J5IE5KP7.js +2 -0
  217. package/dist/cli/chunks/{fleet-HCHDOUCX.js → fleet-II4Q6HXK.js} +3 -3
  218. package/dist/cli/chunks/{gnn-wrapper-CZNCNXXZ.js → gnn-wrapper-M7VO2EMS.js} +2 -2
  219. package/dist/cli/chunks/{heartbeat-handler-6YUIF2YQ.js → heartbeat-handler-ND5CY26N.js} +4 -4
  220. package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +2 -0
  221. package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +2 -0
  222. package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +2 -0
  223. package/dist/cli/chunks/{hnsw-legacy-bridge-J3M3IK24.js → hnsw-legacy-bridge-N3AUUUU7.js} +2 -2
  224. package/dist/cli/chunks/{hnswlib-node-ULGTGDZW.js → hnswlib-node-NZY3E5EN.js} +2 -2
  225. package/dist/cli/chunks/{hooks-C4BUGYUQ.js → hooks-QVJDTII5.js} +10 -10
  226. package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +2 -0
  227. package/dist/cli/chunks/{hypergraph-engine-WINGVMPG.js → hypergraph-engine-ZRY6MTDV.js} +2 -2
  228. package/dist/cli/chunks/{hypergraph-handler-GADMWKAU.js → hypergraph-handler-56DO4XZQ.js} +3 -3
  229. package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +2 -0
  230. package/dist/cli/chunks/{init-guard-K2T4QWAO.js → init-guard-DTF4EVUY.js} +2 -2
  231. package/dist/cli/chunks/{init-handler-PCZTDZYI.js → init-handler-M6CNQHMX.js} +6 -6
  232. package/dist/cli/chunks/init-wizard-RTLCRWDT.js +2 -0
  233. package/dist/cli/chunks/kernel-2OWIGGGT.js +2 -0
  234. package/dist/cli/chunks/{kilocode-installer-XENXNEIU.js → kilocode-installer-IJN7XKBH.js} +2 -2
  235. package/dist/cli/chunks/{kiro-installer-3PG2TJ67.js → kiro-installer-UKKPGPDC.js} +2 -2
  236. package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +2 -0
  237. package/dist/cli/chunks/learning-W2HETWQ4.js +131 -0
  238. package/dist/cli/chunks/{llm-router-RKVDEWU2.js → llm-router-Y546K4VX.js} +4 -4
  239. package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +2 -0
  240. package/dist/cli/chunks/{load-ITHC564X.js → load-MKAB2AXE.js} +2 -2
  241. package/dist/cli/chunks/load-test-D6QYNIVT.js +2 -0
  242. package/dist/cli/chunks/{mcp-TCL5UW3N.js → mcp-AZKUS6K3.js} +2 -2
  243. package/dist/cli/chunks/{memory-BKDAY2N2.js → memory-ZDOQN2KU.js} +5 -5
  244. package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +2 -0
  245. package/dist/cli/chunks/{memory-handlers-WN4FXFOA.js → memory-handlers-3SQVY7FE.js} +2 -2
  246. package/dist/cli/chunks/{multi-model-executor-VHAT7ZPF.js → multi-model-executor-WWVXDHG4.js} +2 -2
  247. package/dist/cli/chunks/{opencode-installer-E3VM3EEY.js → opencode-installer-YUJNXXWS.js} +2 -2
  248. package/dist/cli/chunks/{orchestrator-BMQ6X762.js → orchestrator-Z6PWPLRE.js} +109 -25
  249. package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +2 -0
  250. package/dist/cli/chunks/{pattern-usage-recorder-GOOR2BV5.js → pattern-usage-recorder-TPWPX32U.js} +2 -2
  251. package/dist/cli/chunks/{pipeline-5NSFQQIX.js → pipeline-4BBGTE4M.js} +2 -2
  252. package/dist/cli/chunks/{platform-SQM34J5G.js → platform-5GSHXCV5.js} +2 -2
  253. package/dist/cli/chunks/{plugin-UQJZRMZG.js → plugin-OFDVF5HS.js} +2 -2
  254. package/dist/cli/chunks/{prime-radiant-advanced-wasm-WMDJOL4S.js → prime-radiant-advanced-wasm-NC6MUYGJ.js} +2 -2
  255. package/dist/cli/chunks/project-root-DDGBWDP6.js +2 -0
  256. package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +2 -0
  257. package/dist/cli/chunks/{protocol-handler-OBDCVY6X.js → protocol-handler-MPOAAEPA.js} +2 -2
  258. package/dist/cli/chunks/{prove-XDC7I4XT.js → prove-CDKMAIVM.js} +2 -2
  259. package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +2 -0
  260. package/dist/cli/chunks/{quality-L4GQ6WX4.js → quality-ZH4F7R7R.js} +2 -2
  261. package/dist/cli/chunks/{quality-gate-MJG66LKN.js → quality-gate-IDRMW6OE.js} +3 -3
  262. package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +2 -0
  263. package/dist/cli/chunks/{real-embeddings-HW4G2LWL.js → real-embeddings-I2UVNNB3.js} +2 -2
  264. package/dist/cli/chunks/{ref-validation-FC7JOJ2C.js → ref-validation-Z5GCGVXK.js} +2 -2
  265. package/dist/cli/chunks/{roocode-installer-KWS4CEIC.js → roocode-installer-IZ2S7PH2.js} +2 -2
  266. package/dist/cli/chunks/router-FT5WJPUH.js +2 -0
  267. package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +2 -0
  268. package/dist/cli/chunks/{routing-handler-QF4WVB2S.js → routing-handler-NAX35VUW.js} +2 -2
  269. package/dist/cli/chunks/{ruvector-commands-2MTCOUK6.js → ruvector-commands-5YW2SOFF.js} +2 -2
  270. package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +2 -0
  271. package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +2 -0
  272. package/dist/cli/chunks/{rvf-migration-coordinator-BREJCXWN.js → rvf-migration-coordinator-VUIZHTVG.js} +2 -2
  273. package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +2 -0
  274. package/dist/cli/chunks/{rvf-store-integrity-KKC6HOJD.js → rvf-store-integrity-IPGCAT6C.js} +2 -2
  275. package/dist/cli/chunks/safe-db-TDZKUOZJ.js +2 -0
  276. package/dist/cli/chunks/schedule-CRKTRY2A.js +2 -0
  277. package/dist/cli/chunks/scheduler-6ZBDVQWN.js +2 -0
  278. package/dist/cli/chunks/{security-OSAE7VAP.js → security-3IH4BO5Z.js} +3 -3
  279. package/dist/cli/chunks/{shared-rvf-adapter-COUOS665.js → shared-rvf-adapter-ABY7PAY2.js} +2 -2
  280. package/dist/cli/chunks/{shared-rvf-dual-writer-YXMPZKQE.js → shared-rvf-dual-writer-6KENLN2W.js} +2 -2
  281. package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +2 -0
  282. package/dist/cli/chunks/{standalone-memory-E6JBMOIL.js → standalone-memory-RLFAUGOW.js} +2 -2
  283. package/dist/cli/chunks/{status-handler-AFTCIYIX.js → status-handler-FCOZBPE5.js} +2 -2
  284. package/dist/cli/chunks/{structural-health-2FROCEI4.js → structural-health-4RDA5UUM.js} +2 -2
  285. package/dist/cli/chunks/{sync-VAYTOWDC.js → sync-54LUAUTK.js} +2 -2
  286. package/dist/cli/chunks/{sync-YIQYOFGW.js → sync-KGEEXXCC.js} +2 -2
  287. package/dist/cli/chunks/{task-handler-KVQHDEX3.js → task-handler-K3OXHYKU.js} +2 -2
  288. package/dist/cli/chunks/{task-handlers-MVVECQA6.js → task-handlers-6H7L2UT4.js} +3 -3
  289. package/dist/cli/chunks/{test-5JSVTOMY.js → test-S7IG6EIX.js} +4 -4
  290. package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +2 -0
  291. package/dist/cli/chunks/{test-scheduling-HBOHVLI3.js → test-scheduling-7XYXI4L2.js} +3 -3
  292. package/dist/cli/chunks/{token-bootstrap-5VEPTPFA.js → token-bootstrap-3QMABE45.js} +2 -2
  293. package/dist/cli/chunks/{token-usage-TBJHDLY6.js → token-usage-Y2YTPOFE.js} +2 -2
  294. package/dist/cli/chunks/{transformers-VAWYMHMZ.js → transformers-UCJ3HHHC.js} +2 -2
  295. package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +2 -0
  296. package/dist/cli/chunks/{types-R5SDZU2E.js → types-6CMFPETH.js} +2 -2
  297. package/dist/cli/chunks/unified-memory-QARWQKJ2.js +2 -0
  298. package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +2 -0
  299. package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +2 -0
  300. package/dist/cli/chunks/{upgrade-K5PIHXRB.js → upgrade-K25DN6WU.js} +2 -2
  301. package/dist/cli/chunks/{validate-RPTS7RYJ.js → validate-T4V3TBY3.js} +2 -2
  302. package/dist/cli/chunks/{validate-swarm-B2ZL556X.js → validate-swarm-XSRC576T.js} +2 -2
  303. package/dist/cli/chunks/visual-security-O4ALMCXQ.js +2 -0
  304. package/dist/cli/chunks/{web-tree-sitter-K4DUJC32.js → web-tree-sitter-YOZXHRTN.js} +2 -2
  305. package/dist/cli/chunks/{windsurf-installer-OK2AJN35.js → windsurf-installer-ITPU2IYL.js} +2 -2
  306. package/dist/cli/chunks/witness-chain-B3YW5NMS.js +2 -0
  307. package/dist/cli/chunks/witness-chain-PIYR72HJ.js +2 -0
  308. package/dist/cli/chunks/{witness-chain-repair-L6Y5RFXR.js → witness-chain-repair-YUG7E3UX.js} +2 -2
  309. package/dist/cli/chunks/{witness-chain-verifier-N4CW7FZX.js → witness-chain-verifier-DTDSVKOG.js} +2 -2
  310. package/dist/cli/chunks/{witness-key-manager-TDNPS3WD.js → witness-key-manager-EWACWGAW.js} +2 -2
  311. package/dist/cli/chunks/{workflow-XRZA3YCY.js → workflow-ZIQ4FV42.js} +4 -4
  312. package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +2 -0
  313. package/dist/cli/chunks/{wrappers-5JIFWKN6.js → wrappers-PW2O27LL.js} +2 -2
  314. package/dist/cli/commands/coverage.js +6 -0
  315. package/dist/cli/commands/learning-prune.d.ts +14 -0
  316. package/dist/cli/commands/learning-prune.js +105 -0
  317. package/dist/cli/commands/learning.js +9 -0
  318. package/dist/cli/handlers/brain-handler.js +12 -1
  319. package/dist/cli/utils/coverage-verdict.js +14 -3
  320. package/dist/context/compaction/index.d.ts +7 -0
  321. package/dist/context/compaction/index.js +30 -6
  322. package/dist/coordination/handlers/coverage-evidence.d.ts +19 -0
  323. package/dist/coordination/handlers/coverage-evidence.js +31 -2
  324. package/dist/coordination/handlers/coverage-handlers.js +5 -1
  325. package/dist/coordination/handlers/coverage-target.js +8 -1
  326. package/dist/coordination/handlers/quality-handlers.js +9 -1
  327. package/dist/coordination/result-saver-adapters.js +1 -0
  328. package/dist/coordination/result-saver.js +9 -5
  329. package/dist/domains/chaos-resilience/services/chaos-engineer.d.ts +1 -0
  330. package/dist/domains/chaos-resilience/services/chaos-engineer.js +23 -45
  331. package/dist/domains/coverage-analysis/collected-metrics.d.ts +22 -6
  332. package/dist/domains/coverage-analysis/collected-metrics.js +37 -12
  333. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -0
  334. package/dist/domains/defect-intelligence/services/defect-predictor.js +3 -6
  335. package/dist/domains/quality-assessment/coverage-report-event.d.ts +8 -0
  336. package/dist/domains/quality-assessment/coverage-report-event.js +22 -1
  337. package/dist/domains/quality-assessment/interfaces.d.ts +6 -0
  338. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +4 -0
  339. package/dist/domains/quality-assessment/services/quality-analyzer.js +63 -17
  340. package/dist/domains/test-execution/interfaces.d.ts +5 -0
  341. package/dist/domains/test-execution/services/test-executor.js +6 -0
  342. package/dist/init/phases/07-hooks.js +90 -6
  343. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +25 -0
  344. package/dist/integrations/ruvector/brain-rvf-exporter.js +154 -61
  345. package/dist/learning/dream/dream-engine.d.ts +24 -1
  346. package/dist/learning/dream/dream-engine.js +57 -6
  347. package/dist/learning/learning-retention.d.ts +103 -0
  348. package/dist/learning/learning-retention.js +213 -0
  349. package/dist/mcp/bundle.js +494 -489
  350. package/dist/mcp/handlers/domain-handler-configs.d.ts +9 -1
  351. package/dist/mcp/handlers/domain-handler-configs.js +24 -14
  352. package/dist/mcp/protocol-server.js +1 -1
  353. package/dist/mcp/tools/chaos-resilience/inject.d.ts +3 -4
  354. package/dist/mcp/tools/chaos-resilience/inject.js +11 -81
  355. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -0
  356. package/dist/mcp/tools/learning-optimization/dream.js +4 -0
  357. package/package.json +1 -1
  358. package/dist/cli/chunks/adapter-KCQDVYY2.js +0 -2
  359. package/dist/cli/chunks/aqe-learning-engine-SAQOHSGN.js +0 -2
  360. package/dist/cli/chunks/base-WCACU3FN.js +0 -2
  361. package/dist/cli/chunks/brain-handler-GTQNHHZS.js +0 -94
  362. package/dist/cli/chunks/browser-workflow-G6IASEAP.js +0 -2
  363. package/dist/cli/chunks/chunk-K65CGKLD.js +0 -8
  364. package/dist/cli/chunks/chunk-MB46UBGY.js +0 -3
  365. package/dist/cli/chunks/chunk-N4CYAKOX.js +0 -79
  366. package/dist/cli/chunks/chunk-PT4FMJPQ.js +0 -3
  367. package/dist/cli/chunks/chunk-S5AZCIZS.js +0 -2
  368. package/dist/cli/chunks/chunk-UT2VZ33P.js +0 -2
  369. package/dist/cli/chunks/client-TV3V2YZ5.js +0 -2
  370. package/dist/cli/chunks/core-handlers-PZT4OLWR.js +0 -2
  371. package/dist/cli/chunks/coverage-NV3C4IMM.js +0 -50
  372. package/dist/cli/chunks/cross-domain-router-QOFCZ7G4.js +0 -2
  373. package/dist/cli/chunks/dream-TRFBGDSQ.js +0 -2
  374. package/dist/cli/chunks/file-discovery-WCKGMSPZ.js +0 -2
  375. package/dist/cli/chunks/heartbeat-scheduler-P44A2OX3.js +0 -2
  376. package/dist/cli/chunks/hnsw-adapter-ZJQIQJKC.js +0 -2
  377. package/dist/cli/chunks/hnsw-index-HMG2GH3Z.js +0 -2
  378. package/dist/cli/chunks/hybrid-backend-B7M74PZG.js +0 -2
  379. package/dist/cli/chunks/impact-analyzer-PZYOVKQO.js +0 -2
  380. package/dist/cli/chunks/init-wizard-TZDJQK3U.js +0 -2
  381. package/dist/cli/chunks/kernel-Y6RRIOKW.js +0 -2
  382. package/dist/cli/chunks/knowledge-graph-BVD5Z66M.js +0 -2
  383. package/dist/cli/chunks/learning-6KDH7FK4.js +0 -122
  384. package/dist/cli/chunks/llm-router-service-KHCAMSUU.js +0 -2
  385. package/dist/cli/chunks/load-test-RUF7DZA5.js +0 -2
  386. package/dist/cli/chunks/memory-backend-7ZLFOVGG.js +0 -2
  387. package/dist/cli/chunks/pattern-null-store-RY6CVYHP.js +0 -2
  388. package/dist/cli/chunks/project-root-IO5KRNGL.js +0 -2
  389. package/dist/cli/chunks/protocol-executor-U2CUDWDE.js +0 -2
  390. package/dist/cli/chunks/qe-reasoning-bank-DQSSX2IP.js +0 -2
  391. package/dist/cli/chunks/queen-coordinator-6FN4BZIX.js +0 -2
  392. package/dist/cli/chunks/router-YUO3I7RU.js +0 -2
  393. package/dist/cli/chunks/routing-feedback-36SLQGJE.js +0 -2
  394. package/dist/cli/chunks/rvf-dual-writer-FRYZH3WZ.js +0 -2
  395. package/dist/cli/chunks/rvf-migration-adapter-XXNITL5I.js +0 -2
  396. package/dist/cli/chunks/rvf-native-adapter-D2WWKJIV.js +0 -2
  397. package/dist/cli/chunks/safe-db-4RRIGRXD.js +0 -2
  398. package/dist/cli/chunks/schedule-25RTO4DQ.js +0 -2
  399. package/dist/cli/chunks/scheduler-BPIOJZ5P.js +0 -2
  400. package/dist/cli/chunks/sqlite-persistence-EDF47DDX.js +0 -2
  401. package/dist/cli/chunks/test-runner-process-LEPF2OSS.js +0 -2
  402. package/dist/cli/chunks/tree-sitter-wasm-parser-TSZTCMFV.js +0 -2
  403. package/dist/cli/chunks/unified-memory-TLGSSLMI.js +0 -2
  404. package/dist/cli/chunks/unified-memory-hnsw-MSUR7ZOO.js +0 -2
  405. package/dist/cli/chunks/unified-persistence-VFFOTWK7.js +0 -2
  406. package/dist/cli/chunks/visual-security-6Q44XNLB.js +0 -2
  407. package/dist/cli/chunks/witness-chain-KDOMXDQX.js +0 -2
  408. package/dist/cli/chunks/witness-chain-N3OY2RMH.js +0 -2
  409. 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