mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-06-13 18:31:16 +08:00
103 lines
2.6 KiB
JavaScript
103 lines
2.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import {
|
|
classifyGenerationKind,
|
|
createGenerationContextTracker,
|
|
} from "../runtime/generation-context.js";
|
|
|
|
assert.equal(classifyGenerationKind("normal"), "fresh");
|
|
assert.equal(classifyGenerationKind("swipe"), "no-new-user");
|
|
assert.equal(classifyGenerationKind("regenerate"), "no-new-user");
|
|
assert.equal(classifyGenerationKind("continue"), "no-new-user");
|
|
assert.equal(classifyGenerationKind("quiet"), "skip");
|
|
assert.equal(classifyGenerationKind("impersonate"), "skip");
|
|
assert.equal(classifyGenerationKind("normal", { automatic_trigger: true }), "skip");
|
|
assert.equal(classifyGenerationKind("normal", { quiet_prompt: true }), "skip");
|
|
|
|
{
|
|
let chatId = "chat-swipe";
|
|
let now = 1000;
|
|
const tracker = createGenerationContextTracker({
|
|
getCurrentChatId: () => chatId,
|
|
now: () => now,
|
|
});
|
|
|
|
tracker.noteSwipe(7);
|
|
const context = tracker.begin("swipe");
|
|
|
|
assert.equal(context.type, "swipe");
|
|
assert.equal(context.kind, "no-new-user");
|
|
assert.equal(context.swipedAssistantFloor, 7);
|
|
assert.equal(context.chatId, chatId);
|
|
}
|
|
|
|
{
|
|
let chatId = "chat-dry-run";
|
|
let now = 2000;
|
|
const tracker = createGenerationContextTracker({
|
|
getCurrentChatId: () => chatId,
|
|
now: () => now,
|
|
});
|
|
|
|
const original = tracker.begin("normal", { existing: true });
|
|
assert.equal(tracker.begin("swipe", {}, { dryRun: true }), null);
|
|
assert.deepEqual(tracker.get(), original);
|
|
|
|
now += 1;
|
|
assert.equal(tracker.update("regenerate", {}, { dryRun: true }), null);
|
|
assert.deepEqual(tracker.get(), original);
|
|
}
|
|
|
|
{
|
|
let chatId = "chat-update";
|
|
let now = 3000;
|
|
const tracker = createGenerationContextTracker({
|
|
getCurrentChatId: () => chatId,
|
|
now: () => now,
|
|
});
|
|
|
|
tracker.begin("regenerate");
|
|
now += 25;
|
|
const context = tracker.update(
|
|
"regenerate",
|
|
{},
|
|
{ phase: "GENERATION_AFTER_COMMANDS" },
|
|
);
|
|
|
|
assert.equal(context.type, "regenerate");
|
|
assert.equal(context.kind, "no-new-user");
|
|
assert.equal(context.afterCommandsAt, now);
|
|
}
|
|
|
|
{
|
|
let chatId = "chat-ttl";
|
|
let now = 4000;
|
|
const tracker = createGenerationContextTracker({
|
|
getCurrentChatId: () => chatId,
|
|
now: () => now,
|
|
ttlMs: 10,
|
|
});
|
|
|
|
tracker.begin("normal");
|
|
now += 11;
|
|
|
|
assert.equal(tracker.get(), null);
|
|
assert.equal(tracker.get({ allowStale: true }), null);
|
|
}
|
|
|
|
{
|
|
let chatId = "chat-original";
|
|
let now = 5000;
|
|
const tracker = createGenerationContextTracker({
|
|
getCurrentChatId: () => chatId,
|
|
now: () => now,
|
|
});
|
|
|
|
tracker.begin("normal");
|
|
chatId = "chat-current";
|
|
|
|
assert.equal(tracker.get(), null);
|
|
|
|
chatId = "chat-original";
|
|
assert.equal(tracker.get(), null);
|
|
}
|