diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index c4f1e7dfff..0b3df2aae5 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -2603,6 +2603,14 @@ return; } + if ( + $user?.role !== 'admin' && + !($user?.permissions?.chat?.stt ?? true) && + !$config?.audio?.realtime?.enabled + ) { + return; + } + if (selectedModels.length > 1) { toast.error($i18n.t('Select only one model to call')); return; diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 54689fc545..dcb72879f5 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -913,6 +913,14 @@ $config?.features?.enable_code_interpreter && ($_user.role === 'admin' || $_user?.permissions?.features?.code_interpreter); + let showCallButton = false; + $: showCallButton = + ($_user?.role === 'admin' || ($_user?.permissions?.chat?.call ?? true)) && + (callActive || + $config?.audio?.realtime?.enabled || + ($config?.audio?.stt?.engine !== 'web' && + ($_user?.role === 'admin' || ($_user?.permissions?.chat?.stt ?? true)))); + // Disable code interpreter when terminal is active (mutually exclusive) $: if ($selectedTerminalId && codeInterpreterEnabled) { codeInterpreterEnabled = false; @@ -2838,7 +2846,7 @@ {/if} {/if} - {#if callEnabled && !embedded && prompt === '' && files.length === 0 && ($_user?.role === 'admin' || ($_user?.permissions?.chat?.call ?? true))} + {#if callEnabled && !embedded && prompt === '' && files.length === 0 && showCallButton}