|
|
| __all__ = ['MemoryManager'] |
|
|
| import json |
| import os |
|
|
|
|
| class MemoryManager(): |
| dependencies = [] |
|
|
| inputSchema = { |
| "name": "MemoryManager", |
| "description": "Updates, retrieves, or deletes the memory for a user. Only store important information such as user preferences, error solutions, and other information that can help you improve your performance.", |
| "parameters": { |
| "type": "object", |
| "properties":{ |
| "action": { |
| "type": "string", |
| "enum": ["add_memory", "get_all_memories", "delete_memory"], |
| "description": "The action to perform: add_memory, get_all_memories, or delete_memory.", |
| }, |
| "memory": { |
| "type": "string", |
| "description": "The memory to add. Required for 'add_memory' action.", |
| }, |
| "key": { |
| "type": "string", |
| "description": "The key to delete or add memory." |
| }, |
| }, |
| "required": ["action"], |
| }, |
| } |
| |
| def get_memories(self): |
| |
| try: |
| with open("src/data/memory.json", "r") as f: |
| memory_list = json.load(f) |
| except FileNotFoundError: |
| memory_list = [] |
| except json.JSONDecodeError: |
| memory_list = [] |
| return memory_list |
|
|
| def update_memories(self, memories): |
| os.makedirs("src/data", exist_ok=True) |
| |
| with open("src/data/memory.json", "w") as f: |
| json.dump(memories, f, indent=4) |
|
|
|
|
|
|
| def run(self, **kwargs): |
| |
| action = kwargs.get("action") |
| memory = kwargs.get("memory") |
| key = kwargs.get("key") |
| memories = self.get_memories() |
| if action == "get_all_memories": |
| return { |
| "status": "success", |
| "message": "Memory retrieved successfully", |
| "output": memories |
| } |
| if action == "add_memory": |
| if memory is None or key is None: |
| return { |
| "status": "error", |
| "message": "Memory and key are required for add_memory action", |
| "output": None |
| } |
| |
| for mem in memories: |
| if mem["key"] == key: |
| return { |
| "status": "error", |
| "message": f"Memory with key {key} already exists", |
| "output": None |
| } |
| memories.append({ |
| "key": key, |
| "memory": memory |
| }) |
| self.update_memories(memories) |
| return { |
| "status": "success", |
| "message": "Memory created successfully", |
| "output": None |
| } |
| if action == "delete_memory": |
| if key is None: |
| return { |
| "status": "error", |
| "message": "Key is required for delete_memory action", |
| "output": None |
| } |
| |
| for mem in memories: |
| if mem["key"] == key: |
| memories.remove(mem) |
| self.update_memories(memories) |
| return { |
| "status": "success", |
| "message": "Memory deleted successfully", |
| "output": None |
| } |
| return { |
| "status": "error", |
| "message": f"Memory with key {key} not found", |
| "output": None |
| } |