fix: route system events per session

This commit is contained in:
Peter Steinberger
2026-01-04 22:11:04 +01:00
parent 2ceceb8c25
commit 1657c5e3d2
7 changed files with 256 additions and 31 deletions

View File

@@ -0,0 +1,64 @@
import { beforeEach, describe, expect, it } from "vitest";
import { prependSystemEvents } from "../auto-reply/reply/session-updates.js";
import type { ClawdbotConfig } from "../config/config.js";
import {
enqueueSystemEvent,
peekSystemEvents,
resetSystemEventsForTest,
} from "./system-events.js";
const cfg = {} as unknown as ClawdbotConfig;
describe("system events (session routing)", () => {
beforeEach(() => {
resetSystemEventsForTest();
});
it("does not leak session-scoped events into main", async () => {
enqueueSystemEvent("Discord reaction added: ✅", {
sessionKey: "discord:group:123",
contextKey: "discord:reaction:added:msg:user:✅",
});
expect(peekSystemEvents()).toEqual([]);
expect(peekSystemEvents("discord:group:123")).toEqual([
"Discord reaction added: ✅",
]);
const main = await prependSystemEvents({
cfg,
sessionKey: "main",
isMainSession: true,
isNewSession: false,
prefixedBodyBase: "hello",
});
expect(main).toBe("hello");
expect(peekSystemEvents("discord:group:123")).toEqual([
"Discord reaction added: ✅",
]);
const discord = await prependSystemEvents({
cfg,
sessionKey: "discord:group:123",
isMainSession: false,
isNewSession: false,
prefixedBodyBase: "hi",
});
expect(discord).toBe("System: Discord reaction added: ✅\n\nhi");
expect(peekSystemEvents("discord:group:123")).toEqual([]);
});
it("defaults system events to main", async () => {
enqueueSystemEvent("Node: Mac Studio");
const main = await prependSystemEvents({
cfg,
sessionKey: "main",
isMainSession: true,
isNewSession: false,
prefixedBodyBase: "ping",
});
expect(main).toBe("System: Node: Mac Studio\n\nping");
});
});