From ae811ad8d249c5d37622c26f2078eb0bef40087b Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 12 Feb 2026 09:28:51 -0500 Subject: [PATCH] wip: zen --- .../app/src/routes/zen/util/handler.ts | 31 ++++++++++--------- 1 file 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(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(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")