diff --git a/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.test.ts b/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.test.ts index abc7b15e56..ae79cd9918 100644 --- a/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.test.ts +++ b/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.test.ts @@ -1,10 +1,27 @@ import { getAiSdkProvider } from '../model-settings'; +import type { GatewayRequest } from '../openrouter/types'; +import type { Provider, TransformRequestContext } from '../types'; import openCodeGo from './opencode-go'; test('allows the Responses API for OpenCode Go', () => { expect(openCodeGo.supported_chat_apis).toContain('responses'); }); +test.each([ + ['messages', 'x-api-key'], + ['chat_completions', null], + ['responses', null], +] as const)('uses the expected API key header for %s requests', (kind, apiKeyHeader) => { + const provider = { apiKeyHeader: null } as Provider; + const request = { kind, body: {} } as GatewayRequest; + const extraHeaders = {}; + + openCodeGo.transformRequest({ provider, request, extraHeaders } as TransformRequestContext); + + expect(provider.apiKeyHeader).toBe(apiKeyHeader); + expect(extraHeaders).toEqual({}); +}); + describe('getAiSdkProvider', () => { test.each(['opencode-go/minimax-m3', 'opencode-go/qwen3.7-plus'])( 'uses the Anthropic Messages API for OpenCode Go model %s', diff --git a/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.ts b/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.ts index 9b114f1027..401d058be9 100644 --- a/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.ts +++ b/apps/web/src/lib/ai-gateway/providers/direct-byok/opencode-go.ts @@ -8,9 +8,7 @@ export default { supported_chat_apis: ['chat_completions', 'messages', 'responses'], default_ai_sdk_provider: 'openai-compatible', transformRequest(context) { - if (context.request.kind === 'messages') { - context.extraHeaders['x-api-key'] = context.provider.apiKey; - } + context.provider.apiKeyHeader = context.request.kind === 'messages' ? 'x-api-key' : null; }, models: cachedEnhancedDirectByokModelList({ providerId: 'opencode-go',