Files
pikasTech-HWLAB/tools/hwlab-cli/agent-observer.test.ts
T
2026-07-16 05:20:29 +02:00

40 lines
1.7 KiB
TypeScript

import assert from "node:assert/strict";
import { test } from "bun:test";
import { collectAgentObserverRuns } from "../src/hwlab-cli/agent-observer-client.ts";
test("agent observer CLI collects unscoped Artificer runs through retention-to-live SSE", async () => {
const envelope = {
schema: "hwlab.event.v1",
runId: "run_artificer_test",
sessionId: "sess_artificer_test",
producedAt: "2026-07-16T02:24:51.000Z",
context: { projectId: "pikainc/pikaoa", runId: "run_artificer_test" },
event: { runId: "run_artificer_test", lane: "release", backend: "gpt-pika", runStatus: "running", createdAt: "2026-07-16T02:24:50.000Z" }
};
const frames = [
`event: hwlab.event.v1\ndata: ${JSON.stringify(envelope)}\n\n`,
`event: agent-observer.handoff\ndata: ${JSON.stringify({ replay: { scannedCount: 12, deliveredCount: 1 } })}\n\n`,
`event: agent-observer.connected\ndata: ${JSON.stringify({ replay: { scannedCount: 12, deliveredCount: 1 } })}\n\n`
].join("");
let authorization = "";
const result = await collectAgentObserverRuns({
fetchImpl: async (_url, init) => {
authorization = new Headers(init?.headers).get("authorization") ?? "";
return new Response(frames, { status: 200, headers: { "content-type": "text/event-stream" } });
},
url: "https://lab-dev.hwpod.com/v1/agent-observer/events",
apiKey: "hwl_live_test_only",
timeoutMs: 1000,
limit: 20
});
assert.equal(authorization, "Bearer hwl_live_test_only");
assert.equal(result.phase, "live");
assert.equal(result.eventCount, 1);
assert.equal(result.runCount, 1);
assert.equal(result.runs[0].runId, "run_artificer_test");
assert.equal(result.runs[0].lane, "release");
assert.equal(result.runs[0].backend, "gpt-pika");
});