from __future__ import annotations from beaver.engine.context import ContextBuildInput, ContextBuilder, RuntimeContext, SessionContext def test_context_builder_injects_current_date_and_time() -> None: result = ContextBuilder().build_messages( ContextBuildInput( base_system_prompt="Follow user requests.", current_user_input="今天几号?", session_context=SessionContext(session_id="web:alpha", source="web", model="stub-model"), runtime_context=RuntimeContext( utc_datetime="2026-05-26T01:10:00+00:00", local_datetime="2026-05-26T09:10:00+08:00", timezone="Asia/Shanghai", utc_offset="+08:00", ), ) ) system_prompt = result.messages[0]["content"] assert "# Current Date and Time" in system_prompt assert "Current UTC time: 2026-05-26T01:10:00+00:00" in system_prompt assert "Current local time: 2026-05-26T09:10:00+08:00" in system_prompt assert "Local timezone: Asia/Shanghai" in system_prompt assert "Local UTC offset: +08:00" in system_prompt assert '"today", "tomorrow", "now", "this week", and "next month"' in system_prompt assert result.messages[-1] == {"role": "user", "content": "今天几号?"}