agentic-qe 3.13.0 → 3.13.2

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 (386) hide show
  1. package/.agents/skills/aqe-plan-quality/SKILL.md +25 -0
  2. package/.agents/skills/aqe-plan-quality/agents/openai.yaml +4 -0
  3. package/.agents/skills/aqe-plan-quality/references/qe-routing.md +22 -0
  4. package/.agents/skills/aqe-review-quality/SKILL.md +24 -0
  5. package/.agents/skills/aqe-review-quality/agents/openai.yaml +4 -0
  6. package/.agents/skills/aqe-review-quality/references/quality-gates.md +20 -0
  7. package/.agents/skills/aqe-test-change/SKILL.md +26 -0
  8. package/.agents/skills/aqe-test-change/agents/openai.yaml +4 -0
  9. package/.agents/skills/aqe-test-change/references/test-specialties.md +23 -0
  10. package/.claude/helpers/ruflo-hook.cjs +5 -1
  11. package/.claude/skills/skills-manifest.json +1 -1
  12. package/.codex/hooks/aqe-codex-hook.cjs +69 -0
  13. package/.codex/hooks/ruflo-codex-hook.cjs +94 -0
  14. package/.codex/hooks.json +169 -0
  15. package/CHANGELOG.md +123 -0
  16. package/assets/skills/skills-manifest.json +1 -1
  17. package/dist/cli/bundle.js +5 -5
  18. package/dist/cli/chunks/adapter-I4SNWMCM.js +2 -0
  19. package/dist/cli/chunks/{agent-booster-wasm-ACX2DK7Y.js → agent-booster-wasm-PZYYTKSS.js} +2 -2
  20. package/dist/cli/chunks/{agent-handler-B45WP4ZJ.js → agent-handler-DNN7GXUN.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-QQLZDE56.js → agent-memory-branch-LVCBBCQY.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-WI47XKXI.js +2 -0
  23. package/dist/cli/chunks/{arena-SDB7723R.js → arena-422HSTPE.js} +2 -2
  24. package/dist/cli/chunks/{arena-G3IKZAG5.js → arena-OCEOLMCH.js} +4 -4
  25. package/dist/cli/chunks/{audit-GY46XUZA.js → audit-5O45K34M.js} +3 -3
  26. package/dist/cli/chunks/base-VJ6VDLD7.js +2 -0
  27. package/dist/cli/chunks/{hnswlib-node-RJPBJU2Q.js → better-sqlite3-Y36THYK2.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-347CYMPN.js → brain-handler-7VHXYN3P.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-Z3ULBFSM.js → branch-enumerator-PZKOD6S6.js} +2 -2
  30. package/dist/cli/chunks/{browser-OYEIHD7F.js → browser-M74UO4WJ.js} +2 -2
  31. package/dist/cli/chunks/browser-workflow-WRYHQQDU.js +2 -0
  32. package/dist/cli/chunks/{chunk-RVJPWRV6.js → chunk-24S5IUSI.js} +2 -2
  33. package/dist/cli/chunks/{chunk-3NOCK6ED.js → chunk-2DG44UZ5.js} +2 -2
  34. package/dist/cli/chunks/{chunk-34PEINFS.js → chunk-2QJPAQE5.js} +2 -2
  35. package/dist/cli/chunks/{chunk-SHCTEXNH.js → chunk-4DKL4H5L.js} +2 -2
  36. package/dist/cli/chunks/{chunk-A4QLGPYO.js → chunk-4FYTWD4Q.js} +2 -2
  37. package/dist/cli/chunks/{chunk-YFGAHNCG.js → chunk-4HFNY3Z2.js} +3 -3
  38. package/dist/cli/chunks/{chunk-RVRBTOWX.js → chunk-4PM5VORA.js} +2 -2
  39. package/dist/cli/chunks/{chunk-QWYISZTN.js → chunk-4SFOQSXU.js} +2 -2
  40. package/dist/cli/chunks/{chunk-RSFIOR2I.js → chunk-4STE6VLR.js} +87 -87
  41. package/dist/cli/chunks/{chunk-54MFKCLT.js → chunk-54BCLRRJ.js} +2 -2
  42. package/dist/cli/chunks/{chunk-IYDYJ33J.js → chunk-5AAG7JTB.js} +2 -2
  43. package/dist/cli/chunks/{chunk-TVMFH5N2.js → chunk-5EFNZEOB.js} +2 -2
  44. package/dist/cli/chunks/{chunk-GUEZQOHL.js → chunk-5GGGZYFA.js} +1 -1
  45. package/dist/cli/chunks/{chunk-5KAT6WBQ.js → chunk-5KMBZTDI.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ANYYTWOQ.js → chunk-5XYVRTI6.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ANIDFJCT.js → chunk-62D27BDO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-SNTUKW4Q.js → chunk-6DMB6WK5.js} +2 -2
  49. package/dist/cli/chunks/{chunk-ZCFZ4USU.js → chunk-6R7TX5L4.js} +1 -1
  50. package/dist/cli/chunks/chunk-6UGYFYS4.js +2 -0
  51. package/dist/cli/chunks/chunk-6XHDH3IJ.js +3 -0
  52. package/dist/cli/chunks/{chunk-IHQTXJAQ.js → chunk-73HALJY5.js} +1 -1
  53. package/dist/cli/chunks/{chunk-7YXT6BXN.js → chunk-7TCVVVFA.js} +3 -3
  54. package/dist/cli/chunks/{chunk-RJZRWVL4.js → chunk-A2OD5Z4B.js} +1 -1
  55. package/dist/cli/chunks/{chunk-ES7WCYOU.js → chunk-AJ7A52GF.js} +1 -1
  56. package/dist/cli/chunks/{chunk-QCEW4ZDW.js → chunk-AP2BBV2D.js} +2 -2
  57. package/dist/cli/chunks/{chunk-FQLWQWRU.js → chunk-AS2HVJ42.js} +3 -3
  58. package/dist/cli/chunks/{chunk-7UNY32PU.js → chunk-ASIGTVFQ.js} +1 -1
  59. package/dist/cli/chunks/{chunk-EECM5XKY.js → chunk-B7KZMPF2.js} +1 -1
  60. package/dist/cli/chunks/{chunk-Z6QCOZ2H.js → chunk-BFKXHXWW.js} +2 -2
  61. package/dist/cli/chunks/{chunk-VC6EXDGY.js → chunk-BO2RBAPF.js} +2 -2
  62. package/dist/cli/chunks/{chunk-OXXMVQDF.js → chunk-BSQ32ZS5.js} +2 -2
  63. package/dist/cli/chunks/{chunk-WRYT4HTZ.js → chunk-CKTFKA7Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-QQB55ZJJ.js → chunk-CLBBFKXV.js} +2 -2
  65. package/dist/cli/chunks/{chunk-5FLTZ3KT.js → chunk-COOMXCCP.js} +2 -2
  66. package/dist/cli/chunks/{chunk-DYUC7WFA.js → chunk-DAHNHVND.js} +1 -1
  67. package/dist/cli/chunks/{chunk-6AOBLBR4.js → chunk-DCQQJLUY.js} +2 -2
  68. package/dist/cli/chunks/{chunk-LBE2P6UC.js → chunk-DIPOFCBX.js} +2 -2
  69. package/dist/cli/chunks/{chunk-EFRESRLB.js → chunk-DL2HDULJ.js} +5 -5
  70. package/dist/cli/chunks/{chunk-YRQLVGCI.js → chunk-DQXSDWRP.js} +2 -2
  71. package/dist/cli/chunks/{chunk-QI4CGJNK.js → chunk-E6JJ4ZRQ.js} +1 -1
  72. package/dist/cli/chunks/{chunk-KUA4HHU6.js → chunk-E6PYV3DB.js} +2 -2
  73. package/dist/cli/chunks/{chunk-ZJG6N2OK.js → chunk-EABGQVTV.js} +1 -1
  74. package/dist/cli/chunks/{chunk-U2SW6KK5.js → chunk-EFHMS7TJ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-CWUBOLKY.js → chunk-ELVUERQW.js} +2 -2
  76. package/dist/cli/chunks/{chunk-A7GLWWSE.js → chunk-EU7NUUL6.js} +1 -1
  77. package/dist/cli/chunks/{chunk-3UHEZ5HZ.js → chunk-F6UMLI5Y.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TZPKTRJB.js → chunk-FECBWGCA.js} +2 -2
  79. package/dist/cli/chunks/{chunk-OETDMOOE.js → chunk-FFMUTX26.js} +1 -1
  80. package/dist/cli/chunks/{chunk-VLNPJAVH.js → chunk-FJ2L6P7O.js} +1 -1
  81. package/dist/cli/chunks/{chunk-2DIT5AUU.js → chunk-FMYNKZ2S.js} +2 -2
  82. package/dist/cli/chunks/{chunk-L4LLA5U7.js → chunk-FXXXLDB3.js} +1 -1
  83. package/dist/cli/chunks/{chunk-D3MPV5G7.js → chunk-FZEWEG6Q.js} +2 -2
  84. package/dist/cli/chunks/{chunk-BGYLNCL6.js → chunk-G4LZ5SBC.js} +2 -2
  85. package/dist/cli/chunks/{chunk-J3L52EA4.js → chunk-GHJRLC3C.js} +5 -5
  86. package/dist/cli/chunks/{chunk-3JVUWKCO.js → chunk-GKKD22CC.js} +2 -2
  87. package/dist/cli/chunks/{chunk-32ZGV4Q4.js → chunk-GMKJWOXZ.js} +1 -1
  88. package/dist/cli/chunks/chunk-GMKQJEKX.js +2 -0
  89. package/dist/cli/chunks/{chunk-3GSYD5SL.js → chunk-GZ775E5O.js} +2 -2
  90. package/dist/cli/chunks/{chunk-GTUFX7AR.js → chunk-H6C2YTPX.js} +2 -2
  91. package/dist/cli/chunks/{chunk-UIPPJKON.js → chunk-HANBJ37Z.js} +2 -2
  92. package/dist/cli/chunks/{chunk-ZOXWASCC.js → chunk-HANJESCY.js} +2 -2
  93. package/dist/cli/chunks/{chunk-JPIBPKBP.js → chunk-HD6PZHLC.js} +3 -3
  94. package/dist/cli/chunks/{chunk-FQY3UTGA.js → chunk-HHUKHEW5.js} +2 -2
  95. package/dist/cli/chunks/{chunk-W5YEIHIO.js → chunk-HQCJYUKC.js} +2 -2
  96. package/dist/cli/chunks/{chunk-CYL2FV23.js → chunk-IIZ3HBPV.js} +2 -2
  97. package/dist/cli/chunks/{chunk-HTPM3URI.js → chunk-IV77BQ2R.js} +2 -2
  98. package/dist/cli/chunks/{chunk-THBTN7XB.js → chunk-J722Z7VO.js} +2 -2
  99. package/dist/cli/chunks/{chunk-5EIOQCGN.js → chunk-JDRYENTD.js} +2 -2
  100. package/dist/cli/chunks/{chunk-NQNKKVNO.js → chunk-JKVUSXT4.js} +3 -3
  101. package/dist/cli/chunks/{chunk-CQFT7H3F.js → chunk-JMRUHQEL.js} +2 -2
  102. package/dist/cli/chunks/{chunk-PERJO2DY.js → chunk-JPO4AC5Q.js} +1 -1
  103. package/dist/cli/chunks/{chunk-KSYLRM4Q.js → chunk-JPPHM3I6.js} +2 -2
  104. package/dist/cli/chunks/{chunk-56WZFXTQ.js → chunk-K3MNTU4O.js} +2 -2
  105. package/dist/cli/chunks/{chunk-CPH5JP4L.js → chunk-K47EWX3M.js} +1 -1
  106. package/dist/cli/chunks/{chunk-7DMXCCSD.js → chunk-KAHMXURL.js} +1 -1
  107. package/dist/cli/chunks/{chunk-UNIBND6A.js → chunk-KHVW6DQS.js} +1 -1
  108. package/dist/cli/chunks/{chunk-RLCWR7TS.js → chunk-KKPWS3XJ.js} +98 -88
  109. package/dist/cli/chunks/chunk-KRRGOJ6K.js +2 -0
  110. package/dist/cli/chunks/chunk-LEOSNZR2.js +2 -0
  111. package/dist/cli/chunks/{chunk-TNRIGQ6U.js → chunk-LG6UUM55.js} +2 -2
  112. package/dist/cli/chunks/{chunk-HOKON5EL.js → chunk-LJWIBYTR.js} +2 -2
  113. package/dist/cli/chunks/{chunk-N7VOOI3U.js → chunk-LQDQTLWV.js} +2 -2
  114. package/dist/cli/chunks/{chunk-2NRZYQSF.js → chunk-LXYVWAFN.js} +2 -2
  115. package/dist/cli/chunks/{chunk-YPTGE5NJ.js → chunk-LZNJ7HXB.js} +2 -2
  116. package/dist/cli/chunks/{chunk-6SXKCIN5.js → chunk-M4JZOCV3.js} +1 -1
  117. package/dist/cli/chunks/{chunk-UMG5URNV.js → chunk-MBTVAIFF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-N5MMBA35.js → chunk-MNDPSIEI.js} +1 -1
  119. package/dist/cli/chunks/{chunk-L4S722JD.js → chunk-MUSLUG6Y.js} +1 -1
  120. package/dist/cli/chunks/{chunk-VLBV2VL3.js → chunk-MVJ5UQI3.js} +1 -1
  121. package/dist/cli/chunks/{chunk-XFCWYQHW.js → chunk-N2AGOQCL.js} +2 -2
  122. package/dist/cli/chunks/{chunk-KVL63BSU.js → chunk-N4O2RWSL.js} +1 -1
  123. package/dist/cli/chunks/{chunk-L2SFGFE6.js → chunk-NBRKZOPM.js} +1 -1
  124. package/dist/cli/chunks/{chunk-NETN3OUG.js → chunk-NIE3SGZM.js} +1 -1
  125. package/dist/cli/chunks/{chunk-LOXVVMS4.js → chunk-NNIKJZA4.js} +3 -3
  126. package/dist/cli/chunks/{chunk-5ICQL42E.js → chunk-NTKIDOIW.js} +2 -2
  127. package/dist/cli/chunks/{chunk-Q7PBGNUD.js → chunk-ODE7Z667.js} +1 -1
  128. package/dist/cli/chunks/{chunk-K5N6SLHO.js → chunk-OYWZYG6Q.js} +1 -1
  129. package/dist/cli/chunks/{chunk-CFVEDUTW.js → chunk-P33EORZZ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-R3GEXYO4.js → chunk-PILZKQX7.js} +2 -2
  131. package/dist/cli/chunks/{chunk-ZJIX5FGQ.js → chunk-PJOH5Z5I.js} +2 -2
  132. package/dist/cli/chunks/{chunk-JGM6XCCP.js → chunk-PNQWEOE2.js} +1 -1
  133. package/dist/cli/chunks/{chunk-XKFE3FLI.js → chunk-PRQPUOSH.js} +2 -2
  134. package/dist/cli/chunks/{chunk-LWYLW7RX.js → chunk-PT6NTWGT.js} +2 -2
  135. package/dist/cli/chunks/{chunk-FBBZHATF.js → chunk-Q45FBGVV.js} +1 -1
  136. package/dist/cli/chunks/{chunk-SRQ3CPJE.js → chunk-Q625ISQI.js} +4 -4
  137. package/dist/cli/chunks/{chunk-BOVH6WSM.js → chunk-QS6TI7NR.js} +2 -2
  138. package/dist/cli/chunks/{chunk-4BDLD7V2.js → chunk-QVD3LU27.js} +1 -1
  139. package/dist/cli/chunks/{chunk-ZLXBNNNT.js → chunk-QZACODX6.js} +2 -2
  140. package/dist/cli/chunks/{chunk-NUQBJGGF.js → chunk-REBNPQI7.js} +2 -2
  141. package/dist/cli/chunks/{chunk-FAQLI3P5.js → chunk-RF2DMPX2.js} +2 -2
  142. package/dist/cli/chunks/{chunk-2VQVEQS4.js → chunk-RI2V2U2N.js} +2 -2
  143. package/dist/cli/chunks/{chunk-GJMZR7WU.js → chunk-RJYAUJDC.js} +3 -3
  144. package/dist/cli/chunks/{chunk-KZTBNDNE.js → chunk-RWHHOQIC.js} +1 -1
  145. package/dist/cli/chunks/{chunk-ZEIG5IQ4.js → chunk-RWUK5VMZ.js} +2 -2
  146. package/dist/cli/chunks/{chunk-E3B5XTXJ.js → chunk-SOOI2HJB.js} +1 -1
  147. package/dist/cli/chunks/{chunk-IPHLXAMX.js → chunk-T2XXTEZV.js} +2 -2
  148. package/dist/cli/chunks/{chunk-USMDIIHY.js → chunk-T55XIENI.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VSNRPMAZ.js → chunk-T726SRYP.js} +2 -2
  150. package/dist/cli/chunks/{chunk-RDU4WTV2.js → chunk-TLG56A27.js} +2 -2
  151. package/dist/cli/chunks/{chunk-FUU32QY5.js → chunk-TTWWCWAR.js} +2 -2
  152. package/dist/cli/chunks/{chunk-LXPB7H2P.js → chunk-TVWX7NYD.js} +1 -1
  153. package/dist/cli/chunks/{chunk-G5DFYX3J.js → chunk-U2FCUBBW.js} +2 -2
  154. package/dist/cli/chunks/{chunk-DRIJYTSK.js → chunk-UIQVVS7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-6DTOGSDV.js → chunk-UPGJZA3D.js} +4 -4
  156. package/dist/cli/chunks/{chunk-3K4SF57Q.js → chunk-UVLWT6QM.js} +1 -1
  157. package/dist/cli/chunks/{chunk-FL3BM54K.js → chunk-VKU5BUUC.js} +1 -1
  158. package/dist/cli/chunks/{chunk-AO7AHX6K.js → chunk-VOYUCJLK.js} +2 -2
  159. package/dist/cli/chunks/{chunk-BCKTBGDM.js → chunk-WMK2ZNLM.js} +3 -3
  160. package/dist/cli/chunks/{chunk-4BESADKE.js → chunk-WTSVP6OK.js} +2 -2
  161. package/dist/cli/chunks/{chunk-MBCGI3M2.js → chunk-XS2S3ECA.js} +5 -5
  162. package/dist/cli/chunks/chunk-XXQLFPIK.js +2 -0
  163. package/dist/cli/chunks/{chunk-HL2QMM4M.js → chunk-XZOTFJHU.js} +2 -2
  164. package/dist/cli/chunks/{chunk-QTU3CVOB.js → chunk-YTHUTBBH.js} +2 -2
  165. package/dist/cli/chunks/{chunk-BUGWPTMF.js → chunk-YWJ2GPD4.js} +2 -2
  166. package/dist/cli/chunks/{chunk-GFBLWFRV.js → chunk-YXTDCP6H.js} +1 -1
  167. package/dist/cli/chunks/{chunk-TZ73SXQ5.js → chunk-YZUMCXH6.js} +1 -1
  168. package/dist/cli/chunks/{chunk-VHYMSZNF.js → chunk-ZIT5VF43.js} +2 -2
  169. package/dist/cli/chunks/{chunk-IZRLIWFN.js → chunk-ZY5FB3JV.js} +2 -2
  170. package/dist/cli/chunks/{ci-74ZUCO5V.js → ci-EOFZKCSH.js} +2 -2
  171. package/dist/cli/chunks/{ci-output-HD6IZNJA.js → ci-output-TAJFQWDP.js} +2 -2
  172. package/dist/cli/chunks/{circuit-breaker-USZVMA42.js → circuit-breaker-QA7YJ3IF.js} +2 -2
  173. package/dist/cli/chunks/{claude-flow-setup-S4XKNCD5.js → claude-flow-setup-4RNAIALK.js} +2 -2
  174. package/dist/cli/chunks/client-N2WAM5IK.js +2 -0
  175. package/dist/cli/chunks/{cline-installer-6EW4CHAR.js → cline-installer-K25NUUA4.js} +2 -2
  176. package/dist/cli/chunks/{code-TOLWD2XL.js → code-JM4D3I2W.js} +2 -2
  177. package/dist/cli/chunks/{code-index-extractor-UA4QQ7B3.js → code-index-extractor-6B6TJ2B5.js} +2 -2
  178. package/dist/cli/chunks/codex-installer-GRUENCIO.js +10 -0
  179. package/dist/cli/chunks/{completions-KVUMQQ4K.js → completions-LADTXGCC.js} +2 -2
  180. package/dist/cli/chunks/{complexity-analyzer-DFH6LMK2.js → complexity-analyzer-IQITOJH5.js} +2 -2
  181. package/dist/cli/chunks/{continuedev-installer-LYDQSAU7.js → continuedev-installer-H6NAXFZK.js} +2 -2
  182. package/dist/cli/chunks/{copilot-installer-7USXLZHZ.js → copilot-installer-W7HCQKOS.js} +2 -2
  183. package/dist/cli/chunks/core-handlers-VSX474R3.js +2 -0
  184. package/dist/cli/chunks/{cost-tracker-JBDIUMKZ.js → cost-tracker-MC7KEENQ.js} +2 -2
  185. package/dist/cli/chunks/{coverage-RGO3K357.js → coverage-NOOKPFYQ.js} +3 -3
  186. package/dist/cli/chunks/cross-domain-router-VNE7QKX4.js +2 -0
  187. package/dist/cli/chunks/{cursor-installer-YEZGD37F.js → cursor-installer-GOZ64GZJ.js} +2 -2
  188. package/dist/cli/chunks/{daemon-FVETQ3LL.js → daemon-G4ABQMFJ.js} +3 -3
  189. package/dist/cli/chunks/{daemon-LPEXHNYG.js → daemon-V23WTCJJ.js} +4 -4
  190. package/dist/cli/chunks/{dag-attention-scheduler-UKYE2FII.js → dag-attention-scheduler-YKOO6ZWL.js} +2 -2
  191. package/dist/cli/chunks/{detect-WBG5P7ER.js → detect-SNEMKQGJ.js} +2 -2
  192. package/dist/cli/chunks/{dist-node-YW6YRBCU.js → dist-node-VBNEM6K6.js} +2 -2
  193. package/dist/cli/chunks/{domain-handler-HH7J4A32.js → domain-handler-2G5XEERC.js} +2 -2
  194. package/dist/cli/chunks/{domain-transfer-V34GXD5I.js → domain-transfer-HSEUUM7E.js} +2 -2
  195. package/dist/cli/chunks/dream-A5LVJU7T.js +2 -0
  196. package/dist/cli/chunks/{embed-and-insert-pattern-WYLRS3CL.js → embed-and-insert-pattern-H6MU5HK4.js} +2 -2
  197. package/dist/cli/chunks/{eval-EIMVXY5J.js → eval-XYVDJXJF.js} +2 -2
  198. package/dist/cli/chunks/{experience-capture-middleware-QMZHRUKM.js → experience-capture-middleware-BZQJVXTE.js} +3 -3
  199. package/dist/cli/chunks/{fast-paths-NHLW6XS6.js → fast-paths-76WWBJ4H.js} +2 -2
  200. package/dist/cli/chunks/{feature-flags-NE3MBL3P.js → feature-flags-7E5YZ4P5.js} +2 -2
  201. package/dist/cli/chunks/{feature-flags-N3UHMSZ3.js → feature-flags-SCQ35J6M.js} +2 -2
  202. package/dist/cli/chunks/{file-discovery-SI44X4YS.js → file-discovery-LU5MAXWA.js} +2 -2
  203. package/dist/cli/chunks/{fleet-MMYUXRRM.js → fleet-M3TH65SV.js} +3 -3
  204. package/dist/cli/chunks/{gnn-wrapper-RLYXYU2Q.js → gnn-wrapper-OYUJEJD2.js} +2 -2
  205. package/dist/cli/chunks/{heartbeat-handler-6EDRUYLV.js → heartbeat-handler-II4NSOXK.js} +4 -4
  206. package/dist/cli/chunks/heartbeat-scheduler-CFZ6DNQY.js +2 -0
  207. package/dist/cli/chunks/hnsw-adapter-I4Y2T4HO.js +2 -0
  208. package/dist/cli/chunks/hnsw-index-SBR5VYGN.js +2 -0
  209. package/dist/cli/chunks/{hnsw-legacy-bridge-RVM7EAIH.js → hnsw-legacy-bridge-322R2UAB.js} +2 -2
  210. package/dist/cli/chunks/{better-sqlite3-DUZ6FFAH.js → hnswlib-node-OVLAHTPU.js} +2 -2
  211. package/dist/cli/chunks/{hooks-ZF4VKHEO.js → hooks-2A27XCUJ.js} +37 -37
  212. package/dist/cli/chunks/hybrid-router-E6YM74NQ.js +2 -0
  213. package/dist/cli/chunks/{hypergraph-engine-YWS66PGO.js → hypergraph-engine-ERA527UR.js} +2 -2
  214. package/dist/cli/chunks/{hypergraph-handler-OQHVRPWB.js → hypergraph-handler-7XL4OL6W.js} +3 -3
  215. package/dist/cli/chunks/impact-analyzer-GHYFSSMJ.js +2 -0
  216. package/dist/cli/chunks/{init-handler-YW74YF2V.js → init-handler-WN6KQ5WY.js} +6 -6
  217. package/dist/cli/chunks/init-wizard-KAN5KOGD.js +2 -0
  218. package/dist/cli/chunks/kernel-LET4HEEF.js +2 -0
  219. package/dist/cli/chunks/{kilocode-installer-APWB2GMA.js → kilocode-installer-5UCCFZ7V.js} +2 -2
  220. package/dist/cli/chunks/{kiro-installer-DICKFVNC.js → kiro-installer-77DPEP3K.js} +2 -2
  221. package/dist/cli/chunks/knowledge-graph-P3UJWNQS.js +2 -0
  222. package/dist/cli/chunks/{learning-MXHNYW5D.js → learning-A5GKUD73.js} +3 -3
  223. package/dist/cli/chunks/{llm-router-LTFIX7NY.js → llm-router-SINJNEGP.js} +4 -4
  224. package/dist/cli/chunks/llm-router-service-BOBENURJ.js +2 -0
  225. package/dist/cli/chunks/{load-JUMIQ4LZ.js → load-Q56GLXHJ.js} +2 -2
  226. package/dist/cli/chunks/load-test-4VDCVB7S.js +2 -0
  227. package/dist/cli/chunks/{mcp-WHIARJGO.js → mcp-VBDU2WLY.js} +2 -2
  228. package/dist/cli/chunks/{memory-KAHS6Z5A.js → memory-IGWBRDIT.js} +5 -5
  229. package/dist/cli/chunks/memory-backend-RRFAYQYS.js +2 -0
  230. package/dist/cli/chunks/{memory-handlers-DG3RRXB6.js → memory-handlers-IITHQ7KV.js} +2 -2
  231. package/dist/cli/chunks/{multi-model-executor-E3Y2RHMX.js → multi-model-executor-2QUEY4CC.js} +2 -2
  232. package/dist/cli/chunks/{opencode-installer-3RKGNGGE.js → opencode-installer-FZJ5N2B3.js} +2 -2
  233. package/dist/cli/chunks/{orchestrator-TXITUKWD.js → orchestrator-BGLDS47V.js} +5 -5
  234. package/dist/cli/chunks/pattern-null-store-V7DEZEF2.js +2 -0
  235. package/dist/cli/chunks/{pattern-usage-recorder-EE2BUFZT.js → pattern-usage-recorder-4MFN4WKV.js} +2 -2
  236. package/dist/cli/chunks/{pipeline-AXTT6KZB.js → pipeline-GZHAORGP.js} +2 -2
  237. package/dist/cli/chunks/{platform-TICPVKE2.js → platform-TZEX4YZQ.js} +2 -2
  238. package/dist/cli/chunks/{plugin-VQKNV3EM.js → plugin-VEYUFCNY.js} +2 -2
  239. package/dist/cli/chunks/{prime-radiant-advanced-wasm-6GY5YY7D.js → prime-radiant-advanced-wasm-OA5DLXJJ.js} +2 -2
  240. package/dist/cli/chunks/protocol-executor-I3C2ZETP.js +2 -0
  241. package/dist/cli/chunks/{protocol-handler-YFWDR7UZ.js → protocol-handler-MVJ5N4X5.js} +2 -2
  242. package/dist/cli/chunks/{prove-FUMRCXAA.js → prove-VKF7YCUA.js} +2 -2
  243. package/dist/cli/chunks/provider-manager-HB4YVQDI.js +2 -0
  244. package/dist/cli/chunks/qe-reasoning-bank-RDLBAXJY.js +2 -0
  245. package/dist/cli/chunks/{quality-2APISBW5.js → quality-NLB5LVGM.js} +2 -2
  246. package/dist/cli/chunks/{quality-gate-MCC3E5TM.js → quality-gate-OM6A7FQM.js} +3 -3
  247. package/dist/cli/chunks/queen-coordinator-QRWRNUDR.js +2 -0
  248. package/dist/cli/chunks/{real-embeddings-CC5TNOTI.js → real-embeddings-NONEKGAV.js} +2 -2
  249. package/dist/cli/chunks/{roocode-installer-YAHTEVPI.js → roocode-installer-ORXQQO3F.js} +2 -2
  250. package/dist/cli/chunks/router-WDF7KV4M.js +2 -0
  251. package/dist/cli/chunks/routing-feedback-DHYB4ZNL.js +2 -0
  252. package/dist/cli/chunks/{routing-handler-6NQBW4TQ.js → routing-handler-LGMIBVDS.js} +2 -2
  253. package/dist/cli/chunks/{ruvector-commands-ZHXLHUPG.js → ruvector-commands-4GZMU4BZ.js} +2 -2
  254. package/dist/cli/chunks/{rvf-dual-writer-5KF2DGCW.js → rvf-dual-writer-45HKI22F.js} +2 -2
  255. package/dist/cli/chunks/{rvf-migration-adapter-BBU57BGF.js → rvf-migration-adapter-RHYIXI3I.js} +2 -2
  256. package/dist/cli/chunks/{rvf-migration-coordinator-VN4VRZA4.js → rvf-migration-coordinator-ANTAYKNN.js} +2 -2
  257. package/dist/cli/chunks/rvf-native-adapter-7W53TYTH.js +2 -0
  258. package/dist/cli/chunks/{rvf-store-integrity-XCY2XQZA.js → rvf-store-integrity-CPQUTFST.js} +2 -2
  259. package/dist/cli/chunks/safe-db-4HBFO7OQ.js +2 -0
  260. package/dist/cli/chunks/schedule-M2OSBJZM.js +2 -0
  261. package/dist/cli/chunks/scheduler-JWV5MSGE.js +2 -0
  262. package/dist/cli/chunks/{security-PYP4H3KN.js → security-BM6LMCBI.js} +3 -3
  263. package/dist/cli/chunks/{shared-rvf-adapter-3CJHRNX6.js → shared-rvf-adapter-3HGARKJX.js} +2 -2
  264. package/dist/cli/chunks/{shared-rvf-dual-writer-MKSLKWDI.js → shared-rvf-dual-writer-UQ4O46ZI.js} +2 -2
  265. package/dist/cli/chunks/sqlite-persistence-QA4JRQZ2.js +2 -0
  266. package/dist/cli/chunks/{status-handler-VYIZ3VJF.js → status-handler-TGRAM5PC.js} +2 -2
  267. package/dist/cli/chunks/{structural-health-MVV4OWXP.js → structural-health-RXETMBB3.js} +2 -2
  268. package/dist/cli/chunks/{sync-VNX6L3TI.js → sync-B4KEYFCP.js} +2 -2
  269. package/dist/cli/chunks/{sync-G47OYIQ3.js → sync-JTBZIACA.js} +2 -2
  270. package/dist/cli/chunks/{task-handler-GOWF2GEH.js → task-handler-D7VXHWPG.js} +2 -2
  271. package/dist/cli/chunks/{task-handlers-J2WC6J37.js → task-handlers-XF6VVPTR.js} +3 -3
  272. package/dist/cli/chunks/{test-DMCJ3BXS.js → test-BKEIMBSX.js} +4 -4
  273. package/dist/cli/chunks/{test-scheduling-TRFHHKFM.js → test-scheduling-A4OHR7KW.js} +3 -3
  274. package/dist/cli/chunks/{token-bootstrap-KEQ7AHFF.js → token-bootstrap-LIDDAOAK.js} +2 -2
  275. package/dist/cli/chunks/{token-usage-B54FOFOF.js → token-usage-BJUFIU4V.js} +2 -2
  276. package/dist/cli/chunks/{transformers-IACZG7IV.js → transformers-YYUQCGMV.js} +2 -2
  277. package/dist/cli/chunks/{tree-sitter-wasm-parser-N7H4X37E.js → tree-sitter-wasm-parser-DFXYTJ23.js} +2 -2
  278. package/dist/cli/chunks/{types-B3SHT4OD.js → types-Z75HK5HH.js} +2 -2
  279. package/dist/cli/chunks/unified-memory-BEUZQTTC.js +2 -0
  280. package/dist/cli/chunks/unified-memory-hnsw-FHLSAEX4.js +2 -0
  281. package/dist/cli/chunks/unified-persistence-TVEQGCSB.js +2 -0
  282. package/dist/cli/chunks/{upgrade-A2PQ5EWK.js → upgrade-NETNZZH3.js} +2 -2
  283. package/dist/cli/chunks/{validate-UXV7UQUT.js → validate-U2WQ7P6T.js} +2 -2
  284. package/dist/cli/chunks/{validate-swarm-MMBU4FPP.js → validate-swarm-DKD7H2E3.js} +2 -2
  285. package/dist/cli/chunks/{vibium-R4GUVADA.js → vibium-FOQ73JBW.js} +2 -2
  286. package/dist/cli/chunks/visual-security-AYV46OUO.js +2 -0
  287. package/dist/cli/chunks/{web-tree-sitter-MP6E6CJB.js → web-tree-sitter-PQXWMQO6.js} +2 -2
  288. package/dist/cli/chunks/{windsurf-installer-Z6BWMUUO.js → windsurf-installer-CTFSFOBX.js} +2 -2
  289. package/dist/cli/chunks/{witness-chain-EFLTABBA.js → witness-chain-NCRHNFQM.js} +2 -2
  290. package/dist/cli/chunks/witness-chain-RU356H6R.js +2 -0
  291. package/dist/cli/chunks/{witness-key-manager-PN36TV43.js → witness-key-manager-WGCSSB23.js} +2 -2
  292. package/dist/cli/chunks/{workflow-A2AX3RJU.js → workflow-FE5QGP2U.js} +4 -4
  293. package/dist/cli/chunks/workflow-orchestrator-N2DQTC3X.js +2 -0
  294. package/dist/cli/chunks/{wrappers-NA6FHA63.js → wrappers-AHL5K2LO.js} +2 -2
  295. package/dist/cli/commands/hooks-handlers/hooks-shared.d.ts +9 -0
  296. package/dist/cli/commands/hooks-handlers/hooks-shared.js +38 -0
  297. package/dist/cli/commands/hooks.d.ts +2 -2
  298. package/dist/cli/commands/hooks.js +8 -2
  299. package/dist/cli/handlers/init-handler.js +1 -1
  300. package/dist/coordination/handlers/coverage-collection.d.ts +161 -0
  301. package/dist/coordination/handlers/coverage-collection.js +643 -0
  302. package/dist/coordination/handlers/coverage-handlers.js +199 -146
  303. package/dist/coordination/handlers/handler-types.d.ts +6 -1
  304. package/dist/coordination/handlers/handler-utils.js +10 -3
  305. package/dist/coordination/handlers/security-handlers.js +17 -2
  306. package/dist/coordination/handlers/test-execution-handlers.js +16 -1
  307. package/dist/coordination/queen-coordinator.js +4 -3
  308. package/dist/coordination/result-saver.js +119 -97
  309. package/dist/coordination/task-executor.d.ts +26 -1
  310. package/dist/coordination/task-executor.js +52 -4
  311. package/dist/domains/code-intelligence/services/knowledge-graph.js +8 -0
  312. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +4 -0
  313. package/dist/domains/coverage-analysis/services/gap-detector.js +4 -0
  314. package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -0
  315. package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +4 -0
  316. package/dist/domains/quality-assessment/services/deployment-advisor.js +4 -0
  317. package/dist/domains/quality-assessment/services/quality-analyzer.js +4 -0
  318. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -0
  319. package/dist/domains/test-generation/index.js +17 -2
  320. package/dist/domains/test-generation/services/test-generator.js +31 -9
  321. package/dist/init/codex-installer.d.ts +13 -0
  322. package/dist/init/codex-installer.js +122 -1
  323. package/dist/init/phases/09-assets.js +4 -0
  324. package/dist/init/phases/phase-interface.d.ts +1 -1
  325. package/dist/integrations/ruvector/rvf-store-integrity.js +5 -1
  326. package/dist/integrations/ruvector/shared-rvf-adapter.js +5 -5
  327. package/dist/learning/real-embeddings.js +15 -1
  328. package/dist/mcp/bundle.js +429 -419
  329. package/dist/mcp/handlers/domain-handler-configs.js +79 -14
  330. package/dist/mcp/types.d.ts +42 -4
  331. package/dist/optimization/session-cache.d.ts +13 -1
  332. package/dist/optimization/session-cache.js +27 -2
  333. package/dist/shared/llm/llm-router-service.js +59 -4
  334. package/dist/shared/llm/router/agent-router-config.d.ts +46 -2
  335. package/dist/shared/llm/router/agent-router-config.js +124 -2
  336. package/dist/shared/llm/router/config-store.d.ts +17 -1
  337. package/dist/shared/llm/router/config-store.js +103 -0
  338. package/dist/shared/llm/router/index.d.ts +2 -2
  339. package/dist/shared/llm/router/index.js +2 -0
  340. package/dist/shared/llm/router/types.d.ts +44 -0
  341. package/dist/shared/llm/router/types.js +1 -0
  342. package/package.json +9 -6
  343. package/dist/cli/chunks/adapter-CWIMFWAI.js +0 -2
  344. package/dist/cli/chunks/aqe-learning-engine-OTXT2DLN.js +0 -2
  345. package/dist/cli/chunks/base-O3SPSWBA.js +0 -2
  346. package/dist/cli/chunks/browser-workflow-MXS3ZKY2.js +0 -2
  347. package/dist/cli/chunks/chunk-G4GTE3RJ.js +0 -2
  348. package/dist/cli/chunks/chunk-G7FMYFTN.js +0 -2
  349. package/dist/cli/chunks/chunk-HVB2L52I.js +0 -2
  350. package/dist/cli/chunks/chunk-MVI2QMRW.js +0 -2
  351. package/dist/cli/chunks/chunk-OZR25R7W.js +0 -2
  352. package/dist/cli/chunks/chunk-PP2RYSHT.js +0 -3
  353. package/dist/cli/chunks/client-33PGO5FA.js +0 -2
  354. package/dist/cli/chunks/codex-installer-C2CUP4FW.js +0 -8
  355. package/dist/cli/chunks/core-handlers-CSNZIM3A.js +0 -2
  356. package/dist/cli/chunks/cross-domain-router-DRIBR5L3.js +0 -2
  357. package/dist/cli/chunks/dream-WUNO723O.js +0 -2
  358. package/dist/cli/chunks/heartbeat-scheduler-VAFQDJLL.js +0 -2
  359. package/dist/cli/chunks/hnsw-adapter-TIRPA7XE.js +0 -2
  360. package/dist/cli/chunks/hnsw-index-SSQBRQCQ.js +0 -2
  361. package/dist/cli/chunks/hybrid-router-AKBWZOQ3.js +0 -2
  362. package/dist/cli/chunks/impact-analyzer-46FQIZ6Y.js +0 -2
  363. package/dist/cli/chunks/init-wizard-U3NHGYSS.js +0 -2
  364. package/dist/cli/chunks/kernel-ZDXHT6QF.js +0 -2
  365. package/dist/cli/chunks/knowledge-graph-6XTW6WO6.js +0 -2
  366. package/dist/cli/chunks/llm-router-service-3F4E64SY.js +0 -2
  367. package/dist/cli/chunks/load-test-SWZNGEIY.js +0 -2
  368. package/dist/cli/chunks/memory-backend-PR74ZPBA.js +0 -2
  369. package/dist/cli/chunks/pattern-null-store-EPE36BVT.js +0 -2
  370. package/dist/cli/chunks/protocol-executor-IELENNST.js +0 -2
  371. package/dist/cli/chunks/provider-manager-3R3KOBHG.js +0 -2
  372. package/dist/cli/chunks/qe-reasoning-bank-S2R2PCBS.js +0 -2
  373. package/dist/cli/chunks/queen-coordinator-2E23NEV4.js +0 -2
  374. package/dist/cli/chunks/router-3FVLWO6S.js +0 -2
  375. package/dist/cli/chunks/routing-feedback-ZQLRNNR7.js +0 -2
  376. package/dist/cli/chunks/rvf-native-adapter-YFGLQNEB.js +0 -2
  377. package/dist/cli/chunks/safe-db-4SBLBTW7.js +0 -2
  378. package/dist/cli/chunks/schedule-5Y3BGVAA.js +0 -2
  379. package/dist/cli/chunks/scheduler-DOID3QF3.js +0 -2
  380. package/dist/cli/chunks/sqlite-persistence-M4JEQO57.js +0 -2
  381. package/dist/cli/chunks/unified-memory-WNYWTGVX.js +0 -2
  382. package/dist/cli/chunks/unified-memory-hnsw-YPAV7U4E.js +0 -2
  383. package/dist/cli/chunks/unified-persistence-TJ252S7L.js +0 -2
  384. package/dist/cli/chunks/visual-security-VKYXEGJB.js +0 -2
  385. package/dist/cli/chunks/witness-chain-WVXRXKQP.js +0 -2
  386. package/dist/cli/chunks/workflow-orchestrator-GOWSPR3G.js +0 -2
@@ -5,8 +5,9 @@
5
5
  *
6
6
  * Follows the OpenCode/Kiro installer pattern (ADR-025).
7
7
  */
8
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
8
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from 'fs';
9
9
  import { join, dirname } from 'path';
10
+ import { fileURLToPath } from 'url';
10
11
  import { toErrorMessage } from '../shared/error-utils.js';
11
12
  import { createPlatformConfigGenerator, } from './platform-config-generator.js';
12
13
  // ============================================================================
@@ -28,9 +29,13 @@ export class CodexInstaller {
28
29
  success: true,
29
30
  mcpConfigured: false,
30
31
  agentsMdInstalled: false,
32
+ hooksConfigured: false,
33
+ skillsInstalled: 0,
31
34
  errors: [],
32
35
  configPath: '',
33
36
  agentsMdPath: '',
37
+ hooksPath: join(this.projectRoot, '.codex', 'hooks.json'),
38
+ skillsPath: join(this.projectRoot, '.agents', 'skills'),
34
39
  };
35
40
  try {
36
41
  // Generate TOML MCP config
@@ -65,6 +70,8 @@ export class CodexInstaller {
65
70
  }
66
71
  result.agentsMdInstalled = true;
67
72
  }
73
+ this.installCodexHooks(result);
74
+ result.skillsInstalled = this.installCodexSkills();
68
75
  }
69
76
  catch (error) {
70
77
  result.success = false;
@@ -72,6 +79,120 @@ export class CodexInstaller {
72
79
  }
73
80
  return result;
74
81
  }
82
+ /**
83
+ * Install Codex-native lifecycle adapters and merge AQE/ruflo hook groups
84
+ * without removing user-defined hooks.
85
+ */
86
+ installCodexHooks(result) {
87
+ const sourceRoot = this.resolvePackageRoot();
88
+ if (!sourceRoot)
89
+ return;
90
+ const sourceConfig = join(sourceRoot, '.codex', 'hooks.json');
91
+ const sourceScripts = join(sourceRoot, '.codex', 'hooks');
92
+ if (!existsSync(sourceConfig) || !existsSync(sourceScripts))
93
+ return;
94
+ const targetCodexDir = join(this.projectRoot, '.codex');
95
+ const targetScripts = join(targetCodexDir, 'hooks');
96
+ mkdirSync(targetScripts, { recursive: true });
97
+ for (const file of readdirSync(sourceScripts)) {
98
+ const source = join(sourceScripts, file);
99
+ if (!statSync(source).isFile())
100
+ continue;
101
+ const target = join(targetScripts, file);
102
+ if (!existsSync(target) || this.overwrite) {
103
+ copyFileSync(source, target);
104
+ }
105
+ }
106
+ const runtimes = [
107
+ {
108
+ source: join(sourceRoot, '.claude', 'hooks', 'aqe-hook.cjs'),
109
+ target: join(targetScripts, 'aqe-runtime.cjs'),
110
+ },
111
+ {
112
+ source: join(sourceRoot, '.claude', 'helpers', 'ruflo-hook.cjs'),
113
+ target: join(targetScripts, 'ruflo-runtime.cjs'),
114
+ },
115
+ ];
116
+ for (const runtime of runtimes) {
117
+ if (existsSync(runtime.source) && (!existsSync(runtime.target) || this.overwrite)) {
118
+ copyFileSync(runtime.source, runtime.target);
119
+ }
120
+ }
121
+ const generated = JSON.parse(readFileSync(sourceConfig, 'utf-8'));
122
+ const targetConfig = join(targetCodexDir, 'hooks.json');
123
+ if (!existsSync(targetConfig)) {
124
+ writeFileSync(targetConfig, JSON.stringify(generated, null, 2) + '\n');
125
+ result.hooksConfigured = true;
126
+ return;
127
+ }
128
+ if (!this.overwrite)
129
+ return;
130
+ const existing = JSON.parse(readFileSync(targetConfig, 'utf-8'));
131
+ const owned = (value) => JSON.stringify(value).includes('/.codex/hooks/aqe-codex-hook.cjs')
132
+ || JSON.stringify(value).includes('/.codex/hooks/ruflo-codex-hook.cjs');
133
+ const mergedHooks = {};
134
+ const events = new Set([
135
+ ...Object.keys(existing.hooks || {}),
136
+ ...Object.keys(generated.hooks || {}),
137
+ ]);
138
+ for (const event of events) {
139
+ const userGroups = (existing.hooks?.[event] || []).filter((group) => !owned(group));
140
+ mergedHooks[event] = [...userGroups, ...(generated.hooks?.[event] || [])];
141
+ }
142
+ writeFileSync(targetConfig, JSON.stringify({ ...existing, description: generated.description, hooks: mergedHooks }, null, 2) + '\n');
143
+ result.hooksConfigured = true;
144
+ }
145
+ /** Install the curated repo-scoped AQE skills Codex discovers automatically. */
146
+ installCodexSkills() {
147
+ const sourceRoot = this.resolvePackageRoot();
148
+ if (!sourceRoot)
149
+ return 0;
150
+ const sourceSkills = join(sourceRoot, '.agents', 'skills');
151
+ if (!existsSync(sourceSkills))
152
+ return 0;
153
+ const targetSkills = join(this.projectRoot, '.agents', 'skills');
154
+ mkdirSync(targetSkills, { recursive: true });
155
+ 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);
163
+ if (existsSync(target) && !this.overwrite)
164
+ continue;
165
+ this.copyDirectory(source, target);
166
+ installed++;
167
+ }
168
+ return installed;
169
+ }
170
+ copyDirectory(source, target) {
171
+ mkdirSync(target, { recursive: true });
172
+ for (const entry of readdirSync(source)) {
173
+ const from = join(source, entry);
174
+ const to = join(target, entry);
175
+ if (statSync(from).isDirectory()) {
176
+ this.copyDirectory(from, to);
177
+ }
178
+ else {
179
+ copyFileSync(from, to);
180
+ }
181
+ }
182
+ }
183
+ resolvePackageRoot() {
184
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
185
+ const candidates = [
186
+ join(moduleDir, '..', '..'),
187
+ // esbuild bundles this module into dist/cli/bundle.js, so import.meta.url
188
+ // no longer identifies src/init/codex-installer.ts. Resolve from the
189
+ // running CLI entrypoint as the authoritative packaged layout.
190
+ join(dirname(process.argv[1] || ''), '..', '..'),
191
+ join(this.projectRoot, 'node_modules', 'agentic-qe'),
192
+ ];
193
+ return candidates.find((candidate) => existsSync(join(candidate, '.codex', 'hooks.json'))
194
+ || existsSync(join(candidate, '.agents', 'skills')));
195
+ }
75
196
  /**
76
197
  * Merge AQE MCP server config into existing TOML.
77
198
  * Simple approach: if [mcp_servers.agentic-qe] already exists, skip.
@@ -303,6 +303,10 @@ export class AssetsPhase extends BasePhase {
303
303
  context.services.log(` Codex MCP: ${res.configPath}`);
304
304
  if (res.agentsMdInstalled)
305
305
  context.services.log(` Codex AGENTS.md: ${res.agentsMdPath}`);
306
+ if (res.hooksConfigured)
307
+ context.services.log(` Codex hooks: ${res.hooksPath}`);
308
+ if (res.skillsInstalled > 0)
309
+ context.services.log(` Codex skills: ${res.skillsInstalled} installed`);
306
310
  }
307
311
  if (options.withWindsurf || (options.autoMode && existsSync(join(projectRoot, '.windsurf')))) {
308
312
  const { createWindsurfInstaller } = await import('../windsurf-installer.js');
@@ -119,7 +119,7 @@ export interface InitOptions {
119
119
  withKiloCode?: boolean;
120
120
  /** Install Roo Code MCP config and custom mode */
121
121
  withRooCode?: boolean;
122
- /** Install OpenAI Codex CLI MCP config and AGENTS.md */
122
+ /** Install OpenAI Codex CLI MCP, AGENTS.md, hooks, and QE skills */
123
123
  withCodex?: boolean;
124
124
  /** Install Windsurf MCP config and rules */
125
125
  withWindsurf?: boolean;
@@ -84,7 +84,11 @@ export function isLockHeldByLiveProcess(rvfPath) {
84
84
  const pid = readLockOwnerPid(rvfPath);
85
85
  if (pid === null)
86
86
  return false;
87
- return pid !== process.pid && isPidAlive(pid);
87
+ // A same-PID lock can belong to another adapter initialized through a
88
+ // different in-process path. PID equality does not prove that handle was
89
+ // closed, and breaking the lock can quarantine/replace a store that this
90
+ // process still has open. Treat every live owner conservatively.
91
+ return isPidAlive(pid);
88
92
  }
89
93
  /**
90
94
  * Move an unusable store and its sidecars aside so the next create succeeds.
@@ -136,11 +136,11 @@ function openOrCreateRvf(openFn, createFn, rvfPath, dimensions) {
136
136
  // prior process is dead and the lock is stale". We unlink the .lock and
137
137
  // retry open exactly once.
138
138
  //
139
- // Issue #563: the lock record turns out to carry its owner's pid (u32 LE at
140
- // offset 4, after the `FLVR` magic), so "is it stale?" is now a check rather
141
- // than an assumption. This previously unlinked the lock unconditionally,
142
- // which breaks a genuinely-live peer the one case the old comment admitted
143
- // it could not distinguish.
139
+ // Issue #563: the lock record carries its owner's pid (u32 LE at offset 4,
140
+ // after the `FLVR` magic), so "is it stale?" is a check rather than an
141
+ // assumption. This includes a lock owned by the current PID: another
142
+ // in-process adapter may still hold the store, so PID equality is not proof
143
+ // that the lock can be removed safely.
144
144
  if (!opened && isLockHeld(openErr)) {
145
145
  try {
146
146
  // eslint-disable-next-line @typescript-eslint/no-require-imports
@@ -125,7 +125,21 @@ async function initializeModel(config = {}) {
125
125
  return;
126
126
  }
127
127
  // In-process branch — only here do we import the transformers package.
128
- const transformers = await import('@huggingface/transformers');
128
+ // #565: `@huggingface/transformers` is NOT installed automatically (it
129
+ // transitively pulls onnxruntime-node -> adm-zip <0.6.0, GHSA-xcpc-8h2w-3j85,
130
+ // which upstream has not fixed). Users who want in-process embeddings opt in
131
+ // explicitly; everyone else uses an embedding endpoint. Translate the raw
132
+ // module-resolution failure into actionable guidance.
133
+ let transformers;
134
+ try {
135
+ transformers = await import('@huggingface/transformers');
136
+ }
137
+ catch {
138
+ throw new Error('In-process embeddings require the optional package "@huggingface/transformers", ' +
139
+ 'which is not installed. Either run `npm install @huggingface/transformers`, or ' +
140
+ 'configure an embedding endpoint (EmbeddingConfig.endpoint / AQE_EMBEDDING_ENDPOINT) ' +
141
+ 'so no local model is loaded.');
142
+ }
129
143
  pipeline = transformers.pipeline;
130
144
  console.log(`[RealEmbeddings] Loading model: ${fullConfig.modelName}`);
131
145
  const startTime = performance.now();