fix(session): preserve user turns in replay history

This commit is contained in:
Xubin Ren
2026-06-18 00:03:22 +08:00
parent 472c67722e
commit 09962895fb
7 changed files with 91 additions and 17 deletions
@@ -641,6 +641,25 @@ def test_retain_recent_legal_suffix_can_extend_to_user_for_long_recent_turn():
_assert_no_orphans(history)
def test_get_history_can_extend_to_user_for_long_recent_turn():
session = Session(key="test:history-extend-to-user")
session.messages.append({"role": "user", "content": "old"})
session.messages.append({"role": "assistant", "content": "old answer"})
session.messages.append({"role": "user", "content": "record this"})
for i in range(4):
session.messages.extend(_tool_turn("recent", i))
session.messages.append({"role": "assistant", "content": "done"})
hard_capped = session.get_history(max_messages=8)
extended = session.get_history(max_messages=8, extend_to_user=True)
assert len(hard_capped) <= 8
assert len(extended) > 8
assert extended[0]["content"] == "record this"
assert extended[-1]["content"] == "done"
_assert_no_orphans(extended)
# --- enforce_file_cap archive correctness (issue #4128) ---