71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { ClawdbotConfig } from "../config/config.js";
|
|
import {
|
|
buildAllowedModelSet,
|
|
modelKey,
|
|
parseModelRef,
|
|
} from "./model-selection.js";
|
|
|
|
const catalog = [
|
|
{
|
|
provider: "openai",
|
|
id: "gpt-4",
|
|
name: "GPT-4",
|
|
},
|
|
];
|
|
|
|
describe("buildAllowedModelSet", () => {
|
|
it("always allows the configured default model", () => {
|
|
const cfg = {
|
|
agent: {
|
|
models: {
|
|
"openai/gpt-4": { alias: "gpt4" },
|
|
},
|
|
},
|
|
} as ClawdbotConfig;
|
|
|
|
const allowed = buildAllowedModelSet({
|
|
cfg,
|
|
catalog,
|
|
defaultProvider: "claude-cli",
|
|
defaultModel: "opus-4.5",
|
|
});
|
|
|
|
expect(allowed.allowAny).toBe(false);
|
|
expect(allowed.allowedKeys.has(modelKey("openai", "gpt-4"))).toBe(true);
|
|
expect(allowed.allowedKeys.has(modelKey("claude-cli", "opus-4.5"))).toBe(
|
|
true,
|
|
);
|
|
});
|
|
|
|
it("includes the default model when no allowlist is set", () => {
|
|
const cfg = {
|
|
agent: {},
|
|
} as ClawdbotConfig;
|
|
|
|
const allowed = buildAllowedModelSet({
|
|
cfg,
|
|
catalog,
|
|
defaultProvider: "claude-cli",
|
|
defaultModel: "opus-4.5",
|
|
});
|
|
|
|
expect(allowed.allowAny).toBe(true);
|
|
expect(allowed.allowedKeys.has(modelKey("openai", "gpt-4"))).toBe(true);
|
|
expect(allowed.allowedKeys.has(modelKey("claude-cli", "opus-4.5"))).toBe(
|
|
true,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("parseModelRef", () => {
|
|
it("normalizes anthropic/opus-4.5 to claude-opus-4-5", () => {
|
|
const ref = parseModelRef("anthropic/opus-4.5", "anthropic");
|
|
expect(ref).toEqual({
|
|
provider: "anthropic",
|
|
model: "claude-opus-4-5",
|
|
});
|
|
});
|
|
});
|