Inline image vision + tier fallback that prefers stronger over weaker

FeatureAIService
Shipped
July 18, 2026 at 6:27 PM UTC
Author
Kamo
Commit
0ce89dd

Two limits made org-configured vision unusable for whole classes of caller. 1. Vision was URL-ONLY. Every caller had to stand up public, provider-fetchable serving infrastructure — a signer, an unauthenticated serve endpoint, an ingress. A ClusterIP service could not use vision at all no matter what the org had configured. Adapters now is strict — a malformed data: URI falls back to URL handling, so an ordinary URL can never be turned into a broken inline part. Callers with a signed public URL are unaffected. 2. Tier selection only distinguished "exact match" from "everything else", so a LIGHT or untiered provider could outrank a configured HEAVY purely on priorityOrder — a MEDIUM request could quietly read a document with a model too weak for it. Ordering is now requested tier -> stronger tiers (strongest first) -> untiered -> weaker tiers. Under-serving is the failure that produces wrong answers, so over-serving is preferred to it. Tier stays a preference, never a filter, and priorityOrder still breaks ties. Shared by both vision and text selection, which had duplicated the old comparator. Also adds GET **************** resolved through the real routing path: MlosAiClient collapses every failure into an empty Optional, so "no provider configured" is otherwise indistinguishable from "the model erred" and nothing can tell a member which. This is what lets a UI say so.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing