69 lines
2.4 KiB
JavaScript
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);
|
|
});
|