diff --git a/libs/core/tests/unit_tests/messages/test_utils.py b/libs/core/tests/unit_tests/messages/test_utils.py index 8777b2674c5..b81fe518752 100644 --- a/libs/core/tests/unit_tests/messages/test_utils.py +++ b/libs/core/tests/unit_tests/messages/test_utils.py @@ -964,3 +964,34 @@ def test_convert_to_openai_messages_developer() -> None: ] result = convert_to_openai_messages(messages) assert result == [{"role": "developer", "content": "a"}] * 2 + + +def test_trim_message_edge_cases() -> None: + """Trim messages fails to produce a valid message history.""" + messages = [ + SystemMessage(content="This is a system message"), + HumanMessage(content="This is a user message"), + AIMessage( + content="AI message", + tool_calls=[ + ToolCall(name="foo_tool", args={"x": 1}, id="tool1", type="tool_call") + ], + id="2", + ), + ToolMessage("1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16", tool_call_id="2"), + ] + + new_history = trim_messages( + messages, + allow_partial=True, + strategy="last", + token_counter=lambda messages: sum( + len(message.content) for message in messages + ), + max_tokens=70, + include_system=True, + end_on=("human", "tool"), + ) + + # New history has SystemMessage, ToolMessage -- which is not a valid message history + assert 1 == 0