From bc187b0fa5a71703a724b72a8e7e8632c8c868f4 Mon Sep 17 00:00:00 2001 From: SebastianBoehler <27767932+SebastianBoehler@users.noreply.github.com> Date: Tue, 17 Mar 2026 10:00:30 +0100 Subject: [PATCH] fix(openrouter): normalize nested model ids for api calls --- pkg/providers/openai_compat/provider.go | 3 +++ pkg/providers/openai_compat/provider_test.go | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/pkg/providers/openai_compat/provider.go b/pkg/providers/openai_compat/provider.go index fb2abaa5c..cb43fa84a 100644 --- a/pkg/providers/openai_compat/provider.go +++ b/pkg/providers/openai_compat/provider.go @@ -182,6 +182,9 @@ func normalizeModel(model, apiBase string) string { } if strings.Contains(strings.ToLower(apiBase), "openrouter.ai") { + if strings.EqualFold(before, "openrouter") && strings.Contains(after, "/") { + return after + } return model } diff --git a/pkg/providers/openai_compat/provider_test.go b/pkg/providers/openai_compat/provider_test.go index ed9747f9d..39cfd5337 100644 --- a/pkg/providers/openai_compat/provider_test.go +++ b/pkg/providers/openai_compat/provider_test.go @@ -567,6 +567,15 @@ func TestNormalizeModel_UsesAPIBase(t *testing.T) { if got := normalizeModel("openrouter/auto", "https://openrouter.ai/api/v1"); got != "openrouter/auto" { t.Fatalf("normalizeModel(openrouter) = %q, want %q", got, "openrouter/auto") } + if got := normalizeModel("openrouter/free", "https://openrouter.ai/api/v1"); got != "openrouter/free" { + t.Fatalf("normalizeModel(openrouter free) = %q, want %q", got, "openrouter/free") + } + if got := normalizeModel("openrouter/openai/gpt-5.4", "https://openrouter.ai/api/v1"); got != "openai/gpt-5.4" { + t.Fatalf("normalizeModel(openrouter nested openai) = %q, want %q", got, "openai/gpt-5.4") + } + if got := normalizeModel("openrouter/minimax/minimax-m2.5", "https://openrouter.ai/api/v1"); got != "minimax/minimax-m2.5" { + t.Fatalf("normalizeModel(openrouter nested minimax) = %q, want %q", got, "minimax/minimax-m2.5") + } if got := normalizeModel("vivgrid/managed", "https://api.vivgrid.com/v1"); got != "managed" { t.Fatalf("normalizeModel(vivgrid) = %q, want %q", got, "managed") }