# retoor from devplacepy.services.devii.interaction.capabilities import ( CHANNEL_CLI, CHANNEL_SITE_CHAT, CHANNEL_TELEGRAM, CHANNEL_UNKNOWN, channel_id_for_session, context_for, fragment_for, interactions_enabled, ) def test_session_channel_mapping(): assert channel_id_for_session("main") == CHANNEL_SITE_CHAT assert channel_id_for_session("docs") == CHANNEL_SITE_CHAT assert channel_id_for_session("telegram") == CHANNEL_TELEGRAM assert channel_id_for_session("cli") == CHANNEL_CLI assert channel_id_for_session("nope") == CHANNEL_UNKNOWN def test_site_context_exposes_ui_prompt(local_db): ctx = context_for(CHANNEL_SITE_CHAT, owner_kind="user", owner_id="u1") assert ctx.capabilities["rich_widgets"] is True assert "ui_prompt" in ctx.tools assert "ui_cancel" in ctx.tools assert "ui_notify" in ctx.tools assert "interactions_get" in ctx.tools assert "interactions_set" in ctx.tools def test_open_interaction_gates_to_cancel_only(local_db): ctx = context_for( CHANNEL_SITE_CHAT, open_interaction_id="ix-abc", owner_kind="user", owner_id="u1", ) assert "ui_cancel" in ctx.tools assert "ui_prompt" not in ctx.tools assert "interactions_get" in ctx.tools def test_unknown_channel_has_no_ui_prompt(local_db): ctx = context_for(CHANNEL_UNKNOWN, owner_kind="user", owner_id="u1") assert "ui_prompt" not in ctx.tools assert ctx.capabilities["confirm"] is False assert "interactions_get" in ctx.tools def test_fragment_is_compact(local_db): text = fragment_for(context_for(CHANNEL_TELEGRAM, owner_kind="guest")) assert "CHANNEL: telegram" in text assert "TOOLS: ui_prompt" in text assert "INTERACTION: none" in text assert len(text) < 600 def test_interactions_enabled_default(local_db): assert interactions_enabled("guest", "") is True