"""Tests for session identity awareness in system prompts. Issue #64: Timmy should know what session it is running in. """ from timmy.prompts import get_system_prompt class TestSessionIdentity: """Test that session_id is properly injected into system prompts.""" def test_lite_prompt_includes_session_id(self): """Lite prompt should include the session_id in the output.""" prompt = get_system_prompt(tools_enabled=False, session_id="cli") assert "cli" in prompt assert 'session "cli"' in prompt def test_full_prompt_includes_session_id(self): """Full prompt should include the session_id in the output.""" prompt = get_system_prompt(tools_enabled=True, session_id="dashboard") assert "dashboard" in prompt assert 'session "dashboard"' in prompt def test_default_session_id_is_unknown(self): """When no session_id is provided, default should be 'unknown'.""" prompt = get_system_prompt() assert "unknown" in prompt assert 'session "unknown"' in prompt def test_lite_prompt_session_format(self): """Lite prompt should have session info after the rules.""" prompt = get_system_prompt(tools_enabled=False, session_id="loop") # Should contain the session line assert '- You are running in session "loop".' in prompt def test_full_prompt_session_format(self): """Full prompt should have session info in IDENTITY section.""" prompt = get_system_prompt(tools_enabled=True, session_id="custom") # Should contain session type explanation assert 'session "custom"' in prompt assert "Session types:" in prompt def test_various_session_ids(self): """Test that different session IDs are properly handled.""" test_cases = ["cli", "dashboard", "loop", "custom", "test-session-123"] for sid in test_cases: prompt = get_system_prompt(session_id=sid) assert f'"{sid}"' in prompt, f"Session ID '{sid}' not found in prompt" def test_session_id_with_special_chars(self): """Test session IDs with special characters.""" sid = "user_123-test.session" prompt = get_system_prompt(session_id=sid) assert sid in prompt