Initial commit: Discord-Claude Gateway with event-driven agent runtime

This commit is contained in:
2026-02-22 00:31:25 -05:00
commit 77d7c74909
58 changed files with 11772 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
import { describe, it, expect, beforeEach } from "vitest";
import { SessionManager } from "../../src/session-manager.js";
describe("SessionManager", () => {
let manager: SessionManager;
beforeEach(() => {
manager = new SessionManager();
});
it("returns undefined for unknown channel", () => {
expect(manager.getSessionId("unknown")).toBeUndefined();
});
it("stores and retrieves a session", () => {
manager.setSessionId("ch-1", "sess-abc");
expect(manager.getSessionId("ch-1")).toBe("sess-abc");
});
it("overwrites an existing session", () => {
manager.setSessionId("ch-1", "sess-old");
manager.setSessionId("ch-1", "sess-new");
expect(manager.getSessionId("ch-1")).toBe("sess-new");
});
it("removes a session", () => {
manager.setSessionId("ch-1", "sess-abc");
manager.removeSession("ch-1");
expect(manager.getSessionId("ch-1")).toBeUndefined();
});
it("removeSession on unknown channel is a no-op", () => {
expect(() => manager.removeSession("nope")).not.toThrow();
});
it("clear removes all sessions", () => {
manager.setSessionId("ch-1", "s1");
manager.setSessionId("ch-2", "s2");
manager.clear();
expect(manager.getSessionId("ch-1")).toBeUndefined();
expect(manager.getSessionId("ch-2")).toBeUndefined();
});
it("isolates sessions across channels", () => {
manager.setSessionId("ch-1", "s1");
manager.setSessionId("ch-2", "s2");
expect(manager.getSessionId("ch-1")).toBe("s1");
expect(manager.getSessionId("ch-2")).toBe("s2");
manager.removeSession("ch-1");
expect(manager.getSessionId("ch-2")).toBe("s2");
});
});