openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
106 lines (105 loc) • 3.59 kB
TypeScript
import { i as OpenClawConfig } from "./types.openclaw-DBHlrrVj.js";
import { P as MessageReceipt, b as ChannelMessageSendTextContext, h as ChannelMessageSendMediaContext } from "./types-9QhajxKc.js";
import { t as ChannelPlugin } from "./types.plugin-BIHyhl5u.js";
import { t as ResolvedSynologyChatAccount } from "./types-BQ8nQjNk.js";
//#region extensions/synology-chat/src/channel.d.ts
declare const CHANNEL_ID = "synology-chat";
type SynologyChannelGatewayContext = {
cfg: OpenClawConfig;
accountId: string;
abortSignal: AbortSignal;
log?: {
info: (message: string) => void;
warn: (message: string) => void;
error: (message: string) => void;
};
};
type SynologyChannelOutboundContext = {
cfg: OpenClawConfig;
to: string;
text?: string;
mediaUrl?: string;
accountId?: string | null;
};
type SynologyChannelSendTextContext = SynologyChannelOutboundContext & {
text: string;
};
type SynologyChannelSendMediaContext = SynologyChannelOutboundContext & {
mediaUrl: string;
};
type SynologyChatOutboundResult = {
channel: typeof CHANNEL_ID;
messageId: string;
chatId: string;
receipt: MessageReceipt;
};
type SynologyChatPlugin = Omit<ChannelPlugin<ResolvedSynologyChatAccount>, "pairing" | "security" | "messaging" | "directory" | "outbound" | "gateway" | "agentPrompt"> & {
pairing: {
idLabel: string;
normalizeAllowEntry?: (entry: string) => string;
notifyApproval: (params: {
cfg: OpenClawConfig;
id: string;
}) => Promise<void>;
};
security: {
resolveDmPolicy: (params: {
cfg: OpenClawConfig;
account: ResolvedSynologyChatAccount;
}) => {
policy: string | null | undefined;
allowFrom?: Array<string | number>;
normalizeEntry?: (raw: string) => string;
} | null;
collectWarnings: (params: {
cfg: OpenClawConfig;
account: ResolvedSynologyChatAccount;
}) => string[];
};
messaging: {
targetPrefixes?: readonly string[];
normalizeTarget: (target: string) => string | undefined;
targetResolver: {
looksLikeId: (id: string) => boolean;
hint: string;
};
};
directory: {
self?: NonNullable<ChannelPlugin<ResolvedSynologyChatAccount>["directory"]>["self"];
listPeers?: NonNullable<ChannelPlugin<ResolvedSynologyChatAccount>["directory"]>["listPeers"];
listGroups?: NonNullable<ChannelPlugin<ResolvedSynologyChatAccount>["directory"]>["listGroups"];
};
outbound: {
deliveryMode: "gateway";
textChunkLimit: number;
sendText: (ctx: SynologyChannelSendTextContext) => Promise<SynologyChatOutboundResult>;
sendMedia: (ctx: SynologyChannelSendMediaContext) => Promise<SynologyChatOutboundResult>;
};
message: typeof synologyChatMessageAdapter;
gateway: {
startAccount: (ctx: SynologyChannelGatewayContext) => Promise<unknown>;
stopAccount: (ctx: SynologyChannelGatewayContext) => Promise<void>;
};
agentPrompt: {
messageToolHints: () => string[];
};
};
declare const synologyChatMessageAdapter: {
readonly id: "synology-chat";
readonly durableFinal: {
readonly capabilities: {
readonly text: true;
readonly media: true;
readonly messageSendingHooks: true;
};
};
readonly send: {
readonly text: (ctx: ChannelMessageSendTextContext<OpenClawConfig>) => Promise<SynologyChatOutboundResult>;
readonly media: (ctx: ChannelMessageSendMediaContext<OpenClawConfig>) => Promise<SynologyChatOutboundResult>;
};
} & {
receive: {};
};
declare const synologyChatPlugin: SynologyChatPlugin;
//#endregion
export { synologyChatPlugin as t };