from __future__ import annotations import logging from typing import Any from yuxi.channels.models import ChatType logger = logging.getLogger(__name__) def resolve_session_route( token: str, conversation_info: dict[str, Any] | None, default_agent_id: str, ) -> dict[str, str]: room_type = conversation_info.get("type") if conversation_info else None if room_type == 1: route = f"agent:{default_agent_id}:nextcloudtalk:dm:{token}" else: route = f"agent:{default_agent_id}:nextcloudtalk:group:{token}" return {"route": route, "token": token} def resolve_chat_type(room_type: int | None) -> ChatType: if room_type == 1: return ChatType.DIRECT if room_type in (2, 3): return ChatType.GROUP return ChatType.GROUP def make_thread_key(agent_id: str, token: str, room_type: int | None) -> str: if room_type == 1: return f"agent:{agent_id}:nextcloudtalk:dm:{token}" return f"agent:{agent_id}:nextcloudtalk:group:{token}" def resolve_conversation_label(conv_info: dict[str, Any]) -> str: room_type = conv_info.get("type") if conv_info else None display_name = conv_info.get("display_name", conv_info.get("displayName", "")) if conv_info else "" name = conv_info.get("name", "") if conv_info else "" if room_type == 1: return display_name or name or "Direct Message" label = display_name or name or "Group" return f"room:{label}"