gemini-designer 0.1.2 → 0.1.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.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +9 -9
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/links.d.ts.map +1 -1
- package/dist/commands/links.js +6 -8
- package/dist/commands/links.js.map +1 -1
- package/dist/commands/uninstall.d.ts +7 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +137 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/package.json +1 -1
- package/src/cli.ts +2 -0
- package/src/commands/index.ts +1 -0
- package/src/commands/init.ts +10 -11
- package/src/commands/links.ts +7 -9
- package/src/commands/uninstall.ts +153 -0
package/dist/cli.js
CHANGED
|
@@ -8,6 +8,7 @@ import { initCommand } from './commands/init.js';
|
|
|
8
8
|
import { loginCommand } from './commands/login.js';
|
|
9
9
|
import { doctorCommand } from './commands/doctor.js';
|
|
10
10
|
import { linksCommand } from './commands/links.js';
|
|
11
|
+
import { uninstallCommand } from './commands/uninstall.js';
|
|
11
12
|
const program = new Command();
|
|
12
13
|
program
|
|
13
14
|
.name('gemini-designer')
|
|
@@ -17,5 +18,6 @@ program.addCommand(initCommand);
|
|
|
17
18
|
program.addCommand(loginCommand);
|
|
18
19
|
program.addCommand(doctorCommand);
|
|
19
20
|
program.addCommand(linksCommand);
|
|
21
|
+
program.addCommand(uninstallCommand);
|
|
20
22
|
program.parse();
|
|
21
23
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAErC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,WAAW,SAoJlB,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -48,23 +48,23 @@ export const initCommand = new Command('init')
|
|
|
48
48
|
});
|
|
49
49
|
mode = await modePrompt.run();
|
|
50
50
|
}
|
|
51
|
-
// Select
|
|
52
|
-
const clientPrompt = new
|
|
53
|
-
name: '
|
|
54
|
-
message: 'Select MCP
|
|
51
|
+
// Select client to configure (one at a time, can re-run for more)
|
|
52
|
+
const clientPrompt = new Select({
|
|
53
|
+
name: 'client',
|
|
54
|
+
message: 'Select MCP client to configure:',
|
|
55
55
|
choices: detectedClients.map((client) => ({
|
|
56
56
|
name: client.name,
|
|
57
57
|
message: `${client.displayName}`,
|
|
58
58
|
value: client.name,
|
|
59
|
-
enabled: true, // Pre-select all detected
|
|
60
59
|
})),
|
|
61
60
|
});
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
console.log(chalk.yellow('\n⚠️ No
|
|
61
|
+
const selectedClientName = await clientPrompt.run();
|
|
62
|
+
const selectedClient = detectedClients.find((c) => c.name === selectedClientName);
|
|
63
|
+
if (!selectedClient) {
|
|
64
|
+
console.log(chalk.yellow('\n⚠️ No client selected. Exiting.\n'));
|
|
66
65
|
return;
|
|
67
66
|
}
|
|
67
|
+
const selectedClients = [selectedClient];
|
|
68
68
|
// Get API key
|
|
69
69
|
let config;
|
|
70
70
|
if (mode === 'remote') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,aAAa,EAA4C,MAAM,qBAAqB,CAAC;AAE9F,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,QAIzC,CAAC;AAEF,MAAM,eAAe,GAAG,qCAAqC,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACzC,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,sDAAsD,CAAC;KAC3E,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;KAChE,MAAM,CAAC,UAAU,EAAE,8CAA8C,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAEjE,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG,aAAa,EAAE,CAAC;IAExC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC9E,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,eAAe,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,cAAc;IACd,IAAI,IAAwB,CAAC;IAC7B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,GAAG,OAAO,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,GAAG,QAAQ,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC;YAC1B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE;gBAChF,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gCAAgC,EAAE;aACrF;SACJ,CAAC,CAAC;QACH,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,EAAwB,CAAC;IACxD,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+CpC,eAAO,MAAM,YAAY,SA6DnB,CAAC"}
|
package/dist/commands/links.js
CHANGED
|
@@ -24,18 +24,16 @@ function generateRemoteConfig(apiKey) {
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
function generateCursorInstallLink(apiKey) {
|
|
27
|
+
// Config should be just the server config, not wrapped in a name key
|
|
28
|
+
// The name comes from the ?name= URL parameter
|
|
27
29
|
const config = apiKey
|
|
28
30
|
? {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
32
|
-
},
|
|
31
|
+
url: REMOTE_ENDPOINT,
|
|
32
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
33
33
|
}
|
|
34
34
|
: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
args: ['-y', '@gemini-designer/mcp-server'],
|
|
38
|
-
},
|
|
35
|
+
command: 'npx',
|
|
36
|
+
args: ['-y', '@gemini-designer/mcp-server'],
|
|
39
37
|
};
|
|
40
38
|
const base64Config = Buffer.from(JSON.stringify(config)).toString('base64');
|
|
41
39
|
return `https://cursor.com/en/install-mcp?name=Gemini+Designer&config=${encodeURIComponent(base64Config)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAAG,qCAAqC,CAAC;AAO9D,SAAS,mBAAmB;IACxB,OAAO;QACH,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,6BAA6B,CAAC;QAC3C,GAAG,EAAE;YACD,cAAc,EAAE,uBAAuB;YACvC,oBAAoB,EAAE,OAAO;SAChC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IACxC,OAAO;QACH,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE;YACL,aAAa,EAAE,UAAU,MAAM,EAAE;SACpC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAe;IAC9C,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,eAAO,MAAM,gBAAgB,SAoFvB,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uninstall command
|
|
3
|
+
* Remove Gemini Designer from MCP client configs
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import Enquirer from 'enquirer';
|
|
10
|
+
import { detectClients } from '../clients/index.js';
|
|
11
|
+
const { Select, Confirm } = Enquirer;
|
|
12
|
+
function removeFromConfig(adapter) {
|
|
13
|
+
const config = adapter.getExistingConfig();
|
|
14
|
+
if (!config)
|
|
15
|
+
return false;
|
|
16
|
+
// Different clients store MCP servers under different keys
|
|
17
|
+
const serverKeys = ['mcpServers', 'mcp.servers', 'context_servers'];
|
|
18
|
+
let removed = false;
|
|
19
|
+
for (const key of serverKeys) {
|
|
20
|
+
if (config[key] && typeof config[key] === 'object') {
|
|
21
|
+
const servers = config[key];
|
|
22
|
+
if ('gemini-designer' in servers) {
|
|
23
|
+
delete servers['gemini-designer'];
|
|
24
|
+
removed = true;
|
|
25
|
+
}
|
|
26
|
+
// Also check for "Gemini Designer" (with space)
|
|
27
|
+
if ('Gemini Designer' in servers) {
|
|
28
|
+
delete servers['Gemini Designer'];
|
|
29
|
+
removed = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (removed) {
|
|
34
|
+
// Write back
|
|
35
|
+
const dir = path.dirname(adapter.configPath);
|
|
36
|
+
if (!fs.existsSync(dir)) {
|
|
37
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
fs.writeFileSync(adapter.configPath, JSON.stringify(config, null, 2));
|
|
40
|
+
}
|
|
41
|
+
return removed;
|
|
42
|
+
}
|
|
43
|
+
function isConfigured(adapter) {
|
|
44
|
+
const config = adapter.getExistingConfig();
|
|
45
|
+
if (!config)
|
|
46
|
+
return false;
|
|
47
|
+
const serverKeys = ['mcpServers', 'mcp.servers', 'context_servers'];
|
|
48
|
+
for (const key of serverKeys) {
|
|
49
|
+
if (config[key] && typeof config[key] === 'object') {
|
|
50
|
+
const servers = config[key];
|
|
51
|
+
if ('gemini-designer' in servers || 'Gemini Designer' in servers) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
export const uninstallCommand = new Command('uninstall')
|
|
59
|
+
.description('Remove Gemini Designer from MCP client configurations')
|
|
60
|
+
.option('--all', 'Remove from all configured clients without prompting')
|
|
61
|
+
.action(async (options) => {
|
|
62
|
+
console.log(chalk.bold.cyan('\n🗑️ Gemini Designer Uninstall\n'));
|
|
63
|
+
// Find clients that have Gemini Designer configured
|
|
64
|
+
const allClients = detectClients();
|
|
65
|
+
const configuredClients = allClients.filter(isConfigured);
|
|
66
|
+
if (configuredClients.length === 0) {
|
|
67
|
+
console.log(chalk.yellow('No clients have Gemini Designer configured.\n'));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
console.log(chalk.gray(`Found Gemini Designer in ${configuredClients.length} client(s):\n`));
|
|
71
|
+
for (const client of configuredClients) {
|
|
72
|
+
console.log(chalk.gray(` • ${client.displayName} (${client.configPath})`));
|
|
73
|
+
}
|
|
74
|
+
console.log();
|
|
75
|
+
let clientsToRemove;
|
|
76
|
+
if (options.all) {
|
|
77
|
+
clientsToRemove = configuredClients;
|
|
78
|
+
}
|
|
79
|
+
else if (configuredClients.length === 1) {
|
|
80
|
+
// Only one client, just confirm
|
|
81
|
+
const confirm = new Confirm({
|
|
82
|
+
name: 'confirm',
|
|
83
|
+
message: `Remove Gemini Designer from ${configuredClients[0].displayName}?`,
|
|
84
|
+
initial: true,
|
|
85
|
+
});
|
|
86
|
+
if (!(await confirm.run())) {
|
|
87
|
+
console.log(chalk.gray('Cancelled.\n'));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
clientsToRemove = configuredClients;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Multiple clients, let user choose
|
|
94
|
+
const clientPrompt = new Select({
|
|
95
|
+
name: 'client',
|
|
96
|
+
message: 'Select client to remove from:',
|
|
97
|
+
choices: [
|
|
98
|
+
...configuredClients.map((client) => ({
|
|
99
|
+
name: client.name,
|
|
100
|
+
message: client.displayName,
|
|
101
|
+
})),
|
|
102
|
+
{ name: 'all', message: chalk.red('All clients') },
|
|
103
|
+
],
|
|
104
|
+
});
|
|
105
|
+
const choice = await clientPrompt.run();
|
|
106
|
+
if (choice === 'all') {
|
|
107
|
+
clientsToRemove = configuredClients;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const client = configuredClients.find((c) => c.name === choice);
|
|
111
|
+
if (!client) {
|
|
112
|
+
console.log(chalk.red('Client not found.\n'));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
clientsToRemove = [client];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Remove from selected clients
|
|
119
|
+
console.log(chalk.gray('\nRemoving...'));
|
|
120
|
+
for (const client of clientsToRemove) {
|
|
121
|
+
try {
|
|
122
|
+
const removed = removeFromConfig(client);
|
|
123
|
+
if (removed) {
|
|
124
|
+
console.log(chalk.green(`✓ Removed from ${client.displayName}`));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
console.log(chalk.yellow(`⚠️ Not found in ${client.displayName}`));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.log(chalk.red(`✗ ${client.displayName}: ${error}`));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
console.log(chalk.bold.green('\n✅ Uninstall complete!\n'));
|
|
135
|
+
console.log(chalk.gray('Run `gemini-designer init` to reinstall.\n'));
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { initCommand } from './commands/init.js';
|
|
|
9
9
|
import { loginCommand } from './commands/login.js';
|
|
10
10
|
import { doctorCommand } from './commands/doctor.js';
|
|
11
11
|
import { linksCommand } from './commands/links.js';
|
|
12
|
+
import { uninstallCommand } from './commands/uninstall.js';
|
|
12
13
|
|
|
13
14
|
const program = new Command();
|
|
14
15
|
|
|
@@ -21,5 +22,6 @@ program.addCommand(initCommand);
|
|
|
21
22
|
program.addCommand(loginCommand);
|
|
22
23
|
program.addCommand(doctorCommand);
|
|
23
24
|
program.addCommand(linksCommand);
|
|
25
|
+
program.addCommand(uninstallCommand);
|
|
24
26
|
|
|
25
27
|
program.parse();
|
package/src/commands/index.ts
CHANGED
package/src/commands/init.ts
CHANGED
|
@@ -59,28 +59,27 @@ export const initCommand = new Command('init')
|
|
|
59
59
|
mode = await modePrompt.run() as 'local' | 'remote';
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
// Select
|
|
63
|
-
const clientPrompt = new
|
|
64
|
-
name: '
|
|
65
|
-
message: 'Select MCP
|
|
62
|
+
// Select client to configure (one at a time, can re-run for more)
|
|
63
|
+
const clientPrompt = new Select({
|
|
64
|
+
name: 'client',
|
|
65
|
+
message: 'Select MCP client to configure:',
|
|
66
66
|
choices: detectedClients.map((client) => ({
|
|
67
67
|
name: client.name,
|
|
68
68
|
message: `${client.displayName}`,
|
|
69
69
|
value: client.name,
|
|
70
|
-
enabled: true, // Pre-select all detected
|
|
71
70
|
})),
|
|
72
71
|
});
|
|
73
72
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
selectedClientNames.includes(c.name)
|
|
77
|
-
);
|
|
73
|
+
const selectedClientName = await clientPrompt.run();
|
|
74
|
+
const selectedClient = detectedClients.find((c) => c.name === selectedClientName);
|
|
78
75
|
|
|
79
|
-
if (
|
|
80
|
-
console.log(chalk.yellow('\n⚠️ No
|
|
76
|
+
if (!selectedClient) {
|
|
77
|
+
console.log(chalk.yellow('\n⚠️ No client selected. Exiting.\n'));
|
|
81
78
|
return;
|
|
82
79
|
}
|
|
83
80
|
|
|
81
|
+
const selectedClients = [selectedClient];
|
|
82
|
+
|
|
84
83
|
// Get API key
|
|
85
84
|
let config: McpServerConfig;
|
|
86
85
|
|
package/src/commands/links.ts
CHANGED
|
@@ -34,18 +34,16 @@ function generateRemoteConfig(apiKey: string): Record<string, unknown> {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
function generateCursorInstallLink(apiKey?: string): string {
|
|
37
|
-
|
|
37
|
+
// Config should be just the server config, not wrapped in a name key
|
|
38
|
+
// The name comes from the ?name= URL parameter
|
|
39
|
+
const config = apiKey
|
|
38
40
|
? {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
42
|
-
},
|
|
41
|
+
url: REMOTE_ENDPOINT,
|
|
42
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
43
43
|
}
|
|
44
44
|
: {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
args: ['-y', '@gemini-designer/mcp-server'],
|
|
48
|
-
},
|
|
45
|
+
command: 'npx',
|
|
46
|
+
args: ['-y', '@gemini-designer/mcp-server'],
|
|
49
47
|
};
|
|
50
48
|
|
|
51
49
|
const base64Config = Buffer.from(JSON.stringify(config)).toString('base64');
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uninstall command
|
|
3
|
+
* Remove Gemini Designer from MCP client configs
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
import Enquirer from 'enquirer';
|
|
11
|
+
import { detectClients, type ClientAdapter } from '../clients/index.js';
|
|
12
|
+
|
|
13
|
+
const { Select, Confirm } = Enquirer as unknown as {
|
|
14
|
+
Select: new (options: Record<string, unknown>) => { run: () => Promise<string> };
|
|
15
|
+
Confirm: new (options: Record<string, unknown>) => { run: () => Promise<boolean> };
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
function removeFromConfig(adapter: ClientAdapter): boolean {
|
|
19
|
+
const config = adapter.getExistingConfig();
|
|
20
|
+
if (!config) return false;
|
|
21
|
+
|
|
22
|
+
// Different clients store MCP servers under different keys
|
|
23
|
+
const serverKeys = ['mcpServers', 'mcp.servers', 'context_servers'];
|
|
24
|
+
let removed = false;
|
|
25
|
+
|
|
26
|
+
for (const key of serverKeys) {
|
|
27
|
+
if (config[key] && typeof config[key] === 'object') {
|
|
28
|
+
const servers = config[key] as Record<string, unknown>;
|
|
29
|
+
if ('gemini-designer' in servers) {
|
|
30
|
+
delete servers['gemini-designer'];
|
|
31
|
+
removed = true;
|
|
32
|
+
}
|
|
33
|
+
// Also check for "Gemini Designer" (with space)
|
|
34
|
+
if ('Gemini Designer' in servers) {
|
|
35
|
+
delete servers['Gemini Designer'];
|
|
36
|
+
removed = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (removed) {
|
|
42
|
+
// Write back
|
|
43
|
+
const dir = path.dirname(adapter.configPath);
|
|
44
|
+
if (!fs.existsSync(dir)) {
|
|
45
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
46
|
+
}
|
|
47
|
+
fs.writeFileSync(adapter.configPath, JSON.stringify(config, null, 2));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return removed;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function isConfigured(adapter: ClientAdapter): boolean {
|
|
54
|
+
const config = adapter.getExistingConfig();
|
|
55
|
+
if (!config) return false;
|
|
56
|
+
|
|
57
|
+
const serverKeys = ['mcpServers', 'mcp.servers', 'context_servers'];
|
|
58
|
+
for (const key of serverKeys) {
|
|
59
|
+
if (config[key] && typeof config[key] === 'object') {
|
|
60
|
+
const servers = config[key] as Record<string, unknown>;
|
|
61
|
+
if ('gemini-designer' in servers || 'Gemini Designer' in servers) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const uninstallCommand = new Command('uninstall')
|
|
70
|
+
.description('Remove Gemini Designer from MCP client configurations')
|
|
71
|
+
.option('--all', 'Remove from all configured clients without prompting')
|
|
72
|
+
.action(async (options) => {
|
|
73
|
+
console.log(chalk.bold.cyan('\n🗑️ Gemini Designer Uninstall\n'));
|
|
74
|
+
|
|
75
|
+
// Find clients that have Gemini Designer configured
|
|
76
|
+
const allClients = detectClients();
|
|
77
|
+
const configuredClients = allClients.filter(isConfigured);
|
|
78
|
+
|
|
79
|
+
if (configuredClients.length === 0) {
|
|
80
|
+
console.log(chalk.yellow('No clients have Gemini Designer configured.\n'));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
console.log(chalk.gray(`Found Gemini Designer in ${configuredClients.length} client(s):\n`));
|
|
85
|
+
for (const client of configuredClients) {
|
|
86
|
+
console.log(chalk.gray(` • ${client.displayName} (${client.configPath})`));
|
|
87
|
+
}
|
|
88
|
+
console.log();
|
|
89
|
+
|
|
90
|
+
let clientsToRemove: ClientAdapter[];
|
|
91
|
+
|
|
92
|
+
if (options.all) {
|
|
93
|
+
clientsToRemove = configuredClients;
|
|
94
|
+
} else if (configuredClients.length === 1) {
|
|
95
|
+
// Only one client, just confirm
|
|
96
|
+
const confirm = new Confirm({
|
|
97
|
+
name: 'confirm',
|
|
98
|
+
message: `Remove Gemini Designer from ${configuredClients[0].displayName}?`,
|
|
99
|
+
initial: true,
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
if (!(await confirm.run())) {
|
|
103
|
+
console.log(chalk.gray('Cancelled.\n'));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
clientsToRemove = configuredClients;
|
|
107
|
+
} else {
|
|
108
|
+
// Multiple clients, let user choose
|
|
109
|
+
const clientPrompt = new Select({
|
|
110
|
+
name: 'client',
|
|
111
|
+
message: 'Select client to remove from:',
|
|
112
|
+
choices: [
|
|
113
|
+
...configuredClients.map((client) => ({
|
|
114
|
+
name: client.name,
|
|
115
|
+
message: client.displayName,
|
|
116
|
+
})),
|
|
117
|
+
{ name: 'all', message: chalk.red('All clients') },
|
|
118
|
+
],
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const choice = await clientPrompt.run();
|
|
122
|
+
|
|
123
|
+
if (choice === 'all') {
|
|
124
|
+
clientsToRemove = configuredClients;
|
|
125
|
+
} else {
|
|
126
|
+
const client = configuredClients.find((c) => c.name === choice);
|
|
127
|
+
if (!client) {
|
|
128
|
+
console.log(chalk.red('Client not found.\n'));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
clientsToRemove = [client];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Remove from selected clients
|
|
136
|
+
console.log(chalk.gray('\nRemoving...'));
|
|
137
|
+
|
|
138
|
+
for (const client of clientsToRemove) {
|
|
139
|
+
try {
|
|
140
|
+
const removed = removeFromConfig(client);
|
|
141
|
+
if (removed) {
|
|
142
|
+
console.log(chalk.green(`✓ Removed from ${client.displayName}`));
|
|
143
|
+
} else {
|
|
144
|
+
console.log(chalk.yellow(`⚠️ Not found in ${client.displayName}`));
|
|
145
|
+
}
|
|
146
|
+
} catch (error) {
|
|
147
|
+
console.log(chalk.red(`✗ ${client.displayName}: ${error}`));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
console.log(chalk.bold.green('\n✅ Uninstall complete!\n'));
|
|
152
|
+
console.log(chalk.gray('Run `gemini-designer init` to reinstall.\n'));
|
|
153
|
+
});
|