import { deriveModelName } from "./namePatterns.js"; // Model defaults centralized (was scattered as `m.kind || "llm"`, `quotaFamily || "normal"`, etc.) export const MODEL_DEFAULTS = { kind: "llm", quotaFamily: "normal", strip: [], targetFormat: null }; // Normalize a registry model entry: accept terse "id" string, fill name via regex when omitted. // Override always wins (raw spread last); name falls back to regex → id. export function normalizeModel(raw) { const model = typeof raw === "string" ? { id: raw } : raw; if (model.name !== undefined) return model; return { ...model, name: deriveModelName(model.id) }; } // Resolve model kind with default (accepts legacy `type` field) export function modelKind(model) { return model?.kind || model?.type || MODEL_DEFAULTS.kind; } export function modelQuotaFamily(model) { return model?.quotaFamily || MODEL_DEFAULTS.quotaFamily; } export function modelStrip(model) { return model?.strip || []; } export function modelTargetFormat(model) { return model?.targetFormat || MODEL_DEFAULTS.targetFormat; }