diff --git a/src/lib/apis/terminal/index.ts b/src/lib/apis/terminal/index.ts index 5ab2039833..aa99810753 100644 --- a/src/lib/apis/terminal/index.ts +++ b/src/lib/apis/terminal/index.ts @@ -5,6 +5,10 @@ export type FileEntry = { modified?: number; }; +export type TerminalFeatures = { + terminal?: boolean; +}; + import { WEBUI_API_BASE_URL } from '$lib/constants'; export type TerminalServer = { @@ -23,6 +27,18 @@ export const getTerminalServers = async (token: string): Promise []); }; +export const getTerminalConfig = async ( + baseUrl: string, + apiKey: string +): Promise<{ features: TerminalFeatures } | null> => { + const url = `${baseUrl.replace(/\/$/, '')}/api/config`; + const res = await fetch(url, { + headers: { Authorization: `Bearer ${apiKey}` } + }).catch(() => null); + if (!res || !res.ok) return null; + return res.json().catch(() => null); +}; + export const getCwd = async (baseUrl: string, apiKey: string): Promise => { const url = `${baseUrl.replace(/\/$/, '')}/files/cwd`; const res = await fetch(url, { diff --git a/src/lib/components/chat/FileNav.svelte b/src/lib/components/chat/FileNav.svelte index 3d0248103e..7d1ab25dac 100644 --- a/src/lib/components/chat/FileNav.svelte +++ b/src/lib/components/chat/FileNav.svelte @@ -15,6 +15,7 @@ } from '$lib/stores'; import { getCwd, + getTerminalConfig, listFiles, readFile, downloadFileBlob, @@ -50,6 +51,7 @@ let containerEl: HTMLElement; let terminalConnected = false; let terminalConnecting = false; + let terminalEnabled = true; const toggleTerminal = () => { terminalExpanded = !terminalExpanded; @@ -151,6 +153,10 @@ if (terminal && terminal.url !== prevTerminalUrl) { prevTerminalUrl = terminal.url; (async () => { + // Discover server features (terminal enabled/disabled) + const config = await getTerminalConfig(terminal.url, terminal.key); + terminalEnabled = config?.features?.terminal !== false; + const cwd = await getCwd(terminal.url, terminal.key); const dir = cwd ? (cwd.endsWith('/') ? cwd : cwd + '/') : '/'; savedPath = dir; @@ -792,6 +798,7 @@ + {#if terminalEnabled}
{#if terminalExpanded} @@ -840,5 +847,6 @@
{/if} + {/if} {/if}