X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/2a276c273c21a1752d541bf87e074c5d1c27e30f..277a37a79b51910074a29ca6d70fae75c73619b7:/daemon.go diff --git a/daemon.go b/daemon.go index 3a54b1a..2a93f1d 100644 --- a/daemon.go +++ b/daemon.go @@ -364,9 +364,22 @@ func daemonServe(ctx context.Context, listener net.Listener, bot *TelegramBot, w loops = append(loops, loop) } + messages, err := openDaemonMessages(loops) + if err != nil { + return errors.Join(fmt.Errorf("open agent messages: %w", err), listener.Close()) + } + hub.snapshot = func(ctx context.Context, snapshot func() error) error { - return daemonSnapshot(ctx, loops, snapshot) + return messages.SnapshotAgents(ctx, snapshot) + } + + runtime := &DaemonChildren{ + ctx: ctx, + cancel: cancel, + root: l, + messages: messages, } + l.tools.children = runtime var workers sync.WaitGroup @@ -442,7 +455,7 @@ func daemonServe(ctx context.Context, listener net.Listener, bot *TelegramBot, w hub.CloseAll() workers.Wait() - return errors.Join(err, whatsappErr, schedulesErr, botErr, errors.Join(childErrors...)) + return errors.Join(err, whatsappErr, schedulesErr, botErr, errors.Join(childErrors...), runtime.Close()) } // daemonRunChild runs a child's turn loop and its schedules until either stops.