@1mcp/agent 0.29.0-beta4 → 0.29.0-beta6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/constants/mcp.d.ts +5 -1
- package/build/constants/mcp.d.ts.map +1 -1
- package/build/constants/mcp.js +5 -1
- package/build/constants/mcp.js.map +1 -1
- package/build/core/client/clientManager.d.ts +15 -0
- package/build/core/client/clientManager.d.ts.map +1 -1
- package/build/core/client/clientManager.js +88 -9
- package/build/core/client/clientManager.js.map +1 -1
- package/build/core/loading/mcpLoadingManager.d.ts +1 -2
- package/build/core/loading/mcpLoadingManager.d.ts.map +1 -1
- package/build/core/loading/mcpLoadingManager.js +8 -24
- package/build/core/loading/mcpLoadingManager.js.map +1 -1
- package/build/core/loading/parallelExecutor.d.ts +91 -0
- package/build/core/loading/parallelExecutor.d.ts.map +1 -0
- package/build/core/loading/parallelExecutor.js +130 -0
- package/build/core/loading/parallelExecutor.js.map +1 -0
- package/build/transport/http/restorableStreamableTransport.d.ts +56 -11
- package/build/transport/http/restorableStreamableTransport.d.ts.map +1 -1
- package/build/transport/http/restorableStreamableTransport.js +93 -21
- package/build/transport/http/restorableStreamableTransport.js.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +105 -236
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/utils/sdkInternals.d.ts +32 -0
- package/build/transport/http/utils/sdkInternals.d.ts.map +1 -0
- package/build/transport/http/utils/sdkInternals.js +6 -0
- package/build/transport/http/utils/sdkInternals.js.map +1 -0
- package/build/transport/http/utils/sessionService.d.ts +76 -0
- package/build/transport/http/utils/sessionService.d.ts.map +1 -0
- package/build/transport/http/utils/sessionService.js +232 -0
- package/build/transport/http/utils/sessionService.js.map +1 -0
- package/build/transport/stdioProxyTransport.d.ts +15 -4
- package/build/transport/stdioProxyTransport.d.ts.map +1 -1
- package/build/transport/stdioProxyTransport.js +35 -47
- package/build/transport/stdioProxyTransport.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
+
import { AUTH_CONFIG } from '../../../constants.js';
|
|
4
|
+
import { ServerStatus } from '../../../core/types/index.js';
|
|
5
|
+
import logger from '../../../logger/logger.js';
|
|
6
|
+
import { RestorableStreamableHTTPServerTransport } from '../../../transport/http/restorableStreamableTransport.js';
|
|
7
|
+
/**
|
|
8
|
+
* Validates a session ID format.
|
|
9
|
+
*
|
|
10
|
+
* @param sessionId - The session ID to validate
|
|
11
|
+
* @returns true if the session ID is valid, false otherwise
|
|
12
|
+
*/
|
|
13
|
+
function isValidSessionId(sessionId) {
|
|
14
|
+
return typeof sessionId === 'string' && sessionId.trim().length > 0;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Service to handle session management logic for Streamable HTTP transport.
|
|
18
|
+
* Encapsulates creation, restoration, and cleanup of sessions.
|
|
19
|
+
*/
|
|
20
|
+
export class SessionService {
|
|
21
|
+
serverManager;
|
|
22
|
+
sessionRepository;
|
|
23
|
+
asyncOrchestrator;
|
|
24
|
+
constructor(serverManager, sessionRepository, asyncOrchestrator) {
|
|
25
|
+
this.serverManager = serverManager;
|
|
26
|
+
this.sessionRepository = sessionRepository;
|
|
27
|
+
this.asyncOrchestrator = asyncOrchestrator;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves an existing session transport or tries to restore it.
|
|
31
|
+
*
|
|
32
|
+
* @param sessionId - The session ID to retrieve
|
|
33
|
+
* @returns The transport if found or restored successfully, null otherwise
|
|
34
|
+
*/
|
|
35
|
+
async getSession(sessionId) {
|
|
36
|
+
// Validate sessionId
|
|
37
|
+
if (!isValidSessionId(sessionId)) {
|
|
38
|
+
logger.debug('Invalid sessionId provided to getSession');
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const existingTransport = this.serverManager.getTransport(sessionId);
|
|
42
|
+
if (existingTransport) {
|
|
43
|
+
// Verify the transport is the correct type for this endpoint
|
|
44
|
+
if (existingTransport instanceof StreamableHTTPServerTransport ||
|
|
45
|
+
existingTransport instanceof RestorableStreamableHTTPServerTransport) {
|
|
46
|
+
// Update last accessed time for active sessions
|
|
47
|
+
this.sessionRepository.updateAccess(sessionId);
|
|
48
|
+
return existingTransport;
|
|
49
|
+
}
|
|
50
|
+
// Transport exists but is wrong type (e.g., STDIO), so it's not usable here
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
// Try to restore from persistent storage
|
|
54
|
+
const result = await this.restoreSession(sessionId);
|
|
55
|
+
return result.transport;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Restores a session from persistent storage.
|
|
59
|
+
*
|
|
60
|
+
* @param sessionId - The session ID to restore
|
|
61
|
+
* @returns SessionRestoreResult with transport or error details
|
|
62
|
+
*/
|
|
63
|
+
async restoreSession(sessionId) {
|
|
64
|
+
try {
|
|
65
|
+
const sessionData = this.sessionRepository.get(sessionId);
|
|
66
|
+
if (!sessionData) {
|
|
67
|
+
logger.debug(`No persisted session found for: ${sessionId}`);
|
|
68
|
+
return { transport: null, errorType: 'not_found' };
|
|
69
|
+
}
|
|
70
|
+
const config = sessionData;
|
|
71
|
+
logger.info(`Restoring streamable session: ${sessionId}`);
|
|
72
|
+
// Create new transport with the original session ID using wrapper class
|
|
73
|
+
const transport = new RestorableStreamableHTTPServerTransport({
|
|
74
|
+
sessionIdGenerator: () => sessionId,
|
|
75
|
+
});
|
|
76
|
+
// Mark the transport as initialized for restored session
|
|
77
|
+
const initResult = transport.markAsInitialized();
|
|
78
|
+
if (!initResult.success) {
|
|
79
|
+
logger.warn(`Failed to mark transport ${sessionId} as initialized: ${initResult.error}`);
|
|
80
|
+
return { transport: null, error: initResult.error, errorType: 'transport_failed' };
|
|
81
|
+
}
|
|
82
|
+
// Set the sessionId for the restored session
|
|
83
|
+
const setSessionResult = transport.setSessionId(sessionId);
|
|
84
|
+
if (!setSessionResult.success) {
|
|
85
|
+
logger.warn(`Failed to set sessionId ${sessionId}: ${setSessionResult.error}`);
|
|
86
|
+
return { transport: null, error: setSessionResult.error, errorType: 'transport_failed' };
|
|
87
|
+
}
|
|
88
|
+
// Convert config context to ContextData format if available
|
|
89
|
+
const context = config.context;
|
|
90
|
+
const contextData = context
|
|
91
|
+
? {
|
|
92
|
+
project: context.project || { name: 'unknown' },
|
|
93
|
+
user: context.user || {},
|
|
94
|
+
environment: context.environment || {},
|
|
95
|
+
timestamp: context.timestamp || new Date().toISOString(),
|
|
96
|
+
sessionId: context.sessionId || sessionId,
|
|
97
|
+
version: context.version || 'unknown',
|
|
98
|
+
transport: context.transport || { type: 'unknown' },
|
|
99
|
+
}
|
|
100
|
+
: undefined;
|
|
101
|
+
// Reconnect with the original configuration and context
|
|
102
|
+
try {
|
|
103
|
+
await this.serverManager.connectTransport(transport, sessionId, config, contextData);
|
|
104
|
+
}
|
|
105
|
+
catch (connectError) {
|
|
106
|
+
const errorMessage = connectError instanceof Error ? connectError.message : String(connectError);
|
|
107
|
+
logger.error(`Failed to connect transport ${sessionId}:`, connectError);
|
|
108
|
+
return { transport: null, error: errorMessage, errorType: 'connection_failed' };
|
|
109
|
+
}
|
|
110
|
+
// Initialize notifications
|
|
111
|
+
this.initializeNotifications(sessionId);
|
|
112
|
+
// Set up handlers
|
|
113
|
+
this.setupTransportHandlers(transport, sessionId);
|
|
114
|
+
// Update last accessed time
|
|
115
|
+
this.sessionRepository.updateAccess(sessionId);
|
|
116
|
+
logger.info(`Successfully restored streamable session: ${sessionId} (restored: ${transport.isRestored()})`);
|
|
117
|
+
return { transport };
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
121
|
+
logger.error(`Failed to restore streamable session ${sessionId}:`, error);
|
|
122
|
+
return { transport: null, error: errorMessage, errorType: 'transport_failed' };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Creates a new session with the given configuration.
|
|
127
|
+
*
|
|
128
|
+
* @param config - The inbound connection configuration
|
|
129
|
+
* @param context - Optional context data for the session
|
|
130
|
+
* @param providedSessionId - Optional session ID to use instead of generating one
|
|
131
|
+
* @returns SessionCreateResult with transport and persistence status
|
|
132
|
+
* @throws Error if session creation fails (but not if persistence fails)
|
|
133
|
+
*/
|
|
134
|
+
async createSession(config, context, providedSessionId) {
|
|
135
|
+
const sessionId = providedSessionId || AUTH_CONFIG.SERVER.STREAMABLE_SESSION.ID_PREFIX + randomUUID();
|
|
136
|
+
let transport;
|
|
137
|
+
try {
|
|
138
|
+
transport = new StreamableHTTPServerTransport({
|
|
139
|
+
sessionIdGenerator: () => sessionId,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
144
|
+
logger.error(`Failed to create transport for session ${sessionId}:`, error);
|
|
145
|
+
throw new Error(`Session creation failed: transport initialization error - ${errorMessage}`);
|
|
146
|
+
}
|
|
147
|
+
if (context && context.project?.name && context.sessionId) {
|
|
148
|
+
logger.info(`New session with context: ${context.project.name} (${context.sessionId})${providedSessionId ? ` (ID: ${providedSessionId})` : ''}`);
|
|
149
|
+
}
|
|
150
|
+
// Include full context in config for session persistence
|
|
151
|
+
const configWithContext = {
|
|
152
|
+
...config,
|
|
153
|
+
context: context || undefined,
|
|
154
|
+
};
|
|
155
|
+
// Pass context to ServerManager
|
|
156
|
+
const validContext = context && context.project && context.user && context.environment ? context : undefined;
|
|
157
|
+
try {
|
|
158
|
+
await this.serverManager.connectTransport(transport, sessionId, configWithContext, validContext);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
162
|
+
logger.error(`Failed to connect transport ${sessionId}:`, error);
|
|
163
|
+
throw new Error(`Session creation failed: connection error - ${errorMessage}`);
|
|
164
|
+
}
|
|
165
|
+
// Try to persist session to storage
|
|
166
|
+
let persisted = false;
|
|
167
|
+
let persistenceError;
|
|
168
|
+
try {
|
|
169
|
+
this.sessionRepository.create(sessionId, configWithContext);
|
|
170
|
+
persisted = true;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
persistenceError = error instanceof Error ? error.message : String(error);
|
|
174
|
+
logger.warn(`Failed to persist session ${sessionId} to repository: ${persistenceError}`);
|
|
175
|
+
// Continue anyway - transport is connected, just not persisted
|
|
176
|
+
}
|
|
177
|
+
// Initialize notifications
|
|
178
|
+
this.initializeNotifications(sessionId);
|
|
179
|
+
// Set up handlers
|
|
180
|
+
this.setupTransportHandlers(transport, sessionId);
|
|
181
|
+
return { transport, persisted, persistenceError };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Deletes a session and cleans up resources.
|
|
185
|
+
*
|
|
186
|
+
* @param sessionId - The session ID to delete
|
|
187
|
+
*/
|
|
188
|
+
async deleteSession(sessionId) {
|
|
189
|
+
try {
|
|
190
|
+
this.sessionRepository.delete(sessionId);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
194
|
+
logger.error(`Failed to delete session ${sessionId} from repository: ${errorMessage}`);
|
|
195
|
+
// Consider: should this throw? Or is best-effort deletion acceptable?
|
|
196
|
+
// At minimum, the error is logged for monitoring
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Initializes async loading notifications for a session.
|
|
201
|
+
*
|
|
202
|
+
* This method should be called after connecting a transport to enable
|
|
203
|
+
* the async orchestrator to send capability updates to the client.
|
|
204
|
+
* Only applicable when async loading is enabled.
|
|
205
|
+
*
|
|
206
|
+
* @param sessionId - The session ID to initialize notifications for
|
|
207
|
+
*/
|
|
208
|
+
initializeNotifications(sessionId) {
|
|
209
|
+
if (this.asyncOrchestrator) {
|
|
210
|
+
const inboundConnection = this.serverManager.getServer(sessionId);
|
|
211
|
+
if (inboundConnection) {
|
|
212
|
+
this.asyncOrchestrator.initializeNotifications(inboundConnection);
|
|
213
|
+
logger.debug(`Async loading notifications initialized for Streamable HTTP session ${sessionId}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
setupTransportHandlers(transport, sessionId) {
|
|
218
|
+
transport.onclose = () => {
|
|
219
|
+
this.serverManager.disconnectTransport(sessionId);
|
|
220
|
+
this.sessionRepository.delete(sessionId);
|
|
221
|
+
};
|
|
222
|
+
transport.onerror = (error) => {
|
|
223
|
+
logger.error(`Streamable HTTP transport error for session ${sessionId}:`, error);
|
|
224
|
+
const server = this.serverManager.getServer(sessionId);
|
|
225
|
+
if (server) {
|
|
226
|
+
server.status = ServerStatus.Error;
|
|
227
|
+
server.lastError = error instanceof Error ? error : new Error(String(error));
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=sessionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionService.js","sourceRoot":"","sources":["../../../../src/transport/http/utils/sessionService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAA2B,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAuB/G;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,SAAiB;IACzC,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IAEf;IACA;IACA;IAHV,YACU,aAA4B,EAC5B,iBAA8C,EAC9C,iBAA4C;QAF5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAA6B;QAC9C,sBAAiB,GAAjB,iBAAiB,CAA2B;IACnD,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,SAAiB;QAEjB,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAErE,IAAI,iBAAiB,EAAE,CAAC;YACtB,6DAA6D;YAC7D,IACE,iBAAiB,YAAY,6BAA6B;gBAC1D,iBAAiB,YAAY,uCAAuC,EACpE,CAAC;gBACD,gDAAgD;gBAChD,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC/C,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YACD,4EAA4E;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yCAAyC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;gBAC7D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;YACrD,CAAC;YAED,MAAM,MAAM,GAAG,WAAW,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;YAE1D,wEAAwE;YACxE,MAAM,SAAS,GAAG,IAAI,uCAAuC,CAAC;gBAC5D,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS;aACpC,CAAC,CAAC;YAEH,yDAAyD;YACzD,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,4BAA4B,SAAS,oBAAoB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YACrF,CAAC;YAED,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,2BAA2B,SAAS,KAAK,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/E,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAC3F,CAAC;YAED,4DAA4D;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,OAA2C,CAAC;YACnE,MAAM,WAAW,GAA4B,OAAO;gBAClD,CAAC,CAAC;oBACE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC/C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;oBACxB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;oBACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACxD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;oBACzC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;oBACrC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;iBACpD;gBACH,CAAC,CAAC,SAAS,CAAC;YAEd,wDAAwD;YACxD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACvF,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACjG,MAAM,CAAC,KAAK,CAAC,+BAA+B,SAAS,GAAG,EAAE,YAAY,CAAC,CAAC;gBACxE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;YAClF,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAExC,kBAAkB;YAClB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAElD,4BAA4B;YAC5B,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE/C,MAAM,CAAC,IAAI,CAAC,6CAA6C,SAAS,eAAe,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC5G,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,wCAAwC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,MAA+B,EAC/B,OAA8B,EAC9B,iBAA0B;QAE1B,MAAM,SAAS,GAAG,iBAAiB,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;QAEtG,IAAI,SAAwC,CAAC;QAC7C,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,6BAA6B,CAAC;gBAC5C,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,0CAA0C,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,6DAA6D,YAAY,EAAE,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CACT,6BAA6B,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,SAAS,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpI,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,MAAM,iBAAiB,GAAiE;YACtF,GAAG,MAAM;YACT,OAAO,EAAE,OAAO,IAAI,SAAS;SAC9B,CAAC;QAEF,gCAAgC;QAChC,MAAM,YAAY,GAChB,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAE,OAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3G,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,+BAA+B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,+CAA+C,YAAY,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,oCAAoC;QACpC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,gBAAoC,CAAC;QACzC,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC5D,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,6BAA6B,SAAS,mBAAmB,gBAAgB,EAAE,CAAC,CAAC;YACzF,+DAA+D;QACjE,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAExC,kBAAkB;QAClB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAElD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAgC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,4BAA4B,SAAS,qBAAqB,YAAY,EAAE,CAAC,CAAC;YACvF,sEAAsE;YACtE,iDAAiD;QACnD,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,uBAAuB,CAAC,SAAiB;QAC/C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBAClE,MAAM,CAAC,KAAK,CAAC,uEAAuE,SAAS,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,SAAkF,EAClF,SAAiB;QAEjB,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,+CAA+C,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;gBACnC,MAAM,CAAC,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -28,7 +28,6 @@ export declare class StdioProxyTransport {
|
|
|
28
28
|
private clientInfo;
|
|
29
29
|
private initializeIntercepted;
|
|
30
30
|
private serverUrl;
|
|
31
|
-
private requestInit;
|
|
32
31
|
constructor(options: StdioProxyTransportOptions);
|
|
33
32
|
/**
|
|
34
33
|
* Start the proxy transport
|
|
@@ -48,10 +47,22 @@ export declare class StdioProxyTransport {
|
|
|
48
47
|
*/
|
|
49
48
|
private buildUserAgent;
|
|
50
49
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
50
|
+
* Create a custom fetch function that dynamically injects User-Agent header
|
|
51
|
+
*
|
|
52
|
+
* This ensures the HTTP server sees updated client info for all requests after
|
|
53
|
+
* the initialize message is processed. The custom fetch wraps the global fetch
|
|
54
|
+
* and merges the current User-Agent (which includes client info if available)
|
|
55
|
+
* with the request headers.
|
|
56
|
+
*
|
|
57
|
+
* Why custom fetch instead of requestInit?
|
|
58
|
+
* - The SDK's StreamableHTTPClientTransport uses _fetch directly for all requests
|
|
59
|
+
* - Updating requestInit after transport creation doesn't affect existing connections
|
|
60
|
+
* - Custom fetch allows dynamic header injection without recreating the transport
|
|
61
|
+
* - Avoids "Transport closed" errors from mid-session transport recreation
|
|
62
|
+
*
|
|
63
|
+
* @returns A fetch function that injects the current User-Agent header
|
|
53
64
|
*/
|
|
54
|
-
private
|
|
65
|
+
private createDynamicHeaderFetch;
|
|
55
66
|
/**
|
|
56
67
|
* Type guard to check if a JSON-RPC message is a request
|
|
57
68
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdioProxyTransport.d.ts","sourceRoot":"","sources":["../../src/transport/stdioProxyTransport.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOvE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AA0FD;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;
|
|
1
|
+
{"version":3,"file":"stdioProxyTransport.d.ts","sourceRoot":"","sources":["../../src/transport/stdioProxyTransport.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOvE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AA0FD;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IASlB,OAAO,CAAC,OAAO;IAR3B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,SAAS,CAAM;gBAEH,OAAO,EAAE,0BAA0B;IAyCvD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IAuBzC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkD9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB7B"}
|
|
@@ -99,7 +99,6 @@ export class StdioProxyTransport {
|
|
|
99
99
|
clientInfo = null;
|
|
100
100
|
initializeIntercepted = false;
|
|
101
101
|
serverUrl;
|
|
102
|
-
requestInit;
|
|
103
102
|
constructor(options) {
|
|
104
103
|
this.options = options;
|
|
105
104
|
// Reset any previous state
|
|
@@ -129,16 +128,11 @@ export class StdioProxyTransport {
|
|
|
129
128
|
url: this.serverUrl.toString(),
|
|
130
129
|
contextProvided: true,
|
|
131
130
|
});
|
|
132
|
-
//
|
|
133
|
-
|
|
134
|
-
headers: {
|
|
135
|
-
'User-Agent': this.buildUserAgent(),
|
|
136
|
-
'mcp-session-id': this.context.sessionId, // Non-null assertion - always set by detectProxyContext
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
// Create initial HTTP transport with minimal headers
|
|
131
|
+
// Create HTTP transport with custom fetch that dynamically injects User-Agent
|
|
132
|
+
// Note: sessionId is passed as a parameter, SDK will handle adding it to headers
|
|
140
133
|
this.httpTransport = new StreamableHTTPClientTransport(this.serverUrl, {
|
|
141
|
-
|
|
134
|
+
fetch: this.createDynamicHeaderFetch(),
|
|
135
|
+
sessionId: this.context.sessionId,
|
|
142
136
|
});
|
|
143
137
|
}
|
|
144
138
|
/**
|
|
@@ -205,9 +199,9 @@ export class StdioProxyTransport {
|
|
|
205
199
|
clientVersion: clientInfo.version,
|
|
206
200
|
clientTitle: clientInfo.title,
|
|
207
201
|
});
|
|
208
|
-
//
|
|
209
|
-
|
|
210
|
-
logger.info('✅
|
|
202
|
+
// Client info is now available - custom fetch will dynamically inject
|
|
203
|
+
// the updated User-Agent header for all subsequent HTTP requests
|
|
204
|
+
logger.info('✅ Client info extracted - User-Agent will be updated for all requests', {
|
|
211
205
|
userAgent: this.buildUserAgent(),
|
|
212
206
|
});
|
|
213
207
|
}
|
|
@@ -246,42 +240,36 @@ export class StdioProxyTransport {
|
|
|
246
240
|
return base;
|
|
247
241
|
}
|
|
248
242
|
/**
|
|
249
|
-
*
|
|
250
|
-
*
|
|
243
|
+
* Create a custom fetch function that dynamically injects User-Agent header
|
|
244
|
+
*
|
|
245
|
+
* This ensures the HTTP server sees updated client info for all requests after
|
|
246
|
+
* the initialize message is processed. The custom fetch wraps the global fetch
|
|
247
|
+
* and merges the current User-Agent (which includes client info if available)
|
|
248
|
+
* with the request headers.
|
|
249
|
+
*
|
|
250
|
+
* Why custom fetch instead of requestInit?
|
|
251
|
+
* - The SDK's StreamableHTTPClientTransport uses _fetch directly for all requests
|
|
252
|
+
* - Updating requestInit after transport creation doesn't affect existing connections
|
|
253
|
+
* - Custom fetch allows dynamic header injection without recreating the transport
|
|
254
|
+
* - Avoids "Transport closed" errors from mid-session transport recreation
|
|
255
|
+
*
|
|
256
|
+
* @returns A fetch function that injects the current User-Agent header
|
|
251
257
|
*/
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
headers:
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
258
|
+
createDynamicHeaderFetch() {
|
|
259
|
+
return async (input, init) => {
|
|
260
|
+
// Build current User-Agent (includes client info if available)
|
|
261
|
+
const currentUserAgent = this.buildUserAgent();
|
|
262
|
+
// Merge headers: preserve existing headers, add/update User-Agent
|
|
263
|
+
const headers = new Headers(init?.headers);
|
|
264
|
+
headers.set('User-Agent', currentUserAgent);
|
|
265
|
+
// Create new init with updated headers
|
|
266
|
+
const updatedInit = {
|
|
267
|
+
...init,
|
|
268
|
+
headers,
|
|
269
|
+
};
|
|
270
|
+
// Call global fetch with updated headers
|
|
271
|
+
return fetch(input, updatedInit);
|
|
260
272
|
};
|
|
261
|
-
// Create new transport
|
|
262
|
-
this.httpTransport = new StreamableHTTPClientTransport(this.serverUrl, {
|
|
263
|
-
requestInit: this.requestInit,
|
|
264
|
-
});
|
|
265
|
-
// Re-setup message forwarding for new transport
|
|
266
|
-
this.setupHttpTransportMessageHandlers();
|
|
267
|
-
// Start new transport before closing old one
|
|
268
|
-
try {
|
|
269
|
-
await this.httpTransport.start();
|
|
270
|
-
logger.info('HTTP transport recreated and started with updated User-Agent');
|
|
271
|
-
}
|
|
272
|
-
catch (error) {
|
|
273
|
-
logger.error(`Failed to start new HTTP transport: ${error}`);
|
|
274
|
-
// Restore old transport on failure
|
|
275
|
-
this.httpTransport = oldTransport;
|
|
276
|
-
throw error;
|
|
277
|
-
}
|
|
278
|
-
// Close old transport after new one is ready
|
|
279
|
-
try {
|
|
280
|
-
await oldTransport.close();
|
|
281
|
-
}
|
|
282
|
-
catch (error) {
|
|
283
|
-
logger.warn(`Error closing old HTTP transport: ${error}`);
|
|
284
|
-
}
|
|
285
273
|
}
|
|
286
274
|
/**
|
|
287
275
|
* Type guard to check if a JSON-RPC message is a request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdioProxyTransport.js","sourceRoot":"","sources":["../../src/transport/stdioProxyTransport.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stdioProxyTransport.js","sourceRoot":"","sources":["../../src/transport/stdioProxyTransport.ts"],"names":[],"mappings":"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"}
|