mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-13 18:32:12 +03:00
A connection's synced model catalog (populated via Import Models, or opt-in autoFetchModels/autoSync) was treated as authoritative forever once populated. lookupModelMeta (src/sse/services/model.ts) rejects any model absent from an authoritative synced catalog, and nothing ever refreshed it automatically (modelSyncScheduler only re-syncs autoSync:true connections, off by default). A NVIDIA connection synced once therefore had routing permanently pinned to that moment's catalog: live upstream models added afterwards (even ones present in the current static registry, e.g. moonshotai/kimi-k3) were rejected with 'not available in the active live catalog' indefinitely. Add a per-connection synced_models_at timestamp (provider_connections, migration 176), stamped by replaceSyncedAvailableModelsForConnection on every sync. getActiveSyncedCatalog now only treats a provider's synced catalog as authoritative while at least one active connection was synced within OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS (default 30 days); once every connection is stale — or was never synced, e.g. pre-migration rows — it fails open the same way an unsynced provider already does, instead of gating on a frozen point-in-time snapshot forever. Root cause confirmed via a TDD repro proven RED against src/lib/db/models.ts, src/lib/db/models/activeSyncedCatalog.ts and src/lib/db/providers.ts as they stood on release/v3.8.51 (all 5 new assertions failed — the DB did not even have the synced_models_at column yet), then GREEN after the fix (tests/unit/nvidia-stale-synced-catalog-12849.test.ts). The narrower reporter-blamed cause (a stale hand-maintained open-sse/config/nvidiaHostedModels.snapshot.json allowlist) was already fixed by #12538 and is not read by any runtime routing path. Refs #12849