refactor(cli): decompose list_authenticated_providers and switch_model
model_switch.py (4405 -> 3712): - list_authenticated_providers (1367 lines) is a thin driver over _PickerBuild state and one builder per section (_lap_builtin_rows, _lap_overlay_rows, _lap_canonical_rows, _lap_user_provider_rows, _lap_bare_custom_row, _lap_custom_provider_rows). Credential checks shared with _collect_authed_provider_slugs are single-copy helpers (_iter_builtin_candidates, _auth_store_has_provider, _raw_pool_usable, _pool_usable, _overlay_has_env_creds, _has_aws_sdk_creds_for_listing); live/curated lookup (_live_or_curated_ids, _aws_live_or_curated_ids, _nous_picker_model_ids), endpoint discovery (_discover_endpoint_models) and config-entry parsing are deduped across sections 1/2/2b/3/3b/4. - switch_model: _switch_fail, _runtime_creds, _entry_configured_key, _ollama_configured_base, _unknown_provider_message, _aggregator_alias_error, _aggregator_catalog_match, _config_declares_model, _apply_direct_alias_endpoint replace inline blocks; four copies of the resolve_runtime_provider unpack collapse to one. - _model_sort_key: one _flush() for the four repeated version-flush blocks (identical on 400k random ids). Row dicts, ordering, error strings and lazy-import patch points unchanged; picker rows and the interactive hermes model screen byte-identical vs base.
This commit is contained in: