Merge 40569113678856f321e5b5c3fb2743d00d31d331 into d1e684c419b4f88fee62490b0c2b4fcf65469e59

This commit is contained in:
zhb 2026-07-11 09:52:46 +08:00 committed by GitHub
commit af00f7c8ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -24,6 +24,17 @@ const TIERS = [
},
] as const
/**
* Strip [1m]/[2m] context-window suffixes so capability overrides match
* regardless of whether the runtime model name includes the suffix.
* The suffix is a client-side marker (never sent to the API) but the
* pinned env var may carry it, while the runtime model passed to
* modelSupportsThinking/modelSupportsEffort may not.
*/
function stripContextSuffix(model: string): string {
return model.replace(/\[(1|2)m\]/gi, '')
}
/**
* Check whether a 3p model capability override is set for a model that matches one of
* the pinned ANTHROPIC_DEFAULT_*_MODEL env vars.
@ -33,12 +44,12 @@ export const get3PModelCapabilityOverride = memoize(
if (getAPIProvider() === 'firstParty' && isFirstPartyAnthropicBaseUrl()) {
return undefined
}
const m = model.toLowerCase()
const m = stripContextSuffix(model.toLowerCase())
for (const tier of TIERS) {
const pinned = process.env[tier.modelEnvVar]
const capabilities = process.env[tier.capabilitiesEnvVar]
if (!pinned || capabilities === undefined) continue
if (m !== pinned.toLowerCase()) continue
if (m !== stripContextSuffix(pinned.toLowerCase())) continue
return capabilities
.toLowerCase()
.split(',')
@ -47,5 +58,5 @@ export const get3PModelCapabilityOverride = memoize(
}
return undefined
},
(model, capability) => `${model.toLowerCase()}:${capability}`,
(model, capability) => `${stripContextSuffix(model.toLowerCase())}:${capability}`,
)