summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/provider/provider.ts19
1 files changed, 17 insertions, 2 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index 4ccaacd54..3b76b1e02 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -419,11 +419,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 })
},
},