Ctrl K
ComunidadGuías…

lib/ai-surfaces.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { describe, expect, it } from "vitest";

import {
  AI_SURFACES,
  byokFeatureDefaultModelKey,
  parseAiSurfaces,
  parseByokFeatureModels,
  surfaceForModelKey,
  workerModelSurfaceForAgentRun,
} from "@/lib/ai-surfaces";

describe("AI surfaces", () => {
  it("accepte toutes les surfaces et permet de tout laisser au quota Minddy", () => {
    expect(parseAiSurfaces(AI_SURFACES)).toEqual(AI_SURFACES);
    expect(parseAiSurfaces([])).toEqual([]);
  });

  it("refuse les surfaces inconnues et les doublons", () => {
    expect(parseAiSurfaces(["agent", "unknown"])).toBeNull();
    expect(parseAiSurfaces(["assistant", "assistant"])).toBeNull();
  });

  it("nettoie les modèles vides et refuse les clés inconnues", () => {
    expect(
      parseByokFeatureModels({ assistant_model: "  claude-sonnet-5  ", brief_model: " " }),
    ).toEqual({ assistant_model: "claude-sonnet-5" });
    expect(parseByokFeatureModels({ mystery_model: "x" })).toBeNull();
  });

  it("drops a retired triage override when an older client saves its other models", () => {
    expect(parseByokFeatureModels({ smart_triage_model: "old-model", assistant_model: "current-model" }))
      .toEqual({ assistant_model: "current-model" });
  });

  it("relie chaque modèle à sa surface et à sa clé admin", () => {
    expect(surfaceForModelKey("smart_fill_model")).toBe("automations");
    expect(surfaceForModelKey("feedback_embedding_model")).toBe("feedback");
    expect(byokFeatureDefaultModelKey("anthropic", "assistant_model")).toBe(
      "byok_default_anthropic_assistant_model",
    );
  });

  it("preserves legacy automation providers while routing new workers through account settings", () => {
    const automation = { chain_id: "chain-1", routine_id: null };
    expect(workerModelSurfaceForAgentRun(automation)).toBe("automations");
    expect(
      workerModelSurfaceForAgentRun({ ...automation, worker_model_source: "account" }),
    ).toBe("agent");
  });
});