UNPKG

@juspay/neurolink

Version:

The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002

55 lines (54 loc) • 2.02 kB
/** * NL-004: Model alias/deprecation resolver. * * Resolves model names against an alias configuration map and applies the * configured action (warn, redirect, or block). */ import { ErrorCategory, ErrorSeverity } from "../constants/enums.js"; import { NeuroLinkError } from "./errorHandling.js"; import { logger } from "./logger.js"; /** * Resolve model aliases/deprecations. * Checks the model name against the alias map and applies the configured action. * * @param model - The requested model name (may be undefined). * @param config - The alias configuration containing model mappings. * @returns The resolved model name (original or redirected). * @throws {NeuroLinkError} When the alias action is "block". */ export function resolveModel(model, config) { if (!model || !config?.aliases) { return model; } const alias = config.aliases[model]; if (!alias) { return model; } switch (alias.action) { case "block": throw new NeuroLinkError({ code: "MODEL_DEPRECATED", message: `Model '${model}' is blocked. ${alias.reason || `Use '${alias.target}' instead.`}`, category: ErrorCategory.VALIDATION, severity: ErrorSeverity.HIGH, retriable: false, context: { requestedModel: model, suggestedModel: alias.target, reason: alias.reason, }, }); case "warn": logger.warn(`[ModelAlias] Model '${model}' is deprecated. ${alias.reason || `Redirecting to '${alias.target}'.`}`, { requestedModel: model, targetModel: alias.target, reason: alias.reason, }); return alias.target; case "redirect": logger.debug(`[ModelAlias] Redirecting model '${model}' to '${alias.target}'`); return alias.target; default: return model; } }