62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
AGENT_MODELS,
|
|
DEFAULT_AGENT_MODEL_ID,
|
|
getAgentModel,
|
|
getAvailableAgentModels,
|
|
isAgentModelAvailableForTier,
|
|
} from "@/lib/agent-models";
|
|
import { NODE_DEFAULTS } from "@/lib/canvas-utils";
|
|
|
|
describe("agent models registry", () => {
|
|
it("contains approved models in stable order", () => {
|
|
expect(Object.keys(AGENT_MODELS)).toEqual([
|
|
"openai/gpt-5.4-nano",
|
|
"openai/gpt-5.4-mini",
|
|
"openai/gpt-5.4",
|
|
"openai/gpt-5.4-pro",
|
|
]);
|
|
expect(DEFAULT_AGENT_MODEL_ID).toBe("openai/gpt-5.4-mini");
|
|
});
|
|
|
|
it("resolves model lookup and pricing", () => {
|
|
expect(getAgentModel("openai/gpt-5.4-nano")?.creditCost).toBe(6);
|
|
expect(getAgentModel("openai/gpt-5.4-mini")?.creditCost).toBe(15);
|
|
expect(getAgentModel("openai/gpt-5.4")?.creditCost).toBe(38);
|
|
expect(getAgentModel("openai/gpt-5.4-pro")?.creditCost).toBe(180);
|
|
expect(getAgentModel("unknown-model")).toBeUndefined();
|
|
});
|
|
|
|
it("filters models by tier", () => {
|
|
expect(getAvailableAgentModels("free").map((model) => model.id)).toEqual([]);
|
|
expect(getAvailableAgentModels("starter").map((model) => model.id)).toEqual([
|
|
"openai/gpt-5.4-nano",
|
|
"openai/gpt-5.4-mini",
|
|
"openai/gpt-5.4",
|
|
]);
|
|
expect(getAvailableAgentModels("max").map((model) => model.id)).toEqual([
|
|
"openai/gpt-5.4-nano",
|
|
"openai/gpt-5.4-mini",
|
|
"openai/gpt-5.4",
|
|
"openai/gpt-5.4-pro",
|
|
]);
|
|
});
|
|
|
|
it("guards access by tier", () => {
|
|
expect(isAgentModelAvailableForTier("starter", "openai/gpt-5.4")).toBe(true);
|
|
expect(isAgentModelAvailableForTier("starter", "openai/gpt-5.4-pro")).toBe(false);
|
|
expect(isAgentModelAvailableForTier("max", "openai/gpt-5.4-pro")).toBe(true);
|
|
});
|
|
|
|
it("uses the registry default in agent node defaults", () => {
|
|
expect(NODE_DEFAULTS.agent?.data).toMatchObject({
|
|
templateId: "campaign-distributor",
|
|
modelId: DEFAULT_AGENT_MODEL_ID,
|
|
clarificationQuestions: [],
|
|
clarificationAnswers: {},
|
|
outputNodeIds: [],
|
|
});
|
|
});
|
|
});
|