Files
LocalAI/core/services/jobs/publish.go
Ettore Di Giacinto 59108fbe32 feat: add distributed mode (#9124)
* feat: add distributed mode (experimental)

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix data races, mutexes, transactions

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactorings

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fixups

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix events and tool stream in agent chat

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* use ginkgo

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix(cron): compute correctly time boundaries avoiding re-triggering

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* enhancements, refactorings

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* do not flood of healthy checks

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* do not list obvious backends as text backends

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* tests fixups

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* refactoring and consolidation

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Drop redundant healthcheck

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* enhancements, refactorings

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-03-30 00:47:27 +02:00

37 lines
1.1 KiB
Go

package jobs
import (
"github.com/mudler/LocalAI/core/services/messaging"
"github.com/mudler/xlog"
)
// PublishJobResult publishes a terminal job result event and a progress event via NATS.
func PublishJobResult(pub messaging.Publisher, jobID, status, result, errMsg string) {
if err := pub.Publish(messaging.SubjectJobResult(jobID), JobResultEvent{
JobID: jobID,
Status: status,
Result: result,
Error: errMsg,
}); err != nil {
xlog.Error("Failed to publish job result", "jobID", jobID, "error", err)
}
if err := pub.Publish(messaging.SubjectJobProgress(jobID), ProgressEvent{
JobID: jobID,
Status: status,
Message: errMsg,
}); err != nil {
xlog.Error("Failed to publish job progress", "jobID", jobID, "error", err)
}
}
// PublishJobProgress publishes a status-only update (no result) via NATS.
func PublishJobProgress(pub messaging.Publisher, jobID, status, message string) {
if err := pub.Publish(messaging.SubjectJobProgress(jobID), ProgressEvent{
JobID: jobID,
Status: status,
Message: message,
}); err != nil {
xlog.Error("Failed to publish job progress", "jobID", jobID, "error", err)
}
}