From bdfa2b490bab2613549eab6c0092dc243c5a0e64 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 19:35:52 +0000 Subject: [PATCH] refactor(media): reuse buildAgentMediaPayload --- extensions/feishu/src/bot.ts | 24 ++----------------- .../mattermost/src/mattermost/monitor.ts | 24 ++----------------- 2 files changed, 4 insertions(+), 44 deletions(-) diff --git a/extensions/feishu/src/bot.ts b/extensions/feishu/src/bot.ts index 7a1ffd6191e..a0646a86e0c 100644 --- a/extensions/feishu/src/bot.ts +++ b/extensions/feishu/src/bot.ts @@ -1,5 +1,6 @@ import type { ClawdbotConfig, RuntimeEnv } from "openclaw/plugin-sdk"; import { + buildAgentMediaPayload, buildPendingHistoryContextFromMap, recordPendingHistoryEntryIfEnabled, clearHistoryEntriesIfEnabled, @@ -433,27 +434,6 @@ async function resolveFeishuMediaList(params: { * Build media payload for inbound context. * Similar to Discord's buildDiscordMediaPayload(). */ -function buildFeishuMediaPayload(mediaList: FeishuMediaInfo[]): { - MediaPath?: string; - MediaType?: string; - MediaUrl?: string; - MediaPaths?: string[]; - MediaUrls?: string[]; - MediaTypes?: string[]; -} { - const first = mediaList[0]; - const mediaPaths = mediaList.map((media) => media.path); - const mediaTypes = mediaList.map((media) => media.contentType).filter(Boolean) as string[]; - return { - MediaPath: first?.path, - MediaType: first?.contentType, - MediaUrl: first?.path, - MediaPaths: mediaPaths.length > 0 ? mediaPaths : undefined, - MediaUrls: mediaPaths.length > 0 ? mediaPaths : undefined, - MediaTypes: mediaTypes.length > 0 ? mediaTypes : undefined, - }; -} - export function parseFeishuMessageEvent( event: FeishuMessageEvent, botOpenId?: string, @@ -766,7 +746,7 @@ export async function handleFeishuMessage(params: { log, accountId: account.accountId, }); - const mediaPayload = buildFeishuMediaPayload(mediaList); + const mediaPayload = buildAgentMediaPayload(mediaList); // Fetch quoted/replied message content if parentId exists let quotedContent: string | undefined; diff --git a/extensions/mattermost/src/mattermost/monitor.ts b/extensions/mattermost/src/mattermost/monitor.ts index ddc6dce702b..db31051356a 100644 --- a/extensions/mattermost/src/mattermost/monitor.ts +++ b/extensions/mattermost/src/mattermost/monitor.ts @@ -6,6 +6,7 @@ import type { RuntimeEnv, } from "openclaw/plugin-sdk"; import { + buildAgentMediaPayload, createReplyPrefixOptions, createTypingCallbacks, logInboundDrop, @@ -179,27 +180,6 @@ function buildMattermostAttachmentPlaceholder(mediaList: MattermostMediaInfo[]): return `${tag} (${mediaList.length} ${suffix})`; } -function buildMattermostMediaPayload(mediaList: MattermostMediaInfo[]): { - MediaPath?: string; - MediaType?: string; - MediaUrl?: string; - MediaPaths?: string[]; - MediaUrls?: string[]; - MediaTypes?: string[]; -} { - const first = mediaList[0]; - const mediaPaths = mediaList.map((media) => media.path); - const mediaTypes = mediaList.map((media) => media.contentType).filter(Boolean) as string[]; - return { - MediaPath: first?.path, - MediaType: first?.contentType, - MediaUrl: first?.path, - MediaPaths: mediaPaths.length > 0 ? mediaPaths : undefined, - MediaUrls: mediaPaths.length > 0 ? mediaPaths : undefined, - MediaTypes: mediaTypes.length > 0 ? mediaTypes : undefined, - }; -} - function buildMattermostWsUrl(baseUrl: string): string { const normalized = normalizeMattermostBaseUrl(baseUrl); if (!normalized) { @@ -650,7 +630,7 @@ export async function monitorMattermostProvider(opts: MonitorMattermostOpts = {} } const to = kind === "direct" ? `user:${senderId}` : `channel:${channelId}`; - const mediaPayload = buildMattermostMediaPayload(mediaList); + const mediaPayload = buildAgentMediaPayload(mediaList); const inboundHistory = historyKey && historyLimit > 0 ? (channelHistories.get(historyKey) ?? []).map((entry) => ({