Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { describe, expect, it } from "vitest";
import {
extractText,
extractTextCached,
extractThinking,
extractThinkingCached,
} from "./message-extract.ts";
describe("extractTextCached", () => {
it("matches extractText output", () => {
const message = {
role: "assistant",
content: [{ type: "text", text: "Hello there" }],
};
expect(extractTextCached(message)).toBe(extractText(message));
});
it("returns consistent output for repeated calls", () => {
const message = {
role: "user",
content: "plain text",
};
expect(extractTextCached(message)).toBe("plain text");
expect(extractTextCached(message)).toBe("plain text");
});
it("strips assistant relevant-memories scaffolding", () => {
const message = {
role: "assistant",
content: [
{
type: "text",
text: [
"<relevant-memories>",
"Internal memory context",
"</relevant-memories>",
"Final user answer",
].join("\n"),
},
],
};
expect(extractText(message)).toBe("Final user answer");
expect(extractTextCached(message)).toBe("Final user answer");
});
it("prefers final_answer assistant text over commentary text", () => {
const message = {
role: "assistant",
content: [
{
type: "text",
text: "thinking like caveman",
textSignature: JSON.stringify({ v: 1, id: "msg_commentary", phase: "commentary" }),
},
{
type: "text",
text: "Actual final answer",
textSignature: JSON.stringify({ v: 1, id: "msg_final", phase: "final_answer" }),
},
],
};
expect(extractText(message)).toBe("Actual final answer");
expect(extractTextCached(message)).toBe("Actual final answer");
});
it("does not render commentary-only assistant text", () => {
const message = {
role: "assistant",
content: [
{
type: "text",
text: "thinking like caveman",
textSignature: JSON.stringify({ v: 1, id: "msg_commentary", phase: "commentary" }),
},
],
};
expect(extractText(message)).toBeNull();
expect(extractTextCached(message)).toBeNull();
});
it("strips internal runtime context blocks from user text", () => {
const message = {
role: "user",
content: [
{
type: "text",
text: [
"<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>",
"internal subagent payload",
"<<<END_OPENCLAW_INTERNAL_CONTEXT>>>",
"",
"visible ask",
].join("\n"),
},
],
};
expect(extractText(message)).toBe("visible ask");
expect(extractTextCached(message)).toBe("visible ask");
});
});
describe("extractThinkingCached", () => {
it("matches extractThinking output", () => {
const message = {
role: "assistant",
content: [{ type: "thinking", thinking: "Plan A" }],
};
expect(extractThinkingCached(message)).toBe(extractThinking(message));
});
it("returns consistent output for repeated calls", () => {
const message = {
role: "assistant",
content: [{ type: "thinking", thinking: "Plan A" }],
};
expect(extractThinkingCached(message)).toBe("Plan A");
expect(extractThinkingCached(message)).toBe("Plan A");
});
});
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland
|
|