pub fn merge_catalog(
current: &[ServiceDescriptor],
upstream: &ModelsDevPayload,
) -> Result<(Vec<ServiceDescriptor>, CatalogDiff)>Expand description
Merge a models.dev payload into the current catalog.
Field precedence (per the sync design):
- Provider service fields (auth, base URL, tiers, setup, …): catalog wins.
- Provider convenience fields (
api_base_url,npm_package,doc_url): catalog wins; models.dev fills only when the catalog value is empty. - Model fields (cost, limit, modalities, capabilities, …): models.dev wins; catalog-only models (absent upstream) are preserved in place.
Returns the merged providers and a CatalogDiff. Pure: no I/O.