From 94fef3508af383c39fa23a03ce77437c62e581be Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Mon, 29 Dec 2025 10:35:46 +0100 Subject: [PATCH] feat: Introduce common utility functions --- tools/server/webui/src/lib/utils/mcp.ts | 23 ++++++++++++++++++++++ tools/server/webui/src/lib/utils/number.ts | 11 +++++++++++ 2 files changed, 34 insertions(+) create mode 100644 tools/server/webui/src/lib/utils/mcp.ts create mode 100644 tools/server/webui/src/lib/utils/number.ts diff --git a/tools/server/webui/src/lib/utils/mcp.ts b/tools/server/webui/src/lib/utils/mcp.ts new file mode 100644 index 0000000000..46efb36b4a --- /dev/null +++ b/tools/server/webui/src/lib/utils/mcp.ts @@ -0,0 +1,23 @@ +import type { MCPTransportType } from '$lib/types/mcp'; + +/** + * Detects the MCP transport type from a URL. + * WebSocket URLs (ws:// or wss://) use 'websocket', others use 'streamable_http'. + */ +export function detectMcpTransportFromUrl(url: string): MCPTransportType { + const normalized = url.trim().toLowerCase(); + return normalized.startsWith('ws://') || normalized.startsWith('wss://') + ? 'websocket' + : 'streamable_http'; +} + +/** + * Generates a valid MCP server ID from user input. + * Returns the trimmed ID if valid, otherwise generates 'server-{index+1}'. + */ +export function generateMcpServerId(id: unknown, index: number): string { + if (typeof id === 'string' && id.trim()) { + return id.trim(); + } + return `server-${index + 1}`; +} diff --git a/tools/server/webui/src/lib/utils/number.ts b/tools/server/webui/src/lib/utils/number.ts new file mode 100644 index 0000000000..263869ec1d --- /dev/null +++ b/tools/server/webui/src/lib/utils/number.ts @@ -0,0 +1,11 @@ +/** + * Normalizes a value to a positive number, returning the fallback if invalid. + * Handles both string and number inputs. + */ +export function normalizePositiveNumber(value: unknown, fallback: number): number { + const parsed = typeof value === 'string' ? Number.parseFloat(value) : Number(value); + if (!Number.isFinite(parsed) || parsed <= 0) { + return fallback; + } + return parsed; +}