agentic-qe 3.15.9 → 3.15.11

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 (668) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +365 -0
  3. package/README.md +8 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/adapters/a2a/agent-cards/generator.js +6 -3
  6. package/dist/adapters/a2a/tasks/task-router.js +3 -1
  7. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  8. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  9. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  10. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  11. package/dist/adapters/ag-ui/json-patch.js +10 -6
  12. package/dist/adapters/trajectory-adapter.js +1 -1
  13. package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
  14. package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
  15. package/dist/agents/overlay-loader.js +26 -21
  16. package/dist/audit/witness-chain.d.ts +1 -1
  17. package/dist/cli/bundle.js +6 -6
  18. package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
  19. package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
  20. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
  23. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
  24. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
  25. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
  26. package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
  27. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
  30. package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
  31. package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
  32. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
  33. package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
  34. package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
  35. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
  36. package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
  37. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
  38. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
  39. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
  40. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
  41. package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
  42. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
  43. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
  44. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
  45. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
  47. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
  49. package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
  50. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
  54. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
  55. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
  57. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
  58. package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
  59. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
  60. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
  62. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
  63. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
  64. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
  66. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
  67. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
  69. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
  70. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
  71. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
  72. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
  73. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
  74. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
  76. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
  77. package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
  78. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
  79. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
  80. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
  81. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
  82. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
  83. package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
  84. package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
  85. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
  86. package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
  87. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
  88. package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
  89. package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
  90. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
  91. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
  92. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
  93. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
  94. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
  95. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
  96. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
  97. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
  98. package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
  99. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
  100. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
  101. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
  102. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
  104. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
  105. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
  106. package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
  107. package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
  108. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
  109. package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
  110. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
  111. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
  112. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
  113. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
  114. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
  115. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
  116. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
  117. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
  120. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
  121. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
  122. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
  123. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
  124. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
  126. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
  127. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
  129. package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
  130. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
  131. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
  132. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
  133. package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
  134. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
  135. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
  137. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
  138. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
  139. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
  140. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
  141. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
  142. package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
  143. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
  144. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
  145. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
  146. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
  147. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
  148. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
  149. package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
  150. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
  151. package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
  152. package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
  153. package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
  154. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
  155. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
  156. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
  157. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
  158. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
  159. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
  160. package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
  161. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
  162. package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
  163. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
  164. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
  166. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
  167. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
  168. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
  170. package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
  171. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
  173. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
  174. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
  175. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
  176. package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
  177. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
  178. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
  179. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
  180. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
  181. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
  182. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
  183. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
  184. package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
  185. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
  186. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
  187. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
  188. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
  189. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
  190. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
  191. package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
  192. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
  193. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
  194. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
  195. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
  196. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
  197. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
  198. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
  199. package/dist/cli/chunks/client-HL2COSFM.js +2 -0
  200. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
  201. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
  202. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
  203. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
  204. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
  205. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
  206. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
  207. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
  208. package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
  209. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
  210. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
  211. package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
  212. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
  213. package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
  214. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
  215. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
  216. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
  217. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
  218. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
  219. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
  220. package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
  221. package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
  222. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
  223. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
  224. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
  225. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
  226. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
  227. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
  228. package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
  229. package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
  230. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
  231. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
  232. package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
  233. package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
  234. package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
  235. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
  236. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
  237. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
  238. package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
  239. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
  240. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
  241. package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
  242. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
  243. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
  244. package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
  245. package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
  246. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
  247. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
  248. package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
  249. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
  250. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
  251. package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
  252. package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
  253. package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
  254. package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
  255. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
  256. package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
  257. package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
  258. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
  259. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
  260. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
  261. package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
  262. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
  263. package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
  264. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
  265. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
  266. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
  267. package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
  268. package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
  269. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
  270. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
  271. package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
  272. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
  273. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
  274. package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
  275. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
  276. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
  277. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
  278. package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
  279. package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
  280. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
  281. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
  282. package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
  283. package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
  284. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
  285. package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
  286. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
  287. package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
  288. package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
  289. package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
  290. package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
  291. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
  292. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
  293. package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
  294. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
  295. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
  296. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
  297. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
  298. package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
  299. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
  300. package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
  301. package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
  302. package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
  303. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
  304. package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
  305. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
  306. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
  307. package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
  308. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
  309. package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
  310. package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
  311. package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
  312. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
  313. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
  314. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
  315. package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
  316. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
  317. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
  318. package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
  319. package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
  320. package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
  321. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
  322. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
  323. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
  324. package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
  325. package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
  326. package/dist/cli/commands/fleet.js +23 -13
  327. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  328. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  329. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  330. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
  331. package/dist/cli/commands/learning.js +5 -3
  332. package/dist/cli/commands/ruvector-commands.js +2 -1
  333. package/dist/cli/commands/test.js +11 -2
  334. package/dist/cli/handlers/init-handler.d.ts +12 -0
  335. package/dist/cli/handlers/init-handler.js +27 -12
  336. package/dist/cli/utils/ci-output.d.ts +11 -0
  337. package/dist/cli/utils/ci-output.js +2 -0
  338. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  339. package/dist/cli/utils/fleet-operation.js +71 -0
  340. package/dist/cli/utils/fleet-result.d.ts +31 -0
  341. package/dist/cli/utils/fleet-result.js +124 -0
  342. package/dist/cli/utils/progress.d.ts +16 -2
  343. package/dist/cli/utils/progress.js +31 -14
  344. package/dist/context/sources/git-source.js +6 -2
  345. package/dist/coordination/consensus/consensus-engine.js +3 -1
  346. package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
  347. package/dist/coordination/handlers/coverage-collection.js +3 -1
  348. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  349. package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
  350. package/dist/coordination/handlers/coverage-runner.js +6 -22
  351. package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
  352. package/dist/coordination/handlers/coverage-stderr.js +39 -0
  353. package/dist/coordination/handlers/coverage-target.js +6 -3
  354. package/dist/coordination/handlers/handler-utils.js +3 -1
  355. package/dist/coordination/handlers/requirements-handlers.js +18 -3
  356. package/dist/coordination/handlers/security-handlers.js +45 -21
  357. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  358. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  359. package/dist/coordination/mincut/queen-integration.js +83 -6
  360. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  361. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  362. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  363. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  364. package/dist/coordination/queen-coordinator.d.ts +1 -1
  365. package/dist/coordination/queen-coordinator.js +27 -10
  366. package/dist/coordination/queen-event-handlers.js +13 -0
  367. package/dist/coordination/queen-task-management.d.ts +18 -24
  368. package/dist/coordination/queen-task-management.js +62 -168
  369. package/dist/coordination/queen-task-queue.d.ts +41 -0
  370. package/dist/coordination/queen-task-queue.js +194 -0
  371. package/dist/coordination/queen-types.d.ts +1 -1
  372. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  373. package/dist/coordination/queen-work-stealing.js +7 -4
  374. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  375. package/dist/coordination/result-saver-adapters.js +57 -0
  376. package/dist/coordination/result-saver.d.ts +1 -1
  377. package/dist/coordination/result-saver.js +8 -5
  378. package/dist/coordination/task-executability.d.ts +12 -0
  379. package/dist/coordination/task-executability.js +27 -0
  380. package/dist/coordination/workflow-orchestrator.d.ts +6 -0
  381. package/dist/coordination/workflow-orchestrator.js +22 -8
  382. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  383. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  384. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  385. package/dist/domains/code-intelligence/plugin.js +5 -1
  386. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  387. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  388. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  389. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  390. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  391. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  392. package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
  393. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  394. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  395. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  396. package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
  397. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  398. package/dist/domains/defect-intelligence/plugin.js +11 -2
  399. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  400. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  401. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  402. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  403. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  404. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  405. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  406. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  407. package/dist/domains/learning-optimization/coordinator.js +9 -5
  408. package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
  409. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  410. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  411. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  412. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  413. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  414. package/dist/domains/learning-optimization/reward-source.js +8 -1
  415. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  416. package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
  417. package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
  418. package/dist/domains/learning-optimization/services/production-intel.js +3 -1
  419. package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
  420. package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
  421. package/dist/domains/security-compliance/plugin.js +17 -3
  422. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  423. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  424. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  425. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  426. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  427. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  428. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  429. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
  430. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
  431. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  432. package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
  433. package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
  434. package/dist/domains/security-compliance/services/security-auditor.js +3 -2
  435. package/dist/domains/test-execution/coordinator.d.ts +6 -0
  436. package/dist/domains/test-execution/coordinator.js +28 -22
  437. package/dist/domains/test-execution/interfaces.d.ts +36 -1
  438. package/dist/domains/test-execution/plugin.js +19 -4
  439. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  440. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  441. package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
  442. package/dist/domains/test-execution/services/retry-outcome.js +53 -0
  443. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  444. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  445. package/dist/domains/test-execution/services/test-executor.js +8 -8
  446. package/dist/domains/test-generation/coordinator.js +2 -2
  447. package/dist/domains/test-generation/plugin.js +7 -2
  448. package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
  449. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  450. package/dist/domains/test-generation/services/test-generator.js +2 -2
  451. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  452. package/dist/governance/evolution-pipeline-integration.js +3 -1
  453. package/dist/hooks/cross-phase-hooks.js +5 -2
  454. package/dist/init/init-wizard-steps.js +5 -1
  455. package/dist/init/phases/04-database.js +7 -0
  456. package/dist/init/phases/10-workers.js +50 -6
  457. package/dist/init/phases/12-verification.js +14 -4
  458. package/dist/init/settings-merge.js +7 -4
  459. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +7 -0
  460. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
  461. package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
  462. package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
  463. package/dist/integrations/browser/agent-browser/client.js +37 -52
  464. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  465. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  466. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  467. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  468. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  469. package/dist/integrations/ruvector/filter-adapter.js +2 -1
  470. package/dist/integrations/vibium/client.js +2 -2
  471. package/dist/integrations/vibium/runtime.d.ts +1 -1
  472. package/dist/integrations/vibium/runtime.js +14 -11
  473. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  474. package/dist/kernel/unified-memory-schemas.js +3 -2
  475. package/dist/kernel/unified-memory.js +25 -6
  476. package/dist/learning/dream/dream-commit.d.ts +65 -0
  477. package/dist/learning/dream/dream-commit.js +104 -0
  478. package/dist/learning/dream/dream-engine.d.ts +81 -31
  479. package/dist/learning/dream/dream-engine.js +225 -168
  480. package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
  481. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/insight-generator.js +5 -4
  485. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  486. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  487. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  488. package/dist/learning/dream/speculative-dreamer.js +64 -111
  489. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  490. package/dist/learning/dream/spreading-activation.js +15 -6
  491. package/dist/learning/experience-capture.d.ts +9 -0
  492. package/dist/learning/experience-capture.js +18 -4
  493. package/dist/learning/memory-auditor.js +3 -1
  494. package/dist/learning/qe-patterns.js +2 -1
  495. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  496. package/dist/learning/qe-reasoning-bank.js +22 -11
  497. package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
  498. package/dist/learning/real-qe-reasoning-bank.js +70 -38
  499. package/dist/learning/sqlite-persistence.d.ts +6 -0
  500. package/dist/learning/sqlite-persistence.js +16 -2
  501. package/dist/learning/usage-outcome.d.ts +68 -0
  502. package/dist/learning/usage-outcome.js +84 -0
  503. package/dist/mcp/background-workers.d.ts +13 -1
  504. package/dist/mcp/background-workers.js +17 -3
  505. package/dist/mcp/bundle.js +612 -580
  506. package/dist/mcp/handlers/core-handlers.js +11 -0
  507. package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
  508. package/dist/mcp/handlers/domain-handler-configs.js +19 -5
  509. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  510. package/dist/mcp/handlers/handler-factory.js +36 -15
  511. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  512. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  513. package/dist/mcp/handlers/task-handlers.d.ts +16 -0
  514. package/dist/mcp/handlers/task-handlers.js +77 -24
  515. package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
  516. package/dist/mcp/protocol-server.js +10 -8
  517. package/dist/mcp/qe-tool-bridge.js +3 -0
  518. package/dist/mcp/security/schema-validator.js +3 -2
  519. package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
  520. package/dist/mcp/services/reasoning-bank-service.js +4 -0
  521. package/dist/mcp/tool-annotations.js +4 -1
  522. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  523. package/dist/mcp/tools/coherence/check.js +1 -0
  524. package/dist/mcp/tools/coherence/consensus.js +4 -2
  525. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  526. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  527. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  528. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  529. package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
  530. package/dist/mcp/tools/mincut/index.js +3 -0
  531. package/dist/mcp/tools/quality-assessment/gate.js +19 -1
  532. package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
  533. package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -3
  534. package/dist/mcp/tools/security-compliance/scan.js +4 -2
  535. package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
  536. package/dist/mcp/tools/test-execution/execute.js +3 -2
  537. package/dist/memory/crdt/crdt-store.js +5 -0
  538. package/dist/memory/crdt/lww-register.js +12 -2
  539. package/dist/migration/agent-compat.js +7 -5
  540. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  541. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  542. package/dist/optimization/early-exit-token-optimizer.js +3 -1
  543. package/dist/planning/goap-planner.js +5 -0
  544. package/dist/planning/plan-executor.js +5 -0
  545. package/dist/shared/git/git-analyzer.d.ts +49 -0
  546. package/dist/shared/git/git-analyzer.js +159 -319
  547. package/dist/shared/git/git-process.d.ts +22 -0
  548. package/dist/shared/git/git-process.js +37 -0
  549. package/dist/shared/git/index.d.ts +1 -0
  550. package/dist/shared/git/index.js +1 -0
  551. package/dist/shared/io/confined-read.d.ts +74 -0
  552. package/dist/shared/io/confined-read.js +256 -0
  553. package/dist/shared/io/file-reader.d.ts +6 -6
  554. package/dist/shared/io/file-reader.js +16 -42
  555. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  556. package/dist/shared/io/payload-path-guard.js +190 -0
  557. package/dist/shared/llm/providers/claude-code.js +4 -1
  558. package/dist/shared/llm/router/agent-router-config.js +2 -1
  559. package/dist/shared/llm/translation/tool-translator.js +2 -1
  560. package/dist/shared/native-module-errors.d.ts +51 -0
  561. package/dist/shared/native-module-errors.js +129 -0
  562. package/dist/shared/safe-db.js +14 -4
  563. package/dist/shared/security/osv-client.js +4 -1
  564. package/dist/shared/test-runner-args.d.ts +5 -0
  565. package/dist/shared/test-runner-args.js +6 -1
  566. package/dist/shared/test-runner-process.d.ts +6 -0
  567. package/dist/shared/test-runner-process.js +14 -0
  568. package/dist/shared/test-runner-verdict.d.ts +9 -1
  569. package/dist/shared/test-runner-verdict.js +15 -4
  570. package/dist/shared/types/test-frameworks.js +2 -2
  571. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  572. package/dist/shared/utils/namespaced-search.js +19 -1
  573. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  574. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  575. package/dist/sync/readers/json-reader.js +2 -1
  576. package/dist/validation/anchor-set.d.ts +6 -0
  577. package/dist/validation/anchor-set.js +9 -1
  578. package/dist/validation/gate-reexecute.js +7 -4
  579. package/dist/validation/quality-gate-runner.d.ts +7 -1
  580. package/dist/validation/quality-gate-runner.js +3 -3
  581. package/dist/workers/daemon.js +13 -1
  582. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  583. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  584. package/dist/workers/workers/defect-predictor.js +48 -49
  585. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  586. package/dist/workers/workers/learning-consolidation.js +12 -1
  587. package/dist/workflows/browser/workflow-loader.js +8 -5
  588. package/package.json +1 -1
  589. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  590. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  591. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  592. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  593. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  594. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  595. package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
  596. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  597. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  598. package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
  599. package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
  600. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  601. package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
  602. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  603. package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
  604. package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
  605. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  606. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  607. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  608. package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
  609. package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
  610. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  611. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  612. package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
  613. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  614. package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
  615. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  616. package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
  617. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  618. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  619. package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
  620. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  621. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  622. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  623. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  624. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  625. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  626. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  627. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  628. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  629. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  630. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  631. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  632. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  633. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  634. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  635. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  636. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  637. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  638. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  639. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  640. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  641. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  642. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  643. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  644. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  645. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  646. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  647. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  648. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  649. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  650. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  651. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  652. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  653. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  654. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  655. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  656. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  657. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  658. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  659. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  660. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  661. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  662. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  663. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  664. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  665. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  666. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  667. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  668. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -627,7 +627,7 @@ export class MCPProtocolServer {
627
627
  parameters: [
628
628
  { name: 'topology', type: 'string', description: 'Swarm topology type', enum: ['hierarchical', 'mesh', 'ring', 'adaptive'] },
629
629
  { name: 'maxAgents', type: 'number', description: 'Maximum number of agents', default: 15 },
630
- { name: 'enabledDomains', type: 'array', description: 'Domains to enable' },
630
+ { name: 'enabledDomains', type: 'array', description: 'Domains to enable', items: { type: 'string' } },
631
631
  { name: 'lazyLoading', type: 'boolean', description: 'Enable lazy loading', default: true },
632
632
  ],
633
633
  },
@@ -655,6 +655,7 @@ export class MCPProtocolServer {
655
655
  isCacheable: false,
656
656
  parameters: [
657
657
  { name: 'domain', type: 'string', description: 'Specific domain to check' },
658
+ { name: 'detailed', type: 'boolean', description: 'Include per-domain health, issues and the MinCut reading (raw minCut status/value, and the fleet reading without task-scoped agents that decides status)', default: false },
658
659
  ],
659
660
  },
660
661
  handler: (params) => handleFleetHealth(params),
@@ -668,7 +669,7 @@ export class MCPProtocolServer {
668
669
  parameters: [
669
670
  { name: 'type', type: 'string', description: 'Task type', required: true },
670
671
  { name: 'priority', type: 'string', description: 'Task priority', enum: ['p0', 'p1', 'p2', 'p3'], default: 'p1' },
671
- { name: 'targetDomains', type: 'array', description: 'Target domains (e.g. ["coverage-analysis"]); unknown domains are rejected' },
672
+ { name: 'targetDomains', type: 'array', description: 'Target domains (e.g. ["coverage-analysis"]); unknown domains are rejected', items: { type: 'string' } },
672
673
  { name: 'payload', type: 'object', description: 'Task payload data' },
673
674
  ],
674
675
  },
@@ -720,6 +721,7 @@ export class MCPProtocolServer {
720
721
  parameters: [
721
722
  { name: 'task', type: 'string', description: 'Task description', required: true },
722
723
  { name: 'strategy', type: 'string', description: 'Execution strategy', enum: ['parallel', 'sequential', 'adaptive'] },
724
+ { name: 'filePaths', type: 'array', description: 'Project files the task works on. A security scan or quality assessment runs on these files and is refused without them.', items: { type: 'string' } },
723
725
  ],
724
726
  },
725
727
  handler: (params) => handleTaskOrchestrate(params),
@@ -880,7 +882,7 @@ export class MCPProtocolServer {
880
882
  description: `Execute test files in parallel with automatic retry on flaky failures. ${SAVE_RESULTS_HINT} Example: test_execute_parallel({ testFiles: ["tests/auth.test.ts"], parallel: true })`,
881
883
  category: 'domain',
882
884
  parameters: [
883
- { name: 'testFiles', type: 'array', description: 'Nonempty list of concrete test file paths (relative to the project working directory or absolute). Expand glob patterns before calling; glob patterns are rejected.' },
885
+ { name: 'testFiles', type: 'array', description: 'Nonempty list of concrete test file paths (relative to the project working directory or absolute). Expand glob patterns before calling; glob patterns are rejected.', items: { type: 'string' } },
884
886
  { name: 'parallel', type: 'boolean', description: 'Enable parallel execution', default: true },
885
887
  saveResultsParameter('test_execute_parallel'),
886
888
  ],
@@ -1108,7 +1110,7 @@ export class MCPProtocolServer {
1108
1110
  category: 'memory',
1109
1111
  parameters: [
1110
1112
  { name: 'sourceAgentId', type: 'string', description: 'Source agent ID', required: true },
1111
- { name: 'targetAgentIds', type: 'array', description: 'Target agent IDs', required: true },
1113
+ { name: 'targetAgentIds', type: 'array', description: 'Target agent IDs', required: true, items: { type: 'string' } },
1112
1114
  { name: 'knowledgeDomain', type: 'string', description: 'Knowledge domain', required: true },
1113
1115
  ],
1114
1116
  },
@@ -1125,7 +1127,7 @@ export class MCPProtocolServer {
1125
1127
  parameters: [
1126
1128
  { name: 'task', type: 'string', description: 'Task description to analyze', required: true },
1127
1129
  { name: 'codeContext', type: 'string', description: 'Optional code context for complexity analysis' },
1128
- { name: 'filePaths', type: 'array', description: 'Optional file paths involved' },
1130
+ { name: 'filePaths', type: 'array', description: 'Optional file paths involved', items: { type: 'string' } },
1129
1131
  { name: 'manualTier', type: 'number', description: 'Manual tier override (0-4)' },
1130
1132
  { name: 'isCritical', type: 'boolean', description: 'Mark as critical task (allows budget overrides)' },
1131
1133
  { name: 'agentType', type: 'string', description: 'Agent type making the request' },
@@ -1192,7 +1194,7 @@ export class MCPProtocolServer {
1192
1194
  description: 'Trigger infrastructure recovery for detected failures and optionally re-run affected tests. Example: infra_healing_recover({ services: ["postgres"], rerunTests: true })',
1193
1195
  category: 'infra-healing',
1194
1196
  parameters: [
1195
- { name: 'services', type: 'array', description: 'Specific services to recover (empty = all failing)' },
1197
+ { name: 'services', type: 'array', description: 'Specific services to recover (empty = all failing)', items: { type: 'string' } },
1196
1198
  { name: 'rerunTests', type: 'boolean', description: 'Re-run affected tests after recovery', default: true },
1197
1199
  ],
1198
1200
  },
@@ -1281,7 +1283,7 @@ export class MCPProtocolServer {
1281
1283
  category: 'cross-phase',
1282
1284
  isConcurrencySafe: true,
1283
1285
  parameters: [
1284
- { name: 'signals', type: 'array', description: 'Signals to format', required: true },
1286
+ { name: 'signals', type: 'array', description: 'Signals to format', required: true, items: { type: 'object' } },
1285
1287
  ],
1286
1288
  },
1287
1289
  handler: (params) => handleFormatSignals(params),
@@ -1307,7 +1309,7 @@ export class MCPProtocolServer {
1307
1309
  { name: 'filePath', type: 'string', description: 'Path to the document to validate' },
1308
1310
  { name: 'content', type: 'string', description: 'Inline content to validate (alternative to filePath)' },
1309
1311
  { name: 'pipeline', type: 'string', description: 'Pipeline type (default: requirements)', default: 'requirements' },
1310
- { name: 'steps', type: 'array', description: 'Specific step IDs to run (default: all 13)' },
1312
+ { name: 'steps', type: 'array', description: 'Specific step IDs to run (default: all 13)', items: { type: 'string' } },
1311
1313
  { name: 'continueOnFailure', type: 'boolean', description: 'Continue past blocking failures', default: false },
1312
1314
  { name: 'format', type: 'string', description: 'Output format: markdown or json', default: 'json' },
1313
1315
  ],
@@ -46,6 +46,9 @@ function schemaToParameters(tool) {
46
46
  required: requiredSet.has(name) || undefined,
47
47
  default: prop.default,
48
48
  enum: prop.enum,
49
+ // #1185: keep the element schema; clients such as VS Code Copilot
50
+ // reject a tool whose array parameter has no items.
51
+ items: prop.items,
49
52
  });
50
53
  }
51
54
  return params;
@@ -451,7 +451,8 @@ export class SchemaValidator {
451
451
  // Check required properties
452
452
  if (schema.required) {
453
453
  for (const required of schema.required) {
454
- if (!(required in data)) {
454
+ // #1136: own properties only; an inherited `constructor` is not present.
455
+ if (!Object.hasOwn(data, required)) {
455
456
  errors.push({
456
457
  path: path ? `${path}.${required}` : required,
457
458
  message: `Required property '${required}' is missing`,
@@ -464,7 +465,7 @@ export class SchemaValidator {
464
465
  // Validate properties
465
466
  if (schema.properties) {
466
467
  for (const [key, propSchema] of Object.entries(schema.properties)) {
467
- if (key in data) {
468
+ if (Object.hasOwn(data, key)) {
468
469
  this.validateValue(data[key], propSchema, path ? `${path}.${key}` : key, `${schemaPath}/properties/${key}`, errors);
469
470
  }
470
471
  }
@@ -12,7 +12,7 @@
12
12
  * - Synchronous learning (no fire-and-forget)
13
13
  */
14
14
  import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
15
- import { type RealQERoutingRequest, type RealQERoutingResult, type RealQEReasoningBankStats, type RealQEPatternSearchResult } from '../../learning/real-qe-reasoning-bank.js';
15
+ import { type RealQERoutingRequest, type RealQERoutingResult, type RealQEReasoningBankStats, type PatternSearchStatus, type RealQEPatternSearchResult } from '../../learning/real-qe-reasoning-bank.js';
16
16
  import type { QEPattern, QEDomain } from '../../learning/qe-patterns.js';
17
17
  /**
18
18
  * Task outcome record for learning
@@ -208,6 +208,8 @@ export declare class ReasoningBankService {
208
208
  limit?: number;
209
209
  domain?: QEDomain;
210
210
  }): Promise<RealQEPatternSearchResult[]>;
211
+ /** #1022: whether pattern search uses vectors or text matching only. */
212
+ getPatternSearchStatus(): PatternSearchStatus;
211
213
  /**
212
214
  * Get service statistics
213
215
  */
@@ -515,6 +515,10 @@ export class ReasoningBankService {
515
515
  return [];
516
516
  }
517
517
  }
518
+ /** #1022: whether pattern search uses vectors or text matching only. */
519
+ getPatternSearchStatus() {
520
+ return this.enhancedAdapter.getPatternSearchStatus();
521
+ }
518
522
  /**
519
523
  * Get service statistics
520
524
  */
@@ -58,7 +58,10 @@ function conservativeDisposition() {
58
58
  export const BUILT_IN_TOOL_SAFETY_INVENTORY = Object.freeze(Object.fromEntries(BUILT_IN_TOOL_NAMES.map((name) => [name, conservativeDisposition()])));
59
59
  /** Resolve explicit metadata over inventory metadata over conservative defaults. */
60
60
  export function resolveToolAnnotations(name, annotations) {
61
- const reviewedDisposition = BUILT_IN_TOOL_SAFETY_INVENTORY[name];
61
+ // #1157: own entries only; a tool named `constructor` is not in the inventory.
62
+ const reviewedDisposition = Object.hasOwn(BUILT_IN_TOOL_SAFETY_INVENTORY, name)
63
+ ? BUILT_IN_TOOL_SAFETY_INVENTORY[name]
64
+ : undefined;
62
65
  return Object.freeze({
63
66
  ...(reviewedDisposition?.annotations ?? CONSERVATIVE_TOOL_ANNOTATIONS),
64
67
  // Dynamic and plugin-supplied names cannot self-assert optimistic hints.
@@ -15,6 +15,7 @@ import { KnowledgeGraphService } from '../../../domains/code-intelligence/servic
15
15
  import { createKnowledgeGraphRelationshipResolver } from '../../../domains/code-intelligence/services/c4-model/kg-relationships.js';
16
16
  import { InMemoryEventBus } from '../../../kernel/event-bus.js';
17
17
  import { toErrorMessage } from '../../../shared/error-utils.js';
18
+ import { requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
18
19
  const want = (level, l) => level === 'all' || level === l;
19
20
  // ============================================================================
20
21
  // Tool Implementation
@@ -53,7 +54,16 @@ export class CodeC4Tool extends MCPToolBase {
53
54
  return this.searchService;
54
55
  }
55
56
  async execute(params, context) {
56
- const { action, projectPath = '.', level = 'all', query, limit = 10 } = params;
57
+ const { action, projectPath: requestedPath = '.', level = 'all', query, limit = 10 } = params;
58
+ // #1126: analyse (and report package names from) only a directory inside
59
+ // the project.
60
+ let projectPath = requestedPath;
61
+ if (requestedPath !== '.') {
62
+ const confined = await requirePayloadPath('qe/code/c4', 'projectPath', requestedPath, { allowDirectory: true });
63
+ if (!confined.success)
64
+ return { success: false, error: confined.error.message };
65
+ projectPath = confined.value;
66
+ }
57
67
  try {
58
68
  if (this.isAborted(context)) {
59
69
  return { success: false, error: 'Operation aborted' };
@@ -19,6 +19,7 @@ const COHERENCE_CHECK_SCHEMA = {
19
19
  nodes: {
20
20
  type: 'array',
21
21
  description: 'Array of nodes to check for coherence. Each node must have an id and embedding vector.',
22
+ items: { type: 'object', description: 'Node with id, embedding vector, optional weight and metadata' },
22
23
  },
23
24
  energyThreshold: {
24
25
  type: 'number',
@@ -54,11 +54,13 @@ const COHERENCE_CONSENSUS_SCHEMA = {
54
54
  agentId: { type: 'string', description: 'Agent identifier', minLength: 1 },
55
55
  agentType: { type: 'string', description: 'Agent type (default: worker)' },
56
56
  // `verdict` may be a string, number, or boolean, which this schema
57
- // type cannot express; it is required below and checked in execute().
57
+ // type cannot express. It is required, but checked in execute():
58
+ // listing it in `required` without a property is invalid in strict
59
+ // JSON Schema (#1185).
58
60
  confidence: { type: 'number', description: 'Confidence in the verdict', minimum: 0, maximum: 1 },
59
61
  reasoning: { type: 'string', description: 'Optional reasoning text' },
60
62
  },
61
- required: ['agentId', 'verdict', 'confidence'],
63
+ required: ['agentId', 'confidence'],
62
64
  },
63
65
  },
64
66
  confidenceThreshold: {
@@ -12,6 +12,27 @@ import { CoverageAnalyzerService } from '../../../domains/coverage-analysis/serv
12
12
  import { GapDetectorService } from '../../../domains/coverage-analysis/services/gap-detector.js';
13
13
  import { findAndParseCoverage, parseCoverage, } from '../../../domains/coverage-analysis/services/coverage-parser.js';
14
14
  import { toErrorMessage } from '../../../shared/error-utils.js';
15
+ import { requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
16
+ /**
17
+ * #1126: a caller-named coverage report must be a regular file inside the
18
+ * project (never /dev/zero or /proc/self/environ), and a target a directory
19
+ * inside it. Returns the real paths to read, or an error naming the refusal.
20
+ */
21
+ async function confineCoverageInputs(tool, target, coverageFile) {
22
+ let confinedTarget = target;
23
+ if (target !== '.') {
24
+ const t = await requirePayloadPath(tool, 'target', target, { allowDirectory: true, allowMissing: true });
25
+ if (!t.success)
26
+ return { error: t.error.message };
27
+ confinedTarget = t.value;
28
+ }
29
+ if (coverageFile === undefined)
30
+ return { target: confinedTarget };
31
+ const f = await requirePayloadPath(tool, 'coverageFile', coverageFile);
32
+ if (!f.success)
33
+ return { error: f.error.message };
34
+ return { target: confinedTarget, coverageFile: f.value };
35
+ }
15
36
  // ============================================================================
16
37
  // Helper: Calculate Coverage Summary from Files
17
38
  // ============================================================================
@@ -93,8 +114,12 @@ export class CoverageAnalyzeTool extends MCPToolBase {
93
114
  return this.analyzerService;
94
115
  }
95
116
  async execute(params, context) {
96
- const { target = '.', coverageFile, thresholds = { lines: 80, branches: 70, functions: 80, statements: 80 }, includeRisk = false, includeRiskScoring = false, dryRun = false, coverageFormat, language, } = params;
117
+ const { target: requestedTarget = '.', coverageFile: requestedCoverageFile, thresholds = { lines: 80, branches: 70, functions: 80, statements: 80 }, includeRisk = false, includeRiskScoring = false, dryRun = false, coverageFormat, language, } = params;
97
118
  const shouldIncludeRisk = includeRisk || includeRiskScoring;
119
+ const confined = await confineCoverageInputs('qe/coverage/analyze', requestedTarget, requestedCoverageFile);
120
+ if ('error' in confined)
121
+ return { success: false, error: confined.error };
122
+ const { target, coverageFile } = confined;
98
123
  try {
99
124
  this.emitStream(context, {
100
125
  status: 'analyzing',
@@ -309,7 +334,11 @@ export class CoverageGapsTool extends MCPToolBase {
309
334
  return this.gapService;
310
335
  }
311
336
  async execute(params, context) {
312
- const { target = '.', coverageFile, minRisk = 0.3, limit = 20, prioritization = 'complexity', coverageFormat, language, } = params;
337
+ const { target: requestedTarget = '.', coverageFile: requestedCoverageFile, minRisk = 0.3, limit = 20, prioritization = 'complexity', coverageFormat, language, } = params;
338
+ const confined = await confineCoverageInputs('qe/coverage/gaps', requestedTarget, requestedCoverageFile);
339
+ if ('error' in confined)
340
+ return { success: false, error: confined.error };
341
+ const { target, coverageFile } = confined;
313
342
  try {
314
343
  this.emitStream(context, {
315
344
  status: 'detecting',
@@ -52,6 +52,8 @@ export interface DreamResultSummary {
52
52
  nodesActivated: number;
53
53
  };
54
54
  patternsCreated: number;
55
+ /** #1060: how long the dream's single commit transaction held the write lock, in ms */
56
+ commitDurationMs?: number;
55
57
  }
56
58
  export interface InsightSummary {
57
59
  id: string;
@@ -91,19 +93,17 @@ export interface DreamStatusResult {
91
93
  export declare class DreamCycleTool extends MCPToolBase<DreamCycleParams, DreamCycleToolResult> {
92
94
  readonly config: MCPToolConfig;
93
95
  private engine;
94
- private engineConfig;
96
+ /** #1060: the one in-flight engine creation, so concurrent calls share it. */
97
+ private enginePending;
95
98
  /**
96
99
  * Get or create the DreamEngine instance.
97
100
  *
98
- * If config differs from the cached engine's config, the engine is
99
- * recreated to respect the new configuration. This prevents the bug
100
- * where subsequent calls with different durationMs/minPatterns were ignored.
101
+ * #1060: one engine for the tool's lifetime. Duration and the minimum
102
+ * concept count are passed per call to dream(), so a call with different
103
+ * values no longer closes and recreates the engine (which interrupted a
104
+ * dream still running on it).
101
105
  */
102
106
  private getEngine;
103
- /**
104
- * Compare two configs for equality (shallow comparison of relevant fields)
105
- */
106
- private configsEqual;
107
107
  /**
108
108
  * Load patterns from ReasoningBank into the DreamEngine
109
109
  *
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { MCPToolBase, getSharedMemoryBackend } from '../base.js';
15
15
  import { createDreamEngine, } from '../../../learning/dream/index.js';
16
+ import { DreamAlreadyRunningError } from '../../../learning/dream/dream-engine.js';
16
17
  import { createQEReasoningBank } from '../../../learning/qe-reasoning-bank.js';
17
18
  import { toErrorMessage } from '../../../shared/error-utils.js';
18
19
  // ============================================================================
@@ -66,39 +67,37 @@ export class DreamCycleTool extends MCPToolBase {
66
67
  timeout: 120000, // 2 minutes max (dream cycle + overhead)
67
68
  };
68
69
  engine = null;
69
- engineConfig = null;
70
+ /** #1060: the one in-flight engine creation, so concurrent calls share it. */
71
+ enginePending = null;
70
72
  /**
71
73
  * Get or create the DreamEngine instance.
72
74
  *
73
- * If config differs from the cached engine's config, the engine is
74
- * recreated to respect the new configuration. This prevents the bug
75
- * where subsequent calls with different durationMs/minPatterns were ignored.
75
+ * #1060: one engine for the tool's lifetime. Duration and the minimum
76
+ * concept count are passed per call to dream(), so a call with different
77
+ * values no longer closes and recreates the engine (which interrupted a
78
+ * dream still running on it).
76
79
  */
77
- async getEngine(config) {
78
- // Check if we need to recreate due to config change
79
- const configChanged = this.engine && config && !this.configsEqual(this.engineConfig, config);
80
- if (configChanged && this.engine) {
81
- await this.engine.close().catch(() => { });
82
- this.engine = null;
83
- this.engineConfig = null;
84
- }
85
- if (!this.engine) {
86
- this.engine = createDreamEngine(config);
87
- this.engineConfig = config || null;
88
- await this.engine.initialize();
80
+ async getEngine() {
81
+ if (this.engine)
82
+ return this.engine;
83
+ if (!this.enginePending) {
84
+ const create = async () => {
85
+ const engine = createDreamEngine();
86
+ await engine.initialize();
87
+ // A reset while initializing dropped this engine; don't resurrect it.
88
+ if (this.enginePending === pending)
89
+ this.engine = engine;
90
+ else
91
+ engine.close().catch(() => { });
92
+ return engine;
93
+ };
94
+ const pending = create();
95
+ this.enginePending = pending;
96
+ const settle = () => { if (this.enginePending === pending)
97
+ this.enginePending = null; };
98
+ pending.then(settle, settle);
89
99
  }
90
- return this.engine;
91
- }
92
- /**
93
- * Compare two configs for equality (shallow comparison of relevant fields)
94
- */
95
- configsEqual(a, b) {
96
- if (a === b)
97
- return true;
98
- if (!a || !b)
99
- return false;
100
- return (a.maxDurationMs === b.maxDurationMs &&
101
- a.minConceptsRequired === b.minConceptsRequired);
100
+ return this.enginePending;
102
101
  }
103
102
  /**
104
103
  * Load patterns from ReasoningBank into the DreamEngine
@@ -142,7 +141,8 @@ export class DreamCycleTool extends MCPToolBase {
142
141
  domain: result.pattern.qeDomain || 'learning-optimization',
143
142
  patternType: result.pattern.patternType,
144
143
  confidence: result.pattern.confidence,
145
- successRate: result.pattern.successRate || 0.5,
144
+ // A real 0% stays 0%; a pattern never used has no rate (#1142 review).
145
+ successRate: result.pattern.usageCount > 0 ? result.pattern.successRate : undefined,
146
146
  }));
147
147
  const loaded = await engine.loadPatternsAsConcepts(importPatterns);
148
148
  this.logger.info(`Loaded ${loaded} patterns as concepts from ReasoningBank`);
@@ -195,17 +195,19 @@ export class DreamCycleTool extends MCPToolBase {
195
195
  const minPatterns = params.minPatterns || 10;
196
196
  const loadFromRB = params.loadFromReasoningBank !== false;
197
197
  this.logger.info(`Starting dream cycle (${durationMs}ms, min: ${minPatterns} patterns)`);
198
- const engine = await this.getEngine({
199
- maxDurationMs: durationMs,
200
- minConceptsRequired: minPatterns,
201
- });
198
+ const engine = await this.getEngine();
199
+ // #1060: a concurrent dream is refused with a clear error, not queued.
200
+ const running = engine.getCurrentCycle();
201
+ if (running) {
202
+ throw new DreamAlreadyRunningError(running.id);
203
+ }
202
204
  // Load patterns from ReasoningBank if requested
203
205
  if (loadFromRB) {
204
206
  const loaded = await this.loadPatternsFromReasoningBank(engine);
205
207
  this.logger.info(`Loaded ${loaded} patterns from ReasoningBank`);
206
208
  }
207
209
  // Run the dream cycle
208
- const result = await engine.dream(durationMs);
210
+ const result = await engine.dream(durationMs, { minConceptsRequired: minPatterns });
209
211
  const dreamResult = {
210
212
  cycleId: result.cycle.id,
211
213
  status: result.cycle.status,
@@ -215,6 +217,7 @@ export class DreamCycleTool extends MCPToolBase {
215
217
  insightsGenerated: result.cycle.insightsGenerated,
216
218
  activationStats: result.activationStats,
217
219
  patternsCreated: result.patternsCreated,
220
+ commitDurationMs: result.commitDurationMs,
218
221
  };
219
222
  const insights = result.insights.map((i) => ({
220
223
  id: i.id,
@@ -392,6 +395,7 @@ export class DreamCycleTool extends MCPToolBase {
392
395
  * Reset instance cache (for fleet dispose)
393
396
  */
394
397
  resetInstanceCache() {
398
+ this.enginePending = null;
395
399
  if (this.engine) {
396
400
  this.engine.close().catch(console.error);
397
401
  this.engine = null;
@@ -44,6 +44,8 @@ export interface LearnResult {
44
44
  measuredExperiences?: number;
45
45
  /** #1109: experiences recorded with an assigned reward, excluded from every rate. */
46
46
  assignedRewardsExcluded?: number;
47
+ /** #1121: requested experience IDs with no stored experience; not processed. */
48
+ experienceIdsNotFound?: number;
47
49
  evidenceStatus?: 'insufficient-evidence';
48
50
  patternsLearned: number;
49
51
  newPatterns: LearnedPattern[];
@@ -103,8 +105,14 @@ export interface PatternResult {
103
105
  byType: Record<string, number>;
104
106
  byDomain: Record<string, number>;
105
107
  topPatterns: LearnedPattern[];
106
- avgConfidence: number;
107
- avgSuccessRate: number;
108
+ /** Null when no pattern has a measured rate (#1121); not a 0 that reads as measured. */
109
+ avgConfidence: number | null;
110
+ avgSuccessRate: number | null;
111
+ /** #1109: patterns learned from assigned rewards, left out of every figure. */
112
+ assignedPatternsExcluded?: number;
113
+ /** #1121: untagged patterns mined before #1120, left out of every figure. */
114
+ legacyPatternsExcluded?: number;
115
+ evidenceStatus?: 'insufficient-evidence';
108
116
  /** Read-only persisted SONA visibility when an initialized fleet is available. */
109
117
  sona?: SONASnapshot;
110
118
  }
@@ -118,6 +126,8 @@ export interface DashboardResult {
118
126
  assignedRewardsExcluded?: number;
119
127
  /** #1109: stored patterns excluded because they were learned from assigned rewards. */
120
128
  assignedPatternsExcluded?: number;
129
+ /** #1121: untagged patterns mined before #1120 (rate selected over successes), excluded likewise. */
130
+ legacyPatternsExcluded?: number;
121
131
  /** Ranked by measured success rate; empty when no domain has a measured outcome. */
122
132
  topPerformingDomains: DomainName[];
123
133
  evidenceStatus?: 'insufficient-evidence';
@@ -150,6 +160,12 @@ export declare class LearningOptimizeTool extends MCPToolBase<LearningOptimizePa
150
160
  private getServices;
151
161
  execute(params: LearningOptimizeParams, context: MCPToolContext): Promise<ToolResult<LearningOptimizeResult>>;
152
162
  private executeLearn;
163
+ /**
164
+ * #1121: learn from explicitly requested experiences. experiencesProcessed
165
+ * is the number actually read; IDs with no stored experience are counted in
166
+ * experienceIdsNotFound instead of being reported as processed.
167
+ */
168
+ private learnFromExperienceIds;
153
169
  /**
154
170
  * Return demo learn results when no real data available.
155
171
  * Only used when demoMode is explicitly requested or as fallback with warning.
@@ -80,6 +80,9 @@ export class LearningOptimizeTool extends MCPToolBase {
80
80
  break;
81
81
  case 'patterns':
82
82
  result.patternResult = await this.executePatterns(domain, context);
83
+ if (result.patternResult.evidenceStatus === 'insufficient-evidence') {
84
+ result.evidenceStatus = 'insufficient-evidence';
85
+ }
83
86
  break;
84
87
  case 'dashboard':
85
88
  result.dashboardResult = await this.executeDashboard(context);
@@ -116,7 +119,11 @@ export class LearningOptimizeTool extends MCPToolBase {
116
119
  status: 'learning',
117
120
  message: `Learning from ${experienceIds?.length || 'recent'} experiences`,
118
121
  });
119
- // Get experiences from memory or mine recent ones
122
+ // #1121: learn from the requested experiences; count only those read.
123
+ if (experienceIds && experienceIds.length > 0) {
124
+ return this.learnFromExperienceIds(learningCoordinator, experienceIds);
125
+ }
126
+ // Mine recent experiences
120
127
  const timeRange = TimeRange.lastNDays(7);
121
128
  const mineResult = await learningCoordinator.mineExperiences(targetDomain, timeRange);
122
129
  const newPatterns = [];
@@ -143,10 +150,6 @@ export class LearningOptimizeTool extends MCPToolBase {
143
150
  });
144
151
  }
145
152
  }
146
- // If specific experience IDs provided, record them
147
- if (experienceIds && experienceIds.length > 0) {
148
- experiencesProcessed = experienceIds.length;
149
- }
150
153
  // If no patterns were learned, return empty result (not fake data)
151
154
  // This is a valid state - no patterns discovered yet
152
155
  // #1109: there is no recorded baseline, so improvement is never computed
@@ -161,6 +164,42 @@ export class LearningOptimizeTool extends MCPToolBase {
161
164
  unmeasured: ['improvement'],
162
165
  };
163
166
  }
167
+ /**
168
+ * #1121: learn from explicitly requested experiences. experiencesProcessed
169
+ * is the number actually read; IDs with no stored experience are counted in
170
+ * experienceIdsNotFound instead of being reported as processed.
171
+ */
172
+ async learnFromExperienceIds(learningCoordinator, experienceIds) {
173
+ const readResult = await learningCoordinator.getExperiencesByIds(experienceIds);
174
+ if (!readResult.success)
175
+ throw readResult.error;
176
+ const read = readResult.value;
177
+ const { measured, assignedExcluded } = partitionByRewardSource(read);
178
+ const learned = measured.length > 0 ? await learningCoordinator.learnPattern(read) : null;
179
+ const newPatterns = learned?.success
180
+ ? [{
181
+ id: learned.value.id,
182
+ type: learned.value.type,
183
+ name: learned.value.name,
184
+ description: learned.value.description,
185
+ confidence: learned.value.confidence,
186
+ usageCount: learned.value.usageCount,
187
+ successRate: learned.value.successRate,
188
+ }]
189
+ : [];
190
+ this.markAsRealData();
191
+ return {
192
+ experiencesProcessed: read.length,
193
+ experienceIdsNotFound: new Set(experienceIds).size - read.length,
194
+ measuredExperiences: measured.length,
195
+ assignedRewardsExcluded: assignedExcluded,
196
+ ...(measured.length === 0 ? { evidenceStatus: 'insufficient-evidence' } : {}),
197
+ patternsLearned: newPatterns.length,
198
+ newPatterns,
199
+ improvement: null,
200
+ unmeasured: ['improvement'],
201
+ };
202
+ }
164
203
  /**
165
204
  * Return demo learn results when no real data available.
166
205
  * Only used when demoMode is explicitly requested or as fallback with warning.
@@ -279,6 +318,7 @@ export class LearningOptimizeTool extends MCPToolBase {
279
318
  // Not enough data - recommend default strategy
280
319
  const contextForRecommendation = {
281
320
  tags: [targetDomain, objective.metric],
321
+ objective: { metric: objective.metric, direction: objective.direction },
282
322
  };
283
323
  const recommendResult = await metricsOptimizer.recommendStrategy(contextForRecommendation);
284
324
  if (!recommendResult.success)
@@ -323,7 +363,6 @@ export class LearningOptimizeTool extends MCPToolBase {
323
363
  let sourcePatterns = 0;
324
364
  let transferredPatterns = 0;
325
365
  let adaptedPatterns = 0;
326
- let totalRelevance = 0;
327
366
  if (queryResult.success) {
328
367
  sourcePatterns = queryResult.value.length;
329
368
  // Transfer each piece of knowledge to target domain
@@ -331,7 +370,6 @@ export class LearningOptimizeTool extends MCPToolBase {
331
370
  const transferResult = await transferSpecialist.transferKnowledge(knowledge, targetDomain);
332
371
  if (transferResult.success) {
333
372
  transferredPatterns++;
334
- totalRelevance += transferResult.value.relevanceScore;
335
373
  // Count as adapted if relevance changed significantly
336
374
  if (Math.abs(transferResult.value.relevanceScore - knowledge.relevanceScore) > 0.1) {
337
375
  adaptedPatterns++;
@@ -360,14 +398,15 @@ export class LearningOptimizeTool extends MCPToolBase {
360
398
  // Get pattern statistics from the real service
361
399
  const statsResult = await learningCoordinator.getPatternStats(domain);
362
400
  if (!statsResult.success) {
363
- // Return empty stats on failure
401
+ // Stats could not be read: nothing is measured, so no averages (#1121).
364
402
  return {
365
403
  totalPatterns: 0,
366
404
  byType: {},
367
405
  byDomain: {},
368
406
  topPatterns: [],
369
- avgConfidence: 0,
370
- avgSuccessRate: 0,
407
+ avgConfidence: null,
408
+ avgSuccessRate: null,
409
+ evidenceStatus: 'insufficient-evidence',
371
410
  sona,
372
411
  };
373
412
  }
@@ -382,13 +421,17 @@ export class LearningOptimizeTool extends MCPToolBase {
382
421
  usageCount: p.usageCount,
383
422
  successRate: p.successRate,
384
423
  }));
424
+ const measured = stats.totalPatterns > 0;
385
425
  return {
386
426
  totalPatterns: stats.totalPatterns,
387
427
  byType: stats.byType,
388
428
  byDomain: stats.byDomain,
389
429
  topPatterns,
390
- avgConfidence: stats.avgConfidence,
391
- avgSuccessRate: stats.avgSuccessRate,
430
+ avgConfidence: measured ? stats.avgConfidence : null,
431
+ avgSuccessRate: measured ? stats.avgSuccessRate : null,
432
+ ...(stats.assignedPatternsExcluded ? { assignedPatternsExcluded: stats.assignedPatternsExcluded } : {}),
433
+ ...(stats.legacyPatternsExcluded ? { legacyPatternsExcluded: stats.legacyPatternsExcluded } : {}),
434
+ ...(measured ? {} : { evidenceStatus: 'insufficient-evidence' }),
392
435
  sona,
393
436
  };
394
437
  }
@@ -438,6 +481,9 @@ export class LearningOptimizeTool extends MCPToolBase {
438
481
  const assignedPatternsExcluded = statsResult.success
439
482
  ? statsResult.value.assignedPatternsExcluded ?? 0
440
483
  : 0;
484
+ const legacyPatternsExcluded = statsResult.success
485
+ ? statsResult.value.legacyPatternsExcluded ?? 0
486
+ : 0;
441
487
  const avgSuccessRate = totalPatterns > 0 && statsResult.success
442
488
  ? statsResult.value.avgSuccessRate
443
489
  : null;
@@ -491,6 +537,7 @@ export class LearningOptimizeTool extends MCPToolBase {
491
537
  experiencesLast24h,
492
538
  ...(assignedRewardsExcluded > 0 ? { assignedRewardsExcluded } : {}),
493
539
  ...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
540
+ ...(legacyPatternsExcluded > 0 ? { legacyPatternsExcluded } : {}),
494
541
  topPerformingDomains,
495
542
  ...(unmeasured.length > 0
496
543
  ? { evidenceStatus: 'insufficient-evidence', unmeasured }