import { describe, expect, test } from "bun:test";import { inferModelVision, resolveModelVision } from "@local-studio/contracts/model-capabilities"; describe("resolveModelVision", () => { test("gives the recipe override priority over metadata and identifiers", () => { expect( resolveModelVision({ identifiers: ["owner/qwen3-vl"], recipeOverride: false, metadata: { vision: true, modalities: ["image"] }, }), ).toBe(false); }); test("uses legacy explicit metadata before modalities and identifiers", () => { expect( resolveModelVision({ identifiers: ["owner/qwen3-vl"], metadata: { supports_vision: "false", modalities: ["image"] }, }), ).toBe(false); }); test("recognizes legacy image modalities", () => { expect( resolveModelVision({ identifiers: ["owner/text-model"], modalities: ["text", "image"], }), ).toBe(true); }); test("falls back to identifiers when explicit signals are absent", () => { expect(inferModelVision(["owner/llava-next"])).toBe(true); expect(resolveModelVision({ identifiers: ["owner/text-model"] })).toBe(false); });});
import { describe, expect, test } from "bun:test";
import { inferModelVision, resolveModelVision } from "@local-studio/contracts/model-capabilities";
describe("resolveModelVision", () => {
test("gives the recipe override priority over metadata and identifiers", () => {
expect(
resolveModelVision({
identifiers: ["owner/qwen3-vl"],
recipeOverride: false,
metadata: { vision: true, modalities: ["image"] },
}),
).toBe(false);
});
test("uses legacy explicit metadata before modalities and identifiers", () => {
expect(
resolveModelVision({
identifiers: ["owner/qwen3-vl"],
metadata: { supports_vision: "false", modalities: ["image"] },
}),
).toBe(false);
});
test("recognizes legacy image modalities", () => {
expect(
resolveModelVision({
identifiers: ["owner/text-model"],
modalities: ["text", "image"],
}),
).toBe(true);
});
test("falls back to identifiers when explicit signals are absent", () => {
expect(inferModelVision(["owner/llava-next"])).toBe(true);
expect(resolveModelVision({ identifiers: ["owner/text-model"] })).toBe(false);
});
});