refactor(models): preserve legacy claude-opus-4-6 aliases and category mapping
Addresses review feedback on #3486: 1. claude-thinking-legacy-alias now matches both claude-opus-4-6-thinking and claude-opus-4-7-thinking, canonicalizing both to claude-opus-4-7. The previous diff retargeted the regex to 4-7 only, which dropped backward compatibility for users still pinned to the 4-6 thinking suffix. 2. MODEL_TO_CATEGORY_MAP keeps the claude-opus-4-6 to unspecified-high entry alongside the new 4-7 entry. The map is order-independent from MODEL_VERSION_MAP, so preserving the 4-6 key avoids relying on a specific migration ordering for legacy agent configs. 3. Fix stale 'Claude Opus 4.6' labels and BDD test comments that the sed-based bump missed.
This commit is contained in:
@@ -38,7 +38,7 @@ describe("think-mode switcher", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it("should handle claude-opus-4-7 high variant", () => {
|
it("should handle claude-opus-4-7 high variant", () => {
|
||||||
// given a Claude Opus 4.6 model ID
|
// given a Claude Opus 4.7 model ID
|
||||||
const variant = getHighVariant("claude-opus-4-7")
|
const variant = getHighVariant("claude-opus-4-7")
|
||||||
|
|
||||||
// then should return high variant
|
// then should return high variant
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ describe("updateConnectedProvidersCache", () => {
|
|||||||
name: "Anthropic",
|
name: "Anthropic",
|
||||||
env: [],
|
env: [],
|
||||||
models: {
|
models: {
|
||||||
"claude-opus-4-7": { id: "claude-opus-4-7", name: "Claude Opus 4.6" },
|
"claude-opus-4-7": { id: "claude-opus-4-7", name: "Claude Opus 4.7" },
|
||||||
"claude-sonnet-4-6": { id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
|
"claude-sonnet-4-6": { id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -84,7 +84,7 @@ describe("updateConnectedProvidersCache", () => {
|
|||||||
{ id: "gpt-5.4", name: "GPT-5.4" },
|
{ id: "gpt-5.4", name: "GPT-5.4" },
|
||||||
],
|
],
|
||||||
anthropic: [
|
anthropic: [
|
||||||
{ id: "claude-opus-4-7", name: "Claude Opus 4.6" },
|
{ id: "claude-opus-4-7", name: "Claude Opus 4.7" },
|
||||||
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
|
{ id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6" },
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export const MODEL_TO_CATEGORY_MAP: Record<string, string> = {
|
|||||||
"google/gemini-3-flash": "writing",
|
"google/gemini-3-flash": "writing",
|
||||||
"openai/gpt-5.4": "ultrabrain",
|
"openai/gpt-5.4": "ultrabrain",
|
||||||
"anthropic/claude-haiku-4-5": "quick",
|
"anthropic/claude-haiku-4-5": "quick",
|
||||||
|
"anthropic/claude-opus-4-6": "unspecified-high",
|
||||||
"anthropic/claude-opus-4-7": "unspecified-high",
|
"anthropic/claude-opus-4-7": "unspecified-high",
|
||||||
"anthropic/claude-sonnet-4-6": "unspecified-low",
|
"anthropic/claude-sonnet-4-6": "unspecified-low",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ const EXACT_ALIAS_RULES_BY_MODEL: ReadonlyMap<string, ExactAliasRule> = new Map(
|
|||||||
const PATTERN_ALIAS_RULES: ReadonlyArray<PatternAliasRule> = [
|
const PATTERN_ALIAS_RULES: ReadonlyArray<PatternAliasRule> = [
|
||||||
{
|
{
|
||||||
ruleID: "claude-thinking-legacy-alias",
|
ruleID: "claude-thinking-legacy-alias",
|
||||||
description: "Normalizes the legacy Claude Opus 4.6 thinking suffix to the canonical snapshot ID.",
|
description: "Normalizes legacy Claude Opus thinking suffixes (4-6, 4-7) to the canonical snapshot ID.",
|
||||||
match: (normalizedModelID) => /^claude-opus-4-7-thinking$/.test(normalizedModelID),
|
match: (normalizedModelID) => /^claude-opus-4-(?:6|7)-thinking$/.test(normalizedModelID),
|
||||||
canonicalize: () => "claude-opus-4-7",
|
canonicalize: () => "claude-opus-4-7",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user