import { config } from "$lib/server/config"; import { logger } from "$lib/server/logger"; import type { ProcessedModel } from "../models"; export const ROUTER_TOOLS_ROUTE = "agentic"; type LocalsWithMcp = App.Locals & { mcp?: { selectedServers?: unknown[]; selectedServerNames?: unknown[]; }; }; export function isRouterToolsBypassEnabled(): boolean { return (config.LLM_ROUTER_ENABLE_TOOLS || "").toLowerCase() === "true"; } export function hasActiveToolsSelection(locals: App.Locals | undefined): boolean { try { const reqMcp = (locals as LocalsWithMcp | undefined)?.mcp; const byConfig = Array.isArray(reqMcp?.selectedServers) && (reqMcp?.selectedServers?.length ?? 0) > 0; const byName = Array.isArray(reqMcp?.selectedServerNames) && (reqMcp?.selectedServerNames?.length ?? 0) > 0; return Boolean(byConfig || byName); } catch { return false; } } export function pickToolsCapableModel( models: ProcessedModel[] | undefined ): ProcessedModel | undefined { const preferredRaw = (config as unknown as Record).LLM_ROUTER_TOOLS_MODEL; const preferred = preferredRaw?.trim(); if (!preferred) { logger.warn("[router] tools bypass requested but LLM_ROUTER_TOOLS_MODEL is not set"); return undefined; } if (!models?.length) return undefined; const found = models.find((m) => m.id === preferred || m.name === preferred); if (!found) { logger.warn( { configuredModel: preferred }, "[router] configured tools model not found; falling back to Arch routing" ); return undefined; } logger.info({ model: found.id ?? found.name }, "[router] using configured tools model"); return found; }