forked from EduCraft/curriculum-project-hub
fix: bind agent sessions to role
This commit is contained in:
@@ -421,6 +421,34 @@ describe("trigger full lifecycle (integration)", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps role sessions separate even when roles share a model", async () => {
|
||||
await seedProject("proj-12b", "chat-12b");
|
||||
await prisma.roleTriggerGrant.create({
|
||||
data: { projectId: "proj-12b", roleId: "review", principalType: "USER", principalId: "ou_test_user" },
|
||||
});
|
||||
const trigger = makeTriggerHandler({ prisma, settings, logger: silentLogger, runAgent, messageBatcherOptions: { maxMessages: 1 } });
|
||||
|
||||
await trigger(makeEvent("chat-12b", "@_user_1 /draft 写第三单元"), rt);
|
||||
await vi.waitFor(async () => {
|
||||
const runs = await prisma.agentRun.findMany();
|
||||
expect(runs).toHaveLength(1);
|
||||
expect(runs[0]?.status).toBe("COMPLETED");
|
||||
});
|
||||
|
||||
await trigger(makeEvent("chat-12b", "@_user_1 /review 看看这节"), rt);
|
||||
await vi.waitFor(async () => {
|
||||
const runs = await prisma.agentRun.findMany();
|
||||
expect(runs).toHaveLength(2);
|
||||
expect(runs.every((run) => run.status === "COMPLETED")).toBe(true);
|
||||
});
|
||||
|
||||
const sessions = await prisma.agentSession.findMany({ orderBy: { roleId: "asc" } });
|
||||
expect(sessions.map((session) => session.roleId)).toEqual(["draft", "review"]);
|
||||
expect(new Set(sessions.map((session) => session.model))).toEqual(new Set(["mock-model"]));
|
||||
expect(new Set(sessions.map((session) => session.id)).size).toBe(2);
|
||||
expect(runAgentCalls[1]?.resumeSessionId).toBeUndefined();
|
||||
});
|
||||
|
||||
it("dedups a redelivered event by event_id (no second run)", async () => {
|
||||
await seedProject("proj-13", "chat-13");
|
||||
const trigger = makeTriggerHandler({ prisma, settings, logger: silentLogger, runAgent, messageBatcherOptions: { maxMessages: 1 } });
|
||||
|
||||
Reference in New Issue
Block a user