@xwang152/claw-lark 0.1.29 → 0.1.30

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.
@@ -10,6 +10,7 @@
10
10
  * Reference: https://open.feishu.cn/document/server-docs/im-v1/message-reaction/emojis-introduce
11
11
  */
12
12
  import { createLarkClient } from "./client.js";
13
+ import { getLarkRuntime } from "./runtime.js";
13
14
  // Lark emoji type for typing indicator
14
15
  // Note: "Typing" may not be available in all Lark instances
15
16
  // Fallback options: "THUMBSUP", "OK", "SMILE"
@@ -20,6 +21,36 @@ const TYPING_EMOJI = "Typing";
20
21
  function getChannelConfig(cfg) {
21
22
  return cfg.channels?.lark ?? {};
22
23
  }
24
+ /**
25
+ * Resolve account from config with proper defaults
26
+ */
27
+ function resolveAccountFromConfig(cfg, accountId) {
28
+ const channelConfig = getChannelConfig(cfg);
29
+ const accountConfig = channelConfig.accounts?.[accountId];
30
+ if (!accountConfig?.appId || !accountConfig?.appSecret) {
31
+ return null;
32
+ }
33
+ return {
34
+ accountId,
35
+ enabled: accountConfig.enabled ?? true,
36
+ configured: true,
37
+ appId: accountConfig.appId,
38
+ appSecret: accountConfig.appSecret,
39
+ encryptKey: accountConfig.encryptKey,
40
+ verificationToken: accountConfig.verificationToken,
41
+ domain: accountConfig.domain ?? "feishu",
42
+ connectionMode: accountConfig.connectionMode ?? "websocket",
43
+ webhookPort: accountConfig.webhookPort ?? 3000,
44
+ dmPolicy: accountConfig.dmPolicy ?? "open",
45
+ dmAllowlist: accountConfig.dmAllowlist ?? [],
46
+ groupPolicy: accountConfig.groupPolicy ?? "open",
47
+ groupAllowlist: accountConfig.groupAllowlist ?? [],
48
+ requireMention: accountConfig.requireMention ?? true,
49
+ mediaMaxMb: accountConfig.mediaMaxMb ?? 30,
50
+ renderMode: accountConfig.renderMode ?? "auto",
51
+ historyLimit: accountConfig.historyLimit ?? 10,
52
+ };
53
+ }
23
54
  /**
24
55
  * Add a typing indicator (reaction) to a message.
25
56
  *
@@ -31,29 +62,11 @@ function getChannelConfig(cfg) {
31
62
  */
32
63
  export async function addTypingIndicator(params) {
33
64
  const { cfg, messageId, accountId = "default" } = params;
34
- const channelConfig = getChannelConfig(cfg);
35
- const accountConfig = channelConfig.accounts?.[accountId];
36
- if (!accountConfig?.appId || !accountConfig?.appSecret) {
65
+ const account = resolveAccountFromConfig(cfg, accountId);
66
+ if (!account) {
37
67
  return { messageId, reactionId: null };
38
68
  }
39
- const client = createLarkClient({
40
- accountId,
41
- enabled: true,
42
- configured: true,
43
- appId: accountConfig.appId,
44
- appSecret: accountConfig.appSecret,
45
- domain: accountConfig.domain ?? "feishu",
46
- connectionMode: "websocket",
47
- webhookPort: 3000,
48
- dmPolicy: "open",
49
- dmAllowlist: [],
50
- groupPolicy: "open",
51
- groupAllowlist: [],
52
- requireMention: true,
53
- mediaMaxMb: 30,
54
- renderMode: "auto",
55
- historyLimit: 10,
56
- });
69
+ const client = createLarkClient(account);
57
70
  try {
58
71
  const response = await client.im.messageReaction.create({
59
72
  path: { message_id: messageId },
@@ -66,7 +79,7 @@ export async function addTypingIndicator(params) {
66
79
  }
67
80
  catch (err) {
68
81
  // Silently fail - typing indicator is not critical
69
- console.log(`[lark] Failed to add typing indicator: ${err}`);
82
+ getLarkRuntime().logger.debug(`[lark] Failed to add typing indicator: ${err}`);
70
83
  return { messageId, reactionId: null };
71
84
  }
72
85
  }
@@ -81,28 +94,10 @@ export async function removeTypingIndicator(params) {
81
94
  const { cfg, state, accountId = "default" } = params;
82
95
  if (!state.reactionId)
83
96
  return;
84
- const channelConfig = getChannelConfig(cfg);
85
- const accountConfig = channelConfig.accounts?.[accountId];
86
- if (!accountConfig?.appId || !accountConfig?.appSecret)
97
+ const account = resolveAccountFromConfig(cfg, accountId);
98
+ if (!account)
87
99
  return;
88
- const client = createLarkClient({
89
- accountId,
90
- enabled: true,
91
- configured: true,
92
- appId: accountConfig.appId,
93
- appSecret: accountConfig.appSecret,
94
- domain: accountConfig.domain ?? "feishu",
95
- connectionMode: "websocket",
96
- webhookPort: 3000,
97
- dmPolicy: "open",
98
- dmAllowlist: [],
99
- groupPolicy: "open",
100
- groupAllowlist: [],
101
- requireMention: true,
102
- mediaMaxMb: 30,
103
- renderMode: "auto",
104
- historyLimit: 10,
105
- });
100
+ const client = createLarkClient(account);
106
101
  try {
107
102
  await client.im.messageReaction.delete({
108
103
  path: {
@@ -113,7 +108,7 @@ export async function removeTypingIndicator(params) {
113
108
  }
114
109
  catch (err) {
115
110
  // Silently fail - cleanup is not critical
116
- console.log(`[lark] Failed to remove typing indicator: ${err}`);
111
+ getLarkRuntime().logger.debug(`[lark] Failed to remove typing indicator: ${err}`);
117
112
  }
118
113
  }
119
114
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"typing.js","sourceRoot":"","sources":["../../src/typing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typing.js","sourceRoot":"","sources":["../../src/typing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xwang152/claw-lark",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "type": "module",
5
5
  "description": "Lark/Feishu channel plugin for OpenClaw with WebSocket and Webhook support",
6
6
  "license": "MIT",