fix(model-capabilities): recognize current provider aliases

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-04-27 15:31:48 +09:00
parent 62c19ce0ef
commit 8e785963cf
2 changed files with 34 additions and 0 deletions
@@ -56,6 +56,28 @@ describe("model-capability-aliases", () => {
})
})
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")
+12
View File
@@ -32,6 +32,18 @@ const EXACT_ALIAS_RULES: ReadonlyArray<ExactAliasRule> = [
canonicalModelID: "gemini-3-pro-preview",
rationale: "Legacy Gemini 3 tier suffixes still need to land on the canonical preview model.",
},
{
aliasModelID: "k2pb",
ruleID: "kimi-k2pb-alias",
canonicalModelID: "k2p5",
rationale: "Kimi for Coding exposes k2pb while the bundled capabilities snapshot uses the canonical k2p5 ID.",
},
{
aliasModelID: "claude-opus-4.7",
ruleID: "claude-opus-dotted-version-alias",
canonicalModelID: "claude-opus-4-7",
rationale: "GitHub Copilot exposes Claude Opus 4.7 with dotted version syntax while the snapshot uses dashed syntax.",
},
]
const EXACT_ALIAS_RULES_BY_MODEL: ReadonlyMap<string, ExactAliasRule> = new Map(