diff options
| author | Frank <[email protected]> | 2026-02-12 09:28:51 -0500 |
|---|---|---|
| committer | opencode <[email protected]> | 2026-02-12 14:45:52 +0000 |
| commit | ae811ad8d249c5d37622c26f2078eb0bef40087b (patch) | |
| tree | f69e3c70e3fd19a73c5b5ea5f98ac99ec049109d | |
| parent | 85df1067130ef17e819900e303caec30ab012384 (diff) | |
| download | opencode-ae811ad8d249c5d37622c26f2078eb0bef40087b.tar.gz opencode-ae811ad8d249c5d37622c26f2078eb0bef40087b.zip | |
wip: zen
| -rw-r--r-- | packages/console/app/src/routes/zen/util/handler.ts | 31 |
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") |
