refactor(numbers): share non-negative finite guard · openclaw/openclaw@0a33814
vincentkoc
·
2026-06-23
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -11,6 +11,7 @@ import { patchSessionEntry } from "../../config/sessions/session-accessor.js";
|
11 | 11 | import { resolveMaintenanceConfigFromInput } from "../../config/sessions/store-maintenance.js"; |
12 | 12 | import type { OpenClawConfig } from "../../config/types.openclaw.js"; |
13 | 13 | import { createLazyImportLoader } from "../../shared/lazy-promise.js"; |
| 14 | +import { resolveNonNegativeNumber } from "../../shared/number-coercion.js"; |
14 | 15 | import { clearCliSession, setCliSessionBinding, setCliSessionId } from "../cli-session.js"; |
15 | 16 | import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js"; |
16 | 17 | import { isCliProvider } from "../model-selection.js"; |
@@ -29,10 +30,6 @@ async function getContextModule() {
|
29 | 30 | return await contextModuleLoader.load(); |
30 | 31 | } |
31 | 32 | |
32 | | -function resolveNonNegativeNumber(value: number | undefined): number | undefined { |
33 | | -return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined; |
34 | | -} |
35 | | - |
36 | 33 | function resolvePositiveInteger(value: number | undefined): number | undefined { |
37 | 34 | if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) { |
38 | 35 | return undefined; |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -18,6 +18,7 @@ import {
|
18 | 18 | import { updateSessionEntry } from "../../config/sessions/session-accessor.js"; |
19 | 19 | import type { OpenClawConfig } from "../../config/types.openclaw.js"; |
20 | 20 | import { logVerbose } from "../../globals.js"; |
| 21 | +import { resolveNonNegativeNumber } from "../../shared/number-coercion.js"; |
21 | 22 | import { estimateUsageCost, resolveModelCostConfig } from "../../utils/usage-format.js"; |
22 | 23 | |
23 | 24 | function applyCliSessionIdToSessionPatch( |
@@ -67,10 +68,6 @@ function applyCliSessionIdToSessionPatch(
|
67 | 68 | return patch; |
68 | 69 | } |
69 | 70 | |
70 | | -function resolveNonNegativeNumber(value: number | undefined): number | undefined { |
71 | | -return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined; |
72 | | -} |
73 | | - |
74 | 71 | function resolveNonNegativeTokenCount(value: number | undefined): number | undefined { |
75 | 72 | const resolved = resolveNonNegativeNumber(value); |
76 | 73 | return resolved === undefined ? undefined : Math.floor(resolved); |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -39,6 +39,7 @@ import { createDiagnosticMessageLifecycle } from "../../logging/message-lifecycl
|
39 | 39 | import { isCommandLaneTaskTimeoutError } from "../../process/command-queue.js"; |
40 | 40 | import { CommandLane } from "../../process/lanes.js"; |
41 | 41 | import { createLazyImportLoader } from "../../shared/lazy-promise.js"; |
| 42 | +import { resolveNonNegativeNumber } from "../../shared/number-coercion.js"; |
42 | 43 | import { resolveCronSkillsSnapshot } from "../../skills/runtime/cron-snapshot.js"; |
43 | 44 | import type { SkillSnapshot } from "../../skills/types.js"; |
44 | 45 | import { |
@@ -175,10 +176,6 @@ function hasConfiguredAuthProfiles(cfg: OpenClawConfig): boolean {
|
175 | 176 | ); |
176 | 177 | } |
177 | 178 | |
178 | | -function resolveNonNegativeNumber(value: number | undefined): number | undefined { |
179 | | -return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined; |
180 | | -} |
181 | | - |
182 | 179 | function isCronNestedLaneTaskTimeoutError(err: unknown): boolean { |
183 | 180 | return isCommandLaneTaskTimeoutError(err, CommandLane.CronNested); |
184 | 181 | } |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -91,6 +91,7 @@ import {
|
91 | 91 | isWorkspaceRelativeAvatarPath, |
92 | 92 | resolveAvatarMime, |
93 | 93 | } from "../shared/avatar-policy.js"; |
| 94 | +import { resolveNonNegativeNumber } from "../shared/number-coercion.js"; |
94 | 95 | import { normalizeSessionDeliveryFields } from "../utils/delivery-context.shared.js"; |
95 | 96 | import type { ModelCostConfig } from "../utils/usage-format.js"; |
96 | 97 | import { estimateUsageCost, resolveModelCostConfig } from "../utils/usage-format.js"; |
@@ -274,10 +275,6 @@ function resolvePositiveNumber(value: number | null | undefined): number | undef
|
274 | 275 | return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined; |
275 | 276 | } |
276 | 277 | |
277 | | -function resolveNonNegativeNumber(value: number | null | undefined): number | undefined { |
278 | | -return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined; |
279 | | -} |
280 | | - |
281 | 278 | type SessionCompactionCheckpointEntry = NonNullable<SessionEntry["compactionCheckpoints"]>[number]; |
282 | 279 | |
283 | 280 | function isProjectableCompactionCheckpoint( |
|
| Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | /** Shared numeric coercion facade for legacy imports inside core. */ |
2 | 2 | export * from "@openclaw/normalization-core/number-coercion"; |
| 3 | + |
| 4 | +export function resolveNonNegativeNumber(value: number | null | undefined): number | undefined { |
| 5 | +return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined; |
| 6 | +} |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。