From c19730ed20855ccdc5eb767c462bec6ed5dfcb57 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Mon, 22 Dec 2025 11:28:08 -0500 Subject: [PATCH] fix: enable Requesty refresh models with credentials The existing flushRouterModels pattern doesn't work for Requesty because it doesn't pass API credentials. This caused the 'Refresh Models' button to return stale cached data instead of fresh models. This fix: - Adds a 'refresh: true' flag to requestRouterModels handler - When refresh=true with a provider filter, flushes cache WITH credentials - Updates Requesty.tsx to use this new pattern instead of flushRouterModels The approach reuses existing infrastructure while ensuring the credential- aware cache flush works for providers like Requesty that require apiKey and baseUrl for API calls. Supersedes #10264 --- src/core/webview/webviewMessageHandler.ts | 9 +++++++++ .../src/components/settings/providers/Requesty.tsx | 4 +--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index be8e5291df1..544b723f93b 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -790,6 +790,9 @@ export const webviewMessageHandler = async ( const requestedProvider = message?.values?.provider const providerFilter = requestedProvider ? toRouterName(requestedProvider) : undefined + // Optional refresh flag to flush cache before fetching (useful for providers requiring credentials) + const shouldRefresh = message?.values?.refresh === true + const routerModels: Record = providerFilter ? ({} as Record) : { @@ -887,6 +890,12 @@ export const webviewMessageHandler = async ( ? candidates.filter(({ key }) => key === providerFilter) : candidates + // If refresh flag is set and we have a specific provider, flush its cache first + if (shouldRefresh && providerFilter && modelFetchPromises.length > 0) { + const targetCandidate = modelFetchPromises[0] + await flushModels(targetCandidate.options, true) + } + const results = await Promise.allSettled( modelFetchPromises.map(async ({ key, options }) => { const models = await safeGetModels(options) diff --git a/webview-ui/src/components/settings/providers/Requesty.tsx b/webview-ui/src/components/settings/providers/Requesty.tsx index 0285dbaed01..859d82d03ed 100644 --- a/webview-ui/src/components/settings/providers/Requesty.tsx +++ b/webview-ui/src/components/settings/providers/Requesty.tsx @@ -30,7 +30,6 @@ export const Requesty = ({ apiConfiguration, setApiConfigurationField, routerModels, - refetchRouterModels, organizationAllowList, modelValidationError, uriScheme, @@ -127,8 +126,7 @@ export const Requesty = ({