mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
Preserve hidden context for extraction
This commit is contained in:
68
tests/chat-history.mjs
Normal file
68
tests/chat-history.mjs
Normal file
@@ -0,0 +1,68 @@
|
||||
import assert from "node:assert/strict";
|
||||
import {
|
||||
buildExtractionMessages,
|
||||
getAssistantTurns,
|
||||
isAssistantChatMessage,
|
||||
isBmeManagedHiddenMessage,
|
||||
isSystemMessageForExtraction,
|
||||
} from "../chat-history.js";
|
||||
|
||||
const visibleAssistant = {
|
||||
is_user: false,
|
||||
is_system: false,
|
||||
mes: "visible assistant",
|
||||
};
|
||||
assert.equal(isAssistantChatMessage(visibleAssistant), true);
|
||||
|
||||
const managedHiddenAssistant = {
|
||||
is_user: false,
|
||||
is_system: true,
|
||||
mes: "managed hidden assistant",
|
||||
extra: { __st_bme_hide_managed: true },
|
||||
};
|
||||
assert.equal(isBmeManagedHiddenMessage(managedHiddenAssistant), true);
|
||||
assert.equal(isSystemMessageForExtraction(managedHiddenAssistant), false);
|
||||
assert.equal(isAssistantChatMessage(managedHiddenAssistant), true);
|
||||
|
||||
const realSystemMessage = {
|
||||
is_user: false,
|
||||
is_system: true,
|
||||
mes: "real system",
|
||||
};
|
||||
assert.equal(isSystemMessageForExtraction(realSystemMessage), true);
|
||||
assert.equal(isAssistantChatMessage(realSystemMessage), false);
|
||||
|
||||
const chat = [
|
||||
{ is_user: false, is_system: true, mes: "greeting/system" },
|
||||
{ is_user: true, is_system: false, mes: "user-1" },
|
||||
managedHiddenAssistant,
|
||||
{ is_user: true, is_system: false, mes: "user-2" },
|
||||
visibleAssistant,
|
||||
realSystemMessage,
|
||||
];
|
||||
|
||||
assert.deepEqual(
|
||||
getAssistantTurns(chat),
|
||||
[2, 4],
|
||||
"managed hidden assistant floors should still be extractable assistant turns",
|
||||
);
|
||||
|
||||
const extractionMessages = buildExtractionMessages(chat, 4, 4, {
|
||||
extractContextTurns: 2,
|
||||
});
|
||||
assert.deepEqual(
|
||||
extractionMessages.map((message) => ({
|
||||
seq: message.seq,
|
||||
role: message.role,
|
||||
content: message.content,
|
||||
})),
|
||||
[
|
||||
{ seq: 1, role: "user", content: "user-1" },
|
||||
{ seq: 2, role: "assistant", content: "managed hidden assistant" },
|
||||
{ seq: 3, role: "user", content: "user-2" },
|
||||
{ seq: 4, role: "assistant", content: "visible assistant" },
|
||||
],
|
||||
"extraction should keep BME-managed hidden context but still skip real system messages",
|
||||
);
|
||||
|
||||
console.log("chat-history tests passed");
|
||||
Reference in New Issue
Block a user