| import type { ProviderId } from './types'; | |
| export type WireFormat = 'openai' | 'anthropic' | 'gemini'; | |
| /** | |
| * The wire format a given model speaks. Opencode Go serves minimax-* and qwen* models in | |
| * Anthropic format (/messages) and the rest in OpenAI format (/chat/completions) on the | |
| * same base URL, so the format is per-model there. Built-in anthropic/gemini providers | |
| * keep their own format; everything else is OpenAI-compatible. | |
| */ | |
| export function resolveWireFormat(provider: ProviderId, model: string): WireFormat { | |
| if (provider === 'anthropic') return 'anthropic'; | |
| if (provider === 'gemini') return 'gemini'; | |
| if (provider === 'opencode-go') { | |
| const m = model.toLowerCase(); | |
| if (m.startsWith('minimax-') || m.startsWith('qwen')) return 'anthropic'; | |
| return 'openai'; | |
| } | |
| return 'openai'; | |
| } | |