|
1 | 1 | import { randomUUID } from "node:crypto"; |
| 2 | +import { |
| 3 | +MAX_DATE_TIMESTAMP_MS, |
| 4 | +resolveExpiresAtMsFromDurationMs, |
| 5 | +} from "openclaw/plugin-sdk/number-runtime"; |
2 | 6 | import { |
3 | 7 | WORKBOARD_DIAGNOSTIC_KINDS, |
4 | 8 | WORKBOARD_DIAGNOSTIC_SEVERITIES, |
@@ -61,20 +65,16 @@ const READY_STRANDED_MS = 60 * 60 * 1000;
|
61 | 65 | const RUNNING_HEARTBEAT_STALE_MS = 20 * 60 * 1000; |
62 | 66 | const BLOCKED_TOO_LONG_MS = 24 * 60 * 60 * 1000; |
63 | 67 | const CLAIM_RECLAIM_MS = 5 * 60 * 1000; |
64 | | -const MAX_SAFE_WORKBOARD_DURATION_MS = Number.MAX_SAFE_INTEGER; |
65 | 68 | |
66 | 69 | function secondsToDurationMs(seconds: number): number { |
67 | 70 | const ms = Math.trunc(seconds) * 1000; |
68 | 71 | return Number.isFinite(ms) |
69 | | - ? Math.min(MAX_SAFE_WORKBOARD_DURATION_MS, Math.max(1, ms)) |
70 | | - : MAX_SAFE_WORKBOARD_DURATION_MS; |
| 72 | + ? Math.min(MAX_DATE_TIMESTAMP_MS, Math.max(1, ms)) |
| 73 | + : MAX_DATE_TIMESTAMP_MS; |
71 | 74 | } |
72 | 75 | |
73 | 76 | function addWorkboardDurationMs(now: number, durationMs: number): number { |
74 | | -const expiresAt = now + durationMs; |
75 | | -return Number.isFinite(expiresAt) |
76 | | - ? Math.min(MAX_SAFE_WORKBOARD_DURATION_MS, expiresAt) |
77 | | - : MAX_SAFE_WORKBOARD_DURATION_MS; |
| 77 | +return resolveExpiresAtMsFromDurationMs(durationMs, { nowMs: now }) ?? MAX_DATE_TIMESTAMP_MS; |
78 | 78 | } |
79 | 79 | |
80 | 80 | export type PersistedWorkboardCard = { |
@@ -2782,12 +2782,14 @@ export class WorkboardStore {
|
2782 | 2782 | ...claim, |
2783 | 2783 | lastHeartbeatAt: now, |
2784 | 2784 | expiresAt: claim.expiresAt |
2785 | | - ? now + |
2786 | | -Math.max( |
2787 | | -1, |
2788 | | -claim.expiresAt > claim.claimedAt |
2789 | | - ? claim.expiresAt - claim.lastHeartbeatAt |
2790 | | - : DEFAULT_CLAIM_TTL_MS, |
| 2785 | + ? addWorkboardDurationMs( |
| 2786 | +now, |
| 2787 | +Math.max( |
| 2788 | +1, |
| 2789 | +claim.expiresAt > claim.claimedAt |
| 2790 | + ? claim.expiresAt - claim.lastHeartbeatAt |
| 2791 | + : DEFAULT_CLAIM_TTL_MS, |
| 2792 | +), |
2791 | 2793 | ) |
2792 | 2794 | : undefined, |
2793 | 2795 | }; |
|