@@ -282,10 +282,19 @@ if (useHttp) {
282282 if ( sessionId && transports [ sessionId ] ) {
283283 // Reuse existing transport
284284 transport = transports [ sessionId ] ;
285- } else if ( ! sessionId && isInitializeRequest ( jsonData ) ) {
286- // New initialization request
285+ } else if ( ! sessionId ) {
286+ // Create new session (either for initialize request or fallback)
287+ const newSessionId = randomUUID ( ) ;
288+ const isInit = isInitializeRequest ( jsonData ) ;
289+
290+ if ( isInit ) {
291+ logger . info ( `Creating new session for initialize request: ${ newSessionId } ` ) ;
292+ } else {
293+ logger . warn ( `Creating fallback session for non-initialize request: ${ newSessionId } ` ) ;
294+ }
295+
287296 transport = new StreamableHTTPServerTransport ( {
288- sessionIdGenerator : ( ) => randomUUID ( ) ,
297+ sessionIdGenerator : ( ) => newSessionId ,
289298 onsessioninitialized : ( id ) => {
290299 transports [ id ] = transport ;
291300 logger . info ( `Session initialized: ${ id } ` ) ;
@@ -304,12 +313,16 @@ if (useHttp) {
304313 await transport . handleRequest ( req , res , jsonData ) ;
305314 return ;
306315 } else {
307- // Invalid request
316+ // Invalid request - session ID provided but not found
317+ logger . error ( `Invalid session ID: ${ sessionId } . Active sessions count: ${ Object . keys ( transports ) . length } ` ) ;
308318 res . writeHead ( 400 ) ;
309319 res . end ( JSON . stringify ( {
310320 jsonrpc : '2.0' ,
311- error : { code : - 32000 , message : 'Bad Request: No valid session ID' } ,
312- id : null
321+ error : {
322+ code : - 32000 ,
323+ message : `Bad Request: Invalid session ID. Please initialize a new session first.`
324+ } ,
325+ id : jsonData . id || null
313326 } ) ) ;
314327 return ;
315328 }
0 commit comments