Abstraction over the plugin registry catalog backend.
Implementations may call Edge, a local cache, or a stub.
The interface itself is transport-agnostic; concrete implementations live
alongside it in this package (see EdgeRegistryPluginProvider) so we
avoid app-framework ↔ edge-client cycles, but they only need to satisfy
this shape — callers can substitute their own.
Returns all known versions of a plugin identified by its GitHub repo slug.
Until the backend implements a versions endpoint, implementations MUST
return at least one entry representing the current/latest release.
Abstraction over the plugin registry catalog backend. Implementations may call Edge, a local cache, or a stub.
The interface itself is transport-agnostic; concrete implementations live alongside it in this package (see EdgeRegistryPluginProvider) so we avoid
app-framework ↔ edge-clientcycles, but they only need to satisfy this shape — callers can substitute their own.