agentic-qe 3.15.8 → 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 (642) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +434 -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/agents/claim-verifier/claim-verifier-service.js +13 -8
  10. package/dist/audit/witness-chain.d.ts +1 -1
  11. package/dist/bridge/captured-experience-bridge.js +12 -13
  12. package/dist/cli/bundle.js +6 -6
  13. package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
  14. package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
  15. package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-SVXSHEET.js} +2 -2
  16. package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WKQH36XL.js} +2 -2
  17. package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
  18. package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-EKOOFVST.js} +2 -2
  19. package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-OPS36NFZ.js} +4 -4
  20. package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-AO5NDZRI.js} +3 -3
  21. package/dist/cli/chunks/base-GTB6POYE.js +2 -0
  22. package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-TFLVEMMY.js} +2 -2
  23. package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-ADBBJPYW.js} +3 -3
  24. package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-HGHUYYL5.js} +2 -2
  25. package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
  26. package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
  27. package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-2SXBBUM6.js} +2 -2
  28. package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-2T7RRL6G.js} +1 -1
  29. package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-2XGVTYVX.js} +2 -2
  30. package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-2ZI5FKSF.js} +2 -2
  31. package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
  32. package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-37OWRCUN.js} +1 -1
  33. package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-3P34JFQH.js} +5 -5
  34. package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-3Y7SPD72.js} +2 -2
  35. package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-4G63WT4F.js} +2 -2
  36. package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
  37. package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
  38. package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-5LPYV3TK.js} +1 -1
  39. package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-62OAY5KJ.js} +1 -1
  40. package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-6C3II5OM.js} +2 -2
  41. package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-6GP6W46M.js} +2 -2
  42. package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-6KIL6CMD.js} +2 -2
  43. package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-6MVVSSID.js} +1 -1
  44. package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-6P7424AO.js} +2 -2
  45. package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-6PX4OXQO.js} +2 -2
  46. package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-6S3WJGUV.js} +2 -2
  47. package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-6TB6YOCZ.js} +1 -1
  48. package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-6X5DHU6Q.js} +1 -1
  49. package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-6XCMKIZN.js} +1 -1
  50. package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-7LFZ4CHM.js} +2 -2
  51. package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-7OZVZIBE.js} +2 -2
  52. package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-7PJIR4ST.js} +2 -2
  53. package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-7TB6FK4B.js} +1 -1
  54. package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-7ZCDZHDB.js} +2 -2
  55. package/dist/cli/chunks/chunk-A55QKKT2.js +2 -0
  56. package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-ABFFWZPC.js} +273 -278
  57. package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-ACWFKES2.js} +2 -2
  58. package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-AH3ZD3NJ.js} +2 -2
  59. package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-AI4VYSFS.js} +2 -2
  60. package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
  61. package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
  62. package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-B6LTH6YV.js} +2 -2
  63. package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
  64. package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-C522H7XR.js} +54 -33
  65. package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-CESIR27V.js} +2 -2
  66. package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-CFBEBXLO.js} +3 -3
  67. package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-CMBLM26R.js} +2 -2
  68. package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-CZ2IF6MC.js} +1 -1
  69. package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-CZGOSJQ4.js} +2 -2
  70. package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-D6DA2KFD.js} +2 -2
  71. package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-DBMNJSBV.js} +1 -1
  72. package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-DE4YJQJF.js} +2 -2
  73. package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-DEF34AFL.js} +2 -2
  74. package/dist/cli/chunks/{chunk-ZWMFKZEQ.js → chunk-DKAC3E3B.js} +2 -2
  75. package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-DMFTELBS.js} +2 -2
  76. package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-DNRWGATA.js} +10 -10
  77. package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-DT7SIJOA.js} +2 -2
  78. package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-DURHK377.js} +69 -69
  79. package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-EAU5KDFO.js} +1 -1
  80. package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-EDLFX4ZB.js} +2 -2
  81. package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-EN2QSKFF.js} +2 -2
  82. package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-ERQKYIP7.js} +2 -2
  83. package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-ESUO3GTJ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-EWFECZ2U.js} +2 -2
  85. package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-FAUCT5KR.js} +3 -3
  86. package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-FB6TI3BH.js} +2 -2
  87. package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-FBXTQNRH.js} +2 -2
  88. package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-FESZBPUB.js} +2 -2
  89. package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
  90. package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-FKL3R5JQ.js} +2 -2
  91. package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-FPUDRSFJ.js} +2 -2
  92. package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-FZOWULMH.js} +1 -1
  93. package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-G3CZCUPM.js} +2 -2
  94. package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-G5I6KGMW.js} +22 -22
  95. package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-GHBNRMSJ.js} +2 -2
  96. package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-GJHWY3ZX.js} +2 -2
  97. package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-GJMLK5UT.js} +2 -2
  98. package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-GRCIBCJ2.js} +2 -2
  99. package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-GWZZ7DAO.js} +2 -2
  100. package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-GZLZCZ42.js} +2 -2
  101. package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-H2PYU7MN.js} +1 -1
  102. package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-H32EPIR2.js} +1 -1
  103. package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-H74Q7TJN.js} +1 -1
  104. package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
  105. package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-I33O4BRQ.js} +2 -2
  106. package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-IKISCIGH.js} +2 -2
  107. package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-IPJ7Q3AJ.js} +1 -1
  108. package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-IU2IV4NE.js} +1 -1
  109. package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-JHIY4VCC.js} +2 -2
  110. package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-KG336OV3.js} +2 -2
  111. package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-KI73QCR5.js} +2 -2
  112. package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-KNQ2ERFX.js} +2 -2
  113. package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-KOBVYY6H.js} +2 -2
  114. package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-KSIWGGJI.js} +8 -8
  115. package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-LMS3Y7JD.js} +2 -2
  116. package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LQEURY7C.js} +1 -1
  117. package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-LRZY4KS2.js} +2 -2
  118. package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-M2QV7PT7.js} +2 -2
  119. package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-MA7JIQ6U.js} +2 -2
  120. package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-MG27QY4D.js} +2 -2
  121. package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
  122. package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
  123. package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
  124. package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-NGKNYIQZ.js} +1 -1
  125. package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
  126. package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-NPPHWFA2.js} +3 -3
  127. package/dist/cli/chunks/chunk-NSHU347M.js +2 -0
  128. package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-NVYIZCSR.js} +2 -2
  129. package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-NW5JUCCG.js} +1 -1
  130. package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-NZYLNXT6.js} +3 -3
  131. package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-OBAREPDC.js} +2 -2
  132. package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-ODJNUMV3.js} +2 -2
  133. package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-OEKP73MC.js} +2 -2
  134. package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-OPFGRS5S.js} +2 -2
  135. package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-OY2AHLSF.js} +1 -1
  136. package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-OY3NJNP2.js} +1 -1
  137. package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-PCEW6Q2C.js} +1 -1
  138. package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-PFG6VQ5Z.js} +2 -2
  139. package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-PGYMKGOE.js} +2 -2
  140. package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-PPSAMXYN.js} +3 -3
  141. package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
  142. package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-RPHY2DU6.js} +2 -2
  143. package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-RWWOHCMG.js} +25 -20
  144. package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-S75EYIJG.js} +1 -1
  145. package/dist/cli/chunks/chunk-SKQUUE4F.js +5 -0
  146. package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
  147. package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-SU5H66SD.js} +2 -2
  148. package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-SY2IB442.js} +2 -2
  149. package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-TBLI254A.js} +2 -2
  150. package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-TNMBRDCA.js} +3 -3
  151. package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-TYFZXDGZ.js} +2 -2
  152. package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-U4OICXV2.js} +2 -2
  153. package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-U53ZB4IX.js} +2 -2
  154. package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
  155. package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-UCJMVXO4.js} +2 -2
  156. package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-UHTTW3IT.js} +2 -2
  157. package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-V2M2XCR5.js} +1 -1
  158. package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-V2RSNVMW.js} +1 -1
  159. package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-V6JBOIMX.js} +1 -1
  160. package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-VFKF2XO7.js} +1 -1
  161. package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-VFSYMOAL.js} +2 -2
  162. package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-VJQYDYAJ.js} +2 -2
  163. package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-VKRTTFB6.js} +2 -2
  164. package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-VWNFAW2M.js} +2 -2
  165. package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-WBM6N6IM.js} +1 -1
  166. package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-WDQ7IEZY.js} +2 -2
  167. package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-WDVRE6GN.js} +2 -2
  168. package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-WQ4PYWSW.js} +1 -1
  169. package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-WSF24I3D.js} +2 -2
  170. package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-XBVUVFJK.js} +2 -2
  171. package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-XEB3NLJR.js} +2 -2
  172. package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XFVTGAAJ.js} +2 -2
  173. package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-XLZYRTNO.js} +2 -2
  174. package/dist/cli/chunks/chunk-XUZDBQ5X.js +6 -0
  175. package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-Y76IAYQD.js} +1 -1
  176. package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-YAKGBHO4.js} +2 -2
  177. package/dist/cli/chunks/{chunk-TC52M542.js → chunk-YBSBABOS.js} +2 -2
  178. package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-YCGP5VFP.js} +2 -2
  179. package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-YDAQK5UF.js} +1 -1
  180. package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-YK3BVZY6.js} +2 -2
  181. package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-YK7JN5N7.js} +4 -4
  182. package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-YKMU4LBV.js} +1 -1
  183. package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-YYTGXD3R.js} +2 -2
  184. package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-Z2O2YJAF.js} +2 -2
  185. package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-Z7IYW5U7.js} +1 -1
  186. package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-ZG5666GJ.js} +1 -1
  187. package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-ZXPY654C.js} +1 -1
  188. package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-MSKMVH5X.js} +2 -2
  189. package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-7ODMNAUM.js} +2 -2
  190. package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-FXZ7ZZW3.js} +2 -2
  191. package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-4VOUEPOX.js} +2 -2
  192. package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-7D4SGLM4.js} +2 -2
  193. package/dist/cli/chunks/client-POSVREVS.js +2 -0
  194. package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-WRRT7BGQ.js} +2 -2
  195. package/dist/cli/chunks/{code-OMT4UEZI.js → code-ZDJRIL3S.js} +25 -24
  196. package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-4S4SHM56.js} +2 -2
  197. package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-YTRHNDWR.js} +2 -2
  198. package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-6N64JUXJ.js} +2 -2
  199. package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
  200. package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-IIDR66LB.js} +2 -2
  201. package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-SVVFY3S2.js} +2 -2
  202. package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
  203. package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VGFS6IBX.js} +2 -2
  204. package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-B7MCGNTE.js} +3 -3
  205. package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
  206. package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-UPETT57E.js} +2 -2
  207. package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
  208. package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-CQFNZLXU.js} +7 -7
  209. package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-PJVABHON.js} +2 -2
  210. package/dist/cli/chunks/{detect-5QTCRB32.js → detect-56SKAGWX.js} +2 -2
  211. package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-UYTYUMLN.js} +2 -2
  212. package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-YOYLBYJE.js} +2 -2
  213. package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-7TARX2XF.js} +2 -2
  214. package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
  215. package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
  216. package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
  217. package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GNB574IM.js} +2 -2
  218. package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
  219. package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-KTZ5SF54.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ITX5LQ57.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-KFHSR5YF.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
  223. package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
  224. package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-RLFW3GSX.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-EM2URCYZ.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-CBP73QHY.js} +2 -2
  231. package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-IP7XE34Z.js} +34 -34
  232. package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ONAYHU25.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-VINJRAID.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
  236. package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-RYVV5R3Z.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-MPRGWMOE.js} +6 -6
  238. package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
  239. package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-OPD7JBRL.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-M4OPUNK2.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
  243. package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4UWTQLMF.js} +24 -24
  244. package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-SQ56FF6Z.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
  246. package/dist/cli/chunks/{load-UYMZPEY6.js → load-HPHKDGGL.js} +2 -2
  247. package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
  248. package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
  249. package/dist/cli/chunks/{memory-QL53YIHP.js → memory-PFQ3KPVJ.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-3VDRX6TZ.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PJ576R63.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-72QP4UU7.js} +64 -19
  255. package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-754YQW7C.js} +2 -2
  257. package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
  258. package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-3E3DXLYB.js} +2 -2
  259. package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-7FUQAKRE.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
  261. package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BQRYMUTG.js} +2 -2
  264. package/dist/cli/chunks/{prove-2NAUROGF.js → prove-H52QGC6B.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
  266. package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-QO4XPAUM.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-FBKE5E6F.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
  269. package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-RWGOVOXO.js} +2 -2
  270. package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-LF76ZOBD.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-3BYEBTQ7.js} +2 -2
  272. package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-DST7BVCU.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-XE32PGKC.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
  278. package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
  279. package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
  281. package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
  282. package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
  283. package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
  284. package/dist/cli/chunks/{security-EHXSW22U.js → security-VSPNKCDS.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-O4QUTK6L.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-Z2BP6EOG.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-R36WNLQG.js} +2 -2
  291. package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
  292. package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-QF5Y3EMZ.js} +2 -2
  293. package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-43PYE75J.js} +13 -7
  294. package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
  295. package/dist/cli/chunks/{test-GPKT3CKZ.js → test-UWA377D4.js} +16 -16
  296. package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-YQZPJRRN.js} +3 -3
  298. package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
  299. package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-DO6WLMXP.js} +2 -2
  300. package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-H5RGFKVO.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
  302. package/dist/cli/chunks/{types-J4J6QV3I.js → types-PJS2FGPF.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
  306. package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4IC4F6AB.js} +2 -2
  307. package/dist/cli/chunks/{validate-B57HA4YK.js → validate-DHUWW7PF.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-OERQNOX5.js} +2 -2
  309. package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-TV7DMKES.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-QZPWSH37.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
  313. package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
  314. package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-YXENHB42.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-HL26AGFO.js} +2 -2
  317. package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-EOVVCN2E.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
  319. package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
  320. package/dist/cli/commands/code.js +8 -0
  321. package/dist/cli/commands/daemon.js +8 -0
  322. package/dist/cli/commands/fleet.js +27 -15
  323. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
  324. package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
  325. package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
  326. package/dist/cli/commands/learning.js +5 -3
  327. package/dist/cli/commands/ruvector-commands.js +2 -1
  328. package/dist/cli/commands/test.js +6 -0
  329. package/dist/cli/handlers/task-handler.js +21 -1
  330. package/dist/cli/utils/ci-output.d.ts +9 -0
  331. package/dist/cli/utils/fleet-operation.d.ts +32 -0
  332. package/dist/cli/utils/fleet-operation.js +71 -0
  333. package/dist/cli/utils/fleet-result.d.ts +31 -0
  334. package/dist/cli/utils/fleet-result.js +124 -0
  335. package/dist/context/sources/git-source.js +6 -2
  336. package/dist/coordination/handlers/code-intelligence-handlers.js +74 -7
  337. package/dist/coordination/handlers/coverage-collection.js +9 -10
  338. package/dist/coordination/handlers/coverage-handlers.js +31 -4
  339. package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
  340. package/dist/coordination/handlers/coverage-runner.js +9 -2
  341. package/dist/coordination/handlers/coverage-target.d.ts +13 -3
  342. package/dist/coordination/handlers/coverage-target.js +224 -7
  343. package/dist/coordination/handlers/handler-types.d.ts +2 -0
  344. package/dist/coordination/handlers/requirements-handlers.js +16 -2
  345. package/dist/coordination/handlers/security-handlers.js +11 -1
  346. package/dist/coordination/handlers/test-execution-handlers.js +57 -12
  347. package/dist/coordination/index.d.ts +2 -2
  348. package/dist/coordination/index.js +1 -1
  349. package/dist/coordination/mincut/queen-integration.d.ts +39 -1
  350. package/dist/coordination/mincut/queen-integration.js +83 -6
  351. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +35 -0
  352. package/dist/coordination/protocols/learning-consolidation-archive.js +34 -0
  353. package/dist/coordination/protocols/learning-consolidation.d.ts +62 -3
  354. package/dist/coordination/protocols/learning-consolidation.js +187 -60
  355. package/dist/coordination/queen-coordinator.d.ts +13 -2
  356. package/dist/coordination/queen-coordinator.js +43 -8
  357. package/dist/coordination/queen-event-handlers.js +15 -1
  358. package/dist/coordination/queen-lifecycle.js +9 -0
  359. package/dist/coordination/queen-task-management.d.ts +18 -24
  360. package/dist/coordination/queen-task-management.js +94 -127
  361. package/dist/coordination/queen-task-queue.d.ts +41 -0
  362. package/dist/coordination/queen-task-queue.js +194 -0
  363. package/dist/coordination/queen-types.d.ts +11 -1
  364. package/dist/coordination/queen-types.js +8 -0
  365. package/dist/coordination/queen-work-stealing.d.ts +6 -1
  366. package/dist/coordination/queen-work-stealing.js +7 -4
  367. package/dist/coordination/result-saver-adapters.d.ts +15 -0
  368. package/dist/coordination/result-saver-adapters.js +57 -0
  369. package/dist/coordination/result-saver.d.ts +1 -1
  370. package/dist/coordination/result-saver.js +8 -5
  371. package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
  372. package/dist/coordination/task-dag/dag-algorithms.js +162 -0
  373. package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
  374. package/dist/coordination/task-dag/dag-obligations.js +83 -0
  375. package/dist/coordination/task-dag/dag.d.ts +69 -19
  376. package/dist/coordination/task-dag/dag.js +215 -269
  377. package/dist/coordination/task-dag/index.d.ts +12 -4
  378. package/dist/coordination/task-dag/index.js +11 -3
  379. package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
  380. package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
  381. package/dist/coordination/task-dag/scheduler.d.ts +19 -9
  382. package/dist/coordination/task-dag/scheduler.js +36 -12
  383. package/dist/coordination/task-dag/types.d.ts +160 -1
  384. package/dist/coordination/task-dag/types.js +2 -1
  385. package/dist/coordination/task-executability.d.ts +18 -0
  386. package/dist/coordination/task-executability.js +31 -0
  387. package/dist/coordination/task-executor.d.ts +1 -0
  388. package/dist/coordination/task-executor.js +5 -0
  389. package/dist/coordination/yaml-pipeline-loader.js +5 -2
  390. package/dist/domains/code-intelligence/coordinator.js +35 -9
  391. package/dist/domains/code-intelligence/index-path-guard.d.ts +52 -0
  392. package/dist/domains/code-intelligence/index-path-guard.js +95 -0
  393. package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
  394. package/dist/domains/code-intelligence/plugin.js +5 -1
  395. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
  396. package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
  397. package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
  398. package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
  399. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
  400. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
  401. package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
  402. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
  403. package/dist/domains/contract-testing/coordinator.js +3 -1
  404. package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
  405. package/dist/domains/contract-testing/services/contract-validator.js +6 -4
  406. package/dist/domains/contract-testing/services/schema-validator.js +8 -5
  407. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  408. package/dist/domains/defect-intelligence/plugin.js +11 -2
  409. package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
  410. package/dist/domains/defect-intelligence/prediction-history.js +68 -0
  411. package/dist/domains/defect-intelligence/services/defect-predictor.js +29 -12
  412. package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
  413. package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
  414. package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
  415. package/dist/domains/learning-optimization/active-patterns.d.ts +14 -14
  416. package/dist/domains/learning-optimization/active-patterns.js +17 -14
  417. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  418. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  419. package/dist/domains/learning-optimization/coordinator.js +52 -107
  420. package/dist/domains/learning-optimization/index.d.ts +1 -1
  421. package/dist/domains/learning-optimization/interfaces.d.ts +62 -6
  422. package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
  423. package/dist/domains/learning-optimization/pattern-archive.js +56 -0
  424. package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
  425. package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
  426. package/dist/domains/learning-optimization/plugin.js +11 -1
  427. package/dist/domains/learning-optimization/reward-source.d.ts +50 -0
  428. package/dist/domains/learning-optimization/reward-source.js +65 -0
  429. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +7 -5
  430. package/dist/domains/learning-optimization/services/learning-coordinator.js +98 -75
  431. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  432. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  433. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  434. package/dist/domains/security-compliance/plugin.js +17 -3
  435. package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
  436. package/dist/domains/security-compliance/sast-path-guard.js +17 -0
  437. package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
  438. package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
  439. package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
  440. package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
  441. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
  442. package/dist/domains/security-compliance/services/scanners/scanner-orchestrator.js +4 -1
  443. package/dist/domains/test-execution/coordinator.d.ts +5 -0
  444. package/dist/domains/test-execution/coordinator.js +35 -20
  445. package/dist/domains/test-execution/interfaces.d.ts +41 -0
  446. package/dist/domains/test-execution/plugin.js +19 -4
  447. package/dist/domains/test-execution/services/flaky-detector.js +9 -7
  448. package/dist/domains/test-execution/services/retry-handler.js +46 -7
  449. package/dist/domains/test-execution/services/runner-test-cases.d.ts +32 -0
  450. package/dist/domains/test-execution/services/runner-test-cases.js +87 -0
  451. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  452. package/dist/domains/test-execution/services/test-executor.js +31 -9
  453. package/dist/domains/test-generation/plugin.js +7 -2
  454. package/dist/domains/test-generation/services/test-data-generator.js +3 -1
  455. package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
  456. package/dist/hooks/cross-phase-hooks.js +2 -1
  457. package/dist/init/fleet-integration.js +2 -0
  458. package/dist/init/init-wizard-steps.js +2 -0
  459. package/dist/init/phases/06-code-intelligence.js +2 -0
  460. package/dist/init/phases/10-workers.js +51 -6
  461. package/dist/integrations/browser/agent-browser/client.js +37 -52
  462. package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
  463. package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
  464. package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
  465. package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
  466. package/dist/integrations/browser/web-content-fetcher.js +9 -3
  467. package/dist/integrations/vibium/client.js +2 -2
  468. package/dist/integrations/vibium/runtime.d.ts +1 -1
  469. package/dist/integrations/vibium/runtime.js +14 -11
  470. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  471. package/dist/kernel/anti-drift-middleware.js +147 -11
  472. package/dist/kernel/interfaces.d.ts +5 -0
  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 +24 -4
  481. package/dist/learning/dream/dream-insights-pruner.js +85 -11
  482. package/dist/learning/dream/index.d.ts +3 -2
  483. package/dist/learning/dream/index.js +3 -1
  484. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
  485. package/dist/learning/dream/rvcow-branch-manager.js +8 -1
  486. package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
  487. package/dist/learning/dream/speculative-dreamer.js +64 -111
  488. package/dist/learning/dream/spreading-activation.d.ts +2 -1
  489. package/dist/learning/dream/spreading-activation.js +15 -6
  490. package/dist/learning/experience-capture.d.ts +9 -0
  491. package/dist/learning/experience-capture.js +18 -4
  492. package/dist/learning/qe-reasoning-bank-types.d.ts +17 -2
  493. package/dist/learning/qe-reasoning-bank.js +22 -11
  494. package/dist/learning/skill-validation-learner.d.ts +2 -0
  495. package/dist/learning/skill-validation-learner.js +29 -21
  496. package/dist/learning/sqlite-persistence.d.ts +6 -0
  497. package/dist/learning/sqlite-persistence.js +16 -2
  498. package/dist/learning/usage-outcome.d.ts +68 -0
  499. package/dist/learning/usage-outcome.js +84 -0
  500. package/dist/mcp/background-workers.d.ts +13 -1
  501. package/dist/mcp/background-workers.js +23 -3
  502. package/dist/mcp/bundle.js +602 -551
  503. package/dist/mcp/handlers/core-handlers.js +11 -0
  504. package/dist/mcp/handlers/domain-handler-configs.d.ts +19 -0
  505. package/dist/mcp/handlers/domain-handler-configs.js +76 -30
  506. package/dist/mcp/handlers/handler-factory.d.ts +2 -1
  507. package/dist/mcp/handlers/handler-factory.js +37 -15
  508. package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
  509. package/dist/mcp/handlers/orchestrate-routes.js +88 -0
  510. package/dist/mcp/handlers/task-handlers.d.ts +3 -0
  511. package/dist/mcp/handlers/task-handlers.js +69 -6
  512. package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
  513. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  514. package/dist/mcp/metrics/metrics-collector.js +13 -26
  515. package/dist/mcp/protocol-server.js +10 -3
  516. package/dist/mcp/security/schema-validator.js +3 -2
  517. package/dist/mcp/tools/code-intelligence/c4.js +11 -1
  518. package/dist/mcp/tools/coverage-analysis/index.js +31 -2
  519. package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
  520. package/dist/mcp/tools/learning-optimization/dream.js +38 -34
  521. package/dist/mcp/tools/learning-optimization/optimize.d.ts +52 -5
  522. package/dist/mcp/tools/learning-optimization/optimize.js +164 -80
  523. package/dist/mcp/tools/quality-assessment/gate.js +12 -1
  524. package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -2
  525. package/dist/memory/crdt/lww-register.js +11 -1
  526. package/dist/migration/agent-compat.js +7 -5
  527. package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
  528. package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
  529. package/dist/routing/calibration/ema-calibrator.js +3 -1
  530. package/dist/shared/base-domain-plugin.d.ts +4 -0
  531. package/dist/shared/base-domain-plugin.js +6 -0
  532. package/dist/shared/git/git-analyzer.d.ts +49 -0
  533. package/dist/shared/git/git-analyzer.js +159 -319
  534. package/dist/shared/git/git-process.d.ts +22 -0
  535. package/dist/shared/git/git-process.js +37 -0
  536. package/dist/shared/git/index.d.ts +1 -0
  537. package/dist/shared/git/index.js +1 -0
  538. package/dist/shared/io/payload-path-guard.d.ts +75 -0
  539. package/dist/shared/io/payload-path-guard.js +190 -0
  540. package/dist/shared/llm/cache.js +4 -1
  541. package/dist/shared/llm/router/agent-router-config.js +2 -1
  542. package/dist/shared/llm/translation/tool-translator.js +2 -1
  543. package/dist/shared/security/compliance-patterns.js +3 -1
  544. package/dist/shared/test-runner-args.d.ts +5 -0
  545. package/dist/shared/test-runner-args.js +6 -1
  546. package/dist/shared/test-runner-process.d.ts +32 -0
  547. package/dist/shared/test-runner-process.js +105 -0
  548. package/dist/shared/test-runner-verdict.d.ts +9 -1
  549. package/dist/shared/test-runner-verdict.js +15 -4
  550. package/dist/shared/types/index.d.ts +9 -0
  551. package/dist/shared/types/index.js +13 -0
  552. package/dist/shared/utils/namespaced-search.d.ts +56 -0
  553. package/dist/shared/utils/namespaced-search.js +71 -0
  554. package/dist/shared/utils/safe-expression-evaluator.js +4 -3
  555. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  556. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  557. package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
  558. package/dist/validation/gate-reexecute.js +7 -4
  559. package/dist/workers/daemon.d.ts +2 -0
  560. package/dist/workers/daemon.js +23 -6
  561. package/dist/workers/namespaced-keys.d.ts +4 -7
  562. package/dist/workers/namespaced-keys.js +4 -15
  563. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  564. package/dist/workers/quality-daemon/git-watcher.js +9 -9
  565. package/dist/workers/worker-env.d.ts +16 -8
  566. package/dist/workers/worker-env.js +25 -12
  567. package/dist/workers/worker-manager.js +4 -0
  568. package/dist/workers/workers/defect-predictor.d.ts +8 -3
  569. package/dist/workers/workers/defect-predictor.js +48 -49
  570. package/dist/workers/workers/learning-consolidation.d.ts +3 -1
  571. package/dist/workers/workers/learning-consolidation.js +22 -8
  572. package/dist/workflows/browser/workflow-loader.js +8 -5
  573. package/package.json +1 -1
  574. package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
  575. package/dist/cli/chunks/agent-booster-wasm-W3V5P7LE.js +0 -2
  576. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
  577. package/dist/cli/chunks/base-2XML4WH7.js +0 -2
  578. package/dist/cli/chunks/browser-ZL7OLKJQ.js +0 -4
  579. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
  580. package/dist/cli/chunks/chunk-4GYFONJB.js +0 -4
  581. package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
  582. package/dist/cli/chunks/chunk-7H3GNRNA.js +0 -4
  583. package/dist/cli/chunks/chunk-EUVSSIGR.js +0 -12
  584. package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
  585. package/dist/cli/chunks/chunk-J7RCI25Q.js +0 -2
  586. package/dist/cli/chunks/chunk-KNHLOANK.js +0 -4
  587. package/dist/cli/chunks/chunk-KNQUHGNY.js +0 -2
  588. package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
  589. package/dist/cli/chunks/chunk-PIEKGKW6.js +0 -12
  590. package/dist/cli/chunks/chunk-PWA6XBW4.js +0 -120
  591. package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
  592. package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
  593. package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
  594. package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
  595. package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
  596. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
  597. package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
  598. package/dist/cli/chunks/domain-transfer-NF7UJW7B.js +0 -2
  599. package/dist/cli/chunks/dream-VALD726W.js +0 -2
  600. package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
  601. package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
  602. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
  603. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
  604. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
  605. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
  606. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
  607. package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
  608. package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
  609. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
  610. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
  611. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
  612. package/dist/cli/chunks/mcp-NOTDZBW5.js +0 -2
  613. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
  614. package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
  615. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
  616. package/dist/cli/chunks/pipeline-7ATPA6LU.js +0 -19
  617. package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
  618. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
  619. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
  620. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
  621. package/dist/cli/chunks/router-AUD4GATI.js +0 -2
  622. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
  623. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
  624. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
  625. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
  626. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
  627. package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
  628. package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
  629. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
  630. package/dist/cli/chunks/sync-4IMMQEPT.js +0 -2
  631. package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
  632. package/dist/cli/chunks/token-bootstrap-HMM3AHXM.js +0 -2
  633. package/dist/cli/chunks/tree-sitter-wasm-parser-56GDQCMR.js +0 -2
  634. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
  635. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
  636. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
  637. package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
  638. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
  639. package/dist/cli/chunks/witness-chain-LFASSMZK.js +0 -2
  640. package/dist/cli/chunks/witness-chain-repair-TPHN4DXN.js +0 -2
  641. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
  642. package/dist/cli/chunks/wrappers-WCAYIQUX.js +0 -2
@@ -146,9 +146,10 @@ export declare class SpreadingActivation {
146
146
  * - Novel associations are discovered from unexpected co-activations
147
147
  *
148
148
  * @param durationMs - How long to dream in milliseconds
149
+ * @param signal - #1060: stops the dream early (engine closed, shutdown)
149
150
  * @returns Activation result from the dream cycle
150
151
  */
151
- dream(durationMs: number): Promise<ActivationResult>;
152
+ dream(durationMs: number, signal?: AbortSignal): Promise<ActivationResult>;
152
153
  /**
153
154
  * Find novel associations from co-activated nodes.
154
155
  *
@@ -230,9 +230,10 @@ export class SpreadingActivation {
230
230
  * - Novel associations are discovered from unexpected co-activations
231
231
  *
232
232
  * @param durationMs - How long to dream in milliseconds
233
+ * @param signal - #1060: stops the dream early (engine closed, shutdown)
233
234
  * @returns Activation result from the dream cycle
234
235
  */
235
- async dream(durationMs) {
236
+ async dream(durationMs, signal) {
236
237
  const startTime = Date.now();
237
238
  const allNovelAssociations = [];
238
239
  let totalIterations = 0;
@@ -251,7 +252,7 @@ export class SpreadingActivation {
251
252
  }
252
253
  // Dream loop with strict time enforcement
253
254
  const deadlineMs = startTime + durationMs;
254
- while (Date.now() < deadlineMs) {
255
+ while (Date.now() < deadlineMs && !signal?.aborted) {
255
256
  // Randomly select a concept to activate
256
257
  const randomIndex = secureRandomInt(0, allConcepts.length);
257
258
  const randomNode = allConcepts[randomIndex];
@@ -277,10 +278,10 @@ export class SpreadingActivation {
277
278
  }
278
279
  }
279
280
  // Check deadline again before sleeping
280
- if (Date.now() >= deadlineMs)
281
+ if (Date.now() >= deadlineMs || signal?.aborted)
281
282
  break;
282
283
  // Small delay to prevent CPU spike
283
- await this.sleep(50 + secureRandom() * 50);
284
+ await this.sleep(50 + secureRandom() * 50, signal);
284
285
  }
285
286
  // Deduplicate and sort novel associations
286
287
  const uniqueAssociations = this.deduplicateAssociations(allNovelAssociations);
@@ -561,8 +562,16 @@ export class SpreadingActivation {
561
562
  /**
562
563
  * Helper to sleep for a duration
563
564
  */
564
- sleep(ms) {
565
- return new Promise((resolve) => setTimeout(resolve, ms));
565
+ sleep(ms, signal) {
566
+ return new Promise((resolve) => {
567
+ const timer = setTimeout(done, ms);
568
+ function done() {
569
+ clearTimeout(timer);
570
+ signal?.removeEventListener('abort', done);
571
+ resolve();
572
+ }
573
+ signal?.addEventListener('abort', done, { once: true });
574
+ });
566
575
  }
567
576
  }
568
577
  export default SpreadingActivation;
@@ -71,6 +71,11 @@ export interface TaskExperience {
71
71
  reward?: number;
72
72
  /** Test outcome category (if applicable) */
73
73
  testOutcome?: TestOutcome;
74
+ /**
75
+ * #1129: what `success` was read from (e.g. test-results). Absent when the
76
+ * caller only knows the task completed; such usage is not a measured outcome.
77
+ */
78
+ outcomeBasis?: string;
74
79
  /** Feedback provided */
75
80
  feedback?: string;
76
81
  /** Extracted patterns (if any) */
@@ -209,6 +214,8 @@ export declare class ExperienceCaptureService {
209
214
  quality?: number;
210
215
  feedback?: string;
211
216
  testOutcome?: TestOutcome;
217
+ /** #1129: set when `success` was read from the result, not from completion. */
218
+ outcomeBasis?: string;
212
219
  }): Promise<Result<TaskExperience>>;
213
220
  /**
214
221
  * Get an active experience
@@ -295,6 +302,8 @@ export declare class ExperienceCaptureService {
295
302
  /**
296
303
  * Convert experience to pattern options
297
304
  */
305
+ /** #1129: tag the usage row so readers can tell a measured outcome from completion. */
306
+ private usageOutcomeTag;
298
307
  private experienceToPatternOptions;
299
308
  /**
300
309
  * Detect pattern type from task description
@@ -19,6 +19,7 @@ import { LoggerFactory } from '../logging/index.js';
19
19
  import { getRuVectorFeatureFlags } from '../integrations/ruvector/feature-flags.js';
20
20
  const logger = LoggerFactory.create('experience-capture');
21
21
  import { PROMOTION_THRESHOLD } from './qe-patterns.js';
22
+ import { usageOutcomeMetrics } from './usage-outcome.js';
22
23
  /**
23
24
  * Reward values for each test outcome.
24
25
  * Based on GRPO (Group Relative Policy Optimization) binary reward model.
@@ -181,6 +182,8 @@ export class ExperienceCaptureService {
181
182
  experience.durationMs = now - experience.startedAt;
182
183
  experience.success = outcome.success;
183
184
  experience.feedback = outcome.feedback;
185
+ if (outcome.outcomeBasis)
186
+ experience.outcomeBasis = outcome.outcomeBasis;
184
187
  // Calculate quality from steps if not provided
185
188
  if (outcome.quality !== undefined) {
186
189
  experience.quality = outcome.quality;
@@ -250,9 +253,11 @@ export class ExperienceCaptureService {
250
253
  // Extract patterns: require positive reward (or no reward signal) AND quality threshold
251
254
  // Zero or negative reward blocks extraction — only learn from genuinely positive outcomes
252
255
  const rewardAllowsExtraction = experience.reward === undefined || experience.reward > 0;
253
- if (experience.success &&
256
+ // #1129: a measured outcome is recorded whether it succeeded or failed.
257
+ // Recording only successes made the usage success rate 100% by selection.
258
+ if (experience.outcomeBasis !== undefined || (experience.success &&
254
259
  experience.quality >= this.config.minQualityForPatternExtraction &&
255
- rewardAllowsExtraction) {
260
+ rewardAllowsExtraction)) {
256
261
  const extractionResult = await this.extractPattern(experience);
257
262
  if (extractionResult.newPattern || extractionResult.reinforced) {
258
263
  experience.patterns = [extractionResult.patternId];
@@ -391,11 +396,13 @@ export class ExperienceCaptureService {
391
396
  && origin.patternType === this.detectPatternType(experience.task)
392
397
  && existing.pattern.patternType === origin.patternType
393
398
  && (!experience.domain || existing.pattern.qeDomain === experience.domain)) {
394
- const usageResult = await this.patternStore.recordUsage(existing.pattern.id, experience.success);
399
+ const usageResult = await this.patternStore.recordUsage(existing.pattern.id, experience.success, this.usageOutcomeTag(experience));
395
400
  // Check if pattern should be promoted (short-term → long-term)
396
401
  const pattern = await this.patternStore.get(existing.pattern.id);
397
402
  let promoted = false;
403
+ // A failed use is now recorded too (#1129); it never promotes.
398
404
  if (pattern &&
405
+ experience.success &&
399
406
  pattern.tier === 'short-term' &&
400
407
  pattern.usageCount >= this.config.promotionThreshold) {
401
408
  // Actually promote the pattern
@@ -420,7 +427,7 @@ export class ExperienceCaptureService {
420
427
  if (createResult.success) {
421
428
  this.stats.patternsExtracted++;
422
429
  // Record the initial usage (the experience that created this pattern)
423
- await this.patternStore.recordUsage(createResult.value.id, experience.success);
430
+ await this.patternStore.recordUsage(createResult.value.id, experience.success, this.usageOutcomeTag(experience));
424
431
  return {
425
432
  newPattern: true,
426
433
  patternId: createResult.value.id,
@@ -583,6 +590,13 @@ export class ExperienceCaptureService {
583
590
  /**
584
591
  * Convert experience to pattern options
585
592
  */
593
+ /** #1129: tag the usage row so readers can tell a measured outcome from completion. */
594
+ usageOutcomeTag(experience) {
595
+ const runId = typeof experience.metadata?.runId === 'string' ? experience.metadata.runId : undefined;
596
+ return experience.outcomeBasis !== undefined
597
+ ? usageOutcomeMetrics({ measured: true, success: experience.success, basis: experience.outcomeBasis }, runId)
598
+ : usageOutcomeMetrics({ measured: false, success: null, basis: 'task-completed' }, runId);
599
+ }
586
600
  experienceToPatternOptions(experience) {
587
601
  // Detect pattern type from task
588
602
  const patternType = this.detectPatternType(experience.task);
@@ -107,6 +107,12 @@ export interface LearningOutcome {
107
107
  testsFailed?: number;
108
108
  coverageImprovement?: number;
109
109
  executionTimeMs?: number;
110
+ /** #1129: whether `success` was read from the result or only from completion. */
111
+ outcome?: 'measured' | 'unmeasured';
112
+ /** #1129: what a measured verdict was read from (e.g. test-results). */
113
+ outcomeBasis?: string;
114
+ /** #1129: the run this use belongs to; one run may use several patterns. */
115
+ runId?: string;
110
116
  };
111
117
  /** Feedback from the agent or user */
112
118
  feedback?: string;
@@ -183,8 +189,17 @@ export interface QEReasoningBankStats {
183
189
  avgRoutingConfidence: number;
184
190
  /** Learning outcomes recorded */
185
191
  learningOutcomes: number;
186
- /** Pattern success rate */
187
- patternSuccessRate: number;
192
+ /** #1129: measured runs (success read from the result, e.g. test counts). */
193
+ measuredOutcomes?: number;
194
+ /** #1129: usage rows without a measured outcome; left out of the rate. */
195
+ unmeasuredOutcomes?: number;
196
+ /**
197
+ * Share of measured runs that succeeded; null when none is measured
198
+ * (#1129) instead of a rate built from completed calls.
199
+ */
200
+ patternSuccessRate: number | null;
201
+ /** #1129: set when no measured outcome exists to compute patternSuccessRate. */
202
+ evidenceStatus?: 'insufficient-evidence';
188
203
  /** Pattern store stats */
189
204
  patternStoreStats: import('./pattern-store.js').PatternStoreStats;
190
205
  /** ADR-061: Asymmetric learning metrics (optional, available in RealQEReasoningBank) */
@@ -33,6 +33,7 @@ import { resolveTopologyCriticalFromSharedMincut } from './routing-topology-gate
33
33
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
34
34
  import { resizeEmbedding, hashEmbedding } from './embedding-utils.js';
35
35
  import { maybeEnhanceRoutingWithPatterns } from './pattern-routing-guidance.js';
36
+ import { usageOutcomeOf } from './usage-outcome.js';
36
37
  import { checkPatternPromotionWithCoherence, promotePattern as promotePatternFn, seedCrossDomainPatterns as seedCrossDomainPatternsFn, } from './pattern-promotion.js';
37
38
  // ============================================================================
38
39
  // QEReasoningBank Implementation
@@ -97,6 +98,7 @@ export class QEReasoningBank {
97
98
  routingRequests: 0,
98
99
  totalRoutingConfidence: 0,
99
100
  learningOutcomes: 0,
101
+ measuredOutcomes: 0,
100
102
  successfulOutcomes: 0,
101
103
  };
102
104
  constructor(memory, eventBus, config = {}, coherenceService) {
@@ -431,8 +433,12 @@ export class QEReasoningBank {
431
433
  const result = await this.patternStore.recordUsage(outcome.patternId, outcome.success, outcome.metrics, outcome.feedback);
432
434
  if (result.success) {
433
435
  this.stats.learningOutcomes++;
434
- if (outcome.success) {
435
- this.stats.successfulOutcomes++;
436
+ // #1129: only a measured outcome counts toward the success rate.
437
+ const measured = usageOutcomeOf(outcome.metrics) === 'measured';
438
+ if (measured) {
439
+ this.stats.measuredOutcomes++;
440
+ if (outcome.success)
441
+ this.stats.successfulOutcomes++;
436
442
  }
437
443
  // ADR-070: Record pattern update in witness chain
438
444
  getWitnessChain().then(wc => wc.append('PATTERN_UPDATE', { patternId: outcome.patternId, success: outcome.success }, 'reasoning-bank')).catch((e) => { logger.warn('Witness chain PATTERN_UPDATE failed', { error: toErrorMessage(e) }); });
@@ -721,9 +727,10 @@ export class QEReasoningBank {
721
727
  ? this.stats.totalRoutingConfidence / this.stats.routingRequests
722
728
  : 0;
723
729
  let learningOutcomes = this.stats.learningOutcomes;
724
- let patternSuccessRate = this.stats.learningOutcomes > 0
725
- ? this.stats.successfulOutcomes / this.stats.learningOutcomes
726
- : 0;
730
+ // In process each recorded outcome is its own run; the DB groups by runId.
731
+ let measuredOutcomes = this.stats.measuredOutcomes;
732
+ let unmeasuredOutcomes = this.stats.learningOutcomes - this.stats.measuredOutcomes;
733
+ let successfulOutcomes = this.stats.successfulOutcomes;
727
734
  try {
728
735
  const agg = this.getSqliteStore().getAggregateOutcomeStats();
729
736
  if (agg.routingRequests > routingRequests) {
@@ -732,24 +739,28 @@ export class QEReasoningBank {
732
739
  }
733
740
  if (agg.learningOutcomes > learningOutcomes) {
734
741
  learningOutcomes = agg.learningOutcomes;
735
- // Prefer per-usage success rate (closer to recordOutcome semantics);
736
- // fall back to qe_patterns.success_rate aggregate when no usage rows.
737
- patternSuccessRate =
738
- agg.learningOutcomes > 0
739
- ? agg.successfulOutcomes / agg.learningOutcomes
740
- : agg.avgPatternSuccessRate;
742
+ measuredOutcomes = agg.measuredOutcomes;
743
+ unmeasuredOutcomes = agg.unmeasuredOutcomes;
744
+ successfulOutcomes = agg.successfulOutcomes;
741
745
  }
742
746
  }
743
747
  catch {
744
748
  // best-effort — never let stats reporting crash the host
745
749
  }
750
+ // #1129: the rate is over measured outcomes only. A usage row that only
751
+ // records a completed call says nothing about whether the result was
752
+ // good, so with none measured there is no rate to report.
753
+ const patternSuccessRate = measuredOutcomes > 0 ? successfulOutcomes / measuredOutcomes : null;
746
754
  return {
747
755
  totalPatterns: patternStoreStats.totalPatterns,
748
756
  byDomain,
749
757
  routingRequests,
750
758
  avgRoutingConfidence,
751
759
  learningOutcomes,
760
+ measuredOutcomes,
761
+ unmeasuredOutcomes,
752
762
  patternSuccessRate,
763
+ ...(patternSuccessRate === null ? { evidenceStatus: 'insufficient-evidence' } : {}),
753
764
  patternStoreStats,
754
765
  };
755
766
  }
@@ -252,6 +252,8 @@ export declare class SkillValidationLearner {
252
252
  */
253
253
  extractLearnedPatterns(skillName: string): Promise<ValidationPattern[]>;
254
254
  private createEmptyConfidence;
255
+ /** Preserve data keys such as __proto__ without giving parsed records a prototype. */
256
+ private parseCrossModelAnalysis;
255
257
  private createEmptyCrossModelAnalysis;
256
258
  private calculateAvgReasoningQuality;
257
259
  private calculateTrend;
@@ -24,6 +24,7 @@
24
24
  * @see .claude/skills/.validation/skill-validation-mcp-integration.md
25
25
  */
26
26
  import { safeJsonParse } from '../shared/safe-json.js';
27
+ import { createSafeRecord, getOwn, setOwn } from '../shared/utils/safe-record.js';
27
28
  import { LoggerFactory } from '../logging/index.js';
28
29
  const logger = LoggerFactory.create('skill-validation-learner');
29
30
  // ============================================================================
@@ -207,14 +208,8 @@ export class SkillValidationLearner {
207
208
  const pattern = existingPatterns.value[0].pattern;
208
209
  const templateContent = pattern.template?.content;
209
210
  if (templateContent) {
210
- const parsed = safeJsonParse(templateContent);
211
- // Validate that it has the expected structure
212
- if (parsed && typeof parsed === 'object' && typeof parsed.models === 'object') {
213
- crossModel = parsed;
214
- }
215
- else {
216
- crossModel = this.createEmptyCrossModelAnalysis();
217
- }
211
+ crossModel = this.parseCrossModelAnalysis(templateContent)
212
+ ?? this.createEmptyCrossModelAnalysis();
218
213
  }
219
214
  else {
220
215
  crossModel = this.createEmptyCrossModelAnalysis();
@@ -230,18 +225,16 @@ export class SkillValidationLearner {
230
225
  }
231
226
  // Ensure models object exists (defensive)
232
227
  if (!crossModel.models) {
233
- crossModel.models = {};
228
+ crossModel.models = createSafeRecord();
234
229
  }
235
230
  // Initialize model data if needed
236
- if (!crossModel.models[outcome.model]) {
237
- crossModel.models[outcome.model] = {
238
- scores: [],
239
- passRate: 0,
240
- avgReasoningQuality: 0,
241
- sampleCount: 0,
242
- };
243
- }
244
- const modelData = crossModel.models[outcome.model];
231
+ const modelData = getOwn(crossModel.models, outcome.model) ?? {
232
+ scores: [],
233
+ passRate: 0,
234
+ avgReasoningQuality: 0,
235
+ sampleCount: 0,
236
+ };
237
+ setOwn(crossModel.models, outcome.model, modelData);
245
238
  modelData.scores.push(outcome.score);
246
239
  modelData.sampleCount++;
247
240
  // Keep last 50 scores per model
@@ -336,7 +329,7 @@ export class SkillValidationLearner {
336
329
  try {
337
330
  const templateContent = patterns.value[0].pattern.template?.content;
338
331
  if (templateContent) {
339
- return safeJsonParse(templateContent);
332
+ return this.parseCrossModelAnalysis(templateContent);
340
333
  }
341
334
  }
342
335
  catch (e) {
@@ -367,7 +360,7 @@ export class SkillValidationLearner {
367
360
  if (!confidence)
368
361
  return null;
369
362
  // Calculate by-model trends
370
- const byModel = {};
363
+ const byModel = createSafeRecord();
371
364
  if (crossModel) {
372
365
  for (const model of Object.keys(crossModel.models)) {
373
366
  const modelOutcomes = confidence.outcomes
@@ -466,9 +459,24 @@ export class SkillValidationLearner {
466
459
  lastUpdated: new Date(),
467
460
  };
468
461
  }
462
+ /** Preserve data keys such as __proto__ without giving parsed records a prototype. */
463
+ parseCrossModelAnalysis(content) {
464
+ // The generic safe parser strips __proto__, which would discard a legitimate
465
+ // model's history. This reviver copies every record into a null-prototype
466
+ // dictionary instead, including nested records; it never invokes setters.
467
+ const parsed = JSON.parse(content, (_key, value) => {
468
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
469
+ return Object.assign(createSafeRecord(), value);
470
+ }
471
+ return value;
472
+ });
473
+ return parsed && typeof parsed === 'object' && parsed.models
474
+ && typeof parsed.models === 'object' && !Array.isArray(parsed.models)
475
+ ? parsed : null;
476
+ }
469
477
  createEmptyCrossModelAnalysis() {
470
478
  return {
471
- models: {},
479
+ models: createSafeRecord(),
472
480
  variance: 0,
473
481
  hasAnomalies: false,
474
482
  lastUpdated: new Date(),
@@ -185,12 +185,18 @@ export declare class SQLitePatternStore {
185
185
  * routing_outcomes and qe_pattern_usage live in the same unified memory.db
186
186
  * as qe_patterns. avgConfidence/avgSuccessRate return 0 when the source
187
187
  * tables are empty rather than NaN.
188
+ *
189
+ * #1129: measuredOutcomes and successfulOutcomes count measured runs (rows
190
+ * tagged outcome 'measured', grouped by runId); unmeasuredOutcomes counts
191
+ * every other usage row. learningOutcomes stays the total row count.
188
192
  */
189
193
  getAggregateOutcomeStats(): {
190
194
  routingRequests: number;
191
195
  avgRoutingConfidence: number;
192
196
  successfulRoutings: number;
193
197
  learningOutcomes: number;
198
+ measuredOutcomes: number;
199
+ unmeasuredOutcomes: number;
194
200
  successfulOutcomes: number;
195
201
  avgPatternSuccessRate: number;
196
202
  };
@@ -21,6 +21,7 @@ import { ensurePatternFtsInSync } from '../kernel/pattern-fts-self-heal.js';
21
21
  import { computeBatchEmbeddings, getEmbeddingDimension, isUsingEndpoint, getActiveEmbeddingSpaceIdentity, } from './real-embeddings.js';
22
22
  import { EMBEDDING_SPACE_CANARY, inspectEmbeddingSpaceRows, } from './embedding-space.js';
23
23
  import { recordPatternUsage } from './pattern-usage-recorder.js';
24
+ import { MEASURED_USAGE_SQL, USAGE_RUN_SQL } from './usage-outcome.js';
24
25
  export const DEFAULT_SQLITE_CONFIG = {
25
26
  // LEGACY: Ignored when useUnified=true (the default). All data goes to memory.db
26
27
  dbPath: '.agentic-qe/memory.db',
@@ -718,6 +719,10 @@ export class SQLitePatternStore {
718
719
  * routing_outcomes and qe_pattern_usage live in the same unified memory.db
719
720
  * as qe_patterns. avgConfidence/avgSuccessRate return 0 when the source
720
721
  * tables are empty rather than NaN.
722
+ *
723
+ * #1129: measuredOutcomes and successfulOutcomes count measured runs (rows
724
+ * tagged outcome 'measured', grouped by runId); unmeasuredOutcomes counts
725
+ * every other usage row. learningOutcomes stays the total row count.
721
726
  */
722
727
  getAggregateOutcomeStats() {
723
728
  const empty = {
@@ -725,6 +730,8 @@ export class SQLitePatternStore {
725
730
  avgRoutingConfidence: 0,
726
731
  successfulRoutings: 0,
727
732
  learningOutcomes: 0,
733
+ measuredOutcomes: 0,
734
+ unmeasuredOutcomes: 0,
728
735
  successfulOutcomes: 0,
729
736
  avgPatternSuccessRate: 0,
730
737
  };
@@ -751,8 +758,13 @@ export class SQLitePatternStore {
751
758
  const usage = safeGet(`
752
759
  SELECT
753
760
  COUNT(*) AS total,
754
- COALESCE(SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END), 0) AS succ
755
- FROM qe_pattern_usage
761
+ COALESCE(SUM(measured), 0) AS measuredRows,
762
+ COUNT(DISTINCT CASE WHEN measured = 1 THEN run END) AS measured,
763
+ COUNT(DISTINCT CASE WHEN measured = 1 AND success = 1 THEN run END) AS succ
764
+ FROM (
765
+ SELECT success, ${MEASURED_USAGE_SQL} AS measured, ${USAGE_RUN_SQL} AS run
766
+ FROM qe_pattern_usage
767
+ )
756
768
  `);
757
769
  const patternAvg = safeGet(`
758
770
  SELECT AVG(success_rate) AS avg_sr
@@ -764,6 +776,8 @@ export class SQLitePatternStore {
764
776
  avgRoutingConfidence: routing?.avg_q ?? 0,
765
777
  successfulRoutings: routing?.succ ?? 0,
766
778
  learningOutcomes: usage?.total ?? 0,
779
+ measuredOutcomes: usage?.measured ?? 0,
780
+ unmeasuredOutcomes: (usage?.total ?? 0) - (usage?.measuredRows ?? 0),
767
781
  successfulOutcomes: usage?.succ ?? 0,
768
782
  avgPatternSuccessRate: patternAvg?.avg_sr ?? 0,
769
783
  };
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Agentic QE v3 - Measured outcomes for pattern usage (#1129)
3
+ *
4
+ * `qe_pattern_usage.success` used to mean "the call completed": MCP tool runs
5
+ * were captured with a fixed `success: true`, hooks pass a hardcoded
6
+ * `--success`, and session consolidation writes only aggregates whose success
7
+ * rate already passed a threshold. The aggregate "Pattern Success Rate" was
8
+ * 100% by construction.
9
+ *
10
+ * A usage row counts as a measured outcome only when it says so:
11
+ * `metrics_json.outcome = 'measured'`, written when success was read from the
12
+ * result. Today that is a test run: every test passed, or some failed.
13
+ * Every other row, whatever its age or writer, is unmeasured (tag and exclude,
14
+ * the #1109 decision): it is kept and counted as a use, never rewritten, and
15
+ * never part of the rate.
16
+ *
17
+ * The rate is per run, not per row: one tool run writes a row for each
18
+ * pattern involved (the captured experience's pattern plus every routing
19
+ * hint), all with the same verdict, and they share `metrics_json.runId`.
20
+ */
21
+ export type UsageOutcome = 'measured' | 'unmeasured';
22
+ /** The outcome of one tool run, as far as its result shows it. */
23
+ export interface ToolOutcome {
24
+ /** True when `success` was read from the result, not from completion. */
25
+ readonly measured: boolean;
26
+ /** For a measured outcome, whether it was good; otherwise null. */
27
+ readonly success: boolean | null;
28
+ /** What the verdict was read from, e.g. `test-results`. */
29
+ readonly basis: string;
30
+ }
31
+ /**
32
+ * Read the outcome of a completed tool run from its result.
33
+ * Tools without an outcome measure here are `unmeasured`: completing is not
34
+ * evidence that the result was good.
35
+ */
36
+ export declare function measureToolOutcome(taskType: string, data: unknown): ToolOutcome;
37
+ /** Metrics fields that tag a usage row with its outcome provenance and run. */
38
+ export declare function usageOutcomeMetrics(outcome: ToolOutcome, runId?: string): {
39
+ outcome: UsageOutcome;
40
+ outcomeBasis: string;
41
+ runId?: string;
42
+ };
43
+ /** Classify one qe_pattern_usage row (TypeScript twin of MEASURED_USAGE_SQL). */
44
+ export declare function usageOutcomeOf(metrics: Record<string, unknown> | null | undefined): UsageOutcome;
45
+ /**
46
+ * SQL expression over qe_pattern_usage: 1 for a measured row, 0 otherwise.
47
+ * Mirrors usageOutcomeOf; json_valid keeps a malformed row from failing the query.
48
+ */
49
+ export declare const MEASURED_USAGE_SQL = "(CASE WHEN json_valid(metrics_json) AND json_extract(metrics_json, '$.outcome') = 'measured' THEN 1 ELSE 0 END)";
50
+ /** SQL expression: the run a usage row belongs to (a row without runId is its own run). */
51
+ export declare const USAGE_RUN_SQL = "COALESCE(CASE WHEN json_valid(metrics_json) THEN json_extract(metrics_json, '$.runId') END, 'row:' || id)";
52
+ /** Fields of the reasoning-bank stats that describe usage outcomes. */
53
+ interface OutcomeStats {
54
+ learningOutcomes: number;
55
+ measuredOutcomes?: number;
56
+ patternSuccessRate: number | null;
57
+ }
58
+ /**
59
+ * e.g. "9 (4 measured runs, 0 unmeasured)". A run can write several usage
60
+ * rows (one per pattern involved), so measured runs can be fewer than rows.
61
+ */
62
+ export declare function formatLearningOutcomes(stats: OutcomeStats & {
63
+ unmeasuredOutcomes?: number;
64
+ }): string;
65
+ /** The rate as a percentage, or why there is none (#1129). */
66
+ export declare function formatPatternSuccessRate(stats: OutcomeStats): string;
67
+ export {};
68
+ //# sourceMappingURL=usage-outcome.d.ts.map
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Agentic QE v3 - Measured outcomes for pattern usage (#1129)
3
+ *
4
+ * `qe_pattern_usage.success` used to mean "the call completed": MCP tool runs
5
+ * were captured with a fixed `success: true`, hooks pass a hardcoded
6
+ * `--success`, and session consolidation writes only aggregates whose success
7
+ * rate already passed a threshold. The aggregate "Pattern Success Rate" was
8
+ * 100% by construction.
9
+ *
10
+ * A usage row counts as a measured outcome only when it says so:
11
+ * `metrics_json.outcome = 'measured'`, written when success was read from the
12
+ * result. Today that is a test run: every test passed, or some failed.
13
+ * Every other row, whatever its age or writer, is unmeasured (tag and exclude,
14
+ * the #1109 decision): it is kept and counted as a use, never rewritten, and
15
+ * never part of the rate.
16
+ *
17
+ * The rate is per run, not per row: one tool run writes a row for each
18
+ * pattern involved (the captured experience's pattern plus every routing
19
+ * hint), all with the same verdict, and they share `metrics_json.runId`.
20
+ */
21
+ function asRecord(value) {
22
+ return value && typeof value === 'object' ? value : null;
23
+ }
24
+ function finiteNumber(value) {
25
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
26
+ }
27
+ /**
28
+ * Read the outcome of a completed tool run from its result.
29
+ * Tools without an outcome measure here are `unmeasured`: completing is not
30
+ * evidence that the result was good.
31
+ */
32
+ export function measureToolOutcome(taskType, data) {
33
+ const record = asRecord(data);
34
+ if (taskType === 'execute-tests') {
35
+ const total = finiteNumber(record?.total);
36
+ const failed = finiteNumber(record?.failed);
37
+ if (total !== null && total > 0 && failed !== null) {
38
+ return { measured: true, success: failed === 0, basis: 'test-results' };
39
+ }
40
+ return { measured: false, success: null, basis: 'no-test-results' };
41
+ }
42
+ // index-code is not measured (#1142 review): it fails both for the caller's
43
+ // input (a missing, empty or outside target) and for indexer errors, and the
44
+ // result does not tell them apart. Counting only the successful indexes
45
+ // would make its rate 100% by selection again.
46
+ return { measured: false, success: null, basis: 'tool-completed' };
47
+ }
48
+ /** Metrics fields that tag a usage row with its outcome provenance and run. */
49
+ export function usageOutcomeMetrics(outcome, runId) {
50
+ return {
51
+ outcome: outcome.measured ? 'measured' : 'unmeasured',
52
+ outcomeBasis: outcome.basis,
53
+ ...(runId ? { runId } : {}),
54
+ };
55
+ }
56
+ /** Classify one qe_pattern_usage row (TypeScript twin of MEASURED_USAGE_SQL). */
57
+ export function usageOutcomeOf(metrics) {
58
+ return metrics?.outcome === 'measured' ? 'measured' : 'unmeasured';
59
+ }
60
+ /**
61
+ * SQL expression over qe_pattern_usage: 1 for a measured row, 0 otherwise.
62
+ * Mirrors usageOutcomeOf; json_valid keeps a malformed row from failing the query.
63
+ */
64
+ export const MEASURED_USAGE_SQL = `(CASE WHEN json_valid(metrics_json) AND json_extract(metrics_json, '$.outcome') = 'measured' THEN 1 ELSE 0 END)`;
65
+ /** SQL expression: the run a usage row belongs to (a row without runId is its own run). */
66
+ export const USAGE_RUN_SQL = `COALESCE(CASE WHEN json_valid(metrics_json) THEN json_extract(metrics_json, '$.runId') END, 'row:' || id)`;
67
+ /**
68
+ * e.g. "9 (4 measured runs, 0 unmeasured)". A run can write several usage
69
+ * rows (one per pattern involved), so measured runs can be fewer than rows.
70
+ */
71
+ export function formatLearningOutcomes(stats) {
72
+ if (stats.learningOutcomes === 0)
73
+ return '0';
74
+ const measured = stats.measuredOutcomes ?? 0;
75
+ const unmeasured = stats.unmeasuredOutcomes ?? stats.learningOutcomes;
76
+ return `${stats.learningOutcomes} (${measured} measured runs, ${unmeasured} unmeasured)`;
77
+ }
78
+ /** The rate as a percentage, or why there is none (#1129). */
79
+ export function formatPatternSuccessRate(stats) {
80
+ return stats.patternSuccessRate === null
81
+ ? 'insufficient evidence (no measured outcomes)'
82
+ : `${(stats.patternSuccessRate * 100).toFixed(1)}% of ${stats.measuredOutcomes ?? 0} measured runs`;
83
+ }
84
+ //# sourceMappingURL=usage-outcome.js.map
@@ -10,6 +10,18 @@
10
10
  * stderr writer so stdout stays reserved for JSON-RPC.
11
11
  */
12
12
  import { type WorkerEnv } from '../workers/worker-env.js';
13
- export type BackgroundWorkersOutcome = 'disabled' | 'started' | 'failed';
13
+ /**
14
+ * #1116: `starting` while the worker daemon's first runs continue in the
15
+ * background; `startBackgroundWorkers` never reports `started` before they
16
+ * have finished. The settled state is in `getBackgroundWorkersState()`.
17
+ */
18
+ export type BackgroundWorkersOutcome = 'disabled' | 'starting' | 'failed';
19
+ export interface BackgroundWorkersState {
20
+ state: 'not-requested' | 'disabled' | 'starting' | 'started' | 'failed';
21
+ /** Why the start failed, when `state` is `failed`. */
22
+ error?: string;
23
+ }
24
+ /** Where the worker daemon's start stands now, including a background failure. */
25
+ export declare function getBackgroundWorkersState(): BackgroundWorkersState;
14
26
  export declare function startBackgroundWorkers(log: (message: string) => void, env?: WorkerEnv): Promise<BackgroundWorkersOutcome>;
15
27
  //# sourceMappingURL=background-workers.d.ts.map