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.
- package/.agents/skills/aqe-plan-work/SKILL.md +31 -0
- package/.agents/skills/aqe-plan-work/agents/openai.yaml +4 -0
- package/.agents/skills/aqe-plan-work/references/planning-framework.md +39 -0
- package/.agents/skills/aqe-research/SKILL.md +31 -0
- package/.agents/skills/aqe-research/agents/openai.yaml +4 -0
- package/.agents/skills/aqe-research/references/evidence-rules.md +21 -0
- package/.agents/skills/aqe-ruflo/SKILL.md +29 -0
- package/.claude/commands/pair/README.md +261 -0
- package/.claude/commands/pair/commands.md +546 -0
- package/.claude/commands/pair/config.md +510 -0
- package/.claude/commands/pair/examples.md +512 -0
- package/.claude/commands/pair/modes.md +348 -0
- package/.claude/commands/pair/session.md +407 -0
- package/.claude/commands/pair/start.md +209 -0
- package/.claude/commands/stream-chain/pipeline.md +121 -0
- package/.claude/commands/stream-chain/run.md +70 -0
- package/.claude/commands/training/README.md +9 -0
- package/.claude/commands/training/model-update.md +25 -0
- package/.claude/commands/training/neural-patterns.md +108 -0
- package/.claude/commands/training/neural-train.md +75 -0
- package/.claude/commands/training/pattern-learn.md +25 -0
- package/.claude/commands/training/specialization.md +63 -0
- package/.claude/commands/truth/start.md +143 -0
- package/.claude/commands/verify/check.md +50 -0
- package/.claude/commands/verify/start.md +128 -0
- package/.claude/helpers/v3/advisor-call.cjs +283 -0
- package/.claude/skills/README.md +54 -64
- package/.claude/skills/dual-mode/README.md +71 -0
- package/.claude/skills/dual-mode/dual-collect.md +103 -0
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -0
- package/.claude/skills/dual-mode/dual-spawn.md +81 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/.codex/hooks/aqe-codex-hook.cjs +34 -9
- package/.codex/hooks.json +9 -9
- package/CHANGELOG.md +42 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-JISQ35YY.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-YIGGREZN.js → agent-booster-wasm-PR3RQWXF.js} +2 -2
- package/dist/cli/chunks/{agent-handler-64O7R55A.js → agent-handler-J5EPFBSZ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-2ZZBYUP3.js → agent-memory-branch-CCHI6QAA.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-TVTNP76S.js +2 -0
- package/dist/cli/chunks/{arena-PF5WL2WM.js → arena-KMKBGSMY.js} +2 -2
- package/dist/cli/chunks/{arena-6YRNQNCX.js → arena-SI7IPVZ3.js} +4 -4
- package/dist/cli/chunks/{audit-R53FOYCK.js → audit-ZDKR3HT6.js} +3 -3
- package/dist/cli/chunks/base-WBCYKM45.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-QOULNHXS.js → better-sqlite3-FXJFG2WH.js} +2 -2
- package/dist/cli/chunks/{brain-handler-J4ICUOUX.js → brain-handler-MSYMTM5B.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-YVPD43TG.js → branch-enumerator-FRAHCBTO.js} +2 -2
- package/dist/cli/chunks/{browser-TKVHX53S.js → browser-4KHKVNYC.js} +2 -2
- package/dist/cli/chunks/browser-workflow-4JM3IWCS.js +2 -0
- package/dist/cli/chunks/{chunk-GSG5FASF.js → chunk-26SNR2EK.js} +3 -3
- package/dist/cli/chunks/{chunk-JG267MVB.js → chunk-27FWRWOB.js} +2 -2
- package/dist/cli/chunks/{chunk-NIA6VTIH.js → chunk-27REOPQK.js} +2 -2
- package/dist/cli/chunks/{chunk-4RYU4WMW.js → chunk-2Q73TQUQ.js} +1 -1
- package/dist/cli/chunks/{chunk-A22RTEJ3.js → chunk-344CLTV7.js} +2 -2
- package/dist/cli/chunks/{chunk-MGKJFO57.js → chunk-3RSF7POD.js} +2 -2
- package/dist/cli/chunks/{chunk-CVFUANMU.js → chunk-44SYMJ4T.js} +2 -2
- package/dist/cli/chunks/{chunk-22WFXSXB.js → chunk-4FP4PJ45.js} +2 -2
- package/dist/cli/chunks/{chunk-DTOKJKSE.js → chunk-4HVVVVUF.js} +2 -2
- package/dist/cli/chunks/{chunk-QGJYKXUO.js → chunk-55E62F4T.js} +1 -1
- package/dist/cli/chunks/{chunk-RWPWD5GG.js → chunk-56QR72EB.js} +2 -2
- package/dist/cli/chunks/{chunk-NUPAGPN6.js → chunk-5DESO7E4.js} +2 -2
- package/dist/cli/chunks/{chunk-PHNNAIFA.js → chunk-5IVXM3TE.js} +1 -1
- package/dist/cli/chunks/{chunk-TW5QWNT4.js → chunk-5R26MAMK.js} +2 -2
- package/dist/cli/chunks/{chunk-IZIYFVAZ.js → chunk-5RVWL2U3.js} +3 -3
- package/dist/cli/chunks/{chunk-OX6WPOGR.js → chunk-6BHRSGR7.js} +3 -3
- package/dist/cli/chunks/{chunk-4Z2AKQP4.js → chunk-6CZUQA4G.js} +1 -1
- package/dist/cli/chunks/{chunk-FGIZVGIE.js → chunk-6GNVVQW3.js} +2 -2
- package/dist/cli/chunks/{chunk-7AHQ7ROU.js → chunk-6VNUASTQ.js} +2 -2
- package/dist/cli/chunks/{chunk-B7XZJBMT.js → chunk-6XCULO27.js} +2 -2
- package/dist/cli/chunks/{chunk-LOZRBK2Z.js → chunk-6XVP6BGM.js} +2 -2
- package/dist/cli/chunks/{chunk-APXJJRU4.js → chunk-75CFWCQV.js} +2 -2
- package/dist/cli/chunks/{chunk-37GCWGXT.js → chunk-7EL5QEMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-3NML6POU.js → chunk-7YAHECC5.js} +2 -2
- package/dist/cli/chunks/{chunk-N3KQRDTM.js → chunk-A2G26WU4.js} +1 -1
- package/dist/cli/chunks/{chunk-X737I4SO.js → chunk-AROPZPNG.js} +1 -1
- package/dist/cli/chunks/{chunk-IKPBQZQP.js → chunk-BQRCNRTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-JLFU5SCI.js → chunk-C3AF5Z55.js} +2 -2
- package/dist/cli/chunks/{chunk-FF53QW6C.js → chunk-C75V5PTW.js} +1 -1
- package/dist/cli/chunks/{chunk-HJNFXYX4.js → chunk-CQP6BDSF.js} +1 -1
- package/dist/cli/chunks/{chunk-ADBTOUOX.js → chunk-CTNDSP2M.js} +1 -1
- package/dist/cli/chunks/{chunk-VRTNRI4H.js → chunk-CW7LDLJ2.js} +2 -2
- package/dist/cli/chunks/{chunk-PHBGMXTR.js → chunk-DQ247474.js} +2 -2
- package/dist/cli/chunks/{chunk-66KIIH6V.js → chunk-E7FCVH32.js} +2 -2
- package/dist/cli/chunks/{chunk-64C4SS66.js → chunk-EEHEMDNV.js} +2 -2
- package/dist/cli/chunks/{chunk-2MLPO3RZ.js → chunk-EPSF2ERW.js} +2 -2
- package/dist/cli/chunks/{chunk-AXXFY7PX.js → chunk-ERKYIV25.js} +2 -2
- package/dist/cli/chunks/{chunk-VFZNVJP2.js → chunk-ESMSH7HG.js} +2 -2
- package/dist/cli/chunks/{chunk-PS32DXYF.js → chunk-EUIUWZF4.js} +3 -3
- package/dist/cli/chunks/{chunk-764G7VK6.js → chunk-FBXWU37F.js} +1 -1
- package/dist/cli/chunks/{chunk-NF2N2FIY.js → chunk-FJSL7TWU.js} +1 -1
- package/dist/cli/chunks/{chunk-6I2L22WS.js → chunk-FZ4MUDHZ.js} +1 -1
- package/dist/cli/chunks/{chunk-62F5M5OO.js → chunk-GGZB2ZBB.js} +1 -1
- package/dist/cli/chunks/{chunk-HOIH542Y.js → chunk-GIU26D5G.js} +1 -1
- package/dist/cli/chunks/{chunk-7TG7LJAB.js → chunk-GNFKG2LX.js} +2 -2
- package/dist/cli/chunks/{chunk-J5AIMM2J.js → chunk-GOFP47XU.js} +1 -1
- package/dist/cli/chunks/{chunk-AJ45QR3K.js → chunk-GOHWEQEP.js} +2 -2
- package/dist/cli/chunks/{chunk-MNEQESQJ.js → chunk-GRMKN44A.js} +3 -3
- package/dist/cli/chunks/{chunk-H4XZOIV6.js → chunk-HGBVGEUE.js} +2 -2
- package/dist/cli/chunks/{chunk-JQTDNUHA.js → chunk-HGY62IYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-2G2XD6EM.js → chunk-HN2DD2DQ.js} +2 -2
- package/dist/cli/chunks/{chunk-N4OBRS6S.js → chunk-II2RP3MY.js} +2 -2
- package/dist/cli/chunks/{chunk-CXPMA7LY.js → chunk-IN5KRJSE.js} +1 -1
- package/dist/cli/chunks/{chunk-TNM7X2GD.js → chunk-ISGKDLZ7.js} +2 -2
- package/dist/cli/chunks/{chunk-TGVDKSSS.js → chunk-ITQCSIYG.js} +1 -1
- package/dist/cli/chunks/{chunk-PY55ZD2G.js → chunk-IU5SILCS.js} +2 -2
- package/dist/cli/chunks/{chunk-JOHWWTJF.js → chunk-IUFNB6I6.js} +2 -2
- package/dist/cli/chunks/{chunk-UAXFRKR3.js → chunk-IVZA5XTW.js} +2 -2
- package/dist/cli/chunks/{chunk-A6J5MAVO.js → chunk-JBHGMLN7.js} +10 -10
- package/dist/cli/chunks/{chunk-UF7JKDWB.js → chunk-JDADACZZ.js} +1 -1
- package/dist/cli/chunks/{chunk-5IH22DLD.js → chunk-JJ5YIKTJ.js} +3 -3
- package/dist/cli/chunks/{chunk-TRPRFW27.js → chunk-KB4S7MGB.js} +2 -2
- package/dist/cli/chunks/{chunk-XRF5MX4Q.js → chunk-KDICUKYX.js} +2 -2
- package/dist/cli/chunks/{chunk-EEG4G5JG.js → chunk-KE656E6T.js} +3 -3
- package/dist/cli/chunks/{chunk-F6V5POSK.js → chunk-KO3UQYGY.js} +10 -10
- package/dist/cli/chunks/{chunk-WRC66JTK.js → chunk-KQLJILCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-C7AXBCMS.js → chunk-KZAVYHH7.js} +4 -4
- package/dist/cli/chunks/{chunk-7MBPKAQ3.js → chunk-L3UTZEVW.js} +2 -2
- package/dist/cli/chunks/{chunk-RRHIEG4Y.js → chunk-LASZCR5G.js} +2 -2
- package/dist/cli/chunks/{chunk-PHGOMAIS.js → chunk-LEIG3KIG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZIYCZZYD.js → chunk-LIMFWEUI.js} +2 -2
- package/dist/cli/chunks/{chunk-VGWHFFK6.js → chunk-LJSHQU2P.js} +5 -5
- package/dist/cli/chunks/{chunk-3J2QITXC.js → chunk-LUAYTM77.js} +1 -1
- package/dist/cli/chunks/{chunk-GNCGRDQ2.js → chunk-MANWLRAW.js} +1 -1
- package/dist/cli/chunks/{chunk-JBWXBDJX.js → chunk-MP3RCZ75.js} +1 -1
- package/dist/cli/chunks/{chunk-WVWWTRKT.js → chunk-MPVOZKUP.js} +1 -1
- package/dist/cli/chunks/{chunk-A547LEUW.js → chunk-MWWTYPFL.js} +2 -2
- package/dist/cli/chunks/{chunk-IRX2THND.js → chunk-N57M7UPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-TK6CHESH.js → chunk-N7LIYK7Z.js} +1 -1
- package/dist/cli/chunks/{chunk-ORXDKBZC.js → chunk-NAAPL2HK.js} +1 -1
- package/dist/cli/chunks/{chunk-IH47VGC7.js → chunk-NAZFAGJ5.js} +2 -2
- package/dist/cli/chunks/{chunk-M7XDTQHX.js → chunk-NQJLUY2K.js} +2 -2
- package/dist/cli/chunks/{chunk-6C3PDY72.js → chunk-NQVF4M7L.js} +1 -1
- package/dist/cli/chunks/{chunk-SJWTNKPY.js → chunk-NW4YPUPN.js} +3 -3
- package/dist/cli/chunks/{chunk-46U73TST.js → chunk-O45CEMVF.js} +1 -1
- package/dist/cli/chunks/{chunk-37I4AMCT.js → chunk-O74V7MB4.js} +2 -2
- package/dist/cli/chunks/{chunk-ZI7BWJJW.js → chunk-OF7674H5.js} +2 -2
- package/dist/cli/chunks/{chunk-P5CQMDFQ.js → chunk-OR2RC7ZH.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLTAAROU.js → chunk-OU2YHXJY.js} +2 -2
- package/dist/cli/chunks/{chunk-JHOJG5VO.js → chunk-OU3SYEYJ.js} +1 -1
- package/dist/cli/chunks/{chunk-N7IRBQ4D.js → chunk-PD2ZSCEH.js} +1 -1
- package/dist/cli/chunks/{chunk-DSUEJK33.js → chunk-PFQLB4XP.js} +2 -2
- package/dist/cli/chunks/{chunk-V6W4IHS5.js → chunk-PI55PHUL.js} +2 -2
- package/dist/cli/chunks/{chunk-EMH54CO7.js → chunk-PIYDPOW6.js} +2 -2
- package/dist/cli/chunks/{chunk-DSGKRXHF.js → chunk-PJFQGNRW.js} +1 -1
- package/dist/cli/chunks/{chunk-L4O2645U.js → chunk-PRHLV6FS.js} +1 -1
- package/dist/cli/chunks/chunk-Q4VZXT6X.js +2 -0
- package/dist/cli/chunks/{chunk-H2BR5MCX.js → chunk-QENUKXPP.js} +2 -2
- package/dist/cli/chunks/chunk-QGH54HTH.js +2 -0
- package/dist/cli/chunks/{chunk-2BYRQ5MV.js → chunk-QXF6EQFP.js} +2 -2
- package/dist/cli/chunks/{chunk-ZU3XUBDQ.js → chunk-RCRKCMN5.js} +1 -1
- package/dist/cli/chunks/{chunk-5A5EC5RD.js → chunk-RKNKFLCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-5IVOY76M.js → chunk-RLZZTFEN.js} +2 -2
- package/dist/cli/chunks/{chunk-CBLKYGKT.js → chunk-RO4BYINM.js} +2 -2
- package/dist/cli/chunks/{chunk-K2D3YW2N.js → chunk-SFRYDGLF.js} +1 -1
- package/dist/cli/chunks/{chunk-UX434RY5.js → chunk-SJ26ZR75.js} +2 -2
- package/dist/cli/chunks/{chunk-LLQG3F4H.js → chunk-SPTCNM45.js} +2 -2
- package/dist/cli/chunks/{chunk-KQFMCVBH.js → chunk-SQCACQUM.js} +2 -2
- package/dist/cli/chunks/{chunk-3CFWNT3F.js → chunk-TCYSMSBO.js} +2 -2
- package/dist/cli/chunks/{chunk-W6OIDL4J.js → chunk-TFFEB7XD.js} +2 -2
- package/dist/cli/chunks/{chunk-RU23JXCG.js → chunk-TM6LLT4G.js} +3 -3
- package/dist/cli/chunks/{chunk-WHUQDBV7.js → chunk-TO7FTPRV.js} +2 -2
- package/dist/cli/chunks/{chunk-QZ3EIONO.js → chunk-U52IQFMP.js} +1 -1
- package/dist/cli/chunks/{chunk-33SPAMQZ.js → chunk-UAEP2ZUQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OD5R7HRI.js → chunk-UNMWI4QU.js} +1 -1
- package/dist/cli/chunks/{chunk-U7DGRHSB.js → chunk-UOO7P2AK.js} +2 -2
- package/dist/cli/chunks/{chunk-QFANYWC5.js → chunk-UQFMQOZB.js} +1 -1
- package/dist/cli/chunks/{chunk-2QKSIHXO.js → chunk-VDPQ7NVG.js} +1 -1
- package/dist/cli/chunks/{chunk-QP4UKSUJ.js → chunk-VLELNETG.js} +2 -2
- package/dist/cli/chunks/{chunk-KQ5GLUOB.js → chunk-VOAXVNO5.js} +4 -4
- package/dist/cli/chunks/{chunk-QZS3XCU5.js → chunk-VZO4V4R4.js} +2 -2
- package/dist/cli/chunks/{chunk-BDOD534O.js → chunk-W37WY3OL.js} +2 -2
- package/dist/cli/chunks/{chunk-UWBHR4EZ.js → chunk-WCUXA3NV.js} +1 -1
- package/dist/cli/chunks/{chunk-RMQRSZB4.js → chunk-WSQE3VZB.js} +1 -1
- package/dist/cli/chunks/{chunk-MYR6CBXC.js → chunk-WUXCL65V.js} +2 -2
- package/dist/cli/chunks/{chunk-OU5CZFBG.js → chunk-X5JMTHXC.js} +3 -3
- package/dist/cli/chunks/{chunk-XRQGWUDX.js → chunk-X67O2KUE.js} +2 -2
- package/dist/cli/chunks/{chunk-HEF6XKA5.js → chunk-XBSBVPSM.js} +2 -2
- package/dist/cli/chunks/{chunk-KBQRYAHZ.js → chunk-XEI5LLHX.js} +2 -2
- package/dist/cli/chunks/{chunk-LWPCGOQM.js → chunk-XF4F5ZXO.js} +2 -2
- package/dist/cli/chunks/{chunk-SAMAYDVS.js → chunk-XLP44YGX.js} +2 -2
- package/dist/cli/chunks/{chunk-CW7BWFFF.js → chunk-XTHRSBMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-VKUH57JE.js → chunk-Y7VWCP35.js} +1 -1
- package/dist/cli/chunks/{chunk-6R6QGQ7D.js → chunk-YQI6SOUO.js} +1 -1
- package/dist/cli/chunks/{chunk-GTURQ454.js → chunk-YZGA4ELM.js} +2 -2
- package/dist/cli/chunks/{chunk-SSXCHSVM.js → chunk-Z6FK7T7J.js} +2 -2
- package/dist/cli/chunks/{chunk-UOJ26GXD.js → chunk-Z7FVGJYC.js} +2 -2
- package/dist/cli/chunks/{chunk-DPJLA7JW.js → chunk-ZAT65V6I.js} +2 -2
- package/dist/cli/chunks/{chunk-J65XQ6WE.js → chunk-ZYCPTARG.js} +2 -2
- package/dist/cli/chunks/{ci-G2NEYLVO.js → ci-DK4FGREO.js} +2 -2
- package/dist/cli/chunks/{ci-output-SZFEXGBU.js → ci-output-HQBBQQES.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-ZD7PJY6N.js → circuit-breaker-MJCS46DN.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-DAVANGUJ.js → claude-flow-setup-IIQT52H4.js} +2 -2
- package/dist/cli/chunks/client-FNDZB4TY.js +2 -0
- package/dist/cli/chunks/{cline-installer-WCPKWLY7.js → cline-installer-7SPKUNNZ.js} +2 -2
- package/dist/cli/chunks/{code-324ZJR3V.js → code-V2B4FP3X.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-EWVSXJHR.js → code-index-extractor-IRGAI76Y.js} +2 -2
- package/dist/cli/chunks/codex-installer-PDFCYRU6.js +15 -0
- package/dist/cli/chunks/{completions-ZAWBZWYK.js → completions-TAJ6N7YZ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-S3H2IRON.js → complexity-analyzer-JHQKQKBG.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-4DDFAJ26.js → continuedev-installer-DESZXCLC.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-KBBAL3G5.js → copilot-installer-OQPXBLWS.js} +2 -2
- package/dist/cli/chunks/core-handlers-S37RHLKP.js +2 -0
- package/dist/cli/chunks/{cost-tracker-2YM7SGBW.js → cost-tracker-KHDFSCAJ.js} +2 -2
- package/dist/cli/chunks/{coverage-6CCBAORJ.js → coverage-T7EENIDE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-7ZHDB2V3.js +2 -0
- package/dist/cli/chunks/{cursor-installer-24DKXNU5.js → cursor-installer-X6BFU5QU.js} +2 -2
- package/dist/cli/chunks/{daemon-M2PSDIZF.js → daemon-22NOG5XI.js} +3 -3
- package/dist/cli/chunks/{daemon-JLF6CRBS.js → daemon-UTPP4JCG.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-Y5HSZDRV.js → dag-attention-scheduler-XI6DG3FW.js} +2 -2
- package/dist/cli/chunks/{detect-6Y227IJ6.js → detect-7IMQGJ5I.js} +2 -2
- package/dist/cli/chunks/{dist-node-EGOJXGTA.js → dist-node-YMLM4K7J.js} +2 -2
- package/dist/cli/chunks/{domain-handler-G3JEWRE5.js → domain-handler-LRTJGTEH.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-XOHI3EMJ.js → domain-transfer-HZJ3WUCT.js} +2 -2
- package/dist/cli/chunks/dream-BEVYNIOO.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-CSSA55L4.js → embed-and-insert-pattern-QSRN7Z5Q.js} +2 -2
- package/dist/cli/chunks/{eval-NHBXOXDV.js → eval-JVVVQVV6.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-B7ZDV5UY.js → experience-capture-middleware-ORZN3ROJ.js} +3 -3
- package/dist/cli/chunks/{fast-paths-XGKSBALA.js → fast-paths-LUFARZR5.js} +2 -2
- package/dist/cli/chunks/{feature-flags-NBUDJSWJ.js → feature-flags-2XC4ECLW.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZVD73ZYK.js → feature-flags-ZHQESXIP.js} +2 -2
- package/dist/cli/chunks/{file-discovery-C42TEUKT.js → file-discovery-UHXZQ7GS.js} +2 -2
- package/dist/cli/chunks/{fleet-LF77P3BW.js → fleet-FUQ6G4SB.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-UXNT7BEN.js → gnn-wrapper-A4E6OKGD.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-C4LMU5LA.js → heartbeat-handler-3JKQORXA.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-K4YLB3X4.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-PPR3LTMA.js +2 -0
- package/dist/cli/chunks/hnsw-index-ZSKFT4LZ.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-EHHBIWS3.js → hnsw-legacy-bridge-AHKFKM2J.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-OW5HIPEN.js → hnswlib-node-BP5CZGMD.js} +2 -2
- package/dist/cli/chunks/{hooks-AGE3HCFI.js → hooks-JNW5ZB2E.js} +10 -10
- package/dist/cli/chunks/hybrid-router-4SXBHTOY.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-E5QX5MEB.js → hypergraph-engine-3DTAMNSJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ZZHBANYB.js → hypergraph-handler-ZV4AZRGF.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-55GE7EQD.js +2 -0
- package/dist/cli/chunks/{init-handler-PNVRBZZT.js → init-handler-NPOUX47N.js} +10 -6
- package/dist/cli/chunks/init-wizard-EUQLSGI6.js +2 -0
- package/dist/cli/chunks/kernel-BSGSVYPM.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-TR53QKPU.js → kilocode-installer-D35TR6LG.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-MJW6LCAX.js → kiro-installer-OHHTQENO.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-OITIVT5J.js +2 -0
- package/dist/cli/chunks/{learning-6LLGHP2Q.js → learning-24PCHLWU.js} +3 -3
- package/dist/cli/chunks/{llm-router-DBLV3VGG.js → llm-router-XLTE52H5.js} +4 -4
- package/dist/cli/chunks/llm-router-service-RUPU52AR.js +2 -0
- package/dist/cli/chunks/{load-LAZ3E5PE.js → load-BHMK4FIL.js} +2 -2
- package/dist/cli/chunks/load-test-ZV3C55ZE.js +2 -0
- package/dist/cli/chunks/{mcp-L5QXHSEY.js → mcp-V4MAYT7C.js} +2 -2
- package/dist/cli/chunks/{memory-YR5PCMWA.js → memory-PDA7MQ7E.js} +5 -5
- package/dist/cli/chunks/memory-backend-S3KCPHCF.js +2 -0
- package/dist/cli/chunks/{memory-handlers-BSRTZQYR.js → memory-handlers-X5BLXOSH.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-RECZ3ACW.js → multi-model-executor-KECHOXKD.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-4TDUB7HH.js → opencode-installer-LWSCQOOZ.js} +2 -2
- package/dist/cli/chunks/{orchestrator-PHDKJ5C4.js → orchestrator-ENEBTEUW.js} +6 -6
- package/dist/cli/chunks/pattern-null-store-ILVDKSCX.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-QK2FADRS.js → pattern-usage-recorder-XIHGXYZZ.js} +2 -2
- package/dist/cli/chunks/{pipeline-JQJYSN43.js → pipeline-GQOJM3LU.js} +2 -2
- package/dist/cli/chunks/platform-L56TGXGZ.js +2 -0
- package/dist/cli/chunks/{plugin-766MBGK6.js → plugin-SZ6PZKYX.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-XQERZNSK.js → prime-radiant-advanced-wasm-SID5FQFW.js} +2 -2
- package/dist/cli/chunks/protocol-executor-GDRHCW3Q.js +2 -0
- package/dist/cli/chunks/{protocol-handler-FAK4MMNA.js → protocol-handler-5MMNVVPX.js} +2 -2
- package/dist/cli/chunks/{prove-HYBVXOGW.js → prove-DJ6BQ2AK.js} +2 -2
- package/dist/cli/chunks/provider-manager-BS4MVCSH.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-P3ARGHDN.js +2 -0
- package/dist/cli/chunks/{quality-EGSO2RAX.js → quality-WKC4JCB3.js} +2 -2
- package/dist/cli/chunks/{quality-gate-RK32VMO7.js → quality-gate-CVHVSORK.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GI7GNVDM.js +2 -0
- package/dist/cli/chunks/{real-embeddings-GI7CRHE2.js → real-embeddings-DN2MEJVM.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-BS3XWJJI.js → roocode-installer-LTAQJWIH.js} +2 -2
- package/dist/cli/chunks/router-YU6MLJBV.js +2 -0
- package/dist/cli/chunks/routing-feedback-D6B2SK5V.js +2 -0
- package/dist/cli/chunks/{routing-handler-XMGRJDHH.js → routing-handler-PSWR2UCT.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-NDL3ONNC.js → ruvector-commands-VTP6Y7PN.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-XAJOYGJ2.js → rvf-dual-writer-EBUMXPRO.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-WXFRZZ26.js → rvf-migration-adapter-5N7GHMD3.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-WFXA2VUQ.js → rvf-migration-coordinator-GQKDBNRR.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-M7ZVRN5Z.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-I7PFJZCK.js → rvf-store-integrity-LR3SYGQK.js} +2 -2
- package/dist/cli/chunks/safe-db-3OHTLXG7.js +2 -0
- package/dist/cli/chunks/schedule-H43ADREQ.js +2 -0
- package/dist/cli/chunks/scheduler-CGSXNEPJ.js +2 -0
- package/dist/cli/chunks/{security-H3WY76GF.js → security-YDWLYXYD.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-GRTJCLW6.js → shared-rvf-adapter-I3HQY7DE.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-46XE5R2B.js → shared-rvf-dual-writer-2UADEA5N.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-V6U5FKVK.js +2 -0
- package/dist/cli/chunks/{status-handler-VUIFMY4F.js → status-handler-QRHI3F4V.js} +2 -2
- package/dist/cli/chunks/{structural-health-I7HC477E.js → structural-health-FWKE63CM.js} +2 -2
- package/dist/cli/chunks/{sync-M6LUV5R4.js → sync-2QRCT5MT.js} +2 -2
- package/dist/cli/chunks/{sync-RO2YGMBF.js → sync-E32MBAOF.js} +2 -2
- package/dist/cli/chunks/{task-handler-BJJTZ7AU.js → task-handler-C7BKMOCL.js} +2 -2
- package/dist/cli/chunks/{task-handlers-B6S4NEN3.js → task-handlers-PADWLLDO.js} +3 -3
- package/dist/cli/chunks/{test-BE7EM6Y6.js → test-KX4UKHSX.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-4ISKEFR6.js → test-scheduling-5WKIWH4H.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-BOIYBZHW.js → token-bootstrap-6SKOJM3U.js} +2 -2
- package/dist/cli/chunks/{token-usage-6ZZC7RLT.js → token-usage-V6JW55RV.js} +2 -2
- package/dist/cli/chunks/{transformers-55VI4OGW.js → transformers-3UPFBYSB.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-6GRRGB3K.js → tree-sitter-wasm-parser-UCY4S2DU.js} +2 -2
- package/dist/cli/chunks/{types-SXDF7QQT.js → types-XNMNQGET.js} +2 -2
- package/dist/cli/chunks/unified-memory-H2J5BHPY.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-LFGIWMTS.js +2 -0
- package/dist/cli/chunks/unified-persistence-F6W7EXU5.js +2 -0
- package/dist/cli/chunks/{upgrade-PMPB7NGB.js → upgrade-MVTMTOPL.js} +2 -2
- package/dist/cli/chunks/{validate-G37QKKXK.js → validate-OJWR2AGZ.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-6X22J3VD.js → validate-swarm-2RGSF2K2.js} +2 -2
- package/dist/cli/chunks/{vibium-SGBJKHQL.js → vibium-O3ZLAEEZ.js} +2 -2
- package/dist/cli/chunks/visual-security-EHVU32UE.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-S46Y5BUJ.js → web-tree-sitter-6VPASTI4.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-PTYCETNM.js → windsurf-installer-CINHOW3N.js} +2 -2
- package/dist/cli/chunks/{witness-chain-5SCRFT2K.js → witness-chain-2NXW7FT7.js} +2 -2
- package/dist/cli/chunks/witness-chain-BIICGRHC.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-XIAMRVUZ.js → witness-key-manager-ODW4DJWT.js} +2 -2
- package/dist/cli/chunks/{workflow-BPQA2NAI.js → workflow-BFGS2GAU.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-PVTYPYY4.js +2 -0
- package/dist/cli/chunks/{wrappers-IWZZZOAU.js → wrappers-VEVVSVMS.js} +2 -2
- package/dist/cli/commands/platform.d.ts +17 -0
- package/dist/cli/commands/platform.js +91 -41
- package/dist/cli/handlers/init-handler.d.ts +1 -0
- package/dist/cli/handlers/init-handler.js +9 -3
- package/dist/init/codex-installer.d.ts +22 -3
- package/dist/init/codex-installer.js +132 -54
- package/dist/init/codex-skill-manifest.d.ts +43 -0
- package/dist/init/codex-skill-manifest.js +21 -0
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/09-assets.js +10 -1
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/mcp/bundle.js +2 -2
- package/package.json +5 -1
- package/dist/cli/chunks/adapter-NIUFP6QX.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-DC4DNCPB.js +0 -2
- package/dist/cli/chunks/base-EXD3ULZT.js +0 -2
- package/dist/cli/chunks/browser-workflow-KOMASCB7.js +0 -2
- package/dist/cli/chunks/chunk-T5L65R23.js +0 -2
- package/dist/cli/chunks/client-ZJQMJO5N.js +0 -2
- package/dist/cli/chunks/codex-installer-HVSZBHH2.js +0 -10
- package/dist/cli/chunks/core-handlers-U2YJLH6O.js +0 -2
- package/dist/cli/chunks/cross-domain-router-E7EMKZEK.js +0 -2
- package/dist/cli/chunks/dream-ZMNQYBJO.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-2JL4MAJR.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-AZD6O35G.js +0 -2
- package/dist/cli/chunks/hnsw-index-WJLE4S5L.js +0 -2
- package/dist/cli/chunks/hybrid-router-YTKJBAS2.js +0 -2
- package/dist/cli/chunks/impact-analyzer-CX56GZXA.js +0 -2
- package/dist/cli/chunks/init-wizard-WE6HIC66.js +0 -2
- package/dist/cli/chunks/kernel-MT55LNNI.js +0 -2
- package/dist/cli/chunks/knowledge-graph-WN3LQ2W7.js +0 -2
- package/dist/cli/chunks/llm-router-service-NKHEQQMN.js +0 -2
- package/dist/cli/chunks/load-test-3WIQASDF.js +0 -2
- package/dist/cli/chunks/memory-backend-W6YSNT6O.js +0 -2
- package/dist/cli/chunks/pattern-null-store-IV3ZESTR.js +0 -2
- package/dist/cli/chunks/platform-FA5TOPTH.js +0 -2
- package/dist/cli/chunks/protocol-executor-GFAG5G6K.js +0 -2
- package/dist/cli/chunks/provider-manager-TIVIJIYH.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-BYE7YF6Y.js +0 -2
- package/dist/cli/chunks/queen-coordinator-WOHYVV7A.js +0 -2
- package/dist/cli/chunks/router-VUW2UVCN.js +0 -2
- package/dist/cli/chunks/routing-feedback-WSUQMZAK.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-RHZCXVN6.js +0 -2
- package/dist/cli/chunks/safe-db-NTWEW7ZM.js +0 -2
- package/dist/cli/chunks/schedule-WEVC2GW2.js +0 -2
- package/dist/cli/chunks/scheduler-XHI5AJIS.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-QZUPKMHP.js +0 -2
- package/dist/cli/chunks/unified-memory-QKWUSEBV.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-Z2UQZRTK.js +0 -2
- package/dist/cli/chunks/unified-persistence-AVK2NSMI.js +0 -2
- package/dist/cli/chunks/visual-security-64UFH23G.js +0 -2
- package/dist/cli/chunks/witness-chain-ZIVSDX6C.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-TYP4MI2V.js +0 -2
- package/dist/cli/commands/init.d.ts +0 -19
- 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
|
-
|
|
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
|
-
|
|
64
|
-
|
|
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
|
|
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
|
-
|
|
113
|
-
|
|
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
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
166
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
199
|
-
*
|
|
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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
-
|
|
209
|
-
|
|
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
|
-
*
|
|
291
|
+
* Replaces a previously marked AQE section or appends a new marked section.
|
|
218
292
|
*/
|
|
219
293
|
mergeExistingAgentsMd(agentsMdPath, newContent) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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({
|
|
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 */
|