Files
boss/local-agent/health-summary.test.mjs
2026-06-08 12:22:50 +08:00

58 lines
1.9 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { buildLocalAgentHealthSummary } from "./health-summary.mjs";
test("buildLocalAgentHealthSummary excludes heavy runtime bodies and secrets", () => {
const summary = buildLocalAgentHealthSummary(
{
deviceId: "mac-studio",
token: "secret-token",
},
{
lastHeartbeatAt: "2026-06-07T01:00:00.000Z",
lastHeartbeatOk: true,
lastHeartbeatStatus: 200,
lastHeartbeatBody: JSON.stringify({ large: "body", token: "secret-token" }),
masterTaskBusy: true,
activeMasterTask: {
taskId: "task-1",
status: "running",
detail: "very sensitive long detail",
},
lastMasterTaskPoll: {
at: "2026-06-07T01:00:01.000Z",
ok: true,
status: 200,
body: JSON.stringify({ task: { prompt: "internal prompt" } }),
},
lastSkillSyncBody: "skill body",
lastReliableOutboxReplay: {
attempted: 3,
sent: 2,
retained: 1,
stoppedByBudget: true,
},
lastSkills: [{ name: "a" }, { name: "b" }],
codexAppServerCapabilityMetadata: {
huge: "metadata",
},
codexAppServerCapabilityMetadataError: "temporary error",
},
);
const encoded = JSON.stringify(summary);
assert.equal(summary.ok, true);
assert.equal(summary.deviceId, "mac-studio");
assert.equal(summary.masterTask.busy, true);
assert.equal(summary.masterTask.active.taskId, "task-1");
assert.equal(summary.outbox.retained, 1);
assert.equal(summary.skills.count, 2);
assert.equal(encoded.includes("secret-token"), false);
assert.equal(encoded.includes("internal prompt"), false);
assert.equal(encoded.includes("very sensitive long detail"), false);
assert.equal(encoded.includes("lastHeartbeatBody"), false);
assert.equal(encoded.includes("lastMasterTaskPoll"), false);
assert.equal(encoded.includes("codexAppServerCapabilityMetadata"), false);
});