From 3e8bc9f16ac31e593dbc9655a02d72fe27d02826 Mon Sep 17 00:00:00 2001 From: MoerAI Date: Mon, 16 Mar 2026 12:11:58 +0900 Subject: [PATCH] fix(daemon): accept 'Last Result' schtasks key variant on Windows (#47726) Some Windows locales/versions emit 'Last Result' instead of 'Last Run Result' in schtasks output, causing gateway status to falsely report 'Runtime: unknown'. Fall back to the shorter key when the canonical key is absent. --- src/daemon/schtasks.test.ts | 14 ++++++++++++++ src/daemon/schtasks.ts | 4 +++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/daemon/schtasks.test.ts b/src/daemon/schtasks.test.ts index 633df0fee7e..469ca584a7d 100644 --- a/src/daemon/schtasks.test.ts +++ b/src/daemon/schtasks.test.ts @@ -23,6 +23,20 @@ describe("schtasks runtime parsing", () => { lastRunResult: "0x0", }); }); + + it("parses 'Last Result' key variant (without 'Run') (#47726)", () => { + const output = [ + "TaskName: \\OpenClaw Gateway", + "Status: Running", + "Last Run Time: 2026/3/16 8:34:15", + "Last Result: 267009", + ].join("\r\n"); + expect(parseSchtasksQuery(output)).toEqual({ + status: "Running", + lastRunTime: "2026/3/16 8:34:15", + lastRunResult: "267009", + }); + }); }); describe("scheduled task runtime derivation", () => { diff --git a/src/daemon/schtasks.ts b/src/daemon/schtasks.ts index 2216e93bfd9..816ade13390 100644 --- a/src/daemon/schtasks.ts +++ b/src/daemon/schtasks.ts @@ -178,7 +178,9 @@ export function parseSchtasksQuery(output: string): ScheduledTaskInfo { if (lastRunTime) { info.lastRunTime = lastRunTime; } - const lastRunResult = entries["last run result"]; + // Some Windows locales/versions emit "Last Result" instead of "Last Run Result". + // Accept both so gateway status is not falsely reported as "unknown" (#47726). + const lastRunResult = entries["last run result"] ?? entries["last result"]; if (lastRunResult) { info.lastRunResult = lastRunResult; }