aico-cli 0.0.2 → 0.0.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/dist/cli.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import cac from 'cac';
|
|
3
3
|
import ansis from 'ansis';
|
|
4
|
-
import { J as readZcfConfig, K as inquirer, N as addNumbersToChoices, O as updateZcfConfig, P as getTranslation, h as SUPPORTED_LANGS, j as LANG_LABELS, k as AI_OUTPUT_LANGUAGES, Q as version, q as backupExistingConfig, r as copyConfigFiles, x as applyAiLanguageDirective, R as configureAiPersonality, C as CLAUDE_DIR, T as readJsonConfig, H as addCompletedOnboarding, S as SETTINGS_FILE, U as writeJsonConfig, o as openSettingsJson, b as importRecommendedPermissions, a as importRecommendedEnv, V as isWindows, z as readMcpConfig, G as fixWindowsMcpConfig, B as writeMcpConfig, W as selectMcpServices, D as backupMcpConfig, M as MCP_SERVICES, F as buildMcpServerConfig, E as mergeMcpServers,
|
|
4
|
+
import { J as readZcfConfig, K as inquirer, N as addNumbersToChoices, O as updateZcfConfig, P as getTranslation, h as SUPPORTED_LANGS, j as LANG_LABELS, k as AI_OUTPUT_LANGUAGES, Q as version, q as backupExistingConfig, r as copyConfigFiles, x as applyAiLanguageDirective, R as configureAiPersonality, C as CLAUDE_DIR, T as readJsonConfig, H as addCompletedOnboarding, S as SETTINGS_FILE, U as writeJsonConfig, o as openSettingsJson, b as importRecommendedPermissions, a as importRecommendedEnv, V as isWindows, z as readMcpConfig, G as fixWindowsMcpConfig, B as writeMcpConfig, W as selectMcpServices, D as backupMcpConfig, M as MCP_SERVICES, F as buildMcpServerConfig, X as EscapeKeyPressed, E as mergeMcpServers, Y as displayBanner, I as I18N, Z as selectAndInstallWorkflows, _ as handleExitPromptError, $ as handleGeneralError, a0 as displayBannerWithInfo, a1 as readZcfConfigAsync, i as init, a2 as executeWithEscapeSupport } from './shared/aico-cli.BxrCfzlp.mjs';
|
|
5
5
|
import inquirer$1 from 'inquirer';
|
|
6
6
|
import { existsSync, copyFileSync, mkdirSync } from 'node:fs';
|
|
7
|
-
import { exec } from 'node:child_process';
|
|
7
|
+
import { exec, spawn } from 'node:child_process';
|
|
8
8
|
import { promisify } from 'node:util';
|
|
9
9
|
import dayjs from 'dayjs';
|
|
10
10
|
import { homedir } from 'node:os';
|
|
@@ -591,39 +591,145 @@ async function configureMcpFeature(scriptLang) {
|
|
|
591
591
|
}
|
|
592
592
|
}
|
|
593
593
|
const selectedServices = await selectMcpServices(scriptLang);
|
|
594
|
-
if (
|
|
594
|
+
if (selectedServices === void 0) {
|
|
595
|
+
return;
|
|
596
|
+
}
|
|
597
|
+
if (selectedServices.length === 0) {
|
|
598
|
+
console.log(
|
|
599
|
+
ansis.yellow(i18n.mcp.noServicesSelected || "\u6CA1\u6709\u9009\u62E9\u4EFB\u4F55\u670D\u52A1")
|
|
600
|
+
);
|
|
595
601
|
return;
|
|
596
602
|
}
|
|
597
603
|
if (selectedServices.length > 0) {
|
|
598
604
|
const mcpBackupPath = backupMcpConfig();
|
|
599
605
|
if (mcpBackupPath) {
|
|
600
|
-
console.log(
|
|
606
|
+
console.log(
|
|
607
|
+
ansis.gray(`\u2714 ${i18n.mcp.mcpBackupSuccess}: ${mcpBackupPath}`)
|
|
608
|
+
);
|
|
601
609
|
}
|
|
602
610
|
const newServers = {};
|
|
611
|
+
const installResults = [];
|
|
603
612
|
for (const serviceId of selectedServices) {
|
|
604
613
|
const service = MCP_SERVICES.find((s) => s.id === serviceId);
|
|
605
|
-
if (!service)
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
message: service.apiKeyPrompt[scriptLang],
|
|
612
|
-
validate: (value) => !!value || i18n.api.keyRequired
|
|
614
|
+
if (!service) {
|
|
615
|
+
installResults.push({
|
|
616
|
+
serviceId,
|
|
617
|
+
serviceName: serviceId,
|
|
618
|
+
success: false,
|
|
619
|
+
reason: i18n.mcp.serviceNotFound || "\u670D\u52A1\u672A\u627E\u5230"
|
|
613
620
|
});
|
|
614
|
-
|
|
615
|
-
|
|
621
|
+
continue;
|
|
622
|
+
}
|
|
623
|
+
try {
|
|
624
|
+
let config = service.config;
|
|
625
|
+
if (service.requiresApiKey) {
|
|
626
|
+
console.log(ansis.cyan(`
|
|
627
|
+
\u914D\u7F6E ${service.name[scriptLang]}...`));
|
|
628
|
+
const { apiKey } = await inquirer.prompt({
|
|
629
|
+
type: "input",
|
|
630
|
+
name: "apiKey",
|
|
631
|
+
message: service.apiKeyPrompt[scriptLang],
|
|
632
|
+
validate: (value) => !!value || i18n.api.keyRequired
|
|
633
|
+
});
|
|
634
|
+
if (apiKey) {
|
|
635
|
+
config = buildMcpServerConfig(
|
|
636
|
+
service.config,
|
|
637
|
+
apiKey,
|
|
638
|
+
service.apiKeyPlaceholder,
|
|
639
|
+
service.apiKeyEnvVar
|
|
640
|
+
);
|
|
641
|
+
newServers[service.id] = config;
|
|
642
|
+
installResults.push({
|
|
643
|
+
serviceId: service.id,
|
|
644
|
+
serviceName: service.name[scriptLang],
|
|
645
|
+
success: true
|
|
646
|
+
});
|
|
647
|
+
console.log(ansis.green(`\u2714 ${service.name[scriptLang]} \u914D\u7F6E\u6210\u529F`));
|
|
648
|
+
} else {
|
|
649
|
+
installResults.push({
|
|
650
|
+
serviceId: service.id,
|
|
651
|
+
serviceName: service.name[scriptLang],
|
|
652
|
+
success: false,
|
|
653
|
+
reason: i18n.mcp.apiKeyRequired || "API Key \u5FC5\u586B"
|
|
654
|
+
});
|
|
655
|
+
console.log(
|
|
656
|
+
ansis.yellow(
|
|
657
|
+
`\u26A0 ${service.name[scriptLang]} \u914D\u7F6E\u8DF3\u8FC7\uFF08\u672A\u63D0\u4F9B API Key\uFF09`
|
|
658
|
+
)
|
|
659
|
+
);
|
|
660
|
+
}
|
|
616
661
|
} else {
|
|
617
|
-
|
|
662
|
+
newServers[service.id] = config;
|
|
663
|
+
installResults.push({
|
|
664
|
+
serviceId: service.id,
|
|
665
|
+
serviceName: service.name[scriptLang],
|
|
666
|
+
success: true
|
|
667
|
+
});
|
|
668
|
+
console.log(ansis.green(`\u2714 ${service.name[scriptLang]} \u914D\u7F6E\u6210\u529F`));
|
|
669
|
+
}
|
|
670
|
+
} catch (error) {
|
|
671
|
+
if (error instanceof EscapeKeyPressed) {
|
|
672
|
+
installResults.push({
|
|
673
|
+
serviceId: service.id,
|
|
674
|
+
serviceName: service.name[scriptLang],
|
|
675
|
+
success: false,
|
|
676
|
+
reason: i18n.common.cancelled || "\u7528\u6237\u53D6\u6D88"
|
|
677
|
+
});
|
|
678
|
+
console.log(ansis.yellow(`\u26A0 ${service.name[scriptLang]} \u914D\u7F6E\u5DF2\u53D6\u6D88`));
|
|
679
|
+
} else {
|
|
680
|
+
installResults.push({
|
|
681
|
+
serviceId: service.id,
|
|
682
|
+
serviceName: service.name[scriptLang],
|
|
683
|
+
success: false,
|
|
684
|
+
reason: error.message || i18n.common.error || "\u914D\u7F6E\u5931\u8D25"
|
|
685
|
+
});
|
|
686
|
+
console.log(
|
|
687
|
+
ansis.red(
|
|
688
|
+
`\u2717 ${service.name[scriptLang]} \u914D\u7F6E\u5931\u8D25: ${error.message}`
|
|
689
|
+
)
|
|
690
|
+
);
|
|
618
691
|
}
|
|
619
692
|
}
|
|
620
|
-
newServers[service.id] = config;
|
|
621
693
|
}
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
694
|
+
if (Object.keys(newServers).length > 0) {
|
|
695
|
+
const existingConfig = readMcpConfig();
|
|
696
|
+
let mergedConfig = mergeMcpServers(existingConfig, newServers);
|
|
697
|
+
mergedConfig = fixWindowsMcpConfig(mergedConfig);
|
|
698
|
+
writeMcpConfig(mergedConfig);
|
|
699
|
+
}
|
|
700
|
+
console.log("\n" + ansis.dim("\u2500".repeat(50)));
|
|
701
|
+
console.log(ansis.bold(i18n.mcp.installationSummary || "MCP \u670D\u52A1\u5B89\u88C5\u7ED3\u679C"));
|
|
702
|
+
console.log(ansis.dim("\u2500".repeat(50)));
|
|
703
|
+
const successfulServices = installResults.filter((r) => r.success);
|
|
704
|
+
const failedServices = installResults.filter((r) => !r.success);
|
|
705
|
+
if (successfulServices.length > 0) {
|
|
706
|
+
console.log(
|
|
707
|
+
ansis.green(`\u2714 \u6210\u529F\u5B89\u88C5 ${successfulServices.length} \u4E2A\u670D\u52A1:`)
|
|
708
|
+
);
|
|
709
|
+
successfulServices.forEach((service) => {
|
|
710
|
+
console.log(ansis.green(` \u2022 ${service.serviceName}`));
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
if (failedServices.length > 0) {
|
|
714
|
+
console.log(ansis.yellow(`
|
|
715
|
+
\u26A0 ${failedServices.length} \u4E2A\u670D\u52A1\u5B89\u88C5\u5931\u8D25:`));
|
|
716
|
+
failedServices.forEach((service) => {
|
|
717
|
+
console.log(
|
|
718
|
+
ansis.yellow(` \u2022 ${service.serviceName}: ${service.reason}`)
|
|
719
|
+
);
|
|
720
|
+
});
|
|
721
|
+
}
|
|
722
|
+
if (successfulServices.length > 0) {
|
|
723
|
+
console.log(ansis.green(`
|
|
724
|
+
\u2714 ${i18n.mcp.mcpConfigSuccess}`));
|
|
725
|
+
} else if (failedServices.length === selectedServices.length) {
|
|
726
|
+
console.log(
|
|
727
|
+
ansis.yellow(
|
|
728
|
+
`
|
|
729
|
+
\u26A0 ${i18n.mcp.noServicesInstalled || "\u6CA1\u6709\u670D\u52A1\u88AB\u6210\u529F\u5B89\u88C5"}`
|
|
730
|
+
)
|
|
731
|
+
);
|
|
732
|
+
}
|
|
627
733
|
}
|
|
628
734
|
}
|
|
629
735
|
async function configureAiMemoryFeature(scriptLang) {
|
|
@@ -648,10 +754,18 @@ async function configureAiMemoryFeature(scriptLang) {
|
|
|
648
754
|
}
|
|
649
755
|
if (option === "language") {
|
|
650
756
|
const zcfConfig = readZcfConfig();
|
|
651
|
-
const aiOutputLang = await resolveAiOutputLanguage(
|
|
757
|
+
const aiOutputLang = await resolveAiOutputLanguage(
|
|
758
|
+
scriptLang,
|
|
759
|
+
void 0,
|
|
760
|
+
zcfConfig
|
|
761
|
+
);
|
|
652
762
|
applyAiLanguageDirective(aiOutputLang);
|
|
653
763
|
updateZcfConfig({ aiOutputLang });
|
|
654
|
-
console.log(
|
|
764
|
+
console.log(
|
|
765
|
+
ansis.green(
|
|
766
|
+
`\u2714 ${i18n.configuration.aiLanguageConfigured || "AI output language configured"}`
|
|
767
|
+
)
|
|
768
|
+
);
|
|
655
769
|
} else {
|
|
656
770
|
await configureAiPersonality(scriptLang);
|
|
657
771
|
}
|
|
@@ -664,15 +778,21 @@ async function configureEnvPermissionFeature(scriptLang) {
|
|
|
664
778
|
message: i18n.configuration?.selectEnvPermissionOption || "Select option",
|
|
665
779
|
choices: addNumbersToChoices([
|
|
666
780
|
{
|
|
667
|
-
name: `${i18n.configuration?.importRecommendedEnv || "Import environment"} ${ansis.gray(
|
|
781
|
+
name: `${i18n.configuration?.importRecommendedEnv || "Import environment"} ${ansis.gray(
|
|
782
|
+
"- " + (i18n.configuration?.importRecommendedEnvDesc || "Import env settings")
|
|
783
|
+
)}`,
|
|
668
784
|
value: "env"
|
|
669
785
|
},
|
|
670
786
|
{
|
|
671
|
-
name: `${i18n.configuration?.importRecommendedPermissions || "Import permissions"} ${ansis.gray(
|
|
787
|
+
name: `${i18n.configuration?.importRecommendedPermissions || "Import permissions"} ${ansis.gray(
|
|
788
|
+
"- " + (i18n.configuration?.importRecommendedPermissionsDesc || "Import permission settings")
|
|
789
|
+
)}`,
|
|
672
790
|
value: "permissions"
|
|
673
791
|
},
|
|
674
792
|
{
|
|
675
|
-
name: `${i18n.configuration?.openSettingsJson || "Open settings"} ${ansis.gray(
|
|
793
|
+
name: `${i18n.configuration?.openSettingsJson || "Open settings"} ${ansis.gray(
|
|
794
|
+
"- " + (i18n.configuration?.openSettingsJsonDesc || "View settings file")
|
|
795
|
+
)}`,
|
|
676
796
|
value: "open"
|
|
677
797
|
}
|
|
678
798
|
])
|
|
@@ -689,10 +809,18 @@ async function configureEnvPermissionFeature(scriptLang) {
|
|
|
689
809
|
break;
|
|
690
810
|
case "permissions":
|
|
691
811
|
await importRecommendedPermissions();
|
|
692
|
-
console.log(
|
|
812
|
+
console.log(
|
|
813
|
+
ansis.green(
|
|
814
|
+
`\u2705 ${i18n.configuration?.permissionsImportSuccess || "Permissions imported"}`
|
|
815
|
+
)
|
|
816
|
+
);
|
|
693
817
|
break;
|
|
694
818
|
case "open":
|
|
695
|
-
console.log(
|
|
819
|
+
console.log(
|
|
820
|
+
ansis.cyan(
|
|
821
|
+
i18n.configuration?.openingSettingsJson || "Opening settings.json..."
|
|
822
|
+
)
|
|
823
|
+
);
|
|
696
824
|
await openSettingsJson();
|
|
697
825
|
break;
|
|
698
826
|
}
|
|
@@ -701,6 +829,69 @@ async function configureEnvPermissionFeature(scriptLang) {
|
|
|
701
829
|
}
|
|
702
830
|
}
|
|
703
831
|
|
|
832
|
+
async function tryStartClaude(command, args, options) {
|
|
833
|
+
return new Promise((resolve, reject) => {
|
|
834
|
+
const child = spawn(command, args, options);
|
|
835
|
+
child.on("close", (code) => {
|
|
836
|
+
if (code === 0) {
|
|
837
|
+
console.log(ansis.green("\u2705 \u4EE3\u7801\u7F16\u8F91\u5668\u5DF2\u9000\u51FA"));
|
|
838
|
+
resolve();
|
|
839
|
+
} else {
|
|
840
|
+
reject(new Error(`Claude \u8FDB\u7A0B\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${code}`));
|
|
841
|
+
}
|
|
842
|
+
});
|
|
843
|
+
child.on("error", (error) => {
|
|
844
|
+
reject(error);
|
|
845
|
+
});
|
|
846
|
+
});
|
|
847
|
+
}
|
|
848
|
+
async function startClaudeCodeEditor(_lang) {
|
|
849
|
+
try {
|
|
850
|
+
console.log(ansis.cyan("\u{1F680} \u6B63\u5728\u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668..."));
|
|
851
|
+
const isWindows = process.platform === "win32";
|
|
852
|
+
const spawnOptions = {
|
|
853
|
+
stdio: "inherit",
|
|
854
|
+
// 继承父进程的 stdio,这样可以在当前终端中交互
|
|
855
|
+
cwd: process.cwd(),
|
|
856
|
+
// 使用当前工作目录
|
|
857
|
+
shell: isWindows
|
|
858
|
+
// Windows 上使用 shell 来解析命令
|
|
859
|
+
};
|
|
860
|
+
try {
|
|
861
|
+
const command = isWindows ? "claude.cmd" : "claude";
|
|
862
|
+
await tryStartClaude(command, ["--dangerously-skip-permissions"], spawnOptions);
|
|
863
|
+
return;
|
|
864
|
+
} catch (firstError) {
|
|
865
|
+
if (firstError.code === "ENOENT") {
|
|
866
|
+
console.log(ansis.yellow("\u26A0\uFE0F \u76F4\u63A5\u8C03\u7528 claude \u5931\u8D25\uFF0C\u5C1D\u8BD5\u4F7F\u7528 npx..."));
|
|
867
|
+
try {
|
|
868
|
+
await tryStartClaude("npx", ["@anthropic-ai/claude-code", "--dangerously-skip-permissions"], spawnOptions);
|
|
869
|
+
return;
|
|
870
|
+
} catch (secondError) {
|
|
871
|
+
throw firstError;
|
|
872
|
+
}
|
|
873
|
+
} else {
|
|
874
|
+
throw firstError;
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
} catch (error) {
|
|
878
|
+
console.error(ansis.red("\u274C \u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668\u5931\u8D25:"));
|
|
879
|
+
if (error.code === "ENOENT" || error.message?.includes("command not found")) {
|
|
880
|
+
console.error(ansis.yellow("\u{1F4A1} \u8BF7\u786E\u4FDD\u5DF2\u5B89\u88C5 Claude Code:"));
|
|
881
|
+
console.error(ansis.gray(" npm install -g @anthropic-ai/claude-code"));
|
|
882
|
+
if (process.platform === "win32") {
|
|
883
|
+
console.error(ansis.yellow("\u{1F4A1} Windows \u7528\u6237\u989D\u5916\u63D0\u793A:"));
|
|
884
|
+
console.error(ansis.gray(" 1. \u91CD\u542F\u547D\u4EE4\u884C\u7A97\u53E3\u4EE5\u5237\u65B0 PATH \u73AF\u5883\u53D8\u91CF"));
|
|
885
|
+
console.error(ansis.gray(" 2. \u786E\u8BA4 npm \u5168\u5C40\u5B89\u88C5\u8DEF\u5F84\u5728 PATH \u4E2D"));
|
|
886
|
+
console.error(ansis.gray(" 3. \u5C1D\u8BD5\u4F7F\u7528 npx @anthropic-ai/claude-code --dangerously-skip-permissions"));
|
|
887
|
+
}
|
|
888
|
+
} else {
|
|
889
|
+
console.error(ansis.gray(` \u9519\u8BEF\u4FE1\u606F: ${error.message || error}`));
|
|
890
|
+
}
|
|
891
|
+
throw error;
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
704
895
|
async function update(options = {}) {
|
|
705
896
|
try {
|
|
706
897
|
if (!options.skipBanner) {
|
|
@@ -758,11 +949,17 @@ async function showMainMenu() {
|
|
|
758
949
|
processor: () => configureAiMemoryFeature(scriptLang),
|
|
759
950
|
section: "\u57FA\u7840\u914D\u7F6E"
|
|
760
951
|
},
|
|
761
|
-
"
|
|
952
|
+
"5": {
|
|
762
953
|
key: "5",
|
|
763
954
|
labelKey: "configureEnvPermission",
|
|
764
955
|
processor: () => configureEnvPermissionFeature(scriptLang),
|
|
765
956
|
section: "\u57FA\u7840\u914D\u7F6E"
|
|
957
|
+
},
|
|
958
|
+
"6": {
|
|
959
|
+
key: "6",
|
|
960
|
+
labelKey: "startCodeEditor",
|
|
961
|
+
processor: () => startClaudeCodeEditor(scriptLang),
|
|
962
|
+
section: "\u57FA\u7840\u914D\u7F6E"
|
|
766
963
|
}
|
|
767
964
|
};
|
|
768
965
|
let exitMenu = false;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AICO_CONFIG_FILE, k 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_AICO_CONFIG_FILE, M as MCP_SERVICES, S as SETTINGS_FILE, h as SUPPORTED_LANGS, H as addCompletedOnboarding, x as applyAiLanguageDirective, q as backupExistingConfig, D as backupMcpConfig, F as buildMcpServerConfig, d as cleanupPermissions, c as commandExists, s as configureApi, r as copyConfigFiles, p as ensureClaudeDir, G as fixWindowsMcpConfig, w as getExistingApiConfig, y as getMcpConfigPath, g as getPlatform, a as importRecommendedEnv, b as importRecommendedPermissions, i as init, n as installClaudeCode, l as isClaudeCodeInstalled, m as mergeAndCleanPermissions, t as mergeConfigs, E as mergeMcpServers, v as mergeSettingsFile, o as openSettingsJson, z as readMcpConfig, u as updateDefaultModel, B as writeMcpConfig } from './shared/aico-cli.
|
|
1
|
+
export { A as AICO_CONFIG_FILE, k 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_AICO_CONFIG_FILE, M as MCP_SERVICES, S as SETTINGS_FILE, h as SUPPORTED_LANGS, H as addCompletedOnboarding, x as applyAiLanguageDirective, q as backupExistingConfig, D as backupMcpConfig, F as buildMcpServerConfig, d as cleanupPermissions, c as commandExists, s as configureApi, r as copyConfigFiles, p as ensureClaudeDir, G as fixWindowsMcpConfig, w as getExistingApiConfig, y as getMcpConfigPath, g as getPlatform, a as importRecommendedEnv, b as importRecommendedPermissions, i as init, n as installClaudeCode, l as isClaudeCodeInstalled, m as mergeAndCleanPermissions, t as mergeConfigs, E as mergeMcpServers, v as mergeSettingsFile, o as openSettingsJson, z as readMcpConfig, u as updateDefaultModel, B as writeMcpConfig } from './shared/aico-cli.BxrCfzlp.mjs';
|
|
2
2
|
import 'inquirer';
|
|
3
3
|
import 'ansis';
|
|
4
4
|
import 'node:fs';
|
|
@@ -80,7 +80,7 @@ const inquirer = {
|
|
|
80
80
|
createPromptModule: inquirer$1.createPromptModule
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
const version = "0.0.
|
|
83
|
+
const version = "0.0.4";
|
|
84
84
|
|
|
85
85
|
const common$1 = {
|
|
86
86
|
// Basic
|
|
@@ -241,13 +241,18 @@ const mcp$1 = {
|
|
|
241
241
|
mcpServiceInstalled: "\u5DF2\u9009\u62E9\u7684 MCP \u670D\u52A1",
|
|
242
242
|
enterExaApiKey: "\u8BF7\u8F93\u5165 Exa API Key\uFF08\u53EF\u4ECE https://dashboard.exa.ai/api-keys \u83B7\u53D6\uFF09",
|
|
243
243
|
skipMcp: "\u8DF3\u8FC7 MCP \u914D\u7F6E",
|
|
244
|
-
mcpConfigSuccess: "MCP \u670D\u52A1\
|
|
244
|
+
mcpConfigSuccess: "MCP \u670D\u52A1\u914D\u7F6E\u5B8C\u6210",
|
|
245
245
|
mcpBackupSuccess: "\u5DF2\u5907\u4EFD\u539F\u6709 MCP \u914D\u7F6E",
|
|
246
246
|
fixWindowsMcp: "\u4FEE\u590D Windows MCP \u914D\u7F6E",
|
|
247
247
|
fixWindowsMcpDesc: "\u4FEE\u590D Windows \u5E73\u53F0 MCP \u547D\u4EE4\u914D\u7F6E\u95EE\u9898",
|
|
248
248
|
windowsMcpFixed: "Windows MCP \u914D\u7F6E\u5DF2\u4FEE\u590D",
|
|
249
249
|
configureMcpServices: "\u914D\u7F6E MCP \u670D\u52A1",
|
|
250
|
-
selectMcpOption: "\u9009\u62E9 MCP \u914D\u7F6E\u9009\u9879"
|
|
250
|
+
selectMcpOption: "\u9009\u62E9 MCP \u914D\u7F6E\u9009\u9879",
|
|
251
|
+
installationSummary: "MCP \u670D\u52A1\u5B89\u88C5\u7ED3\u679C",
|
|
252
|
+
serviceNotFound: "\u670D\u52A1\u672A\u627E\u5230",
|
|
253
|
+
apiKeyRequired: "API Key \u5FC5\u586B",
|
|
254
|
+
noServicesInstalled: "\u6CA1\u6709\u670D\u52A1\u88AB\u6210\u529F\u5B89\u88C5",
|
|
255
|
+
noServicesSelected: "\u6CA1\u6709\u9009\u62E9\u4EFB\u4F55\u670D\u52A1"
|
|
251
256
|
};
|
|
252
257
|
|
|
253
258
|
const menu$1 = {
|
|
@@ -264,6 +269,7 @@ const menu$1 = {
|
|
|
264
269
|
configureModel: "\u914D\u7F6E\u9ED8\u8BA4\u6A21\u578B",
|
|
265
270
|
configureAiMemory: "\u914D\u7F6E Claude \u5168\u5C40\u8BB0\u5FC6",
|
|
266
271
|
configureEnvPermission: "\u5BFC\u5165\u63A8\u8350\u73AF\u5883\u53D8\u91CF\u548C\u6743\u9650\u914D\u7F6E",
|
|
272
|
+
startCodeEditor: "\u542F\u52A8\u4EE3\u7801\u7F16\u8F91",
|
|
267
273
|
configureCcr: "\u914D\u7F6E\u6A21\u578B\u4EE3\u7406 (CCR)",
|
|
268
274
|
ccrManagement: "CCR",
|
|
269
275
|
ccusage: "ccusage",
|
|
@@ -281,6 +287,7 @@ const menu$1 = {
|
|
|
281
287
|
configureModel: "\u8BBE\u7F6E\u9ED8\u8BA4\u6A21\u578B\uFF08opus/sonnet\uFF09",
|
|
282
288
|
configureAiMemory: "\u914D\u7F6E AI \u8F93\u51FA\u8BED\u8A00\u548C\u89D2\u8272\u98CE\u683C",
|
|
283
289
|
configureEnvPermission: "\u5BFC\u5165\u9690\u79C1\u4FDD\u62A4\u73AF\u5883\u53D8\u91CF\u548C\u7CFB\u7EDF\u6743\u9650\u914D\u7F6E",
|
|
290
|
+
startCodeEditor: "\u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668\u8FDB\u884C\u4EE3\u7801\u5F00\u53D1",
|
|
284
291
|
configureCcr: "\u914D\u7F6E Claude Code Router \u4EE5\u4F7F\u7528\u591A\u4E2A AI \u6A21\u578B",
|
|
285
292
|
ccrManagement: "\u914D\u7F6E Claude Code Router \u4EE5\u4F7F\u7528\u591A\u4E2A AI \u6A21\u578B",
|
|
286
293
|
ccusage: "Claude Code \u7528\u91CF\u5206\u6790",
|
|
@@ -678,13 +685,18 @@ const mcp = {
|
|
|
678
685
|
mcpServiceInstalled: "Selected MCP services",
|
|
679
686
|
enterExaApiKey: "Enter Exa API Key (get from https://dashboard.exa.ai/api-keys)",
|
|
680
687
|
skipMcp: "Skip MCP configuration",
|
|
681
|
-
mcpConfigSuccess: "MCP services
|
|
688
|
+
mcpConfigSuccess: "MCP services configuration completed",
|
|
682
689
|
mcpBackupSuccess: "Original MCP config backed up",
|
|
683
690
|
fixWindowsMcp: "Fix Windows MCP Configuration",
|
|
684
691
|
fixWindowsMcpDesc: "Fix Windows platform MCP command configuration issues",
|
|
685
692
|
windowsMcpFixed: "Windows MCP configuration fixed",
|
|
686
693
|
configureMcpServices: "Configure MCP Services",
|
|
687
|
-
selectMcpOption: "Select MCP configuration option"
|
|
694
|
+
selectMcpOption: "Select MCP configuration option",
|
|
695
|
+
installationSummary: "MCP Services Installation Results",
|
|
696
|
+
serviceNotFound: "Service not found",
|
|
697
|
+
apiKeyRequired: "API Key required",
|
|
698
|
+
noServicesInstalled: "No services were successfully installed",
|
|
699
|
+
noServicesSelected: "No services selected"
|
|
688
700
|
};
|
|
689
701
|
|
|
690
702
|
const menu = {
|
|
@@ -701,6 +713,7 @@ const menu = {
|
|
|
701
713
|
configureModel: "Configure default model",
|
|
702
714
|
configureAiMemory: "Configure Claude global memory",
|
|
703
715
|
configureEnvPermission: "Import recommended environment variables and permissions",
|
|
716
|
+
startCodeEditor: "Start Code Editor",
|
|
704
717
|
configureCcr: "Configure Model Proxy (CCR)",
|
|
705
718
|
ccrManagement: "CCR",
|
|
706
719
|
ccusage: "ccusage",
|
|
@@ -718,6 +731,7 @@ const menu = {
|
|
|
718
731
|
configureModel: "Set default model (opus/sonnet)",
|
|
719
732
|
configureAiMemory: "Configure AI output language and personality",
|
|
720
733
|
configureEnvPermission: "Import privacy protection environment variables and system permissions",
|
|
734
|
+
startCodeEditor: "Start Claude code editor (skip permission checks)",
|
|
721
735
|
configureCcr: "Configure Claude Code Router to use multiple AI models",
|
|
722
736
|
ccrManagement: "Configure Claude Code Router to use multiple AI models",
|
|
723
737
|
ccusage: "Claude Code usage analysis",
|
|
@@ -2366,4 +2380,4 @@ async function openSettingsJson() {
|
|
|
2366
2380
|
}
|
|
2367
2381
|
}
|
|
2368
2382
|
|
|
2369
|
-
export {
|
|
2383
|
+
export { handleGeneralError as $, AICO_CONFIG_FILE 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, readZcfConfig as J, inquirer as K, LEGACY_AICO_CONFIG_FILE as L, MCP_SERVICES as M, addNumbersToChoices as N, updateZcfConfig as O, getTranslation as P, version as Q, configureAiPersonality as R, SETTINGS_FILE as S, readJsonConfig as T, writeJsonConfig as U, isWindows as V, selectMcpServices as W, EscapeKeyPressed as X, displayBanner as Y, selectAndInstallWorkflows as Z, handleExitPromptError as _, importRecommendedEnv as a, displayBannerWithInfo as a0, readZcfConfigAsync as a1, executeWithEscapeSupport as a2, importRecommendedPermissions as b, commandExists as c, cleanupPermissions 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, AI_OUTPUT_LANGUAGES as k, isClaudeCodeInstalled as l, mergeAndCleanPermissions as m, installClaudeCode as n, openSettingsJson as o, ensureClaudeDir as p, backupExistingConfig as q, copyConfigFiles as r, configureApi as s, mergeConfigs as t, updateDefaultModel as u, mergeSettingsFile as v, getExistingApiConfig as w, applyAiLanguageDirective as x, getMcpConfigPath as y, readMcpConfig as z };
|