fix: chat memory extraction crashes on a non-dict message (#1749)
This commit is contained in:
@@ -51,6 +51,8 @@ class MemoryManager:
|
||||
memories = []
|
||||
|
||||
for msg in chat_history:
|
||||
if not isinstance(msg, dict):
|
||||
continue
|
||||
if msg.get("role") == "assistant":
|
||||
content = str(msg.get("content", ""))
|
||||
lines = content.split('\n')
|
||||
|
||||
15
tests/test_memory_extract_chat_nondict.py
Normal file
15
tests/test_memory_extract_chat_nondict.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from src.memory import MemoryManager
|
||||
|
||||
|
||||
def test_extract_memory_from_chat_skips_non_dict_messages(tmp_path):
|
||||
# chat_history rows can be malformed (a non-dict slipping in from a partial
|
||||
# session blob); the old loop did msg.get(...) and crashed on the first one.
|
||||
m = MemoryManager(str(tmp_path))
|
||||
history = [
|
||||
{"role": "assistant", "content": "- remember to buy milk"},
|
||||
"junk-msg",
|
||||
None,
|
||||
{"role": "user", "content": "hi"},
|
||||
]
|
||||
out = m.extract_memory_from_chat(history)
|
||||
assert any(e["text"] == "remember to buy milk" for e in out)
|
||||
Reference in New Issue
Block a user