From 60edda7c48f53f1d004b09987988105e1cc0eec8 Mon Sep 17 00:00:00 2001 From: Scott Severance Date: Wed, 19 Aug 2026 10:52:28 +0000 Subject: [PATCH] fix: validate non-empty messages in conversation history --- agent/core/conversation.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/agent/core/conversation.py b/agent/core/conversation.py index d04a6b2..2d6aef3 100644 --- a/agent/core/conversation.py +++ b/agent/core/conversation.py @@ -37,19 +37,26 @@ def __init__(self, max_messages: int = 200, max_chars: int = 100000): self.max_chars = max_chars def add_system(self, content: str): - # Replace any existing system message + if content is None or (isinstance(content, str) and not content.strip()): + raise ValueError("Message content cannot be empty or None") self.messages = [m for m in self.messages if m.role != "system"] self.messages.insert(0, Message(role="system", content=content)) def add_user(self, content: str): + if content is None or (isinstance(content, str) and not content.strip()): + raise ValueError("Message content cannot be empty or None") self.messages.append(Message(role="user", content=content)) def add_assistant(self, content: str, tool_calls: Optional[list] = None): + if content is None or (isinstance(content, str) and not content.strip()): + raise ValueError("Message content cannot be empty or None") self.messages.append( Message(role="assistant", content=content, tool_calls=tool_calls) ) def add_tool_result(self, tool_call_id: str, name: str, content: str): + if content is None or (isinstance(content, str) and not content.strip()): + raise ValueError("Message content cannot be empty or None") self.messages.append( Message(role="tool", content=content, tool_call_id=tool_call_id, name=name) )