fix: normalize claude version separators across providers in fuzzyMatchModel #1680
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
normalizeModelNameinmodel-availability.tsto handle all claude version numbers, not just 4.5[.-]character classProblem
models.devuses different version separators per provider for the same model:anthropic→claude-opus-4-6(hyphens)github-copilot→claude-opus-4.6(dots)The fallback chains include
github-copilotas a provider alongsideanthropic, butfuzzyMatchModelonly normalized4-5↔4.5. All other versions (4-6, 4-0, 4-1) silently failed to match, causing fallback chains to skip copilot entirely and land on lower-quality free models.Changes
src/shared/model-availability.ts— Replace two hardcoded4-5regexes with one generic pattern:src/shared/model-availability.test.ts— 2 new tests:claude-opus-4-6matchesgithub-copilot/claude-opus-4.6grok-code-fast-1) are not affectedTesting
All 50 tests pass locally (
bun test src/shared/model-availability.test.ts).Closes #1679