@openclaw/feishu 2026.5.26 → 2026.5.27

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.
package/dist/api.js CHANGED
@@ -2,7 +2,7 @@ import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as bu
2
2
  import { n as getFeishuThreadBindingManager, r as testing, t as createFeishuThreadBindingManager } from "./thread-bindings-D24m3Cjy.js";
3
3
  import { n as handleFeishuSubagentEnded, r as handleFeishuSubagentSpawning, t as handleFeishuSubagentDeliveryTarget } from "./subagent-hooks-fuyBHOVu.js";
4
4
  import { r as listEnabledFeishuAccounts } from "./accounts-CXnY5H8g.js";
5
- import { a as setFeishuNamedAccountEnabled, i as feishuSetupAdapter, n as feishuSetupWizard, r as runFeishuLogin, t as feishuPlugin } from "./channel-DavfT_AA.js";
5
+ import { a as setFeishuNamedAccountEnabled, i as feishuSetupAdapter, n as feishuSetupWizard, r as runFeishuLogin, t as feishuPlugin } from "./channel-DS2vP1nr.js";
6
6
  import { t as getFeishuRuntime } from "./runtime-C5JxBWZp.js";
7
7
  import { a as jsonToolResult, d as registerFeishuChatTools, f as createFeishuToolClient, m as resolveFeishuToolAccount, n as registerFeishuDriveTools, o as toolExecutionErrorResult, p as resolveAnyEnabledFeishuToolsConfig, s as unknownToolActionResult } from "./drive-DwgWWkJi.js";
8
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, readStringValue, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,7 +1,7 @@
1
1
  import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as buildFeishuModelOverrideParentCandidates, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-DuL575sn.js";
2
2
  import { n as looksLikeFeishuId, r as normalizeFeishuTarget, t as detectIdType } from "./targets-BUjQ1TcA.js";
3
3
  import { a as resolveDefaultFeishuAccountId, f as isRecord$2, i as listFeishuAccountIds, n as inspectFeishuCredentials, o as resolveFeishuAccount, r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-CXnY5H8g.js";
4
- import { n as createFeishuSendReceipt, s as createFeishuCardInteractionEnvelope } from "./send-result-CHvu8Rr7.js";
4
+ import { n as createFeishuSendReceipt, s as createFeishuCardInteractionEnvelope } from "./send-result-DSTSkRDM.js";
5
5
  import { t as messageActionTargetAliases } from "./security-audit-BIeA3W3Q.js";
6
6
  import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-ChjJKAJ9.js";
7
7
  import { t as collectFeishuSecurityAuditFindings } from "./security-audit-shared-BIHeF-S_.js";
@@ -13,13 +13,12 @@ import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
13
13
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
14
14
  import { adaptScopedAccountAccessor, createHybridChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
15
15
  import { buildChannelOutboundSessionRoute, createChatChannelPlugin, stripChannelTargetPrefix } from "openclaw/plugin-sdk/channel-core";
16
- import { defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-message";
16
+ import { createRuntimeOutboundDelegates, defineChannelMessageAdapter } from "openclaw/plugin-sdk/channel-outbound";
17
17
  import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
18
18
  import { createAllowlistProviderGroupPolicyWarningCollector, projectConfigAccountIdWarningCollector } from "openclaw/plugin-sdk/channel-policy";
19
19
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter, listDirectoryGroupEntriesFromMapKeysAndAllowFrom, listDirectoryUserEntriesFromAllowFromAndMapKeys } from "openclaw/plugin-sdk/directory-runtime";
20
20
  import { normalizeMessagePresentation, renderMessagePresentationFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
21
21
  import { createLazyRuntimeNamedExport } from "openclaw/plugin-sdk/lazy-runtime";
22
- import { createRuntimeOutboundDelegates } from "openclaw/plugin-sdk/outbound-runtime";
23
22
  import { buildProbeChannelStatusSummary, createComputedAccountStatusAdapter, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/status-helpers";
24
23
  import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$2, normalizeAccountId as normalizeAccountId$1, resolveMergedAccountConfig } from "openclaw/plugin-sdk/account-resolution";
25
24
  import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
@@ -1723,7 +1722,7 @@ const meta = {
1723
1722
  aliases: ["lark"],
1724
1723
  order: 70
1725
1724
  };
1726
- const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-ItBg9SfS.js"), "feishuChannelRuntime");
1725
+ const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-CxRDzbEQ.js"), "feishuChannelRuntime");
1727
1726
  function toFeishuMessageSendResult(result, kind) {
1728
1727
  const receipt = result.receipt ?? createFeishuSendReceipt({
1729
1728
  messageId: result.messageId,
@@ -2543,7 +2542,7 @@ const feishuPlugin = createChatChannelPlugin({
2543
2542
  })
2544
2543
  }),
2545
2544
  gateway: { startAccount: async (ctx) => {
2546
- const { monitorFeishuProvider } = await import("./monitor-gFxvkDyO.js");
2545
+ const { monitorFeishuProvider } = await import("./monitor-DNYcF9wy.js");
2547
2546
  const account = resolveFeishuRuntimeAccount({
2548
2547
  cfg: ctx.cfg,
2549
2548
  accountId: ctx.accountId
@@ -1,2 +1,2 @@
1
- import { t as feishuPlugin } from "./channel-DavfT_AA.js";
1
+ import { t as feishuPlugin } from "./channel-DS2vP1nr.js";
2
2
  export { feishuPlugin };
@@ -1,9 +1,9 @@
1
1
  import { o as resolveFeishuAccount, s as resolveFeishuRuntimeAccount, y as parseFeishuCommentTarget } from "./accounts-CXnY5H8g.js";
2
- import { h as listFeishuDirectoryPeers, m as listFeishuDirectoryGroups, o as buildFeishuPresentationCardElements } from "./channel-DavfT_AA.js";
2
+ import { h as listFeishuDirectoryPeers, m as listFeishuDirectoryGroups, o as buildFeishuPresentationCardElements } from "./channel-DS2vP1nr.js";
3
3
  import { r as createFeishuClient } from "./client-BnH2fRL2.js";
4
4
  import { c as getChatInfo, l as getChatMembers, r as cleanupAmbientCommentTypingReaction, t as deliverCommentThreadText, u as getFeishuMemberInfo } from "./drive-DwgWWkJi.js";
5
5
  import { chunkTextForOutbound } from "./runtime-api.js";
6
- import { a as sendCardFeishu, c as sendStructuredCardFeishu, g as shouldSuppressFeishuTextForVoiceMedia, h as sendMediaFeishu, i as resolveFeishuCardTemplate, n as getMessageFeishu, o as sendMarkdownCardFeishu, s as sendMessageFeishu, t as editMessageFeishu } from "./send-DQClIwTI.js";
6
+ import { a as sendCardFeishu, c as sendStructuredCardFeishu, g as shouldSuppressFeishuTextForVoiceMedia, h as sendMediaFeishu, i as resolveFeishuCardTemplate, n as getMessageFeishu, o as sendMarkdownCardFeishu, s as sendMessageFeishu, t as editMessageFeishu } from "./send-jDh7bucI.js";
7
7
  import { t as probeFeishu } from "./probe-Da81t6a5.js";
8
8
  import { isRecord, normalizeLowercaseStringOrEmpty, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { interactiveReplyToPresentation, normalizeInteractiveReply, normalizeMessagePresentation, renderMessagePresentationFallbackText, resolveInteractiveTextFallback } from "openclaw/plugin-sdk/interactive-runtime";
@@ -3,7 +3,7 @@ import { l as fetchBotIdentityForMonitor } from "./monitor.state-CxrHFQX2.js";
3
3
  //#region extensions/feishu/src/monitor.ts
4
4
  let monitorAccountRuntimePromise;
5
5
  async function loadMonitorAccountRuntime() {
6
- monitorAccountRuntimePromise ??= import("./monitor.account-CmXHWuwG.js");
6
+ monitorAccountRuntimePromise ??= import("./monitor.account-vUWzYlT_.js");
7
7
  return await monitorAccountRuntimePromise;
8
8
  }
9
9
  async function monitorFeishuProvider(opts = {}) {
@@ -2,21 +2,20 @@ import { t as buildFeishuConversationId } from "./conversation-id-DuL575sn.js";
2
2
  import { i as resolveReceiveIdType } from "./targets-BUjQ1TcA.js";
3
3
  import { t as createFeishuThreadBindingManager } from "./thread-bindings-D24m3Cjy.js";
4
4
  import { _ as buildFeishuCommentTarget, f as isRecord$1, h as readString, l as encodeQuery, m as parseCommentContentElements, p as normalizeString, s as resolveFeishuRuntimeAccount, u as extractReplyText, v as normalizeCommentFileType } from "./accounts-CXnY5H8g.js";
5
- import { c as normalizeFeishuAllowEntry, d as resolveFeishuGroupConversationIngressAccess, f as resolveFeishuGroupSenderActivationIngressAccess, l as resolveFeishuDmIngressAccess, p as resolveFeishuReplyPolicy, s as hasExplicitFeishuGroupConfig, u as resolveFeishuGroupConfig } from "./channel-DavfT_AA.js";
6
- import { c as decodeFeishuCardAction, o as buildFeishuCardActionTextFallback, s as createFeishuCardInteractionEnvelope } from "./send-result-CHvu8Rr7.js";
5
+ import { c as normalizeFeishuAllowEntry, d as resolveFeishuGroupConversationIngressAccess, f as resolveFeishuGroupSenderActivationIngressAccess, l as resolveFeishuDmIngressAccess, p as resolveFeishuReplyPolicy, s as hasExplicitFeishuGroupConfig, u as resolveFeishuGroupConfig } from "./channel-DS2vP1nr.js";
6
+ import { c as decodeFeishuCardAction, o as buildFeishuCardActionTextFallback, s as createFeishuCardInteractionEnvelope } from "./send-result-DSTSkRDM.js";
7
7
  import { t as getFeishuRuntime } from "./runtime-C5JxBWZp.js";
8
8
  import { a as getFeishuUserAgent, i as createFeishuWSClient, n as createEventDispatcher, r as createFeishuClient } from "./client-BnH2fRL2.js";
9
9
  import { c as getChatInfo, i as createCommentTypingReactionLifecycle, t as deliverCommentThreadText } from "./drive-DwgWWkJi.js";
10
- import { buildAgentMediaPayload, createReplyPrefixContext, evaluateSupplementalContextVisibility, loadSessionStore, normalizeAgentId as normalizeAgentId$2, resolveChannelContextVisibilityMode, resolveSessionStoreEntry } from "./runtime-api.js";
11
- import { _ as normalizeFeishuExternalKey, a as sendCardFeishu, c as sendStructuredCardFeishu, d as isFeishuBroadcastMention, f as isMentionForwardRequest, g as shouldSuppressFeishuTextForVoiceMedia, h as sendMediaFeishu, i as resolveFeishuCardTemplate, l as parsePostContent, m as saveMessageResourceFeishu, n as getMessageFeishu, p as isFeishuGroupChatType, r as listFeishuThreadMessages, s as sendMessageFeishu, u as extractMentionTargets } from "./send-DQClIwTI.js";
10
+ import { createReplyPrefixContext, evaluateSupplementalContextVisibility, loadSessionStore, normalizeAgentId as normalizeAgentId$2, resolveChannelContextVisibilityMode, resolveSessionStoreEntry } from "./runtime-api.js";
11
+ import { _ as normalizeFeishuExternalKey, a as sendCardFeishu, c as sendStructuredCardFeishu, d as isFeishuBroadcastMention, f as isMentionForwardRequest, g as shouldSuppressFeishuTextForVoiceMedia, h as sendMediaFeishu, i as resolveFeishuCardTemplate, l as parsePostContent, m as saveMessageResourceFeishu, n as getMessageFeishu, p as isFeishuGroupChatType, r as listFeishuThreadMessages, s as sendMessageFeishu, u as extractMentionTargets } from "./send-jDh7bucI.js";
12
12
  import { i as waitForAbortableDelay, r as raceWithTimeoutAndAbort } from "./probe-Da81t6a5.js";
13
13
  import { a as feishuWebhookRateLimiter, c as wsClients, i as botOpenIds, l as fetchBotIdentityForMonitor, n as FEISHU_WEBHOOK_MAX_BODY_BYTES, o as httpServers, r as botNames, s as recordWebhookStatus, t as FEISHU_WEBHOOK_BODY_TIMEOUT_MS } from "./monitor.state-CxrHFQX2.js";
14
14
  import { asBoolean, asNullableRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
15
15
  import { ensureConfiguredBindingRouteReady, resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-runtime";
16
16
  import { resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
17
- import { createChannelMessageReplyPipeline } from "openclaw/plugin-sdk/channel-message";
17
+ import { createChannelMessageReplyPipeline, formatChannelProgressDraftLineForEntry, isChannelProgressDraftWorkToolName, resolveAgentOutboundIdentity } from "openclaw/plugin-sdk/channel-outbound";
18
18
  import { createChannelPairingController, createChannelPairingController as createChannelPairingController$1 } from "openclaw/plugin-sdk/channel-pairing";
19
- import { resolveAgentOutboundIdentity } from "openclaw/plugin-sdk/outbound-runtime";
20
19
  import { stripReasoningTagsFromText } from "openclaw/plugin-sdk/text-chunking";
21
20
  import fs from "node:fs";
22
21
  import os from "node:os";
@@ -31,11 +30,11 @@ import { resolvePinnedMainDmOwnerFromAllowlist, safeEqualSecret } from "openclaw
31
30
  import * as crypto$1 from "node:crypto";
32
31
  import crypto from "node:crypto";
33
32
  import { resolveChannelConfigWrites } from "openclaw/plugin-sdk/channel-config-writes";
33
+ import { buildChannelInboundEventContext, toInboundMediaFacts } from "openclaw/plugin-sdk/channel-inbound";
34
34
  import { DEFAULT_GROUP_HISTORY_LIMIT, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
35
35
  import { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
36
36
  import { formatReasoningMessage } from "openclaw/plugin-sdk/agent-runtime";
37
37
  import { logTypingFailure } from "openclaw/plugin-sdk/channel-feedback";
38
- import { formatChannelProgressDraftLineForEntry, isChannelProgressDraftWorkToolName } from "openclaw/plugin-sdk/channel-streaming";
39
38
  import * as http from "node:http";
40
39
  import { installRequestBodyLimitGuard, readWebhookBodyOrReject } from "openclaw/plugin-sdk/webhook-request-guards";
41
40
  import { isAbortRequestText, isBtwRequestText } from "openclaw/plugin-sdk/command-primitives-runtime";
@@ -2212,7 +2211,6 @@ async function handleFeishuMessage(params) {
2212
2211
  log(`feishu[${account.accountId}]: skipping empty message (no text, no media) from ${ctx.senderOpenId}`);
2213
2212
  return;
2214
2213
  }
2215
- const mediaPayload = buildAgentMediaPayload(mediaList);
2216
2214
  const audioTranscript = await resolveFeishuAudioPreflightTranscript({
2217
2215
  cfg: effectiveCfg,
2218
2216
  mediaList,
@@ -2221,6 +2219,7 @@ async function handleFeishuMessage(params) {
2221
2219
  log
2222
2220
  });
2223
2221
  const preflightAudioIndex = audioTranscript === void 0 ? -1 : mediaList.findIndex((media) => media.contentType?.startsWith("audio/"));
2222
+ const inboundMedia = toInboundMediaFacts(mediaList, { transcribed: (_media, index) => index === preflightAudioIndex });
2224
2223
  const agentFacingContent = audioTranscript ?? ctx.content;
2225
2224
  const agentFacingCtx = audioTranscript === void 0 ? ctx : {
2226
2225
  ...ctx,
@@ -2425,40 +2424,64 @@ async function handleFeishuMessage(params) {
2425
2424
  const buildCtxPayloadForAgent = async (agentId, agentSessionKey, agentAccountId, wasMentioned) => {
2426
2425
  const groupName = await resolveGroupNameForLabel();
2427
2426
  const threadContext = await resolveThreadContextForAgent(agentId, agentSessionKey, groupName);
2428
- return core.channel.reply.finalizeInboundContext({
2429
- Body: combinedBody,
2430
- BodyForAgent: messageBody,
2431
- InboundHistory: inboundHistory,
2432
- ReplyToId: ctx.parentId,
2433
- RootMessageId: ctx.rootId,
2434
- RawBody: agentFacingContent,
2435
- CommandBody: agentFacingContent,
2436
- Transcript: audioTranscript,
2437
- From: feishuFrom,
2438
- To: feishuTo,
2439
- SessionKey: agentSessionKey,
2440
- AccountId: agentAccountId,
2441
- ChatType: isGroup ? "group" : "direct",
2442
- GroupSubject: isGroup ? groupName || ctx.chatId : void 0,
2443
- ConversationLabel: isGroup && groupName && !isTopicSessionForThread ? groupName : void 0,
2444
- SenderName: ctx.senderName ?? ctx.senderOpenId,
2445
- SenderId: ctx.senderOpenId,
2446
- Provider: "feishu",
2447
- Surface: "feishu",
2448
- MessageSid: ctx.messageId,
2449
- ReplyToBody: quotedContent ?? void 0,
2450
- ThreadStarterBody: threadContext.threadStarterBody,
2451
- ThreadHistoryBody: threadContext.threadHistoryBody,
2452
- ThreadLabel: threadContext.threadLabel,
2453
- MessageThreadId: ctx.rootId && isTopicSessionForThread ? ctx.rootId : void 0,
2454
- Timestamp: messageCreateTimeMs,
2455
- WasMentioned: wasMentioned,
2456
- CommandAuthorized: commandAuthorized,
2457
- OriginatingChannel: "feishu",
2458
- OriginatingTo: feishuTo,
2459
- GroupSystemPrompt: isGroup ? normalizeOptionalString(groupConfig?.systemPrompt) : void 0,
2460
- ...mediaPayload,
2461
- ...preflightAudioIndex >= 0 ? { MediaTranscribedIndexes: [preflightAudioIndex] } : {}
2427
+ return buildChannelInboundEventContext({
2428
+ channel: "feishu",
2429
+ finalize: core.channel.reply.finalizeInboundContext,
2430
+ supplemental: {
2431
+ quote: quotedContent ? {
2432
+ id: ctx.parentId,
2433
+ body: quotedContent
2434
+ } : void 0,
2435
+ thread: {
2436
+ starterBody: threadContext.threadStarterBody,
2437
+ historyBody: threadContext.threadHistoryBody,
2438
+ label: threadContext.threadLabel
2439
+ },
2440
+ groupSystemPrompt: isGroup ? normalizeOptionalString(groupConfig?.systemPrompt) : void 0
2441
+ },
2442
+ media: inboundMedia,
2443
+ messageId: ctx.messageId,
2444
+ timestamp: messageCreateTimeMs,
2445
+ from: feishuFrom,
2446
+ sender: {
2447
+ id: ctx.senderOpenId,
2448
+ name: ctx.senderName ?? ctx.senderOpenId
2449
+ },
2450
+ conversation: {
2451
+ kind: isGroup ? "group" : "direct",
2452
+ id: ctx.chatId,
2453
+ label: isGroup && groupName && !isTopicSessionForThread ? groupName : void 0,
2454
+ threadId: ctx.rootId && isTopicSessionForThread ? ctx.rootId : void 0
2455
+ },
2456
+ route: {
2457
+ agentId,
2458
+ accountId: agentAccountId,
2459
+ routeSessionKey: agentSessionKey
2460
+ },
2461
+ reply: {
2462
+ to: feishuTo,
2463
+ replyToId: ctx.parentId,
2464
+ messageThreadId: ctx.rootId && isTopicSessionForThread ? ctx.rootId : void 0
2465
+ },
2466
+ message: {
2467
+ body: combinedBody,
2468
+ bodyForAgent: messageBody,
2469
+ inboundHistory,
2470
+ rawBody: agentFacingContent,
2471
+ commandBody: agentFacingContent
2472
+ },
2473
+ access: {
2474
+ mentions: {
2475
+ canDetectMention: isGroup,
2476
+ wasMentioned
2477
+ },
2478
+ commands: { authorized: commandAuthorized }
2479
+ },
2480
+ extra: {
2481
+ RootMessageId: ctx.rootId,
2482
+ Transcript: audioTranscript,
2483
+ GroupSubject: isGroup ? groupName || ctx.chatId : void 0
2484
+ }
2462
2485
  });
2463
2486
  };
2464
2487
  const isTopicSession = isGroup && (groupSession?.groupSessionScope === "group_topic" || groupSession?.groupSessionScope === "group_topic_sender");
@@ -2543,7 +2566,7 @@ async function handleFeishuMessage(params) {
2543
2566
  messageCreateTimeMs
2544
2567
  });
2545
2568
  log(`feishu[${account.accountId}]: broadcast active dispatch agent=${agentId} (session=${agentSessionKey})`);
2546
- await core.channel.turn.run({
2569
+ await core.channel.inbound.run({
2547
2570
  channel: "feishu",
2548
2571
  accountId: route.accountId,
2549
2572
  raw: ctx,
@@ -2601,7 +2624,7 @@ async function handleFeishuMessage(params) {
2601
2624
  markComplete: () => {}
2602
2625
  };
2603
2626
  log(`feishu[${account.accountId}]: broadcast observer dispatch agent=${agentId} (session=${agentSessionKey})`);
2604
- await core.channel.turn.run({
2627
+ await core.channel.inbound.run({
2605
2628
  channel: "feishu",
2606
2629
  accountId: route.accountId,
2607
2630
  raw: ctx,
@@ -2675,7 +2698,7 @@ async function handleFeishuMessage(params) {
2675
2698
  messageCreateTimeMs
2676
2699
  });
2677
2700
  log(`feishu[${account.accountId}]: dispatching to agent (session=${route.sessionKey})`);
2678
- const turnResult = await core.channel.turn.run({
2701
+ const turnResult = await core.channel.inbound.run({
2679
2702
  channel: "feishu",
2680
2703
  accountId: route.accountId,
2681
2704
  raw: ctx,
@@ -4212,7 +4235,7 @@ async function handleFeishuCommentEvent(params) {
4212
4235
  let dispatchSettledBeforeStart = false;
4213
4236
  try {
4214
4237
  log(`feishu[${account.accountId}]: dispatching drive comment to agent (session=${commentSessionKey} comment=${turn.commentId} type=${turn.noticeType})`);
4215
- const turnResult = await core.channel.turn.run({
4238
+ const turnResult = await core.channel.inbound.run({
4216
4239
  channel: "feishu",
4217
4240
  accountId: route.accountId,
4218
4241
  raw: turn,
@@ -1,6 +1,6 @@
1
1
  import { n as setFeishuRuntime } from "./runtime-C5JxBWZp.js";
2
2
  import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
3
- import { createReplyPrefixContext } from "openclaw/plugin-sdk/channel-message";
3
+ import { createReplyPrefixContext } from "openclaw/plugin-sdk/channel-outbound";
4
4
  import { createChannelPairingController } from "openclaw/plugin-sdk/channel-pairing";
5
5
  import { PAIRING_APPROVED_MESSAGE, buildProbeChannelStatusSummary, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/channel-status";
6
6
  import { chunkTextForOutbound } from "openclaw/plugin-sdk/text-chunking";
@@ -1,6 +1,6 @@
1
1
  import { i as resolveReceiveIdType, r as normalizeFeishuTarget } from "./targets-BUjQ1TcA.js";
2
2
  import { c as createFeishuApiError, f as isRecord$1, g as requestFeishuApi, s as resolveFeishuRuntimeAccount } from "./accounts-CXnY5H8g.js";
3
- import { i as toFeishuSendResult, r as resolveFeishuReceiptKind, t as assertFeishuMessageApiSuccess } from "./send-result-CHvu8Rr7.js";
3
+ import { i as toFeishuSendResult, r as resolveFeishuReceiptKind, t as assertFeishuMessageApiSuccess } from "./send-result-DSTSkRDM.js";
4
4
  import { t as getFeishuRuntime } from "./runtime-C5JxBWZp.js";
5
5
  import { r as createFeishuClient } from "./client-BnH2fRL2.js";
6
6
  import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1,5 +1,5 @@
1
1
  import { f as isRecord } from "./accounts-CXnY5H8g.js";
2
- import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
2
+ import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
3
3
  //#region extensions/feishu/src/card-interaction.ts
4
4
  const FEISHU_CARD_INTERACTION_VERSION = "ocf1";
5
5
  function isInteractionKind(value) {
package/dist/setup-api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as feishuSetupAdapter, n as feishuSetupWizard, t as feishuPlugin } from "./channel-DavfT_AA.js";
1
+ import { i as feishuSetupAdapter, n as feishuSetupWizard, t as feishuPlugin } from "./channel-DS2vP1nr.js";
2
2
  export { feishuPlugin, feishuSetupAdapter, feishuSetupWizard };
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@openclaw/feishu",
3
- "version": "2026.5.26",
3
+ "version": "2026.5.27",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/feishu",
9
- "version": "2026.5.26",
9
+ "version": "2026.5.27",
10
10
  "dependencies": {
11
11
  "@larksuiteoapi/node-sdk": "1.65.0",
12
12
  "typebox": "1.1.38",
13
13
  "zod": "4.4.3"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.5.26"
16
+ "openclaw": ">=2026.5.27"
17
17
  },
18
18
  "peerDependenciesMeta": {
19
19
  "openclaw": {
@@ -1,5 +1,7 @@
1
1
  {
2
2
  "id": "feishu",
3
+ "name": "Feishu/Lark",
4
+ "description": "OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).",
3
5
  "activation": {
4
6
  "onStartup": false
5
7
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@openclaw/feishu",
3
- "version": "2026.5.26",
4
- "description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
3
+ "version": "2026.5.27",
4
+ "description": "OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/openclaw/openclaw"
@@ -13,7 +13,7 @@
13
13
  "zod": "4.4.3"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.5.26"
16
+ "openclaw": ">=2026.5.27"
17
17
  },
18
18
  "peerDependenciesMeta": {
19
19
  "openclaw": {
@@ -44,10 +44,10 @@
44
44
  "minHostVersion": ">=2026.4.25"
45
45
  },
46
46
  "compat": {
47
- "pluginApi": ">=2026.5.26"
47
+ "pluginApi": ">=2026.5.27"
48
48
  },
49
49
  "build": {
50
- "openclawVersion": "2026.5.26"
50
+ "openclawVersion": "2026.5.27"
51
51
  },
52
52
  "release": {
53
53
  "publishToClawHub": true,