mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-09 16:22:58 +00:00
fix(agents): guard current time context timestamp
This commit is contained in:
20
src/agents/current-time.test.ts
Normal file
20
src/agents/current-time.test.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { resolveCronStyleNow } from "./current-time.js";
|
||||
|
||||
describe("resolveCronStyleNow", () => {
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
it("falls back when nowMs is outside Date range", () => {
|
||||
vi.spyOn(Date, "now").mockReturnValue(Date.parse("2026-05-30T12:00:00.000Z"));
|
||||
|
||||
const result = resolveCronStyleNow(
|
||||
{ agents: { defaults: { userTimezone: "UTC", timeFormat: "24" } } },
|
||||
8_640_000_000_000_001,
|
||||
);
|
||||
|
||||
expect(result.formattedTime).toBe("Saturday, May 30th, 2026 - 12:00");
|
||||
expect(result.timeLine).toContain("Reference UTC: 2026-05-30 12:00 UTC");
|
||||
});
|
||||
});
|
||||
@@ -1,3 +1,4 @@
|
||||
import { asDateTimestampMs } from "../shared/number-coercion.js";
|
||||
import {
|
||||
type TimeFormatPreference,
|
||||
formatUserTime,
|
||||
@@ -23,9 +24,10 @@ type TimeConfigLike = {
|
||||
export function resolveCronStyleNow(cfg: TimeConfigLike, nowMs: number): CronStyleNow {
|
||||
const userTimezone = resolveUserTimezone(cfg.agents?.defaults?.userTimezone);
|
||||
const userTimeFormat = resolveUserTimeFormat(cfg.agents?.defaults?.timeFormat);
|
||||
const formattedTime =
|
||||
formatUserTime(new Date(nowMs), userTimezone, userTimeFormat) ?? new Date(nowMs).toISOString();
|
||||
const utcTime = new Date(nowMs).toISOString().replace("T", " ").slice(0, 16) + " UTC";
|
||||
const timestampMs = asDateTimestampMs(nowMs) ?? Date.now();
|
||||
const date = new Date(timestampMs);
|
||||
const formattedTime = formatUserTime(date, userTimezone, userTimeFormat) ?? date.toISOString();
|
||||
const utcTime = date.toISOString().replace("T", " ").slice(0, 16) + " UTC";
|
||||
const timeLine = `Current time: ${formattedTime} (${userTimezone})\nReference UTC: ${utcTime}`;
|
||||
return { userTimezone, formattedTime, timeLine };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user