agentic-qe 3.15.8 → 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 (479) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +183 -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-W3V5P7LE.js → agent-booster-wasm-427FRKWG.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-RIYHTHVZ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-457ECHHK.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-JV3WSEHU.js → arena-KRIBMIXX.js} +2 -2
  13. package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-YAJZX6MC.js} +4 -4
  14. package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-7ZNOXWP3.js} +3 -3
  15. package/dist/cli/chunks/base-67DXSAYM.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-ZQAT4I6H.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-452WCPZC.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-IJFXJRPN.js} +2 -2
  19. package/dist/cli/chunks/{browser-ZL7OLKJQ.js → browser-CT3MTV6G.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
  21. package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-2BA45H64.js} +2 -2
  22. package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-2HL3UM5P.js} +2 -2
  23. package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-2I2UPJS7.js} +2 -2
  24. package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-2TDIS6YK.js} +2 -2
  25. package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-2URBI52G.js} +2 -2
  26. package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-2XITOPYV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-2YH62JCN.js} +2 -2
  28. package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-32UTLDNY.js} +2 -2
  29. package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-37BIGMJI.js} +1 -1
  30. package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-3CJCROMW.js} +2 -2
  31. package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-3LYU7BLY.js} +2 -2
  32. package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-47TYABPD.js} +3 -3
  33. package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-47V7FQGX.js} +2 -2
  34. package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-4JCY45KV.js} +2 -2
  35. package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-4SUOVLJ6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-J7RCI25Q.js → chunk-4URT6JO2.js} +1 -1
  37. package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-4V27J6YN.js} +2 -2
  38. package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-4W4DYVSH.js} +1 -1
  39. package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
  40. package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-5D2I7JUP.js} +2 -2
  41. package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-5JWGCIQW.js} +1 -1
  42. package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
  43. package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-5NS3USRW.js} +1 -1
  44. package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-6EPHNJTL.js} +1 -1
  45. package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-6OOYIO3W.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-6PXA2BQJ.js} +58 -58
  47. package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-6YL6JOQB.js} +2 -2
  48. package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-72AMFDC7.js} +1 -1
  49. package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-763SUL4B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-4GYFONJB.js → chunk-7DMA5NYL.js} +1 -1
  51. package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-7JKB3Q7O.js} +1 -1
  52. package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-7KII4CQG.js} +2 -2
  53. package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-7QGYJ5OY.js} +1 -1
  54. package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-7QTB5VJZ.js} +2 -2
  55. package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-7X2Y727E.js} +1 -1
  56. package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-A4RU67VX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-A6YIH4C4.js} +2 -2
  58. package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-ABFDB4X3.js} +1 -1
  59. package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-AJ4YDSOI.js} +2 -2
  60. package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-AOFO4N32.js} +2 -2
  61. package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-AQTVVLNP.js} +1 -1
  62. package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
  63. package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-AVB5QY2Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-BHKXMIWX.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-BXO536GT.js} +3 -3
  66. package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-C6RTMTEH.js} +1 -1
  67. package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-CTZJUV5I.js} +1 -1
  68. package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-D6XVGFTI.js} +2 -2
  69. package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-DDPPSSHW.js} +1 -1
  70. package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-DGTLJNJH.js} +2 -2
  71. package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-DINZR5CF.js} +1 -1
  72. package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-EFBLP43U.js} +2 -2
  73. package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
  74. package/dist/cli/chunks/{chunk-KNHLOANK.js → chunk-F2SQPP6U.js} +2 -2
  75. package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-F3PQZX44.js} +1 -1
  76. package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-F4JYIRW2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-FJ4VTLLK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-FL3OYGCS.js} +2 -2
  79. package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-FLASM2XB.js} +2 -2
  80. package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-FV3NHVC7.js} +22 -22
  81. package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-FV7VAG74.js} +1 -1
  82. package/dist/cli/chunks/{chunk-PWA6XBW4.js → chunk-G3BKZNFL.js} +5 -5
  83. package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-GBUIG3FS.js} +1 -1
  84. package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-GCWSX2NY.js} +4 -4
  85. package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-GII5WVAK.js} +1 -1
  86. package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-GKPQ2GRR.js} +2 -2
  87. package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
  88. package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-H3KBIWTO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-HAROIAJE.js} +1 -1
  90. package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-HCYQHWI2.js} +2 -2
  91. package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-HGTWAZWU.js} +2 -2
  92. package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-HTZJSQ3C.js} +2 -2
  93. package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-HWK5L7IJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-HZ5NC6U5.js} +1 -1
  95. package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-I6S35FRO.js} +2 -2
  96. package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-ICP2ORGI.js} +2 -2
  97. package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-IFEIY3NQ.js} +2 -2
  98. package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-J3DTDJDT.js} +2 -2
  99. package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
  100. package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-J5KNRVXR.js} +1 -1
  101. package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-JAV5WPSY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-JEP4ULR6.js} +2 -2
  103. package/dist/cli/chunks/{chunk-TC52M542.js → chunk-JK2ME6IT.js} +2 -2
  104. package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
  105. package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-JP4P3P3D.js} +2 -2
  106. package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-JUVHZG7I.js} +1 -1
  107. package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-JWGRWMZP.js} +2 -2
  108. package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-K5DJXMAA.js} +2 -2
  109. package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-KFUUIAR4.js} +2 -2
  110. package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
  111. package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-KIKWJM6J.js} +2 -2
  112. package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-KIXYKUCI.js} +1 -1
  113. package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-KLGYIEJK.js} +3 -3
  114. package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-KR3M44CF.js} +3 -3
  115. package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
  116. package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-KVBEGOJE.js} +2 -2
  117. package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-L42JPFCC.js} +2 -2
  118. package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-LCJTEUDC.js} +370 -370
  119. package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-LEAKYZ37.js} +2 -2
  120. package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LMU5DUDK.js} +1 -1
  121. package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-MZS32SYS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-N3KEY4XJ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-N3NP6PTT.js} +2 -2
  124. package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-N5PDFGCQ.js} +2 -2
  125. package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-NDKLQW6N.js} +2 -2
  126. package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-NHZIWIQZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-NTAD5UX4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-7H3GNRNA.js → chunk-O3JLOVZX.js} +2 -2
  129. package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-OCESWNAZ.js} +3 -3
  130. package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-OG2UI6A3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-OXTFSIGN.js} +1 -1
  132. package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-OXZLKP6C.js} +1 -1
  133. package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-P2CXVNKK.js} +2 -2
  134. package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-P73W2K7T.js} +1 -1
  135. package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-PBZI2ZPV.js} +3 -3
  136. package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-PMCRCEW5.js} +2 -2
  137. package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-PVIA2FPD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-PX2B5TS2.js} +2 -2
  139. package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-Q3JVJRVJ.js} +1 -1
  140. package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-QQ5SZH4D.js} +2 -2
  141. package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-QTVWUQTB.js} +1 -1
  142. package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-REUFWGMA.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-SNBYYO6F.js} +2 -2
  144. package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-SVHUYVUR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-PIEKGKW6.js → chunk-THAY7WHO.js} +2 -2
  146. package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-TNMQVG4A.js} +2 -2
  147. package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-TSYQDRNK.js} +1 -1
  148. package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-TUYJ53V4.js} +2 -2
  149. package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-UNUTC6TX.js} +2 -2
  150. package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-UOJBR4J3.js} +2 -2
  151. package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-UOWHE77F.js} +2 -2
  152. package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-UYLYMWV5.js} +2 -2
  153. package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-V5PXQSFS.js} +2 -2
  154. package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-VCMINU7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-VQHVHVSF.js} +2 -2
  156. package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-VRGCKBF7.js} +2 -2
  157. package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-VU2EL424.js} +1 -1
  158. package/dist/cli/chunks/{chunk-KNQUHGNY.js → chunk-VXZJOKOX.js} +2 -2
  159. package/dist/cli/chunks/{chunk-EUVSSIGR.js → chunk-VYLM2YV5.js} +3 -3
  160. package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-W32YU3VI.js} +2 -2
  161. package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-W5VJRDDG.js} +2 -2
  162. package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-WGDR2KIR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-WRRCQ2UE.js} +1 -1
  164. package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-XDBD4GXO.js} +2 -2
  165. package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-XOLDMK23.js} +2 -2
  166. package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-XOVNZT7F.js} +1 -1
  167. package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-XQ3DDY7X.js} +2 -2
  168. package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-XUIA5KMS.js} +2 -2
  169. package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-XWIUFYM3.js} +1 -1
  170. package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XYCKHYBM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-XZJ2O3VC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-YRBBBUJX.js} +5 -5
  173. package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-YZGSJG34.js} +1 -1
  174. package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-YZYDTABJ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-ZANDSVCK.js} +2 -2
  176. package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-ZBDRLF43.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-ZVSLCEVC.js} +3 -3
  178. package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-ZXBCCO2H.js} +2 -2
  179. package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-7SGRCFPS.js} +2 -2
  180. package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-MX3URPZA.js} +2 -2
  181. package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-M47NJY6D.js} +2 -2
  182. package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-5GAK45SW.js} +2 -2
  183. package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.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-OYANSZ54.js → cline-installer-DLJ5QD5N.js} +2 -2
  186. package/dist/cli/chunks/{code-OMT4UEZI.js → code-ONKLMVQ2.js} +25 -24
  187. package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-2232LGZN.js} +2 -2
  188. package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-UOWLYCMH.js} +2 -2
  189. package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-MHX7GCC7.js} +2 -2
  190. package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-43ZUJKZU.js} +2 -2
  191. package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-6Q5JR4FF.js} +2 -2
  192. package/dist/cli/chunks/{copilot-installer-KC2RT24C.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-OQPVR6V4.js → cost-tracker-VS5ZW3XN.js} +2 -2
  195. package/dist/cli/chunks/{coverage-TCO2A2NX.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-MH7GWD4L.js → cursor-installer-YIFEMORH.js} +2 -2
  198. package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-SHWJSJW5.js} +7 -7
  199. package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
  200. package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
  201. package/dist/cli/chunks/{detect-5QTCRB32.js → detect-IGTWSQMA.js} +2 -2
  202. package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-TCOTJVQX.js} +2 -2
  203. package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-55ZVYODR.js} +2 -2
  204. package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-GJRWOHQP.js} +2 -2
  205. package/dist/cli/chunks/{domain-transfer-NF7UJW7B.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-D2HWORHF.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
  208. package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GO22R4OZ.js} +2 -2
  209. package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
  210. package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-6RGPYALD.js} +2 -2
  211. package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-MIWQIOHU.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-MTW6NMR3.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-52V6ANOY.js → gnn-wrapper-ALBJVW6T.js} +2 -2
  216. package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.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-DZBE3KMK.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
  221. package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-XM6XF3YV.js} +2 -2
  222. package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-X62O7TJO.js} +10 -10
  223. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
  224. package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
  225. package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.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-OSO6MIDD.js → init-guard-S4I2R46S.js} +2 -2
  228. package/dist/cli/chunks/{init-handler-7S7IHMUF.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-2KBRFXMA.js → kilocode-installer-GNNB5FCZ.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-HR6ZAH7T.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
  234. package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4IEEOHJS.js} +3 -3
  235. package/dist/cli/chunks/{llm-router-4EAPPMHS.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-UYMZPEY6.js → load-ZM43WGDO.js} +2 -2
  238. package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
  239. package/dist/cli/chunks/{mcp-NOTDZBW5.js → mcp-CRZKZE37.js} +2 -2
  240. package/dist/cli/chunks/{memory-QL53YIHP.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-PDDDXF2B.js → multi-model-executor-SXXGAQ2G.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PIRBUAB5.js} +2 -2
  245. package/dist/cli/chunks/{orchestrator-3WIZBV4T.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-TEX2JGHA.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-7ATPA6LU.js → pipeline-5LMLBIJ7.js} +2 -2
  249. package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-KJDABL5C.js} +2 -2
  250. package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-V4KSBVVM.js} +2 -2
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.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-3VRYRIQB.js → protocol-handler-BNRONTQV.js} +2 -2
  255. package/dist/cli/chunks/{prove-2NAUROGF.js → prove-ELLL6XMX.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
  257. package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-NH2QA4D4.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-KWJO4SWQ.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-TSZ4UIAE.js → real-embeddings-J3KCKLPB.js} +2 -2
  261. package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-HNXQRP4F.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-XTZHLUBO.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-GG525TDM.js → routing-handler-WM33ZILE.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.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-FF52OS6Q.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-M6DXTAZ4.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-EHXSW22U.js → security-AUDTRX3I.js} +3 -3
  276. package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.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-C7QKAXS4.js → standalone-memory-XNOAI4G4.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-K72XZE4T.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-NF3YY7U5.js} +2 -2
  282. package/dist/cli/chunks/{sync-4IMMQEPT.js → sync-UVXA6CT2.js} +2 -2
  283. package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-VBD5Y3E2.js} +2 -2
  284. package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-24S3WFVJ.js} +13 -7
  285. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
  286. package/dist/cli/chunks/{test-GPKT3CKZ.js → test-XFSGQELD.js} +4 -4
  287. package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-VYUQ4CDE.js} +3 -3
  288. package/dist/cli/chunks/{token-bootstrap-HMM3AHXM.js → token-bootstrap-EDK6FNQ3.js} +2 -2
  289. package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-VLQ6WO2L.js} +2 -2
  290. package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-TOFMWWNM.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-56GDQCMR.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
  292. package/dist/cli/chunks/{types-J4J6QV3I.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-U4XU7LFM.js → upgrade-4ABM72T4.js} +2 -2
  297. package/dist/cli/chunks/{validate-B57HA4YK.js → validate-UDJCWKXI.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-UPPA4M6T.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-GDZMUKOZ.js → web-tree-sitter-WBMAJPM5.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.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-LFASSMZK.js → witness-chain-TATPXQRK.js} +2 -2
  304. package/dist/cli/chunks/{witness-chain-repair-TPHN4DXN.js → witness-chain-repair-2HGJGE7O.js} +2 -2
  305. package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
  306. package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-X7QHQQWL.js} +2 -2
  307. package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-QMZPAWQW.js} +4 -4
  308. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
  309. package/dist/cli/chunks/{wrappers-WCAYIQUX.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 +128 -50
  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/defect-intelligence/services/defect-predictor.js +4 -2
  362. package/dist/domains/learning-optimization/active-patterns.d.ts +12 -12
  363. package/dist/domains/learning-optimization/active-patterns.js +15 -12
  364. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  365. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  366. package/dist/domains/learning-optimization/coordinator.js +43 -102
  367. package/dist/domains/learning-optimization/index.d.ts +1 -1
  368. package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
  369. package/dist/domains/learning-optimization/plugin.js +11 -1
  370. package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
  371. package/dist/domains/learning-optimization/reward-source.js +58 -0
  372. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
  373. package/dist/domains/learning-optimization/services/learning-coordinator.js +59 -23
  374. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  375. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  376. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  377. package/dist/domains/test-execution/interfaces.d.ts +16 -0
  378. package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
  379. package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
  380. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  381. package/dist/domains/test-execution/services/test-executor.js +24 -2
  382. package/dist/init/fleet-integration.js +2 -0
  383. package/dist/init/init-wizard-steps.js +2 -0
  384. package/dist/init/phases/06-code-intelligence.js +2 -0
  385. package/dist/init/phases/10-workers.js +2 -1
  386. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  387. package/dist/kernel/anti-drift-middleware.js +147 -11
  388. package/dist/kernel/interfaces.d.ts +5 -0
  389. package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
  390. package/dist/learning/dream/dream-insights-pruner.js +99 -11
  391. package/dist/learning/skill-validation-learner.d.ts +2 -0
  392. package/dist/learning/skill-validation-learner.js +29 -21
  393. package/dist/mcp/background-workers.js +8 -2
  394. package/dist/mcp/bundle.js +507 -483
  395. package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
  396. package/dist/mcp/handlers/domain-handler-configs.js +68 -30
  397. package/dist/mcp/handlers/handler-factory.js +1 -0
  398. package/dist/mcp/handlers/task-handlers.js +37 -1
  399. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  400. package/dist/mcp/metrics/metrics-collector.js +13 -26
  401. package/dist/mcp/protocol-server.js +8 -3
  402. package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
  403. package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
  404. package/dist/memory/crdt/lww-register.js +11 -1
  405. package/dist/routing/calibration/ema-calibrator.js +3 -1
  406. package/dist/shared/base-domain-plugin.d.ts +4 -0
  407. package/dist/shared/base-domain-plugin.js +6 -0
  408. package/dist/shared/llm/cache.js +4 -1
  409. package/dist/shared/security/compliance-patterns.js +3 -1
  410. package/dist/shared/test-runner-process.d.ts +26 -0
  411. package/dist/shared/test-runner-process.js +91 -0
  412. package/dist/shared/types/index.d.ts +9 -0
  413. package/dist/shared/types/index.js +13 -0
  414. package/dist/shared/utils/namespaced-search.d.ts +42 -0
  415. package/dist/shared/utils/namespaced-search.js +53 -0
  416. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  417. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  418. package/dist/workers/daemon.d.ts +2 -0
  419. package/dist/workers/daemon.js +10 -5
  420. package/dist/workers/namespaced-keys.d.ts +4 -7
  421. package/dist/workers/namespaced-keys.js +4 -15
  422. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  423. package/dist/workers/worker-env.d.ts +16 -8
  424. package/dist/workers/worker-env.js +25 -12
  425. package/dist/workers/worker-manager.js +4 -0
  426. package/dist/workers/workers/learning-consolidation.d.ts +1 -1
  427. package/dist/workers/workers/learning-consolidation.js +11 -8
  428. package/package.json +1 -1
  429. package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
  430. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
  431. package/dist/cli/chunks/base-2XML4WH7.js +0 -2
  432. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
  433. package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
  434. package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
  435. package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
  436. package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
  437. package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
  438. package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
  439. package/dist/cli/chunks/chunk-ZWMFKZEQ.js +0 -3
  440. package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
  441. package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
  442. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
  443. package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
  444. package/dist/cli/chunks/dream-VALD726W.js +0 -2
  445. package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
  446. package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
  447. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
  448. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
  449. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
  450. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
  451. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
  452. package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
  453. package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
  454. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
  455. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
  456. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
  457. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
  458. package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
  459. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
  460. package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
  461. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
  462. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
  463. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
  464. package/dist/cli/chunks/router-AUD4GATI.js +0 -2
  465. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
  466. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
  467. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
  468. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
  469. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
  470. package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
  471. package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
  472. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
  473. package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
  474. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
  475. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
  476. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
  477. package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
  478. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
  479. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.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,7 +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 { readActivePatterns } from '../../domains/learning-optimization/active-patterns.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');
13
18
  const DEFAULT_CONFIG = {
14
19
  minPatternsForConsolidation: 5,
15
20
  similarityThreshold: 0.85,
@@ -17,6 +22,8 @@ const DEFAULT_CONFIG = {
17
22
  minConfidenceThreshold: 0.5,
18
23
  analysisWindowWeeks: 4,
19
24
  enableCrossProjectTransfer: true,
25
+ dryRun: true,
26
+ retentionGraceDays: 7,
20
27
  };
21
28
  // ============================================================================
22
29
  // Learning Consolidation Protocol Implementation
@@ -62,20 +69,29 @@ export class LearningConsolidationProtocol {
62
69
  const domainReports = [];
63
70
  let totalMerged = 0;
64
71
  let totalRemoved = 0;
72
+ let totalArchived = 0;
65
73
  let totalRetained = 0;
74
+ const dryRun = this.config.dryRun;
66
75
  for (const domainGroup of gatheredPatterns.value) {
67
76
  const consolidationResult = await this.consolidatePatterns(consolidationId, domainGroup);
68
77
  if (consolidationResult.success) {
69
78
  domainReports.push(consolidationResult.value);
70
79
  totalMerged += consolidationResult.value.mergedPatterns.length;
71
80
  totalRemoved += consolidationResult.value.removedPatterns.length;
81
+ totalArchived += consolidationResult.value.archiveCounts.archived;
72
82
  totalRetained += consolidationResult.value.patternsAfterCount;
73
83
  }
74
84
  }
75
- // Step 3: Update knowledge base with consolidated patterns
76
- const knowledgeUpdateResult = await this.updateKnowledgeBase(domainReports);
77
- // Step 4: Prepare patterns for cross-project transfer
78
- 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);
79
95
  // Step 5: Generate weekly insights
80
96
  const insights = await this.generateInsights(gatheredPatterns.value, domainReports);
81
97
  const completedAt = new Date();
@@ -85,6 +101,7 @@ export class LearningConsolidationProtocol {
85
101
  totalPatternsAnalyzed: gatheredPatterns.value.reduce((sum, g) => sum + g.patterns.length, 0),
86
102
  patternsMerged: totalMerged,
87
103
  patternsRemoved: totalRemoved,
104
+ patternsArchived: totalArchived,
88
105
  patternsRetained: totalRetained,
89
106
  knowledgeItemsUpdated: knowledgeUpdateResult.success
90
107
  ? knowledgeUpdateResult.value
@@ -94,10 +111,20 @@ export class LearningConsolidationProtocol {
94
111
  ? transferResult.value.length
95
112
  : 0,
96
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
+ });
97
123
  // Publish completion event
98
124
  await this.publishCompletedEvent(consolidationId, stats, insights, duration);
99
125
  const result = {
100
126
  consolidationId,
127
+ dryRun,
101
128
  startedAt,
102
129
  completedAt,
103
130
  stats,
@@ -106,7 +133,9 @@ export class LearningConsolidationProtocol {
106
133
  domainReports,
107
134
  };
108
135
  // Store result for historical analysis
109
- await this.storeConsolidationResult(result);
136
+ if (!dryRun) {
137
+ await this.storeConsolidationResult(result);
138
+ }
110
139
  return ok(result);
111
140
  }
112
141
  catch (error) {
@@ -123,8 +152,9 @@ export class LearningConsolidationProtocol {
123
152
  try {
124
153
  const domainGroups = [];
125
154
  const timeRange = TimeRange.lastNDays(this.config.analysisWindowWeeks * 7);
155
+ const activePatterns = await this.readActivePatterns();
126
156
  for (const domain of ALL_DOMAINS) {
127
- const patterns = await this.getPatternsForDomain(domain, timeRange);
157
+ const patterns = this.getPatternsForDomain(activePatterns, domain, timeRange);
128
158
  if (patterns.length > 0) {
129
159
  const stats = this.calculateDomainStats(patterns, timeRange);
130
160
  domainGroups.push({ domain, patterns, stats });
@@ -137,12 +167,19 @@ export class LearningConsolidationProtocol {
137
167
  }
138
168
  }
139
169
  /**
140
- * 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.
175
+ */
176
+ readActivePatterns() {
177
+ return readActivePatterns(this.memory, { retrieve: LEARNING_NS });
178
+ }
179
+ /**
180
+ * Patterns of one domain created or used within the analysis window
141
181
  */
142
- async getPatternsForDomain(domain, timeRange) {
143
- // #1055: active patterns only — excludes `:creation:` provenance as well
144
- // as `:archived:` records, before get() and before the scan cap applies.
145
- const patterns = await readActivePatterns(this.memory);
182
+ getPatternsForDomain(patterns, domain, timeRange) {
146
183
  return patterns.filter((pattern) => pattern.domain === domain &&
147
184
  (timeRange.contains(pattern.createdAt) || timeRange.contains(pattern.lastUsedAt)));
148
185
  }
@@ -203,10 +240,23 @@ export class LearningConsolidationProtocol {
203
240
  const mergedPatterns = [];
204
241
  const removedPatterns = [];
205
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)));
206
247
  // Group similar patterns for merging
207
- const similarGroups = this.groupSimilarPatterns(patterns);
248
+ const similarGroups = this.groupSimilarPatterns(patterns.filter((p) => !this.isInGracePeriod(p)));
208
249
  for (const group of similarGroups) {
209
- 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) {
210
260
  // Merge similar patterns
211
261
  const mergeResult = await this.mergePatternGroup(group);
212
262
  if (mergeResult.success) {
@@ -230,32 +280,34 @@ export class LearningConsolidationProtocol {
230
280
  name: pattern.name,
231
281
  removalReason: this.getRemovalReason(pattern),
232
282
  });
233
- await this.archivePattern(pattern);
283
+ toArchive.push(pattern);
234
284
  }
235
285
  }
236
286
  }
237
- // 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.
238
289
  const finalPatterns = this.trimToMaxPatterns(retainedPatterns, domain);
239
- const trimmedCount = retainedPatterns.length - finalPatterns.length;
240
- if (trimmedCount > 0) {
241
- const trimmed = retainedPatterns.slice(finalPatterns.length);
242
- for (const p of trimmed) {
243
- removedPatterns.push({
244
- patternId: p.id,
245
- name: p.name,
246
- removalReason: 'Exceeded max patterns per domain limit',
247
- });
248
- await this.archivePattern(p);
249
- }
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);
250
300
  }
301
+ const archiveCounts = await this.archivePatterns(domain, toArchive);
251
302
  // Publish domain consolidation event
252
- 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);
253
304
  const report = {
254
305
  domain,
255
306
  patternsBeforeCount: patterns.length,
256
307
  patternsAfterCount: finalPatterns.length,
257
308
  mergedPatterns,
258
309
  removedPatterns,
310
+ archiveCounts,
259
311
  topPerformingPatterns: this.getTopPerformingPatterns(finalPatterns, 5),
260
312
  improvementAreas: this.identifyImprovementAreas(domainGroup),
261
313
  };
@@ -379,17 +431,30 @@ export class LearningConsolidationProtocol {
379
431
  }
380
432
  return 'Below retention threshold';
381
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
+ }
382
438
  /**
383
- * 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.
384
442
  */
385
- async archivePattern(pattern) {
386
- // Move to archived namespace
387
- await this.memory.set(`learning:pattern:archived:${pattern.id}`, {
388
- ...pattern,
389
- archivedAt: new Date(),
390
- }, { namespace: 'learning-optimization', persist: true });
391
- // Delete from active patterns
392
- 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;
393
458
  }
394
459
  /**
395
460
  * Trim patterns to max allowed per domain
@@ -398,14 +463,18 @@ export class LearningConsolidationProtocol {
398
463
  if (patterns.length <= this.config.maxPatternsPerDomain) {
399
464
  return patterns;
400
465
  }
401
- // Sort by effectiveness score and keep top N
402
- return patterns
403
- .sort((a, b) => {
404
- const scoreA = a.confidence * 0.4 + a.successRate * 0.4 + Math.min(a.usageCount / 100, 0.2);
405
- const scoreB = b.confidence * 0.4 + b.successRate * 0.4 + Math.min(b.usageCount / 100, 0.2);
406
- return scoreB - scoreA;
407
- })
408
- .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)];
409
478
  }
410
479
  /**
411
480
  * Get top performing patterns
@@ -456,7 +525,8 @@ export class LearningConsolidationProtocol {
456
525
  updatedCount++;
457
526
  // Share high-performing pattern knowledge with related domains
458
527
  if (pattern.successRate >= 0.8) {
459
- 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);
460
530
  if (knowledge) {
461
531
  // Use knowledgeService to share across domains
462
532
  await this.knowledgeService.shareKnowledge(knowledge, [
@@ -694,7 +764,7 @@ export class LearningConsolidationProtocol {
694
764
  };
695
765
  await this.eventBus.publish(event);
696
766
  }
697
- async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds) {
767
+ async publishPatternConsolidatedEvent(consolidationId, domain, patternsBeforeCount, patternsAfterCount, mergedPatternIds, removedPatternIds, dryRun) {
698
768
  const event = {
699
769
  id: uuidv4(),
700
770
  type: 'PatternConsolidated',
@@ -707,6 +777,7 @@ export class LearningConsolidationProtocol {
707
777
  patternsAfterCount,
708
778
  mergedPatternIds,
709
779
  removedPatternIds,
780
+ dryRun,
710
781
  },
711
782
  };
712
783
  await this.eventBus.publish(event);
@@ -722,6 +793,7 @@ export class LearningConsolidationProtocol {
722
793
  stats,
723
794
  insights,
724
795
  duration,
796
+ dryRun: this.config.dryRun,
725
797
  },
726
798
  };
727
799
  await this.eventBus.publish(event);
@@ -761,15 +833,21 @@ export class LearningConsolidationProtocol {
761
833
  * Get previous consolidation results for trend analysis
762
834
  */
763
835
  async getPreviousConsolidations(count) {
764
- 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
+ });
765
841
  const results = [];
766
842
  for (const key of keys) {
767
- const result = await this.memory.get(key);
843
+ const result = rehydrateDates(await this.memory.get(key, LEARNING_NS), ['startedAt', 'completedAt']);
768
844
  if (result) {
769
845
  results.push(result);
770
846
  }
771
847
  }
772
- 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);
773
851
  }
774
852
  /**
775
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,