@openclaw/feishu 2026.7.2-beta.7 → 2026.8.1-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/accounts-CCCdMen2.js +203 -0
- package/dist/api.js +61 -60
- package/dist/{channel-CScE82zY.js → channel-Ceq80_zP.js} +71 -42
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-B21e1E0r.js → channel.runtime-DnRyzGoU.js} +201 -152
- package/dist/{client-Dcbs6vml.js → client-Hp7uo_cl.js} +27 -16
- package/dist/contract-api.js +2 -2
- package/dist/{conversation-id-BeJL-wq7.js → conversation-id-VYgGQ-GX.js} +11 -15
- package/dist/doctor-contract-api.js +1 -1
- package/dist/doctor-contract-bEQXIXyP.js +158 -0
- package/dist/{drive-hSi_Utp0.js → drive-BVYM_Y4k.js} +325 -44
- package/dist/{media-CEUraFOR.js → media-BDouVaaM.js} +298 -182
- package/dist/{monitor-DngbaA6a.js → monitor-CZ8cDXrq.js} +3 -3
- package/dist/{monitor.account-BnTWCw55.js → monitor.account-Dq_voVMB.js} +263 -179
- package/dist/{monitor.startup-CqH2tiJq.js → monitor.startup-BGErejNH.js} +1 -1
- package/dist/{probe-p3POS2RN.js → probe-DVpy58s0.js} +2 -2
- package/dist/security-audit-D6Fz2h6p.js +23 -0
- package/dist/{send-result-B9_BpUPx.js → send-result-DEAycmOk.js} +18 -9
- package/dist/session-binding-contract-api.js +2 -2
- package/dist/{session-conversation-BksWrfzm.js → session-conversation-DFCIvQK-.js} +1 -1
- package/dist/session-key-api.js +1 -1
- package/dist/setup-api.js +1 -1
- package/dist/{subagent-hooks-Cx1cX7rW.js → subagent-hooks-KUi-7vUy.js} +4 -64
- package/dist/subagent-hooks-api.js +1 -1
- package/dist/{thread-bindings-N3wkgkIN.js → thread-bindings-CptM_YU6.js} +7 -9
- package/openclaw.plugin.json +143 -1
- package/package.json +4 -4
- package/skills/feishu-doc/SKILL.md +20 -195
- package/skills/feishu-doc/references/block-types.md +9 -14
- package/skills/feishu-drive/SKILL.md +16 -102
- package/skills/feishu-perm/SKILL.md +10 -110
- package/skills/feishu-wiki/SKILL.md +13 -109
- package/dist/accounts-u9X5Wsan.js +0 -469
- package/dist/doctor-contract-BiD9tyIv.js +0 -102
- package/dist/security-audit-D7WK_BHh.js +0 -11
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as getFeishuRuntime } from "./runtime-C5JxBWZp.js";
|
|
2
|
-
import { r as registerFeishuAiAgent, t as probeFeishu } from "./probe-
|
|
2
|
+
import { r as registerFeishuAiAgent, t as probeFeishu } from "./probe-DVpy58s0.js";
|
|
3
3
|
import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
-
import { r as createFeishuClient } from "./client-
|
|
3
|
-
import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs, resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
|
|
2
|
+
import { r as createFeishuClient } from "./client-Hp7uo_cl.js";
|
|
4
3
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
4
|
+
import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs, resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
6
|
//#region extensions/feishu/src/async.ts
|
|
7
7
|
const RACE_TIMEOUT = Symbol("race-timeout");
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./security-audit-shared-BgpY7AiJ.js";
|
|
2
|
+
//#region extensions/feishu/src/message-action-contract.ts
|
|
3
|
+
const FEISHU_NATIVE_CHAT_TARGET_ALIASES = [
|
|
4
|
+
"chatId",
|
|
5
|
+
"chat_id",
|
|
6
|
+
"channel_id"
|
|
7
|
+
];
|
|
8
|
+
function createMessageMutationTargetAliases() {
|
|
9
|
+
return {
|
|
10
|
+
aliases: ["messageId", ...FEISHU_NATIVE_CHAT_TARGET_ALIASES],
|
|
11
|
+
deliveryTargetAliases: [...FEISHU_NATIVE_CHAT_TARGET_ALIASES]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const messageActionTargetAliases = {
|
|
15
|
+
read: { aliases: ["messageId"] },
|
|
16
|
+
edit: createMessageMutationTargetAliases(),
|
|
17
|
+
pin: createMessageMutationTargetAliases(),
|
|
18
|
+
unpin: createMessageMutationTargetAliases(),
|
|
19
|
+
"list-pins": { aliases: ["chatId"] },
|
|
20
|
+
"channel-info": { aliases: ["chatId"] }
|
|
21
|
+
};
|
|
22
|
+
//#endregion
|
|
23
|
+
export { messageActionTargetAliases as t };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { d as isRecord$1 } from "./accounts-u9X5Wsan.js";
|
|
2
1
|
import { r as normalizeFeishuTarget, t as detectIdType } from "./targets-BUjQ1TcA.js";
|
|
3
2
|
import { compileAllowlist, resolveAllowlistMatchByCandidates } from "openclaw/plugin-sdk/allow-from";
|
|
4
3
|
import { ToolAuthorizationError } from "openclaw/plugin-sdk/channel-actions";
|
|
@@ -11,6 +10,7 @@ import { fromMarkdown } from "mdast-util-from-markdown";
|
|
|
11
10
|
import { gfmTableFromMarkdown } from "mdast-util-gfm-table";
|
|
12
11
|
import { gfmTable } from "micromark-extension-gfm-table";
|
|
13
12
|
import { chunkMarkdownTextWithMode } from "openclaw/plugin-sdk/reply-chunking";
|
|
13
|
+
import { createChannelPartialDeliveryError } from "openclaw/plugin-sdk/channel-inbound";
|
|
14
14
|
//#region extensions/feishu/src/card-interaction.ts
|
|
15
15
|
const FEISHU_CARD_INTERACTION_VERSION = "ocf1";
|
|
16
16
|
function isInteractionKind(value) {
|
|
@@ -27,7 +27,7 @@ function createFeishuCardInteractionEnvelope(envelope) {
|
|
|
27
27
|
}
|
|
28
28
|
function buildFeishuCardActionTextFallback(event) {
|
|
29
29
|
const actionValue = event.action.value;
|
|
30
|
-
if (isRecord
|
|
30
|
+
if (isRecord(actionValue)) {
|
|
31
31
|
if (typeof actionValue.text === "string") return actionValue.text;
|
|
32
32
|
if (typeof actionValue.command === "string") return actionValue.command;
|
|
33
33
|
return JSON.stringify(actionValue);
|
|
@@ -37,7 +37,7 @@ function buildFeishuCardActionTextFallback(event) {
|
|
|
37
37
|
function decodeFeishuCardAction(params) {
|
|
38
38
|
const { event, now = Date.now() } = params;
|
|
39
39
|
const actionValue = event.action.value;
|
|
40
|
-
if (!isRecord
|
|
40
|
+
if (!isRecord(actionValue) || actionValue.oc !== "ocf1") return {
|
|
41
41
|
kind: "legacy",
|
|
42
42
|
text: buildFeishuCardActionTextFallback(event)
|
|
43
43
|
};
|
|
@@ -50,7 +50,7 @@ function decodeFeishuCardAction(params) {
|
|
|
50
50
|
reason: "malformed"
|
|
51
51
|
};
|
|
52
52
|
if (actionValue.m !== void 0) {
|
|
53
|
-
if (!isRecord
|
|
53
|
+
if (!isRecord(actionValue.m)) return {
|
|
54
54
|
kind: "invalid",
|
|
55
55
|
reason: "malformed"
|
|
56
56
|
};
|
|
@@ -60,7 +60,7 @@ function decodeFeishuCardAction(params) {
|
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
if (actionValue.c !== void 0) {
|
|
63
|
-
if (!isRecord
|
|
63
|
+
if (!isRecord(actionValue.c)) return {
|
|
64
64
|
kind: "invalid",
|
|
65
65
|
reason: "malformed"
|
|
66
66
|
};
|
|
@@ -197,6 +197,7 @@ async function resolveFeishuDmIngressAccess(params) {
|
|
|
197
197
|
kind: "direct",
|
|
198
198
|
id: params.conversationId
|
|
199
199
|
},
|
|
200
|
+
...params.contextBinding ? { contextBinding: params.contextBinding } : {},
|
|
200
201
|
event: { mayPair: params.mayPair },
|
|
201
202
|
dmPolicy: normalizeFeishuDmPolicy(params.dmPolicy),
|
|
202
203
|
groupPolicy: "disabled",
|
|
@@ -214,8 +215,10 @@ async function resolveFeishuGroupConversationIngressAccess(params) {
|
|
|
214
215
|
subject: createFeishuIngressSubject({ primaryId: params.chatId }),
|
|
215
216
|
conversation: {
|
|
216
217
|
kind: "group",
|
|
217
|
-
id: params.chatId
|
|
218
|
+
id: params.chatId,
|
|
219
|
+
threadId: params.threadId
|
|
218
220
|
},
|
|
221
|
+
...params.contextBinding ? { contextBinding: params.contextBinding } : {},
|
|
219
222
|
dmPolicy: "disabled",
|
|
220
223
|
groupPolicy,
|
|
221
224
|
groupAllowFrom
|
|
@@ -233,8 +236,10 @@ async function resolveFeishuGroupSenderActivationIngressAccess(params) {
|
|
|
233
236
|
}),
|
|
234
237
|
conversation: {
|
|
235
238
|
kind: "group",
|
|
236
|
-
id: params.chatId
|
|
239
|
+
id: params.chatId,
|
|
240
|
+
threadId: params.threadId
|
|
237
241
|
},
|
|
242
|
+
...params.contextBinding ? { contextBinding: params.contextBinding } : {},
|
|
238
243
|
dmPolicy: "disabled",
|
|
239
244
|
groupPolicy: groupAllowFrom.length > 0 ? "allowlist" : "open",
|
|
240
245
|
groupAllowFrom,
|
|
@@ -754,8 +759,12 @@ function createFeishuSendReceipt(params) {
|
|
|
754
759
|
function assertFeishuMessageApiSuccess(response, errorPrefix) {
|
|
755
760
|
if (response.code !== 0) throw new Error(`${errorPrefix}: ${response.msg || `code ${response.code}`}`);
|
|
756
761
|
}
|
|
757
|
-
function toFeishuSendResult(response, chatId, kind) {
|
|
758
|
-
const messageId = response.data?.message_id
|
|
762
|
+
function toFeishuSendResult(response, chatId, kind, errorPrefix = "Feishu send failed") {
|
|
763
|
+
const messageId = response.data?.message_id?.trim();
|
|
764
|
+
if (!messageId) throw createChannelPartialDeliveryError(/* @__PURE__ */ new Error(`${errorPrefix}: no message_id returned`), {
|
|
765
|
+
messageIds: [],
|
|
766
|
+
visibleReplySent: true
|
|
767
|
+
});
|
|
759
768
|
return {
|
|
760
769
|
messageId,
|
|
761
770
|
chatId,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { createFeishuThreadBindingManager
|
|
1
|
+
import { t as createFeishuThreadBindingManager } from "./thread-bindings-CptM_YU6.js";
|
|
2
|
+
export { createFeishuThreadBindingManager };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-
|
|
1
|
+
import { r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-VYgGQ-GX.js";
|
|
2
2
|
//#region extensions/feishu/src/session-conversation.ts
|
|
3
3
|
function resolveFeishuParentConversationCandidates(rawId) {
|
|
4
4
|
const parsed = parseFeishuConversationId({ conversationId: rawId });
|
package/dist/session-key-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as resolveFeishuSessionConversation } from "./session-conversation-
|
|
1
|
+
import { t as resolveFeishuSessionConversation } from "./session-conversation-DFCIvQK-.js";
|
|
2
2
|
export { resolveFeishuSessionConversation as resolveSessionConversation };
|
package/dist/setup-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as feishuSetupAdapter, n as feishuSetupWizard, t as feishuPlugin } from "./channel-
|
|
1
|
+
import { i as feishuSetupAdapter, n as feishuSetupWizard, t as feishuPlugin } from "./channel-Ceq80_zP.js";
|
|
2
2
|
export { feishuPlugin, feishuSetupAdapter, feishuSetupWizard };
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
2
|
import { r as normalizeFeishuTarget } from "./targets-BUjQ1TcA.js";
|
|
3
|
-
import { r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-
|
|
4
|
-
import { n as getFeishuThreadBindingManager } from "./thread-bindings-
|
|
3
|
+
import { r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-VYgGQ-GX.js";
|
|
4
|
+
import { n as getFeishuThreadBindingManager } from "./thread-bindings-CptM_YU6.js";
|
|
5
5
|
import { normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
//#region extensions/feishu/src/subagent-hooks.ts
|
|
7
7
|
var subagent_hooks_exports = /* @__PURE__ */ __exportAll({
|
|
8
8
|
handleFeishuSubagentDeliveryTarget: () => handleFeishuSubagentDeliveryTarget,
|
|
9
|
-
handleFeishuSubagentEnded: () => handleFeishuSubagentEnded
|
|
10
|
-
handleFeishuSubagentSpawning: () => handleFeishuSubagentSpawning
|
|
9
|
+
handleFeishuSubagentEnded: () => handleFeishuSubagentEnded
|
|
11
10
|
});
|
|
12
|
-
function summarizeError(err) {
|
|
13
|
-
if (err instanceof Error) return err.message;
|
|
14
|
-
if (typeof err === "string") return err;
|
|
15
|
-
return "error";
|
|
16
|
-
}
|
|
17
11
|
function stripProviderPrefix(raw) {
|
|
18
12
|
return raw.replace(/^(feishu|lark):/i, "").trim();
|
|
19
13
|
}
|
|
@@ -157,60 +151,6 @@ function resolveMatchingChildBinding(params) {
|
|
|
157
151
|
}
|
|
158
152
|
return childBindings.length === 1 ? childBindings[0] : null;
|
|
159
153
|
}
|
|
160
|
-
async function handleFeishuSubagentSpawning(event, ctx) {
|
|
161
|
-
if (!event.threadRequested) return;
|
|
162
|
-
if (normalizeOptionalLowercaseString(event.requester?.channel) !== "feishu") return;
|
|
163
|
-
const manager = getFeishuThreadBindingManager(event.requester?.accountId);
|
|
164
|
-
if (!manager) return {
|
|
165
|
-
status: "error",
|
|
166
|
-
error: "Feishu current-conversation binding is unavailable because the Feishu account monitor is not active."
|
|
167
|
-
};
|
|
168
|
-
const conversation = resolveFeishuRequesterConversation({
|
|
169
|
-
accountId: event.requester?.accountId,
|
|
170
|
-
to: event.requester?.to,
|
|
171
|
-
threadId: event.requester?.threadId,
|
|
172
|
-
requesterSessionKey: ctx.requesterSessionKey
|
|
173
|
-
});
|
|
174
|
-
if (!conversation) return {
|
|
175
|
-
status: "error",
|
|
176
|
-
error: "Feishu current-conversation binding is only available in direct messages or topic conversations."
|
|
177
|
-
};
|
|
178
|
-
try {
|
|
179
|
-
const binding = manager.bindConversation({
|
|
180
|
-
conversationId: conversation.conversationId,
|
|
181
|
-
parentConversationId: conversation.parentConversationId,
|
|
182
|
-
targetKind: "subagent",
|
|
183
|
-
targetSessionKey: event.childSessionKey,
|
|
184
|
-
metadata: {
|
|
185
|
-
agentId: event.agentId,
|
|
186
|
-
label: event.label,
|
|
187
|
-
boundBy: "system",
|
|
188
|
-
deliveryTo: event.requester?.to,
|
|
189
|
-
deliveryThreadId: event.requester?.threadId != null && event.requester.threadId !== "" ? String(event.requester.threadId) : void 0
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
if (!binding) return {
|
|
193
|
-
status: "error",
|
|
194
|
-
error: "Unable to bind this Feishu conversation to the spawned subagent session. Session mode is unavailable for this target."
|
|
195
|
-
};
|
|
196
|
-
return {
|
|
197
|
-
status: "ok",
|
|
198
|
-
threadBindingReady: true,
|
|
199
|
-
deliveryOrigin: resolveFeishuDeliveryOrigin({
|
|
200
|
-
conversationId: binding.conversationId,
|
|
201
|
-
parentConversationId: binding.parentConversationId,
|
|
202
|
-
accountId: binding.accountId,
|
|
203
|
-
deliveryTo: binding.deliveryTo,
|
|
204
|
-
deliveryThreadId: binding.deliveryThreadId
|
|
205
|
-
})
|
|
206
|
-
};
|
|
207
|
-
} catch (err) {
|
|
208
|
-
return {
|
|
209
|
-
status: "error",
|
|
210
|
-
error: `Feishu conversation bind failed: ${summarizeError(err)}`
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
154
|
function handleFeishuSubagentDeliveryTarget(event) {
|
|
215
155
|
if (!event.expectsCompletionMessage) return;
|
|
216
156
|
if (normalizeOptionalLowercaseString(event.requesterOrigin?.channel) !== "feishu") return;
|
|
@@ -236,4 +176,4 @@ function handleFeishuSubagentEnded(event) {
|
|
|
236
176
|
getFeishuThreadBindingManager(event.accountId)?.unbindBySessionKey(event.targetSessionKey);
|
|
237
177
|
}
|
|
238
178
|
//#endregion
|
|
239
|
-
export {
|
|
179
|
+
export { handleFeishuSubagentEnded as n, subagent_hooks_exports as r, handleFeishuSubagentDeliveryTarget as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
2
2
|
//#region extensions/feishu/subagent-hooks-api.ts
|
|
3
|
-
const loadFeishuSubagentHooksModule = createLazyRuntimeModule(() => import("./subagent-hooks-
|
|
3
|
+
const loadFeishuSubagentHooksModule = createLazyRuntimeModule(() => import("./subagent-hooks-KUi-7vUy.js").then((n) => n.r));
|
|
4
4
|
function registerFeishuSubagentHooks(api) {
|
|
5
5
|
api.on("subagent_delivery_target", async (event) => {
|
|
6
6
|
const { handleFeishuSubagentDeliveryTarget } = await loadFeishuSubagentHooksModule();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { resolveSessionAgentId } from "openclaw/plugin-sdk/agent-scope-runtime";
|
|
1
2
|
import { registerSessionBindingAdapter, resolveThreadBindingConversationIdFromBindingId, resolveThreadBindingIdleTimeoutMsForChannel, resolveThreadBindingMaxAgeMsForChannel, unregisterSessionBindingAdapter } from "openclaw/plugin-sdk/conversation-runtime";
|
|
2
3
|
import { isFutureDateTimestampMs } from "openclaw/plugin-sdk/number-runtime";
|
|
3
4
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
|
-
import { normalizeAccountId
|
|
5
|
-
import { resolveDefaultAgentId } from "openclaw/plugin-sdk/agent-runtime";
|
|
5
|
+
import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
|
|
6
6
|
//#region extensions/feishu/src/thread-bindings.ts
|
|
7
7
|
const FEISHU_THREAD_BINDINGS_STATE_KEY = Symbol.for("openclaw.feishuThreadBindingsState");
|
|
8
8
|
let state;
|
|
@@ -107,7 +107,10 @@ function createFeishuThreadBindingManager(params) {
|
|
|
107
107
|
deliveryThreadId: typeof metadata?.deliveryThreadId === "string" && metadata.deliveryThreadId.trim() ? metadata.deliveryThreadId.trim() : existingLocal?.deliveryThreadId,
|
|
108
108
|
targetKind: toFeishuTargetKind(targetKind),
|
|
109
109
|
targetSessionKey: normalizedTargetSessionKey,
|
|
110
|
-
agentId:
|
|
110
|
+
agentId: normalizeOptionalString(metadata?.agentId) ?? existingLocal?.agentId ?? resolveSessionAgentId({
|
|
111
|
+
config: params.cfg,
|
|
112
|
+
sessionKey: normalizedTargetSessionKey
|
|
113
|
+
}),
|
|
111
114
|
label: typeof metadata?.label === "string" && metadata.label.trim() ? metadata.label.trim() : existingLocal?.label,
|
|
112
115
|
boundBy: typeof metadata?.boundBy === "string" && metadata.boundBy.trim() ? metadata.boundBy.trim() : existingLocal?.boundBy,
|
|
113
116
|
boundAt: now,
|
|
@@ -211,10 +214,5 @@ function createFeishuThreadBindingManager(params) {
|
|
|
211
214
|
function getFeishuThreadBindingManager(accountId) {
|
|
212
215
|
return getState().managersByAccountId.get(normalizeAccountId(accountId)) ?? null;
|
|
213
216
|
}
|
|
214
|
-
const testing = { resetFeishuThreadBindingsForTests() {
|
|
215
|
-
for (const manager of getState().managersByAccountId.values()) manager.stop();
|
|
216
|
-
getState().managersByAccountId.clear();
|
|
217
|
-
getState().bindingsByAccountConversation.clear();
|
|
218
|
-
} };
|
|
219
217
|
//#endregion
|
|
220
|
-
export { getFeishuThreadBindingManager as n,
|
|
218
|
+
export { getFeishuThreadBindingManager as n, createFeishuThreadBindingManager as t };
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "feishu",
|
|
3
|
+
"doctorContract": {
|
|
4
|
+
"configRepair": true
|
|
5
|
+
},
|
|
3
6
|
"name": "Feishu/Lark",
|
|
4
7
|
"description": "OpenClaw Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).",
|
|
5
8
|
"activation": {
|
|
@@ -310,7 +313,8 @@
|
|
|
310
313
|
"enum": [
|
|
311
314
|
"env",
|
|
312
315
|
"file",
|
|
313
|
-
"exec"
|
|
316
|
+
"exec",
|
|
317
|
+
"store"
|
|
314
318
|
]
|
|
315
319
|
},
|
|
316
320
|
"provider": {
|
|
@@ -580,6 +584,29 @@
|
|
|
580
584
|
],
|
|
581
585
|
"additionalProperties": false
|
|
582
586
|
},
|
|
587
|
+
{
|
|
588
|
+
"type": "object",
|
|
589
|
+
"properties": {
|
|
590
|
+
"source": {
|
|
591
|
+
"type": "string",
|
|
592
|
+
"const": "store"
|
|
593
|
+
},
|
|
594
|
+
"provider": {
|
|
595
|
+
"type": "string",
|
|
596
|
+
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
|
|
597
|
+
},
|
|
598
|
+
"id": {
|
|
599
|
+
"type": "string",
|
|
600
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
"required": [
|
|
604
|
+
"source",
|
|
605
|
+
"provider",
|
|
606
|
+
"id"
|
|
607
|
+
],
|
|
608
|
+
"additionalProperties": false
|
|
609
|
+
},
|
|
583
610
|
{
|
|
584
611
|
"type": "object",
|
|
585
612
|
"properties": {
|
|
@@ -658,6 +685,29 @@
|
|
|
658
685
|
],
|
|
659
686
|
"additionalProperties": false
|
|
660
687
|
},
|
|
688
|
+
{
|
|
689
|
+
"type": "object",
|
|
690
|
+
"properties": {
|
|
691
|
+
"source": {
|
|
692
|
+
"type": "string",
|
|
693
|
+
"const": "store"
|
|
694
|
+
},
|
|
695
|
+
"provider": {
|
|
696
|
+
"type": "string",
|
|
697
|
+
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
|
|
698
|
+
},
|
|
699
|
+
"id": {
|
|
700
|
+
"type": "string",
|
|
701
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
|
|
702
|
+
}
|
|
703
|
+
},
|
|
704
|
+
"required": [
|
|
705
|
+
"source",
|
|
706
|
+
"provider",
|
|
707
|
+
"id"
|
|
708
|
+
],
|
|
709
|
+
"additionalProperties": false
|
|
710
|
+
},
|
|
661
711
|
{
|
|
662
712
|
"type": "object",
|
|
663
713
|
"properties": {
|
|
@@ -736,6 +786,29 @@
|
|
|
736
786
|
],
|
|
737
787
|
"additionalProperties": false
|
|
738
788
|
},
|
|
789
|
+
{
|
|
790
|
+
"type": "object",
|
|
791
|
+
"properties": {
|
|
792
|
+
"source": {
|
|
793
|
+
"type": "string",
|
|
794
|
+
"const": "store"
|
|
795
|
+
},
|
|
796
|
+
"provider": {
|
|
797
|
+
"type": "string",
|
|
798
|
+
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
|
|
799
|
+
},
|
|
800
|
+
"id": {
|
|
801
|
+
"type": "string",
|
|
802
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
"required": [
|
|
806
|
+
"source",
|
|
807
|
+
"provider",
|
|
808
|
+
"id"
|
|
809
|
+
],
|
|
810
|
+
"additionalProperties": false
|
|
811
|
+
},
|
|
739
812
|
{
|
|
740
813
|
"type": "object",
|
|
741
814
|
"properties": {
|
|
@@ -1348,6 +1421,29 @@
|
|
|
1348
1421
|
],
|
|
1349
1422
|
"additionalProperties": false
|
|
1350
1423
|
},
|
|
1424
|
+
{
|
|
1425
|
+
"type": "object",
|
|
1426
|
+
"properties": {
|
|
1427
|
+
"source": {
|
|
1428
|
+
"type": "string",
|
|
1429
|
+
"const": "store"
|
|
1430
|
+
},
|
|
1431
|
+
"provider": {
|
|
1432
|
+
"type": "string",
|
|
1433
|
+
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
|
|
1434
|
+
},
|
|
1435
|
+
"id": {
|
|
1436
|
+
"type": "string",
|
|
1437
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
|
|
1438
|
+
}
|
|
1439
|
+
},
|
|
1440
|
+
"required": [
|
|
1441
|
+
"source",
|
|
1442
|
+
"provider",
|
|
1443
|
+
"id"
|
|
1444
|
+
],
|
|
1445
|
+
"additionalProperties": false
|
|
1446
|
+
},
|
|
1351
1447
|
{
|
|
1352
1448
|
"type": "object",
|
|
1353
1449
|
"properties": {
|
|
@@ -1426,6 +1522,29 @@
|
|
|
1426
1522
|
],
|
|
1427
1523
|
"additionalProperties": false
|
|
1428
1524
|
},
|
|
1525
|
+
{
|
|
1526
|
+
"type": "object",
|
|
1527
|
+
"properties": {
|
|
1528
|
+
"source": {
|
|
1529
|
+
"type": "string",
|
|
1530
|
+
"const": "store"
|
|
1531
|
+
},
|
|
1532
|
+
"provider": {
|
|
1533
|
+
"type": "string",
|
|
1534
|
+
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
|
|
1535
|
+
},
|
|
1536
|
+
"id": {
|
|
1537
|
+
"type": "string",
|
|
1538
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
|
|
1539
|
+
}
|
|
1540
|
+
},
|
|
1541
|
+
"required": [
|
|
1542
|
+
"source",
|
|
1543
|
+
"provider",
|
|
1544
|
+
"id"
|
|
1545
|
+
],
|
|
1546
|
+
"additionalProperties": false
|
|
1547
|
+
},
|
|
1429
1548
|
{
|
|
1430
1549
|
"type": "object",
|
|
1431
1550
|
"properties": {
|
|
@@ -1504,6 +1623,29 @@
|
|
|
1504
1623
|
],
|
|
1505
1624
|
"additionalProperties": false
|
|
1506
1625
|
},
|
|
1626
|
+
{
|
|
1627
|
+
"type": "object",
|
|
1628
|
+
"properties": {
|
|
1629
|
+
"source": {
|
|
1630
|
+
"type": "string",
|
|
1631
|
+
"const": "store"
|
|
1632
|
+
},
|
|
1633
|
+
"provider": {
|
|
1634
|
+
"type": "string",
|
|
1635
|
+
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
|
|
1636
|
+
},
|
|
1637
|
+
"id": {
|
|
1638
|
+
"type": "string",
|
|
1639
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
|
|
1640
|
+
}
|
|
1641
|
+
},
|
|
1642
|
+
"required": [
|
|
1643
|
+
"source",
|
|
1644
|
+
"provider",
|
|
1645
|
+
"id"
|
|
1646
|
+
],
|
|
1647
|
+
"additionalProperties": false
|
|
1648
|
+
},
|
|
1507
1649
|
{
|
|
1508
1650
|
"type": "object",
|
|
1509
1651
|
"properties": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/feishu",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.8.1-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",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"zod": "4.4.3"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"openclaw": ">=2026.
|
|
19
|
+
"openclaw": ">=2026.8.1-beta.3"
|
|
20
20
|
},
|
|
21
21
|
"peerDependenciesMeta": {
|
|
22
22
|
"openclaw": {
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
"minHostVersion": ">=2026.5.29"
|
|
61
61
|
},
|
|
62
62
|
"compat": {
|
|
63
|
-
"pluginApi": ">=2026.
|
|
63
|
+
"pluginApi": ">=2026.8.1-beta.3"
|
|
64
64
|
},
|
|
65
65
|
"build": {
|
|
66
|
-
"openclawVersion": "2026.
|
|
66
|
+
"openclawVersion": "2026.8.1-beta.3"
|
|
67
67
|
},
|
|
68
68
|
"release": {
|
|
69
69
|
"publishToClawHub": true,
|