Spaces:
Running
Running
| __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): | |
| # load the memory from src/data/memory.json | |
| 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) | |
| # Save the memory to src/data/memory.json | |
| with open("src/data/memory.json", "w") as f: | |
| json.dump(memories, f, indent=4) | |
| def run(self, **kwargs): | |
| # save it to src/data/memory.json | |
| 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 | |
| } | |
| # check if the key already exists | |
| 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 | |
| } | |
| # check if the key exists | |
| 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 | |
| } |