import { buildChannelOutboundSessionRoute, stripChannelTargetPrefix, stripTargetKindPrefix, type ChannelOutboundSessionRouteParams, } from "openclaw/plugin-sdk/core"; export function resolveMatrixOutboundSessionRoute(params: ChannelOutboundSessionRouteParams) { const stripped = stripChannelTargetPrefix(params.target, "matrix"); const isUser = params.resolvedTarget?.kind === "user" || stripped.startsWith("@") || /^user:/i.test(stripped); const rawId = stripTargetKindPrefix(stripped); if (!rawId) { return null; } return buildChannelOutboundSessionRoute({ cfg: params.cfg, agentId: params.agentId, channel: "matrix", accountId: params.accountId, peer: { kind: isUser ? "direct" : "channel", id: rawId, }, chatType: isUser ? "direct" : "channel", from: isUser ? `matrix:${rawId}` : `matrix:channel:${rawId}`, to: `room:${rawId}`, }); }