@mux/ai 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -543,8 +543,44 @@ var DEFAULT_EMBEDDING_MODELS = {
543
543
  var LANGUAGE_MODELS = {
544
544
  openai: ["gpt-5.1", "gpt-5-mini"],
545
545
  anthropic: ["claude-sonnet-4-5"],
546
- google: ["gemini-3-flash-preview", "gemini-2.5-flash"]
546
+ google: ["gemini-3-flash-preview", "gemini-3.1-flash-lite-preview", "gemini-2.5-flash"]
547
547
  };
548
+ var LANGUAGE_MODEL_DEPRECATIONS = [
549
+ {
550
+ provider: "google",
551
+ modelId: "gemini-2.5-flash",
552
+ replacementModelId: "gemini-3.1-flash-lite-preview",
553
+ phase: "warn",
554
+ deprecatedOn: "2026-03-03",
555
+ sunsetOn: "2026-06-30",
556
+ reason: "Gemini 3.1 Flash-Lite Preview offers better quality/latency/cost balance in current evals."
557
+ }
558
+ ];
559
+ var warnedDeprecatedLanguageModels = /* @__PURE__ */ new Set();
560
+ function getLanguageModelDeprecation(provider, modelId) {
561
+ return LANGUAGE_MODEL_DEPRECATIONS.find(
562
+ (deprecation) => deprecation.provider === provider && deprecation.modelId === modelId
563
+ );
564
+ }
565
+ function maybeWarnOrThrowForDeprecatedLanguageModel(provider, modelId) {
566
+ const deprecation = getLanguageModelDeprecation(provider, modelId);
567
+ if (!deprecation) {
568
+ return;
569
+ }
570
+ const replacementText = deprecation.replacementModelId ? ` Use replacement provider="${provider}" model="${deprecation.replacementModelId}" instead.` : "";
571
+ const sunsetText = deprecation.sunsetOn ? ` Planned removal date: ${deprecation.sunsetOn}.` : "";
572
+ const reasonText = deprecation.reason ? ` Reason: ${deprecation.reason}` : "";
573
+ const message = deprecation.phase === "blocked" ? `Language model is no longer supported for provider="${provider}" model="${modelId}".${replacementText}${reasonText}` : `Language model is deprecated and in a grace period for provider="${provider}" model="${modelId}".${replacementText}${sunsetText}${reasonText}`;
574
+ if (deprecation.phase === "blocked") {
575
+ throw new Error(message);
576
+ }
577
+ const warningKey = `${provider}:${modelId}`;
578
+ if (warnedDeprecatedLanguageModels.has(warningKey)) {
579
+ return;
580
+ }
581
+ warnedDeprecatedLanguageModels.add(warningKey);
582
+ console.warn(message);
583
+ }
548
584
  function getDefaultEvalModelConfigs() {
549
585
  return Object.entries(DEFAULT_LANGUAGE_MODELS).map(([provider, modelId]) => ({ provider, modelId }));
550
586
  }
@@ -575,6 +611,7 @@ function parseEvalModelPair(value) {
575
611
  `Unsupported eval model "${modelId}" for provider "${provider}". Supported models: ${supportedModels.join(", ")}.`
576
612
  );
577
613
  }
614
+ maybeWarnOrThrowForDeprecatedLanguageModel(provider, modelId);
578
615
  return {
579
616
  provider,
580
617
  modelId
@@ -618,6 +655,7 @@ var EVAL_MODEL_CONFIGS = resolveEvalModelConfigsFromEnv();
618
655
  function resolveLanguageModelConfig(options = {}) {
619
656
  const provider = options.provider || "openai";
620
657
  const modelId = options.model || DEFAULT_LANGUAGE_MODELS[provider];
658
+ maybeWarnOrThrowForDeprecatedLanguageModel(provider, modelId);
621
659
  return { provider, modelId };
622
660
  }
623
661
  function resolveEmbeddingModelConfig(options = {}) {
@@ -626,6 +664,7 @@ function resolveEmbeddingModelConfig(options = {}) {
626
664
  return { provider, modelId };
627
665
  }
628
666
  async function createLanguageModelFromConfig(provider, modelId, credentials) {
667
+ maybeWarnOrThrowForDeprecatedLanguageModel(provider, modelId);
629
668
  switch (provider) {
630
669
  case "openai": {
631
670
  const apiKey = await resolveProviderApiKey("openai", credentials);