ccjk 13.6.7 → 14.0.1
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/api-cli.mjs +4 -2
- package/dist/chunks/api-config-selector.mjs +2 -4
- package/dist/chunks/auto-fix.mjs +3 -1
- package/dist/chunks/ccjk-all.mjs +5 -2
- package/dist/chunks/ccjk-mcp.mjs +5 -2
- package/dist/chunks/ccjk-setup.mjs +4 -1
- package/dist/chunks/ccr.mjs +5 -8
- package/dist/chunks/check-updates.mjs +1 -4
- package/dist/chunks/claude-code-incremental-manager.mjs +4 -6
- package/dist/chunks/code-type-resolver.mjs +878 -0
- package/dist/chunks/codex-config-switch.mjs +0 -1
- package/dist/chunks/codex-provider-manager.mjs +0 -1
- package/dist/chunks/codex.mjs +2 -2
- package/dist/chunks/config-switch.mjs +2 -4
- package/dist/chunks/config.mjs +1144 -5
- package/dist/chunks/config2.mjs +6 -4
- package/dist/chunks/config3.mjs +4 -2
- package/dist/chunks/doctor.mjs +1 -1
- package/dist/chunks/evolution.mjs +47 -27
- package/dist/chunks/features.mjs +2 -3
- package/dist/chunks/index10.mjs +115 -12
- package/dist/chunks/init.mjs +44 -17
- package/dist/chunks/installer.mjs +2 -2
- package/dist/chunks/mcp-cli.mjs +18 -19
- package/dist/chunks/mcp.mjs +6 -7
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/platform.mjs +1 -1
- package/dist/chunks/quick-setup.mjs +2 -5
- package/dist/chunks/slash-commands.mjs +1 -1
- package/dist/chunks/status.mjs +63 -16
- package/dist/chunks/uninstall.mjs +1 -3
- package/dist/chunks/update.mjs +4 -5
- package/dist/cli.mjs +58 -17
- package/dist/i18n/locales/en/configuration.json +6 -2
- package/dist/i18n/locales/en/menu.json +7 -0
- package/dist/i18n/locales/zh-CN/configuration.json +6 -2
- package/dist/i18n/locales/zh-CN/menu.json +7 -0
- package/dist/index.d.mts +64 -17
- package/dist/index.d.ts +64 -17
- package/dist/index.mjs +12 -720
- package/dist/shared/{ccjk.DHaUdzX3.mjs → ccjk.B6VCKdyy.mjs} +2 -2
- package/dist/shared/ccjk.BO45TPXJ.mjs +807 -0
- package/dist/shared/{ccjk.B4aXNclK.mjs → ccjk.CVjfbEIj.mjs} +1 -1
- package/dist/shared/{ccjk.Dz0ssUQx.mjs → ccjk.Dh6Be-ef.mjs} +1 -1
- package/package.json +1 -1
- package/dist/chunks/claude-code-config-manager.mjs +0 -811
- package/dist/chunks/claude-config.mjs +0 -286
- package/dist/chunks/intent-engine.mjs +0 -142
- package/dist/chunks/smart-defaults.mjs +0 -425
- package/dist/shared/ccjk.DJuyfrlL.mjs +0 -348
- package/dist/shared/ccjk.yYQMbHH3.mjs +0 -115
package/dist/chunks/config2.mjs
CHANGED
|
@@ -8,8 +8,7 @@ import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
|
|
|
8
8
|
import { i as inquirer } from './index6.mjs';
|
|
9
9
|
import { SETTINGS_FILE } from './constants.mjs';
|
|
10
10
|
import { ensureI18nInitialized, i18n } from './index2.mjs';
|
|
11
|
-
import {
|
|
12
|
-
import { b as backupExistingConfig } from './config.mjs';
|
|
11
|
+
import { l as setPrimaryApiKey, n as addCompletedOnboarding, b as backupExistingConfig } from './config.mjs';
|
|
13
12
|
import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
|
|
14
13
|
import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
|
|
15
14
|
import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
@@ -34,6 +33,9 @@ import 'node:stream';
|
|
|
34
33
|
import './fs-operations.mjs';
|
|
35
34
|
import 'node:fs/promises';
|
|
36
35
|
import '../shared/ccjk.DScm_NnL.mjs';
|
|
36
|
+
import './ccjk-config.mjs';
|
|
37
|
+
import '../shared/ccjk.BBtCGd_g.mjs';
|
|
38
|
+
import './index3.mjs';
|
|
37
39
|
import '../shared/ccjk.DeWpAShp.mjs';
|
|
38
40
|
|
|
39
41
|
const PROVIDER_PRESETS_URL = "https://pub-0dc3e1677e894f07bbea11b17a29e032.r2.dev/providers.json";
|
|
@@ -415,7 +417,7 @@ async function setupCcrConfiguration() {
|
|
|
415
417
|
console.log(a.yellow(`${i18n.t("ccr:keepingExistingConfig")}`));
|
|
416
418
|
await configureCcrProxy(existingConfig);
|
|
417
419
|
try {
|
|
418
|
-
const { manageApiKeyApproval } = await import('./
|
|
420
|
+
const { manageApiKeyApproval } = await import('./config.mjs').then(function (n) { return n.E; });
|
|
419
421
|
const apiKey = existingConfig.APIKEY || "sk-ccjk-x-ccr";
|
|
420
422
|
manageApiKeyApproval(apiKey);
|
|
421
423
|
console.log(a.green(`\u2714 ${i18n.t("ccr:apiKeyApprovalSuccess")}`));
|
|
@@ -449,7 +451,7 @@ async function setupCcrConfiguration() {
|
|
|
449
451
|
console.error(a.red(i18n.t("errors:failedToSetOnboarding")), error);
|
|
450
452
|
}
|
|
451
453
|
try {
|
|
452
|
-
const { manageApiKeyApproval } = await import('./
|
|
454
|
+
const { manageApiKeyApproval } = await import('./config.mjs').then(function (n) { return n.E; });
|
|
453
455
|
const apiKey = config.APIKEY || "sk-ccjk-x-ccr";
|
|
454
456
|
manageApiKeyApproval(apiKey);
|
|
455
457
|
console.log(a.green(`\u2714 ${i18n.t("ccr:apiKeyApprovalSuccess")}`));
|
package/dist/chunks/config3.mjs
CHANGED
|
@@ -21,10 +21,9 @@ import 'node:os';
|
|
|
21
21
|
import 'node:crypto';
|
|
22
22
|
import 'buffer';
|
|
23
23
|
import 'string_decoder';
|
|
24
|
-
import '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
25
24
|
import 'node:url';
|
|
25
|
+
import '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
26
26
|
import '../shared/ccjk.RyizuzOI.mjs';
|
|
27
|
-
import './claude-config.mjs';
|
|
28
27
|
import './json-config.mjs';
|
|
29
28
|
import './fs-operations.mjs';
|
|
30
29
|
import 'node:fs/promises';
|
|
@@ -34,6 +33,9 @@ import 'module';
|
|
|
34
33
|
import 'node:child_process';
|
|
35
34
|
import 'node:stream';
|
|
36
35
|
import '../shared/ccjk.DScm_NnL.mjs';
|
|
36
|
+
import './ccjk-config.mjs';
|
|
37
|
+
import '../shared/ccjk.BBtCGd_g.mjs';
|
|
38
|
+
import './index3.mjs';
|
|
37
39
|
|
|
38
40
|
async function getConfig(key, options = {}) {
|
|
39
41
|
const isZh = i18n.language === "zh-CN";
|
package/dist/chunks/doctor.mjs
CHANGED
|
@@ -814,7 +814,7 @@ async function checkPermissionRules() {
|
|
|
814
814
|
}
|
|
815
815
|
async function fixSettingsFile() {
|
|
816
816
|
const isZh = i18n.language === "zh-CN";
|
|
817
|
-
const { copyConfigFiles } = await import('./config.mjs').then(function (n) { return n.
|
|
817
|
+
const { copyConfigFiles } = await import('./config.mjs').then(function (n) { return n.B; });
|
|
818
818
|
console.log("");
|
|
819
819
|
console.log(a.bold.cyan("\u{1F527} Fixing settings.json"));
|
|
820
820
|
console.log(a.dim("\u2500".repeat(50)));
|
|
@@ -27,88 +27,108 @@ class A2AClient {
|
|
|
27
27
|
this.baseUrl = resolved;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* Register agent
|
|
30
|
+
* Register agent — POST /a2a/hello
|
|
31
|
+
* Server expects: { agent: { name, version }, capabilities }
|
|
31
32
|
*/
|
|
32
|
-
async hello(
|
|
33
|
+
async hello(name, version, capabilities = []) {
|
|
33
34
|
const response = await this.request("/a2a/hello", {
|
|
34
35
|
method: "POST",
|
|
35
|
-
body: {
|
|
36
|
+
body: { agent: { name, version }, capabilities }
|
|
36
37
|
});
|
|
37
38
|
this.token = response.token;
|
|
38
39
|
this.agentId = response.agentId;
|
|
39
40
|
return response;
|
|
40
41
|
}
|
|
41
42
|
/**
|
|
42
|
-
* Publish a gene
|
|
43
|
+
* Publish a gene — POST /a2a/publish
|
|
44
|
+
* Server expects flat fields: problemSignature, solutionStrategy, solutionCode, solutionSteps, tags, version
|
|
43
45
|
*/
|
|
44
|
-
async publish(gene
|
|
46
|
+
async publish(gene) {
|
|
45
47
|
this.ensureAuthenticated();
|
|
46
48
|
return this.request("/a2a/publish", {
|
|
47
49
|
method: "POST",
|
|
48
|
-
body: {
|
|
50
|
+
body: {
|
|
51
|
+
problemSignature: gene.problemSignature,
|
|
52
|
+
solutionStrategy: gene.solutionStrategy,
|
|
53
|
+
solutionCode: gene.solutionCode || "",
|
|
54
|
+
solutionSteps: gene.solutionSteps,
|
|
55
|
+
tags: gene.tags || [],
|
|
56
|
+
version: gene.version || "1.0.0"
|
|
57
|
+
},
|
|
49
58
|
auth: true
|
|
50
59
|
});
|
|
51
60
|
}
|
|
52
61
|
/**
|
|
53
|
-
* Fetch genes
|
|
62
|
+
* Fetch genes — GET /a2a/fetch?minGDI=&limit=&signature=
|
|
63
|
+
* Server returns: { success, genes: [...] }
|
|
54
64
|
*/
|
|
55
|
-
async fetch(
|
|
65
|
+
async fetch(options = {}) {
|
|
56
66
|
this.ensureAuthenticated();
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
67
|
+
const params = new URLSearchParams();
|
|
68
|
+
if (options.minGDI !== void 0) params.set("minGDI", String(options.minGDI));
|
|
69
|
+
if (options.limit !== void 0) params.set("limit", String(options.limit));
|
|
70
|
+
if (options.signature) params.set("signature", options.signature);
|
|
71
|
+
if (options.geneId) params.set("geneId", options.geneId);
|
|
72
|
+
const qs = params.toString();
|
|
73
|
+
const response = await this.request(`/a2a/fetch${qs ? "?" + qs : ""}`, {
|
|
74
|
+
method: "GET",
|
|
60
75
|
auth: true
|
|
61
76
|
});
|
|
62
77
|
return response.genes;
|
|
63
78
|
}
|
|
64
79
|
/**
|
|
65
|
-
* Report usage result
|
|
80
|
+
* Report usage result — POST /a2a/report
|
|
81
|
+
* Server expects: { geneId, outcome, context? }
|
|
66
82
|
*/
|
|
67
|
-
async report(geneId,
|
|
83
|
+
async report(geneId, outcome, context) {
|
|
68
84
|
this.ensureAuthenticated();
|
|
69
85
|
return this.request("/a2a/report", {
|
|
70
86
|
method: "POST",
|
|
71
|
-
body: {
|
|
87
|
+
body: { geneId, outcome, ...context ? { context } : {} },
|
|
72
88
|
auth: true
|
|
73
89
|
});
|
|
74
90
|
}
|
|
75
91
|
/**
|
|
76
|
-
*
|
|
92
|
+
* Record decision — POST /a2a/decision
|
|
93
|
+
* Server expects: { geneId, action: 'approve' | 'reject' }
|
|
77
94
|
*/
|
|
78
|
-
async decision(
|
|
95
|
+
async decision(geneId, action) {
|
|
79
96
|
this.ensureAuthenticated();
|
|
80
97
|
return this.request("/a2a/decision", {
|
|
81
98
|
method: "POST",
|
|
82
|
-
body: {
|
|
99
|
+
body: { geneId, action },
|
|
83
100
|
auth: true
|
|
84
101
|
});
|
|
85
102
|
}
|
|
86
103
|
/**
|
|
87
|
-
* Revoke a gene
|
|
104
|
+
* Revoke a gene — POST /a2a/revoke
|
|
105
|
+
* Server expects: { geneId, reason? }
|
|
88
106
|
*/
|
|
89
107
|
async revoke(geneId, reason) {
|
|
90
108
|
this.ensureAuthenticated();
|
|
91
109
|
await this.request("/a2a/revoke", {
|
|
92
110
|
method: "POST",
|
|
93
|
-
body: {
|
|
111
|
+
body: { geneId, ...reason ? { reason } : {} },
|
|
94
112
|
auth: true
|
|
95
113
|
});
|
|
96
114
|
}
|
|
97
115
|
/**
|
|
98
|
-
* Get
|
|
116
|
+
* Get stats — GET /a2a/stats
|
|
99
117
|
*/
|
|
118
|
+
async stats() {
|
|
119
|
+
this.ensureAuthenticated();
|
|
120
|
+
const resp = await this.request("/a2a/stats", {
|
|
121
|
+
method: "GET",
|
|
122
|
+
auth: true
|
|
123
|
+
});
|
|
124
|
+
return resp.stats;
|
|
125
|
+
}
|
|
100
126
|
getAgentId() {
|
|
101
127
|
return this.agentId;
|
|
102
128
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Check if authenticated
|
|
105
|
-
*/
|
|
106
129
|
isAuthenticated() {
|
|
107
130
|
return this.token !== null;
|
|
108
131
|
}
|
|
109
|
-
/**
|
|
110
|
-
* Internal request wrapper
|
|
111
|
-
*/
|
|
112
132
|
async request(path, options) {
|
|
113
133
|
const url = `${this.baseUrl}${path}`;
|
|
114
134
|
const headers = {
|
|
@@ -124,7 +144,7 @@ class A2AClient {
|
|
|
124
144
|
});
|
|
125
145
|
if (!response.ok) {
|
|
126
146
|
const error = await response.json().catch(() => ({ error: response.statusText }));
|
|
127
|
-
throw new Error(error.error || `Request failed: ${response.statusText}`);
|
|
147
|
+
throw new Error(error.error || error.message || `Request failed: ${response.statusText}`);
|
|
128
148
|
}
|
|
129
149
|
return response.json();
|
|
130
150
|
}
|
package/dist/chunks/features.mjs
CHANGED
|
@@ -7,9 +7,8 @@ import { g as getMcpServices } from '../shared/ccjk.DKXs7Fbm.mjs';
|
|
|
7
7
|
import { SUPPORTED_LANGS, LANG_LABELS } from './constants.mjs';
|
|
8
8
|
import { ensureI18nInitialized, i18n, changeLanguage } from './index2.mjs';
|
|
9
9
|
import { updateZcfConfig, readZcfConfig } from './ccjk-config.mjs';
|
|
10
|
-
import { r as readMcpConfig, f as fixWindowsMcpConfig, w as writeMcpConfig,
|
|
11
|
-
import {
|
|
12
|
-
import { c as configureOutputStyle, m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.Dz0ssUQx.mjs';
|
|
10
|
+
import { g as getExistingModelConfig, a as getExistingCustomModelConfig, u as updateCustomModel, c as updateDefaultModel, r as readMcpConfig, f as fixWindowsMcpConfig, w as writeMcpConfig, d as backupMcpConfig, e as buildMcpServerConfig, m as mergeMcpServers, h as getExistingApiConfig, p as promptApiConfigurationAction, i as configureApi } from './config.mjs';
|
|
11
|
+
import { c as configureOutputStyle, m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.Dh6Be-ef.mjs';
|
|
13
12
|
import { s as selectMcpServices } from '../shared/ccjk.BI-hdI7P.mjs';
|
|
14
13
|
import { i as isWindows } from './platform.mjs';
|
|
15
14
|
import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
|
package/dist/chunks/index10.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { ensureI18nInitialized, i18n, resolveSupportedLanguage, changeLanguage }
|
|
|
5
5
|
import { displayBannerWithInfo } from './banner.mjs';
|
|
6
6
|
import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
|
|
7
7
|
import { c as runCodexUpdate, i as runCodexUninstall, j as configureCodexAiMemoryFeature, k as configureCodexDefaultModelFeature, m as configureCodexMcp, n as configureCodexApi, o as configureCodexPresetFeature, p as runCodexWorkflowImportWithLanguageSelection, h as runCodexFullInit } from './codex.mjs';
|
|
8
|
-
import { S as STARTUP_CODE_TOOL_CHOICES, a as resolveStartupCodeType } from '
|
|
8
|
+
import { S as STARTUP_CODE_TOOL_CHOICES, a as resolveStartupCodeType } from './code-type-resolver.mjs';
|
|
9
9
|
import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.DGllfVCZ.mjs';
|
|
10
10
|
import { changeScriptLanguageFeature } from './features.mjs';
|
|
11
11
|
import { c as checkForUpdates, a as getInstalledPackages, s as searchPackages } from '../shared/ccjk.DbigonEQ.mjs';
|
|
@@ -26,11 +26,12 @@ import { configSwitchCommand } from './config-switch.mjs';
|
|
|
26
26
|
import process__default from 'node:process';
|
|
27
27
|
import { readFile, writeFileAtomic, ensureDir, exists, readJsonFile } from './fs-operations.mjs';
|
|
28
28
|
import { workspaceDiagnostics, doctor } from './doctor.mjs';
|
|
29
|
-
import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.
|
|
29
|
+
import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.CVjfbEIj.mjs';
|
|
30
30
|
import { notificationCommand } from './notification.mjs';
|
|
31
31
|
import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
|
|
32
32
|
import { uninstall } from './uninstall.mjs';
|
|
33
33
|
import { update } from './update.mjs';
|
|
34
|
+
import { g as getRuntimeCapabilityDescriptor } from '../shared/ccjk.BO45TPXJ.mjs';
|
|
34
35
|
import { c as checkSuperpowersInstalled, g as getSuperpowersSkills, u as updateSuperpowers, a as uninstallSuperpowers, i as installSuperpowers, b as installSuperpowersViaGit } from '../shared/ccjk.Bq8TqZG_.mjs';
|
|
35
36
|
|
|
36
37
|
const execAsync = promisify(exec);
|
|
@@ -3163,6 +3164,29 @@ async function runOnboardingWizard(options = {}) {
|
|
|
3163
3164
|
}
|
|
3164
3165
|
|
|
3165
3166
|
const NON_CODEX_TOOLS = ["claude-code", "myclaude", "aider", "continue", "cline", "cursor"];
|
|
3167
|
+
const CLAUDE_FAMILY_SLASH_RULE = (descriptor) => descriptor.native.slashCommands && descriptor.configBackend === "claude-family";
|
|
3168
|
+
const MENU_ITEM_CAPABILITY_RULES = {
|
|
3169
|
+
"diagnostics": (descriptor) => descriptor.managedByCcjk.doctor,
|
|
3170
|
+
"doctor": (descriptor) => descriptor.managedByCcjk.doctor,
|
|
3171
|
+
"workspace": (descriptor) => descriptor.managedByCcjk.doctor,
|
|
3172
|
+
"api-config": (descriptor) => descriptor.managedByCcjk.configSync || descriptor.managedByCcjk.providerProfiles,
|
|
3173
|
+
"mcp-config": (descriptor) => descriptor.native.mcp && descriptor.managedByCcjk.mcpBundles,
|
|
3174
|
+
"model-config": (descriptor) => descriptor.managedByCcjk.modelRouting,
|
|
3175
|
+
"memory-config": (descriptor) => descriptor.native.memory,
|
|
3176
|
+
"permission-config": (descriptor) => descriptor.native.permissions && descriptor.managedByCcjk.permissionRepair,
|
|
3177
|
+
"config-switch": (descriptor) => descriptor.managedByCcjk.configSync || descriptor.managedByCcjk.providerProfiles,
|
|
3178
|
+
"ccr": (descriptor) => descriptor.configBackend === "claude-family",
|
|
3179
|
+
"ccusage": (descriptor) => descriptor.configBackend === "claude-family",
|
|
3180
|
+
"cometix": (descriptor) => descriptor.native.statusline,
|
|
3181
|
+
"superpowers": CLAUDE_FAMILY_SLASH_RULE,
|
|
3182
|
+
"mcp-market": (descriptor) => descriptor.native.mcp && descriptor.managedByCcjk.mcpBundles,
|
|
3183
|
+
"marketplace": (descriptor) => descriptor.configBackend === "claude-family",
|
|
3184
|
+
"hooks-sync": (descriptor) => descriptor.configBackend === "claude-family",
|
|
3185
|
+
"quick-actions": CLAUDE_FAMILY_SLASH_RULE,
|
|
3186
|
+
"smart-guide": CLAUDE_FAMILY_SLASH_RULE,
|
|
3187
|
+
"workflows": CLAUDE_FAMILY_SLASH_RULE,
|
|
3188
|
+
"output-styles": CLAUDE_FAMILY_SLASH_RULE
|
|
3189
|
+
};
|
|
3166
3190
|
const quickActionsItems = [
|
|
3167
3191
|
{
|
|
3168
3192
|
id: "init",
|
|
@@ -3502,8 +3526,20 @@ const menuItemsByCategory = {
|
|
|
3502
3526
|
// Reserved for experimental features
|
|
3503
3527
|
system: systemItems
|
|
3504
3528
|
};
|
|
3529
|
+
function isItemSupportedByCapabilities(item, codeTool) {
|
|
3530
|
+
const descriptor = getRuntimeCapabilityDescriptor(codeTool);
|
|
3531
|
+
if (!descriptor) {
|
|
3532
|
+
return true;
|
|
3533
|
+
}
|
|
3534
|
+
const rule = MENU_ITEM_CAPABILITY_RULES[item.id];
|
|
3535
|
+
return rule ? rule(descriptor) : true;
|
|
3536
|
+
}
|
|
3505
3537
|
function isItemSupportedForTool(item, codeTool) {
|
|
3506
|
-
|
|
3538
|
+
const toolSupported = !item.supportedTools || item.supportedTools.includes(codeTool);
|
|
3539
|
+
if (!toolSupported) {
|
|
3540
|
+
return false;
|
|
3541
|
+
}
|
|
3542
|
+
return isItemSupportedByCapabilities(item, codeTool);
|
|
3507
3543
|
}
|
|
3508
3544
|
function getVisibleItems(level, codeTool = "claude-code") {
|
|
3509
3545
|
const visible = [];
|
|
@@ -3774,6 +3810,15 @@ function getToolModeMeta(codeTool) {
|
|
|
3774
3810
|
config: t("menu:toolMode.claude.config", "Primary config: ~/.claude/settings.json"),
|
|
3775
3811
|
menuTitle: t("menu:toolMode.claude.menuTitle", "Claude Control Center")
|
|
3776
3812
|
};
|
|
3813
|
+
case "myclaude":
|
|
3814
|
+
return {
|
|
3815
|
+
icon: "\u25C9",
|
|
3816
|
+
title: t("menu:toolMode.myclaude.title", "myclaude Workspace"),
|
|
3817
|
+
summary: t("menu:toolMode.myclaude.summary", "Provider-first control center with explicit runtime status at startup."),
|
|
3818
|
+
focus: t("menu:toolMode.myclaude.focus", "Provider profiles, routing state, model slots, and Claude-family compatible configuration."),
|
|
3819
|
+
config: t("menu:toolMode.myclaude.config", "Primary config: ~/.claude.json (runtime) + ~/.ccjk/config.toml (reusable profiles)"),
|
|
3820
|
+
menuTitle: t("menu:toolMode.myclaude.menuTitle", "myclaude Control Center")
|
|
3821
|
+
};
|
|
3777
3822
|
case "codex":
|
|
3778
3823
|
return {
|
|
3779
3824
|
icon: "\u25C6",
|
|
@@ -3907,15 +3952,37 @@ function renderMenu(title, items, options = {}) {
|
|
|
3907
3952
|
lines.push(renderFooter(opts));
|
|
3908
3953
|
return lines.join("\n");
|
|
3909
3954
|
}
|
|
3910
|
-
function renderToolModeHero(codeTool, width = 76) {
|
|
3955
|
+
function renderToolModeHero(codeTool, width = 76, runtimeSummary) {
|
|
3911
3956
|
const meta = getToolModeMeta(codeTool);
|
|
3957
|
+
const content = [
|
|
3958
|
+
colors.itemText(meta.summary),
|
|
3959
|
+
`${colors.shortcut("Focus")} ${colors.itemText(meta.focus)}`,
|
|
3960
|
+
`${colors.shortcut("Config")} ${colors.itemText(meta.config)}`
|
|
3961
|
+
];
|
|
3962
|
+
if (runtimeSummary?.runtimeLabel) {
|
|
3963
|
+
content.push(`${colors.shortcut("Runtime")} ${colors.itemText(runtimeSummary.runtimeLabel)}`);
|
|
3964
|
+
}
|
|
3965
|
+
if (runtimeSummary?.profileLabel) {
|
|
3966
|
+
content.push(`${colors.shortcut("Profile")} ${colors.itemText(runtimeSummary.profileLabel)}`);
|
|
3967
|
+
}
|
|
3968
|
+
if (runtimeSummary?.modeLabel) {
|
|
3969
|
+
content.push(`${colors.shortcut("Mode")} ${colors.itemText(runtimeSummary.modeLabel)}`);
|
|
3970
|
+
}
|
|
3971
|
+
if (runtimeSummary?.sourceLabel) {
|
|
3972
|
+
content.push(`${colors.shortcut("Source")} ${colors.itemText(runtimeSummary.sourceLabel)}`);
|
|
3973
|
+
}
|
|
3974
|
+
if (runtimeSummary?.routeLabel) {
|
|
3975
|
+
content.push(`${colors.shortcut("Route")} ${colors.itemText(runtimeSummary.routeLabel)}`);
|
|
3976
|
+
}
|
|
3977
|
+
if (runtimeSummary?.strategyLabel) {
|
|
3978
|
+
content.push(`${colors.shortcut("Strategy")} ${colors.itemText(runtimeSummary.strategyLabel)}`);
|
|
3979
|
+
}
|
|
3980
|
+
if (runtimeSummary?.modelLabel) {
|
|
3981
|
+
content.push(`${colors.shortcut("Models")} ${colors.itemText(runtimeSummary.modelLabel)}`);
|
|
3982
|
+
}
|
|
3912
3983
|
return renderBox(
|
|
3913
3984
|
`${meta.icon} ${meta.title}`,
|
|
3914
|
-
|
|
3915
|
-
colors.itemText(meta.summary),
|
|
3916
|
-
`${colors.shortcut("Focus")} ${colors.itemText(meta.focus)}`,
|
|
3917
|
-
`${colors.shortcut("Config")} ${colors.itemText(meta.config)}`
|
|
3918
|
-
],
|
|
3985
|
+
content,
|
|
3919
3986
|
width
|
|
3920
3987
|
);
|
|
3921
3988
|
}
|
|
@@ -4332,6 +4399,33 @@ function getProgressiveFooterCommands(codeTool) {
|
|
|
4332
4399
|
}
|
|
4333
4400
|
];
|
|
4334
4401
|
}
|
|
4402
|
+
function buildMyclaudeRuntimeSummary(syncResult) {
|
|
4403
|
+
if (!syncResult?.activeProfile) {
|
|
4404
|
+
return {
|
|
4405
|
+
runtimeLabel: "myclaude / no active provider synced"
|
|
4406
|
+
};
|
|
4407
|
+
}
|
|
4408
|
+
const profile = syncResult.activeProfile;
|
|
4409
|
+
const primaryModel = typeof profile.primaryModel === "string" ? profile.primaryModel : profile.model;
|
|
4410
|
+
const fastModel = typeof profile.defaultHaikuModel === "string" ? profile.defaultHaikuModel : profile.fastModel;
|
|
4411
|
+
const sonnetModel = typeof profile.defaultSonnetModel === "string" ? profile.defaultSonnetModel : void 0;
|
|
4412
|
+
const opusModel = typeof profile.defaultOpusModel === "string" ? profile.defaultOpusModel : void 0;
|
|
4413
|
+
const modelParts = [
|
|
4414
|
+
primaryModel ? `primary ${primaryModel}` : void 0,
|
|
4415
|
+
fastModel ? `haiku ${fastModel}` : void 0,
|
|
4416
|
+
sonnetModel ? `sonnet ${sonnetModel}` : void 0,
|
|
4417
|
+
opusModel ? `opus ${opusModel}` : void 0
|
|
4418
|
+
].filter(Boolean);
|
|
4419
|
+
return {
|
|
4420
|
+
runtimeLabel: "myclaude",
|
|
4421
|
+
profileLabel: `${profile.name} (${syncResult.activeProfileId || profile.id})`,
|
|
4422
|
+
modeLabel: profile.routeFamily,
|
|
4423
|
+
sourceLabel: [profile.source, profile.sourceDetail].filter(Boolean).join(" \xB7 ") || void 0,
|
|
4424
|
+
routeLabel: profile.pathLabel,
|
|
4425
|
+
strategyLabel: [profile.routingStrategy, profile.strategyNote].filter(Boolean).join(" \xB7 ") || void 0,
|
|
4426
|
+
modelLabel: modelParts.join(" \xB7 ") || void 0
|
|
4427
|
+
};
|
|
4428
|
+
}
|
|
4335
4429
|
function getMenuShellConfig(codeTool) {
|
|
4336
4430
|
if (codeTool === "codex" || codeTool === "myclaude") {
|
|
4337
4431
|
return {
|
|
@@ -4348,7 +4442,7 @@ function getMenuShellConfig(codeTool) {
|
|
|
4348
4442
|
showHero: false
|
|
4349
4443
|
};
|
|
4350
4444
|
}
|
|
4351
|
-
async function showProgressiveMenu(codeTool) {
|
|
4445
|
+
async function showProgressiveMenu(codeTool, runtimeSyncResult) {
|
|
4352
4446
|
if (codeTool !== "codex" && codeTool !== "myclaude") {
|
|
4353
4447
|
const rawItems2 = getItemsForLevel(menuState.level, "claude-code");
|
|
4354
4448
|
const items2 = attachHandlers(rawItems2, "claude-code");
|
|
@@ -4438,7 +4532,7 @@ async function showProgressiveMenu(codeTool) {
|
|
|
4438
4532
|
const menuShell = getMenuShellConfig(codeTool);
|
|
4439
4533
|
const allowedCommands = ["0", "q", ...menuShell.allowMore ? ["m"] : [], ...menuShell.footerCommands.map((command) => command.key)];
|
|
4440
4534
|
if (menuShell.showHero) {
|
|
4441
|
-
console.log(renderToolModeHero(codeTool));
|
|
4535
|
+
console.log(renderToolModeHero(codeTool, 76, codeTool === "myclaude" ? buildMyclaudeRuntimeSummary(runtimeSyncResult) : void 0));
|
|
4442
4536
|
console.log("");
|
|
4443
4537
|
}
|
|
4444
4538
|
const menuOutput = renderMenu(
|
|
@@ -5214,6 +5308,7 @@ async function showMainMenu(options = {}) {
|
|
|
5214
5308
|
if (await isFirstTimeUser()) {
|
|
5215
5309
|
await runOnboardingWizard({ preferredCodeTool: options.codeType });
|
|
5216
5310
|
}
|
|
5311
|
+
let myclaudeRuntimeSyncResult = null;
|
|
5217
5312
|
try {
|
|
5218
5313
|
const previousType = getCurrentCodeTool();
|
|
5219
5314
|
const resolvedType = await resolveStartupCodeType({
|
|
@@ -5226,6 +5321,10 @@ async function showMainMenu(options = {}) {
|
|
|
5226
5321
|
console.log(a.green(`\u2714 Switched to ${resolvedType}`));
|
|
5227
5322
|
}
|
|
5228
5323
|
}
|
|
5324
|
+
if (resolvedType === "myclaude") {
|
|
5325
|
+
const { syncMyclaudeProviderProfilesFromCurrentClaudeConfig } = await import('./config.mjs').then(function (n) { return n.E; });
|
|
5326
|
+
myclaudeRuntimeSyncResult = syncMyclaudeProviderProfilesFromCurrentClaudeConfig();
|
|
5327
|
+
}
|
|
5229
5328
|
} catch (err) {
|
|
5230
5329
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
5231
5330
|
console.error(a.yellow(errorMessage));
|
|
@@ -5234,7 +5333,11 @@ async function showMainMenu(options = {}) {
|
|
|
5234
5333
|
while (!exitMenu) {
|
|
5235
5334
|
const codeTool = getCurrentCodeTool();
|
|
5236
5335
|
displayBannerWithInfo(CODE_TOOL_BANNERS[codeTool] || "CCJK");
|
|
5237
|
-
|
|
5336
|
+
if (codeTool === "myclaude") {
|
|
5337
|
+
const { syncMyclaudeProviderProfilesFromCurrentClaudeConfig } = await import('./config.mjs').then(function (n) { return n.E; });
|
|
5338
|
+
myclaudeRuntimeSyncResult = syncMyclaudeProviderProfilesFromCurrentClaudeConfig();
|
|
5339
|
+
}
|
|
5340
|
+
const result = await showProgressiveMenu(codeTool, myclaudeRuntimeSyncResult);
|
|
5238
5341
|
if (result === "exit") {
|
|
5239
5342
|
exitMenu = true;
|
|
5240
5343
|
} else if (result === "switch") {
|
package/dist/chunks/init.mjs
CHANGED
|
@@ -12,18 +12,16 @@ import { exec } from 'node:child_process';
|
|
|
12
12
|
import { promisify } from 'node:util';
|
|
13
13
|
import { updateCcr } from './auto-updater.mjs';
|
|
14
14
|
import { w as wrapCommandWithSudo, i as isWindows, b as isTermux } from './platform.mjs';
|
|
15
|
-
import {
|
|
15
|
+
import { v as setMyclaudeProviderProfiles, p as promptApiConfigurationAction, n as addCompletedOnboarding, l as setPrimaryApiKey, x as ensureClaudeDir, y as clearMyclaudeProviderProfiles, h as getExistingApiConfig, q as switchToOfficialLogin, b as backupExistingConfig, k as copyConfigFiles, t as applyAiLanguageDirective, i as configureApi, d as backupMcpConfig, e as buildMcpServerConfig, r as readMcpConfig, z as replaceMcpServers, f as fixWindowsMcpConfig, w as writeMcpConfig, A as syncMcpPermissions } from './config.mjs';
|
|
16
16
|
import { h as runCodexFullInit } from './codex.mjs';
|
|
17
|
-
import { a as resolveStartupCodeType, r as resolveCodeType } from '
|
|
17
|
+
import { p as parseOrchestrationLevel, a as resolveStartupCodeType, r as resolveCodeType, w as writeOrchestrationPolicy } from './code-type-resolver.mjs';
|
|
18
18
|
import { exists } from './fs-operations.mjs';
|
|
19
19
|
import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
|
|
20
|
-
import { p as promptApiConfigurationAction, i as ensureClaudeDir, d as getExistingApiConfig, s as switchToOfficialLogin, b as backupExistingConfig, f as copyConfigFiles, h as applyAiLanguageDirective, e as configureApi } from './config.mjs';
|
|
21
20
|
import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.DDq2hqA5.mjs';
|
|
22
|
-
import { m as modifyApiConfigPartially, a as configureApiCompletely, c as configureOutputStyle, f as formatApiKeyDisplay } from '../shared/ccjk.
|
|
21
|
+
import { m as modifyApiConfigPartially, a as configureApiCompletely, c as configureOutputStyle, f as formatApiKeyDisplay } from '../shared/ccjk.Dh6Be-ef.mjs';
|
|
23
22
|
import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.DGllfVCZ.mjs';
|
|
24
23
|
import { getInstallationStatus, installMyclaude, installClaudeCode } from './installer.mjs';
|
|
25
24
|
import { s as selectMcpServices } from '../shared/ccjk.BI-hdI7P.mjs';
|
|
26
|
-
import { p as parseOrchestrationLevel, w as writeOrchestrationPolicy } from './smart-defaults.mjs';
|
|
27
25
|
import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
|
|
28
26
|
import { resolveAiOutputLanguage } from './prompts.mjs';
|
|
29
27
|
import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
|
|
@@ -511,7 +509,7 @@ async function silentInit(options = {}) {
|
|
|
511
509
|
cleanupZcfNamespace();
|
|
512
510
|
} catch {
|
|
513
511
|
}
|
|
514
|
-
const { detectSmartDefaults } = await import('./
|
|
512
|
+
const { detectSmartDefaults } = await import('./code-type-resolver.mjs').then(function (n) { return n.b; });
|
|
515
513
|
const defaults = await detectSmartDefaults();
|
|
516
514
|
if (!defaults.apiKey) {
|
|
517
515
|
throw new Error("Silent mode requires ANTHROPIC_API_KEY environment variable");
|
|
@@ -770,7 +768,7 @@ async function validateApiConfigs(configs) {
|
|
|
770
768
|
}
|
|
771
769
|
}
|
|
772
770
|
async function handleClaudeCodeConfigs(configs) {
|
|
773
|
-
const { ClaudeCodeConfigManager } = await import('./
|
|
771
|
+
const { ClaudeCodeConfigManager } = await import('./config.mjs').then(function (n) { return n.D; });
|
|
774
772
|
const addedProfiles = [];
|
|
775
773
|
for (const config of configs) {
|
|
776
774
|
if (config.type === "ccr_proxy") {
|
|
@@ -861,7 +859,7 @@ async function handleCodexConfigs(configs) {
|
|
|
861
859
|
}
|
|
862
860
|
async function saveSingleConfigToToml(apiConfig, provider, options) {
|
|
863
861
|
try {
|
|
864
|
-
const { ClaudeCodeConfigManager } = await import('./
|
|
862
|
+
const { ClaudeCodeConfigManager } = await import('./config.mjs').then(function (n) { return n.D; });
|
|
865
863
|
const profile = await convertSingleConfigToProfile(apiConfig, provider, options);
|
|
866
864
|
const result = await ClaudeCodeConfigManager.addProfile(profile);
|
|
867
865
|
if (result.success) {
|
|
@@ -887,7 +885,7 @@ async function saveSingleConfigToToml(apiConfig, provider, options) {
|
|
|
887
885
|
}
|
|
888
886
|
}
|
|
889
887
|
async function buildClaudeCodeProfile(params) {
|
|
890
|
-
const { ClaudeCodeConfigManager } = await import('./
|
|
888
|
+
const { ClaudeCodeConfigManager } = await import('./config.mjs').then(function (n) { return n.D; });
|
|
891
889
|
let {
|
|
892
890
|
url: baseUrl,
|
|
893
891
|
authType,
|
|
@@ -988,6 +986,33 @@ async function convertToCodexProvider(config) {
|
|
|
988
986
|
}
|
|
989
987
|
|
|
990
988
|
const ccjkVersion = getRuntimeVersion();
|
|
989
|
+
function getSetupCompletionGuidance(codeToolType) {
|
|
990
|
+
if (codeToolType === "myclaude") {
|
|
991
|
+
return {
|
|
992
|
+
step1: i18n.t("configuration:guidanceStep1", { runtime: "myclaude" }),
|
|
993
|
+
step1Detail: i18n.t("configuration:guidanceStep1MyclaudeDetail"),
|
|
994
|
+
step1Detail2: i18n.t("configuration:guidanceStep1MyclaudeDetail2"),
|
|
995
|
+
step2: i18n.t("configuration:guidanceStep2"),
|
|
996
|
+
step2Example: i18n.t("configuration:guidanceStep2Example"),
|
|
997
|
+
step3: i18n.t("configuration:guidanceStep3Myclaude"),
|
|
998
|
+
step3Command: i18n.t("configuration:guidanceStep3MyclaudeCommand"),
|
|
999
|
+
step4: i18n.t("configuration:guidanceStep4"),
|
|
1000
|
+
step4Command: i18n.t("configuration:guidanceStep4Command")
|
|
1001
|
+
};
|
|
1002
|
+
}
|
|
1003
|
+
const runtimeLabel = CODE_TOOL_INFO[codeToolType]?.name || "Claude Code";
|
|
1004
|
+
return {
|
|
1005
|
+
step1: i18n.t("configuration:guidanceStep1", { runtime: runtimeLabel }),
|
|
1006
|
+
step1Detail: i18n.t("configuration:guidanceStep1Detail"),
|
|
1007
|
+
step1Detail2: i18n.t("configuration:guidanceStep1Detail2"),
|
|
1008
|
+
step2: i18n.t("configuration:guidanceStep2"),
|
|
1009
|
+
step2Example: i18n.t("configuration:guidanceStep2Example"),
|
|
1010
|
+
step3: i18n.t("configuration:guidanceStep3"),
|
|
1011
|
+
step3Command: i18n.t("configuration:guidanceStep3Command"),
|
|
1012
|
+
step4: i18n.t("configuration:guidanceStep4"),
|
|
1013
|
+
step4Command: i18n.t("configuration:guidanceStep4Command")
|
|
1014
|
+
};
|
|
1015
|
+
}
|
|
991
1016
|
async function init(options = {}) {
|
|
992
1017
|
options.initSource = options.initSource || "init";
|
|
993
1018
|
options.orchestration = parseOrchestrationLevel(options.orchestration);
|
|
@@ -1509,7 +1534,7 @@ async function init(options = {}) {
|
|
|
1509
1534
|
const hasModelParams = options.apiModel || options.apiHaikuModel || options.apiSonnetModel || options.apiOpusModel;
|
|
1510
1535
|
if (hasModelParams && action !== "docs-only" && (codeToolType === "claude-code" || codeToolType === "myclaude")) {
|
|
1511
1536
|
if (options.skipPrompt) {
|
|
1512
|
-
const { updateCustomModel } = await import('./config.mjs').then(function (n) { return n.
|
|
1537
|
+
const { updateCustomModel } = await import('./config.mjs').then(function (n) { return n.B; });
|
|
1513
1538
|
updateCustomModel(
|
|
1514
1539
|
options.apiModel || void 0,
|
|
1515
1540
|
options.apiHaikuModel || void 0,
|
|
@@ -1754,6 +1779,7 @@ async function init(options = {}) {
|
|
|
1754
1779
|
}
|
|
1755
1780
|
if (!options.skipPrompt && !options.skipBanner)
|
|
1756
1781
|
tracker.complete();
|
|
1782
|
+
const completionGuidance = getSetupCompletionGuidance(codeToolType);
|
|
1757
1783
|
console.log("");
|
|
1758
1784
|
console.log(
|
|
1759
1785
|
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")
|
|
@@ -1774,31 +1800,31 @@ async function init(options = {}) {
|
|
|
1774
1800
|
`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`
|
|
1775
1801
|
);
|
|
1776
1802
|
console.log(
|
|
1777
|
-
a.bold.green("\u2551") + padToDisplayWidth(` ${
|
|
1803
|
+
a.bold.green("\u2551") + padToDisplayWidth(` ${completionGuidance.step1}`, 62) + a.bold.green("\u2551")
|
|
1778
1804
|
);
|
|
1779
1805
|
console.log(
|
|
1780
|
-
a.bold.green("\u2551") + a.dim(padToDisplayWidth(` ${
|
|
1806
|
+
a.bold.green("\u2551") + a.dim(padToDisplayWidth(` ${completionGuidance.step1Detail}`, 62)) + a.bold.green("\u2551")
|
|
1781
1807
|
);
|
|
1782
1808
|
console.log(
|
|
1783
|
-
a.bold.green("\u2551") + a.dim(padToDisplayWidth(` ${
|
|
1809
|
+
a.bold.green("\u2551") + a.dim(padToDisplayWidth(` ${completionGuidance.step1Detail2}`, 62)) + a.bold.green("\u2551")
|
|
1784
1810
|
);
|
|
1785
1811
|
console.log(
|
|
1786
1812
|
`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`
|
|
1787
1813
|
);
|
|
1788
1814
|
console.log(
|
|
1789
|
-
a.bold.green("\u2551") + padToDisplayWidth(` ${
|
|
1815
|
+
a.bold.green("\u2551") + padToDisplayWidth(` ${completionGuidance.step2}`, 62) + a.bold.green("\u2551")
|
|
1790
1816
|
);
|
|
1791
1817
|
console.log(
|
|
1792
|
-
a.bold.green("\u2551") + a.green(padToDisplayWidth(` ${
|
|
1818
|
+
a.bold.green("\u2551") + a.green(padToDisplayWidth(` ${completionGuidance.step2Example}`, 62)) + a.bold.green("\u2551")
|
|
1793
1819
|
);
|
|
1794
1820
|
console.log(
|
|
1795
1821
|
`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`
|
|
1796
1822
|
);
|
|
1797
1823
|
console.log(
|
|
1798
|
-
a.bold.green("\u2551") + padToDisplayWidth(` ${
|
|
1824
|
+
a.bold.green("\u2551") + padToDisplayWidth(` ${completionGuidance.step3} `, 44) + a.yellow(padToDisplayWidth(completionGuidance.step3Command, 18)) + a.bold.green("\u2551")
|
|
1799
1825
|
);
|
|
1800
1826
|
console.log(
|
|
1801
|
-
a.bold.green("\u2551") + padToDisplayWidth(` ${
|
|
1827
|
+
a.bold.green("\u2551") + padToDisplayWidth(` ${completionGuidance.step4} `, 44) + a.yellow(padToDisplayWidth(completionGuidance.step4Command, 18)) + a.bold.green("\u2551")
|
|
1802
1828
|
);
|
|
1803
1829
|
console.log(
|
|
1804
1830
|
`${a.bold.green("\u2551")} ${a.bold.green("\u2551")}`
|
|
@@ -1853,6 +1879,7 @@ async function init(options = {}) {
|
|
|
1853
1879
|
const init$1 = {
|
|
1854
1880
|
__proto__: null,
|
|
1855
1881
|
convertSingleConfigToProfile: convertSingleConfigToProfile,
|
|
1882
|
+
getSetupCompletionGuidance: getSetupCompletionGuidance,
|
|
1856
1883
|
handleMultiConfigurations: handleMultiConfigurations,
|
|
1857
1884
|
init: init,
|
|
1858
1885
|
saveSingleConfigToToml: saveSingleConfigToToml,
|
|
@@ -224,7 +224,7 @@ async function getInstallationStatus(codeType = "claude-code") {
|
|
|
224
224
|
async function getInstallMethodFromConfig(codeType) {
|
|
225
225
|
try {
|
|
226
226
|
if (isClaudeFamilyCodeTool(codeType)) {
|
|
227
|
-
const { readMcpConfig } = await import('./
|
|
227
|
+
const { readMcpConfig } = await import('./config.mjs').then(function (n) { return n.E; });
|
|
228
228
|
const config = readMcpConfig();
|
|
229
229
|
return config?.installMethod || null;
|
|
230
230
|
}
|
|
@@ -348,7 +348,7 @@ async function uninstallCodeTool(codeType) {
|
|
|
348
348
|
async function setInstallMethod(method, codeType = "claude-code") {
|
|
349
349
|
try {
|
|
350
350
|
if (isClaudeFamilyCodeTool(codeType)) {
|
|
351
|
-
const { readMcpConfig, writeMcpConfig } = await import('./
|
|
351
|
+
const { readMcpConfig, writeMcpConfig } = await import('./config.mjs').then(function (n) { return n.E; });
|
|
352
352
|
let config = readMcpConfig();
|
|
353
353
|
if (!config) {
|
|
354
354
|
config = { mcpServers: {} };
|