From 54f9921953b2baef106f82e7ef060f33e577c70e Mon Sep 17 00:00:00 2001 From: zap Date: Wed, 11 Mar 2026 20:23:17 +0000 Subject: [PATCH] fix(models): keep litellm sync schema-compatible --- scripts/sync-litellm-models.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/sync-litellm-models.py b/scripts/sync-litellm-models.py index f25af21..c780363 100755 --- a/scripts/sync-litellm-models.py +++ b/scripts/sync-litellm-models.py @@ -232,6 +232,7 @@ def official_alias_metadata(model_id: str, official_models: dict[str, Any]) -> d def merge_metadata(existing: dict[str, Any], official: dict[str, Any], litellm_meta: dict[str, Any], model_id: str) -> tuple[dict[str, Any], str]: merged = dict(existing) + merged.pop("metadataSource", None) merged["id"] = model_id merged.setdefault("name", existing.get("name") if isinstance(existing.get("name"), str) else model_id) @@ -255,15 +256,14 @@ def merge_metadata(existing: dict[str, Any], official: dict[str, Any], litellm_m elif field == "reasoning": merged[field] = False - merged["metadataSource"] = source_used return merged, source_used -def build_sync_report(models: list[dict[str, Any]], official_meta: dict[str, Any]): - fallback = [m["id"] for m in models if m.get("metadataSource") == "fallback-default"] - from_official = [m["id"] for m in models if str(m.get("metadataSource", "")).startswith("official-")] - alias_derived = [m["id"] for m in models if str(m.get("metadataSource", "")).startswith("alias:")] - unresolved = [m["id"] for m in models if m.get("metadataSource") == "fallback-default"] +def build_sync_report(models: list[dict[str, Any]], official_meta: dict[str, Any], source_map: dict[str, str]): + fallback = [mid for mid, src in source_map.items() if src == "fallback-default"] + from_official = [mid for mid, src in source_map.items() if src.startswith("official-")] + alias_derived = [mid for mid, src in source_map.items() if src.startswith("alias:")] + unresolved = list(fallback) return { "total": len(models), "officialCount": len(from_official), @@ -308,14 +308,16 @@ def main(): } new_models = [] + source_map: dict[str, str] = {} for mid in model_ids: existing = dict(existing_by_id.get(mid, {})) official = official_alias_metadata(mid, official_models) litellm_meta = metadata_from_litellm(mid, model_rows, model_info) - merged, _ = merge_metadata(existing, official, litellm_meta, mid) + merged, source_used = merge_metadata(existing, official, litellm_meta, mid) new_models.append(merged) + source_map[mid] = source_used - report = build_sync_report(new_models, official_models) + report = build_sync_report(new_models, official_models, source_map) if info_error: report["modelInfoWarning"] = info_error