Backend whose catalog to read.
fresh reads the CLI again (doctor); probe and catalog reuse pre-read evidence; context supplies read budget/signal.
The catalog, or undefined when the CLI is not installed, has no catalog or did not answer; an unanswered read is kept in memory only, so a slow CLI is not asked on every call and a later process asks again.
Returns the CLI's catalog: from memory for up to five minutes, else from
models.jsonfor up to a day, else read from the CLI and recorded in both. Keys must match the current installation. Concurrent misses share one read.