fix: preserve multimodal user content during persistence
Avoid applying text-only persist_user_message overrides to multimodal current-turn user messages. Early crash-resilience persistence mutates the same messages list later used for the API call, so clobbering list content drops ACP image blocks before model dispatch.\n\nAdd regression coverage for both text override behavior and multimodal preservation.\n\nCloses #44242
This commit is contained in:
@@ -75,6 +75,33 @@ def agent():
|
||||
return a
|
||||
|
||||
|
||||
def test_persist_user_message_override_rewrites_text_turns(agent):
|
||||
messages = [{"role": "user", "content": "API-only synthetic prefix\nhello"}]
|
||||
agent._persist_user_message_idx = 0
|
||||
agent._persist_user_message_override = "hello"
|
||||
|
||||
agent._apply_persist_user_message_override(messages)
|
||||
|
||||
assert messages == [{"role": "user", "content": "hello"}]
|
||||
|
||||
|
||||
def test_persist_user_message_override_preserves_multimodal_turns(agent):
|
||||
multimodal_content = [
|
||||
{"type": "text", "text": "What color is this?"},
|
||||
{
|
||||
"type": "image_url",
|
||||
"image_url": {"url": "data:image/png;base64,AAAA"},
|
||||
},
|
||||
]
|
||||
messages = [{"role": "user", "content": multimodal_content}]
|
||||
agent._persist_user_message_idx = 0
|
||||
agent._persist_user_message_override = "What color is this? [Image attachment]"
|
||||
|
||||
agent._apply_persist_user_message_override(messages)
|
||||
|
||||
assert messages == [{"role": "user", "content": multimodal_content}]
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def agent_with_memory_tool():
|
||||
"""Agent whose valid_tool_names includes 'memory'."""
|
||||
|
||||
Reference in New Issue
Block a user