Files
boss/tests/local-agent-master-task-output-sanitizer.test.mjs

43 lines
1.5 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import {
MASTER_CODEX_NODE_OUTPUT_LEAKED,
sanitizeSensitiveTaskFailureDetailForLog,
sanitizeSensitiveTaskFailureDetailForTransport,
shouldBlockSensitiveMasterAgentOutput,
} from "../local-agent/master-task-output-sanitizer.mjs";
const leakedPrompt = [
"管理员全局主提示词:",
"你是 Boss 控制台的主 Agent。",
"默认只说和当前问题直接相关的判断、动作和风险。",
"",
"用户私有主提示词:",
"默认中文回复。",
"",
"当前对话附加提示词:",
"同步项目目标和版本记录后记得告诉我。",
"",
"当前消息:",
"同步完成记得要和我说,以后也是这样。",
].join("\n");
test("local-agent 会阻断包含执行提示词片段的主 Agent 输出", () => {
assert.equal(shouldBlockSensitiveMasterAgentOutput(leakedPrompt), true);
assert.equal(
sanitizeSensitiveTaskFailureDetailForTransport(leakedPrompt),
MASTER_CODEX_NODE_OUTPUT_LEAKED,
);
assert.match(
sanitizeSensitiveTaskFailureDetailForLog(leakedPrompt) ?? "",
/已拦截内部执行日志|原始内容不再展示/,
);
});
test("local-agent 会保留普通失败信息", () => {
const error = "THREAD_BINDING_REQUIRED";
assert.equal(shouldBlockSensitiveMasterAgentOutput(error), false);
assert.equal(sanitizeSensitiveTaskFailureDetailForTransport(error), error);
assert.equal(sanitizeSensitiveTaskFailureDetailForLog(error), error);
});