dbc5d7c60b
host.warmAgent — the (connection, profile) sibling of warmProfile that bot-row.tsx fires on pointerEnter for multi-source roster rows — still dialed openGatewayForAgent directly, so a pointer sweep across a mixed roster kept spawning at pointer speed past maxBackends on the registry path even after warmProfile was guarded. Same bug class as #103631, different door. prewarmProfileBackend now takes an optional connectionId: the active-profile no-op, the 60s throttle (keyed by the pool scope key) and the pool-saturation skip apply unchanged, and the dial picks openGatewayForAgent for a scoped source. One resolver owns every speculative warm in the app; the real click still spawns on demand.