]> git.giacomolli.uk - onechat/blobdiff - turn.go
Log image and message sends
[onechat] / turn.go
diff --git a/turn.go b/turn.go
index e0bd489f323549a19f19706d4e68fd04c656c762..9e6a1a7b3a392137bda2cbf95323dc456c4580f3 100644 (file)
--- a/turn.go
+++ b/turn.go
@@ -60,6 +60,11 @@ func newTurnLoop(agent *Agent, memory *Memory, subagents *Subagents, whatsapp *W
                schedules: schedules,
                workdir:   agent.config.Workdir,
                agentName: agent.config.Name,
                schedules: schedules,
                workdir:   agent.config.Workdir,
                agentName: agent.config.Name,
+               images:    agent.Images(),
+       }
+
+       if agent.config.Parent == "" {
+               l.tools.imageShow = &ImageShow{store: agent.Images()}
        }
 
        return l, nil
        }
 
        return l, nil
@@ -423,10 +428,19 @@ func (l *TurnLoop) chain(ctx context.Context) (string, error) {
                        Instructions: instructions,
                        Tools:        l.agent.Tools(),
                },
                        Instructions: instructions,
                        Tools:        l.agent.Tools(),
                },
-               take: l.take,
+               take:   l.take,
+               images: l.agent.Images(),
+       }
+
+       input := turnInput(view, l.state(), messages)
+       for n, message := range messages {
+               input[len(input)-len(messages)+n], err = imageUserMessage(l.agent.Images(), message.Text)
+               if err != nil {
+                       return "", fmt.Errorf("read turn images: %w", err)
+               }
        }
 
        }
 
-       reply, err := chain.Run(ctx, turnInput(view, l.state(), messages))
+       reply, err := chain.Run(ctx, input)
        if err != nil {
                return "", fmt.Errorf("run turn chain: %w", err)
        }
        if err != nil {
                return "", fmt.Errorf("run turn chain: %w", err)
        }