list Model Names
Every model of this class the deployment can serve - registered at startup, or being served by a local runner since.
A late model is listed as well as usable, because a listing is what an operator picks from: one that showed only what was captured at boot would leave a freshly pulled model invisible to the very UI meant to select it, and "pull it and it is there" is the whole point. Every name here answers to getLlm / getEmbeddingService by name.
The local part is as fresh as the catalogs are, so a model pulled seconds ago can be usable BY NAME before it is listed: a by-name lookup has a name to miss on and re-asks the runner, while a listing has nothing to miss on and is served from the snapshot. The gap is at most LocalModelDiscoveryProperties.refreshInterval, and closing it would mean an HTTP round trip per listing - the cost the snapshot exists to avoid.