Repository navigation
fix(providers): declare thinking efforts for first-party Claude registries - #14732
Merged
diegosouzapw merged 1 commit intoSep 25, 2026
Conversation
HouMinXi
force-pushed
the
fix/firstparty-claude-4x-effort-tiers
branch
from
September 24, 2026 15:17
0857731 to
8a81a14
Compare
…tries The static catalog passes skipCanonicalEffortFallback=true for registry-seeded models, so entries without supportedThinkingEfforts expose no effort_tiers in /v1/models even though their modelSpec marks supportsThinking: true. Opus 5 was fixed in cheaper-inference#14548; the same gap covers Fable 5 and Opus 4.8/4.7/4.6/4.5 across the claude, anthropic, github and ghe-copilot registries. Tier lists follow Anthropic's per-model effort table: xhigh exists on Opus 4.7+ and Fable 5; max on Opus 5/4.8/4.7/4.6; Opus 4.5 tops out at high. Fast variants (4.8-fast) mirror their base model. SupportsXHighEffort() defaults to true for unlisted models, so 4.6/4.5 stay correct through the canonical fallback to the claude registry's explicit false flags; new tests pin that behavior end-to-end. Signed-off-by: Minxi Hou <houminxi@gmail.com>
HouMinXi
force-pushed
the
fix/firstparty-claude-4x-effort-tiers
branch
from
September 24, 2026 18:47
8a81a14 to
dd009ec
Compare
diegosouzapw
merged commit Sep 25, 2026
40153cc
into
cheaper-inference:release/v3.8.51
10 of 16 checks passed
diegosouzapw
added a commit
that referenced
this pull request
Sep 29, 2026
… 4) (#15109) Release-captain base-red fix (v3.8.51 release PR #11442, unit shards 3-4): one production defect (proxyLogger pulled into every settings→proxies import and queried the DB at import time; helper extracted to src/lib/proxyLogHost.ts) and seven contract propagations from #14732, #15044, #15067, #13548, #14117×#14844, #12810. 74/74 across the seven files, 176/176 proxy-log neighbours, typecheck clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
claude-opus-5gained its thinking-effort declaration in #14548. The same gap covers the rest of the thinking-capable Claude lineup on every first-party registry: Fable 5 and Opus 4.8/4.7/4.6/4.5 are seeded withsupportsThinkinginmodelSpecs, but their registry entries never declaredsupportedThinkingEfforts. Because the catalog callsgetThinkingCapabilityFields(..., skipCanonicalEffortFallback=true)for static registry models (catalog.ts:730-743), an entry without declared tiers gets noeffort_tiersin/v1/modelsat all — clients cannot discover which effort levels these models accept.This PR declares the tiers on all four first-party registries (
claude,anthropic,github,ghe-copilot), following Anthropic's published per-model effort table:xhighwas introduced with Opus 4.7, so 4.6/4.5 entries intentionally do not declaresupportsXHighEffort. Fast variants (claude-opus-4.8-faston github/ghe-copilot) mirror their base model.claude-opus-5on theclauderegistry is left to #14548 so the two PRs merge cleanly in either order.Tests
New
tests/unit/claude-firstparty-effort-tiers.test.ts(7 tests):supportsReasoning: trueandsupportsXHighEffortmatching the tier list (present iffxhighis included).getRegistryModelThinkingEfforts()resolves each entry — the lookup the catalog uses.supportsXHighEffort()(providerModels.ts:372-387): the function defaults to true for models without an explicit flag, so Opus 4.6/4.5 correctness on the dotted-id registries depends on the canonical fallback reaching theclauderegistry's explicitfalseentries. These assertions pin that end-to-end so dropping those flags fails loudly instead of silently routingxhighto models that reject it.Mutation check: deleting the declared tiers from one entry per registry turns the suite red; restoring turns it green again.
Existing catalog/registry suites stay green (12058 canonical self-alias, 13601 collision names, 8327 owned-by prefix).
Notes
claude-sonnet-4.5named "Claude Sonnet 4.6" in the anthropic registry; a similar one on the claude registry) are intentionally not fixed here to keep this diff scoped; happy to send a follow-up.