aico-cli 0.0.3 → 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,7 +1,7 @@
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, X as displayBanner, I as I18N, Y as selectAndInstallWorkflows, Z as handleExitPromptError, _ as handleGeneralError, $ as displayBannerWithInfo, a0 as readZcfConfigAsync, i as init, a1 as executeWithEscapeSupport, a2 as EscapeKeyPressed } from './shared/aico-cli.BlnVF1S3.mjs';
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
7
  import { exec, spawn } from 'node:child_process';
@@ -591,39 +591,145 @@ async function configureMcpFeature(scriptLang) {
591
591
  }
592
592
  }
593
593
  const selectedServices = await selectMcpServices(scriptLang);
594
- if (!selectedServices) {
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(ansis.gray(`\u2714 ${i18n.mcp.mcpBackupSuccess}: ${mcpBackupPath}`));
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) continue;
606
- let config = service.config;
607
- if (service.requiresApiKey) {
608
- const { apiKey } = await inquirer.prompt({
609
- type: "input",
610
- name: "apiKey",
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
- if (apiKey) {
615
- config = buildMcpServerConfig(service.config, apiKey, service.apiKeyPlaceholder, service.apiKeyEnvVar);
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
- continue;
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
- const existingConfig = readMcpConfig();
623
- let mergedConfig = mergeMcpServers(existingConfig, newServers);
624
- mergedConfig = fixWindowsMcpConfig(mergedConfig);
625
- writeMcpConfig(mergedConfig);
626
- console.log(ansis.green(`\u2714 ${i18n.mcp.mcpConfigSuccess}`));
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(scriptLang, void 0, zcfConfig);
757
+ const aiOutputLang = await resolveAiOutputLanguage(
758
+ scriptLang,
759
+ void 0,
760
+ zcfConfig
761
+ );
652
762
  applyAiLanguageDirective(aiOutputLang);
653
763
  updateZcfConfig({ aiOutputLang });
654
- console.log(ansis.green(`\u2714 ${i18n.configuration.aiLanguageConfigured || "AI output language configured"}`));
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("- " + (i18n.configuration?.importRecommendedEnvDesc || "Import env settings"))}`,
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("- " + (i18n.configuration?.importRecommendedPermissionsDesc || "Import permission settings"))}`,
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("- " + (i18n.configuration?.openSettingsJsonDesc || "View settings file"))}`,
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(ansis.green(`\u2705 ${i18n.configuration?.permissionsImportSuccess || "Permissions imported"}`));
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(ansis.cyan(i18n.configuration?.openingSettingsJson || "Opening settings.json..."));
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,33 +829,62 @@ 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
+ }
704
848
  async function startClaudeCodeEditor(_lang) {
705
849
  try {
706
850
  console.log(ansis.cyan("\u{1F680} \u6B63\u5728\u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668..."));
707
- const child = spawn("claude", ["--dangerously-skip-permissions"], {
851
+ const isWindows = process.platform === "win32";
852
+ const spawnOptions = {
708
853
  stdio: "inherit",
709
854
  // 继承父进程的 stdio,这样可以在当前终端中交互
710
- cwd: process.cwd()
855
+ cwd: process.cwd(),
711
856
  // 使用当前工作目录
712
- });
713
- await new Promise((resolve, reject) => {
714
- child.on("close", (code) => {
715
- if (code === 0) {
716
- console.log(ansis.green("\u2705 \u4EE3\u7801\u7F16\u8F91\u5668\u5DF2\u9000\u51FA"));
717
- resolve();
718
- } else {
719
- reject(new Error(`Claude \u8FDB\u7A0B\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${code}`));
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;
720
872
  }
721
- });
722
- child.on("error", (error) => {
723
- reject(error);
724
- });
725
- });
873
+ } else {
874
+ throw firstError;
875
+ }
876
+ }
726
877
  } catch (error) {
727
878
  console.error(ansis.red("\u274C \u542F\u52A8\u4EE3\u7801\u7F16\u8F91\u5668\u5931\u8D25:"));
728
879
  if (error.code === "ENOENT" || error.message?.includes("command not found")) {
729
880
  console.error(ansis.yellow("\u{1F4A1} \u8BF7\u786E\u4FDD\u5DF2\u5B89\u88C5 Claude Code:"));
730
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
+ }
731
888
  } else {
732
889
  console.error(ansis.gray(` \u9519\u8BEF\u4FE1\u606F: ${error.message || error}`));
733
890
  }
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.BlnVF1S3.mjs';
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.3";
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\u5DF2\u914D\u7F6E",
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 = {
@@ -680,13 +685,18 @@ const mcp = {
680
685
  mcpServiceInstalled: "Selected MCP services",
681
686
  enterExaApiKey: "Enter Exa API Key (get from https://dashboard.exa.ai/api-keys)",
682
687
  skipMcp: "Skip MCP configuration",
683
- mcpConfigSuccess: "MCP services configured",
688
+ mcpConfigSuccess: "MCP services configuration completed",
684
689
  mcpBackupSuccess: "Original MCP config backed up",
685
690
  fixWindowsMcp: "Fix Windows MCP Configuration",
686
691
  fixWindowsMcpDesc: "Fix Windows platform MCP command configuration issues",
687
692
  windowsMcpFixed: "Windows MCP configuration fixed",
688
693
  configureMcpServices: "Configure MCP Services",
689
- 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"
690
700
  };
691
701
 
692
702
  const menu = {
@@ -2370,4 +2380,4 @@ async function openSettingsJson() {
2370
2380
  }
2371
2381
  }
2372
2382
 
2373
- export { displayBannerWithInfo 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, displayBanner as X, selectAndInstallWorkflows as Y, handleExitPromptError as Z, handleGeneralError as _, importRecommendedEnv as a, readZcfConfigAsync as a0, executeWithEscapeSupport as a1, EscapeKeyPressed 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 };
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aico-cli",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "packageManager": "pnpm@9.15.9",
5
5
  "description": "AI CLI",
6
6
  "repository": {