mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
Ignore managed hide flag in history hashes
This commit is contained in:
@@ -12,6 +12,8 @@ const hideState = {
|
||||
operationVersion: 0,
|
||||
};
|
||||
|
||||
const BME_HIDE_HASH_MARKER = "__st_bme_hide_managed";
|
||||
|
||||
function getTimerApi(runtime = {}) {
|
||||
const rawSetTimeout =
|
||||
typeof runtime.setTimeout === "function"
|
||||
@@ -179,6 +181,12 @@ function restoreManagedSystemFlags(chat, runtime = {}) {
|
||||
const message = chat[index];
|
||||
if (!message || message.is_system !== true) continue;
|
||||
message.is_system = false;
|
||||
if (message.extra && typeof message.extra === "object") {
|
||||
delete message.extra[BME_HIDE_HASH_MARKER];
|
||||
if (Object.keys(message.extra).length === 0) {
|
||||
delete message.extra;
|
||||
}
|
||||
}
|
||||
restored.push(index);
|
||||
}
|
||||
|
||||
@@ -195,6 +203,10 @@ function markManagedSystemRange(chat, start, end, runtime = {}) {
|
||||
const message = chat[index];
|
||||
if (!message || message.is_system === true) continue;
|
||||
message.is_system = true;
|
||||
const extra =
|
||||
message.extra && typeof message.extra === "object" ? message.extra : {};
|
||||
extra[BME_HIDE_HASH_MARKER] = true;
|
||||
message.extra = extra;
|
||||
hideState.managedSystemIndices.add(index);
|
||||
marked.push(index);
|
||||
}
|
||||
|
||||
@@ -208,10 +208,15 @@ export function stableHashString(text) {
|
||||
}
|
||||
|
||||
export function buildMessageHash(message) {
|
||||
const managedHideMarker = Boolean(
|
||||
message?.extra &&
|
||||
typeof message.extra === "object" &&
|
||||
message.extra.__st_bme_hide_managed === true,
|
||||
);
|
||||
const swipeId = Number.isFinite(message?.swipe_id) ? message.swipe_id : null;
|
||||
const payload = JSON.stringify({
|
||||
isUser: Boolean(message?.is_user),
|
||||
isSystem: Boolean(message?.is_system),
|
||||
isSystem: managedHideMarker ? false : Boolean(message?.is_system),
|
||||
text: String(message?.mes || ""),
|
||||
swipeId,
|
||||
});
|
||||
|
||||
@@ -51,6 +51,24 @@ const editedDetection = detectHistoryMutation(editedChat, {
|
||||
assert.equal(editedDetection.dirty, true);
|
||||
assert.equal(editedDetection.earliestAffectedFloor, 1);
|
||||
|
||||
const bmeHiddenChat = structuredClone(chat);
|
||||
bmeHiddenChat[1].is_system = true;
|
||||
bmeHiddenChat[1].extra = { __st_bme_hide_managed: true };
|
||||
const bmeHiddenDetection = detectHistoryMutation(bmeHiddenChat, {
|
||||
lastProcessedAssistantFloor: 3,
|
||||
processedMessageHashes: hashes,
|
||||
});
|
||||
assert.equal(bmeHiddenDetection.dirty, false);
|
||||
|
||||
const realSystemFlipChat = structuredClone(chat);
|
||||
realSystemFlipChat[1].is_system = true;
|
||||
const realSystemFlipDetection = detectHistoryMutation(realSystemFlipChat, {
|
||||
lastProcessedAssistantFloor: 3,
|
||||
processedMessageHashes: hashes,
|
||||
});
|
||||
assert.equal(realSystemFlipDetection.dirty, true);
|
||||
assert.equal(realSystemFlipDetection.earliestAffectedFloor, 1);
|
||||
|
||||
const truncatedChat = chat.slice(0, 2);
|
||||
const truncatedDetection = detectHistoryMutation(truncatedChat, {
|
||||
lastProcessedAssistantFloor: 3,
|
||||
|
||||
Reference in New Issue
Block a user