fix: chat memory extraction crashes on a non-dict message (#1749)
This commit is contained in:
@@ -51,6 +51,8 @@ class MemoryManager:
|
|||||||
memories = []
|
memories = []
|
||||||
|
|
||||||
for msg in chat_history:
|
for msg in chat_history:
|
||||||
|
if not isinstance(msg, dict):
|
||||||
|
continue
|
||||||
if msg.get("role") == "assistant":
|
if msg.get("role") == "assistant":
|
||||||
content = str(msg.get("content", ""))
|
content = str(msg.get("content", ""))
|
||||||
lines = content.split('\n')
|
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