]> git.giacomolli.uk - onechat/blobdiff - daemon_message.go
Manage source routes with root tools
[onechat] / daemon_message.go
index 8415e49d4b7110d596eaed1013e79e6f29ce09b7..40a99a91f3bf76d8b5c5de314a18cb0d00cfeaef 100644 (file)
@@ -16,7 +16,13 @@ import (
 // messages before the loops start. A queue entry stays until its recipient
 // finishes the turn that takes it, so a stop can interrupt delivery or a turn.
 func openDaemonMessages(loops []*TurnLoop) (*DaemonMessages, error) {
+       routes, err := openRoutes(filepath.Join(loops[0].agent.dir, "routes.json"), loops[0].logger)
+       if err != nil {
+               return nil, fmt.Errorf("open agent routes: %w", err)
+       }
+
        m := &DaemonMessages{
+               routes:  routes,
                path:    filepath.Join(loops[0].agent.dir, "messages.json"),
                ordered: append([]*TurnLoop(nil), loops...),
                loops:   make(map[string]*TurnLoop),
@@ -27,6 +33,13 @@ func openDaemonMessages(loops []*TurnLoop) (*DaemonMessages, error) {
                loop.tools.messages = m
                if loop.agent.config.Parent == "" {
                        loop.logger = loop.logger.With("name", loop.agent.config.Name)
+                       loop.tools.routes = routes
+                       if loop.tools.whatsapp != nil {
+                               loop.tools.whatsapp.mutex.Lock()
+
+                               loop.tools.whatsapp.routes = routes
+                               loop.tools.whatsapp.mutex.Unlock()
+                       }
                }
        }
 
@@ -89,6 +102,7 @@ type DaemonMessages struct {
        ordered []*TurnLoop
        state   DaemonMessageFile
        failure error
+       routes  *Routes
 }
 
 // deliver records one queued message and wakes its recipient. The caller holds