Files
openclaw/src/agents/system-prompt-cache-boundary.test.ts
Vincent Koc d75a8933e7 fix(agents): stabilize prompt cache fingerprints (#60731)
* fix(agents): stabilize prompt cache fingerprints

* chore(changelog): note prompt cache fingerprint stability

* refactor(agents): simplify capability normalization

* refactor(agents): simplify prompt capability normalization helper
2026-04-04 16:20:36 +09:00

45 lines
1.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
prependSystemPromptAdditionAfterCacheBoundary,
splitSystemPromptCacheBoundary,
stripSystemPromptCacheBoundary,
SYSTEM_PROMPT_CACHE_BOUNDARY,
} from "./system-prompt-cache-boundary.js";
describe("system prompt cache boundary helpers", () => {
it("splits stable and dynamic prompt regions", () => {
expect(
splitSystemPromptCacheBoundary(`Stable prefix${SYSTEM_PROMPT_CACHE_BOUNDARY}Dynamic suffix`),
).toEqual({
stablePrefix: "Stable prefix",
dynamicSuffix: "Dynamic suffix",
});
});
it("strips the internal marker from prompt text", () => {
expect(
stripSystemPromptCacheBoundary(`Stable prefix${SYSTEM_PROMPT_CACHE_BOUNDARY}Dynamic suffix`),
).toBe("Stable prefix\nDynamic suffix");
});
it("inserts prompt additions after the cache boundary", () => {
expect(
prependSystemPromptAdditionAfterCacheBoundary({
systemPrompt: `Stable prefix${SYSTEM_PROMPT_CACHE_BOUNDARY}Dynamic suffix`,
systemPromptAddition: "Per-turn lab context",
}),
).toBe(`Stable prefix${SYSTEM_PROMPT_CACHE_BOUNDARY}Per-turn lab context\n\nDynamic suffix`);
});
it("normalizes structured additions and dynamic suffix whitespace", () => {
expect(
prependSystemPromptAdditionAfterCacheBoundary({
systemPrompt: `Stable prefix${SYSTEM_PROMPT_CACHE_BOUNDARY}Dynamic suffix \r\n\r\nMore detail \t\r\n`,
systemPromptAddition: " Per-turn lab context \r\nSecond line\t\r\n",
}),
).toBe(
`Stable prefix${SYSTEM_PROMPT_CACHE_BOUNDARY}Per-turn lab context\nSecond line\n\nDynamic suffix\n\nMore detail`,
);
});
});