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
@@ -6,6 +6,7 @@
6
6
  * ADR-051: LLM enhancement for AI-powered defect risk analysis
7
7
  */
8
8
  import { v4 as uuidv4 } from 'uuid';
9
+ import { prunePredictionHistory } from '../prediction-history.js';
9
10
  import { LoggerFactory } from '../../../logging/index.js';
10
11
  import { ok, err } from '../../../shared/types/index.js';
11
12
  import { GitAnalyzer } from '../../../shared/git/index.js';
@@ -54,6 +55,8 @@ const DEFAULT_FEATURES = [
54
55
  * ADR-051: Added LLM enhancement for AI-powered defect risk analysis
55
56
  */
56
57
  const logger = LoggerFactory.create('defect-intelligence/defect-predictor');
58
+ const GIT_TIMEOUT_WARNING = 'Git history timed out for this file: change frequency, developer experience, code age and bug history ' +
59
+ 'use their "no git data" defaults, so this prediction is incomplete.';
57
60
  export class DefectPredictorService {
58
61
  config;
59
62
  memory;
@@ -429,7 +432,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
429
432
  // ============================================================================
430
433
  async predictForFile(file, features, threshold) {
431
434
  // Extract file metrics
432
- const fileMetrics = await this.extractFileMetrics(file);
435
+ const { metrics: fileMetrics, gitTimedOut } = await this.extractFileMetrics(file);
433
436
  // Calculate probability based on weighted features
434
437
  const featureContributions = [];
435
438
  let probability = 0;
@@ -448,33 +451,44 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
448
451
  const riskLevel = this.probabilityToRisk(probability, threshold);
449
452
  // Generate recommendations based on high-contributing factors
450
453
  const recommendations = this.generateRecommendations(featureContributions, probability);
454
+ if (gitTimedOut)
455
+ recommendations.unshift(GIT_TIMEOUT_WARNING);
451
456
  return {
452
457
  file,
453
458
  probability,
454
459
  riskLevel,
455
460
  factors: featureContributions.filter((f) => f.contribution > 0.05),
456
461
  recommendations,
462
+ ...(gitTimedOut ? { warnings: [GIT_TIMEOUT_WARNING] } : {}),
457
463
  };
458
464
  }
459
465
  async extractFileMetrics(file) {
460
466
  // Try to get cached metrics
461
467
  const cachedMetrics = await this.memory.get(`${this.config.modelNamespace}:file-metrics:${file}`);
462
468
  if (cachedMetrics) {
463
- return cachedMetrics;
469
+ return { metrics: cachedMetrics, gitTimedOut: false };
464
470
  }
465
471
  // Calculate metrics using real code analysis and git history
466
- const metrics = {
472
+ const measure = async () => ({
467
473
  codeComplexity: await this.calculateComplexity(file),
468
474
  changeFrequency: await this.getChangeFrequency(file),
469
475
  developerExperience: await this.getDeveloperExperience(file),
470
476
  testCoverage: await this.getTestCoverage(file),
471
477
  codeAge: await this.getCodeAge(file),
472
478
  bugHistory: await this.getBugHistory(file),
473
- };
474
- // Cache metrics
475
- await this.memory.set(`${this.config.modelNamespace}:file-metrics:${file}`, metrics, { namespace: 'defect-intelligence', ttl: 3600 } // 1 hour cache
476
- );
477
- return metrics;
479
+ });
480
+ // #1115: the git-based metrics of one file share one deadline.
481
+ const metrics = this.gitAnalyzer.withFileDeadline
482
+ ? await this.gitAnalyzer.withFileDeadline(file, measure)
483
+ : await measure();
484
+ // #1115: a git timeout left defaults in the git-based metrics; do not
485
+ // cache them as this file's measured metrics.
486
+ const gitTimedOut = this.gitAnalyzer.consumeTimeout?.(file) === true;
487
+ if (!gitTimedOut) {
488
+ await this.memory.set(`${this.config.modelNamespace}:file-metrics:${file}`, metrics, { namespace: 'defect-intelligence', ttl: 3600 } // 1 hour cache
489
+ );
490
+ }
491
+ return { metrics, gitTimedOut };
478
492
  }
479
493
  /**
480
494
  * Calculate code complexity using TypeScript AST analysis
@@ -730,7 +744,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
730
744
  let risk = 0;
731
745
  // Determine impacted areas based on file path
732
746
  const area = this.categorizeFile(file);
733
- const fileRisk = (await this.extractFileMetrics(file)).codeComplexity;
747
+ const fileRisk = (await this.extractFileMetrics(file)).metrics.codeComplexity;
734
748
  areas.push({
735
749
  area,
736
750
  files: [file],
@@ -742,7 +756,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
742
756
  if (depth === 'deep') {
743
757
  const dependencies = await this.analyzeDependencies(file);
744
758
  for (const dep of dependencies) {
745
- const depRisk = (await this.extractFileMetrics(dep)).codeComplexity * 0.5;
759
+ const depRisk = (await this.extractFileMetrics(dep)).metrics.codeComplexity * 0.5;
746
760
  areas.push({
747
761
  area: this.categorizeFile(dep),
748
762
  files: [dep],
@@ -905,6 +919,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
905
919
  timestamp: new Date().toISOString(),
906
920
  }, { namespace: 'defect-intelligence', ttl: 86400 * 7 } // 7 days
907
921
  );
922
+ await prunePredictionHistory(this.memory, this.config.modelNamespace);
908
923
  }
909
924
  async recalculateMetrics(feedback) {
910
925
  // Simple online update of accuracy
@@ -375,7 +375,8 @@ export class MessageBrokerService {
375
375
  // Check required properties
376
376
  if (schemaDef.required && Array.isArray(schemaDef.required) && typeof data === 'object' && data !== null) {
377
377
  for (const prop of schemaDef.required) {
378
- if (!(prop in data)) {
378
+ // #1136: own properties only; an inherited `constructor` is not present.
379
+ if (!Object.hasOwn(data, prop)) {
379
380
  errors.push(`Required property '${prop}' is missing`);
380
381
  }
381
382
  }
@@ -383,7 +384,7 @@ export class MessageBrokerService {
383
384
  // Check properties if defined
384
385
  if (schemaDef.properties && typeof data === 'object' && data !== null) {
385
386
  for (const [prop, propSchema] of Object.entries(schemaDef.properties)) {
386
- if (prop in data) {
387
+ if (Object.hasOwn(data, prop)) {
387
388
  const propDef = propSchema;
388
389
  if (propDef.type) {
389
390
  const actualType = Array.isArray(data[prop]) ? 'array' : typeof data[prop];
@@ -164,7 +164,8 @@ export class ODataService {
164
164
  const errors = [];
165
165
  // Validate required parameters
166
166
  for (const param of funcImport.parameters) {
167
- if (!param.nullable && !(param.name in parameters)) {
167
+ // #1136: own properties only; an inherited `constructor` is not a parameter.
168
+ if (!param.nullable && !Object.hasOwn(parameters, param.name)) {
168
169
  errors.push({
169
170
  type: 'metadata',
170
171
  path: `${functionName}/${param.name}`,
@@ -251,7 +251,8 @@ export class SapIntegrationService {
251
251
  validateExportParams(expectedParams, exportValues) {
252
252
  const errors = [];
253
253
  for (const param of expectedParams) {
254
- if (!(param in exportValues)) {
254
+ // #1136: own properties only; an inherited `constructor` is not a parameter.
255
+ if (!Object.hasOwn(exportValues, param)) {
255
256
  errors.push(`Expected export parameter '${param}' not found in response`);
256
257
  }
257
258
  }
@@ -260,7 +261,7 @@ export class SapIntegrationService {
260
261
  validateTableParams(expectedParams, tableData) {
261
262
  const errors = [];
262
263
  for (const param of expectedParams) {
263
- if (!(param in tableData)) {
264
+ if (!Object.hasOwn(tableData, param)) {
264
265
  errors.push(`Expected table parameter '${param}' not found in response`);
265
266
  }
266
267
  }
@@ -7,8 +7,8 @@
7
7
  * - `learning:pattern:creation:<id>`: creation provenance written by
8
8
  * `LearningCoordinatorService.recordPatternCreation()` (no `context`)
9
9
  * - `learning:pattern:archived:<id>`: archived patterns written by
10
- * `LearningCoordinatorService.archivePattern()` and the
11
- * learning-consolidation protocol (full pattern shape)
10
+ * `archiveSelectedPattern()` (pattern-archive.ts) for the merge path and
11
+ * the learning-consolidation protocol (full pattern shape)
12
12
  *
13
13
  * Every reader of active patterns must go through this module so that
14
14
  * provenance and archives are excluded before `get()`, and so that those rows
@@ -7,8 +7,8 @@
7
7
  * - `learning:pattern:creation:<id>`: creation provenance written by
8
8
  * `LearningCoordinatorService.recordPatternCreation()` (no `context`)
9
9
  * - `learning:pattern:archived:<id>`: archived patterns written by
10
- * `LearningCoordinatorService.archivePattern()` and the
11
- * learning-consolidation protocol (full pattern shape)
10
+ * `archiveSelectedPattern()` (pattern-archive.ts) for the merge path and
11
+ * the learning-consolidation protocol (full pattern shape)
12
12
  *
13
13
  * Every reader of active patterns must go through this module so that
14
14
  * provenance and archives are excluded before `get()`, and so that those rows
@@ -412,7 +412,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
412
412
  const report = {
413
413
  knowledgeShared,
414
414
  domainsUpdated,
415
- transferSuccessRate: totalTransfers > 0 ? successfulTransfers / totalTransfers : 1,
415
+ // #1121: with no transfer attempted there is no rate, not 100%.
416
+ transferSuccessRate: totalTransfers > 0 ? successfulTransfers / totalTransfers : null,
416
417
  newPatternsCreated,
417
418
  };
418
419
  // Publish event
@@ -460,10 +461,12 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
460
461
  const recentMilestones = milestonesResult.success
461
462
  ? milestonesResult.value
462
463
  : [];
463
- // Calculate overall learning rate
464
- const overallLearningRate = patternStats
464
+ // Calculate overall learning rate. #1121: when pattern stats cannot be
465
+ // read, or no measured pattern exists, there is no rate to report; the
466
+ // former 0.5 fallback was an invented value.
467
+ const overallLearningRate = patternStats && patternStats.totalPatterns > 0
465
468
  ? patternStats.avgSuccessRate * 0.6 + (patternStats.avgConfidence * 0.4)
466
- : 0.5;
469
+ : null;
467
470
  // Determine top performing domains
468
471
  const topPerformingDomains = [];
469
472
  if (patternStats) {
@@ -1062,7 +1065,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
1062
1065
  sourceProject: 'current',
1063
1066
  targetProject: 'current',
1064
1067
  patternsTransferred: report.knowledgeShared,
1065
- successRate: report.transferSuccessRate,
1068
+ // Published only after a transfer succeeded, so the rate is measured.
1069
+ successRate: report.transferSuccessRate ?? 0,
1066
1070
  };
1067
1071
  const event = createEvent(LearningOptimizationEvents.TransferCompleted, 'learning-optimization', payload);
1068
1072
  await this.eventBus.publish(event);
@@ -235,6 +235,8 @@ export interface PatternStats {
235
235
  readonly topPatterns: LearnedPattern[];
236
236
  /** #1109: patterns left out of every figure because they were learned from assigned rewards. */
237
237
  readonly assignedPatternsExcluded?: number;
238
+ /** #1121: untagged patterns mined before #1120 (rate selected over successes); left out likewise. */
239
+ readonly legacyPatternsExcluded?: number;
238
240
  }
239
241
  /**
240
242
  * Experience Mining Service
@@ -486,11 +488,13 @@ export interface DomainOptimizationResult {
486
488
  export interface CrossDomainSharingReport {
487
489
  readonly knowledgeShared: number;
488
490
  readonly domainsUpdated: DomainName[];
489
- readonly transferSuccessRate: number;
491
+ /** Null when no transfer was attempted (#1121). */
492
+ readonly transferSuccessRate: number | null;
490
493
  readonly newPatternsCreated: number;
491
494
  }
492
495
  export interface LearningDashboard {
493
- readonly overallLearningRate: number;
496
+ /** Null when pattern stats are unavailable or no measured pattern exists (#1121). */
497
+ readonly overallLearningRate: number | null;
494
498
  readonly totalPatterns: number;
495
499
  readonly totalKnowledge: number;
496
500
  readonly experiencesLast24h: number;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Agentic QE v3 - Archiving one learned pattern (#1071, #1106)
3
+ *
4
+ * Archiving is a move inside the `learning-optimization` namespace:
5
+ *
6
+ * learning:pattern:<id> -> learning:pattern:archived:<id>
7
+ *
8
+ * Both callers use it: the consolidation protocol's trim path (#1071) and the
9
+ * merge path in `LearningCoordinatorService.consolidatePatterns` (#1106).
10
+ *
11
+ * Safety rules:
12
+ * - Only the active key of the given pattern is deleted.
13
+ * - The active record must still be that pattern (same id, and the same scores
14
+ * and last use) when the archive runs, or nothing is written or deleted.
15
+ * - The archive copy is read back before the active key is deleted, so a
16
+ * failed or partial write never loses the pattern.
17
+ */
18
+ import type { MemoryBackend } from '../../kernel/interfaces.js';
19
+ import type { LearnedPattern } from './interfaces.js';
20
+ export type ArchiveOutcome = 'archived' | 'missing' | 'failed';
21
+ /**
22
+ * Write the archive copy of one pattern and read it back, without touching
23
+ * the active key. `copied` means the copy is verified and the active record
24
+ * is still the given pattern.
25
+ */
26
+ export declare function copyPatternToArchive(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<'copied' | Exclude<ArchiveOutcome, 'archived'>>;
27
+ /** Remove the active key of a pattern whose archive copy was verified. */
28
+ export declare function removeArchivedPattern(memory: MemoryBackend, pattern: LearnedPattern): Promise<void>;
29
+ /** Move one pattern to its archive key in the learning namespace. */
30
+ export declare function archiveSelectedPattern(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<ArchiveOutcome>;
31
+ //# sourceMappingURL=pattern-archive.d.ts.map
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Agentic QE v3 - Archiving one learned pattern (#1071, #1106)
3
+ *
4
+ * Archiving is a move inside the `learning-optimization` namespace:
5
+ *
6
+ * learning:pattern:<id> -> learning:pattern:archived:<id>
7
+ *
8
+ * Both callers use it: the consolidation protocol's trim path (#1071) and the
9
+ * merge path in `LearningCoordinatorService.consolidatePatterns` (#1106).
10
+ *
11
+ * Safety rules:
12
+ * - Only the active key of the given pattern is deleted.
13
+ * - The active record must still be that pattern (same id, and the same scores
14
+ * and last use) when the archive runs, or nothing is written or deleted.
15
+ * - The archive copy is read back before the active key is deleted, so a
16
+ * failed or partial write never loses the pattern.
17
+ */
18
+ import { LEARNING_NS, LEARNING_PATTERN_KEY_PREFIX, isActivePatternKey } from './active-patterns.js';
19
+ /**
20
+ * Write the archive copy of one pattern and read it back, without touching
21
+ * the active key. `copied` means the copy is verified and the active record
22
+ * is still the given pattern.
23
+ */
24
+ export async function copyPatternToArchive(memory, pattern, archivedAt = new Date()) {
25
+ const activeKey = `${LEARNING_PATTERN_KEY_PREFIX}${pattern.id}`;
26
+ if (!isActivePatternKey(activeKey))
27
+ return 'missing';
28
+ const current = await memory.get(activeKey, LEARNING_NS);
29
+ if (!current || current.id !== pattern.id || changedSinceSelection(current, pattern))
30
+ return 'missing';
31
+ const archiveKey = `${LEARNING_PATTERN_KEY_PREFIX}archived:${pattern.id}`;
32
+ await memory.set(archiveKey, { ...pattern, archivedAt }, { ...LEARNING_NS, persist: true });
33
+ const copy = await memory.get(archiveKey, LEARNING_NS);
34
+ return copy && copy.id === pattern.id ? 'copied' : 'failed';
35
+ }
36
+ /** Remove the active key of a pattern whose archive copy was verified. */
37
+ export async function removeArchivedPattern(memory, pattern) {
38
+ await memory.delete(`${LEARNING_PATTERN_KEY_PREFIX}${pattern.id}`, LEARNING_NS);
39
+ }
40
+ /** Move one pattern to its archive key in the learning namespace. */
41
+ export async function archiveSelectedPattern(memory, pattern, archivedAt = new Date()) {
42
+ const copied = await copyPatternToArchive(memory, pattern, archivedAt);
43
+ if (copied !== 'copied')
44
+ return copied;
45
+ await removeArchivedPattern(memory, pattern);
46
+ return 'archived';
47
+ }
48
+ /** True when the stored record's scores or last use differ from the selected snapshot. */
49
+ function changedSinceSelection(current, selected) {
50
+ const time = (value) => new Date(value).getTime();
51
+ return (!Object.is(current.usageCount, selected.usageCount) ||
52
+ !Object.is(current.confidence, selected.confidence) ||
53
+ !Object.is(current.successRate, selected.successRate) ||
54
+ !Object.is(time(current.lastUsedAt), time(selected.lastUsedAt)));
55
+ }
56
+ //# sourceMappingURL=pattern-archive.js.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Agentic QE v3 - Building a consolidated pattern (#1106)
3
+ *
4
+ * Pure: no reads or writes. `LearningCoordinatorService.consolidatePatterns`
5
+ * stores what this returns, and the consolidation protocol's dry run uses it
6
+ * to predict the merged pattern, so a dry run selects the same trims as a
7
+ * real run.
8
+ */
9
+ import type { LearnedPattern } from './interfaces.js';
10
+ /** Merge similar patterns: best template, combined contexts, weighted scores. */
11
+ export declare function buildConsolidatedPattern(patterns: readonly LearnedPattern[], id: string, now?: Date): LearnedPattern;
12
+ //# sourceMappingURL=pattern-consolidation.d.ts.map
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Agentic QE v3 - Building a consolidated pattern (#1106)
3
+ *
4
+ * Pure: no reads or writes. `LearningCoordinatorService.consolidatePatterns`
5
+ * stores what this returns, and the consolidation protocol's dry run uses it
6
+ * to predict the merged pattern, so a dry run selects the same trims as a
7
+ * real run.
8
+ */
9
+ import { isMeasuredPattern } from './reward-source.js';
10
+ /** Usage-weighted mean of one score (equal weights when nothing was used). */
11
+ function usageWeighted(patterns, score) {
12
+ const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
13
+ return patterns.reduce((sum, p) => sum + score(p) * (totalUsage > 0 ? p.usageCount / totalUsage : 1 / patterns.length), 0);
14
+ }
15
+ /** Merge similar patterns: best template, combined contexts, weighted scores. */
16
+ export function buildConsolidatedPattern(patterns, id, now = new Date()) {
17
+ const bestPattern = patterns.reduce((best, current) => current.successRate > best.successRate ? current : best);
18
+ const mergedContext = {
19
+ language: bestPattern.context.language,
20
+ framework: bestPattern.context.framework,
21
+ testType: bestPattern.context.testType,
22
+ codeContext: bestPattern.context.codeContext,
23
+ tags: [...new Set(patterns.flatMap((p) => p.context.tags))],
24
+ };
25
+ return {
26
+ id,
27
+ type: bestPattern.type,
28
+ domain: bestPattern.domain,
29
+ name: `consolidated-${bestPattern.name}`,
30
+ description: `Consolidated from ${patterns.length} patterns`,
31
+ confidence: usageWeighted(patterns, (p) => p.confidence),
32
+ usageCount: patterns.reduce((sum, p) => sum + p.usageCount, 0),
33
+ successRate: usageWeighted(patterns, (p) => p.successRate),
34
+ context: mergedContext,
35
+ template: bestPattern.template,
36
+ createdAt: now,
37
+ lastUsedAt: now,
38
+ rewardSource: patterns.every(isMeasuredPattern) ? 'measured' : 'assigned',
39
+ };
40
+ }
41
+ //# sourceMappingURL=pattern-consolidation.js.map
@@ -19,6 +19,8 @@
19
19
  * Patterns learned before the tag existed are read the same way: a pattern
20
20
  * whose template lists only actions from those handlers, in the handler's own
21
21
  * domain, was mined from assigned rewards (its 100% rate came from them).
22
+ * Every other untagged pattern predates #1120 and is not measured either
23
+ * (see patternEvidenceOf).
22
24
  */
23
25
  import type { Experience, LearnedPattern } from './interfaces.js';
24
26
  export type RewardSource = 'measured' | 'assigned';
@@ -32,6 +34,17 @@ export declare function partitionByRewardSource<T extends ProvenanceFields>(expe
32
34
  };
33
35
  type PatternProvenanceFields = Pick<LearnedPattern, 'domain' | 'template' | 'rewardSource'>;
34
36
  export declare function patternRewardSourceOf(pattern: PatternProvenanceFields): RewardSource;
37
+ /**
38
+ * Where a stored pattern's success rate came from (#1121).
39
+ * - `measured` / `assigned`: tagged when the pattern was learned (#1109 on).
40
+ * - `pre-1120`: untagged and not mined from assigned rewards. Before #1120,
41
+ * mining dropped failed runs from each action group, so the rate of every
42
+ * untagged pattern started at 100% by selection, not by observation. Such
43
+ * patterns are kept, never rewritten, and never reported as measured; the
44
+ * next learn run mines a tagged replacement from the recorded outcomes.
45
+ */
46
+ export type PatternEvidence = RewardSource | 'pre-1120';
47
+ export declare function patternEvidenceOf(pattern: PatternProvenanceFields): PatternEvidence;
35
48
  export declare function isMeasuredPattern(pattern: PatternProvenanceFields): boolean;
36
49
  export {};
37
50
  //# sourceMappingURL=reward-source.d.ts.map
@@ -19,6 +19,8 @@
19
19
  * Patterns learned before the tag existed are read the same way: a pattern
20
20
  * whose template lists only actions from those handlers, in the handler's own
21
21
  * domain, was mined from assigned rewards (its 100% rate came from them).
22
+ * Every other untagged pattern predates #1120 and is not measured either
23
+ * (see patternEvidenceOf).
22
24
  */
23
25
  /** `agentId.value:action` pairs whose untagged rows carry an assigned reward. */
24
26
  const LEGACY_ASSIGNED = new Set([
@@ -52,7 +54,12 @@ export function patternRewardSourceOf(pattern) {
52
54
  && actions.every((action) => LEGACY_ASSIGNED.has(`${pattern.domain}:${action}`));
53
55
  return allAssigned ? 'assigned' : 'measured';
54
56
  }
57
+ export function patternEvidenceOf(pattern) {
58
+ if (pattern.rewardSource)
59
+ return pattern.rewardSource;
60
+ return patternRewardSourceOf(pattern) === 'assigned' ? 'assigned' : 'pre-1120';
61
+ }
55
62
  export function isMeasuredPattern(pattern) {
56
- return patternRewardSourceOf(pattern) === 'measured';
63
+ return patternEvidenceOf(pattern) === 'measured';
57
64
  }
58
65
  //# sourceMappingURL=reward-source.js.map
@@ -155,6 +155,11 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
155
155
  private recordPatternNulls;
156
156
  /** Read recorded input without the pattern-mining side effects. */
157
157
  getExperiences(domain: DomainName, timeRange: TimeRange): Promise<Result<Experience[]>>;
158
+ /**
159
+ * Read recorded experiences by ID (#1121). IDs with no stored experience
160
+ * are skipped, so the result length is the number actually read.
161
+ */
162
+ getExperiencesByIds(ids: readonly string[]): Promise<Result<Experience[]>>;
158
163
  /** Mine experiences for insights. */
159
164
  mineExperiences(domain: DomainName, timeRange: TimeRange): Promise<Result<MinedInsights>>;
160
165
  /**
@@ -174,7 +179,6 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
174
179
  */
175
180
  clusterExperiences(experiences: Experience[]): Promise<Result<ExperienceCluster[]>>;
176
181
  private storePattern;
177
- private archivePattern;
178
182
  private updatePatternUsage;
179
183
  private recordPatternCreation;
180
184
  private indexExperience;
@@ -187,8 +191,6 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
187
191
  private inferPatternType;
188
192
  private generatePatternTemplate;
189
193
  private extractPatternContext;
190
- private calculateConsolidatedConfidence;
191
- private calculateWeightedSuccessRate;
192
194
  private detectAnomalies;
193
195
  private calculateStdDev;
194
196
  private generateRecommendations;
@@ -8,7 +8,9 @@ import { ok, err } from '../../../shared/types/index.js';
8
8
  import { rehydrateDates } from '../../../shared/utils/kv-date-rehydrate.js';
9
9
  import { toError } from '../../../shared/error-utils.js';
10
10
  import { readActivePatterns } from '../active-patterns.js';
11
- import { isMeasuredPattern, partitionByRewardSource } from '../reward-source.js';
11
+ import { isMeasuredPattern, partitionByRewardSource, patternEvidenceOf } from '../reward-source.js';
12
+ import { copyPatternToArchive, removeArchivedPattern } from '../pattern-archive.js';
13
+ import { buildConsolidatedPattern } from '../pattern-consolidation.js';
12
14
  import { createQEFlashAttention, } from '../../../integrations/ruvector/wrappers.js';
13
15
  import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
14
16
  import { createSafeRecord } from '../../../shared/utils/safe-record.js';
@@ -354,34 +356,28 @@ Provide:
354
356
  return err(new Error('Not enough valid patterns found'));
355
357
  }
356
358
  // Merge patterns - take best template, combine contexts
357
- const bestPattern = patterns.reduce((best, current) => current.successRate > best.successRate ? current : best);
358
- const mergedContext = {
359
- language: bestPattern.context.language,
360
- framework: bestPattern.context.framework,
361
- testType: bestPattern.context.testType,
362
- codeContext: bestPattern.context.codeContext,
363
- tags: [...new Set(patterns.flatMap((p) => p.context.tags))],
364
- };
365
- const consolidatedPattern = {
366
- id: uuidv4(),
367
- type: bestPattern.type,
368
- domain: bestPattern.domain,
369
- name: `consolidated-${bestPattern.name}`,
370
- description: `Consolidated from ${patterns.length} patterns`,
371
- confidence: this.calculateConsolidatedConfidence(patterns),
372
- usageCount: patterns.reduce((sum, p) => sum + p.usageCount, 0),
373
- successRate: this.calculateWeightedSuccessRate(patterns),
374
- context: mergedContext,
375
- template: bestPattern.template,
376
- createdAt: new Date(),
377
- lastUsedAt: new Date(),
378
- rewardSource: patterns.every(isMeasuredPattern) ? 'measured' : 'assigned',
379
- };
380
- // Store consolidated pattern
359
+ const consolidatedPattern = buildConsolidatedPattern(patterns, uuidv4());
360
+ // #1106: all or nothing. Every source pattern's archive copy is written
361
+ // and read back first; then the consolidated pattern is stored and read
362
+ // back; only then are the source patterns removed from the active set.
363
+ // If any step fails, no source pattern is deleted.
364
+ const archivedAt = new Date();
365
+ let notCopied = 0;
366
+ for (const pattern of patterns) {
367
+ if (await copyPatternToArchive(this.memory, pattern, archivedAt) !== 'copied')
368
+ notCopied++;
369
+ }
370
+ if (notCopied > 0) {
371
+ return err(new Error(`${notCopied} of ${patterns.length} source patterns could not be archived (archive copy not verified); ` +
372
+ 'nothing was merged and every source pattern was left active'));
373
+ }
381
374
  await this.storePattern(consolidatedPattern);
382
- // Archive old patterns
375
+ const stored = await this.memory.get(`learning:pattern:${consolidatedPattern.id}`, LEARNING_NS);
376
+ if (!stored || stored.id !== consolidatedPattern.id) {
377
+ return err(new Error('Consolidated pattern could not be read back; nothing was merged and every source pattern was left active'));
378
+ }
383
379
  for (const pattern of patterns) {
384
- await this.archivePattern(pattern.id);
380
+ await removeArchivedPattern(this.memory, pattern);
385
381
  }
386
382
  return ok(consolidatedPattern);
387
383
  }
@@ -395,9 +391,10 @@ Provide:
395
391
  async getPatternStats(domain) {
396
392
  try {
397
393
  const inDomain = (await readActiveLearnedPatterns(this.memory)).filter((pattern) => !domain || pattern.domain === domain);
398
- // #1109: every figure below describes patterns with measured rates only.
394
+ // #1109/#1121: every figure below describes patterns with measured rates only.
399
395
  const patterns = inDomain.filter(isMeasuredPattern);
400
- const assignedPatternsExcluded = inDomain.length - patterns.length;
396
+ const legacyPatternsExcluded = inDomain.filter((p) => patternEvidenceOf(p) === 'pre-1120').length;
397
+ const assignedPatternsExcluded = inDomain.length - patterns.length - legacyPatternsExcluded;
401
398
  const byType = {
402
399
  'test-pattern': 0,
403
400
  'fix-pattern': 0,
@@ -441,6 +438,7 @@ Provide:
441
438
  avgSuccessRate: patterns.length > 0 ? totalSuccessRate / patterns.length : 0,
442
439
  topPatterns,
443
440
  ...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
441
+ ...(legacyPatternsExcluded > 0 ? { legacyPatternsExcluded } : {}),
444
442
  });
445
443
  }
446
444
  catch (error) {
@@ -537,6 +535,24 @@ Provide:
537
535
  return err(toError(error));
538
536
  }
539
537
  }
538
+ /**
539
+ * Read recorded experiences by ID (#1121). IDs with no stored experience
540
+ * are skipped, so the result length is the number actually read.
541
+ */
542
+ async getExperiencesByIds(ids) {
543
+ try {
544
+ const experiences = [];
545
+ for (const id of new Set(ids)) {
546
+ const experience = await this.memory.get(`learning:experience:${id}`, LEARNING_NS);
547
+ if (experience)
548
+ experiences.push(experience);
549
+ }
550
+ return ok(experiences);
551
+ }
552
+ catch (error) {
553
+ return err(toError(error));
554
+ }
555
+ }
540
556
  /** Mine experiences for insights. */
541
557
  async mineExperiences(domain, timeRange) {
542
558
  try {
@@ -695,17 +711,6 @@ Provide:
695
711
  persist: true,
696
712
  });
697
713
  }
698
- async archivePattern(patternId) {
699
- const key = `learning:pattern:${patternId}`;
700
- const pattern = await this.memory.get(key, LEARNING_NS);
701
- if (pattern) {
702
- await this.memory.set(`learning:pattern:archived:${patternId}`, pattern, {
703
- namespace: 'learning-optimization',
704
- persist: true,
705
- });
706
- await this.memory.delete(key, LEARNING_NS);
707
- }
708
- }
709
714
  async updatePatternUsage(patternId) {
710
715
  const key = `learning:pattern:${patternId}`;
711
716
  const pattern = await this.memory.get(key, LEARNING_NS);
@@ -896,24 +901,6 @@ Provide:
896
901
  tags: Array.from(tags),
897
902
  };
898
903
  }
899
- calculateConsolidatedConfidence(patterns) {
900
- const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
901
- let weightedConfidence = 0;
902
- for (const pattern of patterns) {
903
- const weight = totalUsage > 0 ? pattern.usageCount / totalUsage : 1 / patterns.length;
904
- weightedConfidence += pattern.confidence * weight;
905
- }
906
- return weightedConfidence;
907
- }
908
- calculateWeightedSuccessRate(patterns) {
909
- const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
910
- let weightedRate = 0;
911
- for (const pattern of patterns) {
912
- const weight = totalUsage > 0 ? pattern.usageCount / totalUsage : 1 / patterns.length;
913
- weightedRate += pattern.successRate * weight;
914
- }
915
- return weightedRate;
916
- }
917
904
  detectAnomalies(experiences) {
918
905
  const anomalies = [];
919
906
  const avgReward = this.calculateAverageReward(experiences);