@1mcp/agent 0.15.0 → 0.17.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 (160) hide show
  1. package/README.md +115 -14
  2. package/build/commands/app/backups.d.ts +17 -0
  3. package/build/commands/app/backups.d.ts.map +1 -0
  4. package/build/commands/app/backups.js +162 -0
  5. package/build/commands/app/backups.js.map +1 -0
  6. package/build/commands/app/consolidate.d.ts +21 -0
  7. package/build/commands/app/consolidate.d.ts.map +1 -0
  8. package/build/commands/app/consolidate.js +383 -0
  9. package/build/commands/app/consolidate.js.map +1 -0
  10. package/build/commands/app/discover.d.ts +16 -0
  11. package/build/commands/app/discover.d.ts.map +1 -0
  12. package/build/commands/app/discover.js +79 -0
  13. package/build/commands/app/discover.js.map +1 -0
  14. package/build/commands/app/index.d.ts +12 -0
  15. package/build/commands/app/index.d.ts.map +1 -0
  16. package/build/commands/app/index.js +274 -0
  17. package/build/commands/app/index.js.map +1 -0
  18. package/build/commands/app/list.d.ts +16 -0
  19. package/build/commands/app/list.d.ts.map +1 -0
  20. package/build/commands/app/list.js +95 -0
  21. package/build/commands/app/list.js.map +1 -0
  22. package/build/commands/app/restore.d.ts +21 -0
  23. package/build/commands/app/restore.d.ts.map +1 -0
  24. package/build/commands/app/restore.js +265 -0
  25. package/build/commands/app/restore.js.map +1 -0
  26. package/build/commands/app/status.d.ts +16 -0
  27. package/build/commands/app/status.d.ts.map +1 -0
  28. package/build/commands/app/status.js +224 -0
  29. package/build/commands/app/status.js.map +1 -0
  30. package/build/commands/mcp/add.d.ts +19 -0
  31. package/build/commands/mcp/add.d.ts.map +1 -0
  32. package/build/commands/mcp/add.js +135 -0
  33. package/build/commands/mcp/add.js.map +1 -0
  34. package/build/commands/mcp/enable.d.ts +13 -0
  35. package/build/commands/mcp/enable.d.ts.map +1 -0
  36. package/build/commands/mcp/enable.js +100 -0
  37. package/build/commands/mcp/enable.js.map +1 -0
  38. package/build/commands/mcp/index.d.ts +12 -0
  39. package/build/commands/mcp/index.d.ts.map +1 -0
  40. package/build/commands/mcp/index.js +351 -0
  41. package/build/commands/mcp/index.js.map +1 -0
  42. package/build/commands/mcp/list.d.ts +11 -0
  43. package/build/commands/mcp/list.d.ts.map +1 -0
  44. package/build/commands/mcp/list.js +144 -0
  45. package/build/commands/mcp/list.js.map +1 -0
  46. package/build/commands/mcp/remove.d.ts +10 -0
  47. package/build/commands/mcp/remove.d.ts.map +1 -0
  48. package/build/commands/mcp/remove.js +89 -0
  49. package/build/commands/mcp/remove.js.map +1 -0
  50. package/build/commands/mcp/status.d.ts +10 -0
  51. package/build/commands/mcp/status.d.ts.map +1 -0
  52. package/build/commands/mcp/status.js +243 -0
  53. package/build/commands/mcp/status.js.map +1 -0
  54. package/build/commands/mcp/update.d.ts +18 -0
  55. package/build/commands/mcp/update.d.ts.map +1 -0
  56. package/build/commands/mcp/update.js +157 -0
  57. package/build/commands/mcp/update.js.map +1 -0
  58. package/build/commands/mcp/utils/configUtils.d.ts +64 -0
  59. package/build/commands/mcp/utils/configUtils.d.ts.map +1 -0
  60. package/build/commands/mcp/utils/configUtils.js +266 -0
  61. package/build/commands/mcp/utils/configUtils.js.map +1 -0
  62. package/build/commands/mcp/utils/doubleHyphenParser.d.ts +32 -0
  63. package/build/commands/mcp/utils/doubleHyphenParser.d.ts.map +1 -0
  64. package/build/commands/mcp/utils/doubleHyphenParser.js +61 -0
  65. package/build/commands/mcp/utils/doubleHyphenParser.js.map +1 -0
  66. package/build/commands/mcp/utils/validation.d.ts +33 -0
  67. package/build/commands/mcp/utils/validation.d.ts.map +1 -0
  68. package/build/commands/mcp/utils/validation.js +235 -0
  69. package/build/commands/mcp/utils/validation.js.map +1 -0
  70. package/build/constants.d.ts +12 -2
  71. package/build/constants.d.ts.map +1 -1
  72. package/build/constants.js +16 -2
  73. package/build/constants.js.map +1 -1
  74. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +96 -0
  75. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -0
  76. package/build/core/capabilities/asyncLoadingOrchestrator.js +256 -0
  77. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -0
  78. package/build/core/capabilities/capabilityAggregator.d.ts +114 -0
  79. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -0
  80. package/build/core/capabilities/capabilityAggregator.js +234 -0
  81. package/build/core/capabilities/capabilityAggregator.js.map +1 -0
  82. package/build/core/client/clientManager.d.ts +28 -0
  83. package/build/core/client/clientManager.d.ts.map +1 -1
  84. package/build/core/client/clientManager.js +120 -0
  85. package/build/core/client/clientManager.js.map +1 -1
  86. package/build/core/loading/loadingStateTracker.d.ts +128 -0
  87. package/build/core/loading/loadingStateTracker.d.ts.map +1 -0
  88. package/build/core/loading/loadingStateTracker.js +209 -0
  89. package/build/core/loading/loadingStateTracker.js.map +1 -0
  90. package/build/core/loading/mcpLoadingManager.d.ts +139 -0
  91. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -0
  92. package/build/core/loading/mcpLoadingManager.js +296 -0
  93. package/build/core/loading/mcpLoadingManager.js.map +1 -0
  94. package/build/core/notifications/notificationManager.d.ts +111 -0
  95. package/build/core/notifications/notificationManager.d.ts.map +1 -0
  96. package/build/core/notifications/notificationManager.js +232 -0
  97. package/build/core/notifications/notificationManager.js.map +1 -0
  98. package/build/core/server/agentConfig.d.ts +59 -0
  99. package/build/core/server/agentConfig.d.ts.map +1 -1
  100. package/build/core/server/agentConfig.js +82 -1
  101. package/build/core/server/agentConfig.js.map +1 -1
  102. package/build/core/server/serverManager.d.ts +1 -0
  103. package/build/core/server/serverManager.d.ts.map +1 -1
  104. package/build/core/server/serverManager.js +3 -0
  105. package/build/core/server/serverManager.js.map +1 -1
  106. package/build/index.js +123 -31
  107. package/build/index.js.map +1 -1
  108. package/build/server.d.ts +23 -2
  109. package/build/server.d.ts.map +1 -1
  110. package/build/server.js +83 -10
  111. package/build/server.js.map +1 -1
  112. package/build/services/healthService.d.ts +107 -0
  113. package/build/services/healthService.d.ts.map +1 -0
  114. package/build/services/healthService.js +294 -0
  115. package/build/services/healthService.js.map +1 -0
  116. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
  117. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
  118. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +243 -0
  119. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
  120. package/build/transport/http/routes/healthRoutes.d.ts +8 -0
  121. package/build/transport/http/routes/healthRoutes.d.ts.map +1 -0
  122. package/build/transport/http/routes/healthRoutes.js +282 -0
  123. package/build/transport/http/routes/healthRoutes.js.map +1 -0
  124. package/build/transport/http/routes/sseRoutes.d.ts +2 -1
  125. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  126. package/build/transport/http/routes/sseRoutes.js +13 -1
  127. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  128. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  129. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  130. package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
  131. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  132. package/build/transport/http/server.d.ts +7 -1
  133. package/build/transport/http/server.d.ts.map +1 -1
  134. package/build/transport/http/server.js +17 -3
  135. package/build/transport/http/server.js.map +1 -1
  136. package/build/transport/transportFactory.d.ts +4 -0
  137. package/build/transport/transportFactory.d.ts.map +1 -1
  138. package/build/transport/transportFactory.js +1 -1
  139. package/build/transport/transportFactory.js.map +1 -1
  140. package/build/utils/appDiscovery.d.ts +75 -0
  141. package/build/utils/appDiscovery.d.ts.map +1 -0
  142. package/build/utils/appDiscovery.js +358 -0
  143. package/build/utils/appDiscovery.js.map +1 -0
  144. package/build/utils/appPresets.d.ts +88 -0
  145. package/build/utils/appPresets.d.ts.map +1 -0
  146. package/build/utils/appPresets.js +430 -0
  147. package/build/utils/appPresets.js.map +1 -0
  148. package/build/utils/backupManager.d.ts +61 -0
  149. package/build/utils/backupManager.d.ts.map +1 -0
  150. package/build/utils/backupManager.js +314 -0
  151. package/build/utils/backupManager.js.map +1 -0
  152. package/build/utils/urlDetection.d.ts +35 -0
  153. package/build/utils/urlDetection.d.ts.map +1 -0
  154. package/build/utils/urlDetection.js +115 -0
  155. package/build/utils/urlDetection.js.map +1 -0
  156. package/build/utils/validationHelpers.d.ts +62 -0
  157. package/build/utils/validationHelpers.d.ts.map +1 -0
  158. package/build/utils/validationHelpers.js +252 -0
  159. package/build/utils/validationHelpers.js.map +1 -0
  160. package/package.json +25 -3
@@ -0,0 +1,383 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import readline from 'readline';
4
+ import { getServer1mcpUrl, validateServer1mcpUrl } from '../../utils/urlDetection.js';
5
+ import { discoverAppConfigs, handleMultipleConfigs, extractAndFilterServers, generateAppConfig, checkConsolidationStatus, } from '../../utils/appDiscovery.js';
6
+ import { isAppSupported, isAppConfigurable, generateManualInstructions, getAppPreset, showPlatformWarningIfNeeded, } from '../../utils/appPresets.js';
7
+ import { validateOperation, generateOperationPreview } from '../../utils/validationHelpers.js';
8
+ import { createBackup, withFileLock } from '../../utils/backupManager.js';
9
+ import { getAppBackupDir } from '../../constants.js';
10
+ import { McpConfigManager } from '../../config/mcpConfigManager.js';
11
+ import { setServer } from '../mcp/utils/configUtils.js';
12
+ /**
13
+ * Main consolidate command handler
14
+ */
15
+ export async function consolidateCommand(options) {
16
+ const appNames = options['app-name'];
17
+ // Check if app names were provided
18
+ if (!appNames || appNames.length === 0) {
19
+ console.error('āŒ Error: No application names provided.');
20
+ console.log('Please specify at least one application to consolidate.');
21
+ console.log('Example: npx @1mcp/agent app consolidate claude-desktop');
22
+ console.log('Use "npx @1mcp/agent app list" to see supported applications.');
23
+ process.exit(1);
24
+ }
25
+ // Show platform warning if needed
26
+ showPlatformWarningIfNeeded();
27
+ console.log('šŸ” Starting MCP server consolidation...\n');
28
+ // Validate all app names first
29
+ const invalidApps = appNames.filter((app) => !isAppSupported(app));
30
+ if (invalidApps.length > 0) {
31
+ console.error(`āŒ Unsupported applications: ${invalidApps.join(', ')}`);
32
+ console.log('Use "npx @1mcp/agent app list" to see supported applications.');
33
+ process.exit(1);
34
+ }
35
+ // Get 1mcp server URL
36
+ const serverUrl = await getServer1mcpUrl(options.url);
37
+ console.log(`šŸ”— Using 1mcp server: ${serverUrl}`);
38
+ // Validate server connectivity (unless force mode)
39
+ if (!options.force) {
40
+ const connectivityCheck = await validateServer1mcpUrl(serverUrl);
41
+ if (!connectivityCheck.valid) {
42
+ console.error(`āŒ Cannot connect to 1mcp server: ${connectivityCheck.error}`);
43
+ console.log('Make sure the 1mcp server is running or use --force to skip validation.');
44
+ process.exit(1);
45
+ }
46
+ console.log('āœ… 1mcp server connectivity verified\n');
47
+ }
48
+ const results = [];
49
+ // Process each app
50
+ for (const appName of appNames) {
51
+ console.log(`\nšŸ” Processing ${getAppPreset(appName)?.displayName || appName}...`);
52
+ try {
53
+ const result = await consolidateApp(appName, serverUrl, options);
54
+ results.push(result);
55
+ // Display result
56
+ if (result.status === 'success') {
57
+ console.log(`āœ… ${result.message}`);
58
+ if (result.serversImported !== undefined) {
59
+ console.log(`šŸ“‹ Imported ${result.serversImported} MCP servers`);
60
+ }
61
+ if (result.backupPath) {
62
+ console.log(`šŸ’¾ Backup created: ${result.backupPath}`);
63
+ }
64
+ }
65
+ else if (result.status === 'manual') {
66
+ console.log(`šŸ”§ ${result.message}`);
67
+ if (result.manualInstructions) {
68
+ console.log(result.manualInstructions);
69
+ }
70
+ }
71
+ else if (result.status === 'skipped') {
72
+ console.log(`ā­ļø ${result.message}`);
73
+ }
74
+ else {
75
+ console.error(`āŒ ${result.message}`);
76
+ }
77
+ }
78
+ catch (error) {
79
+ const errorResult = {
80
+ app: appName,
81
+ status: 'failed',
82
+ message: `Failed to consolidate ${appName}: ${error.message}`,
83
+ };
84
+ results.push(errorResult);
85
+ console.error(`āŒ ${errorResult.message}`);
86
+ }
87
+ }
88
+ // Final summary
89
+ console.log('\n' + '='.repeat(60));
90
+ console.log('šŸ“Š Consolidation Summary:');
91
+ const successful = results.filter((r) => r.status === 'success');
92
+ const manual = results.filter((r) => r.status === 'manual');
93
+ const failed = results.filter((r) => r.status === 'failed');
94
+ const skipped = results.filter((r) => r.status === 'skipped');
95
+ console.log(`āœ… Successful: ${successful.length}`);
96
+ console.log(`šŸ”§ Manual setup required: ${manual.length}`);
97
+ console.log(`ā­ļø Skipped: ${skipped.length}`);
98
+ console.log(`āŒ Failed: ${failed.length}`);
99
+ if (successful.length > 0) {
100
+ console.log('\nšŸ”„ Restart the following applications to use consolidated configuration:');
101
+ successful.forEach((result) => {
102
+ console.log(` - ${getAppPreset(result.app)?.displayName || result.app}`);
103
+ });
104
+ console.log('\nšŸ’” To undo consolidation, use:');
105
+ console.log(' npx @1mcp/agent app restore <app-name>');
106
+ }
107
+ if (failed.length > 0) {
108
+ process.exit(1);
109
+ }
110
+ }
111
+ /**
112
+ * Consolidate a single application
113
+ */
114
+ async function consolidateApp(appName, serverUrl, options) {
115
+ // Check if app is already consolidated (unless force mode)
116
+ if (!options.force) {
117
+ const consolidationStatus = await checkConsolidationStatus(appName);
118
+ if (consolidationStatus.isConsolidated) {
119
+ return {
120
+ app: appName,
121
+ status: 'skipped',
122
+ message: `Already consolidated to ${consolidationStatus.consolidatedUrl}`,
123
+ serversImported: 0,
124
+ };
125
+ }
126
+ }
127
+ // Check if app is configurable
128
+ if (!isAppConfigurable(appName)) {
129
+ // Manual setup required
130
+ const instructions = generateManualInstructions(appName, serverUrl);
131
+ return {
132
+ app: appName,
133
+ status: 'manual',
134
+ message: `${getAppPreset(appName)?.displayName || appName} requires manual configuration`,
135
+ manualInstructions: instructions,
136
+ };
137
+ }
138
+ // Manual-only mode
139
+ if (options['manual-only']) {
140
+ const instructions = generateManualInstructions(appName, serverUrl);
141
+ return {
142
+ app: appName,
143
+ status: 'manual',
144
+ message: `Manual setup instructions for ${getAppPreset(appName)?.displayName || appName}`,
145
+ manualInstructions: instructions,
146
+ };
147
+ }
148
+ // Discover configurations
149
+ const discovery = await discoverAppConfigs(appName);
150
+ if (discovery.configs.length === 0) {
151
+ return {
152
+ app: appName,
153
+ status: 'skipped',
154
+ message: `No configuration files found for ${getAppPreset(appName)?.displayName || appName}`,
155
+ };
156
+ }
157
+ // Handle multiple configs
158
+ const strategy = handleMultipleConfigs(discovery);
159
+ if (strategy.action === 'none') {
160
+ return {
161
+ app: appName,
162
+ status: 'skipped',
163
+ message: `No valid configuration found for ${getAppPreset(appName)?.displayName || appName}`,
164
+ };
165
+ }
166
+ let targetConfig = strategy.target;
167
+ // If multiple configs and not in yes mode, ask user to choose
168
+ if (strategy.action === 'choose' && !options.yes && !options['dry-run']) {
169
+ targetConfig = await promptUserChoice(strategy.options);
170
+ }
171
+ // Extract servers
172
+ const servers = extractAndFilterServers(targetConfig.content, getAppPreset(appName)?.configFormat);
173
+ if (servers.length === 0 && !options.force) {
174
+ return {
175
+ app: appName,
176
+ status: 'skipped',
177
+ message: `No MCP servers found in ${getAppPreset(appName)?.displayName || appName} configuration`,
178
+ };
179
+ }
180
+ // Validate operation
181
+ if (!options.force) {
182
+ const validation = await validateOperation(targetConfig.path, targetConfig.content, serverUrl);
183
+ if (!validation.canProceed) {
184
+ const errors = [
185
+ ...validation.configValidation.errors,
186
+ ...validation.permissionValidation.errors,
187
+ ...validation.connectivityValidation.errors,
188
+ ];
189
+ throw new Error(`Validation failed: ${errors.join(', ')}`);
190
+ }
191
+ }
192
+ // Generate preview with correct backup path
193
+ const timestamp = Date.now();
194
+ const dateStr = new Date(timestamp).toISOString().replace(/[:.-]/g, '').slice(0, 15); // YYYYMMDDTHHMMSS
195
+ const appBackupDir = getAppBackupDir(appName);
196
+ const backupFileName = `${dateStr}_consolidate.backup`;
197
+ const backupPath = path.join(appBackupDir, backupFileName);
198
+ const preview = generateOperationPreview(appName, targetConfig.path, servers.map((s) => s.name), serverUrl, backupPath);
199
+ // Show preview and get confirmation
200
+ if (!options.yes && !options['dry-run']) {
201
+ const confirmed = await confirmOperation(preview);
202
+ if (!confirmed) {
203
+ return {
204
+ app: appName,
205
+ status: 'skipped',
206
+ message: `Consolidation cancelled by user for ${getAppPreset(appName)?.displayName || appName}`,
207
+ };
208
+ }
209
+ }
210
+ // Dry run mode - just show what would happen
211
+ if (options['dry-run']) {
212
+ console.log('\nšŸ“‹ Dry Run Preview:');
213
+ console.log(`App: ${getAppPreset(appName)?.displayName || appName}`);
214
+ console.log(`Config: ${targetConfig.path}`);
215
+ console.log(`Servers to import: ${servers.map((s) => s.name).join(', ') || 'none'}`);
216
+ console.log(`Replacement URL: ${serverUrl}`);
217
+ console.log(`Backup would be created: ${backupPath}`);
218
+ return {
219
+ app: appName,
220
+ status: 'success',
221
+ message: `Dry run completed for ${getAppPreset(appName)?.displayName || appName}`,
222
+ serversImported: servers.length,
223
+ };
224
+ }
225
+ // Create backup
226
+ const backup = createBackup(targetConfig.path, appName, 'consolidate', servers.length);
227
+ // Backup-only mode
228
+ if (options['backup-only']) {
229
+ return {
230
+ app: appName,
231
+ status: 'success',
232
+ message: `Backup created for ${getAppPreset(appName)?.displayName || appName}`,
233
+ backupPath: backup.backupPath,
234
+ };
235
+ }
236
+ // Perform consolidation with file locking
237
+ await withFileLock(targetConfig.path, async () => {
238
+ try {
239
+ // Import servers to 1mcp
240
+ if (servers.length > 0) {
241
+ await importServersTo1mcp(servers);
242
+ }
243
+ // Generate new config
244
+ const newConfig = generateAppConfig(appName, serverUrl);
245
+ // Write new configuration
246
+ fs.writeFileSync(targetConfig.path, JSON.stringify(newConfig, null, 2));
247
+ }
248
+ catch (error) {
249
+ // Rollback on failure
250
+ fs.copyFileSync(backup.backupPath, backup.originalPath);
251
+ throw error;
252
+ }
253
+ });
254
+ return {
255
+ app: appName,
256
+ status: 'success',
257
+ message: `Successfully consolidated ${getAppPreset(appName)?.displayName || appName}`,
258
+ serversImported: servers.length,
259
+ backupPath: backup.backupPath,
260
+ };
261
+ }
262
+ /**
263
+ * Convert MCPServerConfig to MCPServerParams format
264
+ */
265
+ function convertToMCPServerParams(server) {
266
+ const params = {
267
+ disabled: false,
268
+ };
269
+ // Determine transport type and set appropriate parameters
270
+ if (server.command) {
271
+ // Stdio transport
272
+ params.type = 'stdio';
273
+ params.command = server.command;
274
+ if (server.args && server.args.length > 0) {
275
+ params.args = server.args;
276
+ }
277
+ if (server.env) {
278
+ params.env = server.env;
279
+ }
280
+ }
281
+ else if (server.url) {
282
+ // HTTP transport - determine if SSE or regular HTTP
283
+ if (server.url.includes('/sse') || server.url.includes('text/event-stream')) {
284
+ params.type = 'sse';
285
+ }
286
+ else {
287
+ params.type = 'http';
288
+ }
289
+ params.url = server.url;
290
+ }
291
+ else {
292
+ throw new Error(`Invalid server configuration: ${server.name} has neither command nor url`);
293
+ }
294
+ return params;
295
+ }
296
+ /**
297
+ * Import MCP servers to 1mcp configuration
298
+ */
299
+ async function importServersTo1mcp(servers) {
300
+ const mcpConfig = McpConfigManager.getInstance();
301
+ // Get current transport config
302
+ const currentConfig = mcpConfig.getTransportConfig();
303
+ for (const server of servers) {
304
+ // Check if server already exists
305
+ if (currentConfig[server.name]) {
306
+ console.log(`āš ļø Server "${server.name}" already exists in 1mcp config - skipping`);
307
+ continue;
308
+ }
309
+ try {
310
+ // Convert to proper MCPServerParams format
311
+ const serverParams = convertToMCPServerParams(server);
312
+ // Add server to configuration
313
+ setServer(server.name, serverParams);
314
+ console.log(`āœ… Imported server: ${server.name}`);
315
+ // Log what was imported
316
+ if (serverParams.type === 'stdio') {
317
+ console.log(` Type: stdio`);
318
+ console.log(` Command: ${serverParams.command}`);
319
+ if (serverParams.args)
320
+ console.log(` Args: ${serverParams.args.join(' ')}`);
321
+ }
322
+ else if (serverParams.type === 'http' || serverParams.type === 'sse') {
323
+ console.log(` Type: ${serverParams.type}`);
324
+ console.log(` URL: ${serverParams.url}`);
325
+ }
326
+ }
327
+ catch (error) {
328
+ console.error(`āŒ Failed to import server "${server.name}": ${error.message}`);
329
+ }
330
+ }
331
+ }
332
+ /**
333
+ * Prompt user to choose from multiple configurations
334
+ */
335
+ async function promptUserChoice(configs) {
336
+ console.log('\nšŸ“‹ Multiple configurations found:');
337
+ configs.forEach((config, index) => {
338
+ console.log(`${index + 1}. ${config.path} (${config.level}, ${config.servers.length} servers)`);
339
+ });
340
+ const rl = readline.createInterface({
341
+ input: process.stdin,
342
+ output: process.stdout,
343
+ });
344
+ return new Promise((resolve) => {
345
+ rl.question('\nWhich configuration would you like to use? (number): ', (answer) => {
346
+ rl.close();
347
+ const choice = parseInt(answer, 10);
348
+ if (choice >= 1 && choice <= configs.length) {
349
+ resolve(configs[choice - 1]);
350
+ }
351
+ else {
352
+ console.log('Invalid choice, using first option.');
353
+ resolve(configs[0]);
354
+ }
355
+ });
356
+ });
357
+ }
358
+ /**
359
+ * Confirm operation with user
360
+ */
361
+ async function confirmOperation(preview) {
362
+ console.log('\nšŸ“‹ Operation Preview:');
363
+ console.log(`App: ${preview.app}`);
364
+ console.log(`Config: ${preview.configPath}`);
365
+ console.log(`Servers to import: ${preview.serversToImport.join(', ') || 'none'}`);
366
+ console.log(`Replacement URL: ${preview.replacementUrl}`);
367
+ console.log(`Backup will be created: ${preview.backupPath}`);
368
+ if (preview.risks.length > 0) {
369
+ console.log('\nāš ļø Potential Issues:');
370
+ preview.risks.forEach((risk) => console.log(` - ${risk}`));
371
+ }
372
+ const rl = readline.createInterface({
373
+ input: process.stdin,
374
+ output: process.stdout,
375
+ });
376
+ return new Promise((resolve) => {
377
+ rl.question('\nAre you sure you want to proceed? (y/n): ', (answer) => {
378
+ rl.close();
379
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
380
+ });
381
+ });
382
+ }
383
+ //# sourceMappingURL=consolidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../../../src/commands/app/consolidate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Discover command - Find installed desktop applications with MCP configurations.
3
+ *
4
+ * Scans the system for installed applications and their existing
5
+ * MCP server configurations.
6
+ */
7
+ interface DiscoverOptions {
8
+ 'show-empty': boolean;
9
+ 'show-paths': boolean;
10
+ }
11
+ /**
12
+ * Main discover command handler
13
+ */
14
+ export declare function discoverCommand(options: DiscoverOptions): Promise<void>;
15
+ export {};
16
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/commands/app/discover.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF7E"}
@@ -0,0 +1,79 @@
1
+ import { discoverInstalledApps } from '../../utils/appDiscovery.js';
2
+ import { getAppPreset, showPlatformWarningIfNeeded } from '../../utils/appPresets.js';
3
+ /**
4
+ * Main discover command handler
5
+ */
6
+ export async function discoverCommand(options) {
7
+ // Show platform warning if needed
8
+ showPlatformWarningIfNeeded();
9
+ console.log('šŸ” Discovering installed desktop applications with MCP configurations...\n');
10
+ try {
11
+ const discovery = await discoverInstalledApps();
12
+ // Filter based on options
13
+ let configurableApps = discovery.configurable;
14
+ if (!options['show-empty']) {
15
+ configurableApps = configurableApps.filter((app) => app.hasConfig && app.serverCount > 0);
16
+ }
17
+ // Show configurable apps
18
+ if (configurableApps.length > 0) {
19
+ console.log('āœ… Found Applications with MCP Configurations:\n');
20
+ configurableApps.forEach((app) => {
21
+ const preset = getAppPreset(app.name);
22
+ const statusIcon = app.hasConfig ? (app.serverCount > 0 ? '🟢' : '🟔') : 'šŸ”“';
23
+ console.log(`${statusIcon} ${preset?.displayName || app.name} (${app.name})`);
24
+ if (app.hasConfig) {
25
+ console.log(` šŸ“‹ Configurations found: ${app.configCount}`);
26
+ console.log(` šŸ”§ MCP servers: ${app.serverCount}`);
27
+ if (options['show-paths'] && app.paths.length > 0) {
28
+ console.log(' šŸ“ Configuration paths:');
29
+ app.paths.forEach((path) => {
30
+ console.log(` ${path}`);
31
+ });
32
+ }
33
+ }
34
+ else {
35
+ console.log(' ⚪ No configuration files found');
36
+ }
37
+ console.log();
38
+ });
39
+ }
40
+ else {
41
+ console.log('ā„¹ļø No applications with MCP configurations found.');
42
+ if (!options['show-empty']) {
43
+ console.log('\nTip: Use --show-empty to see all supported applications, including those without configurations.');
44
+ }
45
+ }
46
+ // Show manual-only apps
47
+ if (discovery.manualOnly.length > 0) {
48
+ console.log('šŸ”§ Manual Setup Applications (Configuration not accessible):');
49
+ discovery.manualOnly.forEach((appName) => {
50
+ const preset = getAppPreset(appName);
51
+ console.log(` šŸ“± ${preset?.displayName || appName} (${appName})`);
52
+ });
53
+ console.log();
54
+ }
55
+ // Summary
56
+ const totalWithServers = configurableApps.filter((app) => app.serverCount > 0).length;
57
+ const totalServers = configurableApps.reduce((sum, app) => sum + app.serverCount, 0);
58
+ console.log('šŸ“Š Discovery Summary:');
59
+ console.log(` šŸŽÆ Apps with MCP servers: ${totalWithServers}`);
60
+ console.log(` šŸ”§ Total MCP servers found: ${totalServers}`);
61
+ console.log(` šŸ“± Manual setup apps: ${discovery.manualOnly.length}`);
62
+ if (totalWithServers > 0) {
63
+ console.log('\nšŸ’” Next steps:');
64
+ console.log(' 1. Review the applications and their MCP servers above');
65
+ console.log(' 2. Consolidate into 1mcp: npx @1mcp/agent app consolidate <app-name>');
66
+ console.log(' 3. Start 1mcp server to proxy all your MCP servers');
67
+ console.log('\nšŸš€ Quick consolidation (all apps):');
68
+ const appsWithServers = configurableApps.filter((app) => app.serverCount > 0).map((app) => app.name);
69
+ if (appsWithServers.length > 0) {
70
+ console.log(` npx @1mcp/agent app consolidate ${appsWithServers.join(' ')}`);
71
+ }
72
+ }
73
+ }
74
+ catch (error) {
75
+ console.error(`āŒ Discovery failed: ${error.message}`);
76
+ process.exit(1);
77
+ }
78
+ }
79
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/commands/app/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Argv } from 'yargs';
2
+ /**
3
+ * App command group entry point.
4
+ *
5
+ * Manages desktop application MCP configurations, allowing users to
6
+ * consolidate MCP servers from apps into 1mcp and restore them when needed.
7
+ */
8
+ /**
9
+ * Register app command group and subcommands
10
+ */
11
+ export declare function setupAppCommands(yargs: Argv): Argv;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAGlC;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CA2QlD"}