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
package/dist/chunks/mcp.mjs
CHANGED
|
@@ -1,37 +1,50 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { i18n } from './
|
|
1
|
+
import a from './index2.mjs';
|
|
2
|
+
import { i18n } from './index5.mjs';
|
|
3
3
|
import 'node:child_process';
|
|
4
4
|
import 'node:process';
|
|
5
5
|
import { M as MCP_SERVICE_TIERS, i as isCoreService, g as getServicesByTier, c as checkMcpPerformance, f as formatPerformanceWarning, a as calculateResourceUsage, b as getOptimizationSuggestions, d as getMcpTierConfig } from './mcp-performance.mjs';
|
|
6
6
|
import { r as readMcpConfig, b as backupMcpConfig, w as writeMcpConfig } from './claude-config.mjs';
|
|
7
|
-
import inquirer from '
|
|
7
|
+
import { i as inquirer } from './index3.mjs';
|
|
8
8
|
import { M as MCP_SERVICE_CONFIGS } from './codex.mjs';
|
|
9
|
-
import { d as displayInstalledMcpServices, b as isMcpServiceInstalled, i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.
|
|
9
|
+
import { d as displayInstalledMcpServices, b as isMcpServiceInstalled, i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.waa2ikKJ.mjs';
|
|
10
10
|
import { existsSync, unlinkSync, statSync, mkdirSync, readFileSync } from 'node:fs';
|
|
11
11
|
import { homedir } from 'node:os';
|
|
12
|
-
import { join } from 'pathe';
|
|
13
12
|
import { writeFileAtomic } from './fs-operations.mjs';
|
|
13
|
+
import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
14
|
+
import '../shared/ccjk.BAGoDD49.mjs';
|
|
14
15
|
import 'node:url';
|
|
15
|
-
import 'i18next';
|
|
16
|
-
import 'i18next-fs-backend';
|
|
17
16
|
import './constants.mjs';
|
|
18
17
|
import './json-config.mjs';
|
|
19
|
-
import '
|
|
18
|
+
import '../shared/ccjk.RyizuzOI.mjs';
|
|
20
19
|
import 'node:crypto';
|
|
21
20
|
import 'node:fs/promises';
|
|
22
21
|
import './platform.mjs';
|
|
23
|
-
import '
|
|
24
|
-
import '
|
|
25
|
-
import '
|
|
26
|
-
import '
|
|
22
|
+
import './main.mjs';
|
|
23
|
+
import 'module';
|
|
24
|
+
import 'node:path';
|
|
25
|
+
import 'node:stream';
|
|
26
|
+
import 'node:readline';
|
|
27
|
+
import 'stream';
|
|
28
|
+
import 'node:tty';
|
|
29
|
+
import 'node:async_hooks';
|
|
30
|
+
import '../shared/ccjk.Cjgrln_h.mjs';
|
|
31
|
+
import 'node:util';
|
|
32
|
+
import 'tty';
|
|
33
|
+
import 'fs';
|
|
34
|
+
import 'child_process';
|
|
35
|
+
import 'buffer';
|
|
36
|
+
import 'string_decoder';
|
|
37
|
+
import './index7.mjs';
|
|
38
|
+
import '../shared/ccjk.CxpGa6MC.mjs';
|
|
39
|
+
import '../shared/ccjk.BBtCGd_g.mjs';
|
|
27
40
|
import './ccjk-config.mjs';
|
|
41
|
+
import './index6.mjs';
|
|
28
42
|
import './config.mjs';
|
|
29
43
|
import '../shared/ccjk.BiCrMV5O.mjs';
|
|
30
44
|
import '../shared/ccjk.BFQ7yr5S.mjs';
|
|
31
45
|
import './prompts.mjs';
|
|
32
46
|
import './package.mjs';
|
|
33
|
-
import '../shared/ccjk.
|
|
34
|
-
import 'inquirer-toggle';
|
|
47
|
+
import '../shared/ccjk.DOwtZMk8.mjs';
|
|
35
48
|
|
|
36
49
|
function getReleasableServices(configuredServices, tier) {
|
|
37
50
|
return configuredServices.filter((serviceId) => {
|
|
@@ -96,13 +109,13 @@ async function mcpRelease(options = {}) {
|
|
|
96
109
|
const lang = options.lang || i18n.language || "en";
|
|
97
110
|
const isZh = lang === "zh-CN";
|
|
98
111
|
console.log("");
|
|
99
|
-
console.log(
|
|
100
|
-
console.log(
|
|
112
|
+
console.log(a.bold.cyan(isZh ? "\u{1F9F9} MCP \u670D\u52A1\u91CA\u653E" : "\u{1F9F9} MCP Service Release"));
|
|
113
|
+
console.log(a.dim("\u2500".repeat(50)));
|
|
101
114
|
console.log("");
|
|
102
115
|
const config = readMcpConfig();
|
|
103
116
|
const configuredServices = config?.mcpServers ? Object.keys(config.mcpServers) : [];
|
|
104
117
|
if (configuredServices.length === 0) {
|
|
105
|
-
console.log(
|
|
118
|
+
console.log(a.yellow(isZh ? "\u6CA1\u6709\u914D\u7F6E\u4EFB\u4F55 MCP \u670D\u52A1" : "No MCP services configured"));
|
|
106
119
|
return;
|
|
107
120
|
}
|
|
108
121
|
let servicesToRelease;
|
|
@@ -114,37 +127,37 @@ async function mcpRelease(options = {}) {
|
|
|
114
127
|
servicesToRelease = getReleasableServices(configuredServices, "all");
|
|
115
128
|
}
|
|
116
129
|
if (servicesToRelease.length === 0) {
|
|
117
|
-
console.log(
|
|
130
|
+
console.log(a.green(isZh ? "\u2714 \u6CA1\u6709\u53EF\u91CA\u653E\u7684\u670D\u52A1" : "\u2714 No services to release"));
|
|
118
131
|
return;
|
|
119
132
|
}
|
|
120
133
|
console.log(isZh ? "\u5C06\u91CA\u653E\u4EE5\u4E0B\u670D\u52A1:" : "Services to release:");
|
|
121
134
|
for (const serviceId of servicesToRelease) {
|
|
122
135
|
const tier = MCP_SERVICE_TIERS[serviceId] || "ondemand";
|
|
123
|
-
console.log(` ${
|
|
136
|
+
console.log(` ${a.yellow("\u2022")} ${serviceId} ${a.dim(`[${tier}]`)}`);
|
|
124
137
|
}
|
|
125
138
|
console.log("");
|
|
126
139
|
if (options.dryRun) {
|
|
127
|
-
console.log(
|
|
140
|
+
console.log(a.green(isZh ? "(\u6A21\u62DF\u8FD0\u884C - \u4E0D\u4F1A\u5B9E\u9645\u4FEE\u6539\u914D\u7F6E)" : "(Dry run - no changes will be made)"));
|
|
128
141
|
return;
|
|
129
142
|
}
|
|
130
143
|
const result = await releaseServices(servicesToRelease, options);
|
|
131
144
|
if (result.success) {
|
|
132
|
-
console.log(
|
|
145
|
+
console.log(a.green(`\u2714 ${isZh ? "\u5DF2\u91CA\u653E" : "Released"} ${result.releasedServices.length} ${isZh ? "\u4E2A\u670D\u52A1" : "services"}`));
|
|
133
146
|
if (result.skippedServices.length > 0) {
|
|
134
|
-
console.log(
|
|
147
|
+
console.log(a.yellow(`${isZh ? "\u8DF3\u8FC7" : "Skipped"}: ${result.skippedServices.join(", ")}`));
|
|
135
148
|
}
|
|
136
149
|
const remaining = configuredServices.filter((s) => !result.releasedServices.includes(s));
|
|
137
150
|
console.log("");
|
|
138
|
-
console.log(
|
|
151
|
+
console.log(a.dim(`${isZh ? "\u5269\u4F59\u670D\u52A1" : "Remaining services"}: ${remaining.length}`));
|
|
139
152
|
if (remaining.length > 0) {
|
|
140
|
-
console.log(
|
|
153
|
+
console.log(a.dim(` ${remaining.join(", ")}`));
|
|
141
154
|
}
|
|
142
155
|
console.log("");
|
|
143
|
-
console.log(
|
|
156
|
+
console.log(a.yellow(isZh ? "\u26A0\uFE0F \u8BF7\u91CD\u542F Claude Code \u4EE5\u4F7F\u66F4\u6539\u751F\u6548" : "\u26A0\uFE0F Please restart Claude Code for changes to take effect"));
|
|
144
157
|
} else {
|
|
145
|
-
console.log(
|
|
158
|
+
console.log(a.red(`\u2716 ${isZh ? "\u91CA\u653E\u5931\u8D25" : "Release failed"}`));
|
|
146
159
|
for (const error of result.errors) {
|
|
147
|
-
console.log(
|
|
160
|
+
console.log(a.red(` ${error}`));
|
|
148
161
|
}
|
|
149
162
|
}
|
|
150
163
|
}
|
|
@@ -187,39 +200,39 @@ async function mcpDoctor(options = {}) {
|
|
|
187
200
|
const lang = options.lang || i18n.language || "en";
|
|
188
201
|
const isZh = lang === "zh-CN";
|
|
189
202
|
console.log("");
|
|
190
|
-
console.log(
|
|
191
|
-
console.log(
|
|
203
|
+
console.log(a.bold.cyan(isZh ? "\u{1F50D} MCP \u5065\u5EB7\u68C0\u67E5" : "\u{1F50D} MCP Health Check"));
|
|
204
|
+
console.log(a.dim("\u2550".repeat(60)));
|
|
192
205
|
console.log("");
|
|
193
206
|
const config = readMcpConfig();
|
|
194
207
|
const configuredServices = config?.mcpServers ? Object.keys(config.mcpServers) : [];
|
|
195
|
-
console.log(
|
|
196
|
-
console.log(
|
|
208
|
+
console.log(a.bold(isZh ? "\u{1F4CA} \u670D\u52A1\u7EDF\u8BA1" : "\u{1F4CA} Service Statistics"));
|
|
209
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
197
210
|
const coreServices = getServicesByTier("core");
|
|
198
211
|
const ondemandServices = getServicesByTier("ondemand");
|
|
199
212
|
const scenarioServices = getServicesByTier("scenario");
|
|
200
213
|
const configuredCore = configuredServices.filter((s) => coreServices.includes(s));
|
|
201
214
|
const configuredOndemand = configuredServices.filter((s) => ondemandServices.includes(s));
|
|
202
215
|
const configuredScenario = configuredServices.filter((s) => scenarioServices.includes(s));
|
|
203
|
-
console.log(` ${isZh ? "\u603B\u8BA1" : "Total"}: ${
|
|
204
|
-
console.log(` ${
|
|
205
|
-
console.log(` ${
|
|
206
|
-
console.log(` ${
|
|
216
|
+
console.log(` ${isZh ? "\u603B\u8BA1" : "Total"}: ${a.bold(configuredServices.length.toString())} ${isZh ? "\u4E2A\u670D\u52A1" : "services"}`);
|
|
217
|
+
console.log(` ${a.green("Core")}: ${configuredCore.length}/${coreServices.length}`);
|
|
218
|
+
console.log(` ${a.yellow("OnDemand")}: ${configuredOndemand.length}/${ondemandServices.length}`);
|
|
219
|
+
console.log(` ${a.green("Scenario")}: ${configuredScenario.length}/${scenarioServices.length}`);
|
|
207
220
|
console.log("");
|
|
208
221
|
const perfWarning = checkMcpPerformance(configuredServices.length);
|
|
209
222
|
if (perfWarning) {
|
|
210
|
-
console.log(
|
|
211
|
-
console.log(
|
|
223
|
+
console.log(a.bold(isZh ? "\u26A0\uFE0F \u6027\u80FD\u8B66\u544A" : "\u26A0\uFE0F Performance Warning"));
|
|
224
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
212
225
|
console.log(formatPerformanceWarning(perfWarning, lang));
|
|
213
226
|
console.log("");
|
|
214
227
|
}
|
|
215
228
|
const resourceUsage = calculateResourceUsage(configuredServices.length);
|
|
216
|
-
console.log(
|
|
217
|
-
console.log(
|
|
229
|
+
console.log(a.bold(isZh ? "\u{1F4BB} \u8D44\u6E90\u4F7F\u7528\u4F30\u7B97" : "\u{1F4BB} Resource Usage Estimate"));
|
|
230
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
218
231
|
const ratingColors = {
|
|
219
|
-
low:
|
|
220
|
-
medium:
|
|
221
|
-
high:
|
|
222
|
-
critical:
|
|
232
|
+
low: a.green,
|
|
233
|
+
medium: a.yellow,
|
|
234
|
+
high: a.red,
|
|
235
|
+
critical: a.bgRed.white
|
|
223
236
|
};
|
|
224
237
|
const ratingLabels = {
|
|
225
238
|
low: isZh ? "\u4F4E" : "Low",
|
|
@@ -232,35 +245,35 @@ async function mcpDoctor(options = {}) {
|
|
|
232
245
|
console.log(` ${isZh ? "\u8BC4\u7EA7" : "Rating"}: ${ratingColors[resourceUsage.rating](ratingLabels[resourceUsage.rating])}`);
|
|
233
246
|
console.log("");
|
|
234
247
|
if (options.verbose || options.service) {
|
|
235
|
-
console.log(
|
|
236
|
-
console.log(
|
|
248
|
+
console.log(a.bold(isZh ? "\u{1F527} \u670D\u52A1\u8BE6\u60C5" : "\u{1F527} Service Details"));
|
|
249
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
237
250
|
const servicesToCheck = options.service ? [options.service] : configuredServices;
|
|
238
251
|
for (const serviceId of servicesToCheck) {
|
|
239
252
|
const health = checkServiceHealth(serviceId, configuredServices);
|
|
240
253
|
const statusIcon = {
|
|
241
|
-
healthy:
|
|
242
|
-
warning:
|
|
243
|
-
error:
|
|
244
|
-
unknown:
|
|
254
|
+
healthy: a.green("\u2714"),
|
|
255
|
+
warning: a.yellow("\u26A0"),
|
|
256
|
+
error: a.red("\u2716"),
|
|
257
|
+
unknown: a.gray("?")
|
|
245
258
|
};
|
|
246
259
|
const tierColor = {
|
|
247
|
-
core:
|
|
248
|
-
ondemand:
|
|
249
|
-
scenario:
|
|
260
|
+
core: a.green,
|
|
261
|
+
ondemand: a.yellow,
|
|
262
|
+
scenario: a.green
|
|
250
263
|
};
|
|
251
|
-
console.log(` ${statusIcon[health.status]} ${
|
|
252
|
-
console.log(` ${isZh ? "\u5C42\u7EA7" : "Tier"}: ${(tierColor[health.tier] ||
|
|
264
|
+
console.log(` ${statusIcon[health.status]} ${a.bold(serviceId)}`);
|
|
265
|
+
console.log(` ${isZh ? "\u5C42\u7EA7" : "Tier"}: ${(tierColor[health.tier] || a.gray)(health.tier)}`);
|
|
253
266
|
if (health.idleTimeout) {
|
|
254
267
|
console.log(` ${isZh ? "\u7A7A\u95F2\u8D85\u65F6" : "Idle Timeout"}: ${health.idleTimeout}s`);
|
|
255
268
|
}
|
|
256
269
|
if (health.issues.length > 0) {
|
|
257
270
|
for (const issue of health.issues) {
|
|
258
|
-
console.log(` ${
|
|
271
|
+
console.log(` ${a.yellow("!")} ${issue}`);
|
|
259
272
|
}
|
|
260
273
|
}
|
|
261
274
|
if (health.suggestions.length > 0) {
|
|
262
275
|
for (const suggestion of health.suggestions) {
|
|
263
|
-
console.log(` ${
|
|
276
|
+
console.log(` ${a.dim("\u2192")} ${suggestion}`);
|
|
264
277
|
}
|
|
265
278
|
}
|
|
266
279
|
console.log("");
|
|
@@ -268,21 +281,21 @@ async function mcpDoctor(options = {}) {
|
|
|
268
281
|
}
|
|
269
282
|
const suggestions = getOptimizationSuggestions(configuredServices);
|
|
270
283
|
if (suggestions.length > 0) {
|
|
271
|
-
console.log(
|
|
272
|
-
console.log(
|
|
284
|
+
console.log(a.bold(isZh ? "\u{1F4A1} \u4F18\u5316\u5EFA\u8BAE" : "\u{1F4A1} Optimization Suggestions"));
|
|
285
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
273
286
|
for (const suggestion of suggestions) {
|
|
274
287
|
console.log(` \u2022 ${suggestion}`);
|
|
275
288
|
}
|
|
276
289
|
console.log("");
|
|
277
290
|
}
|
|
278
|
-
console.log(
|
|
279
|
-
console.log(
|
|
280
|
-
console.log(` ${
|
|
281
|
-
console.log(` ${
|
|
282
|
-
console.log(` ${
|
|
291
|
+
console.log(a.bold(isZh ? "\u{1F680} \u5FEB\u901F\u64CD\u4F5C" : "\u{1F680} Quick Actions"));
|
|
292
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
293
|
+
console.log(` ${a.green("ccjk mcp profile use minimal")} - ${isZh ? "\u5207\u6362\u5230\u6781\u7B80\u6A21\u5F0F" : "Switch to minimal mode"}`);
|
|
294
|
+
console.log(` ${a.green("ccjk mcp profile list")} - ${isZh ? "\u67E5\u770B\u6240\u6709\u9884\u8BBE" : "View all profiles"}`);
|
|
295
|
+
console.log(` ${a.green("ccjk mcp release")} - ${isZh ? "\u91CA\u653E\u7A7A\u95F2\u670D\u52A1" : "Release idle services"}`);
|
|
283
296
|
console.log("");
|
|
284
|
-
console.log(
|
|
285
|
-
const summaryStatus = perfWarning?.level === "critical" ?
|
|
297
|
+
console.log(a.dim("\u2550".repeat(60)));
|
|
298
|
+
const summaryStatus = perfWarning?.level === "critical" ? a.red(isZh ? "\u9700\u8981\u4F18\u5316" : "Needs Optimization") : perfWarning?.level === "warning" ? a.yellow(isZh ? "\u5EFA\u8BAE\u4F18\u5316" : "Optimization Recommended") : a.green(isZh ? "\u72B6\u6001\u826F\u597D" : "Healthy");
|
|
286
299
|
console.log(`${isZh ? "\u603B\u4F53\u72B6\u6001" : "Overall Status"}: ${summaryStatus}`);
|
|
287
300
|
console.log("");
|
|
288
301
|
}
|
|
@@ -844,46 +857,46 @@ async function mcpSearch(keyword, options = {}) {
|
|
|
844
857
|
};
|
|
845
858
|
const result = await client.search(searchOptions);
|
|
846
859
|
if (result.packages.length === 0) {
|
|
847
|
-
console.log(
|
|
860
|
+
console.log(a.yellow(`
|
|
848
861
|
${i18n.t("mcp:market.noResults", { keyword })}`));
|
|
849
862
|
return;
|
|
850
863
|
}
|
|
851
|
-
console.log(
|
|
864
|
+
console.log(a.green.bold(`
|
|
852
865
|
${i18n.t("mcp:market.searchResults", { count: result.total, keyword })}
|
|
853
866
|
`));
|
|
854
867
|
result.packages.forEach((pkg, idx) => {
|
|
855
868
|
const lang = i18n.language;
|
|
856
|
-
const verifiedBadge = pkg.verified ?
|
|
857
|
-
console.log(`${
|
|
869
|
+
const verifiedBadge = pkg.verified ? a.green("\u2713") : a.dim("\u25CB");
|
|
870
|
+
console.log(`${a.green(`${idx + 1}.`)} ${a.bold(pkg.name)} ${verifiedBadge} ${a.dim(`[${pkg.category}]`)}`);
|
|
858
871
|
console.log(` ${pkg.description[lang] || pkg.description.en}`);
|
|
859
|
-
console.log(` ${
|
|
860
|
-
console.log(` ${
|
|
872
|
+
console.log(` ${a.dim(`\u{1F4E5} ${pkg.downloads.toLocaleString()} | \u2B50 ${pkg.rating.toFixed(1)}/5.0`)}`);
|
|
873
|
+
console.log(` ${a.dim(pkg.id)}
|
|
861
874
|
`);
|
|
862
875
|
});
|
|
863
876
|
if (result.hasMore) {
|
|
864
|
-
console.log(
|
|
877
|
+
console.log(a.dim(`
|
|
865
878
|
${i18n.t("mcp:market.moreResults", { total: result.total, shown: result.packages.length })}`));
|
|
866
879
|
}
|
|
867
880
|
} catch {
|
|
868
|
-
console.log(
|
|
881
|
+
console.log(a.yellow(`
|
|
869
882
|
${i18n.t("mcp:market.apiUnavailable")}`));
|
|
870
|
-
console.log(
|
|
883
|
+
console.log(a.dim(i18n.t("mcp:market.usingLocalData")));
|
|
871
884
|
const localServers = getLocalFallbackServices();
|
|
872
885
|
const results = localServers.filter(
|
|
873
886
|
(s) => s.name.toLowerCase().includes(keyword.toLowerCase()) || s.description.toLowerCase().includes(keyword.toLowerCase()) || s.category.toLowerCase().includes(keyword.toLowerCase())
|
|
874
887
|
);
|
|
875
888
|
if (results.length === 0) {
|
|
876
|
-
console.log(
|
|
889
|
+
console.log(a.yellow(`
|
|
877
890
|
${i18n.t("mcp:market.noResults", { keyword })}`));
|
|
878
891
|
return;
|
|
879
892
|
}
|
|
880
|
-
console.log(
|
|
893
|
+
console.log(a.green.bold(`
|
|
881
894
|
${i18n.t("mcp:market.searchResults", { count: results.length, keyword })}
|
|
882
895
|
`));
|
|
883
896
|
results.forEach((server, idx) => {
|
|
884
|
-
console.log(`${
|
|
897
|
+
console.log(`${a.green(`${idx + 1}.`)} ${a.bold(server.name)} ${a.dim(`[${server.category}]`)}`);
|
|
885
898
|
console.log(` ${server.description}`);
|
|
886
|
-
console.log(` ${
|
|
899
|
+
console.log(` ${a.dim(server.package)}
|
|
887
900
|
`);
|
|
888
901
|
});
|
|
889
902
|
}
|
|
@@ -903,21 +916,21 @@ async function mcpInstall(serverName, options = {}) {
|
|
|
903
916
|
}
|
|
904
917
|
}
|
|
905
918
|
if (!server) {
|
|
906
|
-
console.log(
|
|
919
|
+
console.log(a.red(`
|
|
907
920
|
${i18n.t("mcp:market.serverNotFound", { name: serverName })}`));
|
|
908
921
|
return;
|
|
909
922
|
}
|
|
910
923
|
if (server.serviceId) {
|
|
911
924
|
const isInstalled = await isMcpServiceInstalled(server.serviceId, options.tool);
|
|
912
925
|
if (isInstalled) {
|
|
913
|
-
console.log(
|
|
926
|
+
console.log(a.yellow(`
|
|
914
927
|
${i18n.t("mcp:installer.alreadyInstalled", { name: server.name })}`));
|
|
915
928
|
return;
|
|
916
929
|
}
|
|
917
|
-
console.log(
|
|
930
|
+
console.log(a.green(`
|
|
918
931
|
${i18n.t("mcp:market.installing", { name: server.name })}`));
|
|
919
932
|
if (server.requiresApiKey) {
|
|
920
|
-
console.log(
|
|
933
|
+
console.log(a.dim(i18n.t("mcp:installer.requiresApiKey")));
|
|
921
934
|
}
|
|
922
935
|
console.log("");
|
|
923
936
|
const { confirm } = await inquirer.prompt([{
|
|
@@ -927,25 +940,25 @@ ${i18n.t("mcp:market.installing", { name: server.name })}`));
|
|
|
927
940
|
default: true
|
|
928
941
|
}]);
|
|
929
942
|
if (!confirm) {
|
|
930
|
-
console.log(
|
|
943
|
+
console.log(a.yellow(i18n.t("mcp:market.cancelled")));
|
|
931
944
|
return;
|
|
932
945
|
}
|
|
933
946
|
const result = await installMcpService(server.serviceId, options.tool);
|
|
934
947
|
if (result.success) {
|
|
935
|
-
console.log(
|
|
948
|
+
console.log(a.green(`
|
|
936
949
|
${i18n.t("mcp:market.installSuccess", { name: server.name })}`));
|
|
937
|
-
console.log(
|
|
950
|
+
console.log(a.dim(i18n.t("mcp:installer.restartRequired")));
|
|
938
951
|
} else {
|
|
939
|
-
console.log(
|
|
952
|
+
console.log(a.red(`
|
|
940
953
|
${i18n.t("mcp:installer.installFailed", { name: server.name })}`));
|
|
941
954
|
if (result.error) {
|
|
942
|
-
console.log(
|
|
955
|
+
console.log(a.dim(result.error));
|
|
943
956
|
}
|
|
944
957
|
}
|
|
945
958
|
} else {
|
|
946
|
-
console.log(
|
|
959
|
+
console.log(a.green(`
|
|
947
960
|
${i18n.t("mcp:market.installing", { name: server.name })}`));
|
|
948
|
-
console.log(
|
|
961
|
+
console.log(a.dim(`Package: ${server.package}
|
|
949
962
|
`));
|
|
950
963
|
const { confirm } = await inquirer.prompt([{
|
|
951
964
|
type: "confirm",
|
|
@@ -954,12 +967,12 @@ ${i18n.t("mcp:market.installing", { name: server.name })}`));
|
|
|
954
967
|
default: true
|
|
955
968
|
}]);
|
|
956
969
|
if (!confirm) {
|
|
957
|
-
console.log(
|
|
970
|
+
console.log(a.yellow(i18n.t("mcp:market.cancelled")));
|
|
958
971
|
return;
|
|
959
972
|
}
|
|
960
|
-
console.log(
|
|
973
|
+
console.log(a.green(`
|
|
961
974
|
${i18n.t("mcp:market.installSuccess", { name: server.name })}`));
|
|
962
|
-
console.log(
|
|
975
|
+
console.log(a.dim(i18n.t("mcp:market.manualConfig")));
|
|
963
976
|
}
|
|
964
977
|
}
|
|
965
978
|
async function mcpUninstall(serverName, options = {}) {
|
|
@@ -968,7 +981,7 @@ async function mcpUninstall(serverName, options = {}) {
|
|
|
968
981
|
const serviceId = server?.serviceId || serverName;
|
|
969
982
|
const isInstalled = await isMcpServiceInstalled(serviceId, options.tool);
|
|
970
983
|
if (!isInstalled) {
|
|
971
|
-
console.log(
|
|
984
|
+
console.log(a.yellow(`
|
|
972
985
|
${i18n.t("mcp:installer.serviceNotInstalled", { id: serverName })}`));
|
|
973
986
|
return;
|
|
974
987
|
}
|
|
@@ -980,19 +993,19 @@ ${i18n.t("mcp:installer.serviceNotInstalled", { id: serverName })}`));
|
|
|
980
993
|
default: false
|
|
981
994
|
}]);
|
|
982
995
|
if (!confirm) {
|
|
983
|
-
console.log(
|
|
996
|
+
console.log(a.yellow(i18n.t("mcp:market.cancelled")));
|
|
984
997
|
return;
|
|
985
998
|
}
|
|
986
999
|
const result = await uninstallMcpService(serviceId, options.tool);
|
|
987
1000
|
if (result.success) {
|
|
988
|
-
console.log(
|
|
1001
|
+
console.log(a.green(`
|
|
989
1002
|
${i18n.t("mcp:installer.uninstallSuccess", { name: displayName })}`));
|
|
990
|
-
console.log(
|
|
1003
|
+
console.log(a.dim(i18n.t("mcp:installer.restartRequired")));
|
|
991
1004
|
} else {
|
|
992
|
-
console.log(
|
|
1005
|
+
console.log(a.red(`
|
|
993
1006
|
${i18n.t("mcp:installer.uninstallFailed", { name: displayName })}`));
|
|
994
1007
|
if (result.error) {
|
|
995
|
-
console.log(
|
|
1008
|
+
console.log(a.dim(result.error));
|
|
996
1009
|
}
|
|
997
1010
|
}
|
|
998
1011
|
}
|
|
@@ -1071,24 +1084,24 @@ async function listProfiles(options = {}) {
|
|
|
1071
1084
|
const lang = options.lang || i18n.language || "en";
|
|
1072
1085
|
const isZh = lang === "zh-CN";
|
|
1073
1086
|
console.log("");
|
|
1074
|
-
console.log(
|
|
1075
|
-
console.log(
|
|
1087
|
+
console.log(a.bold.cyan(isZh ? "\u{1F4CB} \u53EF\u7528\u7684 MCP \u914D\u7F6E\u9884\u8BBE" : "\u{1F4CB} Available MCP Profiles"));
|
|
1088
|
+
console.log(a.dim("\u2500".repeat(50)));
|
|
1076
1089
|
console.log("");
|
|
1077
1090
|
for (const profile of MCP_PROFILES) {
|
|
1078
1091
|
const name = getProfileName(profile, lang);
|
|
1079
1092
|
const desc = getProfileDescription(profile, lang);
|
|
1080
1093
|
const serviceCount = profile.services.length === 0 ? isZh ? "\u5168\u90E8" : "All" : profile.services.length.toString();
|
|
1081
|
-
const defaultBadge = profile.isDefault ?
|
|
1082
|
-
console.log(`${
|
|
1083
|
-
console.log(` ${
|
|
1084
|
-
console.log(` ${
|
|
1094
|
+
const defaultBadge = profile.isDefault ? a.green(isZh ? " [\u9ED8\u8BA4]" : " [default]") : "";
|
|
1095
|
+
console.log(`${a.bold.green(profile.id)}${defaultBadge}`);
|
|
1096
|
+
console.log(` ${a.white(name)} - ${a.dim(desc)}`);
|
|
1097
|
+
console.log(` ${a.dim(isZh ? "\u670D\u52A1\u6570\u91CF" : "Services")}: ${serviceCount}`);
|
|
1085
1098
|
if (profile.services.length > 0 && profile.services.length <= 6) {
|
|
1086
|
-
console.log(` ${
|
|
1099
|
+
console.log(` ${a.dim(profile.services.join(", "))}`);
|
|
1087
1100
|
}
|
|
1088
1101
|
console.log("");
|
|
1089
1102
|
}
|
|
1090
|
-
console.log(
|
|
1091
|
-
console.log(
|
|
1103
|
+
console.log(a.dim("\u2500".repeat(50)));
|
|
1104
|
+
console.log(a.dim(isZh ? "\u4F7F\u7528 `ccjk mcp profile use <id>` \u5207\u6362\u914D\u7F6E" : "Use `ccjk mcp profile use <id>` to switch profile"));
|
|
1092
1105
|
console.log("");
|
|
1093
1106
|
}
|
|
1094
1107
|
async function useProfile(profileId, options = {}) {
|
|
@@ -1096,13 +1109,13 @@ async function useProfile(profileId, options = {}) {
|
|
|
1096
1109
|
const isZh = lang === "zh-CN";
|
|
1097
1110
|
const profile = getProfileById(profileId);
|
|
1098
1111
|
if (!profile) {
|
|
1099
|
-
console.log(
|
|
1100
|
-
console.log(
|
|
1112
|
+
console.log(a.red(isZh ? `\u274C \u672A\u627E\u5230\u914D\u7F6E\u9884\u8BBE: ${profileId}` : `\u274C Profile not found: ${profileId}`));
|
|
1113
|
+
console.log(a.dim(isZh ? `\u53EF\u7528\u9884\u8BBE: ${getProfileIds().join(", ")}` : `Available profiles: ${getProfileIds().join(", ")}`));
|
|
1101
1114
|
return;
|
|
1102
1115
|
}
|
|
1103
1116
|
const backupPath = backupMcpConfig();
|
|
1104
1117
|
if (backupPath) {
|
|
1105
|
-
console.log(
|
|
1118
|
+
console.log(a.gray(`\u2714 ${isZh ? "\u5DF2\u5907\u4EFD\u5F53\u524D\u914D\u7F6E" : "Backed up current config"}: ${backupPath}`));
|
|
1106
1119
|
}
|
|
1107
1120
|
let servicesToEnable;
|
|
1108
1121
|
if (profile.services.length === 0) {
|
|
@@ -1124,15 +1137,15 @@ async function useProfile(profileId, options = {}) {
|
|
|
1124
1137
|
};
|
|
1125
1138
|
writeMcpConfig(newConfig);
|
|
1126
1139
|
const profileName = getProfileName(profile, lang);
|
|
1127
|
-
console.log(
|
|
1128
|
-
console.log(
|
|
1140
|
+
console.log(a.green(`\u2714 ${isZh ? "\u5DF2\u5207\u6362\u5230\u914D\u7F6E\u9884\u8BBE" : "Switched to profile"}: ${profileName}`));
|
|
1141
|
+
console.log(a.dim(` ${isZh ? "\u5DF2\u542F\u7528\u670D\u52A1" : "Enabled services"}: ${servicesToEnable.length}`));
|
|
1129
1142
|
const warning = checkMcpPerformance(servicesToEnable.length);
|
|
1130
1143
|
if (warning) {
|
|
1131
1144
|
console.log("");
|
|
1132
1145
|
console.log(formatPerformanceWarning(warning, lang));
|
|
1133
1146
|
}
|
|
1134
1147
|
console.log("");
|
|
1135
|
-
console.log(
|
|
1148
|
+
console.log(a.yellow(isZh ? "\u26A0\uFE0F \u8BF7\u91CD\u542F Claude Code \u4EE5\u4F7F\u66F4\u6539\u751F\u6548" : "\u26A0\uFE0F Please restart Claude Code for changes to take effect"));
|
|
1136
1149
|
}
|
|
1137
1150
|
|
|
1138
1151
|
async function mcpStatus(options = {}) {
|
|
@@ -1142,8 +1155,8 @@ async function mcpStatus(options = {}) {
|
|
|
1142
1155
|
const lang = options.lang || i18n.language || "en";
|
|
1143
1156
|
const isZh = lang === "zh-CN";
|
|
1144
1157
|
console.log("");
|
|
1145
|
-
console.log(
|
|
1146
|
-
console.log(
|
|
1158
|
+
console.log(a.bold.cyan(isZh ? "\u26A1 MCP \u5FEB\u901F\u72B6\u6001" : "\u26A1 MCP Quick Status"));
|
|
1159
|
+
console.log(a.dim("\u2500".repeat(40)));
|
|
1147
1160
|
const config = await readMcpConfig();
|
|
1148
1161
|
const services = Object.keys(config?.mcpServers || {});
|
|
1149
1162
|
let coreCount = 0;
|
|
@@ -1158,27 +1171,27 @@ async function mcpStatus(options = {}) {
|
|
|
1158
1171
|
else scenarioCount++;
|
|
1159
1172
|
}
|
|
1160
1173
|
console.log("");
|
|
1161
|
-
console.log(`${
|
|
1162
|
-
console.log(`${
|
|
1163
|
-
console.log(`${
|
|
1164
|
-
console.log(`${
|
|
1174
|
+
console.log(`${a.green("\u25CF")} ${isZh ? "\u6838\u5FC3\u670D\u52A1" : "Core"}: ${coreCount}`);
|
|
1175
|
+
console.log(`${a.yellow("\u25CF")} ${isZh ? "\u6309\u9700\u670D\u52A1" : "On-demand"}: ${ondemandCount}`);
|
|
1176
|
+
console.log(`${a.green("\u25CF")} ${isZh ? "\u573A\u666F\u670D\u52A1" : "Scenario"}: ${scenarioCount}`);
|
|
1177
|
+
console.log(`${a.dim("\u2500")} ${isZh ? "\u603B\u8BA1" : "Total"}: ${services.length}`);
|
|
1165
1178
|
const perfResult = checkMcpPerformance(services.length);
|
|
1166
1179
|
if (perfResult) {
|
|
1167
1180
|
console.log("");
|
|
1168
1181
|
console.log(formatPerformanceWarning(perfResult, lang));
|
|
1169
1182
|
} else {
|
|
1170
1183
|
console.log("");
|
|
1171
|
-
console.log(
|
|
1184
|
+
console.log(a.green(isZh ? "\u2713 \u6027\u80FD\u72B6\u6001\u826F\u597D" : "\u2713 Performance OK"));
|
|
1172
1185
|
}
|
|
1173
1186
|
console.log("");
|
|
1174
|
-
console.log(
|
|
1187
|
+
console.log(a.dim(isZh ? "\u63D0\u793A: \u4F7F\u7528 ccjk mcp doctor \u67E5\u770B\u8BE6\u7EC6\u8BCA\u65AD" : "Tip: Use ccjk mcp doctor for detailed diagnostics"));
|
|
1175
1188
|
}
|
|
1176
1189
|
function mcpHelp(options = {}) {
|
|
1177
1190
|
const lang = options.lang || i18n.language || "en";
|
|
1178
1191
|
const isZh = lang === "zh-CN";
|
|
1179
1192
|
console.log("");
|
|
1180
|
-
console.log(
|
|
1181
|
-
console.log(
|
|
1193
|
+
console.log(a.bold.cyan(isZh ? "\u{1F527} MCP \u7BA1\u7406\u547D\u4EE4" : "\u{1F527} MCP Management Commands"));
|
|
1194
|
+
console.log(a.dim("\u2500".repeat(50)));
|
|
1182
1195
|
console.log("");
|
|
1183
1196
|
const commands = [
|
|
1184
1197
|
{
|
|
@@ -1207,12 +1220,12 @@ function mcpHelp(options = {}) {
|
|
|
1207
1220
|
}
|
|
1208
1221
|
];
|
|
1209
1222
|
for (const { cmd, desc } of commands) {
|
|
1210
|
-
console.log(` ${
|
|
1211
|
-
console.log(` ${
|
|
1223
|
+
console.log(` ${a.green(cmd)}`);
|
|
1224
|
+
console.log(` ${a.dim(desc)}`);
|
|
1212
1225
|
console.log("");
|
|
1213
1226
|
}
|
|
1214
|
-
console.log(
|
|
1215
|
-
console.log(
|
|
1227
|
+
console.log(a.dim("\u2500".repeat(50)));
|
|
1228
|
+
console.log(a.dim(isZh ? "\u{1F4A1} \u63A8\u8350: \u4F7F\u7528 minimal \u9884\u8BBE\u53EF\u663E\u8457\u63D0\u5347\u6027\u80FD" : "\u{1F4A1} Tip: Use minimal profile for best performance"));
|
|
1216
1229
|
}
|
|
1217
1230
|
|
|
1218
1231
|
export { listProfiles, mcpDoctor, mcpHelp, mcpInstall, mcpList, mcpRelease, mcpSearch, mcpStatus, mcpUninstall, useProfile };
|