@wecom/wecom-openclaw-plugin 1.0.3-beta.0 → 1.0.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/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy, warnMissingProviderGroupPolicyFallbackOnce, readJsonFileWithFallback, withFileLock, writeJsonFileAtomically, DEFAULT_ACCOUNT_ID, addWildcardAllowFrom, formatPairingApproveHint, emptyPluginConfigSchema } from 'openclaw/plugin-sdk';
1
+ import { readJsonFileWithFallback, withFileLock, writeJsonFileAtomically, DEFAULT_ACCOUNT_ID, addWildcardAllowFrom, formatPairingApproveHint, emptyPluginConfigSchema } from 'openclaw/plugin-sdk';
2
2
  import { generateReqId, WSClient } from '@wecom/aibot-node-sdk';
3
3
  import { fileTypeFromBuffer } from 'file-type';
4
4
  import os from 'node:os';
@@ -424,18 +424,19 @@ function isGroupSenderAllowed(params) {
424
424
  function checkGroupPolicy(params) {
425
425
  const { chatId, senderId, account, config, runtime } = params;
426
426
  const wecomConfig = (config.channels?.[CHANNEL_ID] ?? {});
427
- const defaultGroupPolicy = resolveDefaultGroupPolicy(config);
428
- const { groupPolicy, providerMissingFallbackApplied } = resolveOpenProviderRuntimeGroupPolicy({
429
- providerConfigPresent: config.channels?.[CHANNEL_ID] !== undefined,
430
- groupPolicy: wecomConfig.groupPolicy,
431
- defaultGroupPolicy,
432
- });
433
- warnMissingProviderGroupPolicyFallbackOnce({
434
- providerMissingFallbackApplied,
435
- providerKey: CHANNEL_ID,
436
- accountId: account.accountId,
437
- log: (msg) => runtime.log?.(msg),
438
- });
427
+ const defaultGroupPolicy = config.channels?.[CHANNEL_ID]?.groupPolicy;
428
+ const groupPolicy = account.config.groupPolicy ?? defaultGroupPolicy ?? "open";
429
+ // const { groupPolicy, providerMissingFallbackApplied } = resolveOpenProviderRuntimeGroupPolicy({
430
+ // providerConfigPresent: config.channels?.[CHANNEL_ID] !== undefined,
431
+ // groupPolicy: wecomConfig.groupPolicy,
432
+ // defaultGroupPolicy,
433
+ // });
434
+ // warnMissingProviderGroupPolicyFallbackOnce({
435
+ // providerMissingFallbackApplied,
436
+ // providerKey: CHANNEL_ID,
437
+ // accountId: account.accountId,
438
+ // log: (msg) => runtime.log?.(msg),
439
+ // });
439
440
  const groupAllowFrom = wecomConfig.groupAllowFrom ?? [];
440
441
  const groupAllowed = isWeComGroupAllowed({
441
442
  groupPolicy,
@@ -689,7 +690,7 @@ function createPersistentReqIdStore(accountId, options) {
689
690
  }
690
691
  catch (error) {
691
692
  // 磁盘写入失败不影响内存使用,降级到纯内存模式
692
- console.error(`[WeCom] reqid-store: flush to disk failed: ${String(error)}`);
693
+ // console.error(`[WeCom] reqid-store: flush to disk failed: ${String(error)}`);
693
694
  }
694
695
  }
695
696
  // ========== 公开 API ==========
@@ -1497,7 +1498,7 @@ async function sendWeComMessage({ to, content, accountId, }) {
1497
1498
  console.log(`[WeCom] sendWeComMessage: ${JSON.stringify({ to, content, accountId })}`);
1498
1499
  // 获取 WSClient 实例
1499
1500
  const wsClient = getWeComWebSocket(resolvedAccountId);
1500
- if (!wsClient || !wsClient.isConnected) {
1501
+ if (!wsClient) {
1501
1502
  throw new Error(`WSClient not connected for account ${resolvedAccountId}`);
1502
1503
  }
1503
1504
  // 使用 SDK 的 sendMessage 主动发送 markdown 消息
@@ -1534,8 +1535,11 @@ const wecomPlugin = {
1534
1535
  idLabel: "wecomUserId",
1535
1536
  normalizeAllowEntry: (entry) => entry.replace(new RegExp(`^(${CHANNEL_ID}|user):`, "i"), "").trim(),
1536
1537
  notifyApproval: async ({ cfg, id }) => {
1537
- // 企业微信机器人不支持主动发送消息,只能在用户下次发消息时通知
1538
- // 这里暂时不实现,因为需要有 reqId 才能回复
1538
+ // sendWeComMessage({
1539
+ // to: id,
1540
+ // content: " pairing approved",
1541
+ // accountId: cfg.accountId,
1542
+ // });
1539
1543
  console.log(`[WeCom] Pairing approved for user: ${id}`);
1540
1544
  },
1541
1545
  },
@@ -1615,7 +1619,7 @@ const wecomPlugin = {
1615
1619
  normalizeEntry: (raw) => raw.replace(new RegExp(`^${CHANNEL_ID}:`, "i"), "").trim(),
1616
1620
  };
1617
1621
  },
1618
- collectWarnings: ({ account }) => {
1622
+ collectWarnings: ({ account, cfg }) => {
1619
1623
  const warnings = [];
1620
1624
  // DM 策略警告
1621
1625
  const dmPolicy = account.config.dmPolicy ?? "pairing";
@@ -1626,12 +1630,13 @@ const wecomPlugin = {
1626
1630
  }
1627
1631
  }
1628
1632
  // 群组策略警告
1629
- const defaultGroupPolicy = resolveDefaultGroupPolicy({});
1630
- const { groupPolicy } = resolveOpenProviderRuntimeGroupPolicy({
1631
- providerConfigPresent: true,
1632
- groupPolicy: account.config.groupPolicy,
1633
- defaultGroupPolicy,
1634
- });
1633
+ const defaultGroupPolicy = cfg.channels?.defaults?.groupPolicy;
1634
+ const groupPolicy = account.config.groupPolicy ?? defaultGroupPolicy ?? "open";
1635
+ // const { groupPolicy } = resolveOpenProviderRuntimeGroupPolicy({
1636
+ // providerConfigPresent: true,
1637
+ // groupPolicy: account.config.groupPolicy,
1638
+ // defaultGroupPolicy,
1639
+ // });
1635
1640
  if (groupPolicy === "open") {
1636
1641
  warnings.push(`- 企业微信群组:groupPolicy="open" 允许所有群组中的成员触发。设置 channels.${CHANNEL_ID}.groupPolicy="allowlist" + channels.${CHANNEL_ID}.groupAllowFrom 来限制群组。`);
1637
1642
  }