diff --git a/scripts/openclaw-cross-os-release-checks.ts b/scripts/openclaw-cross-os-release-checks.ts index 2449343116e..4b6fe265fee 100644 --- a/scripts/openclaw-cross-os-release-checks.ts +++ b/scripts/openclaw-cross-os-release-checks.ts @@ -119,6 +119,9 @@ export const CROSS_OS_GATEWAY_STATUS_COMMAND_TIMEOUT_MS = export const CROSS_OS_GATEWAY_READY_TIMEOUT_MS = 3 * 60_000; export const CROSS_OS_WINDOWS_GATEWAY_READY_TIMEOUT_MS = 5 * 60_000; export const CROSS_OS_RELEASE_SMOKE_TOOLS_PROFILE = "minimal"; +export const CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS = 25 * 60; +export const CROSS_OS_WINDOWS_PACKAGED_UPGRADE_WRAPPER_TIMEOUT_MS = + (CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS + 5 * 60) * 1000; if (isMainModule()) { try { @@ -2413,11 +2416,15 @@ function installTimeoutMs() { } function updateTimeoutMs() { - return process.platform === "win32" ? 30 * 60 * 1000 : 20 * 60 * 1000; + return process.platform === "win32" + ? CROSS_OS_WINDOWS_PACKAGED_UPGRADE_WRAPPER_TIMEOUT_MS + : 20 * 60 * 1000; } function updateStepTimeoutSeconds() { - return process.platform === "win32" ? 1800 : 1200; + return process.platform === "win32" + ? CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS + : 1200; } async function runBundledPluginPostinstall(params) { diff --git a/test/scripts/openclaw-cross-os-release-checks.test.ts b/test/scripts/openclaw-cross-os-release-checks.test.ts index 5ea01e8aca8..ba536f51e0d 100644 --- a/test/scripts/openclaw-cross-os-release-checks.test.ts +++ b/test/scripts/openclaw-cross-os-release-checks.test.ts @@ -30,6 +30,8 @@ import { CROSS_OS_GATEWAY_STATUS_RPC_TIMEOUT_MS, CROSS_OS_RELEASE_SMOKE_TOOLS_PROFILE, CROSS_OS_WINDOWS_GATEWAY_READY_TIMEOUT_MS, + CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS, + CROSS_OS_WINDOWS_PACKAGED_UPGRADE_WRAPPER_TIMEOUT_MS, CROSS_OS_DASHBOARD_FETCH_TIMEOUT_MS, CROSS_OS_DASHBOARD_SMOKE_TIMEOUT_MS, CROSS_OS_AGENT_TURN_TIMEOUT_SECONDS, @@ -82,6 +84,17 @@ describe("scripts/openclaw-cross-os-release-checks", () => { expect(CROSS_OS_WINDOWS_GATEWAY_READY_TIMEOUT_MS).toBeGreaterThanOrEqual(300_000); }); + it("gives the Windows packaged updater wrapper enough headroom for OpenClaw timeout output", () => { + expect(CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS).toBeGreaterThanOrEqual(20 * 60); + expect(CROSS_OS_WINDOWS_PACKAGED_UPGRADE_WRAPPER_TIMEOUT_MS).toBeGreaterThan( + CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS * 1000, + ); + expect( + CROSS_OS_WINDOWS_PACKAGED_UPGRADE_WRAPPER_TIMEOUT_MS - + CROSS_OS_WINDOWS_PACKAGED_UPGRADE_STEP_TIMEOUT_SECONDS * 1000, + ).toBeGreaterThanOrEqual(5 * 60 * 1000); + }); + it("accepts OK agent output from the captured log when stdout is empty", () => { const dir = mkdtempSync(join(tmpdir(), "openclaw-cross-os-agent-output-")); try {