@openclaw/feishu 2026.5.28-beta.1 → 2026.5.28-beta.3

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,16 +2,18 @@ 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-DLfxURF2.js";
5
+ import { a as setFeishuNamedAccountEnabled, i as feishuSetupAdapter, n as feishuSetupWizard, r as runFeishuLogin, t as feishuPlugin } from "./channel-BVSJh3s1.js";
6
6
  import { t as getFeishuRuntime } from "./runtime-C5JxBWZp.js";
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-Grnpj510.js";
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-6Ohn34x9.js";
8
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, readStringValue, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
9
+ import { optionalPositiveIntegerSchema } from "openclaw/plugin-sdk/channel-actions";
9
10
  import { existsSync } from "node:fs";
10
11
  import { homedir } from "node:os";
11
12
  import { basename, isAbsolute, resolve } from "node:path";
12
13
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
13
14
  import { extensionForMime } from "openclaw/plugin-sdk/media-mime";
14
15
  import { Type } from "typebox";
16
+ import { readPositiveIntegerParam } from "openclaw/plugin-sdk/param-readers";
15
17
  import { createClackPrompter } from "openclaw/plugin-sdk/setup-runtime";
16
18
  //#region extensions/feishu/src/doc-schema.ts
17
19
  const tableCreationProperties = {
@@ -1948,6 +1950,12 @@ async function listRecords(client, appToken, tableId, pageSize, pageToken) {
1948
1950
  total: res.data?.total
1949
1951
  };
1950
1952
  }
1953
+ function readBitableListRecordsPageSize(params) {
1954
+ return readPositiveIntegerParam(params, "page_size", {
1955
+ max: 500,
1956
+ message: "page_size must be a positive integer between 1 and 500"
1957
+ });
1958
+ }
1951
1959
  async function getRecord(client, appToken, tableId, recordId) {
1952
1960
  const res = await client.bitable.appTableRecord.get({ path: {
1953
1961
  app_token: appToken,
@@ -2162,11 +2170,10 @@ const ListFieldsSchema = Type.Object({
2162
2170
  const ListRecordsSchema = Type.Object({
2163
2171
  app_token: Type.String({ description: "Bitable app token (use feishu_bitable_get_meta to get from URL)" }),
2164
2172
  table_id: Type.String({ description: "Table ID (from URL: ?table=YYY)" }),
2165
- page_size: Type.Optional(Type.Number({
2173
+ page_size: optionalPositiveIntegerSchema({
2166
2174
  description: "Number of records per page (1-500, default 100)",
2167
- minimum: 1,
2168
2175
  maximum: 500
2169
- })),
2176
+ }),
2170
2177
  page_token: Type.Optional(Type.String({ description: "Pagination token from previous response" }))
2171
2178
  });
2172
2179
  const GetRecordSchema = Type.Object({
@@ -2249,7 +2256,7 @@ function registerFeishuBitableTools(api) {
2249
2256
  description: "List records (rows) from a Bitable table with pagination support",
2250
2257
  parameters: ListRecordsSchema,
2251
2258
  async execute({ params, defaultAccountId }) {
2252
- return listRecords(getClient(params, defaultAccountId), params.app_token, params.table_id, params.page_size, params.page_token);
2259
+ return listRecords(getClient(params, defaultAccountId), params.app_token, params.table_id, readBitableListRecordsPageSize(params), params.page_token);
2253
2260
  }
2254
2261
  });
2255
2262
  registerBitableTool({
@@ -1720,9 +1720,10 @@ const meta = {
1720
1720
  docsLabel: "feishu",
1721
1721
  blurb: "飞书/Lark enterprise messaging.",
1722
1722
  aliases: ["lark"],
1723
- order: 70
1723
+ order: 70,
1724
+ preferSessionLookupForAnnounceTarget: true
1724
1725
  };
1725
- const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-i-X8-ZXc.js"), "feishuChannelRuntime");
1726
+ const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-D6J6otxd.js"), "feishuChannelRuntime");
1726
1727
  function toFeishuMessageSendResult(result, kind) {
1727
1728
  const receipt = result.receipt ?? createFeishuSendReceipt({
1728
1729
  messageId: result.messageId,
@@ -2546,7 +2547,7 @@ const feishuPlugin = createChatChannelPlugin({
2546
2547
  })
2547
2548
  }),
2548
2549
  gateway: { startAccount: async (ctx) => {
2549
- const { monitorFeishuProvider } = await import("./monitor-w8w3-7EH.js");
2550
+ const { monitorFeishuProvider } = await import("./monitor-1WyqLgPM.js");
2550
2551
  const account = resolveFeishuRuntimeAccount({
2551
2552
  cfg: ctx.cfg,
2552
2553
  accountId: ctx.accountId
@@ -1,2 +1,2 @@
1
- import { t as feishuPlugin } from "./channel-DLfxURF2.js";
1
+ import { t as feishuPlugin } from "./channel-BVSJh3s1.js";
2
2
  export { feishuPlugin };
@@ -1,7 +1,7 @@
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-DLfxURF2.js";
2
+ import { h as listFeishuDirectoryPeers, m as listFeishuDirectoryGroups, o as buildFeishuPresentationCardElements } from "./channel-BVSJh3s1.js";
3
3
  import { r as createFeishuClient } from "./client-DcSzLkSX.js";
4
- import { c as getChatInfo, l as getChatMembers, r as cleanupAmbientCommentTypingReaction, t as deliverCommentThreadText, u as getFeishuMemberInfo } from "./drive-Grnpj510.js";
4
+ import { c as getChatInfo, l as getChatMembers, r as cleanupAmbientCommentTypingReaction, t as deliverCommentThreadText, u as getFeishuMemberInfo } from "./drive-6Ohn34x9.js";
5
5
  import { chunkTextForOutbound } from "./runtime-api.js";
6
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-CKZz15KQ.js";
7
7
  import { t as probeFeishu } from "./probe-RvCg70BY.js";
@@ -1,8 +1,10 @@
1
1
  import { d as formatFeishuApiError, f as isRecord$1, h as readString, i as listFeishuAccountIds, l as encodeQuery, o as resolveFeishuAccount, r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount, u as extractReplyText, y as parseFeishuCommentTarget } from "./accounts-CXnY5H8g.js";
2
2
  import { r as createFeishuClient } from "./client-DcSzLkSX.js";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
+ import { optionalPositiveIntegerSchema } from "openclaw/plugin-sdk/channel-actions";
4
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
5
6
  import { Type } from "typebox";
7
+ import { readPositiveIntegerParam } from "openclaw/plugin-sdk/param-readers";
6
8
  //#region extensions/feishu/src/tools-config.ts
7
9
  /**
8
10
  * Default tool configuration.
@@ -91,7 +93,10 @@ const FeishuChatSchema = Type.Object({
91
93
  }),
92
94
  chat_id: Type.Optional(Type.String({ description: "Chat ID (from URL or event payload)" })),
93
95
  member_id: Type.Optional(Type.String({ description: "Member ID for member_info lookups" })),
94
- page_size: Type.Optional(Type.Number({ description: "Page size (1-100, default 50)" })),
96
+ page_size: optionalPositiveIntegerSchema({
97
+ maximum: 100,
98
+ description: "Page size (1-100, default 50)"
99
+ }),
95
100
  page_token: Type.Optional(Type.String({ description: "Pagination token" })),
96
101
  member_id_type: Type.Optional(Type.Unsafe({
97
102
  type: "string",
@@ -110,6 +115,12 @@ function json(data) {
110
115
  details: data
111
116
  };
112
117
  }
118
+ function readChatPageSize(params) {
119
+ return readPositiveIntegerParam(params, "page_size", {
120
+ max: 100,
121
+ message: "page_size must be a positive integer between 1 and 100"
122
+ });
123
+ }
113
124
  async function getChatInfo(client, chatId) {
114
125
  const res = await client.im.chat.get({ path: { chat_id: chatId } });
115
126
  if (res.code !== 0) throw new Error(res.msg);
@@ -206,13 +217,14 @@ function registerFeishuChatTools(api) {
206
217
  description: "Feishu chat operations. Actions: members, info, member_info",
207
218
  parameters: FeishuChatSchema,
208
219
  async execute(_toolCallId, params) {
220
+ const rawParams = params;
209
221
  const p = params;
210
222
  try {
211
223
  const client = getClient();
212
224
  switch (p.action) {
213
225
  case "members":
214
226
  if (!p.chat_id) return json({ error: "chat_id is required for action members" });
215
- return json(await getChatMembers(client, p.chat_id, p.page_size, p.page_token, p.member_id_type));
227
+ return json(await getChatMembers(client, p.chat_id, readChatPageSize(rawParams), p.page_token, p.member_id_type));
216
228
  case "info":
217
229
  if (!p.chat_id) return json({ error: "chat_id is required for action info" });
218
230
  return json(await getChatInfo(client, p.chat_id));
@@ -3,7 +3,7 @@ import { l as fetchBotIdentityForMonitor } from "./monitor.state-B6SoAUys.js";
3
3
  //#region extensions/feishu/src/monitor.ts
4
4
  let monitorAccountRuntimePromise;
5
5
  async function loadMonitorAccountRuntime() {
6
- monitorAccountRuntimePromise ??= import("./monitor.account-tuA8NuVQ.js");
6
+ monitorAccountRuntimePromise ??= import("./monitor.account-DXQXXSzI.js");
7
7
  return await monitorAccountRuntimePromise;
8
8
  }
9
9
  async function monitorFeishuProvider(opts = {}) {
@@ -2,11 +2,11 @@ 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-DLfxURF2.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-BVSJh3s1.js";
6
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-DcSzLkSX.js";
9
- import { c as getChatInfo, i as createCommentTypingReactionLifecycle, t as deliverCommentThreadText } from "./drive-Grnpj510.js";
9
+ import { c as getChatInfo, i as createCommentTypingReactionLifecycle, t as deliverCommentThreadText } from "./drive-6Ohn34x9.js";
10
10
  import { createReplyPrefixContext, evaluateSupplementalContextVisibility, loadSessionStore, normalizeAgentId as normalizeAgentId$2, resolveChannelContextVisibilityMode, resolveSessionStoreEntry } from "./runtime-api.js";
11
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-CKZz15KQ.js";
12
12
  import { i as waitForAbortableDelay, r as raceWithTimeoutAndAbort } from "./probe-RvCg70BY.js";
package/dist/setup-api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as feishuSetupAdapter, n as feishuSetupWizard, t as feishuPlugin } from "./channel-DLfxURF2.js";
1
+ import { i as feishuSetupAdapter, n as feishuSetupWizard, t as feishuPlugin } from "./channel-BVSJh3s1.js";
2
2
  export { feishuPlugin, feishuSetupAdapter, feishuSetupWizard };
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@openclaw/feishu",
3
- "version": "2026.5.28-beta.1",
3
+ "version": "2026.5.28-beta.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/feishu",
9
- "version": "2026.5.28-beta.1",
9
+ "version": "2026.5.28-beta.3",
10
10
  "dependencies": {
11
11
  "@larksuiteoapi/node-sdk": "1.66.0",
12
12
  "typebox": "1.1.38",
13
13
  "zod": "4.4.3"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.5.28-beta.1"
16
+ "openclaw": ">=2026.5.28-beta.3"
17
17
  },
18
18
  "peerDependenciesMeta": {
19
19
  "openclaw": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/feishu",
3
- "version": "2026.5.28-beta.1",
3
+ "version": "2026.5.28-beta.3",
4
4
  "description": "OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,7 +13,7 @@
13
13
  "zod": "4.4.3"
14
14
  },
15
15
  "peerDependencies": {
16
- "openclaw": ">=2026.5.28-beta.1"
16
+ "openclaw": ">=2026.5.28-beta.3"
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.28-beta.1"
47
+ "pluginApi": ">=2026.5.28-beta.3"
48
48
  },
49
49
  "build": {
50
- "openclawVersion": "2026.5.28-beta.1"
50
+ "openclawVersion": "2026.5.28-beta.3"
51
51
  },
52
52
  "release": {
53
53
  "publishToClawHub": true,