import type { AvailableModel } from "./types.js"; function uniqueMatch(matches: readonly AvailableModel[]): AvailableModel | undefined { return matches.length === 1 ? matches[0] : undefined; } export function resolveModel(requested: string, available: readonly AvailableModel[]): AvailableModel | undefined { const query = requested.trim().toLowerCase(); if (!query) return undefined; const exact = available.filter((model) => model.id.toLowerCase() === query); if (exact.length) return uniqueMatch(exact); const aliases = available.filter((model) => { const suffix = model.id.split("/").at(-1)?.toLowerCase(); return suffix === query || model.name?.toLowerCase() === query; }); if (aliases.length) return uniqueMatch(aliases); return uniqueMatch(available.filter((model) => model.id.toLowerCase().includes(query))); }