package galleryop import ( "context" "github.com/mudler/LocalAI/core/gallery" ) // ProgressCallback reports download progress for model/backend installations. type ProgressCallback func(fileName, current, total string, percentage float64) // ModelManager handles model install and delete lifecycle. type ModelManager interface { InstallModel(ctx context.Context, op *ManagementOp[gallery.GalleryModel, gallery.ModelConfig], progressCb ProgressCallback) error DeleteModel(name string) error } // BackendManager handles backend install, delete, upgrade, and listing lifecycle. type BackendManager interface { InstallBackend(ctx context.Context, op *ManagementOp[gallery.GalleryBackend, any], progressCb ProgressCallback) error DeleteBackend(name string) error ListBackends() (gallery.SystemBackends, error) UpgradeBackend(ctx context.Context, name string, progressCb ProgressCallback) error CheckUpgrades(ctx context.Context) (map[string]gallery.UpgradeInfo, error) // IsDistributed reports whether installs fan out across worker nodes. // The HTTP layer uses this to refuse hardware-specific (non-meta) installs // on /api/backends/apply in distributed mode — a CPU build silently // landing on every GPU node is the footgun this guards against. IsDistributed() bool }