from __future__ import annotations from yuxi.channels.models import ChannelMessage def resolve_thread_key(message: ChannelMessage) -> str: identity = message.identity chat_id = identity.channel_chat_id if chat_id.startswith("dm:"): pubkey = chat_id.removeprefix("dm:") return f"nostr:dm:{pubkey}" if chat_id.startswith("channel:"): channel = chat_id.removeprefix("channel:") return f"nostr:channel:{channel}" return f"nostr:unknown:{chat_id}" def resolve_chat_id(message: ChannelMessage) -> str: return message.identity.channel_chat_id def resolve_agent_route(message: ChannelMessage, default_agent_id: str = "default") -> str: thread_key = resolve_thread_key(message) return f"agent:{default_agent_id}:{thread_key}" def normalize_target(target: str) -> str: if target.startswith("nostr:"): return target return f"nostr:{target}"