{"record":{"id":"aa49d9cc0124369a","repo":"pbakaus/impeccable","slug":"msg-dynamic-flow-throw-message-e-g-unknown","errorCode":null,"errorMessage":"{msg} (dynamic Flow::Throw message, e.g. 'Unknown provider(s): {}' or 'Unknown install scope: {v}. Use --scope=project or --scope=global.')","messagePattern":"(.+?) \\(dynamic Flow::Throw message, e\\.g\\. 'Unknown provider\\(s\\): (.+?)' or 'Unknown install scope: (.+?)\\. Use --scope=project or --scope=global\\.'\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/skills/src/commands.rs","lineNumber":544,"sourceCode":"\n/// Sentinel for the JS `process.exit(1)` inside install's already-installed\n/// `try` block (an exit, not an error, so no \"Install check failed\" line).\nconst EXIT_1: &str = \"\\u{0}exit1\";\n\n/// JS: install(flags)\nfn install(flags: &[String], io: &mut Io) -> R<()> {\n    let (sys, mut prompt) = ctx(io);\n    let force = has_flag(flags, \"--force\");\n    let yes = has_flag(flags, \"-y\") || has_flag(flags, \"--yes\");\n    let install_hooks = !has_flag(flags, \"--no-hooks\");\n    let project_root = sys.find_project_root();\n    if !yes {\n        print_install_intro(&prompt, io);\n    }\n    let plan = match choose_install_plan(&sys, &mut prompt, io, &project_root, flags, yes) {\n        Ok(p) => p,\n        Err(Flow::Throw(msg)) => {\n            err(io, &msg);\n            err(io, \"Pass providers explicitly, e.g. --providers=claude,cursor\");\n            return Err(Flow::Exit(1));\n        }\n        Err(other) => return Err(other),\n    };\n    let InstallPlan { targets, scope, install_root, hook_root, explicit } = plan;\n    let scope_opt = Some(scope);\n    let existing = sys.is_already_installed(&install_root, scope_opt);\n    let installed_targets: Vec<&'static str> = if existing.is_some() {\n        sys.find_installed_providers(&install_root, scope_opt)\n    } else {\n        Vec::new()\n    };\n    let missing_selected_targets: Vec<&'static str> = if existing.is_some() && !force && explicit {\n        targets.iter().copied().filter(|p| !installed_targets.contains(p)).collect()\n    } else {\n        Vec::new()\n    };","sourceCodeStart":526,"sourceCodeEnd":562,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/skills/src/commands.rs#L526-L562","documentation":"In `install`, `choose_install_plan` can return `Flow::Throw(msg)` with dynamic messages such as 'Unknown provider(s): {}' or 'Unknown install scope: {v}. Use --scope=project or --scope=global.' These are printed and the command exits 1 with a hint to pass providers explicitly.","triggerScenarios":"Running `impeccable install` with an unrecognized `--providers` value or an invalid `--scope` value.","commonSituations":"Typos like `--providers=Cluad`, unsupported scope strings like `--scope=local`, or provider names not in the supported set.","solutions":["Use valid provider names, e.g. `--providers=claude,cursor`","Use `--scope=project` or `--scope=global` exactly","List available providers via help/docs and correct the value"],"exampleFix":"// before\nimpeccable install --scope=local\n// after\nimpeccable install --scope=project","handlingStrategy":"validation","validationCode":"const VALID_PROVIDERS = ['claude','cursor'];\nif (!providers.split(',').every(p => VALID_PROVIDERS.includes(p))) throw new Error('Unknown provider');\nif (!['project','global'].includes(scope)) throw new Error('Unknown scope');","typeGuard":null,"tryCatchPattern":"try { await install(); } catch (e) { if (/Unknown (provider|install scope)/.test(String(e))) console.error('Fix --providers/--scope values'); }","preventionTips":["Validate --providers and --scope values in wrapper scripts","Use documented enum values exactly","Keep provider list in sync with CLI releases"],"tags":["cli","install","invalid-argument"],"backgroundTag":"invalid-enum-value","analyzedSha":"2bc2879276c1f321a53c4ca99d3371e411329b52","analyzedAt":"2026-09-08T04:51:14.109Z","contentChangedAt":"2026-09-08T04:51:14.109Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}