forTenant
A view of this cache bound to tenant, through which nothing can reach another tenant's entries.
The cache key carries the prompt, the conversation and the embedder, and until this it did not carry who was asking, so a deployment serving more than one customer had one key space shared between all of them. See TenantedCache for what that let through and why this is a view rather than a parameter.
Cheap: a view holds this cache and a string, and every call goes to the same store, the same counters and the same in-flight registries. Build one per request without thinking about it.