mirror of
https://github.com/mudler/LocalAI.git
synced 2026-07-30 18:09:05 -04:00
* feat(config): add model artifact source contract Assisted-by: Codex:GPT-5 [Codex] * feat(downloader): add authenticated raw-byte progress Assisted-by: Codex:GPT-5 [Codex] * feat(huggingface): resolve immutable snapshot manifests Assisted-by: Codex:GPT-5 [Codex] * feat(models): add artifact storage primitives Assisted-by: Codex:GPT-5 [Codex] * feat(models): materialize pinned Hugging Face snapshots Assisted-by: Codex:GPT-5 [Codex] * feat(models): bind managed snapshots at runtime Assisted-by: Codex:GPT-5 [Codex] * feat(gallery): materialize model artifacts during install Assisted-by: Codex:GPT-5 [Codex] * feat(gallery): declare managed Hugging Face artifacts Assisted-by: Codex:GPT-5 [Codex] * feat(models): preload managed model artifacts Assisted-by: Codex:GPT-5 [Codex] * fix(gallery): retain shared artifact caches on delete Assisted-by: Codex:GPT-5 [Codex] * feat(models): report artifact acquisition progress Assisted-by: Codex:GPT-5 [Codex] * refactor(backends): load managed models from ModelFile Assisted-by: Codex:GPT-5 [Codex] * refactor(backends): load staged speech model snapshots Assisted-by: Codex:GPT-5 [Codex] * refactor(backends): use staged snapshots in engine backends Assisted-by: Codex:GPT-5 [Codex] * test(distributed): cover staged artifact snapshots Assisted-by: Codex:GPT-5 [Codex] * docs: explain managed model artifacts Assisted-by: Codex:GPT-5 [Codex] * docs: add product design context Assisted-by: Codex:GPT-5 [Codex] * feat(ui): show model artifact download progress Assisted-by: Codex:GPT-5 [Codex] * Eagerly materialize Hugging Face artifacts Materialize HF-backed model references as managed GGUF artifacts during load, with lazy download retained only as fallback. Assisted-by: Codex:GPT-5 [shell] * Refactor HF downloads through a shared executor Assisted-by: Codex:GPT-5 [shell] * drop Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
41 lines
856 B
Go
41 lines
856 B
Go
package modelartifacts
|
|
|
|
import "context"
|
|
|
|
type Phase string
|
|
|
|
const (
|
|
PhaseResolving Phase = "resolving"
|
|
PhaseDownloading Phase = "downloading"
|
|
PhaseVerifying Phase = "verifying"
|
|
PhaseCommitting Phase = "committing"
|
|
PhasePersisting Phase = "persisting"
|
|
)
|
|
|
|
type ProgressEvent struct {
|
|
Phase Phase
|
|
Artifact string
|
|
File string
|
|
CurrentBytes int64
|
|
TotalBytes int64
|
|
CompletedFiles int
|
|
TotalFiles int
|
|
}
|
|
|
|
type ProgressSink func(ProgressEvent)
|
|
|
|
type progressSinkKey struct{}
|
|
|
|
func WithProgressSink(ctx context.Context, sink ProgressSink) context.Context {
|
|
if sink == nil {
|
|
return ctx
|
|
}
|
|
return context.WithValue(ctx, progressSinkKey{}, sink)
|
|
}
|
|
|
|
func ReportProgress(ctx context.Context, event ProgressEvent) {
|
|
if sink, ok := ctx.Value(progressSinkKey{}).(ProgressSink); ok && sink != nil {
|
|
sink(event)
|
|
}
|
|
}
|