




















@@ -107,8 +107,7 @@ describe("agent event handler", () => {
107107loadGatewaySessionRowForSnapshot: loadGatewaySessionRow,
108108lifecycleErrorRetryGraceMs: params?.lifecycleErrorRetryGraceMs,
109109isChatSendRunActive: params?.isChatSendRunActive,
110-shouldBackoffLowPrioritySessionToolEvents:
111-params?.shouldBackoffLowPrioritySessionToolEvents,
110+shouldBackoffLowPrioritySessionToolEvents: params?.shouldBackoffLowPrioritySessionToolEvents,
112111});
113112114113return {
@@ -1526,6 +1525,45 @@ describe("agent event handler", () => {
15261525resetAgentRunContextForTest();
15271526});
152815271528+it("does not duplicate tool events to clients subscribed by run and session", () => {
1529+const { broadcastToConnIds, sessionEventSubscribers, toolEventRecipients, handler } =
1530+createHarness({
1531+resolveSessionKeyForRun: () => "session-dedupe",
1532+});
1533+1534+registerAgentRunContext("run-session-dedupe-tool", {
1535+sessionKey: "session-dedupe",
1536+verboseLevel: "off",
1537+});
1538+toolEventRecipients.add("run-session-dedupe-tool", "conn-overlap");
1539+toolEventRecipients.add("run-session-dedupe-tool", "conn-run-only");
1540+sessionEventSubscribers.subscribe("conn-overlap");
1541+sessionEventSubscribers.subscribe("conn-session-only");
1542+1543+handler({
1544+runId: "run-session-dedupe-tool",
1545+seq: 1,
1546+stream: "tool",
1547+ts: 1_234,
1548+data: {
1549+phase: "start",
1550+name: "exec",
1551+toolCallId: "tool-session-dedupe-1",
1552+args: { command: "echo hi" },
1553+},
1554+});
1555+1556+expect(broadcastToConnIds).toHaveBeenCalledTimes(2);
1557+expect(requireMockArg(broadcastToConnIds, 0, 0, "run tool event")).toBe("agent");
1558+expect(requireMockArg(broadcastToConnIds, 0, 2, "run tool recipients")).toEqual(
1559+new Set(["conn-overlap", "conn-run-only"]),
1560+);
1561+expect(requireMockArg(broadcastToConnIds, 1, 0, "session tool event")).toBe("session.tool");
1562+expect(requireMockArg(broadcastToConnIds, 1, 2, "session tool recipients")).toEqual(
1563+new Set(["conn-session-only"]),
1564+);
1565+});
1566+15291567it("backs off session-scoped tool mirrors during queued gateway pressure", () => {
15301568const { broadcastToConnIds, sessionEventSubscribers, toolEventRecipients, handler } =
15311569createHarness({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。