@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.
- package/README.md +115 -14
- package/build/commands/app/backups.d.ts +17 -0
- package/build/commands/app/backups.d.ts.map +1 -0
- package/build/commands/app/backups.js +162 -0
- package/build/commands/app/backups.js.map +1 -0
- package/build/commands/app/consolidate.d.ts +21 -0
- package/build/commands/app/consolidate.d.ts.map +1 -0
- package/build/commands/app/consolidate.js +383 -0
- package/build/commands/app/consolidate.js.map +1 -0
- package/build/commands/app/discover.d.ts +16 -0
- package/build/commands/app/discover.d.ts.map +1 -0
- package/build/commands/app/discover.js +79 -0
- package/build/commands/app/discover.js.map +1 -0
- package/build/commands/app/index.d.ts +12 -0
- package/build/commands/app/index.d.ts.map +1 -0
- package/build/commands/app/index.js +274 -0
- package/build/commands/app/index.js.map +1 -0
- package/build/commands/app/list.d.ts +16 -0
- package/build/commands/app/list.d.ts.map +1 -0
- package/build/commands/app/list.js +95 -0
- package/build/commands/app/list.js.map +1 -0
- package/build/commands/app/restore.d.ts +21 -0
- package/build/commands/app/restore.d.ts.map +1 -0
- package/build/commands/app/restore.js +265 -0
- package/build/commands/app/restore.js.map +1 -0
- package/build/commands/app/status.d.ts +16 -0
- package/build/commands/app/status.d.ts.map +1 -0
- package/build/commands/app/status.js +224 -0
- package/build/commands/app/status.js.map +1 -0
- package/build/commands/mcp/add.d.ts +19 -0
- package/build/commands/mcp/add.d.ts.map +1 -0
- package/build/commands/mcp/add.js +135 -0
- package/build/commands/mcp/add.js.map +1 -0
- package/build/commands/mcp/enable.d.ts +13 -0
- package/build/commands/mcp/enable.d.ts.map +1 -0
- package/build/commands/mcp/enable.js +100 -0
- package/build/commands/mcp/enable.js.map +1 -0
- package/build/commands/mcp/index.d.ts +12 -0
- package/build/commands/mcp/index.d.ts.map +1 -0
- package/build/commands/mcp/index.js +351 -0
- package/build/commands/mcp/index.js.map +1 -0
- package/build/commands/mcp/list.d.ts +11 -0
- package/build/commands/mcp/list.d.ts.map +1 -0
- package/build/commands/mcp/list.js +144 -0
- package/build/commands/mcp/list.js.map +1 -0
- package/build/commands/mcp/remove.d.ts +10 -0
- package/build/commands/mcp/remove.d.ts.map +1 -0
- package/build/commands/mcp/remove.js +89 -0
- package/build/commands/mcp/remove.js.map +1 -0
- package/build/commands/mcp/status.d.ts +10 -0
- package/build/commands/mcp/status.d.ts.map +1 -0
- package/build/commands/mcp/status.js +243 -0
- package/build/commands/mcp/status.js.map +1 -0
- package/build/commands/mcp/update.d.ts +18 -0
- package/build/commands/mcp/update.d.ts.map +1 -0
- package/build/commands/mcp/update.js +157 -0
- package/build/commands/mcp/update.js.map +1 -0
- package/build/commands/mcp/utils/configUtils.d.ts +64 -0
- package/build/commands/mcp/utils/configUtils.d.ts.map +1 -0
- package/build/commands/mcp/utils/configUtils.js +266 -0
- package/build/commands/mcp/utils/configUtils.js.map +1 -0
- package/build/commands/mcp/utils/doubleHyphenParser.d.ts +32 -0
- package/build/commands/mcp/utils/doubleHyphenParser.d.ts.map +1 -0
- package/build/commands/mcp/utils/doubleHyphenParser.js +61 -0
- package/build/commands/mcp/utils/doubleHyphenParser.js.map +1 -0
- package/build/commands/mcp/utils/validation.d.ts +33 -0
- package/build/commands/mcp/utils/validation.d.ts.map +1 -0
- package/build/commands/mcp/utils/validation.js +235 -0
- package/build/commands/mcp/utils/validation.js.map +1 -0
- package/build/constants.d.ts +12 -2
- package/build/constants.d.ts.map +1 -1
- package/build/constants.js +16 -2
- package/build/constants.js.map +1 -1
- package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +96 -0
- package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -0
- package/build/core/capabilities/asyncLoadingOrchestrator.js +256 -0
- package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -0
- package/build/core/capabilities/capabilityAggregator.d.ts +114 -0
- package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -0
- package/build/core/capabilities/capabilityAggregator.js +234 -0
- package/build/core/capabilities/capabilityAggregator.js.map +1 -0
- package/build/core/client/clientManager.d.ts +28 -0
- package/build/core/client/clientManager.d.ts.map +1 -1
- package/build/core/client/clientManager.js +120 -0
- package/build/core/client/clientManager.js.map +1 -1
- package/build/core/loading/loadingStateTracker.d.ts +128 -0
- package/build/core/loading/loadingStateTracker.d.ts.map +1 -0
- package/build/core/loading/loadingStateTracker.js +209 -0
- package/build/core/loading/loadingStateTracker.js.map +1 -0
- package/build/core/loading/mcpLoadingManager.d.ts +139 -0
- package/build/core/loading/mcpLoadingManager.d.ts.map +1 -0
- package/build/core/loading/mcpLoadingManager.js +296 -0
- package/build/core/loading/mcpLoadingManager.js.map +1 -0
- package/build/core/notifications/notificationManager.d.ts +111 -0
- package/build/core/notifications/notificationManager.d.ts.map +1 -0
- package/build/core/notifications/notificationManager.js +232 -0
- package/build/core/notifications/notificationManager.js.map +1 -0
- package/build/core/server/agentConfig.d.ts +59 -0
- package/build/core/server/agentConfig.d.ts.map +1 -1
- package/build/core/server/agentConfig.js +82 -1
- package/build/core/server/agentConfig.js.map +1 -1
- package/build/core/server/serverManager.d.ts +1 -0
- package/build/core/server/serverManager.d.ts.map +1 -1
- package/build/core/server/serverManager.js +3 -0
- package/build/core/server/serverManager.js.map +1 -1
- package/build/index.js +123 -31
- package/build/index.js.map +1 -1
- package/build/server.d.ts +23 -2
- package/build/server.d.ts.map +1 -1
- package/build/server.js +83 -10
- package/build/server.js.map +1 -1
- package/build/services/healthService.d.ts +107 -0
- package/build/services/healthService.d.ts.map +1 -0
- package/build/services/healthService.js +294 -0
- package/build/services/healthService.js.map +1 -0
- package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
- package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
- package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +243 -0
- package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
- package/build/transport/http/routes/healthRoutes.d.ts +8 -0
- package/build/transport/http/routes/healthRoutes.d.ts.map +1 -0
- package/build/transport/http/routes/healthRoutes.js +282 -0
- package/build/transport/http/routes/healthRoutes.js.map +1 -0
- package/build/transport/http/routes/sseRoutes.d.ts +2 -1
- package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/sseRoutes.js +13 -1
- package/build/transport/http/routes/sseRoutes.js.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/server.d.ts +7 -1
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +17 -3
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/transportFactory.d.ts +4 -0
- package/build/transport/transportFactory.d.ts.map +1 -1
- package/build/transport/transportFactory.js +1 -1
- package/build/transport/transportFactory.js.map +1 -1
- package/build/utils/appDiscovery.d.ts +75 -0
- package/build/utils/appDiscovery.d.ts.map +1 -0
- package/build/utils/appDiscovery.js +358 -0
- package/build/utils/appDiscovery.js.map +1 -0
- package/build/utils/appPresets.d.ts +88 -0
- package/build/utils/appPresets.d.ts.map +1 -0
- package/build/utils/appPresets.js +430 -0
- package/build/utils/appPresets.js.map +1 -0
- package/build/utils/backupManager.d.ts +61 -0
- package/build/utils/backupManager.d.ts.map +1 -0
- package/build/utils/backupManager.js +314 -0
- package/build/utils/backupManager.js.map +1 -0
- package/build/utils/urlDetection.d.ts +35 -0
- package/build/utils/urlDetection.d.ts.map +1 -0
- package/build/utils/urlDetection.js +115 -0
- package/build/utils/urlDetection.js.map +1 -0
- package/build/utils/validationHelpers.d.ts +62 -0
- package/build/utils/validationHelpers.d.ts.map +1 -0
- package/build/utils/validationHelpers.js +252 -0
- package/build/utils/validationHelpers.js.map +1 -0
- package/package.json +25 -3
|
@@ -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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAN,IAAY,YAaX;AAbD,WAAY,YAAY;IACtB,wCAAwC;IACxC,mCAAmB,CAAA;IACnB,uCAAuC;IACvC,mCAAmB,CAAA;IACnB,oDAAoD;IACpD,+BAAe,CAAA;IACf,kCAAkC;IAClC,iCAAiB,CAAA;IACjB,0CAA0C;IAC1C,gDAAgC,CAAA;IAChC,0CAA0C;IAC1C,uCAAuB,CAAA;AACzB,CAAC,EAbW,YAAY,KAAZ,YAAY,QAavB;AAmDD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IAC3C,OAAO,GAAmC,IAAI,GAAG,EAAE,CAAC;IACpD,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;IACnC,cAAc,GAAY,KAAK,CAAC;IAExC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,yCAAyC;IACrE,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,WAAqB;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;gBACrB,IAAI;gBACJ,KAAK,EAAE,YAAY,CAAC,OAAO;gBAC3B,UAAU,EAAE,CAAC;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,WAAW,CAAC,MAAM,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,iBAAiB,CACtB,IAAY,EACZ,KAAmB,EACnB,UAA0G,EAAE;QAE5G,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAsB;YAC9B,GAAG,QAAQ;YACX,KAAK;YACL,GAAG,OAAO;SACX,CAAC;QAEF,gCAAgC;QAChC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,YAAY,CAAC,OAAO;gBACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACpB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACvB,CAAC;gBACD,MAAM;YAER,KAAK,YAAY,CAAC,KAAK,CAAC;YACxB,KAAK,YAAY,CAAC,MAAM,CAAC;YACzB,KAAK,YAAY,CAAC,SAAS;gBACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC3D,CAAC;gBACD,MAAM;YAER,KAAK,YAAY,CAAC,aAAa;gBAC7B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACzB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;gBAC5B,CAAC;gBACD,MAAM;QACV,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,qBAAqB,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAElH,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE9C,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,YAAY,CAAC,KAAK;gBACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,YAAY,CAAC,MAAM;gBACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,YAAY,CAAC,aAAa;gBAC7B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxC,MAAM;QACV,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,IAAY;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,OAAO,GAAsB;gBACjC,GAAG,IAAI;gBACP,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC;gBAC/B,aAAa,EAAE,IAAI,IAAI,EAAE;aAC1B,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,iBAAiB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,kBAAkB;QACvB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,UAAU;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAElF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,SAAS,CAC/G,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1E,MAAM,eAAe,GACnB,eAAe,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtG,eAAe,CAAC,MAAM;YACxB,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,OAAO;YACP,OAAO;YACP,KAAK;YACL,MAAM;YACN,aAAa;YACb,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,eAAe;YAC/B,UAAU;YACV,WAAW;YACX,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,KAAmB;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEvC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,qBAAqB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,mBAAmB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAC7H,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -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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"}
|