feat: experimental open terminal integration
This commit is contained in:
@@ -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 () => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user