claudeup 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +91 -0
  2. package/bin/claudeup.js +6 -0
  3. package/dist/data/cli-tools.d.ts +13 -0
  4. package/dist/data/cli-tools.d.ts.map +1 -0
  5. package/dist/data/cli-tools.js +91 -0
  6. package/dist/data/cli-tools.js.map +1 -0
  7. package/dist/data/marketplaces.d.ts +4 -0
  8. package/dist/data/marketplaces.d.ts.map +1 -0
  9. package/dist/data/marketplaces.js +26 -0
  10. package/dist/data/marketplaces.js.map +1 -0
  11. package/dist/data/mcp-servers.d.ts +8 -0
  12. package/dist/data/mcp-servers.d.ts.map +1 -0
  13. package/dist/data/mcp-servers.js +421 -0
  14. package/dist/data/mcp-servers.js.map +1 -0
  15. package/dist/data/statuslines.d.ts +10 -0
  16. package/dist/data/statuslines.d.ts.map +1 -0
  17. package/dist/data/statuslines.js +160 -0
  18. package/dist/data/statuslines.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +12 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/services/claude-settings.d.ts +31 -0
  24. package/dist/services/claude-settings.d.ts.map +1 -0
  25. package/dist/services/claude-settings.js +177 -0
  26. package/dist/services/claude-settings.js.map +1 -0
  27. package/dist/services/mcp-registry.d.ts +10 -0
  28. package/dist/services/mcp-registry.d.ts.map +1 -0
  29. package/dist/services/mcp-registry.js +88 -0
  30. package/dist/services/mcp-registry.js.map +1 -0
  31. package/dist/services/plugin-manager.d.ts +22 -0
  32. package/dist/services/plugin-manager.d.ts.map +1 -0
  33. package/dist/services/plugin-manager.js +115 -0
  34. package/dist/services/plugin-manager.js.map +1 -0
  35. package/dist/types/index.d.ts +83 -0
  36. package/dist/types/index.d.ts.map +1 -0
  37. package/dist/types/index.js +2 -0
  38. package/dist/types/index.js.map +1 -0
  39. package/dist/ui/app.d.ts +28 -0
  40. package/dist/ui/app.d.ts.map +1 -0
  41. package/dist/ui/app.js +408 -0
  42. package/dist/ui/app.js.map +1 -0
  43. package/dist/ui/screens/cli-tools.d.ts +3 -0
  44. package/dist/ui/screens/cli-tools.d.ts.map +1 -0
  45. package/dist/ui/screens/cli-tools.js +314 -0
  46. package/dist/ui/screens/cli-tools.js.map +1 -0
  47. package/dist/ui/screens/main-menu.d.ts +3 -0
  48. package/dist/ui/screens/main-menu.d.ts.map +1 -0
  49. package/dist/ui/screens/main-menu.js +110 -0
  50. package/dist/ui/screens/main-menu.js.map +1 -0
  51. package/dist/ui/screens/marketplace.d.ts +3 -0
  52. package/dist/ui/screens/marketplace.d.ts.map +1 -0
  53. package/dist/ui/screens/marketplace.js +132 -0
  54. package/dist/ui/screens/marketplace.js.map +1 -0
  55. package/dist/ui/screens/mcp-registry.d.ts +10 -0
  56. package/dist/ui/screens/mcp-registry.d.ts.map +1 -0
  57. package/dist/ui/screens/mcp-registry.js +310 -0
  58. package/dist/ui/screens/mcp-registry.js.map +1 -0
  59. package/dist/ui/screens/mcp-setup.d.ts +4 -0
  60. package/dist/ui/screens/mcp-setup.d.ts.map +1 -0
  61. package/dist/ui/screens/mcp-setup.js +417 -0
  62. package/dist/ui/screens/mcp-setup.js.map +1 -0
  63. package/dist/ui/screens/plugins.d.ts +3 -0
  64. package/dist/ui/screens/plugins.d.ts.map +1 -0
  65. package/dist/ui/screens/plugins.js +330 -0
  66. package/dist/ui/screens/plugins.js.map +1 -0
  67. package/dist/ui/screens/statusline.d.ts +5 -0
  68. package/dist/ui/screens/statusline.d.ts.map +1 -0
  69. package/dist/ui/screens/statusline.js +235 -0
  70. package/dist/ui/screens/statusline.js.map +1 -0
  71. package/package.json +58 -0
@@ -0,0 +1,310 @@
1
+ import blessed from 'neo-blessed';
2
+ import { createHeader, createFooter, showMessage, } from '../app.js';
3
+ import { searchMcpServers, formatDate, } from '../../services/mcp-registry.js';
4
+ import { addMcpServer, setAllowMcp, } from '../../services/claude-settings.js';
5
+ export async function createMcpRegistryScreen(state, initialSearch = '', registryState) {
6
+ createHeader(state, 'MCP Registry');
7
+ let searchQuery = initialSearch;
8
+ let servers = registryState?.servers || [];
9
+ const error = registryState?.error || null;
10
+ const loaded = registryState?.loaded || false;
11
+ let searchTimeout = null;
12
+ // Search box
13
+ const searchBox = blessed.box({
14
+ parent: state.screen,
15
+ top: 3,
16
+ left: 2,
17
+ width: '50%-2',
18
+ height: 3,
19
+ tags: true,
20
+ border: {
21
+ type: 'line',
22
+ },
23
+ style: {
24
+ border: {
25
+ fg: 'cyan',
26
+ },
27
+ },
28
+ label: ' 🌐 MCP Registry ',
29
+ });
30
+ const updateSearchBox = () => {
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ const box = searchBox;
33
+ if (state.isSearching) {
34
+ searchBox.setContent(`{white-fg}${searchQuery}{/white-fg}{inverse} {/inverse}`);
35
+ box.style.border.fg = 'green';
36
+ }
37
+ else if (searchQuery) {
38
+ searchBox.setContent(`{white-fg}${searchQuery}{/white-fg}`);
39
+ box.style.border.fg = 'magenta';
40
+ }
41
+ else {
42
+ searchBox.setContent('{gray-fg}Press / to search...{/gray-fg}');
43
+ box.style.border.fg = 'magenta';
44
+ }
45
+ };
46
+ updateSearchBox();
47
+ // Build list items from servers
48
+ const buildListItems = () => {
49
+ if (!loaded) {
50
+ return ['{gray-fg}Loading...{/gray-fg}'];
51
+ }
52
+ else if (error) {
53
+ return [`{red-fg}Error: ${error}{/red-fg}`];
54
+ }
55
+ else if (servers.length === 0) {
56
+ return ['{gray-fg}No servers found{/gray-fg}'];
57
+ }
58
+ else {
59
+ return servers.map((server) => {
60
+ const version = server.version ? `{green-fg}v${server.version}{/green-fg}` : '';
61
+ return `{bold}${server.name}{/bold} ${version}`;
62
+ });
63
+ }
64
+ };
65
+ // List
66
+ const list = blessed.list({
67
+ parent: state.screen,
68
+ top: 6,
69
+ left: 2,
70
+ width: '50%-2',
71
+ height: '100%-9',
72
+ items: buildListItems(),
73
+ keys: true,
74
+ vi: false,
75
+ mouse: true,
76
+ tags: true,
77
+ scrollable: true,
78
+ border: {
79
+ type: 'line',
80
+ },
81
+ style: {
82
+ selected: {
83
+ bg: 'magenta',
84
+ fg: 'white',
85
+ },
86
+ border: {
87
+ fg: 'gray',
88
+ },
89
+ },
90
+ scrollbar: {
91
+ ch: '|',
92
+ style: {
93
+ bg: 'gray',
94
+ },
95
+ },
96
+ });
97
+ // Detail panel on the right
98
+ const detailBox = blessed.box({
99
+ parent: state.screen,
100
+ top: 3,
101
+ right: 2,
102
+ width: '50%-2',
103
+ height: '100%-5',
104
+ content: '',
105
+ tags: true,
106
+ border: {
107
+ type: 'line',
108
+ },
109
+ style: {
110
+ border: {
111
+ fg: 'gray',
112
+ },
113
+ },
114
+ label: ' Details ',
115
+ });
116
+ // Update detail panel on selection change
117
+ const updateDetail = () => {
118
+ const selected = list.selected;
119
+ const server = servers[selected];
120
+ if (!server) {
121
+ detailBox.setContent('{gray-fg}Select a server to see details{/gray-fg}');
122
+ state.screen.render();
123
+ return;
124
+ }
125
+ const dateDisplay = server.published_at
126
+ ? `{cyan-fg}${formatDate(server.published_at)}{/cyan-fg}`
127
+ : '{gray-fg}unknown{/gray-fg}';
128
+ const versionDisplay = server.version
129
+ ? `{green-fg}v${server.version}{/green-fg}`
130
+ : '{gray-fg}unknown{/gray-fg}';
131
+ const content = `
132
+ {bold}{magenta-fg}${server.name}{/magenta-fg}{/bold}
133
+
134
+ ${server.short_description}
135
+
136
+ {bold}Version:{/bold} ${versionDisplay}
137
+ {bold}Published:{/bold} ${dateDisplay}
138
+
139
+ {bold}URL:{/bold}
140
+ {cyan-fg}${server.url}{/cyan-fg}
141
+ ${server.source_code_url ? `\n{bold}Source:{/bold}\n{gray-fg}${server.source_code_url}{/gray-fg}` : ''}
142
+
143
+ {green-fg}Press Enter to install{/green-fg}
144
+ `.trim();
145
+ detailBox.setContent(content);
146
+ state.screen.render();
147
+ };
148
+ list.on('select item', updateDetail);
149
+ // Initial detail update
150
+ setTimeout(updateDetail, 0);
151
+ // Load servers function with debounce
152
+ const loadServers = async (query) => {
153
+ try {
154
+ const response = await searchMcpServers({
155
+ query,
156
+ limit: 50,
157
+ });
158
+ // Validate response structure
159
+ if (!response || !Array.isArray(response.servers)) {
160
+ throw new Error('Invalid response from MCP Registry API');
161
+ }
162
+ servers = response.servers;
163
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
+ list.setItems(buildListItems());
165
+ state.screen.render();
166
+ setTimeout(updateDetail, 0);
167
+ }
168
+ catch (err) {
169
+ const errorMsg = err instanceof Error ? err.message : 'Failed to load servers';
170
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
171
+ list.setItems([`{red-fg}Error: ${errorMsg}{/red-fg}`]);
172
+ state.screen.render();
173
+ }
174
+ };
175
+ // Debounced search
176
+ const debouncedSearch = (query) => {
177
+ if (searchTimeout) {
178
+ clearTimeout(searchTimeout);
179
+ }
180
+ searchTimeout = setTimeout(() => {
181
+ // Ensure we're still in the MCP registry screen and in search mode
182
+ if (state.isSearching && state.currentScreen === 'mcp') {
183
+ loadServers(query);
184
+ }
185
+ }, 300);
186
+ };
187
+ // Handle selection - install server
188
+ list.on('select', async (_item, index) => {
189
+ if (state.isSearching)
190
+ return; // Don't install while searching
191
+ const server = servers[index];
192
+ if (!server)
193
+ return;
194
+ const config = {
195
+ type: 'http',
196
+ url: server.url,
197
+ };
198
+ await setAllowMcp(true, state.projectPath);
199
+ await addMcpServer(server.name, config, state.projectPath);
200
+ await showMessage(state, 'Installed', `${server.name} has been configured.\n\nRestart Claude Code to activate.`, 'success');
201
+ createMcpRegistryScreen(state, searchQuery, {
202
+ servers,
203
+ error: null,
204
+ loaded: true,
205
+ });
206
+ });
207
+ // Create a search input box that grabs focus during search
208
+ // Use textbox instead of box to properly capture all keyboard input
209
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
210
+ const searchInput = blessed.textbox({
211
+ parent: state.screen,
212
+ top: 3,
213
+ left: 2,
214
+ width: '50%-2',
215
+ height: 3,
216
+ hidden: true,
217
+ input: true,
218
+ keys: true,
219
+ });
220
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
221
+ const searchInputAny = searchInput;
222
+ const startSearch = () => {
223
+ state.isSearching = true;
224
+ updateSearchBox();
225
+ searchInputAny.show();
226
+ searchInput.focus();
227
+ // Clear and set initial value
228
+ searchInput.setValue(searchQuery || '');
229
+ state.screen.render();
230
+ };
231
+ const endSearch = () => {
232
+ state.isSearching = false;
233
+ updateSearchBox();
234
+ searchInputAny.hide();
235
+ list.focus();
236
+ state.screen.render();
237
+ };
238
+ // Update search when text changes
239
+ let lastSearchValue = searchQuery;
240
+ const updateSearchFromInput = () => {
241
+ const value = searchInput.getValue() || '';
242
+ if (value !== lastSearchValue) {
243
+ lastSearchValue = value;
244
+ searchQuery = value;
245
+ updateSearchBox();
246
+ debouncedSearch(searchQuery);
247
+ }
248
+ };
249
+ // Handle text changes in the textbox
250
+ searchInput.on('keypress', () => {
251
+ // Use setImmediate to get the updated value after the key is processed
252
+ setImmediate(updateSearchFromInput);
253
+ });
254
+ // Handle submit and cancel
255
+ searchInput.on('submit', () => {
256
+ endSearch();
257
+ });
258
+ searchInput.key(['escape'], () => {
259
+ endSearch();
260
+ return false; // Prevent propagation
261
+ });
262
+ // Manual j/k navigation (since vi mode is disabled)
263
+ list.key(['j'], () => {
264
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
+ list.down();
266
+ state.screen.render();
267
+ });
268
+ list.key(['k'], () => {
269
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
270
+ list.up();
271
+ state.screen.render();
272
+ });
273
+ // Start search with / key
274
+ list.key(['/'], startSearch);
275
+ // Clear search with Ctrl+U
276
+ list.key(['C-u'], () => {
277
+ if (searchQuery) {
278
+ searchQuery = '';
279
+ updateSearchBox();
280
+ loadServers('');
281
+ }
282
+ });
283
+ // Refresh with R
284
+ list.key(['R'], () => {
285
+ createMcpRegistryScreen(state, searchQuery);
286
+ });
287
+ // Switch to local MCP list with l
288
+ list.key(['l'], async () => {
289
+ const { createMcpScreen } = await import('./mcp-setup.js');
290
+ createMcpScreen(state);
291
+ });
292
+ // Attribution
293
+ blessed.box({
294
+ parent: state.screen,
295
+ bottom: 1,
296
+ right: 2,
297
+ width: 28,
298
+ height: 1,
299
+ content: '{gray-fg}Powered by {/gray-fg}{cyan-fg}MCP Registry{/cyan-fg}',
300
+ tags: true,
301
+ });
302
+ createFooter(state, '↑↓ Navigate │ Enter Install │ / Search │ Ctrl+U Clear │ l Local │ q Back');
303
+ list.focus();
304
+ state.screen.render();
305
+ // Initial load if not loaded yet
306
+ if (!loaded) {
307
+ loadServers(searchQuery);
308
+ }
309
+ }
310
+ //# sourceMappingURL=mcp-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../../../src/ui/screens/mcp-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AppState } from '../app.js';
2
+ export declare function createMcpSearchScreen(state: AppState, query: string): Promise<void>;
3
+ export declare function createMcpScreen(state: AppState): Promise<void>;
4
+ //# sourceMappingURL=mcp-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-setup.d.ts","sourceRoot":"","sources":["../../../src/ui/screens/mcp-setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAyB1C,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgNzF;AAGD,wBAAsB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAsNpE"}