ccjk 12.0.1 → 12.0.3

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 (162) hide show
  1. package/dist/chunks/agent-teams.mjs +17 -18
  2. package/dist/chunks/agent.mjs +105 -102
  3. package/dist/chunks/agents.mjs +87 -77
  4. package/dist/chunks/api-cli.mjs +41 -27
  5. package/dist/chunks/api-providers.mjs +2 -4
  6. package/dist/chunks/api.mjs +23 -12
  7. package/dist/chunks/auto-bootstrap.mjs +3 -5
  8. package/dist/chunks/auto-init.mjs +3 -4
  9. package/dist/chunks/auto-updater.mjs +103 -91
  10. package/dist/chunks/banner.mjs +44 -43
  11. package/dist/chunks/boost.mjs +30 -31
  12. package/dist/chunks/ccjk-agents.mjs +6 -9
  13. package/dist/chunks/ccjk-all.mjs +703 -85
  14. package/dist/chunks/ccjk-config.mjs +6 -6
  15. package/dist/chunks/ccjk-hooks.mjs +20 -9
  16. package/dist/chunks/ccjk-mcp.mjs +64 -52
  17. package/dist/chunks/ccjk-setup.mjs +35 -25
  18. package/dist/chunks/ccjk-skills.mjs +51 -41
  19. package/dist/chunks/ccr.mjs +43 -33
  20. package/dist/chunks/ccu.mjs +16 -12
  21. package/dist/chunks/check-updates.mjs +31 -20
  22. package/dist/chunks/claude-code-config-manager.mjs +25 -10
  23. package/dist/chunks/claude-code-incremental-manager.mjs +65 -51
  24. package/dist/chunks/claude-config.mjs +2 -2
  25. package/dist/chunks/claude-wrapper.mjs +9 -6
  26. package/dist/chunks/cleanup-migration.mjs +1 -1
  27. package/dist/chunks/cli-hook.mjs +10 -3
  28. package/dist/chunks/cloud-sync.mjs +1 -1
  29. package/dist/chunks/codex-config-switch.mjs +59 -46
  30. package/dist/chunks/codex-provider-manager.mjs +30 -17
  31. package/dist/chunks/codex-uninstaller.mjs +5 -6
  32. package/dist/chunks/codex.mjs +89 -89
  33. package/dist/chunks/commands.mjs +28 -29
  34. package/dist/chunks/commands2.mjs +4 -3
  35. package/dist/chunks/commit.mjs +42 -23
  36. package/dist/chunks/completion.mjs +46 -47
  37. package/dist/chunks/config-consolidator.mjs +13 -14
  38. package/dist/chunks/config-switch.mjs +67 -54
  39. package/dist/chunks/config.mjs +10 -10
  40. package/dist/chunks/config2.mjs +53 -42
  41. package/dist/chunks/config3.mjs +107 -93
  42. package/dist/chunks/constants.mjs +2 -4
  43. package/dist/chunks/context-loader.mjs +5 -4
  44. package/dist/chunks/context.mjs +77 -76
  45. package/dist/chunks/convoy-manager.mjs +4 -4
  46. package/dist/chunks/dashboard.mjs +28 -29
  47. package/dist/chunks/doctor.mjs +69 -55
  48. package/dist/chunks/evolution.mjs +37 -38
  49. package/dist/chunks/features.mjs +104 -93
  50. package/dist/chunks/fs-operations.mjs +1 -1
  51. package/dist/chunks/health-alerts.mjs +1 -1
  52. package/dist/chunks/health-check.mjs +1 -1
  53. package/dist/chunks/help.mjs +117 -116
  54. package/dist/chunks/hook-installer.mjs +3 -2
  55. package/dist/chunks/index.mjs +20 -6
  56. package/dist/chunks/index10.mjs +1171 -0
  57. package/dist/chunks/index11.mjs +1008 -0
  58. package/dist/chunks/index12.mjs +193 -0
  59. package/dist/chunks/index13.mjs +218 -0
  60. package/dist/chunks/index14.mjs +663 -0
  61. package/dist/chunks/index2.mjs +19 -10
  62. package/dist/chunks/index3.mjs +19079 -164
  63. package/dist/chunks/index4.mjs +8 -1171
  64. package/dist/chunks/index5.mjs +7479 -884
  65. package/dist/chunks/index6.mjs +160 -184
  66. package/dist/chunks/index7.mjs +3573 -653
  67. package/dist/chunks/index8.mjs +19 -0
  68. package/dist/chunks/index9.mjs +616 -0
  69. package/dist/chunks/init.mjs +177 -176
  70. package/dist/chunks/installer.mjs +92 -82
  71. package/dist/chunks/installer2.mjs +3 -2
  72. package/dist/chunks/interview.mjs +118 -107
  73. package/dist/chunks/json-config.mjs +3 -2
  74. package/dist/chunks/linux.mjs +3863 -0
  75. package/dist/chunks/macos.mjs +69 -0
  76. package/dist/chunks/main.mjs +635 -0
  77. package/dist/chunks/marketplace.mjs +69 -66
  78. package/dist/chunks/mcp-cli.mjs +62 -49
  79. package/dist/chunks/mcp.mjs +141 -128
  80. package/dist/chunks/menu.mjs +85 -85
  81. package/dist/chunks/metrics-display.mjs +41 -40
  82. package/dist/chunks/migrator.mjs +4 -5
  83. package/dist/chunks/monitor.mjs +96 -96
  84. package/dist/chunks/notification.mjs +151 -141
  85. package/dist/chunks/onboarding.mjs +27 -16
  86. package/dist/chunks/package.mjs +2 -3
  87. package/dist/chunks/paradigm.mjs +24 -23
  88. package/dist/chunks/permission-manager.mjs +11 -12
  89. package/dist/chunks/permissions.mjs +72 -57
  90. package/dist/chunks/persistence-manager.mjs +97 -84
  91. package/dist/chunks/persistence.mjs +1 -1
  92. package/dist/chunks/platform.mjs +29 -29
  93. package/dist/chunks/plugin.mjs +104 -105
  94. package/dist/chunks/prompts.mjs +39 -27
  95. package/dist/chunks/providers.mjs +68 -69
  96. package/dist/chunks/quick-actions.mjs +71 -72
  97. package/dist/chunks/quick-provider.mjs +56 -40
  98. package/dist/chunks/quick-setup.mjs +74 -62
  99. package/dist/chunks/remote.mjs +21 -12
  100. package/dist/chunks/session.mjs +116 -103
  101. package/dist/chunks/sessions.mjs +29 -28
  102. package/dist/chunks/silent-updater.mjs +8 -10
  103. package/dist/chunks/simple-config.mjs +13 -10
  104. package/dist/chunks/skill.mjs +8560 -103
  105. package/dist/chunks/skills-sync.mjs +5212 -79
  106. package/dist/chunks/skills.mjs +105 -94
  107. package/dist/chunks/slash-commands.mjs +36 -37
  108. package/dist/chunks/smart-defaults.mjs +7 -3
  109. package/dist/chunks/smart-guide.mjs +1 -1
  110. package/dist/chunks/startup.mjs +2 -4
  111. package/dist/chunks/stats.mjs +41 -42
  112. package/dist/chunks/status.mjs +49 -50
  113. package/dist/chunks/team.mjs +24 -12
  114. package/dist/chunks/thinking.mjs +74 -63
  115. package/dist/chunks/trace.mjs +20 -19
  116. package/dist/chunks/uninstall.mjs +69 -56
  117. package/dist/chunks/update.mjs +44 -32
  118. package/dist/chunks/upgrade-manager.mjs +30 -23
  119. package/dist/chunks/version-checker.mjs +45 -41
  120. package/dist/chunks/vim.mjs +81 -69
  121. package/dist/chunks/windows.mjs +14 -0
  122. package/dist/chunks/workflows.mjs +15 -15
  123. package/dist/chunks/wsl.mjs +129 -0
  124. package/dist/chunks/zero-config.mjs +45 -34
  125. package/dist/cli.mjs +20 -20
  126. package/dist/index.mjs +44 -34
  127. package/dist/shared/ccjk.BAGoDD49.mjs +36 -0
  128. package/dist/shared/ccjk.BBtCGd_g.mjs +899 -0
  129. package/dist/shared/{ccjk.CGcy7cNM.mjs → ccjk.BDKUdmLk.mjs} +1 -1
  130. package/dist/shared/{ccjk.DtMBiwVG.mjs → ccjk.BFxsJM0k.mjs} +1 -1
  131. package/dist/shared/{ccjk.j4uut26D.mjs → ccjk.BIxuVL3_.mjs} +5 -5
  132. package/dist/shared/ccjk.BRZ9ww8S.mjs +142 -0
  133. package/dist/shared/{ccjk.CN0edl87.mjs → ccjk.BSYWk9ML.mjs} +1 -1
  134. package/dist/shared/{ccjk.Dk1HDseQ.mjs → ccjk.BnpWvs9V.mjs} +75 -75
  135. package/dist/shared/ccjk.BoApaI4j.mjs +28 -0
  136. package/dist/shared/{ccjk.DKojSRzw.mjs → ccjk.BrPUmTqm.mjs} +1 -1
  137. package/dist/shared/{ccjk.C10pepYx.mjs → ccjk.BxSmJ8B7.mjs} +1 -1
  138. package/dist/shared/ccjk.Bx_rmYfN.mjs +69 -0
  139. package/dist/shared/ccjk.COweQ1RR.mjs +5 -0
  140. package/dist/shared/{ccjk.BN90X6oc.mjs → ccjk.CePkJq2S.mjs} +17 -17
  141. package/dist/shared/{ccjk.Bvoex4TZ.mjs → ccjk.CfKKcvWy.mjs} +1 -1
  142. package/dist/shared/ccjk.Cjgrln_h.mjs +297 -0
  143. package/dist/shared/ccjk.CxpGa6MC.mjs +2724 -0
  144. package/dist/shared/{ccjk.DfwJOEok.mjs → ccjk.D5MFQT7w.mjs} +1 -1
  145. package/dist/shared/{ccjk.cChAaGgT.mjs → ccjk.DG_o24cZ.mjs} +6 -6
  146. package/dist/shared/{ccjk.bhFAMRyc.mjs → ccjk.DLLw-h4Y.mjs} +32 -32
  147. package/dist/shared/ccjk.DOwtZMk8.mjs +4019 -0
  148. package/dist/shared/ccjk.DSpGBMwx.mjs +38 -0
  149. package/dist/shared/{ccjk.BsXQugfY.mjs → ccjk.DTdjs-qK.mjs} +13 -13
  150. package/dist/shared/{ccjk.Bdhyg3X-.mjs → ccjk.DsYaCCx4.mjs} +1 -1
  151. package/dist/shared/ccjk.KfSWcGlE.mjs +38 -0
  152. package/dist/shared/ccjk.RyizuzOI.mjs +21 -0
  153. package/dist/shared/{ccjk.h7_W-wTs.mjs → ccjk.SPoXMvZD.mjs} +1 -1
  154. package/dist/shared/ccjk.T_cX87dY.mjs +15 -0
  155. package/dist/shared/{ccjk.CrB6OYHv.mjs → ccjk._dESH4Rk.mjs} +2 -2
  156. package/dist/shared/ccjk.bQ7Dh1g4.mjs +249 -0
  157. package/dist/shared/{ccjk.CBhIZiPz.mjs → ccjk.hoqrwWdN.mjs} +1 -1
  158. package/dist/shared/{ccjk.BNwRnWYx.mjs → ccjk.s7OCVzdd.mjs} +1230 -33
  159. package/dist/shared/{ccjk.BOIUTf5z.mjs → ccjk.waa2ikKJ.mjs} +8 -9
  160. package/package.json +31 -29
  161. package/dist/shared/ccjk.DHbrGcgg.mjs +0 -13
  162. package/dist/shared/ccjk.DntgA8fQ.mjs +0 -42
@@ -1,12 +1,11 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import process__default from 'node:process';
3
- import ansis from 'ansis';
4
- import inquirer from 'inquirer';
5
- import { version } from './package.mjs';
3
+ import a from './index2.mjs';
4
+ import { i as inquirer } from './index3.mjs';
6
5
  import { m as runCodexFullInit, d as selectMcpServices, g as getMcpServices, M as MCP_SERVICE_CONFIGS } from './codex.mjs';
7
- import { a as modifyApiConfigPartially, b as configureApiCompletely, n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration, s as selectAndInstallWorkflows, c as configureOutputStyle, f as formatApiKeyDisplay, W as WORKFLOW_CONFIG_BASE } from '../shared/ccjk.Dk1HDseQ.mjs';
6
+ import { a as modifyApiConfigPartially, b as configureApiCompletely, n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration, s as selectAndInstallWorkflows, c as configureOutputStyle, f as formatApiKeyDisplay, W as WORKFLOW_CONFIG_BASE } from '../shared/ccjk.BnpWvs9V.mjs';
8
7
  import { SETTINGS_FILE, DEFAULT_CODE_TOOL_TYPE, CODE_TOOL_BANNERS, API_DEFAULT_URL } from './constants.mjs';
9
- import { ensureI18nInitialized, i18n } from './index3.mjs';
8
+ import { ensureI18nInitialized, i18n } from './index5.mjs';
10
9
  import { displayBannerWithInfo, padToDisplayWidth } from './banner.mjs';
11
10
  import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
12
11
  import { readCcrConfig, backupCcrConfig, createDefaultCcrConfig, writeCcrConfig, configureCcrProxy, setupCcrConfiguration } from './config2.mjs';
@@ -15,17 +14,18 @@ import { promisify } from 'node:util';
15
14
  import { updateCcr } from './auto-updater.mjs';
16
15
  import { w as wrapCommandWithSudo, i as isWindows, b as isTermux } from './platform.mjs';
17
16
  import { c as addCompletedOnboarding, s as setPrimaryApiKey, b as backupMcpConfig, a as buildMcpServerConfig, r as readMcpConfig, e as replaceMcpServers, f as fixWindowsMcpConfig, w as writeMcpConfig, g as syncMcpPermissions } from './claude-config.mjs';
18
- import { r as resolveCodeType } from '../shared/ccjk.CN0edl87.mjs';
17
+ import { r as resolveCodeType } from '../shared/ccjk.BSYWk9ML.mjs';
19
18
  import { exists } from './fs-operations.mjs';
20
19
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
21
20
  import { p as promptApiConfigurationAction, i as ensureClaudeDir, e as getExistingApiConfig, s as switchToOfficialLogin, b as backupExistingConfig, c as copyConfigFiles, a as applyAiLanguageDirective, f as configureApi } from './config.mjs';
22
- import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.j4uut26D.mjs';
21
+ import { h as handleExitPromptError, a as handleGeneralError } from '../shared/ccjk.BIxuVL3_.mjs';
23
22
  import { getInstallationStatus, installClaudeCode } from './installer.mjs';
24
23
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
25
24
  import { resolveAiOutputLanguage } from './prompts.mjs';
26
- import { c as checkSuperpowersInstalled, i as installSuperpowers } from '../shared/ccjk.CrB6OYHv.mjs';
27
- import { p as promptBoolean } from '../shared/ccjk.DHbrGcgg.mjs';
25
+ import { c as checkSuperpowersInstalled, i as installSuperpowers } from '../shared/ccjk._dESH4Rk.mjs';
26
+ import { p as promptBoolean } from '../shared/ccjk.DOwtZMk8.mjs';
28
27
  import { checkClaudeCodeVersionAndPrompt } from './version-checker.mjs';
28
+ import { g as getRuntimeVersion } from '../shared/ccjk.DSpGBMwx.mjs';
29
29
 
30
30
  const execAsync$1 = promisify(exec);
31
31
  async function isCcrInstalled() {
@@ -57,39 +57,39 @@ async function installCcr() {
57
57
  ensureI18nInitialized();
58
58
  const { isInstalled, hasCorrectPackage } = await isCcrInstalled();
59
59
  if (hasCorrectPackage) {
60
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
60
+ console.log(a.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
61
61
  await updateCcr();
62
62
  return;
63
63
  }
64
64
  if (isInstalled && !hasCorrectPackage) {
65
65
  try {
66
66
  await execAsync$1("npm list -g claude-code-router");
67
- console.log(ansis.yellow(`\u26A0 ${i18n.t("ccr:detectedIncorrectPackage")}`));
67
+ console.log(a.yellow(`\u26A0 ${i18n.t("ccr:detectedIncorrectPackage")}`));
68
68
  try {
69
69
  await execAsync$1("npm uninstall -g claude-code-router");
70
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:uninstalledIncorrectPackage")}`));
70
+ console.log(a.green(`\u2714 ${i18n.t("ccr:uninstalledIncorrectPackage")}`));
71
71
  } catch {
72
- console.log(ansis.yellow(`\u26A0 ${i18n.t("ccr:failedToUninstallIncorrectPackage")}`));
72
+ console.log(a.yellow(`\u26A0 ${i18n.t("ccr:failedToUninstallIncorrectPackage")}`));
73
73
  }
74
74
  } catch {
75
75
  }
76
76
  }
77
- console.log(ansis.green(`\u{1F4E6} ${i18n.t("ccr:installingCcr")}`));
77
+ console.log(a.green(`\u{1F4E6} ${i18n.t("ccr:installingCcr")}`));
78
78
  try {
79
79
  const installArgs = ["install", "-g", "@musistudio/claude-code-router", "--force"];
80
80
  const { command, args, usedSudo } = wrapCommandWithSudo("npm", installArgs);
81
81
  if (usedSudo) {
82
- console.log(ansis.yellow(`\u2139 ${i18n.t("installation:usingSudo")}`));
82
+ console.log(a.yellow(`\u2139 ${i18n.t("installation:usingSudo")}`));
83
83
  }
84
84
  await execAsync$1([command, ...args].join(" "));
85
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrInstallSuccess")}`));
85
+ console.log(a.green(`\u2714 ${i18n.t("ccr:ccrInstallSuccess")}`));
86
86
  } catch (error) {
87
87
  if (error.message?.includes("EEXIST")) {
88
- console.log(ansis.yellow(`\u26A0 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
88
+ console.log(a.yellow(`\u26A0 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
89
89
  await updateCcr();
90
90
  return;
91
91
  }
92
- console.error(ansis.red(`\u2716 ${i18n.t("ccr:ccrInstallFailed")}`));
92
+ console.error(a.red(`\u2716 ${i18n.t("ccr:ccrInstallFailed")}`));
93
93
  throw error;
94
94
  }
95
95
  }
@@ -154,45 +154,45 @@ async function installCometixLine() {
154
154
  const installArgs = ["install", "-g", COMETIX_PACKAGE_NAME];
155
155
  const { command, args, usedSudo } = wrapCommandWithSudo("npm", installArgs);
156
156
  if (usedSudo) {
157
- console.log(ansis.yellow(`\u2139 ${i18n.t("installation:usingSudo")}`));
157
+ console.log(a.yellow(`\u2139 ${i18n.t("installation:usingSudo")}`));
158
158
  }
159
159
  await execAsync([command, ...args].join(" "));
160
160
  };
161
161
  const isInstalled = await isCometixLineInstalled();
162
162
  if (isInstalled) {
163
- console.log(ansis.green(`\u2714 ${i18n.t("cometix:cometixAlreadyInstalled")}`));
163
+ console.log(a.green(`\u2714 ${i18n.t("cometix:cometixAlreadyInstalled")}`));
164
164
  try {
165
- console.log(ansis.green(`${i18n.t("cometix:installingOrUpdating")}`));
165
+ console.log(a.green(`${i18n.t("cometix:installingOrUpdating")}`));
166
166
  await runInstallCommand();
167
- console.log(ansis.green(`\u2714 ${i18n.t("cometix:installUpdateSuccess")}`));
167
+ console.log(a.green(`\u2714 ${i18n.t("cometix:installUpdateSuccess")}`));
168
168
  } catch (error) {
169
- console.log(ansis.yellow(`\u26A0 ${i18n.t("cometix:installUpdateFailed")}: ${error}`));
169
+ console.log(a.yellow(`\u26A0 ${i18n.t("cometix:installUpdateFailed")}: ${error}`));
170
170
  }
171
171
  if (!hasCCometixLineConfig()) {
172
172
  try {
173
173
  addCCometixLineConfig();
174
- console.log(ansis.green(`\u2714 ${i18n.t("cometix:statusLineConfigured") || "Claude Code statusLine configured"}`));
174
+ console.log(a.green(`\u2714 ${i18n.t("cometix:statusLineConfigured") || "Claude Code statusLine configured"}`));
175
175
  } catch (error) {
176
- console.log(ansis.yellow(`\u26A0 ${i18n.t("cometix:statusLineConfigFailed") || "Failed to configure statusLine"}: ${error}`));
176
+ console.log(a.yellow(`\u26A0 ${i18n.t("cometix:statusLineConfigFailed") || "Failed to configure statusLine"}: ${error}`));
177
177
  }
178
178
  } else {
179
- console.log(ansis.green(`\u2139 ${i18n.t("cometix:statusLineAlreadyConfigured") || "Claude Code statusLine already configured"}`));
179
+ console.log(a.green(`\u2139 ${i18n.t("cometix:statusLineAlreadyConfigured") || "Claude Code statusLine already configured"}`));
180
180
  }
181
181
  return;
182
182
  }
183
183
  try {
184
- console.log(ansis.green(`${i18n.t("cometix:installingCometix")}`));
184
+ console.log(a.green(`${i18n.t("cometix:installingCometix")}`));
185
185
  await runInstallCommand();
186
- console.log(ansis.green(`\u2714 ${i18n.t("cometix:cometixInstallSuccess")}`));
186
+ console.log(a.green(`\u2714 ${i18n.t("cometix:cometixInstallSuccess")}`));
187
187
  try {
188
188
  addCCometixLineConfig();
189
- console.log(ansis.green(`\u2714 ${i18n.t("cometix:statusLineConfigured") || "Claude Code statusLine configured"}`));
189
+ console.log(a.green(`\u2714 ${i18n.t("cometix:statusLineConfigured") || "Claude Code statusLine configured"}`));
190
190
  } catch (configError) {
191
- console.log(ansis.yellow(`\u26A0 ${i18n.t("cometix:statusLineConfigFailed") || "Failed to configure statusLine"}: ${configError}`));
192
- console.log(ansis.green(`\u{1F4A1} ${i18n.t("cometix:statusLineManualConfig") || "Please manually add statusLine configuration to Claude Code settings"}`));
191
+ console.log(a.yellow(`\u26A0 ${i18n.t("cometix:statusLineConfigFailed") || "Failed to configure statusLine"}: ${configError}`));
192
+ console.log(a.green(`\u{1F4A1} ${i18n.t("cometix:statusLineManualConfig") || "Please manually add statusLine configuration to Claude Code settings"}`));
193
193
  }
194
194
  } catch (error) {
195
- console.error(ansis.red(`\u2717 ${i18n.t("cometix:cometixInstallFailed")}: ${error}`));
195
+ console.error(a.red(`\u2717 ${i18n.t("cometix:cometixInstallFailed")}: ${error}`));
196
196
  throw error;
197
197
  }
198
198
  }
@@ -260,17 +260,17 @@ function formatError(error, context) {
260
260
  function displayError(error, context) {
261
261
  const formatted = formatError(error, context);
262
262
  console.error();
263
- console.error(ansis.red(formatted.title));
263
+ console.error(a.red(formatted.title));
264
264
  console.error(formatted.message);
265
265
  if (formatted.suggestion) {
266
266
  console.error();
267
- console.error(ansis.yellow("\u{1F4A1} Suggestion:"), formatted.suggestion);
267
+ console.error(a.yellow("\u{1F4A1} Suggestion:"), formatted.suggestion);
268
268
  }
269
269
  if (formatted.command) {
270
- console.error(ansis.cyan(" Run:"), ansis.green(formatted.command));
270
+ console.error(a.cyan(" Run:"), a.green(formatted.command));
271
271
  }
272
272
  if (formatted.docsUrl) {
273
- console.error(ansis.cyan(" Docs:"), ansis.blue(formatted.docsUrl));
273
+ console.error(a.cyan(" Docs:"), a.blue(formatted.docsUrl));
274
274
  }
275
275
  console.error();
276
276
  }
@@ -287,8 +287,8 @@ class ProgressTracker {
287
287
  }
288
288
  start() {
289
289
  console.log();
290
- console.log(ansis.cyan("\u{1F680} Starting setup..."));
291
- console.log(ansis.gray(` ${this.totalSteps} steps to complete`));
290
+ console.log(a.cyan("\u{1F680} Starting setup..."));
291
+ console.log(a.gray(` ${this.totalSteps} steps to complete`));
292
292
  console.log();
293
293
  }
294
294
  nextStep(message) {
@@ -297,30 +297,31 @@ class ProgressTracker {
297
297
  const progress = Math.round(this.currentStep / this.totalSteps * 100);
298
298
  const bar = this.renderProgressBar(progress);
299
299
  console.log();
300
- console.log(ansis.cyan(`[${this.currentStep}/${this.totalSteps}]`), stepName);
301
- console.log(ansis.gray(` ${bar} ${progress}%`));
300
+ console.log(a.cyan(`[${this.currentStep}/${this.totalSteps}]`), stepName);
301
+ console.log(a.gray(` ${bar} ${progress}%`));
302
302
  }
303
303
  complete() {
304
304
  const duration = ((Date.now() - this.startTime) / 1e3).toFixed(1);
305
305
  console.log();
306
- console.log(ansis.green("\u2705 Setup complete!"));
307
- console.log(ansis.gray(` Completed in ${duration}s`));
306
+ console.log(a.green("\u2705 Setup complete!"));
307
+ console.log(a.gray(` Completed in ${duration}s`));
308
308
  console.log();
309
309
  }
310
310
  error(message) {
311
311
  console.log();
312
- console.log(ansis.red("\u274C Setup failed"));
313
- console.log(ansis.white(` ${message}`));
312
+ console.log(a.red("\u274C Setup failed"));
313
+ console.log(a.white(` ${message}`));
314
314
  console.log();
315
315
  }
316
316
  renderProgressBar(percent) {
317
317
  const width = 20;
318
318
  const filled = Math.round(percent / 100 * width);
319
319
  const empty = width - filled;
320
- return ansis.green("\u2588".repeat(filled)) + ansis.gray("\u2591".repeat(empty));
320
+ return a.green("\u2588".repeat(filled)) + a.gray("\u2591".repeat(empty));
321
321
  }
322
322
  }
323
323
 
324
+ const ccjkVersion = getRuntimeVersion();
324
325
  async function validateSkipPromptOptions(options) {
325
326
  if (options.allLang) {
326
327
  if (options.allLang === "zh-CN" || options.allLang === "en") {
@@ -509,12 +510,12 @@ async function handleSuperpowersInstallation(options) {
509
510
  try {
510
511
  const status = await checkSuperpowersInstalled();
511
512
  if (status.installed) {
512
- console.log(ansis.green(`\u2714 ${i18n.t("superpowers:alreadyInstalled")}`));
513
+ console.log(a.green(`\u2714 ${i18n.t("superpowers:alreadyInstalled")}`));
513
514
  if (status.version) {
514
- console.log(ansis.gray(` ${i18n.t("superpowers:status.version", { version: status.version })}`));
515
+ console.log(a.gray(` ${i18n.t("superpowers:status.version", { version: status.version })}`));
515
516
  }
516
517
  if (status.skillCount) {
517
- console.log(ansis.gray(` ${i18n.t("superpowers:status.skillCount", { count: status.skillCount })}`));
518
+ console.log(a.gray(` ${i18n.t("superpowers:status.skillCount", { count: status.skillCount })}`));
518
519
  }
519
520
  return;
520
521
  }
@@ -522,17 +523,17 @@ async function handleSuperpowersInstallation(options) {
522
523
  if (options.skipPrompt) {
523
524
  shouldInstall = options.installSuperpowers === true;
524
525
  } else {
525
- console.log(ansis.green(`
526
+ console.log(a.green(`
526
527
  ${i18n.t("superpowers:title")}`));
527
- console.log(ansis.gray(i18n.t("superpowers:description")));
528
- console.log(ansis.gray(i18n.t("superpowers:installPromptDescription")));
528
+ console.log(a.gray(i18n.t("superpowers:description")));
529
+ console.log(a.gray(i18n.t("superpowers:installPromptDescription")));
529
530
  shouldInstall = await promptBoolean({
530
531
  message: i18n.t("superpowers:installPrompt"),
531
532
  defaultValue: false
532
533
  });
533
534
  }
534
535
  if (!shouldInstall) {
535
- console.log(ansis.yellow(i18n.t("common:skip")));
536
+ console.log(a.yellow(i18n.t("common:skip")));
536
537
  return;
537
538
  }
538
539
  const result = await installSuperpowers({
@@ -540,16 +541,16 @@ ${i18n.t("superpowers:title")}`));
540
541
  skipPrompt: options.skipPrompt
541
542
  });
542
543
  if (result.success) {
543
- console.log(ansis.green(`\u2714 ${result.message}`));
544
+ console.log(a.green(`\u2714 ${result.message}`));
544
545
  } else {
545
- console.error(ansis.red(`\u2716 ${result.message}`));
546
+ console.error(a.red(`\u2716 ${result.message}`));
546
547
  if (result.error) {
547
- console.error(ansis.gray(` ${result.error}`));
548
+ console.error(a.gray(` ${result.error}`));
548
549
  }
549
550
  }
550
551
  } catch (error) {
551
552
  const errorMessage = error instanceof Error ? error.message : String(error);
552
- console.error(ansis.red(`${i18n.t("superpowers:installFailed")}: ${errorMessage}`));
553
+ console.error(a.red(`${i18n.t("superpowers:installFailed")}: ${errorMessage}`));
553
554
  }
554
555
  }
555
556
  async function init(options = {}) {
@@ -557,7 +558,7 @@ async function init(options = {}) {
557
558
  const { cleanupZcfNamespace } = await import('./cleanup-migration.mjs');
558
559
  const { removed } = cleanupZcfNamespace();
559
560
  if (removed.length > 0) {
560
- console.log(ansis.dim(`Cleaned up legacy zcf namespace: ${removed.join(", ")}`));
561
+ console.log(a.dim(`Cleaned up legacy zcf namespace: ${removed.join(", ")}`));
561
562
  }
562
563
  } catch {
563
564
  }
@@ -590,7 +591,7 @@ async function init(options = {}) {
590
591
  codeToolType = await resolveCodeType(options.codeType);
591
592
  } catch (error) {
592
593
  const errorMessage = error instanceof Error ? error.message : String(error);
593
- console.error(ansis.red(`${i18n.t("errors:generalError")} ${errorMessage}`));
594
+ console.error(a.red(`${i18n.t("errors:generalError")} ${errorMessage}`));
594
595
  codeToolType = DEFAULT_CODE_TOOL_TYPE;
595
596
  }
596
597
  options.codeType = codeToolType;
@@ -637,12 +638,12 @@ async function init(options = {}) {
637
638
  try {
638
639
  addCompletedOnboarding();
639
640
  } catch (error) {
640
- console.error(ansis.red(i18n.t("errors:failedToSetOnboarding")), error);
641
+ console.error(a.red(i18n.t("errors:failedToSetOnboarding")), error);
641
642
  }
642
643
  try {
643
644
  setPrimaryApiKey();
644
645
  } catch (error) {
645
- const { ensureI18nInitialized, i18n: i18nModule } = await import('./index3.mjs');
646
+ const { ensureI18nInitialized, i18n: i18nModule } = await import('./index5.mjs');
646
647
  ensureI18nInitialized();
647
648
  console.error(i18nModule.t("mcp:primaryApiKeySetFailed"), error);
648
649
  }
@@ -655,19 +656,19 @@ async function init(options = {}) {
655
656
  message: i18n.t("api:configureApi"),
656
657
  choices: [
657
658
  {
658
- name: `${i18n.t("api:useAuthToken")} - ${ansis.gray(i18n.t("api:authTokenDesc"))}`,
659
+ name: `${i18n.t("api:useAuthToken")} - ${a.gray(i18n.t("api:authTokenDesc"))}`,
659
660
  value: "auth_token",
660
661
  short: i18n.t("api:useAuthToken")
661
662
  },
662
663
  {
663
- name: `${i18n.t("api:useApiKey")} - ${ansis.gray(i18n.t("api:apiKeyDesc"))}`,
664
+ name: `${i18n.t("api:useApiKey")} - ${a.gray(i18n.t("api:apiKeyDesc"))}`,
664
665
  value: "api_key",
665
666
  short: i18n.t("api:useApiKey")
666
667
  }
667
668
  ]
668
669
  });
669
670
  if (!apiChoice) {
670
- console.log(ansis.yellow(i18n.t("common:cancelled")));
671
+ console.log(a.yellow(i18n.t("common:cancelled")));
671
672
  process__default.exit(0);
672
673
  }
673
674
  return await configureApiCompletely(apiChoice);
@@ -677,9 +678,9 @@ async function init(options = {}) {
677
678
  displayBannerWithInfo(CODE_TOOL_BANNERS[codeToolType] || "CCJK");
678
679
  }
679
680
  if (isTermux()) {
680
- console.log(ansis.yellow(`
681
+ console.log(a.yellow(`
681
682
  \u2139 ${i18n.t("installation:termuxDetected")}`));
682
- console.log(ansis.gray(i18n.t("installation:termuxEnvironmentInfo")));
683
+ console.log(a.gray(i18n.t("installation:termuxEnvironmentInfo")));
683
684
  }
684
685
  let configLang = options.configLang;
685
686
  if (codeToolType === "codex") {
@@ -734,7 +735,7 @@ async function init(options = {}) {
734
735
  workflows: selectedWorkflows
735
736
  });
736
737
  updateZcfConfig({
737
- version,
738
+ version: ccjkVersion,
738
739
  preferredLang: i18n.language,
739
740
  // CCJK界面语言
740
741
  templateLang: configLang,
@@ -742,7 +743,7 @@ async function init(options = {}) {
742
743
  aiOutputLang: resolvedAiOutputLang ?? options.aiOutputLang ?? zcfConfig?.aiOutputLang ?? "en",
743
744
  codeToolType
744
745
  });
745
- console.log(ansis.green(i18n.t("codex:setupComplete")));
746
+ console.log(a.green(i18n.t("codex:setupComplete")));
746
747
  return;
747
748
  }
748
749
  const aiOutputLang = await resolveAiOutputLanguage(i18n.language, options.aiOutputLang, zcfConfig, options.skipPrompt);
@@ -751,12 +752,12 @@ async function init(options = {}) {
751
752
  const { verifyInstallation, displayVerificationResult } = await import('./installer.mjs');
752
753
  const verification = await verifyInstallation("claude-code");
753
754
  if (verification.symlinkCreated) {
754
- console.log(ansis.green(`\u2714 ${i18n.t("installation:alreadyInstalled")}`));
755
+ console.log(a.green(`\u2714 ${i18n.t("installation:alreadyInstalled")}`));
755
756
  displayVerificationResult(verification, "claude-code");
756
757
  } else if (!verification.success) {
757
- console.log(ansis.yellow(`\u26A0 ${i18n.t("installation:verificationFailed")}`));
758
+ console.log(a.yellow(`\u26A0 ${i18n.t("installation:verificationFailed")}`));
758
759
  if (verification.error) {
759
- console.log(ansis.gray(` ${verification.error}`));
760
+ console.log(a.gray(` ${verification.error}`));
760
761
  }
761
762
  }
762
763
  } else {
@@ -770,7 +771,7 @@ async function init(options = {}) {
770
771
  if (shouldInstall) {
771
772
  await installClaudeCode(false);
772
773
  } else {
773
- console.log(ansis.yellow(i18n.t("common:skip")));
774
+ console.log(a.yellow(i18n.t("common:skip")));
774
775
  }
775
776
  }
776
777
  }
@@ -780,7 +781,7 @@ async function init(options = {}) {
780
781
  ensureClaudeDir();
781
782
  if (existsSync(SETTINGS_FILE) && needsMigration()) {
782
783
  if (options.skipPrompt) {
783
- console.log(ansis.yellow("\n\u26A0\uFE0F Problematic configuration detected. Auto-fixing...\n"));
784
+ console.log(a.yellow("\n\u26A0\uFE0F Problematic configuration detected. Auto-fixing...\n"));
784
785
  const result = migrateSettingsForTokenRetrieval();
785
786
  displayMigrationResult(result);
786
787
  } else {
@@ -796,7 +797,7 @@ async function init(options = {}) {
796
797
  if (options.skipPrompt) {
797
798
  action = options.configAction || "backup";
798
799
  if (action === "skip") {
799
- console.log(ansis.yellow(i18n.t("common:skip")));
800
+ console.log(a.yellow(i18n.t("common:skip")));
800
801
  return;
801
802
  }
802
803
  } else {
@@ -812,12 +813,12 @@ async function init(options = {}) {
812
813
  ])
813
814
  });
814
815
  if (!userAction) {
815
- console.log(ansis.yellow(i18n.t("common:cancelled")));
816
+ console.log(a.yellow(i18n.t("common:cancelled")));
816
817
  process__default.exit(0);
817
818
  }
818
819
  action = userAction;
819
820
  if (action === "skip") {
820
- console.log(ansis.yellow(i18n.t("common:skip")));
821
+ console.log(a.yellow(i18n.t("common:skip")));
821
822
  return;
822
823
  }
823
824
  }
@@ -867,24 +868,24 @@ async function init(options = {}) {
867
868
  if (!ccrStatus.hasCorrectPackage) {
868
869
  await installCcr();
869
870
  } else {
870
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
871
+ console.log(a.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
871
872
  }
872
873
  const existingCcrConfig = readCcrConfig();
873
874
  if (existingCcrConfig) {
874
875
  const backupPath = await backupCcrConfig();
875
876
  if (backupPath) {
876
- console.log(ansis.gray(`\u2714 ${i18n.t("ccr:ccrBackupSuccess")}: ${backupPath}`));
877
+ console.log(a.gray(`\u2714 ${i18n.t("ccr:ccrBackupSuccess")}: ${backupPath}`));
877
878
  }
878
879
  }
879
880
  const defaultCcrConfig = createDefaultCcrConfig();
880
881
  writeCcrConfig(defaultCcrConfig);
881
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrConfigSuccess")}`));
882
+ console.log(a.green(`\u2714 ${i18n.t("ccr:ccrConfigSuccess")}`));
882
883
  await configureCcrProxy(defaultCcrConfig);
883
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:proxyConfigSuccess")}`));
884
+ console.log(a.green(`\u2714 ${i18n.t("ccr:proxyConfigSuccess")}`));
884
885
  try {
885
886
  addCompletedOnboarding();
886
887
  } catch (error) {
887
- console.error(ansis.red(i18n.t("errors:failedToSetOnboarding")), error);
888
+ console.error(a.red(i18n.t("errors:failedToSetOnboarding")), error);
888
889
  }
889
890
  apiConfig = null;
890
891
  }
@@ -895,10 +896,10 @@ async function init(options = {}) {
895
896
  case "official": {
896
897
  const success = switchToOfficialLogin();
897
898
  if (success) {
898
- console.log(ansis.green(`\u2714 ${i18n.t("api:officialLoginConfigured")}`));
899
+ console.log(a.green(`\u2714 ${i18n.t("api:officialLoginConfigured")}`));
899
900
  apiConfig = null;
900
901
  } else {
901
- console.log(ansis.red(i18n.t("api:officialLoginFailed")));
902
+ console.log(a.red(i18n.t("api:officialLoginFailed")));
902
903
  }
903
904
  break;
904
905
  }
@@ -910,11 +911,11 @@ async function init(options = {}) {
910
911
  if (!ccrStatus.hasCorrectPackage) {
911
912
  await installCcr();
912
913
  } else {
913
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
914
+ console.log(a.green(`\u2714 ${i18n.t("ccr:ccrAlreadyInstalled")}`));
914
915
  }
915
916
  const ccrConfigured = await setupCcrConfiguration();
916
917
  if (ccrConfigured) {
917
- console.log(ansis.green(`\u2714 ${i18n.t("ccr:ccrSetupComplete")}`));
918
+ console.log(a.green(`\u2714 ${i18n.t("ccr:ccrSetupComplete")}`));
918
919
  apiConfig = null;
919
920
  }
920
921
  break;
@@ -923,7 +924,7 @@ async function init(options = {}) {
923
924
  apiConfig = null;
924
925
  break;
925
926
  default:
926
- console.log(ansis.yellow(i18n.t("common:cancelled")));
927
+ console.log(a.yellow(i18n.t("common:cancelled")));
927
928
  process__default.exit(0);
928
929
  }
929
930
  }
@@ -931,7 +932,7 @@ async function init(options = {}) {
931
932
  if (["backup", "docs-only", "merge"].includes(action)) {
932
933
  const backupDir = backupExistingConfig();
933
934
  if (backupDir) {
934
- console.log(ansis.gray(`\u2714 ${i18n.t("configuration:backupSuccess")}: ${backupDir}`));
935
+ console.log(a.gray(`\u2714 ${i18n.t("configuration:backupSuccess")}: ${backupDir}`));
935
936
  }
936
937
  }
937
938
  if (action === "docs-only") {
@@ -967,9 +968,9 @@ async function init(options = {}) {
967
968
  if (apiConfig && action !== "docs-only") {
968
969
  const configuredApi = configureApi(apiConfig);
969
970
  if (configuredApi) {
970
- console.log(ansis.green(`\u2714 ${i18n.t("api:apiConfigSuccess")}`));
971
- console.log(ansis.gray(` URL: ${configuredApi.url}`));
972
- console.log(ansis.gray(` Key: ${formatApiKeyDisplay(configuredApi.key)}`));
971
+ console.log(a.green(`\u2714 ${i18n.t("api:apiConfigSuccess")}`));
972
+ console.log(a.gray(` URL: ${configuredApi.url}`));
973
+ console.log(a.gray(` Key: ${formatApiKeyDisplay(configuredApi.key)}`));
973
974
  }
974
975
  }
975
976
  const hasModelParams = options.apiModel || options.apiHaikuModel || options.apiSonnetModel || options.apiOpusModel;
@@ -982,16 +983,16 @@ async function init(options = {}) {
982
983
  options.apiSonnetModel || void 0,
983
984
  options.apiOpusModel || void 0
984
985
  );
985
- console.log(ansis.green(`\u2714 ${i18n.t("api:modelConfigSuccess")}`));
986
+ console.log(a.green(`\u2714 ${i18n.t("api:modelConfigSuccess")}`));
986
987
  if (options.apiModel) {
987
- console.log(ansis.gray(` ${i18n.t("api:primaryModel")}: ${options.apiModel}`));
988
+ console.log(a.gray(` ${i18n.t("api:primaryModel")}: ${options.apiModel}`));
988
989
  }
989
990
  if (options.apiHaikuModel)
990
- console.log(ansis.gray(` Haiku: ${options.apiHaikuModel}`));
991
+ console.log(a.gray(` Haiku: ${options.apiHaikuModel}`));
991
992
  if (options.apiSonnetModel)
992
- console.log(ansis.gray(` Sonnet: ${options.apiSonnetModel}`));
993
+ console.log(a.gray(` Sonnet: ${options.apiSonnetModel}`));
993
994
  if (options.apiOpusModel)
994
- console.log(ansis.gray(` Opus: ${options.apiOpusModel}`));
995
+ console.log(a.gray(` Opus: ${options.apiOpusModel}`));
995
996
  }
996
997
  }
997
998
  if (!options.skipPrompt && !options.skipBanner) tracker.nextStep("Installing MCP services");
@@ -1008,7 +1009,7 @@ async function init(options = {}) {
1008
1009
  }
1009
1010
  if (shouldConfigureMcp) {
1010
1011
  if (isWindows()) {
1011
- console.log(ansis.green(`\u2139 ${i18n.t("installation:windowsDetected")}`));
1012
+ console.log(a.green(`\u2139 ${i18n.t("installation:windowsDetected")}`));
1012
1013
  }
1013
1014
  let selectedServices;
1014
1015
  if (options.skipPrompt) {
@@ -1022,7 +1023,7 @@ async function init(options = {}) {
1022
1023
  if (selectedServices.length > 0) {
1023
1024
  const mcpBackupPath = backupMcpConfig();
1024
1025
  if (mcpBackupPath) {
1025
- console.log(ansis.gray(`\u2714 ${i18n.t("mcp:mcpBackupSuccess")}: ${mcpBackupPath}`));
1026
+ console.log(a.gray(`\u2714 ${i18n.t("mcp:mcpBackupSuccess")}: ${mcpBackupPath}`));
1026
1027
  }
1027
1028
  const newServers = {};
1028
1029
  for (const serviceId of selectedServices) {
@@ -1043,7 +1044,7 @@ async function init(options = {}) {
1043
1044
  }
1044
1045
  if (service.requiresApiKey) {
1045
1046
  if (options.skipPrompt) {
1046
- console.log(ansis.yellow(`${i18n.t("common:skip")}: ${service.name} (requires API key)`));
1047
+ console.log(a.yellow(`${i18n.t("common:skip")}: ${service.name} (requires API key)`));
1047
1048
  continue;
1048
1049
  } else {
1049
1050
  const response = await inquirer.prompt({
@@ -1053,7 +1054,7 @@ async function init(options = {}) {
1053
1054
  validate: (value) => !!value || i18n.t("api:keyRequired")
1054
1055
  });
1055
1056
  if (!response.apiKey) {
1056
- console.log(ansis.yellow(`${i18n.t("common:skip")}: ${service.name}`));
1057
+ console.log(a.yellow(`${i18n.t("common:skip")}: ${service.name}`));
1057
1058
  continue;
1058
1059
  }
1059
1060
  config = buildMcpServerConfig(service.config, response.apiKey, service.apiKeyPlaceholder, service.apiKeyEnvVar);
@@ -1067,7 +1068,7 @@ async function init(options = {}) {
1067
1068
  try {
1068
1069
  writeMcpConfig(mergedConfig);
1069
1070
  syncMcpPermissions();
1070
- console.log(ansis.green(`\u2714 ${i18n.t("mcp:mcpConfigSuccess")}`));
1071
+ console.log(a.green(`\u2714 ${i18n.t("mcp:mcpConfigSuccess")}`));
1071
1072
  const { checkMcpPerformance, formatPerformanceWarning } = await import('./mcp-performance.mjs').then(function (n) { return n.e; });
1072
1073
  const serviceCount = Object.keys(newServers).length;
1073
1074
  const perfWarning = checkMcpPerformance(serviceCount);
@@ -1096,10 +1097,10 @@ async function init(options = {}) {
1096
1097
  if (shouldInstallCometix) {
1097
1098
  await installCometixLine();
1098
1099
  } else {
1099
- console.log(ansis.yellow(i18n.t("cometix:cometixSkipped")));
1100
+ console.log(a.yellow(i18n.t("cometix:cometixSkipped")));
1100
1101
  }
1101
1102
  } else {
1102
- console.log(ansis.green(`\u2714 ${i18n.t("cometix:cometixAlreadyInstalled")}`));
1103
+ console.log(a.green(`\u2714 ${i18n.t("cometix:cometixAlreadyInstalled")}`));
1103
1104
  }
1104
1105
  if (!options.skipPrompt || options.installSuperpowers) {
1105
1106
  await handleSuperpowersInstallation(options);
@@ -1108,14 +1109,14 @@ async function init(options = {}) {
1108
1109
  const { injectSmartGuide } = await import('./smart-guide.mjs');
1109
1110
  const smartGuideSuccess = await injectSmartGuide(configLang);
1110
1111
  if (smartGuideSuccess) {
1111
- console.log(ansis.green(`\u2714 ${i18n.t("smartGuide:enabled")}`));
1112
+ console.log(a.green(`\u2714 ${i18n.t("smartGuide:enabled")}`));
1112
1113
  }
1113
1114
  } catch {
1114
- console.log(ansis.gray(`\u2139 ${i18n.t("smartGuide:skipped")}`));
1115
+ console.log(a.gray(`\u2139 ${i18n.t("smartGuide:skipped")}`));
1115
1116
  }
1116
1117
  if (!options.skipPrompt && !options.skipBanner) tracker.nextStep("Finalizing setup");
1117
1118
  updateZcfConfig({
1118
- version,
1119
+ version: ccjkVersion,
1119
1120
  preferredLang: i18n.language,
1120
1121
  // CCJK界面语言
1121
1122
  templateLang: configLang,
@@ -1132,38 +1133,38 @@ async function init(options = {}) {
1132
1133
  if (confirmImport) {
1133
1134
  try {
1134
1135
  await importRecommendedEnv();
1135
- console.log(ansis.green(`\u2714 ${i18n.t("configuration:envImportSuccess")}`));
1136
+ console.log(a.green(`\u2714 ${i18n.t("configuration:envImportSuccess")}`));
1136
1137
  } catch (error) {
1137
- console.error(ansis.yellow(`\u26A0 ${i18n.t("configuration:envImportFailed")}: ${error}`));
1138
+ console.error(a.yellow(`\u26A0 ${i18n.t("configuration:envImportFailed")}: ${error}`));
1138
1139
  }
1139
1140
  try {
1140
1141
  await importRecommendedPermissions();
1141
- console.log(ansis.green(`\u2714 ${i18n.t("configuration:permissionsImportSuccess") || "\u6743\u9650\u914D\u7F6E\u5DF2\u5BFC\u5165"}`));
1142
+ console.log(a.green(`\u2714 ${i18n.t("configuration:permissionsImportSuccess") || "\u6743\u9650\u914D\u7F6E\u5DF2\u5BFC\u5165"}`));
1142
1143
  } catch (error) {
1143
- console.error(ansis.yellow(`\u26A0 ${i18n.t("configuration:permissionsImportFailed")}: ${error}`));
1144
+ console.error(a.yellow(`\u26A0 ${i18n.t("configuration:permissionsImportFailed")}: ${error}`));
1144
1145
  }
1145
1146
  console.log();
1146
1147
  }
1147
1148
  }
1148
1149
  if (!options.skipPrompt && !options.skipBanner) tracker.complete();
1149
1150
  console.log("");
1150
- console.log(ansis.bold.green("\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\u2557"));
1151
- console.log(ansis.bold.green("\u2551") + ansis.bold.white(padToDisplayWidth(` ${i18n.t("configuration:setupCompleteTitle")}`, 62)) + ansis.bold.green("\u2551"));
1152
- console.log(ansis.bold.green("\u2560\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\u2563"));
1153
- console.log(`${ansis.bold.green("\u2551")} ${ansis.bold.green("\u2551")}`);
1154
- console.log(ansis.bold.green("\u2551") + ansis.green(padToDisplayWidth(` ${i18n.t("configuration:nextSteps")}`, 62)) + ansis.bold.green("\u2551"));
1155
- console.log(`${ansis.bold.green("\u2551")} ${ansis.bold.green("\u2551")}`);
1156
- console.log(ansis.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep1")}`, 62) + ansis.bold.green("\u2551"));
1157
- console.log(ansis.bold.green("\u2551") + ansis.dim(padToDisplayWidth(` ${i18n.t("configuration:guidanceStep1Detail")}`, 62)) + ansis.bold.green("\u2551"));
1158
- console.log(ansis.bold.green("\u2551") + ansis.dim(padToDisplayWidth(` ${i18n.t("configuration:guidanceStep1Detail2")}`, 62)) + ansis.bold.green("\u2551"));
1159
- console.log(`${ansis.bold.green("\u2551")} ${ansis.bold.green("\u2551")}`);
1160
- console.log(ansis.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep2")}`, 62) + ansis.bold.green("\u2551"));
1161
- console.log(ansis.bold.green("\u2551") + ansis.green(padToDisplayWidth(` ${i18n.t("configuration:guidanceStep2Example")}`, 62)) + ansis.bold.green("\u2551"));
1162
- console.log(`${ansis.bold.green("\u2551")} ${ansis.bold.green("\u2551")}`);
1163
- console.log(ansis.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep3")} `, 44) + ansis.yellow(padToDisplayWidth(i18n.t("configuration:guidanceStep3Command"), 18)) + ansis.bold.green("\u2551"));
1164
- console.log(ansis.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep4")} `, 44) + ansis.yellow(padToDisplayWidth(i18n.t("configuration:guidanceStep4Command"), 18)) + ansis.bold.green("\u2551"));
1165
- console.log(`${ansis.bold.green("\u2551")} ${ansis.bold.green("\u2551")}`);
1166
- console.log(ansis.bold.green("\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\u255D"));
1151
+ console.log(a.bold.green("\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\u2557"));
1152
+ console.log(a.bold.green("\u2551") + a.bold.white(padToDisplayWidth(` ${i18n.t("configuration:setupCompleteTitle")}`, 62)) + a.bold.green("\u2551"));
1153
+ console.log(a.bold.green("\u2560\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\u2563"));
1154
+ console.log(`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`);
1155
+ console.log(a.bold.green("\u2551") + a.green(padToDisplayWidth(` ${i18n.t("configuration:nextSteps")}`, 62)) + a.bold.green("\u2551"));
1156
+ console.log(`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`);
1157
+ console.log(a.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep1")}`, 62) + a.bold.green("\u2551"));
1158
+ console.log(a.bold.green("\u2551") + a.dim(padToDisplayWidth(` ${i18n.t("configuration:guidanceStep1Detail")}`, 62)) + a.bold.green("\u2551"));
1159
+ console.log(a.bold.green("\u2551") + a.dim(padToDisplayWidth(` ${i18n.t("configuration:guidanceStep1Detail2")}`, 62)) + a.bold.green("\u2551"));
1160
+ console.log(`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`);
1161
+ console.log(a.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep2")}`, 62) + a.bold.green("\u2551"));
1162
+ console.log(a.bold.green("\u2551") + a.green(padToDisplayWidth(` ${i18n.t("configuration:guidanceStep2Example")}`, 62)) + a.bold.green("\u2551"));
1163
+ console.log(`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`);
1164
+ console.log(a.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep3")} `, 44) + a.yellow(padToDisplayWidth(i18n.t("configuration:guidanceStep3Command"), 18)) + a.bold.green("\u2551"));
1165
+ console.log(a.bold.green("\u2551") + padToDisplayWidth(` ${i18n.t("configuration:guidanceStep4")} `, 44) + a.yellow(padToDisplayWidth(i18n.t("configuration:guidanceStep4Command"), 18)) + a.bold.green("\u2551"));
1166
+ console.log(`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`);
1167
+ console.log(a.bold.green("\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\u255D"));
1167
1168
  console.log("");
1168
1169
  } catch (error) {
1169
1170
  if (!handleExitPromptError(error)) {
@@ -1173,7 +1174,7 @@ async function init(options = {}) {
1173
1174
  }
1174
1175
  }
1175
1176
  async function handleMultiConfigurations(options, codeToolType) {
1176
- const { ensureI18nInitialized } = await import('./index3.mjs');
1177
+ const { ensureI18nInitialized } = await import('./index5.mjs');
1177
1178
  ensureI18nInitialized();
1178
1179
  try {
1179
1180
  let configs = [];
@@ -1199,7 +1200,7 @@ async function handleMultiConfigurations(options, codeToolType) {
1199
1200
  } else if (codeToolType === "codex") {
1200
1201
  await handleCodexConfigs(configs);
1201
1202
  }
1202
- console.log(ansis.green(`\u2714 ${i18n.t("multi-config:configsAddedSuccessfully")}`));
1203
+ console.log(a.green(`\u2714 ${i18n.t("multi-config:configsAddedSuccessfully")}`));
1203
1204
  } catch (error) {
1204
1205
  displayError(error, "Multi-config setup");
1205
1206
  throw error;
@@ -1257,11 +1258,11 @@ async function handleClaudeCodeConfigs(configs) {
1257
1258
  }
1258
1259
  const storedProfile = result.addedProfile || ClaudeCodeConfigManager.getProfileByName(config.name) || profile;
1259
1260
  addedProfiles.push(storedProfile);
1260
- console.log(ansis.green(`\u2714 ${i18n.t("multi-config:profileAdded", { name: config.name })}`));
1261
+ console.log(a.green(`\u2714 ${i18n.t("multi-config:profileAdded", { name: config.name })}`));
1261
1262
  }
1262
1263
  if (addedProfiles.length > 0) {
1263
1264
  const summary = addedProfiles.map((profile) => `${profile.name} [${profile.authType}]`).join(", ");
1264
- console.log(ansis.gray(` \u2022 ${ClaudeCodeConfigManager.CONFIG_FILE}: ${summary}`));
1265
+ console.log(a.gray(` \u2022 ${ClaudeCodeConfigManager.CONFIG_FILE}: ${summary}`));
1265
1266
  }
1266
1267
  const defaultConfig = configs.find((c) => c.default);
1267
1268
  if (defaultConfig) {
@@ -1269,7 +1270,7 @@ async function handleClaudeCodeConfigs(configs) {
1269
1270
  if (profile && profile.id) {
1270
1271
  await ClaudeCodeConfigManager.switchProfile(profile.id);
1271
1272
  await ClaudeCodeConfigManager.applyProfileSettings(profile);
1272
- console.log(ansis.green(`\u2714 ${i18n.t("multi-config:defaultProfileSet", { name: defaultConfig.name })}`));
1273
+ console.log(a.green(`\u2714 ${i18n.t("multi-config:defaultProfileSet", { name: defaultConfig.name })}`));
1273
1274
  }
1274
1275
  }
1275
1276
  await ClaudeCodeConfigManager.syncCcrProfile();
@@ -1285,9 +1286,9 @@ async function handleCodexConfigs(configs) {
1285
1286
  throw new Error(i18n.t("multi-config:providerAddFailed", { name: config.name, error: result.error }));
1286
1287
  }
1287
1288
  addedProviderIds.push(provider.id);
1288
- console.log(ansis.green(`\u2714 ${i18n.t("multi-config:providerAdded", { name: config.name })}`));
1289
+ console.log(a.green(`\u2714 ${i18n.t("multi-config:providerAdded", { name: config.name })}`));
1289
1290
  } catch (error) {
1290
- console.error(ansis.red(i18n.t("multi-config:providerAddFailed", {
1291
+ console.error(a.red(i18n.t("multi-config:providerAddFailed", {
1291
1292
  name: config.name,
1292
1293
  error: error instanceof Error ? error.message : String(error)
1293
1294
  })));
@@ -1301,9 +1302,9 @@ async function handleCodexConfigs(configs) {
1301
1302
  const providerId = displayName.toLowerCase().replace(/[^a-z0-9]/g, "-");
1302
1303
  if (addedProviderIds.includes(providerId)) {
1303
1304
  await switchCodexProvider(providerId);
1304
- console.log(ansis.green(`\u2714 ${i18n.t("multi-config:defaultProviderSet", { name: displayName })}`));
1305
+ console.log(a.green(`\u2714 ${i18n.t("multi-config:defaultProviderSet", { name: displayName })}`));
1305
1306
  } else {
1306
- console.log(ansis.red(i18n.t("multi-config:providerAddFailed", { name: displayName, error: "provider not added" })));
1307
+ console.log(a.red(i18n.t("multi-config:providerAddFailed", { name: displayName, error: "provider not added" })));
1307
1308
  }
1308
1309
  }
1309
1310
  }
@@ -1318,12 +1319,12 @@ async function saveSingleConfigToToml(apiConfig, provider, options) {
1318
1319
  await ClaudeCodeConfigManager.switchProfile(savedProfile.id);
1319
1320
  await ClaudeCodeConfigManager.applyProfileSettings(savedProfile);
1320
1321
  }
1321
- console.log(ansis.green(`\u2714 ${i18n.t("configuration:singleConfigSaved", { name: profile.name })}`));
1322
+ console.log(a.green(`\u2714 ${i18n.t("configuration:singleConfigSaved", { name: profile.name })}`));
1322
1323
  } else {
1323
- console.warn(ansis.yellow(`${i18n.t("configuration:singleConfigSaveFailed")}: ${result.error}`));
1324
+ console.warn(a.yellow(`${i18n.t("configuration:singleConfigSaveFailed")}: ${result.error}`));
1324
1325
  }
1325
1326
  } catch (error) {
1326
- console.warn(ansis.yellow(`${i18n.t("configuration:singleConfigSaveFailed")}: ${error instanceof Error ? error.message : String(error)}`));
1327
+ console.warn(a.yellow(`${i18n.t("configuration:singleConfigSaveFailed")}: ${error instanceof Error ? error.message : String(error)}`));
1327
1328
  }
1328
1329
  }
1329
1330
  async function buildClaudeCodeProfile(params) {
@@ -1410,41 +1411,41 @@ async function convertToCodexProvider(config) {
1410
1411
  }
1411
1412
  async function smartInit(options = {}) {
1412
1413
  try {
1413
- console.log(ansis.bold.green("\n\u{1F9E0} Smart Initialization Mode\n"));
1414
- console.log(ansis.gray("Analyzing your project to generate optimal configuration...\n"));
1415
- const { analyzeProject } = await import('./index7.mjs');
1414
+ console.log(a.bold.green("\n\u{1F9E0} Smart Initialization Mode\n"));
1415
+ console.log(a.gray("Analyzing your project to generate optimal configuration...\n"));
1416
+ const { analyzeProject } = await import('./index14.mjs');
1416
1417
  const analysis = await analyzeProject();
1417
- console.log(ansis.cyan("\u{1F4CA} Project Analysis:"));
1418
- console.log(ansis.gray(` \u2022 Type: ${analysis.projectType}`));
1419
- console.log(ansis.gray(` \u2022 Languages: ${analysis.techStack.languages.join(", ")}`));
1420
- console.log(ansis.gray(` \u2022 Runtime: ${analysis.techStack.runtime}`));
1418
+ console.log(a.cyan("\u{1F4CA} Project Analysis:"));
1419
+ console.log(a.gray(` \u2022 Type: ${analysis.projectType}`));
1420
+ console.log(a.gray(` \u2022 Languages: ${analysis.techStack.languages.join(", ")}`));
1421
+ console.log(a.gray(` \u2022 Runtime: ${analysis.techStack.runtime}`));
1421
1422
  if (analysis.frameworks.length > 0) {
1422
- console.log(ansis.gray(` \u2022 Frameworks: ${analysis.frameworks.join(", ")}`));
1423
+ console.log(a.gray(` \u2022 Frameworks: ${analysis.frameworks.join(", ")}`));
1423
1424
  }
1424
1425
  if (analysis.buildTool) {
1425
- console.log(ansis.gray(` \u2022 Build Tool: ${analysis.buildTool}`));
1426
+ console.log(a.gray(` \u2022 Build Tool: ${analysis.buildTool}`));
1426
1427
  }
1427
- console.log(ansis.gray(` \u2022 Has Tests: ${analysis.hasTests ? "Yes" : "No"}`));
1428
- console.log(ansis.gray(` \u2022 Has Database: ${analysis.hasDatabase ? "Yes" : "No"}`));
1429
- console.log(ansis.gray(` \u2022 Has API: ${analysis.hasApi ? "Yes" : "No"}`));
1428
+ console.log(a.gray(` \u2022 Has Tests: ${analysis.hasTests ? "Yes" : "No"}`));
1429
+ console.log(a.gray(` \u2022 Has Database: ${analysis.hasDatabase ? "Yes" : "No"}`));
1430
+ console.log(a.gray(` \u2022 Has API: ${analysis.hasApi ? "Yes" : "No"}`));
1430
1431
  if (analysis.cicd.length > 0) {
1431
- console.log(ansis.gray(` \u2022 CI/CD: ${analysis.cicd.join(", ")}`));
1432
+ console.log(a.gray(` \u2022 CI/CD: ${analysis.cicd.join(", ")}`));
1432
1433
  }
1433
1434
  console.log("");
1434
- const { selectTemplates } = await import('./index7.mjs');
1435
+ const { selectTemplates } = await import('./index14.mjs');
1435
1436
  const selection = await selectTemplates(analysis);
1436
- console.log(ansis.cyan("\u{1F3AF} Template Selection:"));
1437
- console.log(ansis.gray(` \u2022 Agents: ${selection.agents.length} selected`));
1437
+ console.log(a.cyan("\u{1F3AF} Template Selection:"));
1438
+ console.log(a.gray(` \u2022 Agents: ${selection.agents.length} selected`));
1438
1439
  for (const agent of selection.agents) {
1439
- console.log(ansis.gray(` - ${agent.name} (${agent.category})`));
1440
+ console.log(a.gray(` - ${agent.name} (${agent.category})`));
1440
1441
  }
1441
- console.log(ansis.gray(` \u2022 Skills: ${selection.skills.length} selected`));
1442
+ console.log(a.gray(` \u2022 Skills: ${selection.skills.length} selected`));
1442
1443
  for (const skill of selection.skills) {
1443
- console.log(ansis.gray(` - ${skill.name} (${skill.category})`));
1444
+ console.log(a.gray(` - ${skill.name} (${skill.category})`));
1444
1445
  }
1445
1446
  console.log("");
1446
- console.log(ansis.cyan("\u{1F4A1} Reasoning:"));
1447
- console.log(ansis.gray(selection.reasoning.split("\n").map((line) => ` ${line}`).join("\n")));
1447
+ console.log(a.cyan("\u{1F4A1} Reasoning:"));
1448
+ console.log(a.gray(selection.reasoning.split("\n").map((line) => ` ${line}`).join("\n")));
1448
1449
  console.log("");
1449
1450
  if (!options.skipPrompt && !options.yes) {
1450
1451
  const shouldContinue = await promptBoolean({
@@ -1452,38 +1453,38 @@ async function smartInit(options = {}) {
1452
1453
  defaultValue: true
1453
1454
  });
1454
1455
  if (!shouldContinue) {
1455
- console.log(ansis.yellow("Smart initialization cancelled."));
1456
+ console.log(a.yellow("Smart initialization cancelled."));
1456
1457
  return;
1457
1458
  }
1458
1459
  }
1459
- console.log(ansis.gray("\n\u{1F527} Generating configurations...\n"));
1460
- const { generateConfigs, writeConfigs } = await import('./index7.mjs');
1460
+ console.log(a.gray("\n\u{1F527} Generating configurations...\n"));
1461
+ const { generateConfigs, writeConfigs } = await import('./index14.mjs');
1461
1462
  const config = await generateConfigs(selection);
1462
1463
  await writeConfigs(config);
1463
- console.log(ansis.green("\u2714 Configurations generated successfully!"));
1464
- console.log(ansis.gray(` \u2022 ${config.agents.length} agents installed`));
1465
- console.log(ansis.gray(` \u2022 ${config.skills.length} skills installed`));
1464
+ console.log(a.green("\u2714 Configurations generated successfully!"));
1465
+ console.log(a.gray(` \u2022 ${config.agents.length} agents installed`));
1466
+ console.log(a.gray(` \u2022 ${config.skills.length} skills installed`));
1466
1467
  console.log("");
1467
- console.log(ansis.gray("Running standard initialization...\n"));
1468
+ console.log(a.gray("Running standard initialization...\n"));
1468
1469
  options.smart = false;
1469
1470
  options.skipPrompt = options.skipPrompt ?? false;
1470
1471
  await init(options);
1471
1472
  console.log("");
1472
- console.log(ansis.bold.green("\u2705 Smart Initialization Complete!"));
1473
+ console.log(a.bold.green("\u2705 Smart Initialization Complete!"));
1473
1474
  console.log("");
1474
- console.log(ansis.cyan("\u{1F3AF} What was configured:"));
1475
- console.log(ansis.gray(" \u2022 Project-specific agents and skills"));
1476
- console.log(ansis.gray(" \u2022 Claude Code base configuration"));
1477
- console.log(ansis.gray(" \u2022 MCP services"));
1478
- console.log(ansis.gray(" \u2022 Workflows and output styles"));
1475
+ console.log(a.cyan("\u{1F3AF} What was configured:"));
1476
+ console.log(a.gray(" \u2022 Project-specific agents and skills"));
1477
+ console.log(a.gray(" \u2022 Claude Code base configuration"));
1478
+ console.log(a.gray(" \u2022 MCP services"));
1479
+ console.log(a.gray(" \u2022 Workflows and output styles"));
1479
1480
  console.log("");
1480
- console.log(ansis.cyan("\u{1F680} Next Steps:"));
1481
- console.log(ansis.gray(" 1. Run: claude"));
1482
- console.log(ansis.gray(" 2. Start coding with AI assistance!"));
1483
- console.log(ansis.gray(" 3. Use generated skills with their triggers"));
1481
+ console.log(a.cyan("\u{1F680} Next Steps:"));
1482
+ console.log(a.gray(" 1. Run: claude"));
1483
+ console.log(a.gray(" 2. Start coding with AI assistance!"));
1484
+ console.log(a.gray(" 3. Use generated skills with their triggers"));
1484
1485
  console.log("");
1485
1486
  } catch (error) {
1486
- console.error(ansis.red("\u274C Smart initialization failed:"), error instanceof Error ? error.message : error);
1487
+ console.error(a.red("\u274C Smart initialization failed:"), error instanceof Error ? error.message : error);
1487
1488
  throw error;
1488
1489
  }
1489
1490
  }