

























@@ -174,17 +174,30 @@ describe("agent event handler", () => {
174174expectRecordFields(requireRecord(payload.data, "event payload data"), fields);
175175}
176176177+function requireMockCall(mock: ReturnType<typeof vi.fn>, index: number, label: string) {
178+const call = mock.mock.calls[index];
179+if (!call) {
180+throw new Error(`missing ${label} call ${index + 1}`);
181+}
182+return call;
183+}
184+185+function requireMockArg(
186+mock: ReturnType<typeof vi.fn>,
187+index: number,
188+argIndex: number,
189+label: string,
190+) {
191+return requireMockCall(mock, index, label)[argIndex];
192+}
193+177194function requireMockPayload(
178195mock: ReturnType<typeof vi.fn>,
179196index: number,
180197payloadIndex: number,
181198label: string,
182199) {
183-const call = mock.mock.calls.at(index);
184-if (!call) {
185-throw new Error(`missing ${label} call ${index + 1}`);
186-}
187-return requireRecord(call[payloadIndex], label);
200+return requireRecord(requireMockArg(mock, index, payloadIndex, label), label);
188201}
189202190203const FALLBACK_LIFECYCLE_DATA = {
@@ -1022,7 +1035,7 @@ describe("agent event handler", () => {
10221035});
1023103610241037expect(broadcastToConnIds).toHaveBeenCalledTimes(1);
1025-expect(broadcastToConnIds.mock.calls.at(0)?.[0]).toBe("session.tool");
1038+expect(requireMockArg(broadcastToConnIds, 0, 0, "session tool event")).toBe("session.tool");
10261039const sessionToolPayload = requireMockPayload(broadcastToConnIds, 0, 1, "session tool payload");
10271040expectRecordFields(sessionToolPayload, {
10281041runId: "run-session-tool",
@@ -1045,8 +1058,12 @@ describe("agent event handler", () => {
10451058toolCallId: "tool-session-1",
10461059args: { command: "echo hi" },
10471060});
1048-expect(broadcastToConnIds.mock.calls.at(0)?.[2]).toEqual(new Set(["conn-session"]));
1049-expect(broadcastToConnIds.mock.calls.at(0)?.[3]).toEqual({ dropIfSlow: true });
1061+expect(requireMockArg(broadcastToConnIds, 0, 2, "session tool recipients")).toEqual(
1062+new Set(["conn-session"]),
1063+);
1064+expect(requireMockArg(broadcastToConnIds, 0, 3, "session tool options")).toEqual({
1065+dropIfSlow: true,
1066+});
10501067resetAgentRunContextForTest();
10511068});
10521069@@ -1087,7 +1104,7 @@ describe("agent event handler", () => {
10871104});
1088110510891106expect(broadcastToConnIds).toHaveBeenCalledTimes(1);
1090-expect(broadcastToConnIds.mock.calls.at(0)?.[0]).toBe("agent");
1107+expect(requireMockArg(broadcastToConnIds, 0, 0, "run tool event")).toBe("agent");
10911108const runToolPayload = requireMockPayload(broadcastToConnIds, 0, 1, "run tool payload");
10921109expectRecordFields(runToolPayload, {
10931110runId: "run-tool-owner",
@@ -1110,7 +1127,9 @@ describe("agent event handler", () => {
11101127toolCallId: "tool-run-1",
11111128args: { command: "echo hi" },
11121129});
1113-expect(broadcastToConnIds.mock.calls.at(0)?.[2]).toEqual(new Set(["conn-run"]));
1130+expect(requireMockArg(broadcastToConnIds, 0, 2, "run tool recipients")).toEqual(
1131+new Set(["conn-run"]),
1132+);
11141133resetAgentRunContextForTest();
11151134});
11161135@@ -1139,7 +1158,7 @@ describe("agent event handler", () => {
11391158},
11401159});
114111601142-const payload = nodeSendToSession.mock.calls.at(0)?.[2] as {
1161+const payload = requireMockArg(nodeSendToSession, 0, 2, "node tool-search payload") as {
11431162stream?: string;
11441163data?: { name?: string; args?: Record<string, unknown> };
11451164};
@@ -1203,8 +1222,8 @@ describe("agent event handler", () => {
12031222},
12041223});
120512241206-expect(nodeSendToSession.mock.calls.at(0)?.[0]).toBe("session-1");
1207-expect(nodeSendToSession.mock.calls.at(0)?.[1]).toBe("agent");
1225+expect(requireMockArg(nodeSendToSession, 0, 0, "node tool session")).toBe("session-1");
1226+expect(requireMockArg(nodeSendToSession, 0, 1, "node tool event")).toBe("agent");
12081227const nodeToolPayload = requireMockPayload(nodeSendToSession, 0, 2, "node tool payload");
12091228expectRecordFields(nodeToolPayload, {
12101229runId: "run-tool-node",
@@ -1362,8 +1381,10 @@ describe("agent event handler", () => {
13621381},
13631382});
136413831365-expect(broadcastToConnIds.mock.calls.at(0)?.[0]).toBe("sessions.changed");
1366-expectPayloadFields(broadcastToConnIds.mock.calls.at(0)?.[1], {
1384+expect(requireMockArg(broadcastToConnIds, 0, 0, "sessions changed event")).toBe(
1385+"sessions.changed",
1386+);
1387+expectPayloadFields(requireMockArg(broadcastToConnIds, 0, 1, "sessions changed payload"), {
13671388sessionKey: "session-finished",
13681389phase: "end",
13691390spawnedBy: "agent:main:main",
@@ -1382,8 +1403,12 @@ describe("agent event handler", () => {
13821403estimatedCostUsd: 0.12,
13831404lastThreadId: 42,
13841405});
1385-expect(broadcastToConnIds.mock.calls.at(0)?.[2]).toEqual(new Set(["conn-session"]));
1386-expect(broadcastToConnIds.mock.calls.at(0)?.[3]).toEqual({ dropIfSlow: true });
1406+expect(requireMockArg(broadcastToConnIds, 0, 2, "sessions changed recipients")).toEqual(
1407+new Set(["conn-session"]),
1408+);
1409+expect(requireMockArg(broadcastToConnIds, 0, 3, "sessions changed options")).toEqual({
1410+dropIfSlow: true,
1411+});
13871412});
1388141313891414it("keeps tool output for Control UI recipients when verbose is on", () => {
@@ -1409,7 +1434,7 @@ describe("agent event handler", () => {
14091434});
1410143514111436expect(broadcastToConnIds).toHaveBeenCalledTimes(1);
1412-const payload = broadcastToConnIds.mock.calls.at(0)?.[1] as {
1437+const payload = requireMockArg(broadcastToConnIds, 0, 1, "tool output payload") as {
14131438data?: Record<string, unknown>;
14141439};
14151440expect(payload.data?.result).toEqual({ content: [{ type: "text", text: "secret" }] });
@@ -1440,7 +1465,7 @@ describe("agent event handler", () => {
14401465});
1441146614421467expect(broadcastToConnIds).toHaveBeenCalledTimes(1);
1443-const payload = broadcastToConnIds.mock.calls.at(0)?.[1] as {
1468+const payload = requireMockArg(broadcastToConnIds, 0, 1, "full tool output payload") as {
14441469data?: Record<string, unknown>;
14451470};
14461471expect(payload.data?.result).toEqual(result);
@@ -1723,7 +1748,7 @@ describe("agent event handler", () => {
17231748expect(broadcast.mock.calls.some(([event]) => event === "agent")).toBe(false);
17241749expect(nodeSendToSession).not.toHaveBeenCalled();
17251750const persistParams = requireRecord(
1726-persistGatewaySessionLifecycleEventMock.mock.calls.at(0)?.[0],
1751+requireMockArg(persistGatewaySessionLifecycleEventMock, 0, 0, "persist lifecycle params"),
17271752"persist lifecycle params",
17281753);
17291754expect(persistParams.sessionKey).toBe("session-hidden");
@@ -1776,7 +1801,9 @@ describe("agent event handler", () => {
17761801});
1777180217781803expect(broadcastToConnIds).toHaveBeenCalledTimes(1);
1779-const payload = broadcastToConnIds.mock.calls.at(0)?.[1] as { runId?: string };
1804+const payload = requireMockArg(broadcastToConnIds, 0, 1, "remapped tool payload") as {
1805+runId?: string;
1806+};
17801807expect(payload.runId).toBe("run-tool-client");
17811808resetAgentRunContextForTest();
17821809});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。