diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 9b01eae9e9b..e111e81344f 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -418,11 +418,26 @@ export namespace Provider { "HTTP-Referer": "https://opencode.ai/", "X-Title": "opencode", }, - // Custom fetch to strip Authorization header - AI Gateway uses cf-aig-authorization instead - // Sending Authorization header with invalid value causes auth errors + // Custom fetch to handle parameter transformation and auth fetch: async (input: RequestInfo | URL, init?: RequestInit) => { const headers = new Headers(init?.headers) + // Strip Authorization header - AI Gateway uses cf-aig-authorization instead headers.delete("Authorization") + + // Transform max_tokens to max_completion_tokens for newer models + if (init?.body && init.method === "POST") { + try { + const body = JSON.parse(init.body as string) + if (body.max_tokens !== undefined && !body.max_completion_tokens) { + body.max_completion_tokens = body.max_tokens + delete body.max_tokens + init = { ...init, body: JSON.stringify(body) } + } + } catch (e) { + // If body parsing fails, continue with original request + } + } + return fetch(input, { ...init, headers }) }, },