ccjk 15.27.6 → 15.28.1
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/dist/commands/edit.js +3 -2
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/init.js +141 -254
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.js +8 -4
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/profile.js +36 -8
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/quick.js +23 -24
- package/dist/commands/quick.js.map +1 -1
- package/dist/core/codex-auth.js +63 -0
- package/dist/core/codex-auth.js.map +1 -0
- package/dist/core/perms.js +86 -96
- package/dist/core/perms.js.map +1 -1
- package/dist/core/profiles.js +57 -13
- package/dist/core/profiles.js.map +1 -1
- package/dist/core/providers.js +77 -71
- package/dist/core/providers.js.map +1 -1
- package/dist/core/quick-parse.js +7 -1
- package/dist/core/quick-parse.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/agent-teams.mjs +0 -145
- package/dist/chunks/agent.mjs +0 -1439
- package/dist/chunks/agents.mjs +0 -3783
- package/dist/chunks/api-cli.mjs +0 -135
- package/dist/chunks/api-config-selector.mjs +0 -159
- package/dist/chunks/api-providers.mjs +0 -144
- package/dist/chunks/api.mjs +0 -115
- package/dist/chunks/auto-bootstrap.mjs +0 -358
- package/dist/chunks/auto-fixer.mjs +0 -95
- package/dist/chunks/auto-updater.mjs +0 -507
- package/dist/chunks/banner.mjs +0 -173
- package/dist/chunks/bash.mjs +0 -187
- package/dist/chunks/boost.mjs +0 -474
- package/dist/chunks/brain-config.mjs +0 -75
- package/dist/chunks/brain-status.mjs +0 -89
- package/dist/chunks/ccjk-agents.mjs +0 -416
- package/dist/chunks/ccjk-all.mjs +0 -1046
- package/dist/chunks/ccjk-config.mjs +0 -445
- package/dist/chunks/ccjk-hooks.mjs +0 -1074
- package/dist/chunks/ccjk-mcp.mjs +0 -763
- package/dist/chunks/ccjk-setup.mjs +0 -765
- package/dist/chunks/ccjk-skills.mjs +0 -518
- package/dist/chunks/ccr.mjs +0 -109
- package/dist/chunks/ccu.mjs +0 -40
- package/dist/chunks/check-updates.mjs +0 -117
- package/dist/chunks/claude-code-incremental-manager.mjs +0 -761
- package/dist/chunks/claude-config.mjs +0 -606
- package/dist/chunks/claude-config2.mjs +0 -62
- package/dist/chunks/claude-wrapper.mjs +0 -85
- package/dist/chunks/clavue-config.mjs +0 -1454
- package/dist/chunks/cleanup-migration.mjs +0 -20
- package/dist/chunks/cli-hook.mjs +0 -4096
- package/dist/chunks/cloud-sync.mjs +0 -29
- package/dist/chunks/code-type-resolver.mjs +0 -880
- package/dist/chunks/codex-config-switch.mjs +0 -452
- package/dist/chunks/codex-provider-manager.mjs +0 -238
- package/dist/chunks/codex-uninstaller.mjs +0 -404
- package/dist/chunks/codex.mjs +0 -2141
- package/dist/chunks/commands.mjs +0 -108
- package/dist/chunks/commands2.mjs +0 -421
- package/dist/chunks/commit.mjs +0 -140
- package/dist/chunks/completion.mjs +0 -517
- package/dist/chunks/config-consolidator.mjs +0 -172
- package/dist/chunks/config-switch.mjs +0 -334
- package/dist/chunks/config.mjs +0 -558
- package/dist/chunks/config2.mjs +0 -484
- package/dist/chunks/config3.mjs +0 -486
- package/dist/chunks/constants.mjs +0 -323
- package/dist/chunks/context-opt.mjs +0 -444
- package/dist/chunks/context.mjs +0 -974
- package/dist/chunks/dashboard.mjs +0 -481
- package/dist/chunks/doctor.mjs +0 -1301
- package/dist/chunks/eval.mjs +0 -502
- package/dist/chunks/evolution.mjs +0 -322
- package/dist/chunks/features.mjs +0 -715
- package/dist/chunks/fish.mjs +0 -181
- package/dist/chunks/fs-operations.mjs +0 -180
- package/dist/chunks/health-alerts.mjs +0 -830
- package/dist/chunks/help.mjs +0 -341
- package/dist/chunks/hook-installer.mjs +0 -48
- package/dist/chunks/impact.mjs +0 -651
- package/dist/chunks/index.mjs +0 -23
- package/dist/chunks/index10.mjs +0 -19
- package/dist/chunks/index11.mjs +0 -1171
- package/dist/chunks/index12.mjs +0 -218
- package/dist/chunks/index13.mjs +0 -679
- package/dist/chunks/index14.mjs +0 -1009
- package/dist/chunks/index15.mjs +0 -194
- package/dist/chunks/index2.mjs +0 -7637
- package/dist/chunks/index3.mjs +0 -171
- package/dist/chunks/index4.mjs +0 -26
- package/dist/chunks/index5.mjs +0 -19
- package/dist/chunks/index6.mjs +0 -19092
- package/dist/chunks/index7.mjs +0 -616
- package/dist/chunks/index8.mjs +0 -1602
- package/dist/chunks/index9.mjs +0 -5384
- package/dist/chunks/init.mjs +0 -1911
- package/dist/chunks/installer.mjs +0 -757
- package/dist/chunks/installer2.mjs +0 -103
- package/dist/chunks/interview.mjs +0 -2927
- package/dist/chunks/json-config.mjs +0 -60
- package/dist/chunks/linux.mjs +0 -3863
- package/dist/chunks/macos.mjs +0 -69
- package/dist/chunks/main.mjs +0 -635
- package/dist/chunks/manager.mjs +0 -1048
- package/dist/chunks/marketplace.mjs +0 -265
- package/dist/chunks/mcp-cli.mjs +0 -205
- package/dist/chunks/mcp-performance.mjs +0 -187
- package/dist/chunks/mcp.mjs +0 -667
- package/dist/chunks/memory-check.mjs +0 -2973
- package/dist/chunks/memory-paths.mjs +0 -259
- package/dist/chunks/memory-sync.mjs +0 -209
- package/dist/chunks/memory.mjs +0 -354
- package/dist/chunks/metrics-display.mjs +0 -153
- package/dist/chunks/monitor.mjs +0 -1856
- package/dist/chunks/notification.mjs +0 -1864
- package/dist/chunks/onboarding.mjs +0 -386
- package/dist/chunks/package.mjs +0 -3
- package/dist/chunks/paradigm.mjs +0 -74
- package/dist/chunks/permission-manager.mjs +0 -250
- package/dist/chunks/permissions.mjs +0 -265
- package/dist/chunks/persistence-manager.mjs +0 -801
- package/dist/chunks/persistence.mjs +0 -707
- package/dist/chunks/platform.mjs +0 -395
- package/dist/chunks/plugin.mjs +0 -1936
- package/dist/chunks/powershell.mjs +0 -213
- package/dist/chunks/prompts.mjs +0 -244
- package/dist/chunks/providers.mjs +0 -263
- package/dist/chunks/quick-actions.mjs +0 -335
- package/dist/chunks/quick-provider.mjs +0 -755
- package/dist/chunks/quick-setup.mjs +0 -421
- package/dist/chunks/remote.mjs +0 -497
- package/dist/chunks/research.mjs +0 -1904
- package/dist/chunks/rollback.mjs +0 -38
- package/dist/chunks/session-manager.mjs +0 -1371
- package/dist/chunks/session.mjs +0 -878
- package/dist/chunks/sessions.mjs +0 -106
- package/dist/chunks/silent-updater.mjs +0 -396
- package/dist/chunks/simple-config.mjs +0 -122
- package/dist/chunks/skill.mjs +0 -117
- package/dist/chunks/skill2.mjs +0 -9052
- package/dist/chunks/skills-sync.mjs +0 -1343
- package/dist/chunks/skills.mjs +0 -577
- package/dist/chunks/slash-commands.mjs +0 -208
- package/dist/chunks/smart-guide.mjs +0 -247
- package/dist/chunks/snapshot.mjs +0 -58
- package/dist/chunks/startup.mjs +0 -487
- package/dist/chunks/stats.mjs +0 -191
- package/dist/chunks/status.mjs +0 -471
- package/dist/chunks/team.mjs +0 -63
- package/dist/chunks/thinking.mjs +0 -626
- package/dist/chunks/trace.mjs +0 -57
- package/dist/chunks/uninstall.mjs +0 -852
- package/dist/chunks/update.mjs +0 -174
- package/dist/chunks/upgrade-manager.mjs +0 -204
- package/dist/chunks/upgrade.mjs +0 -133
- package/dist/chunks/version-checker.mjs +0 -891
- package/dist/chunks/vim.mjs +0 -903
- package/dist/chunks/windows.mjs +0 -14
- package/dist/chunks/workflows.mjs +0 -633
- package/dist/chunks/wsl.mjs +0 -129
- package/dist/chunks/zero-config.mjs +0 -871
- package/dist/chunks/zsh.mjs +0 -182
- package/dist/cli.d.mts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.mjs +0 -2684
- package/dist/i18n/locales/en/agent-teams.json +0 -18
- package/dist/i18n/locales/en/agentBrowser.json +0 -80
- package/dist/i18n/locales/en/agents.json +0 -135
- package/dist/i18n/locales/en/api.json +0 -63
- package/dist/i18n/locales/en/ccjk-agents.json +0 -33
- package/dist/i18n/locales/en/ccjk-all.json +0 -23
- package/dist/i18n/locales/en/ccjk-skills.json +0 -22
- package/dist/i18n/locales/en/ccjk.json +0 -276
- package/dist/i18n/locales/en/ccr.json +0 -65
- package/dist/i18n/locales/en/claude-md.json +0 -73
- package/dist/i18n/locales/en/cli.json +0 -148
- package/dist/i18n/locales/en/cloud-setup.json +0 -31
- package/dist/i18n/locales/en/cloud-sync.json +0 -147
- package/dist/i18n/locales/en/cloud.json +0 -40
- package/dist/i18n/locales/en/cloudPlugins.json +0 -118
- package/dist/i18n/locales/en/codex.json +0 -184
- package/dist/i18n/locales/en/cometix.json +0 -29
- package/dist/i18n/locales/en/common.json +0 -68
- package/dist/i18n/locales/en/config.json +0 -108
- package/dist/i18n/locales/en/configuration.json +0 -236
- package/dist/i18n/locales/en/context.json +0 -85
- package/dist/i18n/locales/en/dashboard.json +0 -78
- package/dist/i18n/locales/en/errors.json +0 -26
- package/dist/i18n/locales/en/evolution.json +0 -54
- package/dist/i18n/locales/en/hooks.json +0 -74
- package/dist/i18n/locales/en/hooksSync.json +0 -133
- package/dist/i18n/locales/en/installation.json +0 -83
- package/dist/i18n/locales/en/interview.json +0 -104
- package/dist/i18n/locales/en/language.json +0 -19
- package/dist/i18n/locales/en/lsp.json +0 -78
- package/dist/i18n/locales/en/marketplace.json +0 -116
- package/dist/i18n/locales/en/mcp.json +0 -180
- package/dist/i18n/locales/en/memory.json +0 -23
- package/dist/i18n/locales/en/menu.json +0 -299
- package/dist/i18n/locales/en/multi-config.json +0 -79
- package/dist/i18n/locales/en/notification.json +0 -307
- package/dist/i18n/locales/en/permissions.json +0 -95
- package/dist/i18n/locales/en/persistence.json +0 -127
- package/dist/i18n/locales/en/plugins.json +0 -146
- package/dist/i18n/locales/en/quick-actions.json +0 -78
- package/dist/i18n/locales/en/registry.json +0 -54
- package/dist/i18n/locales/en/remote.json +0 -93
- package/dist/i18n/locales/en/sandbox.json +0 -44
- package/dist/i18n/locales/en/setup.json +0 -44
- package/dist/i18n/locales/en/shencha.json +0 -14
- package/dist/i18n/locales/en/skills.json +0 -100
- package/dist/i18n/locales/en/skillsSync.json +0 -74
- package/dist/i18n/locales/en/smartGuide.json +0 -49
- package/dist/i18n/locales/en/stats.json +0 -20
- package/dist/i18n/locales/en/subagent.json +0 -69
- package/dist/i18n/locales/en/superpowers.json +0 -117
- package/dist/i18n/locales/en/team.json +0 -7
- package/dist/i18n/locales/en/thinking.json +0 -65
- package/dist/i18n/locales/en/tools.json +0 -42
- package/dist/i18n/locales/en/uninstall.json +0 -56
- package/dist/i18n/locales/en/updater.json +0 -29
- package/dist/i18n/locales/en/vim.json +0 -169
- package/dist/i18n/locales/en/workflow.json +0 -55
- package/dist/i18n/locales/en/workspace.json +0 -108
- package/dist/i18n/locales/zh-CN/agent-teams.json +0 -18
- package/dist/i18n/locales/zh-CN/agentBrowser.json +0 -80
- package/dist/i18n/locales/zh-CN/agents.json +0 -135
- package/dist/i18n/locales/zh-CN/api.json +0 -63
- package/dist/i18n/locales/zh-CN/ccjk-agents.json +0 -33
- package/dist/i18n/locales/zh-CN/ccjk-all.json +0 -23
- package/dist/i18n/locales/zh-CN/ccjk-skills.json +0 -22
- package/dist/i18n/locales/zh-CN/ccjk.json +0 -276
- package/dist/i18n/locales/zh-CN/ccr.json +0 -65
- package/dist/i18n/locales/zh-CN/claude-md.json +0 -73
- package/dist/i18n/locales/zh-CN/cli.json +0 -148
- package/dist/i18n/locales/zh-CN/cloud-setup.json +0 -31
- package/dist/i18n/locales/zh-CN/cloud-sync.json +0 -147
- package/dist/i18n/locales/zh-CN/cloud.json +0 -40
- package/dist/i18n/locales/zh-CN/cloudPlugins.json +0 -118
- package/dist/i18n/locales/zh-CN/codex.json +0 -184
- package/dist/i18n/locales/zh-CN/cometix.json +0 -29
- package/dist/i18n/locales/zh-CN/common.json +0 -68
- package/dist/i18n/locales/zh-CN/config.json +0 -108
- package/dist/i18n/locales/zh-CN/configuration.json +0 -234
- package/dist/i18n/locales/zh-CN/context.json +0 -85
- package/dist/i18n/locales/zh-CN/dashboard.json +0 -78
- package/dist/i18n/locales/zh-CN/errors.json +0 -26
- package/dist/i18n/locales/zh-CN/evolution.json +0 -54
- package/dist/i18n/locales/zh-CN/hooks.json +0 -74
- package/dist/i18n/locales/zh-CN/hooksSync.json +0 -133
- package/dist/i18n/locales/zh-CN/installation.json +0 -83
- package/dist/i18n/locales/zh-CN/interview.json +0 -104
- package/dist/i18n/locales/zh-CN/language.json +0 -19
- package/dist/i18n/locales/zh-CN/lsp.json +0 -78
- package/dist/i18n/locales/zh-CN/marketplace.json +0 -116
- package/dist/i18n/locales/zh-CN/mcp.json +0 -180
- package/dist/i18n/locales/zh-CN/memory.json +0 -23
- package/dist/i18n/locales/zh-CN/menu.json +0 -299
- package/dist/i18n/locales/zh-CN/multi-config.json +0 -79
- package/dist/i18n/locales/zh-CN/notification.json +0 -307
- package/dist/i18n/locales/zh-CN/permissions.json +0 -95
- package/dist/i18n/locales/zh-CN/persistence.json +0 -127
- package/dist/i18n/locales/zh-CN/plugins.json +0 -146
- package/dist/i18n/locales/zh-CN/quick-actions.json +0 -78
- package/dist/i18n/locales/zh-CN/registry.json +0 -54
- package/dist/i18n/locales/zh-CN/remote.json +0 -93
- package/dist/i18n/locales/zh-CN/sandbox.json +0 -44
- package/dist/i18n/locales/zh-CN/setup.json +0 -44
- package/dist/i18n/locales/zh-CN/shencha.json +0 -14
- package/dist/i18n/locales/zh-CN/skills.json +0 -100
- package/dist/i18n/locales/zh-CN/skillsSync.json +0 -74
- package/dist/i18n/locales/zh-CN/smartGuide.json +0 -49
- package/dist/i18n/locales/zh-CN/stats.json +0 -20
- package/dist/i18n/locales/zh-CN/subagent.json +0 -69
- package/dist/i18n/locales/zh-CN/superpowers.json +0 -117
- package/dist/i18n/locales/zh-CN/team.json +0 -7
- package/dist/i18n/locales/zh-CN/thinking.json +0 -65
- package/dist/i18n/locales/zh-CN/tools.json +0 -42
- package/dist/i18n/locales/zh-CN/uninstall.json +0 -56
- package/dist/i18n/locales/zh-CN/updater.json +0 -29
- package/dist/i18n/locales/zh-CN/vim.json +0 -169
- package/dist/i18n/locales/zh-CN/workflow.json +0 -55
- package/dist/i18n/locales/zh-CN/workspace.json +0 -108
- package/dist/index.d.mts +0 -5658
- package/dist/index.d.ts +0 -5658
- package/dist/index.mjs +0 -3732
- package/dist/shared/ccjk.5bEolFrk.mjs +0 -254
- package/dist/shared/ccjk.8oaxX4iR.mjs +0 -90
- package/dist/shared/ccjk.B2U7DsPy.mjs +0 -31
- package/dist/shared/ccjk.B2f-cwUP.mjs +0 -468
- package/dist/shared/ccjk.BAGoDD49.mjs +0 -36
- package/dist/shared/ccjk.BBtCGd_g.mjs +0 -899
- package/dist/shared/ccjk.BFQ7yr5S.mjs +0 -16
- package/dist/shared/ccjk.BLsIiTqO.mjs +0 -449
- package/dist/shared/ccjk.BXv8aYs1.mjs +0 -170
- package/dist/shared/ccjk.BnsY5WxD.mjs +0 -171
- package/dist/shared/ccjk.BoApaI4j.mjs +0 -28
- package/dist/shared/ccjk.Bq8TqZG_.mjs +0 -189
- package/dist/shared/ccjk.BtrioX1Z.mjs +0 -25
- package/dist/shared/ccjk.Bx_rmYfN.mjs +0 -69
- package/dist/shared/ccjk.BzPbSEP2.mjs +0 -115
- package/dist/shared/ccjk.C0WLUnFV.mjs +0 -293
- package/dist/shared/ccjk.C1hANZTu.mjs +0 -19
- package/dist/shared/ccjk.C2jHOZVP.mjs +0 -52
- package/dist/shared/ccjk.CNhnT6uQ.mjs +0 -636
- package/dist/shared/ccjk.COweQ1RR.mjs +0 -5
- package/dist/shared/ccjk.CfKKcvWy.mjs +0 -126
- package/dist/shared/ccjk.Cjgrln_h.mjs +0 -297
- package/dist/shared/ccjk.CoCHVXl3.mjs +0 -3951
- package/dist/shared/ccjk.CwGZSTAK.mjs +0 -319
- package/dist/shared/ccjk.CxpGa6MC.mjs +0 -2724
- package/dist/shared/ccjk.D-magaEx.mjs +0 -763
- package/dist/shared/ccjk.D0g2ABGg.mjs +0 -171
- package/dist/shared/ccjk.D6ycHbak.mjs +0 -270
- package/dist/shared/ccjk.D75wivnp.mjs +0 -142
- package/dist/shared/ccjk.DDL-4C-k.mjs +0 -100
- package/dist/shared/ccjk.DFRPtmK_.mjs +0 -75
- package/dist/shared/ccjk.DMV3x5Sd.mjs +0 -299
- package/dist/shared/ccjk.DZ2LLOa-.mjs +0 -2195
- package/dist/shared/ccjk.DbigonEQ.mjs +0 -698
- package/dist/shared/ccjk.DcMvE7lf.mjs +0 -618
- package/dist/shared/ccjk.DeWpAShp.mjs +0 -1828
- package/dist/shared/ccjk.DhJ1kyDR.mjs +0 -30
- package/dist/shared/ccjk.DlTXS9rP.mjs +0 -224
- package/dist/shared/ccjk.DopKzo3z.mjs +0 -305
- package/dist/shared/ccjk.DsZsc4LR.mjs +0 -1280
- package/dist/shared/ccjk.DuzJZlgj.mjs +0 -418
- package/dist/shared/ccjk.Dxgd2vjc.mjs +0 -444
- package/dist/shared/ccjk.J8YiPsOw.mjs +0 -259
- package/dist/shared/ccjk.KfSWcGlE.mjs +0 -38
- package/dist/shared/ccjk.L7yC58_i.mjs +0 -225
- package/dist/shared/ccjk.MwtjAULc.mjs +0 -1447
- package/dist/shared/ccjk.OJKHVSOb.mjs +0 -2005
- package/dist/shared/ccjk.OTnevPNE.mjs +0 -225
- package/dist/shared/ccjk.RyizuzOI.mjs +0 -21
- package/dist/shared/ccjk.T_cX87dY.mjs +0 -15
- package/dist/shared/ccjk.bQ7Dh1g4.mjs +0 -249
- package/dist/shared/ccjk.gDEDGD_t.mjs +0 -38
- package/dist/shared/ccjk.hoqrwWdN.mjs +0 -333
- package/dist/shared/ccjk.i_vn-9C3.mjs +0 -317
- package/dist/shared/ccjk.lG3ccFjm.mjs +0 -885
- package/dist/shared/ccjk.wLJHO0Af.mjs +0 -244
- package/dist/shared/ccjk.y-a_1vK4.mjs +0 -5127
- package/dist/templates/agents/README.md +0 -78
- package/dist/templates/agents/fullstack-developer.json +0 -70
- package/dist/templates/agents/go-expert.json +0 -69
- package/dist/templates/agents/index.json +0 -64
- package/dist/templates/agents/python-expert.json +0 -69
- package/dist/templates/agents/react-specialist.json +0 -69
- package/dist/templates/agents/testing-automation-expert.json +0 -70
- package/dist/templates/agents/typescript-architect.json +0 -69
- package/dist/templates/claude-code/common/settings.json +0 -109
- package/dist/templates/common/error-prevention.md +0 -267
- package/dist/templates/common/karpathy-baseline.md +0 -83
- package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +0 -381
- package/dist/templates/common/output-styles/zh-CN/codex-rigor-mode.md +0 -114
- package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +0 -265
- package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +0 -539
- package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +0 -369
- package/dist/templates/common/output-styles/zh-CN/linus-mode.md +0 -135
- package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +0 -221
- package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +0 -628
- package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +0 -628
- package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +0 -187
- package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +0 -191
- package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +0 -249
- package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +0 -277
- package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +0 -29
- package/dist/templates/common/workflow/essential/en/agents/init-architect.md +0 -115
- package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +0 -91
- package/dist/templates/common/workflow/essential/en/feat.md +0 -92
- package/dist/templates/common/workflow/essential/en/goal.md +0 -147
- package/dist/templates/common/workflow/essential/en/init-project.md +0 -53
- package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +0 -29
- package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +0 -115
- package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +0 -91
- package/dist/templates/common/workflow/essential/zh-CN/feat.md +0 -315
- package/dist/templates/common/workflow/essential/zh-CN/goal.md +0 -146
- package/dist/templates/common/workflow/essential/zh-CN/init-project.md +0 -53
- package/dist/templates/common/workflow/git/en/git-cleanBranches.md +0 -102
- package/dist/templates/common/workflow/git/en/git-commit.md +0 -205
- package/dist/templates/common/workflow/git/en/git-rollback.md +0 -90
- package/dist/templates/common/workflow/git/en/git-worktree.md +0 -276
- package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +0 -102
- package/dist/templates/common/workflow/git/zh-CN/git-commit.md +0 -205
- package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +0 -90
- package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +0 -276
- package/dist/templates/common/workflow/interview/en/interview.md +0 -67
- package/dist/templates/common/workflow/interview/zh-CN/interview.md +0 -67
- package/dist/templates/common/workflow/linearMethod/en/linear-method.md +0 -651
- package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +0 -752
- package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +0 -516
- package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +0 -812
- package/dist/templates/common/workflow/sixStep/en/workflow.md +0 -83
- package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +0 -359
- package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +0 -364
- package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +0 -366
- package/dist/templates/hooks/README.md +0 -212
- package/dist/templates/hooks/git-workflow-hooks.md +0 -551
- package/dist/templates/hooks/post-test/coverage.json +0 -21
- package/dist/templates/hooks/post-test/summary.json +0 -21
- package/dist/templates/hooks/post-test-coverage.md +0 -434
- package/dist/templates/hooks/pre-commit/eslint.json +0 -22
- package/dist/templates/hooks/pre-commit/prettier.json +0 -22
- package/dist/templates/hooks/pre-commit-black.md +0 -274
- package/dist/templates/hooks/pre-commit-eslint.md +0 -153
- package/dist/templates/hooks/pre-commit-gofmt.md +0 -284
- package/dist/templates/hooks/pre-commit-prettier.md +0 -212
- package/dist/templates/hooks/pre-commit-type-check.md +0 -377
- package/dist/templates/skills/ccjk-init.md +0 -154
- package/dist/templates/skills/ccjk-mcp-setup.md +0 -205
- package/dist/templates/skills/ccjk-troubleshoot.md +0 -228
- package/dist/templates/skills/django-patterns.md +0 -1016
- package/dist/templates/skills/git-workflow.md +0 -748
- package/dist/templates/skills/go-idioms.md +0 -963
- package/dist/templates/skills/index.json +0 -132
- package/dist/templates/skills/nextjs-optimization.md +0 -694
- package/dist/templates/skills/python-pep8.md +0 -852
- package/dist/templates/skills/react-patterns.md +0 -686
- package/dist/templates/skills/rust-patterns.md +0 -1057
- package/dist/templates/skills/security-best-practices.md +0 -1413
- package/dist/templates/skills/testing-best-practices.md +0 -1315
- package/dist/templates/skills/ts-best-practices.md +0 -354
package/dist/commands/edit.js
CHANGED
|
@@ -173,9 +173,10 @@ async function applyDirectOpts(profile, opts) {
|
|
|
173
173
|
return changed;
|
|
174
174
|
}
|
|
175
175
|
async function applyInteractive(profile, fields) {
|
|
176
|
-
// 如果 profile 的 provider
|
|
176
|
+
// 如果 profile 的 provider 在表里且有 claudeCode.defaultModels,model 编辑用 select;
|
|
177
|
+
// 否则退化为纯 input
|
|
177
178
|
const provider = findProvider(profile.provider);
|
|
178
|
-
const catalog = provider?.
|
|
179
|
+
const catalog = provider?.claudeCode?.defaultModels;
|
|
179
180
|
for (const f of fields) {
|
|
180
181
|
if (f === 'apiKey') {
|
|
181
182
|
const v = await password({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,39 +1,51 @@
|
|
|
1
1
|
import { confirm, input, password, select } from '@inquirer/prompts';
|
|
2
2
|
import ansis from 'ansis';
|
|
3
3
|
import { TOOLS } from '../core/tools.js';
|
|
4
|
-
import { listProvidersFor } from '../core/providers.js';
|
|
4
|
+
import { defaultClaudeModel, listProvidersFor } from '../core/providers.js';
|
|
5
5
|
import { readSettings, writeSettings } from '../core/settings.js';
|
|
6
6
|
import { listProfiles, validateName, writeProfile, writeState } from '../core/profiles.js';
|
|
7
7
|
import { readTomlFile, writeTomlFile } from '../core/toml.js';
|
|
8
|
-
import { applyCodexProfile
|
|
8
|
+
import { applyCodexProfile } from '../core/codex-config.js';
|
|
9
|
+
import { writeAuthFile } from '../core/codex-auth.js';
|
|
9
10
|
import { lintSettings } from '../core/lint.js';
|
|
10
11
|
export async function initCommand(opts = {}) {
|
|
11
12
|
const tool = opts.tool ?? await pickTool();
|
|
12
|
-
const meta = TOOLS[tool];
|
|
13
13
|
if (tool === 'codex') {
|
|
14
14
|
await initCodex(opts);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
+
await initClaudeLike(tool, opts);
|
|
18
|
+
}
|
|
19
|
+
async function initClaudeLike(tool, opts) {
|
|
20
|
+
const meta = TOOLS[tool];
|
|
17
21
|
const provider = opts.provider
|
|
18
22
|
? resolveProvider(tool, opts.provider)
|
|
19
23
|
: await pickProvider(tool);
|
|
24
|
+
if (!provider.claudeCode && provider.id !== 'custom') {
|
|
25
|
+
throw new Error(`provider "${provider.id}" 没有 claude-code 配置`);
|
|
26
|
+
}
|
|
27
|
+
// claudeCode preset 在 custom 时为 undefined → 都向用户问
|
|
28
|
+
const preset = provider.claudeCode;
|
|
20
29
|
const baseUrl = opts.baseUrl
|
|
21
|
-
??
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
30
|
+
?? preset?.baseUrl
|
|
31
|
+
?? await askInput('Base URL (例如 https://api.example.com)');
|
|
32
|
+
const authType = preset?.authType ?? 'auth_token';
|
|
33
|
+
const apiKey = opts.apiKey ?? await askInput(authType === 'api_key' ? 'API Key' : 'Auth Token', true);
|
|
34
|
+
const model = await pickModel(opts, provider);
|
|
35
|
+
// 写 settings.env 时仍按 4 槽位语义;没显式给的 haiku/sonnet/opus 默认 = main,
|
|
36
|
+
// 这样用户启动 Claude Code 不会因为缺槽位走内置回退到非预期 model。
|
|
37
|
+
const slots = {
|
|
38
|
+
...(model ? { main: model } : {}),
|
|
39
|
+
...(opts.haikuModel ? { haiku: opts.haikuModel } : model ? { haiku: model } : {}),
|
|
40
|
+
...(opts.sonnetModel ? { sonnet: opts.sonnetModel } : model ? { sonnet: model } : {}),
|
|
41
|
+
...(opts.opusModel ? { opus: opts.opusModel } : model ? { opus: model } : {}),
|
|
42
|
+
};
|
|
25
43
|
console.log(ansis.dim(`\n→ 配置目标: ${meta.settingsFile}`));
|
|
26
44
|
console.log(ansis.dim(`→ Provider: ${provider.name}`));
|
|
27
45
|
console.log(ansis.dim(`→ Base URL: ${baseUrl}`));
|
|
28
|
-
console.log(ansis.dim(`→ Auth: ${
|
|
29
|
-
if (
|
|
30
|
-
console.log(ansis.dim(`→
|
|
31
|
-
if (slots.haiku)
|
|
32
|
-
console.log(ansis.dim(`→ Haiku 槽: ${slots.haiku}`));
|
|
33
|
-
if (slots.sonnet)
|
|
34
|
-
console.log(ansis.dim(`→ Sonnet 槽: ${slots.sonnet}`));
|
|
35
|
-
if (slots.opus)
|
|
36
|
-
console.log(ansis.dim(`→ Opus 槽: ${slots.opus}`));
|
|
46
|
+
console.log(ansis.dim(`→ Auth: ${authType}`));
|
|
47
|
+
if (model)
|
|
48
|
+
console.log(ansis.dim(`→ Model: ${model}`));
|
|
37
49
|
console.log();
|
|
38
50
|
if (!opts.yes) {
|
|
39
51
|
const ok = await confirm({ message: '确认写入?', default: true });
|
|
@@ -43,13 +55,12 @@ export async function initCommand(opts = {}) {
|
|
|
43
55
|
}
|
|
44
56
|
}
|
|
45
57
|
const settings = await readSettings(meta.settingsFile);
|
|
46
|
-
applyApiToSettings(settings, baseUrl, apiKey,
|
|
58
|
+
applyApiToSettings(settings, baseUrl, apiKey, authType, slots);
|
|
47
59
|
const backup = await writeSettings(meta.settingsFile, settings);
|
|
48
60
|
console.log(ansis.green('\n✔ 配置已写入'));
|
|
49
61
|
if (backup)
|
|
50
62
|
console.log(ansis.dim(` 备份: ${backup}`));
|
|
51
63
|
console.log(ansis.dim(` 目标: ${meta.settingsFile}`));
|
|
52
|
-
// 写完顺便体检一次:用户可能有上次配置遗留的脏数据
|
|
53
64
|
const findings = lintSettings(settings);
|
|
54
65
|
if (findings.length > 0) {
|
|
55
66
|
const errs = findings.filter(f => f.severity === 'error').length;
|
|
@@ -65,151 +76,63 @@ export async function initCommand(opts = {}) {
|
|
|
65
76
|
+ (fixable > 0 ? ansis.dim(`(${fixable} 项可自动修 — 运行 \`ccjk doctor --fix\`)`) : ''));
|
|
66
77
|
}
|
|
67
78
|
}
|
|
79
|
+
warnShellShadow(baseUrl, slots);
|
|
68
80
|
await maybeSaveProfile({
|
|
69
81
|
explicitName: opts.profile,
|
|
70
82
|
yes: opts.yes ?? false,
|
|
71
83
|
provider,
|
|
72
84
|
baseUrl,
|
|
85
|
+
authType,
|
|
73
86
|
apiKey,
|
|
74
87
|
slots,
|
|
88
|
+
targetTools: [tool],
|
|
75
89
|
});
|
|
76
90
|
console.log();
|
|
77
91
|
}
|
|
78
92
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* 心智模型:**默认就是单 model**,4 槽位是 advanced 才暴露的能力。
|
|
82
|
-
* 历史上 init 强行问 4 次,让用户填一堆其实是同一个 model ID 的礼仪空格——反人性。
|
|
93
|
+
* 让用户挑一个 main model。
|
|
83
94
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* 3) advanced:逐个填 4 个槽,给真要做分级路由的人
|
|
88
|
-
* 4) skip:什么都不写,让工具用内置 fallback
|
|
95
|
+
* - `--model` 命令行已传 → 直接用,不交互
|
|
96
|
+
* - provider.claudeCode.defaultModels 非空 → select(含「手动输入」「跳过」)
|
|
97
|
+
* - 都没有 → 一行 input
|
|
89
98
|
*
|
|
90
|
-
*
|
|
99
|
+
* 返回 undefined 表示"不写 model"——settings.env 的 ANTHROPIC_MODEL 会被 delete,
|
|
100
|
+
* Claude Code 走自己的默认。
|
|
91
101
|
*/
|
|
92
|
-
async function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return
|
|
96
|
-
...(opts.model ?? provider.defaultModel ? { main: opts.model ?? provider.defaultModel } : {}),
|
|
97
|
-
...(opts.haikuModel ?? provider.fastModel ? { haiku: opts.haikuModel ?? provider.fastModel } : {}),
|
|
98
|
-
...(opts.sonnetModel ?? provider.sonnetModel ? { sonnet: opts.sonnetModel ?? provider.sonnetModel } : {}),
|
|
99
|
-
...(opts.opusModel ?? provider.opusModel ? { opus: opts.opusModel ?? provider.opusModel } : {}),
|
|
100
|
-
};
|
|
102
|
+
async function pickModel(opts, provider) {
|
|
103
|
+
if (opts.model !== undefined) {
|
|
104
|
+
const t = opts.model.trim();
|
|
105
|
+
return t || undefined;
|
|
101
106
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const choices = [
|
|
105
|
-
{
|
|
106
|
-
name: `单 model(推荐)${ansis.dim('— 只填一个 main,绝大多数 provider 这样就够了')}`,
|
|
107
|
-
value: 'simple',
|
|
108
|
-
short: '单 model',
|
|
109
|
-
},
|
|
110
|
-
];
|
|
111
|
-
if (hasGradedDefaults) {
|
|
112
|
-
choices.push({
|
|
113
|
-
name: `用 ${provider.name} 分级推荐 ${ansis.dim(formatProviderDefaults(provider))}`,
|
|
114
|
-
value: 'recommended',
|
|
115
|
-
short: '分级推荐',
|
|
116
|
-
});
|
|
107
|
+
if (opts.yes) {
|
|
108
|
+
return defaultClaudeModel(provider);
|
|
117
109
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
message: '
|
|
121
|
-
|
|
122
|
-
choices,
|
|
123
|
-
});
|
|
124
|
-
if (strategy === 'skip')
|
|
125
|
-
return {};
|
|
126
|
-
if (strategy === 'recommended') {
|
|
127
|
-
return {
|
|
128
|
-
...(provider.defaultModel ? { main: provider.defaultModel } : {}),
|
|
129
|
-
...(provider.fastModel ? { haiku: provider.fastModel } : {}),
|
|
130
|
-
...(provider.sonnetModel ? { sonnet: provider.sonnetModel } : {}),
|
|
131
|
-
...(provider.opusModel ? { opus: provider.opusModel } : {}),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
if (strategy === 'simple') {
|
|
135
|
-
const main = await askModelSlot('Main model', opts.model ?? provider.defaultModel ?? '', provider.modelCatalog);
|
|
136
|
-
return main ? { main } : {};
|
|
137
|
-
}
|
|
138
|
-
// advanced
|
|
139
|
-
console.log(ansis.dim('\n配置 model 槽位(直接回车=用建议值;输入空格再回车=该槽不写):\n'));
|
|
140
|
-
const main = await askModelSlot('Main model', opts.model ?? provider.defaultModel ?? '', provider.modelCatalog);
|
|
141
|
-
const haiku = await askModelSlot('Haiku 槽(快速 / 简单任务)', opts.haikuModel ?? provider.fastModel ?? '', provider.modelCatalog);
|
|
142
|
-
const sonnet = await askModelSlot('Sonnet 槽(执行 / 中等任务)', opts.sonnetModel ?? provider.sonnetModel ?? '', provider.modelCatalog);
|
|
143
|
-
const opus = await askModelSlot('Opus 槽(规划 / 复杂任务)', opts.opusModel ?? provider.opusModel ?? '', provider.modelCatalog);
|
|
144
|
-
return {
|
|
145
|
-
...(main ? { main } : {}),
|
|
146
|
-
...(haiku ? { haiku } : {}),
|
|
147
|
-
...(sonnet ? { sonnet } : {}),
|
|
148
|
-
...(opus ? { opus } : {}),
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
/** 把 provider 的默认槽位组装成一行简介,给 select 选项当 hint 用 */
|
|
152
|
-
function formatProviderDefaults(provider) {
|
|
153
|
-
const parts = [];
|
|
154
|
-
if (provider.defaultModel)
|
|
155
|
-
parts.push(`main=${provider.defaultModel}`);
|
|
156
|
-
if (provider.fastModel)
|
|
157
|
-
parts.push(`haiku=${provider.fastModel}`);
|
|
158
|
-
if (provider.sonnetModel && provider.sonnetModel !== provider.defaultModel) {
|
|
159
|
-
parts.push(`sonnet=${provider.sonnetModel}`);
|
|
160
|
-
}
|
|
161
|
-
if (provider.opusModel && provider.opusModel !== provider.defaultModel) {
|
|
162
|
-
parts.push(`opus=${provider.opusModel}`);
|
|
163
|
-
}
|
|
164
|
-
return parts.length > 0 ? `(${parts.join(', ')})` : '';
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* 询问一个槽位。
|
|
168
|
-
* - catalog 非空 → select:候选模型 + "其他(手动输入)" + "留空"
|
|
169
|
-
* - catalog 为空 → 退化为 input
|
|
170
|
-
*
|
|
171
|
-
* 返回空字符串表示「不写这个槽位」。
|
|
172
|
-
*/
|
|
173
|
-
async function askModelSlot(message, defaultValue, catalog) {
|
|
174
|
-
// 没目录或目录为空 → 走 input
|
|
175
|
-
if (!catalog || catalog.length === 0) {
|
|
176
|
-
const v = await input({
|
|
177
|
-
message,
|
|
178
|
-
...(defaultValue ? { default: defaultValue } : {}),
|
|
179
|
-
});
|
|
180
|
-
return v.trim();
|
|
110
|
+
const catalog = provider.claudeCode?.defaultModels ?? [];
|
|
111
|
+
if (catalog.length === 0) {
|
|
112
|
+
const v = await input({ message: 'Main model(留空跳过)' });
|
|
113
|
+
return v.trim() || undefined;
|
|
181
114
|
}
|
|
182
|
-
// 目录里没有 default?拼到第一项
|
|
183
|
-
const fullCatalog = defaultValue && !catalog.includes(defaultValue)
|
|
184
|
-
? [defaultValue, ...catalog]
|
|
185
|
-
: [...catalog];
|
|
186
115
|
const CUSTOM = '__custom__';
|
|
187
116
|
const SKIP = '__skip__';
|
|
188
117
|
const choice = await select({
|
|
189
|
-
message,
|
|
190
|
-
default:
|
|
191
|
-
pageSize: Math.min(10,
|
|
118
|
+
message: 'Main model',
|
|
119
|
+
default: catalog[0],
|
|
120
|
+
pageSize: Math.min(10, catalog.length + 2),
|
|
192
121
|
choices: [
|
|
193
|
-
...
|
|
122
|
+
...catalog.map(m => ({ name: m, value: m })),
|
|
194
123
|
{ name: ansis.dim('其他… (手动输入)'), value: CUSTOM },
|
|
195
|
-
{ name: ansis.gray('
|
|
124
|
+
{ name: ansis.gray('留空(不写 model)'), value: SKIP },
|
|
196
125
|
],
|
|
197
126
|
});
|
|
198
127
|
if (choice === SKIP)
|
|
199
|
-
return
|
|
128
|
+
return undefined;
|
|
200
129
|
if (choice === CUSTOM) {
|
|
201
|
-
const v = await input({
|
|
202
|
-
|
|
203
|
-
...(defaultValue ? { default: defaultValue } : {}),
|
|
204
|
-
});
|
|
205
|
-
return v.trim();
|
|
130
|
+
const v = await input({ message: '输入模型 ID' });
|
|
131
|
+
return v.trim() || undefined;
|
|
206
132
|
}
|
|
207
133
|
return choice;
|
|
208
134
|
}
|
|
209
135
|
async function maybeSaveProfile(args) {
|
|
210
|
-
// 默认始终保存为 profile —— 这是核心心智模型:「配 API = 创建 profile」。
|
|
211
|
-
// 旧行为多问一步「是否保存」,让 80% 的用户多按一次 Enter,删掉。
|
|
212
|
-
// 仍允许 --yes 模式跳过命名询问、直接用建议名。
|
|
213
136
|
let name = args.explicitName;
|
|
214
137
|
if (!name) {
|
|
215
138
|
const suggested = await suggestName(args.provider.id);
|
|
@@ -240,16 +163,18 @@ async function maybeSaveProfile(args) {
|
|
|
240
163
|
name,
|
|
241
164
|
provider: args.provider.id,
|
|
242
165
|
baseUrl: args.baseUrl,
|
|
243
|
-
authType: args.
|
|
166
|
+
authType: args.authType,
|
|
244
167
|
apiKey: args.apiKey,
|
|
245
168
|
...(args.slots.main ? { model: args.slots.main } : {}),
|
|
246
169
|
...(args.slots.haiku ? { fastModel: args.slots.haiku } : {}),
|
|
247
170
|
...(args.slots.sonnet ? { sonnetModel: args.slots.sonnet } : {}),
|
|
248
171
|
...(args.slots.opus ? { opusModel: args.slots.opus } : {}),
|
|
172
|
+
targetTools: args.targetTools,
|
|
249
173
|
createdAt: new Date().toISOString(),
|
|
250
174
|
});
|
|
251
175
|
await writeState({ current: name });
|
|
252
176
|
console.log(ansis.green(` Profile: ${name} 已保存(当前激活)`));
|
|
177
|
+
console.log(ansis.dim(` 作用范围: ${args.targetTools.map(t => TOOLS[t].displayName).join(', ')}`));
|
|
253
178
|
}
|
|
254
179
|
async function suggestName(providerId) {
|
|
255
180
|
const existing = (await listProfiles()).map(p => p.name);
|
|
@@ -268,67 +193,40 @@ function resolveProvider(tool, id) {
|
|
|
268
193
|
return found;
|
|
269
194
|
}
|
|
270
195
|
/**
|
|
271
|
-
* Codex init ——
|
|
272
|
-
*
|
|
273
|
-
* 心智模型:
|
|
274
|
-
* - 顶层 `profile = "<name>"` 只是启动默认,**不是单 model 锁定**。
|
|
275
|
-
* - 用户随时 `codex --profile <other>` 现场切,多套 model 并存——这才是 codex
|
|
276
|
-
* 的"多 model"正确姿势(developers.openai.com/codex/config-reference)。
|
|
277
|
-
*
|
|
278
|
-
* 写入策略:
|
|
279
|
-
* - 新建 provider:写 `[model_providers.<id>]`(base_url / wire_api / env_key / requires_openai_auth)
|
|
280
|
-
* - 复用已有 provider:不动 provider 段,只在新 profile 里引用它
|
|
281
|
-
* - profile 段固定写 model + model_provider(+ 可选 reasoning effort)
|
|
282
|
-
* - 顶层 profile 指向本次的 profile 名
|
|
196
|
+
* Codex init —— 优先用 provider preset;custom 才询问 baseUrl。
|
|
283
197
|
*
|
|
284
|
-
* API key
|
|
198
|
+
* 关键差异:API key **写到 `~/.codex/auth.json`**(codex 启动时自动读),
|
|
199
|
+
* 不再强制用户 `export <ENV>=...`。env_key 命名规则:`<PROVIDER_ID>_API_KEY`
|
|
200
|
+
* (大写 + `-`→`_`)。
|
|
285
201
|
*/
|
|
286
202
|
async function initCodex(opts) {
|
|
287
203
|
const meta = TOOLS.codex;
|
|
288
204
|
const doc = await readTomlFile(meta.settingsFile);
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
let
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
const NEW = '__new__';
|
|
296
|
-
const picked = await select({
|
|
297
|
-
message: 'Codex provider',
|
|
298
|
-
choices: [
|
|
299
|
-
...existingProviders.map(p => ({
|
|
300
|
-
name: `复用 ${p} ${ansis.dim(`[model_providers.${p}]`)}`,
|
|
301
|
-
value: p,
|
|
302
|
-
})),
|
|
303
|
-
{ name: ansis.dim('新建一个 provider…'), value: NEW },
|
|
304
|
-
],
|
|
305
|
-
});
|
|
306
|
-
if (picked === NEW) {
|
|
307
|
-
providerId = await askProviderId(existingProviders);
|
|
308
|
-
providerFields = await askProviderFields(providerId);
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
providerId = picked;
|
|
312
|
-
reusedProvider = true;
|
|
313
|
-
}
|
|
205
|
+
const provider = opts.provider
|
|
206
|
+
? resolveProvider('codex', opts.provider)
|
|
207
|
+
: await pickProvider('codex');
|
|
208
|
+
let baseUrl;
|
|
209
|
+
if (provider.codex) {
|
|
210
|
+
baseUrl = opts.baseUrl ?? provider.codex.baseUrl;
|
|
314
211
|
}
|
|
315
212
|
else {
|
|
316
|
-
|
|
317
|
-
|
|
213
|
+
// custom:必须用户给
|
|
214
|
+
baseUrl = opts.baseUrl ?? await askInput('Base URL (例如 https://api.openai.com/v1)');
|
|
318
215
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
const model = opts.model
|
|
323
|
-
|
|
216
|
+
const envKey = computeEnvKey(provider.id);
|
|
217
|
+
// profile 名 = provider id(重复则 -2/-3)
|
|
218
|
+
const profileName = await askProfileName(provider.id, doc);
|
|
219
|
+
const model = opts.model
|
|
220
|
+
?? provider.codex?.defaultModel
|
|
221
|
+
?? await askInput('Main model (例如 gpt-5.2 / gpt-4o)');
|
|
222
|
+
const reasoningEffort = opts.yes ? undefined : await askReasoningEffort();
|
|
223
|
+
const apiKey = opts.apiKey ?? await askInput('API Key', true);
|
|
324
224
|
// 预览
|
|
325
225
|
console.log(ansis.dim(`\n→ 配置目标: ${meta.settingsFile}`));
|
|
326
|
-
console.log(ansis.dim(`→ Profile: ${profileName} ${ansis.gray(
|
|
327
|
-
console.log(ansis.dim(`→ Provider: ${
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
if (providerFields.envKey)
|
|
331
|
-
console.log(ansis.dim(`→ env_key: ${providerFields.envKey}`));
|
|
226
|
+
console.log(ansis.dim(`→ Profile: ${profileName} ${ansis.gray(`([profiles.${profileName}])`)}`));
|
|
227
|
+
console.log(ansis.dim(`→ Provider: ${provider.id} (${provider.name})`));
|
|
228
|
+
console.log(ansis.dim(`→ Base URL: ${baseUrl}`));
|
|
229
|
+
console.log(ansis.dim(`→ env_key: ${envKey} ${ansis.gray('(写到 ~/.codex/auth.json)')}`));
|
|
332
230
|
console.log(ansis.dim(`→ Model: ${model}`));
|
|
333
231
|
if (reasoningEffort)
|
|
334
232
|
console.log(ansis.dim(`→ Reasoning effort: ${reasoningEffort}`));
|
|
@@ -342,61 +240,40 @@ async function initCodex(opts) {
|
|
|
342
240
|
}
|
|
343
241
|
applyCodexProfile(doc, {
|
|
344
242
|
profileName,
|
|
345
|
-
providerId,
|
|
243
|
+
providerId: provider.id,
|
|
346
244
|
model,
|
|
347
245
|
...(reasoningEffort ? { reasoningEffort } : {}),
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
wireApi: 'responses', // codex 当前只支持 responses
|
|
353
|
-
...(providerFields.envKey !== undefined ? { envKey: providerFields.envKey } : {}),
|
|
354
|
-
...(providerFields.requiresOpenaiAuth !== undefined
|
|
355
|
-
? { requiresOpenaiAuth: providerFields.requiresOpenaiAuth }
|
|
356
|
-
: {}),
|
|
357
|
-
}),
|
|
246
|
+
baseUrl,
|
|
247
|
+
wireApi: 'responses',
|
|
248
|
+
envKey,
|
|
249
|
+
requiresOpenaiAuth: false,
|
|
358
250
|
});
|
|
359
251
|
const backup = await writeTomlFile(meta.settingsFile, doc);
|
|
252
|
+
// 写 auth.json(含 OPENAI_API_KEY 兜底,匹配 codex CLI 默认查找的 key)
|
|
253
|
+
await writeAuthFile({ [envKey]: apiKey, OPENAI_API_KEY: apiKey });
|
|
360
254
|
console.log(ansis.green(`\n✔ Codex profile "${profileName}" 已写入`));
|
|
361
255
|
if (backup)
|
|
362
256
|
console.log(ansis.dim(` 备份: ${backup}`));
|
|
363
|
-
console.log(ansis.dim(`
|
|
257
|
+
console.log(ansis.dim(` config: ${meta.settingsFile}`));
|
|
258
|
+
console.log(ansis.dim(` auth: ~/.codex/auth.json`));
|
|
364
259
|
console.log();
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
message: 'Provider 短名(写进 [model_providers.<id>],建议小写无空格,例如 myapi)',
|
|
377
|
-
default: 'custom',
|
|
378
|
-
validate: (s) => {
|
|
379
|
-
const t = s.trim();
|
|
380
|
-
if (!/^[a-z0-9_-]+$/.test(t))
|
|
381
|
-
return '只允许小写字母、数字、_、-';
|
|
382
|
-
if (taken.includes(t))
|
|
383
|
-
return `provider "${t}" 已存在;用「复用」选项,或换个名字`;
|
|
384
|
-
return true;
|
|
385
|
-
},
|
|
260
|
+
console.log(ansis.dim('提示:随时可以 `codex --profile <name>` 切换其它 profile。\n'));
|
|
261
|
+
// 顺便把这次 codex 配置也存为 ccjk profile,方便 `ccjk use` 同步
|
|
262
|
+
await maybeSaveProfile({
|
|
263
|
+
explicitName: opts.profile,
|
|
264
|
+
yes: opts.yes ?? false,
|
|
265
|
+
provider,
|
|
266
|
+
baseUrl,
|
|
267
|
+
authType: 'auth_token',
|
|
268
|
+
apiKey,
|
|
269
|
+
slots: { main: model },
|
|
270
|
+
targetTools: ['codex'],
|
|
386
271
|
});
|
|
387
|
-
return v.trim();
|
|
388
272
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
const envKey = await askEnvKey(providerId);
|
|
392
|
-
const requiresOpenaiAuth = await confirm({
|
|
393
|
-
message: 'requires_openai_auth?(走 OpenAI 官方鉴权时 true,自建网关多半 false)',
|
|
394
|
-
default: false,
|
|
395
|
-
});
|
|
396
|
-
return { baseUrl, envKey, requiresOpenaiAuth };
|
|
273
|
+
function computeEnvKey(providerId) {
|
|
274
|
+
return `${providerId.toUpperCase().replace(/-/g, '_')}_API_KEY`;
|
|
397
275
|
}
|
|
398
276
|
async function askProfileName(providerId, doc) {
|
|
399
|
-
// 默认建议 = providerId;若已被占用,加 -2/-3
|
|
400
277
|
const existing = new Set();
|
|
401
278
|
for (const k of doc.values.keys()) {
|
|
402
279
|
const m = /^profiles\.([^.]+)\./.exec(k);
|
|
@@ -433,15 +310,6 @@ async function askReasoningEffort() {
|
|
|
433
310
|
return undefined;
|
|
434
311
|
return v;
|
|
435
312
|
}
|
|
436
|
-
async function askEnvKey(providerId) {
|
|
437
|
-
const suggested = `${providerId.toUpperCase().replace(/-/g, '_')}_API_KEY`;
|
|
438
|
-
const v = await input({
|
|
439
|
-
message: 'env_key 名(codex 启动时从此环境变量读取 API key)',
|
|
440
|
-
default: suggested,
|
|
441
|
-
validate: (s) => /^[A-Z_][A-Z0-9_]*$/.test(s.trim()) || '只允许大写字母、数字、_,且不能数字开头',
|
|
442
|
-
});
|
|
443
|
-
return v.trim();
|
|
444
|
-
}
|
|
445
313
|
async function pickTool() {
|
|
446
314
|
return await select({
|
|
447
315
|
message: '选择目标代码工具',
|
|
@@ -449,7 +317,7 @@ async function pickTool() {
|
|
|
449
317
|
choices: [
|
|
450
318
|
{ name: `${TOOLS.clavue.displayName} ${ansis.dim('(主推)')}`, value: 'clavue' },
|
|
451
319
|
{ name: TOOLS['claude-code'].displayName, value: 'claude-code' },
|
|
452
|
-
{ name:
|
|
320
|
+
{ name: TOOLS.codex.displayName, value: 'codex' },
|
|
453
321
|
],
|
|
454
322
|
});
|
|
455
323
|
}
|
|
@@ -457,7 +325,10 @@ async function pickProvider(tool) {
|
|
|
457
325
|
const list = listProvidersFor(tool);
|
|
458
326
|
const id = await select({
|
|
459
327
|
message: '选择 API provider',
|
|
460
|
-
choices: list.map(p => ({
|
|
328
|
+
choices: list.map(p => ({
|
|
329
|
+
name: `${p.name} ${ansis.dim(p.description ?? '')}`,
|
|
330
|
+
value: p.id,
|
|
331
|
+
})),
|
|
461
332
|
});
|
|
462
333
|
return list.find(p => p.id === id);
|
|
463
334
|
}
|
|
@@ -479,17 +350,14 @@ async function askInput(message, mask = false) {
|
|
|
479
350
|
/**
|
|
480
351
|
* 写 settings.env:
|
|
481
352
|
* - 总是写 ANTHROPIC_BASE_URL + 凭证
|
|
482
|
-
* - main slot → ANTHROPIC_MODEL
|
|
483
|
-
* - haiku slot → ANTHROPIC_DEFAULT_HAIKU_MODEL
|
|
484
|
-
* - sonnet slot → ANTHROPIC_DEFAULT_SONNET_MODEL
|
|
485
|
-
* - opus slot → ANTHROPIC_DEFAULT_OPUS_MODEL
|
|
353
|
+
* - main slot → ANTHROPIC_MODEL(其它 3 个槽位见上方 ModelSlots 说明)
|
|
486
354
|
*
|
|
487
355
|
* 没指定的槽位会被 delete,避免上一次配置的旧值残留。
|
|
488
356
|
*/
|
|
489
|
-
export function applyApiToSettings(settings, baseUrl, apiKey,
|
|
357
|
+
export function applyApiToSettings(settings, baseUrl, apiKey, authType, slots = {}) {
|
|
490
358
|
settings.env = settings.env ?? {};
|
|
491
359
|
settings.env.ANTHROPIC_BASE_URL = baseUrl;
|
|
492
|
-
if (
|
|
360
|
+
if (authType === 'auth_token') {
|
|
493
361
|
settings.env.ANTHROPIC_AUTH_TOKEN = apiKey;
|
|
494
362
|
delete settings.env.ANTHROPIC_API_KEY;
|
|
495
363
|
}
|
|
@@ -497,15 +365,10 @@ export function applyApiToSettings(settings, baseUrl, apiKey, provider, slots =
|
|
|
497
365
|
settings.env.ANTHROPIC_API_KEY = apiKey;
|
|
498
366
|
delete settings.env.ANTHROPIC_AUTH_TOKEN;
|
|
499
367
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
const opus = slots.opus ?? provider.opusModel;
|
|
505
|
-
applyOrDelete(settings.env, 'ANTHROPIC_MODEL', main);
|
|
506
|
-
applyOrDelete(settings.env, 'ANTHROPIC_DEFAULT_HAIKU_MODEL', haiku);
|
|
507
|
-
applyOrDelete(settings.env, 'ANTHROPIC_DEFAULT_SONNET_MODEL', sonnet);
|
|
508
|
-
applyOrDelete(settings.env, 'ANTHROPIC_DEFAULT_OPUS_MODEL', opus);
|
|
368
|
+
applyOrDelete(settings.env, 'ANTHROPIC_MODEL', slots.main);
|
|
369
|
+
applyOrDelete(settings.env, 'ANTHROPIC_DEFAULT_HAIKU_MODEL', slots.haiku);
|
|
370
|
+
applyOrDelete(settings.env, 'ANTHROPIC_DEFAULT_SONNET_MODEL', slots.sonnet);
|
|
371
|
+
applyOrDelete(settings.env, 'ANTHROPIC_DEFAULT_OPUS_MODEL', slots.opus);
|
|
509
372
|
if ('model' in settings)
|
|
510
373
|
delete settings.model;
|
|
511
374
|
}
|
|
@@ -515,4 +378,28 @@ function applyOrDelete(env, key, value) {
|
|
|
515
378
|
else
|
|
516
379
|
delete env[key];
|
|
517
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* 写完 settings 后,立刻警告 shell rc 残留 env shadow。
|
|
383
|
+
*
|
|
384
|
+
* 只比 baseUrl 和 main model(最常被 shadow 的两条)。
|
|
385
|
+
*/
|
|
386
|
+
export function warnShellShadow(baseUrl, slots) {
|
|
387
|
+
const shellBase = process.env.ANTHROPIC_BASE_URL;
|
|
388
|
+
const shellModel = process.env.ANTHROPIC_MODEL;
|
|
389
|
+
const conflicts = [];
|
|
390
|
+
if (shellBase && shellBase !== baseUrl) {
|
|
391
|
+
conflicts.push(`ANTHROPIC_BASE_URL(shell="${shellBase}",文件="${baseUrl}")`);
|
|
392
|
+
}
|
|
393
|
+
if (shellModel && slots.main && shellModel !== slots.main) {
|
|
394
|
+
conflicts.push(`ANTHROPIC_MODEL(shell="${shellModel}",文件="${slots.main}")`);
|
|
395
|
+
}
|
|
396
|
+
if (conflicts.length === 0)
|
|
397
|
+
return;
|
|
398
|
+
console.log();
|
|
399
|
+
console.log(ansis.yellow('⚠ 警告:shell 环境变量会 shadow 这次配置'));
|
|
400
|
+
for (const c of conflicts)
|
|
401
|
+
console.log(ansis.yellow(` · ${c}`));
|
|
402
|
+
console.log(ansis.dim(' Claude Code 启动时优先读 shell 环境变量,文件配置会被覆盖。'));
|
|
403
|
+
console.log(ansis.dim(' 打开 ~/.zshrc / ~/.bashrc 删掉对应 export,重开终端即可。'));
|
|
404
|
+
}
|
|
518
405
|
//# sourceMappingURL=init.js.map
|