@@ -5,10 +5,7 @@ import path from "node:path";
|
5 | 5 | import { promisify } from "node:util"; |
6 | 6 | import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts"; |
7 | 7 | import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime"; |
8 | | -import { |
9 | | -appendQaLiveLaneIssue as appendLiveLaneIssue, |
10 | | -buildQaLiveLaneArtifactsError as buildLiveLaneArtifactsError, |
11 | | -} from "../shared/live-artifacts.js"; |
| 8 | +import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime"; |
12 | 9 | import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime"; |
13 | 10 | import { isRecord, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime"; |
14 | 11 | import { resolvePreferredOpenClawTmpDir } from "openclaw/plugin-sdk/temp-path"; |
@@ -26,6 +23,10 @@ import {
|
26 | 23 | startQaCredentialLeaseHeartbeat, |
27 | 24 | type QaCredentialRole, |
28 | 25 | } from "../shared/credential-lease.runtime.js"; |
| 26 | +import { |
| 27 | +appendQaLiveLaneIssue as appendLiveLaneIssue, |
| 28 | +buildQaLiveLaneArtifactsError as buildLiveLaneArtifactsError, |
| 29 | +} from "../shared/live-artifacts.js"; |
29 | 30 | import { startQaLiveLaneGateway } from "../shared/live-gateway.runtime.js"; |
30 | 31 | import { |
31 | 32 | collectLiveTransportStandardScenarioCoverage, |
@@ -569,11 +570,11 @@ function parsePositiveTelegramQaEnvMs(env: NodeJS.ProcessEnv, name: string, fall
|
569 | 570 | if (raw === undefined) { |
570 | 571 | return fallbackMs; |
571 | 572 | } |
572 | | -const parsed = Number(raw); |
573 | | -if (!Number.isFinite(parsed) || parsed < 1) { |
| 573 | +const parsed = parseStrictPositiveInteger(raw); |
| 574 | +if (parsed === undefined) { |
574 | 575 | return fallbackMs; |
575 | 576 | } |
576 | | -return Math.floor(parsed); |
| 577 | +return parsed; |
577 | 578 | } |
578 | 579 | |
579 | 580 | function resolveTelegramQaCanaryTimeoutMs(env: NodeJS.ProcessEnv = process.env) { |
|