(argv: string[], projectDirectory: string)
| 122 | } |
| 123 | |
| 124 | export function parseRunnerConfig(argv: string[], projectDirectory: string): RunnerConfig { |
| 125 | const datasetPath = resolve(getRequiredFlag(argv, "--dataset")); |
| 126 | const start = getFlagValue(argv, "--start"); |
| 127 | const end = getFlagValue(argv, "--end"); |
| 128 | const outputDir = getFlagValue(argv, "--output-dir"); |
| 129 | const openCodeBaseUrl = |
| 130 | getFlagValue(argv, "--opencode-url") ?? process.env.OPENCODE_BASE_URL ?? "http://127.0.0.1:21354"; |
| 131 | const turnDelayMs = parseBooleanFlag(argv, "--fast") |
| 132 | ? 50 |
| 133 | : Number.parseInt(getFlagValue(argv, "--turn-delay-ms") ?? "2000", 10); |
| 134 | const sessionDelayMs = parseBooleanFlag(argv, "--fast") |
| 135 | ? 250 |
| 136 | : Number.parseInt(getFlagValue(argv, "--session-delay-ms") ?? "10000", 10); |
| 137 | const finalQuestionDelayMs = parseBooleanFlag(argv, "--fast") |
| 138 | ? 50 |
| 139 | : Number.parseInt(getFlagValue(argv, "--final-delay-ms") ?? "1000", 10); |
| 140 | const parallelism = Number.parseInt(getFlagValue(argv, "--parallel") ?? "1", 10); |
| 141 | const cleanupSessions = parseBooleanFlag(argv, "--cleanup"); |
| 142 | const resume = parseBooleanFlag(argv, "--resume"); |
| 143 | const fastMode = parseBooleanFlag(argv, "--fast"); |
| 144 | const types = parseQuestionTypes(getFlagValue(argv, "--types")); |
| 145 | const questionIds = parseStringList(getFlagValue(argv, "--question-ids")); |
| 146 | const paths = buildRunnerPaths(datasetPath, outputDir); |
| 147 | const selectionSignature = buildSelectionSignature({ |
| 148 | datasetPath, |
| 149 | start: start ? parseIntegerFlag(start, "--start") : undefined, |
| 150 | end: end ? parseIntegerFlag(end, "--end") : undefined, |
| 151 | types, |
| 152 | questionIds, |
| 153 | }); |
| 154 | |
| 155 | return { |
| 156 | datasetPath, |
| 157 | projectDirectory, |
| 158 | openCodeBaseUrl, |
| 159 | openCodeRequestTimeoutMs: Number.parseInt( |
| 160 | getFlagValue(argv, "--request-timeout-ms") ?? "300000", |
| 161 | 10, |
| 162 | ), |
| 163 | turnDelayMs, |
| 164 | sessionDelayMs, |
| 165 | finalQuestionDelayMs, |
| 166 | parallelism, |
| 167 | cleanupSessions, |
| 168 | fastMode, |
| 169 | resume, |
| 170 | maxRequestAttempts: Number.parseInt(getFlagValue(argv, "--max-attempts") ?? "5", 10), |
| 171 | retryBaseDelayMs: Number.parseInt(getFlagValue(argv, "--retry-base-delay-ms") ?? "2000", 10), |
| 172 | openCodePricing: { |
| 173 | inputPerMillionUsd: Number.parseFloat( |
| 174 | getFlagValue(argv, "--opencode-input-usd-per-million") ?? "0", |
| 175 | ), |
| 176 | outputPerMillionUsd: Number.parseFloat( |
| 177 | getFlagValue(argv, "--opencode-output-usd-per-million") ?? "0", |
| 178 | ), |
| 179 | reasoningPerMillionUsd: Number.parseFloat( |
| 180 | getFlagValue(argv, "--opencode-reasoning-usd-per-million") ?? "0", |
| 181 | ), |
no test coverage detected