Files
boss/tests/browser-desktop-control-summary-message.test.ts

140 lines
4.9 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 appendProjectMessages: (typeof import("../src/lib/boss-data"))["appendProjectMessages"];
let completeMasterAgentTask: (typeof import("../src/lib/boss-data"))["completeMasterAgentTask"];
let queueMasterAgentTask: (typeof import("../src/lib/boss-data"))["queueMasterAgentTask"];
let readState: (typeof import("../src/lib/boss-data"))["readState"];
async function setup() {
if (runtimeRoot) return;
runtimeRoot = await mkdtemp(path.join(os.tmpdir(), "boss-control-summary-task-"));
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");
appendProjectMessages = data.appendProjectMessages;
completeMasterAgentTask = data.completeMasterAgentTask;
queueMasterAgentTask = data.queueMasterAgentTask;
readState = data.readState;
}
test.after(async () => {
if (runtimeRoot) {
await rm(runtimeRoot, { recursive: true, force: true });
}
});
test("completed browser control task mirrors a control summary message into master-agent conversation", async () => {
await setup();
const [requestMessage] = await appendProjectMessages({
projectId: "master-agent",
messages: [
{
senderLabel: "Boss 超级管理员",
body: "打开 https://example.com 看一下首页",
kind: "text",
},
],
});
const task = await queueMasterAgentTask({
projectId: "master-agent",
taskType: "browser_control",
requestMessageId: requestMessage.id,
requestText: "打开 https://example.com 看一下首页",
requestedBy: "Boss 超级管理员",
requestedByAccount: "krisolo",
deviceId: "mac-studio",
accountId: "openai-master",
accountLabel: "gpt-5.4-mini",
intentCategory: "browser_control",
runtimeKind: "browser-automation-runtime",
riskLevel: "medium",
confirmationPolicy: "light_confirm",
requiresUserConfirmation: true,
confirmationScopeKey: "mac-studio:master-agent",
});
await completeMasterAgentTask({
taskId: task.taskId,
deviceId: "mac-studio",
status: "completed",
replyBody: "浏览器控制已完成:打开 https://example.com 看一下首页",
targetUrl: "https://example.com",
});
const state = await readState();
const project = state.projects.find((item) => item.id === "master-agent");
const controlSummary = project?.messages.find((message) =>
message.kind === "control_summary" &&
message.body === "浏览器控制已完成:打开 https://example.com 看一下首页"
);
assert.ok(controlSummary);
assert.equal(controlSummary?.sender, "master");
assert.equal(controlSummary?.senderLabel, "主 Agent · gpt-5.4-mini");
assert.equal(controlSummary?.body, "浏览器控制已完成:打开 https://example.com 看一下首页");
assert.equal((controlSummary as { controlTarget?: string }).controlTarget, "https://example.com");
});
test("completed desktop control task mirrors a control summary message into master-agent conversation", async () => {
await setup();
const [requestMessage] = await appendProjectMessages({
projectId: "master-agent",
messages: [
{
senderLabel: "Boss 超级管理员",
body: "打开微信并准备切到聊天窗口",
kind: "text",
},
],
});
const task = await queueMasterAgentTask({
projectId: "master-agent",
taskType: "desktop_control",
requestMessageId: requestMessage.id,
requestText: "打开微信并准备切到聊天窗口",
requestedBy: "Boss 超级管理员",
requestedByAccount: "krisolo",
deviceId: "mac-studio",
accountId: "openai-master",
accountLabel: "gpt-5.4-mini",
intentCategory: "desktop_control",
runtimeKind: "computer-use-runtime",
riskLevel: "medium",
confirmationPolicy: "light_confirm",
requiresUserConfirmation: true,
confirmationScopeKey: "mac-studio:master-agent",
});
await completeMasterAgentTask({
taskId: task.taskId,
deviceId: "mac-studio",
status: "completed",
replyBody: "桌面控制已完成:打开微信并准备切到聊天窗口",
targetApp: "微信",
});
const state = await readState();
const project = state.projects.find((item) => item.id === "master-agent");
const controlSummary = project?.messages.find((message) =>
message.kind === "control_summary" &&
message.body === "桌面控制已完成:打开微信并准备切到聊天窗口"
);
assert.ok(controlSummary);
assert.equal(controlSummary?.sender, "master");
assert.equal(controlSummary?.senderLabel, "主 Agent · gpt-5.4-mini");
assert.equal(controlSummary?.body, "桌面控制已完成:打开微信并准备切到聊天窗口");
assert.equal((controlSummary as { controlTarget?: string }).controlTarget, "微信");
});