@openclaw/feishu 2026.5.10-beta.2 → 2026.5.10-beta.4
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-Ba3-WP1z.js → accounts-CP4tDW-z.js} +1 -1
- package/dist/api.js +8 -7
- package/dist/{channel-DCSECj4a.js → channel-BfpzGx67.js} +53 -32
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-BlDkd6xR.js → channel.runtime-Bt1Lk06Y.js} +6 -6
- package/dist/contract-api.js +2 -2
- package/dist/{conversation-id-DWS3Ep2A.js → conversation-id-Byq1c20x.js} +1 -1
- package/dist/{directory.static-f3EeoRJd.js → directory.static-DqfUoZrD.js} +2 -2
- package/dist/{drive-C5eJLJr7.js → drive-BocW3yO6.js} +2 -2
- package/dist/{monitor-BnbCJWIU.js → monitor-BZgAq8ET.js} +3 -3
- package/dist/{monitor.account-88yMtLAU.js → monitor.account-CI4_rDnC.js} +28 -16
- package/dist/{monitor.state-DYM02ipp.js → monitor.state-D1WkvOGG.js} +1 -1
- package/dist/{policy-DrLgxWF_.js → policy-iDTxfTYv.js} +2 -2
- package/dist/{send-DKHEQrzH.js → send-DiFpqzBJ.js} +16 -11
- package/dist/{send-result-BVFTskB_.js → send-result-zZZOR3qT.js} +1 -1
- package/dist/{session-conversation-B4nrW-vo.js → session-conversation-BulT2OKc.js} +1 -1
- package/dist/session-key-api.js +1 -1
- package/dist/setup-api.js +1 -1
- package/dist/{subagent-hooks-C3UhPVLV.js → subagent-hooks-BUPKo9Al.js} +4 -4
- package/dist/subagent-hooks-api.js +2 -2
- package/dist/{targets-JMFJRKSe.js → targets-Bb05cFr4.js} +1 -1
- package/dist/{thread-bindings-BmS6TLes.js → thread-bindings-D5kDxq_j.js} +1 -1
- package/package.json +6 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-DUslC3ob.js";
|
|
2
|
-
import { isRecord, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/
|
|
2
|
+
import { isRecord, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { DEFAULT_ACCOUNT_ID, createAccountListHelpers, normalizeAccountId, normalizeOptionalAccountId, resolveMergedAccountConfig } from "openclaw/plugin-sdk/account-resolution";
|
|
4
4
|
import { coerceSecretRef } from "openclaw/plugin-sdk/provider-auth";
|
|
5
5
|
//#region extensions/feishu/src/comment-target.ts
|
package/dist/api.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as buildFeishuModelOverrideParentCandidates, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-
|
|
2
|
-
import { n as createFeishuThreadBindingManager, r as getFeishuThreadBindingManager, t as __testing } from "./thread-bindings-
|
|
3
|
-
import { n as handleFeishuSubagentEnded, r as handleFeishuSubagentSpawning, t as handleFeishuSubagentDeliveryTarget } from "./subagent-hooks-
|
|
4
|
-
import { r as listEnabledFeishuAccounts } from "./accounts-
|
|
5
|
-
import { a as setFeishuNamedAccountEnabled, i as feishuSetupAdapter, n as feishuSetupWizard, r as runFeishuLogin, t as feishuPlugin } from "./channel-
|
|
1
|
+
import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as buildFeishuModelOverrideParentCandidates, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-Byq1c20x.js";
|
|
2
|
+
import { n as createFeishuThreadBindingManager, r as getFeishuThreadBindingManager, t as __testing } from "./thread-bindings-D5kDxq_j.js";
|
|
3
|
+
import { n as handleFeishuSubagentEnded, r as handleFeishuSubagentSpawning, t as handleFeishuSubagentDeliveryTarget } from "./subagent-hooks-BUPKo9Al.js";
|
|
4
|
+
import { r as listEnabledFeishuAccounts } from "./accounts-CP4tDW-z.js";
|
|
5
|
+
import { a as setFeishuNamedAccountEnabled, i as feishuSetupAdapter, n as feishuSetupWizard, r as runFeishuLogin, t as feishuPlugin } from "./channel-BfpzGx67.js";
|
|
6
6
|
import { t as getFeishuRuntime } from "./runtime-CG0DuRCy.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-
|
|
8
|
-
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/
|
|
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-BocW3yO6.js";
|
|
8
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
9
|
import { existsSync } from "node:fs";
|
|
10
10
|
import { homedir } from "node:os";
|
|
11
11
|
import { basename, isAbsolute, resolve } from "node:path";
|
|
@@ -628,6 +628,7 @@ function cleanBlocksForInsert(blocks) {
|
|
|
628
628
|
skipped
|
|
629
629
|
};
|
|
630
630
|
}
|
|
631
|
+
/** Max blocks per documentBlockChildren.create request */
|
|
631
632
|
const MAX_CONVERT_RETRY_DEPTH = 8;
|
|
632
633
|
async function convertMarkdown(client, markdown) {
|
|
633
634
|
const res = await client.docx.document.convert({ data: {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as buildFeishuModelOverrideParentCandidates, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-
|
|
2
|
-
import { n as looksLikeFeishuId, r as normalizeFeishuTarget } from "./targets-
|
|
3
|
-
import { a as resolveDefaultFeishuAccountId, f as isRecord$1, i as listFeishuAccountIds, n as inspectFeishuCredentials, o as resolveFeishuAccount, r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-
|
|
4
|
-
import { n as createFeishuSendReceipt } from "./send-result-
|
|
5
|
-
import { n as listFeishuDirectoryPeers, t as listFeishuDirectoryGroups } from "./directory.static-
|
|
1
|
+
import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, n as buildFeishuModelOverrideParentCandidates, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-Byq1c20x.js";
|
|
2
|
+
import { n as looksLikeFeishuId, r as normalizeFeishuTarget } from "./targets-Bb05cFr4.js";
|
|
3
|
+
import { a as resolveDefaultFeishuAccountId, f as isRecord$1, i as listFeishuAccountIds, n as inspectFeishuCredentials, o as resolveFeishuAccount, r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-CP4tDW-z.js";
|
|
4
|
+
import { n as createFeishuSendReceipt } from "./send-result-zZZOR3qT.js";
|
|
5
|
+
import { n as listFeishuDirectoryPeers, t as listFeishuDirectoryGroups } from "./directory.static-DqfUoZrD.js";
|
|
6
6
|
import { t as messageActionTargetAliases } from "./security-audit-DqJdocrN.js";
|
|
7
|
-
import { o as resolveFeishuGroupToolPolicy } from "./policy-
|
|
7
|
+
import { o as resolveFeishuGroupToolPolicy } from "./policy-iDTxfTYv.js";
|
|
8
8
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-Dm4Z_zQN.js";
|
|
9
9
|
import { t as collectFeishuSecurityAuditFindings } from "./security-audit-shared-ByuMx9cJ.js";
|
|
10
|
-
import { t as resolveFeishuSessionConversation } from "./session-conversation-
|
|
11
|
-
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/
|
|
10
|
+
import { t as resolveFeishuSessionConversation } from "./session-conversation-BulT2OKc.js";
|
|
11
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
12
12
|
import { getSessionBindingService } from "openclaw/plugin-sdk/conversation-runtime";
|
|
13
13
|
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
14
14
|
import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
|
|
@@ -29,7 +29,7 @@ import { buildChannelConfigSchema } from "openclaw/plugin-sdk/channel-config-pri
|
|
|
29
29
|
import { PAIRING_APPROVED_MESSAGE } from "openclaw/plugin-sdk/channel-status";
|
|
30
30
|
import { chunkTextForOutbound } from "openclaw/plugin-sdk/text-chunking";
|
|
31
31
|
import { normalizeAccountId as normalizeAccountId$1 } from "openclaw/plugin-sdk/account-id";
|
|
32
|
-
import { z } from "
|
|
32
|
+
import { z } from "zod";
|
|
33
33
|
import { buildSecretInputSchema, hasConfiguredSecretInput as hasConfiguredSecretInput$2 } from "openclaw/plugin-sdk/secret-input";
|
|
34
34
|
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, formatDocsLink, hasConfiguredSecretInput as hasConfiguredSecretInput$1, mergeAllowFromEntries, patchTopLevelChannelConfigSection, promptSingleChannelSecretInput, splitSetupEntries } from "openclaw/plugin-sdk/setup";
|
|
35
35
|
//#region extensions/feishu/src/approval-auth.ts
|
|
@@ -402,6 +402,7 @@ const feishuSetupAdapter = {
|
|
|
402
402
|
//#endregion
|
|
403
403
|
//#region extensions/feishu/src/setup-surface.ts
|
|
404
404
|
const channel = "feishu";
|
|
405
|
+
const SCAN_TO_CREATE_TP = "ob_cli_app";
|
|
405
406
|
function normalizeString(value) {
|
|
406
407
|
if (typeof value !== "string") return;
|
|
407
408
|
return value.trim() || void 0;
|
|
@@ -535,24 +536,50 @@ function applyNewAppSecurityPolicy(cfg, accountId, openId, groupPolicy) {
|
|
|
535
536
|
next = patchFeishuConfig(next, accountId, groupPatch);
|
|
536
537
|
return next;
|
|
537
538
|
}
|
|
538
|
-
async function
|
|
539
|
+
async function promptFeishuDomain(params) {
|
|
540
|
+
return await params.prompter.select({
|
|
541
|
+
message: "Which Feishu domain?",
|
|
542
|
+
options: [{
|
|
543
|
+
value: "feishu",
|
|
544
|
+
label: "Feishu (feishu.cn) - China"
|
|
545
|
+
}, {
|
|
546
|
+
value: "lark",
|
|
547
|
+
label: "Lark (larksuite.com) - International"
|
|
548
|
+
}],
|
|
549
|
+
initialValue: params.initialValue ?? "feishu"
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
async function promptFeishuSetupMethod(prompter) {
|
|
553
|
+
return await prompter.select({
|
|
554
|
+
message: "How do you want to connect Feishu?",
|
|
555
|
+
options: [{
|
|
556
|
+
value: "manual",
|
|
557
|
+
label: "Enter App ID and App Secret manually"
|
|
558
|
+
}, {
|
|
559
|
+
value: "scan",
|
|
560
|
+
label: "Scan a QR code to create a bot automatically"
|
|
561
|
+
}],
|
|
562
|
+
initialValue: "manual"
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
async function runScanToCreate(prompter, domain) {
|
|
539
566
|
const { beginAppRegistration, initAppRegistration, pollAppRegistration, printQrCode } = await import("./app-registration-B8qc1MCM.js");
|
|
540
567
|
try {
|
|
541
|
-
await initAppRegistration(
|
|
568
|
+
await initAppRegistration(domain);
|
|
542
569
|
} catch {
|
|
543
570
|
await prompter.note("Scan-to-create is not available in this environment. Falling back to manual input.", "Feishu setup");
|
|
544
571
|
return null;
|
|
545
572
|
}
|
|
546
|
-
const begin = await beginAppRegistration(
|
|
547
|
-
await prompter.note("Scan the QR with Lark/Feishu on your phone.", "Feishu scan-to-create");
|
|
573
|
+
const begin = await beginAppRegistration(domain);
|
|
574
|
+
await prompter.note("Scan the QR with Lark/Feishu on your phone. If the mobile app does not react, rerun setup and choose manual input.", "Feishu scan-to-create");
|
|
548
575
|
await printQrCode(begin.qrUrl);
|
|
549
576
|
const progress = prompter.progress("Fetching configuration results...");
|
|
550
577
|
const outcome = await pollAppRegistration({
|
|
551
578
|
deviceCode: begin.deviceCode,
|
|
552
579
|
interval: begin.interval,
|
|
553
580
|
expireIn: begin.expireIn,
|
|
554
|
-
initialDomain:
|
|
555
|
-
tp:
|
|
581
|
+
initialDomain: domain,
|
|
582
|
+
tp: SCAN_TO_CREATE_TP
|
|
556
583
|
});
|
|
557
584
|
switch (outcome.status) {
|
|
558
585
|
case "success":
|
|
@@ -582,7 +609,14 @@ async function runNewAppFlow(params) {
|
|
|
582
609
|
let appSecretProbeValue = null;
|
|
583
610
|
let scanDomain;
|
|
584
611
|
let scanOpenId;
|
|
585
|
-
const
|
|
612
|
+
const currentDomain = (next.channels?.feishu)?.domain ?? "feishu";
|
|
613
|
+
const setupMethod = await promptFeishuSetupMethod(prompter);
|
|
614
|
+
const selectedDomain = await promptFeishuDomain({
|
|
615
|
+
prompter,
|
|
616
|
+
initialValue: currentDomain
|
|
617
|
+
});
|
|
618
|
+
scanDomain = selectedDomain;
|
|
619
|
+
const scanResult = setupMethod === "scan" ? await runScanToCreate(prompter, selectedDomain) : null;
|
|
586
620
|
if (scanResult) {
|
|
587
621
|
appId = scanResult.appId;
|
|
588
622
|
appSecret = scanResult.appSecret;
|
|
@@ -590,20 +624,7 @@ async function runNewAppFlow(params) {
|
|
|
590
624
|
scanDomain = scanResult.domain;
|
|
591
625
|
scanOpenId = scanResult.openId;
|
|
592
626
|
} else {
|
|
593
|
-
const feishuCfg = next.channels?.feishu;
|
|
594
627
|
await noteFeishuCredentialHelp(prompter);
|
|
595
|
-
const currentDomain = feishuCfg?.domain ?? "feishu";
|
|
596
|
-
scanDomain = await prompter.select({
|
|
597
|
-
message: "Which Feishu domain?",
|
|
598
|
-
options: [{
|
|
599
|
-
value: "feishu",
|
|
600
|
-
label: "Feishu (feishu.cn) - China"
|
|
601
|
-
}, {
|
|
602
|
-
value: "lark",
|
|
603
|
-
label: "Lark (larksuite.com) - International"
|
|
604
|
-
}],
|
|
605
|
-
initialValue: currentDomain
|
|
606
|
-
});
|
|
607
628
|
appId = await promptFeishuAppId({
|
|
608
629
|
prompter,
|
|
609
630
|
initialValue: normalizeString(process.env.FEISHU_APP_ID)
|
|
@@ -631,7 +652,7 @@ async function runNewAppFlow(params) {
|
|
|
631
652
|
scanOpenId = await getAppOwnerOpenId({
|
|
632
653
|
appId,
|
|
633
654
|
appSecret: appSecretProbeValue,
|
|
634
|
-
domain:
|
|
655
|
+
domain: selectedDomain
|
|
635
656
|
});
|
|
636
657
|
}
|
|
637
658
|
}
|
|
@@ -811,7 +832,7 @@ const meta = {
|
|
|
811
832
|
aliases: ["lark"],
|
|
812
833
|
order: 70
|
|
813
834
|
};
|
|
814
|
-
const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
835
|
+
const loadFeishuChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-Bt1Lk06Y.js"), "feishuChannelRuntime");
|
|
815
836
|
function toFeishuMessageSendResult(result, kind) {
|
|
816
837
|
const receipt = result.receipt ?? createFeishuSendReceipt({
|
|
817
838
|
messageId: result.messageId,
|
|
@@ -1654,7 +1675,7 @@ const feishuPlugin = createChatChannelPlugin({
|
|
|
1654
1675
|
})
|
|
1655
1676
|
}),
|
|
1656
1677
|
gateway: { startAccount: async (ctx) => {
|
|
1657
|
-
const { monitorFeishuProvider } = await import("./monitor-
|
|
1678
|
+
const { monitorFeishuProvider } = await import("./monitor-BZgAq8ET.js");
|
|
1658
1679
|
const account = resolveFeishuRuntimeAccount({
|
|
1659
1680
|
cfg: ctx.cfg,
|
|
1660
1681
|
accountId: ctx.accountId
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as feishuPlugin } from "./channel-
|
|
1
|
+
import { t as feishuPlugin } from "./channel-BfpzGx67.js";
|
|
2
2
|
export { feishuPlugin };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { o as resolveFeishuAccount, s as resolveFeishuRuntimeAccount, y as parseFeishuCommentTarget } from "./accounts-
|
|
2
|
-
import { s as createFeishuCardInteractionEnvelope } from "./send-result-
|
|
3
|
-
import { n as listFeishuDirectoryPeers, t as listFeishuDirectoryGroups } from "./directory.static-
|
|
1
|
+
import { o as resolveFeishuAccount, s as resolveFeishuRuntimeAccount, y as parseFeishuCommentTarget } from "./accounts-CP4tDW-z.js";
|
|
2
|
+
import { s as createFeishuCardInteractionEnvelope } from "./send-result-zZZOR3qT.js";
|
|
3
|
+
import { n as listFeishuDirectoryPeers, t as listFeishuDirectoryGroups } from "./directory.static-DqfUoZrD.js";
|
|
4
4
|
import { r as createFeishuClient } from "./client-DBVoQL5w.js";
|
|
5
|
-
import { c as getChatInfo, l as getChatMembers, r as cleanupAmbientCommentTypingReaction, t as deliverCommentThreadText, u as getFeishuMemberInfo } from "./drive-
|
|
5
|
+
import { c as getChatInfo, l as getChatMembers, r as cleanupAmbientCommentTypingReaction, t as deliverCommentThreadText, u as getFeishuMemberInfo } from "./drive-BocW3yO6.js";
|
|
6
6
|
import { chunkTextForOutbound } from "./runtime-api.js";
|
|
7
|
-
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-
|
|
7
|
+
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-DiFpqzBJ.js";
|
|
8
8
|
import { t as probeFeishu } from "./probe-BNzzU_uR.js";
|
|
9
|
-
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/
|
|
9
|
+
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
10
10
|
import { interactiveReplyToPresentation, normalizeInteractiveReply, normalizeMessagePresentation, renderMessagePresentationFallbackText, resolveInteractiveTextFallback } from "openclaw/plugin-sdk/interactive-runtime";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
|
package/dist/contract-api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-
|
|
2
|
-
import { n as createFeishuThreadBindingManager, t as __testing } from "./thread-bindings-
|
|
1
|
+
import { a as parseFeishuTargetId, i as parseFeishuDirectConversationId, r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-Byq1c20x.js";
|
|
2
|
+
import { n as createFeishuThreadBindingManager, t as __testing } from "./thread-bindings-D5kDxq_j.js";
|
|
3
3
|
import { t as messageActionTargetAliases } from "./security-audit-DqJdocrN.js";
|
|
4
4
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-Dm4Z_zQN.js";
|
|
5
5
|
import { t as collectFeishuSecurityAuditFindings } from "./security-audit-shared-ByuMx9cJ.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/
|
|
1
|
+
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
2
|
//#region extensions/feishu/src/conversation-id.ts
|
|
3
3
|
function normalizeText(value) {
|
|
4
4
|
if (typeof value !== "string") return;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as normalizeFeishuTarget } from "./targets-
|
|
2
|
-
import { o as resolveFeishuAccount } from "./accounts-
|
|
1
|
+
import { r as normalizeFeishuTarget } from "./targets-Bb05cFr4.js";
|
|
2
|
+
import { o as resolveFeishuAccount } from "./accounts-CP4tDW-z.js";
|
|
3
3
|
import { listDirectoryGroupEntriesFromMapKeysAndAllowFrom, listDirectoryUserEntriesFromAllowFromAndMapKeys } from "openclaw/plugin-sdk/directory-runtime";
|
|
4
4
|
//#region extensions/feishu/src/directory.static.ts
|
|
5
5
|
function toFeishuDirectoryPeers(ids) {
|
|
@@ -1,6 +1,6 @@
|
|
|
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-
|
|
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-CP4tDW-z.js";
|
|
2
2
|
import { r as createFeishuClient } from "./client-DBVoQL5w.js";
|
|
3
|
-
import { normalizeOptionalString } from "openclaw/plugin-sdk/
|
|
3
|
+
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
5
5
|
import { Type } from "typebox";
|
|
6
6
|
//#region extensions/feishu/src/tools-config.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-
|
|
2
|
-
import { l as fetchBotIdentityForMonitor } from "./monitor.state-
|
|
1
|
+
import { r as listEnabledFeishuAccounts, s as resolveFeishuRuntimeAccount } from "./accounts-CP4tDW-z.js";
|
|
2
|
+
import { l as fetchBotIdentityForMonitor } from "./monitor.state-D1WkvOGG.js";
|
|
3
3
|
//#region extensions/feishu/src/monitor.ts
|
|
4
4
|
let monitorAccountRuntimePromise;
|
|
5
5
|
async function loadMonitorAccountRuntime() {
|
|
6
|
-
monitorAccountRuntimePromise ??= import("./monitor.account-
|
|
6
|
+
monitorAccountRuntimePromise ??= import("./monitor.account-CI4_rDnC.js");
|
|
7
7
|
return await monitorAccountRuntimePromise;
|
|
8
8
|
}
|
|
9
9
|
async function monitorFeishuProvider(opts = {}) {
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import { t as buildFeishuConversationId } from "./conversation-id-
|
|
2
|
-
import { i as resolveReceiveIdType } from "./targets-
|
|
3
|
-
import { n as createFeishuThreadBindingManager } from "./thread-bindings-
|
|
4
|
-
import { _ as buildFeishuCommentTarget, f as isRecord$3, h as readString$2, l as encodeQuery, m as parseCommentContentElements, p as normalizeString, s as resolveFeishuRuntimeAccount, u as extractReplyText, v as normalizeCommentFileType } from "./accounts-
|
|
5
|
-
import { c as decodeFeishuCardAction, o as buildFeishuCardActionTextFallback, s as createFeishuCardInteractionEnvelope } from "./send-result-
|
|
6
|
-
import { a as resolveFeishuGroupSenderActivationIngressAccess, i as resolveFeishuGroupConversationIngressAccess, n as resolveFeishuDmIngressAccess, r as resolveFeishuGroupConfig, s as resolveFeishuReplyPolicy, t as hasExplicitFeishuGroupConfig } from "./policy-
|
|
1
|
+
import { t as buildFeishuConversationId } from "./conversation-id-Byq1c20x.js";
|
|
2
|
+
import { i as resolveReceiveIdType } from "./targets-Bb05cFr4.js";
|
|
3
|
+
import { n as createFeishuThreadBindingManager } from "./thread-bindings-D5kDxq_j.js";
|
|
4
|
+
import { _ as buildFeishuCommentTarget, f as isRecord$3, h as readString$2, l as encodeQuery, m as parseCommentContentElements, p as normalizeString, s as resolveFeishuRuntimeAccount, u as extractReplyText, v as normalizeCommentFileType } from "./accounts-CP4tDW-z.js";
|
|
5
|
+
import { c as decodeFeishuCardAction, o as buildFeishuCardActionTextFallback, s as createFeishuCardInteractionEnvelope } from "./send-result-zZZOR3qT.js";
|
|
6
|
+
import { a as resolveFeishuGroupSenderActivationIngressAccess, i as resolveFeishuGroupConversationIngressAccess, n as resolveFeishuDmIngressAccess, r as resolveFeishuGroupConfig, s as resolveFeishuReplyPolicy, t as hasExplicitFeishuGroupConfig } from "./policy-iDTxfTYv.js";
|
|
7
7
|
import { t as getFeishuRuntime } from "./runtime-CG0DuRCy.js";
|
|
8
8
|
import { a as getFeishuUserAgent, i as createFeishuWSClient, n as createEventDispatcher, r as createFeishuClient } from "./client-DBVoQL5w.js";
|
|
9
|
-
import { c as getChatInfo, i as createCommentTypingReactionLifecycle, t as deliverCommentThreadText } from "./drive-
|
|
9
|
+
import { c as getChatInfo, i as createCommentTypingReactionLifecycle, t as deliverCommentThreadText } from "./drive-BocW3yO6.js";
|
|
10
10
|
import { buildAgentMediaPayload, createReplyPrefixContext, evaluateSupplementalContextVisibility, loadSessionStore, normalizeAgentId as normalizeAgentId$1, 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 downloadMessageResourceFeishu, n as getMessageFeishu, p as isFeishuGroupChatType, r as listFeishuThreadMessages, s as sendMessageFeishu, u as extractMentionTargets } from "./send-
|
|
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 downloadMessageResourceFeishu, n as getMessageFeishu, p as isFeishuGroupChatType, r as listFeishuThreadMessages, s as sendMessageFeishu, u as extractMentionTargets } from "./send-DiFpqzBJ.js";
|
|
12
12
|
import { i as waitForAbortableDelay, r as raceWithTimeoutAndAbort } from "./probe-BNzzU_uR.js";
|
|
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-
|
|
14
|
-
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString
|
|
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-D1WkvOGG.js";
|
|
14
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
15
15
|
import { ensureConfiguredBindingRouteReady, resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-runtime";
|
|
16
16
|
import { createChannelMessageReplyPipeline } from "openclaw/plugin-sdk/channel-message";
|
|
17
17
|
import { createChannelPairingController, createChannelPairingController as createChannelPairingController$1 } from "openclaw/plugin-sdk/channel-pairing";
|
|
18
18
|
import { resolveAgentOutboundIdentity } from "openclaw/plugin-sdk/outbound-runtime";
|
|
19
|
+
import { stripReasoningTagsFromText } from "openclaw/plugin-sdk/text-chunking";
|
|
19
20
|
import fs from "node:fs";
|
|
20
21
|
import os from "node:os";
|
|
21
22
|
import path from "node:path";
|
|
@@ -1203,7 +1204,9 @@ function createFeishuReplyDispatcher(params) {
|
|
|
1203
1204
|
const core = getFeishuRuntime();
|
|
1204
1205
|
const { cfg, agentId, chatId, replyToMessageId, skipReplyToInMessages, replyInThread, threadReply, rootId, accountId, identity } = params;
|
|
1205
1206
|
const sendReplyToMessageId = skipReplyToInMessages ? void 0 : replyToMessageId;
|
|
1206
|
-
const
|
|
1207
|
+
const threadReplyMode = threadReply === true;
|
|
1208
|
+
const effectiveReplyInThread = threadReplyMode ? true : replyInThread;
|
|
1209
|
+
const allowTopLevelReplyFallback = effectiveReplyInThread === true && threadReplyMode && rootId !== void 0 && sendReplyToMessageId !== void 0 && sendReplyToMessageId !== rootId;
|
|
1207
1210
|
const account = resolveFeishuRuntimeAccount({
|
|
1208
1211
|
cfg,
|
|
1209
1212
|
accountId
|
|
@@ -1414,6 +1417,7 @@ function createFeishuReplyDispatcher(params) {
|
|
|
1414
1417
|
text: chunk,
|
|
1415
1418
|
replyToMessageId: sendReplyToMessageId,
|
|
1416
1419
|
replyInThread: effectiveReplyInThread,
|
|
1420
|
+
allowTopLevelReplyFallback,
|
|
1417
1421
|
accountId
|
|
1418
1422
|
});
|
|
1419
1423
|
}
|
|
@@ -1434,6 +1438,7 @@ function createFeishuReplyDispatcher(params) {
|
|
|
1434
1438
|
text: chunk,
|
|
1435
1439
|
replyToMessageId: sendReplyToMessageId,
|
|
1436
1440
|
replyInThread: effectiveReplyInThread,
|
|
1441
|
+
allowTopLevelReplyFallback,
|
|
1437
1442
|
accountId
|
|
1438
1443
|
});
|
|
1439
1444
|
}
|
|
@@ -1508,6 +1513,7 @@ function createFeishuReplyDispatcher(params) {
|
|
|
1508
1513
|
text: chunk,
|
|
1509
1514
|
replyToMessageId: sendReplyToMessageId,
|
|
1510
1515
|
replyInThread: effectiveReplyInThread,
|
|
1516
|
+
allowTopLevelReplyFallback,
|
|
1511
1517
|
accountId,
|
|
1512
1518
|
header: cardHeader,
|
|
1513
1519
|
note: cardNote
|
|
@@ -1525,6 +1531,7 @@ function createFeishuReplyDispatcher(params) {
|
|
|
1525
1531
|
text: chunk,
|
|
1526
1532
|
replyToMessageId: sendReplyToMessageId,
|
|
1527
1533
|
replyInThread: effectiveReplyInThread,
|
|
1534
|
+
allowTopLevelReplyFallback,
|
|
1528
1535
|
accountId
|
|
1529
1536
|
});
|
|
1530
1537
|
}
|
|
@@ -3830,7 +3837,7 @@ async function resolveDriveCommentEventCore(params) {
|
|
|
3830
3837
|
return null;
|
|
3831
3838
|
}
|
|
3832
3839
|
const context = await fetchDriveCommentContext({
|
|
3833
|
-
client: createClient ? createClient(account ?? { accountId }) : createFeishuClient((await import("./accounts-
|
|
3840
|
+
client: createClient ? createClient(account ?? { accountId }) : createFeishuClient((await import("./accounts-CP4tDW-z.js").then((n) => n.t)).resolveFeishuAccount({
|
|
3834
3841
|
cfg,
|
|
3835
3842
|
accountId
|
|
3836
3843
|
})),
|
|
@@ -4772,7 +4779,7 @@ async function resolveReactionSyntheticEvent(params) {
|
|
|
4772
4779
|
const senderId = event.user_id?.open_id;
|
|
4773
4780
|
const senderUserId = event.user_id?.user_id;
|
|
4774
4781
|
if (!emoji || !messageId || !senderId) return null;
|
|
4775
|
-
const { resolveFeishuAccount } = await import("./accounts-
|
|
4782
|
+
const { resolveFeishuAccount } = await import("./accounts-CP4tDW-z.js").then((n) => n.t);
|
|
4776
4783
|
const reactionNotifications = resolveFeishuAccount({
|
|
4777
4784
|
cfg,
|
|
4778
4785
|
accountId
|
|
@@ -4837,16 +4844,21 @@ function firstString(...values) {
|
|
|
4837
4844
|
if (trimmed) return trimmed;
|
|
4838
4845
|
}
|
|
4839
4846
|
}
|
|
4847
|
+
function readFeishuIdentityField(value, field) {
|
|
4848
|
+
if (!isRecord$3(value)) return;
|
|
4849
|
+
return firstString(value[field]);
|
|
4850
|
+
}
|
|
4840
4851
|
function parseFeishuCardActionEventPayload(value) {
|
|
4841
4852
|
if (!isRecord$3(value)) return null;
|
|
4842
4853
|
const operator = isRecord$3(value.operator) ? value.operator : {};
|
|
4843
4854
|
const action = value.action;
|
|
4844
4855
|
const context = isRecord$3(value.context) ? value.context : {};
|
|
4845
4856
|
if (!isRecord$3(action)) return null;
|
|
4857
|
+
const operatorUserId = operator.user_id;
|
|
4846
4858
|
const token = readString$2(value.token);
|
|
4847
|
-
const openId = firstString(operator.open_id, value.open_id, context.open_id);
|
|
4848
|
-
const userId = firstString(operator.user_id, value.user_id, context.user_id);
|
|
4849
|
-
const unionId = firstString(operator.union_id);
|
|
4859
|
+
const openId = firstString(operator.open_id, readFeishuIdentityField(operatorUserId, "open_id"), value.open_id, context.open_id);
|
|
4860
|
+
const userId = firstString(operator.user_id, readFeishuIdentityField(operatorUserId, "user_id"), value.user_id, context.user_id);
|
|
4861
|
+
const unionId = firstString(operator.union_id, readFeishuIdentityField(operatorUserId, "union_id"));
|
|
4850
4862
|
const tag = readString$2(action.tag);
|
|
4851
4863
|
const actionValue = action.value;
|
|
4852
4864
|
const openMessageId = firstString(value.open_message_id, context.open_message_id);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as probeFeishu } from "./probe-BNzzU_uR.js";
|
|
2
|
-
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/
|
|
2
|
+
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { WEBHOOK_ANOMALY_COUNTER_DEFAULTS, WEBHOOK_RATE_LIMIT_DEFAULTS, createFixedWindowRateLimiter, createWebhookAnomalyTracker } from "openclaw/plugin-sdk/webhook-ingress";
|
|
4
4
|
//#region extensions/feishu/src/monitor.startup.ts
|
|
5
5
|
const FEISHU_STARTUP_BOT_INFO_TIMEOUT_DEFAULT_MS = 3e4;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as detectIdType } from "./targets-
|
|
2
|
-
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/
|
|
1
|
+
import { t as detectIdType } from "./targets-Bb05cFr4.js";
|
|
2
|
+
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { normalizeAccountId, resolveMergedAccountConfig } from "openclaw/plugin-sdk/account-resolution";
|
|
4
4
|
import { createChannelIngressResolver, defineStableChannelIngressIdentity } from "openclaw/plugin-sdk/channel-ingress-runtime";
|
|
5
5
|
//#region extensions/feishu/src/policy.ts
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { i as resolveReceiveIdType, r as normalizeFeishuTarget } from "./targets-
|
|
2
|
-
import { c as createFeishuApiError, f as isRecord$2, g as requestFeishuApi, s as resolveFeishuRuntimeAccount } from "./accounts-
|
|
3
|
-
import { i as toFeishuSendResult, r as resolveFeishuReceiptKind, t as assertFeishuMessageApiSuccess } from "./send-result-
|
|
1
|
+
import { i as resolveReceiveIdType, r as normalizeFeishuTarget } from "./targets-Bb05cFr4.js";
|
|
2
|
+
import { c as createFeishuApiError, f as isRecord$2, g as requestFeishuApi, s as resolveFeishuRuntimeAccount } from "./accounts-CP4tDW-z.js";
|
|
3
|
+
import { i as toFeishuSendResult, r as resolveFeishuReceiptKind, t as assertFeishuMessageApiSuccess } from "./send-result-zZZOR3qT.js";
|
|
4
4
|
import { t as getFeishuRuntime } from "./runtime-CG0DuRCy.js";
|
|
5
5
|
import { r as createFeishuClient } from "./client-DBVoQL5w.js";
|
|
6
|
-
import {
|
|
6
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
|
+
import { convertMarkdownTables } from "openclaw/plugin-sdk/text-chunking";
|
|
7
8
|
import fs from "node:fs";
|
|
8
9
|
import path from "node:path";
|
|
9
10
|
import { mediaKindFromMime } from "openclaw/plugin-sdk/media-mime";
|
|
@@ -836,7 +837,7 @@ async function sendFallbackDirect(client, params, errorPrefix) {
|
|
|
836
837
|
}
|
|
837
838
|
async function sendReplyOrFallbackDirect(client, params) {
|
|
838
839
|
if (!params.replyToMessageId) return sendFallbackDirect(client, params.directParams, params.directErrorPrefix);
|
|
839
|
-
const
|
|
840
|
+
const replyTargetFallbackError = params.replyInThread && params.allowTopLevelReplyFallback !== true ? /* @__PURE__ */ new Error("Feishu thread reply failed: reply target is unavailable and cannot safely fall back to a top-level send.") : null;
|
|
840
841
|
let response;
|
|
841
842
|
try {
|
|
842
843
|
response = await client.im.message.reply({
|
|
@@ -849,11 +850,11 @@ async function sendReplyOrFallbackDirect(client, params) {
|
|
|
849
850
|
});
|
|
850
851
|
} catch (err) {
|
|
851
852
|
if (!isWithdrawnReplyError(err)) throw createFeishuApiError(err, params.replyErrorPrefix, { includeNestedErrorLogId: true });
|
|
852
|
-
if (
|
|
853
|
+
if (replyTargetFallbackError) throw replyTargetFallbackError;
|
|
853
854
|
return sendFallbackDirect(client, params.directParams, params.directErrorPrefix);
|
|
854
855
|
}
|
|
855
856
|
if (shouldFallbackFromReplyTarget(response)) {
|
|
856
|
-
if (
|
|
857
|
+
if (replyTargetFallbackError) throw replyTargetFallbackError;
|
|
857
858
|
return sendFallbackDirect(client, params.directParams, params.directErrorPrefix);
|
|
858
859
|
}
|
|
859
860
|
assertFeishuMessageApiSuccess(response, params.replyErrorPrefix);
|
|
@@ -1029,7 +1030,7 @@ function buildFeishuPostMessagePayload(params) {
|
|
|
1029
1030
|
};
|
|
1030
1031
|
}
|
|
1031
1032
|
async function sendMessageFeishu(params) {
|
|
1032
|
-
const { cfg, to, text, replyToMessageId, replyInThread, mentions, accountId } = params;
|
|
1033
|
+
const { cfg, to, text, replyToMessageId, replyInThread, allowTopLevelReplyFallback, mentions, accountId } = params;
|
|
1033
1034
|
const { client, receiveId, receiveIdType } = resolveFeishuSendTarget({
|
|
1034
1035
|
cfg,
|
|
1035
1036
|
to,
|
|
@@ -1045,6 +1046,7 @@ async function sendMessageFeishu(params) {
|
|
|
1045
1046
|
return sendReplyOrFallbackDirect(client, {
|
|
1046
1047
|
replyToMessageId,
|
|
1047
1048
|
replyInThread,
|
|
1049
|
+
allowTopLevelReplyFallback,
|
|
1048
1050
|
content,
|
|
1049
1051
|
msgType,
|
|
1050
1052
|
directParams: {
|
|
@@ -1058,7 +1060,7 @@ async function sendMessageFeishu(params) {
|
|
|
1058
1060
|
});
|
|
1059
1061
|
}
|
|
1060
1062
|
async function sendCardFeishu(params) {
|
|
1061
|
-
const { cfg, to, card, replyToMessageId, replyInThread, accountId } = params;
|
|
1063
|
+
const { cfg, to, card, replyToMessageId, replyInThread, allowTopLevelReplyFallback, accountId } = params;
|
|
1062
1064
|
const { client, receiveId, receiveIdType } = resolveFeishuSendTarget({
|
|
1063
1065
|
cfg,
|
|
1064
1066
|
to,
|
|
@@ -1068,6 +1070,7 @@ async function sendCardFeishu(params) {
|
|
|
1068
1070
|
return sendReplyOrFallbackDirect(client, {
|
|
1069
1071
|
replyToMessageId,
|
|
1070
1072
|
replyInThread,
|
|
1073
|
+
allowTopLevelReplyFallback,
|
|
1071
1074
|
content,
|
|
1072
1075
|
msgType: "interactive",
|
|
1073
1076
|
directParams: {
|
|
@@ -1169,7 +1172,7 @@ function buildStructuredCard(text, options) {
|
|
|
1169
1172
|
* Send a message as a structured card with optional header and note.
|
|
1170
1173
|
*/
|
|
1171
1174
|
async function sendStructuredCardFeishu(params) {
|
|
1172
|
-
const { cfg, to, text, replyToMessageId, replyInThread, mentions, accountId, header, note } = params;
|
|
1175
|
+
const { cfg, to, text, replyToMessageId, replyInThread, allowTopLevelReplyFallback, mentions, accountId, header, note } = params;
|
|
1173
1176
|
let cardText = text;
|
|
1174
1177
|
if (mentions && mentions.length > 0) cardText = buildMentionedCardContent(mentions, text);
|
|
1175
1178
|
return sendCardFeishu({
|
|
@@ -1181,6 +1184,7 @@ async function sendStructuredCardFeishu(params) {
|
|
|
1181
1184
|
}),
|
|
1182
1185
|
replyToMessageId,
|
|
1183
1186
|
replyInThread,
|
|
1187
|
+
allowTopLevelReplyFallback,
|
|
1184
1188
|
accountId
|
|
1185
1189
|
});
|
|
1186
1190
|
}
|
|
@@ -1189,7 +1193,7 @@ async function sendStructuredCardFeishu(params) {
|
|
|
1189
1193
|
* This renders markdown properly in Feishu (code blocks, tables, bold/italic, etc.)
|
|
1190
1194
|
*/
|
|
1191
1195
|
async function sendMarkdownCardFeishu(params) {
|
|
1192
|
-
const { cfg, to, text, replyToMessageId, replyInThread, mentions, accountId } = params;
|
|
1196
|
+
const { cfg, to, text, replyToMessageId, replyInThread, allowTopLevelReplyFallback, mentions, accountId } = params;
|
|
1193
1197
|
let cardText = text;
|
|
1194
1198
|
if (mentions && mentions.length > 0) cardText = buildMentionedCardContent(mentions, text);
|
|
1195
1199
|
return sendCardFeishu({
|
|
@@ -1198,6 +1202,7 @@ async function sendMarkdownCardFeishu(params) {
|
|
|
1198
1202
|
card: buildMarkdownCard(cardText),
|
|
1199
1203
|
replyToMessageId,
|
|
1200
1204
|
replyInThread,
|
|
1205
|
+
allowTopLevelReplyFallback,
|
|
1201
1206
|
accountId
|
|
1202
1207
|
});
|
|
1203
1208
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as isRecord } from "./accounts-
|
|
1
|
+
import { f as isRecord } from "./accounts-CP4tDW-z.js";
|
|
2
2
|
import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
|
|
3
3
|
//#region extensions/feishu/src/card-interaction.ts
|
|
4
4
|
const FEISHU_CARD_INTERACTION_VERSION = "ocf1";
|
|
@@ -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-Byq1c20x.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-BulT2OKc.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-BfpzGx67.js";
|
|
2
2
|
export { feishuPlugin, feishuSetupAdapter, feishuSetupWizard };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-DUslC3ob.js";
|
|
2
|
-
import { r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-
|
|
3
|
-
import { r as normalizeFeishuTarget } from "./targets-
|
|
4
|
-
import { r as getFeishuThreadBindingManager } from "./thread-bindings-
|
|
5
|
-
import { normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/
|
|
2
|
+
import { r as parseFeishuConversationId, t as buildFeishuConversationId } from "./conversation-id-Byq1c20x.js";
|
|
3
|
+
import { r as normalizeFeishuTarget } from "./targets-Bb05cFr4.js";
|
|
4
|
+
import { r as getFeishuThreadBindingManager } from "./thread-bindings-D5kDxq_j.js";
|
|
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,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as handleFeishuSubagentEnded, r as handleFeishuSubagentSpawning, t as handleFeishuSubagentDeliveryTarget } from "./subagent-hooks-
|
|
1
|
+
import { n as handleFeishuSubagentEnded, r as handleFeishuSubagentSpawning, t as handleFeishuSubagentDeliveryTarget } from "./subagent-hooks-BUPKo9Al.js";
|
|
2
2
|
//#region extensions/feishu/subagent-hooks-api.ts
|
|
3
3
|
let feishuSubagentHooksPromise = null;
|
|
4
4
|
function loadFeishuSubagentHooksModule() {
|
|
5
|
-
feishuSubagentHooksPromise ??= import("./subagent-hooks-
|
|
5
|
+
feishuSubagentHooksPromise ??= import("./subagent-hooks-BUPKo9Al.js").then((n) => n.i);
|
|
6
6
|
return feishuSubagentHooksPromise;
|
|
7
7
|
}
|
|
8
8
|
function registerFeishuSubagentHooks(api) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/
|
|
1
|
+
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
2
|
//#region extensions/feishu/src/targets.ts
|
|
3
3
|
const CHAT_ID_PREFIX = "oc_";
|
|
4
4
|
const OPEN_ID_PREFIX = "ou_";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { normalizeOptionalString } from "openclaw/plugin-sdk/
|
|
1
|
+
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
2
|
import { registerSessionBindingAdapter, resolveThreadBindingConversationIdFromBindingId, resolveThreadBindingIdleTimeoutMsForChannel, resolveThreadBindingMaxAgeMsForChannel, unregisterSessionBindingAdapter } from "openclaw/plugin-sdk/conversation-runtime";
|
|
3
3
|
import { normalizeAccountId, resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
|
|
4
4
|
//#region extensions/feishu/src/thread-bindings.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/feishu",
|
|
3
|
-
"version": "2026.5.10-beta.
|
|
3
|
+
"version": "2026.5.10-beta.4",
|
|
4
4
|
"description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,14 +9,15 @@
|
|
|
9
9
|
"type": "module",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@larksuiteoapi/node-sdk": "^1.63.1",
|
|
12
|
-
"typebox": "1.1.38"
|
|
12
|
+
"typebox": "1.1.38",
|
|
13
|
+
"zod": "^4.4.3"
|
|
13
14
|
},
|
|
14
15
|
"devDependencies": {
|
|
15
16
|
"@openclaw/plugin-sdk": "workspace:*",
|
|
16
17
|
"openclaw": "workspace:*"
|
|
17
18
|
},
|
|
18
19
|
"peerDependencies": {
|
|
19
|
-
"openclaw": ">=2026.5.10-beta.
|
|
20
|
+
"openclaw": ">=2026.5.10-beta.4"
|
|
20
21
|
},
|
|
21
22
|
"peerDependenciesMeta": {
|
|
22
23
|
"openclaw": {
|
|
@@ -47,10 +48,10 @@
|
|
|
47
48
|
"minHostVersion": ">=2026.4.25"
|
|
48
49
|
},
|
|
49
50
|
"compat": {
|
|
50
|
-
"pluginApi": ">=2026.5.10-beta.
|
|
51
|
+
"pluginApi": ">=2026.5.10-beta.4"
|
|
51
52
|
},
|
|
52
53
|
"build": {
|
|
53
|
-
"openclawVersion": "2026.5.10-beta.
|
|
54
|
+
"openclawVersion": "2026.5.10-beta.4"
|
|
54
55
|
},
|
|
55
56
|
"release": {
|
|
56
57
|
"publishToClawHub": true,
|