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.
Files changed (425) hide show
  1. package/dist/commands/edit.js +3 -2
  2. package/dist/commands/edit.js.map +1 -1
  3. package/dist/commands/init.js +141 -254
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/migrate.js +8 -4
  6. package/dist/commands/migrate.js.map +1 -1
  7. package/dist/commands/profile.js +36 -8
  8. package/dist/commands/profile.js.map +1 -1
  9. package/dist/commands/quick.js +23 -24
  10. package/dist/commands/quick.js.map +1 -1
  11. package/dist/core/codex-auth.js +63 -0
  12. package/dist/core/codex-auth.js.map +1 -0
  13. package/dist/core/perms.js +86 -96
  14. package/dist/core/perms.js.map +1 -1
  15. package/dist/core/profiles.js +57 -13
  16. package/dist/core/profiles.js.map +1 -1
  17. package/dist/core/providers.js +77 -71
  18. package/dist/core/providers.js.map +1 -1
  19. package/dist/core/quick-parse.js +7 -1
  20. package/dist/core/quick-parse.js.map +1 -1
  21. package/package.json +1 -1
  22. package/dist/chunks/agent-teams.mjs +0 -145
  23. package/dist/chunks/agent.mjs +0 -1439
  24. package/dist/chunks/agents.mjs +0 -3783
  25. package/dist/chunks/api-cli.mjs +0 -135
  26. package/dist/chunks/api-config-selector.mjs +0 -159
  27. package/dist/chunks/api-providers.mjs +0 -144
  28. package/dist/chunks/api.mjs +0 -115
  29. package/dist/chunks/auto-bootstrap.mjs +0 -358
  30. package/dist/chunks/auto-fixer.mjs +0 -95
  31. package/dist/chunks/auto-updater.mjs +0 -507
  32. package/dist/chunks/banner.mjs +0 -173
  33. package/dist/chunks/bash.mjs +0 -187
  34. package/dist/chunks/boost.mjs +0 -474
  35. package/dist/chunks/brain-config.mjs +0 -75
  36. package/dist/chunks/brain-status.mjs +0 -89
  37. package/dist/chunks/ccjk-agents.mjs +0 -416
  38. package/dist/chunks/ccjk-all.mjs +0 -1046
  39. package/dist/chunks/ccjk-config.mjs +0 -445
  40. package/dist/chunks/ccjk-hooks.mjs +0 -1074
  41. package/dist/chunks/ccjk-mcp.mjs +0 -763
  42. package/dist/chunks/ccjk-setup.mjs +0 -765
  43. package/dist/chunks/ccjk-skills.mjs +0 -518
  44. package/dist/chunks/ccr.mjs +0 -109
  45. package/dist/chunks/ccu.mjs +0 -40
  46. package/dist/chunks/check-updates.mjs +0 -117
  47. package/dist/chunks/claude-code-incremental-manager.mjs +0 -761
  48. package/dist/chunks/claude-config.mjs +0 -606
  49. package/dist/chunks/claude-config2.mjs +0 -62
  50. package/dist/chunks/claude-wrapper.mjs +0 -85
  51. package/dist/chunks/clavue-config.mjs +0 -1454
  52. package/dist/chunks/cleanup-migration.mjs +0 -20
  53. package/dist/chunks/cli-hook.mjs +0 -4096
  54. package/dist/chunks/cloud-sync.mjs +0 -29
  55. package/dist/chunks/code-type-resolver.mjs +0 -880
  56. package/dist/chunks/codex-config-switch.mjs +0 -452
  57. package/dist/chunks/codex-provider-manager.mjs +0 -238
  58. package/dist/chunks/codex-uninstaller.mjs +0 -404
  59. package/dist/chunks/codex.mjs +0 -2141
  60. package/dist/chunks/commands.mjs +0 -108
  61. package/dist/chunks/commands2.mjs +0 -421
  62. package/dist/chunks/commit.mjs +0 -140
  63. package/dist/chunks/completion.mjs +0 -517
  64. package/dist/chunks/config-consolidator.mjs +0 -172
  65. package/dist/chunks/config-switch.mjs +0 -334
  66. package/dist/chunks/config.mjs +0 -558
  67. package/dist/chunks/config2.mjs +0 -484
  68. package/dist/chunks/config3.mjs +0 -486
  69. package/dist/chunks/constants.mjs +0 -323
  70. package/dist/chunks/context-opt.mjs +0 -444
  71. package/dist/chunks/context.mjs +0 -974
  72. package/dist/chunks/dashboard.mjs +0 -481
  73. package/dist/chunks/doctor.mjs +0 -1301
  74. package/dist/chunks/eval.mjs +0 -502
  75. package/dist/chunks/evolution.mjs +0 -322
  76. package/dist/chunks/features.mjs +0 -715
  77. package/dist/chunks/fish.mjs +0 -181
  78. package/dist/chunks/fs-operations.mjs +0 -180
  79. package/dist/chunks/health-alerts.mjs +0 -830
  80. package/dist/chunks/help.mjs +0 -341
  81. package/dist/chunks/hook-installer.mjs +0 -48
  82. package/dist/chunks/impact.mjs +0 -651
  83. package/dist/chunks/index.mjs +0 -23
  84. package/dist/chunks/index10.mjs +0 -19
  85. package/dist/chunks/index11.mjs +0 -1171
  86. package/dist/chunks/index12.mjs +0 -218
  87. package/dist/chunks/index13.mjs +0 -679
  88. package/dist/chunks/index14.mjs +0 -1009
  89. package/dist/chunks/index15.mjs +0 -194
  90. package/dist/chunks/index2.mjs +0 -7637
  91. package/dist/chunks/index3.mjs +0 -171
  92. package/dist/chunks/index4.mjs +0 -26
  93. package/dist/chunks/index5.mjs +0 -19
  94. package/dist/chunks/index6.mjs +0 -19092
  95. package/dist/chunks/index7.mjs +0 -616
  96. package/dist/chunks/index8.mjs +0 -1602
  97. package/dist/chunks/index9.mjs +0 -5384
  98. package/dist/chunks/init.mjs +0 -1911
  99. package/dist/chunks/installer.mjs +0 -757
  100. package/dist/chunks/installer2.mjs +0 -103
  101. package/dist/chunks/interview.mjs +0 -2927
  102. package/dist/chunks/json-config.mjs +0 -60
  103. package/dist/chunks/linux.mjs +0 -3863
  104. package/dist/chunks/macos.mjs +0 -69
  105. package/dist/chunks/main.mjs +0 -635
  106. package/dist/chunks/manager.mjs +0 -1048
  107. package/dist/chunks/marketplace.mjs +0 -265
  108. package/dist/chunks/mcp-cli.mjs +0 -205
  109. package/dist/chunks/mcp-performance.mjs +0 -187
  110. package/dist/chunks/mcp.mjs +0 -667
  111. package/dist/chunks/memory-check.mjs +0 -2973
  112. package/dist/chunks/memory-paths.mjs +0 -259
  113. package/dist/chunks/memory-sync.mjs +0 -209
  114. package/dist/chunks/memory.mjs +0 -354
  115. package/dist/chunks/metrics-display.mjs +0 -153
  116. package/dist/chunks/monitor.mjs +0 -1856
  117. package/dist/chunks/notification.mjs +0 -1864
  118. package/dist/chunks/onboarding.mjs +0 -386
  119. package/dist/chunks/package.mjs +0 -3
  120. package/dist/chunks/paradigm.mjs +0 -74
  121. package/dist/chunks/permission-manager.mjs +0 -250
  122. package/dist/chunks/permissions.mjs +0 -265
  123. package/dist/chunks/persistence-manager.mjs +0 -801
  124. package/dist/chunks/persistence.mjs +0 -707
  125. package/dist/chunks/platform.mjs +0 -395
  126. package/dist/chunks/plugin.mjs +0 -1936
  127. package/dist/chunks/powershell.mjs +0 -213
  128. package/dist/chunks/prompts.mjs +0 -244
  129. package/dist/chunks/providers.mjs +0 -263
  130. package/dist/chunks/quick-actions.mjs +0 -335
  131. package/dist/chunks/quick-provider.mjs +0 -755
  132. package/dist/chunks/quick-setup.mjs +0 -421
  133. package/dist/chunks/remote.mjs +0 -497
  134. package/dist/chunks/research.mjs +0 -1904
  135. package/dist/chunks/rollback.mjs +0 -38
  136. package/dist/chunks/session-manager.mjs +0 -1371
  137. package/dist/chunks/session.mjs +0 -878
  138. package/dist/chunks/sessions.mjs +0 -106
  139. package/dist/chunks/silent-updater.mjs +0 -396
  140. package/dist/chunks/simple-config.mjs +0 -122
  141. package/dist/chunks/skill.mjs +0 -117
  142. package/dist/chunks/skill2.mjs +0 -9052
  143. package/dist/chunks/skills-sync.mjs +0 -1343
  144. package/dist/chunks/skills.mjs +0 -577
  145. package/dist/chunks/slash-commands.mjs +0 -208
  146. package/dist/chunks/smart-guide.mjs +0 -247
  147. package/dist/chunks/snapshot.mjs +0 -58
  148. package/dist/chunks/startup.mjs +0 -487
  149. package/dist/chunks/stats.mjs +0 -191
  150. package/dist/chunks/status.mjs +0 -471
  151. package/dist/chunks/team.mjs +0 -63
  152. package/dist/chunks/thinking.mjs +0 -626
  153. package/dist/chunks/trace.mjs +0 -57
  154. package/dist/chunks/uninstall.mjs +0 -852
  155. package/dist/chunks/update.mjs +0 -174
  156. package/dist/chunks/upgrade-manager.mjs +0 -204
  157. package/dist/chunks/upgrade.mjs +0 -133
  158. package/dist/chunks/version-checker.mjs +0 -891
  159. package/dist/chunks/vim.mjs +0 -903
  160. package/dist/chunks/windows.mjs +0 -14
  161. package/dist/chunks/workflows.mjs +0 -633
  162. package/dist/chunks/wsl.mjs +0 -129
  163. package/dist/chunks/zero-config.mjs +0 -871
  164. package/dist/chunks/zsh.mjs +0 -182
  165. package/dist/cli.d.mts +0 -1
  166. package/dist/cli.d.ts +0 -1
  167. package/dist/cli.mjs +0 -2684
  168. package/dist/i18n/locales/en/agent-teams.json +0 -18
  169. package/dist/i18n/locales/en/agentBrowser.json +0 -80
  170. package/dist/i18n/locales/en/agents.json +0 -135
  171. package/dist/i18n/locales/en/api.json +0 -63
  172. package/dist/i18n/locales/en/ccjk-agents.json +0 -33
  173. package/dist/i18n/locales/en/ccjk-all.json +0 -23
  174. package/dist/i18n/locales/en/ccjk-skills.json +0 -22
  175. package/dist/i18n/locales/en/ccjk.json +0 -276
  176. package/dist/i18n/locales/en/ccr.json +0 -65
  177. package/dist/i18n/locales/en/claude-md.json +0 -73
  178. package/dist/i18n/locales/en/cli.json +0 -148
  179. package/dist/i18n/locales/en/cloud-setup.json +0 -31
  180. package/dist/i18n/locales/en/cloud-sync.json +0 -147
  181. package/dist/i18n/locales/en/cloud.json +0 -40
  182. package/dist/i18n/locales/en/cloudPlugins.json +0 -118
  183. package/dist/i18n/locales/en/codex.json +0 -184
  184. package/dist/i18n/locales/en/cometix.json +0 -29
  185. package/dist/i18n/locales/en/common.json +0 -68
  186. package/dist/i18n/locales/en/config.json +0 -108
  187. package/dist/i18n/locales/en/configuration.json +0 -236
  188. package/dist/i18n/locales/en/context.json +0 -85
  189. package/dist/i18n/locales/en/dashboard.json +0 -78
  190. package/dist/i18n/locales/en/errors.json +0 -26
  191. package/dist/i18n/locales/en/evolution.json +0 -54
  192. package/dist/i18n/locales/en/hooks.json +0 -74
  193. package/dist/i18n/locales/en/hooksSync.json +0 -133
  194. package/dist/i18n/locales/en/installation.json +0 -83
  195. package/dist/i18n/locales/en/interview.json +0 -104
  196. package/dist/i18n/locales/en/language.json +0 -19
  197. package/dist/i18n/locales/en/lsp.json +0 -78
  198. package/dist/i18n/locales/en/marketplace.json +0 -116
  199. package/dist/i18n/locales/en/mcp.json +0 -180
  200. package/dist/i18n/locales/en/memory.json +0 -23
  201. package/dist/i18n/locales/en/menu.json +0 -299
  202. package/dist/i18n/locales/en/multi-config.json +0 -79
  203. package/dist/i18n/locales/en/notification.json +0 -307
  204. package/dist/i18n/locales/en/permissions.json +0 -95
  205. package/dist/i18n/locales/en/persistence.json +0 -127
  206. package/dist/i18n/locales/en/plugins.json +0 -146
  207. package/dist/i18n/locales/en/quick-actions.json +0 -78
  208. package/dist/i18n/locales/en/registry.json +0 -54
  209. package/dist/i18n/locales/en/remote.json +0 -93
  210. package/dist/i18n/locales/en/sandbox.json +0 -44
  211. package/dist/i18n/locales/en/setup.json +0 -44
  212. package/dist/i18n/locales/en/shencha.json +0 -14
  213. package/dist/i18n/locales/en/skills.json +0 -100
  214. package/dist/i18n/locales/en/skillsSync.json +0 -74
  215. package/dist/i18n/locales/en/smartGuide.json +0 -49
  216. package/dist/i18n/locales/en/stats.json +0 -20
  217. package/dist/i18n/locales/en/subagent.json +0 -69
  218. package/dist/i18n/locales/en/superpowers.json +0 -117
  219. package/dist/i18n/locales/en/team.json +0 -7
  220. package/dist/i18n/locales/en/thinking.json +0 -65
  221. package/dist/i18n/locales/en/tools.json +0 -42
  222. package/dist/i18n/locales/en/uninstall.json +0 -56
  223. package/dist/i18n/locales/en/updater.json +0 -29
  224. package/dist/i18n/locales/en/vim.json +0 -169
  225. package/dist/i18n/locales/en/workflow.json +0 -55
  226. package/dist/i18n/locales/en/workspace.json +0 -108
  227. package/dist/i18n/locales/zh-CN/agent-teams.json +0 -18
  228. package/dist/i18n/locales/zh-CN/agentBrowser.json +0 -80
  229. package/dist/i18n/locales/zh-CN/agents.json +0 -135
  230. package/dist/i18n/locales/zh-CN/api.json +0 -63
  231. package/dist/i18n/locales/zh-CN/ccjk-agents.json +0 -33
  232. package/dist/i18n/locales/zh-CN/ccjk-all.json +0 -23
  233. package/dist/i18n/locales/zh-CN/ccjk-skills.json +0 -22
  234. package/dist/i18n/locales/zh-CN/ccjk.json +0 -276
  235. package/dist/i18n/locales/zh-CN/ccr.json +0 -65
  236. package/dist/i18n/locales/zh-CN/claude-md.json +0 -73
  237. package/dist/i18n/locales/zh-CN/cli.json +0 -148
  238. package/dist/i18n/locales/zh-CN/cloud-setup.json +0 -31
  239. package/dist/i18n/locales/zh-CN/cloud-sync.json +0 -147
  240. package/dist/i18n/locales/zh-CN/cloud.json +0 -40
  241. package/dist/i18n/locales/zh-CN/cloudPlugins.json +0 -118
  242. package/dist/i18n/locales/zh-CN/codex.json +0 -184
  243. package/dist/i18n/locales/zh-CN/cometix.json +0 -29
  244. package/dist/i18n/locales/zh-CN/common.json +0 -68
  245. package/dist/i18n/locales/zh-CN/config.json +0 -108
  246. package/dist/i18n/locales/zh-CN/configuration.json +0 -234
  247. package/dist/i18n/locales/zh-CN/context.json +0 -85
  248. package/dist/i18n/locales/zh-CN/dashboard.json +0 -78
  249. package/dist/i18n/locales/zh-CN/errors.json +0 -26
  250. package/dist/i18n/locales/zh-CN/evolution.json +0 -54
  251. package/dist/i18n/locales/zh-CN/hooks.json +0 -74
  252. package/dist/i18n/locales/zh-CN/hooksSync.json +0 -133
  253. package/dist/i18n/locales/zh-CN/installation.json +0 -83
  254. package/dist/i18n/locales/zh-CN/interview.json +0 -104
  255. package/dist/i18n/locales/zh-CN/language.json +0 -19
  256. package/dist/i18n/locales/zh-CN/lsp.json +0 -78
  257. package/dist/i18n/locales/zh-CN/marketplace.json +0 -116
  258. package/dist/i18n/locales/zh-CN/mcp.json +0 -180
  259. package/dist/i18n/locales/zh-CN/memory.json +0 -23
  260. package/dist/i18n/locales/zh-CN/menu.json +0 -299
  261. package/dist/i18n/locales/zh-CN/multi-config.json +0 -79
  262. package/dist/i18n/locales/zh-CN/notification.json +0 -307
  263. package/dist/i18n/locales/zh-CN/permissions.json +0 -95
  264. package/dist/i18n/locales/zh-CN/persistence.json +0 -127
  265. package/dist/i18n/locales/zh-CN/plugins.json +0 -146
  266. package/dist/i18n/locales/zh-CN/quick-actions.json +0 -78
  267. package/dist/i18n/locales/zh-CN/registry.json +0 -54
  268. package/dist/i18n/locales/zh-CN/remote.json +0 -93
  269. package/dist/i18n/locales/zh-CN/sandbox.json +0 -44
  270. package/dist/i18n/locales/zh-CN/setup.json +0 -44
  271. package/dist/i18n/locales/zh-CN/shencha.json +0 -14
  272. package/dist/i18n/locales/zh-CN/skills.json +0 -100
  273. package/dist/i18n/locales/zh-CN/skillsSync.json +0 -74
  274. package/dist/i18n/locales/zh-CN/smartGuide.json +0 -49
  275. package/dist/i18n/locales/zh-CN/stats.json +0 -20
  276. package/dist/i18n/locales/zh-CN/subagent.json +0 -69
  277. package/dist/i18n/locales/zh-CN/superpowers.json +0 -117
  278. package/dist/i18n/locales/zh-CN/team.json +0 -7
  279. package/dist/i18n/locales/zh-CN/thinking.json +0 -65
  280. package/dist/i18n/locales/zh-CN/tools.json +0 -42
  281. package/dist/i18n/locales/zh-CN/uninstall.json +0 -56
  282. package/dist/i18n/locales/zh-CN/updater.json +0 -29
  283. package/dist/i18n/locales/zh-CN/vim.json +0 -169
  284. package/dist/i18n/locales/zh-CN/workflow.json +0 -55
  285. package/dist/i18n/locales/zh-CN/workspace.json +0 -108
  286. package/dist/index.d.mts +0 -5658
  287. package/dist/index.d.ts +0 -5658
  288. package/dist/index.mjs +0 -3732
  289. package/dist/shared/ccjk.5bEolFrk.mjs +0 -254
  290. package/dist/shared/ccjk.8oaxX4iR.mjs +0 -90
  291. package/dist/shared/ccjk.B2U7DsPy.mjs +0 -31
  292. package/dist/shared/ccjk.B2f-cwUP.mjs +0 -468
  293. package/dist/shared/ccjk.BAGoDD49.mjs +0 -36
  294. package/dist/shared/ccjk.BBtCGd_g.mjs +0 -899
  295. package/dist/shared/ccjk.BFQ7yr5S.mjs +0 -16
  296. package/dist/shared/ccjk.BLsIiTqO.mjs +0 -449
  297. package/dist/shared/ccjk.BXv8aYs1.mjs +0 -170
  298. package/dist/shared/ccjk.BnsY5WxD.mjs +0 -171
  299. package/dist/shared/ccjk.BoApaI4j.mjs +0 -28
  300. package/dist/shared/ccjk.Bq8TqZG_.mjs +0 -189
  301. package/dist/shared/ccjk.BtrioX1Z.mjs +0 -25
  302. package/dist/shared/ccjk.Bx_rmYfN.mjs +0 -69
  303. package/dist/shared/ccjk.BzPbSEP2.mjs +0 -115
  304. package/dist/shared/ccjk.C0WLUnFV.mjs +0 -293
  305. package/dist/shared/ccjk.C1hANZTu.mjs +0 -19
  306. package/dist/shared/ccjk.C2jHOZVP.mjs +0 -52
  307. package/dist/shared/ccjk.CNhnT6uQ.mjs +0 -636
  308. package/dist/shared/ccjk.COweQ1RR.mjs +0 -5
  309. package/dist/shared/ccjk.CfKKcvWy.mjs +0 -126
  310. package/dist/shared/ccjk.Cjgrln_h.mjs +0 -297
  311. package/dist/shared/ccjk.CoCHVXl3.mjs +0 -3951
  312. package/dist/shared/ccjk.CwGZSTAK.mjs +0 -319
  313. package/dist/shared/ccjk.CxpGa6MC.mjs +0 -2724
  314. package/dist/shared/ccjk.D-magaEx.mjs +0 -763
  315. package/dist/shared/ccjk.D0g2ABGg.mjs +0 -171
  316. package/dist/shared/ccjk.D6ycHbak.mjs +0 -270
  317. package/dist/shared/ccjk.D75wivnp.mjs +0 -142
  318. package/dist/shared/ccjk.DDL-4C-k.mjs +0 -100
  319. package/dist/shared/ccjk.DFRPtmK_.mjs +0 -75
  320. package/dist/shared/ccjk.DMV3x5Sd.mjs +0 -299
  321. package/dist/shared/ccjk.DZ2LLOa-.mjs +0 -2195
  322. package/dist/shared/ccjk.DbigonEQ.mjs +0 -698
  323. package/dist/shared/ccjk.DcMvE7lf.mjs +0 -618
  324. package/dist/shared/ccjk.DeWpAShp.mjs +0 -1828
  325. package/dist/shared/ccjk.DhJ1kyDR.mjs +0 -30
  326. package/dist/shared/ccjk.DlTXS9rP.mjs +0 -224
  327. package/dist/shared/ccjk.DopKzo3z.mjs +0 -305
  328. package/dist/shared/ccjk.DsZsc4LR.mjs +0 -1280
  329. package/dist/shared/ccjk.DuzJZlgj.mjs +0 -418
  330. package/dist/shared/ccjk.Dxgd2vjc.mjs +0 -444
  331. package/dist/shared/ccjk.J8YiPsOw.mjs +0 -259
  332. package/dist/shared/ccjk.KfSWcGlE.mjs +0 -38
  333. package/dist/shared/ccjk.L7yC58_i.mjs +0 -225
  334. package/dist/shared/ccjk.MwtjAULc.mjs +0 -1447
  335. package/dist/shared/ccjk.OJKHVSOb.mjs +0 -2005
  336. package/dist/shared/ccjk.OTnevPNE.mjs +0 -225
  337. package/dist/shared/ccjk.RyizuzOI.mjs +0 -21
  338. package/dist/shared/ccjk.T_cX87dY.mjs +0 -15
  339. package/dist/shared/ccjk.bQ7Dh1g4.mjs +0 -249
  340. package/dist/shared/ccjk.gDEDGD_t.mjs +0 -38
  341. package/dist/shared/ccjk.hoqrwWdN.mjs +0 -333
  342. package/dist/shared/ccjk.i_vn-9C3.mjs +0 -317
  343. package/dist/shared/ccjk.lG3ccFjm.mjs +0 -885
  344. package/dist/shared/ccjk.wLJHO0Af.mjs +0 -244
  345. package/dist/shared/ccjk.y-a_1vK4.mjs +0 -5127
  346. package/dist/templates/agents/README.md +0 -78
  347. package/dist/templates/agents/fullstack-developer.json +0 -70
  348. package/dist/templates/agents/go-expert.json +0 -69
  349. package/dist/templates/agents/index.json +0 -64
  350. package/dist/templates/agents/python-expert.json +0 -69
  351. package/dist/templates/agents/react-specialist.json +0 -69
  352. package/dist/templates/agents/testing-automation-expert.json +0 -70
  353. package/dist/templates/agents/typescript-architect.json +0 -69
  354. package/dist/templates/claude-code/common/settings.json +0 -109
  355. package/dist/templates/common/error-prevention.md +0 -267
  356. package/dist/templates/common/karpathy-baseline.md +0 -83
  357. package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +0 -381
  358. package/dist/templates/common/output-styles/zh-CN/codex-rigor-mode.md +0 -114
  359. package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +0 -265
  360. package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +0 -539
  361. package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +0 -369
  362. package/dist/templates/common/output-styles/zh-CN/linus-mode.md +0 -135
  363. package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +0 -221
  364. package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +0 -628
  365. package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +0 -628
  366. package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +0 -187
  367. package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +0 -191
  368. package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +0 -249
  369. package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +0 -277
  370. package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +0 -29
  371. package/dist/templates/common/workflow/essential/en/agents/init-architect.md +0 -115
  372. package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +0 -91
  373. package/dist/templates/common/workflow/essential/en/feat.md +0 -92
  374. package/dist/templates/common/workflow/essential/en/goal.md +0 -147
  375. package/dist/templates/common/workflow/essential/en/init-project.md +0 -53
  376. package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +0 -29
  377. package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +0 -115
  378. package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +0 -91
  379. package/dist/templates/common/workflow/essential/zh-CN/feat.md +0 -315
  380. package/dist/templates/common/workflow/essential/zh-CN/goal.md +0 -146
  381. package/dist/templates/common/workflow/essential/zh-CN/init-project.md +0 -53
  382. package/dist/templates/common/workflow/git/en/git-cleanBranches.md +0 -102
  383. package/dist/templates/common/workflow/git/en/git-commit.md +0 -205
  384. package/dist/templates/common/workflow/git/en/git-rollback.md +0 -90
  385. package/dist/templates/common/workflow/git/en/git-worktree.md +0 -276
  386. package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +0 -102
  387. package/dist/templates/common/workflow/git/zh-CN/git-commit.md +0 -205
  388. package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +0 -90
  389. package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +0 -276
  390. package/dist/templates/common/workflow/interview/en/interview.md +0 -67
  391. package/dist/templates/common/workflow/interview/zh-CN/interview.md +0 -67
  392. package/dist/templates/common/workflow/linearMethod/en/linear-method.md +0 -651
  393. package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +0 -752
  394. package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +0 -516
  395. package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +0 -812
  396. package/dist/templates/common/workflow/sixStep/en/workflow.md +0 -83
  397. package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +0 -359
  398. package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +0 -364
  399. package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +0 -366
  400. package/dist/templates/hooks/README.md +0 -212
  401. package/dist/templates/hooks/git-workflow-hooks.md +0 -551
  402. package/dist/templates/hooks/post-test/coverage.json +0 -21
  403. package/dist/templates/hooks/post-test/summary.json +0 -21
  404. package/dist/templates/hooks/post-test-coverage.md +0 -434
  405. package/dist/templates/hooks/pre-commit/eslint.json +0 -22
  406. package/dist/templates/hooks/pre-commit/prettier.json +0 -22
  407. package/dist/templates/hooks/pre-commit-black.md +0 -274
  408. package/dist/templates/hooks/pre-commit-eslint.md +0 -153
  409. package/dist/templates/hooks/pre-commit-gofmt.md +0 -284
  410. package/dist/templates/hooks/pre-commit-prettier.md +0 -212
  411. package/dist/templates/hooks/pre-commit-type-check.md +0 -377
  412. package/dist/templates/skills/ccjk-init.md +0 -154
  413. package/dist/templates/skills/ccjk-mcp-setup.md +0 -205
  414. package/dist/templates/skills/ccjk-troubleshoot.md +0 -228
  415. package/dist/templates/skills/django-patterns.md +0 -1016
  416. package/dist/templates/skills/git-workflow.md +0 -748
  417. package/dist/templates/skills/go-idioms.md +0 -963
  418. package/dist/templates/skills/index.json +0 -132
  419. package/dist/templates/skills/nextjs-optimization.md +0 -694
  420. package/dist/templates/skills/python-pep8.md +0 -852
  421. package/dist/templates/skills/react-patterns.md +0 -686
  422. package/dist/templates/skills/rust-patterns.md +0 -1057
  423. package/dist/templates/skills/security-best-practices.md +0 -1413
  424. package/dist/templates/skills/testing-best-practices.md +0 -1315
  425. package/dist/templates/skills/ts-best-practices.md +0 -354
@@ -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 modelCatalog,model / fastModel 编辑用 select
176
+ // 如果 profile 的 provider 在表里且有 claudeCode.defaultModels,model 编辑用 select
177
+ // 否则退化为纯 input
177
178
  const provider = findProvider(profile.provider);
178
- const catalog = provider?.modelCatalog;
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,qBAAqB,CAAC;AAwB7B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB,EAAE;IACtD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAS;YACpC,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACxF,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;gBACjF,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;gBACvF,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;gBAC/F,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;gBACnG,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;aAChG;SACF,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAE5D,4BAA4B;IAC5B,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAA2B,CAAA,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;IACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG;QACrB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,OAAO,CAAC;YACd,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAC1E,CAAC;SACI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,QAAQ;QACR,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;SACI,CAAC;QACJ,gBAAgB;QAChB,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAC5D,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAqB;IACjD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,WAAW,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,YAAqB;IAC7C,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,GAAG,YAAY,CAAC;IAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAA2B,CAAA,CAAC,CAAC;QAC1E,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,MAAM,QAAQ,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,IAAiB;IAChE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;;YACpD,OAAO,OAAO,CAAC,KAAK,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;;YAChE,OAAO,OAAO,CAAC,SAAS,CAAC;QAC9B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;;YACtE,OAAO,OAAO,CAAC,WAAW,CAAC;QAChC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;;YAChE,OAAO,OAAO,CAAC,SAAS,CAAC;QAC9B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAgB,EAAE,MAAgB;IAChE,oEAAoE;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,EAAE,YAAY,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC;gBACvB,OAAO,EAAE,wBAAwB;gBACjC,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM;aACvD,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;aACI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC;gBACpB,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnB,IAAI,CAAC,CAAC;wBAAE,OAAO,MAAM,CAAC;oBACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;wBAAE,OAAO,2BAA2B,CAAC;oBACjE,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;aACI,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC;gBAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;;gBACpB,OAAO,OAAO,CAAC,KAAK,CAAC;QAC5B,CAAC;aACI,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7E,IAAI,CAAC;gBAAE,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;gBACxB,OAAO,OAAO,CAAC,SAAS,CAAC;QAChC,CAAC;aACI,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAChF,IAAI,CAAC;gBAAE,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;;gBAC1B,OAAO,OAAO,CAAC,WAAW,CAAC;QAClC,CAAC;aACI,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5E,IAAI,CAAC;gBAAE,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;gBACxB,OAAO,OAAO,CAAC,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,OAAe,EAAE,OAAkB;IAC3E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,MAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAS;QAClC,OAAO;QACP,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;QAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,OAAO,EAAE;YACP,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;YAChD,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;SACjD;KACF,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
@@ -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, listCodexProviders } from '../core/codex-config.js';
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
- ?? (provider.baseUrl || await askInput('Base URL (例如 https://api.example.com)'));
22
- const apiKey = opts.apiKey ?? await askInput(provider.authType === 'api_key' ? 'API Key' : 'Auth Token', true);
23
- // 所有 provider 都走 4 槽位(main/haiku/sonnet/opus)
24
- const slots = await collectModelSlots(provider, opts);
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: ${provider.authType}`));
29
- if (slots.main)
30
- console.log(ansis.dim(`→ Main model: ${slots.main}`));
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, provider, slots);
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
- * 询问 main / haiku / sonnet / opus 四个槽位。
80
- *
81
- * 心智模型:**默认就是单 model**,4 槽位是 advanced 才暴露的能力。
82
- * 历史上 init 强行问 4 次,让用户填一堆其实是同一个 model ID 的礼仪空格——反人性。
93
+ * 让用户挑一个 main model。
83
94
  *
84
- * 新交互:
85
- * 1) simple(默认):只问一个 main model,其它槽不写——适合 80% 用户
86
- * 2) recommended(仅当 provider 自带分级默认时显示):一键写 provider 推荐的 4 槽
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 collectModelSlots(provider, opts) {
93
- // 命令行已经把全部槽位都给了 不交互(保留旧行为)
94
- if (opts.yes || (opts.model && opts.haikuModel && opts.sonnetModel && opts.opusModel)) {
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
- // 是否有 provider 推荐的「分级 4 槽」(即 fast/sonnet/opus 至少有一个跟 default 不一样)
103
- const hasGradedDefaults = Boolean(provider.fastModel || provider.sonnetModel || provider.opusModel);
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
- choices.push({ name: '高级:手动配 4 槽位(main / haiku / sonnet / opus)', value: 'advanced', short: '高级' }, { name: ansis.gray('跳过:不写任何槽位(让工具用内置默认)'), value: 'skip', short: '跳过' });
119
- const strategy = await select({
120
- message: '模型配置',
121
- default: 'simple',
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: defaultValue || fullCatalog[0],
191
- pageSize: Math.min(10, fullCatalog.length + 2),
118
+ message: 'Main model',
119
+ default: catalog[0],
120
+ pageSize: Math.min(10, catalog.length + 2),
192
121
  choices: [
193
- ...fullCatalog.map(m => ({ name: m, value: m })),
122
+ ...catalog.map(m => ({ name: m, value: m })),
194
123
  { name: ansis.dim('其他… (手动输入)'), value: CUSTOM },
195
- { name: ansis.gray('留空(不写这个槽位)'), value: SKIP },
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
- message: '输入模型 ID',
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.provider.authType,
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 —— codex 原生 `[profiles.<name>]` 机制。
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 仍然不入 toml;这是 codex 的硬限制。
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 existingProviders = listCodexProviders(doc);
290
- // 第一步:决定用哪个 provider —— 已有的就让用户选;没有就直接走「新建」流程。
291
- let providerId;
292
- let providerFields = {};
293
- let reusedProvider = false;
294
- if (existingProviders.length > 0 && !opts.provider) {
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
- providerId = opts.provider ?? await askProviderId(existingProviders);
317
- providerFields = await askProviderFields(providerId);
213
+ // custom:必须用户给
214
+ baseUrl = opts.baseUrl ?? await askInput('Base URL (例如 https://api.openai.com/v1)');
318
215
  }
319
- // 第二步:profile 名(默认建议 providerId;如果重了就 providerId-2)
320
- const profileName = await askProfileName(providerId, doc);
321
- // 第三步:model 必填;reasoning effort 可选
322
- const model = opts.model ?? await askInput('Main model (例如 gpt-5.5 / gpt-4o)');
323
- const reasoningEffort = await askReasoningEffort();
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('([profiles.' + profileName + '])')}`));
327
- console.log(ansis.dim(`→ Provider: ${providerId}${reusedProvider ? ansis.gray(' (复用现有)') : ''}`));
328
- if (providerFields.baseUrl)
329
- console.log(ansis.dim(`→ Base URL: ${providerFields.baseUrl}`));
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
- ...(reusedProvider
349
- ? {}
350
- : {
351
- ...(providerFields.baseUrl !== undefined ? { baseUrl: providerFields.baseUrl } : {}),
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(` 目标: ${meta.settingsFile}`));
257
+ console.log(ansis.dim(` config: ${meta.settingsFile}`));
258
+ console.log(ansis.dim(` auth: ~/.codex/auth.json`));
364
259
  console.log();
365
- if (!reusedProvider && providerFields.envKey) {
366
- console.log(ansis.yellow(`! API key 不能写入 toml,请在 shell 里导出:`));
367
- console.log(ansis.cyan(` export ${providerFields.envKey}=<your-api-key>`));
368
- console.log(ansis.dim(` (写到 ~/.zshrc 或 ~/.bashrc 里持久化)`));
369
- console.log();
370
- }
371
- console.log(ansis.dim('提示:随时可以 `codex --profile <name>` 切换其它 profile,'));
372
- console.log(ansis.dim('或再次运行 `ccjk init` 新建一个 profile。\n'));
373
- }
374
- async function askProviderId(taken) {
375
- const v = await input({
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
- async function askProviderFields(providerId) {
390
- const baseUrl = await askInput('Base URL (例如 https://api.openai.com/v1)');
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: `${TOOLS.codex.displayName}`, value: 'codex' },
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 => ({ name: `${p.name} ${ansis.dim(p.description)}`, value: p.id })),
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, provider, slots = {}) {
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 (provider.authType === 'auth_token') {
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
- // 槽位写入:fallback 到 provider 默认值(保持兼容 v15 之前的行为)
501
- const main = slots.main ?? provider.defaultModel;
502
- const haiku = slots.haiku ?? provider.fastModel;
503
- const sonnet = slots.sonnet ?? provider.sonnetModel;
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