From 70d68d29d0cb270e5cb0f055048d3366c47f494e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 4 Jan 2026 01:35:02 +0100 Subject: [PATCH] fix: warm agent.wait cache --- src/gateway/server-methods.ts | 2 ++ src/gateway/server.agent.test.ts | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/gateway/server-methods.ts b/src/gateway/server-methods.ts index 3debee59a..02c0dc002 100644 --- a/src/gateway/server-methods.ts +++ b/src/gateway/server-methods.ts @@ -327,6 +327,8 @@ async function waitForAgentJob(params: { }); } +ensureAgentJobListener(); + export type GatewayRequestContext = { deps: ReturnType; cron: CronService; diff --git a/src/gateway/server.agent.test.ts b/src/gateway/server.agent.test.ts index a255f96b8..32c37bbdf 100644 --- a/src/gateway/server.agent.test.ts +++ b/src/gateway/server.agent.test.ts @@ -545,6 +545,28 @@ describe("gateway server agent", () => { await server.close(); }); + test("agent.wait resolves when job completed before wait call", async () => { + const { server, ws } = await startServerWithClient(); + await connectOk(ws); + + emitAgentEvent({ + runId: "run-wait-early", + stream: "job", + data: { state: "done", startedAt: 50, endedAt: 55 }, + }); + + const res = await rpcReq(ws, "agent.wait", { + runId: "run-wait-early", + timeoutMs: 1000, + }); + expect(res.ok).toBe(true); + expect(res.payload.status).toBe("ok"); + expect(res.payload.startedAt).toBe(50); + + ws.close(); + await server.close(); + }); + test("agent.wait ignores jobs before afterMs", async () => { const { server, ws } = await startServerWithClient(); await connectOk(ws);