summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFrank <[email protected]>2026-02-12 09:28:51 -0500
committeropencode <[email protected]>2026-02-12 14:45:52 +0000
commitae811ad8d249c5d37622c26f2078eb0bef40087b (patch)
treef69e3c70e3fd19a73c5b5ea5f98ac99ec049109d
parent85df1067130ef17e819900e303caec30ab012384 (diff)
downloadopencode-ae811ad8d249c5d37622c26f2078eb0bef40087b.tar.gz
opencode-ae811ad8d249c5d37622c26f2078eb0bef40087b.zip
wip: zen
-rw-r--r--packages/console/app/src/routes/zen/util/handler.ts31
1 files changed, 16 insertions, 15 deletions
diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts
index 246c61638..d2bcaa851 100644
--- a/packages/console/app/src/routes/zen/util/handler.ts
+++ b/packages/console/app/src/routes/zen/util/handler.ts
@@ -389,24 +389,25 @@ export async function handler(
if (provider) return provider
}
- if (retry.retryCount === MAX_FAILOVER_RETRIES) {
- const provider = modelInfo.providers.find((provider) => provider.id === modelInfo.fallbackProvider)
+ if (retry.retryCount !== MAX_FAILOVER_RETRIES) {
+ const providers = modelInfo.providers
+ .filter((provider) => !provider.disabled)
+ .filter((provider) => !retry.excludeProviders.includes(provider.id))
+ .flatMap((provider) => Array<typeof provider>(provider.weight ?? 1).fill(provider))
+
+ // Use the last 4 characters of session ID to select a provider
+ let h = 0
+ const l = sessionId.length
+ for (let i = l - 4; i < l; i++) {
+ h = (h * 31 + sessionId.charCodeAt(i)) | 0 // 32-bit int
+ }
+ const index = (h >>> 0) % providers.length // make unsigned + range 0..length-1
+ const provider = providers[index || 0]
if (provider) return provider
}
- const providers = modelInfo.providers
- .filter((provider) => !provider.disabled)
- .filter((provider) => !retry.excludeProviders.includes(provider.id))
- .flatMap((provider) => Array<typeof provider>(provider.weight ?? 1).fill(provider))
-
- // Use the last 4 characters of session ID to select a provider
- let h = 0
- const l = sessionId.length
- for (let i = l - 4; i < l; i++) {
- h = (h * 31 + sessionId.charCodeAt(i)) | 0 // 32-bit int
- }
- const index = (h >>> 0) % providers.length // make unsigned + range 0..length-1
- return providers[index || 0]
+ // fallback provider
+ return modelInfo.providers.find((provider) => provider.id === modelInfo.fallbackProvider)
})()
if (!modelProvider) throw new ModelError("No provider available")