ccman 3.0.10 → 3.0.12

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 (2) hide show
  1. package/dist/index.js +193 -219
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2023,7 +2023,7 @@ var require_toml = __commonJS({
2023
2023
 
2024
2024
  // src/index.ts
2025
2025
  var import_commander = require("commander");
2026
- var import_chalk17 = __toESM(require("chalk"));
2026
+ var import_chalk18 = __toESM(require("chalk"));
2027
2027
 
2028
2028
  // src/utils/logo.ts
2029
2029
  var import_chalk = __toESM(require("chalk"));
@@ -2044,13 +2044,13 @@ function printLogo() {
2044
2044
  }
2045
2045
 
2046
2046
  // src/commands/codex/add.ts
2047
- var import_chalk3 = __toESM(require("chalk"));
2047
+ var import_chalk4 = __toESM(require("chalk"));
2048
2048
  var import_inquirer2 = __toESM(require("inquirer"));
2049
2049
 
2050
2050
  // ../core/package.json
2051
2051
  var package_default = {
2052
2052
  name: "@ccman/core",
2053
- version: "3.0.10",
2053
+ version: "3.0.12",
2054
2054
  type: "module",
2055
2055
  description: "Core business logic for ccman",
2056
2056
  main: "./dist/index.js",
@@ -2288,6 +2288,11 @@ var CC_PRESETS = [
2288
2288
  baseUrl: "https://www.88code.org/api",
2289
2289
  description: "88Code API \u670D\u52A1"
2290
2290
  },
2291
+ {
2292
+ name: "KKYYXX",
2293
+ baseUrl: "https://api.kkyyxx.xyz",
2294
+ description: "KKYYXX API \u670D\u52A1"
2295
+ },
2291
2296
  {
2292
2297
  name: "BigModel",
2293
2298
  baseUrl: "https://open.bigmodel.cn/api/anthropic",
@@ -2706,7 +2711,30 @@ var VERSION = package_default.version;
2706
2711
 
2707
2712
  // src/interactive.ts
2708
2713
  var import_inquirer = __toESM(require("inquirer"));
2714
+ var import_chalk3 = __toESM(require("chalk"));
2715
+
2716
+ // src/utils/format.ts
2709
2717
  var import_chalk2 = __toESM(require("chalk"));
2718
+ function formatProviderTable(providers, currentId) {
2719
+ const lines = [];
2720
+ lines.push("");
2721
+ providers.forEach((p, index) => {
2722
+ const isCurrent = p.id === currentId;
2723
+ const marker = isCurrent ? import_chalk2.default.green("\u25CF") : import_chalk2.default.gray("\u25CB");
2724
+ const name = isCurrent ? import_chalk2.default.green.bold(p.name) : import_chalk2.default.white(p.name);
2725
+ const tag = isCurrent ? import_chalk2.default.green(" [\u5F53\u524D]") : "";
2726
+ lines.push(` ${marker} ${name}${tag}`);
2727
+ const url = isCurrent ? import_chalk2.default.green(p.baseUrl) : import_chalk2.default.gray(p.baseUrl);
2728
+ lines.push(` ${url}`);
2729
+ if (index < providers.length - 1) {
2730
+ lines.push("");
2731
+ }
2732
+ });
2733
+ lines.push("");
2734
+ return lines.join("\n");
2735
+ }
2736
+
2737
+ // src/interactive.ts
2710
2738
  async function promptProviderForm(defaults) {
2711
2739
  const answers = await import_inquirer.default.prompt([
2712
2740
  {
@@ -2767,7 +2795,7 @@ async function startMainMenu() {
2767
2795
  }
2768
2796
  ]);
2769
2797
  if (choice === "exit") {
2770
- console.log(import_chalk2.default.gray("\n\u{1F44B} \u518D\u89C1!\n"));
2798
+ console.log(import_chalk3.default.gray("\n\u{1F44B} \u518D\u89C1!\n"));
2771
2799
  break;
2772
2800
  }
2773
2801
  if (choice === "claude") {
@@ -2835,7 +2863,7 @@ async function showToolMenu(tool) {
2835
2863
  break;
2836
2864
  }
2837
2865
  } catch (error) {
2838
- console.error(import_chalk2.default.red(`
2866
+ console.error(import_chalk3.default.red(`
2839
2867
  \u274C ${error.message}
2840
2868
  `));
2841
2869
  }
@@ -2849,13 +2877,13 @@ async function showToolMenu(tool) {
2849
2877
  }
2850
2878
  }
2851
2879
  async function showPresetsMenu() {
2852
- console.log(import_chalk2.default.yellow("\n\u26A0\uFE0F \u9884\u7F6E\u670D\u52A1\u5546\u7BA1\u7406\u529F\u80FD\u5373\u5C06\u63A8\u51FA\n"));
2880
+ console.log(import_chalk3.default.yellow("\n\u26A0\uFE0F \u9884\u7F6E\u670D\u52A1\u5546\u7BA1\u7406\u529F\u80FD\u5373\u5C06\u63A8\u51FA\n"));
2853
2881
  }
2854
2882
  async function handleAdd(tool) {
2855
2883
  const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
2856
2884
  const toolName = tool === "claude" ? "Claude" : "Codex";
2857
2885
  const presets = manager.listPresets();
2858
- console.log(import_chalk2.default.bold(`
2886
+ console.log(import_chalk3.default.bold(`
2859
2887
  \u{1F4DD} \u6DFB\u52A0 ${toolName} \u670D\u52A1\u5546
2860
2888
  `));
2861
2889
  const { usePreset } = await import_inquirer.default.prompt([
@@ -2885,7 +2913,7 @@ async function handleAdd(tool) {
2885
2913
  }
2886
2914
  ]);
2887
2915
  const preset = presets.find((p) => p.name === presetName);
2888
- console.log(import_chalk2.default.blue(`
2916
+ console.log(import_chalk3.default.blue(`
2889
2917
  \u4F7F\u7528\u9884\u8BBE: ${preset.name} - ${preset.description}
2890
2918
  `));
2891
2919
  const input = await promptProviderForm({
@@ -2930,10 +2958,10 @@ async function handleAdd(tool) {
2930
2958
  }
2931
2959
  const provider = manager.add({ name, baseUrl, apiKey });
2932
2960
  console.log();
2933
- console.log(import_chalk2.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
2961
+ console.log(import_chalk3.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
2934
2962
  console.log();
2935
- console.log(` ${import_chalk2.default.bold(provider.name)} ${import_chalk2.default.blue(`[${toolName}]`)}`);
2936
- console.log(` ${import_chalk2.default.gray(provider.baseUrl)}`);
2963
+ console.log(` ${import_chalk3.default.bold(provider.name)} ${import_chalk3.default.blue(`[${toolName}]`)}`);
2964
+ console.log(` ${import_chalk3.default.gray(provider.baseUrl)}`);
2937
2965
  console.log();
2938
2966
  const { switchNow } = await import_inquirer.default.prompt([
2939
2967
  {
@@ -2945,9 +2973,9 @@ async function handleAdd(tool) {
2945
2973
  ]);
2946
2974
  if (switchNow) {
2947
2975
  manager.switch(provider.id);
2948
- console.log(import_chalk2.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546\n"));
2976
+ console.log(import_chalk3.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546\n"));
2949
2977
  } else {
2950
- console.log(import_chalk2.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk2.default.white(` ccman ${tool === "codex" ? "cx" : "cc"} use "${provider.name}"
2978
+ console.log(import_chalk3.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk3.default.white(` ccman ${tool === "codex" ? "cx" : "cc"} use "${provider.name}"
2951
2979
  `));
2952
2980
  }
2953
2981
  }
@@ -2956,7 +2984,7 @@ async function handleSwitch(tool) {
2956
2984
  const providers = manager.list();
2957
2985
  const current = manager.getCurrent();
2958
2986
  if (providers.length === 0) {
2959
- console.log(import_chalk2.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
2987
+ console.log(import_chalk3.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
2960
2988
  return;
2961
2989
  }
2962
2990
  const { providerId } = await import_inquirer.default.prompt([
@@ -2965,14 +2993,14 @@ async function handleSwitch(tool) {
2965
2993
  name: "providerId",
2966
2994
  message: "\u9009\u62E9\u8981\u5207\u6362\u7684\u670D\u52A1\u5546:",
2967
2995
  choices: providers.map((p) => ({
2968
- name: `${p.name}${current?.id === p.id ? import_chalk2.default.green(" (\u5F53\u524D)") : ""}`,
2996
+ name: `${p.name}${current?.id === p.id ? import_chalk3.default.green(" (\u5F53\u524D)") : ""}`,
2969
2997
  value: p.id
2970
2998
  }))
2971
2999
  }
2972
3000
  ]);
2973
3001
  manager.switch(providerId);
2974
3002
  const provider = providers.find((p) => p.id === providerId);
2975
- console.log(import_chalk2.default.green(`
3003
+ console.log(import_chalk3.default.green(`
2976
3004
  \u2705 \u5DF2\u5207\u6362\u5230: ${provider.name}
2977
3005
  `));
2978
3006
  }
@@ -2982,51 +3010,33 @@ async function handleList(tool) {
2982
3010
  const current = manager.getCurrent();
2983
3011
  const toolName = tool === "claude" ? "Claude" : "Codex";
2984
3012
  if (providers.length === 0) {
2985
- console.log(import_chalk2.default.yellow(`
3013
+ console.log(import_chalk3.default.yellow(`
2986
3014
  \u26A0\uFE0F \u6682\u65E0 ${toolName} \u670D\u52A1\u5546
2987
3015
  `));
2988
3016
  return;
2989
3017
  }
2990
- console.log(import_chalk2.default.bold(`
2991
- \u{1F4CB} ${toolName} \u670D\u52A1\u5546\u5217\u8868 (\u5171 ${providers.length} \u4E2A)
2992
- `));
2993
- providers.forEach((p) => {
2994
- const isCurrent = current?.id === p.id;
2995
- const marker = isCurrent ? import_chalk2.default.green("\u25CF") : import_chalk2.default.gray("\u25CB");
2996
- const nameStyle = isCurrent ? import_chalk2.default.green.bold : import_chalk2.default.white;
2997
- console.log(`${marker} ${nameStyle(p.name)}`);
2998
- console.log(` ${import_chalk2.default.gray(p.baseUrl)}`);
2999
- if (p.lastUsedAt) {
3000
- const date = new Date(p.lastUsedAt).toLocaleString("zh-CN");
3001
- console.log(` ${import_chalk2.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3002
- }
3003
- console.log();
3004
- });
3005
- if (current) {
3006
- console.log(import_chalk2.default.green(`\u2705 \u5F53\u524D\u4F7F\u7528: ${current.name}
3007
- `));
3008
- } else {
3009
- console.log(import_chalk2.default.yellow("\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55\u670D\u52A1\u5546\n"));
3010
- }
3018
+ console.log(import_chalk3.default.bold(`
3019
+ \u{1F4CB} ${toolName} \u670D\u52A1\u5546 (${providers.length} \u4E2A)`));
3020
+ console.log(formatProviderTable(providers, current?.id, toolName));
3011
3021
  }
3012
3022
  async function handleCurrent(tool) {
3013
3023
  const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
3014
3024
  const current = manager.getCurrent();
3015
3025
  const toolName = tool === "claude" ? "Claude" : "Codex";
3016
3026
  if (!current) {
3017
- console.log(import_chalk2.default.yellow(`
3027
+ console.log(import_chalk3.default.yellow(`
3018
3028
  \u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 ${toolName} \u670D\u52A1\u5546
3019
3029
  `));
3020
3030
  return;
3021
3031
  }
3022
- console.log(import_chalk2.default.bold(`
3032
+ console.log(import_chalk3.default.bold(`
3023
3033
  \u{1F441}\uFE0F \u5F53\u524D ${toolName} \u670D\u52A1\u5546
3024
3034
  `));
3025
- console.log(` ${import_chalk2.default.green.bold(current.name)}`);
3026
- console.log(` ${import_chalk2.default.gray(current.baseUrl)}`);
3035
+ console.log(` ${import_chalk3.default.green.bold(current.name)}`);
3036
+ console.log(` ${import_chalk3.default.gray(current.baseUrl)}`);
3027
3037
  if (current.lastUsedAt) {
3028
3038
  const date = new Date(current.lastUsedAt).toLocaleString("zh-CN");
3029
- console.log(` ${import_chalk2.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3039
+ console.log(` ${import_chalk3.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3030
3040
  }
3031
3041
  console.log();
3032
3042
  }
@@ -3034,7 +3044,7 @@ async function handleEdit(tool) {
3034
3044
  const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
3035
3045
  const providers = manager.list();
3036
3046
  if (providers.length === 0) {
3037
- console.log(import_chalk2.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
3047
+ console.log(import_chalk3.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
3038
3048
  return;
3039
3049
  }
3040
3050
  const { providerId } = await import_inquirer.default.prompt([
@@ -3082,13 +3092,13 @@ async function handleEdit(tool) {
3082
3092
  baseUrl: answers.baseUrl,
3083
3093
  apiKey: answers.apiKey || void 0
3084
3094
  });
3085
- console.log(import_chalk2.default.green("\n\u2705 \u7F16\u8F91\u6210\u529F\n"));
3095
+ console.log(import_chalk3.default.green("\n\u2705 \u7F16\u8F91\u6210\u529F\n"));
3086
3096
  }
3087
3097
  async function handleClone(tool) {
3088
3098
  const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
3089
3099
  const providers = manager.list();
3090
3100
  if (providers.length === 0) {
3091
- console.log(import_chalk2.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
3101
+ console.log(import_chalk3.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
3092
3102
  return;
3093
3103
  }
3094
3104
  const { providerId } = await import_inquirer.default.prompt([
@@ -3124,16 +3134,16 @@ async function handleClone(tool) {
3124
3134
  baseUrl: provider.baseUrl,
3125
3135
  apiKey: answers.apiKey
3126
3136
  });
3127
- console.log(import_chalk2.default.green("\n\u2705 \u514B\u9686\u6210\u529F\n"));
3128
- console.log(` ${import_chalk2.default.bold(newProvider.name)}`);
3129
- console.log(` ${import_chalk2.default.gray(newProvider.baseUrl)}`);
3137
+ console.log(import_chalk3.default.green("\n\u2705 \u514B\u9686\u6210\u529F\n"));
3138
+ console.log(` ${import_chalk3.default.bold(newProvider.name)}`);
3139
+ console.log(` ${import_chalk3.default.gray(newProvider.baseUrl)}`);
3130
3140
  console.log();
3131
3141
  }
3132
3142
  async function handleRemove(tool) {
3133
3143
  const manager = tool === "codex" ? createCodexManager() : createClaudeManager();
3134
3144
  const providers = manager.list();
3135
3145
  if (providers.length === 0) {
3136
- console.log(import_chalk2.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
3146
+ console.log(import_chalk3.default.yellow("\n\u26A0\uFE0F \u6682\u65E0\u670D\u52A1\u5546\n"));
3137
3147
  return;
3138
3148
  }
3139
3149
  const { providerId } = await import_inquirer.default.prompt([
@@ -3158,11 +3168,11 @@ async function handleRemove(tool) {
3158
3168
  ]);
3159
3169
  if (confirm) {
3160
3170
  manager.remove(providerId);
3161
- console.log(import_chalk2.default.green(`
3171
+ console.log(import_chalk3.default.green(`
3162
3172
  \u2705 \u5DF2\u5220\u9664: ${provider.name}
3163
3173
  `));
3164
3174
  } else {
3165
- console.log(import_chalk2.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
3175
+ console.log(import_chalk3.default.gray("\n\u274C \u5DF2\u53D6\u6D88\n"));
3166
3176
  }
3167
3177
  }
3168
3178
 
@@ -3171,7 +3181,7 @@ function addCommand(program2) {
3171
3181
  program2.command("add").description("\u6DFB\u52A0\u65B0\u7684 Codex \u670D\u52A1\u5546(\u4EA4\u4E92\u5F0F)").action(async () => {
3172
3182
  try {
3173
3183
  const manager = createCodexManager();
3174
- console.log(import_chalk3.default.bold("\n\u{1F4DD} \u6DFB\u52A0 Codex \u670D\u52A1\u5546\n"));
3184
+ console.log(import_chalk4.default.bold("\n\u{1F4DD} \u6DFB\u52A0 Codex \u670D\u52A1\u5546\n"));
3175
3185
  const { usePreset } = await import_inquirer2.default.prompt([
3176
3186
  {
3177
3187
  type: "list",
@@ -3199,7 +3209,7 @@ function addCommand(program2) {
3199
3209
  }
3200
3210
  ]);
3201
3211
  const preset = CODEX_PRESETS.find((p) => p.name === presetName);
3202
- console.log(import_chalk3.default.blue(`
3212
+ console.log(import_chalk4.default.blue(`
3203
3213
  \u4F7F\u7528\u9884\u8BBE: ${preset.name} - ${preset.description}
3204
3214
  `));
3205
3215
  const input = await promptProviderForm({
@@ -3250,10 +3260,10 @@ function addCommand(program2) {
3250
3260
  }
3251
3261
  const provider = manager.add({ name, baseUrl, apiKey });
3252
3262
  console.log();
3253
- console.log(import_chalk3.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
3263
+ console.log(import_chalk4.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
3254
3264
  console.log();
3255
- console.log(` ${import_chalk3.default.bold(provider.name)} ${import_chalk3.default.blue("[Codex]")}`);
3256
- console.log(` ${import_chalk3.default.gray(provider.baseUrl)}`);
3265
+ console.log(` ${import_chalk4.default.bold(provider.name)} ${import_chalk4.default.blue("[Codex]")}`);
3266
+ console.log(` ${import_chalk4.default.gray(provider.baseUrl)}`);
3257
3267
  console.log();
3258
3268
  const { switchNow } = await import_inquirer2.default.prompt([
3259
3269
  {
@@ -3265,16 +3275,16 @@ function addCommand(program2) {
3265
3275
  ]);
3266
3276
  if (switchNow) {
3267
3277
  manager.switch(provider.id);
3268
- console.log(import_chalk3.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546"));
3278
+ console.log(import_chalk4.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546"));
3269
3279
  console.log();
3270
- console.log(import_chalk3.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3271
- console.log(import_chalk3.default.gray(` - ${getCodexConfigPath()}`));
3272
- console.log(import_chalk3.default.gray(` - ${getCodexAuthPath()}`));
3280
+ console.log(import_chalk4.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3281
+ console.log(import_chalk4.default.gray(` - ${getCodexConfigPath()}`));
3282
+ console.log(import_chalk4.default.gray(` - ${getCodexAuthPath()}`));
3273
3283
  } else {
3274
- console.log(import_chalk3.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk3.default.white(` ccman cx use "${provider.name}"`));
3284
+ console.log(import_chalk4.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk4.default.white(` ccman cx use "${provider.name}"`));
3275
3285
  }
3276
3286
  } catch (error) {
3277
- console.error(import_chalk3.default.red(`
3287
+ console.error(import_chalk4.default.red(`
3278
3288
  \u274C ${error.message}
3279
3289
  `));
3280
3290
  process.exit(1);
@@ -3283,7 +3293,7 @@ function addCommand(program2) {
3283
3293
  }
3284
3294
 
3285
3295
  // src/commands/codex/list.ts
3286
- var import_chalk4 = __toESM(require("chalk"));
3296
+ var import_chalk5 = __toESM(require("chalk"));
3287
3297
  function listCommand(program2) {
3288
3298
  program2.command("list").alias("ls").description("\u5217\u51FA\u6240\u6709 Codex \u670D\u52A1\u5546").action(async () => {
3289
3299
  try {
@@ -3291,33 +3301,15 @@ function listCommand(program2) {
3291
3301
  const providers = manager.list();
3292
3302
  const current = manager.getCurrent();
3293
3303
  if (providers.length === 0) {
3294
- console.log(import_chalk4.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3295
- console.log(import_chalk4.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk4.default.white(" ccman cx add\n"));
3304
+ console.log(import_chalk5.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3305
+ console.log(import_chalk5.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk5.default.white(" ccman cx add\n"));
3296
3306
  return;
3297
3307
  }
3298
- console.log(import_chalk4.default.bold(`
3299
- \u{1F4CB} Codex \u670D\u52A1\u5546\u5217\u8868 (\u5171 ${providers.length} \u4E2A)
3300
- `));
3301
- providers.forEach((p) => {
3302
- const isCurrent = current?.id === p.id;
3303
- const marker = isCurrent ? import_chalk4.default.green("\u25CF") : import_chalk4.default.gray("\u25CB");
3304
- const nameStyle = isCurrent ? import_chalk4.default.green.bold : import_chalk4.default.white;
3305
- console.log(`${marker} ${nameStyle(p.name)}`);
3306
- console.log(` ${import_chalk4.default.gray(p.baseUrl)}`);
3307
- if (p.lastUsedAt) {
3308
- const date = new Date(p.lastUsedAt).toLocaleString("zh-CN");
3309
- console.log(` ${import_chalk4.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3310
- }
3311
- console.log();
3312
- });
3313
- if (current) {
3314
- console.log(import_chalk4.default.green(`\u2705 \u5F53\u524D\u4F7F\u7528: ${current.name}
3315
- `));
3316
- } else {
3317
- console.log(import_chalk4.default.yellow("\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55\u670D\u52A1\u5546\n"));
3318
- }
3308
+ console.log(import_chalk5.default.bold(`
3309
+ \u{1F4CB} Codex \u670D\u52A1\u5546 (${providers.length} \u4E2A)`));
3310
+ console.log(formatProviderTable(providers, current?.id, "Codex"));
3319
3311
  } catch (error) {
3320
- console.error(import_chalk4.default.red(`
3312
+ console.error(import_chalk5.default.red(`
3321
3313
  \u274C ${error.message}
3322
3314
  `));
3323
3315
  process.exit(1);
@@ -3326,7 +3318,7 @@ function listCommand(program2) {
3326
3318
  }
3327
3319
 
3328
3320
  // src/commands/codex/use.ts
3329
- var import_chalk5 = __toESM(require("chalk"));
3321
+ var import_chalk6 = __toESM(require("chalk"));
3330
3322
  var import_inquirer3 = __toESM(require("inquirer"));
3331
3323
  function useCommand(program2) {
3332
3324
  program2.command("use [name]").description("\u5207\u6362 Codex \u670D\u52A1\u5546").action(async (name) => {
@@ -3334,8 +3326,8 @@ function useCommand(program2) {
3334
3326
  const manager = createCodexManager();
3335
3327
  const providers = manager.list();
3336
3328
  if (providers.length === 0) {
3337
- console.log(import_chalk5.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3338
- console.log(import_chalk5.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk5.default.white(" ccman cx add\n"));
3329
+ console.log(import_chalk6.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3330
+ console.log(import_chalk6.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk6.default.white(" ccman cx add\n"));
3339
3331
  return;
3340
3332
  }
3341
3333
  let targetId;
@@ -3362,23 +3354,23 @@ function useCommand(program2) {
3362
3354
  manager.switch(targetId);
3363
3355
  const provider = manager.get(targetId);
3364
3356
  console.log();
3365
- console.log(import_chalk5.default.green("\u2705 \u5207\u6362\u6210\u529F"));
3357
+ console.log(import_chalk6.default.green("\u2705 \u5207\u6362\u6210\u529F"));
3366
3358
  console.log();
3367
- console.log(` ${import_chalk5.default.bold(provider.name)} ${import_chalk5.default.blue("[Codex]")}`);
3368
- console.log(` ${import_chalk5.default.gray(`URL: ${provider.baseUrl}`)}`);
3359
+ console.log(` ${import_chalk6.default.bold(provider.name)} ${import_chalk6.default.blue("[Codex]")}`);
3360
+ console.log(` ${import_chalk6.default.gray(`URL: ${provider.baseUrl}`)}`);
3369
3361
  console.log();
3370
- console.log(import_chalk5.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3371
- console.log(import_chalk5.default.gray(` - ${getCodexConfigPath()}`));
3372
- console.log(import_chalk5.default.gray(` - ${getCodexAuthPath()}`));
3362
+ console.log(import_chalk6.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3363
+ console.log(import_chalk6.default.gray(` - ${getCodexConfigPath()}`));
3364
+ console.log(import_chalk6.default.gray(` - ${getCodexAuthPath()}`));
3373
3365
  console.log();
3374
3366
  } catch (error) {
3375
3367
  if (error instanceof ProviderNotFoundError) {
3376
- console.error(import_chalk5.default.red(`
3368
+ console.error(import_chalk6.default.red(`
3377
3369
  \u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728: ${error.message}
3378
3370
  `));
3379
- console.log(import_chalk5.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk5.default.white(" ccman cx list\n"));
3371
+ console.log(import_chalk6.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk6.default.white(" ccman cx list\n"));
3380
3372
  } else {
3381
- console.error(import_chalk5.default.red(`
3373
+ console.error(import_chalk6.default.red(`
3382
3374
  \u274C ${error.message}
3383
3375
  `));
3384
3376
  }
@@ -3388,28 +3380,28 @@ function useCommand(program2) {
3388
3380
  }
3389
3381
 
3390
3382
  // src/commands/codex/current.ts
3391
- var import_chalk6 = __toESM(require("chalk"));
3383
+ var import_chalk7 = __toESM(require("chalk"));
3392
3384
  function currentCommand(program2) {
3393
3385
  program2.command("current").description("\u663E\u793A\u5F53\u524D\u4F7F\u7528\u7684 Codex \u670D\u52A1\u5546").action(async () => {
3394
3386
  try {
3395
3387
  const manager = createCodexManager();
3396
3388
  const current = manager.getCurrent();
3397
3389
  if (!current) {
3398
- console.log(import_chalk6.default.yellow("\n\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 Codex \u670D\u52A1\u5546\n"));
3399
- console.log(import_chalk6.default.blue("\u{1F4A1} \u9009\u62E9\u670D\u52A1\u5546:") + import_chalk6.default.white(" ccman cx use\n"));
3390
+ console.log(import_chalk7.default.yellow("\n\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 Codex \u670D\u52A1\u5546\n"));
3391
+ console.log(import_chalk7.default.blue("\u{1F4A1} \u9009\u62E9\u670D\u52A1\u5546:") + import_chalk7.default.white(" ccman cx use\n"));
3400
3392
  return;
3401
3393
  }
3402
- console.log(import_chalk6.default.bold("\n\u{1F4CD} \u5F53\u524D Codex \u670D\u52A1\u5546\n"));
3403
- console.log(` ${import_chalk6.default.green.bold(current.name)}`);
3404
- console.log(` ${import_chalk6.default.gray(`ID: ${current.id}`)}`);
3405
- console.log(` ${import_chalk6.default.gray(`URL: ${current.baseUrl}`)}`);
3394
+ console.log(import_chalk7.default.bold("\n\u{1F4CD} \u5F53\u524D Codex \u670D\u52A1\u5546\n"));
3395
+ console.log(` ${import_chalk7.default.green.bold(current.name)}`);
3396
+ console.log(` ${import_chalk7.default.gray(`ID: ${current.id}`)}`);
3397
+ console.log(` ${import_chalk7.default.gray(`URL: ${current.baseUrl}`)}`);
3406
3398
  if (current.lastUsedAt) {
3407
3399
  const date = new Date(current.lastUsedAt).toLocaleString("zh-CN");
3408
- console.log(` ${import_chalk6.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3400
+ console.log(` ${import_chalk7.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3409
3401
  }
3410
3402
  console.log();
3411
3403
  } catch (error) {
3412
- console.error(import_chalk6.default.red(`
3404
+ console.error(import_chalk7.default.red(`
3413
3405
  \u274C ${error.message}
3414
3406
  `));
3415
3407
  process.exit(1);
@@ -3418,7 +3410,7 @@ function currentCommand(program2) {
3418
3410
  }
3419
3411
 
3420
3412
  // src/commands/codex/remove.ts
3421
- var import_chalk7 = __toESM(require("chalk"));
3413
+ var import_chalk8 = __toESM(require("chalk"));
3422
3414
  var import_inquirer4 = __toESM(require("inquirer"));
3423
3415
  function removeCommand(program2) {
3424
3416
  program2.command("remove [name]").alias("rm").description("\u5220\u9664 Codex \u670D\u52A1\u5546").action(async (name) => {
@@ -3426,7 +3418,7 @@ function removeCommand(program2) {
3426
3418
  const manager = createCodexManager();
3427
3419
  const providers = manager.list();
3428
3420
  if (providers.length === 0) {
3429
- console.log(import_chalk7.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3421
+ console.log(import_chalk8.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3430
3422
  return;
3431
3423
  }
3432
3424
  let targetId;
@@ -3463,21 +3455,21 @@ function removeCommand(program2) {
3463
3455
  }
3464
3456
  ]);
3465
3457
  if (!confirmed) {
3466
- console.log(import_chalk7.default.gray("\n\u5DF2\u53D6\u6D88\n"));
3458
+ console.log(import_chalk8.default.gray("\n\u5DF2\u53D6\u6D88\n"));
3467
3459
  return;
3468
3460
  }
3469
3461
  manager.remove(targetId);
3470
3462
  console.log();
3471
- console.log(import_chalk7.default.green(`\u2705 \u5DF2\u5220\u9664: ${targetName}`));
3463
+ console.log(import_chalk8.default.green(`\u2705 \u5DF2\u5220\u9664: ${targetName}`));
3472
3464
  console.log();
3473
3465
  } catch (error) {
3474
3466
  if (error instanceof ProviderNotFoundError) {
3475
- console.error(import_chalk7.default.red(`
3467
+ console.error(import_chalk8.default.red(`
3476
3468
  \u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728
3477
3469
  `));
3478
- console.log(import_chalk7.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk7.default.white(" ccman cx list\n"));
3470
+ console.log(import_chalk8.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk8.default.white(" ccman cx list\n"));
3479
3471
  } else {
3480
- console.error(import_chalk7.default.red(`
3472
+ console.error(import_chalk8.default.red(`
3481
3473
  \u274C ${error.message}
3482
3474
  `));
3483
3475
  }
@@ -3487,7 +3479,7 @@ function removeCommand(program2) {
3487
3479
  }
3488
3480
 
3489
3481
  // src/commands/codex/edit.ts
3490
- var import_chalk8 = __toESM(require("chalk"));
3482
+ var import_chalk9 = __toESM(require("chalk"));
3491
3483
  var import_inquirer5 = __toESM(require("inquirer"));
3492
3484
  function editCommand(program2) {
3493
3485
  program2.command("edit [name]").description("\u7F16\u8F91 Codex \u670D\u52A1\u5546").action(async (name) => {
@@ -3495,7 +3487,7 @@ function editCommand(program2) {
3495
3487
  const manager = createCodexManager();
3496
3488
  const providers = manager.list();
3497
3489
  if (providers.length === 0) {
3498
- console.log(import_chalk8.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3490
+ console.log(import_chalk9.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3499
3491
  return;
3500
3492
  }
3501
3493
  let targetId;
@@ -3520,8 +3512,8 @@ function editCommand(program2) {
3520
3512
  targetId = selectedId;
3521
3513
  }
3522
3514
  const provider = manager.get(targetId);
3523
- console.log(import_chalk8.default.bold("\n\u270F\uFE0F \u7F16\u8F91\u670D\u52A1\u5546\n"));
3524
- console.log(import_chalk8.default.gray("\u63D0\u793A: \u7559\u7A7A\u5219\u4FDD\u6301\u539F\u503C\n"));
3515
+ console.log(import_chalk9.default.bold("\n\u270F\uFE0F \u7F16\u8F91\u670D\u52A1\u5546\n"));
3516
+ console.log(import_chalk9.default.gray("\u63D0\u793A: \u7559\u7A7A\u5219\u4FDD\u6301\u539F\u503C\n"));
3525
3517
  const answers = await import_inquirer5.default.prompt([
3526
3518
  {
3527
3519
  type: "input",
@@ -3553,19 +3545,19 @@ function editCommand(program2) {
3553
3545
  if (answers.baseUrl && answers.baseUrl !== provider.baseUrl) updates.baseUrl = answers.baseUrl;
3554
3546
  if (answers.apiKey) updates.apiKey = answers.apiKey;
3555
3547
  if (Object.keys(updates).length === 0) {
3556
- console.log(import_chalk8.default.gray("\n\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\n"));
3548
+ console.log(import_chalk9.default.gray("\n\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\n"));
3557
3549
  return;
3558
3550
  }
3559
3551
  const updated = manager.edit(targetId, updates);
3560
3552
  console.log();
3561
- console.log(import_chalk8.default.green("\u2705 \u7F16\u8F91\u6210\u529F"));
3553
+ console.log(import_chalk9.default.green("\u2705 \u7F16\u8F91\u6210\u529F"));
3562
3554
  console.log();
3563
- console.log(` ${import_chalk8.default.bold(updated.name)} ${import_chalk8.default.blue("[Codex]")}`);
3564
- console.log(` ${import_chalk8.default.gray(`ID: ${updated.id}`)}`);
3565
- console.log(` ${import_chalk8.default.gray(`URL: ${updated.baseUrl}`)}`);
3555
+ console.log(` ${import_chalk9.default.bold(updated.name)} ${import_chalk9.default.blue("[Codex]")}`);
3556
+ console.log(` ${import_chalk9.default.gray(`ID: ${updated.id}`)}`);
3557
+ console.log(` ${import_chalk9.default.gray(`URL: ${updated.baseUrl}`)}`);
3566
3558
  console.log();
3567
3559
  } catch (error) {
3568
- console.error(import_chalk8.default.red(`
3560
+ console.error(import_chalk9.default.red(`
3569
3561
  \u274C ${error.message}
3570
3562
  `));
3571
3563
  process.exit(1);
@@ -3574,7 +3566,7 @@ function editCommand(program2) {
3574
3566
  }
3575
3567
 
3576
3568
  // src/commands/codex/clone.ts
3577
- var import_chalk9 = __toESM(require("chalk"));
3569
+ var import_chalk10 = __toESM(require("chalk"));
3578
3570
  var import_inquirer6 = __toESM(require("inquirer"));
3579
3571
  function cloneCommand(program2) {
3580
3572
  program2.command("clone [source-name] [new-name]").description("\u514B\u9686 Codex \u670D\u52A1\u5546").action(async (sourceName, newName) => {
@@ -3582,7 +3574,7 @@ function cloneCommand(program2) {
3582
3574
  const manager = createCodexManager();
3583
3575
  const providers = manager.list();
3584
3576
  if (providers.length === 0) {
3585
- console.log(import_chalk9.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3577
+ console.log(import_chalk10.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Codex \u670D\u52A1\u5546\n"));
3586
3578
  return;
3587
3579
  }
3588
3580
  let sourceId;
@@ -3611,7 +3603,7 @@ function cloneCommand(program2) {
3611
3603
  if (newName) {
3612
3604
  cloned = manager.clone(sourceId, newName);
3613
3605
  } else {
3614
- console.log(import_chalk9.default.blue(`
3606
+ console.log(import_chalk10.default.blue(`
3615
3607
  \u514B\u9686\u81EA: ${source.name}
3616
3608
  `));
3617
3609
  const input = await promptProviderForm({
@@ -3622,14 +3614,14 @@ function cloneCommand(program2) {
3622
3614
  cloned = manager.add(input);
3623
3615
  }
3624
3616
  console.log();
3625
- console.log(import_chalk9.default.green("\u2705 \u514B\u9686\u6210\u529F"));
3617
+ console.log(import_chalk10.default.green("\u2705 \u514B\u9686\u6210\u529F"));
3626
3618
  console.log();
3627
- console.log(` ${import_chalk9.default.bold(cloned.name)} ${import_chalk9.default.blue("[Codex]")}`);
3628
- console.log(` ${import_chalk9.default.gray(`ID: ${cloned.id}`)}`);
3629
- console.log(` ${import_chalk9.default.gray(`URL: ${cloned.baseUrl}`)}`);
3619
+ console.log(` ${import_chalk10.default.bold(cloned.name)} ${import_chalk10.default.blue("[Codex]")}`);
3620
+ console.log(` ${import_chalk10.default.gray(`ID: ${cloned.id}`)}`);
3621
+ console.log(` ${import_chalk10.default.gray(`URL: ${cloned.baseUrl}`)}`);
3630
3622
  console.log();
3631
3623
  } catch (error) {
3632
- console.error(import_chalk9.default.red(`
3624
+ console.error(import_chalk10.default.red(`
3633
3625
  \u274C ${error.message}
3634
3626
  `));
3635
3627
  process.exit(1);
@@ -3649,13 +3641,13 @@ function createCodexCommands(program2) {
3649
3641
  }
3650
3642
 
3651
3643
  // src/commands/claude/add.ts
3652
- var import_chalk10 = __toESM(require("chalk"));
3644
+ var import_chalk11 = __toESM(require("chalk"));
3653
3645
  var import_inquirer7 = __toESM(require("inquirer"));
3654
3646
  function addCommand2(program2) {
3655
3647
  program2.command("add").description("\u6DFB\u52A0\u65B0\u7684 Claude Code \u670D\u52A1\u5546(\u4EA4\u4E92\u5F0F)").action(async () => {
3656
3648
  try {
3657
3649
  const manager = createClaudeManager();
3658
- console.log(import_chalk10.default.bold("\n\u{1F4DD} \u6DFB\u52A0 Claude Code \u670D\u52A1\u5546\n"));
3650
+ console.log(import_chalk11.default.bold("\n\u{1F4DD} \u6DFB\u52A0 Claude Code \u670D\u52A1\u5546\n"));
3659
3651
  const { usePreset } = await import_inquirer7.default.prompt([
3660
3652
  {
3661
3653
  type: "list",
@@ -3683,7 +3675,7 @@ function addCommand2(program2) {
3683
3675
  }
3684
3676
  ]);
3685
3677
  const preset = CC_PRESETS.find((p) => p.name === presetName);
3686
- console.log(import_chalk10.default.blue(`
3678
+ console.log(import_chalk11.default.blue(`
3687
3679
  \u4F7F\u7528\u9884\u8BBE: ${preset.name} - ${preset.description}
3688
3680
  `));
3689
3681
  const input = await promptProviderForm({
@@ -3734,10 +3726,10 @@ function addCommand2(program2) {
3734
3726
  }
3735
3727
  const provider = manager.add({ name, baseUrl, apiKey });
3736
3728
  console.log();
3737
- console.log(import_chalk10.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
3729
+ console.log(import_chalk11.default.green("\u2705 \u6DFB\u52A0\u6210\u529F"));
3738
3730
  console.log();
3739
- console.log(` ${import_chalk10.default.bold(provider.name)} ${import_chalk10.default.blue("[Claude Code]")}`);
3740
- console.log(` ${import_chalk10.default.gray(provider.baseUrl)}`);
3731
+ console.log(` ${import_chalk11.default.bold(provider.name)} ${import_chalk11.default.blue("[Claude Code]")}`);
3732
+ console.log(` ${import_chalk11.default.gray(provider.baseUrl)}`);
3741
3733
  console.log();
3742
3734
  const { switchNow } = await import_inquirer7.default.prompt([
3743
3735
  {
@@ -3749,15 +3741,15 @@ function addCommand2(program2) {
3749
3741
  ]);
3750
3742
  if (switchNow) {
3751
3743
  manager.switch(provider.id);
3752
- console.log(import_chalk10.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546"));
3744
+ console.log(import_chalk11.default.green("\u2705 \u5DF2\u5207\u6362\u5230\u65B0\u670D\u52A1\u5546"));
3753
3745
  console.log();
3754
- console.log(import_chalk10.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3755
- console.log(import_chalk10.default.gray(` - ${getClaudeConfigPath()}`));
3746
+ console.log(import_chalk11.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3747
+ console.log(import_chalk11.default.gray(` - ${getClaudeConfigPath()}`));
3756
3748
  } else {
3757
- console.log(import_chalk10.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk10.default.white(` ccman cc use "${provider.name}"`));
3749
+ console.log(import_chalk11.default.blue("\u{1F4A1} \u7A0D\u540E\u5207\u6362:") + import_chalk11.default.white(` ccman cc use "${provider.name}"`));
3758
3750
  }
3759
3751
  } catch (error) {
3760
- console.error(import_chalk10.default.red(`
3752
+ console.error(import_chalk11.default.red(`
3761
3753
  \u274C ${error.message}
3762
3754
  `));
3763
3755
  process.exit(1);
@@ -3766,7 +3758,7 @@ function addCommand2(program2) {
3766
3758
  }
3767
3759
 
3768
3760
  // src/commands/claude/list.ts
3769
- var import_chalk11 = __toESM(require("chalk"));
3761
+ var import_chalk12 = __toESM(require("chalk"));
3770
3762
  function listCommand2(program2) {
3771
3763
  program2.command("list").alias("ls").description("\u5217\u51FA\u6240\u6709 Claude Code \u670D\u52A1\u5546").action(async () => {
3772
3764
  try {
@@ -3774,33 +3766,15 @@ function listCommand2(program2) {
3774
3766
  const providers = manager.list();
3775
3767
  const current = manager.getCurrent();
3776
3768
  if (providers.length === 0) {
3777
- console.log(import_chalk11.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3778
- console.log(import_chalk11.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk11.default.white(" ccman cc add\n"));
3769
+ console.log(import_chalk12.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3770
+ console.log(import_chalk12.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk12.default.white(" ccman cc add\n"));
3779
3771
  return;
3780
3772
  }
3781
- console.log(import_chalk11.default.bold(`
3782
- \u{1F4CB} Claude Code \u670D\u52A1\u5546\u5217\u8868 (\u5171 ${providers.length} \u4E2A)
3783
- `));
3784
- providers.forEach((p) => {
3785
- const isCurrent = current?.id === p.id;
3786
- const marker = isCurrent ? import_chalk11.default.green("\u25CF") : import_chalk11.default.gray("\u25CB");
3787
- const nameStyle = isCurrent ? import_chalk11.default.green.bold : import_chalk11.default.white;
3788
- console.log(`${marker} ${nameStyle(p.name)}`);
3789
- console.log(` ${import_chalk11.default.gray(p.baseUrl)}`);
3790
- if (p.lastUsedAt) {
3791
- const date = new Date(p.lastUsedAt).toLocaleString("zh-CN");
3792
- console.log(` ${import_chalk11.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3793
- }
3794
- console.log();
3795
- });
3796
- if (current) {
3797
- console.log(import_chalk11.default.green(`\u2705 \u5F53\u524D\u4F7F\u7528: ${current.name}
3798
- `));
3799
- } else {
3800
- console.log(import_chalk11.default.yellow("\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55\u670D\u52A1\u5546\n"));
3801
- }
3773
+ console.log(import_chalk12.default.bold(`
3774
+ \u{1F4CB} Claude Code \u670D\u52A1\u5546 (${providers.length} \u4E2A)`));
3775
+ console.log(formatProviderTable(providers, current?.id, "Claude Code"));
3802
3776
  } catch (error) {
3803
- console.error(import_chalk11.default.red(`
3777
+ console.error(import_chalk12.default.red(`
3804
3778
  \u274C ${error.message}
3805
3779
  `));
3806
3780
  process.exit(1);
@@ -3809,7 +3783,7 @@ function listCommand2(program2) {
3809
3783
  }
3810
3784
 
3811
3785
  // src/commands/claude/use.ts
3812
- var import_chalk12 = __toESM(require("chalk"));
3786
+ var import_chalk13 = __toESM(require("chalk"));
3813
3787
  var import_inquirer8 = __toESM(require("inquirer"));
3814
3788
  function useCommand2(program2) {
3815
3789
  program2.command("use [name]").description("\u5207\u6362 Claude Code \u670D\u52A1\u5546").action(async (name) => {
@@ -3817,8 +3791,8 @@ function useCommand2(program2) {
3817
3791
  const manager = createClaudeManager();
3818
3792
  const providers = manager.list();
3819
3793
  if (providers.length === 0) {
3820
- console.log(import_chalk12.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3821
- console.log(import_chalk12.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk12.default.white(" ccman cc add\n"));
3794
+ console.log(import_chalk13.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3795
+ console.log(import_chalk13.default.blue("\u{1F4A1} \u6DFB\u52A0\u670D\u52A1\u5546:") + import_chalk13.default.white(" ccman cc add\n"));
3822
3796
  return;
3823
3797
  }
3824
3798
  let targetId;
@@ -3845,22 +3819,22 @@ function useCommand2(program2) {
3845
3819
  manager.switch(targetId);
3846
3820
  const provider = manager.get(targetId);
3847
3821
  console.log();
3848
- console.log(import_chalk12.default.green("\u2705 \u5207\u6362\u6210\u529F"));
3822
+ console.log(import_chalk13.default.green("\u2705 \u5207\u6362\u6210\u529F"));
3849
3823
  console.log();
3850
- console.log(` ${import_chalk12.default.bold(provider.name)} ${import_chalk12.default.blue("[Claude Code]")}`);
3851
- console.log(` ${import_chalk12.default.gray(`URL: ${provider.baseUrl}`)}`);
3824
+ console.log(` ${import_chalk13.default.bold(provider.name)} ${import_chalk13.default.blue("[Claude Code]")}`);
3825
+ console.log(` ${import_chalk13.default.gray(`URL: ${provider.baseUrl}`)}`);
3852
3826
  console.log();
3853
- console.log(import_chalk12.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3854
- console.log(import_chalk12.default.gray(` - ${getClaudeConfigPath()}`));
3827
+ console.log(import_chalk13.default.gray("\u914D\u7F6E\u5DF2\u66F4\u65B0:"));
3828
+ console.log(import_chalk13.default.gray(` - ${getClaudeConfigPath()}`));
3855
3829
  console.log();
3856
3830
  } catch (error) {
3857
3831
  if (error instanceof ProviderNotFoundError) {
3858
- console.error(import_chalk12.default.red(`
3832
+ console.error(import_chalk13.default.red(`
3859
3833
  \u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728: ${error.message}
3860
3834
  `));
3861
- console.log(import_chalk12.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk12.default.white(" ccman cc list\n"));
3835
+ console.log(import_chalk13.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk13.default.white(" ccman cc list\n"));
3862
3836
  } else {
3863
- console.error(import_chalk12.default.red(`
3837
+ console.error(import_chalk13.default.red(`
3864
3838
  \u274C ${error.message}
3865
3839
  `));
3866
3840
  }
@@ -3870,28 +3844,28 @@ function useCommand2(program2) {
3870
3844
  }
3871
3845
 
3872
3846
  // src/commands/claude/current.ts
3873
- var import_chalk13 = __toESM(require("chalk"));
3847
+ var import_chalk14 = __toESM(require("chalk"));
3874
3848
  function currentCommand2(program2) {
3875
3849
  program2.command("current").description("\u663E\u793A\u5F53\u524D\u4F7F\u7528\u7684 Claude Code \u670D\u52A1\u5546").action(async () => {
3876
3850
  try {
3877
3851
  const manager = createClaudeManager();
3878
3852
  const current = manager.getCurrent();
3879
3853
  if (!current) {
3880
- console.log(import_chalk13.default.yellow("\n\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 Claude Code \u670D\u52A1\u5546\n"));
3881
- console.log(import_chalk13.default.blue("\u{1F4A1} \u9009\u62E9\u670D\u52A1\u5546:") + import_chalk13.default.white(" ccman cc use\n"));
3854
+ console.log(import_chalk14.default.yellow("\n\u26A0\uFE0F \u672A\u9009\u62E9\u4EFB\u4F55 Claude Code \u670D\u52A1\u5546\n"));
3855
+ console.log(import_chalk14.default.blue("\u{1F4A1} \u9009\u62E9\u670D\u52A1\u5546:") + import_chalk14.default.white(" ccman cc use\n"));
3882
3856
  return;
3883
3857
  }
3884
- console.log(import_chalk13.default.bold("\n\u{1F4CD} \u5F53\u524D Claude Code \u670D\u52A1\u5546\n"));
3885
- console.log(` ${import_chalk13.default.green.bold(current.name)}`);
3886
- console.log(` ${import_chalk13.default.gray(`ID: ${current.id}`)}`);
3887
- console.log(` ${import_chalk13.default.gray(`URL: ${current.baseUrl}`)}`);
3858
+ console.log(import_chalk14.default.bold("\n\u{1F4CD} \u5F53\u524D Claude Code \u670D\u52A1\u5546\n"));
3859
+ console.log(` ${import_chalk14.default.green.bold(current.name)}`);
3860
+ console.log(` ${import_chalk14.default.gray(`ID: ${current.id}`)}`);
3861
+ console.log(` ${import_chalk14.default.gray(`URL: ${current.baseUrl}`)}`);
3888
3862
  if (current.lastUsedAt) {
3889
3863
  const date = new Date(current.lastUsedAt).toLocaleString("zh-CN");
3890
- console.log(` ${import_chalk13.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3864
+ console.log(` ${import_chalk14.default.gray(`\u6700\u540E\u4F7F\u7528: ${date}`)}`);
3891
3865
  }
3892
3866
  console.log();
3893
3867
  } catch (error) {
3894
- console.error(import_chalk13.default.red(`
3868
+ console.error(import_chalk14.default.red(`
3895
3869
  \u274C ${error.message}
3896
3870
  `));
3897
3871
  process.exit(1);
@@ -3900,7 +3874,7 @@ function currentCommand2(program2) {
3900
3874
  }
3901
3875
 
3902
3876
  // src/commands/claude/remove.ts
3903
- var import_chalk14 = __toESM(require("chalk"));
3877
+ var import_chalk15 = __toESM(require("chalk"));
3904
3878
  var import_inquirer9 = __toESM(require("inquirer"));
3905
3879
  function removeCommand2(program2) {
3906
3880
  program2.command("remove [name]").alias("rm").description("\u5220\u9664 Claude Code \u670D\u52A1\u5546").action(async (name) => {
@@ -3908,7 +3882,7 @@ function removeCommand2(program2) {
3908
3882
  const manager = createClaudeManager();
3909
3883
  const providers = manager.list();
3910
3884
  if (providers.length === 0) {
3911
- console.log(import_chalk14.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3885
+ console.log(import_chalk15.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3912
3886
  return;
3913
3887
  }
3914
3888
  let targetId;
@@ -3945,21 +3919,21 @@ function removeCommand2(program2) {
3945
3919
  }
3946
3920
  ]);
3947
3921
  if (!confirmed) {
3948
- console.log(import_chalk14.default.gray("\n\u5DF2\u53D6\u6D88\n"));
3922
+ console.log(import_chalk15.default.gray("\n\u5DF2\u53D6\u6D88\n"));
3949
3923
  return;
3950
3924
  }
3951
3925
  manager.remove(targetId);
3952
3926
  console.log();
3953
- console.log(import_chalk14.default.green(`\u2705 \u5DF2\u5220\u9664: ${targetName}`));
3927
+ console.log(import_chalk15.default.green(`\u2705 \u5DF2\u5220\u9664: ${targetName}`));
3954
3928
  console.log();
3955
3929
  } catch (error) {
3956
3930
  if (error instanceof ProviderNotFoundError) {
3957
- console.error(import_chalk14.default.red(`
3931
+ console.error(import_chalk15.default.red(`
3958
3932
  \u274C \u670D\u52A1\u5546\u4E0D\u5B58\u5728
3959
3933
  `));
3960
- console.log(import_chalk14.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk14.default.white(" ccman cc list\n"));
3934
+ console.log(import_chalk15.default.blue("\u{1F4A1} \u67E5\u770B\u6240\u6709\u670D\u52A1\u5546:") + import_chalk15.default.white(" ccman cc list\n"));
3961
3935
  } else {
3962
- console.error(import_chalk14.default.red(`
3936
+ console.error(import_chalk15.default.red(`
3963
3937
  \u274C ${error.message}
3964
3938
  `));
3965
3939
  }
@@ -3969,7 +3943,7 @@ function removeCommand2(program2) {
3969
3943
  }
3970
3944
 
3971
3945
  // src/commands/claude/edit.ts
3972
- var import_chalk15 = __toESM(require("chalk"));
3946
+ var import_chalk16 = __toESM(require("chalk"));
3973
3947
  var import_inquirer10 = __toESM(require("inquirer"));
3974
3948
  function editCommand2(program2) {
3975
3949
  program2.command("edit [name]").description("\u7F16\u8F91 Claude Code \u670D\u52A1\u5546").action(async (name) => {
@@ -3977,7 +3951,7 @@ function editCommand2(program2) {
3977
3951
  const manager = createClaudeManager();
3978
3952
  const providers = manager.list();
3979
3953
  if (providers.length === 0) {
3980
- console.log(import_chalk15.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3954
+ console.log(import_chalk16.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
3981
3955
  return;
3982
3956
  }
3983
3957
  let targetId;
@@ -4002,8 +3976,8 @@ function editCommand2(program2) {
4002
3976
  targetId = selectedId;
4003
3977
  }
4004
3978
  const provider = manager.get(targetId);
4005
- console.log(import_chalk15.default.bold("\n\u270F\uFE0F \u7F16\u8F91\u670D\u52A1\u5546\n"));
4006
- console.log(import_chalk15.default.gray("\u63D0\u793A: \u7559\u7A7A\u5219\u4FDD\u6301\u539F\u503C\n"));
3979
+ console.log(import_chalk16.default.bold("\n\u270F\uFE0F \u7F16\u8F91\u670D\u52A1\u5546\n"));
3980
+ console.log(import_chalk16.default.gray("\u63D0\u793A: \u7559\u7A7A\u5219\u4FDD\u6301\u539F\u503C\n"));
4007
3981
  const answers = await import_inquirer10.default.prompt([
4008
3982
  {
4009
3983
  type: "input",
@@ -4035,19 +4009,19 @@ function editCommand2(program2) {
4035
4009
  if (answers.baseUrl && answers.baseUrl !== provider.baseUrl) updates.baseUrl = answers.baseUrl;
4036
4010
  if (answers.apiKey) updates.apiKey = answers.apiKey;
4037
4011
  if (Object.keys(updates).length === 0) {
4038
- console.log(import_chalk15.default.gray("\n\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\n"));
4012
+ console.log(import_chalk16.default.gray("\n\u672A\u505A\u4EFB\u4F55\u4FEE\u6539\n"));
4039
4013
  return;
4040
4014
  }
4041
4015
  const updated = manager.edit(targetId, updates);
4042
4016
  console.log();
4043
- console.log(import_chalk15.default.green("\u2705 \u7F16\u8F91\u6210\u529F"));
4017
+ console.log(import_chalk16.default.green("\u2705 \u7F16\u8F91\u6210\u529F"));
4044
4018
  console.log();
4045
- console.log(` ${import_chalk15.default.bold(updated.name)} ${import_chalk15.default.blue("[Claude Code]")}`);
4046
- console.log(` ${import_chalk15.default.gray(`ID: ${updated.id}`)}`);
4047
- console.log(` ${import_chalk15.default.gray(`URL: ${updated.baseUrl}`)}`);
4019
+ console.log(` ${import_chalk16.default.bold(updated.name)} ${import_chalk16.default.blue("[Claude Code]")}`);
4020
+ console.log(` ${import_chalk16.default.gray(`ID: ${updated.id}`)}`);
4021
+ console.log(` ${import_chalk16.default.gray(`URL: ${updated.baseUrl}`)}`);
4048
4022
  console.log();
4049
4023
  } catch (error) {
4050
- console.error(import_chalk15.default.red(`
4024
+ console.error(import_chalk16.default.red(`
4051
4025
  \u274C ${error.message}
4052
4026
  `));
4053
4027
  process.exit(1);
@@ -4056,7 +4030,7 @@ function editCommand2(program2) {
4056
4030
  }
4057
4031
 
4058
4032
  // src/commands/claude/clone.ts
4059
- var import_chalk16 = __toESM(require("chalk"));
4033
+ var import_chalk17 = __toESM(require("chalk"));
4060
4034
  var import_inquirer11 = __toESM(require("inquirer"));
4061
4035
  function cloneCommand2(program2) {
4062
4036
  program2.command("clone [source-name] [new-name]").description("\u514B\u9686 Claude Code \u670D\u52A1\u5546").action(async (sourceName, newName) => {
@@ -4064,7 +4038,7 @@ function cloneCommand2(program2) {
4064
4038
  const manager = createClaudeManager();
4065
4039
  const providers = manager.list();
4066
4040
  if (providers.length === 0) {
4067
- console.log(import_chalk16.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
4041
+ console.log(import_chalk17.default.yellow("\n\u26A0\uFE0F \u6682\u65E0 Claude Code \u670D\u52A1\u5546\n"));
4068
4042
  return;
4069
4043
  }
4070
4044
  let sourceId;
@@ -4093,7 +4067,7 @@ function cloneCommand2(program2) {
4093
4067
  if (newName) {
4094
4068
  cloned = manager.clone(sourceId, newName);
4095
4069
  } else {
4096
- console.log(import_chalk16.default.blue(`
4070
+ console.log(import_chalk17.default.blue(`
4097
4071
  \u514B\u9686\u81EA: ${source.name}
4098
4072
  `));
4099
4073
  const input = await promptProviderForm({
@@ -4104,14 +4078,14 @@ function cloneCommand2(program2) {
4104
4078
  cloned = manager.add(input);
4105
4079
  }
4106
4080
  console.log();
4107
- console.log(import_chalk16.default.green("\u2705 \u514B\u9686\u6210\u529F"));
4081
+ console.log(import_chalk17.default.green("\u2705 \u514B\u9686\u6210\u529F"));
4108
4082
  console.log();
4109
- console.log(` ${import_chalk16.default.bold(cloned.name)} ${import_chalk16.default.blue("[Claude Code]")}`);
4110
- console.log(` ${import_chalk16.default.gray(`ID: ${cloned.id}`)}`);
4111
- console.log(` ${import_chalk16.default.gray(`URL: ${cloned.baseUrl}`)}`);
4083
+ console.log(` ${import_chalk17.default.bold(cloned.name)} ${import_chalk17.default.blue("[Claude Code]")}`);
4084
+ console.log(` ${import_chalk17.default.gray(`ID: ${cloned.id}`)}`);
4085
+ console.log(` ${import_chalk17.default.gray(`URL: ${cloned.baseUrl}`)}`);
4112
4086
  console.log();
4113
4087
  } catch (error) {
4114
- console.error(import_chalk16.default.red(`
4088
+ console.error(import_chalk17.default.red(`
4115
4089
  \u274C ${error.message}
4116
4090
  `));
4117
4091
  process.exit(1);
@@ -4132,10 +4106,10 @@ function createClaudeCommands(program2) {
4132
4106
 
4133
4107
  // src/index.ts
4134
4108
  if (process.env.NODE_ENV === "development") {
4135
- console.log(import_chalk17.default.gray("\n[\u5F00\u53D1\u6A21\u5F0F] \u914D\u7F6E\u76EE\u5F55:"));
4136
- console.log(import_chalk17.default.gray(` ccman: ${getCcmanDir()}`));
4137
- console.log(import_chalk17.default.gray(` codex: ${getCodexDir()}`));
4138
- console.log(import_chalk17.default.gray(` claude: ${getClaudeDir()}`));
4109
+ console.log(import_chalk18.default.gray("\n[\u5F00\u53D1\u6A21\u5F0F] \u914D\u7F6E\u76EE\u5F55:"));
4110
+ console.log(import_chalk18.default.gray(` ccman: ${getCcmanDir()}`));
4111
+ console.log(import_chalk18.default.gray(` codex: ${getCodexDir()}`));
4112
+ console.log(import_chalk18.default.gray(` claude: ${getClaudeDir()}`));
4139
4113
  console.log();
4140
4114
  }
4141
4115
  var program = new import_commander.Command();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccman",
3
- "version": "3.0.10",
3
+ "version": "3.0.12",
4
4
  "description": "Manage Codex and Claude Code API service provider configurations",
5
5
  "main": "./dist/index.js",
6
6
  "bin": {