From 2bdcc8314d3fce9ee2d0300759cd6a1d9bb45a7d Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Mon, 22 Jun 2026 00:13:45 +0200 Subject: [PATCH] fix(sdk): preserve zero run timeout watchdog --- packages/sdk/src/client.ts | 6 ++++-- packages/sdk/src/index.test.ts | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/client.ts b/packages/sdk/src/client.ts index b4a012e30a4..5f015bb4f7a 100644 --- a/packages/sdk/src/client.ts +++ b/packages/sdk/src/client.ts @@ -790,9 +790,11 @@ export class RunsNamespace { constructor(private readonly client: OpenClaw) {} async create(params: RunCreateParams): Promise { - const raw = await this.client.request("agent", buildAgentParams(params), { + const timeoutMs = normalizeTimeoutMs(params.timeoutMs); + const normalizedParams = timeoutMs !== undefined ? { ...params, timeoutMs } : params; + const raw = await this.client.request("agent", buildAgentParams(normalizedParams), { expectFinal: false, - timeoutMs: params.timeoutMs, + ...(timeoutMs !== undefined ? { timeoutMs: timeoutMs === 0 ? null : timeoutMs } : {}), }); const record = asRecord(raw); const runId = readOptionalString(record.runId); diff --git a/packages/sdk/src/index.test.ts b/packages/sdk/src/index.test.ts index d91a2420f15..4d5a451dceb 100644 --- a/packages/sdk/src/index.test.ts +++ b/packages/sdk/src/index.test.ts @@ -445,6 +445,11 @@ describe("OpenClaw SDK", () => { timeoutMs: 1_500, idempotencyKey: "timeout-test", }); + await oc.runs.create({ + input: "run without SDK watchdog", + timeoutMs: 0, + idempotencyKey: "no-watchdog-test", + }); expect(requireTransportCall(transport.calls, 0)).toEqual({ method: "agent", @@ -455,6 +460,15 @@ describe("OpenClaw SDK", () => { idempotencyKey: "timeout-test", }, }); + expect(requireTransportCall(transport.calls, 1)).toEqual({ + method: "agent", + options: { expectFinal: false, timeoutMs: null }, + params: { + message: "run without SDK watchdog", + timeout: 0, + idempotencyKey: "no-watchdog-test", + }, + }); await expect( oc.runs.create({ input: "bad timeout",