Files
boss/tests/master-agent-memory-ingestion.test.ts

60 lines
2.3 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import os from "node:os";
import path from "node:path";
import { mkdtemp, rm } from "node:fs/promises";
let runtimeRoot = "";
let queueMasterAgentTask: (typeof import("../src/lib/boss-data"))["queueMasterAgentTask"];
let completeMasterAgentTask: (typeof import("../src/lib/boss-data"))["completeMasterAgentTask"];
let listUserMasterMemories: (typeof import("../src/lib/boss-data"))["listUserMasterMemories"];
async function setup() {
if (runtimeRoot) return;
runtimeRoot = await mkdtemp(path.join(os.tmpdir(), "boss-master-agent-memory-ingestion-"));
process.env.BOSS_RUNTIME_ROOT = runtimeRoot;
process.env.BOSS_STATE_FILE = path.join(runtimeRoot, "boss-state.json");
const data = await import("../src/lib/boss-data.ts");
queueMasterAgentTask = data.queueMasterAgentTask;
completeMasterAgentTask = data.completeMasterAgentTask;
listUserMasterMemories = data.listUserMasterMemories;
}
test.after(async () => {
if (runtimeRoot) {
await rm(runtimeRoot, { recursive: true, force: true });
}
});
test("主 Agent 完成对话后会自动沉淀用户偏好和项目记忆", async () => {
await setup();
const task = await queueMasterAgentTask({
projectId: "master-agent",
requestMessageId: "msg-user-1",
requestText: "boss 项目后续都按微信式交互来做,并且默认中文回复。",
executionPrompt: "prompt",
requestedBy: "17600003315",
requestedByAccount: "17600003315",
deviceId: "master-agent-openai",
});
await completeMasterAgentTask({
taskId: task.taskId,
deviceId: "master-agent-openai",
status: "completed",
replyBody: "boss 项目当前进度已更新:会话页会继续按微信式交互推进。",
});
const memories = await listUserMasterMemories("17600003315", { includeArchived: false });
const globalMemory = memories.find((memory) => memory.scope === "global");
const projectMemory = memories.find((memory) => memory.scope === "project" && memory.projectId === "boss-console");
assert.ok(globalMemory, "expected a global user memory");
assert.ok(projectMemory, "expected a project-scoped memory");
assert.match(globalMemory?.content ?? "", /微信式交互|中文回复/);
assert.match(projectMemory?.content ?? "", /boss 项目当前进度已更新/);
});