import { describe, expect, test } from "bun:test" import { resolveModelIDAlias } from "./model-capability-aliases" describe("model-capability-aliases", () => { test("keeps canonical model IDs unchanged", () => { const result = resolveModelIDAlias("gpt-5.4") expect(result).toEqual({ requestedModelID: "gpt-5.4", canonicalModelID: "gpt-5.4", source: "canonical", }) }) test("strips provider prefixes when the input is already canonical", () => { const result = resolveModelIDAlias("anthropic/claude-sonnet-4-6") expect(result).toEqual({ requestedModelID: "anthropic/claude-sonnet-4-6", canonicalModelID: "claude-sonnet-4-6", source: "canonical", }) }) test("normalizes gemini tier aliases through a pattern rule", () => { const result = resolveModelIDAlias("gemini-3.1-pro-high") expect(result).toEqual({ requestedModelID: "gemini-3.1-pro-high", canonicalModelID: "gemini-3.1-pro", source: "pattern-alias", ruleID: "gemini-3.1-pro-tier-alias", }) }) test("normalizes provider-prefixed gemini tier aliases to bare canonical IDs", () => { const result = resolveModelIDAlias("google/gemini-3.1-pro-high") expect(result).toEqual({ requestedModelID: "google/gemini-3.1-pro-high", canonicalModelID: "gemini-3.1-pro", source: "pattern-alias", ruleID: "gemini-3.1-pro-tier-alias", }) }) test("keeps exceptional gemini preview aliases as exact rules", () => { const result = resolveModelIDAlias("gemini-3-pro-high") expect(result).toEqual({ requestedModelID: "gemini-3-pro-high", canonicalModelID: "gemini-3-pro-preview", source: "exact-alias", ruleID: "gemini-3-pro-tier-alias", }) }) test("normalizes Kimi for Coding k2pb aliases to the snapshot ID", () => { const result = resolveModelIDAlias("kimi-for-coding/k2pb") expect(result).toEqual({ requestedModelID: "kimi-for-coding/k2pb", canonicalModelID: "k2p5", source: "exact-alias", ruleID: "kimi-k2pb-alias", }) }) test("normalizes GitHub Copilot dotted Claude Opus aliases to the snapshot ID", () => { const result = resolveModelIDAlias("github-copilot/claude-opus-4.7") expect(result).toEqual({ requestedModelID: "github-copilot/claude-opus-4.7", canonicalModelID: "claude-opus-4-7", source: "exact-alias", ruleID: "claude-opus-dotted-version-alias", }) }) test("does not resolve prototype keys as aliases", () => { const result = resolveModelIDAlias("constructor") expect(result).toEqual({ requestedModelID: "constructor", canonicalModelID: "constructor", source: "canonical", }) }) test("normalizes provider-prefixed Claude thinking aliases through a pattern rule", () => { const result = resolveModelIDAlias("anthropic/claude-opus-4-7-thinking") expect(result).toEqual({ requestedModelID: "anthropic/claude-opus-4-7-thinking", canonicalModelID: "claude-opus-4-7", source: "pattern-alias", ruleID: "claude-thinking-legacy-alias", }) }) test("does not pattern-match nearby canonical Claude IDs incorrectly", () => { const result = resolveModelIDAlias("claude-opus-4-7-think") expect(result).toEqual({ requestedModelID: "claude-opus-4-7-think", canonicalModelID: "claude-opus-4-7-think", source: "canonical", }) }) test("does not pattern-match canonical gemini preview IDs incorrectly", () => { const result = resolveModelIDAlias("gemini-3.1-pro-preview") expect(result).toEqual({ requestedModelID: "gemini-3.1-pro-preview", canonicalModelID: "gemini-3.1-pro-preview", source: "canonical", }) }) test("normalizes legacy Claude thinking aliases through a pattern rule", () => { const result = resolveModelIDAlias("claude-opus-4-7-thinking") expect(result).toEqual({ requestedModelID: "claude-opus-4-7-thinking", canonicalModelID: "claude-opus-4-7", source: "pattern-alias", ruleID: "claude-thinking-legacy-alias", }) }) test("treats claude-opus-4-6-thinking as canonical, not as a legacy alias", () => { const result = resolveModelIDAlias("claude-opus-4-6-thinking") expect(result).toEqual({ requestedModelID: "claude-opus-4-6-thinking", canonicalModelID: "claude-opus-4-6-thinking", source: "canonical", }) }) })