what happens
MemoryInterface.add_message_pieces_to_memory with embeddings enabled iterates ALL received message pieces (minus not_in_memory) and calls generate_embedding_memory_data on each. that helper raises for non-text pieces, so a multimodal message (text plus an image_path piece) fails its whole write when embeddings are on, instead of persisting the message and embedding just the text.
repro
send any multimodal message with memory_embedding configured: the image_path piece hits the embedding generator, which rejects non-text data, and the entire add fails.
expected
text pieces embed; non-text pieces persist without an embedding row. embeddings only power text similarity search, so nothing is lost.
env: main 5503ecb
what happens
MemoryInterface.add_message_pieces_to_memorywith embeddings enabled iterates ALL received message pieces (minusnot_in_memory) and callsgenerate_embedding_memory_dataon each. that helper raises for non-text pieces, so a multimodal message (text plus an image_path piece) fails its whole write when embeddings are on, instead of persisting the message and embedding just the text.repro
send any multimodal message with
memory_embeddingconfigured: the image_path piece hits the embedding generator, which rejects non-text data, and the entire add fails.expected
text pieces embed; non-text pieces persist without an embedding row. embeddings only power text similarity search, so nothing is lost.
env: main
5503ecb