agentic-qe 3.14.4 → 3.14.5

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 (403) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +93 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/audit/witness-chain.d.ts +1 -1
  5. package/dist/audit/witness-chain.js +29 -22
  6. package/dist/cli/bundle.js +13 -10
  7. package/dist/cli/chunks/adapter-IYC62SXA.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-5PC7D2FW.js → agent-booster-wasm-EDNKP3SP.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-RDNTK4CA.js → agent-handler-V6CZ7Q6S.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-NAAMBWIR.js → agent-memory-branch-ZMD6ULC3.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-LLOU2IXD.js +2 -0
  12. package/dist/cli/chunks/{arena-HXTWJ5YY.js → arena-4UPAEHFT.js} +4 -4
  13. package/dist/cli/chunks/{arena-KXFHRWX4.js → arena-QLSBESC7.js} +2 -2
  14. package/dist/cli/chunks/{audit-YSGA7UWT.js → audit-CVZQMF55.js} +3 -3
  15. package/dist/cli/chunks/base-P3Z4IKCT.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-UICJZIDG.js → better-sqlite3-4DSBPDRH.js} +2 -2
  17. package/dist/cli/chunks/brain-handler-GBY4EZ4P.js +94 -0
  18. package/dist/cli/chunks/{branch-enumerator-SS7UNVIA.js → branch-enumerator-XYBVXCNO.js} +2 -2
  19. package/dist/cli/chunks/{browser-77GI6KBE.js → browser-32F6MREU.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-YYHQQ25X.js +2 -0
  21. package/dist/cli/chunks/{chunk-FGYMFUE2.js → chunk-2JGEZHWY.js} +2 -2
  22. package/dist/cli/chunks/{chunk-MOBNBMFW.js → chunk-2KJQ2UQE.js} +1 -1
  23. package/dist/cli/chunks/{chunk-C2WU3533.js → chunk-2OMLTYQK.js} +1 -1
  24. package/dist/cli/chunks/{chunk-CU46J64M.js → chunk-37TUN44F.js} +2 -2
  25. package/dist/cli/chunks/{chunk-Z3RHREWF.js → chunk-3DDXWYMO.js} +1 -1
  26. package/dist/cli/chunks/{chunk-Q5DO24IJ.js → chunk-3EZ5DR2R.js} +3 -3
  27. package/dist/cli/chunks/{chunk-WLG5AJ4N.js → chunk-3KDL6QDK.js} +2 -2
  28. package/dist/cli/chunks/{chunk-MTZH7AHC.js → chunk-3VIXOHMS.js} +1 -1
  29. package/dist/cli/chunks/{chunk-ISDMD6EU.js → chunk-3YUB5HER.js} +96 -96
  30. package/dist/cli/chunks/{chunk-CDKG6EI7.js → chunk-4FWTLJEP.js} +2 -2
  31. package/dist/cli/chunks/{chunk-HDSAM2RE.js → chunk-52L77RMG.js} +2 -2
  32. package/dist/cli/chunks/{chunk-MEGDYJPV.js → chunk-5D36YHS3.js} +4 -4
  33. package/dist/cli/chunks/{chunk-T6BVLVI5.js → chunk-5WOSWNDN.js} +1 -1
  34. package/dist/cli/chunks/{chunk-M2JBBZQB.js → chunk-67YV75XP.js} +2 -2
  35. package/dist/cli/chunks/{chunk-KHFNNVJA.js → chunk-6A44AOGN.js} +2 -2
  36. package/dist/cli/chunks/{chunk-IPR4QP3H.js → chunk-6CR4VQBQ.js} +2 -2
  37. package/dist/cli/chunks/{chunk-XRT2WRMS.js → chunk-6ITZZIQX.js} +2 -2
  38. package/dist/cli/chunks/{chunk-4OYFXLBK.js → chunk-6LKDHEBY.js} +2 -2
  39. package/dist/cli/chunks/{chunk-FLYOJOKN.js → chunk-6TU7FEMD.js} +1 -1
  40. package/dist/cli/chunks/{chunk-6QYNWR7U.js → chunk-6VAZAHQG.js} +2 -2
  41. package/dist/cli/chunks/{chunk-TWAWHOP7.js → chunk-73EI4C2E.js} +2 -2
  42. package/dist/cli/chunks/{chunk-5R3QL7WN.js → chunk-75QJ5HWE.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Y3MW3YBC.js → chunk-7CD7PBHY.js} +2 -2
  44. package/dist/cli/chunks/chunk-7DETTOPZ.js +14 -0
  45. package/dist/cli/chunks/{chunk-KSKEF7LZ.js → chunk-7JZJJA7U.js} +3 -3
  46. package/dist/cli/chunks/{chunk-AIHDEEJO.js → chunk-7VFY7TUR.js} +2 -2
  47. package/dist/cli/chunks/chunk-7X7JYWT4.js +27 -0
  48. package/dist/cli/chunks/chunk-AF4XKLXO.js +2 -0
  49. package/dist/cli/chunks/{chunk-6KJABXAR.js → chunk-AFEDJ3RU.js} +2 -2
  50. package/dist/cli/chunks/{chunk-5SJHQ2CO.js → chunk-AMMQOV35.js} +2 -2
  51. package/dist/cli/chunks/{chunk-6VRA2QGL.js → chunk-BHFR2EXL.js} +1 -1
  52. package/dist/cli/chunks/{chunk-ZBAKA4YB.js → chunk-BJPL6THQ.js} +1 -1
  53. package/dist/cli/chunks/{chunk-DOTK76IJ.js → chunk-BXVAVFGU.js} +2 -2
  54. package/dist/cli/chunks/{chunk-MNW6QGNJ.js → chunk-BYG36QC5.js} +2 -2
  55. package/dist/cli/chunks/chunk-C3HQL6S4.js +2 -0
  56. package/dist/cli/chunks/{chunk-PZJOPURC.js → chunk-C3Z4VVHP.js} +5 -5
  57. package/dist/cli/chunks/{chunk-OULHKEVH.js → chunk-CPC7FN52.js} +2 -2
  58. package/dist/cli/chunks/{chunk-BFP7KO7P.js → chunk-CVMNJSCB.js} +2 -2
  59. package/dist/cli/chunks/{chunk-AUXFKCQL.js → chunk-CYE2TJFV.js} +2 -2
  60. package/dist/cli/chunks/{chunk-7D777LTF.js → chunk-CZO4BJG5.js} +2 -2
  61. package/dist/cli/chunks/{chunk-VD6QRULW.js → chunk-D6OUCB2H.js} +2 -2
  62. package/dist/cli/chunks/{chunk-6UWGMOND.js → chunk-DDCIYOGT.js} +2 -2
  63. package/dist/cli/chunks/{chunk-STJCATGN.js → chunk-DKUBQQFG.js} +2 -2
  64. package/dist/cli/chunks/{chunk-M4WJKGVK.js → chunk-DLF5BOJD.js} +1 -1
  65. package/dist/cli/chunks/{chunk-DA5K5754.js → chunk-DO6EI5KB.js} +1 -1
  66. package/dist/cli/chunks/{chunk-BDESSCVR.js → chunk-DPBRWP4J.js} +3 -3
  67. package/dist/cli/chunks/{chunk-HV2J7KKQ.js → chunk-E3W6XQ57.js} +2 -2
  68. package/dist/cli/chunks/{chunk-MDWCE7YW.js → chunk-E4AZXCT5.js} +1 -1
  69. package/dist/cli/chunks/{chunk-F3SBRQC6.js → chunk-E4EYPYR3.js} +2 -2
  70. package/dist/cli/chunks/{chunk-55RWDRJD.js → chunk-EFV4ADMO.js} +4 -4
  71. package/dist/cli/chunks/{chunk-5YPYDPBJ.js → chunk-ELBZON4V.js} +2 -2
  72. package/dist/cli/chunks/{chunk-PO3IXGMQ.js → chunk-EOR2UT72.js} +2 -2
  73. package/dist/cli/chunks/{chunk-EDJ3O7RH.js → chunk-F34OAHOM.js} +2 -2
  74. package/dist/cli/chunks/{chunk-XRYF6JV7.js → chunk-FUNGTIF2.js} +2 -2
  75. package/dist/cli/chunks/{chunk-EKQ673SA.js → chunk-G3L5L6YQ.js} +1 -1
  76. package/dist/cli/chunks/{chunk-NJBGXDQ7.js → chunk-G3W6BMVJ.js} +1 -1
  77. package/dist/cli/chunks/{chunk-CIZ5JPDC.js → chunk-GTKCGPJZ.js} +3 -3
  78. package/dist/cli/chunks/{chunk-QGIU2WRL.js → chunk-HBCGYMQU.js} +1 -1
  79. package/dist/cli/chunks/{chunk-V3QLFNA2.js → chunk-HSVKZ5KI.js} +4 -4
  80. package/dist/cli/chunks/{chunk-BGE6FOLM.js → chunk-HVU64GP5.js} +2 -2
  81. package/dist/cli/chunks/chunk-HVXJC3OC.js +2 -0
  82. package/dist/cli/chunks/{chunk-MIQTXNBG.js → chunk-HYEJJJY3.js} +1 -1
  83. package/dist/cli/chunks/{chunk-CLTMDCSE.js → chunk-I2NENQ44.js} +2 -2
  84. package/dist/cli/chunks/{chunk-SGYJ4NFZ.js → chunk-I6X3EGJI.js} +1 -1
  85. package/dist/cli/chunks/{chunk-BOARZKU3.js → chunk-IGBEJ4UJ.js} +2 -2
  86. package/dist/cli/chunks/{chunk-FWGOHAAB.js → chunk-IIAR5S7Q.js} +2 -2
  87. package/dist/cli/chunks/{chunk-DHJPWQBR.js → chunk-IJHCIXJC.js} +2 -2
  88. package/dist/cli/chunks/{chunk-UEM7ZF5K.js → chunk-IUDWEOLX.js} +2 -2
  89. package/dist/cli/chunks/chunk-IUHB5GVS.js +3 -0
  90. package/dist/cli/chunks/{chunk-M5QUBZY6.js → chunk-IYTLXUBO.js} +2 -2
  91. package/dist/cli/chunks/chunk-J27F4NSB.js +2 -0
  92. package/dist/cli/chunks/{chunk-G6T45OIC.js → chunk-J5UNP6W3.js} +2 -2
  93. package/dist/cli/chunks/{chunk-3UPAMMCB.js → chunk-JES6R5KP.js} +1 -1
  94. package/dist/cli/chunks/{chunk-ZBQY5GLF.js → chunk-JROVR6YS.js} +2 -2
  95. package/dist/cli/chunks/chunk-JSZ663MU.js +2 -0
  96. package/dist/cli/chunks/{chunk-PFR4G3DJ.js → chunk-JVQBWYHW.js} +2 -2
  97. package/dist/cli/chunks/{chunk-JBNEE5UH.js → chunk-K27SU3RE.js} +2 -2
  98. package/dist/cli/chunks/{chunk-JZ3ORVZ3.js → chunk-K7NJHFLZ.js} +3 -3
  99. package/dist/cli/chunks/{chunk-3VOQRIQM.js → chunk-KEY43ANX.js} +2 -2
  100. package/dist/cli/chunks/chunk-KIP6WZGV.js +13 -0
  101. package/dist/cli/chunks/{chunk-UDHKLT4C.js → chunk-KKHYJF5U.js} +1 -1
  102. package/dist/cli/chunks/{chunk-ZNEMGX5O.js → chunk-KLTP5IDB.js} +1 -1
  103. package/dist/cli/chunks/{chunk-ONII3572.js → chunk-KO4FNAUR.js} +3 -3
  104. package/dist/cli/chunks/{chunk-TSRSV3LD.js → chunk-KYA5LARK.js} +1 -1
  105. package/dist/cli/chunks/{chunk-2JW3BCGG.js → chunk-LSUILON7.js} +1 -1
  106. package/dist/cli/chunks/chunk-LULD4JV2.js +15 -0
  107. package/dist/cli/chunks/{chunk-FRH6VAUS.js → chunk-M23ZOZVY.js} +1 -1
  108. package/dist/cli/chunks/{chunk-R5NE6B2M.js → chunk-M5AEL7IS.js} +2 -2
  109. package/dist/cli/chunks/chunk-MI5Q55DG.js +65 -0
  110. package/dist/cli/chunks/chunk-N7H767TP.js +4 -0
  111. package/dist/cli/chunks/{chunk-RJCYCLZV.js → chunk-NQI7FWCS.js} +2 -2
  112. package/dist/cli/chunks/{chunk-CXQPR5MY.js → chunk-NRE4NAVA.js} +1 -1
  113. package/dist/cli/chunks/{chunk-ODKLFVYC.js → chunk-NU7UTXMP.js} +2 -2
  114. package/dist/cli/chunks/{chunk-MVPCNSPY.js → chunk-NVYBM3R4.js} +2 -2
  115. package/dist/cli/chunks/{chunk-MVNP7GIR.js → chunk-O3JTQ7N4.js} +1 -1
  116. package/dist/cli/chunks/{chunk-6CQN24ZK.js → chunk-OEIQTWQP.js} +1 -1
  117. package/dist/cli/chunks/{chunk-U5K45TFH.js → chunk-PSPKSUF6.js} +1 -1
  118. package/dist/cli/chunks/{chunk-CDHQFHRP.js → chunk-QIRL6B3C.js} +2 -2
  119. package/dist/cli/chunks/{chunk-OSLYSG3B.js → chunk-QRCIZFNK.js} +2 -2
  120. package/dist/cli/chunks/{chunk-BOZZYWCR.js → chunk-QWUXCG2L.js} +1 -1
  121. package/dist/cli/chunks/{chunk-HIYXCDEP.js → chunk-QYOGD2VW.js} +1 -1
  122. package/dist/cli/chunks/{chunk-A4FYONNU.js → chunk-QZMUXJHZ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-3TW5W5LX.js → chunk-R6IU3EWP.js} +2 -2
  124. package/dist/cli/chunks/{chunk-3X3DJZJJ.js → chunk-R74ZKREV.js} +1 -1
  125. package/dist/cli/chunks/{chunk-HIVA55CJ.js → chunk-RD2VGOUH.js} +1 -1
  126. package/dist/cli/chunks/{chunk-TPGED2IF.js → chunk-RD6TEZ64.js} +2 -2
  127. package/dist/cli/chunks/{chunk-4MHXCAG2.js → chunk-RGGK6VZ7.js} +1 -1
  128. package/dist/cli/chunks/{chunk-UGVHCMUN.js → chunk-RIZVC4XY.js} +3 -3
  129. package/dist/cli/chunks/{chunk-R4VL6E65.js → chunk-RKOUXVZZ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-IFCLB7FJ.js → chunk-RP2ZKPYV.js} +1 -1
  131. package/dist/cli/chunks/{chunk-34WO57CW.js → chunk-SQF6HRXR.js} +1 -1
  132. package/dist/cli/chunks/{chunk-YNXS6CGV.js → chunk-SQKW3B6B.js} +1 -1
  133. package/dist/cli/chunks/{chunk-TDZ53WO2.js → chunk-SX4JLSLV.js} +2 -2
  134. package/dist/cli/chunks/{chunk-PAWXJ73E.js → chunk-TUSSPKRM.js} +1 -1
  135. package/dist/cli/chunks/{chunk-DFZCKIGY.js → chunk-TY5WC3FT.js} +3 -3
  136. package/dist/cli/chunks/{chunk-J6GNQS62.js → chunk-UDHVCKGA.js} +2 -2
  137. package/dist/cli/chunks/{chunk-CIKSHTEQ.js → chunk-UJWAWIRV.js} +4 -4
  138. package/dist/cli/chunks/{chunk-XJ7QNVI5.js → chunk-UKGXWW64.js} +3 -3
  139. package/dist/cli/chunks/{chunk-64PFWE2F.js → chunk-UMGFMKDW.js} +2 -2
  140. package/dist/cli/chunks/{chunk-DPFRKBOG.js → chunk-URVHZPWY.js} +2 -2
  141. package/dist/cli/chunks/{chunk-MCUJEZT6.js → chunk-UTBYJ4RF.js} +2 -2
  142. package/dist/cli/chunks/{chunk-HUWNIPZ5.js → chunk-VD5IO5EO.js} +1 -1
  143. package/dist/cli/chunks/{chunk-7ZIOFPL3.js → chunk-VTOVWHEM.js} +2 -2
  144. package/dist/cli/chunks/{chunk-SRKETSFF.js → chunk-W2XCZU62.js} +1 -1
  145. package/dist/cli/chunks/{chunk-CNG6GQEZ.js → chunk-WJHWH5D2.js} +2 -2
  146. package/dist/cli/chunks/{chunk-ZJ26AQA5.js → chunk-WJTSY5MC.js} +1 -1
  147. package/dist/cli/chunks/{chunk-OCWWP5PL.js → chunk-WK7B4B6Y.js} +2 -2
  148. package/dist/cli/chunks/{chunk-KPA7MZ6C.js → chunk-WLXK2KNU.js} +2 -2
  149. package/dist/cli/chunks/{chunk-ZBJ4XOOV.js → chunk-WOIGKU2N.js} +4 -4
  150. package/dist/cli/chunks/{chunk-ZZDIMOOV.js → chunk-WX6RRIGW.js} +2 -2
  151. package/dist/cli/chunks/{chunk-STM3UDNO.js → chunk-XEZIIQYJ.js} +2 -2
  152. package/dist/cli/chunks/{chunk-3QHGWY7T.js → chunk-XFPPERA2.js} +2 -2
  153. package/dist/cli/chunks/{chunk-VIHTL3U2.js → chunk-XLAUGSW7.js} +2 -2
  154. package/dist/cli/chunks/{chunk-XC7DYDSY.js → chunk-XQSIRBKT.js} +2 -2
  155. package/dist/cli/chunks/{chunk-GPLQ6DOK.js → chunk-XUR2M2WB.js} +2 -2
  156. package/dist/cli/chunks/{chunk-KCZR45PA.js → chunk-XZSMZHM2.js} +2 -2
  157. package/dist/cli/chunks/{chunk-ZNPKDCZR.js → chunk-Y5L3ES4L.js} +2 -2
  158. package/dist/cli/chunks/{chunk-W7BWUTVV.js → chunk-YDFL445W.js} +2 -2
  159. package/dist/cli/chunks/{chunk-AWWNB2T7.js → chunk-YQGPQBCX.js} +2 -2
  160. package/dist/cli/chunks/{chunk-DAEFDCJ4.js → chunk-YXP6BKGS.js} +17 -17
  161. package/dist/cli/chunks/{chunk-OBAP2TXZ.js → chunk-ZBABIZ2D.js} +2 -2
  162. package/dist/cli/chunks/{chunk-CSU5NYOX.js → chunk-ZCWERUYB.js} +4 -4
  163. package/dist/cli/chunks/{ci-464KPQNP.js → ci-RACDAJMR.js} +2 -2
  164. package/dist/cli/chunks/{ci-output-I7FX2RSO.js → ci-output-EHRSZBKG.js} +2 -2
  165. package/dist/cli/chunks/{circuit-breaker-3FW237WW.js → circuit-breaker-GBV7M5XG.js} +2 -2
  166. package/dist/cli/chunks/{claude-flow-setup-6JKMBPGU.js → claude-flow-setup-5LVJOFKP.js} +2 -2
  167. package/dist/cli/chunks/client-HUVFA5PF.js +2 -0
  168. package/dist/cli/chunks/{cline-installer-UWFHT6VY.js → cline-installer-W4NMXJSG.js} +2 -2
  169. package/dist/cli/chunks/{code-KQSUT3FS.js → code-JWXJMYXB.js} +3 -3
  170. package/dist/cli/chunks/{code-index-extractor-PABBNUSC.js → code-index-extractor-RVI2IFTM.js} +2 -2
  171. package/dist/cli/chunks/codex-installer-3BORJINH.js +14 -0
  172. package/dist/cli/chunks/{completions-7RWHAUAR.js → completions-A55NCTAO.js} +2 -2
  173. package/dist/cli/chunks/{complexity-analyzer-XPOAF33E.js → complexity-analyzer-JCXHGGLY.js} +2 -2
  174. package/dist/cli/chunks/{continuedev-installer-V4F2FIZP.js → continuedev-installer-PUVFMGYW.js} +2 -2
  175. package/dist/cli/chunks/{copilot-installer-JMICURQB.js → copilot-installer-4DCMYWHB.js} +2 -2
  176. package/dist/cli/chunks/core-handlers-UEXO3VAA.js +2 -0
  177. package/dist/cli/chunks/{cost-tracker-5OFHEYFJ.js → cost-tracker-5TV2GGKY.js} +2 -2
  178. package/dist/cli/chunks/{coverage-QKN57JDS.js → coverage-NNWM7TX3.js} +3 -3
  179. package/dist/cli/chunks/cross-domain-router-ODU5IZD6.js +2 -0
  180. package/dist/cli/chunks/{cursor-installer-GBJ7YXSM.js → cursor-installer-4NCHGJGK.js} +2 -2
  181. package/dist/cli/chunks/{daemon-IAVSO6HK.js → daemon-QIKCXKWO.js} +4 -4
  182. package/dist/cli/chunks/{daemon-GKP7CMEK.js → daemon-T4JO4IXP.js} +3 -3
  183. package/dist/cli/chunks/{dag-attention-scheduler-S225TCI7.js → dag-attention-scheduler-RPAAIDAD.js} +2 -2
  184. package/dist/cli/chunks/{detect-IUYH422U.js → detect-SBEEVDSN.js} +2 -2
  185. package/dist/cli/chunks/{dist-node-2YRE6A7C.js → dist-node-ZHI6NCSU.js} +2 -2
  186. package/dist/cli/chunks/{domain-handler-PL2TZC6H.js → domain-handler-LBC3GJ7Z.js} +2 -2
  187. package/dist/cli/chunks/{domain-plugins-HCGLXKIT.js → domain-plugins-H6IZ5USZ.js} +2 -2
  188. package/dist/cli/chunks/{domain-transfer-KQJRUPXA.js → domain-transfer-JZA5TMW3.js} +2 -2
  189. package/dist/cli/chunks/dream-HE3OX42F.js +2 -0
  190. package/dist/cli/chunks/embed-and-insert-pattern-AHTR7CRU.js +3 -0
  191. package/dist/cli/chunks/{eval-WCK7KNFN.js → eval-DZU2KISM.js} +2 -2
  192. package/dist/cli/chunks/{experience-capture-middleware-2MSQWSAR.js → experience-capture-middleware-5IQCWKSL.js} +4 -4
  193. package/dist/cli/chunks/{fast-paths-VYOSIBKF.js → fast-paths-2KLDUWCY.js} +2 -2
  194. package/dist/cli/chunks/{feature-flags-UJRHFBRX.js → feature-flags-7AC3XDZA.js} +2 -2
  195. package/dist/cli/chunks/{feature-flags-WCFUKHNQ.js → feature-flags-N6UAEZY4.js} +2 -2
  196. package/dist/cli/chunks/{file-discovery-JDGL4ZWS.js → file-discovery-5SDIW4V2.js} +2 -2
  197. package/dist/cli/chunks/{fleet-ROXVMZ2F.js → fleet-ZIQCAZ2Y.js} +3 -3
  198. package/dist/cli/chunks/{gnn-wrapper-NIO4ZCO3.js → gnn-wrapper-DUMBZJEV.js} +2 -2
  199. package/dist/cli/chunks/{heartbeat-handler-PI42WD3C.js → heartbeat-handler-6HVM6ZMR.js} +4 -4
  200. package/dist/cli/chunks/heartbeat-scheduler-QUIFGGLX.js +2 -0
  201. package/dist/cli/chunks/hnsw-adapter-42KB37KP.js +2 -0
  202. package/dist/cli/chunks/hnsw-index-T2PGO77J.js +2 -0
  203. package/dist/cli/chunks/{hnsw-legacy-bridge-YLC7SPK2.js → hnsw-legacy-bridge-5DRL5FLX.js} +2 -2
  204. package/dist/cli/chunks/{hnswlib-node-LG6OS3B7.js → hnswlib-node-GW67GTCL.js} +2 -2
  205. package/dist/cli/chunks/{hooks-WVALP5GX.js → hooks-QHH6FVO4.js} +10 -10
  206. package/dist/cli/chunks/hybrid-backend-FRNWYRKH.js +2 -0
  207. package/dist/cli/chunks/{hypergraph-engine-GJEMW3EG.js → hypergraph-engine-7XDCCVG2.js} +2 -2
  208. package/dist/cli/chunks/{hypergraph-handler-BLF6LXEV.js → hypergraph-handler-QHF7NOU5.js} +3 -3
  209. package/dist/cli/chunks/impact-analyzer-A5QYOYBR.js +2 -0
  210. package/dist/cli/chunks/{init-handler-K25RWRYY.js → init-handler-5UIVOM7K.js} +6 -6
  211. package/dist/cli/chunks/init-wizard-XBU674YH.js +2 -0
  212. package/dist/cli/chunks/kernel-DV5MTNZD.js +2 -0
  213. package/dist/cli/chunks/{kilocode-installer-BXN6WZ7G.js → kilocode-installer-TGGV6K5Q.js} +2 -2
  214. package/dist/cli/chunks/{kiro-installer-PM362DLN.js → kiro-installer-4XYBHZWW.js} +2 -2
  215. package/dist/cli/chunks/knowledge-graph-4ACGVJQK.js +2 -0
  216. package/dist/cli/chunks/{learning-CPERDDRG.js → learning-STE5W6BS.js} +3 -3
  217. package/dist/cli/chunks/{llm-router-GOAV5FPI.js → llm-router-NKF7J3RI.js} +4 -4
  218. package/dist/cli/chunks/llm-router-service-PSMASERT.js +2 -0
  219. package/dist/cli/chunks/{load-2BG6SHAK.js → load-B2T77UJQ.js} +2 -2
  220. package/dist/cli/chunks/load-test-MRUO2VPF.js +2 -0
  221. package/dist/cli/chunks/mcp-JGSFCEMH.js +2 -0
  222. package/dist/cli/chunks/{memory-4NHBYT6S.js → memory-WRFZKG56.js} +6 -6
  223. package/dist/cli/chunks/memory-backend-2MPGI6JW.js +2 -0
  224. package/dist/cli/chunks/memory-handlers-XT4HMITB.js +2 -0
  225. package/dist/cli/chunks/{multi-model-executor-KCWSGCDT.js → multi-model-executor-26Q5BSVG.js} +2 -2
  226. package/dist/cli/chunks/{opencode-installer-ATZLLK74.js → opencode-installer-J36EMQU7.js} +2 -2
  227. package/dist/cli/chunks/{orchestrator-RKB7XJRG.js → orchestrator-D5IFV65I.js} +18 -18
  228. package/dist/cli/chunks/pattern-null-store-TGWUL237.js +2 -0
  229. package/dist/cli/chunks/{pattern-usage-recorder-7VE4XDAI.js → pattern-usage-recorder-BVMTWI3E.js} +2 -2
  230. package/dist/cli/chunks/{pipeline-LQZSNDD2.js → pipeline-OWAHDUAQ.js} +2 -2
  231. package/dist/cli/chunks/platform-ANGBFWBV.js +2 -0
  232. package/dist/cli/chunks/{plugin-EJ6K2MGU.js → plugin-OO7ON2YW.js} +2 -2
  233. package/dist/cli/chunks/{prime-radiant-advanced-wasm-OIHTKJMN.js → prime-radiant-advanced-wasm-HFG3BXWU.js} +2 -2
  234. package/dist/cli/chunks/project-root-LNOYVTYY.js +2 -0
  235. package/dist/cli/chunks/protocol-executor-GEVH5KD6.js +2 -0
  236. package/dist/cli/chunks/{protocol-handler-NRBROAU7.js → protocol-handler-CE3Q6LY4.js} +2 -2
  237. package/dist/cli/chunks/{prove-EJOGEGD3.js → prove-7XPN53PY.js} +2 -2
  238. package/dist/cli/chunks/qe-reasoning-bank-DJ2JL6QB.js +2 -0
  239. package/dist/cli/chunks/{quality-E55UC73D.js → quality-TT23JRFX.js} +2 -2
  240. package/dist/cli/chunks/{quality-gate-OIQATNT3.js → quality-gate-PPPRP255.js} +3 -3
  241. package/dist/cli/chunks/queen-coordinator-F7E3AS26.js +2 -0
  242. package/dist/cli/chunks/real-embeddings-EYNZIFJE.js +2 -0
  243. package/dist/cli/chunks/{ref-validation-OPO6J7OL.js → ref-validation-QQR64ZXD.js} +2 -2
  244. package/dist/cli/chunks/{roocode-installer-ODY5KRWU.js → roocode-installer-UIGS7ZJD.js} +2 -2
  245. package/dist/cli/chunks/router-OZH3QSAU.js +2 -0
  246. package/dist/cli/chunks/routing-feedback-J2E3ADZB.js +2 -0
  247. package/dist/cli/chunks/{routing-handler-KQM6VWLC.js → routing-handler-6AENUIRG.js} +2 -2
  248. package/dist/cli/chunks/{ruvector-commands-U2GVV6PF.js → ruvector-commands-5AWMEV34.js} +2 -2
  249. package/dist/cli/chunks/rvf-dual-writer-HK525Y5Y.js +2 -0
  250. package/dist/cli/chunks/rvf-migration-adapter-Q7FB3BKR.js +2 -0
  251. package/dist/cli/chunks/rvf-migration-coordinator-NWRJ7C22.js +2 -0
  252. package/dist/cli/chunks/rvf-native-adapter-5ZRCGUI6.js +2 -0
  253. package/dist/cli/chunks/{rvf-store-integrity-KMIHD3LP.js → rvf-store-integrity-ISKRP563.js} +2 -2
  254. package/dist/cli/chunks/safe-db-3OYEPVEH.js +2 -0
  255. package/dist/cli/chunks/schedule-AG4C2EIQ.js +2 -0
  256. package/dist/cli/chunks/scheduler-SQS2CZFZ.js +2 -0
  257. package/dist/cli/chunks/{security-P5NM353C.js → security-325A7FMB.js} +3 -3
  258. package/dist/cli/chunks/{shared-rvf-adapter-LVIUOO4S.js → shared-rvf-adapter-NFL6QSZ6.js} +2 -2
  259. package/dist/cli/chunks/{shared-rvf-dual-writer-2CSG7C4W.js → shared-rvf-dual-writer-THFDYS2Z.js} +2 -2
  260. package/dist/cli/chunks/sqlite-persistence-MAKDFSHC.js +2 -0
  261. package/dist/cli/chunks/standalone-memory-UD4MJ6GZ.js +2 -0
  262. package/dist/cli/chunks/{status-handler-6TU6O37R.js → status-handler-CPFTN4XL.js} +2 -2
  263. package/dist/cli/chunks/{structural-health-KBIJSTXJ.js → structural-health-2MG2IVBL.js} +2 -2
  264. package/dist/cli/chunks/{sync-LNHI5SB7.js → sync-EE4VVKOW.js} +2 -2
  265. package/dist/cli/chunks/{sync-UHOX6RJW.js → sync-MBTW5XBF.js} +2 -2
  266. package/dist/cli/chunks/task-handler-7H5OYJG4.js +54 -0
  267. package/dist/cli/chunks/task-handlers-NH4GJHCJ.js +9 -0
  268. package/dist/cli/chunks/{test-DHAAI3DU.js → test-MPHGT4T6.js} +4 -4
  269. package/dist/cli/chunks/{test-scheduling-XDBZ3QC2.js → test-scheduling-CHQ4ZLLJ.js} +3 -3
  270. package/dist/cli/chunks/token-bootstrap-SSDCYEKK.js +2 -0
  271. package/dist/cli/chunks/{token-usage-Q2YG5YQN.js → token-usage-EBXUJNRB.js} +2 -2
  272. package/dist/cli/chunks/{transformers-F5UQTQCY.js → transformers-ZEKS2OJZ.js} +2 -2
  273. package/dist/cli/chunks/{tree-sitter-wasm-parser-DEGOHS6F.js → tree-sitter-wasm-parser-J6ZMAK37.js} +2 -2
  274. package/dist/cli/chunks/{types-JQ7EQO5Q.js → types-KYAA5VLV.js} +2 -2
  275. package/dist/cli/chunks/unified-memory-DDWMC435.js +2 -0
  276. package/dist/cli/chunks/unified-memory-hnsw-4JA7SGBK.js +2 -0
  277. package/dist/cli/chunks/unified-persistence-F6OSNTXY.js +2 -0
  278. package/dist/cli/chunks/{upgrade-TJRVGHGD.js → upgrade-UJBJ5AYM.js} +2 -2
  279. package/dist/cli/chunks/{validate-BWPCVHBN.js → validate-RUV6YMWS.js} +2 -2
  280. package/dist/cli/chunks/{validate-swarm-QVVKCQLP.js → validate-swarm-IVEVMGVM.js} +2 -2
  281. package/dist/cli/chunks/{vibium-ZFATIWHO.js → vibium-HOGMFJ2Z.js} +2 -2
  282. package/dist/cli/chunks/visual-security-25SMBIYT.js +2 -0
  283. package/dist/cli/chunks/{web-tree-sitter-KPLY7ONR.js → web-tree-sitter-AVWA6HKE.js} +2 -2
  284. package/dist/cli/chunks/{windsurf-installer-H7XM7ISA.js → windsurf-installer-DAH7HI2W.js} +2 -2
  285. package/dist/cli/chunks/{witness-chain-RRN6NDCH.js → witness-chain-PJOQPFUX.js} +2 -2
  286. package/dist/cli/chunks/witness-chain-ZW6KKUZU.js +2 -0
  287. package/dist/cli/chunks/{witness-key-manager-DFRL42GE.js → witness-key-manager-JSTBMG43.js} +2 -2
  288. package/dist/cli/chunks/{workflow-2ZQO6WYI.js → workflow-TWOIA6LZ.js} +4 -4
  289. package/dist/cli/chunks/workflow-orchestrator-UKSIDM7Q.js +2 -0
  290. package/dist/cli/chunks/{wrappers-SUS6XEJD.js → wrappers-UR7BLXKV.js} +2 -2
  291. package/dist/cli/commands/mcp.js +6 -0
  292. package/dist/cli/commands/memory.d.ts +1 -1
  293. package/dist/cli/commands/memory.js +8 -8
  294. package/dist/cli/commands/platform.js +15 -2
  295. package/dist/cli/commands/upgrade.d.ts +3 -3
  296. package/dist/cli/commands/upgrade.js +3 -3
  297. package/dist/cli/handlers/init-handler.d.ts +10 -0
  298. package/dist/cli/handlers/task-handler.js +24 -3
  299. package/dist/cli/helpers/standalone-memory.d.ts +12 -0
  300. package/dist/cli/helpers/standalone-memory.js +46 -0
  301. package/dist/cli/index.js +37 -41
  302. package/dist/cli/log-gate.d.ts +66 -0
  303. package/dist/cli/log-gate.js +170 -0
  304. package/dist/init/codex-installer.js +18 -6
  305. package/dist/init/orchestrator.js +1 -0
  306. package/dist/init/phases/09-assets.d.ts +10 -0
  307. package/dist/init/phases/09-assets.js +3 -0
  308. package/dist/init/token-bootstrap.d.ts +1 -1
  309. package/dist/init/token-bootstrap.js +12 -2
  310. package/dist/init/types.d.ts +10 -0
  311. package/dist/integrations/ruvector/brain-exporter.js +17 -0
  312. package/dist/integrations/ruvector/brain-import-audit.d.ts +20 -0
  313. package/dist/integrations/ruvector/brain-import-audit.js +22 -0
  314. package/dist/integrations/ruvector/brain-rvf-exporter.js +16 -0
  315. package/dist/integrations/ruvector/brain-shared.js +1 -1
  316. package/dist/integrations/ruvector/rvf-dual-writer.js +6 -1
  317. package/dist/kernel/hybrid-backend.d.ts +6 -0
  318. package/dist/kernel/hybrid-backend.js +18 -0
  319. package/dist/kernel/kernel.js +9 -14
  320. package/dist/kernel/project-root.d.ts +1 -1
  321. package/dist/kernel/project-root.js +24 -3
  322. package/dist/learning/embedder-identity-store.js +4 -3
  323. package/dist/learning/pattern-store.js +5 -1
  324. package/dist/learning/real-embeddings.d.ts +8 -0
  325. package/dist/learning/real-embeddings.js +16 -0
  326. package/dist/learning/rvf-pattern-store.js +10 -3
  327. package/dist/mcp/bundle.js +442 -442
  328. package/dist/mcp/entry.js +2 -0
  329. package/dist/mcp/handlers/memory-handlers.d.ts +6 -1
  330. package/dist/mcp/handlers/memory-handlers.js +44 -22
  331. package/dist/mcp/handlers/task-handlers.js +14 -1
  332. package/dist/mcp/protocol-server.js +1 -0
  333. package/dist/mcp/services/session-store.js +5 -1
  334. package/dist/plugins/cache.d.ts +2 -0
  335. package/dist/plugins/cache.js +15 -2
  336. package/dist/plugins/lifecycle.js +15 -2
  337. package/dist/plugins/manifest.js +7 -5
  338. package/dist/plugins/resolver.d.ts +13 -22
  339. package/dist/plugins/resolver.js +169 -61
  340. package/dist/plugins/version-policy.d.ts +13 -0
  341. package/dist/plugins/version-policy.js +18 -0
  342. package/dist/shared/types/index.d.ts +6 -0
  343. package/dist/shared/types/index.js +8 -0
  344. package/package.json +2 -1
  345. package/dist/cli/chunks/adapter-TNNNJRDG.js +0 -2
  346. package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +0 -2
  347. package/dist/cli/chunks/base-KWZHOPSH.js +0 -2
  348. package/dist/cli/chunks/brain-handler-ET6YAP4B.js +0 -90
  349. package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +0 -2
  350. package/dist/cli/chunks/chunk-33YYYWBQ.js +0 -4
  351. package/dist/cli/chunks/chunk-5Z6XZV7K.js +0 -65
  352. package/dist/cli/chunks/chunk-6J62K3SW.js +0 -2
  353. package/dist/cli/chunks/chunk-6TPKK7LD.js +0 -15
  354. package/dist/cli/chunks/chunk-DEYLEDJN.js +0 -27
  355. package/dist/cli/chunks/chunk-KGT36Z42.js +0 -14
  356. package/dist/cli/chunks/chunk-NA7B2QYB.js +0 -2
  357. package/dist/cli/chunks/chunk-NDPFGIMJ.js +0 -13
  358. package/dist/cli/chunks/chunk-PEPFCPES.js +0 -2
  359. package/dist/cli/chunks/chunk-TT23RRB7.js +0 -2
  360. package/dist/cli/chunks/chunk-XWMZ6D6N.js +0 -2
  361. package/dist/cli/chunks/client-7E4LM2WW.js +0 -2
  362. package/dist/cli/chunks/codex-installer-CQ24DTP5.js +0 -14
  363. package/dist/cli/chunks/core-handlers-IFG3757P.js +0 -2
  364. package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +0 -2
  365. package/dist/cli/chunks/dream-NFSCSLY7.js +0 -2
  366. package/dist/cli/chunks/embed-and-insert-pattern-ZPAG7235.js +0 -3
  367. package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +0 -2
  368. package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +0 -2
  369. package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +0 -2
  370. package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +0 -2
  371. package/dist/cli/chunks/init-wizard-JUIPBMHG.js +0 -2
  372. package/dist/cli/chunks/kernel-5BOZQ754.js +0 -2
  373. package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +0 -2
  374. package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +0 -2
  375. package/dist/cli/chunks/load-test-BP2CPLIV.js +0 -2
  376. package/dist/cli/chunks/mcp-5TTB37DC.js +0 -2
  377. package/dist/cli/chunks/memory-backend-4PYQBPRM.js +0 -2
  378. package/dist/cli/chunks/memory-handlers-2B27NITS.js +0 -2
  379. package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +0 -2
  380. package/dist/cli/chunks/platform-OD5H5U6G.js +0 -2
  381. package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +0 -2
  382. package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +0 -2
  383. package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +0 -2
  384. package/dist/cli/chunks/real-embeddings-FPFFNOSZ.js +0 -2
  385. package/dist/cli/chunks/router-MDHITQ2V.js +0 -2
  386. package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +0 -2
  387. package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +0 -2
  388. package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +0 -2
  389. package/dist/cli/chunks/rvf-migration-coordinator-V2GHCJKN.js +0 -2
  390. package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +0 -2
  391. package/dist/cli/chunks/safe-db-FIRHSXVF.js +0 -2
  392. package/dist/cli/chunks/schedule-RVXFB4HK.js +0 -2
  393. package/dist/cli/chunks/scheduler-IKKAMAOO.js +0 -2
  394. package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +0 -2
  395. package/dist/cli/chunks/task-handler-AVDHMLGI.js +0 -49
  396. package/dist/cli/chunks/task-handlers-KYK4VTRA.js +0 -9
  397. package/dist/cli/chunks/token-bootstrap-GUTTLPZX.js +0 -2
  398. package/dist/cli/chunks/unified-memory-CXHLHB5I.js +0 -2
  399. package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +0 -2
  400. package/dist/cli/chunks/unified-persistence-6CPF65WI.js +0 -2
  401. package/dist/cli/chunks/visual-security-GNPHME5H.js +0 -2
  402. package/dist/cli/chunks/witness-chain-VT4UHHBR.js +0 -2
  403. package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +0 -2
package/dist/mcp/entry.js CHANGED
@@ -21,6 +21,7 @@ import { initializeExperienceCapture, stopCleanupTimer } from '../learning/exper
21
21
  import { createInfraHealingOrchestratorSync, ShellCommandRunner } from '../strange-loop/infra-healing/index.js';
22
22
  import { setInfraHealingOrchestrator, handleFleetInit } from './handlers/index.js';
23
23
  import { parallelPrefetch } from '../boot/parallel-prefetch.js';
24
+ import { initFeatureFlagsFromEnv } from '../integrations/ruvector/feature-flags.js';
24
25
  import { readFileSync } from 'node:fs';
25
26
  import { resolve, dirname } from 'node:path';
26
27
  import { fileURLToPath } from 'node:url';
@@ -29,6 +30,7 @@ const pkg = require('../../package.json');
29
30
  let server = null;
30
31
  let httpServer = null;
31
32
  async function main() {
33
+ initFeatureFlagsFromEnv();
32
34
  // Output startup message BEFORE suppressing stderr (Claude Code health check needs this)
33
35
  const version = pkg.version;
34
36
  process.stderr.write(`[agentic-qe-v3] MCP server starting v${version}\n`);
@@ -6,7 +6,12 @@
6
6
  * and ComplianceReporter for violation tracking.
7
7
  */
8
8
  import { ToolResult, MemoryStoreParams, MemoryStoreResult, MemoryRetrieveParams, MemoryRetrieveResult, MemoryQueryParams } from '../types';
9
- import type { VectorSearchProvenance } from '../../kernel/interfaces.js';
9
+ import type { MemoryBackend, VectorSearchProvenance } from '../../kernel/interfaces.js';
10
+ /**
11
+ * Register (or clear) a standalone memory backend for the memory handlers.
12
+ * An initialized fleet always takes precedence over it.
13
+ */
14
+ export declare function setStandaloneMemoryBackend(backend: MemoryBackend | null): void;
10
15
  export declare function handleMemoryStore(params: MemoryStoreParams): Promise<ToolResult<MemoryStoreResult>>;
11
16
  export declare function handleMemoryRetrieve(params: MemoryRetrieveParams): Promise<ToolResult<MemoryRetrieveResult>>;
12
17
  interface MemoryQueryResult {
@@ -12,16 +12,38 @@ import { memoryWriteGateIntegration, createMemoryPattern, isMemoryWriteGateEnabl
12
12
  // Real transformer embeddings for semantic search (384-dim, matches ExperienceReplay)
13
13
  import { computeRealEmbedding } from '../../learning/real-embeddings.js';
14
14
  // ============================================================================
15
+ // Memory Backend Resolution
16
+ // ============================================================================
17
+ /**
18
+ * Backend used when no fleet is initialized. The CLI memory subcommands set
19
+ * this so they can run against .agentic-qe/memory.db without booting the
20
+ * kernel, Queen Coordinator, and every domain coordinator.
21
+ */
22
+ let standaloneMemory = null;
23
+ /**
24
+ * Register (or clear) a standalone memory backend for the memory handlers.
25
+ * An initialized fleet always takes precedence over it.
26
+ */
27
+ export function setStandaloneMemoryBackend(backend) {
28
+ standaloneMemory = backend;
29
+ }
30
+ function getMemoryBackend() {
31
+ if (isFleetInitialized()) {
32
+ return getFleetState().kernel.memory;
33
+ }
34
+ return standaloneMemory;
35
+ }
36
+ // ============================================================================
15
37
  // Memory Store Handler
16
38
  // ============================================================================
17
39
  export async function handleMemoryStore(params) {
18
- if (!isFleetInitialized()) {
40
+ const memory = getMemoryBackend();
41
+ if (!memory) {
19
42
  return {
20
43
  success: false,
21
44
  error: 'Fleet not initialized. Call fleet_init first.',
22
45
  };
23
46
  }
24
- const { kernel } = getFleetState();
25
47
  try {
26
48
  const namespace = params.namespace || 'default';
27
49
  // Build namespaced key ourselves since get/delete interface doesn't support namespace
@@ -57,7 +79,7 @@ export async function handleMemoryStore(params) {
57
79
  console.warn(`[MemoryHandler] Write allowed with warning: ${decision.reason}`);
58
80
  }
59
81
  }
60
- await kernel.memory.set(fullKey, params.value, {
82
+ await memory.set(fullKey, params.value, {
61
83
  ttl: params.ttl,
62
84
  });
63
85
  // Store vector embedding for semantic search (HNSW)
@@ -66,7 +88,7 @@ export async function handleMemoryStore(params) {
66
88
  try {
67
89
  const textForEmbedding = `${params.key} ${JSON.stringify(params.value)}`;
68
90
  const embedding = await computeRealEmbedding(textForEmbedding);
69
- await kernel.memory.storeVector(fullKey, embedding, {
91
+ await memory.storeVector(fullKey, embedding, {
70
92
  key: params.key,
71
93
  namespace,
72
94
  storedAt: Date.now(),
@@ -117,17 +139,17 @@ export async function handleMemoryStore(params) {
117
139
  // Memory Retrieve Handler
118
140
  // ============================================================================
119
141
  export async function handleMemoryRetrieve(params) {
120
- if (!isFleetInitialized()) {
142
+ const memory = getMemoryBackend();
143
+ if (!memory) {
121
144
  return {
122
145
  success: false,
123
146
  error: 'Fleet not initialized. Call fleet_init first.',
124
147
  };
125
148
  }
126
- const { kernel } = getFleetState();
127
149
  try {
128
150
  const namespace = params.namespace || 'default';
129
151
  const fullKey = `${namespace}:${params.key}`;
130
- const value = await kernel.memory.get(fullKey);
152
+ const value = await memory.get(fullKey);
131
153
  if (value === undefined) {
132
154
  return {
133
155
  success: true,
@@ -168,13 +190,13 @@ function isNaturalLanguageQuery(pattern) {
168
190
  return pattern.includes(' ') && !pattern.includes('*') && !pattern.includes('?');
169
191
  }
170
192
  export async function handleMemoryQuery(params) {
171
- if (!isFleetInitialized()) {
193
+ const memory = getMemoryBackend();
194
+ if (!memory) {
172
195
  return {
173
196
  success: false,
174
197
  error: 'Fleet not initialized. Call fleet_init first.',
175
198
  };
176
199
  }
177
- const { kernel } = getFleetState();
178
200
  try {
179
201
  const namespace = params.namespace || 'default';
180
202
  const limit = params.limit || 100;
@@ -188,7 +210,7 @@ export async function handleMemoryQuery(params) {
188
210
  // Generate real 384-dim transformer embedding for accurate cosine similarity search
189
211
  const embedding = await computeRealEmbedding(params.pattern);
190
212
  const keyPrefix = namespace !== 'default' ? `${namespace}:` : undefined;
191
- const filtered = await kernel.memory.vectorSearch(embedding, limit + offset, keyPrefix);
213
+ const filtered = await memory.vectorSearch(embedding, limit + offset, keyPrefix);
192
214
  const paginatedResults = filtered.slice(offset, offset + limit);
193
215
  const entries = paginatedResults.map(r => {
194
216
  const parts = r.key.split(':');
@@ -205,7 +227,7 @@ export async function handleMemoryQuery(params) {
205
227
  total: filtered.length,
206
228
  hasMore: offset + limit < filtered.length,
207
229
  searchType: 'semantic',
208
- searchProvenance: kernel.memory.getVectorSearchProvenance?.(),
230
+ searchProvenance: memory.getVectorSearchProvenance?.(),
209
231
  },
210
232
  };
211
233
  }
@@ -218,7 +240,7 @@ export async function handleMemoryQuery(params) {
218
240
  const pattern = params.pattern
219
241
  ? `${namespace}:${params.pattern}`
220
242
  : `${namespace}:*`;
221
- const keys = await kernel.memory.search(pattern, limit + offset);
243
+ const keys = await memory.search(pattern, limit + offset);
222
244
  // Apply pagination
223
245
  const paginatedKeys = keys.slice(offset, offset + limit);
224
246
  const entries = paginatedKeys.map((key) => {
@@ -246,17 +268,17 @@ export async function handleMemoryQuery(params) {
246
268
  }
247
269
  }
248
270
  export async function handleMemoryDelete(params) {
249
- if (!isFleetInitialized()) {
271
+ const memory = getMemoryBackend();
272
+ if (!memory) {
250
273
  return {
251
274
  success: false,
252
275
  error: 'Fleet not initialized. Call fleet_init first.',
253
276
  };
254
277
  }
255
- const { kernel } = getFleetState();
256
278
  try {
257
279
  const namespace = params.namespace || 'default';
258
280
  const fullKey = `${namespace}:${params.key}`;
259
- const deleted = await kernel.memory.delete(fullKey);
281
+ const deleted = await memory.delete(fullKey);
260
282
  return {
261
283
  success: true,
262
284
  data: {
@@ -274,21 +296,21 @@ export async function handleMemoryDelete(params) {
274
296
  }
275
297
  }
276
298
  export async function handleMemoryUsage() {
277
- if (!isFleetInitialized()) {
299
+ const memory = getMemoryBackend();
300
+ if (!memory) {
278
301
  return {
279
302
  success: false,
280
303
  error: 'Fleet not initialized. Call fleet_init first.',
281
304
  };
282
305
  }
283
- const { kernel } = getFleetState();
284
306
  try {
285
307
  // Estimate stats by searching for all keys
286
- const allKeys = await kernel.memory.search('*', 10000);
308
+ const allKeys = await memory.search('*', 10000);
287
309
  // Issue N4: Query real vector count from SQLite instead of hardcoding 0
288
310
  let vectorCount = 0;
289
311
  let namespaceCount = 1;
290
312
  try {
291
- const backend = kernel.memory;
313
+ const backend = memory;
292
314
  if (backend.getVectorStats) {
293
315
  const stats = await backend.getVectorStats();
294
316
  vectorCount = stats?.vectorCount ?? 0;
@@ -322,13 +344,13 @@ export async function handleMemoryUsage() {
322
344
  }
323
345
  }
324
346
  export async function handleMemoryShare(params) {
325
- if (!isFleetInitialized()) {
347
+ const memory = getMemoryBackend();
348
+ if (!memory) {
326
349
  return {
327
350
  success: false,
328
351
  error: 'Fleet not initialized. Call fleet_init first.',
329
352
  };
330
353
  }
331
- const { kernel } = getFleetState();
332
354
  try {
333
355
  // Store shared knowledge for each target agent
334
356
  const sharedKey = `shared:${params.knowledgeDomain}:${Date.now()}`;
@@ -368,7 +390,7 @@ export async function handleMemoryShare(params) {
368
390
  }
369
391
  }
370
392
  }
371
- await kernel.memory.set(sharedKey, sharedContent, {
393
+ await memory.set(sharedKey, sharedContent, {
372
394
  namespace: 'agent-knowledge',
373
395
  });
374
396
  // ADR-058: Register pattern after successful share
@@ -10,6 +10,7 @@ import { getTaskRouter, } from '../services/task-router.js';
10
10
  import { getReasoningBankService, startTaskTrajectory, endTaskTrajectory, } from '../services/reasoning-bank-service.js';
11
11
  import { scoreUnjudgedTrajectories } from './trajectory-judge.js';
12
12
  import { toErrorMessage } from '../../shared/error-utils.js';
13
+ import { ALL_DOMAINS, isDomainName } from '../../shared/types/index.js';
13
14
  // ============================================================================
14
15
  // Task Type to Workflow Mapping (Issue #206)
15
16
  // Maps TaskTypes to their associated workflow IDs for auto-execution
@@ -30,12 +31,24 @@ export async function handleTaskSubmit(params) {
30
31
  error: 'Fleet not initialized. Call fleet_init first.',
31
32
  };
32
33
  }
34
+ // #734 D: reject unknown domains instead of accepting work no domain runs.
35
+ // Parity with `aqe task submit --domain`.
36
+ const targetDomains = params.targetDomains ?? [];
37
+ if (!Array.isArray(targetDomains) || !targetDomains.every(isDomainName)) {
38
+ const unknown = Array.isArray(targetDomains)
39
+ ? targetDomains.filter((d) => !isDomainName(d)).map(String)
40
+ : [String(targetDomains)];
41
+ return {
42
+ success: false,
43
+ error: `Unknown domain: ${unknown.join(', ')}. Valid domains: ${ALL_DOMAINS.join(', ')}`,
44
+ };
45
+ }
33
46
  const { queen } = getFleetState();
34
47
  try {
35
48
  const result = await queen.submitTask({
36
49
  type: params.type,
37
50
  priority: params.priority || 'p1',
38
- targetDomains: params.targetDomains || [],
51
+ targetDomains,
39
52
  payload: params.payload || {},
40
53
  timeout: params.timeout || 300000,
41
54
  });
@@ -649,6 +649,7 @@ export class MCPProtocolServer {
649
649
  parameters: [
650
650
  { name: 'type', type: 'string', description: 'Task type', required: true },
651
651
  { name: 'priority', type: 'string', description: 'Task priority', enum: ['p0', 'p1', 'p2', 'p3'], default: 'p1' },
652
+ { name: 'targetDomains', type: 'array', description: 'Target domains (e.g. ["coverage-analysis"]); unknown domains are rejected' },
652
653
  { name: 'payload', type: 'object', description: 'Task payload data' },
653
654
  ],
654
655
  },
@@ -11,6 +11,7 @@
11
11
  import { randomUUID } from 'crypto';
12
12
  import * as fs from 'fs';
13
13
  import * as path from 'path';
14
+ import { findProjectRoot } from '../../kernel/project-root.js';
14
15
  // ============================================================================
15
16
  // Session Store
16
17
  // ============================================================================
@@ -33,7 +34,10 @@ export class SessionStore {
33
34
  // write .agentic-qe/sessions/*.jsonl to disk.
34
35
  persistDisabled = process.env.AQE_MEMORY_BACKEND === 'memory';
35
36
  constructor(sessionDir) {
36
- this.sessionDir = sessionDir ?? DEFAULT_SESSION_DIR;
37
+ // #735: a cwd-relative default created `<subdir>/.agentic-qe/sessions`
38
+ // on the first MCP tool call, which later runs then adopted as the
39
+ // nearest project store. Anchor the default at the project root.
40
+ this.sessionDir = sessionDir ?? path.join(findProjectRoot(), DEFAULT_SESSION_DIR);
37
41
  }
38
42
  /**
39
43
  * Start a new session. Returns the sessionId (UUID).
@@ -37,6 +37,8 @@ export declare class PluginCache {
37
37
  listVersions(name: string): CachedPlugin[];
38
38
  /** List all cached plugins (latest version of each). */
39
39
  listAll(): CachedPlugin[];
40
+ /** Every cached candidate, for constraint-aware dependency resolution. */
41
+ listCandidates(): CachedPlugin[];
40
42
  private versionDir;
41
43
  private pruneOldVersions;
42
44
  private copyDir;
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import * as fs from 'fs';
9
9
  import * as path from 'path';
10
+ import { validVersion, newestVersionFirst } from './version-policy.js';
10
11
  // ============================================================================
11
12
  // PluginCache
12
13
  // ============================================================================
@@ -79,6 +80,12 @@ export class PluginCache {
79
80
  try {
80
81
  const raw = fs.readFileSync(manifestPath, 'utf-8');
81
82
  const manifest = JSON.parse(raw);
83
+ if (!validVersion(manifest.version)) {
84
+ // Older releases admitted versions SemVer now rejects (e.g. 01.0.0);
85
+ // say why the plugin disappeared instead of dropping it silently.
86
+ console.warn(`[PluginCache] Skipping cached plugin ${name}@${entry}: invalid version ${JSON.stringify(manifest.version)}`);
87
+ continue;
88
+ }
82
89
  const stat = fs.statSync(fullPath);
83
90
  results.push({
84
91
  manifest,
@@ -102,13 +109,19 @@ export class PluginCache {
102
109
  for (const name of entries) {
103
110
  const versions = this.listVersions(name);
104
111
  if (versions.length > 0) {
105
- // Return the latest version (lexicographic semver sort)
106
- versions.sort((a, b) => b.manifest.version.localeCompare(a.manifest.version));
112
+ // Return the latest version by npm SemVer precedence.
113
+ versions.sort((a, b) => newestVersionFirst(a.manifest.version, b.manifest.version));
107
114
  results.push(versions[0]);
108
115
  }
109
116
  }
110
117
  return results;
111
118
  }
119
+ /** Every cached candidate, for constraint-aware dependency resolution. */
120
+ listCandidates() {
121
+ if (!fs.existsSync(this.cacheDir))
122
+ return [];
123
+ return fs.readdirSync(this.cacheDir).flatMap(name => this.listVersions(name));
124
+ }
112
125
  // --------------------------------------------------------------------------
113
126
  // Internal
114
127
  // --------------------------------------------------------------------------
@@ -94,6 +94,19 @@ export class PluginLifecycleManager {
94
94
  securityViolations: security.violations,
95
95
  };
96
96
  }
97
+ // Admit only the requested dependency closure, using all cached candidates.
98
+ // Force this manifest's version so an older cached copy cannot mask failure.
99
+ try {
100
+ const candidates = this.cache.listCandidates().map(c => c.manifest)
101
+ .filter(c => c.name !== manifest.name);
102
+ const resolution = this.resolver.resolve([...candidates, manifest], [manifest.name]);
103
+ if (resolution.errors.length) {
104
+ return { success: false, manifest, errors: resolution.errors.map(e => `${e.code}: ${e.message}`), securityViolations: [] };
105
+ }
106
+ }
107
+ catch (error) {
108
+ return { success: false, manifest, errors: [error instanceof Error ? error.message : String(error)], securityViolations: [] };
109
+ }
97
110
  // 5. Check if already cached
98
111
  if (this.cache.has(manifest.name, manifest.version)) {
99
112
  const cached = this.cache.get(manifest.name, manifest.version);
@@ -162,8 +175,8 @@ export class PluginLifecycleManager {
162
175
  * Resolve load order for all cached plugins.
163
176
  */
164
177
  resolveLoadOrder() {
165
- const all = this.cache.listAll();
166
- return this.resolver.resolve(all.map(c => c.manifest));
178
+ const all = this.cache.listCandidates();
179
+ return this.resolver.resolveAvailable(all.map(c => c.manifest));
167
180
  }
168
181
  /**
169
182
  * Register a plugin source.
@@ -5,13 +5,12 @@
5
5
  * plugins must provide. Includes validation logic for name, version,
6
6
  * entry point, and permissions.
7
7
  */
8
+ import { validVersion, validRange } from './version-policy.js';
8
9
  // ============================================================================
9
10
  // Constants
10
11
  // ============================================================================
11
12
  /** Regex for valid plugin names: lowercase, alphanumeric, hyphens */
12
13
  const VALID_NAME_REGEX = /^[a-z][a-z0-9-]*$/;
13
- /** Regex for semver: major.minor.patch with optional pre-release */
14
- const SEMVER_REGEX = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.]+)?$/;
15
14
  /** Reserved name prefixes that third-party plugins cannot use */
16
15
  const RESERVED_PREFIXES = ['aqe-core-', 'agentic-qe-core-'];
17
16
  /** Maximum name length */
@@ -41,7 +40,7 @@ export function validateManifest(manifest) {
41
40
  if (!m.version || typeof m.version !== 'string') {
42
41
  errors.push('version is required and must be a string');
43
42
  }
44
- else if (!SEMVER_REGEX.test(m.version)) {
43
+ else if (!validVersion(m.version)) {
45
44
  errors.push(`version "${m.version}" is not valid semver (expected: major.minor.patch)`);
46
45
  }
47
46
  if (!m.description || typeof m.description !== 'string') {
@@ -80,6 +79,9 @@ export function validateManifest(manifest) {
80
79
  if (typeof depVersion !== 'string') {
81
80
  errors.push(`Dependency "${depName}" must have a string version range`);
82
81
  }
82
+ else if (!validRange(depVersion)) {
83
+ errors.push(`Dependency "${depName}" has an invalid semver range`);
84
+ }
83
85
  }
84
86
  }
85
87
  }
@@ -100,8 +102,8 @@ export function validateManifest(manifest) {
100
102
  }
101
103
  }
102
104
  if (m.minAqeVersion !== undefined) {
103
- if (typeof m.minAqeVersion !== 'string' || !SEMVER_REGEX.test(m.minAqeVersion)) {
104
- warnings.push('minAqeVersion should be valid semver');
105
+ if (typeof m.minAqeVersion !== 'string' || !validVersion(m.minAqeVersion)) {
106
+ errors.push('minAqeVersion must be valid semver');
105
107
  }
106
108
  }
107
109
  if (m.permissions !== undefined) {
@@ -1,37 +1,28 @@
1
- /**
2
- * Agentic QE v3 - Plugin Dependency Resolver (IMP-09)
3
- *
4
- * DFS dependency resolution with cycle detection.
5
- * Given a set of plugin manifests, produces a topologically-sorted
6
- * load order where dependencies are loaded before dependents.
7
- */
1
+ /** Constraint-aware plugin selection followed by dependency-safe ordering. */
8
2
  import type { QEPluginManifest } from './manifest';
3
+ import { type PluginVersionFailure } from './version-policy';
9
4
  export interface ResolvedPlugin {
10
5
  manifest: QEPluginManifest;
11
- /** Order index (0 = load first) */
12
6
  order: number;
13
7
  }
14
8
  export interface ResolutionResult {
15
- /** Plugins in dependency-safe load order */
16
9
  ordered: ResolvedPlugin[];
17
- /** Unresolvable dependencies (plugin -> missing deps) */
18
10
  missing: Map<string, string[]>;
11
+ errors: PluginVersionFailure[];
12
+ selectedVersions: Record<string, string>;
13
+ aqeVersion: string;
19
14
  }
20
15
  export declare class PluginResolver {
21
- /**
22
- * Resolve plugin load order via DFS topological sort.
23
- *
24
- * @param manifests - All available plugin manifests
25
- * @returns Ordered list of plugins safe to load sequentially
26
- * @throws Error if a dependency cycle is detected
27
- */
28
- resolve(manifests: QEPluginManifest[]): ResolutionResult;
29
- /**
30
- * Check if a specific plugin can be loaded given the currently loaded set.
31
- */
32
- canLoad(manifest: QEPluginManifest, loaded: Set<string>): {
16
+ private readonly aqeVersion;
17
+ constructor(aqeVersion?: string);
18
+ resolve(manifests: QEPluginManifest[], roots?: readonly string[]): ResolutionResult;
19
+ /** Startup is best-effort: retain admitted roots when another root fails. */
20
+ resolveAvailable(manifests: QEPluginManifest[]): ResolutionResult;
21
+ /** Version-constrained dependencies require versions, not a legacy name-only Set. */
22
+ canLoad(manifest: QEPluginManifest, loaded: ReadonlyMap<string, string> | Set<string>): {
33
23
  canLoad: boolean;
34
24
  missingDeps: string[];
35
25
  };
26
+ private validateVersions;
36
27
  }
37
28
  //# sourceMappingURL=resolver.d.ts.map