it("falls back to the raw catalog label when name and provider still collide", () => { const duplicateNameAndProviderCatalog = createModelCatalog(
{
id: "claude-3-7-sonnet",
name: "Claude Sonnet",
provider: "anthropic",
},
{
id: "claude-3-7-sonnet-thinking",
name: "Claude Sonnet",
provider: "anthropic",
},
);
it("normalizes raw overrides when the catalog match is unique", () => {
expect(normalizeChatModelOverrideValue(createChatModelOverride("gpt-5-mini"), catalog)).toBe( "openai/gpt-5-mini",
);
});
it("formats qualified model refs consistently for default labels", () => {
expect(formatChatModelDisplay("openai/gpt-5-mini")).toBe("gpt-5-mini · openai");
expect(formatChatModelDisplay("alias-only")).toBe("alias-only");
});
it("resolves server session data to qualified option values", () => {
expect(resolveServerChatModelValue("gpt-5-mini", "openai")).toBe("openai/gpt-5-mini");
expect(resolveServerChatModelValue("alias-only", null)).toBe("alias-only");
});
it("uses the recorded server provider when it is present", () => {
expect(
resolvePreferredServerChatModelValue("deepseek-chat", "deepseek", [DEEPSEEK_CHAT_MODEL]),
).toBe("deepseek/deepseek-chat");
});
it("corrects stale server providers for unique plain-id catalog matches", () => {
expect(
resolvePreferredServerChatModelValue("deepseek-chat", "zai", [DEEPSEEK_CHAT_MODEL]),
).toBe("deepseek/deepseek-chat");
});
it("falls back to the server provider when the catalog misses or is ambiguous", () => {
expect(resolvePreferredServerChatModelValue("gpt-5-mini", "openai", [])).toBe( "openai/gpt-5-mini",
);
expect(
resolvePreferredServerChatModelValue( "gpt-5-mini", "openai",
createAmbiguousModelCatalog("gpt-5-mini", "openai", "openrouter"),
),
).toBe("openai/gpt-5-mini");
});
it("qualifies slash-containing server model ids with the recorded provider", () => {
expect(
resolvePreferredServerChatModelValue("moonshotai/kimi-k2.5", "nvidia", [
{
id: "moonshotai/kimi-k2.5",
name: "Kimi K2.5 (NVIDIA)",
provider: "nvidia",
},
]),
).toBe("nvidia/moonshotai/kimi-k2.5");
});
it("uses the catalog-backed provider for slash-containing nested ids before stale provider fallback", () => {
expect(
resolvePreferredServerChatModelValue("moonshotai/kimi-k2.5", "zai", [
{
id: "moonshotai/kimi-k2.5",
name: "Kimi K2.5 (NVIDIA)",
provider: "nvidia",
},
]),
).toBe("nvidia/moonshotai/kimi-k2.5");
});
it("falls back to the server-qualified value for slash-containing ids when the catalog is empty", () => {
expect(resolvePreferredServerChatModelValue("moonshotai/kimi-k2.5", "nvidia", [])).toBe( "moonshotai/kimi-k2.5",
);
});
it("preserves already-qualified server model values when the provider matches", () => {
expect(
resolvePreferredServerChatModelValue("openai/gpt-5-mini", "openai", [OPENAI_GPT5_MINI_MODEL]),
).toBe("openai/gpt-5-mini");
});
it("preserves already-qualified server model values when the provider is stale", () => {
expect(
resolvePreferredServerChatModelValue("openai/gpt-5-mini", "zai", [OPENAI_GPT5_MINI_MODEL]),
).toBe("openai/gpt-5-mini");
});
it("preserves already-qualified server model values when the provider is stale and the catalog is empty", () => {
expect(resolvePreferredServerChatModelValue("openai/gpt-5-mini", "zai", [])).toBe( "openai/gpt-5-mini",
);
});
it("keeps nested provider-qualified server values stable when the catalog already confirms them", () => { const nestedModel = {
id: "deepseek-ai/deepseek-v3.2",
name: "DeepSeek V3.2",
provider: "nvidia",
};
it("uses catalog resolution for provider-less raw server model values", () => {
expect(resolvePreferredServerChatModelValue("gpt-5-mini", null, [OPENAI_GPT5_MINI_MODEL])).toBe( "openai/gpt-5-mini",
);
});
});
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.