ccjk 2.6.2 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/chunks/agent.mjs +1412 -0
  2. package/dist/chunks/api.mjs +7 -7
  3. package/dist/chunks/auto-updater.mjs +9 -9
  4. package/dist/chunks/ccr.mjs +4 -4
  5. package/dist/chunks/ccu.mjs +1 -1
  6. package/dist/chunks/claude-code-incremental-manager.mjs +6 -6
  7. package/dist/chunks/codex.mjs +4 -4
  8. package/dist/chunks/commands2.mjs +5 -5
  9. package/dist/chunks/commit.mjs +2 -2
  10. package/dist/chunks/config-consolidator.mjs +2 -2
  11. package/dist/chunks/config-switch.mjs +6 -6
  12. package/dist/chunks/config.mjs +1 -1
  13. package/dist/chunks/config2.mjs +14 -14
  14. package/dist/chunks/doctor.mjs +3 -3
  15. package/dist/chunks/features.mjs +12 -12
  16. package/dist/chunks/help.mjs +35 -35
  17. package/dist/chunks/index.mjs +11 -11
  18. package/dist/chunks/init.mjs +21 -21
  19. package/dist/chunks/interview.mjs +33 -33
  20. package/dist/chunks/marketplace.mjs +8 -8
  21. package/dist/chunks/mcp.mjs +8 -8
  22. package/dist/chunks/menu.mjs +302 -293
  23. package/dist/chunks/notification.mjs +5 -5
  24. package/dist/chunks/onboarding.mjs +7 -7
  25. package/dist/chunks/package.mjs +1 -1
  26. package/dist/chunks/permission-manager.mjs +3 -3
  27. package/dist/chunks/plugin.mjs +24 -24
  28. package/dist/chunks/prompts.mjs +3 -3
  29. package/dist/chunks/providers.mjs +13 -13
  30. package/dist/chunks/session.mjs +17 -17
  31. package/dist/chunks/skill.mjs +304 -0
  32. package/dist/chunks/skills-sync.mjs +4 -4
  33. package/dist/chunks/skills.mjs +2 -2
  34. package/dist/chunks/team.mjs +1 -1
  35. package/dist/chunks/uninstall.mjs +8 -8
  36. package/dist/chunks/update.mjs +4 -4
  37. package/dist/chunks/upgrade-manager.mjs +3 -3
  38. package/dist/chunks/version-checker.mjs +6 -6
  39. package/dist/chunks/workflows.mjs +2 -2
  40. package/dist/cli.mjs +48 -0
  41. package/dist/index.d.mts +157 -14
  42. package/dist/index.d.ts +157 -14
  43. package/dist/index.mjs +4 -4
  44. package/dist/shared/{ccjk.rLRHmcqD.mjs → ccjk.BQzWKmC3.mjs} +3 -3
  45. package/dist/shared/{ccjk.uVUeWAt8.mjs → ccjk.BZT_f2go.mjs} +7 -7
  46. package/dist/shared/{ccjk.-FoZ3zat.mjs → ccjk.BlPCiSHj.mjs} +10 -10
  47. package/dist/shared/ccjk.DH6cOJsf.mjs +1674 -0
  48. package/dist/shared/{ccjk.tB4-Y4Qb.mjs → ccjk.DrMygfCF.mjs} +1 -1
  49. package/dist/shared/ccjk.tJ08-yZt.mjs +179 -0
  50. package/package.json +1 -1
  51. package/dist/shared/ccjk.BhKlRJ0h.mjs +0 -114
@@ -1,7 +1,7 @@
1
1
  import ansis from 'ansis';
2
2
  import { i18n, format } from './index2.mjs';
3
- import { S as STATUS, C as COLORS } from '../shared/ccjk.BhKlRJ0h.mjs';
4
- import { r as runConfigWizard, t as testApiConnection, d as displayCurrentStatus, q as quickSetup, g as getAllPresets } from '../shared/ccjk.-FoZ3zat.mjs';
3
+ import { S as STATUS, t as theme } from '../shared/ccjk.tJ08-yZt.mjs';
4
+ import { r as runConfigWizard, t as testApiConnection, d as displayCurrentStatus, q as quickSetup, g as getAllPresets } from '../shared/ccjk.BlPCiSHj.mjs';
5
5
  import 'node:fs';
6
6
  import 'node:process';
7
7
  import 'node:url';
@@ -18,9 +18,9 @@ import 'node:fs/promises';
18
18
  function listProviders(lang = "en") {
19
19
  const presets = getAllPresets();
20
20
  console.log("");
21
- console.log(COLORS.primary("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
22
- console.log(COLORS.primary("\u2551") + COLORS.accent(` ${i18n.t("api:providersTitle")} `.slice(0, 60)) + COLORS.primary("\u2551"));
23
- console.log(COLORS.primary("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
21
+ console.log(theme.primary("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557"));
22
+ console.log(theme.primary("\u2551") + theme.accent(` ${i18n.t("api:providersTitle")} `.slice(0, 60)) + theme.primary("\u2551"));
23
+ console.log(theme.primary("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D"));
24
24
  console.log("");
25
25
  const categories = {
26
26
  "official": i18n.t("api:categoryOfficial"),
@@ -33,12 +33,12 @@ function listProviders(lang = "en") {
33
33
  const categoryPresets = presets.filter((p) => p.category === category);
34
34
  if (categoryPresets.length === 0)
35
35
  continue;
36
- console.log(COLORS.secondary(` ${label}:`));
36
+ console.log(theme.secondary(` ${label}:`));
37
37
  for (const preset of categoryPresets) {
38
38
  const name = lang === "zh-CN" ? preset.nameZh : preset.name;
39
39
  const desc = lang === "zh-CN" ? preset.descriptionZh : preset.description;
40
40
  const keyIcon = preset.requiresApiKey ? "\u{1F511}" : "\u{1F193}";
41
- console.log(` ${keyIcon} ${ansis.cyan(preset.id.padEnd(15))} ${name}`);
41
+ console.log(` ${keyIcon} ${ansis.green(preset.id.padEnd(15))} ${name}`);
42
42
  console.log(ansis.gray(` ${desc}`));
43
43
  }
44
44
  console.log("");
@@ -54,8 +54,8 @@ async function updateCcr(force = false, skipPrompt = false) {
54
54
  console.log(ansis.yellow(i18n.t("updater:cannotCheckVersion")));
55
55
  return false;
56
56
  }
57
- console.log(ansis.cyan(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
58
- console.log(ansis.cyan(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
57
+ console.log(ansis.green(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
58
+ console.log(ansis.green(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
59
59
  if (!skipPrompt) {
60
60
  const confirm = await promptBoolean({
61
61
  message: format(i18n.t("updater:confirmUpdate"), { tool: "CCR" }),
@@ -66,7 +66,7 @@ async function updateCcr(force = false, skipPrompt = false) {
66
66
  return true;
67
67
  }
68
68
  } else {
69
- console.log(ansis.cyan(format(i18n.t("updater:autoUpdating"), { tool: "CCR" })));
69
+ console.log(ansis.green(format(i18n.t("updater:autoUpdating"), { tool: "CCR" })));
70
70
  }
71
71
  const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: "CCR" })).start();
72
72
  try {
@@ -102,8 +102,8 @@ async function updateClaudeCode(force = false, skipPrompt = false) {
102
102
  console.log(ansis.yellow(i18n.t("updater:cannotCheckVersion")));
103
103
  return false;
104
104
  }
105
- console.log(ansis.cyan(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
106
- console.log(ansis.cyan(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
105
+ console.log(ansis.green(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
106
+ console.log(ansis.green(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
107
107
  if (isBroken) {
108
108
  console.log(ansis.yellow(i18n.t("updater:installationBroken")));
109
109
  const fixResult = await fixBrokenNpmSymlink();
@@ -131,7 +131,7 @@ async function updateClaudeCode(force = false, skipPrompt = false) {
131
131
  return true;
132
132
  }
133
133
  } else {
134
- console.log(ansis.cyan(format(i18n.t("updater:autoUpdating"), { tool: "Claude Code" })));
134
+ console.log(ansis.green(format(i18n.t("updater:autoUpdating"), { tool: "Claude Code" })));
135
135
  }
136
136
  const toolName = isHomebrew ? "Claude Code (Homebrew)" : "Claude Code";
137
137
  const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: toolName })).start();
@@ -199,8 +199,8 @@ async function updateCometixLine(force = false, skipPrompt = false) {
199
199
  console.log(ansis.yellow(i18n.t("updater:cannotCheckVersion")));
200
200
  return false;
201
201
  }
202
- console.log(ansis.cyan(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
203
- console.log(ansis.cyan(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
202
+ console.log(ansis.green(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
203
+ console.log(ansis.green(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
204
204
  if (!skipPrompt) {
205
205
  const confirm = await promptBoolean({
206
206
  message: format(i18n.t("updater:confirmUpdate"), { tool: "CCometixLine" }),
@@ -211,7 +211,7 @@ async function updateCometixLine(force = false, skipPrompt = false) {
211
211
  return true;
212
212
  }
213
213
  } else {
214
- console.log(ansis.cyan(format(i18n.t("updater:autoUpdating"), { tool: "CCometixLine" })));
214
+ console.log(ansis.green(format(i18n.t("updater:autoUpdating"), { tool: "CCometixLine" })));
215
215
  }
216
216
  const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: "CCometixLine" })).start();
217
217
  try {
@@ -1,5 +1,5 @@
1
- import { a as displayBannerWithInfo } from '../shared/ccjk.BhKlRJ0h.mjs';
2
- import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.tB4-Y4Qb.mjs';
1
+ import { i as displayBannerWithInfo } from '../shared/ccjk.tJ08-yZt.mjs';
2
+ import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.DrMygfCF.mjs';
3
3
  import { s as showCcrMenu, a as showMainMenu } from './menu.mjs';
4
4
  import 'ansis';
5
5
  import './package.mjs';
@@ -38,7 +38,7 @@ import 'node:util';
38
38
  import './auto-updater.mjs';
39
39
  import './version-checker.mjs';
40
40
  import 'node:path';
41
- import '../shared/ccjk.rLRHmcqD.mjs';
41
+ import '../shared/ccjk.BQzWKmC3.mjs';
42
42
  import '../shared/ccjk.Dut3wyoP.mjs';
43
43
  import '../shared/ccjk.RR9TS76h.mjs';
44
44
  import 'node:stream';
@@ -53,7 +53,7 @@ import './claude-code-config-manager.mjs';
53
53
  import './doctor.mjs';
54
54
  import './api-providers.mjs';
55
55
  import '../shared/ccjk.J8YiPsOw.mjs';
56
- import '../shared/ccjk.uVUeWAt8.mjs';
56
+ import '../shared/ccjk.BZT_f2go.mjs';
57
57
  import './notification.mjs';
58
58
  import 'node:buffer';
59
59
  import '@iarna/toml';
@@ -12,7 +12,7 @@ async function executeCcusage(args = []) {
12
12
  try {
13
13
  const command = "npx";
14
14
  const commandArgs = ["ccusage@latest", ...args || []];
15
- console.log(ansis.cyan(i18n.t("tools:runningCcusage")));
15
+ console.log(ansis.green(i18n.t("tools:runningCcusage")));
16
16
  console.log(ansis.gray(`$ npx ccusage@latest ${(args || []).join(" ")}`));
17
17
  console.log("");
18
18
  await x(command, commandArgs, {
@@ -3,7 +3,7 @@ import inquirer from 'inquirer';
3
3
  import { ensureI18nInitialized, i18n } from './index2.mjs';
4
4
  import { ClaudeCodeConfigManager } from './claude-code-config-manager.mjs';
5
5
  import { a as addNumbersToChoices, p as promptBoolean } from '../shared/ccjk.DhBeLRzf.mjs';
6
- import { v as validateApiKey } from '../shared/ccjk.rLRHmcqD.mjs';
6
+ import { v as validateApiKey } from '../shared/ccjk.BQzWKmC3.mjs';
7
7
  import 'node:fs';
8
8
  import 'node:process';
9
9
  import 'node:url';
@@ -47,7 +47,7 @@ async function configureIncrementalManagement() {
47
47
  }
48
48
  const profiles = Object.values(config.profiles);
49
49
  const currentProfile = config.currentProfileId ? config.profiles[config.currentProfileId] : null;
50
- console.log(ansis.cyan(i18n.t("multi-config:incrementalManagementTitle")));
50
+ console.log(ansis.green(i18n.t("multi-config:incrementalManagementTitle")));
51
51
  console.log(ansis.gray(i18n.t("multi-config:currentProfileCount", { count: profiles.length })));
52
52
  if (currentProfile) {
53
53
  console.log(ansis.gray(i18n.t("multi-config:currentDefaultProfile", { profile: currentProfile.name })));
@@ -91,7 +91,7 @@ async function promptContinueAdding() {
91
91
  });
92
92
  }
93
93
  async function handleAddProfile() {
94
- console.log(ansis.cyan(`
94
+ console.log(ansis.green(`
95
95
  ${i18n.t("multi-config:addingNewProfile")}`));
96
96
  const { getApiProviders } = await import('./api-providers.mjs');
97
97
  const providers = getApiProviders("claude-code");
@@ -309,7 +309,7 @@ async function handleEditProfile(profiles) {
309
309
  console.log(ansis.red(i18n.t("multi-config:profileNotFound")));
310
310
  return;
311
311
  }
312
- console.log(ansis.cyan(`
312
+ console.log(ansis.green(`
313
313
  ${i18n.t("multi-config:editingProfile", { name: selectedProfile.name })}`));
314
314
  const answers = await inquirer.prompt([
315
315
  {
@@ -432,7 +432,7 @@ async function handleCopyProfile(profiles) {
432
432
  console.log(ansis.red(i18n.t("multi-config:profileNotFound")));
433
433
  return;
434
434
  }
435
- console.log(ansis.cyan(`
435
+ console.log(ansis.green(`
436
436
  ${i18n.t("multi-config:copyingProfile", { name: selectedProfile.name })}`));
437
437
  const copiedName = `${selectedProfile.name}-copy`;
438
438
  const questions = [
@@ -595,7 +595,7 @@ async function handleDeleteProfile(profiles) {
595
595
  if (result.newCurrentProfileId) {
596
596
  const newProfile = ClaudeCodeConfigManager.getProfileById(result.newCurrentProfileId);
597
597
  if (newProfile) {
598
- console.log(ansis.cyan(i18n.t("multi-config:newDefaultProfile", { profile: newProfile.name })));
598
+ console.log(ansis.green(i18n.t("multi-config:newDefaultProfile", { profile: newProfile.name })));
599
599
  await ClaudeCodeConfigManager.applyProfileSettings(newProfile);
600
600
  }
601
601
  }
@@ -493,7 +493,7 @@ async function detectCodexInstallMethod() {
493
493
  }
494
494
  async function executeCodexInstallation(isUpdate, skipMethodSelection = false) {
495
495
  if (isUpdate) {
496
- console.log(ansis.cyan(i18n.t("codex:updatingCli")));
496
+ console.log(ansis.green(i18n.t("codex:updatingCli")));
497
497
  const installMethod = await detectCodexInstallMethod();
498
498
  if (installMethod === "homebrew") {
499
499
  console.log(ansis.gray(i18n.t("codex:detectedHomebrew")));
@@ -1710,8 +1710,8 @@ async function runCodexUpdate(force = false, skipPrompt = false) {
1710
1710
  console.log(ansis.yellow(i18n.t("codex:cannotCheckVersion")));
1711
1711
  return false;
1712
1712
  }
1713
- console.log(ansis.cyan(format(i18n.t("codex:currentVersion"), { version: currentVersion || "" })));
1714
- console.log(ansis.cyan(format(i18n.t("codex:latestVersion"), { version: latestVersion })));
1713
+ console.log(ansis.green(format(i18n.t("codex:currentVersion"), { version: currentVersion || "" })));
1714
+ console.log(ansis.green(format(i18n.t("codex:latestVersion"), { version: latestVersion })));
1715
1715
  if (!skipPrompt) {
1716
1716
  const confirm = await promptBoolean({
1717
1717
  message: i18n.t("codex:confirmUpdate"),
@@ -1722,7 +1722,7 @@ async function runCodexUpdate(force = false, skipPrompt = false) {
1722
1722
  return true;
1723
1723
  }
1724
1724
  } else {
1725
- console.log(ansis.cyan(i18n.t("codex:autoUpdating")));
1725
+ console.log(ansis.green(i18n.t("codex:autoUpdating")));
1726
1726
  }
1727
1727
  const updateSpinner = ora(i18n.t("codex:updating")).start();
1728
1728
  try {
@@ -12,7 +12,7 @@ import 'pathe';
12
12
  const execAsync = promisify(exec);
13
13
  async function runCcrUi(apiKey) {
14
14
  ensureI18nInitialized();
15
- console.log(ansis.cyan(`
15
+ console.log(ansis.green(`
16
16
  \u{1F5A5}\uFE0F ${i18n.t("ccr:startingCcrUi")}`));
17
17
  if (apiKey) {
18
18
  console.log(ansis.bold.green(`
@@ -34,7 +34,7 @@ async function runCcrUi(apiKey) {
34
34
  }
35
35
  async function runCcrStatus() {
36
36
  ensureI18nInitialized();
37
- console.log(ansis.cyan(`
37
+ console.log(ansis.green(`
38
38
  \u{1F4CA} ${i18n.t("ccr:checkingCcrStatus")}`));
39
39
  try {
40
40
  const { stdout, stderr } = await execAsync("ccr status");
@@ -52,7 +52,7 @@ ${ansis.bold(i18n.t("ccr:ccrStatusTitle"))}`);
52
52
  }
53
53
  async function runCcrRestart() {
54
54
  ensureI18nInitialized();
55
- console.log(ansis.cyan(`
55
+ console.log(ansis.green(`
56
56
  \u{1F504} ${i18n.t("ccr:restartingCcr")}`));
57
57
  try {
58
58
  const { stdout, stderr } = await execAsync("ccr restart");
@@ -68,7 +68,7 @@ async function runCcrRestart() {
68
68
  }
69
69
  async function runCcrStart() {
70
70
  ensureI18nInitialized();
71
- console.log(ansis.cyan(`
71
+ console.log(ansis.green(`
72
72
  \u25B6\uFE0F ${i18n.t("ccr:startingCcr")}`));
73
73
  try {
74
74
  const { stdout, stderr } = await execAsync("ccr start");
@@ -91,7 +91,7 @@ async function runCcrStart() {
91
91
  }
92
92
  async function runCcrStop() {
93
93
  ensureI18nInitialized();
94
- console.log(ansis.cyan(`
94
+ console.log(ansis.green(`
95
95
  \u23F9\uFE0F ${i18n.t("ccr:stoppingCcr")}`));
96
96
  try {
97
97
  const { stdout, stderr } = await execAsync("ccr stop");
@@ -70,7 +70,7 @@ async function commit(options = {}) {
70
70
  console.log(ansis.yellow("No changes to commit"));
71
71
  return;
72
72
  }
73
- console.log(ansis.cyan("\n\u{1F4DD} Changes detected:"));
73
+ console.log(ansis.green("\n\u{1F4DD} Changes detected:"));
74
74
  if (status.staged.length > 0) {
75
75
  console.log(ansis.green(` Staged: ${status.staged.length} files`));
76
76
  status.staged.forEach((f) => console.log(ansis.gray(` ${f}`)));
@@ -89,7 +89,7 @@ async function commit(options = {}) {
89
89
  message = options.message;
90
90
  } else if (options.auto) {
91
91
  message = await generateCommitMessage(allFiles);
92
- console.log(ansis.cyan("\n\u{1F4AC} Generated commit message:"));
92
+ console.log(ansis.green("\n\u{1F4AC} Generated commit message:"));
93
93
  console.log(ansis.white(message));
94
94
  } else {
95
95
  const suggested = await generateCommitMessage(allFiles);
@@ -5,7 +5,7 @@ import ansis from 'ansis';
5
5
  import dayjs from 'dayjs';
6
6
  import { join } from 'pathe';
7
7
  import { SETTINGS_FILE, ClAUDE_CONFIG_FILE, CLAUDE_VSC_CONFIG_FILE, CLAUDE_DIR, CCJK_CONFIG_DIR } from './constants.mjs';
8
- import { S as STATUS } from '../shared/ccjk.BhKlRJ0h.mjs';
8
+ import { S as STATUS } from '../shared/ccjk.tJ08-yZt.mjs';
9
9
  import { writeFileAtomic } from './fs-operations.mjs';
10
10
  import './index2.mjs';
11
11
  import 'node:url';
@@ -240,7 +240,7 @@ function removeRedundantConfigs(configs, keepPath = SETTINGS_FILE) {
240
240
  }
241
241
  function displayConfigScan(configs) {
242
242
  const existingConfigs = configs.filter((c) => c.exists);
243
- console.log(ansis.cyan("\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 Config Files Detected \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n"));
243
+ console.log(ansis.green("\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 Config Files Detected \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n"));
244
244
  if (existingConfigs.length === 0) {
245
245
  console.log(STATUS.info("No config files found"));
246
246
  return;
@@ -6,7 +6,7 @@ import { ensureI18nInitialized, i18n } from './index2.mjs';
6
6
  import { readZcfConfig } from './ccjk-config.mjs';
7
7
  import { ClaudeCodeConfigManager } from './claude-code-config-manager.mjs';
8
8
  import { G as switchCodexProvider, q as listCodexProviders, r as readCodexConfig, s as switchToOfficialLogin, H as switchToProvider } from './codex.mjs';
9
- import { a as handleGeneralError } from '../shared/ccjk.tB4-Y4Qb.mjs';
9
+ import { a as handleGeneralError } from '../shared/ccjk.DrMygfCF.mjs';
10
10
  import { a as addNumbersToChoices } from '../shared/ccjk.DhBeLRzf.mjs';
11
11
  import 'node:os';
12
12
  import 'pathe';
@@ -81,7 +81,7 @@ async function listCodexProvidersWithDisplay() {
81
81
  console.log(ansis.bold(i18n.t("codex:listProvidersTitle")));
82
82
  console.log();
83
83
  if (currentProvider && !isCommented) {
84
- console.log(ansis.cyan(i18n.t("codex:currentProvider", { provider: currentProvider })));
84
+ console.log(ansis.green(i18n.t("codex:currentProvider", { provider: currentProvider })));
85
85
  console.log();
86
86
  }
87
87
  providers.forEach((provider) => {
@@ -89,7 +89,7 @@ async function listCodexProvidersWithDisplay() {
89
89
  const status = isCurrent ? ansis.green("\u25CF ") : " ";
90
90
  const current = isCurrent ? ansis.yellow(` (${i18n.t("common:current")})`) : "";
91
91
  console.log(`${status}${ansis.white(provider.name)}${current}`);
92
- console.log(` ${ansis.cyan(`ID: ${provider.id}`)} ${ansis.gray(`(${provider.baseUrl})`)}`);
92
+ console.log(` ${ansis.green(`ID: ${provider.id}`)} ${ansis.gray(`(${provider.baseUrl})`)}`);
93
93
  if (provider.tempEnvKey) {
94
94
  console.log(` ${ansis.gray(`Env: ${provider.tempEnvKey}`)}`);
95
95
  }
@@ -110,7 +110,7 @@ async function listClaudeCodeProfiles() {
110
110
  const status = isCurrent ? ansis.green("\u25CF ") : " ";
111
111
  const current = isCurrent ? ansis.yellow(i18n.t("common:current")) : "";
112
112
  console.log(`${status}${ansis.white(profile.name)}${current}`);
113
- console.log(` ${ansis.cyan(`ID: ${profile.id}`)} ${ansis.gray(`(${profile.authType})`)}`);
113
+ console.log(` ${ansis.green(`ID: ${profile.id}`)} ${ansis.gray(`(${profile.authType})`)}`);
114
114
  console.log();
115
115
  });
116
116
  }
@@ -235,7 +235,7 @@ async function handleClaudeCodeInteractiveSwitch() {
235
235
  await handleClaudeCodeDirectSwitch(selectedConfig);
236
236
  } catch (error) {
237
237
  if (error.name === "ExitPromptError") {
238
- console.log(ansis.cyan(`
238
+ console.log(ansis.green(`
239
239
  ${i18n.t("common:goodbye")}`));
240
240
  return;
241
241
  }
@@ -290,7 +290,7 @@ async function handleCodexInteractiveSwitch() {
290
290
  }
291
291
  } catch (error) {
292
292
  if (error.name === "ExitPromptError") {
293
- console.log(ansis.cyan(`
293
+ console.log(ansis.green(`
294
294
  ${i18n.t("common:goodbye")}`));
295
295
  return;
296
296
  }
@@ -526,7 +526,7 @@ async function promptApiConfigurationAction() {
526
526
  return null;
527
527
  }
528
528
  console.log(`
529
- ${ansis.blue(`\u2139 ${i18n.t("api:existingApiConfig")}`)}`);
529
+ ${ansis.green(`\u2139 ${i18n.t("api:existingApiConfig")}`)}`);
530
530
  console.log(ansis.gray(` ${i18n.t("api:apiConfigUrl")}: ${existingConfig.url || "N/A"}`));
531
531
  console.log(ansis.gray(` ${i18n.t("api:apiConfigKey")}: ${existingConfig.key ? `***${existingConfig.key.slice(-4)}` : "N/A"}`));
532
532
  console.log(ansis.gray(` ${i18n.t("api:apiConfigAuthType")}: ${existingConfig.authType || "N/A"}
@@ -218,13 +218,13 @@ async function setProvider(providerId, options = {}) {
218
218
  console.log(ansis.green(isZh ? `\u2705 \u5DF2\u5207\u6362\u5230\u4F9B\u5E94\u5546: ${provider.name}` : `\u2705 Switched to provider: ${provider.name}`));
219
219
  console.log("");
220
220
  console.log(ansis.bold(isZh ? "\u914D\u7F6E\u8BE6\u60C5:" : "Configuration details:"));
221
- console.log(` ${ansis.cyan(isZh ? "\u4F9B\u5E94\u5546" : "Provider")}: ${provider.name}`);
222
- console.log(` ${ansis.cyan(isZh ? "\u63A5\u53E3\u5730\u5740" : "Base URL")}: ${config.baseUrl}`);
221
+ console.log(` ${ansis.green(isZh ? "\u4F9B\u5E94\u5546" : "Provider")}: ${provider.name}`);
222
+ console.log(` ${ansis.green(isZh ? "\u63A5\u53E3\u5730\u5740" : "Base URL")}: ${config.baseUrl}`);
223
223
  if (config.model) {
224
- console.log(` ${ansis.cyan(isZh ? "\u4E3B\u6A21\u578B" : "Primary Model")}: ${config.model}`);
224
+ console.log(` ${ansis.green(isZh ? "\u4E3B\u6A21\u578B" : "Primary Model")}: ${config.model}`);
225
225
  }
226
226
  if (config.fastModel) {
227
- console.log(` ${ansis.cyan(isZh ? "\u5FEB\u901F\u6A21\u578B" : "Fast Model")}: ${config.fastModel}`);
227
+ console.log(` ${ansis.green(isZh ? "\u5FEB\u901F\u6A21\u578B" : "Fast Model")}: ${config.fastModel}`);
228
228
  }
229
229
  console.log("");
230
230
  console.log(ansis.dim(isZh ? "\u{1F4A1} \u63D0\u793A: \u8BF7\u786E\u4FDD\u5DF2\u8BBE\u7F6E\u6B63\u786E\u7684 API \u5BC6\u94A5\u6216\u8BA4\u8BC1\u4EE4\u724C" : "\u{1F4A1} Tip: Make sure to set the correct API key or auth token"));
@@ -281,11 +281,11 @@ async function configCommand(action, args, options = {}) {
281
281
  console.log("");
282
282
  console.log(ansis.bold.cyan(isZh ? "\u2699\uFE0F \u914D\u7F6E\u7BA1\u7406\u547D\u4EE4" : "\u2699\uFE0F Configuration Management Commands"));
283
283
  console.log("");
284
- console.log(` ${ansis.cyan("ccjk config get <key>")} ${isZh ? "\u83B7\u53D6\u914D\u7F6E\u9879" : "Get configuration value"}`);
285
- console.log(` ${ansis.cyan("ccjk config set <key> <value>")} ${isZh ? "\u8BBE\u7F6E\u914D\u7F6E\u9879" : "Set configuration value"}`);
286
- console.log(` ${ansis.cyan("ccjk config list")} ${isZh ? "\u5217\u51FA\u6240\u6709\u914D\u7F6E" : "List all configuration"}`);
287
- console.log(` ${ansis.cyan("ccjk config reset")} ${isZh ? "\u91CD\u7F6E\u914D\u7F6E" : "Reset configuration"}`);
288
- console.log(` ${ansis.cyan("ccjk config provider <id>")} ${isZh ? "\u5207\u6362\u4F9B\u5E94\u5546" : "Switch provider"}`);
284
+ console.log(` ${ansis.green("ccjk config get <key>")} ${isZh ? "\u83B7\u53D6\u914D\u7F6E\u9879" : "Get configuration value"}`);
285
+ console.log(` ${ansis.green("ccjk config set <key> <value>")} ${isZh ? "\u8BBE\u7F6E\u914D\u7F6E\u9879" : "Set configuration value"}`);
286
+ console.log(` ${ansis.green("ccjk config list")} ${isZh ? "\u5217\u51FA\u6240\u6709\u914D\u7F6E" : "List all configuration"}`);
287
+ console.log(` ${ansis.green("ccjk config reset")} ${isZh ? "\u91CD\u7F6E\u914D\u7F6E" : "Reset configuration"}`);
288
+ console.log(` ${ansis.green("ccjk config provider <id>")} ${isZh ? "\u5207\u6362\u4F9B\u5E94\u5546" : "Switch provider"}`);
289
289
  console.log("");
290
290
  console.log(ansis.bold(isZh ? "\u9009\u9879" : "Options"));
291
291
  console.log(` ${ansis.green("--code-type, -T")} <type> ${isZh ? "\u4EE3\u7801\u5DE5\u5177\u7C7B\u578B (claude-code, codex)" : "Code tool type (claude-code, codex)"}`);
@@ -344,7 +344,7 @@ function displayValue(value, indent) {
344
344
  if (value === null) {
345
345
  console.log(`${prefix}${ansis.dim("null")}`);
346
346
  } else if (typeof value === "boolean") {
347
- console.log(`${prefix}${ansis.cyan(value.toString())}`);
347
+ console.log(`${prefix}${ansis.green(value.toString())}`);
348
348
  } else if (typeof value === "number") {
349
349
  console.log(`${prefix}${ansis.yellow(value.toString())}`);
350
350
  } else if (typeof value === "string") {
@@ -370,9 +370,9 @@ function displayConfigSection(title, data, _isZh) {
370
370
  for (const [key, value] of Object.entries(data)) {
371
371
  if (value !== void 0) {
372
372
  if (Array.isArray(value)) {
373
- console.log(` ${ansis.cyan(key)}: ${value.join(", ")}`);
373
+ console.log(` ${ansis.green(key)}: ${value.join(", ")}`);
374
374
  } else {
375
- console.log(` ${ansis.cyan(key)}: ${value}`);
375
+ console.log(` ${ansis.green(key)}: ${value}`);
376
376
  }
377
377
  }
378
378
  }
@@ -407,7 +407,7 @@ async function editConfig(_options = {}) {
407
407
  const isZh = i18n.language === "zh-CN";
408
408
  const configPath = getClaudeConfigPath();
409
409
  const editor = process__default.env.EDITOR || process__default.env.VISUAL || "vi";
410
- console.log(ansis.cyan(isZh ? `\u{1F4DD} \u6B63\u5728\u6253\u5F00\u914D\u7F6E\u6587\u4EF6: ${configPath}` : `\u{1F4DD} Opening config file: ${configPath}`));
410
+ console.log(ansis.green(isZh ? `\u{1F4DD} \u6B63\u5728\u6253\u5F00\u914D\u7F6E\u6587\u4EF6: ${configPath}` : `\u{1F4DD} Opening config file: ${configPath}`));
411
411
  const { spawn } = await import('node:child_process');
412
412
  const child = spawn(editor, [configPath], { stdio: "inherit" });
413
413
  child.on("exit", (code) => {
@@ -418,7 +418,7 @@ async function editConfig(_options = {}) {
418
418
  }
419
419
  async function validateConfig(_options = {}) {
420
420
  const isZh = i18n.language === "zh-CN";
421
- console.log(ansis.cyan(isZh ? "\u{1F50D} \u6B63\u5728\u9A8C\u8BC1\u914D\u7F6E..." : "\u{1F50D} Validating configuration..."));
421
+ console.log(ansis.green(isZh ? "\u{1F50D} \u6B63\u5728\u9A8C\u8BC1\u914D\u7F6E..." : "\u{1F50D} Validating configuration..."));
422
422
  console.log("");
423
423
  const config = readClaudeConfig();
424
424
  const errors = [];
@@ -11,7 +11,7 @@ import { P as ProviderHealthMonitor } from '../shared/ccjk.J8YiPsOw.mjs';
11
11
  import { platform, userInfo, homedir } from 'node:os';
12
12
  import ora from 'ora';
13
13
  import { exec } from 'tinyexec';
14
- import { S as STATUS } from '../shared/ccjk.BhKlRJ0h.mjs';
14
+ import { S as STATUS } from '../shared/ccjk.tJ08-yZt.mjs';
15
15
  import { writeFileAtomic } from './fs-operations.mjs';
16
16
  import 'node:url';
17
17
  import 'i18next';
@@ -436,7 +436,7 @@ async function runWorkspaceCheck(targetDir) {
436
436
  };
437
437
  }
438
438
  function displayWorkspaceReport(report) {
439
- console.log(ansis.cyan(`
439
+ console.log(ansis.green(`
440
440
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 ${t("workspace:title")} \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
441
441
  `));
442
442
  console.log(ansis.white.bold(`${t("workspace:currentDir")}: ${ansis.yellow(report.cwd)}
@@ -527,7 +527,7 @@ async function runWorkspaceWizard(targetDir) {
527
527
  }
528
528
  }
529
529
  console.log("");
530
- console.log(ansis.cyan(t("workspace:wizard.verifying")));
530
+ console.log(ansis.green(t("workspace:wizard.verifying")));
531
531
  const newReport = await runWorkspaceCheck(targetDir);
532
532
  if (newReport.isValid) {
533
533
  console.log(STATUS.success(t("workspace:wizard.allFixed")));
@@ -6,7 +6,7 @@ import { ensureI18nInitialized, i18n, changeLanguage } from './index2.mjs';
6
6
  import { updateZcfConfig, readZcfConfig } from './ccjk-config.mjs';
7
7
  import { q as isCcrInstalled, t as installCcr, E as setupCcrConfiguration } from './init.mjs';
8
8
  import { y as applyAiLanguageDirective, v as getExistingModelConfig, u as updateCustomModel, q as updateDefaultModel, r as readMcpConfig, f as fixWindowsMcpConfig, w as writeMcpConfig, b as backupMcpConfig, d as buildMcpServerConfig, a as mergeMcpServers, x as getExistingApiConfig, A as promptApiConfigurationAction, o as configureApi, z as switchToOfficialLogin } from './config.mjs';
9
- import { a as configureOutputStyle, m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.rLRHmcqD.mjs';
9
+ import { a as configureOutputStyle, m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.BQzWKmC3.mjs';
10
10
  import { isWindows } from './platform.mjs';
11
11
  import { a as addNumbersToChoices, p as promptBoolean } from '../shared/ccjk.DhBeLRzf.mjs';
12
12
  import { o as openSettingsJson, a as importRecommendedPermissions, i as importRecommendedEnv } from '../shared/ccjk.Dut3wyoP.mjs';
@@ -31,13 +31,13 @@ import 'i18next-fs-backend';
31
31
  import 'inquirer-toggle';
32
32
  import 'node:child_process';
33
33
  import './workflows2.mjs';
34
- import '../shared/ccjk.BhKlRJ0h.mjs';
34
+ import '../shared/ccjk.tJ08-yZt.mjs';
35
35
  import 'node:util';
36
36
  import './auto-updater.mjs';
37
37
  import './version-checker.mjs';
38
38
  import 'node:path';
39
39
  import '../shared/ccjk.CUdzQluX.mjs';
40
- import '../shared/ccjk.tB4-Y4Qb.mjs';
40
+ import '../shared/ccjk.DrMygfCF.mjs';
41
41
 
42
42
  async function handleCancellation() {
43
43
  ensureI18nInitialized();
@@ -252,7 +252,7 @@ async function configureDefaultModelFeature() {
252
252
  const existingModel = getExistingModelConfig();
253
253
  if (existingModel) {
254
254
  console.log(`
255
- ${ansis.blue(`\u2139 ${i18n.t("configuration:existingModelConfig") || "Existing model configuration"}`)}`);
255
+ ${ansis.green(`\u2139 ${i18n.t("configuration:existingModelConfig") || "Existing model configuration"}`)}`);
256
256
  const modelDisplay = existingModel === "default" ? i18n.t("configuration:defaultModelOption") || "Default (Let Claude Code choose)" : existingModel.charAt(0).toUpperCase() + existingModel.slice(1);
257
257
  console.log(ansis.gray(` ${i18n.t("configuration:currentModel") || "Current model"}: ${modelDisplay}
258
258
  `));
@@ -382,7 +382,7 @@ async function configureAiMemoryFeature() {
382
382
  switch (option) {
383
383
  case "viewGlobalClaudeMd": {
384
384
  if (existsSync(globalClaudeMdPath)) {
385
- console.log(ansis.cyan.bold(`
385
+ console.log(ansis.green.bold(`
386
386
  \u{1F4C4} ${isZh ? "\u5168\u5C40 CLAUDE.md \u5185\u5BB9" : "Global CLAUDE.md Content"}:`));
387
387
  console.log(ansis.dim("\u2500".repeat(60)));
388
388
  const content = readFileSync(globalClaudeMdPath, "utf-8");
@@ -404,7 +404,7 @@ async function configureAiMemoryFeature() {
404
404
  foundPath = localClaudeMdPath;
405
405
  }
406
406
  if (foundPath) {
407
- console.log(ansis.cyan.bold(`
407
+ console.log(ansis.green.bold(`
408
408
  \u{1F4C1} ${isZh ? "\u9879\u76EE CLAUDE.md \u5185\u5BB9" : "Project CLAUDE.md Content"}:`));
409
409
  console.log(ansis.dim("\u2500".repeat(60)));
410
410
  const content = readFileSync(foundPath, "utf-8");
@@ -423,7 +423,7 @@ async function configureAiMemoryFeature() {
423
423
  case "viewPostmortem": {
424
424
  const postmortemDir = join(cwd, ".postmortem");
425
425
  if (existsSync(postmortemDir)) {
426
- console.log(ansis.cyan.bold(`
426
+ console.log(ansis.green.bold(`
427
427
  \u{1F52C} ${isZh ? "Postmortem \u62A5\u544A" : "Postmortem Reports"}:`));
428
428
  console.log(ansis.dim("\u2500".repeat(60)));
429
429
  const { readdirSync } = await import('node:fs');
@@ -474,7 +474,7 @@ ${isZh ? "\u76EE\u5F55" : "Directory"}: ${postmortemDir}`));
474
474
  `);
475
475
  console.log(ansis.green(`\u2705 ${isZh ? "\u5DF2\u521B\u5EFA\u5168\u5C40 CLAUDE.md" : "Created global CLAUDE.md"}`));
476
476
  }
477
- console.log(ansis.cyan(`
477
+ console.log(ansis.green(`
478
478
  \u{1F4DD} ${isZh ? "\u6B63\u5728\u6253\u5F00\u7F16\u8F91\u5668..." : "Opening editor..."}`));
479
479
  console.log(ansis.gray(`${isZh ? "\u7F16\u8F91\u5668" : "Editor"}: ${editor}`));
480
480
  console.log(ansis.gray(`${isZh ? "\u6587\u4EF6" : "File"}: ${globalClaudeMdPath}`));
@@ -494,7 +494,7 @@ ${isZh ? "\u76EE\u5F55" : "Directory"}: ${postmortemDir}`));
494
494
  if (existingLang) {
495
495
  console.log(
496
496
  `
497
- ${ansis.blue(`\u2139 ${i18n.t("configuration:existingLanguageConfig") || "Existing AI output language configuration"}`)}`
497
+ ${ansis.green(`\u2139 ${i18n.t("configuration:existingLanguageConfig") || "Existing AI output language configuration"}`)}`
498
498
  );
499
499
  console.log(ansis.gray(` ${i18n.t("configuration:currentLanguage") || "Current language"}: ${existingLang}
500
500
  `));
@@ -549,7 +549,7 @@ async function configureCodexDefaultModelFeature() {
549
549
  const currentModel = existingConfig?.model;
550
550
  if (currentModel) {
551
551
  console.log(`
552
- ${ansis.blue(`\u2139 ${i18n.t("configuration:existingModelConfig") || "Existing model configuration"}`)}`);
552
+ ${ansis.green(`\u2139 ${i18n.t("configuration:existingModelConfig") || "Existing model configuration"}`)}`);
553
553
  const modelDisplay = currentModel === "gpt-5-codex" ? "GPT-5-Codex" : currentModel === "gpt-5" ? "GPT-5" : currentModel.charAt(0).toUpperCase() + currentModel.slice(1);
554
554
  console.log(ansis.gray(` ${i18n.t("configuration:currentModel") || "Current model"}: ${modelDisplay}
555
555
  `));
@@ -631,7 +631,7 @@ async function configureCodexAiMemoryFeature() {
631
631
  if (existingLang) {
632
632
  console.log(
633
633
  `
634
- ${ansis.blue(`\u2139 ${i18n.t("configuration:existingLanguageConfig") || "Existing AI output language configuration"}`)}`
634
+ ${ansis.green(`\u2139 ${i18n.t("configuration:existingLanguageConfig") || "Existing AI output language configuration"}`)}`
635
635
  );
636
636
  console.log(ansis.gray(` ${i18n.t("configuration:currentLanguage") || "Current language"}: ${existingLang}
637
637
  `));
@@ -788,7 +788,7 @@ async function configureEnvPermissionFeature() {
788
788
  console.log(ansis.green(`\u2705 ${i18n.t("configuration:permissionsImportSuccess") || "Permissions imported"}`));
789
789
  break;
790
790
  case "open":
791
- console.log(ansis.cyan(i18n.t("configuration:openingSettingsJson") || "Opening settings.json..."));
791
+ console.log(ansis.green(i18n.t("configuration:openingSettingsJson") || "Opening settings.json..."));
792
792
  await openSettingsJson();
793
793
  break;
794
794
  }