ccjk 12.0.0 → 12.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.
- package/dist/chunks/agent-teams.mjs +17 -18
- package/dist/chunks/agent.mjs +105 -102
- package/dist/chunks/agents.mjs +87 -77
- package/dist/chunks/api-cli.mjs +41 -27
- package/dist/chunks/api-providers.mjs +2 -4
- package/dist/chunks/api.mjs +22 -11
- package/dist/chunks/auto-bootstrap.mjs +3 -5
- package/dist/chunks/auto-init.mjs +3 -4
- package/dist/chunks/auto-updater.mjs +103 -91
- package/dist/chunks/banner.mjs +41 -42
- package/dist/chunks/boost.mjs +30 -31
- package/dist/chunks/ccjk-agents.mjs +6 -9
- package/dist/chunks/ccjk-all.mjs +703 -85
- package/dist/chunks/ccjk-config.mjs +6 -6
- package/dist/chunks/ccjk-hooks.mjs +20 -9
- package/dist/chunks/ccjk-mcp.mjs +64 -52
- package/dist/chunks/ccjk-setup.mjs +35 -25
- package/dist/chunks/ccjk-skills.mjs +51 -41
- package/dist/chunks/ccr.mjs +42 -32
- package/dist/chunks/ccu.mjs +16 -12
- package/dist/chunks/check-updates.mjs +30 -19
- package/dist/chunks/claude-code-config-manager.mjs +25 -10
- package/dist/chunks/claude-code-incremental-manager.mjs +65 -51
- package/dist/chunks/claude-config.mjs +2 -2
- package/dist/chunks/claude-wrapper.mjs +9 -6
- package/dist/chunks/cleanup-migration.mjs +1 -1
- package/dist/chunks/cli-hook.mjs +10 -3
- package/dist/chunks/cloud-sync.mjs +1 -1
- package/dist/chunks/codex-config-switch.mjs +58 -45
- package/dist/chunks/codex-provider-manager.mjs +29 -16
- package/dist/chunks/codex-uninstaller.mjs +5 -6
- package/dist/chunks/codex.mjs +89 -89
- package/dist/chunks/commands.mjs +28 -29
- package/dist/chunks/commands2.mjs +4 -3
- package/dist/chunks/commit.mjs +42 -23
- package/dist/chunks/completion.mjs +46 -47
- package/dist/chunks/config-consolidator.mjs +12 -13
- package/dist/chunks/config-switch.mjs +66 -53
- package/dist/chunks/config.mjs +10 -10
- package/dist/chunks/config2.mjs +53 -42
- package/dist/chunks/config3.mjs +107 -93
- package/dist/chunks/constants.mjs +2 -4
- package/dist/chunks/context-loader.mjs +5 -4
- package/dist/chunks/context.mjs +77 -76
- package/dist/chunks/convoy-manager.mjs +4 -4
- package/dist/chunks/dashboard.mjs +28 -29
- package/dist/chunks/doctor.mjs +68 -54
- package/dist/chunks/evolution.mjs +37 -38
- package/dist/chunks/features.mjs +103 -92
- package/dist/chunks/fs-operations.mjs +1 -1
- package/dist/chunks/health-alerts.mjs +1 -1
- package/dist/chunks/health-check.mjs +1 -1
- package/dist/chunks/help.mjs +117 -116
- package/dist/chunks/hook-installer.mjs +3 -2
- package/dist/chunks/index.mjs +20 -6
- package/dist/chunks/index10.mjs +1171 -0
- package/dist/chunks/index11.mjs +1008 -0
- package/dist/chunks/index12.mjs +193 -0
- package/dist/chunks/index13.mjs +218 -0
- package/dist/chunks/index14.mjs +663 -0
- package/dist/chunks/index2.mjs +19 -10
- package/dist/chunks/index3.mjs +19079 -164
- package/dist/chunks/index4.mjs +8 -1171
- package/dist/chunks/index5.mjs +7479 -884
- package/dist/chunks/index6.mjs +160 -184
- package/dist/chunks/index7.mjs +3573 -653
- package/dist/chunks/index8.mjs +19 -0
- package/dist/chunks/index9.mjs +616 -0
- package/dist/chunks/init.mjs +173 -173
- package/dist/chunks/installer.mjs +92 -82
- package/dist/chunks/installer2.mjs +3 -2
- package/dist/chunks/interview.mjs +118 -107
- package/dist/chunks/json-config.mjs +3 -2
- package/dist/chunks/linux.mjs +3863 -0
- package/dist/chunks/macos.mjs +69 -0
- package/dist/chunks/main.mjs +635 -0
- package/dist/chunks/marketplace.mjs +69 -66
- package/dist/chunks/mcp-cli.mjs +61 -48
- package/dist/chunks/mcp.mjs +140 -127
- package/dist/chunks/menu.mjs +85 -85
- package/dist/chunks/metrics-display.mjs +41 -40
- package/dist/chunks/migrator.mjs +4 -5
- package/dist/chunks/monitor.mjs +95 -95
- package/dist/chunks/notification.mjs +151 -141
- package/dist/chunks/onboarding.mjs +26 -15
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/paradigm.mjs +24 -23
- package/dist/chunks/permission-manager.mjs +10 -11
- package/dist/chunks/permissions.mjs +72 -57
- package/dist/chunks/persistence-manager.mjs +97 -84
- package/dist/chunks/persistence.mjs +1 -1
- package/dist/chunks/platform.mjs +29 -29
- package/dist/chunks/plugin.mjs +104 -105
- package/dist/chunks/prompts.mjs +36 -25
- package/dist/chunks/providers.mjs +68 -69
- package/dist/chunks/quick-actions.mjs +71 -72
- package/dist/chunks/quick-provider.mjs +56 -40
- package/dist/chunks/quick-setup.mjs +71 -60
- package/dist/chunks/remote.mjs +21 -12
- package/dist/chunks/session.mjs +116 -103
- package/dist/chunks/sessions.mjs +29 -28
- package/dist/chunks/silent-updater.mjs +8 -10
- package/dist/chunks/simple-config.mjs +13 -10
- package/dist/chunks/skill.mjs +8560 -103
- package/dist/chunks/skills-sync.mjs +5212 -79
- package/dist/chunks/skills.mjs +105 -94
- package/dist/chunks/slash-commands.mjs +36 -37
- package/dist/chunks/smart-defaults.mjs +7 -3
- package/dist/chunks/smart-guide.mjs +1 -1
- package/dist/chunks/startup.mjs +2 -4
- package/dist/chunks/stats.mjs +41 -42
- package/dist/chunks/status.mjs +49 -50
- package/dist/chunks/team.mjs +24 -12
- package/dist/chunks/thinking.mjs +74 -63
- package/dist/chunks/trace.mjs +20 -19
- package/dist/chunks/uninstall.mjs +69 -56
- package/dist/chunks/update.mjs +39 -28
- package/dist/chunks/upgrade-manager.mjs +24 -18
- package/dist/chunks/version-checker.mjs +45 -41
- package/dist/chunks/vim.mjs +81 -69
- package/dist/chunks/windows.mjs +14 -0
- package/dist/chunks/workflows.mjs +15 -15
- package/dist/chunks/wsl.mjs +129 -0
- package/dist/chunks/zero-config.mjs +45 -34
- package/dist/cli.mjs +20 -20
- package/dist/index.mjs +41 -31
- package/dist/shared/ccjk.BAGoDD49.mjs +36 -0
- package/dist/shared/ccjk.BBtCGd_g.mjs +899 -0
- package/dist/shared/{ccjk.CGcy7cNM.mjs → ccjk.BDKUdmLk.mjs} +1 -1
- package/dist/shared/{ccjk.DtMBiwVG.mjs → ccjk.BFxsJM0k.mjs} +1 -1
- package/dist/shared/{ccjk.j4uut26D.mjs → ccjk.BIxuVL3_.mjs} +5 -5
- package/dist/shared/ccjk.BRZ9ww8S.mjs +142 -0
- package/dist/shared/{ccjk.CN0edl87.mjs → ccjk.BSYWk9ML.mjs} +1 -1
- package/dist/shared/{ccjk.Dk1HDseQ.mjs → ccjk.BnpWvs9V.mjs} +75 -75
- package/dist/shared/ccjk.BoApaI4j.mjs +28 -0
- package/dist/shared/{ccjk.DKojSRzw.mjs → ccjk.BrPUmTqm.mjs} +1 -1
- package/dist/shared/{ccjk.C10pepYx.mjs → ccjk.BxSmJ8B7.mjs} +1 -1
- package/dist/shared/ccjk.Bx_rmYfN.mjs +69 -0
- package/dist/shared/ccjk.COweQ1RR.mjs +5 -0
- package/dist/shared/{ccjk.BN90X6oc.mjs → ccjk.CePkJq2S.mjs} +17 -17
- package/dist/shared/{ccjk.Bvoex4TZ.mjs → ccjk.CfKKcvWy.mjs} +1 -1
- package/dist/shared/ccjk.Cjgrln_h.mjs +297 -0
- package/dist/shared/ccjk.CxpGa6MC.mjs +2724 -0
- package/dist/shared/{ccjk.DfwJOEok.mjs → ccjk.D5MFQT7w.mjs} +1 -1
- package/dist/shared/{ccjk.cChAaGgT.mjs → ccjk.DG_o24cZ.mjs} +6 -6
- package/dist/shared/{ccjk.bhFAMRyc.mjs → ccjk.DLLw-h4Y.mjs} +32 -32
- package/dist/shared/ccjk.DOwtZMk8.mjs +4019 -0
- package/dist/shared/{ccjk.BsXQugfY.mjs → ccjk.DTdjs-qK.mjs} +13 -13
- package/dist/shared/{ccjk.Bdhyg3X-.mjs → ccjk.DsYaCCx4.mjs} +1 -1
- package/dist/shared/ccjk.KfSWcGlE.mjs +38 -0
- package/dist/shared/ccjk.RyizuzOI.mjs +21 -0
- package/dist/shared/{ccjk.h7_W-wTs.mjs → ccjk.SPoXMvZD.mjs} +1 -1
- package/dist/shared/ccjk.T_cX87dY.mjs +15 -0
- package/dist/shared/{ccjk.CrB6OYHv.mjs → ccjk._dESH4Rk.mjs} +2 -2
- package/dist/shared/ccjk.bQ7Dh1g4.mjs +249 -0
- package/dist/shared/{ccjk.CBhIZiPz.mjs → ccjk.hoqrwWdN.mjs} +1 -1
- package/dist/shared/{ccjk.BNwRnWYx.mjs → ccjk.s7OCVzdd.mjs} +1230 -33
- package/dist/shared/{ccjk.BOIUTf5z.mjs → ccjk.waa2ikKJ.mjs} +8 -9
- package/package.json +31 -30
- package/dist/shared/ccjk.DHbrGcgg.mjs +0 -13
- package/dist/shared/ccjk.DntgA8fQ.mjs +0 -42
|
@@ -1,35 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
import ora from '
|
|
3
|
-
import { exec } from '
|
|
4
|
-
import { ensureI18nInitialized, i18n, format } from './
|
|
1
|
+
import a from './index2.mjs';
|
|
2
|
+
import ora from './index7.mjs';
|
|
3
|
+
import { exec as q } from './main.mjs';
|
|
4
|
+
import { ensureI18nInitialized, i18n, format } from './index5.mjs';
|
|
5
5
|
import { s as shouldUseSudoForGlobalInstall } from './platform.mjs';
|
|
6
|
-
import { p as promptBoolean } from '../shared/ccjk.
|
|
6
|
+
import { p as promptBoolean } from '../shared/ccjk.DOwtZMk8.mjs';
|
|
7
7
|
import { checkClaudeCodeVersion, fixBrokenNpmSymlink, checkCcrVersion, handleDuplicateInstallations, checkCometixLineVersion } from './version-checker.mjs';
|
|
8
|
-
import '
|
|
8
|
+
import '../shared/ccjk.BAGoDD49.mjs';
|
|
9
9
|
import 'node:process';
|
|
10
|
-
import 'node:
|
|
11
|
-
import '
|
|
12
|
-
import '
|
|
13
|
-
import 'pathe';
|
|
14
|
-
import 'node:os';
|
|
15
|
-
import 'inquirer-toggle';
|
|
10
|
+
import 'node:util';
|
|
11
|
+
import '../shared/ccjk.Cjgrln_h.mjs';
|
|
12
|
+
import 'module';
|
|
16
13
|
import 'node:child_process';
|
|
17
14
|
import 'node:path';
|
|
18
|
-
import 'node:
|
|
19
|
-
import '
|
|
15
|
+
import 'node:stream';
|
|
16
|
+
import 'node:readline';
|
|
17
|
+
import 'node:fs';
|
|
18
|
+
import 'node:url';
|
|
19
|
+
import '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
20
|
+
import 'node:os';
|
|
21
|
+
import 'node:async_hooks';
|
|
22
|
+
import './index3.mjs';
|
|
23
|
+
import 'stream';
|
|
24
|
+
import 'node:tty';
|
|
25
|
+
import 'tty';
|
|
26
|
+
import 'fs';
|
|
27
|
+
import 'child_process';
|
|
28
|
+
import 'node:crypto';
|
|
29
|
+
import 'buffer';
|
|
30
|
+
import 'string_decoder';
|
|
31
|
+
import '../shared/ccjk.CxpGa6MC.mjs';
|
|
20
32
|
|
|
21
33
|
async function execWithSudoIfNeeded(command, args) {
|
|
22
34
|
const needsSudo = shouldUseSudoForGlobalInstall();
|
|
23
35
|
if (needsSudo) {
|
|
24
|
-
console.log(
|
|
36
|
+
console.log(a.yellow(`
|
|
25
37
|
${i18n.t("updater:usingSudo")}`));
|
|
26
|
-
const result = await
|
|
38
|
+
const result = await q("sudo", [command, ...args]);
|
|
27
39
|
if (result.exitCode !== 0) {
|
|
28
40
|
throw new Error(result.stderr || `Command failed with exit code ${result.exitCode}`);
|
|
29
41
|
}
|
|
30
42
|
return { usedSudo: true };
|
|
31
43
|
} else {
|
|
32
|
-
const result = await
|
|
44
|
+
const result = await q(command, args);
|
|
33
45
|
if (result.exitCode !== 0) {
|
|
34
46
|
throw new Error(result.stderr || `Command failed with exit code ${result.exitCode}`);
|
|
35
47
|
}
|
|
@@ -43,30 +55,30 @@ async function updateCcr(force = false, skipPrompt = false) {
|
|
|
43
55
|
const { installed, currentVersion, latestVersion, needsUpdate } = await checkCcrVersion();
|
|
44
56
|
spinner.stop();
|
|
45
57
|
if (!installed) {
|
|
46
|
-
console.log(
|
|
58
|
+
console.log(a.yellow(i18n.t("updater:ccrNotInstalled")));
|
|
47
59
|
return false;
|
|
48
60
|
}
|
|
49
61
|
if (!needsUpdate && !force) {
|
|
50
|
-
console.log(
|
|
62
|
+
console.log(a.green(format(i18n.t("updater:ccrUpToDate"), { version: currentVersion || "" })));
|
|
51
63
|
return true;
|
|
52
64
|
}
|
|
53
65
|
if (!latestVersion) {
|
|
54
|
-
console.log(
|
|
66
|
+
console.log(a.yellow(i18n.t("updater:cannotCheckVersion")));
|
|
55
67
|
return false;
|
|
56
68
|
}
|
|
57
|
-
console.log(
|
|
58
|
-
console.log(
|
|
69
|
+
console.log(a.green(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
|
|
70
|
+
console.log(a.green(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
|
|
59
71
|
if (!skipPrompt) {
|
|
60
72
|
const confirm = await promptBoolean({
|
|
61
73
|
message: format(i18n.t("updater:confirmUpdate"), { tool: "CCR" }),
|
|
62
74
|
defaultValue: true
|
|
63
75
|
});
|
|
64
76
|
if (!confirm) {
|
|
65
|
-
console.log(
|
|
77
|
+
console.log(a.gray(i18n.t("updater:updateSkipped")));
|
|
66
78
|
return true;
|
|
67
79
|
}
|
|
68
80
|
} else {
|
|
69
|
-
console.log(
|
|
81
|
+
console.log(a.green(format(i18n.t("updater:autoUpdating"), { tool: "CCR" })));
|
|
70
82
|
}
|
|
71
83
|
const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: "CCR" })).start();
|
|
72
84
|
try {
|
|
@@ -75,12 +87,12 @@ async function updateCcr(force = false, skipPrompt = false) {
|
|
|
75
87
|
return true;
|
|
76
88
|
} catch (error) {
|
|
77
89
|
updateSpinner.fail(format(i18n.t("updater:updateFailed"), { tool: "CCR" }));
|
|
78
|
-
console.error(
|
|
90
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
79
91
|
return false;
|
|
80
92
|
}
|
|
81
93
|
} catch (error) {
|
|
82
94
|
spinner.fail(i18n.t("updater:checkFailed"));
|
|
83
|
-
console.error(
|
|
95
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
84
96
|
return false;
|
|
85
97
|
}
|
|
86
98
|
}
|
|
@@ -91,13 +103,13 @@ async function updateClaudeCode(force = false, skipPrompt = false) {
|
|
|
91
103
|
const { installed, currentVersion, latestVersion, needsUpdate, isHomebrew, installationSource, isBroken, hasWrongPackage, wrongPackageName } = await checkClaudeCodeVersion();
|
|
92
104
|
spinner.stop();
|
|
93
105
|
if (hasWrongPackage && wrongPackageName) {
|
|
94
|
-
console.log(
|
|
106
|
+
console.log(a.yellow(`
|
|
95
107
|
\u26A0\uFE0F ${i18n.t("installation:wrongPackageDetected")}`));
|
|
96
|
-
console.log(
|
|
97
|
-
console.log(
|
|
108
|
+
console.log(a.red(` ${i18n.t("installation:installedPackage")}: ${wrongPackageName}`));
|
|
109
|
+
console.log(a.green(` ${i18n.t("installation:correctPackage")}: @anthropic-ai/claude-code`));
|
|
98
110
|
console.log();
|
|
99
111
|
if (!skipPrompt) {
|
|
100
|
-
const inquirer = (await import('
|
|
112
|
+
const inquirer = (await import('./index3.mjs').then(function (n) { return n.c; })).default;
|
|
101
113
|
const { shouldFix } = await inquirer.prompt([
|
|
102
114
|
{
|
|
103
115
|
type: "confirm",
|
|
@@ -107,7 +119,7 @@ async function updateClaudeCode(force = false, skipPrompt = false) {
|
|
|
107
119
|
}
|
|
108
120
|
]);
|
|
109
121
|
if (!shouldFix) {
|
|
110
|
-
console.log(
|
|
122
|
+
console.log(a.gray(i18n.t("installation:wrongPackageSkipped")));
|
|
111
123
|
return false;
|
|
112
124
|
}
|
|
113
125
|
}
|
|
@@ -116,49 +128,49 @@ async function updateClaudeCode(force = false, skipPrompt = false) {
|
|
|
116
128
|
await execWithSudoIfNeeded("npm", ["uninstall", "-g", wrongPackageName]);
|
|
117
129
|
fixSpinner.text = i18n.t("installation:installingCorrectPackage");
|
|
118
130
|
await execWithSudoIfNeeded("npm", ["install", "-g", "@anthropic-ai/claude-code", "--force"]);
|
|
119
|
-
fixSpinner.succeed(
|
|
120
|
-
console.log(
|
|
131
|
+
fixSpinner.succeed(a.green(`\u2713 ${i18n.t("installation:wrongPackageFixed")}`));
|
|
132
|
+
console.log(a.green(`
|
|
121
133
|
\u2713 ${i18n.t("installation:nowUsingCorrectPackage")}`));
|
|
122
134
|
return true;
|
|
123
135
|
} catch (error) {
|
|
124
|
-
fixSpinner.fail(
|
|
125
|
-
console.error(
|
|
126
|
-
console.log(
|
|
136
|
+
fixSpinner.fail(a.red(`\u2717 ${i18n.t("installation:wrongPackageFixFailed")}`));
|
|
137
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
138
|
+
console.log(a.gray(`
|
|
127
139
|
${i18n.t("installation:manualFixHint")}:`));
|
|
128
|
-
console.log(
|
|
129
|
-
console.log(
|
|
140
|
+
console.log(a.gray(` npm uninstall -g ${wrongPackageName}`));
|
|
141
|
+
console.log(a.gray(` npm install -g @anthropic-ai/claude-code`));
|
|
130
142
|
return false;
|
|
131
143
|
}
|
|
132
144
|
}
|
|
133
145
|
if (!installed) {
|
|
134
|
-
console.log(
|
|
146
|
+
console.log(a.yellow(i18n.t("updater:claudeCodeNotInstalled")));
|
|
135
147
|
return false;
|
|
136
148
|
}
|
|
137
149
|
if (!needsUpdate && !force) {
|
|
138
|
-
console.log(
|
|
150
|
+
console.log(a.green(format(i18n.t("updater:claudeCodeUpToDate"), { version: currentVersion || "" })));
|
|
139
151
|
return true;
|
|
140
152
|
}
|
|
141
153
|
if (!latestVersion) {
|
|
142
|
-
console.log(
|
|
154
|
+
console.log(a.yellow(i18n.t("updater:cannotCheckVersion")));
|
|
143
155
|
return false;
|
|
144
156
|
}
|
|
145
|
-
console.log(
|
|
146
|
-
console.log(
|
|
157
|
+
console.log(a.green(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
|
|
158
|
+
console.log(a.green(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
|
|
147
159
|
if (isBroken) {
|
|
148
|
-
console.log(
|
|
160
|
+
console.log(a.yellow(i18n.t("updater:installationBroken")));
|
|
149
161
|
const fixResult = await fixBrokenNpmSymlink();
|
|
150
162
|
if (fixResult.fixed) {
|
|
151
|
-
console.log(
|
|
163
|
+
console.log(a.green(`\u2714 ${i18n.t("updater:symlinkFixed")}: ${fixResult.message}`));
|
|
152
164
|
const recheckResult = await checkClaudeCodeVersion();
|
|
153
165
|
if (!recheckResult.isBroken) {
|
|
154
|
-
console.log(
|
|
166
|
+
console.log(a.green(i18n.t("updater:installationRepaired")));
|
|
155
167
|
if (!recheckResult.needsUpdate && !force) {
|
|
156
|
-
console.log(
|
|
168
|
+
console.log(a.green(format(i18n.t("updater:claudeCodeUpToDate"), { version: recheckResult.currentVersion || "" })));
|
|
157
169
|
return true;
|
|
158
170
|
}
|
|
159
171
|
}
|
|
160
172
|
} else {
|
|
161
|
-
console.log(
|
|
173
|
+
console.log(a.gray(`\u2139 ${fixResult.message}`));
|
|
162
174
|
}
|
|
163
175
|
}
|
|
164
176
|
if (!skipPrompt) {
|
|
@@ -167,17 +179,17 @@ ${i18n.t("installation:manualFixHint")}:`));
|
|
|
167
179
|
defaultValue: true
|
|
168
180
|
});
|
|
169
181
|
if (!confirm) {
|
|
170
|
-
console.log(
|
|
182
|
+
console.log(a.gray(i18n.t("updater:updateSkipped")));
|
|
171
183
|
return true;
|
|
172
184
|
}
|
|
173
185
|
} else {
|
|
174
|
-
console.log(
|
|
186
|
+
console.log(a.green(format(i18n.t("updater:autoUpdating"), { tool: "Claude Code" })));
|
|
175
187
|
}
|
|
176
188
|
const toolName = isHomebrew ? "Claude Code (Homebrew)" : "Claude Code";
|
|
177
189
|
const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: toolName })).start();
|
|
178
190
|
try {
|
|
179
191
|
if (isHomebrew) {
|
|
180
|
-
const result = await
|
|
192
|
+
const result = await q("brew", ["upgrade", "--cask", "claude-code"]);
|
|
181
193
|
if (result.exitCode !== 0) {
|
|
182
194
|
throw new Error(result.stderr || `Command failed with exit code ${result.exitCode}`);
|
|
183
195
|
}
|
|
@@ -214,18 +226,18 @@ ${i18n.t("installation:manualFixHint")}:`));
|
|
|
214
226
|
updateSpinner.succeed(format(i18n.t("updater:updateSuccess"), { tool: "Claude Code" }));
|
|
215
227
|
} else {
|
|
216
228
|
updateSpinner.warn(format(i18n.t("updater:updateSuccess"), { tool: "Claude Code" }));
|
|
217
|
-
console.log(
|
|
218
|
-
console.log(
|
|
229
|
+
console.log(a.yellow(" \u26A0 claude command not found in PATH after update"));
|
|
230
|
+
console.log(a.gray(" Try: npm install -g @anthropic-ai/claude-code"));
|
|
219
231
|
}
|
|
220
232
|
return claudeWorks;
|
|
221
233
|
} catch (error) {
|
|
222
234
|
updateSpinner.fail(format(i18n.t("updater:updateFailed"), { tool: "Claude Code" }));
|
|
223
|
-
console.error(
|
|
235
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
224
236
|
return false;
|
|
225
237
|
}
|
|
226
238
|
} catch (error) {
|
|
227
239
|
spinner.fail(i18n.t("updater:checkFailed"));
|
|
228
|
-
console.error(
|
|
240
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
229
241
|
return false;
|
|
230
242
|
}
|
|
231
243
|
}
|
|
@@ -236,30 +248,30 @@ async function updateCometixLine(force = false, skipPrompt = false) {
|
|
|
236
248
|
const { installed, currentVersion, latestVersion, needsUpdate } = await checkCometixLineVersion();
|
|
237
249
|
spinner.stop();
|
|
238
250
|
if (!installed) {
|
|
239
|
-
console.log(
|
|
251
|
+
console.log(a.yellow(i18n.t("updater:cometixLineNotInstalled")));
|
|
240
252
|
return false;
|
|
241
253
|
}
|
|
242
254
|
if (!needsUpdate && !force) {
|
|
243
|
-
console.log(
|
|
255
|
+
console.log(a.green(format(i18n.t("updater:cometixLineUpToDate"), { version: currentVersion || "" })));
|
|
244
256
|
return true;
|
|
245
257
|
}
|
|
246
258
|
if (!latestVersion) {
|
|
247
|
-
console.log(
|
|
259
|
+
console.log(a.yellow(i18n.t("updater:cannotCheckVersion")));
|
|
248
260
|
return false;
|
|
249
261
|
}
|
|
250
|
-
console.log(
|
|
251
|
-
console.log(
|
|
262
|
+
console.log(a.green(format(i18n.t("updater:currentVersion"), { version: currentVersion || "" })));
|
|
263
|
+
console.log(a.green(format(i18n.t("updater:latestVersion"), { version: latestVersion })));
|
|
252
264
|
if (!skipPrompt) {
|
|
253
265
|
const confirm = await promptBoolean({
|
|
254
266
|
message: format(i18n.t("updater:confirmUpdate"), { tool: "CCometixLine" }),
|
|
255
267
|
defaultValue: true
|
|
256
268
|
});
|
|
257
269
|
if (!confirm) {
|
|
258
|
-
console.log(
|
|
270
|
+
console.log(a.gray(i18n.t("updater:updateSkipped")));
|
|
259
271
|
return true;
|
|
260
272
|
}
|
|
261
273
|
} else {
|
|
262
|
-
console.log(
|
|
274
|
+
console.log(a.green(format(i18n.t("updater:autoUpdating"), { tool: "CCometixLine" })));
|
|
263
275
|
}
|
|
264
276
|
const updateSpinner = ora(format(i18n.t("updater:updating"), { tool: "CCometixLine" })).start();
|
|
265
277
|
try {
|
|
@@ -268,18 +280,18 @@ async function updateCometixLine(force = false, skipPrompt = false) {
|
|
|
268
280
|
return true;
|
|
269
281
|
} catch (error) {
|
|
270
282
|
updateSpinner.fail(format(i18n.t("updater:updateFailed"), { tool: "CCometixLine" }));
|
|
271
|
-
console.error(
|
|
283
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
272
284
|
return false;
|
|
273
285
|
}
|
|
274
286
|
} catch (error) {
|
|
275
287
|
spinner.fail(i18n.t("updater:checkFailed"));
|
|
276
|
-
console.error(
|
|
288
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
277
289
|
return false;
|
|
278
290
|
}
|
|
279
291
|
}
|
|
280
292
|
async function checkAndUpdateTools(skipPrompt = false) {
|
|
281
293
|
ensureI18nInitialized();
|
|
282
|
-
console.log(
|
|
294
|
+
console.log(a.bold.cyan(`
|
|
283
295
|
\u{1F50D} ${i18n.t("updater:checkingTools")}
|
|
284
296
|
`));
|
|
285
297
|
try {
|
|
@@ -289,26 +301,26 @@ async function checkAndUpdateTools(skipPrompt = false) {
|
|
|
289
301
|
}
|
|
290
302
|
} catch (error) {
|
|
291
303
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
292
|
-
console.warn(
|
|
304
|
+
console.warn(a.yellow(`\u26A0 Duplicate installation check failed: ${errorMessage}`));
|
|
293
305
|
}
|
|
294
306
|
const results = [];
|
|
295
|
-
console.log(
|
|
307
|
+
console.log(a.bold("\u{1F4E6} CCJK"));
|
|
296
308
|
try {
|
|
297
309
|
await checkCcjkVersionAndPrompt(skipPrompt);
|
|
298
310
|
results.push({ tool: "CCJK", success: true });
|
|
299
311
|
} catch (error) {
|
|
300
312
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
301
|
-
console.error(
|
|
313
|
+
console.error(a.red(`\u274C ${format(i18n.t("updater:updateFailed"), { tool: "CCJK" })}: ${errorMessage}`));
|
|
302
314
|
results.push({ tool: "CCJK", success: false, error: errorMessage });
|
|
303
315
|
}
|
|
304
316
|
console.log();
|
|
305
|
-
console.log(
|
|
317
|
+
console.log(a.bold("\u{1F500} CCR"));
|
|
306
318
|
try {
|
|
307
319
|
const success = await updateCcr(false, skipPrompt);
|
|
308
320
|
results.push({ tool: "CCR", success });
|
|
309
321
|
} catch (error) {
|
|
310
322
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
311
|
-
console.error(
|
|
323
|
+
console.error(a.red(`\u274C ${format(i18n.t("updater:updateFailed"), { tool: "CCR" })}: ${errorMessage}`));
|
|
312
324
|
results.push({ tool: "CCR", success: false, error: errorMessage });
|
|
313
325
|
}
|
|
314
326
|
console.log();
|
|
@@ -317,7 +329,7 @@ async function checkAndUpdateTools(skipPrompt = false) {
|
|
|
317
329
|
results.push({ tool: "Claude Code", success });
|
|
318
330
|
} catch (error) {
|
|
319
331
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
320
|
-
console.error(
|
|
332
|
+
console.error(a.red(`\u274C ${format(i18n.t("updater:updateFailed"), { tool: "Claude Code" })}: ${errorMessage}`));
|
|
321
333
|
results.push({ tool: "Claude Code", success: false, error: errorMessage });
|
|
322
334
|
}
|
|
323
335
|
console.log();
|
|
@@ -326,17 +338,17 @@ async function checkAndUpdateTools(skipPrompt = false) {
|
|
|
326
338
|
results.push({ tool: "CCometixLine", success });
|
|
327
339
|
} catch (error) {
|
|
328
340
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
329
|
-
console.error(
|
|
341
|
+
console.error(a.red(`\u274C ${format(i18n.t("updater:updateFailed"), { tool: "CCometixLine" })}: ${errorMessage}`));
|
|
330
342
|
results.push({ tool: "CCometixLine", success: false, error: errorMessage });
|
|
331
343
|
}
|
|
332
344
|
if (skipPrompt) {
|
|
333
|
-
console.log(
|
|
345
|
+
console.log(a.bold.cyan(`
|
|
334
346
|
\u{1F4CB} ${i18n.t("updater:updateSummary")}`));
|
|
335
347
|
for (const result of results) {
|
|
336
348
|
if (result.success) {
|
|
337
|
-
console.log(
|
|
349
|
+
console.log(a.green(`\u2714 ${result.tool}: ${i18n.t("updater:success")}`));
|
|
338
350
|
} else {
|
|
339
|
-
console.log(
|
|
351
|
+
console.log(a.red(`\u274C ${result.tool}: ${i18n.t("updater:failed")} ${result.error ? `(${result.error})` : ""}`));
|
|
340
352
|
}
|
|
341
353
|
}
|
|
342
354
|
}
|
|
@@ -345,21 +357,21 @@ async function checkCcjkVersionAndPrompt(skipPrompt) {
|
|
|
345
357
|
try {
|
|
346
358
|
const { readFileSync } = await import('node:fs');
|
|
347
359
|
const { fileURLToPath } = await import('node:url');
|
|
348
|
-
const { dirname, join } = await import('
|
|
360
|
+
const { dirname, join } = await import('./index8.mjs');
|
|
349
361
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
350
362
|
const pkgPath = join(__dirname, "..", "..", "package.json");
|
|
351
363
|
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
352
364
|
const currentVersion = pkg.version;
|
|
353
|
-
console.log(
|
|
354
|
-
const { stdout } = await
|
|
365
|
+
console.log(a.cyan(`${i18n.t("updater:currentVersion")} v${currentVersion}`));
|
|
366
|
+
const { stdout } = await q("npm", ["view", "ccjk", "version"]);
|
|
355
367
|
const latestVersion = stdout.trim();
|
|
356
|
-
console.log(
|
|
368
|
+
console.log(a.cyan(`${i18n.t("updater:latestVersion")} v${latestVersion}`));
|
|
357
369
|
if (currentVersion === latestVersion) {
|
|
358
|
-
console.log(
|
|
370
|
+
console.log(a.green(`\u2713 ${i18n.t("updater:alreadyLatest")}`));
|
|
359
371
|
return;
|
|
360
372
|
}
|
|
361
373
|
if (!skipPrompt) {
|
|
362
|
-
const inquirer = (await import('
|
|
374
|
+
const inquirer = (await import('./index3.mjs').then(function (n) { return n.c; })).default;
|
|
363
375
|
const { shouldUpdate } = await inquirer.prompt([
|
|
364
376
|
{
|
|
365
377
|
type: "confirm",
|
|
@@ -369,29 +381,29 @@ async function checkCcjkVersionAndPrompt(skipPrompt) {
|
|
|
369
381
|
}
|
|
370
382
|
]);
|
|
371
383
|
if (!shouldUpdate) {
|
|
372
|
-
console.log(
|
|
384
|
+
console.log(a.gray(i18n.t("updater:updateSkipped")));
|
|
373
385
|
return;
|
|
374
386
|
}
|
|
375
387
|
}
|
|
376
|
-
console.log(
|
|
388
|
+
console.log(a.dim("Clearing npx cache..."));
|
|
377
389
|
try {
|
|
378
|
-
await
|
|
390
|
+
await q("npm", ["cache", "clean", "--force"]);
|
|
379
391
|
} catch {
|
|
380
392
|
}
|
|
381
|
-
const ora2 = (await import('
|
|
393
|
+
const ora2 = (await import('./index7.mjs')).default;
|
|
382
394
|
const updateSpinner = ora2("Updating CCJK...").start();
|
|
383
395
|
try {
|
|
384
396
|
await execWithSudoIfNeeded("npm", ["install", "-g", "ccjk@latest", "--force"]);
|
|
385
|
-
updateSpinner.succeed(
|
|
386
|
-
console.log(
|
|
397
|
+
updateSpinner.succeed(a.green(`\u2713 CCJK updated to v${latestVersion}`));
|
|
398
|
+
console.log(a.yellow("\n\u26A0 Please restart ccjk to use the new version"));
|
|
387
399
|
process.exit(0);
|
|
388
400
|
} catch (error) {
|
|
389
|
-
updateSpinner.fail(
|
|
390
|
-
console.error(
|
|
391
|
-
console.log(
|
|
401
|
+
updateSpinner.fail(a.red("\u2717 CCJK update failed"));
|
|
402
|
+
console.error(a.red(error instanceof Error ? error.message : String(error)));
|
|
403
|
+
console.log(a.gray("\nTry manually: npm install -g ccjk@latest"));
|
|
392
404
|
}
|
|
393
405
|
} catch (error) {
|
|
394
|
-
console.error(
|
|
406
|
+
console.error(a.red(`${i18n.t("updater:checkFailed")} ${error instanceof Error ? error.message : String(error)}`));
|
|
395
407
|
}
|
|
396
408
|
}
|
|
397
409
|
|
package/dist/chunks/banner.mjs
CHANGED
|
@@ -1,62 +1,61 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from './index2.mjs';
|
|
2
2
|
import { homepage, version } from './package.mjs';
|
|
3
|
-
import { ensureI18nInitialized, i18n } from './
|
|
3
|
+
import { ensureI18nInitialized, i18n } from './index5.mjs';
|
|
4
|
+
import '../shared/ccjk.BAGoDD49.mjs';
|
|
4
5
|
import 'node:fs';
|
|
5
6
|
import 'node:process';
|
|
6
7
|
import 'node:url';
|
|
7
|
-
import '
|
|
8
|
-
import 'i18next-fs-backend';
|
|
9
|
-
import 'pathe';
|
|
8
|
+
import '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
10
9
|
|
|
11
10
|
const theme = {
|
|
12
11
|
// === Core Colors ===
|
|
13
12
|
/** Terminal green - main text color */
|
|
14
|
-
primary:
|
|
13
|
+
primary: a.green,
|
|
15
14
|
/** Bright white - emphasis and highlights */
|
|
16
|
-
secondary:
|
|
15
|
+
secondary: a.white,
|
|
17
16
|
/** Dim green - subtle accents */
|
|
18
|
-
accent:
|
|
17
|
+
accent: a.green,
|
|
19
18
|
// === Semantic Colors ===
|
|
20
19
|
/** Success - bright green checkmark */
|
|
21
|
-
success:
|
|
20
|
+
success: a.bold.green,
|
|
22
21
|
/** Warning - amber/yellow for caution */
|
|
23
|
-
warning:
|
|
22
|
+
warning: a.yellow,
|
|
24
23
|
/** Error - red for failures */
|
|
25
|
-
error:
|
|
24
|
+
error: a.red,
|
|
26
25
|
/** Info - cyan for informational messages */
|
|
27
|
-
info:
|
|
26
|
+
info: a.cyan,
|
|
28
27
|
// === Text Styles ===
|
|
29
28
|
/** Muted text - gray for less important info */
|
|
30
|
-
muted:
|
|
29
|
+
muted: a.gray,
|
|
31
30
|
/** Bold text */
|
|
32
|
-
bold:
|
|
31
|
+
bold: a.bold,
|
|
33
32
|
/** Dim text - for background info */
|
|
34
|
-
dim:
|
|
33
|
+
dim: a.dim,
|
|
35
34
|
// === MUD-specific Styles ===
|
|
36
35
|
/** Command prompt style - bright green */
|
|
37
|
-
prompt:
|
|
36
|
+
prompt: a.bold.green,
|
|
38
37
|
/** System message - white */
|
|
39
|
-
system:
|
|
38
|
+
system: a.white,
|
|
40
39
|
/** NPC/hint text - dim green */
|
|
41
|
-
hint:
|
|
40
|
+
hint: a.green,
|
|
42
41
|
/** Quest/task highlight - bright */
|
|
43
|
-
quest:
|
|
42
|
+
quest: a.bold.green,
|
|
44
43
|
/** Item/feature name - white bold */
|
|
45
|
-
item:
|
|
44
|
+
item: a.bold.white
|
|
46
45
|
};
|
|
47
46
|
const status = {
|
|
48
47
|
/** ✓ Success indicator */
|
|
49
|
-
ok: (text) => `${
|
|
48
|
+
ok: (text) => `${a.green("\u2713")} ${text}`,
|
|
50
49
|
/** ✗ Error indicator */
|
|
51
|
-
fail: (text) => `${
|
|
50
|
+
fail: (text) => `${a.red("\u2717")} ${text}`,
|
|
52
51
|
/** ⚠ Warning indicator */
|
|
53
|
-
warn: (text) => `${
|
|
52
|
+
warn: (text) => `${a.yellow("\u26A0")} ${text}`,
|
|
54
53
|
/** ℹ Info indicator */
|
|
55
|
-
info: (text) => `${
|
|
54
|
+
info: (text) => `${a.cyan("\u2139")} ${text}`,
|
|
56
55
|
/** ○ Pending indicator */
|
|
57
|
-
wait: (text) => `${
|
|
56
|
+
wait: (text) => `${a.gray("\u25CB")} ${text}`,
|
|
58
57
|
/** ◐ In-progress indicator */
|
|
59
|
-
work: (text) => `${
|
|
58
|
+
work: (text) => `${a.green("\u25D0")} ${text}`};
|
|
60
59
|
const box = {
|
|
61
60
|
single: { tl: "\u250C", tr: "\u2510", bl: "\u2514", br: "\u2518", h: "\u2500", v: "\u2502" },
|
|
62
61
|
double: { tl: "\u2554", tr: "\u2557", bl: "\u255A", br: "\u255D", h: "\u2550", v: "\u2551" },
|
|
@@ -112,15 +111,15 @@ function displayBanner(subtitle) {
|
|
|
112
111
|
const subtitleText = subtitle || defaultSubtitle;
|
|
113
112
|
const paddedSubtitle = padToDisplayWidth(subtitleText, 28);
|
|
114
113
|
console.log(
|
|
115
|
-
|
|
114
|
+
a.green.bold(`
|
|
116
115
|
\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
|
|
117
116
|
\u2551 \u2551
|
|
118
117
|
\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557 \u2551
|
|
119
118
|
\u2551 \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2554\u255D \u2551
|
|
120
|
-
\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2554\u255D ${
|
|
121
|
-
\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 ${
|
|
119
|
+
\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2554\u255D ${a.white.bold("JinKu")} \u2551
|
|
120
|
+
\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 ${a.gray(`v${version}`)}${" ".repeat(Math.max(0, 17 - version.length))}\u2551
|
|
122
121
|
\u2551 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2557 \u2551
|
|
123
|
-
\u2551 \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D ${
|
|
122
|
+
\u2551 \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D ${a.gray(paddedSubtitle)} \u2551
|
|
124
123
|
\u2551 \u2551
|
|
125
124
|
\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
|
|
126
125
|
`)
|
|
@@ -128,16 +127,16 @@ function displayBanner(subtitle) {
|
|
|
128
127
|
}
|
|
129
128
|
function displayBannerWithInfo(subtitle) {
|
|
130
129
|
displayBanner(subtitle);
|
|
131
|
-
console.log(
|
|
132
|
-
console.log(
|
|
130
|
+
console.log(a.gray(` ${a.green("ccjk")} - Advanced AI Development Assistant`));
|
|
131
|
+
console.log(a.gray(` ${a.green(homepage)}
|
|
133
132
|
`));
|
|
134
133
|
}
|
|
135
134
|
function displayCommandDiscovery() {
|
|
136
135
|
ensureI18nInitialized();
|
|
137
136
|
const isZhCN = i18n.language === "zh-CN";
|
|
138
|
-
console.log(
|
|
137
|
+
console.log(a.green.bold(`
|
|
139
138
|
${i18n.t("cli:commandDiscovery.title")}`));
|
|
140
|
-
console.log(
|
|
139
|
+
console.log(a.gray("\u2500".repeat(60)));
|
|
141
140
|
const ccjkCommands = [
|
|
142
141
|
{ cmd: "/status", desc: i18n.t("cli:commandDiscovery.status"), descEn: "Brain Dashboard" },
|
|
143
142
|
{ cmd: "/health", desc: i18n.t("cli:commandDiscovery.health"), descEn: "Health Check" },
|
|
@@ -150,14 +149,14 @@ ${i18n.t("cli:commandDiscovery.title")}`));
|
|
|
150
149
|
for (const { cmd, desc, descEn } of ccjkCommands) {
|
|
151
150
|
const cmdPadded = cmd.padEnd(12);
|
|
152
151
|
if (isZhCN) {
|
|
153
|
-
console.log(` ${
|
|
152
|
+
console.log(` ${a.cyan(cmdPadded)} - ${a.white(desc)} ${a.gray(`(${descEn})`)}`);
|
|
154
153
|
} else {
|
|
155
|
-
console.log(` ${
|
|
154
|
+
console.log(` ${a.cyan(cmdPadded)} - ${a.white(desc)}`);
|
|
156
155
|
}
|
|
157
156
|
}
|
|
158
|
-
console.log(
|
|
157
|
+
console.log(a.green.bold(`
|
|
159
158
|
${i18n.t("cli:commandDiscovery.claudeCodeTitle")}`));
|
|
160
|
-
console.log(
|
|
159
|
+
console.log(a.gray("\u2500".repeat(60)));
|
|
161
160
|
const claudeCommands = [
|
|
162
161
|
{ cmd: "/help", desc: i18n.t("cli:commandDiscovery.help"), descEn: "Show all commands" },
|
|
163
162
|
{ cmd: "/clear", desc: i18n.t("cli:commandDiscovery.clear"), descEn: "Clear conversation" },
|
|
@@ -166,13 +165,13 @@ ${i18n.t("cli:commandDiscovery.claudeCodeTitle")}`));
|
|
|
166
165
|
for (const { cmd, desc, descEn } of claudeCommands) {
|
|
167
166
|
const cmdPadded = cmd.padEnd(12);
|
|
168
167
|
if (isZhCN) {
|
|
169
|
-
console.log(` ${
|
|
168
|
+
console.log(` ${a.cyan(cmdPadded)} - ${a.white(desc)} ${a.gray(`(${descEn})`)}`);
|
|
170
169
|
} else {
|
|
171
|
-
console.log(` ${
|
|
170
|
+
console.log(` ${a.cyan(cmdPadded)} - ${a.white(desc)}`);
|
|
172
171
|
}
|
|
173
172
|
}
|
|
174
|
-
console.log(
|
|
175
|
-
console.log(
|
|
173
|
+
console.log(a.gray("\n" + "\u2500".repeat(60)));
|
|
174
|
+
console.log(a.gray(` ${i18n.t("cli:commandDiscovery.footer")}
|
|
176
175
|
`));
|
|
177
176
|
}
|
|
178
177
|
const STATUS = {
|