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
@@ -7,6 +7,8 @@ import { ok, err } from '../../../shared/types/index.js';
7
7
  import { TypeScriptParser } from '../../../shared/parsers/index.js';
8
8
  import { FileReader } from '../../../shared/io/index.js';
9
9
  import { NomicEmbedder } from '../../../shared/embeddings/index.js';
10
+ import { findProjectRoot } from '../../../kernel/project-root.js';
11
+ import { confineIndexPaths } from '../index-path-guard.js';
10
12
  import { toErrorMessage, toError } from '../../../shared/error-utils.js';
11
13
  import { safeJsonParse } from '../../../shared/safe-json.js';
12
14
  import { existsSync, statSync } from 'fs';
@@ -51,6 +53,7 @@ export class KnowledgeGraphService {
51
53
  allEdgesCache;
52
54
  tsParser;
53
55
  fileReader;
56
+ projectRoot;
54
57
  embedder;
55
58
  /** ADR-051: Optional LLM router for AI-enhanced extraction */
56
59
  llmRouter;
@@ -73,7 +76,13 @@ export class KnowledgeGraphService {
73
76
  this.llmRouter = undefined;
74
77
  }
75
78
  this.tsParser = new TypeScriptParser();
76
- this.fileReader = new FileReader(this.config.basePath ? { basePath: this.config.basePath } : undefined);
79
+ // #1096: confine reads to the project root by realpath, so a symlink
80
+ // inside the project cannot pull an outside file into the graph.
81
+ this.projectRoot = this.config.projectRoot ?? this.config.basePath ?? findProjectRoot();
82
+ this.fileReader = new FileReader({
83
+ ...(this.config.basePath ? { basePath: this.config.basePath } : {}),
84
+ projectRoot: this.projectRoot,
85
+ });
77
86
  this.embedder = new NomicEmbedder({
78
87
  enableFallback: true,
79
88
  });
@@ -110,21 +119,35 @@ export class KnowledgeGraphService {
110
119
  const unsupportedByExt = new Map();
111
120
  try {
112
121
  const { paths, incremental = false, includeTests = true, languages } = request;
122
+ // #1096: index only regular files whose realpath is inside the project
123
+ // root; everything else is reported in `skipped`, never counted.
124
+ const { accepted, skipped } = await confineIndexPaths(paths, this.projectRoot, this.config.basePath ?? process.cwd());
125
+ let filesIndexed = 0;
113
126
  // Clear existing graph if not incremental
114
127
  if (!incremental) {
115
128
  await this.clear();
116
129
  }
117
- for (const path of paths) {
130
+ else {
131
+ // #511: a file deleted since the last index must not leave its old
132
+ // nodes/edges behind, even though it is no longer indexed.
133
+ for (const entry of skipped) {
134
+ if (entry.reason === 'not-found')
135
+ await this.removeFileFromGraph(entry.path);
136
+ }
137
+ }
138
+ for (const path of accepted) {
118
139
  try {
119
140
  // Filter by language if specified
120
141
  if (languages && languages.length > 0) {
121
142
  const ext = this.getFileExtension(path);
122
143
  if (!this.matchesLanguage(ext, languages)) {
144
+ skipped.push({ path, reason: 'excluded-by-language' });
123
145
  continue;
124
146
  }
125
147
  }
126
148
  // Skip test files if not included
127
149
  if (!includeTests && this.isTestFile(path)) {
150
+ skipped.push({ path, reason: 'excluded-test-file' });
128
151
  continue;
129
152
  }
130
153
  const ext = this.getFileExtension(path);
@@ -135,6 +158,7 @@ export class KnowledgeGraphService {
135
158
  const result = await this.indexFile(path, incremental);
136
159
  nodesCreated += result.nodes;
137
160
  edgesCreated += result.edges;
161
+ filesIndexed++;
138
162
  }
139
163
  catch (fileError) {
140
164
  errors.push({
@@ -159,19 +183,20 @@ export class KnowledgeGraphService {
159
183
  }
160
184
  // Store indexing metadata
161
185
  await this.storeIndexMetadata({
162
- filesIndexed: paths.length - errors.length,
186
+ filesIndexed,
163
187
  nodesCreated,
164
188
  edgesCreated,
165
189
  duration,
166
190
  indexedAt: new Date().toISOString(),
167
191
  });
168
192
  return ok({
169
- filesIndexed: paths.length - errors.length,
193
+ filesIndexed,
170
194
  nodesCreated,
171
195
  edgesCreated,
172
196
  duration,
173
197
  errors,
174
198
  warnings,
199
+ skipped,
175
200
  });
176
201
  }
177
202
  catch (error) {
@@ -521,7 +546,19 @@ Return JSON: { "rankedIds": ["id1", "id2", ...], "insights": ["insight1", "insig
521
546
  // STALE pre-edit text. Eviction guarantees fresh reads; the two reads within
522
547
  // this method (entities + imports) still share one cache fill, so they stay
523
548
  // mutually consistent.
524
- this.fileReader.invalidateCache(filePath);
549
+ try {
550
+ this.fileReader.invalidateCache(filePath);
551
+ }
552
+ catch {
553
+ // #1096: a path the reader's legacy validator rejects (e.g. a project
554
+ // root outside cwd) is never cached; the read below decides.
555
+ }
556
+ // #1096: a file that cannot be read (removed since it was confined, or
557
+ // blocked by the reader) is an error, not an indexed file node.
558
+ const readable = await this.fileReader.readFile(filePath);
559
+ if (!readable.success) {
560
+ throw readable.error;
561
+ }
525
562
  // #511: on an incremental re-index, drop this file's prior nodes/edges
526
563
  // first so renamed/removed entities and stale outgoing imports don't
527
564
  // linger as phantom dependencies. (A full index already cleared everything.)
@@ -11,6 +11,7 @@ import { toError, toErrorMessage } from '../../shared/error-utils.js';
11
11
  import { Version } from '../../shared/value-objects/index.js';
12
12
  import { createHttpClient } from '../../shared/http/index.js';
13
13
  import { FileReader } from '../../shared/io/index.js';
14
+ import { findProjectRoot } from '../../kernel/project-root.js';
14
15
  import { createEvent } from '../../shared/events/domain-events.js';
15
16
  import { ContractValidatorService } from './services/contract-validator.js';
16
17
  import { ApiCompatibilityService } from './services/api-compatibility.js';
@@ -80,7 +81,8 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
80
81
  this.contractValidator = new ContractValidatorService({ memory, llmRouter });
81
82
  this.apiCompatibility = new ApiCompatibilityService(memory);
82
83
  this.httpClient = createHttpClient();
83
- this.fileReader = new FileReader();
84
+ // #1096: a symlink inside the project must not expose an outside file.
85
+ this.fileReader = new FileReader({ projectRoot: findProjectRoot() });
84
86
  // Note: schemaValidator initialized when needed for schema operations
85
87
  }
86
88
  // ==========================================================================
@@ -7,6 +7,7 @@
7
7
  * null — never as 0% (a fake low figure) nor as istanbul's 0/0 = 100%.
8
8
  */
9
9
  import * as path from 'path';
10
+ import { findProjectRoot } from '../../kernel/project-root.js';
10
11
  /**
11
12
  * The ONE key form for per-file coverage records (#1027 N7): the absolute
12
13
  * path. Reports write absolute (istanbul) or project-relative (lcov
@@ -14,7 +15,7 @@ import * as path from 'path';
14
15
  * (or the cwd when none is known), so one file never has two records.
15
16
  */
16
17
  export function fileCoverageKey(filePath, projectRoot) {
17
- return path.isAbsolute(filePath) ? path.normalize(filePath) : path.resolve(projectRoot ?? process.cwd(), filePath);
18
+ return path.isAbsolute(filePath) ? path.normalize(filePath) : path.resolve(projectRoot ?? findProjectRoot(), filePath);
18
19
  }
19
20
  /** Read the canonical key first, then a measured legacy relative key if present. */
20
21
  export function fileCoverageLookupKeys(filePath, projectRoot) {
@@ -10,6 +10,7 @@ import { LoggerFactory } from '../../../logging/index.js';
10
10
  import { ok, err } from '../../../shared/types/index.js';
11
11
  import { GitAnalyzer } from '../../../shared/git/index.js';
12
12
  import { FileReader } from '../../../shared/io/index.js';
13
+ import { findProjectRoot } from '../../../kernel/project-root.js';
13
14
  import { TypeScriptParser } from '../../../shared/parsers/index.js';
14
15
  import { toError } from '../../../shared/error-utils.js';
15
16
  import { safeJsonParse } from '../../../shared/safe-json.js';
@@ -79,7 +80,8 @@ export class DefectPredictorService {
79
80
  // New signature: DefectPredictorDependencies
80
81
  this.memory = memoryOrDeps.memory;
81
82
  this.gitAnalyzer = memoryOrDeps.gitAnalyzer ?? new GitAnalyzer({ enableCache: true });
82
- this.fileReader = memoryOrDeps.fileReader ?? new FileReader();
83
+ // #1096: a symlink inside the project must not expose an outside file.
84
+ this.fileReader = memoryOrDeps.fileReader ?? new FileReader({ projectRoot: findProjectRoot() });
83
85
  this.tsParser = memoryOrDeps.tsParser ?? new TypeScriptParser();
84
86
  this.llmRouter = memoryOrDeps.llmRouter;
85
87
  }
@@ -87,7 +89,7 @@ export class DefectPredictorService {
87
89
  // Old signature: memory, config, gitAnalyzer, fileReader, tsParser
88
90
  this.memory = memoryOrDeps;
89
91
  this.gitAnalyzer = gitAnalyzer ?? new GitAnalyzer({ enableCache: true });
90
- this.fileReader = fileReader ?? new FileReader();
92
+ this.fileReader = fileReader ?? new FileReader({ projectRoot: findProjectRoot() });
91
93
  this.tsParser = tsParser ?? new TypeScriptParser();
92
94
  this.llmRouter = undefined;
93
95
  }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Agentic QE v3 - Active learned-pattern reads (#1055)
3
+ *
4
+ * Active learned patterns live at `learning:pattern:<id>`. The same prefix
5
+ * also holds records that are NOT active patterns:
6
+ *
7
+ * - `learning:pattern:creation:<id>`: creation provenance written by
8
+ * `LearningCoordinatorService.recordPatternCreation()` (no `context`)
9
+ * - `learning:pattern:archived:<id>`: archived patterns written by
10
+ * `LearningCoordinatorService.archivePattern()` and the
11
+ * learning-consolidation protocol (full pattern shape)
12
+ *
13
+ * Every reader of active patterns must go through this module so that
14
+ * provenance and archives are excluded before `get()`, and so that those rows
15
+ * cannot use up the search cap and push active patterns out. Records stay
16
+ * untouched; this is read-side classification only.
17
+ */
18
+ import type { MemoryBackend, RetrieveOptions } from '../../kernel/interfaces.js';
19
+ import type { LearnedPattern } from './interfaces.js';
20
+ /**
21
+ * The kv namespace every learning-optimization writer uses (#491 Bug 2).
22
+ * A database identifier: never rename it.
23
+ */
24
+ export declare const LEARNING_NAMESPACE = "learning-optimization";
25
+ /** Retrieve options for reads and deletes in `LEARNING_NAMESPACE` (#1071). */
26
+ export declare const LEARNING_NS: Readonly<RetrieveOptions>;
27
+ export declare const LEARNING_PATTERN_KEY_PREFIX = "learning:pattern:";
28
+ /** Sub-key families under the pattern prefix that are not active patterns. */
29
+ export declare const NON_ACTIVE_PATTERN_SEGMENTS: readonly string[];
30
+ /**
31
+ * True when the key is in the active pattern key family
32
+ * (`learning:pattern:<id>`), false for provenance, archives and any other
33
+ * non-active sub-key.
34
+ */
35
+ export declare function isActivePatternKey(key: string): boolean;
36
+ /**
37
+ * Shape guard for a record read from an active key: it must be an object
38
+ * whose own id maps back to that key, and it must carry a `context` object.
39
+ */
40
+ export declare function isActivePatternRecord(key: string, value: unknown): value is LearnedPattern;
41
+ export interface ReadActivePatternsOptions {
42
+ /** Namespace passed to `search()` and `get()`. Omit for the backend default. */
43
+ retrieve?: RetrieveOptions;
44
+ /** First key-scan request size (tests). The scan always reads every key. */
45
+ scanPageSize?: number;
46
+ }
47
+ /**
48
+ * Read every active learned pattern: list every key (no cap, #1071), drop
49
+ * non-active key families before `get()`, then drop records that fail the
50
+ * shape guard. Patterns come back in key order. Date fields
51
+ * come back from kv as ISO strings and are rehydrated (#491 Bug 3), so
52
+ * `TimeRange.contains(pattern.createdAt)` works for every reader.
53
+ */
54
+ export declare function readActivePatterns(memory: MemoryBackend, options?: ReadActivePatternsOptions): Promise<LearnedPattern[]>;
55
+ //# sourceMappingURL=active-patterns.d.ts.map
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Agentic QE v3 - Active learned-pattern reads (#1055)
3
+ *
4
+ * Active learned patterns live at `learning:pattern:<id>`. The same prefix
5
+ * also holds records that are NOT active patterns:
6
+ *
7
+ * - `learning:pattern:creation:<id>`: creation provenance written by
8
+ * `LearningCoordinatorService.recordPatternCreation()` (no `context`)
9
+ * - `learning:pattern:archived:<id>`: archived patterns written by
10
+ * `LearningCoordinatorService.archivePattern()` and the
11
+ * learning-consolidation protocol (full pattern shape)
12
+ *
13
+ * Every reader of active patterns must go through this module so that
14
+ * provenance and archives are excluded before `get()`, and so that those rows
15
+ * cannot use up the search cap and push active patterns out. Records stay
16
+ * untouched; this is read-side classification only.
17
+ */
18
+ import { rehydrateDates } from '../../shared/utils/kv-date-rehydrate.js';
19
+ import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
20
+ /**
21
+ * The kv namespace every learning-optimization writer uses (#491 Bug 2).
22
+ * A database identifier: never rename it.
23
+ */
24
+ export const LEARNING_NAMESPACE = 'learning-optimization';
25
+ /** Retrieve options for reads and deletes in `LEARNING_NAMESPACE` (#1071). */
26
+ export const LEARNING_NS = Object.freeze({ namespace: LEARNING_NAMESPACE });
27
+ export const LEARNING_PATTERN_KEY_PREFIX = 'learning:pattern:';
28
+ /** Sub-key families under the pattern prefix that are not active patterns. */
29
+ export const NON_ACTIVE_PATTERN_SEGMENTS = ['creation', 'archived'];
30
+ /**
31
+ * True when the key is in the active pattern key family
32
+ * (`learning:pattern:<id>`), false for provenance, archives and any other
33
+ * non-active sub-key.
34
+ */
35
+ export function isActivePatternKey(key) {
36
+ if (!key.startsWith(LEARNING_PATTERN_KEY_PREFIX))
37
+ return false;
38
+ const rest = key.slice(LEARNING_PATTERN_KEY_PREFIX.length);
39
+ if (rest.length === 0)
40
+ return false;
41
+ const firstSegment = rest.split(':', 1)[0];
42
+ return !NON_ACTIVE_PATTERN_SEGMENTS.includes(firstSegment);
43
+ }
44
+ /**
45
+ * Shape guard for a record read from an active key: it must be an object
46
+ * whose own id maps back to that key, and it must carry a `context` object.
47
+ */
48
+ export function isActivePatternRecord(key, value) {
49
+ if (!value || typeof value !== 'object')
50
+ return false;
51
+ const record = value;
52
+ if (typeof record.id !== 'string' || key !== `${LEARNING_PATTERN_KEY_PREFIX}${record.id}`) {
53
+ return false;
54
+ }
55
+ return !!record.context && typeof record.context === 'object';
56
+ }
57
+ /**
58
+ * Read every active learned pattern: list every key (no cap, #1071), drop
59
+ * non-active key families before `get()`, then drop records that fail the
60
+ * shape guard. Patterns come back in key order. Date fields
61
+ * come back from kv as ISO strings and are rehydrated (#491 Bug 3), so
62
+ * `TimeRange.contains(pattern.createdAt)` works for every reader.
63
+ */
64
+ export async function readActivePatterns(memory, options = {}) {
65
+ const keys = await searchAllKeys(memory, `${LEARNING_PATTERN_KEY_PREFIX}*`, {
66
+ retrieve: options.retrieve,
67
+ pageSize: options.scanPageSize,
68
+ });
69
+ const patterns = [];
70
+ for (const key of keys) {
71
+ if (!isActivePatternKey(key))
72
+ continue;
73
+ const value = await memory.get(key, options.retrieve);
74
+ if (isActivePatternRecord(key, value)) {
75
+ patterns.push(rehydrateDates(value, ['createdAt', 'lastUsedAt']));
76
+ }
77
+ }
78
+ return patterns;
79
+ }
80
+ //# sourceMappingURL=active-patterns.js.map
@@ -45,9 +45,8 @@ export async function getCurrentStrategy(memory, domain) {
45
45
  retryCount: 3,
46
46
  concurrency: 4,
47
47
  },
48
- expectedOutcome: {
49
- success_rate: 0.8,
50
- },
48
+ // #1099: the default strategy has never run, so no outcome is expected.
49
+ expectedOutcome: {},
51
50
  };
52
51
  }
53
52
  /**
@@ -276,9 +276,6 @@ export declare class LearningOptimizationCoordinator extends BaseDomainCoordinat
276
276
  */
277
277
  importModels(modelExport: ModelExport): Promise<Result<ImportReport>>;
278
278
  protected subscribeToEvents(): void;
279
- private handleTestRunCompleted;
280
- private handleCoverageGap;
281
- private handleQualityGate;
282
279
  /**
283
280
  * Handle experience captured from ExperienceCaptureService
284
281
  * This is the bridge between Phase 4 experience capture and the coordinator
@@ -3,6 +3,9 @@
3
3
  * Orchestrates learning workflows across all QE domains
4
4
  */
5
5
  import { LoggerFactory } from '../../logging/index.js';
6
+ import { readActivePatterns, LEARNING_NS } from './active-patterns.js';
7
+ import { partitionByRewardSource } from './reward-source.js';
8
+ import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
6
9
  import { v4 as uuidv4 } from 'uuid';
7
10
  import { toError } from '../../shared/error-utils.js';
8
11
  import { rehydrateDates } from '../../shared/utils/kv-date-rehydrate.js';
@@ -18,7 +21,6 @@ import { BaseDomainCoordinator, } from '../base-domain-coordinator.js';
18
21
  // CQ-004: Extracted modules
19
22
  import * as LearningHelpers from './coordinator-helpers.js';
20
23
  import * as ConsensusHelpers from './coordinator-consensus.js';
21
- import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
22
24
  const DEFAULT_CONFIG = {
23
25
  maxConcurrentWorkflows: 3,
24
26
  defaultTimeout: 120000, // 2 minutes
@@ -199,7 +201,10 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
199
201
  // Get experiences from the last cycle
200
202
  const timeRange = TimeRange.lastNDays(1);
201
203
  const experiencesResult = await this.getExperiencesForDomain(domain, timeRange);
202
- const experiences = experiencesResult.success ? experiencesResult.value : [];
204
+ // #1109: the reported `before` value and the optimizer use measured outcomes only.
205
+ const experiences = experiencesResult.success
206
+ ? partitionByRewardSource(experiencesResult.value).measured
207
+ : [];
203
208
  this.updateWorkflowProgress(workflowId, 20);
204
209
  // Mine experiences for patterns
205
210
  const insightsResult = await this.learningService.mineExperiences(domain, timeRange);
@@ -220,12 +225,19 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
220
225
  const optimizationResult = await this.optimizerService.optimizeStrategy(currentStrategy, objective, experiences);
221
226
  if (optimizationResult.success) {
222
227
  strategiesOptimized = 1;
223
- improvements.push({
224
- metric: objective.metric,
225
- before: this.calculateMetricValue(experiences, objective.metric),
226
- after: optimizationResult.value.optimizedStrategy.expectedOutcome[objective.metric] || 0,
227
- percentChange: optimizationResult.value.improvement * 100,
228
- });
228
+ // #1099: `after` is the fitted expectation and `percentChange` the
229
+ // optimizer's estimate; neither was observed. Report no improvement
230
+ // rather than a 0 stand-in when the metric was never predicted.
231
+ const after = optimizationResult.value.optimizedStrategy.expectedOutcome[objective.metric];
232
+ if (typeof after === 'number') {
233
+ improvements.push({
234
+ metric: objective.metric,
235
+ before: this.calculateMetricValue(experiences, objective.metric),
236
+ after,
237
+ percentChange: optimizationResult.value.improvement * 100,
238
+ estimated: true,
239
+ });
240
+ }
229
241
  }
230
242
  }
231
243
  this.updateWorkflowProgress(workflowId, 80);
@@ -318,6 +330,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
318
330
  domainsOptimized,
319
331
  totalStrategies,
320
332
  avgImprovement: totalStrategies > 0 ? totalImprovement / totalStrategies : 0,
333
+ improvementEstimated: true,
321
334
  byDomain,
322
335
  };
323
336
  // Publish event
@@ -739,20 +752,21 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
739
752
  const patterns = [];
740
753
  const knowledge = [];
741
754
  const strategies = [];
742
- // Export patterns
743
- for (const _domain of targetDomains) {
744
- const patternKeys = await this.memory.search(`learning:pattern:*`, 500);
745
- for (const key of patternKeys) {
746
- const pattern = await this.memory.get(key);
747
- if (pattern && targetDomains.includes(pattern.domain)) {
748
- patterns.push(pattern);
749
- }
755
+ // Export patterns (#1055: active patterns only — creation provenance
756
+ // and archives share the `learning:pattern:` prefix). One read covers
757
+ // every target domain; the previous per-domain loop exported each
758
+ // pattern once per target domain. #1071: every key is read, no cap.
759
+ const activePatterns = await readActivePatterns(this.memory, { retrieve: LEARNING_NS });
760
+ for (const pattern of activePatterns) {
761
+ if (targetDomains.includes(pattern.domain)) {
762
+ patterns.push(pattern);
750
763
  }
751
- this.updateWorkflowProgress(workflowId, Math.round((patterns.length / 100) * 30));
752
764
  }
753
- // Export knowledge
765
+ this.updateWorkflowProgress(workflowId, 30);
766
+ // Export knowledge. #1071: no result cap; queryKnowledge reads every
767
+ // shared item before filtering, so other domains cannot crowd these out.
754
768
  const knowledgeResult = await this.transferService.queryKnowledge({
755
- limit: 1000,
769
+ limit: Number.POSITIVE_INFINITY,
756
770
  });
757
771
  if (knowledgeResult.success) {
758
772
  for (const item of knowledgeResult.value) {
@@ -762,10 +776,13 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
762
776
  }
763
777
  }
764
778
  this.updateWorkflowProgress(workflowId, 60);
765
- // Export strategies
766
- const strategyKeys = await this.memory.search(`learning:strategy:optimized:*`, 200);
779
+ // Export strategies from the namespace their writers use (#1071), every
780
+ // key, in key order.
781
+ const strategyKeys = await searchAllKeys(this.memory, 'learning:strategy:optimized:*', {
782
+ retrieve: LEARNING_NS,
783
+ });
767
784
  for (const key of strategyKeys) {
768
- const strategy = await this.memory.get(key);
785
+ const strategy = await this.memory.get(key, LEARNING_NS);
769
786
  if (strategy && targetDomains.includes(strategy.domain)) {
770
787
  strategies.push(strategy);
771
788
  }
@@ -808,7 +825,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
808
825
  const conflicts = [];
809
826
  // Import patterns
810
827
  for (const pattern of modelExport.patterns) {
811
- const existing = await this.memory.get(`learning:pattern:${pattern.id}`);
828
+ const existing = await this.memory.get(`learning:pattern:${pattern.id}`, { namespace: 'learning-optimization' });
812
829
  if (existing) {
813
830
  if (existing.confidence < pattern.confidence) {
814
831
  // Overwrite with better pattern
@@ -844,7 +861,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
844
861
  }
845
862
  // Import knowledge
846
863
  for (const item of modelExport.knowledge) {
847
- const existing = await this.memory.get(`learning:knowledge:shared:${item.id}`);
864
+ // #1071: compare against the record in the namespace written below.
865
+ const existing = await this.memory.get(`learning:knowledge:shared:${item.id}`, LEARNING_NS);
848
866
  if (existing) {
849
867
  if (item.version > existing.version) {
850
868
  await this.memory.set(`learning:knowledge:shared:${item.id}`, item, {
@@ -879,7 +897,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
879
897
  }
880
898
  // Import strategies
881
899
  for (const strategy of modelExport.strategies) {
882
- const existing = await this.memory.get(`learning:strategy:optimized:${strategy.id}`);
900
+ // #1071: compare against the record in the namespace written below.
901
+ const existing = await this.memory.get(`learning:strategy:optimized:${strategy.id}`, LEARNING_NS);
883
902
  if (existing) {
884
903
  if (strategy.confidence > existing.confidence) {
885
904
  await this.memory.set(`learning:strategy:optimized:${strategy.id}`, strategy, { namespace: 'learning-optimization', persist: true });
@@ -925,87 +944,13 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
925
944
  // Event Handling
926
945
  // ============================================================================
927
946
  subscribeToEvents() {
928
- // Subscribe to test execution events for learning
929
- this.eventBus.subscribe('test-execution.TestRunCompleted', this.handleTestRunCompleted.bind(this));
930
- // Subscribe to coverage gap events
931
- this.eventBus.subscribe('coverage-analysis.CoverageGapDetected', this.handleCoverageGap.bind(this));
932
- // Subscribe to quality assessment events
933
- this.eventBus.subscribe('quality-assessment.QualityGateEvaluated', this.handleQualityGate.bind(this));
947
+ // #1110: TestRunCompleted, CoverageGapDetected and QualityGateEvaluated are
948
+ // recorded by LearningOptimizationPlugin, which owns this coordinator and
949
+ // also records the test-run production metric. Subscribing here as well
950
+ // stored every such event twice.
934
951
  // Subscribe to experience capture events (Phase 4 integration)
935
952
  this.eventBus.subscribe('learning.ExperienceCaptured', this.handleExperienceCaptured.bind(this));
936
953
  }
937
- async handleTestRunCompleted(event) {
938
- // Record experience from test run
939
- const { runId, passed, failed, duration } = event.payload;
940
- const successRate = (passed + failed) > 0 ? passed / (passed + failed) : 0;
941
- await this.learningService.recordExperience({
942
- agentId: {
943
- value: 'test-execution',
944
- domain: 'test-execution',
945
- type: 'tester',
946
- },
947
- domain: 'test-execution',
948
- action: 'test-run',
949
- state: {
950
- context: { runId },
951
- metrics: { passed, failed, duration },
952
- },
953
- result: {
954
- success: successRate > 0.8,
955
- outcome: { success_rate: successRate, passed, failed },
956
- duration,
957
- },
958
- reward: successRate,
959
- });
960
- }
961
- async handleCoverageGap(event) {
962
- // #1014: only a gap found in MEASURED coverage is acted on / learned from.
963
- if (!isMeasuredGapPayload(event.payload))
964
- return;
965
- // Record as experience for learning
966
- const { gapId, file, riskScore } = event.payload;
967
- await this.learningService.recordExperience({
968
- agentId: {
969
- value: 'coverage-analysis',
970
- domain: 'coverage-analysis',
971
- type: 'analyzer',
972
- },
973
- domain: 'coverage-analysis',
974
- action: 'gap-detection',
975
- state: {
976
- context: { gapId, file },
977
- metrics: { riskScore },
978
- },
979
- result: {
980
- success: true,
981
- outcome: { risk_score: riskScore },
982
- duration: 0,
983
- },
984
- reward: 1 - riskScore, // Lower risk = higher reward
985
- });
986
- }
987
- async handleQualityGate(event) {
988
- const { gateId, passed } = event.payload;
989
- await this.learningService.recordExperience({
990
- agentId: {
991
- value: 'quality-assessment',
992
- domain: 'quality-assessment',
993
- type: 'validator',
994
- },
995
- domain: 'quality-assessment',
996
- action: 'gate-evaluation',
997
- state: {
998
- context: { gateId },
999
- metrics: { passed: passed ? 1 : 0 },
1000
- },
1001
- result: {
1002
- success: passed,
1003
- outcome: { gate_passed: passed ? 1 : 0 },
1004
- duration: 0,
1005
- },
1006
- reward: passed ? 1 : 0,
1007
- });
1008
- }
1009
954
  /**
1010
955
  * Handle experience captured from ExperienceCaptureService
1011
956
  * This is the bridge between Phase 4 experience capture and the coordinator
@@ -1229,9 +1174,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
1229
1174
  retryCount: 3,
1230
1175
  concurrency: 4,
1231
1176
  },
1232
- expectedOutcome: {
1233
- success_rate: 0.8,
1234
- },
1177
+ // #1099: the default strategy has never run, so no outcome is expected.
1178
+ expectedOutcome: {},
1235
1179
  };
1236
1180
  }
1237
1181
  async storeStrategy(domain, strategy) {
@@ -10,5 +10,5 @@ export { LearningCoordinatorService, type LearningCoordinatorConfig as LearningS
10
10
  export { TransferSpecialistService, type TransferSpecialistConfig, type TransferResult, } from './services/transfer-specialist.js';
11
11
  export { MetricsOptimizerService, type MetricsOptimizerConfig, type MetricsSnapshot, } from './services/metrics-optimizer.js';
12
12
  export { ProductionIntelService, type ProductionIntelConfig, type ProductionMetric, type ProductionIncident, type ProductionHealth, } from './services/production-intel.js';
13
- export type { ILearningOptimizationCoordinator, LearningCycleReport, OptimizationReport, CrossDomainSharingReport, LearningDashboard, ModelExport, ImportReport, ImportConflict, Improvement, DomainOptimizationResult, TrendPoint, Milestone, LearnedPattern, PatternType, PatternContext, PatternTemplate, TemplateVariable, PatternStats, IPatternLearningService, Experience, ExperienceResult, StateSnapshot, ResourceUsage, MinedInsights, ExperienceCluster, ExperienceAnomaly, IExperienceMiningService, Knowledge, KnowledgeType, KnowledgeContent, KnowledgeQuery, IKnowledgeSynthesisService, Strategy, OptimizedStrategy, OptimizationObjective, Constraint, ValidationResult, ABTestConfig, ABTestResult, StrategyEvaluation, IStrategyOptimizerService, IPatternRepository, IExperienceRepository, IKnowledgeRepository, IStrategyRepository, PatternLearnedEvent, KnowledgeSharedEvent, StrategyOptimizedEvent, ExperienceRecordedEvent, LearningMilestoneReachedEvent, } from './interfaces.js';
13
+ export type { ILearningOptimizationCoordinator, LearningCycleReport, OptimizationReport, CrossDomainSharingReport, LearningDashboard, ModelExport, ImportReport, ImportConflict, Improvement, DomainOptimizationResult, TrendPoint, Milestone, LearnedPattern, PatternType, PatternContext, PatternTemplate, TemplateVariable, PatternStats, IPatternLearningService, Experience, ExperienceResult, StateSnapshot, ResourceUsage, MinedInsights, ExperienceCluster, ExperienceAnomaly, IExperienceMiningService, Knowledge, KnowledgeType, KnowledgeContent, KnowledgeQuery, IKnowledgeSynthesisService, Strategy, OptimizedStrategy, OptimizationEvaluation, OptimizationObjective, Constraint, ValidationResult, ABTestConfig, ABTestResult, StrategyEvaluation, IStrategyOptimizerService, IPatternRepository, IExperienceRepository, IKnowledgeRepository, IStrategyRepository, PatternLearnedEvent, KnowledgeSharedEvent, StrategyOptimizedEvent, ExperienceRecordedEvent, LearningMilestoneReachedEvent, } from './interfaces.js';
14
14
  //# sourceMappingURL=index.d.ts.map