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
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Agentic QE v3 - namespaced kv key scans (#1049, #1071)
3
+ *
4
+ * Two problems with reading every key of a family through
5
+ * `MemoryBackend.search()`:
6
+ *
7
+ * 1. Kernel backends disagree on what a namespaced `search` returns: the
8
+ * hybrid (sqlite) backend returns bare keys, the in-memory backend returns
9
+ * `<namespace>:<key>`. A caller that passes a result straight back to
10
+ * `get(key, { namespace })` double-prefixes the key and reads nothing.
11
+ * 2. `search()` takes a row limit and has no offset or ordering, so a single
12
+ * call with a fixed cap silently drops every key past the cap.
13
+ *
14
+ * `searchAllKeys` addresses both: it returns every matching key, bare and in
15
+ * a stable order.
16
+ */
17
+ import type { MemoryBackend, RetrieveOptions } from '../../kernel/interfaces.js';
18
+ /**
19
+ * The bare key for a key returned by `search(pattern, limit, { namespace })`.
20
+ * A result that already matches `pattern` is bare (keys may legitimately start
21
+ * with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
22
+ * leading `<namespace>:` is the backend's prefix and is removed.
23
+ */
24
+ export declare function bareSearchKey(found: string, namespace: string, pattern: string): string;
25
+ /** First request size for `searchAllKeys`. Each further request doubles it. */
26
+ export declare const DEFAULT_KEY_SCAN_PAGE_SIZE = 10000;
27
+ export interface SearchAllKeysOptions {
28
+ /** Namespace for the scan. Omit for the backend default. */
29
+ retrieve?: RetrieveOptions;
30
+ /** First request size (tests). Defaults to `DEFAULT_KEY_SCAN_PAGE_SIZE`. */
31
+ pageSize?: number;
32
+ }
33
+ /**
34
+ * Most `search()` requests one scan may make (#1106). The limit doubles each
35
+ * time, so this covers more keys than any store holds (2^31 x the first page)
36
+ * while still guaranteeing the loop ends for a backend that never returns a
37
+ * short page.
38
+ */
39
+ export declare const MAX_KEY_SCAN_REQUESTS = 32;
40
+ /**
41
+ * Every key matching `pattern`, bare (usable with `get(key, retrieve)`),
42
+ * de-duplicated and sorted.
43
+ *
44
+ * `search()` has no offset, so this widens the request until the backend
45
+ * returns fewer keys than were asked for. That is the only point at which the
46
+ * result is known to be complete; no cap ever truncates it.
47
+ *
48
+ * #1106: a backend that always returns at least `limit` keys (for example
49
+ * one that pads or repeats results) never gives a short page. After
50
+ * MAX_KEY_SCAN_REQUESTS this throws instead of looping forever or returning a
51
+ * list that may be incomplete, because callers select patterns to archive
52
+ * from it. A backend that ignores `limit` and returns every key still ends:
53
+ * the limit doubles past the key count.
54
+ */
55
+ export declare function searchAllKeys(memory: MemoryBackend, pattern: string, options?: SearchAllKeysOptions): Promise<string[]>;
56
+ //# sourceMappingURL=namespaced-search.d.ts.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Agentic QE v3 - namespaced kv key scans (#1049, #1071)
3
+ *
4
+ * Two problems with reading every key of a family through
5
+ * `MemoryBackend.search()`:
6
+ *
7
+ * 1. Kernel backends disagree on what a namespaced `search` returns: the
8
+ * hybrid (sqlite) backend returns bare keys, the in-memory backend returns
9
+ * `<namespace>:<key>`. A caller that passes a result straight back to
10
+ * `get(key, { namespace })` double-prefixes the key and reads nothing.
11
+ * 2. `search()` takes a row limit and has no offset or ordering, so a single
12
+ * call with a fixed cap silently drops every key past the cap.
13
+ *
14
+ * `searchAllKeys` addresses both: it returns every matching key, bare and in
15
+ * a stable order.
16
+ */
17
+ function globToRegExp(pattern) {
18
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
19
+ return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 's');
20
+ }
21
+ /**
22
+ * The bare key for a key returned by `search(pattern, limit, { namespace })`.
23
+ * A result that already matches `pattern` is bare (keys may legitimately start
24
+ * with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
25
+ * leading `<namespace>:` is the backend's prefix and is removed.
26
+ */
27
+ export function bareSearchKey(found, namespace, pattern) {
28
+ if (globToRegExp(pattern).test(found))
29
+ return found;
30
+ return found.startsWith(`${namespace}:`) ? found.slice(namespace.length + 1) : found;
31
+ }
32
+ /** First request size for `searchAllKeys`. Each further request doubles it. */
33
+ export const DEFAULT_KEY_SCAN_PAGE_SIZE = 10_000;
34
+ /**
35
+ * Most `search()` requests one scan may make (#1106). The limit doubles each
36
+ * time, so this covers more keys than any store holds (2^31 x the first page)
37
+ * while still guaranteeing the loop ends for a backend that never returns a
38
+ * short page.
39
+ */
40
+ export const MAX_KEY_SCAN_REQUESTS = 32;
41
+ /**
42
+ * Every key matching `pattern`, bare (usable with `get(key, retrieve)`),
43
+ * de-duplicated and sorted.
44
+ *
45
+ * `search()` has no offset, so this widens the request until the backend
46
+ * returns fewer keys than were asked for. That is the only point at which the
47
+ * result is known to be complete; no cap ever truncates it.
48
+ *
49
+ * #1106: a backend that always returns at least `limit` keys (for example
50
+ * one that pads or repeats results) never gives a short page. After
51
+ * MAX_KEY_SCAN_REQUESTS this throws instead of looping forever or returning a
52
+ * list that may be incomplete, because callers select patterns to archive
53
+ * from it. A backend that ignores `limit` and returns every key still ends:
54
+ * the limit doubles past the key count.
55
+ */
56
+ export async function searchAllKeys(memory, pattern, options = {}) {
57
+ let limit = Math.max(1, Math.floor(options.pageSize ?? DEFAULT_KEY_SCAN_PAGE_SIZE));
58
+ let found = await memory.search(pattern, limit, options.retrieve);
59
+ for (let requests = 1; found.length >= limit; requests++) {
60
+ if (requests >= MAX_KEY_SCAN_REQUESTS) {
61
+ throw new Error(`searchAllKeys('${pattern}'): the backend never returned a short page after ${requests} requests ` +
62
+ `(last limit ${limit}); refusing to return a possibly incomplete key list`);
63
+ }
64
+ limit *= 2;
65
+ found = await memory.search(pattern, limit, options.retrieve);
66
+ }
67
+ const namespace = options.retrieve?.namespace;
68
+ const keys = namespace ? found.map((key) => bareSearchKey(key, namespace, pattern)) : found;
69
+ return [...new Set(keys)].sort();
70
+ }
71
+ //# sourceMappingURL=namespaced-search.js.map
@@ -243,8 +243,9 @@ class Parser {
243
243
  parseIdentifier() {
244
244
  let value = this.context;
245
245
  const name = this.advance().value;
246
- // Get initial value from context
247
- if (typeof value === 'object' && value !== null && name in value) {
246
+ // Get initial value from context. #1136: own properties only, so an
247
+ // identifier such as `constructor` does not read an inherited member.
248
+ if (typeof value === 'object' && value !== null && Object.hasOwn(value, name)) {
248
249
  value = value[name];
249
250
  }
250
251
  else {
@@ -254,7 +255,7 @@ class Parser {
254
255
  while (this.current().type === 'DOT') {
255
256
  this.advance(); // consume dot
256
257
  const prop = this.expect('IDENTIFIER').value;
257
- if (value !== null && value !== undefined && typeof value === 'object') {
258
+ if (value !== null && value !== undefined && typeof value === 'object' && Object.hasOwn(value, prop)) {
258
259
  value = value[prop];
259
260
  }
260
261
  else {
@@ -9,6 +9,7 @@
9
9
  * CompositeActionExecutor delegates to for infrastructure-specific actions.
10
10
  */
11
11
  import { createEmptyStats } from './types.js';
12
+ import { getOwn, setOwn } from '../../shared/utils/safe-record.js';
12
13
  // ============================================================================
13
14
  // NoOp Command Runner (for testing)
14
15
  // ============================================================================
@@ -242,10 +243,13 @@ export class InfraActionExecutor {
242
243
  };
243
244
  }
244
245
  updateServiceStats(serviceName, field) {
245
- if (!this.stats.byService[serviceName]) {
246
- this.stats.byService[serviceName] = { failures: 0, recoveries: 0, successes: 0 };
246
+ // Service names come from the playbook: `constructor` must be just a name (#978).
247
+ let serviceStats = getOwn(this.stats.byService, serviceName);
248
+ if (!serviceStats) {
249
+ serviceStats = { failures: 0, recoveries: 0, successes: 0 };
250
+ setOwn(this.stats.byService, serviceName, serviceStats);
247
251
  }
248
- this.stats.byService[serviceName][field]++;
252
+ serviceStats[field]++;
249
253
  }
250
254
  sleep(ms) {
251
255
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { v4 as uuidv4 } from 'uuid';
15
15
  import { DEFAULT_INFRA_HEALING_CONFIG, createEmptyStats } from './types.js';
16
+ import { getOwn, setOwn } from '../../shared/utils/safe-record.js';
16
17
  import { createTestOutputObserver } from './test-output-observer.js';
17
18
  import { createRecoveryPlaybook } from './recovery-playbook.js';
18
19
  import { createCoordinationLock } from './coordination-lock.js';
@@ -59,10 +60,10 @@ export class InfraHealingOrchestrator {
59
60
  // Update per-service failure counts
60
61
  for (const failure of observation.infraFailures) {
61
62
  if (failure.serviceName) {
62
- if (!this.stats.byService[failure.serviceName]) {
63
- this.stats.byService[failure.serviceName] = { failures: 0, recoveries: 0, successes: 0 };
64
- }
65
- this.stats.byService[failure.serviceName].failures++;
63
+ const bucket = getOwn(this.stats.byService, failure.serviceName)
64
+ ?? { failures: 0, recoveries: 0, successes: 0 };
65
+ bucket.failures++;
66
+ setOwn(this.stats.byService, failure.serviceName, bucket);
66
67
  }
67
68
  }
68
69
  }
@@ -171,11 +172,11 @@ export class InfraHealingOrchestrator {
171
172
  this.stats.recoveriesFailed = execStats.recoveriesFailed;
172
173
  // Merge per-service recovery stats from executor
173
174
  for (const [service, execServiceStats] of Object.entries(execStats.byService)) {
174
- if (!this.stats.byService[service]) {
175
- this.stats.byService[service] = { failures: 0, recoveries: 0, successes: 0 };
176
- }
177
- this.stats.byService[service].recoveries = execServiceStats.recoveries;
178
- this.stats.byService[service].successes = execServiceStats.successes;
175
+ const bucket = getOwn(this.stats.byService, service)
176
+ ?? { failures: 0, recoveries: 0, successes: 0 };
177
+ bucket.recoveries = execServiceStats.recoveries;
178
+ bucket.successes = execServiceStats.successes;
179
+ setOwn(this.stats.byService, service, bucket);
179
180
  }
180
181
  }
181
182
  }
@@ -59,7 +59,11 @@ export class RecoveryPlaybook {
59
59
  getRecoveryPlan(serviceName) {
60
60
  if (!this.config)
61
61
  return undefined;
62
- return this.config.services[serviceName];
62
+ // Own-property lookup only: a name like `constructor` or `toString` must
63
+ // not resolve to an Object.prototype member (#1118).
64
+ return Object.hasOwn(this.config.services, serviceName)
65
+ ? this.config.services[serviceName]
66
+ : undefined;
63
67
  }
64
68
  /**
65
69
  * List all service names defined in the playbook.
@@ -89,7 +93,9 @@ export class RecoveryPlaybook {
89
93
  const defaultTimeoutMs = defaults.timeoutMs ?? 10_000;
90
94
  const defaultMaxRetries = defaults.maxRetries ?? 3;
91
95
  const defaultBackoffMs = defaults.backoffMs ?? [2000, 5000, 10_000];
92
- const services = {};
96
+ // Null-prototype map so a service named `__proto__` is stored as an own
97
+ // key instead of silently replacing the prototype (#1118).
98
+ const services = Object.create(null);
93
99
  if (raw.services) {
94
100
  for (const [name, rawService] of Object.entries(raw.services)) {
95
101
  services[name] = this.parseService(name, rawService, defaultTimeoutMs, defaultMaxRetries, defaultBackoffMs);
@@ -137,7 +143,11 @@ export class RecoveryPlaybook {
137
143
  */
138
144
  interpolate(template) {
139
145
  return template.replace(/\$\{([^}]+)\}/g, (_match, varName) => {
140
- return this.variables[varName] ?? _match;
146
+ // Own properties only: `${constructor}` must stay unresolved rather
147
+ // than expand to Object's function source (#1118).
148
+ return Object.hasOwn(this.variables, varName)
149
+ ? (this.variables[varName] ?? _match)
150
+ : _match;
141
151
  });
142
152
  }
143
153
  }
@@ -26,6 +26,7 @@ import { createHash } from 'node:crypto';
26
26
  import { meetsNoRegression } from './anchor-set.js';
27
27
  import { tierAllowsPromotion } from '../learning/provenance-tier.js';
28
28
  import { bootstrapDeltaCILow, pairedDeltas } from './paired-bootstrap.js';
29
+ import { getOwn } from '../shared/utils/safe-record.js';
29
30
  /** Tag domain-separating the rule fingerprint hash. */
30
31
  const RULE_TAG = 'aqe:accept-rule:v1+sig';
31
32
  /**
@@ -137,14 +138,16 @@ export function sealedHash(sealed) {
137
138
  * unknown version so a missing rule can never silently pass verification.
138
139
  */
139
140
  export function gateFingerprint(ruleVersion) {
140
- if (!(ruleVersion in ACCEPTANCE_RULES)) {
141
+ // #1136: own entries only; `constructor` is not a registered rule.
142
+ if (!Object.hasOwn(ACCEPTANCE_RULES, ruleVersion)) {
141
143
  throw new Error(`Unknown acceptance rule version '${ruleVersion}' — cannot fingerprint an unregistered rule.`);
142
144
  }
143
145
  return createHash('sha256').update(RULE_TAG).update('\0').update(ruleVersion).digest('hex');
144
146
  }
145
147
  /** Re-execute a frozen rule on sealed inputs. Throws for an unknown version. */
146
148
  export function reExecuteGate(ruleVersion, sealed) {
147
- const rule = ACCEPTANCE_RULES[ruleVersion];
149
+ // #1136: an inherited member (`constructor` is Object) is not a rule.
150
+ const rule = getOwn(ACCEPTANCE_RULES, ruleVersion);
148
151
  if (!rule) {
149
152
  throw new Error(`Unknown acceptance rule version '${ruleVersion}' — refusing to re-execute an unregistered rule.`);
150
153
  }
@@ -260,14 +263,14 @@ export function pathSealedHash(sealed) {
260
263
  }
261
264
  /** Fingerprint of a path-rule VERSION. Throws for an unregistered rule. */
262
265
  export function pathGateFingerprint(ruleVersion) {
263
- if (!(ruleVersion in PROMOTION_PATH_RULES)) {
266
+ if (!Object.hasOwn(PROMOTION_PATH_RULES, ruleVersion)) {
264
267
  throw new Error(`Unknown promotion-path rule version '${ruleVersion}' — cannot fingerprint an unregistered rule.`);
265
268
  }
266
269
  return createHash('sha256').update(PATH_RULE_TAG).update('\0').update(ruleVersion).digest('hex');
267
270
  }
268
271
  /** Re-execute a frozen path rule on sealed inputs. Throws for an unknown version. */
269
272
  export function reExecutePathGate(ruleVersion, sealed) {
270
- const rule = PROMOTION_PATH_RULES[ruleVersion];
273
+ const rule = getOwn(PROMOTION_PATH_RULES, ruleVersion);
271
274
  if (!rule) {
272
275
  throw new Error(`Unknown promotion-path rule version '${ruleVersion}' — refusing to re-execute an unregistered rule.`);
273
276
  }
@@ -35,6 +35,8 @@ export declare class QEDaemon implements IDaemon {
35
35
  private workerManager;
36
36
  private config;
37
37
  private _qualityDaemon?;
38
+ /** #1066: `AQE_DISABLED_WORKERS` ids that match no worker. */
39
+ private unknownDisabledIds;
38
40
  constructor(config?: DaemonConfig);
39
41
  get running(): boolean;
40
42
  get uptime(): number;
@@ -30,11 +30,14 @@ export class QEDaemon {
30
30
  workerManager;
31
31
  config;
32
32
  _qualityDaemon;
33
+ /** #1066: `AQE_DISABLED_WORKERS` ids that match no worker. */
34
+ unknownDisabledIds = [];
33
35
  constructor(config) {
34
36
  this.config = {
35
37
  ...DEFAULT_CONFIG,
36
38
  ...config,
37
- disabledWorkers: config?.disabledWorkers ?? parseDisabledWorkers(),
39
+ // #1066: ids are matched without regard to case.
40
+ disabledWorkers: (config?.disabledWorkers ?? parseDisabledWorkers()).map((id) => id.toLowerCase()),
38
41
  };
39
42
  this.workerManager = new WorkerManagerImpl();
40
43
  this.registerWorkers();
@@ -56,6 +59,11 @@ export class QEDaemon {
56
59
  return;
57
60
  }
58
61
  console.info('[Daemon] Starting QE Background Workers...');
62
+ // #1066: reported on start, not construction. fleet_init and shutdown
63
+ // construct the daemon even when AQE_WORKERS_ENABLED=false.
64
+ if (this.unknownDisabledIds.length > 0) {
65
+ console.warn(`[AQE] WARN AQE_DISABLED_WORKERS: unknown worker id(s) ignored: ${this.unknownDisabledIds.join(', ')}`);
66
+ }
59
67
  this._running = true;
60
68
  this._startedAt = new Date();
61
69
  // Start health check timer
@@ -66,7 +74,19 @@ export class QEDaemon {
66
74
  this._healthCheckTimer.unref?.();
67
75
  // Auto-start workers if configured
68
76
  if (this.config.autoStart) {
69
- await this.workerManager.startAll();
77
+ try {
78
+ await this.workerManager.startAll();
79
+ }
80
+ catch (error) {
81
+ // #1116: a failed start must not leave the daemon reporting running.
82
+ this._running = false;
83
+ this._startedAt = undefined;
84
+ if (this._healthCheckTimer)
85
+ clearInterval(this._healthCheckTimer);
86
+ this._healthCheckTimer = undefined;
87
+ await this.workerManager.stopAll().catch(() => undefined);
88
+ throw error;
89
+ }
70
90
  console.info('[Daemon] All workers started');
71
91
  }
72
92
  // Log registered workers
@@ -174,10 +194,7 @@ export class QEDaemon {
174
194
  }
175
195
  }
176
196
  const knownIds = new Set(allWorkers.map((worker) => worker.config.id));
177
- const unknownIds = this.config.disabledWorkers.filter((id) => !knownIds.has(id));
178
- if (unknownIds.length > 0) {
179
- console.warn(`[AQE] WARN AQE_DISABLED_WORKERS: unknown worker id(s) ignored: ${unknownIds.join(', ')}`);
180
- }
197
+ this.unknownDisabledIds = this.config.disabledWorkers.filter((id) => !knownIds.has(id));
181
198
  }
182
199
  performHealthCheck() {
183
200
  const health = this.workerManager.getHealth();
@@ -5,12 +5,9 @@
5
5
  * hybrid (sqlite) backend returns bare keys, the in-memory backend returns
6
6
  * `<namespace>:<key>`. A worker that passes a search result straight back to
7
7
  * `get(key, { namespace })` then double-prefixes the key and reads nothing.
8
+ *
9
+ * The helper lives in `shared/utils/namespaced-search` so domain services can
10
+ * use it too (#1071); it is re-exported here for the workers.
8
11
  */
9
- /**
10
- * The bare key for a key returned by `search(pattern, limit, { namespace })`.
11
- * A result that already matches `pattern` is bare (keys may legitimately start
12
- * with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
13
- * leading `<namespace>:` is the backend's prefix and is removed.
14
- */
15
- export declare function bareSearchKey(found: string, namespace: string, pattern: string): string;
12
+ export { bareSearchKey } from '../shared/utils/namespaced-search.js';
16
13
  //# sourceMappingURL=namespaced-keys.d.ts.map
@@ -5,20 +5,9 @@
5
5
  * hybrid (sqlite) backend returns bare keys, the in-memory backend returns
6
6
  * `<namespace>:<key>`. A worker that passes a search result straight back to
7
7
  * `get(key, { namespace })` then double-prefixes the key and reads nothing.
8
+ *
9
+ * The helper lives in `shared/utils/namespaced-search` so domain services can
10
+ * use it too (#1071); it is re-exported here for the workers.
8
11
  */
9
- function globToRegExp(pattern) {
10
- const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
11
- return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 's');
12
- }
13
- /**
14
- * The bare key for a key returned by `search(pattern, limit, { namespace })`.
15
- * A result that already matches `pattern` is bare (keys may legitimately start
16
- * with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
17
- * leading `<namespace>:` is the backend's prefix and is removed.
18
- */
19
- export function bareSearchKey(found, namespace, pattern) {
20
- if (globToRegExp(pattern).test(found))
21
- return found;
22
- return found.startsWith(`${namespace}:`) ? found.slice(namespace.length + 1) : found;
23
- }
12
+ export { bareSearchKey } from '../shared/utils/namespaced-search.js';
24
13
  //# sourceMappingURL=namespaced-keys.js.map
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { execFile } from 'child_process';
9
9
  import { promisify } from 'util';
10
+ import { createSafeRecord, getOwn, setOwn } from '../../shared/utils/safe-record.js';
10
11
  const execFileAsync = promisify(execFile);
11
12
  const DEFAULTS = {
12
13
  runsPerWorkflow: 10,
@@ -95,16 +96,19 @@ export class CIMonitor {
95
96
  }
96
97
  }
97
98
  groupByWorkflow(runs) {
98
- const grouped = {};
99
+ // Workflow names come from GitHub: no prototype, so `constructor` is just a name (#978).
100
+ const grouped = createSafeRecord();
99
101
  for (const run of runs) {
100
- if (!grouped[run.name]) {
101
- grouped[run.name] = [];
102
+ let bucket = getOwn(grouped, run.name);
103
+ if (!bucket) {
104
+ bucket = [];
105
+ setOwn(grouped, run.name, bucket);
102
106
  }
103
- grouped[run.name].push(run);
107
+ bucket.push(run);
104
108
  }
105
109
  // Limit per workflow
106
110
  for (const name of Object.keys(grouped)) {
107
- grouped[name] = grouped[name].slice(0, this.options.runsPerWorkflow);
111
+ setOwn(grouped, name, getOwn(grouped, name).slice(0, this.options.runsPerWorkflow));
108
112
  }
109
113
  return grouped;
110
114
  }
@@ -6,12 +6,12 @@
6
6
  * 'next' priority analysis tasks into the daemon queue.
7
7
  */
8
8
  import { watch } from 'fs';
9
- import { execFile } from 'child_process';
10
- import { promisify } from 'util';
11
9
  import { resolve, join } from 'path';
12
10
  import { existsSync, readFileSync } from 'fs';
13
11
  import { getGitRefError } from '../../shared/git/ref-validation.js';
14
- const execFileAsync = promisify(execFile);
12
+ import { runGit } from '../../shared/git/git-process.js';
13
+ /** A hung git must not stall the watcher; its process group is stopped (#1115). */
14
+ const GIT_TIMEOUT_MS = 10_000;
15
15
  const DEFAULTS = {
16
16
  repoRoot: process.cwd(),
17
17
  debounceMs: 500,
@@ -100,11 +100,11 @@ export class GitWatcher {
100
100
  this._polling = true;
101
101
  const changedBranches = [];
102
102
  try {
103
- const { stdout } = await execFileAsync('git', [
103
+ const stdout = await runGit([
104
104
  'for-each-ref',
105
105
  '--format=%(refname:short) %(objectname:short)',
106
106
  'refs/heads/',
107
- ], { cwd: this.options.repoRoot });
107
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
108
108
  for (const line of stdout.trim().split('\n')) {
109
109
  if (!line)
110
110
  continue;
@@ -162,13 +162,13 @@ export class GitWatcher {
162
162
  return;
163
163
  let changedFiles = [];
164
164
  try {
165
- const { stdout } = await execFileAsync('git', [
165
+ const stdout = await runGit([
166
166
  'diff-tree',
167
167
  '--no-commit-id',
168
168
  '--name-only',
169
169
  '-r',
170
170
  commitHash,
171
- ], { cwd: this.options.repoRoot });
171
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
172
172
  changedFiles = stdout
173
173
  .trim()
174
174
  .split('\n')
@@ -196,11 +196,11 @@ export class GitWatcher {
196
196
  }
197
197
  async snapshotHeads() {
198
198
  try {
199
- const { stdout } = await execFileAsync('git', [
199
+ const stdout = await runGit([
200
200
  'for-each-ref',
201
201
  '--format=%(refname:short) %(objectname:short)',
202
202
  'refs/heads/',
203
- ], { cwd: this.options.repoRoot });
203
+ ], { cwd: this.options.repoRoot, timeout: GIT_TIMEOUT_MS });
204
204
  for (const line of stdout.trim().split('\n')) {
205
205
  if (!line)
206
206
  continue;
@@ -9,10 +9,13 @@
9
9
  * value keeps the default behaviour (workers on). `aqe init` writes `true`
10
10
  * for normal installs and `false` for `--no-database` installs (#533).
11
11
  * - `AQE_DISABLED_WORKERS`: comma-separated worker ids that are not
12
- * registered (for example `learning-consolidation`).
12
+ * registered (for example `learning-consolidation`). Matched without
13
+ * regard to case (#1066).
13
14
  * - `AQE_DREAM_INSIGHTS_RETENTION_DAYS`: retention window for unapplied
14
- * `dream_insights` rows. Default 30. `0` or `off` disables the sweep.
15
- * Invalid values are rejected with a warning and fall back to the default.
15
+ * `dream_insights` rows. Default 30. `0`, `off`, `false`, `no`, `disabled`,
16
+ * `none` or `never` disables the sweep. Any other value that is not a whole
17
+ * number of days is rejected with a warning and also disables the sweep, so
18
+ * a typo never deletes anything (#1066).
16
19
  */
17
20
  export type WorkerEnv = Readonly<Record<string, string | undefined>>;
18
21
  /** Default retention window for unapplied dream insights (days). */
@@ -23,8 +26,9 @@ export declare const DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS = 30;
23
26
  */
24
27
  export declare function isWorkersEnabled(env?: WorkerEnv): boolean;
25
28
  /**
26
- * Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed, de-duplicated and
27
- * with empty entries removed.
29
+ * Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed, lower-cased,
30
+ * de-duplicated and with empty entries removed. Worker ids are lower-case, so
31
+ * `Learning-Consolidation` disables `learning-consolidation` (#1066).
28
32
  */
29
33
  export declare function parseDisabledWorkers(env?: WorkerEnv): string[];
30
34
  export interface DreamInsightsRetention {
@@ -36,10 +40,14 @@ export interface DreamInsightsRetention {
36
40
  /**
37
41
  * Resolve `AQE_DREAM_INSIGHTS_RETENTION_DAYS`.
38
42
  *
39
- * - unset / empty: default (30 days)
40
- * - `0` or `off`: sweep disabled (`retentionDays: null`)
43
+ * - unset, empty or whitespace only: default (30 days). Blanking the
44
+ * variable means "unset", not "off" (documented in configuration.md).
45
+ * - `0`, `off`, `false`, `no`, `disabled`, `none`, `never`: sweep disabled
46
+ * (`retentionDays: null`)
41
47
  * - a whole number from 1 to 36500: that many days
42
- * - anything else: default, with a warning describing the rejected value
48
+ * - anything else: sweep disabled, with a warning describing the rejected
49
+ * value. The sweep deletes user data, so an unreadable setting fails safe
50
+ * (#1066).
43
51
  */
44
52
  export declare function resolveDreamInsightsRetention(env?: WorkerEnv): DreamInsightsRetention;
45
53
  //# sourceMappingURL=worker-env.d.ts.map
@@ -9,12 +9,20 @@
9
9
  * value keeps the default behaviour (workers on). `aqe init` writes `true`
10
10
  * for normal installs and `false` for `--no-database` installs (#533).
11
11
  * - `AQE_DISABLED_WORKERS`: comma-separated worker ids that are not
12
- * registered (for example `learning-consolidation`).
12
+ * registered (for example `learning-consolidation`). Matched without
13
+ * regard to case (#1066).
13
14
  * - `AQE_DREAM_INSIGHTS_RETENTION_DAYS`: retention window for unapplied
14
- * `dream_insights` rows. Default 30. `0` or `off` disables the sweep.
15
- * Invalid values are rejected with a warning and fall back to the default.
15
+ * `dream_insights` rows. Default 30. `0`, `off`, `false`, `no`, `disabled`,
16
+ * `none` or `never` disables the sweep. Any other value that is not a whole
17
+ * number of days is rejected with a warning and also disables the sweep, so
18
+ * a typo never deletes anything (#1066).
16
19
  */
17
20
  const FALSY_VALUES = new Set(['false', '0', 'off', 'no']);
21
+ /**
22
+ * Values of `AQE_DREAM_INSIGHTS_RETENTION_DAYS` that turn the sweep off: the
23
+ * `AQE_WORKERS_ENABLED` falsy set plus a few spellings people use for "keep".
24
+ */
25
+ const RETENTION_OFF_VALUES = new Set([...FALSY_VALUES, 'disabled', 'disable', 'none', 'never']);
18
26
  /** Default retention window for unapplied dream insights (days). */
19
27
  export const DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS = 30;
20
28
  /** Upper bound accepted for the retention window (100 years). */
@@ -30,8 +38,9 @@ export function isWorkersEnabled(env = process.env) {
30
38
  return !FALSY_VALUES.has(raw.trim().toLowerCase());
31
39
  }
32
40
  /**
33
- * Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed, de-duplicated and
34
- * with empty entries removed.
41
+ * Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed, lower-cased,
42
+ * de-duplicated and with empty entries removed. Worker ids are lower-case, so
43
+ * `Learning-Consolidation` disables `learning-consolidation` (#1066).
35
44
  */
36
45
  export function parseDisabledWorkers(env = process.env) {
37
46
  const raw = env.AQE_DISABLED_WORKERS;
@@ -39,17 +48,21 @@ export function parseDisabledWorkers(env = process.env) {
39
48
  return [];
40
49
  const ids = raw
41
50
  .split(',')
42
- .map((id) => id.trim())
51
+ .map((id) => id.trim().toLowerCase())
43
52
  .filter((id) => id.length > 0);
44
53
  return Array.from(new Set(ids));
45
54
  }
46
55
  /**
47
56
  * Resolve `AQE_DREAM_INSIGHTS_RETENTION_DAYS`.
48
57
  *
49
- * - unset / empty: default (30 days)
50
- * - `0` or `off`: sweep disabled (`retentionDays: null`)
58
+ * - unset, empty or whitespace only: default (30 days). Blanking the
59
+ * variable means "unset", not "off" (documented in configuration.md).
60
+ * - `0`, `off`, `false`, `no`, `disabled`, `none`, `never`: sweep disabled
61
+ * (`retentionDays: null`)
51
62
  * - a whole number from 1 to 36500: that many days
52
- * - anything else: default, with a warning describing the rejected value
63
+ * - anything else: sweep disabled, with a warning describing the rejected
64
+ * value. The sweep deletes user data, so an unreadable setting fails safe
65
+ * (#1066).
53
66
  */
54
67
  export function resolveDreamInsightsRetention(env = process.env) {
55
68
  const raw = env.AQE_DREAM_INSIGHTS_RETENTION_DAYS;
@@ -57,7 +70,7 @@ export function resolveDreamInsightsRetention(env = process.env) {
57
70
  return { retentionDays: DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS };
58
71
  }
59
72
  const value = raw.trim().toLowerCase();
60
- if (value === 'off' || value === '0') {
73
+ if (RETENTION_OFF_VALUES.has(value)) {
61
74
  return { retentionDays: null };
62
75
  }
63
76
  if (/^\d+$/.test(value)) {
@@ -67,10 +80,10 @@ export function resolveDreamInsightsRetention(env = process.env) {
67
80
  }
68
81
  }
69
82
  return {
70
- retentionDays: DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS,
83
+ retentionDays: null,
71
84
  warning: `Invalid AQE_DREAM_INSIGHTS_RETENTION_DAYS=${JSON.stringify(raw)}; ` +
72
85
  `expected a whole number of days (1-${MAX_DREAM_INSIGHTS_RETENTION_DAYS}), ` +
73
- `0 or "off". Using the default of ${DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS} days.`,
86
+ `0 or "off". The dream_insights retention sweep is off until this is fixed; nothing is deleted.`,
74
87
  };
75
88
  }
76
89
  //# sourceMappingURL=worker-env.js.map
@@ -236,6 +236,10 @@ export class WorkerManagerImpl {
236
236
  async startAll() {
237
237
  this.running = true;
238
238
  for (const worker of Array.from(this.workers.values())) {
239
+ // #1066: startAll may run in the background (MCP startup), so a stop
240
+ // issued meanwhile must not be followed by more first runs.
241
+ if (!this.running)
242
+ break;
239
243
  if (worker.config.enabled) {
240
244
  await this.startWorker(worker);
241
245
  }