File size: 2,519 Bytes
fc93158 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | import { describe, expect, it } from "vitest";
import { stripAssistantInternalScaffolding } from "./assistant-visible-text.js";
describe("stripAssistantInternalScaffolding", () => {
it("strips reasoning tags", () => {
const input = ["<thinking>", "secret", "</thinking>", "Visible"].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe("Visible");
});
it("strips relevant-memories scaffolding blocks", () => {
const input = [
"<relevant-memories>",
"The following memories may be relevant to this conversation:",
"- Internal memory note",
"</relevant-memories>",
"",
"User-visible answer",
].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe("User-visible answer");
});
it("supports relevant_memories tag variants", () => {
const input = [
"<relevant_memories>",
"Internal memory note",
"</relevant_memories>",
"Visible",
].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe("Visible");
});
it("keeps relevant-memories tags inside fenced code", () => {
const input = [
"```xml",
"<relevant-memories>",
"sample",
"</relevant-memories>",
"```",
"",
"Visible text",
].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe(input);
});
it("keeps relevant-memories tags inside inline code", () => {
const input = "Use `<relevant-memories>example</relevant-memories>` literally.";
expect(stripAssistantInternalScaffolding(input)).toBe(input);
});
it("hides unfinished relevant-memories blocks", () => {
const input = ["Hello", "<relevant-memories>", "internal-only"].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe("Hello\n");
});
it("trims leading whitespace after stripping scaffolding", () => {
const input = [
"<thinking>",
"secret",
"</thinking>",
" ",
"<relevant-memories>",
"internal note",
"</relevant-memories>",
" Visible",
].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe("Visible");
});
it("preserves unfinished reasoning text while still stripping memory blocks", () => {
const input = [
"Before",
"<thinking>",
"secret",
"<relevant-memories>",
"internal note",
"</relevant-memories>",
"After",
].join("\n");
expect(stripAssistantInternalScaffolding(input)).toBe("Before\n\nsecret\n\nAfter");
});
});
|