From eb08aadaa0ec67c0e90b95721079844afc7c7d53 Mon Sep 17 00:00:00 2001 From: Simos Mikelatos Date: Wed, 1 Jul 2026 00:08:32 +0000 Subject: [PATCH] fix: reconcile provider effort after model changes --- .../chat/hooks/useChatProviderState.ts | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/components/chat/hooks/useChatProviderState.ts b/src/components/chat/hooks/useChatProviderState.ts index 35fdedd4..86a0eced 100644 --- a/src/components/chat/hooks/useChatProviderState.ts +++ b/src/components/chat/hooks/useChatProviderState.ts @@ -312,22 +312,29 @@ export function useChatProviderState({ selectedSession, selectedProject: _select return definition.OPTIONS.find((option) => option.value === model) ?? null; }, [providerModelCatalog]); - const getAllowedEffortValues = useCallback(( + const getEffortOptionsForModel = useCallback(( targetProvider: LLMProvider, model: string, - ): string[] => { + ): NonNullable['values'] => { if (!getSupportsEffortForProvider(targetProvider)) { return []; } const option = getModelOption(targetProvider, model); if (option) { - return option.effort?.values.map((value) => value.value) ?? []; + return option.effort?.values ?? []; } - return [...(FALLBACK_PROVIDER_EFFORT_VALUES[targetProvider] ?? [])]; + return toProviderEffortOptions(FALLBACK_PROVIDER_EFFORT_VALUES[targetProvider] ?? []); }, [getModelOption, getSupportsEffortForProvider]); + const getAllowedEffortValues = useCallback(( + targetProvider: LLMProvider, + model: string, + ): string[] => ( + getEffortOptionsForModel(targetProvider, model).map((value) => value.value) + ), [getEffortOptionsForModel]); + const reconcileStoredEffort = useCallback(( targetProvider: LLMProvider, model: string, @@ -554,19 +561,16 @@ export function useChatProviderState({ selectedSession, selectedProject: _select }; }, [setStoredProviderModel]); - const currentProviderEffort = providerEfforts[provider] ?? DEFAULT_EFFORT_VALUE; const currentProviderEffortOptions = useMemo(() => { - if (!getSupportsEffortForProvider(provider)) { - return []; - } - - const option = getModelOption(provider, providerModels[provider]); - if (option) { - return option.effort?.values ?? []; - } - - return toProviderEffortOptions(FALLBACK_PROVIDER_EFFORT_VALUES[provider] ?? []); - }, [getModelOption, getSupportsEffortForProvider, provider, providerModels]); + return getEffortOptionsForModel(provider, providerModels[provider]); + }, [getEffortOptionsForModel, provider, providerModels]); + const currentProviderEffort = useMemo(() => { + return reconcileStoredEffort( + provider, + providerModels[provider], + providerEfforts[provider] ?? DEFAULT_EFFORT_VALUE, + ); + }, [provider, providerEfforts, providerModels, reconcileStoredEffort]); return { provider,