diff --git a/src/routes/responses.ts b/src/routes/responses.ts index efaae7d..d61206b 100644 --- a/src/routes/responses.ts +++ b/src/routes/responses.ts @@ -35,6 +35,23 @@ class StreamingError extends Error { type IncompleteResponse = Omit; const SEQUENCE_NUMBER_PLACEHOLDER = -1; +// All headers are forwarded by default, except these ones. +const NOT_FORWARDED_HEADERS = new Set([ + "accept", + "accept-encoding", + "authorization", + "connection", + "content-length", + "content-type", + "host", + "keep-alive", + "te", + "trailer", + "trailers", + "transfer-encoding", + "upgrade", +]); + export const postCreateResponse = async ( req: ValidatedRequest, res: ExpressResponse @@ -169,6 +186,11 @@ async function* innerRunStream( return; } + // Forward headers (except authorization handled separately) + const defaultHeaders = Object.fromEntries( + Object.entries(req.headers).filter(([key]) => !NOT_FORWARDED_HEADERS.has(key.toLowerCase())) + ) as Record; + // Return early if not supported param if (req.body.reasoning?.summary && req.body.reasoning?.summary !== "auto") { throw new Error(`Not implemented: only 'auto' summary is supported. Got '${req.body.reasoning?.summary}'`); @@ -429,7 +451,7 @@ async function* innerRunStream( do { previousMessageCount = currentMessageCount; - for await (const event of handleOneTurnStream(apiKey, payload, responseObject, mcpToolsMapping)) { + for await (const event of handleOneTurnStream(apiKey, payload, responseObject, mcpToolsMapping, defaultHeaders)) { yield event; } @@ -499,11 +521,13 @@ async function* handleOneTurnStream( apiKey: string | undefined, payload: ChatCompletionCreateParamsStreaming, responseObject: IncompleteResponse, - mcpToolsMapping: Record + mcpToolsMapping: Record, + defaultHeaders: Record ): AsyncGenerator { const client = new OpenAI({ baseURL: process.env.OPENAI_BASE_URL ?? "https://router.huggingface.co/v1", apiKey: apiKey, + defaultHeaders, }); const stream = await client.chat.completions.create(payload); let previousInputTokens = responseObject.usage?.input_tokens ?? 0;