70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import fs from "node:fs/promises";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
import { testState, writeSessionStore } from "../test-helpers.js";
|
|
import { agentHandlers } from "./agent.js";
|
|
|
|
describe("agent handler session create events", () => {
|
|
let tempDir: string;
|
|
let storePath: string;
|
|
|
|
beforeEach(async () => {
|
|
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-agent-create-event-"));
|
|
storePath = path.join(tempDir, "sessions.json");
|
|
testState.sessionStorePath = storePath;
|
|
await writeSessionStore({ entries: {} });
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await fs.rm(tempDir, { recursive: true, force: true });
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
it("emits sessions.changed with reason create for new agent sessions", async () => {
|
|
const broadcastToConnIds = vi.fn();
|
|
const respond = vi.fn();
|
|
|
|
await agentHandlers.agent({
|
|
params: {
|
|
message: "hi",
|
|
sessionKey: "agent:main:subagent:create-test",
|
|
idempotencyKey: "idem-agent-create-event",
|
|
},
|
|
respond,
|
|
context: {
|
|
dedupe: new Map(),
|
|
deps: {} as never,
|
|
logGateway: { error: vi.fn(), warn: vi.fn(), info: vi.fn(), debug: vi.fn() } as never,
|
|
chatAbortControllers: new Map(),
|
|
addChatRun: vi.fn(),
|
|
registerToolEventRecipient: vi.fn(),
|
|
getSessionEventSubscriberConnIds: () => new Set(["conn-1"]),
|
|
broadcastToConnIds,
|
|
} as never,
|
|
client: null,
|
|
isWebchatConnect: () => false,
|
|
req: { id: "req-agent-create-event" } as never,
|
|
});
|
|
|
|
expect(respond).toHaveBeenCalledWith(
|
|
true,
|
|
expect.objectContaining({
|
|
status: "accepted",
|
|
runId: "idem-agent-create-event",
|
|
}),
|
|
undefined,
|
|
{ runId: "idem-agent-create-event" },
|
|
);
|
|
expect(broadcastToConnIds).toHaveBeenCalledWith(
|
|
"sessions.changed",
|
|
expect.objectContaining({
|
|
sessionKey: "agent:main:subagent:create-test",
|
|
reason: "create",
|
|
}),
|
|
new Set(["conn-1"]),
|
|
{ dropIfSlow: true },
|
|
);
|
|
});
|
|
});
|