From f1b769490abf203be3402f29e87a3b878b5fc4ee Mon Sep 17 00:00:00 2001 From: 134 Date: Fri, 7 Aug 2026 12:12:11 +0800 Subject: [PATCH] fix(claw): allow ten-minute chat tasks --- app/(admin)/settings/admin-settings-client.tsx | 14 +++++++------- lib/openclaw-chat/config.ts | 4 ++-- playwright.helpers.config.ts | 1 + tests/routes/openclaw-config.test.ts | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 tests/routes/openclaw-config.test.ts diff --git a/app/(admin)/settings/admin-settings-client.tsx b/app/(admin)/settings/admin-settings-client.tsx index 610710fa7..ff4d32a99 100644 --- a/app/(admin)/settings/admin-settings-client.tsx +++ b/app/(admin)/settings/admin-settings-client.tsx @@ -2225,7 +2225,7 @@ export function AdminSettingsClient() { enabled: false, baseUrl: DEFAULT_OPENCLAW_CHAT_BASE_URL, token: "", - timeoutMs: 180_000, + timeoutMs: 600_000, }); const [openClawChatTokenConfigured, setOpenClawChatTokenConfigured] = useState(false); @@ -2518,8 +2518,8 @@ export function AdminSettingsClient() { String(raw.baseUrl || "").trim() || DEFAULT_OPENCLAW_CHAT_BASE_URL, token: "", timeoutMs: Math.min( - 300_000, - Math.max(5_000, Math.round(Number(raw.timeoutMs) || 180_000)) + 600_000, + Math.max(5_000, Math.round(Number(raw.timeoutMs) || 600_000)) ), }); setOpenClawChatTokenConfigured( @@ -4372,8 +4372,8 @@ export function AdminSettingsClient() { openClawChatConfig.baseUrl.trim() || DEFAULT_OPENCLAW_CHAT_BASE_URL, token: openClawChatConfig.token.trim(), timeoutMs: Math.min( - 300_000, - Math.max(5_000, Math.round(Number(openClawChatConfig.timeoutMs) || 180_000)) + 600_000, + Math.max(5_000, Math.round(Number(openClawChatConfig.timeoutMs) || 600_000)) ), }; @@ -12694,11 +12694,11 @@ export function AdminSettingsClient() { setOpenClawChatConfig((prev) => ({ ...prev, - timeoutMs: Number(event.target.value) || 180000, + timeoutMs: Number(event.target.value) || 600000, })) } type="number" diff --git a/lib/openclaw-chat/config.ts b/lib/openclaw-chat/config.ts index ec9f80518..80dc078c8 100644 --- a/lib/openclaw-chat/config.ts +++ b/lib/openclaw-chat/config.ts @@ -20,9 +20,9 @@ export type AdminOpenClawChatConfig = Omit & { tokenPreview: string; }; -const DEFAULT_TIMEOUT_MS = 180_000; +const DEFAULT_TIMEOUT_MS = 600_000; const MIN_TIMEOUT_MS = 5_000; -const MAX_TIMEOUT_MS = 300_000; +const MAX_TIMEOUT_MS = 600_000; function readRecord(value: unknown): Record { return value && typeof value === "object" && !Array.isArray(value) diff --git a/playwright.helpers.config.ts b/playwright.helpers.config.ts index 93fbef56d..04be7311c 100644 --- a/playwright.helpers.config.ts +++ b/playwright.helpers.config.ts @@ -16,6 +16,7 @@ export default defineConfig({ /routes\/clawd-request-lifecycle\.test\.ts/, /routes\/canvas-skill-tag-order\.test\.ts/, /routes\/openclaw-client-errors\.test\.ts/, + /routes\/openclaw-config\.test\.ts/, /routes\/openclaw-durable-task-state\.test\.ts/, /routes\/openclaw-request-state\.test\.ts/, /routes\/openclaw-video-attachments\.test\.ts/, diff --git a/tests/routes/openclaw-config.test.ts b/tests/routes/openclaw-config.test.ts new file mode 100644 index 000000000..5d87bfa53 --- /dev/null +++ b/tests/routes/openclaw-config.test.ts @@ -0,0 +1,14 @@ +import { expect, test } from "@playwright/test"; +import { normalizeOpenClawChatConfig } from "@/lib/openclaw-chat/config"; + +test.describe("OpenClaw chat timeout config", () => { + test("defaults long-running tasks to ten minutes", () => { + expect(normalizeOpenClawChatConfig({}).timeoutMs).toBe(600_000); + }); + + test("caps configured timeouts at ten minutes", () => { + expect( + normalizeOpenClawChatConfig({ timeoutMs: 900_000 }).timeoutMs + ).toBe(600_000); + }); +});