mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 11:10:18 +00:00
60 lines
2.9 KiB
Python
60 lines
2.9 KiB
Python
"""
|
|
Regression coverage for shared compression-anchor visibility helpers (#2028).
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
from api.compression_anchor import visible_messages_for_anchor
|
|
|
|
|
|
def test_legacy_duplicate_anchor_helpers_are_removed():
|
|
routes_src = Path("api/routes.py").read_text(encoding="utf-8")
|
|
streaming_src = Path("api/streaming.py").read_text(encoding="utf-8")
|
|
|
|
assert "def _visible_messages_for_anchor" not in routes_src
|
|
assert "def _visible_messages_for_compression_anchor" not in streaming_src
|
|
assert "visible_messages_for_anchor(compressed, auto_compression=False)" in routes_src
|
|
assert "visible_messages_for_anchor(s.messages, auto_compression=True)" in streaming_src
|
|
|
|
|
|
def test_visible_messages_for_anchor_preserves_manual_text_part_filter():
|
|
text_only = {"role": "assistant", "content": [{"type": "text", "text": "Visible"}]}
|
|
input_only = {"role": "assistant", "content": [{"type": "input_text", "text": "Model input"}]}
|
|
reasoning_only = {"role": "assistant", "content": [{"type": "thinking", "text": "hidden"}]}
|
|
tool_use_only = {"role": "assistant", "content": [{"type": "tool_use", "id": "call_1"}]}
|
|
tool_message = {"role": "tool", "content": "tool output"}
|
|
|
|
assert visible_messages_for_anchor(
|
|
[text_only, input_only, reasoning_only, tool_use_only, tool_message],
|
|
auto_compression=False,
|
|
) == [text_only, reasoning_only, tool_use_only]
|
|
|
|
|
|
def test_visible_messages_for_anchor_preserves_auto_compression_text_part_filter():
|
|
text_only = {"role": "assistant", "content": [{"type": "text", "text": "Visible"}]}
|
|
input_only = {"role": "assistant", "content": [{"type": "input_text", "text": "Model input"}]}
|
|
output_only = {"role": "assistant", "content": [{"type": "output_text", "text": "Model output"}]}
|
|
reasoning_only = {"role": "assistant", "content": [{"type": "reasoning", "text": "hidden"}]}
|
|
tool_message = {"role": "tool", "content": "tool output"}
|
|
|
|
assert visible_messages_for_anchor(
|
|
[text_only, input_only, output_only, reasoning_only, tool_message],
|
|
auto_compression=True,
|
|
) == [text_only, input_only, output_only, reasoning_only]
|
|
|
|
|
|
def test_visible_messages_for_anchor_keeps_manual_user_messages_simple():
|
|
user_tool_metadata = {"role": "user", "content": [], "tool_calls": [{"id": "call_1"}]}
|
|
user_attachment = {"role": "user", "content": [], "attachments": [{"name": "screenshot.png"}]}
|
|
assistant_tool_metadata = {"role": "assistant", "content": [], "tool_calls": [{"id": "call_2"}]}
|
|
|
|
assert visible_messages_for_anchor(
|
|
[user_tool_metadata, user_attachment, assistant_tool_metadata],
|
|
auto_compression=False,
|
|
) == [user_attachment, assistant_tool_metadata]
|
|
|
|
assert visible_messages_for_anchor(
|
|
[user_tool_metadata, user_attachment, assistant_tool_metadata],
|
|
auto_compression=True,
|
|
) == [user_tool_metadata, user_attachment, assistant_tool_metadata]
|