+ loops := []*TurnLoop{l}
+ for _, child := range children {
+ loop, err := child.Loop(nil, func(Event) {
+ })
+ if err != nil {
+ return errors.Join(fmt.Errorf("start child %q: %w", child.agent.config.Name, err), listener.Close())
+ }
+
+ 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 messages.Snapshot(func() error {
+ return daemonSnapshot(ctx, loops, snapshot)
+ })
+ }
+