diff options
| author | Nacho F. Lizaur <[email protected]> | 2026-02-06 18:18:57 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-06 11:18:57 -0600 |
| commit | 18749c1f4ecf1c5cb361d1735aa84d730f9a25c0 (patch) | |
| tree | bef5f410b96153b49b8be06a118d45420af9ddbf | |
| parent | 9497cfdf455a3b57b837ddead1cc6b4b5bf5ff01 (diff) | |
| download | opencode-18749c1f4ecf1c5cb361d1735aa84d730f9a25c0.tar.gz opencode-18749c1f4ecf1c5cb361d1735aa84d730f9a25c0.zip | |
fix(opencode): correct prefix selection for amazon-bedrock provider in getSmallModel (#12281)
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 614d4ec14..5da273fea 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -1171,8 +1171,32 @@ export namespace Provider { priority = ["gpt-5-mini", "claude-haiku-4.5", ...priority] } for (const item of priority) { - for (const model of Object.keys(provider.models)) { - if (model.includes(item)) return getModel(providerID, model) + if (providerID === "amazon-bedrock") { + const crossRegionPrefixes = ["global.", "us.", "eu."] + const candidates = Object.keys(provider.models).filter(m => m.includes(item)) + + // Model selection priority: + // 1. global. prefix (works everywhere) + // 2. User's region prefix (us., eu.) + // 3. Unprefixed model + const globalMatch = candidates.find(m => m.startsWith("global.")) + if (globalMatch) return getModel(providerID, globalMatch) + + const region = provider.options?.region + if (region) { + const regionPrefix = region.split("-")[0] + if (regionPrefix === "us" || regionPrefix === "eu") { + const regionalMatch = candidates.find(m => m.startsWith(`${regionPrefix}.`)) + if (regionalMatch) return getModel(providerID, regionalMatch) + } + } + + const unprefixed = candidates.find(m => !crossRegionPrefixes.some(p => m.startsWith(p))) + if (unprefixed) return getModel(providerID, unprefixed) + } else { + for (const model of Object.keys(provider.models)) { + if (model.includes(item)) return getModel(providerID, model) + } } } } |
