openskynet / src /skynet /runtime-observer /live-event-store.test.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import fs from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { afterEach, describe, expect, it } from "vitest";
import {
acquireSkynetRuntimeObserverLiveLock,
appendSkynetRuntimeObserverLiveObservation,
releaseSkynetRuntimeObserverLiveLock,
resolveSkynetRuntimeObserverLiveJsonlPath,
} from "./live-event-store.js";
const cleanupDirs: string[] = [];
afterEach(async () => {
await Promise.all(
cleanupDirs.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true })),
);
});
describe("runtime observer live event store", () => {
it("acquires and releases a lock", async () => {
const workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openskynet-live-tap-"));
cleanupDirs.push(workspaceRoot);
const lockPath = await acquireSkynetRuntimeObserverLiveLock({
workspaceRoot,
sessionKey: "agent:openskynet:main",
});
await expect(
acquireSkynetRuntimeObserverLiveLock({
workspaceRoot,
sessionKey: "agent:openskynet:main",
}),
).rejects.toThrow(/already active/);
await releaseSkynetRuntimeObserverLiveLock(lockPath);
await expect(
acquireSkynetRuntimeObserverLiveLock({
workspaceRoot,
sessionKey: "agent:openskynet:main",
}),
).resolves.toContain(".lock");
});
it("appends observations as jsonl", async () => {
const workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openskynet-live-tap-"));
cleanupDirs.push(workspaceRoot);
await appendSkynetRuntimeObserverLiveObservation({
workspaceRoot,
sessionKey: "agent:openskynet:main",
observation: {
source: "gateway",
event: "sessions.changed",
recordedAt: 123,
sessionKey: "agent:main:main",
phase: "start",
},
});
const jsonlPath = resolveSkynetRuntimeObserverLiveJsonlPath({
workspaceRoot,
sessionKey: "agent:openskynet:main",
});
const raw = await fs.readFile(jsonlPath, "utf-8");
expect(raw).toContain('"event":"sessions.changed"');
});
});