@@ -85,24 +85,24 @@ type Report = {
8585 cpuProfilePath ?: string ;
8686} ;
8787
88- function parseFlagValue ( flag : string ) : string | undefined {
89- const index = process . argv . indexOf ( flag ) ;
88+ function parseFlagValue ( flag : string , args = process . argv . slice ( 2 ) ) : string | undefined {
89+ const index = args . indexOf ( flag ) ;
9090 if ( index === - 1 ) {
9191 return undefined ;
9292 }
93- const value = process . argv [ index + 1 ] ;
94- if ( ! value || value . startsWith ( "-- " ) ) {
93+ const value = args [ index + 1 ] ;
94+ if ( ! value || value . startsWith ( "-" ) ) {
9595 throw new CliArgumentError ( `${ flag } requires a value` ) ;
9696 }
9797 return value ;
9898}
9999
100- function hasFlag ( flag : string ) : boolean {
101- return process . argv . includes ( flag ) ;
100+ function hasFlag ( flag : string , args = process . argv . slice ( 2 ) ) : boolean {
101+ return args . includes ( flag ) ;
102102}
103103
104- function parsePositiveInt ( flag : string , fallback : number ) : number {
105- const raw = parseFlagValue ( flag ) ;
104+ function parsePositiveInt ( flag : string , fallback : number , args = process . argv . slice ( 2 ) ) : number {
105+ const raw = parseFlagValue ( flag , args ) ;
106106 if ( ! raw ) {
107107 return fallback ;
108108 }
@@ -116,8 +116,8 @@ function parsePositiveInt(flag: string, fallback: number): number {
116116 return value ;
117117}
118118
119- function parseNonNegativeInt ( flag : string , fallback : number ) : number {
120- const raw = parseFlagValue ( flag ) ;
119+ function parseNonNegativeInt ( flag : string , fallback : number , args = process . argv . slice ( 2 ) ) : number {
120+ const raw = parseFlagValue ( flag , args ) ;
121121 if ( ! raw ) {
122122 return fallback ;
123123 }
@@ -138,28 +138,32 @@ function validateCliArgs(args = process.argv.slice(2)): void {
138138 continue ;
139139 }
140140 if ( VALUE_FLAGS . has ( arg ) ) {
141+ const value = args [ index + 1 ] ;
142+ if ( ! value || value . startsWith ( "-" ) ) {
143+ throw new CliArgumentError ( `${ arg } requires a value` ) ;
144+ }
141145 index += 1 ;
142146 continue ;
143147 }
144148 throw new CliArgumentError ( `Unknown argument: ${ arg } ` ) ;
145149 }
146150}
147151
148- function parseOptions ( ) : Options {
149- validateCliArgs ( ) ;
152+ function parseOptions ( args = process . argv . slice ( 2 ) ) : Options {
153+ validateCliArgs ( args ) ;
150154 return {
151- agentCount : parsePositiveInt ( "--agents" , 8 ) ,
152- cpuProfDir : parseFlagValue ( "--cpu-prof-dir" ) ,
153- cpuProfOutput : parseFlagValue ( "--cpu-prof-output" ) ,
154- json : hasFlag ( "--json" ) ,
155- keepTemp : hasFlag ( "--keep-temp" ) ,
156- lookupsPerRun : parsePositiveInt ( "--lookups" , 32 ) ,
157- modelsPerProvider : parsePositiveInt ( "--models-per-provider" , 16 ) ,
158- output : parseFlagValue ( "--output" ) ,
159- providers : parsePositiveInt ( "--providers" , 48 ) ,
160- runs : parsePositiveInt ( "--runs" , 8 ) ,
161- runtimeHooks : hasFlag ( "--runtime-hooks" ) ,
162- warmup : parseNonNegativeInt ( "--warmup" , 1 ) ,
155+ agentCount : parsePositiveInt ( "--agents" , 8 , args ) ,
156+ cpuProfDir : parseFlagValue ( "--cpu-prof-dir" , args ) ,
157+ cpuProfOutput : parseFlagValue ( "--cpu-prof-output" , args ) ,
158+ json : hasFlag ( "--json" , args ) ,
159+ keepTemp : hasFlag ( "--keep-temp" , args ) ,
160+ lookupsPerRun : parsePositiveInt ( "--lookups" , 32 , args ) ,
161+ modelsPerProvider : parsePositiveInt ( "--models-per-provider" , 16 , args ) ,
162+ output : parseFlagValue ( "--output" , args ) ,
163+ providers : parsePositiveInt ( "--providers" , 48 , args ) ,
164+ runs : parsePositiveInt ( "--runs" , 8 , args ) ,
165+ runtimeHooks : hasFlag ( "--runtime-hooks" , args ) ,
166+ warmup : parseNonNegativeInt ( "--warmup" , 1 , args ) ,
163167 } ;
164168}
165169
@@ -468,11 +472,13 @@ function printHuman(report: Report, cpuProfilePath?: string): void {
468472}
469473
470474async function main ( ) : Promise < void > {
471- if ( hasFlag ( "--help" ) || hasFlag ( "-h" ) ) {
475+ const args = process . argv . slice ( 2 ) ;
476+ validateCliArgs ( args ) ;
477+ if ( hasFlag ( "--help" , args ) || hasFlag ( "-h" , args ) ) {
472478 printUsage ( ) ;
473479 return ;
474480 }
475- const options = parseOptions ( ) ;
481+ const options = parseOptions ( args ) ;
476482 const tempRoot = await mkdtemp ( path . join ( tmpdir ( ) , "openclaw-issue-78851-" ) ) ;
477483 const workspaceDir = path . join ( tempRoot , "workspace" ) ;
478484 await mkdir ( workspaceDir , { recursive : true } ) ;
0 commit comments