@openclaw/feishu 2026.8.2 → 2026.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  import { a as resolveDefaultFeishuAccountId, i as listFeishuAccountIds, n as inspectFeishuCredentials, o as resolveFeishuAccount, r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-RwSyseKr.js";
2
- import { i as resolveReceiveIdType, n as looksLikeFeishuId, r as normalizeFeishuTarget } from "./targets-BUjQ1TcA.js";
3
- import { $ as sanitizeNativeFeishuCard, A as buildFeishuMediaFallbackText, M as resolveFeishuIdentityHeaderTitle, N as deliverCommentThreadText, Q as resolveFeishuCardTemplate, S as sendStructuredCardFeishu, V as cleanupAmbientCommentTypingReaction, X as parseFeishuCommentTarget, Z as readNativeFeishuCardJson, _t as resolveFeishuGroupToolPolicy, a as assertFeishuCardWithinEnvelope, at as authorizeFeishuChatMemberRead, b as sendCardFeishu, bt as resolveFeishuChatType, c as buildFeishuPresentationFallback, ct as isFeishuGroupReadAllowed, d as resolveFeishuRichReply, et as chunkFeishuMarkdown, g as chunkFeishuCardMarkdown, h as shouldSuppressFeishuTextForVoiceMedia, it as assertFeishuChatReadAllowed, k as createFeishuSendReceipt, l as isFeishuCardWithinEnvelope, lt as isFeishuGroupReadEnabled, mt as resolveFeishuGroupConfig, n as createFeishuReplyDeliveryResult, nt as materializeFeishuPostMarkdownSoftBreaks, o as buildFeishuPresentationCard, ot as canEnumerateAllFeishuGroups, p as sendMediaFeishu, s as buildFeishuPresentationCardElements, st as canEnumerateAllFeishuPeers, t as createFeishuPartialReplyDeliveryError, tt as chunkFeishuPostMarkdown, u as renderFeishuPresentationFallbackText, ut as resolveFeishuChatReadPreliminaryAuthorization, x as sendMessageFeishu, yt as normalizeFeishuChatType } from "./reply-delivery-result-BIIeISPG.js";
2
+ import { i as resolveReceiveIdType, n as looksLikeFeishuId, r as normalizeFeishuTarget } from "./targets-BTQCYRZQ.js";
3
+ import { B as deliverCommentThreadText, Ct as resolveFeishuGroupToolPolicy, D as sendMessageFeishu, E as sendCardFeishu, Et as resolveFeishuChatType, F as createFeishuSendReceipt, J as cleanupAmbientCommentTypingReaction, L as buildFeishuMediaFallbackText, O as sendStructuredCardFeishu, S as chunkFeishuCardMarkdown, Tt as normalizeFeishuChatType, _ as resolveFeishuRichReply, a as FEISHU_PRESENTATION_CAPABILITIES, bt as resolveFeishuGroupConfig, c as buildFeishuPresentationCard, ct as materializeFeishuPostMarkdownSoftBreaks, d as isFeishuCardWithinEnvelope, dt as authorizeFeishuChatMemberRead, f as markRenderedFeishuCard, ft as canEnumerateAllFeishuGroups, gt as resolveFeishuChatReadPreliminaryAuthorization, h as renderFeishuPresentationPayload, ht as isFeishuGroupReadEnabled, it as readNativeFeishuCardJson, l as buildFeishuPresentationFallback, m as renderFeishuPresentationFallbackText, mt as isFeishuGroupReadAllowed, n as createFeishuReplyDeliveryResult, o as assertFeishuCardWithinEnvelope, ot as chunkFeishuMarkdown, p as readNativeFeishuCard, pt as canEnumerateAllFeishuPeers, rt as parseFeishuCommentTarget, s as buildFeishuPayloadCard, st as chunkFeishuPostMarkdown, t as createFeishuPartialReplyDeliveryError, u as consumeFeishuPresentationFallbackMarker, ut as assertFeishuChatReadAllowed, x as shouldSuppressFeishuTextForVoiceMedia, y as sendMediaFeishu, z as resolveFeishuIdentityHeaderTitle } from "./reply-delivery-result-CEFTDA3f.js";
4
4
  import { n as normalizeCompatibilityConfig, o as normalizeFeishuExternalKey, r as FeishuChannelConfigSchema, t as legacyConfigRules } from "./doctor-contract-CQAuBotF.js";
5
5
  import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as buildFeishuModelOverrideParentCandidates, o as resolveConfiguredFeishuGroupSessionScope, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-VYgGQ-GX.js";
6
6
  import { t as messageActionTargetAliases } from "./security-audit-DKfR4Cv3.js";
7
- import { r as createFeishuClient } from "./client-vJJyfkxI.js";
7
+ import { r as createFeishuClient } from "./client-DMbIL3UH.js";
8
8
  import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-BCpDLdg9.js";
9
9
  import { t as collectFeishuSecurityAuditFindings } from "./security-audit-shared-CK5rVR-1.js";
10
10
  import { t as resolveFeishuSessionConversation } from "./session-conversation-DFCIvQK-.js";
@@ -731,8 +731,6 @@ const feishuDoctor = {
731
731
  };
732
732
  //#endregion
733
733
  //#region extensions/feishu/src/outbound.ts
734
- const RENDERED_FEISHU_CARD = Symbol("openclaw.renderedFeishuCard");
735
- const FEISHU_PRESENTATION_FALLBACK_MARKER = "__openclawPresentationFallback";
736
734
  const FEISHU_PROPAGATE_MEDIA_UPLOAD_FAILURE_MARKER = "__openclawPropagateMediaUploadFailure";
737
735
  const FEISHU_TEXT_CHUNK_LIMIT = 4e3;
738
736
  function normalizePossibleLocalImagePath(text) {
@@ -764,22 +762,6 @@ function normalizePossibleLocalImagePath(text) {
764
762
  function shouldUseCard(text) {
765
763
  return /```[\s\S]*?```/.test(text) || /\|.+\|[\r\n]+\|[-:| ]+\|/.test(text);
766
764
  }
767
- function markRenderedFeishuCard(card) {
768
- Object.defineProperty(card, RENDERED_FEISHU_CARD, {
769
- value: true,
770
- enumerable: false
771
- });
772
- return card;
773
- }
774
- function readNativeFeishuCard(payload) {
775
- const feishuData = payload.channelData?.feishu;
776
- if (!isRecord(feishuData)) return;
777
- const card = feishuData.card ?? feishuData.interactiveCard;
778
- if (!isRecord(card)) return;
779
- if (card[RENDERED_FEISHU_CARD] === true) return card;
780
- const sanitizedCard = sanitizeNativeFeishuCard(card);
781
- return sanitizedCard ? markRenderedFeishuCard(sanitizedCard) : void 0;
782
- }
783
765
  function toFeishuOutboundResult(result) {
784
766
  const { chatId, ...delivery } = result;
785
767
  return {
@@ -814,23 +796,6 @@ function partialFeishuSendError(error, results) {
814
796
  })
815
797
  });
816
798
  }
817
- function consumeFeishuPresentationFallbackMarker(payload) {
818
- const feishuData = isRecord(payload.channelData?.feishu) ? payload.channelData.feishu : void 0;
819
- const presentationFallback = feishuData?.[FEISHU_PRESENTATION_FALLBACK_MARKER];
820
- if (!isRecord(presentationFallback) || typeof presentationFallback.hasVisibleContent !== "boolean") return { payload };
821
- const nextFeishuData = { ...feishuData };
822
- delete nextFeishuData[FEISHU_PRESENTATION_FALLBACK_MARKER];
823
- const nextChannelData = { ...payload.channelData };
824
- if (Object.keys(nextFeishuData).length > 0) nextChannelData.feishu = nextFeishuData;
825
- else delete nextChannelData.feishu;
826
- return {
827
- payload: {
828
- ...payload,
829
- channelData: Object.keys(nextChannelData).length > 0 ? nextChannelData : void 0
830
- },
831
- presentationFallback: { hasVisibleContent: presentationFallback.hasVisibleContent }
832
- };
833
- }
834
799
  function readFeishuPropagateMediaUploadFailure(payload) {
835
800
  return (isRecord(payload.channelData?.feishu) ? payload.channelData.feishu : void 0)?.[FEISHU_PROPAGATE_MEDIA_UPLOAD_FAILURE_MARKER] === true;
836
801
  }
@@ -838,83 +803,6 @@ function buildFeishuPropagationOnlyChannelData(payload) {
838
803
  if ((isRecord(payload.channelData?.feishu) ? payload.channelData.feishu : void 0)?.["__openclawPropagateMediaUploadFailure"] !== true) return;
839
804
  return { feishu: { [FEISHU_PROPAGATE_MEDIA_UPLOAD_FAILURE_MARKER]: true } };
840
805
  }
841
- function buildFeishuPayloadCard(params) {
842
- const nativeCard = readNativeFeishuCard(params.payload);
843
- if (nativeCard) {
844
- assertFeishuCardWithinEnvelope(nativeCard, "Feishu native card");
845
- return nativeCard;
846
- }
847
- const rawText = params.text ?? params.payload.text;
848
- const textCard = readNativeFeishuCardJson(rawText);
849
- const { interactive, presentation } = resolveFeishuRichReply(params.payload);
850
- if (!presentation) {
851
- if (!textCard) return;
852
- assertFeishuCardWithinEnvelope(textCard, "Feishu native card");
853
- return markRenderedFeishuCard(textCard);
854
- }
855
- const text = textCard ? void 0 : resolveLegacyInteractiveTextFallback({
856
- text: rawText,
857
- interactive
858
- });
859
- const elements = buildFeishuPresentationCardElements({
860
- presentation,
861
- fallbackText: text
862
- });
863
- const identityTitle = resolveFeishuIdentityHeaderTitle(params.identity);
864
- const title = presentation?.title ?? identityTitle;
865
- const template = resolveFeishuCardTemplate(presentation?.tone === "danger" ? "red" : presentation?.tone === "warning" ? "orange" : presentation?.tone === "success" ? "green" : "blue");
866
- const card = markRenderedFeishuCard({
867
- schema: "2.0",
868
- config: { width_mode: "fill" },
869
- ...title ? { header: {
870
- title: {
871
- tag: "plain_text",
872
- content: title
873
- },
874
- template: template ?? "blue"
875
- } } : {},
876
- body: { elements }
877
- });
878
- return isFeishuCardWithinEnvelope(card) ? card : void 0;
879
- }
880
- function renderFeishuPresentationPayload({ payload, presentation, ctx }) {
881
- const textCard = readNativeFeishuCardJson(payload.text);
882
- const { fallbackText, fallbackHasCommand } = buildFeishuPresentationFallback({
883
- text: textCard ? void 0 : payload.text,
884
- presentation,
885
- textFormat: parseFeishuCommentTarget(ctx.to) ? "plain" : "markdown"
886
- });
887
- const card = buildFeishuPayloadCard({
888
- payload,
889
- text: payload.text,
890
- identity: ctx.identity
891
- });
892
- const existingFeishuData = isRecord(payload.channelData?.feishu) ? payload.channelData.feishu : void 0;
893
- if (!card) return {
894
- ...payload,
895
- text: fallbackText,
896
- channelData: {
897
- ...payload.channelData,
898
- feishu: {
899
- ...existingFeishuData,
900
- [FEISHU_PRESENTATION_FALLBACK_MARKER]: { hasVisibleContent: Boolean(renderFeishuPresentationFallbackText({ presentation }).trim()) },
901
- ...fallbackHasCommand ? { fallbackHasCommand: true } : {}
902
- }
903
- }
904
- };
905
- return {
906
- ...payload,
907
- text: fallbackText,
908
- channelData: {
909
- ...payload.channelData,
910
- feishu: {
911
- ...existingFeishuData,
912
- card,
913
- ...fallbackHasCommand ? { fallbackHasCommand: true } : {}
914
- }
915
- }
916
- };
917
- }
918
806
  function resolveFeishuReplyMode(params) {
919
807
  const replyToMessageId = params.replyToId?.trim();
920
808
  if (replyToMessageId) return {
@@ -1112,26 +1000,7 @@ const feishuOutbound = {
1112
1000
  chunker: chunkFeishuMarkdown,
1113
1001
  chunkerMode: "markdown",
1114
1002
  textChunkLimit: FEISHU_TEXT_CHUNK_LIMIT,
1115
- presentationCapabilities: {
1116
- supported: true,
1117
- buttons: true,
1118
- selects: false,
1119
- context: true,
1120
- divider: true,
1121
- limits: {
1122
- actions: {
1123
- maxActions: 20,
1124
- maxActionsPerRow: 5,
1125
- maxLabelLength: 40,
1126
- maxValueBytes: 1024
1127
- },
1128
- text: {
1129
- maxLength: FEISHU_TEXT_CHUNK_LIMIT,
1130
- encoding: "characters",
1131
- markdownDialect: "markdown"
1132
- }
1133
- }
1134
- },
1003
+ presentationCapabilities: FEISHU_PRESENTATION_CAPABILITIES,
1135
1004
  renderPresentation: renderFeishuPresentationPayload,
1136
1005
  sendPayload: async (ctx) => {
1137
1006
  const { payload, presentationFallback } = consumeFeishuPresentationFallbackMarker(ctx.payload);
@@ -1863,7 +1732,7 @@ const feishuSetupWizard = {
1863
1732
  });
1864
1733
  let probeResult = null;
1865
1734
  if (configured && account.configured) try {
1866
- const { probeFeishu } = await import("./probe-Cs1s-qSS.js").then((n) => n.n);
1735
+ const { probeFeishu } = await import("./probe-D_SatdZl.js").then((n) => n.n);
1867
1736
  probeResult = await probeFeishu(account);
1868
1737
  } catch {}
1869
1738
  if (!configured) return [formatFeishuStatusLine("needs-credentials")];
@@ -2031,7 +1900,7 @@ const meta = {
2031
1900
  order: 70,
2032
1901
  preferSessionLookupForAnnounceTarget: true
2033
1902
  };
2034
- const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-DmCiCQJE.js"), "feishuChannelRuntime");
1903
+ const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-EfDl2Q8q.js"), "feishuChannelRuntime");
2035
1904
  async function resolveFeishuMessageSender(params) {
2036
1905
  try {
2037
1906
  const sender = params.resolve(await loadFeishuChannelRuntime());
@@ -2095,7 +1964,7 @@ const feishuMessageAdapter = defineChannelMessageAdapter({
2095
1964
  }
2096
1965
  });
2097
1966
  async function createFeishuActionClient(account) {
2098
- const { createFeishuClient } = await import("./client-vJJyfkxI.js").then((n) => n.t);
1967
+ const { createFeishuClient } = await import("./client-DMbIL3UH.js").then((n) => n.t);
2099
1968
  return createFeishuClient(account);
2100
1969
  }
2101
1970
  async function resolveFeishuChatTypeById(params) {
@@ -3155,7 +3024,7 @@ const feishuPlugin = createChatChannelPlugin({
3155
3024
  })
3156
3025
  }),
3157
3026
  gateway: { startAccount: async (ctx) => {
3158
- const { monitorFeishuProvider } = await import("./monitor-BVYpA9SO.js");
3027
+ const { monitorFeishuProvider } = await import("./monitor-DoMmOfaD.js");
3159
3028
  const account = resolveFeishuRuntimeAccount({
3160
3029
  cfg: ctx.cfg,
3161
3030
  accountId: ctx.accountId
@@ -3222,26 +3091,7 @@ const feishuPlugin = createChatChannelPlugin({
3222
3091
  chunkerMode: "markdown",
3223
3092
  textChunkLimit: 4e3,
3224
3093
  sanitizeText: ({ text }) => sanitizeAssistantVisibleText(text),
3225
- presentationCapabilities: {
3226
- supported: true,
3227
- buttons: true,
3228
- selects: false,
3229
- context: true,
3230
- divider: true,
3231
- limits: {
3232
- actions: {
3233
- maxActions: 20,
3234
- maxActionsPerRow: 5,
3235
- maxLabelLength: 40,
3236
- maxValueBytes: 1024
3237
- },
3238
- text: {
3239
- maxLength: 4e3,
3240
- encoding: "characters",
3241
- markdownDialect: "markdown"
3242
- }
3243
- }
3244
- },
3094
+ presentationCapabilities: FEISHU_PRESENTATION_CAPABILITIES,
3245
3095
  ...createRuntimeOutboundDelegates({
3246
3096
  getRuntime: loadFeishuChannelRuntime,
3247
3097
  renderPresentation: { resolve: (runtime) => runtime.feishuOutbound.renderPresentation },
@@ -1,2 +1,2 @@
1
- import { t as feishuPlugin } from "./channel-BtM7n79m.js";
1
+ import { t as feishuPlugin } from "./channel-DSYCNah8.js";
2
2
  export { feishuPlugin };
@@ -1,9 +1,9 @@
1
1
  import { o as resolveFeishuAccount, s as resolveFeishuRuntimeAccount } from "./accounts-RwSyseKr.js";
2
- import { c as listFeishuDirectoryPeers, o as feishuOutbound, s as listFeishuDirectoryGroups } from "./channel-BtM7n79m.js";
3
- import { _ as editMessageFeishu, b as sendCardFeishu, m as sendStickerFeishu, v as getMessageFeishu, x as sendMessageFeishu } from "./reply-delivery-result-BIIeISPG.js";
4
- import { r as createFeishuClient } from "./client-vJJyfkxI.js";
5
- import { a as getFeishuMemberInfo, i as getChatMembers, n as buildFeishuDirectChatMembers, r as getChatInfo, t as assertFeishuChatMember } from "./chat-Cbr7P_JH.js";
6
- import { t as probeFeishu } from "./probe-Cs1s-qSS.js";
2
+ import { c as listFeishuDirectoryPeers, o as feishuOutbound, s as listFeishuDirectoryGroups } from "./channel-DSYCNah8.js";
3
+ import { C as editMessageFeishu, D as sendMessageFeishu, E as sendCardFeishu, I as assertFeishuApiSuccess, b as sendStickerFeishu, w as getMessageFeishu } from "./reply-delivery-result-CEFTDA3f.js";
4
+ import { r as createFeishuClient } from "./client-DMbIL3UH.js";
5
+ import { a as getFeishuMemberInfo, i as getChatMembers, n as buildFeishuDirectChatMembers, r as getChatInfo, t as assertFeishuChatMember } from "./chat-CxXaPTuO.js";
6
+ import { t as probeFeishu } from "./probe-D_SatdZl.js";
7
7
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  //#region extensions/feishu/src/directory.ts
9
9
  const MAX_FEISHU_DIRECTORY_PAGES = 100;
@@ -84,9 +84,6 @@ async function listFeishuDirectoryGroupsLive(params) {
84
84
  }
85
85
  //#endregion
86
86
  //#region extensions/feishu/src/pins.ts
87
- function assertFeishuPinApiSuccess(response, action) {
88
- if (response.code !== 0) throw new Error(`Feishu ${action} failed: ${response.msg || `code ${response.code}`}`);
89
- }
90
87
  function normalizePin(pin) {
91
88
  return {
92
89
  messageId: pin.message_id,
@@ -103,7 +100,7 @@ async function createPinFeishu(params) {
103
100
  });
104
101
  if (!account.configured) throw new Error(`Feishu account "${account.accountId}" not configured`);
105
102
  const response = await createFeishuClient(account).im.pin.create({ data: { message_id: params.messageId } });
106
- assertFeishuPinApiSuccess(response, "pin create");
103
+ assertFeishuApiSuccess(response, "Feishu pin create failed");
107
104
  return response.data?.pin ? normalizePin(response.data.pin) : null;
108
105
  }
109
106
  async function removePinFeishu(params) {
@@ -112,7 +109,8 @@ async function removePinFeishu(params) {
112
109
  accountId: params.accountId
113
110
  });
114
111
  if (!account.configured) throw new Error(`Feishu account "${account.accountId}" not configured`);
115
- assertFeishuPinApiSuccess(await createFeishuClient(account).im.pin.delete({ path: { message_id: params.messageId } }), "pin delete");
112
+ const response = await createFeishuClient(account).im.pin.delete({ path: { message_id: params.messageId } });
113
+ assertFeishuApiSuccess(response, "Feishu pin delete failed");
116
114
  }
117
115
  async function listPinsFeishu(params) {
118
116
  const account = resolveFeishuRuntimeAccount({
@@ -127,7 +125,7 @@ async function listPinsFeishu(params) {
127
125
  ...typeof params.pageSize === "number" ? { page_size: Math.max(1, Math.min(100, Math.floor(params.pageSize))) } : {},
128
126
  ...params.pageToken ? { page_token: params.pageToken } : {}
129
127
  } });
130
- assertFeishuPinApiSuccess(response, "pin list");
128
+ assertFeishuApiSuccess(response, "Feishu pin list failed");
131
129
  return {
132
130
  chatId: params.chatId,
133
131
  pins: (response.data?.items ?? []).map(normalizePin),
@@ -142,9 +140,6 @@ function resolveConfiguredFeishuClient(params) {
142
140
  if (!account.configured) throw new Error(`Feishu account "${account.accountId}" not configured`);
143
141
  return createFeishuClient(account);
144
142
  }
145
- function assertFeishuReactionApiSuccess(response, action) {
146
- if (response.code !== 0) throw new Error(`Feishu ${action} failed: ${response.msg || `code ${response.code}`}`);
147
- }
148
143
  /**
149
144
  * Add a reaction (emoji) to a message.
150
145
  * @param emojiType - Feishu emoji type, e.g., "SMILE", "THUMBSUP", "HEART"
@@ -159,7 +154,7 @@ async function addReactionFeishu(params) {
159
154
  path: { message_id: messageId },
160
155
  data: { reaction_type: { emoji_type: emojiType } }
161
156
  });
162
- assertFeishuReactionApiSuccess(response, "add reaction");
157
+ assertFeishuApiSuccess(response, "Feishu add reaction failed");
163
158
  const reactionId = response.data?.reaction_id;
164
159
  if (!reactionId) throw new Error("Feishu add reaction failed: no reaction_id returned");
165
160
  return { reactionId };
@@ -169,13 +164,14 @@ async function addReactionFeishu(params) {
169
164
  */
170
165
  async function removeReactionFeishu(params) {
171
166
  const { cfg, messageId, reactionId, accountId } = params;
172
- assertFeishuReactionApiSuccess(await resolveConfiguredFeishuClient({
167
+ const response = await resolveConfiguredFeishuClient({
173
168
  cfg,
174
169
  accountId
175
170
  }).im.messageReaction.delete({ path: {
176
171
  message_id: messageId,
177
172
  reaction_id: reactionId
178
- } }), "remove reaction");
173
+ } });
174
+ assertFeishuApiSuccess(response, "Feishu remove reaction failed");
179
175
  }
180
176
  /**
181
177
  * List all reactions for a message.
@@ -197,7 +193,7 @@ async function listReactionsFeishu(params) {
197
193
  ...pageToken ? { page_token: pageToken } : {}
198
194
  } : void 0
199
195
  });
200
- assertFeishuReactionApiSuccess(response, "list reactions");
196
+ assertFeishuApiSuccess(response, "Feishu list reactions failed");
201
197
  for (const item of response.data?.items ?? []) reactions.push({
202
198
  reactionId: item.reaction_id ?? "",
203
199
  emojiType: item.reaction_type?.emoji_type ?? "",
@@ -1,5 +1,5 @@
1
- import { B as resolveFeishuToolAccount, F as feishuExternalToolResult, G as formatFeishuApiError, at as authorizeFeishuChatMemberRead, bt as resolveFeishuChatType, it as assertFeishuChatReadAllowed, ut as resolveFeishuChatReadPreliminaryAuthorization, z as resolveAnyEnabledFeishuToolsConfig } from "./reply-delivery-result-BIIeISPG.js";
2
- import { r as createFeishuClient } from "./client-vJJyfkxI.js";
1
+ import { Et as resolveFeishuChatType, H as feishuExternalToolResult, K as resolveAnyEnabledFeishuToolsConfig, Q as formatFeishuApiError, dt as authorizeFeishuChatMemberRead, gt as resolveFeishuChatReadPreliminaryAuthorization, q as resolveFeishuToolAccount, ut as assertFeishuChatReadAllowed } from "./reply-delivery-result-CEFTDA3f.js";
2
+ import { r as createFeishuClient } from "./client-DMbIL3UH.js";
3
3
  import { optionalPositiveIntegerSchema } from "openclaw/plugin-sdk/channel-actions";
4
4
  import { readPositiveIntegerParam } from "openclaw/plugin-sdk/param-readers";
5
5
  import { Type } from "typebox";
@@ -2,6 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
2
  import { createRequire } from "node:module";
3
3
  import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
4
4
  import * as Lark from "@larksuiteoapi/node-sdk";
5
+ import { bufferToBlobPart } from "openclaw/plugin-sdk/blob-runtime";
5
6
  import { isRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
6
7
  import { readPluginPackageVersion, resolveAmbientNodeProxyAgent } from "openclaw/plugin-sdk/extension-shared";
7
8
  //#region extensions/feishu/src/client-timeout.ts
@@ -100,11 +101,6 @@ function stringifyMultipartFieldValue(value) {
100
101
  default: return;
101
102
  }
102
103
  }
103
- function bufferToBlobPart(value) {
104
- const bytes = new Uint8Array(value.byteLength);
105
- bytes.set(value);
106
- return bytes;
107
- }
108
104
  function normalizeMultipartUploadData(opts) {
109
105
  if (!isMultipartFormRequest(opts) || !isRecord(opts.data) || !isFeishuMessageMediaUploadRequest(opts, opts.data)) return opts;
110
106
  const form = new FormData();
@@ -1,6 +1,6 @@
1
1
  import { r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-RwSyseKr.js";
2
2
  import { t as getFeishuRuntime } from "./runtime-C5JxBWZp.js";
3
- import { r as registerFeishuAiAgent, t as probeFeishu } from "./probe-Cs1s-qSS.js";
3
+ import { r as registerFeishuAiAgent, t as probeFeishu } from "./probe-D_SatdZl.js";
4
4
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
5
5
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
6
6
  import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
@@ -143,7 +143,7 @@ async function fetchBotIdentityForMonitor(account, options = {}) {
143
143
  }
144
144
  //#endregion
145
145
  //#region extensions/feishu/src/monitor.ts
146
- const loadMonitorAccountRuntime = createLazyRuntimeModule(() => import("./monitor.account-CuOAmGJf.js"));
146
+ const loadMonitorAccountRuntime = createLazyRuntimeModule(() => import("./monitor.account-WFdlCDhR.js"));
147
147
  async function monitorFeishuProvider(opts = {}) {
148
148
  const cfg = opts.config;
149
149
  if (!cfg) throw new Error("Config is required for Feishu monitor");