2755bf558e
Follow-up to srojk34's explicit-provider unwrap (PR #56691): - Extract _resolve_moa_aggregator() as the single preset->aggregator resolver shared by _resolve_auto(), _resolve_task_provider_model(), and resolve_provider_client() so preset lookup/validation can't drift. - When the main provider is moa, the aggregator model is now the default for every UNSET auxiliary model: _read_main_model_for_aux() substitutes the preset's acting (aggregator) model wherever fallback chains pre-filled from _read_main_model() (router prefill, custom-endpoint fallback, named-custom default, external-process default, _try_main_agent_model_fallback). - Unwrap moa at the resolve_provider_client() chokepoint so direct callers (vision auto-detect, plugin code) can't dead-end in the unknown-provider branch, and unwrap the vision auto-detect main provider before capability probes run against the preset name. - Real-config tests: temp HERMES_HOME + actual config.yaml exercising the genuine load_config()/resolve_moa_preset() boundary.