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.
- package/CHANGELOG.md +9 -0
- package/dist/{add-LJQa2my2.js → add-Qzd8i-5k.js} +24 -4
- package/dist/{add-json-TEdYweZ5.js → add-json-DGmsjB0O.js} +24 -4
- package/dist/{backup-kyS5IVIr.js → backup-C7fvikFw.js} +3 -3
- package/dist/{cache-DTfzTsEE.js → cache-D3jjh5dD.js} +2 -2
- package/dist/{cli-By-0nYNQ.js → cli-CZOlaqoZ.js} +22 -22
- package/dist/{clients-qMozizys.js → clients-Bh93TGP4.js} +2 -2
- package/dist/{clone-BVhYjRGO.js → clone-MI8jJhTz.js} +3 -3
- package/dist/{config-DzMmTJYL.js → config-DE58Fik_.js} +2 -2
- package/dist/{dev-Cst8WkQ-.js → dev-51esdZG9.js} +3 -3
- package/dist/{disable-BaOs9lrm.js → disable-csYAn2Vk.js} +27 -4
- package/dist/dry-run-XQ32fxPT.js +20 -0
- package/dist/{enable--3mjSmTq.js → enable-B5GbmhL-.js} +27 -4
- package/dist/{get-CjhNWyRj.js → get-DacRZmwv.js} +2 -2
- package/dist/{hooks-DFmxgD0t.js → hooks-C_x49qap.js} +2 -2
- package/dist/index.js +197 -61
- package/dist/{list-D5CkCXpP.js → list-BeBtsiae.js} +3 -3
- package/dist/{marketplace-C3EGyIG0.js → marketplace-BDC2YtvT.js} +3 -3
- package/dist/{plugin-cache-BSgB42wa.js → plugin-cache-DmLbh89d.js} +2 -2
- package/dist/{plugins-Dn2mPFKm.js → plugins-Bkw-SKkZ.js} +3 -3
- package/dist/profile-DwJTVXiz.js +161 -0
- package/dist/{reload-257iU7Z7.js → reload-Bl1mYK1I.js} +1 -1
- package/dist/{remove-26XFzkPd.js → remove-BSHgva79.js} +24 -4
- package/dist/{reset-project-choices-D2F04LfC.js → reset-project-choices-BNLus9J9.js} +2 -2
- package/dist/{restore-BYYsoNqF.js → restore-YisgARhc.js} +3 -3
- package/dist/{rollback-CPdaME91.js → rollback-GR1RkpXW.js} +2 -2
- package/dist/{skills-DfWk9mpk.js → skills-rDTDqqZA.js} +2 -2
- package/package.json +1 -1
- 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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
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
|
|
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
|
|
2625
|
-
const parts = [`${
|
|
2626
|
-
if (
|
|
2627
|
-
log.success(`Profile '${
|
|
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
|
|
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
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
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
|
|
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
|
|
2675
|
-
const parts = [`${
|
|
2676
|
-
if (
|
|
2677
|
-
log.success(`Profile '${
|
|
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
|
|
2881
|
+
await create_claude_profile(args.saveProfile);
|
|
2746
2882
|
return;
|
|
2747
2883
|
}
|
|
2748
2884
|
if (args.profile) {
|
|
2749
|
-
await
|
|
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
|
|
2957
|
+
await handle_load_claude_profile();
|
|
2822
2958
|
break;
|
|
2823
2959
|
case "save-profile":
|
|
2824
|
-
await
|
|
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-
|
|
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 {
|
|
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-
|
|
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 {
|
|
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-
|
|
100
|
+
//# sourceMappingURL=list-BeBtsiae.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { u as read_marketplace_manifest } from "./plugin-cache-
|
|
2
|
-
import {
|
|
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-
|
|
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 {
|
|
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-
|
|
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-
|
|
2
|
-
import {
|
|
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-
|
|
211
|
+
//# sourceMappingURL=plugins-Bkw-SKkZ.js.map
|