77 lines · 2.1 KB · TypeScript
RawDownload
import {  ProviderDriverKind,  type ModelCapabilities,  type ServerProviderModel,} from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test"; import { getProviderModelCapabilities } from "./providerModels"; const PROVIDER = ProviderDriverKind.make("claudeAgent"); function capabilities(id: string): ModelCapabilities {  return {    optionDescriptors: [{ id, label: id, type: "boolean" }],  };} function model(input: {  slug: string;  capabilities: ModelCapabilities;  aliases?: ReadonlyArray<string>;  isCustom?: boolean;}): ServerProviderModel {  return {    slug: input.slug,    name: input.slug,    ...(input.aliases ? { aliases: [...input.aliases] } : {}),    isCustom: input.isCustom ?? false,    capabilities: input.capabilities,  };} describe("getProviderModelCapabilities", () => {  it("resolves model-declared aliases", () => {    const aliasCapabilities = capabilities("aliased-option");    const models = [      model({        slug: "synthetic-model",        aliases: ["Legacy-Synthetic-Model"],        capabilities: aliasCapabilities,      }),    ];     expect(getProviderModelCapabilities(models, "legacy-synthetic-model", PROVIDER)).toEqual(      aliasCapabilities,    );  });   it("prefers an exact custom slug over a built-in model alias", () => {    const customCapabilities = capabilities("custom-option");    const models = [      model({        slug: "synthetic-model",        aliases: ["custom-model"],        capabilities: capabilities("built-in-option"),      }),      model({ slug: "custom-model", capabilities: customCapabilities, isCustom: true }),    ];     expect(getProviderModelCapabilities(models, " custom-model ", PROVIDER)).toEqual(      customCapabilities,    );  });   it("returns empty capabilities for an unknown slug", () => {    const models = [      model({        slug: "default-model",        capabilities: capabilities("default-option"),      }),    ];     expect(getProviderModelCapabilities(models, "unknown-model", PROVIDER)).toEqual({      optionDescriptors: [],    });  });});