@@ -35,6 +35,24 @@ const DEFAULT_CPU_CORE_WARN = 0.9;
3535const DEFAULT_HOT_WALL_WARN_MS = 30_000 ;
3636const DEFAULT_MAX_RSS_WARN_MB = 1536 ;
3737const DEFAULT_QA_PLUGIN_CHUNK_SIZE = 12 ;
38+ const SINGLE_VALUE_FLAGS = new Set ( [
39+ "--build-timeout-ms" ,
40+ "--command-timeout-ms" ,
41+ "--cpu-core-warn" ,
42+ "--hot-wall-warn-ms" ,
43+ "--limit" ,
44+ "--max-rss-warn-mb" ,
45+ "--output-dir" ,
46+ "--qa-cpu-regression-multiplier" ,
47+ "--qa-plugin-chunk-size" ,
48+ "--qa-timeout-ms" ,
49+ "--qa-wall-regression-multiplier" ,
50+ "--repo-root" ,
51+ "--rss-anomaly-multiplier" ,
52+ "--shard-index" ,
53+ "--shard-total" ,
54+ "--wall-anomaly-multiplier" ,
55+ ] ) ;
3856const COMMAND_OUTPUT_MAX_BUFFER_BYTES = 16 * 1024 * 1024 ;
3957const MAX_TIMER_TIMEOUT_MS = 2_147_000_000 ;
4058const ANSI_PATTERN = new RegExp ( String . raw `\u001B\[[0-9;]*m` , "gu" ) ;
@@ -79,8 +97,15 @@ export function parseArgs(argv) {
7997 } ;
8098 const envIds = normalizeCsv ( process . env . OPENCLAW_PLUGIN_GATEWAY_GAUNTLET_IDS ) ;
8199 options . pluginIds . push ( ...envIds ) ;
100+ const seenSingleValueFlags = new Set ( ) ;
82101 parseArgv: for ( let index = 0 ; index < args . length ; index += 1 ) {
83102 const arg = args [ index ] ;
103+ if ( SINGLE_VALUE_FLAGS . has ( arg ) ) {
104+ if ( seenSingleValueFlags . has ( arg ) ) {
105+ throw new Error ( `${ arg } was provided more than once` ) ;
106+ }
107+ seenSingleValueFlags . add ( arg ) ;
108+ }
84109 const readValue = ( ) => {
85110 const value = args [ index + 1 ] ;
86111 if ( ! value || value . startsWith ( "-" ) ) {
0 commit comments