zcf 2.12.3 → 2.12.4
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/README.md +15 -0
- package/dist/chunks/simple-config.mjs +224 -146
- package/dist/cli.mjs +3 -3
- package/dist/index.d.mts +23 -33
- package/dist/index.d.ts +23 -33
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -127,6 +127,21 @@ ZCF now supports customizable AI output styles to personalize your Claude Code e
|
|
|
127
127
|
|
|
128
128
|
After installation, use `/bmad-init` to initialize the BMad workflow in your project.
|
|
129
129
|
|
|
130
|
+
#### 📋 Spec Workflow (v2.12.4+ New Feature)
|
|
131
|
+
|
|
132
|
+
[Spec Workflow](https://github.com/Pimzino/spec-workflow-mcp) is a comprehensive MCP service that provides structured feature development workflow from requirements to implementation:
|
|
133
|
+
|
|
134
|
+
- **Requirements Analysis**: Structured requirements gathering and documentation
|
|
135
|
+
- **Design Phase**: Detailed technical design and architecture planning
|
|
136
|
+
- **Task Management**: Automatic task breakdown and progress tracking
|
|
137
|
+
- **Implementation Workflow**: Systematic approach from requirements to implementation
|
|
138
|
+
- **Interactive Dashboard**: Built-in dashboard for workflow visualization and management
|
|
139
|
+
- **Approval System**: Review and approval process for each development phase
|
|
140
|
+
|
|
141
|
+
The Spec Workflow MCP includes an automatic dashboard that launches with the `--AutoStartDashboard` flag, providing a visual interface for managing your development workflow.
|
|
142
|
+
|
|
143
|
+
**Usage Guide**: For detailed usage instructions and best practices, see the [official Spec Workflow documentation](https://github.com/Pimzino/spec-workflow-mcp/blob/main/README.md#quick-start).
|
|
144
|
+
|
|
130
145
|
#### 🚀 CCR (Claude Code Router) Support (v2.8+ Enhanced)
|
|
131
146
|
|
|
132
147
|
[CCR](https://github.com/musistudio/claude-code-router/blob/main/README.md) is a powerful proxy router that enables:
|
|
@@ -14,84 +14,9 @@ import semver from 'semver';
|
|
|
14
14
|
import { exec } from 'tinyexec';
|
|
15
15
|
import { rm, mkdir, copyFile as copyFile$1 } from 'node:fs/promises';
|
|
16
16
|
|
|
17
|
-
const version = "2.12.
|
|
17
|
+
const version = "2.12.4";
|
|
18
18
|
const homepage = "https://github.com/UfoMiao/zcf";
|
|
19
19
|
|
|
20
|
-
const WORKFLOW_CONFIGS = [
|
|
21
|
-
{
|
|
22
|
-
id: "commonTools",
|
|
23
|
-
nameKey: "workflowOption.commonTools",
|
|
24
|
-
descriptionKey: "workflowDescription.commonTools",
|
|
25
|
-
defaultSelected: true,
|
|
26
|
-
order: 1,
|
|
27
|
-
commands: ["init-project.md"],
|
|
28
|
-
agents: [
|
|
29
|
-
{ id: "init-architect", filename: "init-architect.md", required: true },
|
|
30
|
-
{ id: "get-current-datetime", filename: "get-current-datetime.md", required: true }
|
|
31
|
-
],
|
|
32
|
-
autoInstallAgents: true,
|
|
33
|
-
category: "common",
|
|
34
|
-
outputDir: "common"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
id: "sixStepsWorkflow",
|
|
38
|
-
nameKey: "workflowOption.sixStepsWorkflow",
|
|
39
|
-
descriptionKey: "workflowDescription.sixStepsWorkflow",
|
|
40
|
-
defaultSelected: true,
|
|
41
|
-
order: 2,
|
|
42
|
-
commands: ["workflow.md"],
|
|
43
|
-
agents: [],
|
|
44
|
-
autoInstallAgents: false,
|
|
45
|
-
category: "sixStep",
|
|
46
|
-
outputDir: "workflow"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: "featPlanUx",
|
|
50
|
-
nameKey: "workflowOption.featPlanUx",
|
|
51
|
-
descriptionKey: "workflowDescription.featPlanUx",
|
|
52
|
-
defaultSelected: true,
|
|
53
|
-
order: 3,
|
|
54
|
-
commands: ["feat.md"],
|
|
55
|
-
agents: [
|
|
56
|
-
{ id: "planner", filename: "planner.md", required: true },
|
|
57
|
-
{ id: "ui-ux-designer", filename: "ui-ux-designer.md", required: true }
|
|
58
|
-
],
|
|
59
|
-
autoInstallAgents: true,
|
|
60
|
-
category: "plan",
|
|
61
|
-
outputDir: "feat"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
id: "gitWorkflow",
|
|
65
|
-
nameKey: "workflowOption.gitWorkflow",
|
|
66
|
-
descriptionKey: "workflowDescription.gitWorkflow",
|
|
67
|
-
defaultSelected: true,
|
|
68
|
-
order: 4,
|
|
69
|
-
commands: ["git-commit.md", "git-rollback.md", "git-cleanBranches.md", "git-worktree.md"],
|
|
70
|
-
agents: [],
|
|
71
|
-
autoInstallAgents: false,
|
|
72
|
-
category: "git",
|
|
73
|
-
outputDir: "git"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
id: "bmadWorkflow",
|
|
77
|
-
nameKey: "workflowOption.bmadWorkflow",
|
|
78
|
-
descriptionKey: "workflowDescription.bmadWorkflow",
|
|
79
|
-
defaultSelected: true,
|
|
80
|
-
order: 5,
|
|
81
|
-
commands: ["bmad-init.md"],
|
|
82
|
-
agents: [],
|
|
83
|
-
autoInstallAgents: false,
|
|
84
|
-
category: "bmad",
|
|
85
|
-
outputDir: "bmad"
|
|
86
|
-
}
|
|
87
|
-
];
|
|
88
|
-
function getWorkflowConfig(workflowId) {
|
|
89
|
-
return WORKFLOW_CONFIGS.find((config) => config.id === workflowId);
|
|
90
|
-
}
|
|
91
|
-
function getOrderedWorkflows() {
|
|
92
|
-
return [...WORKFLOW_CONFIGS].sort((a, b) => a.order - b.order);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
20
|
const api$1 = {
|
|
96
21
|
// Basic API configuration
|
|
97
22
|
configureApi: "Select API authentication method",
|
|
@@ -525,6 +450,29 @@ const mcp$1 = {
|
|
|
525
450
|
configureMcpServices: "Configure MCP Services",
|
|
526
451
|
selectMcpOption: "Select MCP configuration option"
|
|
527
452
|
};
|
|
453
|
+
const mcpServices$1 = {
|
|
454
|
+
"context7": {
|
|
455
|
+
name: "Context7 Docs",
|
|
456
|
+
description: "Query latest library documentation and code examples"
|
|
457
|
+
},
|
|
458
|
+
"spec-workflow": {
|
|
459
|
+
name: "Spec Workflow",
|
|
460
|
+
description: "Structured feature development workflow, systematic approach from requirements to implementation"
|
|
461
|
+
},
|
|
462
|
+
"mcp-deepwiki": {
|
|
463
|
+
name: "DeepWiki",
|
|
464
|
+
description: "Query GitHub repository documentation and examples"
|
|
465
|
+
},
|
|
466
|
+
"Playwright": {
|
|
467
|
+
name: "Playwright Browser Control",
|
|
468
|
+
description: "Direct browser control for automation"
|
|
469
|
+
},
|
|
470
|
+
"exa": {
|
|
471
|
+
name: "Exa AI Search",
|
|
472
|
+
description: "Web search using Exa AI",
|
|
473
|
+
apiKeyPrompt: "Enter Exa API Key"
|
|
474
|
+
}
|
|
475
|
+
};
|
|
528
476
|
|
|
529
477
|
const menu$1 = {
|
|
530
478
|
selectFunction: "Select function",
|
|
@@ -657,6 +605,7 @@ const en = {
|
|
|
657
605
|
cometix: cometixMessages$1,
|
|
658
606
|
updater: updater$1
|
|
659
607
|
};
|
|
608
|
+
const enMcpServices = mcpServices$1;
|
|
660
609
|
|
|
661
610
|
const api = {
|
|
662
611
|
// Basic API configuration
|
|
@@ -1091,6 +1040,29 @@ const mcp = {
|
|
|
1091
1040
|
configureMcpServices: "\u914D\u7F6E MCP \u670D\u52A1",
|
|
1092
1041
|
selectMcpOption: "\u9009\u62E9 MCP \u914D\u7F6E\u9009\u9879"
|
|
1093
1042
|
};
|
|
1043
|
+
const mcpServices = {
|
|
1044
|
+
"context7": {
|
|
1045
|
+
name: "Context7 \u6587\u6863\u67E5\u8BE2",
|
|
1046
|
+
description: "\u67E5\u8BE2\u6700\u65B0\u7684\u5E93\u6587\u6863\u548C\u4EE3\u7801\u793A\u4F8B"
|
|
1047
|
+
},
|
|
1048
|
+
"spec-workflow": {
|
|
1049
|
+
name: "Spec \u5DE5\u4F5C\u6D41",
|
|
1050
|
+
description: "\u89C4\u8303\u5316\u7279\u6027\u5F00\u53D1\u5DE5\u4F5C\u6D41\u7A0B\uFF0C\u4ECE\u9700\u6C42\u5230\u5B9E\u73B0\u7684\u7CFB\u7EDF\u5316\u65B9\u6CD5"
|
|
1051
|
+
},
|
|
1052
|
+
"mcp-deepwiki": {
|
|
1053
|
+
name: "DeepWiki",
|
|
1054
|
+
description: "\u67E5\u8BE2 GitHub \u4ED3\u5E93\u6587\u6863\u548C\u793A\u4F8B"
|
|
1055
|
+
},
|
|
1056
|
+
"Playwright": {
|
|
1057
|
+
name: "Playwright \u6D4F\u89C8\u5668\u63A7\u5236",
|
|
1058
|
+
description: "\u76F4\u63A5\u63A7\u5236\u6D4F\u89C8\u5668\u8FDB\u884C\u81EA\u52A8\u5316\u64CD\u4F5C"
|
|
1059
|
+
},
|
|
1060
|
+
"exa": {
|
|
1061
|
+
name: "Exa AI \u641C\u7D22",
|
|
1062
|
+
description: "\u4F7F\u7528 Exa AI \u8FDB\u884C\u7F51\u9875\u641C\u7D22",
|
|
1063
|
+
apiKeyPrompt: "\u8BF7\u8F93\u5165 Exa API Key"
|
|
1064
|
+
}
|
|
1065
|
+
};
|
|
1094
1066
|
|
|
1095
1067
|
const menu = {
|
|
1096
1068
|
selectFunction: "\u8BF7\u9009\u62E9\u529F\u80FD",
|
|
@@ -1223,40 +1195,26 @@ const zhCN = {
|
|
|
1223
1195
|
cometix: cometixMessages,
|
|
1224
1196
|
updater
|
|
1225
1197
|
};
|
|
1198
|
+
const zhCNMcpServices = mcpServices;
|
|
1226
1199
|
|
|
1227
1200
|
const I18N$1 = {
|
|
1228
1201
|
"zh-CN": zhCN,
|
|
1229
1202
|
"en": en
|
|
1230
1203
|
};
|
|
1204
|
+
const mcpServiceTranslations = {
|
|
1205
|
+
"zh-CN": zhCNMcpServices,
|
|
1206
|
+
"en": enMcpServices
|
|
1207
|
+
};
|
|
1231
1208
|
function getTranslation(lang) {
|
|
1232
1209
|
return I18N$1[lang];
|
|
1233
1210
|
}
|
|
1211
|
+
function getMcpServiceTranslation(lang) {
|
|
1212
|
+
return mcpServiceTranslations[lang];
|
|
1213
|
+
}
|
|
1234
1214
|
|
|
1235
|
-
const
|
|
1236
|
-
const SETTINGS_FILE = join(CLAUDE_DIR, "settings.json");
|
|
1237
|
-
const CLAUDE_MD_FILE = join(CLAUDE_DIR, "CLAUDE.md");
|
|
1238
|
-
const ClAUDE_CONFIG_FILE = join(homedir(), ".claude.json");
|
|
1239
|
-
const LEGACY_ZCF_CONFIG_FILE = join(homedir(), ".zcf.json");
|
|
1240
|
-
const ZCF_CONFIG_FILE = join(CLAUDE_DIR, ".zcf-config.json");
|
|
1241
|
-
const SUPPORTED_LANGS = ["zh-CN", "en"];
|
|
1242
|
-
const LANG_LABELS = {
|
|
1243
|
-
"zh-CN": "\u7B80\u4F53\u4E2D\u6587",
|
|
1244
|
-
"en": "English"
|
|
1245
|
-
};
|
|
1246
|
-
const AI_OUTPUT_LANGUAGES = {
|
|
1247
|
-
"zh-CN": { label: "\u7B80\u4F53\u4E2D\u6587", directive: "Always respond in Chinese-simplified" },
|
|
1248
|
-
"en": { label: "English", directive: "Always respond in English" },
|
|
1249
|
-
"custom": { label: "Custom", directive: "" }
|
|
1250
|
-
};
|
|
1251
|
-
const I18N = I18N$1;
|
|
1252
|
-
const MCP_SERVICES = [
|
|
1215
|
+
const MCP_SERVICE_CONFIGS = [
|
|
1253
1216
|
{
|
|
1254
1217
|
id: "context7",
|
|
1255
|
-
name: { "zh-CN": "Context7 \u6587\u6863\u67E5\u8BE2", "en": "Context7 Docs" },
|
|
1256
|
-
description: {
|
|
1257
|
-
"zh-CN": "\u67E5\u8BE2\u6700\u65B0\u7684\u5E93\u6587\u6863\u548C\u4EE3\u7801\u793A\u4F8B",
|
|
1258
|
-
"en": "Query latest library documentation and code examples"
|
|
1259
|
-
},
|
|
1260
1218
|
requiresApiKey: false,
|
|
1261
1219
|
config: {
|
|
1262
1220
|
type: "stdio",
|
|
@@ -1265,13 +1223,18 @@ const MCP_SERVICES = [
|
|
|
1265
1223
|
env: {}
|
|
1266
1224
|
}
|
|
1267
1225
|
},
|
|
1226
|
+
{
|
|
1227
|
+
id: "spec-workflow",
|
|
1228
|
+
requiresApiKey: false,
|
|
1229
|
+
config: {
|
|
1230
|
+
type: "stdio",
|
|
1231
|
+
command: "npx",
|
|
1232
|
+
args: ["-y", "@pimzino/spec-workflow-mcp@latest", "--AutoStartDashboard"],
|
|
1233
|
+
env: {}
|
|
1234
|
+
}
|
|
1235
|
+
},
|
|
1268
1236
|
{
|
|
1269
1237
|
id: "mcp-deepwiki",
|
|
1270
|
-
name: { "zh-CN": "DeepWiki", "en": "DeepWiki" },
|
|
1271
|
-
description: {
|
|
1272
|
-
"zh-CN": "\u67E5\u8BE2 GitHub \u4ED3\u5E93\u6587\u6863\u548C\u793A\u4F8B",
|
|
1273
|
-
"en": "Query GitHub repository documentation and examples"
|
|
1274
|
-
},
|
|
1275
1238
|
requiresApiKey: false,
|
|
1276
1239
|
config: {
|
|
1277
1240
|
type: "stdio",
|
|
@@ -1282,11 +1245,6 @@ const MCP_SERVICES = [
|
|
|
1282
1245
|
},
|
|
1283
1246
|
{
|
|
1284
1247
|
id: "Playwright",
|
|
1285
|
-
name: { "zh-CN": "Playwright \u6D4F\u89C8\u5668\u63A7\u5236", "en": "Playwright Browser Control" },
|
|
1286
|
-
description: {
|
|
1287
|
-
"zh-CN": "\u76F4\u63A5\u63A7\u5236\u6D4F\u89C8\u5668\u8FDB\u884C\u81EA\u52A8\u5316\u64CD\u4F5C",
|
|
1288
|
-
"en": "Direct browser control for automation"
|
|
1289
|
-
},
|
|
1290
1248
|
requiresApiKey: false,
|
|
1291
1249
|
config: {
|
|
1292
1250
|
type: "stdio",
|
|
@@ -1297,16 +1255,7 @@ const MCP_SERVICES = [
|
|
|
1297
1255
|
},
|
|
1298
1256
|
{
|
|
1299
1257
|
id: "exa",
|
|
1300
|
-
name: { "zh-CN": "Exa AI \u641C\u7D22", "en": "Exa AI Search" },
|
|
1301
|
-
description: {
|
|
1302
|
-
"zh-CN": "\u4F7F\u7528 Exa AI \u8FDB\u884C\u7F51\u9875\u641C\u7D22",
|
|
1303
|
-
"en": "Web search using Exa AI"
|
|
1304
|
-
},
|
|
1305
1258
|
requiresApiKey: true,
|
|
1306
|
-
apiKeyPrompt: {
|
|
1307
|
-
"zh-CN": "\u8BF7\u8F93\u5165 Exa API Key\uFF08\u53EF\u4ECE https://dashboard.exa.ai/api-keys \u83B7\u53D6\uFF09",
|
|
1308
|
-
"en": "Enter Exa API Key (get from https://dashboard.exa.ai/api-keys)"
|
|
1309
|
-
},
|
|
1310
1259
|
apiKeyEnvVar: "EXA_API_KEY",
|
|
1311
1260
|
config: {
|
|
1312
1261
|
type: "stdio",
|
|
@@ -1318,6 +1267,122 @@ const MCP_SERVICES = [
|
|
|
1318
1267
|
}
|
|
1319
1268
|
}
|
|
1320
1269
|
];
|
|
1270
|
+
function getMcpServices(lang) {
|
|
1271
|
+
const translations = getMcpServiceTranslation(lang);
|
|
1272
|
+
return MCP_SERVICE_CONFIGS.map((config) => {
|
|
1273
|
+
const translation = translations[config.id];
|
|
1274
|
+
if (!translation) {
|
|
1275
|
+
throw new Error(`Missing translation for MCP service: ${config.id}`);
|
|
1276
|
+
}
|
|
1277
|
+
const service = {
|
|
1278
|
+
id: config.id,
|
|
1279
|
+
name: translation.name,
|
|
1280
|
+
description: translation.description,
|
|
1281
|
+
requiresApiKey: config.requiresApiKey,
|
|
1282
|
+
config: config.config
|
|
1283
|
+
};
|
|
1284
|
+
if (config.requiresApiKey && translation.apiKeyPrompt) {
|
|
1285
|
+
service.apiKeyPrompt = translation.apiKeyPrompt;
|
|
1286
|
+
}
|
|
1287
|
+
if (config.apiKeyEnvVar) {
|
|
1288
|
+
service.apiKeyEnvVar = config.apiKeyEnvVar;
|
|
1289
|
+
}
|
|
1290
|
+
return service;
|
|
1291
|
+
});
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
const WORKFLOW_CONFIGS = [
|
|
1295
|
+
{
|
|
1296
|
+
id: "commonTools",
|
|
1297
|
+
nameKey: "workflowOption.commonTools",
|
|
1298
|
+
descriptionKey: "workflowDescription.commonTools",
|
|
1299
|
+
defaultSelected: true,
|
|
1300
|
+
order: 1,
|
|
1301
|
+
commands: ["init-project.md"],
|
|
1302
|
+
agents: [
|
|
1303
|
+
{ id: "init-architect", filename: "init-architect.md", required: true },
|
|
1304
|
+
{ id: "get-current-datetime", filename: "get-current-datetime.md", required: true }
|
|
1305
|
+
],
|
|
1306
|
+
autoInstallAgents: true,
|
|
1307
|
+
category: "common",
|
|
1308
|
+
outputDir: "common"
|
|
1309
|
+
},
|
|
1310
|
+
{
|
|
1311
|
+
id: "sixStepsWorkflow",
|
|
1312
|
+
nameKey: "workflowOption.sixStepsWorkflow",
|
|
1313
|
+
descriptionKey: "workflowDescription.sixStepsWorkflow",
|
|
1314
|
+
defaultSelected: true,
|
|
1315
|
+
order: 2,
|
|
1316
|
+
commands: ["workflow.md"],
|
|
1317
|
+
agents: [],
|
|
1318
|
+
autoInstallAgents: false,
|
|
1319
|
+
category: "sixStep",
|
|
1320
|
+
outputDir: "workflow"
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
id: "featPlanUx",
|
|
1324
|
+
nameKey: "workflowOption.featPlanUx",
|
|
1325
|
+
descriptionKey: "workflowDescription.featPlanUx",
|
|
1326
|
+
defaultSelected: true,
|
|
1327
|
+
order: 3,
|
|
1328
|
+
commands: ["feat.md"],
|
|
1329
|
+
agents: [
|
|
1330
|
+
{ id: "planner", filename: "planner.md", required: true },
|
|
1331
|
+
{ id: "ui-ux-designer", filename: "ui-ux-designer.md", required: true }
|
|
1332
|
+
],
|
|
1333
|
+
autoInstallAgents: true,
|
|
1334
|
+
category: "plan",
|
|
1335
|
+
outputDir: "feat"
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
id: "gitWorkflow",
|
|
1339
|
+
nameKey: "workflowOption.gitWorkflow",
|
|
1340
|
+
descriptionKey: "workflowDescription.gitWorkflow",
|
|
1341
|
+
defaultSelected: true,
|
|
1342
|
+
order: 4,
|
|
1343
|
+
commands: ["git-commit.md", "git-rollback.md", "git-cleanBranches.md", "git-worktree.md"],
|
|
1344
|
+
agents: [],
|
|
1345
|
+
autoInstallAgents: false,
|
|
1346
|
+
category: "git",
|
|
1347
|
+
outputDir: "git"
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
id: "bmadWorkflow",
|
|
1351
|
+
nameKey: "workflowOption.bmadWorkflow",
|
|
1352
|
+
descriptionKey: "workflowDescription.bmadWorkflow",
|
|
1353
|
+
defaultSelected: true,
|
|
1354
|
+
order: 5,
|
|
1355
|
+
commands: ["bmad-init.md"],
|
|
1356
|
+
agents: [],
|
|
1357
|
+
autoInstallAgents: false,
|
|
1358
|
+
category: "bmad",
|
|
1359
|
+
outputDir: "bmad"
|
|
1360
|
+
}
|
|
1361
|
+
];
|
|
1362
|
+
function getWorkflowConfig(workflowId) {
|
|
1363
|
+
return WORKFLOW_CONFIGS.find((config) => config.id === workflowId);
|
|
1364
|
+
}
|
|
1365
|
+
function getOrderedWorkflows() {
|
|
1366
|
+
return [...WORKFLOW_CONFIGS].sort((a, b) => a.order - b.order);
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
const CLAUDE_DIR = join(homedir(), ".claude");
|
|
1370
|
+
const SETTINGS_FILE = join(CLAUDE_DIR, "settings.json");
|
|
1371
|
+
const CLAUDE_MD_FILE = join(CLAUDE_DIR, "CLAUDE.md");
|
|
1372
|
+
const ClAUDE_CONFIG_FILE = join(homedir(), ".claude.json");
|
|
1373
|
+
const LEGACY_ZCF_CONFIG_FILE = join(homedir(), ".zcf.json");
|
|
1374
|
+
const ZCF_CONFIG_FILE = join(CLAUDE_DIR, ".zcf-config.json");
|
|
1375
|
+
const SUPPORTED_LANGS = ["zh-CN", "en"];
|
|
1376
|
+
const LANG_LABELS = {
|
|
1377
|
+
"zh-CN": "\u7B80\u4F53\u4E2D\u6587",
|
|
1378
|
+
"en": "English"
|
|
1379
|
+
};
|
|
1380
|
+
const AI_OUTPUT_LANGUAGES = {
|
|
1381
|
+
"zh-CN": { label: "\u7B80\u4F53\u4E2D\u6587", directive: "Always respond in Chinese-simplified" },
|
|
1382
|
+
"en": { label: "English", directive: "Always respond in English" },
|
|
1383
|
+
"custom": { label: "Custom", directive: "" }
|
|
1384
|
+
};
|
|
1385
|
+
const I18N = I18N$1;
|
|
1321
1386
|
|
|
1322
1387
|
function displayBanner(subtitle) {
|
|
1323
1388
|
const defaultSubtitle = "One-click configuration tool for Claude Code";
|
|
@@ -2385,29 +2450,41 @@ function format(template, replacements) {
|
|
|
2385
2450
|
}
|
|
2386
2451
|
|
|
2387
2452
|
const execAsync$3 = promisify(exec$1);
|
|
2388
|
-
async function getInstalledVersion(command) {
|
|
2389
|
-
|
|
2390
|
-
let stdout;
|
|
2453
|
+
async function getInstalledVersion(command, maxRetries = 3) {
|
|
2454
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
2391
2455
|
try {
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2456
|
+
let stdout;
|
|
2457
|
+
try {
|
|
2458
|
+
const result = await execAsync$3(`${command} -v`);
|
|
2459
|
+
stdout = result.stdout;
|
|
2460
|
+
} catch {
|
|
2461
|
+
const result = await execAsync$3(`${command} --version`);
|
|
2462
|
+
stdout = result.stdout;
|
|
2463
|
+
}
|
|
2464
|
+
const versionMatch = stdout.match(/(\d+\.\d+\.\d+(?:-[\w.]+)?)/);
|
|
2465
|
+
return versionMatch ? versionMatch[1] : null;
|
|
2466
|
+
} catch (error) {
|
|
2467
|
+
if (attempt === maxRetries) {
|
|
2468
|
+
return null;
|
|
2469
|
+
}
|
|
2470
|
+
await new Promise((resolve) => setTimeout(resolve, 100 * attempt));
|
|
2397
2471
|
}
|
|
2398
|
-
const versionMatch = stdout.match(/(\d+\.\d+\.\d+(?:-[\w.]+)?)/);
|
|
2399
|
-
return versionMatch ? versionMatch[1] : null;
|
|
2400
|
-
} catch {
|
|
2401
|
-
return null;
|
|
2402
2472
|
}
|
|
2473
|
+
return null;
|
|
2403
2474
|
}
|
|
2404
|
-
async function getLatestVersion(packageName) {
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2475
|
+
async function getLatestVersion(packageName, maxRetries = 3) {
|
|
2476
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
2477
|
+
try {
|
|
2478
|
+
const { stdout } = await execAsync$3(`npm view ${packageName} version`);
|
|
2479
|
+
return stdout.trim();
|
|
2480
|
+
} catch (error) {
|
|
2481
|
+
if (attempt === maxRetries) {
|
|
2482
|
+
return null;
|
|
2483
|
+
}
|
|
2484
|
+
await new Promise((resolve) => setTimeout(resolve, 200 * attempt));
|
|
2485
|
+
}
|
|
2410
2486
|
}
|
|
2487
|
+
return null;
|
|
2411
2488
|
}
|
|
2412
2489
|
function compareVersions(current, latest) {
|
|
2413
2490
|
if (!semver.valid(current) || !semver.valid(latest)) {
|
|
@@ -3214,8 +3291,9 @@ ${i18n.installation.termuxInstallHint}
|
|
|
3214
3291
|
|
|
3215
3292
|
async function selectMcpServices(scriptLang) {
|
|
3216
3293
|
const i18n = getTranslation(scriptLang);
|
|
3217
|
-
const
|
|
3218
|
-
|
|
3294
|
+
const mcpServices = getMcpServices(scriptLang);
|
|
3295
|
+
const choices = mcpServices.map((service) => ({
|
|
3296
|
+
name: `${service.name} - ${ansis.gray(service.description)}`,
|
|
3219
3297
|
value: service.id,
|
|
3220
3298
|
selected: false
|
|
3221
3299
|
}));
|
|
@@ -3528,13 +3606,13 @@ function validateSkipPromptOptions(options) {
|
|
|
3528
3606
|
if (options.mcpServices === "skip") {
|
|
3529
3607
|
options.mcpServices = false;
|
|
3530
3608
|
} else if (options.mcpServices === "all") {
|
|
3531
|
-
options.mcpServices =
|
|
3609
|
+
options.mcpServices = MCP_SERVICE_CONFIGS.filter((s) => !s.requiresApiKey).map((s) => s.id);
|
|
3532
3610
|
} else {
|
|
3533
3611
|
options.mcpServices = options.mcpServices.split(",").map((s) => s.trim());
|
|
3534
3612
|
}
|
|
3535
3613
|
}
|
|
3536
3614
|
if (Array.isArray(options.mcpServices)) {
|
|
3537
|
-
const validServices =
|
|
3615
|
+
const validServices = MCP_SERVICE_CONFIGS.map((s) => s.id);
|
|
3538
3616
|
for (const service of options.mcpServices) {
|
|
3539
3617
|
if (!validServices.includes(service)) {
|
|
3540
3618
|
throw new Error(`Invalid MCP service: ${service}. Available services: ${validServices.join(", ")}`);
|
|
@@ -3574,7 +3652,7 @@ function validateSkipPromptOptions(options) {
|
|
|
3574
3652
|
}
|
|
3575
3653
|
if (options.mcpServices === void 0) {
|
|
3576
3654
|
options.mcpServices = "all";
|
|
3577
|
-
options.mcpServices =
|
|
3655
|
+
options.mcpServices = MCP_SERVICE_CONFIGS.filter((s) => !s.requiresApiKey).map((s) => s.id);
|
|
3578
3656
|
}
|
|
3579
3657
|
if (options.workflows === void 0) {
|
|
3580
3658
|
options.workflows = "all";
|
|
@@ -3917,23 +3995,23 @@ ${ansis.blue(`\u2139 ${i18n.api.existingApiConfig}`)}`);
|
|
|
3917
3995
|
}
|
|
3918
3996
|
const newServers = {};
|
|
3919
3997
|
for (const serviceId of selectedServices) {
|
|
3920
|
-
const service =
|
|
3998
|
+
const service = getMcpServices(scriptLang).find((s) => s.id === serviceId);
|
|
3921
3999
|
if (!service)
|
|
3922
4000
|
continue;
|
|
3923
4001
|
let config = service.config;
|
|
3924
4002
|
if (service.requiresApiKey) {
|
|
3925
4003
|
if (options.skipPrompt) {
|
|
3926
|
-
console.log(ansis.yellow(`${i18n.common.skip}: ${service.name
|
|
4004
|
+
console.log(ansis.yellow(`${i18n.common.skip}: ${service.name} (requires API key)`));
|
|
3927
4005
|
continue;
|
|
3928
4006
|
} else {
|
|
3929
4007
|
const response = await inquirer.prompt({
|
|
3930
4008
|
type: "input",
|
|
3931
4009
|
name: "apiKey",
|
|
3932
|
-
message: service.apiKeyPrompt
|
|
4010
|
+
message: service.apiKeyPrompt,
|
|
3933
4011
|
validate: (value) => !!value || i18n.api.keyRequired
|
|
3934
4012
|
});
|
|
3935
4013
|
if (!response.apiKey) {
|
|
3936
|
-
console.log(ansis.yellow(`${i18n.common.skip}: ${service.name
|
|
4014
|
+
console.log(ansis.yellow(`${i18n.common.skip}: ${service.name}`));
|
|
3937
4015
|
continue;
|
|
3938
4016
|
}
|
|
3939
4017
|
config = buildMcpServerConfig(service.config, response.apiKey, service.apiKeyPlaceholder, service.apiKeyEnvVar);
|
|
@@ -4072,4 +4150,4 @@ async function openSettingsJson() {
|
|
|
4072
4150
|
}
|
|
4073
4151
|
}
|
|
4074
4152
|
|
|
4075
|
-
export { modifyApiConfigPartially as $, AI_OUTPUT_LANGUAGES as A, writeMcpConfig as B, CLAUDE_DIR as C, backupMcpConfig as D, mergeMcpServers as E, buildMcpServerConfig as F, fixWindowsMcpConfig as G, addCompletedOnboarding as H, I18N as I, readCcrConfig as J, isCcrInstalled as K, LEGACY_ZCF_CONFIG_FILE as L,
|
|
4153
|
+
export { modifyApiConfigPartially as $, AI_OUTPUT_LANGUAGES as A, writeMcpConfig as B, CLAUDE_DIR as C, backupMcpConfig as D, mergeMcpServers as E, buildMcpServerConfig as F, fixWindowsMcpConfig as G, addCompletedOnboarding as H, I18N as I, readCcrConfig as J, isCcrInstalled as K, LEGACY_ZCF_CONFIG_FILE as L, installCcr as M, configureCcrFeature as N, handleExitPromptError as O, handleGeneralError as P, getTranslation as Q, addNumbersToChoices as R, SETTINGS_FILE as S, updateZcfConfig as T, readZcfConfig as U, configureOutputStyle as V, isWindows as W, selectMcpServices as X, getMcpServices as Y, ZCF_CONFIG_FILE as Z, formatApiKeyDisplay as _, commandExists as a, setupCcrConfiguration as a0, validateApiKey as a1, readZcfConfigAsync as a2, COMETIX_COMMAND_NAME as a3, COMETIX_COMMANDS as a4, installCometixLine as a5, selectScriptLanguage as a6, checkAndUpdateTools as a7, displayBanner as a8, resolveAiOutputLanguage as a9, updatePromptOnly as aa, selectAndInstallWorkflows as ab, checkClaudeCodeVersionAndPrompt as ac, version as ad, displayBannerWithInfo as ae, prompts as af, importRecommendedEnv as b, cleanupPermissions as c, importRecommendedPermissions as d, CLAUDE_MD_FILE as e, ClAUDE_CONFIG_FILE as f, getPlatform as g, SUPPORTED_LANGS as h, init as i, LANG_LABELS as j, ensureClaudeDir as k, backupExistingConfig as l, mergeAndCleanPermissions as m, copyConfigFiles as n, openSettingsJson as o, configureApi as p, mergeConfigs as q, mergeSettingsFile as r, getExistingModelConfig as s, getExistingApiConfig as t, updateDefaultModel as u, applyAiLanguageDirective as v, isClaudeCodeInstalled as w, installClaudeCode as x, getMcpConfigPath as y, readMcpConfig as z };
|
package/dist/cli.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import cac from 'cac';
|
|
3
3
|
import ansis from 'ansis';
|
|
4
|
-
import { I as I18N, J as readCcrConfig, K as isCcrInstalled,
|
|
4
|
+
import { I as I18N, J as readCcrConfig, K as isCcrInstalled, M as installCcr, N as configureCcrFeature, O as handleExitPromptError, P as handleGeneralError, Q as getTranslation, Z as ZCF_CONFIG_FILE, h as SUPPORTED_LANGS, R as addNumbersToChoices, j as LANG_LABELS, T as updateZcfConfig, o as openSettingsJson, d as importRecommendedPermissions, b as importRecommendedEnv, U as readZcfConfig, v as applyAiLanguageDirective, V as configureOutputStyle, s as getExistingModelConfig, u as updateDefaultModel, W as isWindows, z as readMcpConfig, G as fixWindowsMcpConfig, B as writeMcpConfig, X as selectMcpServices, D as backupMcpConfig, Y as getMcpServices, F as buildMcpServerConfig, E as mergeMcpServers, t as getExistingApiConfig, _ as formatApiKeyDisplay, H as addCompletedOnboarding, $ as modifyApiConfigPartially, a0 as setupCcrConfiguration, a1 as validateApiKey, p as configureApi, a2 as readZcfConfigAsync, a3 as COMETIX_COMMAND_NAME, a4 as COMETIX_COMMANDS, a5 as installCometixLine, a6 as selectScriptLanguage, a7 as checkAndUpdateTools, a8 as displayBanner, a9 as resolveAiOutputLanguage, aa as updatePromptOnly, ab as selectAndInstallWorkflows, ac as checkClaudeCodeVersionAndPrompt, ad as version, ae as displayBannerWithInfo, i as init } from './chunks/simple-config.mjs';
|
|
5
5
|
import { existsSync, unlinkSync } from 'node:fs';
|
|
6
6
|
import { homedir } from 'node:os';
|
|
7
7
|
import { join } from 'node:path';
|
|
@@ -410,7 +410,7 @@ async function configureMcpFeature(scriptLang) {
|
|
|
410
410
|
}
|
|
411
411
|
const newServers = {};
|
|
412
412
|
for (const serviceId of selectedServices) {
|
|
413
|
-
const service =
|
|
413
|
+
const service = getMcpServices(scriptLang).find((s) => s.id === serviceId);
|
|
414
414
|
if (!service)
|
|
415
415
|
continue;
|
|
416
416
|
let config = service.config;
|
|
@@ -418,7 +418,7 @@ async function configureMcpFeature(scriptLang) {
|
|
|
418
418
|
const { apiKey } = await inquirer.prompt({
|
|
419
419
|
type: "input",
|
|
420
420
|
name: "apiKey",
|
|
421
|
-
message: service.apiKeyPrompt
|
|
421
|
+
message: service.apiKeyPrompt,
|
|
422
422
|
validate: (value) => !!value || i18n.api.keyRequired
|
|
423
423
|
});
|
|
424
424
|
if (apiKey) {
|
package/dist/index.d.mts
CHANGED
|
@@ -17,37 +17,6 @@ interface TranslationStructure {
|
|
|
17
17
|
updater: any;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
interface McpService {
|
|
21
|
-
id: string;
|
|
22
|
-
name: {
|
|
23
|
-
'en': string;
|
|
24
|
-
'zh-CN': string;
|
|
25
|
-
};
|
|
26
|
-
description: {
|
|
27
|
-
'en': string;
|
|
28
|
-
'zh-CN': string;
|
|
29
|
-
};
|
|
30
|
-
requiresApiKey: boolean;
|
|
31
|
-
apiKeyPrompt?: {
|
|
32
|
-
'en': string;
|
|
33
|
-
'zh-CN': string;
|
|
34
|
-
};
|
|
35
|
-
apiKeyPlaceholder?: string;
|
|
36
|
-
apiKeyEnvVar?: string;
|
|
37
|
-
config: McpServerConfig;
|
|
38
|
-
}
|
|
39
|
-
interface McpServerConfig {
|
|
40
|
-
type: 'stdio' | 'sse';
|
|
41
|
-
command?: string;
|
|
42
|
-
args?: string[];
|
|
43
|
-
url?: string;
|
|
44
|
-
env?: Record<string, string>;
|
|
45
|
-
}
|
|
46
|
-
interface ClaudeConfiguration {
|
|
47
|
-
mcpServers: Record<string, McpServerConfig>;
|
|
48
|
-
hasCompletedOnboarding?: boolean;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
20
|
declare const CLAUDE_DIR: string;
|
|
52
21
|
declare const SETTINGS_FILE: string;
|
|
53
22
|
declare const CLAUDE_MD_FILE: string;
|
|
@@ -76,7 +45,6 @@ declare const AI_OUTPUT_LANGUAGES: {
|
|
|
76
45
|
};
|
|
77
46
|
type AiOutputLanguage = keyof typeof AI_OUTPUT_LANGUAGES;
|
|
78
47
|
declare const I18N: Record<SupportedLang$1, TranslationStructure>;
|
|
79
|
-
declare const MCP_SERVICES: McpService[];
|
|
80
48
|
|
|
81
49
|
interface InitOptions {
|
|
82
50
|
lang?: SupportedLang;
|
|
@@ -98,6 +66,28 @@ interface InitOptions {
|
|
|
98
66
|
}
|
|
99
67
|
declare function init(options?: InitOptions): Promise<void>;
|
|
100
68
|
|
|
69
|
+
interface McpService {
|
|
70
|
+
id: string;
|
|
71
|
+
name: string;
|
|
72
|
+
description: string;
|
|
73
|
+
requiresApiKey: boolean;
|
|
74
|
+
apiKeyPrompt?: string;
|
|
75
|
+
apiKeyPlaceholder?: string;
|
|
76
|
+
apiKeyEnvVar?: string;
|
|
77
|
+
config: McpServerConfig;
|
|
78
|
+
}
|
|
79
|
+
interface McpServerConfig {
|
|
80
|
+
type: 'stdio' | 'sse';
|
|
81
|
+
command?: string;
|
|
82
|
+
args?: string[];
|
|
83
|
+
url?: string;
|
|
84
|
+
env?: Record<string, string>;
|
|
85
|
+
}
|
|
86
|
+
interface ClaudeConfiguration {
|
|
87
|
+
mcpServers: Record<string, McpServerConfig>;
|
|
88
|
+
hasCompletedOnboarding?: boolean;
|
|
89
|
+
}
|
|
90
|
+
|
|
101
91
|
/**
|
|
102
92
|
* API configuration for Claude Code
|
|
103
93
|
*/
|
|
@@ -167,5 +157,5 @@ declare function importRecommendedEnv(): Promise<void>;
|
|
|
167
157
|
declare function importRecommendedPermissions(): Promise<void>;
|
|
168
158
|
declare function openSettingsJson(): Promise<void>;
|
|
169
159
|
|
|
170
|
-
export { AI_OUTPUT_LANGUAGES, CLAUDE_DIR, CLAUDE_MD_FILE, ClAUDE_CONFIG_FILE, I18N, LANG_LABELS, LEGACY_ZCF_CONFIG_FILE,
|
|
160
|
+
export { AI_OUTPUT_LANGUAGES, CLAUDE_DIR, CLAUDE_MD_FILE, ClAUDE_CONFIG_FILE, I18N, LANG_LABELS, LEGACY_ZCF_CONFIG_FILE, SETTINGS_FILE, SUPPORTED_LANGS, ZCF_CONFIG_FILE, addCompletedOnboarding, applyAiLanguageDirective, backupExistingConfig, backupMcpConfig, buildMcpServerConfig, cleanupPermissions, commandExists, configureApi, copyConfigFiles, ensureClaudeDir, fixWindowsMcpConfig, getExistingApiConfig, getExistingModelConfig, getMcpConfigPath, getPlatform, importRecommendedEnv, importRecommendedPermissions, init, installClaudeCode, isClaudeCodeInstalled, mergeAndCleanPermissions, mergeConfigs, mergeMcpServers, mergeSettingsFile, openSettingsJson, readMcpConfig, updateDefaultModel, writeMcpConfig };
|
|
171
161
|
export type { AiOutputLanguage, ApiConfig, ClaudeConfiguration, McpServerConfig, McpService, SupportedLang };
|
package/dist/index.d.ts
CHANGED
|
@@ -17,37 +17,6 @@ interface TranslationStructure {
|
|
|
17
17
|
updater: any;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
interface McpService {
|
|
21
|
-
id: string;
|
|
22
|
-
name: {
|
|
23
|
-
'en': string;
|
|
24
|
-
'zh-CN': string;
|
|
25
|
-
};
|
|
26
|
-
description: {
|
|
27
|
-
'en': string;
|
|
28
|
-
'zh-CN': string;
|
|
29
|
-
};
|
|
30
|
-
requiresApiKey: boolean;
|
|
31
|
-
apiKeyPrompt?: {
|
|
32
|
-
'en': string;
|
|
33
|
-
'zh-CN': string;
|
|
34
|
-
};
|
|
35
|
-
apiKeyPlaceholder?: string;
|
|
36
|
-
apiKeyEnvVar?: string;
|
|
37
|
-
config: McpServerConfig;
|
|
38
|
-
}
|
|
39
|
-
interface McpServerConfig {
|
|
40
|
-
type: 'stdio' | 'sse';
|
|
41
|
-
command?: string;
|
|
42
|
-
args?: string[];
|
|
43
|
-
url?: string;
|
|
44
|
-
env?: Record<string, string>;
|
|
45
|
-
}
|
|
46
|
-
interface ClaudeConfiguration {
|
|
47
|
-
mcpServers: Record<string, McpServerConfig>;
|
|
48
|
-
hasCompletedOnboarding?: boolean;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
20
|
declare const CLAUDE_DIR: string;
|
|
52
21
|
declare const SETTINGS_FILE: string;
|
|
53
22
|
declare const CLAUDE_MD_FILE: string;
|
|
@@ -76,7 +45,6 @@ declare const AI_OUTPUT_LANGUAGES: {
|
|
|
76
45
|
};
|
|
77
46
|
type AiOutputLanguage = keyof typeof AI_OUTPUT_LANGUAGES;
|
|
78
47
|
declare const I18N: Record<SupportedLang$1, TranslationStructure>;
|
|
79
|
-
declare const MCP_SERVICES: McpService[];
|
|
80
48
|
|
|
81
49
|
interface InitOptions {
|
|
82
50
|
lang?: SupportedLang;
|
|
@@ -98,6 +66,28 @@ interface InitOptions {
|
|
|
98
66
|
}
|
|
99
67
|
declare function init(options?: InitOptions): Promise<void>;
|
|
100
68
|
|
|
69
|
+
interface McpService {
|
|
70
|
+
id: string;
|
|
71
|
+
name: string;
|
|
72
|
+
description: string;
|
|
73
|
+
requiresApiKey: boolean;
|
|
74
|
+
apiKeyPrompt?: string;
|
|
75
|
+
apiKeyPlaceholder?: string;
|
|
76
|
+
apiKeyEnvVar?: string;
|
|
77
|
+
config: McpServerConfig;
|
|
78
|
+
}
|
|
79
|
+
interface McpServerConfig {
|
|
80
|
+
type: 'stdio' | 'sse';
|
|
81
|
+
command?: string;
|
|
82
|
+
args?: string[];
|
|
83
|
+
url?: string;
|
|
84
|
+
env?: Record<string, string>;
|
|
85
|
+
}
|
|
86
|
+
interface ClaudeConfiguration {
|
|
87
|
+
mcpServers: Record<string, McpServerConfig>;
|
|
88
|
+
hasCompletedOnboarding?: boolean;
|
|
89
|
+
}
|
|
90
|
+
|
|
101
91
|
/**
|
|
102
92
|
* API configuration for Claude Code
|
|
103
93
|
*/
|
|
@@ -167,5 +157,5 @@ declare function importRecommendedEnv(): Promise<void>;
|
|
|
167
157
|
declare function importRecommendedPermissions(): Promise<void>;
|
|
168
158
|
declare function openSettingsJson(): Promise<void>;
|
|
169
159
|
|
|
170
|
-
export { AI_OUTPUT_LANGUAGES, CLAUDE_DIR, CLAUDE_MD_FILE, ClAUDE_CONFIG_FILE, I18N, LANG_LABELS, LEGACY_ZCF_CONFIG_FILE,
|
|
160
|
+
export { AI_OUTPUT_LANGUAGES, CLAUDE_DIR, CLAUDE_MD_FILE, ClAUDE_CONFIG_FILE, I18N, LANG_LABELS, LEGACY_ZCF_CONFIG_FILE, SETTINGS_FILE, SUPPORTED_LANGS, ZCF_CONFIG_FILE, addCompletedOnboarding, applyAiLanguageDirective, backupExistingConfig, backupMcpConfig, buildMcpServerConfig, cleanupPermissions, commandExists, configureApi, copyConfigFiles, ensureClaudeDir, fixWindowsMcpConfig, getExistingApiConfig, getExistingModelConfig, getMcpConfigPath, getPlatform, importRecommendedEnv, importRecommendedPermissions, init, installClaudeCode, isClaudeCodeInstalled, mergeAndCleanPermissions, mergeConfigs, mergeMcpServers, mergeSettingsFile, openSettingsJson, readMcpConfig, updateDefaultModel, writeMcpConfig };
|
|
171
161
|
export type { AiOutputLanguage, ApiConfig, ClaudeConfiguration, McpServerConfig, McpService, SupportedLang };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AI_OUTPUT_LANGUAGES, C as CLAUDE_DIR, e as CLAUDE_MD_FILE, f as ClAUDE_CONFIG_FILE, I as I18N, j as LANG_LABELS, L as LEGACY_ZCF_CONFIG_FILE,
|
|
1
|
+
export { A as AI_OUTPUT_LANGUAGES, C as CLAUDE_DIR, e as CLAUDE_MD_FILE, f as ClAUDE_CONFIG_FILE, I as I18N, j as LANG_LABELS, L as LEGACY_ZCF_CONFIG_FILE, S as SETTINGS_FILE, h as SUPPORTED_LANGS, Z as ZCF_CONFIG_FILE, H as addCompletedOnboarding, v as applyAiLanguageDirective, l as backupExistingConfig, D as backupMcpConfig, F as buildMcpServerConfig, c as cleanupPermissions, a as commandExists, p as configureApi, n as copyConfigFiles, k as ensureClaudeDir, G as fixWindowsMcpConfig, t as getExistingApiConfig, s as getExistingModelConfig, y as getMcpConfigPath, g as getPlatform, b as importRecommendedEnv, d as importRecommendedPermissions, i as init, x as installClaudeCode, w as isClaudeCodeInstalled, m as mergeAndCleanPermissions, q as mergeConfigs, E as mergeMcpServers, r as mergeSettingsFile, o as openSettingsJson, z as readMcpConfig, u as updateDefaultModel, B as writeMcpConfig } from './chunks/simple-config.mjs';
|
|
2
2
|
import 'node:fs';
|
|
3
3
|
import 'node:process';
|
|
4
4
|
import 'ansis';
|
package/package.json
CHANGED