mirror of
https://github.com/docker/docker-agent.git
synced 2026-11-04 10:02:15 +00:00
Resolving a model for a user-defined custom provider (a name that is not a built-in or alias, e.g. mistral_gateway) loaded the full models.dev catalog, which performs a blocking 30s GET to https://models.dev/api.json. In internet-restricted environments this hung the request loop (loop.go) and session compaction on every turn, making a self-contained custom-provider config (base_url + token_key) unusable. modelsdev.Store gains WithKnownProvider: a provider the predicate rejects is resolved from the cache only and never triggers an outbound fetch (a missing cache yields an empty catalog, so the lookup returns a clean "provider not found"). The cache-only snapshot is memoized separately from the authoritative catalog, keeping the per-turn hot path cheap (no repeated catalog re-parse) without ever satisfying a fetch-eligible lookup for a known provider. The runtime's default store (lazyModelStore) and RuntimeConfig.ModelsDevStore() are wired with provider.IsKnownProvider, so only catalog providers (built-ins and aliases) can reach the network; custom providers resolve locally and the agent stays usable air-gapped.