Files
LocalAGI/services/common.go
Ettore Di Giacinto 16775f356a Use bleve for indexing short-term memory (#397)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-01-30 15:41:23 +01:00

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
}