feat: experimental open terminal integration

This commit is contained in:
Timothy Jaeryang Baek
2026-02-25 15:15:53 -06:00
parent f0c71e5a6d
commit 636ab99ad8
26 changed files with 1583 additions and 361 deletions
+29
View File
@@ -32,6 +32,7 @@
showChangelog,
temporaryChatEnabled,
toolServers,
terminalServers,
showSearch,
showSidebar
} from '$lib/stores';
@@ -128,6 +129,34 @@
return true;
});
toolServers.set(toolServersData);
// Inject enabled terminal servers as always-on tool servers
const enabledTerminals = ($settings?.terminalServers ?? []).filter((s) => s.enabled);
if (enabledTerminals.length > 0) {
let terminalServersData = await getToolServersData(
enabledTerminals.map((t) => ({
url: t.url,
auth_type: t.auth_type ?? 'bearer',
key: t.key ?? '',
path: t.path ?? '/openapi.json',
config: { enable: true }
}))
);
terminalServersData = terminalServersData.filter((data) => {
if (!data || data.error) {
toast.error(
$i18n.t(`Failed to connect to {{URL}} terminal server`, {
URL: data?.url
})
);
return false;
}
return true;
});
terminalServers.set(terminalServersData);
} else {
terminalServers.set([]);
}
};
const setBanners = async () => {
+24 -3
View File
@@ -30,7 +30,8 @@
toolServers,
playingNotificationSound,
channels,
channelId
channelId,
terminalServers
} from '$lib/stores';
import { goto } from '$app/navigation';
import { page } from '$app/stores';
@@ -283,8 +284,28 @@
};
const executeTool = async (data, cb) => {
const toolServer = $settings?.toolServers?.find((server) => server.url === data.server?.url);
const toolServerData = $toolServers?.find((server) => server.url === data.server?.url);
let toolServer = $settings?.toolServers?.find((server) => server.url === data.server?.url);
let toolServerData = $toolServers?.find((server) => server.url === data.server?.url);
// Also check terminal servers if not found in regular tool servers
if (!toolServer) {
const terminalServer = ($settings?.terminalServers ?? []).find(
(server) => server.url === data.server?.url
);
if (terminalServer) {
toolServer = {
url: terminalServer.url,
auth_type: terminalServer.auth_type ?? 'bearer',
key: terminalServer.key ?? '',
path: terminalServer.path ?? '/openapi.json'
};
}
}
// Check terminal server data if not found in regular tool servers data
if (!toolServerData) {
toolServerData = $terminalServers?.find((server) => server.url === data.server?.url);
}
console.log('executeTool', data, toolServer);