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
@@ -17,6 +17,7 @@ import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-rand
17
17
  import { writeTestRunEvidence } from '../../quality-assessment/quality-evidence.js';
18
18
  import { istanbulLineHits } from '../../../coordination/handlers/handler-utils.js';
19
19
  import { fileCoverageKey } from '../../coverage-analysis/collected-metrics.js';
20
+ import { mergeTestCases, testCasesFromRunnerReport } from './runner-test-cases.js';
20
21
  import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
21
22
  import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
22
23
  import { jestExactPathPattern, runnerFilePath } from '../../../shared/test-runner-args.js';
@@ -76,6 +77,7 @@ export class TestExecutorService {
76
77
  skipped: results.skipped,
77
78
  duration,
78
79
  failedTests: results.failedTests,
80
+ ...(results.testCases ? { testCases: results.testCases } : {}),
79
81
  coverage: results.coverage,
80
82
  fileCoverages: results.fileCoverages,
81
83
  };
@@ -131,6 +133,7 @@ export class TestExecutorService {
131
133
  skipped: aggregated.skipped,
132
134
  duration,
133
135
  failedTests: aggregated.failedTests,
136
+ ...(aggregated.testCases ? { testCases: aggregated.testCases } : {}),
134
137
  coverage: aggregated.coverage,
135
138
  fileCoverages: aggregated.fileCoverages,
136
139
  };
@@ -331,12 +334,14 @@ Provide:
331
334
  ? this.mergeSequentialCoverage(executionResults)
332
335
  : undefined;
333
336
  const separateRuns = testFiles.length > 1 && !this.config.simulateForTesting;
337
+ const testCases = mergeTestCases(executionResults);
334
338
  return {
335
339
  total: passed + failed + skipped,
336
340
  passed,
337
341
  failed,
338
342
  skipped,
339
343
  failedTests,
344
+ ...(testCases ? { testCases } : {}),
340
345
  coverage: separateRuns ? merged?.summary : this.aggregateCoverage(coverages),
341
346
  fileCoverages: separateRuns ? merged?.perFile
342
347
  : allFileCoverages.length > 0 ? allFileCoverages : undefined,
@@ -502,7 +507,7 @@ Provide:
502
507
  return;
503
508
  }
504
509
  if (reportText === undefined) {
505
- finish(err(new Error(`The current Vitest JSON report is missing for ${fileLabel}.`)));
510
+ finish(err(new TestRunnerExecutionError(`The current Vitest JSON report is missing for ${fileLabel}.`)));
506
511
  return;
507
512
  }
508
513
  const parseResult = this.parseTestOutput(reportText, stderr, fileLabel, framework, code);
@@ -702,12 +707,14 @@ Provide:
702
707
  if (executionError)
703
708
  return err(executionError);
704
709
  const covData = this.extractCoverageFromJson(json);
710
+ const testCases = this.reportedTestCases(json, file, passed + failed + skipped);
705
711
  return ok({
706
712
  total: passed + failed + skipped,
707
713
  passed,
708
714
  failed,
709
715
  skipped,
710
716
  failedTests,
717
+ ...(testCases ? { testCases } : {}),
711
718
  coverage: covData.summary,
712
719
  fileCoverages: covData.perFile.length > 0 ? covData.perFile : undefined,
713
720
  rawCoverageMap: isRecord(json.coverageMap) && !json.coverageMap.total ? json.coverageMap : undefined,
@@ -721,6 +728,14 @@ Provide:
721
728
  // Example: "Tests 5 passed | 1 failed | 1 skipped (7)"
722
729
  return this.parseTestSummaryLine(stdout, stderr, file, exitCode);
723
730
  }
731
+ /**
732
+ * #1110: the report's per-test entries, kept only when they account for
733
+ * every counted test; a partial list would misstate the run.
734
+ */
735
+ reportedTestCases(json, file, total) {
736
+ const cases = testCasesFromRunnerReport(json, file);
737
+ return cases && cases.length === total ? cases : undefined;
738
+ }
724
739
  /**
725
740
  * Parse jest JSON output
726
741
  */
@@ -757,12 +772,14 @@ Provide:
757
772
  if (executionError)
758
773
  return err(executionError);
759
774
  const covData = this.extractCoverageFromJson(json);
775
+ const testCases = this.reportedTestCases(json, file, passed + failed + skipped);
760
776
  return ok({
761
777
  total: passed + failed + skipped,
762
778
  passed,
763
779
  failed,
764
780
  skipped,
765
781
  failedTests,
782
+ ...(testCases ? { testCases } : {}),
766
783
  coverage: covData.summary,
767
784
  fileCoverages: covData.perFile.length > 0 ? covData.perFile : undefined,
768
785
  rawCoverageMap: isRecord(json.coverageMap) && !json.coverageMap.total ? json.coverageMap : undefined,
@@ -991,6 +1008,9 @@ Provide:
991
1008
  aggregated.skipped += result.skipped;
992
1009
  aggregated.failedTests.push(...result.failedTests);
993
1010
  }
1011
+ const testCases = mergeTestCases(results);
1012
+ if (testCases)
1013
+ aggregated.testCases = testCases;
994
1014
  aggregated.coverage = this.aggregateCoverage(results.map(r => r.coverage).filter((c) => c !== undefined));
995
1015
  // Collect per-file coverages from all worker results
996
1016
  const allFileCoverages = results.flatMap(r => r.fileCoverages ?? []);
@@ -1182,7 +1202,9 @@ Provide:
1182
1202
  // #1028 N1: the record names the test files it ran, so per-test duration
1183
1203
  // is compared only between runs of the same test set.
1184
1204
  const files = testFiles && testFiles.length > 0 ? [...new Set(testFiles)].sort() : undefined;
1185
- await this.memory.set(`test-run:${runId}`, files ? { ...result, testFiles: files } : result, {
1205
+ // Per-test entries are returned to the caller, not persisted with the run record.
1206
+ const { testCases: _testCases, ...record } = result;
1207
+ await this.memory.set(`test-run:${runId}`, files ? { ...record, testFiles: files } : record, {
1186
1208
  namespace: 'test-execution',
1187
1209
  persist: true,
1188
1210
  });
@@ -120,6 +120,8 @@ export class FleetInitEnhancer {
120
120
  const kgService = new KnowledgeGraphService(memory, {
121
121
  namespace: 'code-intelligence:kg',
122
122
  enableVectorEmbeddings: true,
123
+ // #1096: indexing is confined to the project being initialized.
124
+ projectRoot: this.projectRoot,
123
125
  });
124
126
  // Find all source files
125
127
  const { glob } = await import('tinyglobby');
@@ -199,6 +199,8 @@ export async function runCodeIntelligenceScan(projectPath) {
199
199
  const kgService = new KnowledgeGraphService(memory, {
200
200
  namespace: 'code-intelligence:kg',
201
201
  enableVectorEmbeddings: true,
202
+ // #1096: indexing is confined to the project being initialized.
203
+ projectRoot: projectPath,
202
204
  });
203
205
  const { glob } = await import('tinyglobby');
204
206
  const files = await glob([
@@ -223,6 +223,8 @@ export class CodeIntelligencePhase extends BasePhase {
223
223
  const kgService = new KnowledgeGraphService(memory, {
224
224
  namespace: 'code-intelligence:kg',
225
225
  enableVectorEmbeddings: true,
226
+ // #1096: indexing is confined to the project being initialized.
227
+ projectRoot,
226
228
  });
227
229
  try {
228
230
  let filesToIndex;
@@ -204,7 +204,8 @@ if (binCandidate && binCandidate.endsWith('bundle.js')) {
204
204
 
205
205
  appendFileSync(logFile, '[' + ts + '] Using: ' + mcpCmd + ' ' + mcpArgs.join(' ') + '\\n');
206
206
 
207
- const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: 'true', AQE_HTTP_PORT: '0' };
207
+ // #1066: keep a user's AQE_WORKERS_ENABLED (for example false) instead of forcing it on.
208
+ const env = { ...process.env, AQE_STORAGE_PATH: '.agentic-qe', AQE_LEARNING_ENABLED: 'true', AQE_WORKERS_ENABLED: process.env.AQE_WORKERS_ENABLED ?? 'true', AQE_HTTP_PORT: '0' };
208
209
  const child = spawn(mcpCmd, mcpArgs, { cwd: projectRoot, env, detached: true, stdio: ['ignore', 'pipe', 'pipe'] });
209
210
  child.stdout.on('data', d => appendFileSync(logFile, d));
210
211
  child.stderr.on('data', d => appendFileSync(logFile, d));
@@ -110,7 +110,11 @@ export interface AntiDriftStats {
110
110
  readonly totalChecked: number;
111
111
  readonly driftCount: number;
112
112
  readonly averageSimilarity: number;
113
+ /** Events delivered without verification because the embedder failed. */
114
+ readonly unverifiedCount: number;
113
115
  }
116
+ /** True when the event type is a lifecycle / control-plane event that must never be dropped. */
117
+ export declare function isControlPlaneEvent(eventType: string): boolean;
114
118
  /**
115
119
  * Middleware enforcing semantic stability of domain events across agent-hop
116
120
  * boundaries. `onEmit` computes an embedding and attaches a SemanticFingerprint;
@@ -124,6 +128,15 @@ export declare class SemanticAntiDriftMiddleware implements EventMiddleware {
124
128
  private totalChecked;
125
129
  private driftCount;
126
130
  private similaritySum;
131
+ private unverifiedCount;
132
+ /** Suppressed drift warnings of keys evicted from the rate limiter, reported on the next warning. */
133
+ private evictedSuppressedWarnings;
134
+ /** Rate limit for drift warnings, keyed by event type and source. */
135
+ private readonly driftWarnings;
136
+ /** Payload text each fingerprint was computed from (same-process events only). */
137
+ private readonly emittedPayloadText;
138
+ private embeddingWarningAt;
139
+ private suppressedEmbeddingWarnings;
127
140
  constructor(config?: Partial<AntiDriftConfig>);
128
141
  /**
129
142
  * Compute the semantic embedding of the event payload and attach a
@@ -134,11 +147,13 @@ export declare class SemanticAntiDriftMiddleware implements EventMiddleware {
134
147
  onEmit(event: DomainEvent): Promise<DomainEvent>;
135
148
  /**
136
149
  * Re-embed the payload and compare with the original fingerprint.
137
- * If drift exceeds threshold the event is dropped (returns null) and a
138
- * SemanticDriftDetectedEvent is emitted. Events without a fingerprint
139
- * pass through unchanged.
150
+ * If drift exceeds threshold a warning is logged, a SemanticDriftDetectedEvent
151
+ * is emitted, and a data event is dropped (returns null). Control-plane
152
+ * events (see {@link isControlPlaneEvent}) are delivered anyway: dropping a
153
+ * lifecycle event leaks Queen slots (#1070, #1077). Events without a
154
+ * fingerprint pass through unchanged.
140
155
  * @param event - The incoming domain event.
141
- * @returns The event with incremented hopCount, or null if drifted.
156
+ * @returns The event with incremented hopCount, or null if a drifted data event.
142
157
  */
143
158
  onReceive(event: DomainEvent): Promise<DomainEvent | null>;
144
159
  /** Returns recent drift check results (bounded by maxHistorySize). */
@@ -150,10 +165,34 @@ export declare class SemanticAntiDriftMiddleware implements EventMiddleware {
150
165
  * @returns ok(void) if valid, err(Error) otherwise.
151
166
  */
152
167
  validateConfig(): Result<void, Error>;
153
- /** Compute embedding, preferring transformer pipeline with hash fallback. */
168
+ /**
169
+ * Compute embedding, preferring transformer pipeline with hash fallback.
170
+ * The transformer returns a zero vector for text it treats as non-semantic
171
+ * (JSON with a "metrics" key, raw arrays, mostly numeric strings). A zero
172
+ * vector has no direction, so the cosine check read it as total drift and
173
+ * silently dropped the event, e.g. every quality_assess TaskCompleted (#1070).
174
+ * Such text gets a hash embedding of the same length instead, which still
175
+ * detects a mutated payload.
176
+ */
154
177
  private embed;
178
+ /**
179
+ * Fingerprinting is advisory infrastructure, not an event-delivery dependency.
180
+ * A transformer can fail after its cached availability probe succeeded. Do not
181
+ * switch vector spaces mid-event: an old semantic vector and a new hash vector
182
+ * cannot be compared. Deliver this event without claiming a completed check;
183
+ * later events still try the transformer normally.
184
+ */
185
+ private embedForEvent;
155
186
  /** Map event type to threshold category via substring matching. */
156
187
  private resolveCategory;
188
+ /**
189
+ * Log a drift detection to stderr (via the structured logger). Never logs
190
+ * payload contents. Rate limited per event type and source so a flood of
191
+ * drifted events produces one line per window plus a suppressed count.
192
+ */
193
+ private warnDrift;
194
+ /** Drop the least recently warned key, carrying its suppressed count forward. */
195
+ private evictOldestDriftWarning;
157
196
  /** Fire a SemanticDriftDetectedEvent via the configured callback. */
158
197
  private emitDriftEvent;
159
198
  }
@@ -166,6 +166,26 @@ const DEFAULT_CONFIG = {
166
166
  maxHistorySize: 200,
167
167
  fallbackDimension: 64,
168
168
  };
169
+ /**
170
+ * Control-plane (task/agent/workflow lifecycle) events, matched on the last
171
+ * dot-separated segment of the event type:
172
+ * - every `Queen*` event (QueenCoordinator prefixes all of its events),
173
+ * - `Task*`, `Agent*`, `Workflow*`, `Step*`, `Protocol*` and `Action*` events
174
+ * (TaskCompleted, TaskFailed, workflow.StepCompleted, coordination.ProtocolFailed, ...).
175
+ * The Queen, the workflow orchestrator and the protocol executor count slots
176
+ * and advance state machines on these events, so losing one leaks a slot or
177
+ * hangs a run (#1070, #1077).
178
+ */
179
+ const CONTROL_PLANE_EVENT_RE = /^(?:Queen[A-Z]|(?:Task|Agent|Workflow|Step|Protocol|Action)[A-Z])/;
180
+ /** True when the event type is a lifecycle / control-plane event that must never be dropped. */
181
+ export function isControlPlaneEvent(eventType) {
182
+ const name = eventType.slice(eventType.lastIndexOf('.') + 1);
183
+ return CONTROL_PLANE_EVENT_RE.test(name);
184
+ }
185
+ /** One warning per event type and source per window; later drops in the window are counted. */
186
+ const DRIFT_WARN_WINDOW_MS = 60_000;
187
+ /** Bound on distinct (type, source) keys tracked for warning rate limiting. */
188
+ const DRIFT_WARN_MAX_KEYS = 256;
169
189
  /**
170
190
  * Deterministic pseudo-embedding via FNV-1a-inspired hash spread.
171
191
  * Not semantically meaningful but sufficient for detecting payload mutations.
@@ -241,6 +261,15 @@ export class SemanticAntiDriftMiddleware {
241
261
  totalChecked = 0;
242
262
  driftCount = 0;
243
263
  similaritySum = 0;
264
+ unverifiedCount = 0;
265
+ /** Suppressed drift warnings of keys evicted from the rate limiter, reported on the next warning. */
266
+ evictedSuppressedWarnings = 0;
267
+ /** Rate limit for drift warnings, keyed by event type and source. */
268
+ driftWarnings = new Map();
269
+ /** Payload text each fingerprint was computed from (same-process events only). */
270
+ emittedPayloadText = new WeakMap();
271
+ embeddingWarningAt = -Infinity;
272
+ suppressedEmbeddingWarnings = 0;
244
273
  constructor(config) {
245
274
  this.config = {
246
275
  ...DEFAULT_CONFIG,
@@ -256,7 +285,9 @@ export class SemanticAntiDriftMiddleware {
256
285
  */
257
286
  async onEmit(event) {
258
287
  const payloadText = JSON.stringify(event.payload);
259
- const embedding = await this.embed(payloadText);
288
+ const embedding = await this.embedForEvent(payloadText, event, 'emit');
289
+ if (embedding === null)
290
+ return event;
260
291
  const category = this.resolveCategory(event.type);
261
292
  const threshold = this.config.thresholds[category] ?? this.config.thresholds['default'];
262
293
  const fingerprint = {
@@ -266,23 +297,38 @@ export class SemanticAntiDriftMiddleware {
266
297
  hopCount: 0,
267
298
  emittedAt: Date.now(),
268
299
  };
300
+ this.emittedPayloadText.set(fingerprint, payloadText);
269
301
  return { ...event, semanticFingerprint: fingerprint };
270
302
  }
271
303
  /**
272
304
  * Re-embed the payload and compare with the original fingerprint.
273
- * If drift exceeds threshold the event is dropped (returns null) and a
274
- * SemanticDriftDetectedEvent is emitted. Events without a fingerprint
275
- * pass through unchanged.
305
+ * If drift exceeds threshold a warning is logged, a SemanticDriftDetectedEvent
306
+ * is emitted, and a data event is dropped (returns null). Control-plane
307
+ * events (see {@link isControlPlaneEvent}) are delivered anyway: dropping a
308
+ * lifecycle event leaks Queen slots (#1070, #1077). Events without a
309
+ * fingerprint pass through unchanged.
276
310
  * @param event - The incoming domain event.
277
- * @returns The event with incremented hopCount, or null if drifted.
311
+ * @returns The event with incremented hopCount, or null if a drifted data event.
278
312
  */
279
313
  async onReceive(event) {
280
314
  const fp = event.semanticFingerprint;
281
315
  if (!fp)
282
316
  return event;
283
317
  const payloadText = JSON.stringify(event.payload);
284
- const currentEmbedding = await this.embed(payloadText);
285
- const similarity = cosineSimilarity(currentEmbedding, fp.embedding);
318
+ // A payload whose text is byte-identical to the text this instance
319
+ // fingerprinted at emit time has similarity 1 by construction; skip the
320
+ // second model inference (#1077).
321
+ let similarity = 1;
322
+ const emittedText = this.emittedPayloadText.get(fp);
323
+ // Release the cached text now: bus history keeps the emitted fingerprint
324
+ // alive for up to 10k events.
325
+ this.emittedPayloadText.delete(fp);
326
+ if (emittedText !== payloadText) {
327
+ const currentEmbedding = await this.embedForEvent(payloadText, event, 'receive');
328
+ if (currentEmbedding === null)
329
+ return event;
330
+ similarity = cosineSimilarity(currentEmbedding, fp.embedding);
331
+ }
286
332
  const distance = 1 - similarity;
287
333
  const drifted = distance > fp.driftThreshold;
288
334
  this.totalChecked++;
@@ -300,8 +346,11 @@ export class SemanticAntiDriftMiddleware {
300
346
  this.history.shift();
301
347
  if (drifted) {
302
348
  this.driftCount++;
349
+ const deliver = isControlPlaneEvent(event.type);
350
+ this.warnDrift(event, checkResult, deliver);
303
351
  await this.emitDriftEvent(event, checkResult);
304
- return null;
352
+ if (!deliver)
353
+ return null;
305
354
  }
306
355
  const updatedFingerprint = { ...fp, hopCount: fp.hopCount + 1 };
307
356
  return { ...event, semanticFingerprint: updatedFingerprint };
@@ -316,6 +365,7 @@ export class SemanticAntiDriftMiddleware {
316
365
  totalChecked: this.totalChecked,
317
366
  driftCount: this.driftCount,
318
367
  averageSimilarity: this.totalChecked > 0 ? this.similaritySum / this.totalChecked : 0,
368
+ unverifiedCount: this.unverifiedCount,
319
369
  };
320
370
  }
321
371
  /**
@@ -334,13 +384,57 @@ export class SemanticAntiDriftMiddleware {
334
384
  return err(new Error('fallbackDimension must be positive'));
335
385
  return ok(undefined);
336
386
  }
337
- /** Compute embedding, preferring transformer pipeline with hash fallback. */
387
+ /**
388
+ * Compute embedding, preferring transformer pipeline with hash fallback.
389
+ * The transformer returns a zero vector for text it treats as non-semantic
390
+ * (JSON with a "metrics" key, raw arrays, mostly numeric strings). A zero
391
+ * vector has no direction, so the cosine check read it as total drift and
392
+ * silently dropped the event, e.g. every quality_assess TaskCompleted (#1070).
393
+ * Such text gets a hash embedding of the same length instead, which still
394
+ * detects a mutated payload.
395
+ */
338
396
  async embed(text) {
339
397
  const hasTransformer = await probeTransformer();
340
- if (hasTransformer && _computeRealEmbedding)
341
- return _computeRealEmbedding(text);
398
+ if (hasTransformer && _computeRealEmbedding) {
399
+ const embedding = await _computeRealEmbedding(text);
400
+ if (embedding.some(v => v !== 0))
401
+ return embedding;
402
+ return hashBasedEmbedding(text, embedding.length || this.config.fallbackDimension);
403
+ }
342
404
  return hashBasedEmbedding(text, this.config.fallbackDimension);
343
405
  }
406
+ /**
407
+ * Fingerprinting is advisory infrastructure, not an event-delivery dependency.
408
+ * A transformer can fail after its cached availability probe succeeded. Do not
409
+ * switch vector spaces mid-event: an old semantic vector and a new hash vector
410
+ * cannot be compared. Deliver this event without claiming a completed check;
411
+ * later events still try the transformer normally.
412
+ */
413
+ async embedForEvent(text, event, stage) {
414
+ try {
415
+ return await this.embed(text);
416
+ }
417
+ catch {
418
+ // Counted even when the warning below is rate limited, so an outage
419
+ // stays visible in getStats().
420
+ this.unverifiedCount++;
421
+ const now = Date.now();
422
+ if (now - this.embeddingWarningAt < DRIFT_WARN_WINDOW_MS) {
423
+ this.suppressedEmbeddingWarnings++;
424
+ }
425
+ else {
426
+ logger.warn('Anti-drift embedding unavailable; event delivered without verification', {
427
+ eventType: event.type, source: event.source, stage,
428
+ suppressedSinceLastWarning: this.suppressedEmbeddingWarnings,
429
+ });
430
+ this.embeddingWarningAt = now;
431
+ this.suppressedEmbeddingWarnings = 0;
432
+ }
433
+ // Never log the payload or provider's error text (it may contain input or
434
+ // credentials), and never count an unavailable check as successful/drifted.
435
+ return null;
436
+ }
437
+ }
344
438
  /** Map event type to threshold category via substring matching. */
345
439
  resolveCategory(eventType) {
346
440
  const lower = eventType.toLowerCase();
@@ -350,6 +444,48 @@ export class SemanticAntiDriftMiddleware {
350
444
  }
351
445
  return 'default';
352
446
  }
447
+ /**
448
+ * Log a drift detection to stderr (via the structured logger). Never logs
449
+ * payload contents. Rate limited per event type and source so a flood of
450
+ * drifted events produces one line per window plus a suppressed count.
451
+ */
452
+ warnDrift(event, check, delivered) {
453
+ const key = `${event.type}|${String(event.source)}`;
454
+ const now = Date.now();
455
+ const entry = this.driftWarnings.get(key);
456
+ if (entry && now - entry.lastAt < DRIFT_WARN_WINDOW_MS) {
457
+ entry.suppressed++;
458
+ return;
459
+ }
460
+ if (!entry && this.driftWarnings.size >= DRIFT_WARN_MAX_KEYS)
461
+ this.evictOldestDriftWarning();
462
+ const suppressed = entry?.suppressed ?? 0;
463
+ const evictedSuppressed = this.evictedSuppressedWarnings;
464
+ this.evictedSuppressedWarnings = 0;
465
+ // Re-insert so Map order tracks lastAt and the first key is the oldest.
466
+ this.driftWarnings.delete(key);
467
+ this.driftWarnings.set(key, { lastAt: now, suppressed: 0 });
468
+ logger.warn(delivered
469
+ ? 'Semantic drift detected on a control-plane event; delivered anyway'
470
+ : 'Semantic drift detected; event dropped', {
471
+ eventType: event.type,
472
+ source: event.source,
473
+ cosineSimilarity: Number(check.cosineSimilarity.toFixed(4)),
474
+ cosineDistance: Number((1 - check.cosineSimilarity).toFixed(4)),
475
+ threshold: check.threshold,
476
+ hopCount: check.hopCount,
477
+ ...(suppressed > 0 ? { suppressedSinceLastWarning: suppressed } : {}),
478
+ ...(evictedSuppressed > 0 ? { suppressedForEvictedKeys: evictedSuppressed } : {}),
479
+ });
480
+ }
481
+ /** Drop the least recently warned key, carrying its suppressed count forward. */
482
+ evictOldestDriftWarning() {
483
+ const oldest = this.driftWarnings.keys().next();
484
+ if (oldest.done)
485
+ return;
486
+ this.evictedSuppressedWarnings += this.driftWarnings.get(oldest.value)?.suppressed ?? 0;
487
+ this.driftWarnings.delete(oldest.value);
488
+ }
353
489
  /** Fire a SemanticDriftDetectedEvent via the configured callback. */
354
490
  async emitDriftEvent(originalEvent, check) {
355
491
  if (!this.config.onDriftDetected)
@@ -33,6 +33,11 @@ export interface DomainPlugin extends Initializable, Disposable {
33
33
  * @returns true if domain can handle the task type
34
34
  */
35
35
  canHandleTask?(taskType: string): boolean;
36
+ /**
37
+ * Task types this domain executes through `executeTask` (#1075).
38
+ * Optional - used to tell callers which types a domain accepts.
39
+ */
40
+ getSupportedTaskTypes?(): string[];
36
41
  }
37
42
  export interface DomainHealth {
38
43
  /**
@@ -31,7 +31,21 @@ export interface DreamConfig {
31
31
  activationConfig: ActivationConfig;
32
32
  /** Insight generation configuration */
33
33
  insightConfig: InsightConfig;
34
- /** Enable RVCOW branching for reversible dream cycles (ADR-069). Default: true */
34
+ /**
35
+ * Enable RVCOW branching for reversible dream cycles (ADR-069).
36
+ * Default: false (#1060).
37
+ *
38
+ * RISK — opt in only for an isolated database connection. The branch is a
39
+ * SQLite SAVEPOINT on the process-wide shared connection, and it stays open
40
+ * for the whole asynchronous dream (up to `maxDurationMs`). Every other
41
+ * write made on that connection in the meantime (memory_store, pattern
42
+ * updates, experience capture) joins the savepoint. A discard (failed
43
+ * validation, error, cancel) rolls those foreground writes back even though
44
+ * they were already acknowledged. Branch validation only inspects
45
+ * `qe_patterns`, which `dream()` does not write, so branching adds little
46
+ * protection to a dream cycle. A compute-then-commit rework is tracked in
47
+ * #1060.
48
+ */
35
49
  enableBranching: boolean;
36
50
  /** Validation thresholds for dream branch quality checks */
37
51
  branchValidationThresholds: ValidationThresholds;
@@ -104,6 +118,8 @@ export declare class DreamEngine {
104
118
  private graph;
105
119
  private db;
106
120
  private branchManager;
121
+ /** #1060: marks the in-flight dream cycle interrupted (set while dreaming). */
122
+ private interruptActiveDream;
107
123
  private currentCycle;
108
124
  private initialized;
109
125
  private cancelled;
@@ -138,6 +154,15 @@ export declare class DreamEngine {
138
154
  * @returns Dream cycle result with insights and statistics
139
155
  */
140
156
  dream(durationMs?: number): Promise<DreamCycleResult>;
157
+ /**
158
+ * #1060: build a synchronous handler that records a still-running cycle as
159
+ * 'interrupted'. It runs from close() and from a process store closer,
160
+ * which runs before the shared database closes (closers run newest first).
161
+ * When opt-in branching left a savepoint open, the savepoint is released
162
+ * first so foreground writes made on the shared connection during the
163
+ * dream are committed rather than lost with the connection.
164
+ */
165
+ private createCycleInterrupter;
141
166
  /**
142
167
  * Load patterns as concepts for dreaming.
143
168
  *
@@ -203,6 +228,7 @@ export declare class DreamEngine {
203
228
  getCurrentCycle(): DreamCycle | null;
204
229
  private saveCycle;
205
230
  private updateCycle;
231
+ private updateCycleSync;
206
232
  private saveInsight;
207
233
  private getInsightRowById;
208
234
  /**
@@ -21,6 +21,7 @@ import { LoggerFactory } from '../../logging/index.js';
21
21
  const dreamLogger = LoggerFactory.create('dream-engine');
22
22
  import { v4 as uuidv4 } from 'uuid';
23
23
  import { getUnifiedPersistence } from '../../kernel/unified-persistence.js';
24
+ import { registerStoreCloser } from '../../kernel/process-lifecycle.js';
24
25
  import { ConceptGraph } from './concept-graph.js';
25
26
  import { SpreadingActivation, } from './spreading-activation.js';
26
27
  import { InsightGenerator, } from './insight-generator.js';
@@ -43,7 +44,8 @@ export const DEFAULT_DREAM_CONFIG = {
43
44
  minConfidence: 0.5,
44
45
  maxInsightsPerCycle: 10,
45
46
  },
46
- enableBranching: true,
47
+ // #1060: off by default; see the RISK note on DreamConfig.enableBranching.
48
+ enableBranching: false,
47
49
  branchValidationThresholds: { ...DEFAULT_VALIDATION_THRESHOLDS },
48
50
  };
49
51
  // ============================================================================
@@ -206,6 +208,8 @@ export class DreamEngine {
206
208
  graph = null;
207
209
  db = null;
208
210
  branchManager = null;
211
+ /** #1060: marks the in-flight dream cycle interrupted (set while dreaming). */
212
+ interruptActiveDream = null;
209
213
  currentCycle = null;
210
214
  initialized = false;
211
215
  cancelled = false;
@@ -344,13 +348,18 @@ export class DreamEngine {
344
348
  status: 'running',
345
349
  };
346
350
  await this.saveCycle(this.currentCycle);
347
- // ADR-069: Create RVCOW branch before dream consolidation
351
+ // ADR-069: Create RVCOW branch before dream consolidation (opt-in, #1060)
348
352
  let branch = null;
349
353
  if (this.branchManager) {
350
354
  const branchName = `dream-${this.currentCycle.id}-${Date.now()}`;
351
355
  branch = this.branchManager.createBranch(branchName);
352
356
  this.emitBranchEvent('dream:branch_created', branch);
353
357
  }
358
+ // #1060: if the engine closes or the process shuts down mid-dream, record
359
+ // the cycle as interrupted instead of leaving it 'running' forever.
360
+ const interrupt = this.createCycleInterrupter(this.currentCycle, startTime, () => branch);
361
+ this.interruptActiveDream = interrupt;
362
+ const unregisterShutdownGuard = registerStoreCloser(interrupt);
354
363
  try {
355
364
  // 1. Check we have enough concepts
356
365
  const allNodes = await this.graph.getActiveNodes(0);
@@ -458,6 +467,44 @@ export class DreamEngine {
458
467
  this.currentCycle = null;
459
468
  throw error;
460
469
  }
470
+ finally {
471
+ unregisterShutdownGuard();
472
+ if (this.interruptActiveDream === interrupt)
473
+ this.interruptActiveDream = null;
474
+ }
475
+ }
476
+ /**
477
+ * #1060: build a synchronous handler that records a still-running cycle as
478
+ * 'interrupted'. It runs from close() and from a process store closer,
479
+ * which runs before the shared database closes (closers run newest first).
480
+ * When opt-in branching left a savepoint open, the savepoint is released
481
+ * first so foreground writes made on the shared connection during the
482
+ * dream are committed rather than lost with the connection.
483
+ */
484
+ createCycleInterrupter(cycle, startTime, getBranch) {
485
+ return () => {
486
+ if (cycle.status !== 'running' || !this.db)
487
+ return;
488
+ const branch = getBranch();
489
+ if (branch && this.branchManager) {
490
+ try {
491
+ this.branchManager.mergeBranch(branch);
492
+ }
493
+ catch {
494
+ // Branch already resolved; nothing to release
495
+ }
496
+ }
497
+ cycle.status = 'interrupted';
498
+ cycle.error = 'Interrupted: engine closed or process shut down during the dream cycle';
499
+ cycle.endTime = new Date();
500
+ cycle.durationMs = Date.now() - startTime;
501
+ try {
502
+ this.updateCycleSync(cycle);
503
+ }
504
+ catch {
505
+ // Best effort during shutdown
506
+ }
507
+ };
461
508
  }
462
509
  // ==========================================================================
463
510
  // Pattern Loading
@@ -753,6 +800,9 @@ export class DreamEngine {
753
800
  stmt.run(cycle.id, cycle.startTime.toISOString(), cycle.endTime?.toISOString() ?? null, cycle.durationMs ?? null, cycle.conceptsProcessed, cycle.associationsFound, cycle.insightsGenerated, cycle.status, cycle.error ?? null, cycle.startTime.toISOString());
754
801
  }
755
802
  async updateCycle(cycle) {
803
+ this.updateCycleSync(cycle);
804
+ }
805
+ updateCycleSync(cycle) {
756
806
  if (!this.db)
757
807
  return;
758
808
  const stmt = this.db.prepare(`
@@ -815,6 +865,10 @@ export class DreamEngine {
815
865
  * Release resources (does NOT close the shared database)
816
866
  */
817
867
  async close() {
868
+ // #1060: a dream still in flight is recorded as interrupted before the
869
+ // engine lets go of the database.
870
+ this.interruptActiveDream?.();
871
+ this.interruptActiveDream = null;
818
872
  if (this.graph) {
819
873
  await this.graph.close();
820
874
  this.graph = null;