@@ -8,10 +8,6 @@ import {
88 resolveNodeFromNodeList ,
99 type NodeMatchCandidate ,
1010} from "openclaw/plugin-sdk/gateway-runtime" ;
11- import {
12- parseStrictFiniteNumber ,
13- parseStrictPositiveInteger ,
14- } from "openclaw/plugin-sdk/infra-runtime" ;
1511import { defaultRuntime } from "openclaw/plugin-sdk/runtime" ;
1612import {
1713 normalizeLowercaseStringOrEmpty ,
@@ -74,6 +70,41 @@ export type CanvasCliDependencies = {
7470type CanvasNodeCandidate = NodeMatchCandidate ;
7571type CanvasSnapshotRequestFormat = "png" | "jpeg" ;
7672
73+ function normalizeNumericString ( value : string ) : string | undefined {
74+ const trimmed = value . trim ( ) ;
75+ return trimmed ? trimmed : undefined ;
76+ }
77+
78+ function parseStrictPositiveInteger ( value : unknown ) : number | undefined {
79+ if ( typeof value === "number" ) {
80+ return Number . isSafeInteger ( value ) && value > 0 ? value : undefined ;
81+ }
82+ if ( typeof value !== "string" ) {
83+ return undefined ;
84+ }
85+ const normalized = normalizeNumericString ( value ) ;
86+ if ( ! normalized || ! / ^ \+ ? \d + $ / . test ( normalized ) ) {
87+ return undefined ;
88+ }
89+ const parsed = Number ( normalized ) ;
90+ return Number . isSafeInteger ( parsed ) && parsed > 0 ? parsed : undefined ;
91+ }
92+
93+ function parseStrictFiniteNumber ( value : unknown ) : number | undefined {
94+ if ( typeof value === "number" ) {
95+ return Number . isFinite ( value ) ? value : undefined ;
96+ }
97+ if ( typeof value !== "string" ) {
98+ return undefined ;
99+ }
100+ const normalized = normalizeNumericString ( value ) ;
101+ if ( ! normalized || ! / ^ [ + - ] ? (?: (?: \d + \. ? \d * ) | (?: \. \d + ) ) (?: e [ + - ] ? \d + ) ? $ / i. test ( normalized ) ) {
102+ return undefined ;
103+ }
104+ const parsed = Number ( normalized ) ;
105+ return Number . isFinite ( parsed ) ? parsed : undefined ;
106+ }
107+
77108function parseCanvasSnapshotRequestFormat ( raw : unknown ) : CanvasSnapshotRequestFormat {
78109 const format = normalizeLowercaseStringOrEmpty ( normalizeOptionalString ( raw ) ?? "jpg" ) ;
79110 switch ( format ) {
0 commit comments