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 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;AAEnD,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;AAEjC,OAAO,CAAC,KAAK,EAAE,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"}
@@ -2,4 +2,5 @@ export * from './init.js';
2
2
  export * from './login.js';
3
3
  export * from './doctor.js';
4
4
  export * from './links.js';
5
+ export * from './uninstall.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -2,4 +2,5 @@ export * from './init.js';
2
2
  export * from './login.js';
3
3
  export * from './doctor.js';
4
4
  export * from './links.js';
5
+ export * from './uninstall.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -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,SAqJlB,CAAC"}
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"}
@@ -48,23 +48,23 @@ export const initCommand = new Command('init')
48
48
  });
49
49
  mode = await modePrompt.run();
50
50
  }
51
- // Select clients to configure
52
- const clientPrompt = new MultiSelect({
53
- name: 'clients',
54
- message: 'Select MCP clients to configure:',
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 selectedClientNames = await clientPrompt.run();
63
- const selectedClients = detectedClients.filter((c) => selectedClientNames.includes(c.name));
64
- if (selectedClients.length === 0) {
65
- console.log(chalk.yellow('\n⚠️ No clients selected. Exiting.\n'));
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":"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"}
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;AAiDpC,eAAO,MAAM,YAAY,SA6DnB,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"}
@@ -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
- 'Gemini Designer': {
30
- url: REMOTE_ENDPOINT,
31
- headers: { Authorization: `Bearer ${apiKey}` },
32
- },
31
+ url: REMOTE_ENDPOINT,
32
+ headers: { Authorization: `Bearer ${apiKey}` },
33
33
  }
34
34
  : {
35
- 'Gemini Designer': {
36
- command: 'npx',
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":"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"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * uninstall command
3
+ * Remove Gemini Designer from MCP client configs
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const uninstallCommand: Command;
7
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemini-designer",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "CLI installer for Gemini Designer MCP server",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",
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();
@@ -2,3 +2,4 @@ export * from './init.js';
2
2
  export * from './login.js';
3
3
  export * from './doctor.js';
4
4
  export * from './links.js';
5
+ export * from './uninstall.js';
@@ -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 clients to configure
63
- const clientPrompt = new MultiSelect({
64
- name: 'clients',
65
- message: 'Select MCP clients to configure:',
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 selectedClientNames = await clientPrompt.run();
75
- const selectedClients = detectedClients.filter((c) =>
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 (selectedClients.length === 0) {
80
- console.log(chalk.yellow('\n⚠️ No clients selected. Exiting.\n'));
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
 
@@ -34,18 +34,16 @@ function generateRemoteConfig(apiKey: string): Record<string, unknown> {
34
34
  }
35
35
 
36
36
  function generateCursorInstallLink(apiKey?: string): string {
37
- const config: Record<string, unknown> = apiKey
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
- 'Gemini Designer': {
40
- url: REMOTE_ENDPOINT,
41
- headers: { Authorization: `Bearer ${apiKey}` },
42
- },
41
+ url: REMOTE_ENDPOINT,
42
+ headers: { Authorization: `Bearer ${apiKey}` },
43
43
  }
44
44
  : {
45
- 'Gemini Designer': {
46
- command: 'npx',
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
+ });