51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package services
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/mudler/xlog"
|
|
)
|
|
|
|
func memoryPath(agentName string, actionsConfigs map[string]string) string {
|
|
// Compose memory file path based on stateDir and agentName, using a subdirectory
|
|
memoryFilePath := "memory.json"
|
|
if actionsConfigs != nil {
|
|
if stateDir, ok := actionsConfigs[ConfigStateDir]; ok && stateDir != "" {
|
|
memoryDir := fmt.Sprintf("%s/memory", stateDir)
|
|
err := os.MkdirAll(memoryDir, 0755) // ensure the directory exists
|
|
if err != nil {
|
|
xlog.Error("Error creating memory directory", "error", err)
|
|
return memoryFilePath
|
|
}
|
|
memoryFilePath = fmt.Sprintf("%s/%s.json", memoryDir, agentName)
|
|
} else {
|
|
memoryFilePath = fmt.Sprintf("%s.memory.json", agentName)
|
|
}
|
|
}
|
|
|
|
return memoryFilePath
|
|
}
|
|
|
|
// memoryIndexPath returns the directory path for the Bleve index (used by memory actions).
|
|
func memoryIndexPath(agentName string, actionsConfigs map[string]string) string {
|
|
indexPath := "memory.bleve"
|
|
if actionsConfigs != nil {
|
|
if stateDir, ok := actionsConfigs[ConfigStateDir]; ok && stateDir != "" {
|
|
memoryDir := fmt.Sprintf("%s/memory", stateDir)
|
|
if err := os.MkdirAll(memoryDir, 0755); err != nil {
|
|
xlog.Error("Error creating memory directory", "error", err)
|
|
return indexPath
|
|
}
|
|
indexPath = filepath.Join(memoryDir, agentName+".bleve")
|
|
} else {
|
|
indexPath = agentName + ".memory.bleve"
|
|
}
|
|
}
|
|
if dir := filepath.Dir(indexPath); dir != "." {
|
|
os.MkdirAll(dir, 0755)
|
|
}
|
|
return indexPath
|
|
}
|