#ifndef HUMANUS_MEMORY_SIMPLE_H #define HUMANUS_MEMORY_SIMPLE_H #include "base.h" namespace humanus { struct MemorySimple : MemoryBase { int max_messages; MemorySimple(int max_messages = 100) : max_messages(max_messages) {} void add_message(const Message& message) override { MemoryBase::add_message(message); while (!messages.empty() && (messages.size() > max_messages || messages.begin()->role == "assistant" || messages.begin()->role == "tool")) { // Ensure the first message is always a user or system message messages.erase(messages.begin()); } } }; } // namespace humanus #endif // HUMANUS_MEMORY_SIMPLE_H