pub fn resolve_mode(
explicit: Option<&str>,
ci: bool,
profile: Option<(&str, Option<&str>)>,
) -> ModeResolutionExpand description
Decide the mode: the variable, else a CI runner, else the active profile’s declared
mode, else standard. An unreadable word is skipped with its source, never guessed.
use majordomus_cli::reasoning::availability::{resolve_mode, ReasoningMode};
assert_eq!(resolve_mode(Some("offline"), true, None).mode, ReasoningMode::Offline);
assert_eq!(resolve_mode(None, true, Some(("implementation", Some("strict")))).mode, ReasoningMode::Ci);
let r = resolve_mode(None, false, Some(("deep-work", Some("strict"))));
assert_eq!((r.mode, r.source.as_str()), (ReasoningMode::Strict, "profile deep-work"));
assert_eq!(resolve_mode(Some("loud"), false, None).source, "default");