#ifndef HUMANUS_MEMORY_BASE_H #define HUMANUS_MEMORY_BASE_H #include "schema.h" namespace humanus { struct MemoryBase { std::vector messages; // Add a message to the memory virtual void add_message(const Message& message) { messages.push_back(message); } // Add multiple messages to the memory void add_messages(const std::vector& messages) { for (const auto& message : messages) { add_message(message); } } // Clear all messages void clear() { messages.clear(); } // Get the last n messages virtual std::vector get_recent_messages(int n) const { n = std::min(n, static_cast(messages.size())); return std::vector(messages.end() - n, messages.end()); } // Convert messages to list of dicts json to_json_list() const { json memory = json::array(); for (const auto& message : messages) { memory.push_back(message.to_json()); } return memory; } }; } #endif // HUMANUS_MEMORY_BASE_H