{"record":{"id":"65241b644ccbc120","repo":"can1357/oh-my-pi","slug":"openrouter-variant-must-be-default-nitro-floor","errorCode":null,"errorMessage":"--openrouter-variant must be default, nitro, floor, online, or exacto","messagePattern":"--openrouter-variant must be default, nitro, floor, online, or exacto","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/metaharness/src/tb/cli.ts","lineNumber":174,"sourceCode":"\t\t\tcase \"--forever\":\n\t\t\t\tconfig.forever = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--budget\":\n\t\t\t\tconfig.budget = Number(take());\n\t\t\t\tbreak;\n\t\t\tcase \"--jobs-dir\":\n\t\t\t\tconfig.jobsDir = path.resolve(take());\n\t\t\t\tbreak;\n\t\t\tcase \"--gateway-url\":\n\t\t\t\tconfig.gatewayUrl = take();\n\t\t\t\tbreak;\n\t\t\tcase \"--gateway-token\":\n\t\t\t\tconfig.gatewayToken = take();\n\t\t\t\tbreak;\n\t\t\tcase \"--openrouter-variant\": {\n\t\t\t\tconst value = take();\n\t\t\t\tif (!isOpenRouterVariant(value)) {\n\t\t\t\t\tthrow new Error(\"--openrouter-variant must be default, nitro, floor, online, or exacto\");\n\t\t\t\t}\n\t\t\t\tconfig.openrouterVariant = value;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"--rebuild-agent\":\n\t\t\t\tconfig.rebuildAgent = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--vmon-url\":\n\t\t\t\tconfig.vmonUrl = take();\n\t\t\t\tbreak;\n\t\t\tcase \"--vmon-token\":\n\t\t\t\tconfig.vmonToken = take();\n\t\t\t\tbreak;\n\t\t\tcase \"--list\":\n\t\t\t\tconfig.list = true;\n\t\t\t\tbreak;\n\t\t\tcase \"-h\":\n\t\t\tcase \"--help\":","sourceCodeStart":156,"sourceCodeEnd":192,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/metaharness/src/tb/cli.ts#L156-L192","documentation":"parseArgs validates the --openrouter-variant flag with isOpenRouterVariant, which accepts only default, nitro, floor, online, or exacto. Any other value is rejected with this error.","triggerScenarios":"`tb --openrouter-variant <value>` where value is misspelled, capitalized (e.g. 'Nitro'), or an unsupported variant name.","commonSituations":"Typo like --openrouter-variant=nitro-fast; copying a variant name from OpenRouter docs that metaharness does not support; quoting/case drift in wrapper scripts.","solutions":["Use one of: default, nitro, floor, online, exacto","Check spelling and case (all lowercase)","Run `tb --help` to see the accepted values"],"exampleFix":"// before\n$ tb --openrouter-variant=Nitro --model openrouter/x/y\n// after\n$ tb --openrouter-variant=nitro --model openrouter/x/y","handlingStrategy":"validation","validationCode":"const VARIANTS = [\"default\", \"nitro\", \"floor\", \"online\", \"exacto\"] as const;\nif (!VARIANTS.includes(variant)) throw new Error(`bad variant: ${variant}`);","typeGuard":"const isOpenRouterVariant = (v: string): v is \"default\" | \"nitro\" | \"floor\" | \"online\" | \"exacto\" =>\n  [\"default\", \"nitro\", \"floor\", \"online\", \"exacto\"].includes(v);","tryCatchPattern":"try {\n  config = parseArgs(args);\n} catch (err) {\n  if (String(err.message).includes(\"--openrouter-variant\")) {\n    console.error(`${err.message} (got: ${variant})`);\n    process.exit(2);\n  }\n  throw err;\n}","preventionTips":["Keep allowed variants in one lowercase const array","Use shell completion or a wrapper to constrain values","Validate variant strings from env/config files before passing"],"tags":["cli","validation","openrouter"],"backgroundTag":"invalid-enum-value","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}