





















@@ -15,6 +15,55 @@ import {
1515waitForAgentRunAndReadUpdatedAssistantReply,
1616} from "./run-wait.js";
171718+type AgentWaitGatewayRequest = {
19+method?: string;
20+params?: {
21+runId?: string;
22+timeoutMs?: unknown;
23+};
24+timeoutMs?: unknown;
25+};
26+27+function expectNumber(value: unknown, label: string): number {
28+expect(typeof value).toBe("number");
29+if (typeof value !== "number") {
30+throw new Error(`expected ${label} to be a number`);
31+}
32+return value;
33+}
34+35+function gatewayWaitRequests(): AgentWaitGatewayRequest[] {
36+return callGatewayMock.mock.calls.map(([request]) => request as AgentWaitGatewayRequest);
37+}
38+39+function requireRequestAt(
40+requests: readonly AgentWaitGatewayRequest[],
41+index: number,
42+): AgentWaitGatewayRequest {
43+const request = requests.at(index);
44+if (!request) {
45+throw new Error(`expected gateway request at index ${index}`);
46+}
47+return request;
48+}
49+50+function expectAgentWaitRequest(
51+request: AgentWaitGatewayRequest,
52+runId: string,
53+maxParamTimeoutMs: number,
54+): void {
55+expect(request.method).toBe("agent.wait");
56+expect(request.params?.runId).toBe(runId);
57+58+const paramTimeoutMs = expectNumber(request.params?.timeoutMs, `${runId} param timeoutMs`);
59+const requestTimeoutMs = expectNumber(request.timeoutMs, `${runId} request timeoutMs`);
60+expect(requestTimeoutMs).toBeGreaterThan(0);
61+expect(requestTimeoutMs).toBeLessThanOrEqual(maxParamTimeoutMs + 2_000);
62+expect(paramTimeoutMs).toBe(requestTimeoutMs - 2_000);
63+expect(paramTimeoutMs).toBeGreaterThan(0);
64+expect(paramTimeoutMs).toBeLessThanOrEqual(maxParamTimeoutMs);
65+}
66+1867describe("readLatestAssistantReply", () => {
1968beforeEach(() => {
2069callGatewayMock.mockClear();
@@ -287,29 +336,14 @@ describe("waitForAgentRunsToDrain", () => {
287336getPendingRunIds: () => activeRunIds,
288337});
289338290-expect(result).toEqual({
291-timedOut: false,
292-pendingRunIds: [],
293-deadlineAtMs: expect.any(Number),
294-});
295-expect(callGatewayMock.mock.calls.map((call) => call[0])).toEqual([
296-{
297-method: "agent.wait",
298-params: {
299-runId: "run-1",
300-timeoutMs: expect.any(Number),
301-},
302-timeoutMs: expect.any(Number),
303-},
304-{
305-method: "agent.wait",
306-params: {
307-runId: "run-2",
308-timeoutMs: expect.any(Number),
309-},
310-timeoutMs: expect.any(Number),
311-},
312-]);
339+expect(result.timedOut).toBe(false);
340+expect(result.pendingRunIds).toStrictEqual([]);
341+expectNumber(result.deadlineAtMs, "deadlineAtMs");
342+343+const requests = gatewayWaitRequests();
344+expect(requests).toHaveLength(2);
345+expectAgentWaitRequest(requireRequestAt(requests, 0), "run-1", 1_000);
346+expectAgentWaitRequest(requireRequestAt(requests, 1), "run-2", 1_000);
313347});
314348315349it("deduplicates and trims pending run ids", async () => {
@@ -344,15 +378,9 @@ describe("waitForAgentRunsToDrain", () => {
344378});
345379346380expect(result.timedOut).toBe(false);
347-expect(callGatewayMock.mock.calls.map((call) => call[0])).toEqual([
348-expect.objectContaining({
349-method: "agent.wait",
350-params: expect.objectContaining({ runId: "run-1" }),
351-}),
352-expect.objectContaining({
353-method: "agent.wait",
354-params: expect.objectContaining({ runId: "run-2" }),
355-}),
356-]);
381+const requests = gatewayWaitRequests();
382+expect(requests).toHaveLength(2);
383+expectAgentWaitRequest(requireRequestAt(requests, 0), "run-1", 1_000);
384+expectAgentWaitRequest(requireRequestAt(requests, 1), "run-2", 1_000);
357385});
358386});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。