Files
pikasTech-HWLAB/internal/agent/index.test.mjs
T
2026-05-21 14:57:00 +00:00

69 lines
2.4 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import {
AGENT_SESSION_STATUSES,
WORKER_SESSION_STATUSES,
advanceAgentSession,
advanceWorkerSession,
createAgentRunPlan,
createSkillsManifest,
finalizeAgentRun
} from "./index.mjs";
test("agent runtime run plan exposes create/start/trace/finish/cleanup", () => {
const plan = createAgentRunPlan({
agentSessionId: "agt_01J00000000000000000000000",
projectId: "prj_01J00000000000000000000000",
goal: "verify runtime skeleton",
prompt: "dry run"
});
assert.deepEqual(AGENT_SESSION_STATUSES, ["create", "start", "trace", "finish", "cleanup"]);
assert.deepEqual(WORKER_SESSION_STATUSES, ["create", "start", "trace", "finish", "cleanup"]);
assert.equal(plan.agentSession.status, "start");
assert.equal(plan.workerSession.status, "start");
assert.equal(plan.events.map((event) => event.state).join(","), "create,start,trace,finish,cleanup");
assert.equal(plan.traceEvent.message, "dry run");
assert.equal(plan.evidenceRecord.projectId, "prj_01J00000000000000000000000");
assert.equal(plan.evidenceRecord.metadata.workspaceVolumeId, "vol_agt_01J00000000000000000000000");
});
test("finalizeAgentRun marks cleanup and keeps evidence visible", () => {
const plan = createAgentRunPlan({
agentSessionId: "agt_01J00000000000000000000001",
projectId: "prj_01J00000000000000000000001",
goal: "cleanup coverage"
});
const finished = finalizeAgentRun(plan);
assert.equal(finished.agentSession.status, "cleanup");
assert.equal(finished.workerSession.status, "cleanup");
assert.equal(finished.cleanup.removed, true);
assert.ok(finished.evidenceRecord.sha256);
});
test("skills manifest requires explicit commitId", () => {
assert.throws(() => createSkillsManifest({}), /explicit commitId/);
const manifest = createSkillsManifest({ commitId: "6509a35" });
assert.equal(manifest.commitId, "6509a35");
assert.equal(manifest.services[0].serviceId, "hwlab-agent-skills");
});
test("advance helpers preserve completedAt on non-finish states", () => {
const session = {
status: "start",
completedAt: undefined,
metadata: {}
};
const agent = advanceAgentSession(session, "trace");
const worker = advanceWorkerSession(session, "trace");
assert.equal(agent.status, "trace");
assert.equal(worker.status, "trace");
assert.equal(agent.completedAt, undefined);
assert.equal(worker.completedAt, undefined);
});