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);