55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { Blackboard } from "../src/blackboard/blackboard.js";
|
|
import {
|
|
CONTEXT_BRIEF_TAG,
|
|
buildBoardPanel,
|
|
compressAfterWorkerAccept,
|
|
} from "../src/runtime/compress-after-worker.js";
|
|
|
|
describe("compressAfterWorkerAccept", () => {
|
|
it("keeps finals, archives process tags, writes brief", () => {
|
|
const bb = new Blackboard();
|
|
bb.write({
|
|
tag: "设计.worker集.草稿",
|
|
content: '{ "workers": [] }',
|
|
source: "design-core",
|
|
});
|
|
bb.write({
|
|
tag: "设计.worker集",
|
|
content: '{ "workers": [{ "ref": "narrator" }] }',
|
|
source: "design-core",
|
|
});
|
|
bb.write({
|
|
tag: "用户.worker答复",
|
|
content: "过程问答……",
|
|
source: "user",
|
|
});
|
|
|
|
const result = compressAfterWorkerAccept({
|
|
blackboard: bb,
|
|
workerId: "design-core",
|
|
outputTags: ["设计.worker集", "用户.需求"],
|
|
summary: "单角代入 + 叙事",
|
|
});
|
|
|
|
expect(result.finals.map((f) => f.tag)).toContain("设计.worker集");
|
|
expect(result.archivedTags).toEqual(
|
|
expect.arrayContaining(["用户.worker答复", "设计.worker集.草稿"]),
|
|
);
|
|
expect(bb.getContentByTag(CONTEXT_BRIEF_TAG)).toContain("设计.worker集");
|
|
expect(bb.getContentByTag(CONTEXT_BRIEF_TAG)).toContain("单角代入");
|
|
|
|
const draftHits = bb.queryByPatterns(["设计.worker集.草稿"]);
|
|
expect(draftHits).toHaveLength(0);
|
|
|
|
const finalHits = bb.queryByPatterns(["设计.worker集"]);
|
|
expect(finalHits).toHaveLength(1);
|
|
expect(finalHits[0].metadata?.role).toBe("final");
|
|
|
|
const panel = buildBoardPanel(bb);
|
|
expect(panel.finals.some((f) => f.tag === "设计.worker集")).toBe(true);
|
|
expect(panel.archivedCount).toBeGreaterThanOrEqual(1);
|
|
expect(panel.brief).toContain("定稿");
|
|
});
|
|
});
|