51239e8e2a
The image-routing vision path calls detect_local_server_type without the provider's API key. Against a remote API-keyed endpoint (sglang / vLLM with --api-key) every leg of the 5-request probe waterfall came back 401 — and because a failed verdict was never written to the in-memory cache (only positive verdicts were), the waterfall re-ran on EVERY image-bearing turn (#89863: 51 detail-less busy-acks observed in one Slack channel while the probe sprayed the user's own server). Two changes: - image_routing._should_probe_ollama_vision now takes the API key and forwards it; a new _resolve_inference_api_key mirrors _resolve_inference_base_url's resolution order (runtime value, model.api_key, providers blocks) so the key always matches the URL being probed. - detect_local_server_type caches a None verdict in memory with a short failure TTL (5 min, vs 1h for positives) so the next turn is served from the negative entry instead of re-running the waterfall — while a transient failure (server starting, key being fixed) recovers in minutes. Negative verdicts are deliberately not written to the cross-process disk cache.