feat: add multi-session desktop workspace
This commit is contained in:
@@ -42,6 +42,56 @@ function collectFrames(socket, count) {
|
||||
});
|
||||
}
|
||||
|
||||
test("workspace subscription exposes daemon identity, replay boundaries, and globally ordered live events", async () => {
|
||||
const root = await mkdtemp(join(tmpdir(), "pi-status-workspace-subscribe-"));
|
||||
const home = join(root, "home");
|
||||
await mkdir(home);
|
||||
const calls = [];
|
||||
const service = await startBridgeService({
|
||||
homeWorktree: home,
|
||||
runtimeDir: join(root, "runtime"),
|
||||
sessionRoot: join(root, "sessions"),
|
||||
startAdapter: (options) => {
|
||||
const adapter = {
|
||||
send: async () => ({ type: "response", success: true, data: {} }),
|
||||
respondToExtension: () => {},
|
||||
stop: async () => {},
|
||||
};
|
||||
calls.push({ options, adapter });
|
||||
return adapter;
|
||||
},
|
||||
});
|
||||
const socket = await connect(service.socketPath);
|
||||
|
||||
try {
|
||||
const frames = collectFrames(socket, 2);
|
||||
socket.write(
|
||||
`${JSON.stringify({ version: "v1", id: "workspace-1", op: "subscribe_workspace", payload: { cursor: 0 } })}\n`,
|
||||
);
|
||||
setTimeout(() => {
|
||||
calls[0].options.onEvent({
|
||||
type: "stream",
|
||||
data: { event: { type: "message_update", delta: "live" } },
|
||||
});
|
||||
}, 10);
|
||||
const [replay, live] = await frames;
|
||||
assert.equal(replay.ok, true);
|
||||
assert.equal(typeof replay.result.bridgeInstanceId, "string");
|
||||
assert.equal(replay.result.truncated, false);
|
||||
assert.equal(Number.isSafeInteger(replay.result.firstAvailableSeq), true);
|
||||
assert.equal(Number.isSafeInteger(replay.result.latestSeq), true);
|
||||
assert.ok(replay.result.events.length >= 1);
|
||||
assert.equal(live.type, "event");
|
||||
assert.equal(live.event.bridgeInstanceId, replay.result.bridgeInstanceId);
|
||||
assert.equal(live.event.type, "runtime_event");
|
||||
assert.equal(live.event.data.eventType, "stream");
|
||||
assert.ok(live.event.seq > replay.result.events.at(-1).seq);
|
||||
} finally {
|
||||
socket.destroy();
|
||||
await service.close();
|
||||
}
|
||||
});
|
||||
|
||||
test("replays then streams subscribed agent events on the same local socket", async () => {
|
||||
const root = await mkdtemp(join(tmpdir(), "pi-status-bridge-subscribe-"));
|
||||
const home = join(root, "home");
|
||||
|
||||
Reference in New Issue
Block a user