agentic-qe 3.10.7 → 3.10.9

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 (381) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +84 -0
  3. package/dist/cli/bundle.js +5 -5
  4. package/dist/cli/chunks/adapter-TRSV37EA.js +2 -0
  5. package/dist/cli/chunks/{agent-booster-wasm-6I3JMU2M.js → agent-booster-wasm-RPAOJXZ3.js} +2 -2
  6. package/dist/cli/chunks/{agent-handler-XWI7YM6R.js → agent-handler-SMD5CAS6.js} +2 -2
  7. package/dist/cli/chunks/{agent-memory-branch-QFZKQN2L.js → agent-memory-branch-3IOQIQ7Y.js} +2 -2
  8. package/dist/cli/chunks/aqe-learning-engine-CVJRJOSO.js +2 -0
  9. package/dist/cli/chunks/{arena-5HNPVTBZ.js → arena-AP2J62WO.js} +4 -4
  10. package/dist/cli/chunks/{arena-P4IUBKZP.js → arena-GT3D6EAO.js} +2 -2
  11. package/dist/cli/chunks/{audit-PBSH25VZ.js → audit-Q3GJ5354.js} +2 -2
  12. package/dist/cli/chunks/base-BX4A2D4V.js +2 -0
  13. package/dist/cli/chunks/{hnswlib-node-ILDTCGLZ.js → better-sqlite3-6A6EAXAT.js} +2 -2
  14. package/dist/cli/chunks/{brain-handler-EVYRCKXI.js → brain-handler-2Z4ILQF3.js} +3 -3
  15. package/dist/cli/chunks/{branch-enumerator-SUDGYJQJ.js → branch-enumerator-EZWGL4UM.js} +2 -2
  16. package/dist/cli/chunks/{browser-4UKMW2RE.js → browser-YZELFPLJ.js} +2 -2
  17. package/dist/cli/chunks/browser-workflow-O3RL7EYT.js +2 -0
  18. package/dist/cli/chunks/{chunk-QBVFONWU.js → chunk-246Z3PH6.js} +2 -2
  19. package/dist/cli/chunks/{chunk-B5ZJV7GZ.js → chunk-2I5QLMQF.js} +2 -2
  20. package/dist/cli/chunks/{chunk-AW3LGLC3.js → chunk-2K2X75UF.js} +2 -2
  21. package/dist/cli/chunks/{chunk-OW4LJ5HE.js → chunk-2WRVNEIR.js} +2 -2
  22. package/dist/cli/chunks/{chunk-EWNJK2BU.js → chunk-2WSEJHFQ.js} +1 -1
  23. package/dist/cli/chunks/{chunk-6RG7ZJ2H.js → chunk-352W5G4G.js} +2 -2
  24. package/dist/cli/chunks/{chunk-7NK2H7H5.js → chunk-3HT4CT6F.js} +2 -2
  25. package/dist/cli/chunks/{chunk-MDVJVY4C.js → chunk-3YKJGKOY.js} +4 -4
  26. package/dist/cli/chunks/{chunk-OPLLH67G.js → chunk-42FBJF73.js} +1 -1
  27. package/dist/cli/chunks/{chunk-IXAABYGS.js → chunk-4BB75U6N.js} +2 -2
  28. package/dist/cli/chunks/{chunk-LJHCPN4E.js → chunk-4D3LVXUD.js} +2 -2
  29. package/dist/cli/chunks/{chunk-VPBXVZWE.js → chunk-4EJTE5TL.js} +1 -1
  30. package/dist/cli/chunks/{chunk-I7M574IO.js → chunk-4MUZGQPE.js} +2 -2
  31. package/dist/cli/chunks/{chunk-M7SO5KNJ.js → chunk-57XCLC55.js} +2 -2
  32. package/dist/cli/chunks/{chunk-QBVS4CXM.js → chunk-5HLOQEKL.js} +1 -1
  33. package/dist/cli/chunks/{chunk-XWPUCPYW.js → chunk-5U5SEO7C.js} +2 -2
  34. package/dist/cli/chunks/{chunk-YB4GXJJG.js → chunk-5X73HV2P.js} +1 -1
  35. package/dist/cli/chunks/{chunk-OSETFZVE.js → chunk-62MH7QAQ.js} +2 -2
  36. package/dist/cli/chunks/{chunk-64BSODHA.js → chunk-6HPI6YX3.js} +2 -2
  37. package/dist/cli/chunks/{chunk-SG6O3PXZ.js → chunk-6TR3OM7C.js} +2 -2
  38. package/dist/cli/chunks/{chunk-FQBNPSV2.js → chunk-757YHKIJ.js} +2 -2
  39. package/dist/cli/chunks/{chunk-JJELOEIY.js → chunk-7C5HI4ZA.js} +4 -4
  40. package/dist/cli/chunks/chunk-7D5JE46U.js +2 -0
  41. package/dist/cli/chunks/{chunk-L2ZSYIDA.js → chunk-7NT34MLU.js} +1 -1
  42. package/dist/cli/chunks/{chunk-6QBD64W3.js → chunk-7PYEJ4NV.js} +2 -2
  43. package/dist/cli/chunks/{chunk-ISLI6D4K.js → chunk-7S6D5K4X.js} +2 -2
  44. package/dist/cli/chunks/chunk-ABJPFKHE.js +2 -0
  45. package/dist/cli/chunks/{chunk-LEZ2MGHM.js → chunk-ABVBHH7P.js} +3 -3
  46. package/dist/cli/chunks/{chunk-V7WBNB2S.js → chunk-AHUX7QSE.js} +2 -2
  47. package/dist/cli/chunks/{chunk-DPT37UHR.js → chunk-AU4DQMLJ.js} +4 -4
  48. package/dist/cli/chunks/{chunk-MOI74MMX.js → chunk-BG2FN5K2.js} +2 -2
  49. package/dist/cli/chunks/{chunk-JNQVPTOM.js → chunk-BM52ZEAD.js} +2 -2
  50. package/dist/cli/chunks/{chunk-BLFZFKT6.js → chunk-BSMUT672.js} +2 -2
  51. package/dist/cli/chunks/{chunk-34NT5NBZ.js → chunk-BVEQPMOF.js} +2 -2
  52. package/dist/cli/chunks/{chunk-QLVZEEPR.js → chunk-BYVARYGB.js} +2 -2
  53. package/dist/cli/chunks/{chunk-QDBFB4XD.js → chunk-C6GQIUKW.js} +2 -2
  54. package/dist/cli/chunks/{chunk-X6OJFP7G.js → chunk-C6JULAWA.js} +2 -2
  55. package/dist/cli/chunks/{chunk-76SUEI7S.js → chunk-CDJIYJIA.js} +1 -1
  56. package/dist/cli/chunks/{chunk-2J4ZUUU5.js → chunk-CLJNAQXB.js} +2 -2
  57. package/dist/cli/chunks/{chunk-DU7Y54JI.js → chunk-CLSHSVMY.js} +1 -1
  58. package/dist/cli/chunks/{chunk-O4B6FFC5.js → chunk-CREORFJV.js} +1 -1
  59. package/dist/cli/chunks/{chunk-S4NNQE4L.js → chunk-CVRTXIYP.js} +1 -1
  60. package/dist/cli/chunks/{chunk-TTLAWPEN.js → chunk-CWRSQQHV.js} +2 -2
  61. package/dist/cli/chunks/{chunk-R2B6EQQF.js → chunk-D2JCSWYM.js} +2 -2
  62. package/dist/cli/chunks/{chunk-Z44VJC5U.js → chunk-D7NWDUY3.js} +2 -2
  63. package/dist/cli/chunks/chunk-DK6WWNCL.js +2 -0
  64. package/dist/cli/chunks/{chunk-X3HRJV65.js → chunk-DNE6MVNA.js} +1 -1
  65. package/dist/cli/chunks/{chunk-UURGDFGU.js → chunk-DZWZASDV.js} +1 -1
  66. package/dist/cli/chunks/{chunk-L6NB4UHR.js → chunk-EL6F72JN.js} +2 -2
  67. package/dist/cli/chunks/{chunk-G7ISGLKP.js → chunk-EYGRNXQT.js} +1 -1
  68. package/dist/cli/chunks/{chunk-K6A3AWUI.js → chunk-FALB6Z2Y.js} +1 -1
  69. package/dist/cli/chunks/{chunk-TXXRBNOB.js → chunk-FD37QFXW.js} +1 -1
  70. package/dist/cli/chunks/{chunk-MWRKNBSY.js → chunk-G4KVGUQN.js} +2 -2
  71. package/dist/cli/chunks/{chunk-32E2OPIE.js → chunk-G7V2HDTH.js} +3 -3
  72. package/dist/cli/chunks/{chunk-YMBPKBKG.js → chunk-GPALZJD3.js} +1 -1
  73. package/dist/cli/chunks/{chunk-3IJS52OS.js → chunk-H4SHHYRD.js} +2 -2
  74. package/dist/cli/chunks/{chunk-3XEL7XCA.js → chunk-H7AQ7M3J.js} +1 -1
  75. package/dist/cli/chunks/{chunk-CW7JQVXV.js → chunk-HAC7NB6R.js} +2 -2
  76. package/dist/cli/chunks/{chunk-KXENXRZE.js → chunk-HGKZOSAI.js} +1 -1
  77. package/dist/cli/chunks/{chunk-L3EQQMFI.js → chunk-HQZX4XYH.js} +2 -2
  78. package/dist/cli/chunks/{chunk-LFSQSLNP.js → chunk-HZSYCVLC.js} +2 -2
  79. package/dist/cli/chunks/{chunk-2JWFS2K2.js → chunk-I5C7O5IQ.js} +2 -2
  80. package/dist/cli/chunks/{chunk-LSHUPEQQ.js → chunk-I7RTTJH5.js} +2 -2
  81. package/dist/cli/chunks/{chunk-R7KIC6TL.js → chunk-ILPIH4Z6.js} +1 -1
  82. package/dist/cli/chunks/{chunk-262F3EMN.js → chunk-IR7PJUO7.js} +2 -2
  83. package/dist/cli/chunks/{chunk-MMR23KAO.js → chunk-J6GKKXCP.js} +2 -2
  84. package/dist/cli/chunks/{chunk-INI3AGF5.js → chunk-JZNMU63B.js} +2 -2
  85. package/dist/cli/chunks/{chunk-J5ETX2DG.js → chunk-K23XK33X.js} +2 -2
  86. package/dist/cli/chunks/{chunk-S423UHYM.js → chunk-KAMFT25W.js} +2 -2
  87. package/dist/cli/chunks/{chunk-AKSCYNFH.js → chunk-KJA5A3TV.js} +2 -2
  88. package/dist/cli/chunks/{chunk-76JYG426.js → chunk-KRAWWBX5.js} +2 -2
  89. package/dist/cli/chunks/{chunk-4RGV6Z2H.js → chunk-L5IO7QNO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-HBWAMCVB.js → chunk-L5NEEGKO.js} +14 -14
  91. package/dist/cli/chunks/{chunk-BRYYQQUV.js → chunk-LHKQW72O.js} +1 -1
  92. package/dist/cli/chunks/{chunk-BPC6X6VR.js → chunk-LT6QHDPK.js} +2 -2
  93. package/dist/cli/chunks/{chunk-HARYQMWN.js → chunk-MDED3HJI.js} +2 -2
  94. package/dist/cli/chunks/{chunk-HDLF6LGO.js → chunk-NLUWPS2H.js} +3 -3
  95. package/dist/cli/chunks/{chunk-CGBEI7UH.js → chunk-NMQEU4BG.js} +2 -2
  96. package/dist/cli/chunks/{chunk-K6IU2MV4.js → chunk-NOWGQ6YZ.js} +1 -1
  97. package/dist/cli/chunks/{chunk-YLXUF5KW.js → chunk-NYBAH76S.js} +3 -3
  98. package/dist/cli/chunks/{chunk-TIUC5LRA.js → chunk-O36VC7B7.js} +2 -2
  99. package/dist/cli/chunks/{chunk-3O4Q4GAX.js → chunk-OD4OIPXO.js} +15 -13
  100. package/dist/cli/chunks/{chunk-LUZH2IZY.js → chunk-OF3EMOWN.js} +2 -2
  101. package/dist/cli/chunks/{chunk-AKL5A3IZ.js → chunk-OIN3Y4BY.js} +1 -1
  102. package/dist/cli/chunks/chunk-OPKEQYAC.js +2 -0
  103. package/dist/cli/chunks/{chunk-TY7XPI6R.js → chunk-OQUH7657.js} +2 -2
  104. package/dist/cli/chunks/{chunk-F5RZSNHI.js → chunk-OSP5AJAB.js} +2 -2
  105. package/dist/cli/chunks/{chunk-6A2HRMTD.js → chunk-PFGH7TWL.js} +2 -2
  106. package/dist/cli/chunks/{chunk-MK73CCKO.js → chunk-PYQZ4OA3.js} +2 -2
  107. package/dist/cli/chunks/{chunk-BU2I77YW.js → chunk-QAP5S7YC.js} +3 -3
  108. package/dist/cli/chunks/{chunk-JNXPRDNV.js → chunk-QE3CZGAC.js} +3 -3
  109. package/dist/cli/chunks/{chunk-5QMIVHFT.js → chunk-QFIKEZB5.js} +2 -2
  110. package/dist/cli/chunks/{chunk-AY4IEMRI.js → chunk-QHICG2NI.js} +2 -2
  111. package/dist/cli/chunks/{chunk-4I6FK67T.js → chunk-QHPLU5BU.js} +3 -3
  112. package/dist/cli/chunks/{chunk-HI4DA7Z3.js → chunk-QL6ZJ7RV.js} +2 -2
  113. package/dist/cli/chunks/{chunk-FK4JHBG4.js → chunk-QL7OOCPO.js} +2 -2
  114. package/dist/cli/chunks/{chunk-6OLPKIYU.js → chunk-QWXJRZEH.js} +1 -1
  115. package/dist/cli/chunks/{chunk-S7FNTWFM.js → chunk-R2M3RMCN.js} +2 -2
  116. package/dist/cli/chunks/{chunk-NKYMHEHY.js → chunk-RHOBDQXA.js} +2 -2
  117. package/dist/cli/chunks/{chunk-6F5KPT6U.js → chunk-RRSJ7BMF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-RLXCFURS.js → chunk-RSWQY4NZ.js} +2 -2
  119. package/dist/cli/chunks/{chunk-UPDPD43T.js → chunk-S73EBPI5.js} +2 -2
  120. package/dist/cli/chunks/{chunk-OMDV6GFP.js → chunk-TIR3Z6TE.js} +1 -1
  121. package/dist/cli/chunks/{chunk-UVUVWA4B.js → chunk-TKZABUHO.js} +1 -1
  122. package/dist/cli/chunks/{chunk-4MJQJQLY.js → chunk-TOGD2JH2.js} +2 -2
  123. package/dist/cli/chunks/{chunk-QMGNYRR5.js → chunk-TVU6NMO3.js} +3 -3
  124. package/dist/cli/chunks/{chunk-C5CY5NSW.js → chunk-TXWUV3S5.js} +2 -2
  125. package/dist/cli/chunks/{chunk-3W6QASVB.js → chunk-U6TZVACK.js} +2 -2
  126. package/dist/cli/chunks/{chunk-L5UUUSSB.js → chunk-UJBIHPU5.js} +1 -1
  127. package/dist/cli/chunks/{chunk-FWLXK6AH.js → chunk-UPGKS6Z3.js} +2 -2
  128. package/dist/cli/chunks/{chunk-SLASYVNX.js → chunk-UU7OCRZM.js} +2 -2
  129. package/dist/cli/chunks/{chunk-WCXQA24H.js → chunk-UUA2NVUN.js} +8 -8
  130. package/dist/cli/chunks/{chunk-IYZWEYWJ.js → chunk-UX4UHYLE.js} +1 -1
  131. package/dist/cli/chunks/{chunk-V3KNHI5B.js → chunk-VDL277DX.js} +2 -2
  132. package/dist/cli/chunks/{chunk-RJBCIN2G.js → chunk-VHCHBMZC.js} +2 -2
  133. package/dist/cli/chunks/{chunk-222ZQTL5.js → chunk-VHYNRISI.js} +2 -2
  134. package/dist/cli/chunks/{chunk-4W5QWFU4.js → chunk-VIHFC67B.js} +1 -1
  135. package/dist/cli/chunks/{chunk-DYNO72WD.js → chunk-WOGWIMQK.js} +2 -2
  136. package/dist/cli/chunks/{chunk-SFW6IDMR.js → chunk-WPBVLIWQ.js} +10 -10
  137. package/dist/cli/chunks/{chunk-CJTDQJ7E.js → chunk-WWGGL3TR.js} +1 -1
  138. package/dist/cli/chunks/{chunk-2MLISLRR.js → chunk-X6YUGKMM.js} +1 -1
  139. package/dist/cli/chunks/{chunk-PY3HWJRJ.js → chunk-X7677BX3.js} +2 -2
  140. package/dist/cli/chunks/{chunk-MRLGQX7Y.js → chunk-XEMP2PNW.js} +2 -2
  141. package/dist/cli/chunks/{chunk-YBM4LUSF.js → chunk-XLK4GP3I.js} +2 -2
  142. package/dist/cli/chunks/chunk-XYRJL7YN.js +2 -0
  143. package/dist/cli/chunks/{chunk-OAXDI4XM.js → chunk-YB3PQ3UV.js} +1 -1
  144. package/dist/cli/chunks/{chunk-GUDOOOO6.js → chunk-YHFCLJMY.js} +1 -1
  145. package/dist/cli/chunks/{chunk-HELQ7CXL.js → chunk-YQBL5XTM.js} +1 -1
  146. package/dist/cli/chunks/chunk-Z6FRNWQA.js +6 -0
  147. package/dist/cli/chunks/{chunk-U7EGKKN3.js → chunk-ZT2DGSIO.js} +2 -2
  148. package/dist/cli/chunks/{chunk-DYSRMAZP.js → chunk-ZVF7QY4R.js} +1 -1
  149. package/dist/cli/chunks/{ci-OO42YBET.js → ci-KDEFR2X3.js} +2 -2
  150. package/dist/cli/chunks/{ci-output-YXMTEX7Q.js → ci-output-Z3WXRRFI.js} +2 -2
  151. package/dist/cli/chunks/{circuit-breaker-EHA4N643.js → circuit-breaker-GS44DEW2.js} +2 -2
  152. package/dist/cli/chunks/{claude-flow-setup-E6G6SLYI.js → claude-flow-setup-OHVMHAAH.js} +2 -2
  153. package/dist/cli/chunks/client-T263ZXVV.js +2 -0
  154. package/dist/cli/chunks/cline-installer-5TCF4MZD.js +4 -0
  155. package/dist/cli/chunks/{code-Q3U6XDOO.js → code-3KCGTG7Z.js} +2 -2
  156. package/dist/cli/chunks/{code-index-extractor-BK2DC4MO.js → code-index-extractor-LJBI54MZ.js} +2 -2
  157. package/dist/cli/chunks/codex-installer-IB62Z6LA.js +8 -0
  158. package/dist/cli/chunks/{completions-TZ5F33TA.js → completions-JDXX7KKB.js} +2 -2
  159. package/dist/cli/chunks/{complexity-analyzer-N7U4V7ID.js → complexity-analyzer-6JVDXXXP.js} +2 -2
  160. package/dist/cli/chunks/continuedev-installer-PUB45QVR.js +15 -0
  161. package/dist/cli/chunks/copilot-installer-QWJ36P22.js +3 -0
  162. package/dist/cli/chunks/core-handlers-ODKKGCFK.js +2 -0
  163. package/dist/cli/chunks/{cost-tracker-ZTIDLUFW.js → cost-tracker-J3KEJDL5.js} +2 -2
  164. package/dist/cli/chunks/{coverage-6G7T7TRQ.js → coverage-FWKRI2EY.js} +3 -3
  165. package/dist/cli/chunks/cross-domain-router-APU725GC.js +2 -0
  166. package/dist/cli/chunks/cursor-installer-2HYCUCTH.js +3 -0
  167. package/dist/cli/chunks/{daemon-KTXGJJRI.js → daemon-BVP66DIZ.js} +4 -4
  168. package/dist/cli/chunks/{daemon-5A4GD6XA.js → daemon-G3DBRWDQ.js} +3 -3
  169. package/dist/cli/chunks/{dag-attention-scheduler-4CUEQZD6.js → dag-attention-scheduler-2AQLNB4B.js} +2 -2
  170. package/dist/cli/chunks/{detect-I32JUSUE.js → detect-RUM5SHNE.js} +2 -2
  171. package/dist/cli/chunks/{dist-node-7ITNV6QS.js → dist-node-GX7MJHFT.js} +2 -2
  172. package/dist/cli/chunks/{domain-handler-LIFCXSZ4.js → domain-handler-OFBGZ2U5.js} +2 -2
  173. package/dist/cli/chunks/{domain-transfer-67UWLHSK.js → domain-transfer-6CGRPRGR.js} +2 -2
  174. package/dist/cli/chunks/dream-PJ5GKY3J.js +2 -0
  175. package/dist/cli/chunks/{embed-and-insert-pattern-4WC5RUD6.js → embed-and-insert-pattern-MUOEVQX2.js} +2 -2
  176. package/dist/cli/chunks/{eval-DLS2UAQ2.js → eval-SJMG67DE.js} +2 -2
  177. package/dist/cli/chunks/{experience-capture-middleware-VG5E6OJA.js → experience-capture-middleware-ICKN6IXX.js} +3 -3
  178. package/dist/cli/chunks/{fast-paths-262IVHDN.js → fast-paths-HXLBG3J4.js} +2 -2
  179. package/dist/cli/chunks/{feature-flags-L3K7DBN3.js → feature-flags-CRUB2ASU.js} +2 -2
  180. package/dist/cli/chunks/{feature-flags-JJ3FHZGD.js → feature-flags-JYZSSQJC.js} +2 -2
  181. package/dist/cli/chunks/{file-discovery-Q3PBKVUW.js → file-discovery-YHHC7NTJ.js} +2 -2
  182. package/dist/cli/chunks/{fleet-LQ5S2YHG.js → fleet-2VGDL4YL.js} +3 -3
  183. package/dist/cli/chunks/{gnn-wrapper-I33Z537H.js → gnn-wrapper-7ZAGD4S4.js} +2 -2
  184. package/dist/cli/chunks/{heartbeat-handler-RYIRAGZ7.js → heartbeat-handler-HAW3JRHN.js} +4 -4
  185. package/dist/cli/chunks/heartbeat-scheduler-4ZHUIW3Q.js +2 -0
  186. package/dist/cli/chunks/hnsw-adapter-UVJJ6TTP.js +2 -0
  187. package/dist/cli/chunks/hnsw-index-K6HS34JZ.js +2 -0
  188. package/dist/cli/chunks/{hnsw-legacy-bridge-SSENBBPR.js → hnsw-legacy-bridge-BO325POX.js} +2 -2
  189. package/dist/cli/chunks/{better-sqlite3-F262IAGH.js → hnswlib-node-YTK7S7GL.js} +2 -2
  190. package/dist/cli/chunks/{hooks-LR5KQMN5.js → hooks-HKM3JTFQ.js} +10 -10
  191. package/dist/cli/chunks/hybrid-router-25S7OH2Y.js +2 -0
  192. package/dist/cli/chunks/{hypergraph-engine-NDZA2DKP.js → hypergraph-engine-LGLGHK6B.js} +2 -2
  193. package/dist/cli/chunks/{hypergraph-handler-ADMWVHBT.js → hypergraph-handler-6QDVREZA.js} +3 -3
  194. package/dist/cli/chunks/impact-analyzer-UP4RDMJH.js +2 -0
  195. package/dist/cli/chunks/init-handler-XUQ7XHIE.js +74 -0
  196. package/dist/cli/chunks/init-wizard-2PAJ3GEC.js +2 -0
  197. package/dist/cli/chunks/kernel-7WOQGMMT.js +2 -0
  198. package/dist/cli/chunks/kilocode-installer-6CEZLVIX.js +4 -0
  199. package/dist/cli/chunks/{kiro-installer-TINLYZ22.js → kiro-installer-6CJGATOS.js} +4 -4
  200. package/dist/cli/chunks/knowledge-graph-FN2AWHGR.js +2 -0
  201. package/dist/cli/chunks/{learning-KBT3S5WW.js → learning-EIYTYZJY.js} +3 -3
  202. package/dist/cli/chunks/{llm-router-2MX5LUAB.js → llm-router-J4CI7VHU.js} +4 -4
  203. package/dist/cli/chunks/llm-router-service-C3UPBAS3.js +2 -0
  204. package/dist/cli/chunks/{load-IQWTGMLZ.js → load-CQPWGLQQ.js} +2 -2
  205. package/dist/cli/chunks/load-test-PQSGLDXJ.js +2 -0
  206. package/dist/cli/chunks/mcp-THOATWCO.js +2 -0
  207. package/dist/cli/chunks/{memory-XQVPI4UT.js → memory-NZHMHMRK.js} +5 -5
  208. package/dist/cli/chunks/memory-backend-6FR4RT5O.js +2 -0
  209. package/dist/cli/chunks/{memory-handlers-XD7MSFUN.js → memory-handlers-L2J54AQE.js} +2 -2
  210. package/dist/cli/chunks/{multi-model-executor-JC63UCWG.js → multi-model-executor-3P5E773H.js} +2 -2
  211. package/dist/cli/chunks/opencode-installer-IRZMKSNG.js +15 -0
  212. package/dist/cli/chunks/{orchestrator-B75QWJUF.js → orchestrator-UADLXTKP.js} +18 -18
  213. package/dist/cli/chunks/pattern-null-store-B2UX4NZY.js +2 -0
  214. package/dist/cli/chunks/{pipeline-TCBQ2UTZ.js → pipeline-QEH3XHXJ.js} +2 -2
  215. package/dist/cli/chunks/{platform-T43AYI3Z.js → platform-NEZ3NXLT.js} +2 -2
  216. package/dist/cli/chunks/{plugin-MSI3ZU3Z.js → plugin-O33HR2VO.js} +2 -2
  217. package/dist/cli/chunks/{prime-radiant-advanced-wasm-V62CWI6M.js → prime-radiant-advanced-wasm-MBUMFEX7.js} +2 -2
  218. package/dist/cli/chunks/protocol-executor-OQ6SL7SR.js +2 -0
  219. package/dist/cli/chunks/{protocol-handler-OH2INET2.js → protocol-handler-L455UOUT.js} +2 -2
  220. package/dist/cli/chunks/{prove-6PTMXMUL.js → prove-3XA3SMAA.js} +2 -2
  221. package/dist/cli/chunks/provider-manager-DQWHW2RG.js +2 -0
  222. package/dist/cli/chunks/qe-reasoning-bank-3JS2CZAE.js +2 -0
  223. package/dist/cli/chunks/{quality-PLNQN5GU.js → quality-H6Z5JH5B.js} +2 -2
  224. package/dist/cli/chunks/queen-coordinator-KXCWEM3Y.js +2 -0
  225. package/dist/cli/chunks/{real-embeddings-OW4OKR77.js → real-embeddings-5DNJ4KEM.js} +2 -2
  226. package/dist/cli/chunks/roocode-installer-KHXKR2FK.js +4 -0
  227. package/dist/cli/chunks/router-OVLIKT55.js +2 -0
  228. package/dist/cli/chunks/routing-feedback-2BYCXNXX.js +2 -0
  229. package/dist/cli/chunks/{routing-handler-CKFXXPMI.js → routing-handler-WAMGESEM.js} +2 -2
  230. package/dist/cli/chunks/{ruvector-commands-GERRPTJL.js → ruvector-commands-4J7XC6XY.js} +2 -2
  231. package/dist/cli/chunks/{rvf-dual-writer-5FAB2QPA.js → rvf-dual-writer-3PZEN6XN.js} +2 -2
  232. package/dist/cli/chunks/{rvf-migration-adapter-46COKWYB.js → rvf-migration-adapter-OIUNRQSU.js} +2 -2
  233. package/dist/cli/chunks/{rvf-migration-coordinator-AJVRWSNC.js → rvf-migration-coordinator-QZXDI4I5.js} +2 -2
  234. package/dist/cli/chunks/rvf-native-adapter-YNUYOQ5C.js +2 -0
  235. package/dist/cli/chunks/safe-db-6TYYEU7C.js +2 -0
  236. package/dist/cli/chunks/schedule-XVH7RTVY.js +2 -0
  237. package/dist/cli/chunks/scheduler-DHZBN5HA.js +2 -0
  238. package/dist/cli/chunks/{security-Q622IVRB.js → security-5NY77AMD.js} +3 -3
  239. package/dist/cli/chunks/{shared-rvf-adapter-EST24R3R.js → shared-rvf-adapter-MHPUZIMW.js} +2 -2
  240. package/dist/cli/chunks/{shared-rvf-dual-writer-CP6EXKBT.js → shared-rvf-dual-writer-ITLDYHCX.js} +2 -2
  241. package/dist/cli/chunks/sqlite-persistence-NR5WXTPN.js +2 -0
  242. package/dist/cli/chunks/{status-handler-LLRQB4E2.js → status-handler-7RBRIXZD.js} +2 -2
  243. package/dist/cli/chunks/{structural-health-BUFWTNN2.js → structural-health-MQPY6GA6.js} +2 -2
  244. package/dist/cli/chunks/{sync-JDG4SNT5.js → sync-66KCEANE.js} +2 -2
  245. package/dist/cli/chunks/{sync-RDL2RUOV.js → sync-USVQTHKN.js} +2 -2
  246. package/dist/cli/chunks/{task-handler-KPP6ZXA6.js → task-handler-4UI4FPPW.js} +2 -2
  247. package/dist/cli/chunks/{task-handlers-MRK2BQWI.js → task-handlers-KRII3GVV.js} +3 -3
  248. package/dist/cli/chunks/{test-7NYFTHRY.js → test-JHN2MVEG.js} +4 -4
  249. package/dist/cli/chunks/{test-scheduling-LGPKDMWD.js → test-scheduling-ZWTEGS3S.js} +3 -3
  250. package/dist/cli/chunks/{token-bootstrap-H5JHB7TD.js → token-bootstrap-YWXL6AS5.js} +2 -2
  251. package/dist/cli/chunks/{token-usage-TWPDS5U3.js → token-usage-INII2XM3.js} +2 -2
  252. package/dist/cli/chunks/{transformers-GRNPPUHM.js → transformers-DVFGDNZC.js} +2 -2
  253. package/dist/cli/chunks/{tree-sitter-wasm-parser-DOH5F6TO.js → tree-sitter-wasm-parser-W2XJT3XF.js} +2 -2
  254. package/dist/cli/chunks/{types-NYV3YKE3.js → types-GBZ5Q2GP.js} +2 -2
  255. package/dist/cli/chunks/unified-memory-WJEZ5YAK.js +2 -0
  256. package/dist/cli/chunks/unified-memory-hnsw-6ZA2PMYO.js +2 -0
  257. package/dist/cli/chunks/unified-persistence-SWH6R7MA.js +2 -0
  258. package/dist/cli/chunks/{upgrade-GDJMRYAT.js → upgrade-2JEXEGQX.js} +2 -2
  259. package/dist/cli/chunks/{validate-SIRFOPPM.js → validate-GDCM5YTS.js} +2 -2
  260. package/dist/cli/chunks/{validate-swarm-XGMJYR6X.js → validate-swarm-QZ5RSJEU.js} +2 -2
  261. package/dist/cli/chunks/{vibium-NP6ENRKV.js → vibium-I5BMT734.js} +2 -2
  262. package/dist/cli/chunks/visual-security-PH5JQZCZ.js +2 -0
  263. package/dist/cli/chunks/{web-tree-sitter-YDBWPYZD.js → web-tree-sitter-3QY2LMLP.js} +2 -2
  264. package/dist/cli/chunks/windsurf-installer-V7OBPLOB.js +7 -0
  265. package/dist/cli/chunks/{witness-chain-YHLBWQQ3.js → witness-chain-BNJ4VSZX.js} +2 -2
  266. package/dist/cli/chunks/witness-chain-WYMBNGSL.js +2 -0
  267. package/dist/cli/chunks/{workflow-TA6RY7R5.js → workflow-3FJSNLPI.js} +4 -4
  268. package/dist/cli/chunks/workflow-orchestrator-56JIXCI4.js +2 -0
  269. package/dist/cli/chunks/{wrappers-DS77IK4H.js → wrappers-ERTQNIPK.js} +2 -2
  270. package/dist/cli/commands/mcp.js +28 -28
  271. package/dist/cli/handlers/init-handler.d.ts +4 -0
  272. package/dist/cli/handlers/init-handler.js +50 -1
  273. package/dist/coordination/result-saver.js +4 -0
  274. package/dist/domains/code-intelligence/coordinator-hypergraph.js +9 -4
  275. package/dist/domains/code-intelligence/coordinator.js +9 -4
  276. package/dist/init/cline-installer.d.ts +6 -0
  277. package/dist/init/cline-installer.js +3 -1
  278. package/dist/init/codex-installer.d.ts +6 -0
  279. package/dist/init/codex-installer.js +3 -1
  280. package/dist/init/continuedev-installer.d.ts +6 -0
  281. package/dist/init/continuedev-installer.js +10 -3
  282. package/dist/init/copilot-installer.d.ts +6 -0
  283. package/dist/init/copilot-installer.js +3 -1
  284. package/dist/init/cursor-installer.d.ts +6 -0
  285. package/dist/init/cursor-installer.js +3 -1
  286. package/dist/init/kilocode-installer.d.ts +6 -0
  287. package/dist/init/kilocode-installer.js +3 -1
  288. package/dist/init/kiro-installer.d.ts +5 -0
  289. package/dist/init/kiro-installer.js +4 -4
  290. package/dist/init/opencode-installer.d.ts +39 -17
  291. package/dist/init/opencode-installer.js +166 -114
  292. package/dist/init/orchestrator.js +2 -0
  293. package/dist/init/phases/04-database.d.ts +5 -0
  294. package/dist/init/phases/04-database.js +7 -0
  295. package/dist/init/phases/05-learning.js +3 -0
  296. package/dist/init/phases/06-code-intelligence.js +6 -0
  297. package/dist/init/phases/07-hooks.js +5 -0
  298. package/dist/init/phases/08-mcp.js +34 -7
  299. package/dist/init/phases/09-assets.js +35 -28
  300. package/dist/init/phases/10-workers.js +4 -0
  301. package/dist/init/phases/11-claude-md.d.ts +1 -0
  302. package/dist/init/phases/11-claude-md.js +8 -0
  303. package/dist/init/phases/12-verification.js +10 -5
  304. package/dist/init/phases/13-governance.js +5 -0
  305. package/dist/init/phases/phase-interface.d.ts +14 -0
  306. package/dist/init/platform-config-generator.d.ts +3 -1
  307. package/dist/init/platform-config-generator.js +31 -17
  308. package/dist/init/roocode-installer.d.ts +6 -0
  309. package/dist/init/roocode-installer.js +3 -1
  310. package/dist/init/windsurf-installer.d.ts +6 -0
  311. package/dist/init/windsurf-installer.js +3 -1
  312. package/dist/integrations/ruvector/rvf-native-adapter.js +8 -0
  313. package/dist/integrations/ruvector/shared-rvf-dual-writer.js +5 -0
  314. package/dist/kernel/kernel.js +4 -2
  315. package/dist/kernel/unified-memory.js +66 -48
  316. package/dist/learning/rvf-pattern-store.js +8 -0
  317. package/dist/mcp/bundle.js +361 -358
  318. package/dist/mcp/entry.js +52 -6
  319. package/dist/mcp/handlers/core-handlers.js +7 -2
  320. package/dist/mcp/protocol-server.js +27 -1
  321. package/dist/mcp/services/session-store.d.ts +1 -0
  322. package/dist/mcp/services/session-store.js +7 -0
  323. package/dist/mcp/tools/base.d.ts +6 -0
  324. package/dist/mcp/tools/base.js +16 -0
  325. package/dist/optimization/session-cache.d.ts +11 -0
  326. package/dist/optimization/session-cache.js +31 -0
  327. package/package.json +7 -5
  328. package/dist/cli/chunks/adapter-TTIBYXH2.js +0 -2
  329. package/dist/cli/chunks/aqe-learning-engine-CTV5OLSN.js +0 -2
  330. package/dist/cli/chunks/base-ISNCJZ7A.js +0 -2
  331. package/dist/cli/chunks/browser-workflow-OD32QTTI.js +0 -2
  332. package/dist/cli/chunks/chunk-DF7V6X3N.js +0 -2
  333. package/dist/cli/chunks/chunk-I64BLAFS.js +0 -2
  334. package/dist/cli/chunks/chunk-LHZYTNOQ.js +0 -6
  335. package/dist/cli/chunks/chunk-LRRQEAP5.js +0 -2
  336. package/dist/cli/chunks/chunk-XCYPVJ34.js +0 -2
  337. package/dist/cli/chunks/chunk-XK7P7OXO.js +0 -2
  338. package/dist/cli/chunks/client-N4FQ6SMD.js +0 -2
  339. package/dist/cli/chunks/cline-installer-6JPWD64G.js +0 -4
  340. package/dist/cli/chunks/codex-installer-DA3GBMLN.js +0 -8
  341. package/dist/cli/chunks/continuedev-installer-DDDJGW26.js +0 -14
  342. package/dist/cli/chunks/copilot-installer-JVFCE6GT.js +0 -3
  343. package/dist/cli/chunks/core-handlers-SFD5HCA3.js +0 -2
  344. package/dist/cli/chunks/cross-domain-router-7HGRUNLT.js +0 -2
  345. package/dist/cli/chunks/cursor-installer-JFNYGSDD.js +0 -3
  346. package/dist/cli/chunks/dream-HPGD5TLD.js +0 -2
  347. package/dist/cli/chunks/heartbeat-scheduler-O6TI5E4P.js +0 -2
  348. package/dist/cli/chunks/hnsw-adapter-TOVTN23J.js +0 -2
  349. package/dist/cli/chunks/hnsw-index-KCZ75V7K.js +0 -2
  350. package/dist/cli/chunks/hybrid-router-4JEPC4JZ.js +0 -2
  351. package/dist/cli/chunks/impact-analyzer-3MHIU3SE.js +0 -2
  352. package/dist/cli/chunks/init-handler-MGCYDX62.js +0 -70
  353. package/dist/cli/chunks/init-wizard-ERBO5JNA.js +0 -2
  354. package/dist/cli/chunks/kernel-XJPIIWET.js +0 -2
  355. package/dist/cli/chunks/kilocode-installer-DQVWZUKP.js +0 -4
  356. package/dist/cli/chunks/knowledge-graph-NTJEG6ZE.js +0 -2
  357. package/dist/cli/chunks/llm-router-service-4T66BGB5.js +0 -2
  358. package/dist/cli/chunks/load-test-PM674TSK.js +0 -2
  359. package/dist/cli/chunks/mcp-GCTTJUBZ.js +0 -2
  360. package/dist/cli/chunks/memory-backend-53NQ5CG7.js +0 -2
  361. package/dist/cli/chunks/opencode-installer-6VJGEBIU.js +0 -3
  362. package/dist/cli/chunks/pattern-null-store-IF2RG2ON.js +0 -2
  363. package/dist/cli/chunks/protocol-executor-7AS75ZWT.js +0 -2
  364. package/dist/cli/chunks/provider-manager-AU2C4AET.js +0 -2
  365. package/dist/cli/chunks/qe-reasoning-bank-WATQRCFO.js +0 -2
  366. package/dist/cli/chunks/queen-coordinator-IOCC4VQH.js +0 -2
  367. package/dist/cli/chunks/roocode-installer-C32LCYAJ.js +0 -4
  368. package/dist/cli/chunks/router-SCJMX6WA.js +0 -2
  369. package/dist/cli/chunks/routing-feedback-RWC7F553.js +0 -2
  370. package/dist/cli/chunks/rvf-native-adapter-W2RT6PTO.js +0 -2
  371. package/dist/cli/chunks/safe-db-HO2LCAO3.js +0 -2
  372. package/dist/cli/chunks/schedule-XENCR4MR.js +0 -2
  373. package/dist/cli/chunks/scheduler-WKZ3O2SS.js +0 -2
  374. package/dist/cli/chunks/sqlite-persistence-IN6BOSCX.js +0 -2
  375. package/dist/cli/chunks/unified-memory-6MXOYRXZ.js +0 -2
  376. package/dist/cli/chunks/unified-memory-hnsw-HY3JJD5Z.js +0 -2
  377. package/dist/cli/chunks/unified-persistence-LKQNQYRY.js +0 -2
  378. package/dist/cli/chunks/visual-security-7TBWICHP.js +0 -2
  379. package/dist/cli/chunks/windsurf-installer-MFI6EAPH.js +0 -7
  380. package/dist/cli/chunks/witness-chain-24SVOWQL.js +0 -2
  381. package/dist/cli/chunks/workflow-orchestrator-XBDXCTLY.js +0 -2
@@ -2,13 +2,39 @@
2
2
  * OpenCode Platform Installer
3
3
  * ADR-025: Enhanced Init with Self-Configuration
4
4
  *
5
- * Installs OpenCode agents, skills, tools, and permissions to user projects
6
- * when --with-opencode flag is used. Follows the N8n installer pattern.
5
+ * Installs OpenCode agents and skills to user projects in OpenCode's NATIVE
6
+ * on-disk format (validated against OpenCode CLI v1.17.x):
7
+ * - agents -> .opencode/agent/<name>.md (markdown + YAML frontmatter; body = system prompt)
8
+ * - skills -> .opencode/skills/<name>/SKILL.md (frontmatter name+description; body = instructions)
9
+ * - MCP -> opencode.json (mcp.agentic-qe local server)
10
+ *
11
+ * The shipped source assets under <pkg>/.opencode/{agents,skills} use AQE's own
12
+ * YAML schema (name/description/model/systemPrompt/tools/permissions). OpenCode
13
+ * does NOT load that schema, so this installer CONVERTS them at install time.
14
+ *
15
+ * Tools are intentionally NOT installed: AQE's .opencode/tools/*.ts use a custom
16
+ * `{name, parameters, execute}` shape and call ctx.callTool('mcp:agentic-qe:*'),
17
+ * which is incompatible with OpenCode's `tool()` API and redundant once the MCP
18
+ * server is connected (the underlying tools are exposed directly).
7
19
  */
8
- import { existsSync, mkdirSync, readdirSync, writeFileSync, copyFileSync, } from 'fs';
20
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, } from 'fs';
9
21
  import { join } from 'path';
22
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
10
23
  import { toErrorMessage } from '../shared/error-utils.js';
11
24
  import { findPackageRoot } from './find-package-root.js';
25
+ // OpenCode-valid per-agent permission keys. AQE keys outside this set are dropped
26
+ // or remapped (see PERM_KEY_MAP). In particular `mcp:agentic-qe:*` patterns are
27
+ // dropped — OpenCode does not interpret MCP tool patterns in the permission block.
28
+ const VALID_PERMISSION_KEYS = new Set([
29
+ 'read', 'edit', 'glob', 'grep', 'list', 'bash', 'task',
30
+ 'external_directory', 'todowrite', 'webfetch', 'websearch',
31
+ 'lsp', 'skill', 'question', 'doom_loop',
32
+ ]);
33
+ // Remap AQE permission keys to OpenCode equivalents.
34
+ const PERM_KEY_MAP = {
35
+ fetch: 'webfetch',
36
+ write: 'edit', // OpenCode has no separate 'write' permission; file writes are 'edit'
37
+ };
12
38
  // ============================================================================
13
39
  // OpenCode Installer Class
14
40
  // ============================================================================
@@ -21,7 +47,7 @@ export class OpenCodeInstaller {
21
47
  this.options = {
22
48
  installAgents: true,
23
49
  installSkills: true,
24
- installTools: true,
50
+ installTools: false,
25
51
  overwrite: false,
26
52
  ...options,
27
53
  };
@@ -31,7 +57,7 @@ export class OpenCodeInstaller {
31
57
  // Source Directory Detection
32
58
  // ==========================================================================
33
59
  /**
34
- * Find the source .opencode/ directory containing agents/skills/tools to install.
60
+ * Find the source .opencode/ directory containing agents/skills to install.
35
61
  * Resolves relative to the package installation directory (not CWD) so that
36
62
  * globally-installed and bundled CLI paths all work correctly (#361).
37
63
  */
@@ -40,20 +66,16 @@ export class OpenCodeInstaller {
40
66
  const pkgRoot = findPackageRoot(import.meta.url);
41
67
  const possiblePaths = [];
42
68
  if (pkgRoot) {
43
- // OpenCode assets live at the package root .opencode/ directory
44
69
  possiblePaths.push(join(pkgRoot, '.opencode'));
45
70
  }
46
- // Local install: in node_modules
47
71
  possiblePaths.push(join(this.projectRoot, 'node_modules/agentic-qe/.opencode'));
48
72
  for (const path of possiblePaths) {
49
- // Never use the target directory as the source
50
73
  if (path === targetDir)
51
74
  continue;
52
75
  if (this.isValidSourceDir(path)) {
53
76
  return path;
54
77
  }
55
78
  }
56
- // Return the first package path even if not found — install() will report the error
57
79
  return possiblePaths[0] ?? join(this.projectRoot, 'node_modules/agentic-qe/.opencode');
58
80
  }
59
81
  /**
@@ -69,7 +91,7 @@ export class OpenCodeInstaller {
69
91
  // Installation
70
92
  // ==========================================================================
71
93
  /**
72
- * Install OpenCode agents, skills, tools, and permissions
94
+ * Install OpenCode agents, skills, and MCP config (native OpenCode format).
73
95
  */
74
96
  async install() {
75
97
  const targetDir = join(this.projectRoot, '.opencode');
@@ -88,29 +110,22 @@ export class OpenCodeInstaller {
88
110
  result.success = false;
89
111
  return result;
90
112
  }
91
- // Install agents
113
+ // Per-agent permission overrides shipped in permissions.yaml (defaults +
114
+ // per-agent). Merged with each agent's own `permissions` field.
115
+ const permissionsYaml = this.loadPermissionsYaml();
92
116
  if (this.options.installAgents) {
93
- const agentResult = this.installAgents(targetDir);
117
+ const agentResult = this.installAgents(targetDir, permissionsYaml);
94
118
  result.agentsInstalled = agentResult.installed;
95
119
  result.errors.push(...agentResult.errors);
120
+ // Per-agent permissions are folded into each agent's frontmatter.
121
+ result.permissionsInstalled = result.agentsInstalled.length > 0;
96
122
  }
97
- // Install skills
98
123
  if (this.options.installSkills) {
99
124
  const skillResult = this.installSkills(targetDir);
100
125
  result.skillsInstalled = skillResult.installed;
101
126
  result.errors.push(...skillResult.errors);
102
127
  }
103
- // Install tools
104
- if (this.options.installTools) {
105
- const toolResult = this.installTools(targetDir);
106
- result.toolsInstalled = toolResult.installed;
107
- result.errors.push(...toolResult.errors);
108
- }
109
- // Install permissions
110
- const permResult = this.installPermissions(targetDir);
111
- result.permissionsInstalled = permResult.installed;
112
- result.errors.push(...permResult.errors);
113
- // Generate opencode.json MCP config if not exists
128
+ // Generate opencode.json MCP config if not present.
114
129
  this.generateOpenCodeConfig();
115
130
  }
116
131
  catch (error) {
@@ -119,14 +134,58 @@ export class OpenCodeInstaller {
119
134
  }
120
135
  return result;
121
136
  }
137
+ // ==========================================================================
138
+ // Permission helpers
139
+ // ==========================================================================
122
140
  /**
123
- * Install agent YAML files from .opencode/agents/
141
+ * Load the shipped permissions.yaml (defaults + per-agent overrides). Returns
142
+ * { defaults, agents } or empty maps if the file is missing/unparseable.
124
143
  */
125
- installAgents(targetDir) {
144
+ loadPermissionsYaml() {
145
+ const empty = { defaults: {}, agents: {} };
146
+ const file = join(this.sourceDir, 'permissions.yaml');
147
+ if (!existsSync(file))
148
+ return empty;
149
+ try {
150
+ const parsed = parseYaml(readFileSync(file, 'utf-8'));
151
+ return { defaults: parsed?.defaults ?? {}, agents: parsed?.agents ?? {} };
152
+ }
153
+ catch {
154
+ return empty;
155
+ }
156
+ }
157
+ /**
158
+ * Build an OpenCode-valid `permission` frontmatter object by merging
159
+ * defaults -> agent.permissions (from agent yaml) -> permissions.yaml override,
160
+ * remapping keys and dropping anything OpenCode does not understand.
161
+ */
162
+ buildPermission(agentName, agentPerms, permissionsYaml) {
163
+ const merged = {
164
+ ...permissionsYaml.defaults,
165
+ ...(agentPerms ?? {}),
166
+ ...(permissionsYaml.agents[agentName] ?? {}),
167
+ };
168
+ const out = {};
169
+ for (const [rawKey, value] of Object.entries(merged)) {
170
+ // Drop MCP tool patterns and any other unsupported key.
171
+ if (rawKey.includes(':'))
172
+ continue;
173
+ const key = PERM_KEY_MAP[rawKey] ?? rawKey;
174
+ if (!VALID_PERMISSION_KEYS.has(key))
175
+ continue;
176
+ // 'allow' | 'ask' | 'deny' (string) or object map for bash etc.
177
+ out[key] = value;
178
+ }
179
+ return out;
180
+ }
181
+ // ==========================================================================
182
+ // Agents: <name>.yaml -> .opencode/agent/<name>.md
183
+ // ==========================================================================
184
+ installAgents(targetDir, permissionsYaml) {
126
185
  const installed = [];
127
186
  const errors = [];
128
187
  const sourceAgentsDir = join(this.sourceDir, 'agents');
129
- const targetAgentsDir = join(targetDir, 'agents');
188
+ const targetAgentsDir = join(targetDir, 'agent'); // OpenCode native: singular 'agent'
130
189
  if (!existsSync(sourceAgentsDir)) {
131
190
  errors.push(`Source agents directory not found: ${sourceAgentsDir}`);
132
191
  return { installed, errors };
@@ -134,26 +193,37 @@ export class OpenCodeInstaller {
134
193
  if (!existsSync(targetAgentsDir)) {
135
194
  mkdirSync(targetAgentsDir, { recursive: true });
136
195
  }
137
- const files = readdirSync(sourceAgentsDir).filter(f => f.endsWith('.yaml'));
138
- for (const file of files) {
139
- const sourceFile = join(sourceAgentsDir, file);
140
- const targetFile = join(targetAgentsDir, file);
141
- if (existsSync(targetFile) && !this.options.overwrite) {
142
- continue;
143
- }
196
+ for (const file of readdirSync(sourceAgentsDir).filter(f => f.endsWith('.yaml'))) {
144
197
  try {
145
- copyFileSync(sourceFile, targetFile);
146
- installed.push(file.replace('.yaml', ''));
198
+ const data = parseYaml(readFileSync(join(sourceAgentsDir, file), 'utf-8'));
199
+ const name = data.name || file.replace(/\.yaml$/, '');
200
+ const targetFile = join(targetAgentsDir, `${name}.md`);
201
+ if (existsSync(targetFile) && !this.options.overwrite)
202
+ continue;
203
+ const frontmatter = {
204
+ description: (data.description || name).replace(/\s+/g, ' ').trim(),
205
+ mode: 'subagent',
206
+ };
207
+ // NOTE: `model` is intentionally omitted so agents inherit the user's
208
+ // default OpenCode model. AQE ships model "claude-sonnet-4-6" which may
209
+ // not resolve in OpenCode's provider registry; inheriting avoids
210
+ // hard-failing the agent at invocation time.
211
+ const permission = this.buildPermission(name, data.permissions, permissionsYaml);
212
+ if (Object.keys(permission).length > 0)
213
+ frontmatter.permission = permission;
214
+ const body = (data.systemPrompt || '').trimEnd() + '\n';
215
+ writeFileSync(targetFile, this.renderFrontmatter(frontmatter) + '\n' + body);
216
+ installed.push(name);
147
217
  }
148
218
  catch (error) {
149
- errors.push(`Failed to install agent ${file}: ${toErrorMessage(error)}`);
219
+ errors.push(`Failed to convert agent ${file}: ${toErrorMessage(error)}`);
150
220
  }
151
221
  }
152
222
  return { installed, errors };
153
223
  }
154
- /**
155
- * Install skill YAML files from .opencode/skills/
156
- */
224
+ // ==========================================================================
225
+ // Skills: <name>.yaml -> .opencode/skills/<name>/SKILL.md
226
+ // ==========================================================================
157
227
  installSkills(targetDir) {
158
228
  const installed = [];
159
229
  const errors = [];
@@ -166,97 +236,79 @@ export class OpenCodeInstaller {
166
236
  if (!existsSync(targetSkillsDir)) {
167
237
  mkdirSync(targetSkillsDir, { recursive: true });
168
238
  }
169
- const files = readdirSync(sourceSkillsDir).filter(f => f.endsWith('.yaml'));
170
- for (const file of files) {
171
- const sourceFile = join(sourceSkillsDir, file);
172
- const targetFile = join(targetSkillsDir, file);
173
- if (existsSync(targetFile) && !this.options.overwrite) {
174
- continue;
175
- }
239
+ for (const file of readdirSync(sourceSkillsDir).filter(f => f.endsWith('.yaml'))) {
176
240
  try {
177
- copyFileSync(sourceFile, targetFile);
178
- installed.push(file.replace('.yaml', ''));
241
+ const data = parseYaml(readFileSync(join(sourceSkillsDir, file), 'utf-8'));
242
+ const name = (data.name || file.replace(/\.yaml$/, '')).toLowerCase();
243
+ // OpenCode requires: ^[a-z0-9]+(-[a-z0-9]+)*$ and name === directory.
244
+ if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(name)) {
245
+ errors.push(`Skipped skill with non-conforming name: ${name}`);
246
+ continue;
247
+ }
248
+ const skillDir = join(targetSkillsDir, name);
249
+ const targetFile = join(skillDir, 'SKILL.md');
250
+ if (existsSync(targetFile) && !this.options.overwrite)
251
+ continue;
252
+ if (!existsSync(skillDir))
253
+ mkdirSync(skillDir, { recursive: true });
254
+ let description = (data.description || name).replace(/\s+/g, ' ').trim();
255
+ if (description.length > 1024)
256
+ description = description.slice(0, 1021) + '...';
257
+ let body = '';
258
+ for (const step of data.steps ?? []) {
259
+ body += `## ${step.name || 'step'}\n\n`;
260
+ const text = (step.prompt || step.description || '').trimEnd();
261
+ if (text)
262
+ body += `${text}\n\n`;
263
+ }
264
+ if (!body.trim())
265
+ body = `${data.description || name}\n`;
266
+ writeFileSync(targetFile, this.renderFrontmatter({ name, description }) + '\n' + body.trimEnd() + '\n');
267
+ installed.push(name);
179
268
  }
180
269
  catch (error) {
181
- errors.push(`Failed to install skill ${file}: ${toErrorMessage(error)}`);
270
+ errors.push(`Failed to convert skill ${file}: ${toErrorMessage(error)}`);
182
271
  }
183
272
  }
184
273
  return { installed, errors };
185
274
  }
186
- /**
187
- * Install tool wrapper files from .opencode/tools/
188
- */
189
- installTools(targetDir) {
190
- const installed = [];
191
- const errors = [];
192
- const sourceToolsDir = join(this.sourceDir, 'tools');
193
- const targetToolsDir = join(targetDir, 'tools');
194
- if (!existsSync(sourceToolsDir)) {
195
- errors.push(`Source tools directory not found: ${sourceToolsDir}`);
196
- return { installed, errors };
197
- }
198
- if (!existsSync(targetToolsDir)) {
199
- mkdirSync(targetToolsDir, { recursive: true });
200
- }
201
- const files = readdirSync(sourceToolsDir).filter(f => f.endsWith('.ts'));
202
- for (const file of files) {
203
- const sourceFile = join(sourceToolsDir, file);
204
- const targetFile = join(targetToolsDir, file);
205
- if (existsSync(targetFile) && !this.options.overwrite) {
206
- continue;
207
- }
208
- try {
209
- copyFileSync(sourceFile, targetFile);
210
- installed.push(file.replace('.ts', ''));
211
- }
212
- catch (error) {
213
- errors.push(`Failed to install tool ${file}: ${toErrorMessage(error)}`);
214
- }
215
- }
216
- return { installed, errors };
217
- }
218
- /**
219
- * Install permissions.yaml to target .opencode/ directory
220
- */
221
- installPermissions(targetDir) {
222
- const errors = [];
223
- const sourceFile = join(this.sourceDir, 'permissions.yaml');
224
- const targetFile = join(targetDir, 'permissions.yaml');
225
- if (!existsSync(sourceFile)) {
226
- return { installed: false, errors: [] };
227
- }
228
- if (existsSync(targetFile) && !this.options.overwrite) {
229
- return { installed: false, errors: [] };
230
- }
231
- try {
232
- if (!existsSync(targetDir)) {
233
- mkdirSync(targetDir, { recursive: true });
234
- }
235
- copyFileSync(sourceFile, targetFile);
236
- return { installed: true, errors: [] };
237
- }
238
- catch (error) {
239
- errors.push(`Failed to install permissions.yaml: ${toErrorMessage(error)}`);
240
- return { installed: false, errors };
241
- }
275
+ // ==========================================================================
276
+ // Frontmatter rendering
277
+ // ==========================================================================
278
+ /** Render a frontmatter object as a `---`-delimited YAML block. */
279
+ renderFrontmatter(obj) {
280
+ return `---\n${stringifyYaml(obj).trimEnd()}\n---\n`;
242
281
  }
282
+ // ==========================================================================
283
+ // opencode.json MCP config
284
+ // ==========================================================================
243
285
  /**
244
- * Generate opencode.json MCP config if it does not already exist
286
+ * Generate opencode.json MCP config if it does not already exist.
245
287
  */
246
288
  generateOpenCodeConfig() {
247
289
  const configPath = join(this.projectRoot, 'opencode.json');
248
- if (existsSync(configPath)) {
290
+ if (existsSync(configPath))
249
291
  return;
250
- }
292
+ // Database-free install: in-memory backend => no AQE_MEMORY_PATH, set
293
+ // AQE_MEMORY_BACKEND=memory so the MCP server writes nothing to disk.
294
+ // Otherwise preserve the historical persistent SQLite path.
295
+ const environment = this.options.memoryBackend === 'memory'
296
+ ? { AQE_MEMORY_BACKEND: 'memory', AQE_V3_MODE: 'true' }
297
+ : { AQE_MEMORY_PATH: '.agentic-qe/memory.db', AQE_V3_MODE: 'true' };
251
298
  const config = {
299
+ $schema: 'https://opencode.ai/config.json',
252
300
  mcp: {
253
301
  'agentic-qe': {
254
302
  type: 'local',
255
- command: ['npx', 'agentic-qe', 'mcp'],
256
- environment: {
257
- AQE_MEMORY_PATH: '.agentic-qe/memory.db',
258
- AQE_V3_MODE: 'true',
259
- },
303
+ // Use the dedicated `aqe-mcp` bin, which runs the MCP server bundle
304
+ // directly. The `agentic-qe mcp` subcommand instead double-spawns the
305
+ // server (stdio:'inherit'), which corrupts stdin delivery and makes
306
+ // OpenCode's client fail with "Failed to get tools". A higher timeout
307
+ // accommodates the server's subsystem boot.
308
+ command: ['aqe-mcp'],
309
+ environment,
310
+ enabled: true,
311
+ timeout: 60000,
260
312
  },
261
313
  },
262
314
  };
@@ -49,6 +49,8 @@ export class ModularInitOrchestrator {
49
49
  wizardAnswers: options.wizardAnswers,
50
50
  noGovernance: options.noGovernance,
51
51
  noMcp: options.noMcp,
52
+ noClaude: options.noClaude,
53
+ memoryBackend: options.memoryBackend,
52
54
  },
53
55
  config: {},
54
56
  enhancements: {
@@ -29,6 +29,11 @@ export declare class DatabasePhase extends BasePhase<DatabaseResult> {
29
29
  readonly order = 40;
30
30
  readonly critical = true;
31
31
  readonly requiresPhases: readonly ["configuration"];
32
+ /**
33
+ * Database-free mode (`--no-database` / memoryBackend: 'memory'): skip the
34
+ * SQLite database entirely. Nothing is written under .agentic-qe/.
35
+ */
36
+ shouldRun(context: InitContext): Promise<boolean>;
32
37
  protected run(context: InitContext): Promise<DatabaseResult>;
33
38
  }
34
39
  //# sourceMappingURL=04-database.d.ts.map
@@ -26,6 +26,13 @@ export class DatabasePhase extends BasePhase {
26
26
  order = 40;
27
27
  critical = true;
28
28
  requiresPhases = ['configuration'];
29
+ /**
30
+ * Database-free mode (`--no-database` / memoryBackend: 'memory'): skip the
31
+ * SQLite database entirely. Nothing is written under .agentic-qe/.
32
+ */
33
+ async shouldRun(context) {
34
+ return context.options.memoryBackend !== 'memory';
35
+ }
29
36
  async run(context) {
30
37
  const { projectRoot } = context;
31
38
  // Issue #399 / ADR-090: warn on stale ./vectors.db cruft.
@@ -16,6 +16,9 @@ export class LearningPhase extends BasePhase {
16
16
  critical = false;
17
17
  requiresPhases = ['database', 'configuration'];
18
18
  async shouldRun(context) {
19
+ // Database-free mode has no persistent store to seed patterns into.
20
+ if (context.options.memoryBackend === 'memory')
21
+ return false;
19
22
  const config = context.config;
20
23
  return config?.learning?.enabled ?? true;
21
24
  }
@@ -84,6 +84,12 @@ export class CodeIntelligencePhase extends BasePhase {
84
84
  * for the case where the corpus misses something in the wild.
85
85
  */
86
86
  async shouldRun(context) {
87
+ // Database-free mode: the knowledge graph is persisted to the SQLite DB,
88
+ // which does not exist here. Build it later with `aqe code index`.
89
+ if (context.options.memoryBackend === 'memory') {
90
+ context.services.log(' Code intelligence skipped (database-free mode)');
91
+ return false;
92
+ }
87
93
  const envSkip = process.env.AQE_SKIP_CODE_INDEX;
88
94
  if (envSkip === '1' || envSkip === 'true') {
89
95
  context.services.log(' Code intelligence skipped (AQE_SKIP_CODE_INDEX=1)');
@@ -25,6 +25,11 @@ export class HooksPhase extends BasePhase {
25
25
  critical = false;
26
26
  requiresPhases = ['configuration'];
27
27
  async shouldRun(context) {
28
+ // #532: hooks write into .claude/ — part of the Claude Code surface.
29
+ if (context.options.noClaude) {
30
+ context.services.log(' Hooks skipped (--no-claude)');
31
+ return false;
32
+ }
28
33
  const config = context.config;
29
34
  return config?.hooks?.claudeCode ?? true;
30
35
  }
@@ -26,6 +26,11 @@ export class MCPPhase extends BasePhase {
26
26
  requiresPhases = ['configuration', 'database'];
27
27
  async run(context) {
28
28
  const { projectRoot } = context;
29
+ // #532: --no-claude suppresses the Claude Code surface, including .mcp.json.
30
+ if (context.options.noClaude) {
31
+ context.services.log(' MCP: skipped (--no-claude — .mcp.json is the Claude Code surface)');
32
+ return { configured: false, mcpPath: '', serverName: '' };
33
+ }
29
34
  // MCP is enabled by default — skip only with --no-mcp
30
35
  if (context.options.noMcp) {
31
36
  context.services.log(' MCP: skipped (--no-mcp)');
@@ -39,14 +44,29 @@ export class MCPPhase extends BasePhase {
39
44
  // AQE MCP server configuration
40
45
  // AQE_PROJECT_ROOT omitted — runtime discovery via findProjectRoot() is
41
46
  // portable across machines, devcontainers, and CI (#321)
42
- const aqeServerConfig = {
43
- command: 'aqe-mcp',
44
- args: [],
45
- env: {
47
+ //
48
+ // Issue #533: in database-free mode (--no-database / memoryBackend:'memory')
49
+ // the server must run in-memory and must not have learning/workers forced
50
+ // on (those persist to SQLite, recreating .agentic-qe/memory.db at runtime
51
+ // and defeating the db-free install). Those phases are already skipped at
52
+ // install time; mirror that in the generated env.
53
+ const dbFree = context.options.memoryBackend === 'memory';
54
+ const env = dbFree
55
+ ? {
56
+ AQE_MEMORY_BACKEND: 'memory',
57
+ AQE_LEARNING_ENABLED: 'false',
58
+ AQE_WORKERS_ENABLED: 'false',
59
+ NODE_ENV: 'production',
60
+ }
61
+ : {
46
62
  AQE_LEARNING_ENABLED: 'true',
47
63
  AQE_WORKERS_ENABLED: 'true',
48
64
  NODE_ENV: 'production',
49
- },
65
+ };
66
+ const aqeServerConfig = {
67
+ command: 'aqe-mcp',
68
+ args: [],
69
+ env,
50
70
  };
51
71
  // Write to .mcp.json at project root (the only location Claude Code reads)
52
72
  const rootMcpPath = join(projectRoot, '.mcp.json');
@@ -68,8 +88,15 @@ export class MCPPhase extends BasePhase {
68
88
  writeFileSync(rootMcpPath, JSON.stringify(rootMcpConfig, null, 2), 'utf-8');
69
89
  context.services.log(` MCP config: ${rootMcpPath}`);
70
90
  context.services.log(` Server: agentic-qe`);
71
- context.services.log(` Learning: enabled`);
72
- context.services.log(` Workers: enabled`);
91
+ if (dbFree) {
92
+ context.services.log(` Memory backend: in-memory (database-free)`);
93
+ context.services.log(` Learning: disabled (db-free)`);
94
+ context.services.log(` Workers: disabled (db-free)`);
95
+ }
96
+ else {
97
+ context.services.log(` Learning: enabled`);
98
+ context.services.log(` Workers: enabled`);
99
+ }
73
100
  return {
74
101
  configured: true,
75
102
  mcpPath: rootMcpPath,