/** * Session Context Extractor for MCP Gateway. * Extracts and resolves session context from incoming requests. */ import type { FastifyRequest } from 'fastify'; import type { SessionContext } from '../../../shared/types/session-context.types.js'; export interface RequestBody { method?: string; params?: { clientInfo?: { name: string; version: string; }; protocolVersion?: string; [key: string]: unknown; }; [key: string]: unknown; } /** * Extracts session context from incoming MCP requests to establish client identity and session management. * * This function implements a simplified session ID resolution strategy with clear priority: * 1. Header parameter mcp-session-id/Mcp-Session-Id (highest priority) * 2. Query parameter sessionId (for SSE connections) * 3. URL pattern match for sessionId * 4. Initialize request: generate from clientInfo (only for initialize requests without sessionId) * 5. Generate new unique session ID (fallback for non-initialize requests) * * The function also extracts and enriches client context including name, version, working directory, * project information, IP address, and user agent for comprehensive session tracking. * * @param {FastifyRequest<{ Body: RequestBody | null }>} request - Incoming Fastify request object * @returns {{ sessionId: string; sessionContext: SessionContext }} Object containing resolved session ID and enriched session context * * @example * ```typescript * const { sessionId, sessionContext } = extractSessionContext(request); * console.log(`Session: ${sessionId}, Client: ${sessionContext.clientName}`); * ``` */ export declare function extractSessionContext(request: FastifyRequest<{ Body: RequestBody | null; }>): { sessionId: string; sessionContext: SessionContext; }; //# sourceMappingURL=session-context-extractor.d.ts.map