mirror of https://github.com/openclaw/openclaw.git
30 lines
917 B
TypeScript
30 lines
917 B
TypeScript
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}`,
|
|
});
|
|
}
|