@@ -35,6 +35,24 @@ const DEFAULT_CPU_CORE_WARN = 0.9;
|
35 | 35 | const DEFAULT_HOT_WALL_WARN_MS = 30_000; |
36 | 36 | const DEFAULT_MAX_RSS_WARN_MB = 1536; |
37 | 37 | const 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 | +]); |
38 | 56 | const COMMAND_OUTPUT_MAX_BUFFER_BYTES = 16 * 1024 * 1024; |
39 | 57 | const MAX_TIMER_TIMEOUT_MS = 2_147_000_000; |
40 | 58 | const ANSI_PATTERN = new RegExp(String.raw`\u001B\[[0-9;]*m`, "gu"); |
@@ -79,8 +97,15 @@ export function parseArgs(argv) {
|
79 | 97 | }; |
80 | 98 | const envIds = normalizeCsv(process.env.OPENCLAW_PLUGIN_GATEWAY_GAUNTLET_IDS); |
81 | 99 | options.pluginIds.push(...envIds); |
| 100 | +const seenSingleValueFlags = new Set(); |
82 | 101 | parseArgv: for (let index = 0; index < args.length; index += 1) { |
83 | 102 | 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 | +} |
84 | 109 | const readValue = () => { |
85 | 110 | const value = args[index + 1]; |
86 | 111 | if (!value || value.startsWith("-")) { |
|