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
@@ -70,6 +70,16 @@ export interface InitJsonOutput {
70
70
  policy: 'full' | 'compact' | 'none';
71
71
  ownedBytes: number;
72
72
  };
73
+ codexComponents?: {
74
+ hooks: {
75
+ status: string;
76
+ error?: string;
77
+ };
78
+ skills: {
79
+ status: string;
80
+ error?: string;
81
+ };
82
+ };
73
83
  };
74
84
  totalDurationMs: number;
75
85
  timestamp: string;
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import chalk from 'chalk';
7
7
  import { getStatusColor, formatDuration, } from './interfaces.js';
8
+ import { ALL_DOMAINS, isDomainName } from '../../shared/types/index.js';
8
9
  import { createTimedSpinner } from '../utils/progress.js';
9
10
  import { parseJsonOption } from '../helpers/safe-json.js';
10
11
  import { writeOutput, toJSON } from '../utils/ci-output.js';
@@ -32,7 +33,7 @@ export class TaskHandler {
32
33
  .option('-d, --domain <domain>', 'Target domain')
33
34
  .option('-t, --timeout <ms>', 'Task timeout in ms', '300000')
34
35
  .option('--payload <json>', 'Task payload as JSON', '{}')
35
- .option('--wait', 'Wait for task completion with progress')
36
+ .option('--wait', 'Wait for task completion (required: CLI tasks are not persisted)')
36
37
  .option('--no-progress', 'Disable progress indicator')
37
38
  .action(async (type, options) => {
38
39
  await this.executeSubmit(type, options, context);
@@ -67,6 +68,25 @@ export class TaskHandler {
67
68
  });
68
69
  }
69
70
  async executeSubmit(type, options, context) {
71
+ // #734 D: reject an unknown domain up front instead of accepting work that
72
+ // no domain will ever run.
73
+ if (options.domain !== undefined && !isDomainName(options.domain)) {
74
+ console.error(chalk.red(`\n Unknown domain: ${options.domain}`));
75
+ console.error(chalk.gray(` Valid domains: ${ALL_DOMAINS.join(', ')}\n`));
76
+ return this.cleanupAndExit(1);
77
+ }
78
+ // #734 C: a CLI-submitted task runs inside this process and is not
79
+ // persisted, so a detached submit would report an ID for work that is
80
+ // abandoned when the command exits. Refuse it rather than claim success.
81
+ if (!options.wait) {
82
+ console.error(chalk.red('\n Detached task submission is not supported.'));
83
+ console.error(chalk.gray(' Tasks submitted from the CLI run inside this process and are not persisted;'));
84
+ console.error(chalk.gray(' the task would be abandoned when the command exits, and `aqe task status`'));
85
+ console.error(chalk.gray(' from another process could not find it.'));
86
+ console.error(chalk.gray(' Re-run with --wait to execute the task and report its result, or submit it'));
87
+ console.error(chalk.gray(' through the MCP server (task_submit), which keeps a long-lived coordinator.\n'));
88
+ return this.cleanupAndExit(1);
89
+ }
70
90
  if (!await this.ensureInitialized())
71
91
  return this.cleanupAndExit(1);
72
92
  try {
@@ -294,7 +314,8 @@ Submit Options:
294
314
  -d, --domain <domain> Target domain
295
315
  -t, --timeout <ms> Task timeout in milliseconds (default: 300000)
296
316
  --payload <json> Task payload as JSON
297
- --wait Wait for task completion with progress
317
+ --wait Wait for task completion (required; CLI-submitted
318
+ tasks run in this process and are not persisted)
298
319
  --no-progress Disable progress indicator
299
320
 
300
321
  List Options:
@@ -303,7 +324,7 @@ List Options:
303
324
  -d, --domain <domain> Filter by domain
304
325
 
305
326
  Examples:
306
- aqe task submit generate-tests --domain test-generation
327
+ aqe task submit generate-tests --domain test-generation --wait
307
328
  aqe task submit analyze-coverage --wait --timeout 60000
308
329
  aqe task list --status running
309
330
  aqe task status task-123
@@ -0,0 +1,12 @@
1
+ import type { CLIContext } from '../handlers/interfaces.js';
2
+ /**
3
+ * Build the readiness check for `aqe memory` subcommands.
4
+ *
5
+ * Memory operations only need the project memory backend, so this opens
6
+ * .agentic-qe/memory.db directly instead of booting the full v3 system
7
+ * (kernel, Queen Coordinator, every domain coordinator, SONA engines,
8
+ * DreamScheduler). If a fleet is already running in this process, its kernel
9
+ * memory is used as before.
10
+ */
11
+ export declare function createEnsureMemoryBackend(context: CLIContext): () => Promise<boolean>;
12
+ //# sourceMappingURL=standalone-memory.d.ts.map
@@ -0,0 +1,46 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import chalk from 'chalk';
4
+ import { toErrorMessage } from '../../shared/error-utils.js';
5
+ /**
6
+ * Build the readiness check for `aqe memory` subcommands.
7
+ *
8
+ * Memory operations only need the project memory backend, so this opens
9
+ * .agentic-qe/memory.db directly instead of booting the full v3 system
10
+ * (kernel, Queen Coordinator, every domain coordinator, SONA engines,
11
+ * DreamScheduler). If a fleet is already running in this process, its kernel
12
+ * memory is used as before.
13
+ */
14
+ export function createEnsureMemoryBackend(context) {
15
+ let ready = null;
16
+ const open = async () => {
17
+ try {
18
+ const [{ findProjectRoot }, { createKernelMemoryBackend }, { setStandaloneMemoryBackend }] = await Promise.all([
19
+ import('../../kernel/project-root.js'),
20
+ import('../../kernel/hybrid-backend.js'),
21
+ import('../../mcp/handlers/memory-handlers.js'),
22
+ ]);
23
+ // Same data directory the kernel resolves when auto-initializing.
24
+ const dataDir = path.join(findProjectRoot(), '.agentic-qe');
25
+ fs.mkdirSync(dataDir, { recursive: true });
26
+ const backend = createKernelMemoryBackend(dataDir);
27
+ await backend.initialize();
28
+ setStandaloneMemoryBackend(backend);
29
+ return true;
30
+ }
31
+ catch (error) {
32
+ console.error(chalk.red(` Failed to open memory store: ${toErrorMessage(error)}`));
33
+ // Callers `return` on false; main() then exits with this code, matching
34
+ // ensureInitialized()'s failure path (#758).
35
+ process.exitCode = 1;
36
+ return false;
37
+ }
38
+ };
39
+ return () => {
40
+ if (context.initialized)
41
+ return Promise.resolve(true);
42
+ ready ??= open();
43
+ return ready;
44
+ };
45
+ }
46
+ //# sourceMappingURL=standalone-memory.js.map
package/dist/cli/index.js CHANGED
@@ -10,47 +10,18 @@
10
10
  * See: cli/commands/ for additional command modules
11
11
  */
12
12
  import { toErrorMessage } from '../shared/error-utils.js';
13
+ import { initFeatureFlagsFromEnv } from '../integrations/ruvector/feature-flags.js';
13
14
  import { createRequire } from 'node:module';
14
15
  import { Command } from 'commander';
15
16
  import chalk from 'chalk';
16
17
  import { ALL_DOMAINS } from '../shared/types/index.js';
17
18
  // ============================================================================
18
- // Redirect internal domain logs to stderr so stdout stays clean for CI/JSON
19
+ // Route internal diagnostics to stderr, filtered by AQE_LOG_LEVEL / LOG_LEVEL /
20
+ // AQE_VERBOSE (default: warn), so stdout stays clean for CI/JSON.
19
21
  // ============================================================================
20
- const INTERNAL_LOG_PREFIXES = [
21
- '[UnifiedMemory]', '[HybridBackend]', '[UnifiedPersistence]',
22
- '[PersistentSONAEngine]', '[QueenGovernance]', '[QueenCoordinator]',
23
- '[Queen]', '[QUEEN]', '[DomainBreakerRegistry]',
24
- '[RealEmbeddings]', '[HNSWIndex]', '[PatternStore]',
25
- '[TestGenerationCoordinator]', '[CodeIntelligence]', '[ProductFactorsBridge]',
26
- '[LearningOptimizationCoordinator]', '[DreamEngine]', '[DreamScheduler]',
27
- '[SecurityCompliance]', '[Providers]', '[GNN]',
28
- '[test-generation]', '[test-execution]', '[coverage-analysis]',
29
- '[quality-assessment]', '[defect-intelligence]', '[requirements-validation]',
30
- '[code-intelligence]', '[security-compliance]', '[contract-testing]',
31
- '[visual-accessibility]', '[chaos-resilience]', '[learning-optimization]',
32
- '[enterprise-integration]', '[coordination]', '[PatternLearnerService]',
33
- '[RequirementsValidation]', '[ParserRegistry]', '[AdversarialDefense]',
34
- '[ContinueGateIntegration]', '[ContinueGate]', '[SQLitePatternStore]',
35
- '[TokenTracking]', '[InfraHealing]', '[ExperienceCapture]',
36
- ];
37
- /** Timestamped log pattern: [HH:MM:SS.sss] [LEVEL] */
38
- const TIMESTAMPED_LOG_RE = /^\[\d{2}:\d{2}:\d{2}\.\d{3}\]\s+\[/;
39
- const originalConsoleLog = console.log.bind(console);
40
- console.log = (...args) => {
41
- const first = typeof args[0] === 'string' ? args[0] : '';
42
- const trimmed = first.trimStart();
43
- if (INTERNAL_LOG_PREFIXES.some(prefix => trimmed.startsWith(prefix)) ||
44
- TIMESTAMPED_LOG_RE.test(trimmed)) {
45
- process.stderr.write(args.map(String).join(' ') + '\n');
46
- return;
47
- }
48
- originalConsoleLog(...args);
49
- };
50
- // Also redirect timestamped INFO/WARN/ERROR log lines (e.g. "[07:12:24.372] [INFO ]")
51
- console.info = (...args) => {
52
- process.stderr.write(args.map(String).join(' ') + '\n');
53
- };
22
+ import { applyCommandVerbosity, installCliLogGate, isCliLogLevelEnabled } from './log-gate.js';
23
+ import { LogLevel } from '../logging/index.js';
24
+ installCliLogGate();
54
25
  // ============================================================================
55
26
  // CLI State
56
27
  // ============================================================================
@@ -144,10 +115,12 @@ async function ensureInitializedStrict() {
144
115
  // For diagnostic commands: check if project was explicitly initialized
145
116
  const fs = await import('fs');
146
117
  const path = await import('path');
147
- const configDir = path.resolve('.agentic-qe');
118
+ const { findProjectRoot } = await import('../kernel/project-root.js');
119
+ const configDir = path.join(findProjectRoot(), '.agentic-qe');
148
120
  if (!fs.existsSync(configDir)) {
149
121
  console.error(chalk.red('\nError: AQE system not initialized in this directory.'));
150
122
  console.log(chalk.yellow('Run `aqe init` first to set up this project.\n'));
123
+ process.exitCode = 1;
151
124
  return false;
152
125
  }
153
126
  return ensureInitialized();
@@ -156,14 +129,19 @@ async function ensureInitialized() {
156
129
  if (context.initialized && context.kernel && context.queen) {
157
130
  return true;
158
131
  }
159
- process.stderr.write(chalk.gray('Auto-initializing v3 system...') + '\n');
132
+ const showProgress = isCliLogLevelEnabled(LogLevel.INFO);
133
+ if (showProgress) {
134
+ process.stderr.write(chalk.gray('Auto-initializing v3 system...') + '\n');
135
+ }
160
136
  const timeout = 30000;
161
137
  const timeoutPromise = new Promise((_, reject) => {
162
138
  setTimeout(() => reject(new Error('Initialization timeout after 30 seconds')), timeout);
163
139
  });
164
140
  try {
165
141
  await Promise.race([autoInitialize(), timeoutPromise]);
166
- process.stderr.write(chalk.green('System ready') + '\n\n');
142
+ if (showProgress) {
143
+ process.stderr.write(chalk.green('System ready') + '\n\n');
144
+ }
167
145
  return true;
168
146
  }
169
147
  catch (err) {
@@ -176,6 +154,8 @@ async function ensureInitialized() {
176
154
  console.error(chalk.red('Failed to auto-initialize:'), err);
177
155
  console.log(chalk.yellow('Try running `aqe init` manually.'));
178
156
  }
157
+ // Callers `return` on false; main() then exits with this code (#758).
158
+ process.exitCode = 1;
179
159
  return false;
180
160
  }
181
161
  }
@@ -216,7 +196,18 @@ const VERSION = typeof __CLI_VERSION__ !== 'undefined' ? __CLI_VERSION__ : packa
216
196
  program
217
197
  .name('aqe')
218
198
  .description('Agentic QE - Domain-Driven Quality Engineering')
219
- .version(VERSION);
199
+ .version(VERSION)
200
+ .addHelpText('after', `
201
+ Environment:
202
+ AQE_LOG_LEVEL Internal log level: debug | info | warn | error | silent (default: warn)
203
+ LOG_LEVEL Same as AQE_LOG_LEVEL; AQE_LOG_LEVEL takes precedence
204
+ AQE_VERBOSE=1 Shorthand for info-level logging (full system-init output)
205
+ Diagnostics are written to stderr; stdout carries command output only.`);
206
+ // A command's own --verbose flag (aqe sync|status|workflow|eval ... --verbose)
207
+ // raises the log gate to INFO for that run; AQE_LOG_LEVEL / LOG_LEVEL win.
208
+ program.hook('preAction', (_thisCommand, actionCommand) => {
209
+ applyCommandVerbosity(actionCommand.opts());
210
+ });
220
211
  // ============================================================================
221
212
  // Register Handlers (lazy — each handler loads only when its command runs)
222
213
  // ============================================================================
@@ -338,7 +329,11 @@ registerLazyCommand(program, {
338
329
  registerLazyCommand(program, {
339
330
  name: 'memory',
340
331
  description: 'Memory store, retrieve, search, and delete operations',
341
- factory: () => import('./commands/memory.js').then(m => m.createMemoryCommand(context, cleanupAndExit, ensureInitialized)),
332
+ // Memory subcommands open only the memory store, not the full v3 system.
333
+ factory: () => Promise.all([
334
+ import('./commands/memory.js'),
335
+ import('./helpers/standalone-memory.js'),
336
+ ]).then(([m, h]) => m.createMemoryCommand(context, cleanupAndExit, h.createEnsureMemoryBackend(context))),
342
337
  });
343
338
  registerLazyCommand(program, {
344
339
  name: 'mcp',
@@ -402,6 +397,7 @@ async function main() {
402
397
  console.log(VERSION);
403
398
  process.exit(0);
404
399
  }
400
+ initFeatureFlagsFromEnv();
405
401
  // File recovery must validate its input before anything opens, migrates, or
406
402
  // auto-restores the project's database. Commander accepts `--` separators.
407
403
  const commandArgs = process.argv.slice(2).filter(arg => arg !== '--');
@@ -421,7 +417,7 @@ async function main() {
421
417
  return;
422
418
  // If the command didn't explicitly exit, clean up and exit now.
423
419
  // This prevents process hangs from active handles (domain init, embeddings, etc.)
424
- await cleanupAndExit(0);
420
+ await cleanupAndExit(process.exitCode ?? 0);
425
421
  }
426
422
  main().catch(async (error) => {
427
423
  console.error(chalk.red('Fatal error:'), error);
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Agentic QE v3 - CLI Log Gate
3
+ *
4
+ * Single place that decides how much internal diagnostic output a CLI
5
+ * invocation prints. Two kinds of diagnostics exist in the codebase:
6
+ *
7
+ * 1. Structured logger output (LoggerFactory / ConsoleLogger), formatted as
8
+ * "[HH:MM:SS.mmm] [INFO ] [domain] message".
9
+ * 2. Ad-hoc console calls with a bracketed tag, e.g.
10
+ * console.log('[UnifiedMemory] Initialized: ...').
11
+ *
12
+ * Both are routed to stderr (stdout stays clean for JSON/CI consumers) and
13
+ * filtered against one threshold resolved from the environment:
14
+ *
15
+ * AQE_LOG_LEVEL debug | info | warn | error | silent (highest precedence)
16
+ * LOG_LEVEL same values
17
+ * AQE_VERBOSE 1 | true | yes | on -> info
18
+ * (default) warn
19
+ *
20
+ * Regular command output (anything without a bracketed tag) is never touched.
21
+ */
22
+ import { LogLevel } from '../logging/index.js';
23
+ type ConsoleMethod = 'log' | 'info' | 'debug' | 'warn' | 'error';
24
+ type ConsoleLike = Pick<Console, ConsoleMethod>;
25
+ /** Default threshold for CLI commands when nothing is configured. */
26
+ export declare const DEFAULT_CLI_LOG_LEVEL = LogLevel.WARN;
27
+ /**
28
+ * Resolve the effective CLI log level from the environment.
29
+ * Unrecognised values are ignored rather than silently mapped to INFO.
30
+ */
31
+ export declare function resolveCliLogLevel(env?: NodeJS.ProcessEnv, defaultLevel?: LogLevel): LogLevel;
32
+ /**
33
+ * Classify a console call. Returns the diagnostic level of the line, or null
34
+ * when the line is regular command output that must pass through untouched.
35
+ */
36
+ export declare function classifyConsoleLine(method: ConsoleMethod, firstArg: unknown): LogLevel | null;
37
+ /** True when AQE_LOG_LEVEL or LOG_LEVEL holds a recognised level. */
38
+ export declare function hasExplicitCliLogLevel(env?: NodeJS.ProcessEnv): boolean;
39
+ /**
40
+ * Honour a command's own `--verbose` flag (e.g. `aqe sync --verbose`): raise
41
+ * the threshold to INFO so the diagnostics the user explicitly asked for are
42
+ * printed (on stderr). An explicit AQE_LOG_LEVEL / LOG_LEVEL still wins.
43
+ * Returns true when the level was raised.
44
+ */
45
+ export declare function applyCommandVerbosity(options: Record<string, unknown>, env?: NodeJS.ProcessEnv): boolean;
46
+ /** Current CLI log threshold. */
47
+ export declare function getCliLogLevel(): LogLevel;
48
+ /** True when diagnostics at `level` should be printed. */
49
+ export declare function isCliLogLevelEnabled(level: LogLevel): boolean;
50
+ /**
51
+ * Change the threshold at runtime. Also reconfigures LoggerFactory so loggers
52
+ * created afterwards filter at the source instead of relying on the gate.
53
+ */
54
+ export declare function setCliLogLevel(level: LogLevel): void;
55
+ export interface InstallCliLogGateOptions {
56
+ level?: LogLevel;
57
+ target?: ConsoleLike;
58
+ writeStderr?: (text: string) => void;
59
+ }
60
+ /**
61
+ * Patch the console so internal diagnostics are routed to stderr and filtered
62
+ * by the CLI log level. Returns a function that restores the original methods.
63
+ */
64
+ export declare function installCliLogGate(options?: InstallCliLogGateOptions): () => void;
65
+ export {};
66
+ //# sourceMappingURL=log-gate.d.ts.map
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Agentic QE v3 - CLI Log Gate
3
+ *
4
+ * Single place that decides how much internal diagnostic output a CLI
5
+ * invocation prints. Two kinds of diagnostics exist in the codebase:
6
+ *
7
+ * 1. Structured logger output (LoggerFactory / ConsoleLogger), formatted as
8
+ * "[HH:MM:SS.mmm] [INFO ] [domain] message".
9
+ * 2. Ad-hoc console calls with a bracketed tag, e.g.
10
+ * console.log('[UnifiedMemory] Initialized: ...').
11
+ *
12
+ * Both are routed to stderr (stdout stays clean for JSON/CI consumers) and
13
+ * filtered against one threshold resolved from the environment:
14
+ *
15
+ * AQE_LOG_LEVEL debug | info | warn | error | silent (highest precedence)
16
+ * LOG_LEVEL same values
17
+ * AQE_VERBOSE 1 | true | yes | on -> info
18
+ * (default) warn
19
+ *
20
+ * Regular command output (anything without a bracketed tag) is never touched.
21
+ */
22
+ import { format } from 'node:util';
23
+ import { LogLevel, LoggerFactory } from '../logging/index.js';
24
+ /** Default threshold for CLI commands when nothing is configured. */
25
+ export const DEFAULT_CLI_LOG_LEVEL = LogLevel.WARN;
26
+ const LEVEL_NAMES = {
27
+ debug: LogLevel.DEBUG,
28
+ info: LogLevel.INFO,
29
+ warn: LogLevel.WARN,
30
+ warning: LogLevel.WARN,
31
+ error: LogLevel.ERROR,
32
+ silent: LogLevel.SILENT,
33
+ none: LogLevel.SILENT,
34
+ off: LogLevel.SILENT,
35
+ };
36
+ const TRUTHY = new Set(['1', 'true', 'yes', 'on']);
37
+ // eslint-disable-next-line no-control-regex
38
+ const ANSI_RE = /\x1b\[[0-9;]*m/g;
39
+ /** "[10:01:10.407] [INFO ] ..." or "[2026-09-28T10:01:10.407Z] [WARN ] ..." */
40
+ const STRUCTURED_RE = /^\[(?:\d{2}:\d{2}:\d{2}\.\d{3}|\d{4}-\d{2}-\d{2}T[^\]]+)\]\s+\[(DEBUG|INFO|WARN|ERROR)\s*\]/;
41
+ /**
42
+ * "[UnifiedMemory] ...", "[sona-three-loop] ...", "[quality-assessment/rl] ...".
43
+ * Requires a letter first and whitespace after the closing bracket so JSON
44
+ * arrays such as '["a"]' or '[true]' are never mistaken for diagnostics.
45
+ *
46
+ * Only a tag at column 0 counts. Indented bracketed text is command output:
47
+ * severity markers (" [critical] Code Injection ..." from `aqe security`,
48
+ * " [high] ..." from `aqe status` / `aqe coverage`) and user data such as a
49
+ * stored memory value "[TODO] fix auth" printed by `aqe memory get`.
50
+ */
51
+ const TAGGED_RE = /^\[[A-Za-z][\w./:-]*\]\s/;
52
+ const TAG_METHOD_LEVEL = {
53
+ debug: LogLevel.DEBUG,
54
+ log: LogLevel.INFO,
55
+ info: LogLevel.INFO,
56
+ warn: LogLevel.WARN,
57
+ error: LogLevel.ERROR,
58
+ };
59
+ let currentLevel = DEFAULT_CLI_LOG_LEVEL;
60
+ function parseLevel(value) {
61
+ if (!value)
62
+ return undefined;
63
+ return LEVEL_NAMES[value.trim().toLowerCase()];
64
+ }
65
+ /**
66
+ * Resolve the effective CLI log level from the environment.
67
+ * Unrecognised values are ignored rather than silently mapped to INFO.
68
+ */
69
+ export function resolveCliLogLevel(env = process.env, defaultLevel = DEFAULT_CLI_LOG_LEVEL) {
70
+ const explicit = parseLevel(env.AQE_LOG_LEVEL) ?? parseLevel(env.LOG_LEVEL);
71
+ if (explicit !== undefined)
72
+ return explicit;
73
+ if (env.AQE_VERBOSE && TRUTHY.has(env.AQE_VERBOSE.trim().toLowerCase())) {
74
+ return LogLevel.INFO;
75
+ }
76
+ return defaultLevel;
77
+ }
78
+ /**
79
+ * Classify a console call. Returns the diagnostic level of the line, or null
80
+ * when the line is regular command output that must pass through untouched.
81
+ */
82
+ export function classifyConsoleLine(method, firstArg) {
83
+ if (typeof firstArg !== 'string')
84
+ return null;
85
+ const text = firstArg.replace(ANSI_RE, '');
86
+ const structured = STRUCTURED_RE.exec(text.trimStart());
87
+ if (structured) {
88
+ return LEVEL_NAMES[structured[1].toLowerCase()];
89
+ }
90
+ if (TAGGED_RE.test(text)) {
91
+ return TAG_METHOD_LEVEL[method];
92
+ }
93
+ return null;
94
+ }
95
+ /** True when AQE_LOG_LEVEL or LOG_LEVEL holds a recognised level. */
96
+ export function hasExplicitCliLogLevel(env = process.env) {
97
+ return parseLevel(env.AQE_LOG_LEVEL) !== undefined || parseLevel(env.LOG_LEVEL) !== undefined;
98
+ }
99
+ /**
100
+ * Honour a command's own `--verbose` flag (e.g. `aqe sync --verbose`): raise
101
+ * the threshold to INFO so the diagnostics the user explicitly asked for are
102
+ * printed (on stderr). An explicit AQE_LOG_LEVEL / LOG_LEVEL still wins.
103
+ * Returns true when the level was raised.
104
+ */
105
+ export function applyCommandVerbosity(options, env = process.env) {
106
+ if (options.verbose !== true || hasExplicitCliLogLevel(env))
107
+ return false;
108
+ if (isCliLogLevelEnabled(LogLevel.INFO))
109
+ return false;
110
+ setCliLogLevel(LogLevel.INFO);
111
+ return true;
112
+ }
113
+ /** Current CLI log threshold. */
114
+ export function getCliLogLevel() {
115
+ return currentLevel;
116
+ }
117
+ /** True when diagnostics at `level` should be printed. */
118
+ export function isCliLogLevelEnabled(level) {
119
+ return level >= currentLevel && currentLevel !== LogLevel.SILENT;
120
+ }
121
+ /**
122
+ * Change the threshold at runtime. Also reconfigures LoggerFactory so loggers
123
+ * created afterwards filter at the source instead of relying on the gate.
124
+ */
125
+ export function setCliLogLevel(level) {
126
+ currentLevel = level;
127
+ LoggerFactory.setLevel(level);
128
+ }
129
+ /**
130
+ * Patch the console so internal diagnostics are routed to stderr and filtered
131
+ * by the CLI log level. Returns a function that restores the original methods.
132
+ */
133
+ export function installCliLogGate(options = {}) {
134
+ const target = options.target ?? console;
135
+ const writeStderr = options.writeStderr ?? ((text) => { process.stderr.write(text); });
136
+ setCliLogLevel(options.level ?? resolveCliLogLevel());
137
+ const original = {
138
+ log: target.log.bind(target),
139
+ info: target.info.bind(target),
140
+ debug: target.debug.bind(target),
141
+ warn: target.warn.bind(target),
142
+ error: target.error.bind(target),
143
+ };
144
+ const toStderr = (args) => writeStderr(format(...args) + '\n');
145
+ const gate = (method, passthrough, emit) => (...args) => {
146
+ const level = classifyConsoleLine(method, args[0]);
147
+ if (level === null) {
148
+ passthrough(args);
149
+ }
150
+ else if (isCliLogLevelEnabled(level)) {
151
+ emit(args);
152
+ }
153
+ };
154
+ // log/debug output normally goes to stdout; diagnostics are moved to stderr.
155
+ target.log = gate('log', args => original.log(...args), toStderr);
156
+ target.debug = gate('debug', args => original.debug(...args), toStderr);
157
+ // console.info has always been redirected to stderr by the CLI.
158
+ target.info = gate('info', toStderr, toStderr);
159
+ // warn/error already target stderr; keep their native formatting.
160
+ target.warn = gate('warn', args => original.warn(...args), args => original.warn(...args));
161
+ target.error = gate('error', args => original.error(...args), args => original.error(...args));
162
+ return () => {
163
+ target.log = original.log;
164
+ target.info = original.info;
165
+ target.debug = original.debug;
166
+ target.warn = original.warn;
167
+ target.error = original.error;
168
+ };
169
+ }
170
+ //# sourceMappingURL=log-gate.js.map
@@ -9,6 +9,7 @@ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSyn
9
9
  import { join, dirname } from 'path';
10
10
  import { fileURLToPath } from 'url';
11
11
  import { toErrorMessage } from '../shared/error-utils.js';
12
+ import { findPackageRoot } from './find-package-root.js';
12
13
  import { selectCodexSkills } from './codex-skill-manifest.js';
13
14
  import { createPlatformConfigGenerator, } from './platform-config-generator.js';
14
15
  export const CODEX_COMPACT_GUIDANCE_MAX_BYTES = 512;
@@ -111,7 +112,7 @@ export class CodexInstaller {
111
112
  result.ownedGuidanceBytes = Buffer.byteLength(marked);
112
113
  result.components.rules.status = 'installed';
113
114
  }
114
- else if (this.overwrite || policy === 'compact') {
115
+ else {
115
116
  const content = policy === 'compact' ? COMPACT_CODEX_GUIDANCE : rules.content;
116
117
  const existing = readFileSync(agentsMdPath, 'utf-8');
117
118
  const merged = this.mergeExistingAgentsMdContent(existing, content);
@@ -125,10 +126,6 @@ export class CodexInstaller {
125
126
  }
126
127
  result.ownedGuidanceBytes = this.measureOwnedAgentsSection(merged);
127
128
  }
128
- else {
129
- result.components.rules.status = 'preserved';
130
- result.ownedGuidanceBytes = this.measureOwnedAgentsSection(readFileSync(agentsMdPath, 'utf-8'));
131
- }
132
129
  }
133
130
  catch (error) {
134
131
  this.recordComponentFailure(result, 'rules', error);
@@ -147,6 +144,13 @@ export class CodexInstaller {
147
144
  catch (error) {
148
145
  this.recordComponentFailure(result, 'skills', error);
149
146
  }
147
+ for (const component of ['hooks', 'skills']) {
148
+ if (result.components[component].status === 'unavailable') {
149
+ const message = `Codex ${component} unavailable: packaged assets could not be located`;
150
+ result.components[component].error = message;
151
+ result.errors.push(message);
152
+ }
153
+ }
150
154
  result.success = result.errors.length === 0;
151
155
  return result;
152
156
  }
@@ -297,6 +301,11 @@ export class CodexInstaller {
297
301
  }
298
302
  }
299
303
  resolvePackageRoot() {
304
+ // Bundled chunks retain their real package location even when npm's aqe
305
+ // bin is a symlink in a global prefix.
306
+ const packagedRoot = findPackageRoot(import.meta.url);
307
+ if (packagedRoot)
308
+ return packagedRoot;
300
309
  const moduleDir = dirname(fileURLToPath(import.meta.url));
301
310
  const candidates = [
302
311
  join(moduleDir, '..', '..'),
@@ -348,7 +357,10 @@ export class CodexInstaller {
348
357
  return merged;
349
358
  if (existing.length === 0)
350
359
  return marked;
351
- return existing.trimEnd() + `${eol}${eol}---${eol}${eol}` + marked;
360
+ // The owned block starts at the original EOF. Keeping every pre-existing
361
+ // byte outside the sentinel lets `none` remove the block exactly, even
362
+ // when the user's file has no trailing newline.
363
+ return existing + marked;
352
364
  }
353
365
  removeOwnedAgentsSections(existing) {
354
366
  this.assertOwnedAgentsSectionsWellFormed(existing);
@@ -158,6 +158,7 @@ export class ModularInitOrchestrator {
158
158
  claudeMdGenerated: claudeMdResult?.data?.generated ?? false,
159
159
  workersStarted: workersResult?.data?.workersConfigured ?? 0,
160
160
  codexGuidance: assetsResult?.data?.codexGuidance,
161
+ codexComponents: assetsResult?.data?.codexComponents,
161
162
  },
162
163
  totalDurationMs: Date.now() - startTime,
163
164
  timestamp: new Date(),
@@ -20,6 +20,16 @@ export interface AssetsResult {
20
20
  policy: 'full' | 'compact' | 'none';
21
21
  ownedBytes: number;
22
22
  };
23
+ codexComponents?: {
24
+ hooks: {
25
+ status: string;
26
+ error?: string;
27
+ };
28
+ skills: {
29
+ status: string;
30
+ error?: string;
31
+ };
32
+ };
23
33
  }
24
34
  /**
25
35
  * Assets phase - installs skills and agents
@@ -37,6 +37,7 @@ export class AssetsPhase extends BasePhase {
37
37
  let kiroSkills = 0;
38
38
  let kiroHooks = 0;
39
39
  let codexGuidance;
40
+ let codexComponents;
40
41
  if (options.upgrade) {
41
42
  context.services.log(` Upgrade mode: overwriting existing files`);
42
43
  }
@@ -303,6 +304,7 @@ export class AssetsPhase extends BasePhase {
303
304
  });
304
305
  const res = await installer.install();
305
306
  codexGuidance = { policy: res.guidancePolicy, ownedBytes: res.ownedGuidanceBytes };
307
+ codexComponents = { hooks: res.components.hooks, skills: res.components.skills };
306
308
  if (res.mcpConfigured)
307
309
  platformsConfigured.push('codex');
308
310
  if (res.errors.length > 0)
@@ -361,6 +363,7 @@ export class AssetsPhase extends BasePhase {
361
363
  platformsConfigured,
362
364
  browserEngine,
363
365
  codexGuidance,
366
+ codexComponents,
364
367
  };
365
368
  }
366
369
  /**
@@ -13,7 +13,7 @@ export interface TokenBootstrapConfig {
13
13
  enableOptimization: boolean;
14
14
  /** Enable persistence (default: true) */
15
15
  enablePersistence: boolean;
16
- /** Storage directory for metrics (default: .aqe) */
16
+ /** Storage directory for metrics (default: <project>/.agentic-qe) */
17
17
  storagePath: string;
18
18
  /** Auto-save interval in ms (default: 60000 = 1 minute) */
19
19
  autoSaveIntervalMs: number;