




















@@ -7,6 +7,7 @@ import { beforeEach, describe, expect, it, vi, type MockedFunction } from "vites
77import {
88buildClawRouterProviderConfig,
99normalizeClawRouterResolvedModel,
10+prepareClawRouterRequestModel,
1011} from "./provider-catalog.js";
11121213const CATALOG = {
@@ -156,11 +157,29 @@ describe("clawrouter provider catalog", () => {
156157provider: "clawrouter",
157158} as ProviderRuntimeModel);
158159expect(normalized).toMatchObject({
159-id: "claude-sonnet-4-5-20250929",
160+id: "anthropic/default",
160161api: "anthropic-messages",
161162baseUrl: "https://clawrouter.example/v1/native/anthropic",
162163});
163-expect(normalized?.params).toBeUndefined();
164+expect(prepareClawRouterRequestModel(normalized as ProviderRuntimeModel)).toMatchObject({
165+id: "claude-sonnet-4-5-20250929",
166+params: undefined,
167+});
168+const gemini = provider.models.find((model) => model.id === "google/gemini-default");
169+const normalizedGemini = normalizeClawRouterResolvedModel({
170+ ...gemini,
171+baseUrl: provider.baseUrl,
172+provider: "clawrouter",
173+} as ProviderRuntimeModel);
174+expect(normalizedGemini).toMatchObject({
175+id: "google/gemini-default",
176+api: "google-generative-ai",
177+baseUrl: "https://clawrouter.example/v1/native/google-gemini/v1beta",
178+});
179+expect(prepareClawRouterRequestModel(normalizedGemini as ProviderRuntimeModel)).toMatchObject({
180+id: "gemini",
181+params: undefined,
182+});
164183expect(JSON.stringify(provider.models)).not.toContain("clawrouter-test-key");
165184});
166185@@ -203,18 +222,22 @@ describe("clawrouter provider catalog", () => {
203222const secondAnthropic = secondProvider.models.find((model) => model.id === "anthropic/default");
204223205224expect(
206-normalizeClawRouterResolvedModel({
207- ...firstAnthropic,
208-baseUrl: firstProvider.baseUrl,
209-provider: "clawrouter",
210-} as ProviderRuntimeModel)?.id,
225+prepareClawRouterRequestModel(
226+normalizeClawRouterResolvedModel({
227+ ...firstAnthropic,
228+baseUrl: firstProvider.baseUrl,
229+provider: "clawrouter",
230+} as ProviderRuntimeModel) as ProviderRuntimeModel,
231+).id,
211232).toBe("first-upstream");
212233expect(
213-normalizeClawRouterResolvedModel({
214- ...secondAnthropic,
215-baseUrl: secondProvider.baseUrl,
216-provider: "clawrouter",
217-} as ProviderRuntimeModel)?.id,
234+prepareClawRouterRequestModel(
235+normalizeClawRouterResolvedModel({
236+ ...secondAnthropic,
237+baseUrl: secondProvider.baseUrl,
238+provider: "clawrouter",
239+} as ProviderRuntimeModel) as ProviderRuntimeModel,
240+).id,
218241).toBe("second-upstream");
219242});
220243});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。