@1mcp/agent 0.25.4 → 0.26.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 (114) hide show
  1. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
  2. package/build/auth/sdkOAuthClientProvider.js +3 -5
  3. package/build/auth/sdkOAuthClientProvider.js.map +1 -1
  4. package/build/auth/sessionTypes.d.ts +10 -0
  5. package/build/auth/sessionTypes.d.ts.map +1 -1
  6. package/build/auth/storage/fileStorageService.d.ts +25 -1
  7. package/build/auth/storage/fileStorageService.d.ts.map +1 -1
  8. package/build/auth/storage/fileStorageService.js +155 -27
  9. package/build/auth/storage/fileStorageService.js.map +1 -1
  10. package/build/auth/storage/oauthStorageService.js +1 -1
  11. package/build/auth/storage/oauthStorageService.js.map +1 -1
  12. package/build/commands/mcp/index.d.ts.map +1 -1
  13. package/build/commands/mcp/index.js +3 -2
  14. package/build/commands/mcp/index.js.map +1 -1
  15. package/build/commands/registry/index.d.ts +6 -0
  16. package/build/commands/registry/index.d.ts.map +1 -0
  17. package/build/commands/registry/index.js +67 -0
  18. package/build/commands/registry/index.js.map +1 -0
  19. package/build/commands/registry/options.d.ts +47 -0
  20. package/build/commands/registry/options.d.ts.map +1 -0
  21. package/build/commands/registry/options.js +39 -0
  22. package/build/commands/registry/options.js.map +1 -0
  23. package/build/commands/registry/search.d.ts +21 -0
  24. package/build/commands/registry/search.d.ts.map +1 -0
  25. package/build/commands/registry/search.js +186 -0
  26. package/build/commands/registry/search.js.map +1 -0
  27. package/build/commands/registry/show.d.ts +25 -0
  28. package/build/commands/registry/show.d.ts.map +1 -0
  29. package/build/commands/registry/show.js +87 -0
  30. package/build/commands/registry/show.js.map +1 -0
  31. package/build/commands/registry/status.d.ts +16 -0
  32. package/build/commands/registry/status.d.ts.map +1 -0
  33. package/build/commands/registry/status.js +86 -0
  34. package/build/commands/registry/status.js.map +1 -0
  35. package/build/commands/registry/versions.d.ts +21 -0
  36. package/build/commands/registry/versions.d.ts.map +1 -0
  37. package/build/commands/registry/versions.js +76 -0
  38. package/build/commands/registry/versions.js.map +1 -0
  39. package/build/constants/auth.d.ts +27 -0
  40. package/build/constants/auth.d.ts.map +1 -1
  41. package/build/constants/auth.js +31 -0
  42. package/build/constants/auth.js.map +1 -1
  43. package/build/constants/mcp.d.ts +1 -1
  44. package/build/constants/mcp.js +1 -1
  45. package/build/core/tools/handlers/registryHandler.d.ts +11 -0
  46. package/build/core/tools/handlers/registryHandler.d.ts.map +1 -0
  47. package/build/core/tools/handlers/registryHandler.js +49 -0
  48. package/build/core/tools/handlers/registryHandler.js.map +1 -0
  49. package/build/core/tools/handlers/searchHandler.d.ts +19 -0
  50. package/build/core/tools/handlers/searchHandler.d.ts.map +1 -0
  51. package/build/core/tools/handlers/searchHandler.js +104 -0
  52. package/build/core/tools/handlers/searchHandler.js.map +1 -0
  53. package/build/core/tools/handlers/showHandler.d.ts +10 -0
  54. package/build/core/tools/handlers/showHandler.d.ts.map +1 -0
  55. package/build/core/tools/handlers/showHandler.js +44 -0
  56. package/build/core/tools/handlers/showHandler.js.map +1 -0
  57. package/build/core/tools/handlers/versionsHandler.d.ts +10 -0
  58. package/build/core/tools/handlers/versionsHandler.d.ts.map +1 -0
  59. package/build/core/tools/handlers/versionsHandler.js +44 -0
  60. package/build/core/tools/handlers/versionsHandler.js.map +1 -0
  61. package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
  62. package/build/domains/preset/manager/presetManager.js +2 -2
  63. package/build/domains/preset/manager/presetManager.js.map +1 -1
  64. package/build/domains/registry/cacheManager.d.ts +61 -0
  65. package/build/domains/registry/cacheManager.d.ts.map +1 -0
  66. package/build/domains/registry/cacheManager.js +158 -0
  67. package/build/domains/registry/cacheManager.js.map +1 -0
  68. package/build/domains/registry/formatters/commonFormatters.d.ts +34 -0
  69. package/build/domains/registry/formatters/commonFormatters.d.ts.map +1 -0
  70. package/build/domains/registry/formatters/commonFormatters.js +154 -0
  71. package/build/domains/registry/formatters/commonFormatters.js.map +1 -0
  72. package/build/domains/registry/formatters/serverDetailFormatter.d.ts +6 -0
  73. package/build/domains/registry/formatters/serverDetailFormatter.d.ts.map +1 -0
  74. package/build/domains/registry/formatters/serverDetailFormatter.js +310 -0
  75. package/build/domains/registry/formatters/serverDetailFormatter.js.map +1 -0
  76. package/build/domains/registry/formatters/versionsFormatter.d.ts +6 -0
  77. package/build/domains/registry/formatters/versionsFormatter.d.ts.map +1 -0
  78. package/build/domains/registry/formatters/versionsFormatter.js +84 -0
  79. package/build/domains/registry/formatters/versionsFormatter.js.map +1 -0
  80. package/build/domains/registry/mcpRegistryClient.d.ts +101 -0
  81. package/build/domains/registry/mcpRegistryClient.d.ts.map +1 -0
  82. package/build/domains/registry/mcpRegistryClient.js +464 -0
  83. package/build/domains/registry/mcpRegistryClient.js.map +1 -0
  84. package/build/domains/registry/mcpToolSchemas.d.ts +63 -0
  85. package/build/domains/registry/mcpToolSchemas.d.ts.map +1 -0
  86. package/build/domains/registry/mcpToolSchemas.js +52 -0
  87. package/build/domains/registry/mcpToolSchemas.js.map +1 -0
  88. package/build/domains/registry/searchFiltering.d.ts +48 -0
  89. package/build/domains/registry/searchFiltering.d.ts.map +1 -0
  90. package/build/domains/registry/searchFiltering.js +201 -0
  91. package/build/domains/registry/searchFiltering.js.map +1 -0
  92. package/build/domains/registry/types.d.ts +204 -0
  93. package/build/domains/registry/types.d.ts.map +1 -0
  94. package/build/domains/registry/types.js +5 -0
  95. package/build/domains/registry/types.js.map +1 -0
  96. package/build/index.js +2 -0
  97. package/build/index.js.map +1 -1
  98. package/build/transport/http/restorableStreamableTransport.d.ts +52 -0
  99. package/build/transport/http/restorableStreamableTransport.d.ts.map +1 -0
  100. package/build/transport/http/restorableStreamableTransport.js +68 -0
  101. package/build/transport/http/restorableStreamableTransport.js.map +1 -0
  102. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  103. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  104. package/build/transport/http/routes/streamableHttpRoutes.js +113 -30
  105. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  106. package/build/transport/http/server.d.ts +2 -0
  107. package/build/transport/http/server.d.ts.map +1 -1
  108. package/build/transport/http/server.js +10 -2
  109. package/build/transport/http/server.js.map +1 -1
  110. package/build/transport/http/storage/streamableSessionRepository.d.ts +57 -0
  111. package/build/transport/http/storage/streamableSessionRepository.d.ts.map +1 -0
  112. package/build/transport/http/storage/streamableSessionRepository.js +156 -0
  113. package/build/transport/http/storage/streamableSessionRepository.js.map +1 -0
  114. package/package.json +2 -1
@@ -1,12 +1,68 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
3
  import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
4
- import { STREAMABLE_HTTP_ENDPOINT } from '../../../constants.js';
4
+ import { AUTH_CONFIG, STREAMABLE_HTTP_ENDPOINT } from '../../../constants.js';
5
5
  import { ServerStatus } from '../../../core/types/index.js';
6
6
  import logger from '../../../logger/logger.js';
7
7
  import { getPresetName, getTagExpression, getTagFilterMode, getTagQuery, getValidatedTags, } from '../../../transport/http/middlewares/scopeAuthMiddleware.js';
8
8
  import tagsExtractor from '../../../transport/http/middlewares/tagsExtractor.js';
9
- export function setupStreamableHttpRoutes(router, serverManager, authMiddleware, availabilityMiddleware, asyncOrchestrator, customTemplate) {
9
+ import { RestorableStreamableHTTPServerTransport } from '../../../transport/http/restorableStreamableTransport.js';
10
+ /**
11
+ * Helper function to restore a streamable HTTP session from persistent storage
12
+ * Uses RestorableStreamableHTTPServerTransport | RestorableStreamableHTTPServerTransport wrapper for proper initialization handling
13
+ */
14
+ async function restoreSession(sessionId, serverManager, sessionRepository, asyncOrchestrator) {
15
+ try {
16
+ // Try to retrieve session config from storage
17
+ const sessionData = sessionRepository.get(sessionId);
18
+ if (!sessionData) {
19
+ logger.debug(`No persisted session found for: ${sessionId}`);
20
+ return null;
21
+ }
22
+ const config = sessionData;
23
+ logger.info(`Restoring streamable session: ${sessionId}`);
24
+ // Create new transport with the original session ID using wrapper class
25
+ const transport = new RestorableStreamableHTTPServerTransport({
26
+ sessionIdGenerator: () => sessionId,
27
+ });
28
+ // Mark the transport as initialized for restored session
29
+ // The wrapper class safely handles the SDK's internal _initialized flag
30
+ transport.markAsInitialized();
31
+ transport.sessionId = sessionId;
32
+ // Reconnect with the original configuration
33
+ await serverManager.connectTransport(transport, sessionId, config);
34
+ // Initialize notifications for async loading if enabled
35
+ if (asyncOrchestrator) {
36
+ const inboundConnection = serverManager.getServer(sessionId);
37
+ if (inboundConnection) {
38
+ asyncOrchestrator.initializeNotifications(inboundConnection);
39
+ logger.debug(`Async loading notifications initialized for restored session ${sessionId}`);
40
+ }
41
+ }
42
+ // Set up handlers for the restored transport
43
+ transport.onclose = () => {
44
+ serverManager.disconnectTransport(sessionId);
45
+ sessionRepository.delete(sessionId);
46
+ };
47
+ transport.onerror = (error) => {
48
+ logger.error(`Streamable HTTP transport error for session ${sessionId}:`, error);
49
+ const server = serverManager.getServer(sessionId);
50
+ if (server) {
51
+ server.status = ServerStatus.Error;
52
+ server.lastError = error instanceof Error ? error : new Error(String(error));
53
+ }
54
+ };
55
+ // Update last accessed time with dual-trigger persistence
56
+ sessionRepository.updateAccess(sessionId);
57
+ logger.info(`Successfully restored streamable session: ${sessionId} (restored: ${transport.isRestored()})`);
58
+ return transport;
59
+ }
60
+ catch (error) {
61
+ logger.error(`Failed to restore streamable session ${sessionId}:`, error);
62
+ return null;
63
+ }
64
+ }
65
+ export function setupStreamableHttpRoutes(router, serverManager, sessionRepository, authMiddleware, availabilityMiddleware, asyncOrchestrator, customTemplate) {
10
66
  const middlewares = [tagsExtractor, authMiddleware];
11
67
  // Add availability middleware if provided
12
68
  if (availabilityMiddleware) {
@@ -17,7 +73,7 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
17
73
  let transport;
18
74
  const sessionId = req.headers['mcp-session-id'];
19
75
  if (!sessionId) {
20
- const id = randomUUID();
76
+ const id = AUTH_CONFIG.SERVER.STREAMABLE_SESSION.ID_PREFIX + randomUUID();
21
77
  transport = new StreamableHTTPServerTransport({
22
78
  sessionIdGenerator: () => id,
23
79
  });
@@ -27,7 +83,7 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
27
83
  const tagFilterMode = getTagFilterMode(res);
28
84
  const tagQuery = getTagQuery(res);
29
85
  const presetName = getPresetName(res);
30
- await serverManager.connectTransport(transport, id, {
86
+ const config = {
31
87
  tags,
32
88
  tagExpression,
33
89
  tagFilterMode,
@@ -35,7 +91,10 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
35
91
  presetName,
36
92
  enablePagination: req.query.pagination === 'true',
37
93
  customTemplate,
38
- });
94
+ };
95
+ await serverManager.connectTransport(transport, id, config);
96
+ // Persist session configuration for restoration
97
+ sessionRepository.create(id, config);
39
98
  // Initialize notifications for async loading if enabled
40
99
  if (asyncOrchestrator) {
41
100
  const inboundConnection = serverManager.getServer(id);
@@ -46,7 +105,7 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
46
105
  }
47
106
  transport.onclose = () => {
48
107
  serverManager.disconnectTransport(id);
49
- // Note: ServerManager already logs the disconnection
108
+ sessionRepository.delete(id);
50
109
  };
51
110
  transport.onerror = (error) => {
52
111
  logger.error(`Streamable HTTP transport error for session ${id}:`, error);
@@ -60,16 +119,24 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
60
119
  else {
61
120
  const existingTransport = serverManager.getTransport(sessionId);
62
121
  if (!existingTransport) {
63
- res.status(404).json({
64
- error: {
65
- code: ErrorCode.InvalidParams,
66
- message: 'No active streamable HTTP session found for the provided sessionId',
67
- },
68
- });
69
- return;
122
+ // Attempt to restore session from persistent storage
123
+ const restoredTransport = await restoreSession(sessionId, serverManager, sessionRepository, asyncOrchestrator);
124
+ if (!restoredTransport) {
125
+ res.status(404).json({
126
+ error: {
127
+ code: ErrorCode.InvalidParams,
128
+ message: 'No active streamable HTTP session found for the provided sessionId',
129
+ },
130
+ });
131
+ return;
132
+ }
133
+ transport = restoredTransport;
70
134
  }
71
- if (existingTransport instanceof StreamableHTTPServerTransport) {
135
+ else if (existingTransport instanceof StreamableHTTPServerTransport ||
136
+ existingTransport instanceof RestorableStreamableHTTPServerTransport) {
72
137
  transport = existingTransport;
138
+ // Update last accessed time for active sessions with dual-trigger persistence
139
+ sessionRepository.updateAccess(sessionId);
73
140
  }
74
141
  else {
75
142
  res.status(400).json({
@@ -100,15 +167,24 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
100
167
  });
101
168
  return;
102
169
  }
103
- const transport = serverManager.getTransport(sessionId);
170
+ let transport = serverManager.getTransport(sessionId);
104
171
  if (!transport) {
105
- res.status(404).json({
106
- error: {
107
- code: ErrorCode.InvalidParams,
108
- message: 'No active streamable HTTP session found for the provided sessionId',
109
- },
110
- });
111
- return;
172
+ // Attempt to restore session from persistent storage
173
+ const restoredTransport = await restoreSession(sessionId, serverManager, sessionRepository, asyncOrchestrator);
174
+ if (!restoredTransport) {
175
+ res.status(404).json({
176
+ error: {
177
+ code: ErrorCode.InvalidParams,
178
+ message: 'No active streamable HTTP session found for the provided sessionId',
179
+ },
180
+ });
181
+ return;
182
+ }
183
+ transport = restoredTransport;
184
+ }
185
+ else {
186
+ // Update last accessed time for active sessions with dual-trigger persistence
187
+ sessionRepository.updateAccess(sessionId);
112
188
  }
113
189
  await transport.handleRequest(req, res, req.body);
114
190
  }
@@ -129,17 +205,24 @@ export function setupStreamableHttpRoutes(router, serverManager, authMiddleware,
129
205
  });
130
206
  return;
131
207
  }
132
- const transport = serverManager.getTransport(sessionId);
208
+ let transport = serverManager.getTransport(sessionId);
133
209
  if (!transport) {
134
- res.status(404).json({
135
- error: {
136
- code: ErrorCode.InvalidParams,
137
- message: 'No active streamable HTTP session found for the provided sessionId',
138
- },
139
- });
140
- return;
210
+ // Attempt to restore session from persistent storage
211
+ const restoredTransport = await restoreSession(sessionId, serverManager, sessionRepository, asyncOrchestrator);
212
+ if (!restoredTransport) {
213
+ res.status(404).json({
214
+ error: {
215
+ code: ErrorCode.InvalidParams,
216
+ message: 'No active streamable HTTP session found for the provided sessionId',
217
+ },
218
+ });
219
+ return;
220
+ }
221
+ transport = restoredTransport;
141
222
  }
142
223
  await transport.handleRequest(req, res);
224
+ // Delete session from storage after explicit delete request
225
+ sessionRepository.delete(sessionId);
143
226
  }
144
227
  catch (error) {
145
228
  logger.error('Streamable HTTP error:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"streamableHttpRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamableHttpRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare class ExpressServer {
22
22
  private oauthProvider;
23
23
  private configManager;
24
24
  private customTemplate?;
25
+ private streamableSessionRepository;
25
26
  /**
26
27
  * Creates a new ExpressServer instance.
27
28
  *
@@ -73,6 +74,7 @@ export declare class ExpressServer {
73
74
  * - Authentication manager shutdown
74
75
  * - Session cleanup
75
76
  * - Timer cleanup
77
+ * - Streamable session repository flush
76
78
  */
77
79
  shutdown(): void;
78
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAkBlE;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAC3C,OAAO,CAAC,iBAAiB,CAAC,CAA2B;IACrD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAS;IAEhC;;;;;;;;;;OAUG;gBAED,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,iBAAiB,EAClC,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,cAAc,CAAC,EAAE,MAAM;IAqBzB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;;OASG;IACH,OAAO,CAAC,WAAW;IAiFnB;;;;;;;;OAQG;IACI,KAAK,IAAI,IAAI;IASpB;;;;;;;OAOG;IACI,QAAQ,IAAI,IAAI;CAGxB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAmBlE;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAC3C,OAAO,CAAC,iBAAiB,CAAC,CAA2B;IACrD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,2BAA2B,CAA8B;IAEjE;;;;;;;;;;OAUG;gBAED,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,iBAAiB,EAClC,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,cAAc,CAAC,EAAE,MAAM;IAyBzB;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;;OASG;IACH,OAAO,CAAC,WAAW;IAkFnB;;;;;;;;OAQG;IACI,KAAK,IAAI,IAAI;IASpB;;;;;;;;OAQG;IACI,QAAQ,IAAI,IAAI;CAIxB"}
@@ -1,7 +1,8 @@
1
1
  import { mcpAuthRouter } from '@modelcontextprotocol/sdk/server/auth/router.js';
2
2
  import { SDKOAuthServerProvider } from '../../auth/sdkOAuthServerProvider.js';
3
+ import { FileStorageService } from '../../auth/storage/fileStorageService.js';
3
4
  import { McpConfigManager } from '../../config/mcpConfigManager.js';
4
- import { RATE_LIMIT_CONFIG } from '../../constants.js';
5
+ import { RATE_LIMIT_CONFIG, STORAGE_SUBDIRS } from '../../constants.js';
5
6
  import { AgentConfigManager } from '../../core/server/agentConfig.js';
6
7
  import logger from '../../logger/logger.js';
7
8
  import bodyParser from 'body-parser';
@@ -16,6 +17,7 @@ import createHealthRoutes from './routes/healthRoutes.js';
16
17
  import createOAuthRoutes from './routes/oauthRoutes.js';
17
18
  import { setupSseRoutes } from './routes/sseRoutes.js';
18
19
  import { setupStreamableHttpRoutes } from './routes/streamableHttpRoutes.js';
20
+ import { StreamableSessionRepository } from './storage/streamableSessionRepository.js';
19
21
  /**
20
22
  * ExpressServer orchestrates the HTTP/SSE transport layer for the MCP server.
21
23
  *
@@ -37,6 +39,7 @@ export class ExpressServer {
37
39
  oauthProvider;
38
40
  configManager;
39
41
  customTemplate;
42
+ streamableSessionRepository;
40
43
  /**
41
44
  * Creates a new ExpressServer instance.
42
45
  *
@@ -60,6 +63,9 @@ export class ExpressServer {
60
63
  // Initialize OAuth provider with custom session storage path if configured
61
64
  const sessionStoragePath = this.configManager.getSessionStoragePath();
62
65
  this.oauthProvider = new SDKOAuthServerProvider(sessionStoragePath);
66
+ // Initialize streamable session repository with 'transport' subdirectory
67
+ const fileStorageService = new FileStorageService(sessionStoragePath, STORAGE_SUBDIRS.TRANSPORT);
68
+ this.streamableSessionRepository = new StreamableSessionRepository(fileStorageService);
63
69
  this.setupMiddleware();
64
70
  this.setupRoutes();
65
71
  }
@@ -142,7 +148,7 @@ export class ExpressServer {
142
148
  allowPartialAvailability: true,
143
149
  includeOAuthServers: false,
144
150
  });
145
- setupStreamableHttpRoutes(router, this.serverManager, scopeAuthMiddleware, availabilityMiddleware, this.asyncOrchestrator, this.customTemplate);
151
+ setupStreamableHttpRoutes(router, this.serverManager, this.streamableSessionRepository, scopeAuthMiddleware, availabilityMiddleware, this.asyncOrchestrator, this.customTemplate);
146
152
  setupSseRoutes(router, this.serverManager, scopeAuthMiddleware, availabilityMiddleware, this.asyncOrchestrator, this.customTemplate);
147
153
  this.app.use(router);
148
154
  // Log authentication status
@@ -177,9 +183,11 @@ export class ExpressServer {
177
183
  * - Authentication manager shutdown
178
184
  * - Session cleanup
179
185
  * - Timer cleanup
186
+ * - Streamable session repository flush
180
187
  */
181
188
  shutdown() {
182
189
  this.oauthProvider.shutdown();
190
+ this.streamableSessionRepository.stopPeriodicFlush();
183
191
  }
184
192
  }
185
193
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { FileStorageService } from '../../../auth/storage/fileStorageService.js';
2
+ import { InboundConnectionConfig } from '../../../core/types/index.js';
3
+ /**
4
+ * Repository for streamable HTTP session operations
5
+ *
6
+ * Manages session persistence with automatic expiration and cleanup.
7
+ * Sessions store configuration needed to restore connections after server restart.
8
+ *
9
+ * Uses Redis-style dual-trigger persistence for performance:
10
+ * - Persists after N requests OR M minutes, whichever comes first
11
+ * - Background flush every 60 seconds for dirty sessions
12
+ */
13
+ export declare class StreamableSessionRepository {
14
+ private storage;
15
+ private lastPersistTimes;
16
+ private lastAccessTimes;
17
+ private requestCounts;
18
+ private dirtySessionIds;
19
+ private flushInterval;
20
+ constructor(storage: FileStorageService);
21
+ /**
22
+ * Creates a new streamable session with the given ID and configuration
23
+ */
24
+ create(sessionId: string, config: InboundConnectionConfig): void;
25
+ /**
26
+ * Retrieves a session by ID and returns the configuration
27
+ */
28
+ get(sessionId: string): InboundConnectionConfig | null;
29
+ /**
30
+ * Updates the last accessed timestamp for a session with dual-trigger persistence
31
+ *
32
+ * Uses Redis-style save policy: persists after N requests OR M minutes, whichever comes first.
33
+ * Always updates in-memory timestamps to prevent data loss.
34
+ */
35
+ updateAccess(sessionId: string): void;
36
+ /**
37
+ * Deletes a session by ID
38
+ */
39
+ delete(sessionId: string): boolean;
40
+ /**
41
+ * Persists session access to disk and resets counters
42
+ */
43
+ private persistSessionAccess;
44
+ /**
45
+ * Flushes all dirty sessions to disk
46
+ */
47
+ private flushDirtySessions;
48
+ /**
49
+ * Starts periodic background flush of dirty sessions
50
+ */
51
+ private startPeriodicFlush;
52
+ /**
53
+ * Stops periodic flush and performs final flush of all dirty sessions
54
+ */
55
+ stopPeriodicFlush(): void;
56
+ }
57
+ //# sourceMappingURL=streamableSessionRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamableSessionRepository.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/storage/streamableSessionRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;;;;;;;;GASG;AACH,qBAAa,2BAA2B;IAU1B,OAAO,CAAC,OAAO;IAR3B,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAAqB;IAG5C,OAAO,CAAC,aAAa,CAA+C;gBAEhD,OAAO,EAAE,kBAAkB;IAI/C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAkBhE;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI;IAwBtD;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBrC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAclC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACI,iBAAiB,IAAI,IAAI;CAUjC"}
@@ -0,0 +1,156 @@
1
+ import { AUTH_CONFIG } from '../../../constants.js';
2
+ import logger from '../../../logger/logger.js';
3
+ /**
4
+ * Repository for streamable HTTP session operations
5
+ *
6
+ * Manages session persistence with automatic expiration and cleanup.
7
+ * Sessions store configuration needed to restore connections after server restart.
8
+ *
9
+ * Uses Redis-style dual-trigger persistence for performance:
10
+ * - Persists after N requests OR M minutes, whichever comes first
11
+ * - Background flush every 60 seconds for dirty sessions
12
+ */
13
+ export class StreamableSessionRepository {
14
+ storage;
15
+ // Per-session tracking for dual-trigger persistence
16
+ lastPersistTimes = new Map();
17
+ lastAccessTimes = new Map();
18
+ requestCounts = new Map();
19
+ dirtySessionIds = new Set();
20
+ // Background flush
21
+ flushInterval = null;
22
+ constructor(storage) {
23
+ this.storage = storage;
24
+ this.startPeriodicFlush();
25
+ }
26
+ /**
27
+ * Creates a new streamable session with the given ID and configuration
28
+ */
29
+ create(sessionId, config) {
30
+ const sessionData = {
31
+ tags: config.tags,
32
+ tagExpression: config.tagExpression ? JSON.stringify(config.tagExpression) : undefined,
33
+ tagQuery: config.tagQuery ? JSON.stringify(config.tagQuery) : undefined,
34
+ tagFilterMode: config.tagFilterMode,
35
+ presetName: config.presetName,
36
+ enablePagination: config.enablePagination,
37
+ customTemplate: config.customTemplate,
38
+ expires: Date.now() + AUTH_CONFIG.SERVER.STREAMABLE_SESSION.TTL_MS,
39
+ createdAt: Date.now(),
40
+ lastAccessedAt: Date.now(),
41
+ };
42
+ this.storage.writeData(AUTH_CONFIG.SERVER.STREAMABLE_SESSION.FILE_PREFIX, sessionId, sessionData);
43
+ logger.info(`Created streamable session: ${sessionId}`);
44
+ }
45
+ /**
46
+ * Retrieves a session by ID and returns the configuration
47
+ */
48
+ get(sessionId) {
49
+ const sessionData = this.storage.readData(AUTH_CONFIG.SERVER.STREAMABLE_SESSION.FILE_PREFIX, sessionId);
50
+ if (!sessionData) {
51
+ return null;
52
+ }
53
+ // Parse JSON fields back to objects
54
+ const config = {
55
+ tags: sessionData.tags,
56
+ tagExpression: sessionData.tagExpression ? JSON.parse(sessionData.tagExpression) : undefined,
57
+ tagQuery: sessionData.tagQuery ? JSON.parse(sessionData.tagQuery) : undefined,
58
+ tagFilterMode: sessionData.tagFilterMode,
59
+ presetName: sessionData.presetName,
60
+ enablePagination: sessionData.enablePagination,
61
+ customTemplate: sessionData.customTemplate,
62
+ };
63
+ return config;
64
+ }
65
+ /**
66
+ * Updates the last accessed timestamp for a session with dual-trigger persistence
67
+ *
68
+ * Uses Redis-style save policy: persists after N requests OR M minutes, whichever comes first.
69
+ * Always updates in-memory timestamps to prevent data loss.
70
+ */
71
+ updateAccess(sessionId) {
72
+ const now = Date.now();
73
+ // Always update in-memory timestamps
74
+ this.lastAccessTimes.set(sessionId, now);
75
+ const count = (this.requestCounts.get(sessionId) || 0) + 1;
76
+ this.requestCounts.set(sessionId, count);
77
+ this.dirtySessionIds.add(sessionId);
78
+ // Check dual triggers: N requests OR M minutes
79
+ const lastPersist = this.lastPersistTimes.get(sessionId) || 0;
80
+ const timeSince = now - lastPersist;
81
+ const policy = AUTH_CONFIG.SERVER.STREAMABLE_SESSION.SAVE_POLICY;
82
+ if (count >= policy.REQUESTS || timeSince >= policy.INTERVAL_MS) {
83
+ this.persistSessionAccess(sessionId, now);
84
+ }
85
+ }
86
+ /**
87
+ * Deletes a session by ID
88
+ */
89
+ delete(sessionId) {
90
+ // Clean up in-memory tracking
91
+ this.lastPersistTimes.delete(sessionId);
92
+ this.lastAccessTimes.delete(sessionId);
93
+ this.requestCounts.delete(sessionId);
94
+ this.dirtySessionIds.delete(sessionId);
95
+ const result = this.storage.deleteData(AUTH_CONFIG.SERVER.STREAMABLE_SESSION.FILE_PREFIX, sessionId);
96
+ if (result) {
97
+ logger.info(`Deleted streamable session: ${sessionId}`);
98
+ }
99
+ return result;
100
+ }
101
+ /**
102
+ * Persists session access to disk and resets counters
103
+ */
104
+ persistSessionAccess(sessionId, accessTime) {
105
+ const sessionData = this.storage.readData(AUTH_CONFIG.SERVER.STREAMABLE_SESSION.FILE_PREFIX, sessionId);
106
+ if (sessionData) {
107
+ sessionData.lastAccessedAt = accessTime;
108
+ // Extend expiration on access
109
+ sessionData.expires = accessTime + AUTH_CONFIG.SERVER.STREAMABLE_SESSION.TTL_MS;
110
+ this.storage.writeData(AUTH_CONFIG.SERVER.STREAMABLE_SESSION.FILE_PREFIX, sessionId, sessionData);
111
+ // Reset counters and update persist time
112
+ this.lastPersistTimes.set(sessionId, accessTime);
113
+ this.requestCounts.set(sessionId, 0);
114
+ this.dirtySessionIds.delete(sessionId);
115
+ logger.debug(`Persisted access time for streamable session: ${sessionId}`);
116
+ }
117
+ }
118
+ /**
119
+ * Flushes all dirty sessions to disk
120
+ */
121
+ flushDirtySessions() {
122
+ if (this.dirtySessionIds.size === 0) {
123
+ return;
124
+ }
125
+ const sessionsToFlush = Array.from(this.dirtySessionIds);
126
+ for (const sessionId of sessionsToFlush) {
127
+ const lastAccess = this.lastAccessTimes.get(sessionId);
128
+ if (lastAccess) {
129
+ this.persistSessionAccess(sessionId, lastAccess);
130
+ }
131
+ }
132
+ logger.debug(`Flushed ${sessionsToFlush.length} dirty sessions`);
133
+ }
134
+ /**
135
+ * Starts periodic background flush of dirty sessions
136
+ */
137
+ startPeriodicFlush() {
138
+ const policy = AUTH_CONFIG.SERVER.STREAMABLE_SESSION.SAVE_POLICY;
139
+ this.flushInterval = setInterval(() => {
140
+ this.flushDirtySessions();
141
+ }, policy.FLUSH_INTERVAL_MS);
142
+ }
143
+ /**
144
+ * Stops periodic flush and performs final flush of all dirty sessions
145
+ */
146
+ stopPeriodicFlush() {
147
+ if (this.flushInterval) {
148
+ clearInterval(this.flushInterval);
149
+ this.flushInterval = null;
150
+ }
151
+ // Final flush of all dirty sessions
152
+ this.flushDirtySessions();
153
+ logger.info('Stopped periodic flush and flushed remaining dirty sessions');
154
+ }
155
+ }
156
+ //# sourceMappingURL=streamableSessionRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamableSessionRepository.js","sourceRoot":"","sources":["../../../../src/transport/http/storage/streamableSessionRepository.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1mcp/agent",
3
- "version": "0.25.4",
3
+ "version": "0.26.0",
4
4
  "description": "One MCP server to aggregate them all - A unified Model Context Protocol server implementation",
5
5
  "keywords": [
6
6
  "mcp",
@@ -62,6 +62,7 @@
62
62
  "express": "^5.1.0",
63
63
  "express-rate-limit": "^7.5.1",
64
64
  "handlebars": "^4.7.8",
65
+ "https-proxy-agent": "^7.0.6",
65
66
  "json5": "^2.2.3",
66
67
  "prompts": "^2.4.2",
67
68
  "source-map-support": "^0.5.21",