Python · 1891 bytes Raw Blame History
1 """Tests for transcript compaction and summary compression."""
2
3 from __future__ import annotations
4
5 from loader.llm.base import Message, Role
6 from loader.runtime.compaction import (
7 SummaryCompressionBudget,
8 compact_session_messages,
9 compress_summary,
10 )
11
12
13 def test_compress_summary_dedupes_lines_and_collapses_whitespace() -> None:
14 summary = "\n".join(
15 [
16 "Conversation summary:",
17 "- Scope: compact earlier messages.",
18 "- Scope: compact earlier messages.",
19 "- Current work: finish session persistence.",
20 "- Current work: finish session persistence.",
21 ]
22 )
23
24 result = compress_summary(summary, budget=SummaryCompressionBudget())
25
26 assert result.removed_duplicate_lines == 2
27 assert "- Scope: compact earlier messages." in result.summary
28 assert " compact earlier" not in result.summary
29
30
31 def test_compact_session_messages_preserves_recent_messages() -> None:
32 messages = [
33 Message(role=Role.USER, content="First task framing"),
34 Message(role=Role.ASSISTANT, content="Initial plan"),
35 Message(role=Role.USER, content="Focus on runtime quality"),
36 Message(role=Role.ASSISTANT, content="Tracked updated files"),
37 Message(role=Role.USER, content="Verify the result"),
38 Message(role=Role.ASSISTANT, content="Verification passed"),
39 ]
40
41 result = compact_session_messages(
42 messages,
43 keep_last_messages=4,
44 current_task="Improve Loader runtime continuity",
45 )
46
47 assert result is not None
48 assert result.removed_message_count == 2
49 assert [message.content for message in result.messages[-4:]] == [
50 message.content for message in messages[-4:]
51 ]
52 assert result.messages[0].content.startswith("[COMPACTED CONTEXT]")
53 assert "Continuation instructions:" in result.messages[0].content