@1mcp/agent 0.16.0 → 0.18.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 (172) hide show
  1. package/README.md +103 -11
  2. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
  3. package/build/auth/sdkOAuthClientProvider.js +1 -1
  4. package/build/auth/sdkOAuthClientProvider.js.map +1 -1
  5. package/build/commands/app/backups.d.ts +17 -0
  6. package/build/commands/app/backups.d.ts.map +1 -0
  7. package/build/commands/app/backups.js +162 -0
  8. package/build/commands/app/backups.js.map +1 -0
  9. package/build/commands/app/consolidate.d.ts +21 -0
  10. package/build/commands/app/consolidate.d.ts.map +1 -0
  11. package/build/commands/app/consolidate.js +383 -0
  12. package/build/commands/app/consolidate.js.map +1 -0
  13. package/build/commands/app/discover.d.ts +16 -0
  14. package/build/commands/app/discover.d.ts.map +1 -0
  15. package/build/commands/app/discover.js +79 -0
  16. package/build/commands/app/discover.js.map +1 -0
  17. package/build/commands/app/index.d.ts +12 -0
  18. package/build/commands/app/index.d.ts.map +1 -0
  19. package/build/commands/app/index.js +274 -0
  20. package/build/commands/app/index.js.map +1 -0
  21. package/build/commands/app/list.d.ts +16 -0
  22. package/build/commands/app/list.d.ts.map +1 -0
  23. package/build/commands/app/list.js +95 -0
  24. package/build/commands/app/list.js.map +1 -0
  25. package/build/commands/app/restore.d.ts +21 -0
  26. package/build/commands/app/restore.d.ts.map +1 -0
  27. package/build/commands/app/restore.js +265 -0
  28. package/build/commands/app/restore.js.map +1 -0
  29. package/build/commands/app/status.d.ts +16 -0
  30. package/build/commands/app/status.d.ts.map +1 -0
  31. package/build/commands/app/status.js +224 -0
  32. package/build/commands/app/status.js.map +1 -0
  33. package/build/commands/mcp/add.d.ts +19 -0
  34. package/build/commands/mcp/add.d.ts.map +1 -0
  35. package/build/commands/mcp/add.js +135 -0
  36. package/build/commands/mcp/add.js.map +1 -0
  37. package/build/commands/mcp/enable.d.ts +13 -0
  38. package/build/commands/mcp/enable.d.ts.map +1 -0
  39. package/build/commands/mcp/enable.js +100 -0
  40. package/build/commands/mcp/enable.js.map +1 -0
  41. package/build/commands/mcp/index.d.ts +12 -0
  42. package/build/commands/mcp/index.d.ts.map +1 -0
  43. package/build/commands/mcp/index.js +351 -0
  44. package/build/commands/mcp/index.js.map +1 -0
  45. package/build/commands/mcp/list.d.ts +11 -0
  46. package/build/commands/mcp/list.d.ts.map +1 -0
  47. package/build/commands/mcp/list.js +144 -0
  48. package/build/commands/mcp/list.js.map +1 -0
  49. package/build/commands/mcp/remove.d.ts +10 -0
  50. package/build/commands/mcp/remove.d.ts.map +1 -0
  51. package/build/commands/mcp/remove.js +89 -0
  52. package/build/commands/mcp/remove.js.map +1 -0
  53. package/build/commands/mcp/status.d.ts +10 -0
  54. package/build/commands/mcp/status.d.ts.map +1 -0
  55. package/build/commands/mcp/status.js +243 -0
  56. package/build/commands/mcp/status.js.map +1 -0
  57. package/build/commands/mcp/update.d.ts +18 -0
  58. package/build/commands/mcp/update.d.ts.map +1 -0
  59. package/build/commands/mcp/update.js +157 -0
  60. package/build/commands/mcp/update.js.map +1 -0
  61. package/build/commands/mcp/utils/configUtils.d.ts +64 -0
  62. package/build/commands/mcp/utils/configUtils.d.ts.map +1 -0
  63. package/build/commands/mcp/utils/configUtils.js +266 -0
  64. package/build/commands/mcp/utils/configUtils.js.map +1 -0
  65. package/build/commands/mcp/utils/doubleHyphenParser.d.ts +32 -0
  66. package/build/commands/mcp/utils/doubleHyphenParser.d.ts.map +1 -0
  67. package/build/commands/mcp/utils/doubleHyphenParser.js +61 -0
  68. package/build/commands/mcp/utils/doubleHyphenParser.js.map +1 -0
  69. package/build/commands/mcp/utils/validation.d.ts +33 -0
  70. package/build/commands/mcp/utils/validation.d.ts.map +1 -0
  71. package/build/commands/mcp/utils/validation.js +235 -0
  72. package/build/commands/mcp/utils/validation.js.map +1 -0
  73. package/build/constants.d.ts +11 -2
  74. package/build/constants.d.ts.map +1 -1
  75. package/build/constants.js +18 -5
  76. package/build/constants.js.map +1 -1
  77. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +96 -0
  78. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -0
  79. package/build/core/capabilities/asyncLoadingOrchestrator.js +256 -0
  80. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -0
  81. package/build/core/capabilities/capabilityAggregator.d.ts +114 -0
  82. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -0
  83. package/build/core/capabilities/capabilityAggregator.js +234 -0
  84. package/build/core/capabilities/capabilityAggregator.js.map +1 -0
  85. package/build/core/client/clientManager.d.ts +29 -0
  86. package/build/core/client/clientManager.d.ts.map +1 -1
  87. package/build/core/client/clientManager.js +151 -2
  88. package/build/core/client/clientManager.js.map +1 -1
  89. package/build/core/loading/loadingStateTracker.d.ts +128 -0
  90. package/build/core/loading/loadingStateTracker.d.ts.map +1 -0
  91. package/build/core/loading/loadingStateTracker.js +211 -0
  92. package/build/core/loading/loadingStateTracker.js.map +1 -0
  93. package/build/core/loading/mcpLoadingManager.d.ts +156 -0
  94. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -0
  95. package/build/core/loading/mcpLoadingManager.js +352 -0
  96. package/build/core/loading/mcpLoadingManager.js.map +1 -0
  97. package/build/core/notifications/notificationManager.d.ts +111 -0
  98. package/build/core/notifications/notificationManager.d.ts.map +1 -0
  99. package/build/core/notifications/notificationManager.js +232 -0
  100. package/build/core/notifications/notificationManager.js.map +1 -0
  101. package/build/core/server/agentConfig.d.ts +50 -0
  102. package/build/core/server/agentConfig.d.ts.map +1 -1
  103. package/build/core/server/agentConfig.js +68 -1
  104. package/build/core/server/agentConfig.js.map +1 -1
  105. package/build/core/server/serverManager.d.ts +1 -0
  106. package/build/core/server/serverManager.d.ts.map +1 -1
  107. package/build/core/server/serverManager.js +3 -0
  108. package/build/core/server/serverManager.js.map +1 -1
  109. package/build/core/types/transport.d.ts +2 -2
  110. package/build/index.js +133 -34
  111. package/build/index.js.map +1 -1
  112. package/build/logger/logger.d.ts +9 -0
  113. package/build/logger/logger.d.ts.map +1 -1
  114. package/build/logger/logger.js +49 -0
  115. package/build/logger/logger.js.map +1 -1
  116. package/build/logger/secureLogger.d.ts +22 -0
  117. package/build/logger/secureLogger.d.ts.map +1 -0
  118. package/build/logger/secureLogger.js +120 -0
  119. package/build/logger/secureLogger.js.map +1 -0
  120. package/build/server.d.ts +23 -2
  121. package/build/server.d.ts.map +1 -1
  122. package/build/server.js +83 -10
  123. package/build/server.js.map +1 -1
  124. package/build/services/configReloadService.d.ts +8 -0
  125. package/build/services/configReloadService.d.ts.map +1 -1
  126. package/build/services/configReloadService.js +68 -0
  127. package/build/services/configReloadService.js.map +1 -1
  128. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
  129. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
  130. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +306 -0
  131. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
  132. package/build/transport/http/routes/healthRoutes.d.ts +2 -1
  133. package/build/transport/http/routes/healthRoutes.d.ts.map +1 -1
  134. package/build/transport/http/routes/healthRoutes.js +170 -1
  135. package/build/transport/http/routes/healthRoutes.js.map +1 -1
  136. package/build/transport/http/routes/sseRoutes.d.ts +2 -1
  137. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  138. package/build/transport/http/routes/sseRoutes.js +13 -1
  139. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  140. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  141. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  142. package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
  143. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  144. package/build/transport/http/server.d.ts +7 -1
  145. package/build/transport/http/server.d.ts.map +1 -1
  146. package/build/transport/http/server.js +15 -4
  147. package/build/transport/http/server.js.map +1 -1
  148. package/build/transport/transportFactory.d.ts +4 -0
  149. package/build/transport/transportFactory.d.ts.map +1 -1
  150. package/build/transport/transportFactory.js +1 -1
  151. package/build/transport/transportFactory.js.map +1 -1
  152. package/build/utils/appDiscovery.d.ts +75 -0
  153. package/build/utils/appDiscovery.d.ts.map +1 -0
  154. package/build/utils/appDiscovery.js +358 -0
  155. package/build/utils/appDiscovery.js.map +1 -0
  156. package/build/utils/appPresets.d.ts +88 -0
  157. package/build/utils/appPresets.d.ts.map +1 -0
  158. package/build/utils/appPresets.js +430 -0
  159. package/build/utils/appPresets.js.map +1 -0
  160. package/build/utils/backupManager.d.ts +61 -0
  161. package/build/utils/backupManager.d.ts.map +1 -0
  162. package/build/utils/backupManager.js +314 -0
  163. package/build/utils/backupManager.js.map +1 -0
  164. package/build/utils/urlDetection.d.ts +35 -0
  165. package/build/utils/urlDetection.d.ts.map +1 -0
  166. package/build/utils/urlDetection.js +115 -0
  167. package/build/utils/urlDetection.js.map +1 -0
  168. package/build/utils/validationHelpers.d.ts +62 -0
  169. package/build/utils/validationHelpers.d.ts.map +1 -0
  170. package/build/utils/validationHelpers.js +252 -0
  171. package/build/utils/validationHelpers.js.map +1 -0
  172. package/package.json +9 -2
@@ -1 +1 @@
1
- {"version":3,"file":"clientManager.d.ts","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,mBAAmB,CAAyC;IAEpE,OAAO;WAEO,mBAAmB,IAAI,aAAa;IAOlD,WAAkB,OAAO,IAAI,aAAa,CAEzC;WAGa,aAAa,IAAI,IAAI;IAInC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;;;OAIG;IACU,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyE3G;;;;;;OAMG;YACW,gBAAgB;IA+C9B;;;;;OAKG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAQxD;;;OAGG;IACI,UAAU,IAAI,mBAAmB;IAIxC;;;;;;OAMG;IACU,sBAAsB,CAAC,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,OAAO,GAAE,gBAAqB,EAC9B,kBAAkB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,CAAC,CAAC;CAad;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAElC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAKxB"}
1
+ {"version":3,"file":"clientManager.d.ts","sourceRoot":"","sources":["../../../src/core/client/clientManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAI3B,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,mBAAmB,CAAyC;IAEpE,OAAO;WAEO,mBAAmB,IAAI,aAAa;IAOlD,WAAkB,OAAO,IAAI,aAAa,CAEzC;WAGa,aAAa,IAAI,IAAI;IAInC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;;;OAIG;IACU,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyE3G;;;;;;OAMG;YACW,gBAAgB;IA4E9B;;;;;OAKG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;IAQxD;;;OAGG;IACI,UAAU,IAAI,mBAAmB;IAIxC;;;;;;OAMG;IACU,kBAAkB,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,qBAAqB,EAChC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC;IAwBhB;;OAEG;YACW,0BAA0B;IAqFxC;;;;OAIG;IACI,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,mBAAmB;IAQrG;;;;OAIG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIpE;;;OAGG;IACI,iBAAiB,IAAI,MAAM,EAAE;IAIpC;;;;;;OAMG;IACU,sBAAsB,CAAC,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EACzD,OAAO,GAAE,gBAAqB,EAC9B,kBAAkB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,CAAC,CAAC;CAad;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAElC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAKxB"}
@@ -123,11 +123,15 @@ export class ClientManager {
123
123
  * @param name The name of the client for logging
124
124
  * @returns The connected client (may be a new instance after retries)
125
125
  */
126
- async connectWithRetry(client, transport, name) {
126
+ async connectWithRetry(client, transport, name, abortSignal) {
127
127
  let retryDelay = CONNECTION_RETRY.INITIAL_DELAY_MS;
128
128
  let currentClient = client;
129
129
  for (let i = 0; i < CONNECTION_RETRY.MAX_ATTEMPTS; i++) {
130
130
  try {
131
+ // Check if operation was aborted before each attempt
132
+ if (abortSignal?.aborted) {
133
+ throw new Error(`Connection aborted: ${abortSignal.reason || 'Request cancelled'}`);
134
+ }
131
135
  await currentClient.connect(transport);
132
136
  const sv = await currentClient.getServerVersion();
133
137
  if (sv?.name === MCP_SERVER_NAME) {
@@ -150,7 +154,23 @@ export class ClientManager {
150
154
  logger.error(`Failed to connect to ${name}: ${errorMessage}`);
151
155
  if (i < CONNECTION_RETRY.MAX_ATTEMPTS - 1) {
152
156
  logger.info(`Retrying in ${retryDelay}ms...`);
153
- await new Promise((resolve) => setTimeout(resolve, retryDelay));
157
+ // Implement cancellable delay
158
+ await new Promise((resolve, reject) => {
159
+ const timeoutId = setTimeout(resolve, retryDelay);
160
+ if (abortSignal) {
161
+ const abortHandler = () => {
162
+ clearTimeout(timeoutId);
163
+ reject(new Error(`Connection retry aborted: ${abortSignal.reason || 'Request cancelled'}`));
164
+ };
165
+ if (abortSignal.aborted) {
166
+ clearTimeout(timeoutId);
167
+ reject(new Error(`Connection retry aborted: ${abortSignal.reason || 'Request cancelled'}`));
168
+ }
169
+ else {
170
+ abortSignal.addEventListener('abort', abortHandler, { once: true });
171
+ }
172
+ }
173
+ });
154
174
  retryDelay *= 2; // Exponential backoff
155
175
  // Create a new client for retry to avoid "already started" errors
156
176
  currentClient = this.createClient();
@@ -184,6 +204,135 @@ export class ClientManager {
184
204
  getClients() {
185
205
  return this.outboundConns;
186
206
  }
207
+ /**
208
+ * Creates a single client for async loading (used by McpLoadingManager)
209
+ * @param name The name of the client
210
+ * @param transport The transport to connect to
211
+ * @param abortSignal Optional AbortSignal to cancel the operation
212
+ * @returns Promise that resolves when client is connected
213
+ */
214
+ async createSingleClient(name, transport, abortSignal) {
215
+ // Prevent concurrent creation of the same client
216
+ const existingPromise = this.connectionSemaphore.get(name);
217
+ if (existingPromise) {
218
+ await existingPromise;
219
+ return;
220
+ }
221
+ // Check if operation was aborted before starting
222
+ if (abortSignal?.aborted) {
223
+ throw new Error(`Operation aborted: ${abortSignal.reason || 'Request cancelled'}`);
224
+ }
225
+ // Create connection promise
226
+ const connectionPromise = this.createSingleClientInternal(name, transport, abortSignal);
227
+ this.connectionSemaphore.set(name, connectionPromise);
228
+ try {
229
+ await connectionPromise;
230
+ }
231
+ finally {
232
+ this.connectionSemaphore.delete(name);
233
+ }
234
+ }
235
+ /**
236
+ * Internal method to create and connect a single client
237
+ */
238
+ async createSingleClientInternal(name, transport, abortSignal) {
239
+ logger.info(`Creating client for ${name}`);
240
+ // Store transport reference
241
+ this.transports[name] = transport;
242
+ try {
243
+ // Check if operation was aborted
244
+ if (abortSignal?.aborted) {
245
+ throw new Error(`Operation aborted: ${abortSignal.reason || 'Request cancelled'}`);
246
+ }
247
+ const client = this.createClient();
248
+ // Connect with retry logic
249
+ const connectedClient = await this.connectWithRetry(client, transport, name, abortSignal);
250
+ this.outboundConns.set(name, {
251
+ name,
252
+ transport,
253
+ client: connectedClient,
254
+ status: ClientStatus.Connected,
255
+ lastConnected: new Date(),
256
+ });
257
+ logger.info(`Client created for ${name}`);
258
+ connectedClient.onclose = () => {
259
+ const clientInfo = this.outboundConns.get(name);
260
+ if (clientInfo) {
261
+ clientInfo.status = ClientStatus.Disconnected;
262
+ }
263
+ logger.info(`Client ${name} disconnected`);
264
+ };
265
+ connectedClient.onerror = (error) => {
266
+ logger.error(`Client ${name} error: ${error}`);
267
+ };
268
+ }
269
+ catch (error) {
270
+ if (error instanceof OAuthRequiredError) {
271
+ // Handle OAuth required - set client to AwaitingOAuth status
272
+ logger.info(`OAuth authorization required for ${name}`);
273
+ // Try to get authorization URL from OAuth provider
274
+ let authorizationUrl;
275
+ try {
276
+ // Extract OAuth provider from transport if available
277
+ const oauthProvider = transport.oauthProvider;
278
+ if (oauthProvider && typeof oauthProvider.getAuthorizationUrl === 'function') {
279
+ authorizationUrl = oauthProvider.getAuthorizationUrl();
280
+ }
281
+ }
282
+ catch (urlError) {
283
+ logger.warn(`Could not extract authorization URL for ${name}:`, urlError);
284
+ }
285
+ this.outboundConns.set(name, {
286
+ name,
287
+ transport,
288
+ client: error.client,
289
+ status: ClientStatus.AwaitingOAuth,
290
+ authorizationUrl,
291
+ oauthStartTime: new Date(),
292
+ });
293
+ // Re-throw OAuth error for loading manager to handle
294
+ throw error;
295
+ }
296
+ else {
297
+ logger.error(`Failed to create client for ${name}: ${error}`);
298
+ this.outboundConns.set(name, {
299
+ name,
300
+ transport,
301
+ client: this.createClient(),
302
+ status: ClientStatus.Error,
303
+ lastError: error instanceof Error ? error : new Error(String(error)),
304
+ });
305
+ // Re-throw error for loading manager to handle
306
+ throw error;
307
+ }
308
+ }
309
+ }
310
+ /**
311
+ * Initialize clients storage without connecting (for async loading)
312
+ * @param transports Record of transport instances
313
+ * @returns Empty connections map (to be populated by async loading)
314
+ */
315
+ initializeClientsAsync(transports) {
316
+ this.transports = transports;
317
+ this.outboundConns.clear();
318
+ logger.info(`Initialized client storage for ${Object.keys(transports).length} transports`);
319
+ return this.outboundConns;
320
+ }
321
+ /**
322
+ * Get transport by name (used by loading manager for retries)
323
+ * @param name The transport name
324
+ * @returns The transport instance or undefined
325
+ */
326
+ getTransport(name) {
327
+ return this.transports[name];
328
+ }
329
+ /**
330
+ * Get all transport names
331
+ * @returns Array of transport names
332
+ */
333
+ getTransportNames() {
334
+ return Object.keys(this.transports);
335
+ }
187
336
  /**
188
337
  * Executes a client operation with error handling and retry logic
189
338
  * @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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EACL,YAAY,GAMb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,OAAO,aAAa;IAChB,MAAM,CAAC,QAAQ,CAAgB;IAC/B,aAAa,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC/C,UAAU,GAA0C,EAAE,CAAC;IACvD,mBAAmB,GAA+B,IAAI,GAAG,EAAE,CAAC;IAEpE,gBAAuB,CAAC;IAEjB,MAAM,CAAC,mBAAmB;QAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,MAAM,KAAK,OAAO;QACvB,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,+CAA+C;IACxC,MAAM,CAAC,aAAa;QACzB,aAAa,CAAC,QAAQ,GAAG,SAAgB,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACK,YAAY;QAClB,OAAO,IAAI,MAAM,CACf;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,kBAAkB;SAC5B,EACD;YACE,YAAY,EAAE,uBAAuB;SACtC,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,oBAAoB;QACzB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,UAAiD;QAC1E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAEnC,2BAA2B;gBAC3B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBAE7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE;oBAC3B,IAAI;oBACJ,SAAS;oBACT,MAAM,EAAE,eAAe;oBACvB,MAAM,EAAE,YAAY,CAAC,SAAS;oBAC9B,aAAa,EAAE,IAAI,IAAI,EAAE;iBAC1B,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;gBAE1C,eAAe,CAAC,OAAO,GAAG,GAAG,EAAE;oBAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChD,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC;oBAChD,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC,CAAC;gBAC7C,CAAC,CAAC;gBAEF,eAAe,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;oBAClC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC;gBACjD,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;oBACxC,6DAA6D;oBAC7D,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;oBAExD,mDAAmD;oBACnD,IAAI,gBAAoC,CAAC;oBACzC,IAAI,CAAC;wBACH,qDAAqD;wBACrD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;wBAC9C,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;4BAC7E,gBAAgB,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAC;wBACzD,CAAC;oBACH,CAAC;oBAAC,OAAO,QAAQ,EAAE,CAAC;wBAClB,MAAM,CAAC,IAAI,CAAC,2CAA2C,IAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;oBAC5E,CAAC;oBAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE;wBAC3B,IAAI;wBACJ,SAAS;wBACT,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,MAAM,EAAE,YAAY,CAAC,aAAa;wBAClC,gBAAgB;wBAChB,cAAc,EAAE,IAAI,IAAI,EAAE;qBAC3B,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;oBAC9D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE;wBAC3B,IAAI;wBACJ,SAAS;wBACT,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;wBAC3B,MAAM,EAAE,YAAY,CAAC,KAAK;wBAC1B,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACrE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,SAAoB,EAAE,IAAY;QAC/E,IAAI,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACnD,IAAI,aAAa,GAAG,MAAM,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAEvC,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBAClD,IAAI,EAAE,EAAE,IAAI,KAAK,eAAe,EAAE,CAAC;oBACjC,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,gBAAgB,EAAE,EAAE,IAAI,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChG,OAAO,aAAa,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mDAAmD;gBACnD,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;oBACvC,MAAM,aAAa,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;oBACvD,MAAM,CAAC,IAAI,CAAC,oCAAoC,IAAI,WAAW,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;oBAE5G,+CAA+C;oBAC/C,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACpD,CAAC;gBACD,iCAAiC;qBAC5B,CAAC;oBACJ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC;oBAE9D,IAAI,CAAC,GAAG,gBAAgB,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;wBAC1C,MAAM,CAAC,IAAI,CAAC,eAAe,UAAU,OAAO,CAAC,CAAC;wBAC9C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;wBAChE,UAAU,IAAI,CAAC,CAAC,CAAC,sBAAsB;wBAEvC,kEAAkE;wBAClE,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnG,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,UAAkB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,sBAAsB,CACjC,UAAkB,EAClB,SAAyD,EACzD,UAA4B,EAAE,EAC9B,kBAAqC;QAErC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACrF,MAAM,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,kBAAkB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,UAAU,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAElC;IACA;IAFT,YACS,UAAkB,EAClB,MAAc;QAErB,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;QAHjD,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QAGrB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
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,211 @@
1
+ import { EventEmitter } from 'events';
2
+ import logger from '../../logger/logger.js';
3
+ import { secureLogger } from '../../logger/secureLogger.js';
4
+ /**
5
+ * Enum representing possible MCP server loading states
6
+ */
7
+ export var LoadingState;
8
+ (function (LoadingState) {
9
+ /** Server initialization not started */
10
+ LoadingState["Pending"] = "pending";
11
+ /** Server is currently initializing */
12
+ LoadingState["Loading"] = "loading";
13
+ /** Server successfully initialized and connected */
14
+ LoadingState["Ready"] = "ready";
15
+ /** Server failed to initialize */
16
+ LoadingState["Failed"] = "failed";
17
+ /** Server requires OAuth authorization */
18
+ LoadingState["AwaitingOAuth"] = "awaiting_oauth";
19
+ /** Server initialization was cancelled */
20
+ LoadingState["Cancelled"] = "cancelled";
21
+ })(LoadingState || (LoadingState = {}));
22
+ /**
23
+ * Tracks the loading state of MCP servers during async initialization
24
+ *
25
+ * This class provides real-time visibility into server initialization progress,
26
+ * enabling the HTTP server to start immediately while MCP servers load in the background.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const tracker = new LoadingStateTracker();
31
+ * tracker.on('server-ready', (name) => console.log(`${name} is ready`));
32
+ * tracker.on('loading-complete', (summary) => console.log('All done!', summary));
33
+ *
34
+ * tracker.startLoading(['server1', 'server2']);
35
+ * tracker.updateServerState('server1', LoadingState.Loading, { phase: 'connecting' });
36
+ * tracker.updateServerState('server1', LoadingState.Ready);
37
+ * ```
38
+ */
39
+ export class LoadingStateTracker extends EventEmitter {
40
+ servers = new Map();
41
+ globalStartTime = new Date();
42
+ loadingStarted = false;
43
+ constructor() {
44
+ super();
45
+ this.setMaxListeners(50); // Allow many listeners for server events
46
+ }
47
+ /**
48
+ * Initialize tracking for a list of servers
49
+ */
50
+ startLoading(serverNames) {
51
+ this.loadingStarted = true;
52
+ this.globalStartTime = new Date();
53
+ for (const name of serverNames) {
54
+ this.servers.set(name, {
55
+ name,
56
+ state: LoadingState.Pending,
57
+ retryCount: 0,
58
+ });
59
+ }
60
+ logger.info(`Started tracking loading for ${serverNames.length} servers`);
61
+ this.emitProgress();
62
+ }
63
+ /**
64
+ * Update the state of a specific server
65
+ */
66
+ updateServerState(name, state, updates = {}) {
67
+ const existing = this.servers.get(name);
68
+ if (!existing) {
69
+ logger.warn(`Attempted to update unknown server: ${name}`);
70
+ return;
71
+ }
72
+ const now = new Date();
73
+ const info = {
74
+ ...existing,
75
+ state,
76
+ ...updates,
77
+ };
78
+ // Handle state-specific updates
79
+ switch (state) {
80
+ case LoadingState.Loading:
81
+ if (!info.startTime) {
82
+ info.startTime = now;
83
+ }
84
+ break;
85
+ case LoadingState.Ready:
86
+ case LoadingState.Failed:
87
+ case LoadingState.Cancelled:
88
+ info.endTime = now;
89
+ if (info.startTime) {
90
+ info.duration = now.getTime() - info.startTime.getTime();
91
+ }
92
+ break;
93
+ case LoadingState.AwaitingOAuth:
94
+ if (!info.oauthStartTime) {
95
+ info.oauthStartTime = now;
96
+ }
97
+ break;
98
+ }
99
+ this.servers.set(name, info);
100
+ const stateDescription = state === LoadingState.AwaitingOAuth ? 'requiring authorization' : state;
101
+ secureLogger.debug(`Server ${name} state changed to ${stateDescription}${updates.progress ? ` (${updates.progress.phase})` : ''}`);
102
+ // Emit specific events
103
+ this.emit('server-state-changed', name, info);
104
+ switch (state) {
105
+ case LoadingState.Ready:
106
+ this.emit('server-ready', name, info);
107
+ break;
108
+ case LoadingState.Failed:
109
+ this.emit('server-failed', name, info);
110
+ break;
111
+ case LoadingState.AwaitingOAuth:
112
+ this.emit('oauth-required', name, info);
113
+ break;
114
+ }
115
+ this.emitProgress();
116
+ }
117
+ /**
118
+ * Increment retry count for a server
119
+ */
120
+ incrementRetryCount(name) {
121
+ const info = this.servers.get(name);
122
+ if (info) {
123
+ const updated = {
124
+ ...info,
125
+ retryCount: info.retryCount + 1,
126
+ lastRetryTime: new Date(),
127
+ };
128
+ this.servers.set(name, updated);
129
+ logger.debug(`Server ${name} retry count: ${updated.retryCount}`);
130
+ }
131
+ }
132
+ /**
133
+ * Get current state of a specific server
134
+ */
135
+ getServerState(name) {
136
+ return this.servers.get(name);
137
+ }
138
+ /**
139
+ * Get all server states
140
+ */
141
+ getAllServerStates() {
142
+ return new Map(this.servers);
143
+ }
144
+ /**
145
+ * Get current loading summary
146
+ */
147
+ getSummary() {
148
+ const states = Array.from(this.servers.values());
149
+ const pending = states.filter((s) => s.state === LoadingState.Pending).length;
150
+ const loading = states.filter((s) => s.state === LoadingState.Loading).length;
151
+ const ready = states.filter((s) => s.state === LoadingState.Ready).length;
152
+ const failed = states.filter((s) => s.state === LoadingState.Failed).length;
153
+ const awaitingOAuth = states.filter((s) => s.state === LoadingState.AwaitingOAuth).length;
154
+ const cancelled = states.filter((s) => s.state === LoadingState.Cancelled).length;
155
+ const completedStates = states.filter((s) => s.state === LoadingState.Ready || s.state === LoadingState.Failed || s.state === LoadingState.Cancelled);
156
+ const isComplete = pending === 0 && loading === 0;
157
+ const successRate = states.length > 0 ? (ready / states.length) * 100 : 0;
158
+ const averageLoadTime = completedStates.length > 0
159
+ ? completedStates.filter((s) => s.duration !== undefined).reduce((sum, s) => sum + (s.duration || 0), 0) /
160
+ completedStates.length
161
+ : undefined;
162
+ return {
163
+ totalServers: states.length,
164
+ pending,
165
+ loading,
166
+ ready,
167
+ failed,
168
+ awaitingOAuth,
169
+ cancelled,
170
+ startTime: this.globalStartTime,
171
+ isComplete,
172
+ successRate,
173
+ averageLoadTime,
174
+ };
175
+ }
176
+ /**
177
+ * Check if loading is complete (all servers in final state)
178
+ */
179
+ isLoadingComplete() {
180
+ return this.getSummary().isComplete;
181
+ }
182
+ /**
183
+ * Get servers in a specific state
184
+ */
185
+ getServersByState(state) {
186
+ return Array.from(this.servers.values()).filter((s) => s.state === state);
187
+ }
188
+ /**
189
+ * Reset all tracking state
190
+ */
191
+ reset() {
192
+ this.servers.clear();
193
+ this.loadingStarted = false;
194
+ this.globalStartTime = new Date();
195
+ logger.info('Loading state tracker reset');
196
+ }
197
+ /**
198
+ * Emit progress event with current summary
199
+ */
200
+ emitProgress() {
201
+ if (!this.loadingStarted)
202
+ return;
203
+ const summary = this.getSummary();
204
+ this.emit('loading-progress', summary);
205
+ if (summary.isComplete) {
206
+ logger.info(`Loading complete: ${summary.ready}/${summary.totalServers} servers ready (${summary.successRate.toFixed(1)}% success rate)`);
207
+ this.emit('loading-complete', summary);
208
+ }
209
+ }
210
+ }
211
+ //# 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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"}