diff --git a/extensions/tlon/src/channel.ts b/extensions/tlon/src/channel.ts index bf60086c653..794dbd4f5e0 100644 --- a/extensions/tlon/src/channel.ts +++ b/extensions/tlon/src/channel.ts @@ -3,6 +3,7 @@ import type { ChannelAccountSnapshot, ChannelPlugin } from "openclaw/plugin-sdk/ import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime"; import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime"; import { tlonChannelConfigSchema } from "./config-schema.js"; +import { resolveTlonOutboundSessionRoute } from "./session-route.js"; import { applyTlonSetupConfig, createTlonSetupWizardBase, @@ -97,6 +98,7 @@ export const tlonPlugin: ChannelPlugin = { looksLikeId: (target) => Boolean(parseTlonTarget(target)), hint: formatTargetHint(), }, + resolveOutboundSessionRoute: (params) => resolveTlonOutboundSessionRoute(params), }, outbound: { deliveryMode: "direct", diff --git a/extensions/tlon/src/session-route.ts b/extensions/tlon/src/session-route.ts new file mode 100644 index 00000000000..8f02dcef629 --- /dev/null +++ b/extensions/tlon/src/session-route.ts @@ -0,0 +1,40 @@ +import { + buildChannelOutboundSessionRoute, + type ChannelOutboundSessionRouteParams, +} from "openclaw/plugin-sdk/core"; +import { parseTlonTarget } from "./targets.js"; + +export function resolveTlonOutboundSessionRoute(params: ChannelOutboundSessionRouteParams) { + const parsed = parseTlonTarget(params.target); + if (!parsed) { + return null; + } + if (parsed.kind === "group") { + return buildChannelOutboundSessionRoute({ + cfg: params.cfg, + agentId: params.agentId, + channel: "tlon", + accountId: params.accountId, + peer: { + kind: "group", + id: parsed.nest, + }, + chatType: "group", + from: `tlon:group:${parsed.nest}`, + to: `tlon:${parsed.nest}`, + }); + } + return buildChannelOutboundSessionRoute({ + cfg: params.cfg, + agentId: params.agentId, + channel: "tlon", + accountId: params.accountId, + peer: { + kind: "direct", + id: parsed.ship, + }, + chatType: "direct", + from: `tlon:${parsed.ship}`, + to: `tlon:${parsed.ship}`, + }); +}