agentic-qe 3.15.7 → 3.15.9

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 (489) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +305 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
  5. package/dist/bridge/captured-experience-bridge.js +12 -13
  6. package/dist/cli/bundle.js +6 -6
  7. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-OS5G7KMQ.js → agent-booster-wasm-427FRKWG.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-PI4I7PME.js → agent-handler-RIYHTHVZ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-J7TXHX4U.js → agent-memory-branch-WSUCUHOO.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
  12. package/dist/cli/chunks/{arena-OWUGXKNT.js → arena-KRIBMIXX.js} +2 -2
  13. package/dist/cli/chunks/{arena-FXESDCFR.js → arena-YAJZX6MC.js} +4 -4
  14. package/dist/cli/chunks/{audit-EPAWLYIZ.js → audit-7ZNOXWP3.js} +3 -3
  15. package/dist/cli/chunks/base-67DXSAYM.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IYVR5EQY.js → better-sqlite3-ZQAT4I6H.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-3W2E6TC6.js → brain-handler-452WCPZC.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-HU7VACJ4.js → branch-enumerator-IJFXJRPN.js} +2 -2
  19. package/dist/cli/chunks/{browser-72XOR6E2.js → browser-CT3MTV6G.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
  21. package/dist/cli/chunks/{chunk-WXI2STKQ.js → chunk-2BA45H64.js} +2 -2
  22. package/dist/cli/chunks/{chunk-DGK6GQMO.js → chunk-2HL3UM5P.js} +2 -2
  23. package/dist/cli/chunks/{chunk-LGBN7TKC.js → chunk-2I2UPJS7.js} +2 -2
  24. package/dist/cli/chunks/{chunk-ZRLNACPY.js → chunk-2TDIS6YK.js} +2 -2
  25. package/dist/cli/chunks/{chunk-34JLY3U6.js → chunk-2URBI52G.js} +2 -2
  26. package/dist/cli/chunks/{chunk-K7W55B7Q.js → chunk-2XITOPYV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-I7H4IP7T.js → chunk-2YH62JCN.js} +2 -2
  28. package/dist/cli/chunks/{chunk-HPG7354V.js → chunk-32UTLDNY.js} +2 -2
  29. package/dist/cli/chunks/{chunk-C2CUPJGR.js → chunk-37BIGMJI.js} +1 -1
  30. package/dist/cli/chunks/{chunk-2RJYA6WK.js → chunk-3CJCROMW.js} +2 -2
  31. package/dist/cli/chunks/{chunk-CWPRU7ZI.js → chunk-3LYU7BLY.js} +2 -2
  32. package/dist/cli/chunks/{chunk-24CENUT4.js → chunk-47TYABPD.js} +3 -3
  33. package/dist/cli/chunks/{chunk-WUV5RZUI.js → chunk-47V7FQGX.js} +2 -2
  34. package/dist/cli/chunks/{chunk-IWQQIXHO.js → chunk-4JCY45KV.js} +2 -2
  35. package/dist/cli/chunks/{chunk-ZTMZFF25.js → chunk-4SUOVLJ6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-CIFWOMNX.js → chunk-4URT6JO2.js} +1 -1
  37. package/dist/cli/chunks/{chunk-5Q22XPTH.js → chunk-4V27J6YN.js} +2 -2
  38. package/dist/cli/chunks/{chunk-SX2YSHE7.js → chunk-4W4DYVSH.js} +1 -1
  39. package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
  40. package/dist/cli/chunks/{chunk-F62EKVVC.js → chunk-5D2I7JUP.js} +2 -2
  41. package/dist/cli/chunks/{chunk-XXAVQACL.js → chunk-5JWGCIQW.js} +1 -1
  42. package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
  43. package/dist/cli/chunks/{chunk-EDU72RTW.js → chunk-5NS3USRW.js} +1 -1
  44. package/dist/cli/chunks/{chunk-BTYKGVJ5.js → chunk-6EPHNJTL.js} +1 -1
  45. package/dist/cli/chunks/{chunk-JVYPXW6Y.js → chunk-6OOYIO3W.js} +2 -2
  46. package/dist/cli/chunks/{chunk-PG64YV6C.js → chunk-6PXA2BQJ.js} +58 -58
  47. package/dist/cli/chunks/{chunk-IARSGAG7.js → chunk-6YL6JOQB.js} +2 -2
  48. package/dist/cli/chunks/{chunk-LDXQRNTT.js → chunk-72AMFDC7.js} +1 -1
  49. package/dist/cli/chunks/{chunk-Z3VJLWRR.js → chunk-763SUL4B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-EL75G2A3.js → chunk-7DMA5NYL.js} +1 -1
  51. package/dist/cli/chunks/{chunk-J43DV3ME.js → chunk-7JKB3Q7O.js} +1 -1
  52. package/dist/cli/chunks/{chunk-ONVALAZN.js → chunk-7KII4CQG.js} +2 -2
  53. package/dist/cli/chunks/{chunk-AAA4SHEG.js → chunk-7QGYJ5OY.js} +1 -1
  54. package/dist/cli/chunks/{chunk-MMXG3LL6.js → chunk-7QTB5VJZ.js} +2 -2
  55. package/dist/cli/chunks/{chunk-BB7OLQKO.js → chunk-7X2Y727E.js} +1 -1
  56. package/dist/cli/chunks/{chunk-VNW5Q2CX.js → chunk-A4RU67VX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-YFOBQSOW.js → chunk-A6YIH4C4.js} +2 -2
  58. package/dist/cli/chunks/{chunk-MJJC6HUK.js → chunk-ABFDB4X3.js} +1 -1
  59. package/dist/cli/chunks/{chunk-MHZPC4HJ.js → chunk-AJ4YDSOI.js} +2 -2
  60. package/dist/cli/chunks/{chunk-OA4GR3EZ.js → chunk-AOFO4N32.js} +2 -2
  61. package/dist/cli/chunks/{chunk-EB2PP6X2.js → chunk-AQTVVLNP.js} +1 -1
  62. package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
  63. package/dist/cli/chunks/{chunk-N4PMPSJJ.js → chunk-AVB5QY2Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-HLZATDD2.js → chunk-BHKXMIWX.js} +2 -2
  65. package/dist/cli/chunks/{chunk-C2MDBBFF.js → chunk-BXO536GT.js} +3 -3
  66. package/dist/cli/chunks/{chunk-WTLIEBDH.js → chunk-C6RTMTEH.js} +1 -1
  67. package/dist/cli/chunks/{chunk-MNZFEIE5.js → chunk-CTZJUV5I.js} +1 -1
  68. package/dist/cli/chunks/{chunk-XEWXYGJI.js → chunk-D6XVGFTI.js} +2 -2
  69. package/dist/cli/chunks/{chunk-Y4SAWE45.js → chunk-DDPPSSHW.js} +1 -1
  70. package/dist/cli/chunks/{chunk-KPOPBUUJ.js → chunk-DGTLJNJH.js} +2 -2
  71. package/dist/cli/chunks/{chunk-6JT73S5B.js → chunk-DINZR5CF.js} +1 -1
  72. package/dist/cli/chunks/{chunk-HTWIGQL4.js → chunk-EFBLP43U.js} +2 -2
  73. package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
  74. package/dist/cli/chunks/{chunk-2AYBYXOA.js → chunk-F2SQPP6U.js} +2 -2
  75. package/dist/cli/chunks/{chunk-V2SAEMZY.js → chunk-F3PQZX44.js} +1 -1
  76. package/dist/cli/chunks/{chunk-JPHDMHFG.js → chunk-F4JYIRW2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-REEIFA6A.js → chunk-FJ4VTLLK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-PTK66HEY.js → chunk-FL3OYGCS.js} +2 -2
  79. package/dist/cli/chunks/{chunk-PEKDSJBC.js → chunk-FLASM2XB.js} +2 -2
  80. package/dist/cli/chunks/{chunk-G762PEFO.js → chunk-FV3NHVC7.js} +22 -22
  81. package/dist/cli/chunks/{chunk-FTTFJ7SJ.js → chunk-FV7VAG74.js} +1 -1
  82. package/dist/cli/chunks/{chunk-2YVJ5OUL.js → chunk-G3BKZNFL.js} +8 -8
  83. package/dist/cli/chunks/{chunk-MDC4G323.js → chunk-GBUIG3FS.js} +1 -1
  84. package/dist/cli/chunks/{chunk-DCJW2DPL.js → chunk-GCWSX2NY.js} +4 -4
  85. package/dist/cli/chunks/{chunk-VCA6YYII.js → chunk-GII5WVAK.js} +1 -1
  86. package/dist/cli/chunks/{chunk-HXBAQKMH.js → chunk-GKPQ2GRR.js} +2 -2
  87. package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
  88. package/dist/cli/chunks/{chunk-ZUMDDMDE.js → chunk-H3KBIWTO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-ECSLJJOQ.js → chunk-HAROIAJE.js} +1 -1
  90. package/dist/cli/chunks/{chunk-ICPALF4Q.js → chunk-HCYQHWI2.js} +2 -2
  91. package/dist/cli/chunks/{chunk-V5NGBQAQ.js → chunk-HGTWAZWU.js} +2 -2
  92. package/dist/cli/chunks/{chunk-YK3NOC2R.js → chunk-HTZJSQ3C.js} +2 -2
  93. package/dist/cli/chunks/{chunk-IYQ7XNE5.js → chunk-HWK5L7IJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-HSDOOFV7.js → chunk-HZ5NC6U5.js} +1 -1
  95. package/dist/cli/chunks/{chunk-M63QB466.js → chunk-I6S35FRO.js} +2 -2
  96. package/dist/cli/chunks/{chunk-LMEU64TR.js → chunk-ICP2ORGI.js} +2 -2
  97. package/dist/cli/chunks/{chunk-PXZKPUW6.js → chunk-IFEIY3NQ.js} +2 -2
  98. package/dist/cli/chunks/{chunk-OJEZNLB6.js → chunk-J3DTDJDT.js} +2 -2
  99. package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
  100. package/dist/cli/chunks/{chunk-SQHLC6I5.js → chunk-J5KNRVXR.js} +1 -1
  101. package/dist/cli/chunks/{chunk-RORZ5O5Z.js → chunk-JAV5WPSY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-SSP2B2WR.js → chunk-JEP4ULR6.js} +2 -2
  103. package/dist/cli/chunks/{chunk-6FEQ73BF.js → chunk-JK2ME6IT.js} +2 -2
  104. package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
  105. package/dist/cli/chunks/{chunk-RXAFLK34.js → chunk-JP4P3P3D.js} +2 -2
  106. package/dist/cli/chunks/{chunk-JY4AIEZ7.js → chunk-JUVHZG7I.js} +1 -1
  107. package/dist/cli/chunks/{chunk-UBYCR3O4.js → chunk-JWGRWMZP.js} +2 -2
  108. package/dist/cli/chunks/{chunk-6BO3WCK7.js → chunk-K5DJXMAA.js} +2 -2
  109. package/dist/cli/chunks/{chunk-MKFQNCXI.js → chunk-KFUUIAR4.js} +2 -2
  110. package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
  111. package/dist/cli/chunks/{chunk-UY3REQOK.js → chunk-KIKWJM6J.js} +2 -2
  112. package/dist/cli/chunks/{chunk-YUC7RJGR.js → chunk-KIXYKUCI.js} +1 -1
  113. package/dist/cli/chunks/{chunk-IC2WSSD5.js → chunk-KLGYIEJK.js} +3 -3
  114. package/dist/cli/chunks/{chunk-DVPGBDBP.js → chunk-KR3M44CF.js} +3 -3
  115. package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
  116. package/dist/cli/chunks/{chunk-Y6A46M3B.js → chunk-KVBEGOJE.js} +2 -2
  117. package/dist/cli/chunks/{chunk-PZG3542B.js → chunk-L42JPFCC.js} +2 -2
  118. package/dist/cli/chunks/{chunk-J26GADQE.js → chunk-LCJTEUDC.js} +181 -181
  119. package/dist/cli/chunks/{chunk-3JD2USUH.js → chunk-LEAKYZ37.js} +2 -2
  120. package/dist/cli/chunks/{chunk-UCLN6AME.js → chunk-LMU5DUDK.js} +1 -1
  121. package/dist/cli/chunks/{chunk-EV2BYY6T.js → chunk-MZS32SYS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-LVEX4GID.js → chunk-N3KEY4XJ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-XNSQZ3O7.js → chunk-N3NP6PTT.js} +2 -2
  124. package/dist/cli/chunks/{chunk-QVG4ZDXX.js → chunk-N5PDFGCQ.js} +2 -2
  125. package/dist/cli/chunks/{chunk-6PKCQXEW.js → chunk-NDKLQW6N.js} +2 -2
  126. package/dist/cli/chunks/{chunk-6AYRAOCA.js → chunk-NHZIWIQZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-H4WHDFB5.js → chunk-NTAD5UX4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-JYXOFN3E.js → chunk-O3JLOVZX.js} +2 -2
  129. package/dist/cli/chunks/{chunk-ZLVQSEZK.js → chunk-OCESWNAZ.js} +3 -3
  130. package/dist/cli/chunks/{chunk-7EX4DEQR.js → chunk-OG2UI6A3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-3RM46XFP.js → chunk-OXTFSIGN.js} +1 -1
  132. package/dist/cli/chunks/{chunk-44DPYNPE.js → chunk-OXZLKP6C.js} +1 -1
  133. package/dist/cli/chunks/{chunk-TU4LIIOP.js → chunk-P2CXVNKK.js} +2 -2
  134. package/dist/cli/chunks/{chunk-LDZWIV2O.js → chunk-P73W2K7T.js} +1 -1
  135. package/dist/cli/chunks/{chunk-56ZKQYZY.js → chunk-PBZI2ZPV.js} +3 -3
  136. package/dist/cli/chunks/{chunk-MNCF643K.js → chunk-PMCRCEW5.js} +2 -2
  137. package/dist/cli/chunks/{chunk-4G2VNW4C.js → chunk-PVIA2FPD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-MRHM4COP.js → chunk-PX2B5TS2.js} +2 -2
  139. package/dist/cli/chunks/{chunk-HZFT3P5B.js → chunk-Q3JVJRVJ.js} +1 -1
  140. package/dist/cli/chunks/{chunk-GY2SAIXP.js → chunk-QQ5SZH4D.js} +2 -2
  141. package/dist/cli/chunks/{chunk-LP4AS2E4.js → chunk-QTVWUQTB.js} +1 -1
  142. package/dist/cli/chunks/{chunk-W4X2VTIY.js → chunk-REUFWGMA.js} +2 -2
  143. package/dist/cli/chunks/{chunk-FVBFASOD.js → chunk-SNBYYO6F.js} +2 -2
  144. package/dist/cli/chunks/{chunk-RNYX4CPI.js → chunk-SVHUYVUR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-AXO7OOOA.js → chunk-THAY7WHO.js} +2 -2
  146. package/dist/cli/chunks/{chunk-QWLTHFZW.js → chunk-TNMQVG4A.js} +2 -2
  147. package/dist/cli/chunks/{chunk-JFPXCQNP.js → chunk-TSYQDRNK.js} +1 -1
  148. package/dist/cli/chunks/{chunk-JK6B3ULP.js → chunk-TUYJ53V4.js} +2 -2
  149. package/dist/cli/chunks/{chunk-PUECC4WI.js → chunk-UNUTC6TX.js} +2 -2
  150. package/dist/cli/chunks/{chunk-ED32XJ5R.js → chunk-UOJBR4J3.js} +2 -2
  151. package/dist/cli/chunks/{chunk-CXTJ47QS.js → chunk-UOWHE77F.js} +2 -2
  152. package/dist/cli/chunks/{chunk-5KCBX225.js → chunk-UYLYMWV5.js} +2 -2
  153. package/dist/cli/chunks/{chunk-QNQSM2OG.js → chunk-V5PXQSFS.js} +2 -2
  154. package/dist/cli/chunks/{chunk-VKPKYMCT.js → chunk-VCMINU7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-QQT6QENQ.js → chunk-VQHVHVSF.js} +2 -2
  156. package/dist/cli/chunks/{chunk-634D2ENF.js → chunk-VRGCKBF7.js} +2 -2
  157. package/dist/cli/chunks/{chunk-T6W5APYP.js → chunk-VU2EL424.js} +1 -1
  158. package/dist/cli/chunks/{chunk-JY4WLN3K.js → chunk-VXZJOKOX.js} +2 -2
  159. package/dist/cli/chunks/{chunk-NZQPP533.js → chunk-VYLM2YV5.js} +3 -3
  160. package/dist/cli/chunks/{chunk-PQV7E7XH.js → chunk-W32YU3VI.js} +2 -2
  161. package/dist/cli/chunks/{chunk-RRPYWBFX.js → chunk-W5VJRDDG.js} +2 -2
  162. package/dist/cli/chunks/{chunk-7UCVYYWL.js → chunk-WGDR2KIR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-2423JAA5.js → chunk-WRRCQ2UE.js} +1 -1
  164. package/dist/cli/chunks/{chunk-RCYLCA7E.js → chunk-XDBD4GXO.js} +2 -2
  165. package/dist/cli/chunks/{chunk-PYHYOKYT.js → chunk-XOLDMK23.js} +2 -2
  166. package/dist/cli/chunks/{chunk-5KS7HA37.js → chunk-XOVNZT7F.js} +1 -1
  167. package/dist/cli/chunks/{chunk-5PBRBS7D.js → chunk-XQ3DDY7X.js} +2 -2
  168. package/dist/cli/chunks/{chunk-4DIZ5BT6.js → chunk-XUIA5KMS.js} +2 -2
  169. package/dist/cli/chunks/{chunk-G7YTZTGU.js → chunk-XWIUFYM3.js} +1 -1
  170. package/dist/cli/chunks/{chunk-B7M323VL.js → chunk-XYCKHYBM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-6OS7HREG.js → chunk-XZJ2O3VC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-BTIBXGVQ.js → chunk-YRBBBUJX.js} +5 -5
  173. package/dist/cli/chunks/{chunk-MQ6OF6DU.js → chunk-YZGSJG34.js} +1 -1
  174. package/dist/cli/chunks/{chunk-XTJMY3KS.js → chunk-YZYDTABJ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-LQOVA4YX.js → chunk-ZANDSVCK.js} +2 -2
  176. package/dist/cli/chunks/{chunk-2E3XWKEU.js → chunk-ZBDRLF43.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UUHIEM2M.js → chunk-ZVSLCEVC.js} +3 -3
  178. package/dist/cli/chunks/{chunk-Q2T5FXEA.js → chunk-ZXBCCO2H.js} +2 -2
  179. package/dist/cli/chunks/{ci-5HEXJZ2C.js → ci-7SGRCFPS.js} +2 -2
  180. package/dist/cli/chunks/{ci-config-WU4NPDAM.js → ci-config-MX3URPZA.js} +2 -2
  181. package/dist/cli/chunks/{ci-output-BJQVXX5E.js → ci-output-M47NJY6D.js} +2 -2
  182. package/dist/cli/chunks/{circuit-breaker-3BMGTQCB.js → circuit-breaker-5GAK45SW.js} +2 -2
  183. package/dist/cli/chunks/{claude-flow-setup-GVDGJWMU.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
  184. package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
  185. package/dist/cli/chunks/{cline-installer-V4MRGWVA.js → cline-installer-DLJ5QD5N.js} +2 -2
  186. package/dist/cli/chunks/{code-A3TGQPEO.js → code-ONKLMVQ2.js} +25 -24
  187. package/dist/cli/chunks/{code-index-extractor-YJQSYWD3.js → code-index-extractor-2232LGZN.js} +2 -2
  188. package/dist/cli/chunks/{codex-installer-7N7UQPAH.js → codex-installer-UOWLYCMH.js} +2 -2
  189. package/dist/cli/chunks/{completions-PPGVYLZS.js → completions-MHX7GCC7.js} +2 -2
  190. package/dist/cli/chunks/{complexity-analyzer-XZTFLYV5.js → complexity-analyzer-43ZUJKZU.js} +2 -2
  191. package/dist/cli/chunks/{continuedev-installer-Z5I57RAH.js → continuedev-installer-6Q5JR4FF.js} +2 -2
  192. package/dist/cli/chunks/{copilot-installer-F5YZ6BHB.js → copilot-installer-CZUMVHSI.js} +2 -2
  193. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
  194. package/dist/cli/chunks/{cost-tracker-GO33ZQAP.js → cost-tracker-VS5ZW3XN.js} +2 -2
  195. package/dist/cli/chunks/{coverage-GSHKLY74.js → coverage-VWKTWZ6D.js} +3 -3
  196. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
  197. package/dist/cli/chunks/{cursor-installer-JJ7IVJZB.js → cursor-installer-YIFEMORH.js} +2 -2
  198. package/dist/cli/chunks/{daemon-IRL7QRNE.js → daemon-SHWJSJW5.js} +7 -7
  199. package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
  200. package/dist/cli/chunks/{dag-attention-scheduler-ORXSUHPA.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
  201. package/dist/cli/chunks/{detect-RHU62KRI.js → detect-IGTWSQMA.js} +2 -2
  202. package/dist/cli/chunks/{dist-node-3VKV4Z6C.js → dist-node-TCOTJVQX.js} +2 -2
  203. package/dist/cli/chunks/{domain-handler-SFIML4FK.js → domain-handler-55ZVYODR.js} +2 -2
  204. package/dist/cli/chunks/{domain-plugins-CJ4FA3OC.js → domain-plugins-GJRWOHQP.js} +2 -2
  205. package/dist/cli/chunks/{domain-transfer-BCRKPCAA.js → domain-transfer-6EF75EKU.js} +2 -2
  206. package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
  207. package/dist/cli/chunks/{embed-and-insert-pattern-VL3HFLPV.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
  208. package/dist/cli/chunks/{eval-GGKRI4P5.js → eval-GO22R4OZ.js} +2 -2
  209. package/dist/cli/chunks/{experience-capture-middleware-F72TIRQY.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
  210. package/dist/cli/chunks/{fast-paths-7KOOF3MA.js → fast-paths-6RGPYALD.js} +2 -2
  211. package/dist/cli/chunks/{feature-flags-FNHBTHBH.js → feature-flags-MIWQIOHU.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-IOZEWWFU.js → feature-flags-ZGS3KLPH.js} +2 -2
  213. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +2 -0
  214. package/dist/cli/chunks/fleet-ADL57COA.js +44 -0
  215. package/dist/cli/chunks/{gnn-wrapper-OH2DOQP7.js → gnn-wrapper-ALBJVW6T.js} +2 -2
  216. package/dist/cli/chunks/{heartbeat-handler-W67NXTNE.js → heartbeat-handler-ZMM53NDY.js} +4 -4
  217. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +2 -0
  218. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +2 -0
  219. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +2 -0
  220. package/dist/cli/chunks/{hnsw-legacy-bridge-6MLLOGOE.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
  221. package/dist/cli/chunks/{hnswlib-node-4UDISJ3G.js → hnswlib-node-XM6XF3YV.js} +2 -2
  222. package/dist/cli/chunks/{hooks-NOQJWQ4P.js → hooks-X62O7TJO.js} +10 -10
  223. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
  224. package/dist/cli/chunks/{hypergraph-engine-2OD3APVP.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
  225. package/dist/cli/chunks/{hypergraph-handler-5AZGMBUM.js → hypergraph-handler-DUMF6SJV.js} +3 -3
  226. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
  227. package/dist/cli/chunks/{init-guard-SMGJ45PW.js → init-guard-S4I2R46S.js} +2 -2
  228. package/dist/cli/chunks/{init-handler-5T4MP2NM.js → init-handler-L4KJHVWS.js} +6 -6
  229. package/dist/cli/chunks/init-wizard-422UZYQ5.js +2 -0
  230. package/dist/cli/chunks/kernel-N7PJ6FCE.js +2 -0
  231. package/dist/cli/chunks/{kilocode-installer-RLZYLVQJ.js → kilocode-installer-GNNB5FCZ.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-LFZOC7VD.js → kiro-installer-HR6ZAH7T.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
  234. package/dist/cli/chunks/{learning-XRPGLUWR.js → learning-4IEEOHJS.js} +3 -3
  235. package/dist/cli/chunks/{llm-router-OMK5HYPH.js → llm-router-ZFMORP36.js} +4 -4
  236. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
  237. package/dist/cli/chunks/{load-XADC7KCU.js → load-ZM43WGDO.js} +2 -2
  238. package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
  239. package/dist/cli/chunks/{mcp-PIBKSSVU.js → mcp-CRZKZE37.js} +2 -2
  240. package/dist/cli/chunks/{memory-AP7EZERS.js → memory-W5FZGVAD.js} +5 -5
  241. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +2 -0
  242. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +2 -0
  243. package/dist/cli/chunks/{multi-model-executor-7JJ2FZ33.js → multi-model-executor-SXXGAQ2G.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-ZZZ6EBYJ.js → opencode-installer-PIRBUAB5.js} +2 -2
  245. package/dist/cli/chunks/{orchestrator-2H2YKSGJ.js → orchestrator-H5SQCQTB.js} +11 -10
  246. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
  247. package/dist/cli/chunks/{pattern-usage-recorder-7MJJWC2Z.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-LIE5BWQY.js → pipeline-5LMLBIJ7.js} +2 -2
  249. package/dist/cli/chunks/{platform-SMYUNLGX.js → platform-KJDABL5C.js} +2 -2
  250. package/dist/cli/chunks/{plugin-LJDIXQNT.js → plugin-V4KSBVVM.js} +2 -2
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-RIDNE5D2.js → prime-radiant-advanced-wasm-JDHTKQAT.js} +2 -2
  252. package/dist/cli/chunks/project-root-X72FSM2F.js +2 -0
  253. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +2 -0
  254. package/dist/cli/chunks/{protocol-handler-YVM66DLI.js → protocol-handler-BNRONTQV.js} +2 -2
  255. package/dist/cli/chunks/{prove-ZBDT52GD.js → prove-ELLL6XMX.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
  257. package/dist/cli/chunks/{quality-DUKXGDDO.js → quality-NH2QA4D4.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-SM3RXF4V.js → quality-gate-JTKLF7GW.js} +3 -3
  259. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
  260. package/dist/cli/chunks/{real-embeddings-4QLQZDB5.js → real-embeddings-J3KCKLPB.js} +2 -2
  261. package/dist/cli/chunks/{ref-validation-M3EO32YQ.js → ref-validation-HNXQRP4F.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-S6Q5OLV5.js → roocode-installer-COJ6CX6S.js} +2 -2
  263. package/dist/cli/chunks/router-CXZKOOTR.js +2 -0
  264. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +2 -0
  265. package/dist/cli/chunks/{routing-handler-55FMUACP.js → routing-handler-WM33ZILE.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-QATKAAPK.js → ruvector-commands-BBLXEA7A.js} +2 -2
  267. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +2 -0
  268. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +2 -0
  269. package/dist/cli/chunks/{rvf-migration-coordinator-RFXFU6JD.js → rvf-migration-coordinator-P7H6HCAG.js} +2 -2
  270. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +2 -0
  271. package/dist/cli/chunks/{rvf-store-integrity-PKDVXQAW.js → rvf-store-integrity-R5SPVRFP.js} +2 -2
  272. package/dist/cli/chunks/safe-db-WFODRGVZ.js +2 -0
  273. package/dist/cli/chunks/schedule-RO55OQXG.js +2 -0
  274. package/dist/cli/chunks/scheduler-XXMJCH24.js +2 -0
  275. package/dist/cli/chunks/{security-CMRB6WA3.js → security-AUDTRX3I.js} +3 -3
  276. package/dist/cli/chunks/{shared-rvf-adapter-YHLLNFHF.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-4BGDVPQ7.js → shared-rvf-dual-writer-LZ2GMSS2.js} +2 -2
  278. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +2 -0
  279. package/dist/cli/chunks/{standalone-memory-LUHKQAGM.js → standalone-memory-XNOAI4G4.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-S6S5PNR7.js → status-handler-K72XZE4T.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-PQ7NZAJ4.js → structural-health-NF3YY7U5.js} +2 -2
  282. package/dist/cli/chunks/{sync-S744AEJC.js → sync-UVXA6CT2.js} +2 -2
  283. package/dist/cli/chunks/{sync-Q6KRQXU6.js → sync-VBD5Y3E2.js} +2 -2
  284. package/dist/cli/chunks/{task-handler-GAMGEHUW.js → task-handler-24S3WFVJ.js} +13 -7
  285. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
  286. package/dist/cli/chunks/{test-FNH67DBK.js → test-XFSGQELD.js} +4 -4
  287. package/dist/cli/chunks/{test-scheduling-NZA5SHK6.js → test-scheduling-VYUQ4CDE.js} +3 -3
  288. package/dist/cli/chunks/{token-bootstrap-CXKG55JD.js → token-bootstrap-EDK6FNQ3.js} +2 -2
  289. package/dist/cli/chunks/{token-usage-M7WWEDJX.js → token-usage-VLQ6WO2L.js} +2 -2
  290. package/dist/cli/chunks/{transformers-2IFMCK6A.js → transformers-TOFMWWNM.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-NMNA6RJC.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
  292. package/dist/cli/chunks/{types-N7FWTOLD.js → types-JTWLBAZJ.js} +2 -2
  293. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +2 -0
  294. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +2 -0
  295. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +2 -0
  296. package/dist/cli/chunks/{upgrade-KDB5RGL7.js → upgrade-4ABM72T4.js} +2 -2
  297. package/dist/cli/chunks/{validate-KMUV5FUA.js → validate-UDJCWKXI.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-ANZWRCJU.js → validate-swarm-TODOUWNN.js} +2 -2
  299. package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
  300. package/dist/cli/chunks/{web-tree-sitter-SXXC4NMS.js → web-tree-sitter-WBMAJPM5.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-2LWSKMBU.js → windsurf-installer-BTT53TUL.js} +2 -2
  302. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
  303. package/dist/cli/chunks/{witness-chain-JJMSJFZP.js → witness-chain-TATPXQRK.js} +2 -2
  304. package/dist/cli/chunks/{witness-chain-repair-OX7VFW6T.js → witness-chain-repair-2HGJGE7O.js} +2 -2
  305. package/dist/cli/chunks/{witness-chain-verifier-QLSMXHAZ.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
  306. package/dist/cli/chunks/{witness-key-manager-3DS4L7LE.js → witness-key-manager-X7QHQQWL.js} +2 -2
  307. package/dist/cli/chunks/{workflow-ARWAMHD3.js → workflow-QMZPAWQW.js} +4 -4
  308. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
  309. package/dist/cli/chunks/{wrappers-J6KGTUSJ.js → wrappers-ZD5NBHYI.js} +2 -2
  310. package/dist/cli/commands/code.js +8 -0
  311. package/dist/cli/commands/daemon.js +8 -0
  312. package/dist/cli/commands/fleet.js +14 -9
  313. package/dist/cli/handlers/task-handler.js +21 -1
  314. package/dist/coordination/handlers/code-intelligence-handlers.js +14 -2
  315. package/dist/coordination/handlers/coverage-collection.js +9 -10
  316. package/dist/coordination/handlers/coverage-handlers.js +21 -3
  317. package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
  318. package/dist/coordination/handlers/coverage-runner.js +9 -2
  319. package/dist/coordination/handlers/coverage-target.d.ts +13 -3
  320. package/dist/coordination/handlers/coverage-target.js +224 -7
  321. package/dist/coordination/handlers/handler-types.d.ts +2 -0
  322. package/dist/coordination/handlers/test-execution-handlers.js +32 -5
  323. package/dist/coordination/index.d.ts +2 -2
  324. package/dist/coordination/index.js +1 -1
  325. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +39 -0
  326. package/dist/coordination/protocols/learning-consolidation-archive.js +57 -0
  327. package/dist/coordination/protocols/learning-consolidation.d.ts +38 -3
  328. package/dist/coordination/protocols/learning-consolidation.js +130 -58
  329. package/dist/coordination/queen-coordinator.d.ts +12 -1
  330. package/dist/coordination/queen-coordinator.js +24 -1
  331. package/dist/coordination/queen-event-handlers.js +2 -1
  332. package/dist/coordination/queen-lifecycle.js +9 -0
  333. package/dist/coordination/queen-task-management.js +113 -40
  334. package/dist/coordination/queen-types.d.ts +10 -0
  335. package/dist/coordination/queen-types.js +8 -0
  336. package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
  337. package/dist/coordination/task-dag/dag-algorithms.js +162 -0
  338. package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
  339. package/dist/coordination/task-dag/dag-obligations.js +83 -0
  340. package/dist/coordination/task-dag/dag.d.ts +69 -19
  341. package/dist/coordination/task-dag/dag.js +215 -269
  342. package/dist/coordination/task-dag/index.d.ts +12 -4
  343. package/dist/coordination/task-dag/index.js +11 -3
  344. package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
  345. package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
  346. package/dist/coordination/task-dag/scheduler.d.ts +19 -9
  347. package/dist/coordination/task-dag/scheduler.js +36 -12
  348. package/dist/coordination/task-dag/types.d.ts +160 -1
  349. package/dist/coordination/task-dag/types.js +2 -1
  350. package/dist/coordination/task-executability.d.ts +18 -0
  351. package/dist/coordination/task-executability.js +31 -0
  352. package/dist/coordination/task-executor.d.ts +1 -0
  353. package/dist/coordination/task-executor.js +5 -0
  354. package/dist/domains/code-intelligence/coordinator.js +35 -9
  355. package/dist/domains/code-intelligence/index-path-guard.d.ts +49 -0
  356. package/dist/domains/code-intelligence/index-path-guard.js +125 -0
  357. package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
  358. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
  359. package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
  360. package/dist/domains/contract-testing/coordinator.js +3 -1
  361. package/dist/domains/coverage-analysis/collected-metrics.js +2 -1
  362. package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
  363. package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
  364. package/dist/domains/learning-optimization/active-patterns.js +80 -0
  365. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  366. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  367. package/dist/domains/learning-optimization/coordinator.js +50 -106
  368. package/dist/domains/learning-optimization/index.d.ts +1 -1
  369. package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
  370. package/dist/domains/learning-optimization/plugin.js +11 -1
  371. package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
  372. package/dist/domains/learning-optimization/reward-source.js +58 -0
  373. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
  374. package/dist/domains/learning-optimization/services/learning-coordinator.js +68 -34
  375. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  376. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  377. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  378. package/dist/domains/test-execution/interfaces.d.ts +16 -0
  379. package/dist/domains/test-execution/services/retry-handler.js +18 -2
  380. package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
  381. package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
  382. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  383. package/dist/domains/test-execution/services/test-executor.js +24 -2
  384. package/dist/init/fleet-integration.js +2 -0
  385. package/dist/init/init-wizard-steps.js +2 -0
  386. package/dist/init/phases/06-code-intelligence.js +2 -0
  387. package/dist/init/phases/10-workers.js +2 -1
  388. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  389. package/dist/kernel/anti-drift-middleware.js +147 -11
  390. package/dist/kernel/interfaces.d.ts +5 -0
  391. package/dist/learning/dream/dream-engine.d.ts +27 -1
  392. package/dist/learning/dream/dream-engine.js +56 -2
  393. package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
  394. package/dist/learning/dream/dream-insights-pruner.js +99 -11
  395. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
  396. package/dist/learning/dream/rvcow-branch-manager.js +8 -0
  397. package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
  398. package/dist/learning/dream/speculative-dreamer.js +8 -0
  399. package/dist/learning/skill-validation-learner.d.ts +2 -0
  400. package/dist/learning/skill-validation-learner.js +29 -21
  401. package/dist/mcp/background-workers.d.ts +15 -0
  402. package/dist/mcp/background-workers.js +77 -0
  403. package/dist/mcp/bundle.js +511 -484
  404. package/dist/mcp/entry.js +4 -49
  405. package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
  406. package/dist/mcp/handlers/domain-handler-configs.js +68 -30
  407. package/dist/mcp/handlers/handler-factory.js +1 -0
  408. package/dist/mcp/handlers/task-handlers.js +37 -1
  409. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  410. package/dist/mcp/metrics/metrics-collector.js +13 -26
  411. package/dist/mcp/protocol-server.js +8 -3
  412. package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
  413. package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
  414. package/dist/memory/crdt/lww-register.js +11 -1
  415. package/dist/routing/calibration/ema-calibrator.js +3 -1
  416. package/dist/shared/base-domain-plugin.d.ts +4 -0
  417. package/dist/shared/base-domain-plugin.js +6 -0
  418. package/dist/shared/llm/cache.js +4 -1
  419. package/dist/shared/security/compliance-patterns.js +3 -1
  420. package/dist/shared/test-runner-process.d.ts +26 -0
  421. package/dist/shared/test-runner-process.js +91 -0
  422. package/dist/shared/types/index.d.ts +9 -0
  423. package/dist/shared/types/index.js +13 -0
  424. package/dist/shared/utils/namespaced-search.d.ts +42 -0
  425. package/dist/shared/utils/namespaced-search.js +53 -0
  426. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  427. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  428. package/dist/workers/daemon.d.ts +7 -0
  429. package/dist/workers/daemon.js +21 -2
  430. package/dist/workers/namespaced-keys.d.ts +4 -7
  431. package/dist/workers/namespaced-keys.js +4 -15
  432. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  433. package/dist/workers/worker-env.d.ts +53 -0
  434. package/dist/workers/worker-env.js +89 -0
  435. package/dist/workers/worker-manager.js +4 -0
  436. package/dist/workers/workers/learning-consolidation.d.ts +20 -0
  437. package/dist/workers/workers/learning-consolidation.js +57 -23
  438. package/package.json +1 -1
  439. package/dist/cli/chunks/adapter-PEOUNYXJ.js +0 -2
  440. package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +0 -2
  441. package/dist/cli/chunks/base-QZWK3D5P.js +0 -2
  442. package/dist/cli/chunks/browser-workflow-ITPX72RX.js +0 -2
  443. package/dist/cli/chunks/chunk-CG5DZCOZ.js +0 -2
  444. package/dist/cli/chunks/chunk-QJE6ZW2X.js +0 -6
  445. package/dist/cli/chunks/chunk-T3ZDVU6F.js +0 -5
  446. package/dist/cli/chunks/chunk-UIYKR2SA.js +0 -2
  447. package/dist/cli/chunks/chunk-VJRZFWR5.js +0 -2
  448. package/dist/cli/chunks/chunk-VUFRTGML.js +0 -3
  449. package/dist/cli/chunks/chunk-YDZJWDR6.js +0 -180
  450. package/dist/cli/chunks/client-S7GNYTZ5.js +0 -2
  451. package/dist/cli/chunks/core-handlers-CUEPOQIO.js +0 -2
  452. package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +0 -2
  453. package/dist/cli/chunks/daemon-3DQCKRYO.js +0 -10
  454. package/dist/cli/chunks/dream-5AUNJW24.js +0 -2
  455. package/dist/cli/chunks/file-discovery-AYWF357I.js +0 -2
  456. package/dist/cli/chunks/fleet-QX5KXTRC.js +0 -43
  457. package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +0 -2
  458. package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +0 -2
  459. package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +0 -2
  460. package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +0 -2
  461. package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +0 -2
  462. package/dist/cli/chunks/init-wizard-MK2325JJ.js +0 -2
  463. package/dist/cli/chunks/kernel-2NJQQ2KT.js +0 -2
  464. package/dist/cli/chunks/knowledge-graph-SDISHO62.js +0 -2
  465. package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +0 -2
  466. package/dist/cli/chunks/load-test-RPKHLBCC.js +0 -2
  467. package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +0 -2
  468. package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +0 -2
  469. package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +0 -2
  470. package/dist/cli/chunks/project-root-NBIQF63D.js +0 -2
  471. package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +0 -2
  472. package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +0 -2
  473. package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +0 -2
  474. package/dist/cli/chunks/router-H5YSIRH2.js +0 -2
  475. package/dist/cli/chunks/routing-feedback-5R36TJDH.js +0 -2
  476. package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +0 -2
  477. package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +0 -2
  478. package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +0 -2
  479. package/dist/cli/chunks/safe-db-MSTD2GDH.js +0 -2
  480. package/dist/cli/chunks/schedule-KST6KIFD.js +0 -2
  481. package/dist/cli/chunks/scheduler-FTQS6YK3.js +0 -2
  482. package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +0 -2
  483. package/dist/cli/chunks/task-handlers-6CRDEELN.js +0 -9
  484. package/dist/cli/chunks/unified-memory-2Z2F446J.js +0 -2
  485. package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +0 -2
  486. package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +0 -2
  487. package/dist/cli/chunks/visual-security-GXYZV7KR.js +0 -2
  488. package/dist/cli/chunks/witness-chain-52PEIEGK.js +0 -2
  489. package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.js +0 -2
@@ -22,8 +22,8 @@ export { DomainTeamManager, createDomainTeamManager, DEFAULT_DOMAIN_TEAM_MANAGER
22
22
  export type { DomainTeamManagerConfig, DomainTeam, DomainTeamHealth, ScaleResult, RebalanceResult, } from './agent-teams/domain-team-manager';
23
23
  export { TierSelector, createTierSelector, ALL_USER_FACING_DOMAINS, CORE_PRIORITY_DOMAINS, DEFAULT_DOMAIN_AGENT_MAP, DEFAULT_TIER_CONFIGS, getDefaultTierConfig, validateTierConfig, FLEET_TIER_ORDER, } from './fleet-tiers';
24
24
  export type { FleetTier, TierConfig, TierSelectionContext, AgentAllocation, TierSelectionResult, TierSelectionRecord, TierSelectionStats, } from './fleet-tiers';
25
- export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, } from './task-dag';
26
- export type { DAGTaskStatus, DAGTask, AddTaskInput, DAGStats, DAGEventType, DAGEvent, DAGSchedulerConfig, DAGEventHandler, } from './task-dag';
25
+ export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, PREREQUISITE_RECEIPT_SCHEMA, GraphRevisionConflictError, PrerequisiteWaiverError, } from './task-dag';
26
+ export type { DAGTaskStatus, DAGTask, AddTaskInput, DAGStats, DAGEventType, DAGEvent, DAGSchedulerConfig, DAGEventHandler, PrerequisiteDisposition, PrerequisiteReceiptV1, PrerequisiteEdgeState, WaivePrerequisiteInput, WaiverPolicy, TaskDAGOptions, ObligationSummary, DAGProgress, } from './task-dag';
27
27
  export { DomainCircuitBreaker, DomainCircuitOpenError, DEFAULT_DOMAIN_BREAKER_CONFIG, DomainBreakerRegistry, DOMAIN_CRITICALITY_CONFIGS, DOMAIN_CRITICALITY, createDomainCircuitBreaker, createDomainBreakerRegistry, } from './circuit-breaker';
28
28
  export type { DomainBreakerState, DomainCircuitBreakerConfig, DomainBreakerStats, DomainBreakerEvent, DomainBreakerStateChangeHandler, DomainCriticalityConfig, DomainCriticalityLevel, DomainBreakerHealthSummary, } from './circuit-breaker';
29
29
  export { HypothesisManager, createHypothesisManager, DEFAULT_COMPETING_HYPOTHESES_CONFIG, } from './competing-hypotheses';
@@ -72,7 +72,7 @@ export { TierSelector, createTierSelector, ALL_USER_FACING_DOMAINS, CORE_PRIORIT
72
72
  // ============================================================================
73
73
  // Task Dependency DAG (ADR-064: DAG-Based Task Scheduling)
74
74
  // ============================================================================
75
- export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, } from './task-dag/index.js';
75
+ export { TaskDAG, DAGScheduler, createTaskDAG, createDAGScheduler, PREREQUISITE_RECEIPT_SCHEMA, GraphRevisionConflictError, PrerequisiteWaiverError, } from './task-dag/index.js';
76
76
  // ============================================================================
77
77
  // Domain Circuit Breakers (ADR-064: Domain-Level Fault Isolation)
78
78
  // ============================================================================
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Agentic QE v3 - Learning consolidation: pattern archiving (#1071)
3
+ *
4
+ * The consolidation protocol archives patterns it selected for removal.
5
+ * Archiving is a move inside the `learning-optimization` namespace, where
6
+ * `LearningCoordinatorService` writes every learned pattern:
7
+ *
8
+ * learning:pattern:<id> -> learning:pattern:archived:<id>
9
+ *
10
+ * Safety rules:
11
+ * - Only the active key of a pattern the protocol selected is deleted.
12
+ * - The active record must still be the selected pattern (same id, and the
13
+ * same scores and last use) when the archive runs, or nothing is written or
14
+ * deleted. A pattern used or re-scored since it was selected is left active.
15
+ * - The archive copy is read back before the active key is deleted, so a
16
+ * failed write never loses the pattern.
17
+ */
18
+ import type { MemoryBackend } from '../../kernel/interfaces.js';
19
+ import type { LearnedPattern } from '../../domains/learning-optimization/interfaces.js';
20
+ export type ArchiveOutcome = 'archived' | 'missing' | 'failed';
21
+ /** Counts of one consolidation run's archive step, for logs and results. */
22
+ export interface ArchiveCounts {
23
+ /** Patterns the retention and trim rules selected for removal. */
24
+ selected: number;
25
+ /** Selected patterns moved to `:archived:` and removed from the active set. */
26
+ archived: number;
27
+ /** Selected patterns whose active record was gone or changed; left alone. */
28
+ missing: number;
29
+ /** Selected patterns whose archive copy could not be verified; left active. */
30
+ failed: number;
31
+ }
32
+ export declare function emptyArchiveCounts(): ArchiveCounts;
33
+ /**
34
+ * Move one selected pattern to its archive key in the learning namespace.
35
+ */
36
+ export declare function archiveSelectedPattern(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<ArchiveOutcome>;
37
+ /** True when the pattern was created less than `graceDays` days ago. */
38
+ export declare function isWithinRetentionGrace(pattern: LearnedPattern, graceDays: number, now?: number): boolean;
39
+ //# sourceMappingURL=learning-consolidation-archive.d.ts.map
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Agentic QE v3 - Learning consolidation: pattern archiving (#1071)
3
+ *
4
+ * The consolidation protocol archives patterns it selected for removal.
5
+ * Archiving is a move inside the `learning-optimization` namespace, where
6
+ * `LearningCoordinatorService` writes every learned pattern:
7
+ *
8
+ * learning:pattern:<id> -> learning:pattern:archived:<id>
9
+ *
10
+ * Safety rules:
11
+ * - Only the active key of a pattern the protocol selected is deleted.
12
+ * - The active record must still be the selected pattern (same id, and the
13
+ * same scores and last use) when the archive runs, or nothing is written or
14
+ * deleted. A pattern used or re-scored since it was selected is left active.
15
+ * - The archive copy is read back before the active key is deleted, so a
16
+ * failed write never loses the pattern.
17
+ */
18
+ import { LEARNING_NS, LEARNING_PATTERN_KEY_PREFIX, isActivePatternKey, } from '../../domains/learning-optimization/active-patterns.js';
19
+ export function emptyArchiveCounts() {
20
+ return { selected: 0, archived: 0, missing: 0, failed: 0 };
21
+ }
22
+ /**
23
+ * Move one selected pattern to its archive key in the learning namespace.
24
+ */
25
+ export async function archiveSelectedPattern(memory, pattern, archivedAt = new Date()) {
26
+ const activeKey = `${LEARNING_PATTERN_KEY_PREFIX}${pattern.id}`;
27
+ if (!isActivePatternKey(activeKey))
28
+ return 'missing';
29
+ const current = await memory.get(activeKey, LEARNING_NS);
30
+ if (!current || current.id !== pattern.id || changedSinceSelection(current, pattern))
31
+ return 'missing';
32
+ const archiveKey = `${LEARNING_PATTERN_KEY_PREFIX}archived:${pattern.id}`;
33
+ await memory.set(archiveKey, { ...pattern, archivedAt }, { ...LEARNING_NS, persist: true });
34
+ const copy = await memory.get(archiveKey, LEARNING_NS);
35
+ if (!copy || copy.id !== pattern.id)
36
+ return 'failed';
37
+ await memory.delete(activeKey, LEARNING_NS);
38
+ return 'archived';
39
+ }
40
+ /** True when the stored record's scores or last use differ from the selected snapshot. */
41
+ function changedSinceSelection(current, selected) {
42
+ const time = (value) => new Date(value).getTime();
43
+ return (!Object.is(current.usageCount, selected.usageCount) ||
44
+ !Object.is(current.confidence, selected.confidence) ||
45
+ !Object.is(current.successRate, selected.successRate) ||
46
+ !Object.is(time(current.lastUsedAt), time(selected.lastUsedAt)));
47
+ }
48
+ /** True when the pattern was created less than `graceDays` days ago. */
49
+ export function isWithinRetentionGrace(pattern, graceDays, now = Date.now()) {
50
+ if (graceDays <= 0)
51
+ return false;
52
+ const created = new Date(pattern.createdAt).getTime();
53
+ if (!Number.isFinite(created))
54
+ return false;
55
+ return now - created < graceDays * 24 * 60 * 60 * 1000;
56
+ }
57
+ //# sourceMappingURL=learning-consolidation-archive.js.map
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { Result, DomainName, DomainEvent } from '../../shared/types/index.js';
9
9
  import { EventBus, MemoryBackend } from '../../kernel/interfaces.js';
10
+ import { type ArchiveCounts } from './learning-consolidation-archive.js';
10
11
  import type { LearnedPattern, PatternType, IPatternLearningService, IKnowledgeSynthesisService } from '../../domains/learning-optimization/interfaces.js';
11
12
  export interface LearningConsolidationConfig {
12
13
  /** Minimum patterns per domain to trigger consolidation */
@@ -21,6 +22,18 @@ export interface LearningConsolidationConfig {
21
22
  analysisWindowWeeks: number;
22
23
  /** Enable cross-project transfer */
23
24
  enableCrossProjectTransfer: boolean;
25
+ /**
26
+ * Report what would be merged and archived without writing anything
27
+ * (#1071). On by default: the protocol reads the real learned patterns in
28
+ * `learning-optimization`, so archiving them is opt-in (`dryRun: false`).
29
+ */
30
+ dryRun: boolean;
31
+ /**
32
+ * Patterns created less than this many days ago are never archived by the
33
+ * retention or trim rules, so a new pattern gets time to build confidence
34
+ * and usage before it is judged (#1071).
35
+ */
36
+ retentionGraceDays: number;
24
37
  }
25
38
  export interface LearningConsolidationStartedEvent extends DomainEvent {
26
39
  readonly type: 'LearningConsolidationStarted';
@@ -39,6 +52,7 @@ export interface PatternConsolidatedEvent extends DomainEvent {
39
52
  patternsAfterCount: number;
40
53
  mergedPatternIds: string[];
41
54
  removedPatternIds: string[];
55
+ dryRun: boolean;
42
56
  };
43
57
  }
44
58
  export interface LearningConsolidationCompletedEvent extends DomainEvent {
@@ -48,6 +62,7 @@ export interface LearningConsolidationCompletedEvent extends DomainEvent {
48
62
  stats: ConsolidationStats;
49
63
  insights: WeeklyInsight[];
50
64
  duration: number;
65
+ dryRun: boolean;
51
66
  };
52
67
  }
53
68
  export interface TransferReadyEvent extends DomainEvent {
@@ -75,7 +90,10 @@ export interface ConsolidationStats {
75
90
  domainsProcessed: number;
76
91
  totalPatternsAnalyzed: number;
77
92
  patternsMerged: number;
93
+ /** Patterns selected for removal (in a dry run, the ones that would be). */
78
94
  patternsRemoved: number;
95
+ /** Selected patterns actually archived (always 0 in a dry run). */
96
+ patternsArchived: number;
79
97
  patternsRetained: number;
80
98
  knowledgeItemsUpdated: number;
81
99
  improvementOpportunities: number;
@@ -99,6 +117,8 @@ export interface TransferablePattern {
99
117
  }
100
118
  export interface ConsolidationResult {
101
119
  consolidationId: string;
120
+ /** True when nothing was merged, archived or written (#1071). */
121
+ dryRun: boolean;
102
122
  startedAt: Date;
103
123
  completedAt: Date;
104
124
  stats: ConsolidationStats;
@@ -112,10 +132,13 @@ export interface DomainConsolidationReport {
112
132
  patternsAfterCount: number;
113
133
  mergedPatterns: MergedPatternInfo[];
114
134
  removedPatterns: RemovedPatternInfo[];
135
+ /** Outcome of archiving `removedPatterns` (all zero but `selected` in a dry run). */
136
+ archiveCounts: ArchiveCounts;
115
137
  topPerformingPatterns: LearnedPattern[];
116
138
  improvementAreas: string[];
117
139
  }
118
140
  export interface MergedPatternInfo {
141
+ /** Id of the merged pattern; empty in a dry run, where nothing is merged. */
119
142
  resultPatternId: string;
120
143
  sourcePatternIds: string[];
121
144
  mergeReason: string;
@@ -148,7 +171,15 @@ export declare class LearningConsolidationProtocol {
148
171
  */
149
172
  gatherPatterns(): Promise<Result<DomainPatternGroup[]>>;
150
173
  /**
151
- * Get patterns for a specific domain
174
+ * Every active learned pattern, read once per run.
175
+ *
176
+ * #1055: active patterns only, excluding `:creation:` provenance and
177
+ * `:archived:` records. #1071: read from `learning-optimization`, where
178
+ * LearningCoordinatorService writes them, not the backend default.
179
+ */
180
+ private readActivePatterns;
181
+ /**
182
+ * Patterns of one domain created or used within the analysis window
152
183
  */
153
184
  private getPatternsForDomain;
154
185
  /**
@@ -183,10 +214,14 @@ export declare class LearningConsolidationProtocol {
183
214
  * Get reason for pattern removal
184
215
  */
185
216
  private getRemovalReason;
217
+ /** True while a pattern is too new for the retention and trim rules. */
218
+ private isInGracePeriod;
186
219
  /**
187
- * Archive a pattern (soft delete)
220
+ * Archive the selected patterns (soft delete in `learning-optimization`,
221
+ * #1071). Only the selected patterns are touched, and a dry run touches
222
+ * none. Counts are logged per domain.
188
223
  */
189
- private archivePattern;
224
+ private archivePatterns;
190
225
  /**
191
226
  * Trim patterns to max allowed per domain
192
227
  */
@@ -9,6 +9,12 @@ import { v4 as uuidv4 } from 'uuid';
9
9
  import { ok, err, ALL_DOMAINS, } from '../../shared/types/index.js';
10
10
  import { TimeRange } from '../../shared/value-objects/index.js';
11
11
  import { toError } from '../../shared/error-utils.js';
12
+ import { rehydrateDates } from '../../shared/utils/kv-date-rehydrate.js';
13
+ import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
14
+ import { LoggerFactory } from '../../logging/index.js';
15
+ import { readActivePatterns, LEARNING_NS, } from '../../domains/learning-optimization/active-patterns.js';
16
+ import { archiveSelectedPattern, emptyArchiveCounts, isWithinRetentionGrace, } from './learning-consolidation-archive.js';
17
+ const logger = LoggerFactory.create('learning-consolidation-protocol');
12
18
  const DEFAULT_CONFIG = {
13
19
  minPatternsForConsolidation: 5,
14
20
  similarityThreshold: 0.85,
@@ -16,6 +22,8 @@ const DEFAULT_CONFIG = {
16
22
  minConfidenceThreshold: 0.5,
17
23
  analysisWindowWeeks: 4,
18
24
  enableCrossProjectTransfer: true,
25
+ dryRun: true,
26
+ retentionGraceDays: 7,
19
27
  };
20
28
  // ============================================================================
21
29
  // Learning Consolidation Protocol Implementation
@@ -61,20 +69,29 @@ export class LearningConsolidationProtocol {
61
69
  const domainReports = [];
62
70
  let totalMerged = 0;
63
71
  let totalRemoved = 0;
72
+ let totalArchived = 0;
64
73
  let totalRetained = 0;
74
+ const dryRun = this.config.dryRun;
65
75
  for (const domainGroup of gatheredPatterns.value) {
66
76
  const consolidationResult = await this.consolidatePatterns(consolidationId, domainGroup);
67
77
  if (consolidationResult.success) {
68
78
  domainReports.push(consolidationResult.value);
69
79
  totalMerged += consolidationResult.value.mergedPatterns.length;
70
80
  totalRemoved += consolidationResult.value.removedPatterns.length;
81
+ totalArchived += consolidationResult.value.archiveCounts.archived;
71
82
  totalRetained += consolidationResult.value.patternsAfterCount;
72
83
  }
73
84
  }
74
- // Step 3: Update knowledge base with consolidated patterns
75
- const knowledgeUpdateResult = await this.updateKnowledgeBase(domainReports);
76
- // Step 4: Prepare patterns for cross-project transfer
77
- const transferResult = await this.prepareTransfer(consolidationId, domainReports);
85
+ // Step 3: Update knowledge base with consolidated patterns (writes, so
86
+ // skipped in a dry run)
87
+ const knowledgeUpdateResult = dryRun
88
+ ? ok(0)
89
+ : await this.updateKnowledgeBase(domainReports);
90
+ // Step 4: Prepare patterns for cross-project transfer (a dry run does
91
+ // not announce transfers for patterns it did not consolidate)
92
+ const transferResult = dryRun
93
+ ? ok([])
94
+ : await this.prepareTransfer(consolidationId, domainReports);
78
95
  // Step 5: Generate weekly insights
79
96
  const insights = await this.generateInsights(gatheredPatterns.value, domainReports);
80
97
  const completedAt = new Date();
@@ -84,6 +101,7 @@ export class LearningConsolidationProtocol {
84
101
  totalPatternsAnalyzed: gatheredPatterns.value.reduce((sum, g) => sum + g.patterns.length, 0),
85
102
  patternsMerged: totalMerged,
86
103
  patternsRemoved: totalRemoved,
104
+ patternsArchived: totalArchived,
87
105
  patternsRetained: totalRetained,
88
106
  knowledgeItemsUpdated: knowledgeUpdateResult.success
89
107
  ? knowledgeUpdateResult.value
@@ -93,10 +111,20 @@ export class LearningConsolidationProtocol {
93
111
  ? transferResult.value.length
94
112
  : 0,
95
113
  };
114
+ logger.info('Learning consolidation finished', {
115
+ consolidationId,
116
+ dryRun,
117
+ analyzed: stats.totalPatternsAnalyzed,
118
+ merged: totalMerged,
119
+ selectedForRemoval: totalRemoved,
120
+ archived: totalArchived,
121
+ retained: totalRetained,
122
+ });
96
123
  // Publish completion event
97
124
  await this.publishCompletedEvent(consolidationId, stats, insights, duration);
98
125
  const result = {
99
126
  consolidationId,
127
+ dryRun,
100
128
  startedAt,
101
129
  completedAt,
102
130
  stats,
@@ -105,7 +133,9 @@ export class LearningConsolidationProtocol {
105
133
  domainReports,
106
134
  };
107
135
  // Store result for historical analysis
108
- await this.storeConsolidationResult(result);
136
+ if (!dryRun) {
137
+ await this.storeConsolidationResult(result);
138
+ }
109
139
  return ok(result);
110
140
  }
111
141
  catch (error) {
@@ -122,8 +152,9 @@ export class LearningConsolidationProtocol {
122
152
  try {
123
153
  const domainGroups = [];
124
154
  const timeRange = TimeRange.lastNDays(this.config.analysisWindowWeeks * 7);
155
+ const activePatterns = await this.readActivePatterns();
125
156
  for (const domain of ALL_DOMAINS) {
126
- const patterns = await this.getPatternsForDomain(domain, timeRange);
157
+ const patterns = this.getPatternsForDomain(activePatterns, domain, timeRange);
127
158
  if (patterns.length > 0) {
128
159
  const stats = this.calculateDomainStats(patterns, timeRange);
129
160
  domainGroups.push({ domain, patterns, stats });
@@ -136,21 +167,21 @@ export class LearningConsolidationProtocol {
136
167
  }
137
168
  }
138
169
  /**
139
- * Get patterns for a specific domain
170
+ * Every active learned pattern, read once per run.
171
+ *
172
+ * #1055: active patterns only, excluding `:creation:` provenance and
173
+ * `:archived:` records. #1071: read from `learning-optimization`, where
174
+ * LearningCoordinatorService writes them, not the backend default.
140
175
  */
141
- async getPatternsForDomain(domain, timeRange) {
142
- const keys = await this.memory.search(`learning:pattern:*`, 500);
143
- const patterns = [];
144
- for (const key of keys) {
145
- const pattern = await this.memory.get(key);
146
- if (pattern &&
147
- pattern.domain === domain &&
148
- !key.includes(':archived:') &&
149
- (timeRange.contains(pattern.createdAt) || timeRange.contains(pattern.lastUsedAt))) {
150
- patterns.push(pattern);
151
- }
152
- }
153
- return patterns;
176
+ readActivePatterns() {
177
+ return readActivePatterns(this.memory, { retrieve: LEARNING_NS });
178
+ }
179
+ /**
180
+ * Patterns of one domain created or used within the analysis window
181
+ */
182
+ getPatternsForDomain(patterns, domain, timeRange) {
183
+ return patterns.filter((pattern) => pattern.domain === domain &&
184
+ (timeRange.contains(pattern.createdAt) || timeRange.contains(pattern.lastUsedAt)));
154
185
  }
155
186
  /**
156
187
  * Calculate statistics for a domain's patterns
@@ -209,10 +240,23 @@ export class LearningConsolidationProtocol {
209
240
  const mergedPatterns = [];
210
241
  const removedPatterns = [];
211
242
  const retainedPatterns = [];
243
+ const toArchive = [];
244
+ // Patterns in their grace period are never merged either: a merge
245
+ // archives every source pattern (#1071).
246
+ retainedPatterns.push(...patterns.filter((p) => this.isInGracePeriod(p)));
212
247
  // Group similar patterns for merging
213
- const similarGroups = this.groupSimilarPatterns(patterns);
248
+ const similarGroups = this.groupSimilarPatterns(patterns.filter((p) => !this.isInGracePeriod(p)));
214
249
  for (const group of similarGroups) {
215
- if (group.length >= 2) {
250
+ if (group.length >= 2 && this.config.dryRun) {
251
+ // Dry run: report the merge, keep every source pattern
252
+ mergedPatterns.push({
253
+ resultPatternId: '',
254
+ sourcePatternIds: group.map((p) => p.id),
255
+ mergeReason: 'Similar pattern context and template',
256
+ });
257
+ retainedPatterns.push(...group);
258
+ }
259
+ else if (group.length >= 2) {
216
260
  // Merge similar patterns
217
261
  const mergeResult = await this.mergePatternGroup(group);
218
262
  if (mergeResult.success) {
@@ -236,32 +280,34 @@ export class LearningConsolidationProtocol {
236
280
  name: pattern.name,
237
281
  removalReason: this.getRemovalReason(pattern),
238
282
  });
239
- await this.archivePattern(pattern);
283
+ toArchive.push(pattern);
240
284
  }
241
285
  }
242
286
  }
243
- // Trim to max patterns if needed
287
+ // Trim to max patterns if needed. Patterns in their grace period are
288
+ // never trimmed; they stay on top of the kept set.
244
289
  const finalPatterns = this.trimToMaxPatterns(retainedPatterns, domain);
245
- const trimmedCount = retainedPatterns.length - finalPatterns.length;
246
- if (trimmedCount > 0) {
247
- const trimmed = retainedPatterns.slice(finalPatterns.length);
248
- for (const p of trimmed) {
249
- removedPatterns.push({
250
- patternId: p.id,
251
- name: p.name,
252
- removalReason: 'Exceeded max patterns per domain limit',
253
- });
254
- await this.archivePattern(p);
255
- }
290
+ const kept = new Set(finalPatterns.map((p) => p.id));
291
+ for (const p of retainedPatterns) {
292
+ if (kept.has(p.id))
293
+ continue;
294
+ removedPatterns.push({
295
+ patternId: p.id,
296
+ name: p.name,
297
+ removalReason: 'Exceeded max patterns per domain limit',
298
+ });
299
+ toArchive.push(p);
256
300
  }
301
+ const archiveCounts = await this.archivePatterns(domain, toArchive);
257
302
  // Publish domain consolidation event
258
- await this.publishPatternConsolidatedEvent(consolidationId, domain, patterns.length, finalPatterns.length, mergedPatterns.map((m) => m.resultPatternId), removedPatterns.map((r) => r.patternId));
303
+ await this.publishPatternConsolidatedEvent(consolidationId, domain, patterns.length, finalPatterns.length, mergedPatterns.map((m) => m.resultPatternId), removedPatterns.map((r) => r.patternId), this.config.dryRun);
259
304
  const report = {
260
305
  domain,
261
306
  patternsBeforeCount: patterns.length,
262
307
  patternsAfterCount: finalPatterns.length,
263
308
  mergedPatterns,
264
309
  removedPatterns,
310
+ archiveCounts,
265
311
  topPerformingPatterns: this.getTopPerformingPatterns(finalPatterns, 5),
266
312
  improvementAreas: this.identifyImprovementAreas(domainGroup),
267
313
  };
@@ -385,17 +431,30 @@ export class LearningConsolidationProtocol {
385
431
  }
386
432
  return 'Below retention threshold';
387
433
  }
434
+ /** True while a pattern is too new for the retention and trim rules. */
435
+ isInGracePeriod(pattern) {
436
+ return isWithinRetentionGrace(pattern, this.config.retentionGraceDays);
437
+ }
388
438
  /**
389
- * Archive a pattern (soft delete)
439
+ * Archive the selected patterns (soft delete in `learning-optimization`,
440
+ * #1071). Only the selected patterns are touched, and a dry run touches
441
+ * none. Counts are logged per domain.
390
442
  */
391
- async archivePattern(pattern) {
392
- // Move to archived namespace
393
- await this.memory.set(`learning:pattern:archived:${pattern.id}`, {
394
- ...pattern,
395
- archivedAt: new Date(),
396
- }, { namespace: 'learning-optimization', persist: true });
397
- // Delete from active patterns
398
- await this.memory.delete(`learning:pattern:${pattern.id}`);
443
+ async archivePatterns(domain, selected) {
444
+ const counts = emptyArchiveCounts();
445
+ counts.selected = selected.length;
446
+ if (!this.config.dryRun) {
447
+ for (const pattern of selected) {
448
+ counts[await archiveSelectedPattern(this.memory, pattern)]++;
449
+ }
450
+ }
451
+ if (counts.selected > 0) {
452
+ logger.info('Learning consolidation archive step', { domain, dryRun: this.config.dryRun, ...counts });
453
+ }
454
+ if (counts.failed > 0) {
455
+ logger.warn('Some selected patterns could not be archived and were left active', { domain, failed: counts.failed });
456
+ }
457
+ return counts;
399
458
  }
400
459
  /**
401
460
  * Trim patterns to max allowed per domain
@@ -404,14 +463,18 @@ export class LearningConsolidationProtocol {
404
463
  if (patterns.length <= this.config.maxPatternsPerDomain) {
405
464
  return patterns;
406
465
  }
407
- // Sort by effectiveness score and keep top N
408
- return patterns
409
- .sort((a, b) => {
410
- const scoreA = a.confidence * 0.4 + a.successRate * 0.4 + Math.min(a.usageCount / 100, 0.2);
411
- const scoreB = b.confidence * 0.4 + b.successRate * 0.4 + Math.min(b.usageCount / 100, 0.2);
412
- return scoreB - scoreA;
413
- })
414
- .slice(0, this.config.maxPatternsPerDomain);
466
+ // Patterns in their grace period are always kept; the rest compete for
467
+ // the remaining places by effectiveness score.
468
+ const young = patterns.filter((p) => this.isInGracePeriod(p));
469
+ const eligible = patterns.filter((p) => !this.isInGracePeriod(p));
470
+ const places = Math.max(0, this.config.maxPatternsPerDomain - young.length);
471
+ return [...young, ...eligible
472
+ .sort((a, b) => {
473
+ const scoreA = a.confidence * 0.4 + a.successRate * 0.4 + Math.min(a.usageCount / 100, 0.2);
474
+ const scoreB = b.confidence * 0.4 + b.successRate * 0.4 + Math.min(b.usageCount / 100, 0.2);
475
+ return scoreB - scoreA;
476
+ })
477
+ .slice(0, places)];
415
478
  }
416
479
  /**
417
480
  * Get top performing patterns
@@ -462,7 +525,8 @@ export class LearningConsolidationProtocol {
462
525
  updatedCount++;
463
526
  // Share high-performing pattern knowledge with related domains
464
527
  if (pattern.successRate >= 0.8) {
465
- const knowledge = await this.memory.get(`learning:knowledge:pattern:${pattern.id}`);
528
+ // #1071: read where createKnowledgeFromPattern() writes it.
529
+ const knowledge = await this.memory.get(`learning:knowledge:pattern:${pattern.id}`, LEARNING_NS);
466
530
  if (knowledge) {
467
531
  // Use knowledgeService to share across domains
468
532
  await this.knowledgeService.shareKnowledge(knowledge, [
@@ -700,7 +764,7 @@ export class LearningConsolidationProtocol {
700
764
  };
701
765
  await this.eventBus.publish(event);
702
766
  }
703
- async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds) {
767
+ async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds, dryRun) {
704
768
  const event = {
705
769
  id: uuidv4(),
706
770
  type: 'PatternConsolidated',
@@ -713,6 +777,7 @@ export class LearningConsolidationProtocol {
713
777
  patternsAfterCount,
714
778
  mergedPatternIds,
715
779
  removedPatternIds,
780
+ dryRun,
716
781
  },
717
782
  };
718
783
  await this.eventBus.publish(event);
@@ -728,6 +793,7 @@ export class LearningConsolidationProtocol {
728
793
  stats,
729
794
  insights,
730
795
  duration,
796
+ dryRun: this.config.dryRun,
731
797
  },
732
798
  };
733
799
  await this.eventBus.publish(event);
@@ -767,15 +833,21 @@ export class LearningConsolidationProtocol {
767
833
  * Get previous consolidation results for trend analysis
768
834
  */
769
835
  async getPreviousConsolidations(count) {
770
- const keys = await this.memory.search('learning:consolidation:result:*', count);
836
+ // #1071: results are stored in `learning-optimization`. Read every one
837
+ // so the newest `count` are returned, not an arbitrary first page.
838
+ const keys = await searchAllKeys(this.memory, 'learning:consolidation:result:*', {
839
+ retrieve: LEARNING_NS,
840
+ });
771
841
  const results = [];
772
842
  for (const key of keys) {
773
- const result = await this.memory.get(key);
843
+ const result = rehydrateDates(await this.memory.get(key, LEARNING_NS), ['startedAt', 'completedAt']);
774
844
  if (result) {
775
845
  results.push(result);
776
846
  }
777
847
  }
778
- return results.sort((a, b) => b.completedAt.getTime() - a.completedAt.getTime());
848
+ return results
849
+ .sort((a, b) => b.completedAt.getTime() - a.completedAt.getTime())
850
+ .slice(0, count);
779
851
  }
780
852
  /**
781
853
  * Get consolidation history summary
@@ -33,7 +33,7 @@ import { FederationMailbox } from './federation/index.js';
33
33
  import { DynamicScaler } from './dynamic-scaling/index.js';
34
34
  export type { QueenTask, TaskType, TaskExecution, DomainGroup, WorkStealingConfig, QueenMetrics, QueenConfig, QueenHealth, HealthIssue, IQueenCoordinator, TaskFilter, } from './queen-types.js';
35
35
  export { DOMAIN_GROUPS, TASK_DOMAIN_MAP } from './queen-types.js';
36
- import type { QueenTask, TaskExecution, QueenMetrics, QueenConfig, QueenHealth, IQueenCoordinator, TaskFilter } from './queen-types.js';
36
+ import type { QueenTask, TaskType, TaskExecution, QueenMetrics, QueenConfig, QueenHealth, IQueenCoordinator, TaskFilter } from './queen-types.js';
37
37
  export declare class QueenCoordinator implements IQueenCoordinator {
38
38
  private readonly eventBus;
39
39
  private readonly agentCoordinator;
@@ -80,6 +80,17 @@ export declare class QueenCoordinator implements IQueenCoordinator {
80
80
  constructor(eventBus: EventBus, agentCoordinator: AgentCoordinator, memory: MemoryBackend, router: CrossDomainRouter, protocolExecutor?: ProtocolExecutor | undefined, workflowExecutor?: WorkflowExecutor | undefined, domainPlugins?: Map<DomainName, DomainPlugin> | undefined, config?: Partial<QueenConfig>);
81
81
  initialize(): Promise<void>;
82
82
  dispose(): Promise<void>;
83
+ /**
84
+ * #1075: check that a domain plugin will actually execute this task type
85
+ * before an external caller submits it, so the caller gets the reason as a
86
+ * rejection. A type that no candidate domain handles would otherwise only
87
+ * be failed at dispatch by `assignTaskToDomain` (#1081).
88
+ *
89
+ * Every candidate domain must handle the type, because `assignTask` may pick
90
+ * any of them. Queens built without domain plugins cannot be checked and
91
+ * accept the type unchanged.
92
+ */
93
+ validateTaskExecutable(type: TaskType, targetDomains?: readonly DomainName[]): Result<void, Error>;
83
94
  submitTask(taskInput: Omit<QueenTask, 'id' | 'createdAt'>): Promise<Result<string, Error>>;
84
95
  cancelTask(taskId: string): Promise<Result<void, Error>>;
85
96
  getTaskStatus(taskId: string): TaskExecution | undefined;
@@ -47,10 +47,11 @@ import { createHypothesisManager } from './competing-hypotheses/index.js';
47
47
  import { createFederationMailbox } from './federation/index.js';
48
48
  import { createDynamicScaler } from './dynamic-scaling/index.js';
49
49
  // Types, interfaces, constants, and config
50
- import { DEFAULT_QUEEN_CONFIG, initializeTaskDomainMap, } from './queen-types.js';
50
+ import { DEFAULT_QUEEN_CONFIG, getTaskDomains, initializeTaskDomainMap, } from './queen-types.js';
51
51
  export { DOMAIN_GROUPS, TASK_DOMAIN_MAP } from './queen-types.js';
52
52
  // Extracted modules
53
53
  import { subscribeToEvents, computeDomainHealthFromAgents } from './queen-event-handlers.js';
54
+ import { findDomainsWithoutHandler, describeMissingHandler } from './task-executability.js';
54
55
  import { enqueueTask, removeFromQueues, getQueuePosition, processQueue, listTasks as listTasksImpl, assignTask, assignTaskToDomain, } from './queen-task-management.js';
55
56
  import { triggerWorkStealing as triggerWorkStealingImpl, startWorkStealingTimer } from './queen-work-stealing.js';
56
57
  import { isMinCutAwarePlugin, injectMinCutBridgeIntoPlugins, loadState, saveState, startMetricsCollectionTimer, cleanupCompletedTasks as cleanupCompletedTasksImpl, getEnabledDomains, } from './queen-lifecycle.js';
@@ -284,6 +285,28 @@ export class QueenCoordinator {
284
285
  // ============================================================================
285
286
  // Task Management
286
287
  // ============================================================================
288
+ /**
289
+ * #1075: check that a domain plugin will actually execute this task type
290
+ * before an external caller submits it, so the caller gets the reason as a
291
+ * rejection. A type that no candidate domain handles would otherwise only
292
+ * be failed at dispatch by `assignTaskToDomain` (#1081).
293
+ *
294
+ * Every candidate domain must handle the type, because `assignTask` may pick
295
+ * any of them. Queens built without domain plugins cannot be checked and
296
+ * accept the type unchanged.
297
+ */
298
+ validateTaskExecutable(type, targetDomains = []) {
299
+ const candidates = targetDomains.length > 0 ? targetDomains : getTaskDomains(type);
300
+ if (candidates.length === 0) {
301
+ return err(new Error(`Unknown task type '${type}': no domain is configured for it. Pass a target domain.`));
302
+ }
303
+ if (!this.domainPlugins)
304
+ return ok(undefined);
305
+ const gaps = findDomainsWithoutHandler(this.domainPlugins, type, candidates);
306
+ if (gaps.length === 0)
307
+ return ok(undefined);
308
+ return err(new Error(describeMissingHandler(type, gaps)));
309
+ }
287
310
  async submitTask(taskInput) {
288
311
  if (!this.initialized) {
289
312
  return err(new Error('Queen Coordinator not initialized'));
@@ -193,7 +193,8 @@ export async function handleTaskFailed(ctx, event) {
193
193
  }
194
194
  // Check if we should retry. Caller-input errors are deterministic, so a
195
195
  // retry would fail the same way.
196
- if (!callerError && execution.retryCount < ctx.config.taskRetryLimit) {
196
+ const callerOwned = execution.task.executionOwner === 'caller';
197
+ if (!callerError && !callerOwned && execution.retryCount < ctx.config.taskRetryLimit) {
197
198
  ctx.auditLogger.logFail(taskId, execution.assignedAgents[0], error);
198
199
  const retried = {
199
200
  ...execution,