Files
writing-agent/tests/snapshot-filters.test.ts
2026-07-10 08:31:27 +08:00

59 lines
2.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
filterBlackboardForInstance,
isRunPhaseBlackboardTag,
materializeInstanceSnapshotPayload,
} from "../src/book/snapshot-filters.js";
import { createSession } from "../src/runtime/phase-machine.js";
describe("snapshot-filters", () => {
it("keeps instance tags, strips run tags", () => {
expect(isRunPhaseBlackboardTag("情境.实验.设定")).toBe(false);
expect(isRunPhaseBlackboardTag("角色.A.设定")).toBe(false);
expect(isRunPhaseBlackboardTag("博弈.规则.草稿")).toBe(false);
expect(isRunPhaseBlackboardTag("运行.事件流")).toBe(true);
expect(isRunPhaseBlackboardTag("角色.A.思考")).toBe(true);
expect(isRunPhaseBlackboardTag("世界.当前状态")).toBe(true);
});
it("materializeInstanceSnapshotPayload removes run blackboard items", () => {
const session = createSession("default");
session.slots.startupCompleted = true;
session.artifacts = [
{
id: "a1",
workerId: "setup-scenario",
outputTags: ["情境.实验.设定"],
status: "accepted",
createdAt: "",
updatedAt: "",
},
{
id: "a2",
workerId: "world-engine",
outputTags: ["运行.事件流"],
status: "accepted",
createdAt: "",
updatedAt: "",
},
];
const { blackboardItems, runtimeSession } = materializeInstanceSnapshotPayload({
runtimeSession: session,
blackboardItems: [
{ id: "1", tag: "情境.实验.设定", content: "x", source: "worker", createdAt: "", updatedAt: "" },
{ id: "2", tag: "运行.事件流", content: "y", source: "worker", createdAt: "", updatedAt: "" },
{ id: "3", tag: "角色.A.设定", content: "z", source: "worker", createdAt: "", updatedAt: "" },
],
});
expect(blackboardItems.map((i) => i.tag).sort()).toEqual([
"情境.实验.设定",
"角色.A.设定",
]);
expect(runtimeSession.artifacts).toHaveLength(1);
expect(runtimeSession.artifacts[0].workerId).toBe("setup-scenario");
expect(filterBlackboardForInstance).toBeDefined();
});
});