9router/open-sse/providers/models/schema.js

33 lines
1 KiB
JavaScript
Raw Normal View History

// Model schema (Mongoose-lite): central defaults + normalizer + 3-tier resolver (skeleton, not wired)
// Centralized model defaults (caps declares positive capabilities)
export const MODEL_DEFAULTS = {
type: "llm",
quotaFamily: "normal",
strip: [],
targetFormat: null,
caps: { vision: false, audioIn: false, thinking: false }
};
// Normalize a raw model entry over defaults (deep-merge caps)
export function normalizeModel(raw) {
return {
...MODEL_DEFAULTS,
...raw,
caps: { ...MODEL_DEFAULTS.caps, ...raw.caps },
upstreamModelId: raw.upstreamModelId || raw.id
};
}
// 3-tier fallback: defaults -> catalog canonical -> provider inline override (wins)
export function resolveModel(catalog, ref) {
const raw = typeof ref === "string" ? { id: ref } : ref;
return {
...MODEL_DEFAULTS,
...catalog[raw.id],
...raw,
caps: { ...MODEL_DEFAULTS.caps, ...catalog[raw.id]?.caps, ...raw.caps },
upstreamModelId: raw.upstreamModelId || catalog[raw.id]?.upstreamModelId || raw.id
};
}