X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/36229ef68a30c5a117599037d79fa1fc708fbfef..d73a88b9e0835b1d7f0711e02db56555101a7830:/agent.go diff --git a/agent.go b/agent.go index 97d6685..d95a81c 100644 --- a/agent.go +++ b/agent.go @@ -90,6 +90,16 @@ func (a *Agent) Images() *ImageStore { return &ImageStore{dir: filepath.Join(filepath.Dir(root), imageDirName)} } +// Voices returns the shared data-directory audio store, also for a child. +func (a *Agent) Voices() *VoiceStore { + root := a.dir + if a.config.Parent != "" { + root = filepath.Dir(filepath.Dir(root)) + } + + return &VoiceStore{dir: filepath.Join(filepath.Dir(root), voiceDirName)} +} + // CacheKey returns the prompt cache key of every model call of the agent. func (a *Agent) CacheKey() string { return "onechat-" + a.config.ID @@ -117,12 +127,12 @@ func (a *Agent) Prompt() (string, error) { } // Tools returns the tools shared by the turns and compactions of this agent. A -// child has no WhatsApp, child creation, or route tools. +// child has no image output, WhatsApp, child creation, or route tools. func (a *Agent) Tools() []ModelTool { tools := promptTools() if a.config.Parent != "" { tools = slices.DeleteFunc(tools, func(tool ModelTool) bool { - return strings.HasPrefix(tool.Name, "whatsapp_") || tool.Name == "agent_create" || tool.Name == "route" || tool.Name == "unroute" || tool.Name == "routes" + return strings.HasPrefix(tool.Name, "whatsapp_") || tool.Name == "image_show" || tool.Name == "agent_create" || tool.Name == "route" || tool.Name == "unroute" || tool.Name == "routes" }) }