agentic-qe 3.13.3 → 3.13.4

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 (370) hide show
  1. package/.agents/skills/aqe-plan-work/SKILL.md +31 -0
  2. package/.agents/skills/aqe-plan-work/agents/openai.yaml +4 -0
  3. package/.agents/skills/aqe-plan-work/references/planning-framework.md +39 -0
  4. package/.agents/skills/aqe-research/SKILL.md +31 -0
  5. package/.agents/skills/aqe-research/agents/openai.yaml +4 -0
  6. package/.agents/skills/aqe-research/references/evidence-rules.md +21 -0
  7. package/.agents/skills/aqe-ruflo/SKILL.md +29 -0
  8. package/.claude/commands/pair/README.md +261 -0
  9. package/.claude/commands/pair/commands.md +546 -0
  10. package/.claude/commands/pair/config.md +510 -0
  11. package/.claude/commands/pair/examples.md +512 -0
  12. package/.claude/commands/pair/modes.md +348 -0
  13. package/.claude/commands/pair/session.md +407 -0
  14. package/.claude/commands/pair/start.md +209 -0
  15. package/.claude/commands/stream-chain/pipeline.md +121 -0
  16. package/.claude/commands/stream-chain/run.md +70 -0
  17. package/.claude/commands/training/README.md +9 -0
  18. package/.claude/commands/training/model-update.md +25 -0
  19. package/.claude/commands/training/neural-patterns.md +108 -0
  20. package/.claude/commands/training/neural-train.md +75 -0
  21. package/.claude/commands/training/pattern-learn.md +25 -0
  22. package/.claude/commands/training/specialization.md +63 -0
  23. package/.claude/commands/truth/start.md +143 -0
  24. package/.claude/commands/verify/check.md +50 -0
  25. package/.claude/commands/verify/start.md +128 -0
  26. package/.claude/helpers/v3/advisor-call.cjs +283 -0
  27. package/.claude/skills/README.md +54 -64
  28. package/.claude/skills/dual-mode/README.md +71 -0
  29. package/.claude/skills/dual-mode/dual-collect.md +103 -0
  30. package/.claude/skills/dual-mode/dual-coordinate.md +85 -0
  31. package/.claude/skills/dual-mode/dual-spawn.md +81 -0
  32. package/.claude/skills/skills-manifest.json +1 -1
  33. package/.codex/hooks/aqe-codex-hook.cjs +34 -9
  34. package/.codex/hooks.json +9 -9
  35. package/CHANGELOG.md +42 -0
  36. package/assets/skills/skills-manifest.json +1 -1
  37. package/dist/cli/bundle.js +5 -5
  38. package/dist/cli/chunks/adapter-JISQ35YY.js +2 -0
  39. package/dist/cli/chunks/{agent-booster-wasm-YIGGREZN.js → agent-booster-wasm-PR3RQWXF.js} +2 -2
  40. package/dist/cli/chunks/{agent-handler-64O7R55A.js → agent-handler-J5EPFBSZ.js} +2 -2
  41. package/dist/cli/chunks/{agent-memory-branch-2ZZBYUP3.js → agent-memory-branch-CCHI6QAA.js} +2 -2
  42. package/dist/cli/chunks/aqe-learning-engine-TVTNP76S.js +2 -0
  43. package/dist/cli/chunks/{arena-PF5WL2WM.js → arena-KMKBGSMY.js} +2 -2
  44. package/dist/cli/chunks/{arena-6YRNQNCX.js → arena-SI7IPVZ3.js} +4 -4
  45. package/dist/cli/chunks/{audit-R53FOYCK.js → audit-ZDKR3HT6.js} +3 -3
  46. package/dist/cli/chunks/base-WBCYKM45.js +2 -0
  47. package/dist/cli/chunks/{hnswlib-node-QOULNHXS.js → better-sqlite3-FXJFG2WH.js} +2 -2
  48. package/dist/cli/chunks/{brain-handler-J4ICUOUX.js → brain-handler-MSYMTM5B.js} +3 -3
  49. package/dist/cli/chunks/{branch-enumerator-YVPD43TG.js → branch-enumerator-FRAHCBTO.js} +2 -2
  50. package/dist/cli/chunks/{browser-TKVHX53S.js → browser-4KHKVNYC.js} +2 -2
  51. package/dist/cli/chunks/browser-workflow-4JM3IWCS.js +2 -0
  52. package/dist/cli/chunks/{chunk-GSG5FASF.js → chunk-26SNR2EK.js} +3 -3
  53. package/dist/cli/chunks/{chunk-JG267MVB.js → chunk-27FWRWOB.js} +2 -2
  54. package/dist/cli/chunks/{chunk-NIA6VTIH.js → chunk-27REOPQK.js} +2 -2
  55. package/dist/cli/chunks/{chunk-4RYU4WMW.js → chunk-2Q73TQUQ.js} +1 -1
  56. package/dist/cli/chunks/{chunk-A22RTEJ3.js → chunk-344CLTV7.js} +2 -2
  57. package/dist/cli/chunks/{chunk-MGKJFO57.js → chunk-3RSF7POD.js} +2 -2
  58. package/dist/cli/chunks/{chunk-CVFUANMU.js → chunk-44SYMJ4T.js} +2 -2
  59. package/dist/cli/chunks/{chunk-22WFXSXB.js → chunk-4FP4PJ45.js} +2 -2
  60. package/dist/cli/chunks/{chunk-DTOKJKSE.js → chunk-4HVVVVUF.js} +2 -2
  61. package/dist/cli/chunks/{chunk-QGJYKXUO.js → chunk-55E62F4T.js} +1 -1
  62. package/dist/cli/chunks/{chunk-RWPWD5GG.js → chunk-56QR72EB.js} +2 -2
  63. package/dist/cli/chunks/{chunk-NUPAGPN6.js → chunk-5DESO7E4.js} +2 -2
  64. package/dist/cli/chunks/{chunk-PHNNAIFA.js → chunk-5IVXM3TE.js} +1 -1
  65. package/dist/cli/chunks/{chunk-TW5QWNT4.js → chunk-5R26MAMK.js} +2 -2
  66. package/dist/cli/chunks/{chunk-IZIYFVAZ.js → chunk-5RVWL2U3.js} +3 -3
  67. package/dist/cli/chunks/{chunk-OX6WPOGR.js → chunk-6BHRSGR7.js} +3 -3
  68. package/dist/cli/chunks/{chunk-4Z2AKQP4.js → chunk-6CZUQA4G.js} +1 -1
  69. package/dist/cli/chunks/{chunk-FGIZVGIE.js → chunk-6GNVVQW3.js} +2 -2
  70. package/dist/cli/chunks/{chunk-7AHQ7ROU.js → chunk-6VNUASTQ.js} +2 -2
  71. package/dist/cli/chunks/{chunk-B7XZJBMT.js → chunk-6XCULO27.js} +2 -2
  72. package/dist/cli/chunks/{chunk-LOZRBK2Z.js → chunk-6XVP6BGM.js} +2 -2
  73. package/dist/cli/chunks/{chunk-APXJJRU4.js → chunk-75CFWCQV.js} +2 -2
  74. package/dist/cli/chunks/{chunk-37GCWGXT.js → chunk-7EL5QEMJ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-3NML6POU.js → chunk-7YAHECC5.js} +2 -2
  76. package/dist/cli/chunks/{chunk-N3KQRDTM.js → chunk-A2G26WU4.js} +1 -1
  77. package/dist/cli/chunks/{chunk-X737I4SO.js → chunk-AROPZPNG.js} +1 -1
  78. package/dist/cli/chunks/{chunk-IKPBQZQP.js → chunk-BQRCNRTJ.js} +2 -2
  79. package/dist/cli/chunks/{chunk-JLFU5SCI.js → chunk-C3AF5Z55.js} +2 -2
  80. package/dist/cli/chunks/{chunk-FF53QW6C.js → chunk-C75V5PTW.js} +1 -1
  81. package/dist/cli/chunks/{chunk-HJNFXYX4.js → chunk-CQP6BDSF.js} +1 -1
  82. package/dist/cli/chunks/{chunk-ADBTOUOX.js → chunk-CTNDSP2M.js} +1 -1
  83. package/dist/cli/chunks/{chunk-VRTNRI4H.js → chunk-CW7LDLJ2.js} +2 -2
  84. package/dist/cli/chunks/{chunk-PHBGMXTR.js → chunk-DQ247474.js} +2 -2
  85. package/dist/cli/chunks/{chunk-66KIIH6V.js → chunk-E7FCVH32.js} +2 -2
  86. package/dist/cli/chunks/{chunk-64C4SS66.js → chunk-EEHEMDNV.js} +2 -2
  87. package/dist/cli/chunks/{chunk-2MLPO3RZ.js → chunk-EPSF2ERW.js} +2 -2
  88. package/dist/cli/chunks/{chunk-AXXFY7PX.js → chunk-ERKYIV25.js} +2 -2
  89. package/dist/cli/chunks/{chunk-VFZNVJP2.js → chunk-ESMSH7HG.js} +2 -2
  90. package/dist/cli/chunks/{chunk-PS32DXYF.js → chunk-EUIUWZF4.js} +3 -3
  91. package/dist/cli/chunks/{chunk-764G7VK6.js → chunk-FBXWU37F.js} +1 -1
  92. package/dist/cli/chunks/{chunk-NF2N2FIY.js → chunk-FJSL7TWU.js} +1 -1
  93. package/dist/cli/chunks/{chunk-6I2L22WS.js → chunk-FZ4MUDHZ.js} +1 -1
  94. package/dist/cli/chunks/{chunk-62F5M5OO.js → chunk-GGZB2ZBB.js} +1 -1
  95. package/dist/cli/chunks/{chunk-HOIH542Y.js → chunk-GIU26D5G.js} +1 -1
  96. package/dist/cli/chunks/{chunk-7TG7LJAB.js → chunk-GNFKG2LX.js} +2 -2
  97. package/dist/cli/chunks/{chunk-J5AIMM2J.js → chunk-GOFP47XU.js} +1 -1
  98. package/dist/cli/chunks/{chunk-AJ45QR3K.js → chunk-GOHWEQEP.js} +2 -2
  99. package/dist/cli/chunks/{chunk-MNEQESQJ.js → chunk-GRMKN44A.js} +3 -3
  100. package/dist/cli/chunks/{chunk-H4XZOIV6.js → chunk-HGBVGEUE.js} +2 -2
  101. package/dist/cli/chunks/{chunk-JQTDNUHA.js → chunk-HGY62IYZ.js} +2 -2
  102. package/dist/cli/chunks/{chunk-2G2XD6EM.js → chunk-HN2DD2DQ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-N4OBRS6S.js → chunk-II2RP3MY.js} +2 -2
  104. package/dist/cli/chunks/{chunk-CXPMA7LY.js → chunk-IN5KRJSE.js} +1 -1
  105. package/dist/cli/chunks/{chunk-TNM7X2GD.js → chunk-ISGKDLZ7.js} +2 -2
  106. package/dist/cli/chunks/{chunk-TGVDKSSS.js → chunk-ITQCSIYG.js} +1 -1
  107. package/dist/cli/chunks/{chunk-PY55ZD2G.js → chunk-IU5SILCS.js} +2 -2
  108. package/dist/cli/chunks/{chunk-JOHWWTJF.js → chunk-IUFNB6I6.js} +2 -2
  109. package/dist/cli/chunks/{chunk-UAXFRKR3.js → chunk-IVZA5XTW.js} +2 -2
  110. package/dist/cli/chunks/{chunk-A6J5MAVO.js → chunk-JBHGMLN7.js} +10 -10
  111. package/dist/cli/chunks/{chunk-UF7JKDWB.js → chunk-JDADACZZ.js} +1 -1
  112. package/dist/cli/chunks/{chunk-5IH22DLD.js → chunk-JJ5YIKTJ.js} +3 -3
  113. package/dist/cli/chunks/{chunk-TRPRFW27.js → chunk-KB4S7MGB.js} +2 -2
  114. package/dist/cli/chunks/{chunk-XRF5MX4Q.js → chunk-KDICUKYX.js} +2 -2
  115. package/dist/cli/chunks/{chunk-EEG4G5JG.js → chunk-KE656E6T.js} +3 -3
  116. package/dist/cli/chunks/{chunk-F6V5POSK.js → chunk-KO3UQYGY.js} +10 -10
  117. package/dist/cli/chunks/{chunk-WRC66JTK.js → chunk-KQLJILCZ.js} +1 -1
  118. package/dist/cli/chunks/{chunk-C7AXBCMS.js → chunk-KZAVYHH7.js} +4 -4
  119. package/dist/cli/chunks/{chunk-7MBPKAQ3.js → chunk-L3UTZEVW.js} +2 -2
  120. package/dist/cli/chunks/{chunk-RRHIEG4Y.js → chunk-LASZCR5G.js} +2 -2
  121. package/dist/cli/chunks/{chunk-PHGOMAIS.js → chunk-LEIG3KIG.js} +2 -2
  122. package/dist/cli/chunks/{chunk-ZIYCZZYD.js → chunk-LIMFWEUI.js} +2 -2
  123. package/dist/cli/chunks/{chunk-VGWHFFK6.js → chunk-LJSHQU2P.js} +5 -5
  124. package/dist/cli/chunks/{chunk-3J2QITXC.js → chunk-LUAYTM77.js} +1 -1
  125. package/dist/cli/chunks/{chunk-GNCGRDQ2.js → chunk-MANWLRAW.js} +1 -1
  126. package/dist/cli/chunks/{chunk-JBWXBDJX.js → chunk-MP3RCZ75.js} +1 -1
  127. package/dist/cli/chunks/{chunk-WVWWTRKT.js → chunk-MPVOZKUP.js} +1 -1
  128. package/dist/cli/chunks/{chunk-A547LEUW.js → chunk-MWWTYPFL.js} +2 -2
  129. package/dist/cli/chunks/{chunk-IRX2THND.js → chunk-N57M7UPQ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-TK6CHESH.js → chunk-N7LIYK7Z.js} +1 -1
  131. package/dist/cli/chunks/{chunk-ORXDKBZC.js → chunk-NAAPL2HK.js} +1 -1
  132. package/dist/cli/chunks/{chunk-IH47VGC7.js → chunk-NAZFAGJ5.js} +2 -2
  133. package/dist/cli/chunks/{chunk-M7XDTQHX.js → chunk-NQJLUY2K.js} +2 -2
  134. package/dist/cli/chunks/{chunk-6C3PDY72.js → chunk-NQVF4M7L.js} +1 -1
  135. package/dist/cli/chunks/{chunk-SJWTNKPY.js → chunk-NW4YPUPN.js} +3 -3
  136. package/dist/cli/chunks/{chunk-46U73TST.js → chunk-O45CEMVF.js} +1 -1
  137. package/dist/cli/chunks/{chunk-37I4AMCT.js → chunk-O74V7MB4.js} +2 -2
  138. package/dist/cli/chunks/{chunk-ZI7BWJJW.js → chunk-OF7674H5.js} +2 -2
  139. package/dist/cli/chunks/{chunk-P5CQMDFQ.js → chunk-OR2RC7ZH.js} +2 -2
  140. package/dist/cli/chunks/{chunk-ZLTAAROU.js → chunk-OU2YHXJY.js} +2 -2
  141. package/dist/cli/chunks/{chunk-JHOJG5VO.js → chunk-OU3SYEYJ.js} +1 -1
  142. package/dist/cli/chunks/{chunk-N7IRBQ4D.js → chunk-PD2ZSCEH.js} +1 -1
  143. package/dist/cli/chunks/{chunk-DSUEJK33.js → chunk-PFQLB4XP.js} +2 -2
  144. package/dist/cli/chunks/{chunk-V6W4IHS5.js → chunk-PI55PHUL.js} +2 -2
  145. package/dist/cli/chunks/{chunk-EMH54CO7.js → chunk-PIYDPOW6.js} +2 -2
  146. package/dist/cli/chunks/{chunk-DSGKRXHF.js → chunk-PJFQGNRW.js} +1 -1
  147. package/dist/cli/chunks/{chunk-L4O2645U.js → chunk-PRHLV6FS.js} +1 -1
  148. package/dist/cli/chunks/chunk-Q4VZXT6X.js +2 -0
  149. package/dist/cli/chunks/{chunk-H2BR5MCX.js → chunk-QENUKXPP.js} +2 -2
  150. package/dist/cli/chunks/chunk-QGH54HTH.js +2 -0
  151. package/dist/cli/chunks/{chunk-2BYRQ5MV.js → chunk-QXF6EQFP.js} +2 -2
  152. package/dist/cli/chunks/{chunk-ZU3XUBDQ.js → chunk-RCRKCMN5.js} +1 -1
  153. package/dist/cli/chunks/{chunk-5A5EC5RD.js → chunk-RKNKFLCQ.js} +2 -2
  154. package/dist/cli/chunks/{chunk-5IVOY76M.js → chunk-RLZZTFEN.js} +2 -2
  155. package/dist/cli/chunks/{chunk-CBLKYGKT.js → chunk-RO4BYINM.js} +2 -2
  156. package/dist/cli/chunks/{chunk-K2D3YW2N.js → chunk-SFRYDGLF.js} +1 -1
  157. package/dist/cli/chunks/{chunk-UX434RY5.js → chunk-SJ26ZR75.js} +2 -2
  158. package/dist/cli/chunks/{chunk-LLQG3F4H.js → chunk-SPTCNM45.js} +2 -2
  159. package/dist/cli/chunks/{chunk-KQFMCVBH.js → chunk-SQCACQUM.js} +2 -2
  160. package/dist/cli/chunks/{chunk-3CFWNT3F.js → chunk-TCYSMSBO.js} +2 -2
  161. package/dist/cli/chunks/{chunk-W6OIDL4J.js → chunk-TFFEB7XD.js} +2 -2
  162. package/dist/cli/chunks/{chunk-RU23JXCG.js → chunk-TM6LLT4G.js} +3 -3
  163. package/dist/cli/chunks/{chunk-WHUQDBV7.js → chunk-TO7FTPRV.js} +2 -2
  164. package/dist/cli/chunks/{chunk-QZ3EIONO.js → chunk-U52IQFMP.js} +1 -1
  165. package/dist/cli/chunks/{chunk-33SPAMQZ.js → chunk-UAEP2ZUQ.js} +2 -2
  166. package/dist/cli/chunks/{chunk-OD5R7HRI.js → chunk-UNMWI4QU.js} +1 -1
  167. package/dist/cli/chunks/{chunk-U7DGRHSB.js → chunk-UOO7P2AK.js} +2 -2
  168. package/dist/cli/chunks/{chunk-QFANYWC5.js → chunk-UQFMQOZB.js} +1 -1
  169. package/dist/cli/chunks/{chunk-2QKSIHXO.js → chunk-VDPQ7NVG.js} +1 -1
  170. package/dist/cli/chunks/{chunk-QP4UKSUJ.js → chunk-VLELNETG.js} +2 -2
  171. package/dist/cli/chunks/{chunk-KQ5GLUOB.js → chunk-VOAXVNO5.js} +4 -4
  172. package/dist/cli/chunks/{chunk-QZS3XCU5.js → chunk-VZO4V4R4.js} +2 -2
  173. package/dist/cli/chunks/{chunk-BDOD534O.js → chunk-W37WY3OL.js} +2 -2
  174. package/dist/cli/chunks/{chunk-UWBHR4EZ.js → chunk-WCUXA3NV.js} +1 -1
  175. package/dist/cli/chunks/{chunk-RMQRSZB4.js → chunk-WSQE3VZB.js} +1 -1
  176. package/dist/cli/chunks/{chunk-MYR6CBXC.js → chunk-WUXCL65V.js} +2 -2
  177. package/dist/cli/chunks/{chunk-OU5CZFBG.js → chunk-X5JMTHXC.js} +3 -3
  178. package/dist/cli/chunks/{chunk-XRQGWUDX.js → chunk-X67O2KUE.js} +2 -2
  179. package/dist/cli/chunks/{chunk-HEF6XKA5.js → chunk-XBSBVPSM.js} +2 -2
  180. package/dist/cli/chunks/{chunk-KBQRYAHZ.js → chunk-XEI5LLHX.js} +2 -2
  181. package/dist/cli/chunks/{chunk-LWPCGOQM.js → chunk-XF4F5ZXO.js} +2 -2
  182. package/dist/cli/chunks/{chunk-SAMAYDVS.js → chunk-XLP44YGX.js} +2 -2
  183. package/dist/cli/chunks/{chunk-CW7BWFFF.js → chunk-XTHRSBMJ.js} +2 -2
  184. package/dist/cli/chunks/{chunk-VKUH57JE.js → chunk-Y7VWCP35.js} +1 -1
  185. package/dist/cli/chunks/{chunk-6R6QGQ7D.js → chunk-YQI6SOUO.js} +1 -1
  186. package/dist/cli/chunks/{chunk-GTURQ454.js → chunk-YZGA4ELM.js} +2 -2
  187. package/dist/cli/chunks/{chunk-SSXCHSVM.js → chunk-Z6FK7T7J.js} +2 -2
  188. package/dist/cli/chunks/{chunk-UOJ26GXD.js → chunk-Z7FVGJYC.js} +2 -2
  189. package/dist/cli/chunks/{chunk-DPJLA7JW.js → chunk-ZAT65V6I.js} +2 -2
  190. package/dist/cli/chunks/{chunk-J65XQ6WE.js → chunk-ZYCPTARG.js} +2 -2
  191. package/dist/cli/chunks/{ci-G2NEYLVO.js → ci-DK4FGREO.js} +2 -2
  192. package/dist/cli/chunks/{ci-output-SZFEXGBU.js → ci-output-HQBBQQES.js} +2 -2
  193. package/dist/cli/chunks/{circuit-breaker-ZD7PJY6N.js → circuit-breaker-MJCS46DN.js} +2 -2
  194. package/dist/cli/chunks/{claude-flow-setup-DAVANGUJ.js → claude-flow-setup-IIQT52H4.js} +2 -2
  195. package/dist/cli/chunks/client-FNDZB4TY.js +2 -0
  196. package/dist/cli/chunks/{cline-installer-WCPKWLY7.js → cline-installer-7SPKUNNZ.js} +2 -2
  197. package/dist/cli/chunks/{code-324ZJR3V.js → code-V2B4FP3X.js} +2 -2
  198. package/dist/cli/chunks/{code-index-extractor-EWVSXJHR.js → code-index-extractor-IRGAI76Y.js} +2 -2
  199. package/dist/cli/chunks/codex-installer-PDFCYRU6.js +15 -0
  200. package/dist/cli/chunks/{completions-ZAWBZWYK.js → completions-TAJ6N7YZ.js} +2 -2
  201. package/dist/cli/chunks/{complexity-analyzer-S3H2IRON.js → complexity-analyzer-JHQKQKBG.js} +2 -2
  202. package/dist/cli/chunks/{continuedev-installer-4DDFAJ26.js → continuedev-installer-DESZXCLC.js} +2 -2
  203. package/dist/cli/chunks/{copilot-installer-KBBAL3G5.js → copilot-installer-OQPXBLWS.js} +2 -2
  204. package/dist/cli/chunks/core-handlers-S37RHLKP.js +2 -0
  205. package/dist/cli/chunks/{cost-tracker-2YM7SGBW.js → cost-tracker-KHDFSCAJ.js} +2 -2
  206. package/dist/cli/chunks/{coverage-6CCBAORJ.js → coverage-T7EENIDE.js} +3 -3
  207. package/dist/cli/chunks/cross-domain-router-7ZHDB2V3.js +2 -0
  208. package/dist/cli/chunks/{cursor-installer-24DKXNU5.js → cursor-installer-X6BFU5QU.js} +2 -2
  209. package/dist/cli/chunks/{daemon-M2PSDIZF.js → daemon-22NOG5XI.js} +3 -3
  210. package/dist/cli/chunks/{daemon-JLF6CRBS.js → daemon-UTPP4JCG.js} +4 -4
  211. package/dist/cli/chunks/{dag-attention-scheduler-Y5HSZDRV.js → dag-attention-scheduler-XI6DG3FW.js} +2 -2
  212. package/dist/cli/chunks/{detect-6Y227IJ6.js → detect-7IMQGJ5I.js} +2 -2
  213. package/dist/cli/chunks/{dist-node-EGOJXGTA.js → dist-node-YMLM4K7J.js} +2 -2
  214. package/dist/cli/chunks/{domain-handler-G3JEWRE5.js → domain-handler-LRTJGTEH.js} +2 -2
  215. package/dist/cli/chunks/{domain-transfer-XOHI3EMJ.js → domain-transfer-HZJ3WUCT.js} +2 -2
  216. package/dist/cli/chunks/dream-BEVYNIOO.js +2 -0
  217. package/dist/cli/chunks/{embed-and-insert-pattern-CSSA55L4.js → embed-and-insert-pattern-QSRN7Z5Q.js} +2 -2
  218. package/dist/cli/chunks/{eval-NHBXOXDV.js → eval-JVVVQVV6.js} +2 -2
  219. package/dist/cli/chunks/{experience-capture-middleware-B7ZDV5UY.js → experience-capture-middleware-ORZN3ROJ.js} +3 -3
  220. package/dist/cli/chunks/{fast-paths-XGKSBALA.js → fast-paths-LUFARZR5.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-NBUDJSWJ.js → feature-flags-2XC4ECLW.js} +2 -2
  222. package/dist/cli/chunks/{feature-flags-ZVD73ZYK.js → feature-flags-ZHQESXIP.js} +2 -2
  223. package/dist/cli/chunks/{file-discovery-C42TEUKT.js → file-discovery-UHXZQ7GS.js} +2 -2
  224. package/dist/cli/chunks/{fleet-LF77P3BW.js → fleet-FUQ6G4SB.js} +3 -3
  225. package/dist/cli/chunks/{gnn-wrapper-UXNT7BEN.js → gnn-wrapper-A4E6OKGD.js} +2 -2
  226. package/dist/cli/chunks/{heartbeat-handler-C4LMU5LA.js → heartbeat-handler-3JKQORXA.js} +4 -4
  227. package/dist/cli/chunks/heartbeat-scheduler-K4YLB3X4.js +2 -0
  228. package/dist/cli/chunks/hnsw-adapter-PPR3LTMA.js +2 -0
  229. package/dist/cli/chunks/hnsw-index-ZSKFT4LZ.js +2 -0
  230. package/dist/cli/chunks/{hnsw-legacy-bridge-EHHBIWS3.js → hnsw-legacy-bridge-AHKFKM2J.js} +2 -2
  231. package/dist/cli/chunks/{better-sqlite3-OW5HIPEN.js → hnswlib-node-BP5CZGMD.js} +2 -2
  232. package/dist/cli/chunks/{hooks-AGE3HCFI.js → hooks-JNW5ZB2E.js} +10 -10
  233. package/dist/cli/chunks/hybrid-router-4SXBHTOY.js +2 -0
  234. package/dist/cli/chunks/{hypergraph-engine-E5QX5MEB.js → hypergraph-engine-3DTAMNSJ.js} +2 -2
  235. package/dist/cli/chunks/{hypergraph-handler-ZZHBANYB.js → hypergraph-handler-ZV4AZRGF.js} +3 -3
  236. package/dist/cli/chunks/impact-analyzer-55GE7EQD.js +2 -0
  237. package/dist/cli/chunks/{init-handler-PNVRBZZT.js → init-handler-NPOUX47N.js} +10 -6
  238. package/dist/cli/chunks/init-wizard-EUQLSGI6.js +2 -0
  239. package/dist/cli/chunks/kernel-BSGSVYPM.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-TR53QKPU.js → kilocode-installer-D35TR6LG.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-MJW6LCAX.js → kiro-installer-OHHTQENO.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-OITIVT5J.js +2 -0
  243. package/dist/cli/chunks/{learning-6LLGHP2Q.js → learning-24PCHLWU.js} +3 -3
  244. package/dist/cli/chunks/{llm-router-DBLV3VGG.js → llm-router-XLTE52H5.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-RUPU52AR.js +2 -0
  246. package/dist/cli/chunks/{load-LAZ3E5PE.js → load-BHMK4FIL.js} +2 -2
  247. package/dist/cli/chunks/load-test-ZV3C55ZE.js +2 -0
  248. package/dist/cli/chunks/{mcp-L5QXHSEY.js → mcp-V4MAYT7C.js} +2 -2
  249. package/dist/cli/chunks/{memory-YR5PCMWA.js → memory-PDA7MQ7E.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-S3KCPHCF.js +2 -0
  251. package/dist/cli/chunks/{memory-handlers-BSRTZQYR.js → memory-handlers-X5BLXOSH.js} +2 -2
  252. package/dist/cli/chunks/{multi-model-executor-RECZ3ACW.js → multi-model-executor-KECHOXKD.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-4TDUB7HH.js → opencode-installer-LWSCQOOZ.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-PHDKJ5C4.js → orchestrator-ENEBTEUW.js} +6 -6
  255. package/dist/cli/chunks/pattern-null-store-ILVDKSCX.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-QK2FADRS.js → pattern-usage-recorder-XIHGXYZZ.js} +2 -2
  257. package/dist/cli/chunks/{pipeline-JQJYSN43.js → pipeline-GQOJM3LU.js} +2 -2
  258. package/dist/cli/chunks/platform-L56TGXGZ.js +2 -0
  259. package/dist/cli/chunks/{plugin-766MBGK6.js → plugin-SZ6PZKYX.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-XQERZNSK.js → prime-radiant-advanced-wasm-SID5FQFW.js} +2 -2
  261. package/dist/cli/chunks/protocol-executor-GDRHCW3Q.js +2 -0
  262. package/dist/cli/chunks/{protocol-handler-FAK4MMNA.js → protocol-handler-5MMNVVPX.js} +2 -2
  263. package/dist/cli/chunks/{prove-HYBVXOGW.js → prove-DJ6BQ2AK.js} +2 -2
  264. package/dist/cli/chunks/provider-manager-BS4MVCSH.js +2 -0
  265. package/dist/cli/chunks/qe-reasoning-bank-P3ARGHDN.js +2 -0
  266. package/dist/cli/chunks/{quality-EGSO2RAX.js → quality-WKC4JCB3.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-RK32VMO7.js → quality-gate-CVHVSORK.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-GI7GNVDM.js +2 -0
  269. package/dist/cli/chunks/{real-embeddings-GI7CRHE2.js → real-embeddings-DN2MEJVM.js} +2 -2
  270. package/dist/cli/chunks/{roocode-installer-BS3XWJJI.js → roocode-installer-LTAQJWIH.js} +2 -2
  271. package/dist/cli/chunks/router-YU6MLJBV.js +2 -0
  272. package/dist/cli/chunks/routing-feedback-D6B2SK5V.js +2 -0
  273. package/dist/cli/chunks/{routing-handler-XMGRJDHH.js → routing-handler-PSWR2UCT.js} +2 -2
  274. package/dist/cli/chunks/{ruvector-commands-NDL3ONNC.js → ruvector-commands-VTP6Y7PN.js} +2 -2
  275. package/dist/cli/chunks/{rvf-dual-writer-XAJOYGJ2.js → rvf-dual-writer-EBUMXPRO.js} +2 -2
  276. package/dist/cli/chunks/{rvf-migration-adapter-WXFRZZ26.js → rvf-migration-adapter-5N7GHMD3.js} +2 -2
  277. package/dist/cli/chunks/{rvf-migration-coordinator-WFXA2VUQ.js → rvf-migration-coordinator-GQKDBNRR.js} +2 -2
  278. package/dist/cli/chunks/rvf-native-adapter-M7ZVRN5Z.js +2 -0
  279. package/dist/cli/chunks/{rvf-store-integrity-I7PFJZCK.js → rvf-store-integrity-LR3SYGQK.js} +2 -2
  280. package/dist/cli/chunks/safe-db-3OHTLXG7.js +2 -0
  281. package/dist/cli/chunks/schedule-H43ADREQ.js +2 -0
  282. package/dist/cli/chunks/scheduler-CGSXNEPJ.js +2 -0
  283. package/dist/cli/chunks/{security-H3WY76GF.js → security-YDWLYXYD.js} +3 -3
  284. package/dist/cli/chunks/{shared-rvf-adapter-GRTJCLW6.js → shared-rvf-adapter-I3HQY7DE.js} +2 -2
  285. package/dist/cli/chunks/{shared-rvf-dual-writer-46XE5R2B.js → shared-rvf-dual-writer-2UADEA5N.js} +2 -2
  286. package/dist/cli/chunks/sqlite-persistence-V6U5FKVK.js +2 -0
  287. package/dist/cli/chunks/{status-handler-VUIFMY4F.js → status-handler-QRHI3F4V.js} +2 -2
  288. package/dist/cli/chunks/{structural-health-I7HC477E.js → structural-health-FWKE63CM.js} +2 -2
  289. package/dist/cli/chunks/{sync-M6LUV5R4.js → sync-2QRCT5MT.js} +2 -2
  290. package/dist/cli/chunks/{sync-RO2YGMBF.js → sync-E32MBAOF.js} +2 -2
  291. package/dist/cli/chunks/{task-handler-BJJTZ7AU.js → task-handler-C7BKMOCL.js} +2 -2
  292. package/dist/cli/chunks/{task-handlers-B6S4NEN3.js → task-handlers-PADWLLDO.js} +3 -3
  293. package/dist/cli/chunks/{test-BE7EM6Y6.js → test-KX4UKHSX.js} +4 -4
  294. package/dist/cli/chunks/{test-scheduling-4ISKEFR6.js → test-scheduling-5WKIWH4H.js} +3 -3
  295. package/dist/cli/chunks/{token-bootstrap-BOIYBZHW.js → token-bootstrap-6SKOJM3U.js} +2 -2
  296. package/dist/cli/chunks/{token-usage-6ZZC7RLT.js → token-usage-V6JW55RV.js} +2 -2
  297. package/dist/cli/chunks/{transformers-55VI4OGW.js → transformers-3UPFBYSB.js} +2 -2
  298. package/dist/cli/chunks/{tree-sitter-wasm-parser-6GRRGB3K.js → tree-sitter-wasm-parser-UCY4S2DU.js} +2 -2
  299. package/dist/cli/chunks/{types-SXDF7QQT.js → types-XNMNQGET.js} +2 -2
  300. package/dist/cli/chunks/unified-memory-H2J5BHPY.js +2 -0
  301. package/dist/cli/chunks/unified-memory-hnsw-LFGIWMTS.js +2 -0
  302. package/dist/cli/chunks/unified-persistence-F6W7EXU5.js +2 -0
  303. package/dist/cli/chunks/{upgrade-PMPB7NGB.js → upgrade-MVTMTOPL.js} +2 -2
  304. package/dist/cli/chunks/{validate-G37QKKXK.js → validate-OJWR2AGZ.js} +2 -2
  305. package/dist/cli/chunks/{validate-swarm-6X22J3VD.js → validate-swarm-2RGSF2K2.js} +2 -2
  306. package/dist/cli/chunks/{vibium-SGBJKHQL.js → vibium-O3ZLAEEZ.js} +2 -2
  307. package/dist/cli/chunks/visual-security-EHVU32UE.js +2 -0
  308. package/dist/cli/chunks/{web-tree-sitter-S46Y5BUJ.js → web-tree-sitter-6VPASTI4.js} +2 -2
  309. package/dist/cli/chunks/{windsurf-installer-PTYCETNM.js → windsurf-installer-CINHOW3N.js} +2 -2
  310. package/dist/cli/chunks/{witness-chain-5SCRFT2K.js → witness-chain-2NXW7FT7.js} +2 -2
  311. package/dist/cli/chunks/witness-chain-BIICGRHC.js +2 -0
  312. package/dist/cli/chunks/{witness-key-manager-XIAMRVUZ.js → witness-key-manager-ODW4DJWT.js} +2 -2
  313. package/dist/cli/chunks/{workflow-BPQA2NAI.js → workflow-BFGS2GAU.js} +4 -4
  314. package/dist/cli/chunks/workflow-orchestrator-PVTYPYY4.js +2 -0
  315. package/dist/cli/chunks/{wrappers-IWZZZOAU.js → wrappers-VEVVSVMS.js} +2 -2
  316. package/dist/cli/commands/platform.d.ts +17 -0
  317. package/dist/cli/commands/platform.js +91 -41
  318. package/dist/cli/handlers/init-handler.d.ts +1 -0
  319. package/dist/cli/handlers/init-handler.js +9 -3
  320. package/dist/init/codex-installer.d.ts +22 -3
  321. package/dist/init/codex-installer.js +132 -54
  322. package/dist/init/codex-skill-manifest.d.ts +43 -0
  323. package/dist/init/codex-skill-manifest.js +21 -0
  324. package/dist/init/orchestrator.js +1 -0
  325. package/dist/init/phases/09-assets.js +10 -1
  326. package/dist/init/phases/phase-interface.d.ts +2 -0
  327. package/dist/mcp/bundle.js +2 -2
  328. package/package.json +5 -1
  329. package/dist/cli/chunks/adapter-NIUFP6QX.js +0 -2
  330. package/dist/cli/chunks/aqe-learning-engine-DC4DNCPB.js +0 -2
  331. package/dist/cli/chunks/base-EXD3ULZT.js +0 -2
  332. package/dist/cli/chunks/browser-workflow-KOMASCB7.js +0 -2
  333. package/dist/cli/chunks/chunk-T5L65R23.js +0 -2
  334. package/dist/cli/chunks/client-ZJQMJO5N.js +0 -2
  335. package/dist/cli/chunks/codex-installer-HVSZBHH2.js +0 -10
  336. package/dist/cli/chunks/core-handlers-U2YJLH6O.js +0 -2
  337. package/dist/cli/chunks/cross-domain-router-E7EMKZEK.js +0 -2
  338. package/dist/cli/chunks/dream-ZMNQYBJO.js +0 -2
  339. package/dist/cli/chunks/heartbeat-scheduler-2JL4MAJR.js +0 -2
  340. package/dist/cli/chunks/hnsw-adapter-AZD6O35G.js +0 -2
  341. package/dist/cli/chunks/hnsw-index-WJLE4S5L.js +0 -2
  342. package/dist/cli/chunks/hybrid-router-YTKJBAS2.js +0 -2
  343. package/dist/cli/chunks/impact-analyzer-CX56GZXA.js +0 -2
  344. package/dist/cli/chunks/init-wizard-WE6HIC66.js +0 -2
  345. package/dist/cli/chunks/kernel-MT55LNNI.js +0 -2
  346. package/dist/cli/chunks/knowledge-graph-WN3LQ2W7.js +0 -2
  347. package/dist/cli/chunks/llm-router-service-NKHEQQMN.js +0 -2
  348. package/dist/cli/chunks/load-test-3WIQASDF.js +0 -2
  349. package/dist/cli/chunks/memory-backend-W6YSNT6O.js +0 -2
  350. package/dist/cli/chunks/pattern-null-store-IV3ZESTR.js +0 -2
  351. package/dist/cli/chunks/platform-FA5TOPTH.js +0 -2
  352. package/dist/cli/chunks/protocol-executor-GFAG5G6K.js +0 -2
  353. package/dist/cli/chunks/provider-manager-TIVIJIYH.js +0 -2
  354. package/dist/cli/chunks/qe-reasoning-bank-BYE7YF6Y.js +0 -2
  355. package/dist/cli/chunks/queen-coordinator-WOHYVV7A.js +0 -2
  356. package/dist/cli/chunks/router-VUW2UVCN.js +0 -2
  357. package/dist/cli/chunks/routing-feedback-WSUQMZAK.js +0 -2
  358. package/dist/cli/chunks/rvf-native-adapter-RHZCXVN6.js +0 -2
  359. package/dist/cli/chunks/safe-db-NTWEW7ZM.js +0 -2
  360. package/dist/cli/chunks/schedule-WEVC2GW2.js +0 -2
  361. package/dist/cli/chunks/scheduler-XHI5AJIS.js +0 -2
  362. package/dist/cli/chunks/sqlite-persistence-QZUPKMHP.js +0 -2
  363. package/dist/cli/chunks/unified-memory-QKWUSEBV.js +0 -2
  364. package/dist/cli/chunks/unified-memory-hnsw-Z2UQZRTK.js +0 -2
  365. package/dist/cli/chunks/unified-persistence-AVK2NSMI.js +0 -2
  366. package/dist/cli/chunks/visual-security-64UFH23G.js +0 -2
  367. package/dist/cli/chunks/witness-chain-ZIVSDX6C.js +0 -2
  368. package/dist/cli/chunks/workflow-orchestrator-TYP4MI2V.js +0 -2
  369. package/dist/cli/commands/init.d.ts +0 -19
  370. package/dist/cli/commands/init.js +0 -318
@@ -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 { selectCodexSkills } from './codex-skill-manifest.js';
12
13
  import { createPlatformConfigGenerator, } from './platform-config-generator.js';
13
14
  // ============================================================================
14
15
  // Codex Installer Class
@@ -18,6 +19,8 @@ export class CodexInstaller {
18
19
  overwrite;
19
20
  options;
20
21
  generator;
22
+ static AGENTS_START = '<!-- BEGIN AGENTIC-QE CODEX -->';
23
+ static AGENTS_END = '<!-- END AGENTIC-QE CODEX -->';
21
24
  constructor(options) {
22
25
  this.projectRoot = options.projectRoot;
23
26
  this.overwrite = options.overwrite ?? false;
@@ -36,13 +39,21 @@ export class CodexInstaller {
36
39
  agentsMdPath: '',
37
40
  hooksPath: join(this.projectRoot, '.codex', 'hooks.json'),
38
41
  skillsPath: join(this.projectRoot, '.agents', 'skills'),
42
+ components: {
43
+ mcp: { status: 'skipped' },
44
+ rules: { status: 'skipped' },
45
+ hooks: { status: 'unavailable' },
46
+ skills: { status: 'unavailable' },
47
+ },
39
48
  };
40
49
  try {
41
- // Generate TOML MCP config
42
50
  const mcpConfig = this.generator.generateMcpConfig('codex', { memoryBackend: this.options.memoryBackend });
43
51
  const configPath = join(this.projectRoot, mcpConfig.path);
44
52
  result.configPath = configPath;
45
- if (!existsSync(configPath) || this.overwrite) {
53
+ // Generate TOML MCP config unless the caller explicitly requested a
54
+ // platform-only install (rules, hooks, and skills remain useful).
55
+ const configExists = existsSync(configPath);
56
+ if (this.options.installMcp !== false && (!configExists || this.overwrite)) {
46
57
  const configDir = dirname(configPath);
47
58
  if (!existsSync(configDir)) {
48
59
  mkdirSync(configDir, { recursive: true });
@@ -55,30 +66,61 @@ export class CodexInstaller {
55
66
  writeFileSync(configPath, mcpConfig.content);
56
67
  }
57
68
  result.mcpConfigured = true;
69
+ result.components.mcp.status = configExists ? 'updated' : 'installed';
70
+ }
71
+ else if (this.options.installMcp !== false && configExists) {
72
+ result.components.mcp.status = 'preserved';
58
73
  }
74
+ }
75
+ catch (error) {
76
+ this.recordComponentFailure(result, 'mcp', error);
77
+ }
78
+ try {
59
79
  // Generate AGENTS.md behavioral rules
60
80
  const rules = this.generator.generateBehavioralRules('codex');
61
81
  const agentsMdPath = join(this.projectRoot, rules.path);
62
82
  result.agentsMdPath = agentsMdPath;
63
- if (!existsSync(agentsMdPath) || this.overwrite) {
64
- if (existsSync(agentsMdPath) && this.overwrite) {
83
+ const rulesExist = existsSync(agentsMdPath);
84
+ if (!rulesExist || this.overwrite) {
85
+ if (rulesExist && this.overwrite) {
65
86
  const merged = this.mergeExistingAgentsMd(agentsMdPath, rules.content);
66
87
  writeFileSync(agentsMdPath, merged);
67
88
  }
68
89
  else {
69
- writeFileSync(agentsMdPath, rules.content);
90
+ writeFileSync(agentsMdPath, this.markAgentsSection(rules.content));
70
91
  }
71
92
  result.agentsMdInstalled = true;
93
+ result.components.rules.status = rulesExist ? 'updated' : 'installed';
94
+ }
95
+ else {
96
+ result.components.rules.status = 'preserved';
72
97
  }
73
- this.installCodexHooks(result);
74
- result.skillsInstalled = this.installCodexSkills();
75
98
  }
76
99
  catch (error) {
77
- result.success = false;
78
- result.errors.push(`Codex installation failed: ${toErrorMessage(error)}`);
100
+ this.recordComponentFailure(result, 'rules', error);
79
101
  }
102
+ try {
103
+ result.components.hooks.status = this.installCodexHooks(result);
104
+ }
105
+ catch (error) {
106
+ this.recordComponentFailure(result, 'hooks', error);
107
+ }
108
+ try {
109
+ const skills = this.installCodexSkills();
110
+ result.skillsInstalled = skills.count;
111
+ result.components.skills.status = skills.status;
112
+ }
113
+ catch (error) {
114
+ this.recordComponentFailure(result, 'skills', error);
115
+ }
116
+ result.success = result.errors.length === 0;
80
117
  return result;
81
118
  }
119
+ recordComponentFailure(result, component, error) {
120
+ const message = toErrorMessage(error);
121
+ result.components[component] = { status: 'failed', error: message };
122
+ result.errors.push(`Codex ${component} installation failed: ${message}`);
123
+ }
82
124
  /**
83
125
  * Install Codex-native lifecycle adapters and merge AQE/ruflo hook groups
84
126
  * without removing user-defined hooks.
@@ -86,15 +128,17 @@ export class CodexInstaller {
86
128
  installCodexHooks(result) {
87
129
  const sourceRoot = this.resolvePackageRoot();
88
130
  if (!sourceRoot)
89
- return;
131
+ return 'unavailable';
90
132
  const sourceConfig = join(sourceRoot, '.codex', 'hooks.json');
91
133
  const sourceScripts = join(sourceRoot, '.codex', 'hooks');
92
134
  if (!existsSync(sourceConfig) || !existsSync(sourceScripts))
93
- return;
135
+ return 'unavailable';
94
136
  const targetCodexDir = join(this.projectRoot, '.codex');
95
137
  const targetScripts = join(targetCodexDir, 'hooks');
96
138
  mkdirSync(targetScripts, { recursive: true });
97
139
  for (const file of readdirSync(sourceScripts)) {
140
+ if (!this.options.includeRuflo && file === 'ruflo-codex-hook.cjs')
141
+ continue;
98
142
  const source = join(sourceScripts, file);
99
143
  if (!statSync(source).isFile())
100
144
  continue;
@@ -108,25 +152,31 @@ export class CodexInstaller {
108
152
  source: join(sourceRoot, '.claude', 'hooks', 'aqe-hook.cjs'),
109
153
  target: join(targetScripts, 'aqe-runtime.cjs'),
110
154
  },
111
- {
112
- source: join(sourceRoot, '.claude', 'helpers', 'ruflo-hook.cjs'),
113
- target: join(targetScripts, 'ruflo-runtime.cjs'),
114
- },
155
+ ...(this.options.includeRuflo ? [{
156
+ source: join(sourceRoot, '.claude', 'helpers', 'ruflo-hook.cjs'),
157
+ target: join(targetScripts, 'ruflo-runtime.cjs'),
158
+ }] : []),
115
159
  ];
116
160
  for (const runtime of runtimes) {
117
161
  if (existsSync(runtime.source) && (!existsSync(runtime.target) || this.overwrite)) {
118
162
  copyFileSync(runtime.source, runtime.target);
119
163
  }
120
164
  }
121
- const generated = JSON.parse(readFileSync(sourceConfig, 'utf-8'));
165
+ const generatedSource = JSON.parse(readFileSync(sourceConfig, 'utf-8'));
166
+ const isRufloGroup = (value) => JSON.stringify(value).includes('ruflo-codex-hook.cjs');
167
+ const generated = {
168
+ ...generatedSource,
169
+ hooks: Object.fromEntries(Object.entries(generatedSource.hooks || {}).map(([event, groups]) => [
170
+ event,
171
+ this.options.includeRuflo ? groups : groups.filter((group) => !isRufloGroup(group)),
172
+ ])),
173
+ };
122
174
  const targetConfig = join(targetCodexDir, 'hooks.json');
123
175
  if (!existsSync(targetConfig)) {
124
176
  writeFileSync(targetConfig, JSON.stringify(generated, null, 2) + '\n');
125
177
  result.hooksConfigured = true;
126
- return;
178
+ return 'installed';
127
179
  }
128
- if (!this.overwrite)
129
- return;
130
180
  const existing = JSON.parse(readFileSync(targetConfig, 'utf-8'));
131
181
  const owned = (value) => JSON.stringify(value).includes('/.codex/hooks/aqe-codex-hook.cjs')
132
182
  || JSON.stringify(value).includes('/.codex/hooks/ruflo-codex-hook.cjs');
@@ -141,31 +191,54 @@ export class CodexInstaller {
141
191
  }
142
192
  writeFileSync(targetConfig, JSON.stringify({ ...existing, description: generated.description, hooks: mergedHooks }, null, 2) + '\n');
143
193
  result.hooksConfigured = true;
194
+ return 'updated';
144
195
  }
145
196
  /** Install the curated repo-scoped AQE skills Codex discovers automatically. */
146
197
  installCodexSkills() {
147
198
  const sourceRoot = this.resolvePackageRoot();
148
199
  if (!sourceRoot)
149
- return 0;
200
+ return { count: 0, status: 'unavailable' };
150
201
  const sourceSkills = join(sourceRoot, '.agents', 'skills');
151
202
  if (!existsSync(sourceSkills))
152
- return 0;
203
+ return { count: 0, status: 'unavailable' };
153
204
  const targetSkills = join(this.projectRoot, '.agents', 'skills');
154
205
  mkdirSync(targetSkills, { recursive: true });
155
206
  let installed = 0;
156
- for (const skill of readdirSync(sourceSkills)) {
157
- if (!skill.startsWith('aqe-'))
158
- continue;
159
- const source = join(sourceSkills, skill);
160
- if (!statSync(source).isDirectory())
161
- continue;
162
- const target = join(targetSkills, skill);
207
+ let updated = 0;
208
+ for (const skill of selectCodexSkills({ includeRuflo: this.options.includeRuflo })) {
209
+ const source = join(sourceSkills, skill.name);
210
+ if (!existsSync(source) || !statSync(source).isDirectory()) {
211
+ throw new Error(`Missing packaged Codex skill directory: ${skill.name}`);
212
+ }
213
+ const target = join(targetSkills, skill.name);
163
214
  if (existsSync(target) && !this.overwrite)
164
215
  continue;
165
- this.copyDirectory(source, target);
166
- installed++;
216
+ const targetExisted = existsSync(target);
217
+ if (skill.files) {
218
+ mkdirSync(target, { recursive: true });
219
+ for (const relativeFile of skill.files) {
220
+ const from = join(source, relativeFile);
221
+ if (!existsSync(from) || !statSync(from).isFile()) {
222
+ throw new Error(`Missing packaged Codex skill file: ${skill.name}/${relativeFile}`);
223
+ }
224
+ const to = join(target, relativeFile);
225
+ mkdirSync(dirname(to), { recursive: true });
226
+ copyFileSync(from, to);
227
+ }
228
+ }
229
+ else {
230
+ this.copyDirectory(source, target);
231
+ }
232
+ if (targetExisted)
233
+ updated++;
234
+ else
235
+ installed++;
167
236
  }
168
- return installed;
237
+ const count = installed + updated;
238
+ return {
239
+ count,
240
+ status: updated > 0 ? 'updated' : installed > 0 ? 'installed' : 'preserved',
241
+ };
169
242
  }
170
243
  copyDirectory(source, target) {
171
244
  mkdirSync(target, { recursive: true });
@@ -195,40 +268,45 @@ export class CodexInstaller {
195
268
  }
196
269
  /**
197
270
  * Merge AQE MCP server config into existing TOML.
198
- * Simple approach: if [mcp_servers.agentic-qe] already exists, skip.
199
- * Otherwise, append the AQE block at the end.
271
+ * Replace only AQE-owned TOML tables, preserving every user-owned table and
272
+ * setting. AQE owns the exact `mcp_servers.agentic-qe` table prefix.
200
273
  */
201
274
  mergeExistingTomlConfig(configPath, newContent) {
202
- try {
203
- const existing = readFileSync(configPath, 'utf-8');
204
- // If AQE server already configured, return as-is
205
- if (existing.includes('[mcp_servers.agentic-qe]')) {
206
- return existing;
275
+ const existing = readFileSync(configPath, 'utf-8');
276
+ const aqeTable = /^\s*\[mcp_servers\.(?:agentic-qe|"agentic-qe")(?:\.(?:[^\]]+))?\]\s*(?:#.*)?$/;
277
+ const lines = existing.split(/\r?\n/);
278
+ const kept = [];
279
+ let inOwnedTable = false;
280
+ for (const line of lines) {
281
+ if (/^\s*\[[^\]]+\]\s*(?:#.*)?$/.test(line)) {
282
+ inOwnedTable = aqeTable.test(line);
207
283
  }
208
- // Append AQE config block
209
- return existing.trimEnd() + '\n\n' + newContent;
210
- }
211
- catch {
212
- return newContent;
284
+ if (!inOwnedTable)
285
+ kept.push(line);
213
286
  }
287
+ return kept.join('\n').trimEnd() + '\n\n' + newContent.trim() + '\n';
214
288
  }
215
289
  /**
216
290
  * Merge AQE section into existing AGENTS.md.
217
- * Appends the AQE section if not already present.
291
+ * Replaces a previously marked AQE section or appends a new marked section.
218
292
  */
219
293
  mergeExistingAgentsMd(agentsMdPath, newContent) {
220
- try {
221
- const existing = readFileSync(agentsMdPath, 'utf-8');
222
- // If AQE section already present, return as-is
223
- if (existing.includes('Agentic QE') || existing.includes('fleet_init')) {
224
- return existing;
294
+ const existing = readFileSync(agentsMdPath, 'utf-8');
295
+ const marked = this.markAgentsSection(newContent);
296
+ const start = CodexInstaller.AGENTS_START;
297
+ const end = CodexInstaller.AGENTS_END;
298
+ const startIndex = existing.indexOf(start);
299
+ if (startIndex >= 0) {
300
+ const endIndex = existing.indexOf(end, startIndex);
301
+ if (endIndex >= 0) {
302
+ return existing.slice(0, startIndex) + marked
303
+ + existing.slice(endIndex + end.length);
225
304
  }
226
- // Append AQE section
227
- return existing.trimEnd() + '\n\n---\n\n' + newContent;
228
- }
229
- catch {
230
- return newContent;
231
305
  }
306
+ return existing.trimEnd() + '\n\n---\n\n' + marked;
307
+ }
308
+ markAgentsSection(content) {
309
+ return `${CodexInstaller.AGENTS_START}\n${content.trim()}\n${CodexInstaller.AGENTS_END}\n`;
232
310
  }
233
311
  }
234
312
  // ============================================================================
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Skills shipped for repository-scoped Codex installs.
3
+ *
4
+ * Keep this list explicit: discovering skills by directory prefix makes the
5
+ * public package surface depend on unrelated files in a development checkout.
6
+ * Ruflo remains an opt-in, development-time integration and only its skill
7
+ * instructions are packaged; no Ruflo runtime code or dependency is shipped.
8
+ */
9
+ export interface CodexSkillManifestEntry {
10
+ /** Directory name below `.agents/skills`. */
11
+ readonly name: string;
12
+ /** Install in every Codex configuration. */
13
+ readonly default: boolean;
14
+ /** Optional file allowlist relative to the skill directory. */
15
+ readonly files?: readonly string[];
16
+ }
17
+ export declare const CODEX_SKILL_MANIFEST: readonly [{
18
+ readonly name: "aqe-plan-quality";
19
+ readonly default: true;
20
+ }, {
21
+ readonly name: "aqe-plan-work";
22
+ readonly default: true;
23
+ }, {
24
+ readonly name: "aqe-research";
25
+ readonly default: true;
26
+ }, {
27
+ readonly name: "aqe-review-quality";
28
+ readonly default: true;
29
+ }, {
30
+ readonly name: "aqe-test-change";
31
+ readonly default: true;
32
+ }, {
33
+ readonly name: "aqe-ruflo";
34
+ readonly default: false;
35
+ readonly files: readonly ["SKILL.md"];
36
+ }];
37
+ export interface SelectCodexSkillsOptions {
38
+ /** Include the Ruflo orchestration guidance without installing Ruflo itself. */
39
+ includeRuflo?: boolean;
40
+ }
41
+ /** Return the deterministic install set for a Codex project. */
42
+ export declare function selectCodexSkills(options?: SelectCodexSkillsOptions): readonly CodexSkillManifestEntry[];
43
+ //# sourceMappingURL=codex-skill-manifest.d.ts.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Skills shipped for repository-scoped Codex installs.
3
+ *
4
+ * Keep this list explicit: discovering skills by directory prefix makes the
5
+ * public package surface depend on unrelated files in a development checkout.
6
+ * Ruflo remains an opt-in, development-time integration and only its skill
7
+ * instructions are packaged; no Ruflo runtime code or dependency is shipped.
8
+ */
9
+ export const CODEX_SKILL_MANIFEST = [
10
+ { name: 'aqe-plan-quality', default: true },
11
+ { name: 'aqe-plan-work', default: true },
12
+ { name: 'aqe-research', default: true },
13
+ { name: 'aqe-review-quality', default: true },
14
+ { name: 'aqe-test-change', default: true },
15
+ { name: 'aqe-ruflo', default: false, files: ['SKILL.md'] },
16
+ ];
17
+ /** Return the deterministic install set for a Codex project. */
18
+ export function selectCodexSkills(options = {}) {
19
+ return CODEX_SKILL_MANIFEST.filter((skill) => skill.default || (skill.name === 'aqe-ruflo' && options.includeRuflo === true));
20
+ }
21
+ //# sourceMappingURL=codex-skill-manifest.js.map
@@ -42,6 +42,7 @@ export class ModularInitOrchestrator {
42
42
  withKiloCode: options.withKiloCode || allPlatforms,
43
43
  withRooCode: options.withRooCode || allPlatforms,
44
44
  withCodex: options.withCodex || allPlatforms,
45
+ withRuflo: options.withRuflo,
45
46
  withWindsurf: options.withWindsurf || allPlatforms,
46
47
  withContinueDev: options.withContinueDev || allPlatforms,
47
48
  withAllPlatforms: options.withAllPlatforms,
@@ -293,7 +293,13 @@ export class AssetsPhase extends BasePhase {
293
293
  // P2 platforms: Codex (TOML), Windsurf (JSON), Continue.dev (YAML)
294
294
  if (options.withCodex || (options.autoMode && existsSync(join(projectRoot, '.codex')))) {
295
295
  const { createCodexInstaller } = await import('../codex-installer.js');
296
- const installer = createCodexInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
296
+ const installer = createCodexInstaller({
297
+ projectRoot,
298
+ overwrite: shouldOverwrite,
299
+ installMcp: !options.noMcp,
300
+ includeRuflo: options.withRuflo,
301
+ memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined,
302
+ });
297
303
  const res = await installer.install();
298
304
  if (res.mcpConfigured)
299
305
  platformsConfigured.push('codex');
@@ -307,6 +313,9 @@ export class AssetsPhase extends BasePhase {
307
313
  context.services.log(` Codex hooks: ${res.hooksPath}`);
308
314
  if (res.skillsInstalled > 0)
309
315
  context.services.log(` Codex skills: ${res.skillsInstalled} installed`);
316
+ context.services.log(options.withRuflo
317
+ ? ' Codex Ruflo integration: enabled'
318
+ : ' Codex Ruflo integration: not installed (opt in with --with-ruflo)');
310
319
  }
311
320
  if (options.withWindsurf || (options.autoMode && existsSync(join(projectRoot, '.windsurf')))) {
312
321
  const { createWindsurfInstaller } = await import('../windsurf-installer.js');
@@ -121,6 +121,8 @@ export interface InitOptions {
121
121
  withRooCode?: boolean;
122
122
  /** Install OpenAI Codex CLI MCP, AGENTS.md, hooks, and QE skills */
123
123
  withCodex?: boolean;
124
+ /** Include optional Ruflo guidance and Codex lifecycle integration */
125
+ withRuflo?: boolean;
124
126
  /** Install Windsurf MCP config and rules */
125
127
  withWindsurf?: boolean;
126
128
  /** Install Continue.dev MCP config and rules */