diff --git a/packages/renderer/src/lib/chat/components/chat-header.svelte b/packages/renderer/src/lib/chat/components/chat-header.svelte index 918a3bba8..01712e50e 100644 --- a/packages/renderer/src/lib/chat/components/chat-header.svelte +++ b/packages/renderer/src/lib/chat/components/chat-header.svelte @@ -9,8 +9,11 @@ import ModelSelector from '/@/lib/chat/components/model-selector.svelte'; import { currentChatId } from '/@/lib/chat/state/current-chat-id.svelte'; import { cn } from '/@/lib/chat/utils/shadcn'; import { mcpRemoteServerInfos } from '/@/stores/mcp-remote-servers'; +import type { MCPRemoteServerInfo } from '/@api/mcp/mcp-server-info'; +import type { RagEnvironment } from '/@api/rag/rag-environment'; import Plus from './icons/plus.svelte'; +import RagEnvironmentSelector from './rag-environment-selector.svelte'; import SidebarToggle from './sidebar-toggle.svelte'; import { Button } from './ui/button'; import { useSidebar } from './ui/sidebar'; @@ -20,11 +23,15 @@ let { readonly, models, selectedModel = $bindable(), + onMCPServerAdd, + onMCPServerRemove, selectedMCPToolsCount, mcpSelectorOpen = $bindable(), }: { readonly: boolean; selectedModel: ModelInfo | undefined; + onMCPServerAdd: (mcpServer: MCPRemoteServerInfo) => void; + onMCPServerRemove: (mcpServer: MCPRemoteServerInfo) => void; models: Array; /** * Represent the number of tools selected @@ -40,6 +47,18 @@ const noMcps = $derived($mcpRemoteServerInfos.length === 0); function onToolSelection(): void { mcpSelectorOpen = true; } + +let selectedRagEnvironment = $state(undefined); + +function onSelectRagEnvironment(ragEnvironment: RagEnvironment | undefined): void { + if (selectedRagEnvironment?.mcpServer !== undefined) { + onMCPServerRemove(selectedRagEnvironment?.mcpServer); + } + if (ragEnvironment?.mcpServer !== undefined) { + onMCPServerAdd(ragEnvironment.mcpServer); + } + selectedRagEnvironment = ragEnvironment; +}
@@ -77,7 +96,12 @@ function onToolSelection(): void { models={models} bind:value={selectedModel} /> -
+ + +
{#if noMcps}
+ {/snippet} + + + +
+
Select Knowledge Base
+
Choose a knowledge environment to enhance your chat
+
+
+ + + {#if ragEnvironmentsWithMCP.length === 0} + + No RAG environments with MCP available + + {:else} + + + +
+
No Knowledge Base
+
Chat without RAG enhancement
+
+ +
+ +
+
+ + + + + {#each ragEnvironmentsWithMCP as ragEnv (ragEnv.name)} + +
+
{ragEnv.name}
+
+ {ragEnv.ragConnection.providerId} • {ragEnv.files.length} sources +
+
+ +
+ +
+
+ {/each} +
+ {/if} +
+