Merge branch 'main' into patch-1
This commit is contained in:
commit
d88308bbfe
2 changed files with 565 additions and 381 deletions
|
|
@ -10,7 +10,7 @@ import { z } from "zod";
|
|||
* Test server configuration for StreamableHTTPServerTransport tests
|
||||
*/
|
||||
interface TestServerConfig {
|
||||
sessionIdGenerator?: () => string | undefined;
|
||||
sessionIdGenerator: (() => string) | undefined;
|
||||
enableJsonResponse?: boolean;
|
||||
customRequestHandler?: (req: IncomingMessage, res: ServerResponse, parsedBody?: unknown) => Promise<void>;
|
||||
eventStore?: EventStore;
|
||||
|
|
@ -19,7 +19,7 @@ interface TestServerConfig {
|
|||
/**
|
||||
* Helper to create and start test HTTP server with MCP setup
|
||||
*/
|
||||
async function createTestServer(config: TestServerConfig = {}): Promise<{
|
||||
async function createTestServer(config: TestServerConfig = { sessionIdGenerator: (() => randomUUID()) }): Promise<{
|
||||
server: Server;
|
||||
transport: StreamableHTTPServerTransport;
|
||||
mcpServer: McpServer;
|
||||
|
|
@ -40,7 +40,7 @@ async function createTestServer(config: TestServerConfig = {}): Promise<{
|
|||
);
|
||||
|
||||
const transport = new StreamableHTTPServerTransport({
|
||||
sessionIdGenerator: config.sessionIdGenerator ?? (() => randomUUID()),
|
||||
sessionIdGenerator: config.sessionIdGenerator,
|
||||
enableJsonResponse: config.enableJsonResponse ?? false,
|
||||
eventStore: config.eventStore
|
||||
});
|
||||
|
|
@ -681,7 +681,7 @@ describe("StreamableHTTPServerTransport with JSON Response Mode", () => {
|
|||
let sessionId: string;
|
||||
|
||||
beforeEach(async () => {
|
||||
const result = await createTestServer({ enableJsonResponse: true });
|
||||
const result = await createTestServer({ sessionIdGenerator: (() => randomUUID()), enableJsonResponse: true });
|
||||
server = result.server;
|
||||
transport = result.transport;
|
||||
baseUrl = result.baseUrl;
|
||||
|
|
@ -784,7 +784,8 @@ describe("StreamableHTTPServerTransport with pre-parsed body", () => {
|
|||
console.error("Error handling request:", error);
|
||||
if (!res.headersSent) res.writeHead(500).end();
|
||||
}
|
||||
}
|
||||
},
|
||||
sessionIdGenerator: (() => randomUUID())
|
||||
});
|
||||
|
||||
server = result.server;
|
||||
|
|
@ -1063,7 +1064,7 @@ describe("StreamableHTTPServerTransport in stateless mode", () => {
|
|||
let baseUrl: URL;
|
||||
|
||||
beforeEach(async () => {
|
||||
const result = await createTestServer({ sessionIdGenerator: () => undefined });
|
||||
const result = await createTestServer({ sessionIdGenerator: undefined });
|
||||
server = result.server;
|
||||
transport = result.transport;
|
||||
baseUrl = result.baseUrl;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ export interface StreamableHTTPServerTransportOptions {
|
|||
*
|
||||
* Return undefined to disable session management.
|
||||
*/
|
||||
sessionIdGenerator: () => string | undefined;
|
||||
sessionIdGenerator: (() => string) | undefined;
|
||||
|
||||
/**
|
||||
* A callback for session initialization events
|
||||
|
|
@ -98,7 +98,7 @@ export interface StreamableHTTPServerTransportOptions {
|
|||
*/
|
||||
export class StreamableHTTPServerTransport implements Transport {
|
||||
// when sessionId is not set (undefined), it means the transport is in stateless mode
|
||||
private sessionIdGenerator: () => string | undefined;
|
||||
private sessionIdGenerator: (() => string) | undefined;
|
||||
private _started: boolean = false;
|
||||
private _streamMapping: Map<string, ServerResponse> = new Map();
|
||||
private _requestToStreamMapping: Map<RequestId, string> = new Map();
|
||||
|
|
@ -365,7 +365,7 @@ export class StreamableHTTPServerTransport implements Transport {
|
|||
}));
|
||||
return;
|
||||
}
|
||||
this.sessionId = this.sessionIdGenerator();
|
||||
this.sessionId = this.sessionIdGenerator?.();
|
||||
this._initialized = true;
|
||||
|
||||
// If we have a session ID and an onsessioninitialized handler, call it immediately
|
||||
|
|
|
|||
Loading…
Reference in a new issue