@1mcp/agent 0.16.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 (156) hide show
  1. package/README.md +37 -2
  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 +11 -2
  71. package/build/constants.d.ts.map +1 -1
  72. package/build/constants.js +15 -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 +50 -0
  99. package/build/core/server/agentConfig.d.ts.map +1 -1
  100. package/build/core/server/agentConfig.js +68 -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 +115 -32
  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/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
  113. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
  114. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +243 -0
  115. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
  116. package/build/transport/http/routes/healthRoutes.d.ts +2 -1
  117. package/build/transport/http/routes/healthRoutes.d.ts.map +1 -1
  118. package/build/transport/http/routes/healthRoutes.js +170 -1
  119. package/build/transport/http/routes/healthRoutes.js.map +1 -1
  120. package/build/transport/http/routes/sseRoutes.d.ts +2 -1
  121. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  122. package/build/transport/http/routes/sseRoutes.js +13 -1
  123. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  124. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  125. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  126. package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
  127. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  128. package/build/transport/http/server.d.ts +7 -1
  129. package/build/transport/http/server.d.ts.map +1 -1
  130. package/build/transport/http/server.js +15 -4
  131. package/build/transport/http/server.js.map +1 -1
  132. package/build/transport/transportFactory.d.ts +4 -0
  133. package/build/transport/transportFactory.d.ts.map +1 -1
  134. package/build/transport/transportFactory.js +1 -1
  135. package/build/transport/transportFactory.js.map +1 -1
  136. package/build/utils/appDiscovery.d.ts +75 -0
  137. package/build/utils/appDiscovery.d.ts.map +1 -0
  138. package/build/utils/appDiscovery.js +358 -0
  139. package/build/utils/appDiscovery.js.map +1 -0
  140. package/build/utils/appPresets.d.ts +88 -0
  141. package/build/utils/appPresets.d.ts.map +1 -0
  142. package/build/utils/appPresets.js +430 -0
  143. package/build/utils/appPresets.js.map +1 -0
  144. package/build/utils/backupManager.d.ts +61 -0
  145. package/build/utils/backupManager.d.ts.map +1 -0
  146. package/build/utils/backupManager.js +314 -0
  147. package/build/utils/backupManager.js.map +1 -0
  148. package/build/utils/urlDetection.d.ts +35 -0
  149. package/build/utils/urlDetection.d.ts.map +1 -0
  150. package/build/utils/urlDetection.js +115 -0
  151. package/build/utils/urlDetection.js.map +1 -0
  152. package/build/utils/validationHelpers.d.ts +62 -0
  153. package/build/utils/validationHelpers.d.ts.map +1 -0
  154. package/build/utils/validationHelpers.js +252 -0
  155. package/build/utils/validationHelpers.js.map +1 -0
  156. package/package.json +9 -2
@@ -0,0 +1,252 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ /**
5
+ * Validate application configuration file
6
+ */
7
+ export function validateAppConfig(configPath, content) {
8
+ const result = {
9
+ valid: true,
10
+ errors: [],
11
+ warnings: [],
12
+ fixable: false,
13
+ };
14
+ // JSON structure validation
15
+ if (!content || typeof content !== 'object') {
16
+ result.valid = false;
17
+ result.errors.push('Invalid JSON structure');
18
+ return result;
19
+ }
20
+ // Check for MCP servers section
21
+ if (!content.mcpServers && !content.servers) {
22
+ result.warnings.push('No MCP servers section found');
23
+ }
24
+ // Server configuration validation
25
+ const servers = content.mcpServers || content.servers || {};
26
+ Object.entries(servers).forEach(([name, config]) => {
27
+ if (!config || typeof config !== 'object') {
28
+ result.errors.push(`Server "${name}" has invalid configuration`);
29
+ return;
30
+ }
31
+ if (!config.command && !config.url) {
32
+ result.errors.push(`Server "${name}" missing command or url`);
33
+ }
34
+ if (name === '1mcp') {
35
+ result.warnings.push('Existing 1mcp server will be replaced');
36
+ }
37
+ // Validate URL format if present
38
+ if (config.url) {
39
+ try {
40
+ new URL(config.url);
41
+ }
42
+ catch {
43
+ result.errors.push(`Server "${name}" has invalid URL format`);
44
+ }
45
+ }
46
+ // Validate command format if present
47
+ if (config.command && typeof config.command !== 'string') {
48
+ result.errors.push(`Server "${name}" command must be a string`);
49
+ }
50
+ });
51
+ result.valid = result.errors.length === 0;
52
+ result.fixable = result.errors.every((error) => error.includes('missing command') || error.includes('invalid format') || error.includes('invalid URL'));
53
+ return result;
54
+ }
55
+ /**
56
+ * Validate 1mcp server connectivity
57
+ */
58
+ export async function validateServer1mcpConnection(url) {
59
+ try {
60
+ // Test basic connectivity using OAuth endpoint (which always exists)
61
+ const baseUrl = url.replace('/mcp', '');
62
+ const oauthResponse = await fetch(`${baseUrl}/oauth/`, {
63
+ signal: AbortSignal.timeout(5000),
64
+ });
65
+ if (!oauthResponse.ok) {
66
+ return {
67
+ valid: false,
68
+ errors: [`1mcp server not responding (HTTP ${oauthResponse.status})`],
69
+ warnings: [],
70
+ fixable: true,
71
+ };
72
+ }
73
+ // For MCP endpoint, we just verify OAuth is working since MCP requires POST with specific payload
74
+ // The OAuth endpoint responding successfully indicates the server is properly running
75
+ return {
76
+ valid: true,
77
+ errors: [],
78
+ warnings: [],
79
+ fixable: false,
80
+ };
81
+ }
82
+ catch (error) {
83
+ return {
84
+ valid: false,
85
+ errors: [`Cannot connect to 1mcp server: ${error.message}`],
86
+ warnings: ['Make sure 1mcp server is running'],
87
+ fixable: true,
88
+ };
89
+ }
90
+ }
91
+ /**
92
+ * Handle file permission errors with specific diagnostics
93
+ */
94
+ export function handlePermissionError(filePath, error) {
95
+ const dirPath = path.dirname(filePath);
96
+ try {
97
+ const stats = fs.statSync(dirPath);
98
+ const currentUser = os.userInfo();
99
+ // Specific permission diagnostics
100
+ if (error.code === 'EACCES') {
101
+ if (stats.uid !== currentUser.uid) {
102
+ return `Configuration directory owned by different user.
103
+ Fix: chown -R ${currentUser.username} "${dirPath}"
104
+ Alternative: Copy config to your user directory`;
105
+ }
106
+ if (!(stats.mode & 0o200)) {
107
+ return `Configuration directory is read-only.
108
+ Fix: chmod u+w "${dirPath}"`;
109
+ }
110
+ return `Permission denied. Check directory permissions:
111
+ Current: ${stats.mode.toString(8)}
112
+ Required: Read/write access
113
+ Fix: chmod u+rw "${dirPath}"`;
114
+ }
115
+ if (error.code === 'ENOENT') {
116
+ return `Configuration directory does not exist.
117
+ The application may not be installed or configured yet.
118
+ Fix: Create directory "mkdir -p ${dirPath}" and run application first`;
119
+ }
120
+ if (error.code === 'EBUSY' || error.code === 'ETXTBSY') {
121
+ return `Configuration file is currently in use.
122
+ Fix: Close the application and try again`;
123
+ }
124
+ }
125
+ catch (_statError) {
126
+ return `Cannot access configuration directory: ${error.message}
127
+ Try: Check if the path exists and you have proper permissions`;
128
+ }
129
+ return `Unexpected permission error: ${error.message}
130
+ Last resort: Run with elevated permissions (not recommended)`;
131
+ }
132
+ /**
133
+ * Validate file system permissions for configuration operations
134
+ */
135
+ export function validateFilePermissions(configPath) {
136
+ const result = {
137
+ valid: true,
138
+ errors: [],
139
+ warnings: [],
140
+ fixable: true,
141
+ };
142
+ const dirPath = path.dirname(configPath);
143
+ try {
144
+ // Check if directory exists
145
+ if (!fs.existsSync(dirPath)) {
146
+ result.valid = false;
147
+ result.errors.push(`Configuration directory does not exist: ${dirPath}`);
148
+ return result;
149
+ }
150
+ // Check directory permissions
151
+ try {
152
+ fs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK);
153
+ }
154
+ catch (error) {
155
+ result.valid = false;
156
+ result.errors.push(handlePermissionError(configPath, error));
157
+ return result;
158
+ }
159
+ // Check file permissions if file exists
160
+ if (fs.existsSync(configPath)) {
161
+ try {
162
+ fs.accessSync(configPath, fs.constants.R_OK | fs.constants.W_OK);
163
+ }
164
+ catch (error) {
165
+ result.valid = false;
166
+ result.errors.push(handlePermissionError(configPath, error));
167
+ return result;
168
+ }
169
+ }
170
+ }
171
+ catch (error) {
172
+ result.valid = false;
173
+ result.errors.push(`File system error: ${error.message}`);
174
+ }
175
+ return result;
176
+ }
177
+ /**
178
+ * Generate operation preview for user confirmation
179
+ */
180
+ export function generateOperationPreview(app, configPath, serversToImport, replacementUrl, backupPath) {
181
+ const risks = [];
182
+ // Check for potential issues
183
+ if (serversToImport.length === 0) {
184
+ risks.push('No MCP servers found to import');
185
+ }
186
+ if (serversToImport.length > 10) {
187
+ risks.push(`Large number of servers (${serversToImport.length}) - consolidation may take time`);
188
+ }
189
+ if (!fs.existsSync(configPath)) {
190
+ risks.push('Configuration file does not exist - will be created');
191
+ }
192
+ return {
193
+ app,
194
+ configPath,
195
+ serversToImport,
196
+ replacementUrl,
197
+ backupPath,
198
+ risks,
199
+ };
200
+ }
201
+ /**
202
+ * Validate operation before execution
203
+ */
204
+ export async function validateOperation(configPath, content, serverUrl) {
205
+ const configValidation = validateAppConfig(configPath, content);
206
+ const permissionValidation = validateFilePermissions(configPath);
207
+ const connectivityValidation = await validateServer1mcpConnection(serverUrl);
208
+ const canProceed = configValidation.valid && permissionValidation.valid && connectivityValidation.valid;
209
+ return {
210
+ configValidation,
211
+ permissionValidation,
212
+ connectivityValidation,
213
+ canProceed,
214
+ };
215
+ }
216
+ /**
217
+ * Validate that a path is safe (prevent path traversal attacks)
218
+ */
219
+ export function validateSafePath(filePath) {
220
+ const resolved = path.resolve(filePath);
221
+ const normalized = path.normalize(filePath);
222
+ // Check for path traversal attempts
223
+ if (normalized.includes('..')) {
224
+ return false;
225
+ }
226
+ // Check for dangerous paths (adjust based on your security requirements)
227
+ const dangerousPaths = ['/etc/', '/usr/', '/bin/', '/sbin/', '/var/'];
228
+ if (process.platform !== 'win32') {
229
+ for (const dangerous of dangerousPaths) {
230
+ if (resolved.startsWith(dangerous)) {
231
+ return false;
232
+ }
233
+ }
234
+ }
235
+ return true;
236
+ }
237
+ /**
238
+ * Validate JSON content safely
239
+ */
240
+ export function validateJsonContent(content) {
241
+ try {
242
+ const parsed = JSON.parse(content);
243
+ return { valid: true, parsed };
244
+ }
245
+ catch (error) {
246
+ return {
247
+ valid: false,
248
+ error: `Invalid JSON: ${error.message}`,
249
+ };
250
+ }
251
+ }
252
+ //# sourceMappingURL=validationHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationHelpers.js","sourceRoot":"","sources":["../../src/utils/validationHelpers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1mcp/agent",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "One MCP server to aggregate them all - A unified Model Context Protocol server implementation",
5
5
  "keywords": [
6
6
  "mcp",
@@ -59,6 +59,7 @@
59
59
  "cors": "^2.8.5",
60
60
  "express": "^5.1.0",
61
61
  "express-rate-limit": "^7.5.1",
62
+ "json5": "^2.2.3",
62
63
  "source-map-support": "^0.5.21",
63
64
  "uuid": "^11.1.0",
64
65
  "winston": "^3.17.0",
@@ -105,7 +106,7 @@
105
106
  "vitest": "^1.4.0"
106
107
  },
107
108
  "scripts": {
108
- "dev": "LOG_LEVEL=debug tsc-watch --project tsconfig.build.json --onSuccess \"node build/index.js --config ./mcp.json --port 3051 --enable-auth\"",
109
+ "dev": "LOG_LEVEL=debug tsc-watch --project tsconfig.build.json --onSuccess \"node build/index.js --config ./mcp.json --port 3051 --enable-auth --enable-async-loading\"",
109
110
  "build": "tsc --project tsconfig.build.json && node -e \"require('fs').chmodSync('build/index.js', '755')\"",
110
111
  "clean": "rm -rf build",
111
112
  "watch": "tsc --watch --project tsconfig.build.json",
@@ -122,6 +123,12 @@
122
123
  "test:e2e": "vitest run --config vitest.e2e.config.ts",
123
124
  "test:e2e:watch": "vitest --config vitest.e2e.config.ts",
124
125
  "test:e2e:coverage": "vitest run --config vitest.e2e.config.ts --coverage",
126
+ "test:e2e:commands": "vitest run --config vitest.e2e.config.ts test/e2e/commands/",
127
+ "test:e2e:commands:watch": "vitest --config vitest.e2e.config.ts test/e2e/commands/",
128
+ "test:e2e:mcp": "vitest run --config vitest.e2e.config.ts test/e2e/commands/mcp/",
129
+ "test:e2e:app": "vitest run --config vitest.e2e.config.ts test/e2e/commands/app/",
130
+ "test:e2e:integration": "vitest run --config vitest.e2e.config.ts test/e2e/commands/integration/",
131
+ "test:e2e:errors": "vitest run --config vitest.e2e.config.ts test/e2e/commands/error-scenarios.test.ts",
125
132
  "docs:dev": "vitepress dev docs",
126
133
  "docs:build": "vitepress build docs",
127
134
  "docs:preview": "vitepress preview docs"