mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-07 07:11:06 +00:00
fix(outbound): restore generic delivery and security seams
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import { createPluginBoundaryRuntimeSend } from "./plugin-boundary-send.js";
|
||||
import { createChannelOutboundRuntimeSend } from "./channel-outbound-send.js";
|
||||
|
||||
export const runtimeSend = createPluginBoundaryRuntimeSend({
|
||||
pluginId: "discord",
|
||||
exportName: "sendMessageDiscord",
|
||||
missingLabel: "Discord plugin runtime",
|
||||
export const runtimeSend = createChannelOutboundRuntimeSend({
|
||||
channelId: "discord",
|
||||
unavailableMessage: "Discord outbound adapter is unavailable.",
|
||||
});
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
import { createCachedPluginBoundaryModuleLoader } from "../../plugins/runtime/runtime-plugin-boundary.js";
|
||||
|
||||
type RuntimeSendModule = Record<string, unknown>;
|
||||
|
||||
export type RuntimeSend = {
|
||||
sendMessage: (...args: unknown[]) => Promise<unknown>;
|
||||
};
|
||||
|
||||
function resolveRuntimeExport(
|
||||
module: RuntimeSendModule | null,
|
||||
pluginId: string,
|
||||
exportName: string,
|
||||
): (...args: unknown[]) => Promise<unknown> {
|
||||
const candidate = module?.[exportName];
|
||||
if (typeof candidate !== "function") {
|
||||
throw new Error(`${pluginId} plugin runtime is unavailable: missing export '${exportName}'`);
|
||||
}
|
||||
return candidate as (...args: unknown[]) => Promise<unknown>;
|
||||
}
|
||||
|
||||
export function createPluginBoundaryRuntimeSend(params: {
|
||||
pluginId: string;
|
||||
exportName: string;
|
||||
missingLabel: string;
|
||||
}): RuntimeSend {
|
||||
const loadRuntimeModuleSync = createCachedPluginBoundaryModuleLoader<RuntimeSendModule>({
|
||||
pluginId: params.pluginId,
|
||||
entryBaseName: "runtime-api",
|
||||
required: true,
|
||||
missingLabel: params.missingLabel,
|
||||
});
|
||||
|
||||
return {
|
||||
sendMessage: (...args) =>
|
||||
resolveRuntimeExport(loadRuntimeModuleSync(), params.pluginId, params.exportName)(...args),
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
import { createPluginBoundaryRuntimeSend } from "./plugin-boundary-send.js";
|
||||
import { createChannelOutboundRuntimeSend } from "./channel-outbound-send.js";
|
||||
|
||||
export const runtimeSend = createPluginBoundaryRuntimeSend({
|
||||
pluginId: "signal",
|
||||
exportName: "sendMessageSignal",
|
||||
missingLabel: "Signal plugin runtime",
|
||||
export const runtimeSend = createChannelOutboundRuntimeSend({
|
||||
channelId: "signal",
|
||||
unavailableMessage: "Signal outbound adapter is unavailable.",
|
||||
});
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { createPluginBoundaryRuntimeSend } from "./plugin-boundary-send.js";
|
||||
import { createChannelOutboundRuntimeSend } from "./channel-outbound-send.js";
|
||||
|
||||
export const runtimeSend = createPluginBoundaryRuntimeSend({
|
||||
pluginId: "slack",
|
||||
exportName: "sendMessageSlack",
|
||||
missingLabel: "Slack plugin runtime",
|
||||
export const runtimeSend = createChannelOutboundRuntimeSend({
|
||||
channelId: "slack",
|
||||
unavailableMessage: "Slack outbound adapter is unavailable.",
|
||||
});
|
||||
|
||||
@@ -1,39 +1,6 @@
|
||||
import { loadChannelOutboundAdapter } from "../../channels/plugins/outbound/load.js";
|
||||
import { loadConfig } from "../../config/config.js";
|
||||
import { createChannelOutboundRuntimeSend } from "./channel-outbound-send.js";
|
||||
|
||||
type TelegramRuntimeSendOpts = {
|
||||
cfg?: ReturnType<typeof loadConfig>;
|
||||
mediaUrl?: string;
|
||||
mediaLocalRoots?: readonly string[];
|
||||
accountId?: string;
|
||||
messageThreadId?: string | number;
|
||||
replyToMessageId?: string | number;
|
||||
silent?: boolean;
|
||||
forceDocument?: boolean;
|
||||
gatewayClientScopes?: readonly string[];
|
||||
};
|
||||
|
||||
export const runtimeSend = {
|
||||
sendMessage: async (to: string, text: string, opts: TelegramRuntimeSendOpts = {}) => {
|
||||
const outbound = await loadChannelOutboundAdapter("telegram");
|
||||
if (!outbound?.sendText) {
|
||||
throw new Error("Telegram outbound adapter is unavailable.");
|
||||
}
|
||||
return await outbound.sendText({
|
||||
cfg: opts.cfg ?? loadConfig(),
|
||||
to,
|
||||
text,
|
||||
mediaUrl: opts.mediaUrl,
|
||||
mediaLocalRoots: opts.mediaLocalRoots,
|
||||
accountId: opts.accountId,
|
||||
threadId: opts.messageThreadId,
|
||||
replyToId:
|
||||
opts.replyToMessageId == null
|
||||
? undefined
|
||||
: String(opts.replyToMessageId).trim() || undefined,
|
||||
silent: opts.silent,
|
||||
forceDocument: opts.forceDocument,
|
||||
gatewayClientScopes: opts.gatewayClientScopes,
|
||||
});
|
||||
},
|
||||
};
|
||||
export const runtimeSend = createChannelOutboundRuntimeSend({
|
||||
channelId: "telegram",
|
||||
unavailableMessage: "Telegram outbound adapter is unavailable.",
|
||||
});
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { createPluginBoundaryRuntimeSend } from "./plugin-boundary-send.js";
|
||||
import { createChannelOutboundRuntimeSend } from "./channel-outbound-send.js";
|
||||
|
||||
export const runtimeSend = createPluginBoundaryRuntimeSend({
|
||||
pluginId: "whatsapp",
|
||||
exportName: "sendMessageWhatsApp",
|
||||
missingLabel: "WhatsApp plugin runtime",
|
||||
export const runtimeSend = createChannelOutboundRuntimeSend({
|
||||
channelId: "whatsapp",
|
||||
unavailableMessage: "WhatsApp outbound adapter is unavailable.",
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user