agentic-qe 3.15.9 → 3.15.10

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 (568) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +251 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/adapters/a2ui/catalog/component-schemas.js +2 -1
  5. package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
  6. package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
  7. package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
  8. package/dist/adapters/ag-ui/json-patch.js +10 -6
  9. package/dist/audit/witness-chain.d.ts +1 -1
  10. package/dist/cli/bundle.js +6 -6
  11. package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
  12. package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
  13. package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-SVXSHEET.js} +2 -2
  14. package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-WKQH36XL.js} +2 -2
  15. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
  16. package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-EKOOFVST.js} +2 -2
  17. package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-OPS36NFZ.js} +4 -4
  18. package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-AO5NDZRI.js} +3 -3
  19. package/dist/cli/chunks/base-GTB6POYE.js +2 -0
  20. package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-TFLVEMMY.js} +2 -2
  21. package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-ADBBJPYW.js} +3 -3
  22. package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-HGHUYYL5.js} +2 -2
  23. package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
  24. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
  25. package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-2SXBBUM6.js} +2 -2
  26. package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-2T7RRL6G.js} +1 -1
  27. package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-2XGVTYVX.js} +2 -2
  28. package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-2ZI5FKSF.js} +2 -2
  29. package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
  30. package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-37OWRCUN.js} +1 -1
  31. package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-3P34JFQH.js} +4 -4
  32. package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-3Y7SPD72.js} +2 -2
  33. package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-4G63WT4F.js} +2 -2
  34. package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
  35. package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
  36. package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-5LPYV3TK.js} +1 -1
  37. package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-62OAY5KJ.js} +1 -1
  38. package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-6C3II5OM.js} +2 -2
  39. package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-6GP6W46M.js} +2 -2
  40. package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-6KIL6CMD.js} +2 -2
  41. package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-6MVVSSID.js} +1 -1
  42. package/dist/cli/chunks/{chunk-JEP4ULR6.js → chunk-6P7424AO.js} +2 -2
  43. package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-6PX4OXQO.js} +2 -2
  44. package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-6S3WJGUV.js} +2 -2
  45. package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-6TB6YOCZ.js} +1 -1
  46. package/dist/cli/chunks/{chunk-VU2EL424.js → chunk-6X5DHU6Q.js} +1 -1
  47. package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-6XCMKIZN.js} +1 -1
  48. package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-7LFZ4CHM.js} +2 -2
  49. package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-7OZVZIBE.js} +2 -2
  50. package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-7PJIR4ST.js} +2 -2
  51. package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-7TB6FK4B.js} +1 -1
  52. package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-7ZCDZHDB.js} +2 -2
  53. package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-A55QKKT2.js} +2 -2
  54. package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ABFFWZPC.js} +428 -433
  55. package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-ACWFKES2.js} +2 -2
  56. package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-AH3ZD3NJ.js} +2 -2
  57. package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-AI4VYSFS.js} +2 -2
  58. package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
  59. package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
  60. package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-B6LTH6YV.js} +2 -2
  61. package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
  62. package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-C522H7XR.js} +54 -33
  63. package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-CESIR27V.js} +2 -2
  64. package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-CFBEBXLO.js} +3 -3
  65. package/dist/cli/chunks/{chunk-FJ4VTLLK.js → chunk-CMBLM26R.js} +2 -2
  66. package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-CZ2IF6MC.js} +1 -1
  67. package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-CZGOSJQ4.js} +2 -2
  68. package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-D6DA2KFD.js} +2 -2
  69. package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-DBMNJSBV.js} +1 -1
  70. package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-DE4YJQJF.js} +2 -2
  71. package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-DEF34AFL.js} +2 -2
  72. package/dist/cli/chunks/chunk-DKAC3E3B.js +3 -0
  73. package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-DMFTELBS.js} +2 -2
  74. package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-DNRWGATA.js} +10 -10
  75. package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-DT7SIJOA.js} +2 -2
  76. package/dist/cli/chunks/{chunk-6PXA2BQJ.js → chunk-DURHK377.js} +67 -67
  77. package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EAU5KDFO.js} +1 -1
  78. package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-EDLFX4ZB.js} +2 -2
  79. package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-EN2QSKFF.js} +2 -2
  80. package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-ERQKYIP7.js} +2 -2
  81. package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-ESUO3GTJ.js} +2 -2
  82. package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EWFECZ2U.js} +2 -2
  83. package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-FAUCT5KR.js} +3 -3
  84. package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-FB6TI3BH.js} +2 -2
  85. package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-FBXTQNRH.js} +2 -2
  86. package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-FESZBPUB.js} +2 -2
  87. package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
  88. package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-FKL3R5JQ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-N5PDFGCQ.js → chunk-FPUDRSFJ.js} +2 -2
  90. package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-FZOWULMH.js} +1 -1
  91. package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-G3CZCUPM.js} +2 -2
  92. package/dist/cli/chunks/{chunk-FV3NHVC7.js → chunk-G5I6KGMW.js} +3 -3
  93. package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-GHBNRMSJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GJHWY3ZX.js} +2 -2
  95. package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-GJMLK5UT.js} +2 -2
  96. package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-GRCIBCJ2.js} +2 -2
  97. package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-GWZZ7DAO.js} +2 -2
  98. package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-GZLZCZ42.js} +2 -2
  99. package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-H2PYU7MN.js} +1 -1
  100. package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-H32EPIR2.js} +1 -1
  101. package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-H74Q7TJN.js} +1 -1
  102. package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
  103. package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-I33O4BRQ.js} +2 -2
  104. package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-IKISCIGH.js} +2 -2
  105. package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-IPJ7Q3AJ.js} +1 -1
  106. package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-IU2IV4NE.js} +1 -1
  107. package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-JHIY4VCC.js} +2 -2
  108. package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-KG336OV3.js} +2 -2
  109. package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-KI73QCR5.js} +2 -2
  110. package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-KNQ2ERFX.js} +2 -2
  111. package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-KOBVYY6H.js} +2 -2
  112. package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-KSIWGGJI.js} +8 -8
  113. package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LMS3Y7JD.js} +2 -2
  114. package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-LQEURY7C.js} +1 -1
  115. package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-LRZY4KS2.js} +2 -2
  116. package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-M2QV7PT7.js} +2 -2
  117. package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-MA7JIQ6U.js} +2 -2
  118. package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-MG27QY4D.js} +2 -2
  119. package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
  120. package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
  121. package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
  122. package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-NGKNYIQZ.js} +1 -1
  123. package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
  124. package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-NPPHWFA2.js} +3 -3
  125. package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-NSHU347M.js} +1 -1
  126. package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-NVYIZCSR.js} +2 -2
  127. package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-NW5JUCCG.js} +1 -1
  128. package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-NZYLNXT6.js} +3 -3
  129. package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-OBAREPDC.js} +2 -2
  130. package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-ODJNUMV3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-OEKP73MC.js} +2 -2
  132. package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-OPFGRS5S.js} +2 -2
  133. package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-OY2AHLSF.js} +1 -1
  134. package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-OY3NJNP2.js} +1 -1
  135. package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-PCEW6Q2C.js} +1 -1
  136. package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-PFG6VQ5Z.js} +2 -2
  137. package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-PGYMKGOE.js} +2 -2
  138. package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-PPSAMXYN.js} +3 -3
  139. package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
  140. package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-RPHY2DU6.js} +2 -2
  141. package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-RWWOHCMG.js} +25 -20
  142. package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-S75EYIJG.js} +1 -1
  143. package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-SKQUUE4F.js} +5 -5
  144. package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
  145. package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-SU5H66SD.js} +2 -2
  146. package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-SY2IB442.js} +2 -2
  147. package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-TBLI254A.js} +2 -2
  148. package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-TNMBRDCA.js} +3 -3
  149. package/dist/cli/chunks/{chunk-P2CXVNKK.js → chunk-TYFZXDGZ.js} +2 -2
  150. package/dist/cli/chunks/{chunk-2XITOPYV.js → chunk-U4OICXV2.js} +2 -2
  151. package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-U53ZB4IX.js} +2 -2
  152. package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
  153. package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-UCJMVXO4.js} +2 -2
  154. package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-UHTTW3IT.js} +2 -2
  155. package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-V2M2XCR5.js} +1 -1
  156. package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-V2RSNVMW.js} +1 -1
  157. package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-V6JBOIMX.js} +1 -1
  158. package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-VFKF2XO7.js} +1 -1
  159. package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-VFSYMOAL.js} +2 -2
  160. package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-VJQYDYAJ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-VKRTTFB6.js} +2 -2
  162. package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-VWNFAW2M.js} +2 -2
  163. package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-WBM6N6IM.js} +1 -1
  164. package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-WDQ7IEZY.js} +2 -2
  165. package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-WDVRE6GN.js} +2 -2
  166. package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-WQ4PYWSW.js} +1 -1
  167. package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-WSF24I3D.js} +2 -2
  168. package/dist/cli/chunks/{chunk-6YL6JOQB.js → chunk-XBVUVFJK.js} +2 -2
  169. package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-XEB3NLJR.js} +2 -2
  170. package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-XFVTGAAJ.js} +2 -2
  171. package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-XLZYRTNO.js} +2 -2
  172. package/dist/cli/chunks/{chunk-AR2E4B7K.js → chunk-XUZDBQ5X.js} +5 -5
  173. package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-Y76IAYQD.js} +1 -1
  174. package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-YAKGBHO4.js} +2 -2
  175. package/dist/cli/chunks/{chunk-JK2ME6IT.js → chunk-YBSBABOS.js} +2 -2
  176. package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-YCGP5VFP.js} +2 -2
  177. package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-YDAQK5UF.js} +1 -1
  178. package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-YK3BVZY6.js} +2 -2
  179. package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-YK7JN5N7.js} +4 -4
  180. package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-YKMU4LBV.js} +1 -1
  181. package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-YYTGXD3R.js} +2 -2
  182. package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-Z2O2YJAF.js} +2 -2
  183. package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-Z7IYW5U7.js} +1 -1
  184. package/dist/cli/chunks/{chunk-XZJ2O3VC.js → chunk-ZG5666GJ.js} +1 -1
  185. package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-ZXPY654C.js} +1 -1
  186. package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-MSKMVH5X.js} +2 -2
  187. package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-7ODMNAUM.js} +2 -2
  188. package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-FXZ7ZZW3.js} +2 -2
  189. package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-4VOUEPOX.js} +2 -2
  190. package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-7D4SGLM4.js} +2 -2
  191. package/dist/cli/chunks/client-POSVREVS.js +2 -0
  192. package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-WRRT7BGQ.js} +2 -2
  193. package/dist/cli/chunks/{code-ONKLMVQ2.js → code-ZDJRIL3S.js} +3 -3
  194. package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4S4SHM56.js} +2 -2
  195. package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-YTRHNDWR.js} +2 -2
  196. package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-6N64JUXJ.js} +2 -2
  197. package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
  198. package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-IIDR66LB.js} +2 -2
  199. package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-SVVFY3S2.js} +2 -2
  200. package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
  201. package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-VGFS6IBX.js} +2 -2
  202. package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B7MCGNTE.js} +3 -3
  203. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
  204. package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-UPETT57E.js} +2 -2
  205. package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
  206. package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-CQFNZLXU.js} +3 -3
  207. package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-PJVABHON.js} +2 -2
  208. package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-56SKAGWX.js} +2 -2
  209. package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-UYTYUMLN.js} +2 -2
  210. package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-YOYLBYJE.js} +2 -2
  211. package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-7TARX2XF.js} +2 -2
  212. package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
  213. package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
  214. package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
  215. package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-GNB574IM.js} +2 -2
  216. package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
  217. package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-KTZ5SF54.js} +2 -2
  218. package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-ITX5LQ57.js} +2 -2
  219. package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-KFHSR5YF.js} +2 -2
  220. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
  221. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
  222. package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-RLFW3GSX.js} +2 -2
  223. package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-EM2URCYZ.js} +4 -4
  224. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
  225. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
  226. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
  227. package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
  228. package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-CBP73QHY.js} +2 -2
  229. package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-IP7XE34Z.js} +34 -34
  230. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
  231. package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-ONAYHU25.js} +2 -2
  232. package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-VINJRAID.js} +3 -3
  233. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
  234. package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-RYVV5R3Z.js} +2 -2
  235. package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-MPRGWMOE.js} +6 -6
  236. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
  237. package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
  238. package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-OPD7JBRL.js} +2 -2
  239. package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-M4OPUNK2.js} +2 -2
  240. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
  241. package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-4UWTQLMF.js} +24 -24
  242. package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-SQ56FF6Z.js} +4 -4
  243. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
  244. package/dist/cli/chunks/{load-ZM43WGDO.js → load-HPHKDGGL.js} +2 -2
  245. package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
  246. package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
  247. package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-PFQ3KPVJ.js} +5 -5
  248. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
  249. package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
  250. package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-3VDRX6TZ.js} +2 -2
  251. package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-PJ576R63.js} +2 -2
  252. package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-72QP4UU7.js} +63 -19
  253. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
  254. package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-754YQW7C.js} +2 -2
  255. package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
  256. package/dist/cli/chunks/{platform-KJDABL5C.js → platform-3E3DXLYB.js} +2 -2
  257. package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-7FUQAKRE.js} +2 -2
  258. package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
  259. package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
  260. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
  261. package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-BQRYMUTG.js} +2 -2
  262. package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-H52QGC6B.js} +2 -2
  263. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
  264. package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-QO4XPAUM.js} +2 -2
  265. package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-FBKE5E6F.js} +3 -3
  266. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
  267. package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RWGOVOXO.js} +2 -2
  268. package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-LF76ZOBD.js} +2 -2
  269. package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-3BYEBTQ7.js} +2 -2
  270. package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
  271. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
  272. package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-DST7BVCU.js} +2 -2
  273. package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-XE32PGKC.js} +2 -2
  274. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
  275. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
  276. package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
  277. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
  278. package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
  279. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
  280. package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
  281. package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
  282. package/dist/cli/chunks/{security-AUDTRX3I.js → security-VSPNKCDS.js} +3 -3
  283. package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
  284. package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
  285. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
  286. package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-O4QUTK6L.js} +2 -2
  287. package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-Z2BP6EOG.js} +2 -2
  288. package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-R36WNLQG.js} +2 -2
  289. package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
  290. package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-QF5Y3EMZ.js} +2 -2
  291. package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-43PYE75J.js} +2 -2
  292. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
  293. package/dist/cli/chunks/{test-XFSGQELD.js → test-UWA377D4.js} +16 -16
  294. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
  295. package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-YQZPJRRN.js} +3 -3
  296. package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
  297. package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-DO6WLMXP.js} +2 -2
  298. package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-H5RGFKVO.js} +2 -2
  299. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
  300. package/dist/cli/chunks/{types-JTWLBAZJ.js → types-PJS2FGPF.js} +2 -2
  301. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
  302. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
  303. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
  304. package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-4IC4F6AB.js} +2 -2
  305. package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-DHUWW7PF.js} +2 -2
  306. package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-OERQNOX5.js} +2 -2
  307. package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
  308. package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-TV7DMKES.js} +2 -2
  309. package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-QZPWSH37.js} +2 -2
  310. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
  311. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
  312. package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
  313. package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-YXENHB42.js} +2 -2
  314. package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-HL26AGFO.js} +2 -2
  315. package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-EOVVCN2E.js} +4 -4
  316. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
  317. package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
  318. package/dist/cli/commands/fleet.js +19 -12
  319. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  320. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  321. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  322. package/dist/cli/commands/learning.js +5 -3
  323. package/dist/cli/commands/ruvector-commands.js +2 -1
  324. package/dist/cli/commands/test.js +6 -0
  325. package/dist/cli/utils/ci-output.d.ts +9 -0
  326. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  327. package/dist/cli/utils/fleet-operation.js +71 -0
  328. package/dist/cli/utils/fleet-result.d.ts +31 -0
  329. package/dist/cli/utils/fleet-result.js +124 -0
  330. package/dist/context/sources/git-source.js +6 -2
  331. package/dist/coordination/handlers/code-intelligence-handlers.js +60 -5
  332. package/dist/coordination/handlers/coverage-handlers.js +10 -1
  333. package/dist/coordination/handlers/requirements-handlers.js +16 -2
  334. package/dist/coordination/handlers/security-handlers.js +11 -1
  335. package/dist/coordination/handlers/test-execution-handlers.js +25 -7
  336. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  337. package/dist/coordination/mincut/queen-integration.js +83 -6
  338. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
  339. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
  340. package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
  341. package/dist/coordination/protocols/learning-consolidation.js +71 -22
  342. package/dist/coordination/queen-coordinator.d.ts +1 -1
  343. package/dist/coordination/queen-coordinator.js +19 -7
  344. package/dist/coordination/queen-event-handlers.js +13 -0
  345. package/dist/coordination/queen-task-management.d.ts +18 -24
  346. package/dist/coordination/queen-task-management.js +62 -168
  347. package/dist/coordination/queen-task-queue.d.ts +41 -0
  348. package/dist/coordination/queen-task-queue.js +194 -0
  349. package/dist/coordination/queen-types.d.ts +1 -1
  350. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  351. package/dist/coordination/queen-work-stealing.js +7 -4
  352. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  353. package/dist/coordination/result-saver-adapters.js +57 -0
  354. package/dist/coordination/result-saver.d.ts +1 -1
  355. package/dist/coordination/result-saver.js +8 -5
  356. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  357. package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
  358. package/dist/domains/code-intelligence/index-path-guard.js +20 -50
  359. package/dist/domains/code-intelligence/plugin.js +5 -1
  360. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  361. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  362. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  363. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  364. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  365. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  366. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  367. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  368. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  369. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  370. package/dist/domains/defect-intelligence/plugin.js +11 -2
  371. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  372. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  373. package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
  374. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  375. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  376. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  377. package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
  378. package/dist/domains/learning-optimization/active-patterns.js +2 -2
  379. package/dist/domains/learning-optimization/coordinator.js +9 -5
  380. package/dist/domains/learning-optimization/interfaces.d.ts +6 -2
  381. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  382. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  383. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  384. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  385. package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
  386. package/dist/domains/learning-optimization/reward-source.js +8 -1
  387. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
  388. package/dist/domains/learning-optimization/services/learning-coordinator.js +45 -58
  389. package/dist/domains/security-compliance/plugin.js +17 -3
  390. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  391. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  392. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  393. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  394. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  395. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  396. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  397. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  398. package/dist/domains/test-execution/coordinator.d.ts +5 -0
  399. package/dist/domains/test-execution/coordinator.js +35 -20
  400. package/dist/domains/test-execution/interfaces.d.ts +25 -0
  401. package/dist/domains/test-execution/plugin.js +19 -4
  402. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  403. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  404. package/dist/domains/test-execution/services/runner-test-cases.d.ts +11 -0
  405. package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
  406. package/dist/domains/test-execution/services/test-executor.js +8 -8
  407. package/dist/domains/test-generation/plugin.js +7 -2
  408. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  409. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  410. package/dist/hooks/cross-phase-hooks.js +2 -1
  411. package/dist/init/phases/10-workers.js +50 -6
  412. package/dist/integrations/browser/agent-browser/client.js +37 -52
  413. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  414. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  415. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  416. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  417. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  418. package/dist/integrations/vibium/client.js +2 -2
  419. package/dist/integrations/vibium/runtime.d.ts +1 -1
  420. package/dist/integrations/vibium/runtime.js +14 -11
  421. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  422. package/dist/kernel/unified-memory-schemas.js +3 -2
  423. package/dist/kernel/unified-memory.js +25 -6
  424. package/dist/learning/dream/dream-commit.d.ts +65 -0
  425. package/dist/learning/dream/dream-commit.js +104 -0
  426. package/dist/learning/dream/dream-engine.d.ts +81 -31
  427. package/dist/learning/dream/dream-engine.js +225 -168
  428. package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
  429. package/dist/learning/dream/dream-insights-pruner.js +16 -30
  430. package/dist/learning/dream/index.d.ts +3 -2
  431. package/dist/learning/dream/index.js +3 -1
  432. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  433. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  434. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  435. package/dist/learning/dream/speculative-dreamer.js +64 -111
  436. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  437. package/dist/learning/dream/spreading-activation.js +15 -6
  438. package/dist/learning/experience-capture.d.ts +9 -0
  439. package/dist/learning/experience-capture.js +18 -4
  440. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  441. package/dist/learning/qe-reasoning-bank.js +22 -11
  442. package/dist/learning/sqlite-persistence.d.ts +6 -0
  443. package/dist/learning/sqlite-persistence.js +16 -2
  444. package/dist/learning/usage-outcome.d.ts +68 -0
  445. package/dist/learning/usage-outcome.js +84 -0
  446. package/dist/mcp/background-workers.d.ts +13 -1
  447. package/dist/mcp/background-workers.js +17 -3
  448. package/dist/mcp/bundle.js +607 -580
  449. package/dist/mcp/handlers/core-handlers.js +11 -0
  450. package/dist/mcp/handlers/domain-handler-configs.d.ts +5 -0
  451. package/dist/mcp/handlers/domain-handler-configs.js +11 -3
  452. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  453. package/dist/mcp/handlers/handler-factory.js +36 -15
  454. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  455. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  456. package/dist/mcp/handlers/task-handlers.d.ts +3 -0
  457. package/dist/mcp/handlers/task-handlers.js +35 -8
  458. package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
  459. package/dist/mcp/protocol-server.js +2 -0
  460. package/dist/mcp/security/schema-validator.js +3 -2
  461. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  462. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  463. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  464. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  465. package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
  466. package/dist/mcp/tools/learning-optimization/optimize.js +58 -10
  467. package/dist/mcp/tools/quality-assessment/gate.js +12 -1
  468. package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
  469. package/dist/migration/agent-compat.js +7 -5
  470. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  471. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  472. package/dist/shared/git/git-analyzer.d.ts +49 -0
  473. package/dist/shared/git/git-analyzer.js +159 -319
  474. package/dist/shared/git/git-process.d.ts +22 -0
  475. package/dist/shared/git/git-process.js +37 -0
  476. package/dist/shared/git/index.d.ts +1 -0
  477. package/dist/shared/git/index.js +1 -0
  478. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  479. package/dist/shared/io/payload-path-guard.js +190 -0
  480. package/dist/shared/llm/router/agent-router-config.js +2 -1
  481. package/dist/shared/llm/translation/tool-translator.js +2 -1
  482. package/dist/shared/test-runner-args.d.ts +5 -0
  483. package/dist/shared/test-runner-args.js +6 -1
  484. package/dist/shared/test-runner-process.d.ts +6 -0
  485. package/dist/shared/test-runner-process.js +14 -0
  486. package/dist/shared/test-runner-verdict.d.ts +9 -1
  487. package/dist/shared/test-runner-verdict.js +15 -4
  488. package/dist/shared/utils/namespaced-search.d.ts +14 -0
  489. package/dist/shared/utils/namespaced-search.js +19 -1
  490. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  491. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  492. package/dist/validation/gate-reexecute.js +7 -4
  493. package/dist/workers/daemon.js +13 -1
  494. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  495. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  496. package/dist/workers/workers/defect-predictor.js +48 -49
  497. package/dist/workers/workers/learning-consolidation.d.ts +2 -0
  498. package/dist/workers/workers/learning-consolidation.js +12 -1
  499. package/dist/workflows/browser/workflow-loader.js +8 -5
  500. package/package.json +1 -1
  501. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
  502. package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
  503. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
  504. package/dist/cli/chunks/base-67DXSAYM.js +0 -2
  505. package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
  506. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
  507. package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
  508. package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
  509. package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
  510. package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
  511. package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
  512. package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
  513. package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
  514. package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
  515. package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
  516. package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
  517. package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
  518. package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
  519. package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
  520. package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
  521. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
  522. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
  523. package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
  524. package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
  525. package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
  526. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
  527. package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
  528. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
  529. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
  530. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
  531. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
  532. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
  533. package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
  534. package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
  535. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
  536. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
  537. package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
  538. package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
  539. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
  540. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
  541. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
  542. package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
  543. package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
  544. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
  545. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
  546. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
  547. package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
  548. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
  549. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
  550. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
  551. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
  552. package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
  553. package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
  554. package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
  555. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
  556. package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
  557. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
  558. package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
  559. package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
  560. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
  561. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
  562. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
  563. package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
  564. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
  565. package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
  566. package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
  567. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
  568. package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
@@ -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.
@@ -360,14 +399,15 @@ export class LearningOptimizeTool extends MCPToolBase {
360
399
  // Get pattern statistics from the real service
361
400
  const statsResult = await learningCoordinator.getPatternStats(domain);
362
401
  if (!statsResult.success) {
363
- // Return empty stats on failure
402
+ // Stats could not be read: nothing is measured, so no averages (#1121).
364
403
  return {
365
404
  totalPatterns: 0,
366
405
  byType: {},
367
406
  byDomain: {},
368
407
  topPatterns: [],
369
- avgConfidence: 0,
370
- avgSuccessRate: 0,
408
+ avgConfidence: null,
409
+ avgSuccessRate: null,
410
+ evidenceStatus: 'insufficient-evidence',
371
411
  sona,
372
412
  };
373
413
  }
@@ -382,13 +422,17 @@ export class LearningOptimizeTool extends MCPToolBase {
382
422
  usageCount: p.usageCount,
383
423
  successRate: p.successRate,
384
424
  }));
425
+ const measured = stats.totalPatterns > 0;
385
426
  return {
386
427
  totalPatterns: stats.totalPatterns,
387
428
  byType: stats.byType,
388
429
  byDomain: stats.byDomain,
389
430
  topPatterns,
390
- avgConfidence: stats.avgConfidence,
391
- avgSuccessRate: stats.avgSuccessRate,
431
+ avgConfidence: measured ? stats.avgConfidence : null,
432
+ avgSuccessRate: measured ? stats.avgSuccessRate : null,
433
+ ...(stats.assignedPatternsExcluded ? { assignedPatternsExcluded: stats.assignedPatternsExcluded } : {}),
434
+ ...(stats.legacyPatternsExcluded ? { legacyPatternsExcluded: stats.legacyPatternsExcluded } : {}),
435
+ ...(measured ? {} : { evidenceStatus: 'insufficient-evidence' }),
392
436
  sona,
393
437
  };
394
438
  }
@@ -438,6 +482,9 @@ export class LearningOptimizeTool extends MCPToolBase {
438
482
  const assignedPatternsExcluded = statsResult.success
439
483
  ? statsResult.value.assignedPatternsExcluded ?? 0
440
484
  : 0;
485
+ const legacyPatternsExcluded = statsResult.success
486
+ ? statsResult.value.legacyPatternsExcluded ?? 0
487
+ : 0;
441
488
  const avgSuccessRate = totalPatterns > 0 && statsResult.success
442
489
  ? statsResult.value.avgSuccessRate
443
490
  : null;
@@ -491,6 +538,7 @@ export class LearningOptimizeTool extends MCPToolBase {
491
538
  experiencesLast24h,
492
539
  ...(assignedRewardsExcluded > 0 ? { assignedRewardsExcluded } : {}),
493
540
  ...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
541
+ ...(legacyPatternsExcluded > 0 ? { legacyPatternsExcluded } : {}),
494
542
  topPerformingDomains,
495
543
  ...(unmeasured.length > 0
496
544
  ? { evidenceStatus: 'insufficient-evidence', unmeasured }
@@ -11,6 +11,8 @@
11
11
  */
12
12
  import { MCPToolBase } from '../base.js';
13
13
  import { toErrorMessage } from '../../../shared/error-utils.js';
14
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
15
+ import { findProjectRoot } from '../../../kernel/project-root.js';
14
16
  import { getLLMRouter } from '../base.js';
15
17
  import { runQualityGate, } from '../../../validation/quality-gate-runner.js';
16
18
  import { createRouterFrontierJudge, createUnavailableJudge, } from '../../../validation/frontier-judge.js';
@@ -32,6 +34,15 @@ export class QualityGateTool extends MCPToolBase {
32
34
  if (typeof params.artifact !== 'string' || params.artifact.length === 0) {
33
35
  return { success: false, error: 'artifact (non-empty string) is required' };
34
36
  }
37
+ // #1126: a caller-named anchor must be a regular file inside the project
38
+ // (relative paths resolve against the project root, as the runner does).
39
+ let anchorPath;
40
+ if (params.anchorPath !== undefined) {
41
+ const confined = await requirePayloadPath('qe/quality/gate', 'anchorPath', params.anchorPath, { basePath: findProjectRoot(), maxBytes: MAX_PAYLOAD_FILE_BYTES });
42
+ if (!confined.success)
43
+ return { success: false, error: confined.error.message };
44
+ anchorPath = confined.value;
45
+ }
35
46
  const router = await getLLMRouter(context);
36
47
  const judge = router
37
48
  ? createRouterFrontierJudge(router, {
@@ -47,7 +58,7 @@ export class QualityGateTool extends MCPToolBase {
47
58
  artifact: params.artifact,
48
59
  checklistId: params.checklistId,
49
60
  judge,
50
- anchorPath: params.anchorPath,
61
+ anchorPath,
51
62
  verificationManifest: params.verificationManifest,
52
63
  });
53
64
  return { success: true, data: result };
@@ -15,6 +15,7 @@ import { MCPToolBase } from '../base.js';
15
15
  import { createQualityCriteriaService, HTSM_CATEGORIES, NEVER_OMIT_CATEGORIES, } from '../../../domains/requirements-validation/index.js';
16
16
  import { existsSync, readFileSync } from 'fs';
17
17
  import { toErrorMessage } from '../../../shared/error-utils.js';
18
+ import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
18
19
  // ============================================================================
19
20
  // Tool Implementation
20
21
  // ============================================================================
@@ -121,8 +122,14 @@ export class QualityCriteriaTool extends MCPToolBase {
121
122
  });
122
123
  // Load epic content
123
124
  let content = epicContent || '';
124
- if (epicPath && existsSync(epicPath)) {
125
- content = readFileSync(epicPath, 'utf-8');
125
+ // #1126: the epic is returned verbatim in the agent prompt, so read it
126
+ // only from a regular file inside the project.
127
+ if (epicPath) {
128
+ const confined = await requirePayloadPath('quality-criteria', 'epicPath', epicPath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
129
+ if (!confined.success)
130
+ return { success: false, error: confined.error.message };
131
+ if (existsSync(confined.value))
132
+ content = readFileSync(confined.value, 'utf-8');
126
133
  }
127
134
  if (!content && !epicPath) {
128
135
  return {
@@ -7,6 +7,7 @@
7
7
  * @module migration/agent-compat
8
8
  * @see docs/adr/adr-048-agent-naming-conventions.md
9
9
  */
10
+ import { getOwn } from '../shared/utils/safe-record.js';
10
11
  /**
11
12
  * Complete mapping of deprecated V2 agent names to their V3 equivalents with domain info.
12
13
  *
@@ -127,7 +128,8 @@ export const v2AgentMapping = Object.fromEntries(Object.entries(v2AgentMappingWi
127
128
  * ```
128
129
  */
129
130
  export function resolveAgentName(name) {
130
- return v2AgentMapping[name] ?? name;
131
+ // #1136: own entries only; `constructor` is not a V2 agent name.
132
+ return getOwn(v2AgentMapping, name) ?? name;
131
133
  }
132
134
  /**
133
135
  * Checks if an agent name is a deprecated V2 agent.
@@ -146,7 +148,7 @@ export function resolveAgentName(name) {
146
148
  * ```
147
149
  */
148
150
  export function isDeprecatedAgent(name) {
149
- return name in v2AgentMapping;
151
+ return Object.hasOwn(v2AgentMapping, name);
150
152
  }
151
153
  /**
152
154
  * Generates a deprecation warning message for a V2 agent name.
@@ -170,7 +172,7 @@ export function isDeprecatedAgent(name) {
170
172
  * ```
171
173
  */
172
174
  export function getDeprecationWarning(v2Name) {
173
- const v3Name = v2AgentMapping[v2Name];
175
+ const v3Name = getOwn(v2AgentMapping, v2Name);
174
176
  if (!v3Name) {
175
177
  return '';
176
178
  }
@@ -211,7 +213,7 @@ export const v3Agents = [
211
213
  */
212
214
  export function getAgentDomain(agentName) {
213
215
  // Check V2 mapping
214
- const v2Entry = v2AgentMappingWithDomain[agentName];
216
+ const v2Entry = getOwn(v2AgentMappingWithDomain, agentName);
215
217
  if (v2Entry) {
216
218
  return v2Entry.domain;
217
219
  }
@@ -261,7 +263,7 @@ export function generateMigrationReport(usedAgents) {
261
263
  const alreadyV3 = [];
262
264
  const unknown = [];
263
265
  for (const agent of usedAgents) {
264
- const v2Entry = v2AgentMappingWithDomain[agent];
266
+ const v2Entry = getOwn(v2AgentMappingWithDomain, agent);
265
267
  if (v2Entry) {
266
268
  needsMigration.push({
267
269
  v2Name: agent,
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Agentic QE v3 - Dream insights archive table (#1066, #1116)
3
+ *
4
+ * The dream_insights retention sweep copies each stale insight here before it
5
+ * deletes it (#1066). Until #1116 the sweep created the table lazily on its
6
+ * first run, outside the versioned schema; it is now created by the v14
7
+ * migration.
8
+ *
9
+ * Additive and idempotent: `CREATE ... IF NOT EXISTS` only, so a database where
10
+ * an earlier sweep already created the table (with its rows) is left as it
11
+ * is, and an older AQE that still creates it lazily with the same statement
12
+ * keeps working on a migrated database.
13
+ *
14
+ * Same columns as dream_insights plus archive_id and archived_at. `id` is not
15
+ * unique here: an insight that comes back (for example from a brain import)
16
+ * and is swept again gets a second row instead of replacing the first. No
17
+ * foreign key, so deleting a dream cycle does not cascade into the archive.
18
+ */
19
+ import type { Database as DatabaseType } from 'better-sqlite3';
20
+ export declare const MIGRATION_VERSION = "20261018_add_dream_insights_archive";
21
+ export declare const DREAM_INSIGHTS_ARCHIVE_TABLE = "dream_insights_archive";
22
+ /** The table, exactly as the 3.15.9 sweep created it lazily. */
23
+ export declare const DREAM_INSIGHTS_ARCHIVE_TABLE_SQL = "\n CREATE TABLE IF NOT EXISTS dream_insights_archive (\n archive_id INTEGER PRIMARY KEY AUTOINCREMENT,\n id TEXT NOT NULL,\n cycle_id TEXT,\n insight_type TEXT,\n source_concepts TEXT,\n description TEXT,\n novelty_score REAL,\n confidence_score REAL,\n actionable INTEGER,\n applied INTEGER,\n suggested_action TEXT,\n pattern_id TEXT,\n created_at TEXT,\n archived_at TEXT NOT NULL DEFAULT (datetime('now'))\n )\n";
24
+ export declare const DREAM_INSIGHTS_ARCHIVE_SCHEMA = "\n \n CREATE TABLE IF NOT EXISTS dream_insights_archive (\n archive_id INTEGER PRIMARY KEY AUTOINCREMENT,\n id TEXT NOT NULL,\n cycle_id TEXT,\n insight_type TEXT,\n source_concepts TEXT,\n description TEXT,\n novelty_score REAL,\n confidence_score REAL,\n actionable INTEGER,\n applied INTEGER,\n suggested_action TEXT,\n pattern_id TEXT,\n created_at TEXT,\n archived_at TEXT NOT NULL DEFAULT (datetime('now'))\n )\n;\n -- The sweep's read-back looks copies up by insight id.\n CREATE INDEX IF NOT EXISTS idx_dream_insights_archive_id ON dream_insights_archive(id);\n";
25
+ export declare function applyMigration(db: DatabaseType): void;
26
+ export declare function isMigrationApplied(db: DatabaseType): boolean;
27
+ //# sourceMappingURL=20261018_add_dream_insights_archive.d.ts.map
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Agentic QE v3 - Dream insights archive table (#1066, #1116)
3
+ *
4
+ * The dream_insights retention sweep copies each stale insight here before it
5
+ * deletes it (#1066). Until #1116 the sweep created the table lazily on its
6
+ * first run, outside the versioned schema; it is now created by the v14
7
+ * migration.
8
+ *
9
+ * Additive and idempotent: `CREATE ... IF NOT EXISTS` only, so a database where
10
+ * an earlier sweep already created the table (with its rows) is left as it
11
+ * is, and an older AQE that still creates it lazily with the same statement
12
+ * keeps working on a migrated database.
13
+ *
14
+ * Same columns as dream_insights plus archive_id and archived_at. `id` is not
15
+ * unique here: an insight that comes back (for example from a brain import)
16
+ * and is swept again gets a second row instead of replacing the first. No
17
+ * foreign key, so deleting a dream cycle does not cascade into the archive.
18
+ */
19
+ export const MIGRATION_VERSION = '20261018_add_dream_insights_archive';
20
+ export const DREAM_INSIGHTS_ARCHIVE_TABLE = 'dream_insights_archive';
21
+ /** The table, exactly as the 3.15.9 sweep created it lazily. */
22
+ export const DREAM_INSIGHTS_ARCHIVE_TABLE_SQL = `
23
+ CREATE TABLE IF NOT EXISTS ${DREAM_INSIGHTS_ARCHIVE_TABLE} (
24
+ archive_id INTEGER PRIMARY KEY AUTOINCREMENT,
25
+ id TEXT NOT NULL,
26
+ cycle_id TEXT,
27
+ insight_type TEXT,
28
+ source_concepts TEXT,
29
+ description TEXT,
30
+ novelty_score REAL,
31
+ confidence_score REAL,
32
+ actionable INTEGER,
33
+ applied INTEGER,
34
+ suggested_action TEXT,
35
+ pattern_id TEXT,
36
+ created_at TEXT,
37
+ archived_at TEXT NOT NULL DEFAULT (datetime('now'))
38
+ )
39
+ `;
40
+ export const DREAM_INSIGHTS_ARCHIVE_SCHEMA = `
41
+ ${DREAM_INSIGHTS_ARCHIVE_TABLE_SQL};
42
+ -- The sweep's read-back looks copies up by insight id.
43
+ CREATE INDEX IF NOT EXISTS idx_dream_insights_archive_id ON ${DREAM_INSIGHTS_ARCHIVE_TABLE}(id);
44
+ `;
45
+ export function applyMigration(db) {
46
+ db.exec(DREAM_INSIGHTS_ARCHIVE_SCHEMA);
47
+ }
48
+ export function isMigrationApplied(db) {
49
+ try {
50
+ const result = db.prepare(`SELECT COUNT(*) AS count FROM sqlite_master WHERE type = 'table' AND name = ?`).get(DREAM_INSIGHTS_ARCHIVE_TABLE);
51
+ return result.count === 1;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ //# sourceMappingURL=20261018_add_dream_insights_archive.js.map
@@ -57,6 +57,10 @@ export interface GitAnalyzerConfig {
57
57
  enableCache?: boolean;
58
58
  /** Cache TTL in milliseconds (default: 5 minutes) */
59
59
  cacheTtl?: number;
60
+ /** Deadline in milliseconds shared by the git calls of one analysis (default: 30 seconds) */
61
+ gitTimeoutMs?: number;
62
+ /** Deadline in milliseconds for all analyses of one file inside withFileDeadline() (default: 60 seconds) */
63
+ fileTimeoutMs?: number;
60
64
  }
61
65
  /**
62
66
  * Git Analyzer for defect prediction metrics
@@ -65,11 +69,27 @@ export declare class GitAnalyzer {
65
69
  private readonly config;
66
70
  private readonly cache;
67
71
  private isGitRepo;
72
+ /** After a rev-parse timeout, when to ask git again (until then: "timeout"). */
73
+ private repoRetryAt;
74
+ private readonly timedOutFiles;
75
+ /** Files inside withFileDeadline() and when their git time runs out. */
76
+ private readonly fileDeadlines;
68
77
  constructor(config?: GitAnalyzerConfig);
69
78
  /**
70
79
  * Check if current directory is a git repository
71
80
  */
72
81
  isGitRepository(): Promise<boolean>;
82
+ /**
83
+ * True when git timed out while analysing `filePath` since the last call, so
84
+ * the analysis returned its "git unavailable" default rather than a result.
85
+ */
86
+ consumeTimeout(filePath: string): boolean;
87
+ /**
88
+ * Run `work`, during which every analysis of `filePath` also stops at one
89
+ * shared `fileTimeoutMs` deadline. One file's analyses then wait for git at
90
+ * most that long together, rather than `gitTimeoutMs` each (#1115).
91
+ */
92
+ withFileDeadline<T>(filePath: string, work: () => Promise<T>): Promise<T>;
73
93
  /**
74
94
  * Get file change frequency (commits in last 90 days / 3)
75
95
  * Returns normalized value 0-1
@@ -98,6 +118,7 @@ export declare class GitAnalyzer {
98
118
  * Get files changed since a specific date
99
119
  * @param since - Date to check changes from (default: 24 hours ago)
100
120
  * @returns Array of changed file paths relative to repo root
121
+ * @throws GitTimeoutError when git does not answer within `gitTimeoutMs`
101
122
  */
102
123
  getChangedFiles(since?: Date): Promise<string[]>;
103
124
  /**
@@ -107,13 +128,41 @@ export declare class GitAnalyzer {
107
128
  * @throws Error when `commitHash` is option-shaped (starts with "-") or otherwise
108
129
  * not a safe revision argument; git would otherwise parse it as an option
109
130
  * (e.g. `--output=<path>` writes an arbitrary file). See issue #960.
131
+ * @throws GitTimeoutError when git does not answer within `gitTimeoutMs`
110
132
  */
111
133
  getCommitFiles(commitHash?: string): Promise<string[]>;
112
134
  /**
113
135
  * Get files with uncommitted changes (staged + unstaged)
114
136
  * @returns Array of modified file paths relative to repo root
137
+ * @throws GitTimeoutError when git does not answer within `gitTimeoutMs`
115
138
  */
116
139
  getUncommittedFiles(): Promise<string[]>;
140
+ /**
141
+ * Count commits whose message matches any bug keyword, in one `git log`
142
+ * (repeated --grep patterns are OR-ed). Keywords are sanitized arguments and
143
+ * never reach a shell.
144
+ */
145
+ private countBugFixCommits;
146
+ /**
147
+ * Run one file's analysis with every git call sharing one `gitTimeoutMs`
148
+ * deadline (#1115). When git is unavailable or times out, the analysis
149
+ * returns its default, which callers treat as "no git data", and a timeout
150
+ * is recorded for consumeTimeout(). A timeout never yields a measured 0.
151
+ */
152
+ private analyze;
153
+ /**
154
+ * Whether the repo root is a git work tree. A timeout is not an answer: it
155
+ * is remembered for `cacheTtl` so a hung git is not waited on for every
156
+ * file, and then git is asked again.
157
+ */
158
+ private repoState;
159
+ /**
160
+ * Git queries in the repo root that share a deadline of `gitTimeoutMs` from
161
+ * now, or `fileDeadline` when that comes first. Git runs asynchronously in its own process group, so a slow or hung
162
+ * git (a network filesystem, a credential prompt) neither blocks the MCP
163
+ * server's event loop nor outlives its deadline (#1115).
164
+ */
165
+ private query;
117
166
  /**
118
167
  * Get relative path from repo root
119
168
  */