diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 5141fed098..8b86efd8dc 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -968,6 +968,8 @@ }; const resetInput = async () => { + // Let the $: update finish first, or webSearchActive misses the default-feature writes + await tick(); selectedToolIds = []; selectedSkillIds = []; selectedFilterIds = []; @@ -1020,6 +1022,41 @@ skills.set(await getSkills(localStorage.token)); } if (selectedModels.length !== 1 && !atSelectedModel) { + const comparedModels = selectedModels + .filter((id) => id) + .map((id) => $models.find((m) => m.id === id)); + const isSharedDefaultFeature = (feature) => + comparedModels.length > 0 && + comparedModels.every( + (model) => + model?.info?.meta?.capabilities?.[feature] && + model?.info?.meta?.defaultFeatureIds?.includes(feature) + ); + + if ( + isSharedDefaultFeature('image_generation') && + $config?.features?.enable_image_generation && + ($user?.role === 'admin' || $user?.permissions?.features?.image_generation) + ) { + imageGenerationEnabled = true; + } + + if ( + isSharedDefaultFeature('web_search') && + $config?.features?.enable_web_search && + ($user?.role === 'admin' || $user?.permissions?.features?.web_search) + ) { + webSearchEnabled = true; + } + + if ( + isSharedDefaultFeature('code_interpreter') && + $config?.features?.enable_code_interpreter && + ($user?.role === 'admin' || $user?.permissions?.features?.code_interpreter) + ) { + codeInterpreterEnabled = true; + } + return; }