@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
@@ -184,6 +184,126 @@ export class ClientManager {
184
184
  getClients() {
185
185
  return this.outboundConns;
186
186
  }
187
+ /**
188
+ * Creates a single client for async loading (used by McpLoadingManager)
189
+ * @param name The name of the client
190
+ * @param transport The transport to connect to
191
+ * @returns Promise that resolves when client is connected
192
+ */
193
+ async createSingleClient(name, transport) {
194
+ // Prevent concurrent creation of the same client
195
+ const existingPromise = this.connectionSemaphore.get(name);
196
+ if (existingPromise) {
197
+ await existingPromise;
198
+ return;
199
+ }
200
+ // Create connection promise
201
+ const connectionPromise = this.createSingleClientInternal(name, transport);
202
+ this.connectionSemaphore.set(name, connectionPromise);
203
+ try {
204
+ await connectionPromise;
205
+ }
206
+ finally {
207
+ this.connectionSemaphore.delete(name);
208
+ }
209
+ }
210
+ /**
211
+ * Internal method to create and connect a single client
212
+ */
213
+ async createSingleClientInternal(name, transport) {
214
+ logger.info(`Creating client for ${name}`);
215
+ // Store transport reference
216
+ this.transports[name] = transport;
217
+ try {
218
+ const client = this.createClient();
219
+ // Connect with retry logic
220
+ const connectedClient = await this.connectWithRetry(client, transport, name);
221
+ this.outboundConns.set(name, {
222
+ name,
223
+ transport,
224
+ client: connectedClient,
225
+ status: ClientStatus.Connected,
226
+ lastConnected: new Date(),
227
+ });
228
+ logger.info(`Client created for ${name}`);
229
+ connectedClient.onclose = () => {
230
+ const clientInfo = this.outboundConns.get(name);
231
+ if (clientInfo) {
232
+ clientInfo.status = ClientStatus.Disconnected;
233
+ }
234
+ logger.info(`Client ${name} disconnected`);
235
+ };
236
+ connectedClient.onerror = (error) => {
237
+ logger.error(`Client ${name} error: ${error}`);
238
+ };
239
+ }
240
+ catch (error) {
241
+ if (error instanceof OAuthRequiredError) {
242
+ // Handle OAuth required - set client to AwaitingOAuth status
243
+ logger.info(`OAuth authorization required for ${name}`);
244
+ // Try to get authorization URL from OAuth provider
245
+ let authorizationUrl;
246
+ try {
247
+ // Extract OAuth provider from transport if available
248
+ const oauthProvider = transport.oauthProvider;
249
+ if (oauthProvider && typeof oauthProvider.getAuthorizationUrl === 'function') {
250
+ authorizationUrl = oauthProvider.getAuthorizationUrl();
251
+ }
252
+ }
253
+ catch (urlError) {
254
+ logger.warn(`Could not extract authorization URL for ${name}:`, urlError);
255
+ }
256
+ this.outboundConns.set(name, {
257
+ name,
258
+ transport,
259
+ client: error.client,
260
+ status: ClientStatus.AwaitingOAuth,
261
+ authorizationUrl,
262
+ oauthStartTime: new Date(),
263
+ });
264
+ // Re-throw OAuth error for loading manager to handle
265
+ throw error;
266
+ }
267
+ else {
268
+ logger.error(`Failed to create client for ${name}: ${error}`);
269
+ this.outboundConns.set(name, {
270
+ name,
271
+ transport,
272
+ client: this.createClient(),
273
+ status: ClientStatus.Error,
274
+ lastError: error instanceof Error ? error : new Error(String(error)),
275
+ });
276
+ // Re-throw error for loading manager to handle
277
+ throw error;
278
+ }
279
+ }
280
+ }
281
+ /**
282
+ * Initialize clients storage without connecting (for async loading)
283
+ * @param transports Record of transport instances
284
+ * @returns Empty connections map (to be populated by async loading)
285
+ */
286
+ initializeClientsAsync(transports) {
287
+ this.transports = transports;
288
+ this.outboundConns.clear();
289
+ logger.info(`Initialized client storage for ${Object.keys(transports).length} transports`);
290
+ return this.outboundConns;
291
+ }
292
+ /**
293
+ * Get transport by name (used by loading manager for retries)
294
+ * @param name The transport name
295
+ * @returns The transport instance or undefined
296
+ */
297
+ getTransport(name) {
298
+ return this.transports[name];
299
+ }
300
+ /**
301
+ * Get all transport names
302
+ * @returns Array of transport names
303
+ */
304
+ getTransportNames() {
305
+ return Object.keys(this.transports);
306
+ }
187
307
  /**
188
308
  * Executes a client operation with error handling and retry logic
189
309
  * @param clientName The name of the client to use
@@ -1 +1 @@
1
- {"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientManager.js","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { EventEmitter } from 'events';
2
+ /**
3
+ * Enum representing possible MCP server loading states
4
+ */
5
+ export declare enum LoadingState {
6
+ /** Server initialization not started */
7
+ Pending = "pending",
8
+ /** Server is currently initializing */
9
+ Loading = "loading",
10
+ /** Server successfully initialized and connected */
11
+ Ready = "ready",
12
+ /** Server failed to initialize */
13
+ Failed = "failed",
14
+ /** Server requires OAuth authorization */
15
+ AwaitingOAuth = "awaiting_oauth",
16
+ /** Server initialization was cancelled */
17
+ Cancelled = "cancelled"
18
+ }
19
+ /**
20
+ * Detailed information about a server's loading progress
21
+ */
22
+ export interface ServerLoadingInfo {
23
+ readonly name: string;
24
+ readonly state: LoadingState;
25
+ startTime?: Date;
26
+ endTime?: Date;
27
+ duration?: number;
28
+ readonly error?: Error;
29
+ readonly authorizationUrl?: string;
30
+ oauthStartTime?: Date;
31
+ readonly retryCount: number;
32
+ readonly lastRetryTime?: Date;
33
+ readonly progress?: {
34
+ readonly phase: string;
35
+ readonly message?: string;
36
+ };
37
+ }
38
+ /**
39
+ * Overall loading statistics and summary
40
+ */
41
+ export interface LoadingSummary {
42
+ readonly totalServers: number;
43
+ readonly pending: number;
44
+ readonly loading: number;
45
+ readonly ready: number;
46
+ readonly failed: number;
47
+ readonly awaitingOAuth: number;
48
+ readonly cancelled: number;
49
+ readonly startTime: Date;
50
+ readonly isComplete: boolean;
51
+ readonly successRate: number;
52
+ readonly averageLoadTime?: number;
53
+ }
54
+ /**
55
+ * Events emitted by LoadingStateTracker
56
+ */
57
+ export interface LoadingStateEvents {
58
+ 'server-state-changed': (name: string, info: ServerLoadingInfo) => void;
59
+ 'loading-progress': (summary: LoadingSummary) => void;
60
+ 'loading-complete': (summary: LoadingSummary) => void;
61
+ 'server-ready': (name: string, info: ServerLoadingInfo) => void;
62
+ 'server-failed': (name: string, info: ServerLoadingInfo) => void;
63
+ 'oauth-required': (name: string, info: ServerLoadingInfo) => void;
64
+ }
65
+ /**
66
+ * Tracks the loading state of MCP servers during async initialization
67
+ *
68
+ * This class provides real-time visibility into server initialization progress,
69
+ * enabling the HTTP server to start immediately while MCP servers load in the background.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const tracker = new LoadingStateTracker();
74
+ * tracker.on('server-ready', (name) => console.log(`${name} is ready`));
75
+ * tracker.on('loading-complete', (summary) => console.log('All done!', summary));
76
+ *
77
+ * tracker.startLoading(['server1', 'server2']);
78
+ * tracker.updateServerState('server1', LoadingState.Loading, { phase: 'connecting' });
79
+ * tracker.updateServerState('server1', LoadingState.Ready);
80
+ * ```
81
+ */
82
+ export declare class LoadingStateTracker extends EventEmitter {
83
+ private servers;
84
+ private globalStartTime;
85
+ private loadingStarted;
86
+ constructor();
87
+ /**
88
+ * Initialize tracking for a list of servers
89
+ */
90
+ startLoading(serverNames: string[]): void;
91
+ /**
92
+ * Update the state of a specific server
93
+ */
94
+ updateServerState(name: string, state: LoadingState, updates?: Partial<Pick<ServerLoadingInfo, 'error' | 'authorizationUrl' | 'oauthStartTime' | 'progress'>>): void;
95
+ /**
96
+ * Increment retry count for a server
97
+ */
98
+ incrementRetryCount(name: string): void;
99
+ /**
100
+ * Get current state of a specific server
101
+ */
102
+ getServerState(name: string): ServerLoadingInfo | undefined;
103
+ /**
104
+ * Get all server states
105
+ */
106
+ getAllServerStates(): Map<string, ServerLoadingInfo>;
107
+ /**
108
+ * Get current loading summary
109
+ */
110
+ getSummary(): LoadingSummary;
111
+ /**
112
+ * Check if loading is complete (all servers in final state)
113
+ */
114
+ isLoadingComplete(): boolean;
115
+ /**
116
+ * Get servers in a specific state
117
+ */
118
+ getServersByState(state: LoadingState): ServerLoadingInfo[];
119
+ /**
120
+ * Reset all tracking state
121
+ */
122
+ reset(): void;
123
+ /**
124
+ * Emit progress event with current summary
125
+ */
126
+ private emitProgress;
127
+ }
128
+ //# sourceMappingURL=loadingStateTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadingStateTracker.d.ts","sourceRoot":"","sources":["../../../src/core/loading/loadingStateTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { EventEmitter } from 'events';
2
+ import logger from '../../logger/logger.js';
3
+ /**
4
+ * Enum representing possible MCP server loading states
5
+ */
6
+ export var LoadingState;
7
+ (function (LoadingState) {
8
+ /** Server initialization not started */
9
+ LoadingState["Pending"] = "pending";
10
+ /** Server is currently initializing */
11
+ LoadingState["Loading"] = "loading";
12
+ /** Server successfully initialized and connected */
13
+ LoadingState["Ready"] = "ready";
14
+ /** Server failed to initialize */
15
+ LoadingState["Failed"] = "failed";
16
+ /** Server requires OAuth authorization */
17
+ LoadingState["AwaitingOAuth"] = "awaiting_oauth";
18
+ /** Server initialization was cancelled */
19
+ LoadingState["Cancelled"] = "cancelled";
20
+ })(LoadingState || (LoadingState = {}));
21
+ /**
22
+ * Tracks the loading state of MCP servers during async initialization
23
+ *
24
+ * This class provides real-time visibility into server initialization progress,
25
+ * enabling the HTTP server to start immediately while MCP servers load in the background.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const tracker = new LoadingStateTracker();
30
+ * tracker.on('server-ready', (name) => console.log(`${name} is ready`));
31
+ * tracker.on('loading-complete', (summary) => console.log('All done!', summary));
32
+ *
33
+ * tracker.startLoading(['server1', 'server2']);
34
+ * tracker.updateServerState('server1', LoadingState.Loading, { phase: 'connecting' });
35
+ * tracker.updateServerState('server1', LoadingState.Ready);
36
+ * ```
37
+ */
38
+ export class LoadingStateTracker extends EventEmitter {
39
+ servers = new Map();
40
+ globalStartTime = new Date();
41
+ loadingStarted = false;
42
+ constructor() {
43
+ super();
44
+ this.setMaxListeners(50); // Allow many listeners for server events
45
+ }
46
+ /**
47
+ * Initialize tracking for a list of servers
48
+ */
49
+ startLoading(serverNames) {
50
+ this.loadingStarted = true;
51
+ this.globalStartTime = new Date();
52
+ for (const name of serverNames) {
53
+ this.servers.set(name, {
54
+ name,
55
+ state: LoadingState.Pending,
56
+ retryCount: 0,
57
+ });
58
+ }
59
+ logger.info(`Started tracking loading for ${serverNames.length} servers`);
60
+ this.emitProgress();
61
+ }
62
+ /**
63
+ * Update the state of a specific server
64
+ */
65
+ updateServerState(name, state, updates = {}) {
66
+ const existing = this.servers.get(name);
67
+ if (!existing) {
68
+ logger.warn(`Attempted to update unknown server: ${name}`);
69
+ return;
70
+ }
71
+ const now = new Date();
72
+ const info = {
73
+ ...existing,
74
+ state,
75
+ ...updates,
76
+ };
77
+ // Handle state-specific updates
78
+ switch (state) {
79
+ case LoadingState.Loading:
80
+ if (!info.startTime) {
81
+ info.startTime = now;
82
+ }
83
+ break;
84
+ case LoadingState.Ready:
85
+ case LoadingState.Failed:
86
+ case LoadingState.Cancelled:
87
+ info.endTime = now;
88
+ if (info.startTime) {
89
+ info.duration = now.getTime() - info.startTime.getTime();
90
+ }
91
+ break;
92
+ case LoadingState.AwaitingOAuth:
93
+ if (!info.oauthStartTime) {
94
+ info.oauthStartTime = now;
95
+ }
96
+ break;
97
+ }
98
+ this.servers.set(name, info);
99
+ logger.debug(`Server ${name} state changed to ${state}${updates.progress ? ` (${updates.progress.phase})` : ''}`);
100
+ // Emit specific events
101
+ this.emit('server-state-changed', name, info);
102
+ switch (state) {
103
+ case LoadingState.Ready:
104
+ this.emit('server-ready', name, info);
105
+ break;
106
+ case LoadingState.Failed:
107
+ this.emit('server-failed', name, info);
108
+ break;
109
+ case LoadingState.AwaitingOAuth:
110
+ this.emit('oauth-required', name, info);
111
+ break;
112
+ }
113
+ this.emitProgress();
114
+ }
115
+ /**
116
+ * Increment retry count for a server
117
+ */
118
+ incrementRetryCount(name) {
119
+ const info = this.servers.get(name);
120
+ if (info) {
121
+ const updated = {
122
+ ...info,
123
+ retryCount: info.retryCount + 1,
124
+ lastRetryTime: new Date(),
125
+ };
126
+ this.servers.set(name, updated);
127
+ logger.debug(`Server ${name} retry count: ${updated.retryCount}`);
128
+ }
129
+ }
130
+ /**
131
+ * Get current state of a specific server
132
+ */
133
+ getServerState(name) {
134
+ return this.servers.get(name);
135
+ }
136
+ /**
137
+ * Get all server states
138
+ */
139
+ getAllServerStates() {
140
+ return new Map(this.servers);
141
+ }
142
+ /**
143
+ * Get current loading summary
144
+ */
145
+ getSummary() {
146
+ const states = Array.from(this.servers.values());
147
+ const pending = states.filter((s) => s.state === LoadingState.Pending).length;
148
+ const loading = states.filter((s) => s.state === LoadingState.Loading).length;
149
+ const ready = states.filter((s) => s.state === LoadingState.Ready).length;
150
+ const failed = states.filter((s) => s.state === LoadingState.Failed).length;
151
+ const awaitingOAuth = states.filter((s) => s.state === LoadingState.AwaitingOAuth).length;
152
+ const cancelled = states.filter((s) => s.state === LoadingState.Cancelled).length;
153
+ const completedStates = states.filter((s) => s.state === LoadingState.Ready || s.state === LoadingState.Failed || s.state === LoadingState.Cancelled);
154
+ const isComplete = pending === 0 && loading === 0;
155
+ const successRate = states.length > 0 ? (ready / states.length) * 100 : 0;
156
+ const averageLoadTime = completedStates.length > 0
157
+ ? completedStates.filter((s) => s.duration !== undefined).reduce((sum, s) => sum + (s.duration || 0), 0) /
158
+ completedStates.length
159
+ : undefined;
160
+ return {
161
+ totalServers: states.length,
162
+ pending,
163
+ loading,
164
+ ready,
165
+ failed,
166
+ awaitingOAuth,
167
+ cancelled,
168
+ startTime: this.globalStartTime,
169
+ isComplete,
170
+ successRate,
171
+ averageLoadTime,
172
+ };
173
+ }
174
+ /**
175
+ * Check if loading is complete (all servers in final state)
176
+ */
177
+ isLoadingComplete() {
178
+ return this.getSummary().isComplete;
179
+ }
180
+ /**
181
+ * Get servers in a specific state
182
+ */
183
+ getServersByState(state) {
184
+ return Array.from(this.servers.values()).filter((s) => s.state === state);
185
+ }
186
+ /**
187
+ * Reset all tracking state
188
+ */
189
+ reset() {
190
+ this.servers.clear();
191
+ this.loadingStarted = false;
192
+ this.globalStartTime = new Date();
193
+ logger.info('Loading state tracker reset');
194
+ }
195
+ /**
196
+ * Emit progress event with current summary
197
+ */
198
+ emitProgress() {
199
+ if (!this.loadingStarted)
200
+ return;
201
+ const summary = this.getSummary();
202
+ this.emit('loading-progress', summary);
203
+ if (summary.isComplete) {
204
+ logger.info(`Loading complete: ${summary.ready}/${summary.totalServers} servers ready (${summary.successRate.toFixed(1)}% success rate)`);
205
+ this.emit('loading-complete', summary);
206
+ }
207
+ }
208
+ }
209
+ //# sourceMappingURL=loadingStateTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadingStateTracker.js","sourceRoot":"","sources":["../../../src/core/loading/loadingStateTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import { EventEmitter } from 'events';
2
+ import { OutboundConnections, AuthProviderTransport } from '../types/index.js';
3
+ import { ClientManager } from '../client/clientManager.js';
4
+ import { LoadingStateTracker, LoadingSummary } from './loadingStateTracker.js';
5
+ /**
6
+ * Configuration options for MCP loading behavior
7
+ */
8
+ export interface McpLoadingConfig {
9
+ /** Maximum time to wait for each server (ms) */
10
+ readonly serverTimeoutMs: number;
11
+ /** Maximum number of retry attempts per server */
12
+ readonly maxRetries: number;
13
+ /** Initial delay between retries (ms) */
14
+ readonly retryDelayMs: number;
15
+ /** Maximum number of servers to initialize concurrently */
16
+ readonly maxConcurrentLoads: number;
17
+ /** Whether to continue loading other servers if some fail */
18
+ readonly continueOnFailure: boolean;
19
+ /** Whether to enable background retry for failed servers */
20
+ readonly enableBackgroundRetry: boolean;
21
+ /** Interval for background retry attempts (ms) */
22
+ readonly backgroundRetryIntervalMs: number;
23
+ }
24
+ /**
25
+ * Default configuration for MCP loading
26
+ */
27
+ export declare const DEFAULT_LOADING_CONFIG: McpLoadingConfig;
28
+ /**
29
+ * Result of loading a specific server
30
+ */
31
+ interface ServerLoadResult {
32
+ readonly name: string;
33
+ readonly success: boolean;
34
+ readonly error?: Error;
35
+ readonly duration: number;
36
+ readonly retryCount: number;
37
+ }
38
+ /**
39
+ * Events emitted by McpLoadingManager
40
+ */
41
+ export interface McpLoadingEvents {
42
+ 'loading-started': (serverNames: string[]) => void;
43
+ 'server-loading': (name: string) => void;
44
+ 'server-loaded': (name: string, result: ServerLoadResult) => void;
45
+ 'server-failed': (name: string, result: ServerLoadResult) => void;
46
+ 'oauth-required': (name: string, authUrl?: string) => void;
47
+ 'loading-progress': (summary: LoadingSummary) => void;
48
+ 'loading-complete': (summary: LoadingSummary) => void;
49
+ 'background-retry': (name: string, attempt: number) => void;
50
+ }
51
+ /**
52
+ * Manages asynchronous loading of MCP servers without blocking HTTP server startup
53
+ *
54
+ * This manager coordinates the initialization of multiple MCP servers in parallel,
55
+ * provides real-time status updates, and handles retries and error recovery.
56
+ * The HTTP server can start immediately while this manager loads servers in the background.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const manager = new McpLoadingManager(clientManager, config);
61
+ * manager.on('loading-complete', (summary) => {
62
+ * console.log(`${summary.ready}/${summary.totalServers} servers ready`);
63
+ * });
64
+ *
65
+ * // Start loading asynchronously
66
+ * const loadingPromise = manager.startAsyncLoading(transports);
67
+ *
68
+ * // HTTP server can start immediately
69
+ * const expressServer = new ExpressServer(serverManager);
70
+ * expressServer.start();
71
+ *
72
+ * // Optionally wait for loading to complete
73
+ * await loadingPromise;
74
+ * ```
75
+ */
76
+ export declare class McpLoadingManager extends EventEmitter {
77
+ private clientManager;
78
+ private config;
79
+ private stateTracker;
80
+ private loadingSemaphore;
81
+ private backgroundRetryTimer?;
82
+ private isShuttingDown;
83
+ constructor(clientManager: ClientManager, config?: Partial<McpLoadingConfig>);
84
+ /**
85
+ * Start asynchronous loading of MCP servers
86
+ * Returns immediately, loading happens in background
87
+ */
88
+ startAsyncLoading(transports: Record<string, AuthProviderTransport>): Promise<OutboundConnections>;
89
+ /**
90
+ * Load servers with concurrency control
91
+ */
92
+ private loadServersWithConcurrency;
93
+ /**
94
+ * Load a single server with retry logic
95
+ */
96
+ private loadSingleServer;
97
+ /**
98
+ * Create client with timeout wrapper
99
+ */
100
+ private createClientWithTimeout;
101
+ /**
102
+ * Set up background retry for failed servers
103
+ */
104
+ private setupBackgroundRetry;
105
+ /**
106
+ * Perform background retry for failed servers
107
+ */
108
+ private performBackgroundRetry;
109
+ /**
110
+ * Get current loading state tracker
111
+ */
112
+ getStateTracker(): LoadingStateTracker;
113
+ /**
114
+ * Get current loading summary
115
+ */
116
+ getSummary(): LoadingSummary;
117
+ /**
118
+ * Check if a specific server is ready
119
+ */
120
+ isServerReady(name: string): boolean;
121
+ /**
122
+ * Get list of ready servers
123
+ */
124
+ getReadyServers(): string[];
125
+ /**
126
+ * Get list of failed servers
127
+ */
128
+ getFailedServers(): string[];
129
+ /**
130
+ * Shutdown the loading manager
131
+ */
132
+ shutdown(): void;
133
+ /**
134
+ * Utility method for sleeping
135
+ */
136
+ private sleep;
137
+ }
138
+ export {};
139
+ //# sourceMappingURL=mcpLoadingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpLoadingManager.d.ts","sourceRoot":"","sources":["../../../src/core/loading/mcpLoadingManager.ts"],"names":[],"mappings":"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"}