fix: reconcile provider effort after model changes

This commit is contained in:
Simos Mikelatos
2026-07-01 00:08:32 +00:00
parent 0206a1f6aa
commit eb08aadaa0

View File

@@ -312,22 +312,29 @@ export function useChatProviderState({ selectedSession, selectedProject: _select
return definition.OPTIONS.find((option) => option.value === model) ?? null; return definition.OPTIONS.find((option) => option.value === model) ?? null;
}, [providerModelCatalog]); }, [providerModelCatalog]);
const getAllowedEffortValues = useCallback(( const getEffortOptionsForModel = useCallback((
targetProvider: LLMProvider, targetProvider: LLMProvider,
model: string, model: string,
): string[] => { ): NonNullable<ProviderModelOption['effort']>['values'] => {
if (!getSupportsEffortForProvider(targetProvider)) { if (!getSupportsEffortForProvider(targetProvider)) {
return []; return [];
} }
const option = getModelOption(targetProvider, model); const option = getModelOption(targetProvider, model);
if (option) { 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]); }, [getModelOption, getSupportsEffortForProvider]);
const getAllowedEffortValues = useCallback((
targetProvider: LLMProvider,
model: string,
): string[] => (
getEffortOptionsForModel(targetProvider, model).map((value) => value.value)
), [getEffortOptionsForModel]);
const reconcileStoredEffort = useCallback(( const reconcileStoredEffort = useCallback((
targetProvider: LLMProvider, targetProvider: LLMProvider,
model: string, model: string,
@@ -554,19 +561,16 @@ export function useChatProviderState({ selectedSession, selectedProject: _select
}; };
}, [setStoredProviderModel]); }, [setStoredProviderModel]);
const currentProviderEffort = providerEfforts[provider] ?? DEFAULT_EFFORT_VALUE;
const currentProviderEffortOptions = useMemo(() => { const currentProviderEffortOptions = useMemo(() => {
if (!getSupportsEffortForProvider(provider)) { return getEffortOptionsForModel(provider, providerModels[provider]);
return []; }, [getEffortOptionsForModel, provider, providerModels]);
} const currentProviderEffort = useMemo(() => {
return reconcileStoredEffort(
const option = getModelOption(provider, providerModels[provider]); provider,
if (option) { providerModels[provider],
return option.effort?.values ?? []; providerEfforts[provider] ?? DEFAULT_EFFORT_VALUE,
} );
}, [provider, providerEfforts, providerModels, reconcileStoredEffort]);
return toProviderEffortOptions(FALLBACK_PROVIDER_EFFORT_VALUES[provider] ?? []);
}, [getModelOption, getSupportsEffortForProvider, provider, providerModels]);
return { return {
provider, provider,