HERMES-GIELIE/tests/test_webui_surface_context.py

109 lines
4 KiB
Python
Raw Normal View History

from api.streaming import _webui_ephemeral_system_prompt, _prefill_messages_with_webui_context
def test_webui_ephemeral_prompt_includes_browser_surface_context():
prompt = _webui_ephemeral_system_prompt(
"Use a concise tone.",
surface_context={
"source": "webui",
"session_id": "session-123",
"profile": "default",
"workspace": "/tmp/example-workspace",
},
)
assert "Use a concise tone." in prompt
assert "WebUI session context" in prompt
assert "Source: webui" in prompt
assert "Session ID: session-123" in prompt
assert "Profile: default" in prompt
assert "Workspace: /tmp/example-workspace" in prompt
assert "not the same live transcript as Telegram" in prompt
assert "Do not copy or dump this browser transcript" in prompt
2026-05-29 16:14:00 +00:00
assert "Write to external notes or durable memory only" in prompt
assert "otherwise leave notes unchanged" in prompt
assert "what note/section changed" in prompt
assert "explicit captures" in prompt
assert "durable user preferences" in prompt
2026-05-29 17:01:14 +00:00
assert "Do not include terse planning fragments" in prompt
assert "Final visible assistant replies" in prompt
assert "user-facing English" not in prompt
assert "in the user's language" in prompt
assert "Need script" in prompt
2026-05-29 17:01:14 +00:00
assert "Need inspect email" in prompt
assert "clear user-facing progress" in prompt
def test_webui_ephemeral_prompt_skips_empty_surface_fields():
prompt = _webui_ephemeral_system_prompt(
None,
surface_context={
"source": "webui",
"session_id": "",
"profile": None,
"workspace": " ",
},
)
assert "WebUI session context" in prompt
assert "Source: webui" in prompt
assert "Session ID:" not in prompt
assert "Profile:" not in prompt
assert "Workspace:" not in prompt
def test_ephemeral_prompt_avoids_platform_info_when_no_config():
"""Without config_data, the delivery context falls back to defaults."""
prompt = _webui_ephemeral_system_prompt(
"Be concise.",
surface_context={"source": "webui"},
)
# Core platform headings should still appear (fallback data).
assert "Connected Platforms:" in prompt
assert "Delivery options for scheduled tasks:" in prompt
# But home channels are only present when the config has them.
assert "Home Channels" not in prompt
def test_prefill_no_longer_adds_session_context_user_message():
"""_prefill_messages_with_webui_context must NOT append a user message.
Strict chat templates (Mistral, Gemma) require user/assistant alternation.
Adding a 'user' session context message creates two consecutive user turns.
"""
prefill = {"messages": [{"role": "system", "content": "recall note"}]}
result = _prefill_messages_with_webui_context(prefill)
assert len(result) == 1
assert result[0]["role"] == "system"
assert "Connected Platforms" not in result[0].get("content", "")
def test_prefill_preserves_empty_and_none_messages():
"""Edge cases: empty prefill stays empty, missing key returns empty."""
assert _prefill_messages_with_webui_context({"messages": []}) == []
assert _prefill_messages_with_webui_context({}) == []
assert _prefill_messages_with_webui_context({"messages": None}) == []
def test_delivery_context_includes_home_channels_when_configured():
"""When config_data has platforms with a home_channel, the prompt includes it."""
config = {
"platforms": {
"telegram": {
"enabled": True,
"home_channel": {"name": "General"},
},
},
}
prompt = _webui_ephemeral_system_prompt(
None,
surface_context={"source": "webui"},
config_data=config,
)
assert "Connected Platforms:" in prompt
assert "Home Channels (default destinations):" in prompt
assert "telegram: General" in prompt
assert "telegram" in prompt and "Home channel" in prompt