diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 3eeb6173a8..f592bf55f3 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -773,6 +773,14 @@ 'terminal', modelCapabilitiesById ); + $: hasDirectToolServerAccess = + $_user?.role === 'admin' || ($_user?.permissions?.features?.direct_tool_servers ?? true); + $: showTerminalSelector = + terminalCapableModels.length > 0 && + (($terminalServers ?? []).some((t) => t.id) || + (hasDirectToolServerAccess && + (($terminalServers ?? []).some((t) => !t.id) || + ($settings?.terminalServers ?? []).some((s) => s.url)))); let toggleFilters = []; $: toggleFilters = (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels) @@ -2482,14 +2490,14 @@ {/each} - {#if !history?.currentId || history.messages[history.currentId]?.done == true} - - {@const hasDirectToolServerAccess = - $_user?.role === 'admin' || - ($_user?.permissions?.features?.direct_tool_servers ?? true)} - {#if terminalCapableModels.length > 0 && (($terminalServers ?? []).some((t) => t.id) || (hasDirectToolServerAccess && (($terminalServers ?? []).some((t) => !t.id) || ($settings?.terminalServers ?? []).some((s) => s.url))))} - - {/if} + + {#if showTerminalSelector} + {/if} diff --git a/src/lib/components/chat/MessageInput/TerminalMenu.svelte b/src/lib/components/chat/MessageInput/TerminalMenu.svelte index 0047a13aab..870fdc7924 100644 --- a/src/lib/components/chat/MessageInput/TerminalMenu.svelte +++ b/src/lib/components/chat/MessageInput/TerminalMenu.svelte @@ -21,6 +21,7 @@ const i18n = getContext('i18n'); export let show = false; + export let disabled = false; const chatContext = (terminal: any) => terminal?.contexts?.chat ?? {}; @@ -117,106 +118,56 @@ selectedDirectTerminal?.name || selectedDirectTerminal?.url?.replace(/^https?:\/\//, '') || $i18n.t('Terminal'); + $: if (disabled && show) show = false; + + $: triggerClass = `flex items-center gap-1.5 translate-y-[1px] text-[0.8125rem] transition rounded-lg ${ + disabled + ? 'p-1 cursor-not-allowed opacity-40 text-gray-400 dark:text-gray-600' + : `text-gray-600 hover:bg-gray-50/40 hover:text-gray-700 dark:text-gray-300 dark:hover:bg-gray-800/40 dark:hover:text-gray-200 cursor-pointer ${ + $selectedTerminalId && selectedLabel ? ' p-1 ' : ' p-1 opacity-50' + }` + }`;
- + {#if disabled} - + {:else} + + + + + +
+ + + {#if directTerminals.length > 0 && ($user?.role === 'admin' || ($user?.permissions?.features?.direct_tool_servers ?? true))} +
+ - - - - - -
- - {#each directTerminals as terminal} - - {/each} - {/if} - - - {#if systemTerminals.length > 0} -
- - {$i18n.t('System')} - - {#if $user?.role === 'admin'} + {$i18n.t('Direct')} + - {/if} -
+
- {#each systemTerminals as terminal} - + {/each} + {/if} + + + {#if systemTerminals.length > 0} +
+ + {$i18n.t('System')} + + {#if $user?.role === 'admin'} + + + {/if} - - {/each} - {/if} - -
-
+
+ + {#each systemTerminals as terminal} + + {/each} + {/if} + + + + {/if}