@1mcp/agent 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +115 -14
  2. package/build/commands/app/backups.d.ts +17 -0
  3. package/build/commands/app/backups.d.ts.map +1 -0
  4. package/build/commands/app/backups.js +162 -0
  5. package/build/commands/app/backups.js.map +1 -0
  6. package/build/commands/app/consolidate.d.ts +21 -0
  7. package/build/commands/app/consolidate.d.ts.map +1 -0
  8. package/build/commands/app/consolidate.js +383 -0
  9. package/build/commands/app/consolidate.js.map +1 -0
  10. package/build/commands/app/discover.d.ts +16 -0
  11. package/build/commands/app/discover.d.ts.map +1 -0
  12. package/build/commands/app/discover.js +79 -0
  13. package/build/commands/app/discover.js.map +1 -0
  14. package/build/commands/app/index.d.ts +12 -0
  15. package/build/commands/app/index.d.ts.map +1 -0
  16. package/build/commands/app/index.js +274 -0
  17. package/build/commands/app/index.js.map +1 -0
  18. package/build/commands/app/list.d.ts +16 -0
  19. package/build/commands/app/list.d.ts.map +1 -0
  20. package/build/commands/app/list.js +95 -0
  21. package/build/commands/app/list.js.map +1 -0
  22. package/build/commands/app/restore.d.ts +21 -0
  23. package/build/commands/app/restore.d.ts.map +1 -0
  24. package/build/commands/app/restore.js +265 -0
  25. package/build/commands/app/restore.js.map +1 -0
  26. package/build/commands/app/status.d.ts +16 -0
  27. package/build/commands/app/status.d.ts.map +1 -0
  28. package/build/commands/app/status.js +224 -0
  29. package/build/commands/app/status.js.map +1 -0
  30. package/build/commands/mcp/add.d.ts +19 -0
  31. package/build/commands/mcp/add.d.ts.map +1 -0
  32. package/build/commands/mcp/add.js +135 -0
  33. package/build/commands/mcp/add.js.map +1 -0
  34. package/build/commands/mcp/enable.d.ts +13 -0
  35. package/build/commands/mcp/enable.d.ts.map +1 -0
  36. package/build/commands/mcp/enable.js +100 -0
  37. package/build/commands/mcp/enable.js.map +1 -0
  38. package/build/commands/mcp/index.d.ts +12 -0
  39. package/build/commands/mcp/index.d.ts.map +1 -0
  40. package/build/commands/mcp/index.js +351 -0
  41. package/build/commands/mcp/index.js.map +1 -0
  42. package/build/commands/mcp/list.d.ts +11 -0
  43. package/build/commands/mcp/list.d.ts.map +1 -0
  44. package/build/commands/mcp/list.js +144 -0
  45. package/build/commands/mcp/list.js.map +1 -0
  46. package/build/commands/mcp/remove.d.ts +10 -0
  47. package/build/commands/mcp/remove.d.ts.map +1 -0
  48. package/build/commands/mcp/remove.js +89 -0
  49. package/build/commands/mcp/remove.js.map +1 -0
  50. package/build/commands/mcp/status.d.ts +10 -0
  51. package/build/commands/mcp/status.d.ts.map +1 -0
  52. package/build/commands/mcp/status.js +243 -0
  53. package/build/commands/mcp/status.js.map +1 -0
  54. package/build/commands/mcp/update.d.ts +18 -0
  55. package/build/commands/mcp/update.d.ts.map +1 -0
  56. package/build/commands/mcp/update.js +157 -0
  57. package/build/commands/mcp/update.js.map +1 -0
  58. package/build/commands/mcp/utils/configUtils.d.ts +64 -0
  59. package/build/commands/mcp/utils/configUtils.d.ts.map +1 -0
  60. package/build/commands/mcp/utils/configUtils.js +266 -0
  61. package/build/commands/mcp/utils/configUtils.js.map +1 -0
  62. package/build/commands/mcp/utils/doubleHyphenParser.d.ts +32 -0
  63. package/build/commands/mcp/utils/doubleHyphenParser.d.ts.map +1 -0
  64. package/build/commands/mcp/utils/doubleHyphenParser.js +61 -0
  65. package/build/commands/mcp/utils/doubleHyphenParser.js.map +1 -0
  66. package/build/commands/mcp/utils/validation.d.ts +33 -0
  67. package/build/commands/mcp/utils/validation.d.ts.map +1 -0
  68. package/build/commands/mcp/utils/validation.js +235 -0
  69. package/build/commands/mcp/utils/validation.js.map +1 -0
  70. package/build/constants.d.ts +12 -2
  71. package/build/constants.d.ts.map +1 -1
  72. package/build/constants.js +16 -2
  73. package/build/constants.js.map +1 -1
  74. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +96 -0
  75. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -0
  76. package/build/core/capabilities/asyncLoadingOrchestrator.js +256 -0
  77. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -0
  78. package/build/core/capabilities/capabilityAggregator.d.ts +114 -0
  79. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -0
  80. package/build/core/capabilities/capabilityAggregator.js +234 -0
  81. package/build/core/capabilities/capabilityAggregator.js.map +1 -0
  82. package/build/core/client/clientManager.d.ts +28 -0
  83. package/build/core/client/clientManager.d.ts.map +1 -1
  84. package/build/core/client/clientManager.js +120 -0
  85. package/build/core/client/clientManager.js.map +1 -1
  86. package/build/core/loading/loadingStateTracker.d.ts +128 -0
  87. package/build/core/loading/loadingStateTracker.d.ts.map +1 -0
  88. package/build/core/loading/loadingStateTracker.js +209 -0
  89. package/build/core/loading/loadingStateTracker.js.map +1 -0
  90. package/build/core/loading/mcpLoadingManager.d.ts +139 -0
  91. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -0
  92. package/build/core/loading/mcpLoadingManager.js +296 -0
  93. package/build/core/loading/mcpLoadingManager.js.map +1 -0
  94. package/build/core/notifications/notificationManager.d.ts +111 -0
  95. package/build/core/notifications/notificationManager.d.ts.map +1 -0
  96. package/build/core/notifications/notificationManager.js +232 -0
  97. package/build/core/notifications/notificationManager.js.map +1 -0
  98. package/build/core/server/agentConfig.d.ts +59 -0
  99. package/build/core/server/agentConfig.d.ts.map +1 -1
  100. package/build/core/server/agentConfig.js +82 -1
  101. package/build/core/server/agentConfig.js.map +1 -1
  102. package/build/core/server/serverManager.d.ts +1 -0
  103. package/build/core/server/serverManager.d.ts.map +1 -1
  104. package/build/core/server/serverManager.js +3 -0
  105. package/build/core/server/serverManager.js.map +1 -1
  106. package/build/index.js +123 -31
  107. package/build/index.js.map +1 -1
  108. package/build/server.d.ts +23 -2
  109. package/build/server.d.ts.map +1 -1
  110. package/build/server.js +83 -10
  111. package/build/server.js.map +1 -1
  112. package/build/services/healthService.d.ts +107 -0
  113. package/build/services/healthService.d.ts.map +1 -0
  114. package/build/services/healthService.js +294 -0
  115. package/build/services/healthService.js.map +1 -0
  116. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
  117. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
  118. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +243 -0
  119. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
  120. package/build/transport/http/routes/healthRoutes.d.ts +8 -0
  121. package/build/transport/http/routes/healthRoutes.d.ts.map +1 -0
  122. package/build/transport/http/routes/healthRoutes.js +282 -0
  123. package/build/transport/http/routes/healthRoutes.js.map +1 -0
  124. package/build/transport/http/routes/sseRoutes.d.ts +2 -1
  125. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  126. package/build/transport/http/routes/sseRoutes.js +13 -1
  127. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  128. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  129. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  130. package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
  131. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  132. package/build/transport/http/server.d.ts +7 -1
  133. package/build/transport/http/server.d.ts.map +1 -1
  134. package/build/transport/http/server.js +17 -3
  135. package/build/transport/http/server.js.map +1 -1
  136. package/build/transport/transportFactory.d.ts +4 -0
  137. package/build/transport/transportFactory.d.ts.map +1 -1
  138. package/build/transport/transportFactory.js +1 -1
  139. package/build/transport/transportFactory.js.map +1 -1
  140. package/build/utils/appDiscovery.d.ts +75 -0
  141. package/build/utils/appDiscovery.d.ts.map +1 -0
  142. package/build/utils/appDiscovery.js +358 -0
  143. package/build/utils/appDiscovery.js.map +1 -0
  144. package/build/utils/appPresets.d.ts +88 -0
  145. package/build/utils/appPresets.d.ts.map +1 -0
  146. package/build/utils/appPresets.js +430 -0
  147. package/build/utils/appPresets.js.map +1 -0
  148. package/build/utils/backupManager.d.ts +61 -0
  149. package/build/utils/backupManager.d.ts.map +1 -0
  150. package/build/utils/backupManager.js +314 -0
  151. package/build/utils/backupManager.js.map +1 -0
  152. package/build/utils/urlDetection.d.ts +35 -0
  153. package/build/utils/urlDetection.d.ts.map +1 -0
  154. package/build/utils/urlDetection.js +115 -0
  155. package/build/utils/urlDetection.js.map +1 -0
  156. package/build/utils/validationHelpers.d.ts +62 -0
  157. package/build/utils/validationHelpers.d.ts.map +1 -0
  158. package/build/utils/validationHelpers.js +252 -0
  159. package/build/utils/validationHelpers.js.map +1 -0
  160. package/package.json +25 -3
@@ -0,0 +1,243 @@
1
+ import logger from '../../../logger/logger.js';
2
+ import { LoadingState } from '../../../core/loading/loadingStateTracker.js';
3
+ import { getValidatedTags } from './scopeAuthMiddleware.js';
4
+ import { McpConfigManager } from '../../../config/mcpConfigManager.js';
5
+ /**
6
+ * Default options for MCP availability middleware
7
+ */
8
+ const DEFAULT_OPTIONS = {
9
+ allowPartialAvailability: true,
10
+ includeOAuthServers: false,
11
+ unavailableMessage: 'Some requested MCP servers are not available',
12
+ loadingMessage: 'Some requested MCP servers are still loading',
13
+ };
14
+ /**
15
+ * Creates middleware that checks MCP server availability before processing requests
16
+ *
17
+ * This middleware examines the loading state of MCP servers and provides different
18
+ * behaviors based on server availability and configuration options.
19
+ *
20
+ * @param loadingManager - The MCP loading manager instance
21
+ * @param options - Configuration options for availability checking
22
+ * @returns Express middleware function
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const availabilityMiddleware = createMcpAvailabilityMiddleware(loadingManager, {
27
+ * allowPartialAvailability: true,
28
+ * includeOAuthServers: false,
29
+ * });
30
+ *
31
+ * router.post('/mcp', availabilityMiddleware, (req, res) => {
32
+ * // Handle MCP request with availability info in req.mcpAvailability
33
+ * });
34
+ * ```
35
+ */
36
+ export function createMcpAvailabilityMiddleware(loadingManager, options = {}) {
37
+ const opts = { ...DEFAULT_OPTIONS, ...options };
38
+ return (req, res, next) => {
39
+ try {
40
+ // If no loading manager, assume all servers are available (legacy mode)
41
+ if (!loadingManager) {
42
+ logger.debug('No loading manager - assuming all servers available');
43
+ next();
44
+ return;
45
+ }
46
+ // Get requested tags from scope auth middleware
47
+ const requestedTags = getValidatedTags(res);
48
+ // If no specific tags requested, get all servers
49
+ const stateTracker = loadingManager.getStateTracker();
50
+ const allStates = stateTracker.getAllServerStates();
51
+ // Filter servers based on requested tags
52
+ // Tags are used to control which MCP servers are available for requests.
53
+ // When tags are specified, only servers that have ALL the requested tags will be included.
54
+ const allServers = Array.from(allStates.keys());
55
+ let relevantServers;
56
+ if (requestedTags && requestedTags.length > 0) {
57
+ // Get server configurations to access tags
58
+ const configManager = McpConfigManager.getInstance();
59
+ const transportConfig = configManager.getTransportConfig();
60
+ // Filter servers that have ALL requested tags
61
+ // This implements the "AND" logic: servers must have every requested tag
62
+ relevantServers = allServers.filter((serverName) => {
63
+ const serverConfig = transportConfig[serverName];
64
+ if (!serverConfig || !serverConfig.tags) {
65
+ // Server has no tags, so it doesn't match any tag request
66
+ return false;
67
+ }
68
+ // Check if server has ALL requested tags (case-insensitive matching)
69
+ const serverTags = serverConfig.tags.map((tag) => tag.toLowerCase());
70
+ const requestedTagsLower = requestedTags.map((tag) => tag.toLowerCase());
71
+ return requestedTagsLower.every((requestedTag) => serverTags.includes(requestedTag));
72
+ });
73
+ logger.debug(`Filtered ${relevantServers.length}/${allServers.length} servers ` + `with tags: ${requestedTags.join(', ')}`);
74
+ }
75
+ else {
76
+ relevantServers = allServers;
77
+ logger.debug(`Checking availability for all ${relevantServers.length} servers`);
78
+ }
79
+ // Categorize servers by state
80
+ const availableServers = [];
81
+ const unavailableServers = [];
82
+ const loadingServers = [];
83
+ const oauthRequiredServers = [];
84
+ for (const serverName of relevantServers) {
85
+ const serverInfo = stateTracker.getServerState(serverName);
86
+ if (!serverInfo) {
87
+ unavailableServers.push(serverName);
88
+ continue;
89
+ }
90
+ switch (serverInfo.state) {
91
+ case LoadingState.Ready:
92
+ availableServers.push(serverName);
93
+ break;
94
+ case LoadingState.Loading:
95
+ case LoadingState.Pending:
96
+ loadingServers.push(serverName);
97
+ break;
98
+ case LoadingState.AwaitingOAuth:
99
+ if (opts.includeOAuthServers) {
100
+ availableServers.push(serverName);
101
+ }
102
+ else {
103
+ oauthRequiredServers.push(serverName);
104
+ }
105
+ break;
106
+ case LoadingState.Failed:
107
+ case LoadingState.Cancelled:
108
+ default:
109
+ unavailableServers.push(serverName);
110
+ break;
111
+ }
112
+ }
113
+ // Calculate availability metrics
114
+ const hasPartialAvailability = availableServers.length > 0;
115
+ const allServersReady = relevantServers.length > 0 && availableServers.length === relevantServers.length;
116
+ // Add availability info to request
117
+ req.mcpAvailability = {
118
+ availableServers,
119
+ unavailableServers,
120
+ loadingServers,
121
+ oauthRequiredServers,
122
+ hasPartialAvailability,
123
+ allServersReady,
124
+ requestedTags: requestedTags && requestedTags.length > 0 ? requestedTags : undefined,
125
+ totalServersBeforeFiltering: requestedTags && requestedTags.length > 0 ? allServers.length : undefined,
126
+ };
127
+ // Log availability status
128
+ const tagInfo = requestedTags && requestedTags.length > 0
129
+ ? ` (filtered by tags: ${requestedTags.join(', ')}, ${allServers.length} total)`
130
+ : '';
131
+ logger.debug(`MCP Availability: ${availableServers.length}/${relevantServers.length} ready, ` +
132
+ `${loadingServers.length} loading, ${unavailableServers.length} failed, ` +
133
+ `${oauthRequiredServers.length} OAuth required${tagInfo}`);
134
+ // Decide whether to proceed based on availability
135
+ if (relevantServers.length === 0) {
136
+ // No servers configured - proceed normally
137
+ next();
138
+ return;
139
+ }
140
+ if (allServersReady) {
141
+ // All servers ready - proceed normally
142
+ next();
143
+ return;
144
+ }
145
+ if (!hasPartialAvailability) {
146
+ // No servers available - return error
147
+ logger.warn('No MCP servers available for request');
148
+ res.status(503).json({
149
+ error: 'service_unavailable',
150
+ message: 'No MCP servers are currently available',
151
+ details: {
152
+ total: relevantServers.length,
153
+ available: availableServers.length,
154
+ loading: loadingServers.length,
155
+ failed: unavailableServers.length,
156
+ oauthRequired: oauthRequiredServers.length,
157
+ },
158
+ loading: {
159
+ isComplete: stateTracker.isLoadingComplete(),
160
+ summary: loadingManager.getSummary(),
161
+ },
162
+ timestamp: new Date().toISOString(),
163
+ });
164
+ return;
165
+ }
166
+ if (opts.allowPartialAvailability) {
167
+ // Some servers available - proceed with warning
168
+ logger.info(`Proceeding with partial MCP availability: ${availableServers.length}/${relevantServers.length} servers ready`);
169
+ // Add warning headers
170
+ res.setHeader('X-MCP-Partial-Availability', 'true');
171
+ res.setHeader('X-MCP-Available-Count', availableServers.length.toString());
172
+ res.setHeader('X-MCP-Total-Count', relevantServers.length.toString());
173
+ if (loadingServers.length > 0) {
174
+ res.setHeader('X-MCP-Loading-Count', loadingServers.length.toString());
175
+ }
176
+ next();
177
+ return;
178
+ }
179
+ else {
180
+ // Partial availability not allowed - return error
181
+ logger.warn('Partial MCP availability not allowed - blocking request');
182
+ const primaryReason = loadingServers.length > 0 ? 'loading' : 'unavailable';
183
+ const message = primaryReason === 'loading' ? opts.loadingMessage : opts.unavailableMessage;
184
+ res.status(primaryReason === 'loading' ? 202 : 503).json({
185
+ error: primaryReason === 'loading' ? 'servers_loading' : 'servers_unavailable',
186
+ message,
187
+ details: {
188
+ total: relevantServers.length,
189
+ available: availableServers.length,
190
+ loading: loadingServers.length,
191
+ failed: unavailableServers.length,
192
+ oauthRequired: oauthRequiredServers.length,
193
+ availableList: availableServers,
194
+ loadingList: loadingServers,
195
+ failedList: unavailableServers,
196
+ oauthRequiredList: oauthRequiredServers,
197
+ },
198
+ loading: {
199
+ isComplete: stateTracker.isLoadingComplete(),
200
+ summary: loadingManager.getSummary(),
201
+ },
202
+ retryAfter: primaryReason === 'loading' ? 30 : undefined, // Suggest retry in 30 seconds for loading
203
+ timestamp: new Date().toISOString(),
204
+ });
205
+ return;
206
+ }
207
+ }
208
+ catch (error) {
209
+ logger.error('MCP availability check failed:', error);
210
+ // On error, proceed normally to avoid blocking requests
211
+ // This ensures the system remains functional even if availability checking fails
212
+ next();
213
+ }
214
+ };
215
+ }
216
+ /**
217
+ * Utility function to get MCP availability info from request
218
+ */
219
+ export function getMcpAvailability(req) {
220
+ return req.mcpAvailability;
221
+ }
222
+ /**
223
+ * Utility function to check if all MCP servers are ready
224
+ */
225
+ export function areAllMcpServersReady(req) {
226
+ const availability = getMcpAvailability(req);
227
+ return availability?.allServersReady ?? true; // Assume ready if no availability info
228
+ }
229
+ /**
230
+ * Utility function to get list of available MCP servers
231
+ */
232
+ export function getAvailableMcpServers(req) {
233
+ const availability = getMcpAvailability(req);
234
+ return availability?.availableServers ?? [];
235
+ }
236
+ /**
237
+ * Utility function to get list of loading MCP servers
238
+ */
239
+ export function getLoadingMcpServers(req) {
240
+ const availability = getMcpAvailability(req);
241
+ return availability?.loadingServers ?? [];
242
+ }
243
+ //# sourceMappingURL=mcpAvailabilityMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpAvailabilityMiddleware.js","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/mcpAvailabilityMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Router } from 'express';
2
+ import { McpLoadingManager } from '../../../core/loading/mcpLoadingManager.js';
3
+ /**
4
+ * Creates health check routes
5
+ */
6
+ export declare function createHealthRoutes(loadingManager?: McpLoadingManager): Router;
7
+ export default createHealthRoutes;
8
+ //# sourceMappingURL=healthRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/healthRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAIpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAgT7E;AAGD,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,282 @@
1
+ import { Router } from 'express';
2
+ import rateLimit from 'express-rate-limit';
3
+ import logger from '../../../logger/logger.js';
4
+ import { HealthService, HealthStatus } from '../../../services/healthService.js';
5
+ import { LoadingState } from '../../../core/loading/loadingStateTracker.js';
6
+ /**
7
+ * Creates health check routes
8
+ */
9
+ export function createHealthRoutes(loadingManager) {
10
+ const router = Router();
11
+ const healthService = HealthService.getInstance();
12
+ // Rate limiter for health endpoints - more permissive than OAuth endpoints
13
+ const createHealthLimiter = () => {
14
+ return rateLimit({
15
+ windowMs: 5 * 60 * 1000, // 5 minutes
16
+ max: 200, // max requests per window per IP (higher limit for monitoring)
17
+ standardHeaders: true,
18
+ legacyHeaders: false,
19
+ message: {
20
+ error: 'Too many health check requests, please try again later.',
21
+ status: 'rate_limited',
22
+ },
23
+ });
24
+ };
25
+ router.use(createHealthLimiter());
26
+ /**
27
+ * Health check endpoint
28
+ * GET /health
29
+ *
30
+ * Returns comprehensive health status including:
31
+ * - Overall system status
32
+ * - MCP server connectivity status
33
+ * - System metrics (uptime, memory)
34
+ * - Configuration status
35
+ */
36
+ const healthHandler = async (req, res) => {
37
+ try {
38
+ logger.debug('Health check requested');
39
+ const healthData = await healthService.performHealthCheck();
40
+ const httpStatusCode = healthService.getHttpStatusCode(healthData.status);
41
+ // Set appropriate headers
42
+ res.setHeader('Content-Type', 'application/json');
43
+ res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
44
+ // Add custom headers for monitoring tools
45
+ res.setHeader('X-Health-Status', healthData.status);
46
+ res.setHeader('X-Service-Version', healthData.version);
47
+ res.setHeader('X-Uptime-Seconds', healthData.system.uptime.toString());
48
+ logger.debug(`Health check completed with status: ${healthData.status}`);
49
+ res.status(httpStatusCode).json(healthData);
50
+ }
51
+ catch (error) {
52
+ logger.error('Health check failed:', error);
53
+ // Return error response with 500 status
54
+ res.status(500).json({
55
+ status: HealthStatus.UNHEALTHY,
56
+ timestamp: new Date().toISOString(),
57
+ error: 'Health check failed',
58
+ message: error instanceof Error ? error.message : 'Unknown error occurred',
59
+ });
60
+ }
61
+ };
62
+ router.get('/', healthHandler);
63
+ /**
64
+ * Simple liveness probe endpoint
65
+ * GET /health/live
66
+ *
67
+ * Returns minimal response for basic liveness checking
68
+ * Always returns 200 if the server is running
69
+ */
70
+ const livenessHandler = (req, res) => {
71
+ res.setHeader('Content-Type', 'application/json');
72
+ res.setHeader('Cache-Control', 'no-cache');
73
+ res.status(200).json({
74
+ status: 'alive',
75
+ timestamp: new Date().toISOString(),
76
+ });
77
+ };
78
+ router.get('/live', livenessHandler);
79
+ /**
80
+ * Readiness probe endpoint
81
+ * GET /health/ready
82
+ *
83
+ * Returns 200 if service is ready to accept requests
84
+ * Returns 503 if service is not ready (e.g., configuration not loaded)
85
+ */
86
+ const readinessHandler = async (req, res) => {
87
+ try {
88
+ const healthData = await healthService.performHealthCheck();
89
+ // Service is ready if configuration is loaded
90
+ const isReady = healthData.configuration.loaded;
91
+ const statusCode = isReady ? 200 : 503;
92
+ res.setHeader('Content-Type', 'application/json');
93
+ res.setHeader('Cache-Control', 'no-cache');
94
+ res.status(statusCode).json({
95
+ status: isReady ? 'ready' : 'not_ready',
96
+ timestamp: new Date().toISOString(),
97
+ configuration: healthData.configuration,
98
+ });
99
+ }
100
+ catch (error) {
101
+ logger.error('Readiness check failed:', error);
102
+ res.status(503).json({
103
+ status: 'not_ready',
104
+ timestamp: new Date().toISOString(),
105
+ error: 'Readiness check failed',
106
+ });
107
+ }
108
+ };
109
+ router.get('/ready', readinessHandler);
110
+ /**
111
+ * MCP servers loading status endpoint
112
+ * GET /health/mcp
113
+ *
114
+ * Returns real-time status of MCP server loading process
115
+ */
116
+ const mcpLoadingHandler = (req, res) => {
117
+ try {
118
+ if (!loadingManager) {
119
+ res.status(404).json({
120
+ error: 'MCP loading manager not available',
121
+ timestamp: new Date().toISOString(),
122
+ });
123
+ return;
124
+ }
125
+ const summary = loadingManager.getSummary();
126
+ const allStates = loadingManager.getStateTracker().getAllServerStates();
127
+ // Group servers by state for better organization
128
+ const serversByState = {
129
+ pending: [],
130
+ loading: [],
131
+ ready: [],
132
+ failed: [],
133
+ awaitingOAuth: [],
134
+ cancelled: [],
135
+ };
136
+ const serverDetails = {};
137
+ for (const [name, info] of allStates) {
138
+ // Add to state groups
139
+ switch (info.state) {
140
+ case LoadingState.Pending:
141
+ serversByState.pending.push(name);
142
+ break;
143
+ case LoadingState.Loading:
144
+ serversByState.loading.push(name);
145
+ break;
146
+ case LoadingState.Ready:
147
+ serversByState.ready.push(name);
148
+ break;
149
+ case LoadingState.Failed:
150
+ serversByState.failed.push(name);
151
+ break;
152
+ case LoadingState.AwaitingOAuth:
153
+ serversByState.awaitingOAuth.push(name);
154
+ break;
155
+ case LoadingState.Cancelled:
156
+ serversByState.cancelled.push(name);
157
+ break;
158
+ }
159
+ // Add detailed info
160
+ serverDetails[name] = {
161
+ state: info.state,
162
+ retryCount: info.retryCount,
163
+ duration: info.duration,
164
+ startTime: info.startTime,
165
+ endTime: info.endTime,
166
+ error: info.error?.message,
167
+ progress: info.progress,
168
+ authorizationUrl: info.authorizationUrl,
169
+ };
170
+ }
171
+ res.setHeader('Content-Type', 'application/json');
172
+ res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
173
+ res.setHeader('X-Loading-Complete', summary.isComplete.toString());
174
+ res.setHeader('X-Success-Rate', summary.successRate.toFixed(1));
175
+ const responseData = {
176
+ loading: {
177
+ isComplete: summary.isComplete,
178
+ startTime: summary.startTime,
179
+ successRate: summary.successRate,
180
+ averageLoadTime: summary.averageLoadTime,
181
+ },
182
+ summary: {
183
+ total: summary.totalServers,
184
+ pending: summary.pending,
185
+ loading: summary.loading,
186
+ ready: summary.ready,
187
+ failed: summary.failed,
188
+ awaitingOAuth: summary.awaitingOAuth,
189
+ cancelled: summary.cancelled,
190
+ },
191
+ servers: {
192
+ byState: serversByState,
193
+ details: serverDetails,
194
+ },
195
+ timestamp: new Date().toISOString(),
196
+ };
197
+ // Set status code based on loading state
198
+ const statusCode = summary.isComplete ? 200 : 202; // 202 = Accepted (still processing)
199
+ res.status(statusCode).json(responseData);
200
+ }
201
+ catch (error) {
202
+ logger.error('MCP loading status check failed:', error);
203
+ res.status(500).json({
204
+ error: 'MCP loading status check failed',
205
+ message: error instanceof Error ? error.message : 'Unknown error occurred',
206
+ timestamp: new Date().toISOString(),
207
+ });
208
+ }
209
+ };
210
+ router.get('/mcp', mcpLoadingHandler);
211
+ /**
212
+ * Detailed server-specific loading status
213
+ * GET /health/mcp/:serverName
214
+ */
215
+ const serverSpecificHandler = (req, res) => {
216
+ try {
217
+ if (!loadingManager) {
218
+ res.status(404).json({
219
+ error: 'MCP loading manager not available',
220
+ timestamp: new Date().toISOString(),
221
+ });
222
+ return;
223
+ }
224
+ const serverName = req.params.serverName;
225
+ const serverInfo = loadingManager.getStateTracker().getServerState(serverName);
226
+ if (!serverInfo) {
227
+ res.status(404).json({
228
+ error: `Server '${serverName}' not found`,
229
+ timestamp: new Date().toISOString(),
230
+ });
231
+ return;
232
+ }
233
+ res.setHeader('Content-Type', 'application/json');
234
+ res.setHeader('Cache-Control', 'no-cache');
235
+ res.setHeader('X-Server-State', serverInfo.state);
236
+ const responseData = {
237
+ name: serverInfo.name,
238
+ state: serverInfo.state,
239
+ retryCount: serverInfo.retryCount,
240
+ duration: serverInfo.duration,
241
+ startTime: serverInfo.startTime,
242
+ endTime: serverInfo.endTime,
243
+ lastRetryTime: serverInfo.lastRetryTime,
244
+ error: serverInfo.error
245
+ ? {
246
+ message: serverInfo.error.message,
247
+ name: serverInfo.error.name,
248
+ }
249
+ : undefined,
250
+ progress: serverInfo.progress,
251
+ authorizationUrl: serverInfo.authorizationUrl,
252
+ oauthStartTime: serverInfo.oauthStartTime,
253
+ timestamp: new Date().toISOString(),
254
+ };
255
+ // Set status code based on server state
256
+ let statusCode = 200;
257
+ if (serverInfo.state === LoadingState.Loading) {
258
+ statusCode = 202; // Still processing
259
+ }
260
+ else if (serverInfo.state === LoadingState.Failed) {
261
+ statusCode = 503; // Service unavailable
262
+ }
263
+ else if (serverInfo.state === LoadingState.AwaitingOAuth) {
264
+ statusCode = 401; // Unauthorized - needs OAuth
265
+ }
266
+ res.status(statusCode).json(responseData);
267
+ }
268
+ catch (error) {
269
+ logger.error(`Server-specific loading status check failed for ${req.params.serverName}:`, error);
270
+ res.status(500).json({
271
+ error: 'Server-specific loading status check failed',
272
+ message: error instanceof Error ? error.message : 'Unknown error occurred',
273
+ timestamp: new Date().toISOString(),
274
+ });
275
+ }
276
+ };
277
+ router.get('/mcp/:serverName', serverSpecificHandler);
278
+ return router;
279
+ }
280
+ // Export the factory function as default
281
+ export default createHealthRoutes;
282
+ //# sourceMappingURL=healthRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/healthRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Router } from 'express';
2
2
  import { ServerManager } from '../../../core/server/serverManager.js';
3
- export declare function setupSseRoutes(router: Router, serverManager: ServerManager, authMiddleware: any): void;
3
+ import { AsyncLoadingOrchestrator } from '../../../core/capabilities/asyncLoadingOrchestrator.js';
4
+ export declare function setupSseRoutes(router: Router, serverManager: ServerManager, authMiddleware: any, availabilityMiddleware?: any, asyncOrchestrator?: AsyncLoadingOrchestrator): void;
4
5
  //# sourceMappingURL=sseRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sseRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAKpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAKtE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CAuEtG"}
1
+ {"version":3,"file":"sseRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAKpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAIlG,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,GAAG,EACnB,sBAAsB,CAAC,EAAE,GAAG,EAC5B,iBAAiB,CAAC,EAAE,wBAAwB,GAC3C,IAAI,CAqFN"}
@@ -5,8 +5,12 @@ import { SSE_ENDPOINT, MESSAGES_ENDPOINT } from '../../../constants.js';
5
5
  import { ServerStatus } from '../../../core/types/index.js';
6
6
  import tagsExtractor from '../middlewares/tagsExtractor.js';
7
7
  import { getValidatedTags } from '../middlewares/scopeAuthMiddleware.js';
8
- export function setupSseRoutes(router, serverManager, authMiddleware) {
8
+ export function setupSseRoutes(router, serverManager, authMiddleware, availabilityMiddleware, asyncOrchestrator) {
9
9
  const middlewares = [tagsExtractor, authMiddleware];
10
+ // Add availability middleware if provided
11
+ if (availabilityMiddleware) {
12
+ middlewares.push(availabilityMiddleware);
13
+ }
10
14
  router.get(SSE_ENDPOINT, ...middlewares, async (req, res) => {
11
15
  try {
12
16
  const transport = new SSEServerTransport(MESSAGES_ENDPOINT, res);
@@ -17,6 +21,14 @@ export function setupSseRoutes(router, serverManager, authMiddleware) {
17
21
  tags,
18
22
  enablePagination: req.query.pagination === 'true',
19
23
  });
24
+ // Initialize notifications for async loading if enabled
25
+ if (asyncOrchestrator) {
26
+ const inboundConnection = serverManager.getServer(transport.sessionId);
27
+ if (inboundConnection) {
28
+ asyncOrchestrator.initializeNotifications(inboundConnection);
29
+ logger.debug(`Async loading notifications initialized for SSE session ${transport.sessionId}`);
30
+ }
31
+ }
20
32
  transport.onclose = () => {
21
33
  serverManager.disconnectTransport(transport.sessionId);
22
34
  // Note: ServerManager already logs the disconnection
@@ -1 +1 @@
1
- {"version":3,"file":"sseRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sseRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Router } from 'express';
2
2
  import { ServerManager } from '../../../core/server/serverManager.js';
3
- export declare function setupStreamableHttpRoutes(router: Router, serverManager: ServerManager, authMiddleware: any): void;
3
+ import { AsyncLoadingOrchestrator } from '../../../core/capabilities/asyncLoadingOrchestrator.js';
4
+ export declare function setupStreamableHttpRoutes(router: Router, serverManager: ServerManager, authMiddleware: any, availabilityMiddleware?: any, asyncOrchestrator?: AsyncLoadingOrchestrator): void;
4
5
  //# sourceMappingURL=streamableHttpRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamableHttpRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAMpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAKtE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CA6HjH"}
1
+ {"version":3,"file":"streamableHttpRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAMpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAIlG,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,GAAG,EACnB,sBAAsB,CAAC,EAAE,GAAG,EAC5B,iBAAiB,CAAC,EAAE,wBAAwB,GAC3C,IAAI,CA2IN"}