mcpick 0.0.23 → 0.0.24

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.
Files changed (29) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{add-LJQa2my2.js → add-Qzd8i-5k.js} +24 -4
  3. package/dist/{add-json-TEdYweZ5.js → add-json-DGmsjB0O.js} +24 -4
  4. package/dist/{backup-kyS5IVIr.js → backup-C7fvikFw.js} +3 -3
  5. package/dist/{cache-DTfzTsEE.js → cache-D3jjh5dD.js} +2 -2
  6. package/dist/{cli-By-0nYNQ.js → cli-CZOlaqoZ.js} +22 -22
  7. package/dist/{clients-qMozizys.js → clients-Bh93TGP4.js} +2 -2
  8. package/dist/{clone-BVhYjRGO.js → clone-MI8jJhTz.js} +3 -3
  9. package/dist/{config-DzMmTJYL.js → config-DE58Fik_.js} +2 -2
  10. package/dist/{dev-Cst8WkQ-.js → dev-51esdZG9.js} +3 -3
  11. package/dist/{disable-BaOs9lrm.js → disable-csYAn2Vk.js} +27 -4
  12. package/dist/dry-run-XQ32fxPT.js +20 -0
  13. package/dist/{enable--3mjSmTq.js → enable-B5GbmhL-.js} +27 -4
  14. package/dist/{get-CjhNWyRj.js → get-DacRZmwv.js} +2 -2
  15. package/dist/{hooks-DFmxgD0t.js → hooks-C_x49qap.js} +2 -2
  16. package/dist/index.js +197 -61
  17. package/dist/{list-D5CkCXpP.js → list-BeBtsiae.js} +3 -3
  18. package/dist/{marketplace-C3EGyIG0.js → marketplace-BDC2YtvT.js} +3 -3
  19. package/dist/{plugin-cache-BSgB42wa.js → plugin-cache-DmLbh89d.js} +2 -2
  20. package/dist/{plugins-Dn2mPFKm.js → plugins-Bkw-SKkZ.js} +3 -3
  21. package/dist/profile-DwJTVXiz.js +161 -0
  22. package/dist/{reload-257iU7Z7.js → reload-Bl1mYK1I.js} +1 -1
  23. package/dist/{remove-26XFzkPd.js → remove-BSHgva79.js} +24 -4
  24. package/dist/{reset-project-choices-D2F04LfC.js → reset-project-choices-BNLus9J9.js} +2 -2
  25. package/dist/{restore-BYYsoNqF.js → restore-YisgARhc.js} +3 -3
  26. package/dist/{rollback-CPdaME91.js → rollback-GR1RkpXW.js} +2 -2
  27. package/dist/{skills-DfWk9mpk.js → skills-rDTDqqZA.js} +2 -2
  28. package/package.json +1 -1
  29. package/dist/profile-Dq3ORPil.js +0 -119
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { _ as get_profiles_dir, a as get_claude_settings_path, c as get_disabled_hooks_path, f as get_marketplaces_dir, g as get_profile_path, i as get_claude_config_path, m as get_plugin_backup_filename, n as get_backup_filename, p as get_mcpick_dir, r as get_backups_dir, t as ensure_directory_exists, y as get_server_registry_path } from "./paths-BPISiJi4.js";
3
3
  import { r as validate_server_registry, t as validate_claude_config } from "./validation-xMlbgGCF.js";
4
- import { a as get_enabled_servers, c as write_claude_config, n as create_config_from_servers, o as get_enabled_servers_for_scope, s as read_claude_config } from "./config-DzMmTJYL.js";
5
- import { a as redact_url, i as redact_text } from "./redact-wBMtzbno.js";
6
- import { d as refresh_all_marketplaces, l as read_known_marketplaces, n as clear_plugin_caches, r as get_cached_plugins_info, t as clean_orphaned_versions, u as read_marketplace_manifest } from "./plugin-cache-BSgB42wa.js";
4
+ import { a as get_enabled_servers, c as write_claude_config, n as create_config_from_servers, o as get_enabled_servers_for_scope, s as read_claude_config } from "./config-DE58Fik_.js";
5
+ import { a as redact_url, i as redact_text, o as redact_value } from "./redact-wBMtzbno.js";
6
+ import { d as refresh_all_marketplaces, l as read_known_marketplaces, n as clear_plugin_caches, r as get_cached_plugins_info, t as clean_orphaned_versions, u as read_marketplace_manifest } from "./plugin-cache-DmLbh89d.js";
7
7
  import { cancel, confirm, intro, isCancel, log, multiselect, note, outro, select, text } from "@clack/prompts";
8
8
  import { access, mkdir, readFile, readdir, rename, rm, unlink, writeFile } from "node:fs/promises";
9
9
  import { basename, dirname, join, resolve } from "node:path";
@@ -215,7 +215,7 @@ async function get_all_hooks() {
215
215
  * Checks both cache and marketplace source paths since Claude Code reads from both.
216
216
  */
217
217
  async function get_all_plugin_hooks() {
218
- const { read_installed_plugins } = await import("./plugin-cache-BSgB42wa.js").then((n) => n.s);
218
+ const { read_installed_plugins } = await import("./plugin-cache-DmLbh89d.js").then((n) => n.s);
219
219
  const { get_marketplaces_dir } = await import("./paths-BPISiJi4.js").then((n) => n.b);
220
220
  const installed = await read_installed_plugins();
221
221
  const entries = [];
@@ -344,6 +344,43 @@ async function cleanup_old_backups(prefix) {
344
344
  } catch {}
345
345
  }
346
346
  //#endregion
347
+ //#region src/utils/config-preview.ts
348
+ function build_json_change_preview(input) {
349
+ const before = redact_value(input.before);
350
+ const after = redact_value(input.after);
351
+ return {
352
+ dryRun: true,
353
+ operation: input.operation,
354
+ client: input.client,
355
+ scope: input.scope,
356
+ location: input.location,
357
+ before,
358
+ after,
359
+ diff: create_json_diff(before, after)
360
+ };
361
+ }
362
+ function build_command_preview(input) {
363
+ return {
364
+ dryRun: true,
365
+ operation: input.operation,
366
+ client: input.client,
367
+ scope: input.scope,
368
+ location: input.location,
369
+ command: input.command.map((part) => redact_text(part))
370
+ };
371
+ }
372
+ function create_json_diff(before, after) {
373
+ const before_lines = JSON.stringify(before, null, 2).split("\n");
374
+ const after_lines = JSON.stringify(after, null, 2).split("\n");
375
+ if (before_lines.join("\n") === after_lines.join("\n")) return "";
376
+ return [
377
+ "--- before",
378
+ "+++ after",
379
+ ...before_lines.map((line) => `- ${line}`),
380
+ ...after_lines.map((line) => `+ ${line}`)
381
+ ].join("\n");
382
+ }
383
+ //#endregion
347
384
  //#region src/core/client-config.ts
348
385
  const client_options_to_skip = new Set([
349
386
  "name",
@@ -538,6 +575,19 @@ function portable_to_json(server, mode) {
538
575
  return result;
539
576
  }
540
577
  function create_json_adapter(options) {
578
+ async function read_data(location) {
579
+ return await read_json_file(location.path) ?? {};
580
+ }
581
+ function preview(location, operation, before, after) {
582
+ return build_json_change_preview({
583
+ operation,
584
+ client: options.id,
585
+ scope: location.scope,
586
+ location: location.path,
587
+ before,
588
+ after
589
+ });
590
+ }
541
591
  return {
542
592
  id: options.id,
543
593
  label: options.label,
@@ -552,33 +602,66 @@ function create_json_adapter(options) {
552
602
  return read_server_map(await read_json_file(location.path), options.serverKey);
553
603
  },
554
604
  async writeEnabled(location, enabled_names) {
555
- const data = await read_json_file(location.path) ?? {};
605
+ const data = await read_data(location);
556
606
  const servers = get_server_record(data, options.serverKey);
557
607
  const enabled = new Set(enabled_names);
558
608
  for (const [name, config] of Object.entries(servers)) set_server_enabled(config, enabled.has(name), options.disabledMode ?? "disabled");
559
609
  data[options.serverKey] = servers;
560
610
  await write_json_file(location.path, data);
561
611
  },
612
+ async previewEnabled(location, enabled_names) {
613
+ const before = await read_data(location);
614
+ const after = structuredClone(before);
615
+ const servers = get_server_record(after, options.serverKey);
616
+ const enabled = new Set(enabled_names);
617
+ for (const [name, config] of Object.entries(servers)) set_server_enabled(config, enabled.has(name), options.disabledMode ?? "disabled");
618
+ after[options.serverKey] = servers;
619
+ return preview(location, "set-enabled", before, after);
620
+ },
562
621
  async write_server(location, server) {
563
- const data = await read_json_file(location.path) ?? {};
622
+ const data = await read_data(location);
564
623
  const servers = get_server_record(data, options.serverKey);
565
624
  servers[server.name] = portable_to_json(server, options.disabledMode ?? "disabled");
566
625
  data[options.serverKey] = servers;
567
626
  await write_json_file(location.path, data);
568
627
  },
628
+ async preview_write_server(location, server) {
629
+ const before = await read_data(location);
630
+ const after = structuredClone(before);
631
+ const servers = get_server_record(after, options.serverKey);
632
+ servers[server.name] = portable_to_json(server, options.disabledMode ?? "disabled");
633
+ after[options.serverKey] = servers;
634
+ return preview(location, "add-server", before, after);
635
+ },
569
636
  async write_server_config(location, name, config) {
570
- const data = await read_json_file(location.path) ?? {};
637
+ const data = await read_data(location);
571
638
  const servers = get_server_record(data, options.serverKey);
572
639
  servers[name] = config;
573
640
  data[options.serverKey] = servers;
574
641
  await write_json_file(location.path, data);
575
642
  },
643
+ async preview_write_server_config(location, name, config) {
644
+ const before = await read_data(location);
645
+ const after = structuredClone(before);
646
+ const servers = get_server_record(after, options.serverKey);
647
+ servers[name] = config;
648
+ after[options.serverKey] = servers;
649
+ return preview(location, "add-json", before, after);
650
+ },
576
651
  async remove_server(location, name) {
577
- const data = await read_json_file(location.path) ?? {};
652
+ const data = await read_data(location);
578
653
  const servers = get_server_record(data, options.serverKey);
579
654
  delete servers[name];
580
655
  data[options.serverKey] = servers;
581
656
  await write_json_file(location.path, data);
657
+ },
658
+ async preview_remove_server(location, name) {
659
+ const before = await read_data(location);
660
+ const after = structuredClone(before);
661
+ const servers = get_server_record(after, options.serverKey);
662
+ delete servers[name];
663
+ after[options.serverKey] = servers;
664
+ return preview(location, "remove-server", before, after);
582
665
  }
583
666
  };
584
667
  }
@@ -729,24 +812,50 @@ async function add_client_server(adapter, location, server) {
729
812
  if (!adapter.write_server) throw new Error(`${adapter.label} support cannot add servers yet.`);
730
813
  await adapter.write_server(location, server);
731
814
  }
815
+ async function preview_add_client_server(adapter, location, server) {
816
+ if (!adapter.preview_write_server) throw new Error(`${adapter.label} support cannot preview server additions yet.`);
817
+ return adapter.preview_write_server(location, server);
818
+ }
732
819
  async function add_client_server_config(adapter, location, name, config) {
733
820
  if (!adapter.write_server_config) throw new Error(`${adapter.label} support cannot add servers yet.`);
734
821
  await adapter.write_server_config(location, name, config);
735
822
  }
823
+ async function preview_add_client_server_config(adapter, location, name, config) {
824
+ if (!adapter.preview_write_server_config) throw new Error(`${adapter.label} support cannot preview server additions yet.`);
825
+ return adapter.preview_write_server_config(location, name, config);
826
+ }
736
827
  async function remove_client_server(adapter, location, server_name) {
737
828
  if (!adapter.remove_server) throw new Error(`${adapter.label} support cannot remove servers yet.`);
738
829
  await adapter.remove_server(location, server_name);
739
830
  }
740
- async function set_client_server_enabled(adapter, location, server_name, enabled) {
831
+ async function preview_remove_client_server(adapter, location, server_name) {
832
+ if (!adapter.preview_remove_server) throw new Error(`${adapter.label} support cannot preview server removals yet.`);
833
+ return adapter.preview_remove_server(location, server_name);
834
+ }
835
+ function assert_enabled_server_names(location, servers, enabled_names) {
836
+ const known_names = new Set(servers.map((server) => server.name));
837
+ const unknown_names = enabled_names.filter((name) => !known_names.has(name));
838
+ if (unknown_names.length > 0) throw new Error(`Server '${unknown_names[0]}' not found at ${location.path}.`);
839
+ }
840
+ async function set_client_enabled_servers(adapter, location, enabled_names) {
741
841
  if (!adapter.writeEnabled) throw new Error(`${adapter.label} support is read-only.`);
842
+ assert_enabled_server_names(location, await adapter.readLocation(location), enabled_names);
843
+ await adapter.writeEnabled(location, enabled_names);
844
+ return enabled_names.length;
845
+ }
846
+ async function preview_set_client_enabled_servers(adapter, location, enabled_names) {
847
+ if (!adapter.previewEnabled) throw new Error(`${adapter.label} support cannot preview toggles yet.`);
848
+ assert_enabled_server_names(location, await adapter.readLocation(location), enabled_names);
849
+ return adapter.previewEnabled(location, enabled_names);
850
+ }
851
+ async function set_client_server_enabled(adapter, location, server_name, enabled) {
742
852
  const servers = await adapter.readLocation(location);
743
853
  const server = servers.find((candidate) => candidate.name === server_name);
744
854
  if (!server) throw new Error(`Server '${server_name}' not found at ${location.path}.`);
745
855
  const enabled_names = new Set(servers.filter((candidate) => candidate.disabled !== true).map((candidate) => candidate.name));
746
856
  if (enabled) enabled_names.add(server.name);
747
857
  else enabled_names.delete(server.name);
748
- await adapter.writeEnabled(location, [...enabled_names]);
749
- return enabled_names.size;
858
+ return set_client_enabled_servers(adapter, location, [...enabled_names]);
750
859
  }
751
860
  async function list_client_locations() {
752
861
  return await Promise.all(client_adapters.flatMap((adapter) => adapter.locations().map(async (location) => ({
@@ -787,7 +896,7 @@ async function add_server_to_registry(server) {
787
896
  await write_server_registry(registry);
788
897
  }
789
898
  async function get_all_available_servers() {
790
- const { get_enabled_servers, read_claude_config } = await import("./config-DzMmTJYL.js").then((n) => n.t);
899
+ const { get_enabled_servers, read_claude_config } = await import("./config-DE58Fik_.js").then((n) => n.t);
791
900
  const registry = await read_server_registry();
792
901
  const config_servers = get_enabled_servers(await read_claude_config());
793
902
  const config_by_name = new Map(config_servers.map((s) => [s.name, s]));
@@ -1334,20 +1443,23 @@ async function mcp_get_via_cli(name) {
1334
1443
  /**
1335
1444
  * Add an MCP server from raw JSON via Claude CLI
1336
1445
  */
1446
+ function build_add_json_args(name, json, scope = "local") {
1447
+ return [
1448
+ "mcp",
1449
+ "add-json",
1450
+ name,
1451
+ json,
1452
+ "--scope",
1453
+ scope
1454
+ ];
1455
+ }
1337
1456
  async function mcp_add_json_via_cli(name, json, scope = "local") {
1338
1457
  if (!await check_claude_cli()) return {
1339
1458
  success: false,
1340
1459
  error: "Claude CLI not found. Please install Claude Code CLI."
1341
1460
  };
1342
1461
  try {
1343
- await run_claude([
1344
- "mcp",
1345
- "add-json",
1346
- name,
1347
- json,
1348
- "--scope",
1349
- scope
1350
- ]);
1462
+ await run_claude(build_add_json_args(name, json, scope));
1351
1463
  return { success: true };
1352
1464
  } catch (error) {
1353
1465
  return {
@@ -1443,7 +1555,16 @@ async function edit_client_config(adapter) {
1443
1555
  required: false
1444
1556
  });
1445
1557
  if (typeof selected_names === "symbol") return;
1446
- await adapter.writeEnabled(location, selected_names);
1558
+ const preview = await preview_set_client_enabled_servers(adapter, location, selected_names);
1559
+ if (preview.diff) {
1560
+ note(preview.diff, "Preview");
1561
+ const should_apply = await confirm({
1562
+ message: "Apply these changes?",
1563
+ initialValue: true
1564
+ });
1565
+ if (typeof should_apply === "symbol" || !should_apply) return;
1566
+ }
1567
+ await set_client_enabled_servers(adapter, location, selected_names);
1447
1568
  note(`Configuration updated!\nClient: ${adapter.label}\nConfig: ${location.path}\nEnabled servers: ${selected_names.length}`);
1448
1569
  }
1449
1570
  async function select_config_location(adapter) {
@@ -2536,6 +2657,21 @@ async function load_profile(name) {
2536
2657
  throw error;
2537
2658
  }
2538
2659
  }
2660
+ async function apply_profile_to_claude(name) {
2661
+ const profile = await load_profile(name);
2662
+ await write_claude_config(profile.config);
2663
+ const serverCount = Object.keys(profile.config.mcpServers || {}).length;
2664
+ let pluginCount = 0;
2665
+ if (profile.enabledPlugins) {
2666
+ await write_claude_settings({ enabledPlugins: profile.enabledPlugins });
2667
+ pluginCount = Object.keys(profile.enabledPlugins).length;
2668
+ }
2669
+ return {
2670
+ profile: name,
2671
+ serverCount,
2672
+ pluginCount
2673
+ };
2674
+ }
2539
2675
  async function list_profiles() {
2540
2676
  const profiles_dir = get_profiles_dir();
2541
2677
  try {
@@ -2577,6 +2713,14 @@ async function save_profile(name) {
2577
2713
  pluginCount: plugin_count
2578
2714
  };
2579
2715
  }
2716
+ async function save_current_claude_profile(name) {
2717
+ const counts = await save_profile(name);
2718
+ return {
2719
+ profile: name,
2720
+ serverCount: counts.serverCount,
2721
+ pluginCount: counts.pluginCount
2722
+ };
2723
+ }
2580
2724
  //#endregion
2581
2725
  //#region src/index.ts
2582
2726
  function parse_args() {
@@ -2591,17 +2735,13 @@ function parse_args() {
2591
2735
  } else if (args[i] === "--list-profiles" || args[i] === "-l") result.listProfiles = true;
2592
2736
  return result;
2593
2737
  }
2594
- async function apply_profile(name) {
2595
- intro(`MCPick - Loading profile: ${name}`);
2738
+ async function apply_claude_profile(name) {
2739
+ intro(`MCPick - Loading Claude Code profile: ${name}`);
2596
2740
  try {
2597
- const profile = await load_profile(name);
2598
- await write_claude_config(profile.config);
2599
- const parts = [`${Object.keys(profile.config.mcpServers || {}).length} servers`];
2600
- if (profile.enabledPlugins) {
2601
- await write_claude_settings({ enabledPlugins: profile.enabledPlugins });
2602
- parts.push(`${Object.keys(profile.enabledPlugins).length} plugins`);
2603
- }
2604
- log.success(`Profile '${name}' applied (${parts.join(", ")})`);
2741
+ const result = await apply_profile_to_claude(name);
2742
+ const parts = [`${result.serverCount} servers`];
2743
+ if (result.pluginCount > 0) parts.push(`${result.pluginCount} plugins`);
2744
+ log.success(`Profile '${result.profile}' applied (${parts.join(", ")})`);
2605
2745
  outro("Done!");
2606
2746
  } catch (error) {
2607
2747
  if (error instanceof Error) cancel(error.message);
@@ -2618,13 +2758,13 @@ async function show_profiles() {
2618
2758
  } else for (const p of profiles) log.info(`${p.name} (${p.serverCount} servers)`);
2619
2759
  outro("");
2620
2760
  }
2621
- async function create_profile(name) {
2622
- intro(`MCPick - Saving profile: ${name}`);
2761
+ async function create_claude_profile(name) {
2762
+ intro(`MCPick - Saving Claude Code profile: ${name}`);
2623
2763
  try {
2624
- const counts = await save_profile(name);
2625
- const parts = [`${counts.serverCount} servers`];
2626
- if (counts.pluginCount > 0) parts.push(`${counts.pluginCount} plugins`);
2627
- log.success(`Profile '${name}' saved (${parts.join(", ")})`);
2764
+ const result = await save_current_claude_profile(name);
2765
+ const parts = [`${result.serverCount} servers`];
2766
+ if (result.pluginCount > 0) parts.push(`${result.pluginCount} plugins`);
2767
+ log.success(`Profile '${result.profile}' saved (${parts.join(", ")})`);
2628
2768
  outro("Done!");
2629
2769
  } catch (error) {
2630
2770
  if (error instanceof Error) cancel(error.message);
@@ -2632,7 +2772,7 @@ async function create_profile(name) {
2632
2772
  process.exit(1);
2633
2773
  }
2634
2774
  }
2635
- async function handle_load_profile() {
2775
+ async function handle_load_claude_profile() {
2636
2776
  const profiles = await list_profiles();
2637
2777
  if (profiles.length === 0) {
2638
2778
  log.warn("No profiles found");
@@ -2652,16 +2792,12 @@ async function handle_load_profile() {
2652
2792
  })
2653
2793
  });
2654
2794
  if (isCancel(profile_name)) return;
2655
- const profile = await load_profile(profile_name);
2656
- await write_claude_config(profile.config);
2657
- const parts = [`${Object.keys(profile.config.mcpServers || {}).length} servers`];
2658
- if (profile.enabledPlugins) {
2659
- await write_claude_settings({ enabledPlugins: profile.enabledPlugins });
2660
- parts.push(`${Object.keys(profile.enabledPlugins).length} plugins`);
2661
- }
2662
- log.success(`Profile '${profile_name}' applied (${parts.join(", ")})`);
2795
+ const result = await apply_profile_to_claude(profile_name);
2796
+ const parts = [`${result.serverCount} servers`];
2797
+ if (result.pluginCount > 0) parts.push(`${result.pluginCount} plugins`);
2798
+ log.success(`Profile '${result.profile}' applied (${parts.join(", ")})`);
2663
2799
  }
2664
- async function handle_save_profile() {
2800
+ async function handle_save_claude_profile() {
2665
2801
  const name = await text({
2666
2802
  message: "Profile name:",
2667
2803
  placeholder: "e.g. database, web-dev, minimal",
@@ -2671,10 +2807,10 @@ async function handle_save_profile() {
2671
2807
  }
2672
2808
  });
2673
2809
  if (isCancel(name)) return;
2674
- const counts = await save_profile(name);
2675
- const parts = [`${counts.serverCount} servers`];
2676
- if (counts.pluginCount > 0) parts.push(`${counts.pluginCount} plugins`);
2677
- log.success(`Profile '${name}' saved (${parts.join(", ")})`);
2810
+ const result = await save_current_claude_profile(name);
2811
+ const parts = [`${result.serverCount} servers`];
2812
+ if (result.pluginCount > 0) parts.push(`${result.pluginCount} plugins`);
2813
+ log.success(`Profile '${result.profile}' saved (${parts.join(", ")})`);
2678
2814
  }
2679
2815
  async function handle_client_tools() {
2680
2816
  const client_id = await select({
@@ -2742,11 +2878,11 @@ async function main() {
2742
2878
  return;
2743
2879
  }
2744
2880
  if (args.saveProfile) {
2745
- await create_profile(args.saveProfile);
2881
+ await create_claude_profile(args.saveProfile);
2746
2882
  return;
2747
2883
  }
2748
2884
  if (args.profile) {
2749
- await apply_profile(args.profile);
2885
+ await apply_claude_profile(args.profile);
2750
2886
  return;
2751
2887
  }
2752
2888
  intro("MCPick - MCP Configuration Manager");
@@ -2772,13 +2908,13 @@ async function main() {
2772
2908
  },
2773
2909
  {
2774
2910
  value: "load-profile",
2775
- label: "Load profile",
2776
- hint: "Apply a saved profile"
2911
+ label: "Load Claude Code profile",
2912
+ hint: "Apply a saved Claude Code profile"
2777
2913
  },
2778
2914
  {
2779
2915
  value: "save-profile",
2780
- label: "Save profile",
2781
- hint: "Save current config as profile"
2916
+ label: "Save Claude Code profile",
2917
+ hint: "Save current Claude Code config as profile"
2782
2918
  },
2783
2919
  {
2784
2920
  value: "backup",
@@ -2818,10 +2954,10 @@ async function main() {
2818
2954
  await restore_config();
2819
2955
  break;
2820
2956
  case "load-profile":
2821
- await handle_load_profile();
2957
+ await handle_load_claude_profile();
2822
2958
  break;
2823
2959
  case "save-profile":
2824
- await handle_save_profile();
2960
+ await handle_save_claude_profile();
2825
2961
  break;
2826
2962
  case "exit":
2827
2963
  outro("Goodbye!");
@@ -2872,12 +3008,12 @@ const SUBCOMMANDS = new Set([
2872
3008
  const arg = process.argv[2];
2873
3009
  if (arg && SUBCOMMANDS.has(arg) || arg === "--help" || arg === "-h" || !process.stdout.isTTY) {
2874
3010
  if (!arg && !process.stdout.isTTY) process.argv.push("--help");
2875
- import("./cli-By-0nYNQ.js").then((m) => m.run());
3011
+ import("./cli-CZOlaqoZ.js").then((m) => m.run());
2876
3012
  } else main().catch((error) => {
2877
3013
  console.error("Fatal error:", error);
2878
3014
  process.exit(1);
2879
3015
  });
2880
3016
  //#endregion
2881
- export { add_client_server as A, get_all_plugins as B, validate_plugin_via_cli as C, list_plugin_backups as D, list_backups as E, resolve_client_location as F, list_config_backups as G, remove_hook as H, set_client_server_enabled as I, restore_config_backup as K, add_hook as L, get_client_adapter as M, list_client_locations as N, read_server_registry as O, remove_client_server as P, build_enabled_plugins as R, update_plugin_via_cli as S, get_all_available_servers as T, write_claude_settings as U, read_claude_settings as V, atomic_json_write as W, mcp_add_json_via_cli as _, split_cli_list as a, remove_mcp_via_cli as b, enable_plugin_hook as c, add_mcp_via_cli as d, install_plugin_via_cli as f, marketplace_update_via_cli as g, marketplace_remove_via_cli as h, run_skills_cli as i, add_client_server_config as j, write_server_registry as k, read_disabled_hooks as l, marketplace_list_via_cli as m, load_profile as n, check_restored_hooks as o, marketplace_add_via_cli as p, save_profile as r, disable_plugin_hook as s, list_profiles as t, redisable_restored_hooks as u, mcp_get_via_cli as v, add_server_to_registry as w, uninstall_plugin_via_cli as x, mcp_reset_project_choices_via_cli as y, get_all_hooks as z };
3017
+ export { write_claude_settings as $, list_backups as A, preview_remove_client_server as B, mcp_reset_project_choices_via_cli as C, validate_plugin_via_cli as D, update_plugin_via_cli as E, add_client_server_config as F, build_command_preview as G, remove_client_server as H, get_client_adapter as I, build_enabled_plugins as J, build_json_change_preview as K, list_client_locations as L, read_server_registry as M, write_server_registry as N, add_server_to_registry as O, add_client_server as P, remove_hook as Q, preview_add_client_server as R, mcp_get_via_cli as S, uninstall_plugin_via_cli as T, resolve_client_location as U, preview_set_client_enabled_servers as V, set_client_server_enabled as W, get_all_plugins as X, get_all_hooks as Y, read_claude_settings as Z, marketplace_add_via_cli as _, run_skills_cli as a, marketplace_update_via_cli as b, disable_plugin_hook as c, redisable_restored_hooks as d, atomic_json_write as et, add_mcp_via_cli as f, install_plugin_via_cli as g, build_remove_args as h, save_current_claude_profile as i, list_plugin_backups as j, get_all_available_servers as k, enable_plugin_hook as l, build_add_json_args as m, list_profiles as n, restore_config_backup as nt, split_cli_list as o, build_add_args as p, add_hook as q, load_profile as r, check_restored_hooks as s, apply_profile_to_claude as t, list_config_backups as tt, read_disabled_hooks as u, marketplace_list_via_cli as v, remove_mcp_via_cli as w, mcp_add_json_via_cli as x, marketplace_remove_via_cli as y, preview_add_client_server_config as z };
2882
3018
 
2883
3019
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- import { o as get_enabled_servers_for_scope } from "./config-DzMmTJYL.js";
1
+ import { o as get_enabled_servers_for_scope } from "./config-DE58Fik_.js";
2
2
  import { a as redact_url, n as redact_server, t as redact_portable_server } from "./redact-wBMtzbno.js";
3
- import { M as get_client_adapter, T as get_all_available_servers } from "./index.js";
3
+ import { I as get_client_adapter, k as get_all_available_servers } from "./index.js";
4
4
  import { n as output, t as error } from "./output-HtT5HCof.js";
5
5
  import { defineCommand } from "citty";
6
6
  //#region src/cli/commands/list.ts
@@ -97,4 +97,4 @@ async function list_client_servers(client, scope, json) {
97
97
  //#endregion
98
98
  export { list_default as default };
99
99
 
100
- //# sourceMappingURL=list-D5CkCXpP.js.map
100
+ //# sourceMappingURL=list-BeBtsiae.js.map
@@ -1,5 +1,5 @@
1
- import { u as read_marketplace_manifest } from "./plugin-cache-BSgB42wa.js";
2
- import { g as marketplace_update_via_cli, h as marketplace_remove_via_cli, m as marketplace_list_via_cli, o as check_restored_hooks, p as marketplace_add_via_cli, u as redisable_restored_hooks } from "./index.js";
1
+ import { u as read_marketplace_manifest } from "./plugin-cache-DmLbh89d.js";
2
+ import { _ as marketplace_add_via_cli, b as marketplace_update_via_cli, d as redisable_restored_hooks, s as check_restored_hooks, v as marketplace_list_via_cli, y as marketplace_remove_via_cli } from "./index.js";
3
3
  import { n as output, t as error } from "./output-HtT5HCof.js";
4
4
  import { defineCommand } from "citty";
5
5
  //#region src/cli/commands/marketplace.ts
@@ -164,4 +164,4 @@ var marketplace_default = defineCommand({
164
164
  //#endregion
165
165
  export { marketplace_default as default };
166
166
 
167
- //# sourceMappingURL=marketplace-C3EGyIG0.js.map
167
+ //# sourceMappingURL=marketplace-BDC2YtvT.js.map
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
2
2
  import { d as get_marketplace_manifest_path, h as get_plugin_cache_dir, l as get_installed_plugins_path, t as ensure_directory_exists, u as get_known_marketplaces_path } from "./paths-BPISiJi4.js";
3
- import { W as atomic_json_write } from "./index.js";
3
+ import { et as atomic_json_write } from "./index.js";
4
4
  import { lstat, readFile, readdir, readlink, rename, rm, symlink } from "node:fs/promises";
5
5
  import { join, resolve } from "node:path";
6
6
  import { execFile } from "node:child_process";
@@ -421,4 +421,4 @@ async function list_linked_plugins() {
421
421
  //#endregion
422
422
  export { list_linked_plugins as a, read_installed_plugins as c, refresh_all_marketplaces as d, scan_all_cache_keys as f, link_local_plugin as i, read_known_marketplaces as l, clear_plugin_caches as n, parse_plugin_key as o, unlink_local_plugin as p, get_cached_plugins_info as r, plugin_cache_exports as s, clean_orphaned_versions as t, read_marketplace_manifest as u };
423
423
 
424
- //# sourceMappingURL=plugin-cache-BSgB42wa.js.map
424
+ //# sourceMappingURL=plugin-cache-DmLbh89d.js.map
@@ -1,5 +1,5 @@
1
- import { l as read_known_marketplaces, o as parse_plugin_key } from "./plugin-cache-BSgB42wa.js";
2
- import { B as get_all_plugins, C as validate_plugin_via_cli, R as build_enabled_plugins, S as update_plugin_via_cli, U as write_claude_settings, V as read_claude_settings, f as install_plugin_via_cli, x as uninstall_plugin_via_cli } from "./index.js";
1
+ import { l as read_known_marketplaces, o as parse_plugin_key } from "./plugin-cache-DmLbh89d.js";
2
+ import { $ as write_claude_settings, D as validate_plugin_via_cli, E as update_plugin_via_cli, J as build_enabled_plugins, T as uninstall_plugin_via_cli, X as get_all_plugins, Z as read_claude_settings, g as install_plugin_via_cli } from "./index.js";
3
3
  import { n as output, t as error } from "./output-HtT5HCof.js";
4
4
  import { defineCommand } from "citty";
5
5
  var plugins_default = defineCommand({
@@ -208,4 +208,4 @@ var plugins_default = defineCommand({
208
208
  //#endregion
209
209
  export { plugins_default as default };
210
210
 
211
- //# sourceMappingURL=plugins-Dn2mPFKm.js.map
211
+ //# sourceMappingURL=plugins-Bkw-SKkZ.js.map