* fix(config): read v12+ providers dict alongside legacy custom_providers list
Hermes Agent v12 migrated custom_providers (list) to providers (dict) and
ships get_compatible_custom_providers() so every consumer in core sees a
unified view across both schemas. Studio was the lone holdout — it only
read the legacy list, so any provider declared in the v12+ dict shape
(volcengine-coding, xiaomi-token-plan, …) was silently invisible in the
model picker, catalog refresher, and context-length lookup, even though
hermes CLI and the agent loop resolved them fine.
Add a TypeScript port of the compatibility helper that mirrors Agent's
field aliasing (apiKey/api_key, key_env/api_key_env, model/default_model,
list-of-strings or dict-shaped models, transport/api_mode) and route the
read paths through it: model resolution, catalog refresh, model-context
lookup, coding-agent resolution, and fun-codex media provider lookup.
Write paths (POST/PUT/DELETE in providers.ts) intentionally still target
the legacy list — that's Studio's UI write surface today and changing it
is out of scope for this bug.
Closes#1570
Refs NousResearch/hermes-agent@c449cd1af
* support deleting v12 provider entries
---------
Co-authored-by: simfeng <simfeng@users.noreply.github.com>