from __future__ import annotations from yuxi.channels.models import ChannelIdentity def resolve_thread_key(identity: ChannelIdentity, chat_type: str = "direct") -> str: chat_id = identity.channel_chat_id if chat_type == "channel": return f"yuanbao:channel:{chat_id}" elif chat_type == "group": return f"yuanbao:group:{chat_id}" return f"yuanbao:direct:{chat_id}" def resolve_agent_route( identity: ChannelIdentity, chat_type: str = "direct", default_agent_id: str = "default", groups_config: dict | None = None, channels_config: dict | None = None, ) -> str: chat_id = identity.channel_chat_id if chat_type == "channel": channels = channels_config or {} channel_cfg = channels.get(chat_id, {}) agent_id = channel_cfg.get("agent_id", default_agent_id) return f"agent:{agent_id}:yuanbao:channel:{chat_id}" elif chat_type == "group": groups = groups_config or {} group_cfg = groups.get(chat_id, {}) agent_id = group_cfg.get("agent_id", default_agent_id) return f"agent:{agent_id}:yuanbao:group:{chat_id}" else: return f"agent:{default_agent_id}:yuanbao:direct:{chat_id}" def resolve_chat_type_str(chat_type: str) -> str: if chat_type == "channel": return "guild_channel" elif chat_type == "group": return "group" return "direct"