fix: avoid replaying older long turns
Treat the current live user message as the replay boundary for normal user turns, while keeping user-turn extension for history and consolidation paths that need it. Add regression coverage for the user-triggered long tool-turn case.
This commit is contained in:
@@ -660,6 +660,23 @@ def test_get_history_can_extend_to_user_for_long_recent_turn():
|
||||
_assert_no_orphans(extended)
|
||||
|
||||
|
||||
def test_get_history_extend_to_user_keeps_newer_user_inside_window():
|
||||
session = Session(key="test:history-extend-newer-user")
|
||||
session.messages.append({"role": "user", "content": "old"})
|
||||
session.messages.append({"role": "assistant", "content": "old answer"})
|
||||
session.messages.append({"role": "user", "content": "long older turn"})
|
||||
for i in range(8):
|
||||
session.messages.extend(_tool_turn("older", i))
|
||||
session.messages.append({"role": "assistant", "content": "older final"})
|
||||
session.messages.append({"role": "user", "content": "new question"})
|
||||
session.messages.append({"role": "assistant", "content": "new answer"})
|
||||
|
||||
history = session.get_history(max_messages=6, extend_to_user=True)
|
||||
|
||||
assert [m["content"] for m in history] == ["new question", "new answer"]
|
||||
_assert_no_orphans(history)
|
||||
|
||||
|
||||
# --- enforce_file_cap archive correctness (issue #4128) ---
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user