From f4047eea7797fa1bf0a541bf2f2e02331537dbf9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 13:15:47 +0400 Subject: [PATCH] fix: direct tool server --- src/lib/apis/index.ts | 18 ++++++++++-------- src/lib/components/chat/Settings/Tools.svelte | 15 ++++++++++++++- src/routes/(app)/+layout.svelte | 15 ++++++++++++++- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index 4670052459..646514eee8 100644 --- a/src/lib/apis/index.ts +++ b/src/lib/apis/index.ts @@ -347,25 +347,20 @@ export const getToolServerData = async (token: string, url: string) => { return data; }; -export const getToolServersData = async (i18n, servers: object[]) => { +export const getToolServersData = async (servers: object[]) => { return ( await Promise.all( servers .filter((server) => server?.config?.enable) .map(async (server) => { + let error = null; const data = await getToolServerData( (server?.auth_type ?? 'bearer') === 'bearer' ? server?.key : localStorage.token, (server?.path ?? '').includes('://') ? server?.path : `${server?.url}${(server?.path ?? '').startsWith('/') ? '' : '/'}${server?.path}` ).catch((err) => { - toast.error( - $i18n.t(`Failed to connect to {{URL}} OpenAPI tool server`, { - URL: (server?.path ?? '').includes('://') - ? server?.path - : `${server?.url}${(server?.path ?? '').startsWith('/') ? '' : '/'}${server?.path}` - }) - ); + error = err; return null; }); @@ -377,6 +372,13 @@ export const getToolServersData = async (i18n, servers: object[]) => { info: info, specs: specs }; + } else if (error) { + return { + error, + url: server?.url + }; + } else { + return null; } }) ) diff --git a/src/lib/components/chat/Settings/Tools.svelte b/src/lib/components/chat/Settings/Tools.svelte index ab4f3309ef..147b8f5964 100644 --- a/src/lib/components/chat/Settings/Tools.svelte +++ b/src/lib/components/chat/Settings/Tools.svelte @@ -31,7 +31,20 @@ toolServers: servers }); - toolServers.set(await getToolServersData($i18n, $settings?.toolServers ?? [])); + let toolServersData = await getToolServersData($settings?.toolServers ?? []); + toolServersData = toolServersData.filter((data) => { + if (data.error) { + toast.error( + $i18n.t(`Failed to connect to {{URL}} OpenAPI tool server`, { + URL: data?.url + }) + ); + return false; + } + + return true; + }); + toolServers.set(toolServersData); }; onMount(async () => { diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 91da536301..7ae71b8663 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -114,7 +114,20 @@ banners.set(await getBanners(localStorage.token)); tools.set(await getTools(localStorage.token)); - toolServers.set(await getToolServersData($i18n, $settings?.toolServers ?? [])); + + let toolServersData = await getToolServersData($settings?.toolServers ?? []); + toolServersData = toolServersData.filter((data) => { + if (data.error) { + toast.error( + $i18n.t(`Failed to connect to {{URL}} OpenAPI tool server`, { + URL: data?.url + }) + ); + return false; + } + return true; + }); + toolServers.set(toolServersData); document.addEventListener('keydown', async function (event) { const isCtrlPressed = event.ctrlKey || event.metaKey; // metaKey is for Cmd key on Mac