claudeup 0.6.0 → 0.6.1
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/data/cli-tools.d.ts +13 -0
- package/dist/data/cli-tools.d.ts.map +1 -0
- package/dist/data/cli-tools.js +124 -0
- package/dist/data/cli-tools.js.map +1 -0
- package/dist/data/marketplaces.d.ts +4 -0
- package/dist/data/marketplaces.d.ts.map +1 -0
- package/dist/data/marketplaces.js +26 -0
- package/dist/data/marketplaces.js.map +1 -0
- package/dist/data/mcp-servers.d.ts +8 -0
- package/dist/data/mcp-servers.d.ts.map +1 -0
- package/dist/data/mcp-servers.js +421 -0
- package/dist/data/mcp-servers.js.map +1 -0
- package/dist/data/statuslines.d.ts +10 -0
- package/dist/data/statuslines.d.ts.map +1 -0
- package/dist/data/statuslines.js +160 -0
- package/dist/data/statuslines.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/services/claude-settings.d.ts +49 -0
- package/dist/services/claude-settings.d.ts.map +1 -0
- package/dist/services/claude-settings.js +299 -0
- package/dist/services/claude-settings.js.map +1 -0
- package/dist/services/mcp-registry.d.ts +10 -0
- package/dist/services/mcp-registry.d.ts.map +1 -0
- package/dist/services/mcp-registry.js +88 -0
- package/dist/services/mcp-registry.js.map +1 -0
- package/dist/services/plugin-manager.d.ts +23 -0
- package/dist/services/plugin-manager.d.ts.map +1 -0
- package/dist/services/plugin-manager.js +151 -0
- package/dist/services/plugin-manager.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/app.d.ts +38 -0
- package/dist/ui/app.d.ts.map +1 -0
- package/dist/ui/app.js +583 -0
- package/dist/ui/app.js.map +1 -0
- package/dist/ui/screens/cli-tools.d.ts +4 -0
- package/dist/ui/screens/cli-tools.d.ts.map +1 -0
- package/dist/ui/screens/cli-tools.js +369 -0
- package/dist/ui/screens/cli-tools.js.map +1 -0
- package/dist/ui/screens/env-vars.d.ts +3 -0
- package/dist/ui/screens/env-vars.d.ts.map +1 -0
- package/dist/ui/screens/env-vars.js +119 -0
- package/dist/ui/screens/env-vars.js.map +1 -0
- package/dist/ui/screens/main-menu.d.ts +3 -0
- package/dist/ui/screens/main-menu.d.ts.map +1 -0
- package/dist/ui/screens/main-menu.js +110 -0
- package/dist/ui/screens/main-menu.js.map +1 -0
- package/dist/ui/screens/marketplace.d.ts +3 -0
- package/dist/ui/screens/marketplace.d.ts.map +1 -0
- package/dist/ui/screens/marketplace.js +132 -0
- package/dist/ui/screens/marketplace.js.map +1 -0
- package/dist/ui/screens/mcp-registry.d.ts +10 -0
- package/dist/ui/screens/mcp-registry.d.ts.map +1 -0
- package/dist/ui/screens/mcp-registry.js +310 -0
- package/dist/ui/screens/mcp-registry.js.map +1 -0
- package/dist/ui/screens/mcp-setup.d.ts +4 -0
- package/dist/ui/screens/mcp-setup.d.ts.map +1 -0
- package/dist/ui/screens/mcp-setup.js +492 -0
- package/dist/ui/screens/mcp-setup.js.map +1 -0
- package/dist/ui/screens/plugins.d.ts +3 -0
- package/dist/ui/screens/plugins.d.ts.map +1 -0
- package/dist/ui/screens/plugins.js +443 -0
- package/dist/ui/screens/plugins.js.map +1 -0
- package/dist/ui/screens/statusline.d.ts +5 -0
- package/dist/ui/screens/statusline.d.ts.map +1 -0
- package/dist/ui/screens/statusline.js +235 -0
- package/dist/ui/screens/statusline.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import blessed from 'neo-blessed';
|
|
2
|
+
import { createHeader, createFooter, showMessage, showConfirm, showInput, } from '../app.js';
|
|
3
|
+
import { getMcpServersByCategory, getCategoryDisplayName, categoryOrder, getAllMcpServers, } from '../../data/mcp-servers.js';
|
|
4
|
+
import { searchMcpServers } from '../../services/mcp-registry.js';
|
|
5
|
+
import { addMcpServer, removeMcpServer, getInstalledMcpServers, getEnabledMcpServers, getMcpEnvVars, } from '../../services/claude-settings.js';
|
|
6
|
+
// Search results screen
|
|
7
|
+
export async function createMcpSearchScreen(state, query) {
|
|
8
|
+
createHeader(state, 'MCP Servers');
|
|
9
|
+
const installedServers = await getInstalledMcpServers(state.projectPath);
|
|
10
|
+
const enabledServers = await getEnabledMcpServers(state.projectPath);
|
|
11
|
+
const allServers = getAllMcpServers();
|
|
12
|
+
// Search both local and remote sources
|
|
13
|
+
const q = query.toLowerCase();
|
|
14
|
+
// Search local curated servers
|
|
15
|
+
const localFilteredServers = allServers.filter(s => s.name.toLowerCase().includes(q) ||
|
|
16
|
+
s.description.toLowerCase().includes(q) ||
|
|
17
|
+
(s.category && s.category.toLowerCase().includes(q)));
|
|
18
|
+
// Search remote MCP registry
|
|
19
|
+
let remoteServers = [];
|
|
20
|
+
let remoteError = null;
|
|
21
|
+
try {
|
|
22
|
+
const response = await searchMcpServers({ query, limit: 50 });
|
|
23
|
+
remoteServers = response.servers || [];
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
// Remote search failed, will show local results only
|
|
27
|
+
remoteError = err;
|
|
28
|
+
remoteServers = [];
|
|
29
|
+
}
|
|
30
|
+
// Combine and deduplicate results (prioritize local/curated)
|
|
31
|
+
const allResults = new Map();
|
|
32
|
+
// Add local results first (they have more metadata)
|
|
33
|
+
for (const server of localFilteredServers) {
|
|
34
|
+
allResults.set(server.name, { server, source: 'local' });
|
|
35
|
+
}
|
|
36
|
+
// Add remote results, converting McpRegistryServer to McpServer format
|
|
37
|
+
for (const remote of remoteServers) {
|
|
38
|
+
if (!allResults.has(remote.name)) {
|
|
39
|
+
// Convert remote server to our format
|
|
40
|
+
const convertedServer = {
|
|
41
|
+
name: remote.name,
|
|
42
|
+
description: remote.short_description || 'No description',
|
|
43
|
+
type: 'http',
|
|
44
|
+
url: remote.url,
|
|
45
|
+
category: 'productivity', // Default category for remote servers
|
|
46
|
+
requiresConfig: false,
|
|
47
|
+
};
|
|
48
|
+
allResults.set(remote.name, { server: convertedServer, source: 'remote' });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const combinedResults = Array.from(allResults.values());
|
|
52
|
+
const localCount = localFilteredServers.length;
|
|
53
|
+
let searchInfo = `${combinedResults.length} found`;
|
|
54
|
+
if (localCount > 0) {
|
|
55
|
+
searchInfo += ` ({cyan-fg}${localCount} local{/cyan-fg})`;
|
|
56
|
+
}
|
|
57
|
+
if (remoteError) {
|
|
58
|
+
searchInfo += ` | {red-fg}Remote search failed{/red-fg}`;
|
|
59
|
+
}
|
|
60
|
+
// Search header
|
|
61
|
+
blessed.box({
|
|
62
|
+
parent: state.screen,
|
|
63
|
+
top: 3,
|
|
64
|
+
left: 2,
|
|
65
|
+
width: '50%-3',
|
|
66
|
+
height: 3,
|
|
67
|
+
tags: true,
|
|
68
|
+
border: { type: 'line' },
|
|
69
|
+
style: { border: { fg: 'green' } },
|
|
70
|
+
label: ' Search Results ',
|
|
71
|
+
content: `{white-fg}${query}{/white-fg} {gray-fg}(${searchInfo}){/gray-fg}`,
|
|
72
|
+
});
|
|
73
|
+
// Build list items
|
|
74
|
+
const listItems = combinedResults.map(({ server, source }) => {
|
|
75
|
+
const isInstalled = installedServers[server.name] !== undefined;
|
|
76
|
+
const isEnabled = enabledServers[server.name] === true;
|
|
77
|
+
let status = '{gray-fg}○{/gray-fg}';
|
|
78
|
+
if (isInstalled && isEnabled) {
|
|
79
|
+
status = '{green-fg}●{/green-fg}';
|
|
80
|
+
}
|
|
81
|
+
else if (isInstalled) {
|
|
82
|
+
status = '{yellow-fg}●{/yellow-fg}';
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
label: `${status} {bold}${server.name}{/bold}`,
|
|
86
|
+
server,
|
|
87
|
+
source,
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
if (listItems.length === 0) {
|
|
91
|
+
listItems.push({
|
|
92
|
+
label: '{gray-fg}No servers match your search{/gray-fg}',
|
|
93
|
+
server: undefined,
|
|
94
|
+
source: 'local',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const listLabels = listItems.map((item) => item.label);
|
|
98
|
+
const list = blessed.list({
|
|
99
|
+
parent: state.screen,
|
|
100
|
+
top: 6,
|
|
101
|
+
left: 2,
|
|
102
|
+
width: '50%-3',
|
|
103
|
+
height: '100%-9',
|
|
104
|
+
items: listLabels,
|
|
105
|
+
keys: true,
|
|
106
|
+
mouse: true,
|
|
107
|
+
tags: true,
|
|
108
|
+
scrollable: true,
|
|
109
|
+
border: { type: 'line' },
|
|
110
|
+
style: {
|
|
111
|
+
selected: { bg: 'green', fg: 'white' },
|
|
112
|
+
border: { fg: 'gray' },
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
// Detail panel
|
|
116
|
+
const detailBox = blessed.box({
|
|
117
|
+
parent: state.screen,
|
|
118
|
+
top: 3,
|
|
119
|
+
left: '50%',
|
|
120
|
+
width: '50%-2',
|
|
121
|
+
height: '100%-5',
|
|
122
|
+
tags: true,
|
|
123
|
+
border: { type: 'line' },
|
|
124
|
+
style: { border: { fg: 'gray' } },
|
|
125
|
+
label: ' Details ',
|
|
126
|
+
});
|
|
127
|
+
const updateDetail = () => {
|
|
128
|
+
const selected = list.selected;
|
|
129
|
+
const item = listItems[selected];
|
|
130
|
+
if (!item?.server) {
|
|
131
|
+
detailBox.setContent('{gray-fg}No server selected{/gray-fg}');
|
|
132
|
+
state.screen.render();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const server = item.server;
|
|
136
|
+
const isInstalled = installedServers[server.name] !== undefined;
|
|
137
|
+
const sourceTag = item.source === 'remote' ? '\n{bold}Source:{/bold} {cyan-fg}MCP Registry{/cyan-fg}' : '';
|
|
138
|
+
detailBox.setContent(`
|
|
139
|
+
{bold}{cyan-fg}${server.name}{/cyan-fg}{/bold}
|
|
140
|
+
|
|
141
|
+
${server.description}
|
|
142
|
+
${sourceTag}
|
|
143
|
+
|
|
144
|
+
${isInstalled
|
|
145
|
+
? '{red-fg}Press Enter to remove{/red-fg}'
|
|
146
|
+
: '{green-fg}Press Enter to install{/green-fg}'}
|
|
147
|
+
`.trim());
|
|
148
|
+
state.screen.render();
|
|
149
|
+
};
|
|
150
|
+
list.on('select item', updateDetail);
|
|
151
|
+
setTimeout(updateDetail, 0);
|
|
152
|
+
// Handle selection
|
|
153
|
+
list.on('select', async (_item, index) => {
|
|
154
|
+
const item = listItems[index];
|
|
155
|
+
if (!item?.server)
|
|
156
|
+
return;
|
|
157
|
+
const server = item.server;
|
|
158
|
+
const isInstalled = installedServers[server.name] !== undefined;
|
|
159
|
+
if (isInstalled) {
|
|
160
|
+
const remove = await showConfirm(state, `Remove ${server.name}?`, 'Remove MCP server?');
|
|
161
|
+
if (remove) {
|
|
162
|
+
await removeMcpServer(server.name, state.projectPath);
|
|
163
|
+
await showMessage(state, 'Removed', `${server.name} removed.`, 'success');
|
|
164
|
+
createMcpSearchScreen(state, query);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
await installMcpServer(state, server);
|
|
169
|
+
createMcpSearchScreen(state, query);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// Back to main MCP screen
|
|
173
|
+
list.key(['escape', 'q'], () => {
|
|
174
|
+
createMcpScreen(state);
|
|
175
|
+
});
|
|
176
|
+
// New search
|
|
177
|
+
list.key(['/'], async () => {
|
|
178
|
+
const newQuery = await showInput(state, 'Search', 'Search MCP servers:', query);
|
|
179
|
+
if (newQuery !== null && newQuery.trim()) {
|
|
180
|
+
createMcpSearchScreen(state, newQuery);
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
createFooter(state, '↑↓ Navigate │ Enter Install/Remove │ / New Search │ Esc Back');
|
|
184
|
+
list.focus();
|
|
185
|
+
state.screen.render();
|
|
186
|
+
}
|
|
187
|
+
// Main MCP screen (no search filtering)
|
|
188
|
+
export async function createMcpScreen(state) {
|
|
189
|
+
createHeader(state, 'MCP Servers');
|
|
190
|
+
const installedServers = await getInstalledMcpServers(state.projectPath);
|
|
191
|
+
const enabledServers = await getEnabledMcpServers(state.projectPath);
|
|
192
|
+
const serversByCategory = getMcpServersByCategory();
|
|
193
|
+
const envVars = await getMcpEnvVars(state.projectPath);
|
|
194
|
+
// Search box - just shows hint
|
|
195
|
+
blessed.box({
|
|
196
|
+
parent: state.screen,
|
|
197
|
+
top: 3,
|
|
198
|
+
left: 2,
|
|
199
|
+
width: '50%-3',
|
|
200
|
+
height: 3,
|
|
201
|
+
tags: true,
|
|
202
|
+
border: { type: 'line' },
|
|
203
|
+
style: { border: { fg: 'cyan' } },
|
|
204
|
+
label: ' Search ',
|
|
205
|
+
content: '{gray-fg}Press / to search...{/gray-fg}',
|
|
206
|
+
});
|
|
207
|
+
const listItems = [];
|
|
208
|
+
for (const category of categoryOrder) {
|
|
209
|
+
const servers = serversByCategory[category];
|
|
210
|
+
if (!servers || servers.length === 0)
|
|
211
|
+
continue;
|
|
212
|
+
listItems.push({
|
|
213
|
+
label: `{bold}{cyan-fg}${getCategoryDisplayName(category)}{/cyan-fg}{/bold}`,
|
|
214
|
+
isCategory: true,
|
|
215
|
+
});
|
|
216
|
+
for (const server of servers) {
|
|
217
|
+
const isInstalled = installedServers[server.name] !== undefined;
|
|
218
|
+
const isEnabled = enabledServers[server.name] === true;
|
|
219
|
+
let status = '{gray-fg}○{/gray-fg}';
|
|
220
|
+
if (isInstalled && isEnabled) {
|
|
221
|
+
status = '{green-fg}●{/green-fg}';
|
|
222
|
+
}
|
|
223
|
+
else if (isInstalled) {
|
|
224
|
+
status = '{yellow-fg}●{/yellow-fg}';
|
|
225
|
+
}
|
|
226
|
+
const configTag = server.requiresConfig ? ' {yellow-fg}*{/yellow-fg}' : '';
|
|
227
|
+
listItems.push({
|
|
228
|
+
label: ` ${status} {bold}${server.name}{/bold}${configTag}`,
|
|
229
|
+
server,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const list = blessed.list({
|
|
234
|
+
parent: state.screen,
|
|
235
|
+
top: 6,
|
|
236
|
+
left: 2,
|
|
237
|
+
width: '50%-3',
|
|
238
|
+
height: '100%-9',
|
|
239
|
+
items: listItems.map((item) => item.label),
|
|
240
|
+
keys: true,
|
|
241
|
+
mouse: true,
|
|
242
|
+
tags: true,
|
|
243
|
+
scrollable: true,
|
|
244
|
+
border: { type: 'line' },
|
|
245
|
+
style: {
|
|
246
|
+
selected: { bg: 'blue', fg: 'white' },
|
|
247
|
+
border: { fg: 'gray' },
|
|
248
|
+
},
|
|
249
|
+
scrollbar: { ch: '|', style: { bg: 'gray' } },
|
|
250
|
+
});
|
|
251
|
+
// Detail panel on the right
|
|
252
|
+
const detailBox = blessed.box({
|
|
253
|
+
parent: state.screen,
|
|
254
|
+
top: 3,
|
|
255
|
+
left: '50%',
|
|
256
|
+
width: '50%-2',
|
|
257
|
+
height: '100%-5',
|
|
258
|
+
content: '',
|
|
259
|
+
tags: true,
|
|
260
|
+
border: {
|
|
261
|
+
type: 'line',
|
|
262
|
+
},
|
|
263
|
+
style: {
|
|
264
|
+
border: {
|
|
265
|
+
fg: 'gray',
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
label: ' Details ',
|
|
269
|
+
});
|
|
270
|
+
// Update detail panel on selection change
|
|
271
|
+
const updateDetail = () => {
|
|
272
|
+
const selected = list.selected;
|
|
273
|
+
const item = listItems[selected];
|
|
274
|
+
if (!item || item.isCategory || !item.server) {
|
|
275
|
+
detailBox.setContent('{gray-fg}Select a server to see details{/gray-fg}');
|
|
276
|
+
state.screen.render();
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
const server = item.server;
|
|
280
|
+
const isInstalled = installedServers[server.name] !== undefined;
|
|
281
|
+
const isEnabled = enabledServers[server.name] === true;
|
|
282
|
+
let statusText = '{gray-fg}Not installed{/gray-fg}';
|
|
283
|
+
if (isInstalled && isEnabled) {
|
|
284
|
+
statusText = '{green-fg}● Installed & Enabled{/green-fg}';
|
|
285
|
+
}
|
|
286
|
+
else if (isInstalled) {
|
|
287
|
+
statusText = '{yellow-fg}● Installed (disabled){/yellow-fg}';
|
|
288
|
+
}
|
|
289
|
+
let typeInfo = '';
|
|
290
|
+
if (server.type === 'http') {
|
|
291
|
+
typeInfo = `{bold}URL:{/bold} {cyan-fg}${server.url}{/cyan-fg}`;
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
typeInfo = `{bold}Command:{/bold} {cyan-fg}${server.command} ${(server.args || []).join(' ')}{/cyan-fg}`;
|
|
295
|
+
}
|
|
296
|
+
let configInfo = '';
|
|
297
|
+
if (server.requiresConfig && server.configFields) {
|
|
298
|
+
// Show required env vars and their status
|
|
299
|
+
configInfo = `\n\n{bold}Required Environment Variables:{/bold}\n`;
|
|
300
|
+
for (const field of server.configFields) {
|
|
301
|
+
const envVarName = field.envVar || field.name;
|
|
302
|
+
// Check in settings.local.json env first, then process.env
|
|
303
|
+
const configuredValue = envVars[envVarName];
|
|
304
|
+
const shellValue = process.env[envVarName];
|
|
305
|
+
const req = field.required ? '{red-fg}*{/red-fg}' : '';
|
|
306
|
+
let status;
|
|
307
|
+
if (configuredValue) {
|
|
308
|
+
const masked = configuredValue.length > 8 ? configuredValue.slice(0, 8) + '...' : configuredValue;
|
|
309
|
+
status = `{green-fg}[CONFIGURED]{/green-fg} ${masked}`;
|
|
310
|
+
}
|
|
311
|
+
else if (shellValue) {
|
|
312
|
+
status = '{cyan-fg}[IN SHELL]{/cyan-fg}';
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
status = '{yellow-fg}[NOT SET]{/yellow-fg}';
|
|
316
|
+
}
|
|
317
|
+
configInfo += ` ${req} ${envVarName} ${status}\n`;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
const actionHint = isInstalled
|
|
321
|
+
? '{gray-fg}Enter: Remove{/gray-fg}'
|
|
322
|
+
: '{green-fg}Press Enter to install{/green-fg}';
|
|
323
|
+
const content = `
|
|
324
|
+
{bold}{cyan-fg}${server.name}{/cyan-fg}{/bold}
|
|
325
|
+
|
|
326
|
+
${server.description}
|
|
327
|
+
|
|
328
|
+
{bold}Status:{/bold} ${statusText}
|
|
329
|
+
|
|
330
|
+
${typeInfo}${configInfo}
|
|
331
|
+
|
|
332
|
+
${actionHint}
|
|
333
|
+
`.trim();
|
|
334
|
+
detailBox.setContent(content);
|
|
335
|
+
state.screen.render();
|
|
336
|
+
};
|
|
337
|
+
list.on('select item', updateDetail);
|
|
338
|
+
// Initial update
|
|
339
|
+
setTimeout(updateDetail, 0);
|
|
340
|
+
// Handle selection
|
|
341
|
+
list.on('select', async (_item, index) => {
|
|
342
|
+
const selected = listItems[index];
|
|
343
|
+
if (!selected || selected.isCategory || !selected.server) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const server = selected.server;
|
|
347
|
+
const isInstalled = installedServers[server.name] !== undefined;
|
|
348
|
+
if (isInstalled) {
|
|
349
|
+
const remove = await showConfirm(state, `Remove ${server.name}?`, 'This will remove the MCP server configuration.');
|
|
350
|
+
if (remove) {
|
|
351
|
+
await removeMcpServer(server.name, state.projectPath);
|
|
352
|
+
await showMessage(state, 'Removed', `${server.name} has been removed.`, 'success');
|
|
353
|
+
createMcpScreen(state);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
await installMcpServer(state, server);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
// Manual j/k navigation (since vi mode is disabled)
|
|
361
|
+
list.key(['j'], () => {
|
|
362
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
363
|
+
list.down();
|
|
364
|
+
state.screen.render();
|
|
365
|
+
});
|
|
366
|
+
list.key(['k'], () => {
|
|
367
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
368
|
+
list.up();
|
|
369
|
+
state.screen.render();
|
|
370
|
+
});
|
|
371
|
+
// Search with / key - opens search screen
|
|
372
|
+
list.key(['/'], async () => {
|
|
373
|
+
const query = await showInput(state, 'Search', 'Search MCP servers:');
|
|
374
|
+
if (query !== null && query.trim()) {
|
|
375
|
+
createMcpSearchScreen(state, query);
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
// Switch to registry search with r
|
|
379
|
+
list.key(['r'], async () => {
|
|
380
|
+
const { navigateTo } = await import('../app.js');
|
|
381
|
+
navigateTo(state, 'mcp-registry');
|
|
382
|
+
});
|
|
383
|
+
createFooter(state, '↑↓ Navigate │ Enter Install/Remove │ / Search │ r Registry │ q Back');
|
|
384
|
+
list.focus();
|
|
385
|
+
state.screen.render();
|
|
386
|
+
}
|
|
387
|
+
async function installMcpServer(state, server) {
|
|
388
|
+
let config;
|
|
389
|
+
if (server.type === 'http') {
|
|
390
|
+
// HTTP-based MCP server
|
|
391
|
+
config = {
|
|
392
|
+
type: 'http',
|
|
393
|
+
url: server.url,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
// Command-based MCP server
|
|
398
|
+
config = {
|
|
399
|
+
command: server.command,
|
|
400
|
+
args: server.args ? [...server.args] : undefined,
|
|
401
|
+
env: server.env ? { ...server.env } : undefined,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
// Collect configuration if required
|
|
405
|
+
if (server.requiresConfig && server.configFields) {
|
|
406
|
+
// Check which env vars are already set
|
|
407
|
+
const envStatus = [];
|
|
408
|
+
for (const field of server.configFields) {
|
|
409
|
+
const envVarName = field.envVar || field.name;
|
|
410
|
+
const existingValue = process.env[envVarName];
|
|
411
|
+
envStatus.push({ field, existingValue });
|
|
412
|
+
}
|
|
413
|
+
// Check if all required env vars are set
|
|
414
|
+
const missingRequired = envStatus.filter((e) => e.field.required && (!e.existingValue || e.existingValue === ''));
|
|
415
|
+
const hasExistingVars = envStatus.some((e) => e.existingValue !== undefined && e.existingValue !== '');
|
|
416
|
+
// If some env vars exist, ask user if they want to use them
|
|
417
|
+
if (hasExistingVars && missingRequired.length === 0) {
|
|
418
|
+
const useExisting = await showConfirm(state, 'Use Environment Variables?', 'All required environment variables are already set.\nUse values from your environment?');
|
|
419
|
+
if (useExisting) {
|
|
420
|
+
// Use existing env vars - reference them with ${VAR} syntax
|
|
421
|
+
config.env = config.env || {};
|
|
422
|
+
for (const { field } of envStatus) {
|
|
423
|
+
const envVarName = field.envVar || field.name;
|
|
424
|
+
config.env[envVarName] = `\${${envVarName}}`;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
// User wants to enter new values
|
|
429
|
+
for (const { field, existingValue } of envStatus) {
|
|
430
|
+
const envVarName = field.envVar || field.name;
|
|
431
|
+
const hint = existingValue ? ` (current: ${existingValue.slice(0, 8)}...)` : '';
|
|
432
|
+
const value = await showInput(state, `Configure ${server.name}`, `${field.label}${field.required ? ' (required)' : ''}${hint}:`, field.default);
|
|
433
|
+
if (value === null) {
|
|
434
|
+
return; // User cancelled
|
|
435
|
+
}
|
|
436
|
+
if (field.required && !value) {
|
|
437
|
+
await showMessage(state, 'Required Field', `${field.label} is required.`, 'error');
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
if (value) {
|
|
441
|
+
config.env = config.env || {};
|
|
442
|
+
config.env[envVarName] = value;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
else {
|
|
448
|
+
// Some required vars are missing - prompt for each
|
|
449
|
+
if (missingRequired.length > 0) {
|
|
450
|
+
const missingNames = missingRequired.map((e) => e.field.envVar || e.field.name).join(', ');
|
|
451
|
+
await showMessage(state, 'Missing Environment Variables', `The following required variables are not set:\n${missingNames}\n\nYou can set them in your shell or enter values now.`, 'info');
|
|
452
|
+
}
|
|
453
|
+
for (const { field, existingValue } of envStatus) {
|
|
454
|
+
const envVarName = field.envVar || field.name;
|
|
455
|
+
const isSet = existingValue !== undefined && existingValue !== '';
|
|
456
|
+
let defaultValue = field.default;
|
|
457
|
+
let prompt = `${field.label}${field.required ? ' (required)' : ''}:`;
|
|
458
|
+
if (isSet) {
|
|
459
|
+
// Env var is set, offer to use it
|
|
460
|
+
const useIt = await showConfirm(state, `Use ${envVarName}?`, `${envVarName} is set in your environment.\nUse the existing value?`);
|
|
461
|
+
if (useIt) {
|
|
462
|
+
config.env = config.env || {};
|
|
463
|
+
config.env[envVarName] = `\${${envVarName}}`;
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
prompt = `${field.label} (override existing):`;
|
|
467
|
+
}
|
|
468
|
+
const value = await showInput(state, `Configure ${server.name}`, prompt, defaultValue);
|
|
469
|
+
if (value === null) {
|
|
470
|
+
return; // User cancelled
|
|
471
|
+
}
|
|
472
|
+
if (field.required && !value) {
|
|
473
|
+
await showMessage(state, 'Required Field', `${field.label} is required.`, 'error');
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
if (value) {
|
|
477
|
+
// Replace placeholder in args
|
|
478
|
+
if (config.args) {
|
|
479
|
+
config.args = config.args.map((arg) => arg.replace(`\${${field.name}}`, value));
|
|
480
|
+
}
|
|
481
|
+
config.env = config.env || {};
|
|
482
|
+
config.env[envVarName] = value;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
// Add server to .mcp.json
|
|
488
|
+
await addMcpServer(server.name, config, state.projectPath);
|
|
489
|
+
await showMessage(state, 'Installed', `${server.name} has been configured.\n\nRestart Claude Code to activate.`, 'success');
|
|
490
|
+
createMcpScreen(state);
|
|
491
|
+
}
|
|
492
|
+
//# sourceMappingURL=mcp-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-setup.js","sourceRoot":"","sources":["../../../src/ui/screens/mcp-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/ui/screens/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAqC1C,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAkcxE"}
|