From 82f26ad8e44f39f53ab2ebd92288672a47343b52 Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Mon, 26 Jan 2026 15:33:27 +0100 Subject: [PATCH] refactor: Cleanup --- .../app/chat/ChatForm/ChatForm.svelte | 4 +-- .../app/mcp/McpConnectionLogs.svelte | 1 - .../mcp/McpServerCard/McpServerCard.svelte | 25 ++++++------------- .../webui/src/lib/services/mcp.service.ts | 2 +- tools/server/webui/src/lib/types/mcp.d.ts | 12 +++++---- 5 files changed, 18 insertions(+), 26 deletions(-) diff --git a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte index 07f85e3577..1cc5f172ef 100644 --- a/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte +++ b/tools/server/webui/src/lib/components/app/chat/ChatForm/ChatForm.svelte @@ -15,7 +15,7 @@ import { chatStore } from '$lib/stores/chat.svelte'; import { mcpStore } from '$lib/stores/mcp.svelte'; import { conversationsStore, activeMessages } from '$lib/stores/conversations.svelte'; - import type { GetPromptResult, MCPPromptInfo } from '$lib/types'; + import type { GetPromptResult, MCPPromptInfo, PromptMessage } from '$lib/types'; import { isIMEComposing, parseClipboardContent } from '$lib/utils'; import { AudioRecorder, @@ -336,7 +336,7 @@ function handlePromptLoadComplete(placeholderId: string, result: GetPromptResult) { const promptText = result.messages - ?.map((msg) => { + ?.map((msg: PromptMessage) => { if (typeof msg.content === 'string') { return msg.content; } diff --git a/tools/server/webui/src/lib/components/app/mcp/McpConnectionLogs.svelte b/tools/server/webui/src/lib/components/app/mcp/McpConnectionLogs.svelte index 999e7e9870..0240e62380 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpConnectionLogs.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpConnectionLogs.svelte @@ -33,7 +33,6 @@ {#if connectionTimeMs !== undefined} ยท Connected in {connectionTimeMs}ms {/if} - diff --git a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte index caa54213c5..9af2d96914 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte @@ -47,24 +47,15 @@ : [] ); - let serverInfo = $derived( - healthState.status === HealthCheckStatus.SUCCESS ? healthState.serverInfo : undefined - ); - let capabilities = $derived( - healthState.status === HealthCheckStatus.SUCCESS ? healthState.capabilities : undefined - ); - let transportType = $derived( - healthState.status === HealthCheckStatus.SUCCESS ? healthState.transportType : undefined - ); - let protocolVersion = $derived( - healthState.status === HealthCheckStatus.SUCCESS ? healthState.protocolVersion : undefined - ); - let connectionTimeMs = $derived( - healthState.status === HealthCheckStatus.SUCCESS ? healthState.connectionTimeMs : undefined - ); - let instructions = $derived( - healthState.status === HealthCheckStatus.SUCCESS ? healthState.instructions : undefined + let successState = $derived( + healthState.status === HealthCheckStatus.SUCCESS ? healthState : null ); + let serverInfo = $derived(successState?.serverInfo); + let capabilities = $derived(successState?.capabilities); + let transportType = $derived(successState?.transportType); + let protocolVersion = $derived(successState?.protocolVersion); + let connectionTimeMs = $derived(successState?.connectionTimeMs); + let instructions = $derived(successState?.instructions); let isEditing = $state(!server.url.trim()); let showDeleteDialog = $state(false); diff --git a/tools/server/webui/src/lib/services/mcp.service.ts b/tools/server/webui/src/lib/services/mcp.service.ts index bfd3aafd79..3f9972cbe3 100644 --- a/tools/server/webui/src/lib/services/mcp.service.ts +++ b/tools/server/webui/src/lib/services/mcp.service.ts @@ -141,7 +141,7 @@ export class MCPService { title: impl.title, description: impl.description, websiteUrl: impl.websiteUrl, - icons: impl.icons?.map((icon) => ({ + icons: impl.icons?.map((icon: { src: string; mimeType?: string; sizes?: string }) => ({ src: icon.src, mimeType: icon.mimeType, sizes: icon.sizes diff --git a/tools/server/webui/src/lib/types/mcp.d.ts b/tools/server/webui/src/lib/types/mcp.d.ts index 979ba8a7aa..4c91a5e94b 100644 --- a/tools/server/webui/src/lib/types/mcp.d.ts +++ b/tools/server/webui/src/lib/types/mcp.d.ts @@ -1,5 +1,6 @@ import type { MCPConnectionPhase, MCPLogLevel } from '$lib/enums/mcp'; import type { + Client, ClientCapabilities as SDKClientCapabilities, ServerCapabilities as SDKServerCapabilities, Implementation as SDKImplementation, @@ -7,8 +8,9 @@ import type { CallToolResult, Prompt, GetPromptResult, - PromptMessage -} from '@modelcontextprotocol/sdk/types.js'; + PromptMessage, + Transport +} from '@modelcontextprotocol/sdk'; export type { Tool, CallToolResult, Prompt, GetPromptResult, PromptMessage }; export type ClientCapabilities = SDKClientCapabilities; @@ -119,9 +121,9 @@ export type MCPPhaseCallback = ( * Returned by MCPService.connect() and used for subsequent operations. */ export interface MCPConnection { - client: import('@modelcontextprotocol/sdk/client').Client; - transport: import('@modelcontextprotocol/sdk/shared/transport.js').Transport; - tools: import('@modelcontextprotocol/sdk/types.js').Tool[]; + client: Client; + transport: Transport; + tools: Tool[]; serverName: string; transportType: MCPTransportType; serverInfo?: MCPServerInfo;