43 lines
1.5 KiB
JavaScript
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);
|
|
});
|