Files
Jyotisha/frontend/tests/agent-generation-settings.test.ts
T
2026-08-31 09:59:53 +08:00

46 lines
1.7 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
cachedSystemMessage,
mergePromptCacheUsage,
promptCacheUsage,
} from "../src/lib/agent-generation-settings.ts";
test("normalizes AI SDK cache token details", () => {
assert.deepEqual(promptCacheUsage({
inputTokenDetails: { cacheReadTokens: 120, cacheWriteTokens: 30, noCacheTokens: 10 },
}), { readTokens: 120, writeTokens: 30, noCacheTokens: 10 });
});
test("normalizes OpenAI and legacy cache usage", () => {
assert.deepEqual(promptCacheUsage({ prompt_tokens_details: { cached_tokens: 45 } }), {
readTokens: 45,
writeTokens: 0,
noCacheTokens: 0,
});
assert.deepEqual(promptCacheUsage({ cachedInputTokens: 12, cacheCreationInputTokens: 8 }), {
readTokens: 12,
writeTokens: 8,
noCacheTokens: 0,
});
});
test("merges cache usage and only reports a hit when reads exist", () => {
assert.deepEqual(mergePromptCacheUsage([
{ readTokens: 4, writeTokens: 5, noCacheTokens: 6 },
{ readTokens: 7, writeTokens: 0, noCacheTokens: 1 },
]), { readTokens: 11, writeTokens: 5, noCacheTokens: 7 });
assert.equal(promptCacheUsage({ inputTokenDetails: { cacheWriteTokens: 5 } })?.readTokens, 0);
assert.equal(promptCacheUsage({ inputTokenDetails: { cacheReadTokens: 5 } })?.readTokens, 5);
});
test("adds an Anthropic cache boundary and safely degrades for other providers", () => {
assert.deepEqual(cachedSystemMessage("stable", "anthropic/claude-sonnet"), {
role: "system",
content: "stable",
providerOptions: { anthropic: { cacheControl: { type: "ephemeral" } } },
});
assert.equal(cachedSystemMessage("stable", "openai/gpt-5"), null);
assert.equal(cachedSystemMessage("stable", { providerId: "deepseek" }), null);
});