@xwang152/claw-lark 0.1.21 → 0.1.22

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.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
9
9
  export { larkPlugin } from "./src/channel.js";
10
+ export { larkProviderPlugin } from "./src/provider.js";
10
11
  export { createLarkClient, createLarkWSClient } from "./src/client.js";
11
12
  export { monitorLarkProvider, stopMonitor } from "./src/monitor.js";
12
13
  export { startWebhookServer } from "./src/webhook.js";
package/dist/index.js CHANGED
@@ -7,9 +7,11 @@
7
7
  */
8
8
  import { emptyPluginConfigSchema } from "openclaw/plugin-sdk";
9
9
  import { larkPlugin } from "./src/channel.js";
10
+ import { larkProviderPlugin } from "./src/provider.js";
10
11
  import { setLarkRuntime } from "./src/runtime.js";
11
12
  // Re-export for programmatic usage
12
13
  export { larkPlugin } from "./src/channel.js";
14
+ export { larkProviderPlugin } from "./src/provider.js";
13
15
  export { createLarkClient, createLarkWSClient } from "./src/client.js";
14
16
  export { monitorLarkProvider, stopMonitor } from "./src/monitor.js";
15
17
  export { startWebhookServer } from "./src/webhook.js";
@@ -20,11 +22,13 @@ export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, for
20
22
  const plugin = {
21
23
  id: "claw-lark",
22
24
  name: "Lark",
23
- description: "Lark / Feishu channel plugin for OpenClaw",
25
+ description: "Lark / Feishu provider plugin for OpenClaw",
24
26
  configSchema: emptyPluginConfigSchema(),
25
27
  register(api) {
26
28
  setLarkRuntime(api);
29
+ // Register as both channel and provider
27
30
  api.registerChannel({ plugin: larkPlugin });
31
+ api.registerProvider(larkProviderPlugin);
28
32
  },
29
33
  };
30
34
  export default plugin;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAY1B,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,2CAA2C;IACxD,YAAY,EAAE,uBAAuB,EAAE;IACvC,QAAQ,CAAC,GAAsB;QAC7B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,mCAAmC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAY1B,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,uBAAuB,EAAE;IACvC,QAAQ,CAAC,GAAsB;QAC7B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,wCAAwC;QACxC,GAAG,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -105,41 +105,88 @@ export async function routeMessage(event, account) {
105
105
  return;
106
106
  }
107
107
  api.logger.info(`[feishu] Received message from ${parsed.senderId} in ${parsed.chatType} ${parsed.chatId}`);
108
- // Add "typing" indicator (reaction)
108
+ // Route message to OpenClaw's message dispatcher
109
+ // Use the runtime's channel.reply API if available
110
+ const runtime = api.runtime;
111
+ if (runtime?.channel?.reply?.dispatchReplyWithBufferedBlockDispatcher) {
112
+ try {
113
+ // Build the inbound context
114
+ const isDirect = parsed.chatType === "p2p";
115
+ const isGroup = parsed.chatType === "group";
116
+ // Use OpenClaw's routing system
117
+ const resolveAgentRoute = runtime.channel.routing.resolveAgentRoute;
118
+ if (resolveAgentRoute) {
119
+ const route = resolveAgentRoute({
120
+ cfg: api.config,
121
+ channel: "lark",
122
+ accountId: account.accountId,
123
+ peer: {
124
+ kind: isDirect ? "dm" : "group",
125
+ id: parsed.chatId,
126
+ },
127
+ });
128
+ // Build the inbound context
129
+ const ctx = {
130
+ From: parsed.senderId,
131
+ To: `lark:${parsed.chatId}`,
132
+ Body: parsed.text,
133
+ ChatType: isDirect ? "dm" : "group",
134
+ MessageSid: parsed.messageId,
135
+ ReplyToId: parsed.threadId,
136
+ MediaUrls: parsed.media?.map(m => m.id),
137
+ Timestamp: new Date(parsed.timestamp * 1000).toISOString(),
138
+ // Lark-specific fields
139
+ Provider: "lark",
140
+ AccountId: account.accountId,
141
+ MessageId: parsed.messageId,
142
+ ChatId: parsed.chatId,
143
+ SenderId: parsed.senderId,
144
+ ThreadId: parsed.threadId,
145
+ Mentions: parsed.mentions,
146
+ };
147
+ // Dispatch the message
148
+ await runtime.channel.reply.dispatchReplyWithBufferedBlockDispatcher({
149
+ ctx,
150
+ cfg: api.config,
151
+ dispatcherOptions: {
152
+ deliver: async (payload) => {
153
+ // This is where replies would be sent
154
+ // For now, just log
155
+ api.logger.info(`[feishu] Reply payload: ${JSON.stringify(payload)}`);
156
+ },
157
+ onError: (err) => {
158
+ api.logger.error(`[feishu] Reply error: ${err}`);
159
+ },
160
+ },
161
+ replyOptions: {},
162
+ });
163
+ api.logger.info(`[feishu] Message routed to agent ${route.agentId}`);
164
+ }
165
+ }
166
+ catch (error) {
167
+ api.logger.error(`[feishu] Failed to route message: ${error}`);
168
+ }
169
+ }
170
+ else {
171
+ api.logger.warn("[feishu] Runtime dispatcher not available, message not routed");
172
+ }
173
+ // Optional: Add a "received" reaction to indicate message was processed
174
+ // Using valid Lark emoji type: "THUMBSUP" (confirmed to work)
109
175
  const client = createLarkClient(account);
110
176
  try {
111
177
  await client.im.messageReaction.create({
112
178
  path: { message_id: parsed.messageId },
113
179
  data: {
114
180
  reaction_type: {
115
- emoji_type: "COMMUNICATING", // Use a valid Lark emoji type instead of "TYPING"
181
+ emoji_type: "THUMBSUP",
116
182
  },
117
183
  },
118
184
  });
119
185
  }
120
186
  catch (e) {
121
- // Ignore reaction errors
122
- }
123
- // Use the top-level handleMessage or fallback to inbound.handleMessage
124
- const handleMessage = api.handleMessage || api.inbound?.handleMessage;
125
- if (typeof handleMessage !== "function") {
126
- api.logger.error("[feishu] No handleMessage function found in OpenClaw API");
127
- return;
187
+ // Ignore reaction errors (e.g., message already deleted)
188
+ api.logger.debug(`[feishu] Reaction add failed: ${e}`);
128
189
  }
129
- await handleMessage({
130
- channel: "lark",
131
- accountId: account.accountId,
132
- messageId: parsed.messageId,
133
- chatId: parsed.chatId,
134
- chatType: parsed.chatType === "p2p" ? "direct" : "group",
135
- senderId: parsed.senderId,
136
- text: parsed.text,
137
- threadId: parsed.threadId,
138
- timestamp: parsed.timestamp,
139
- mentions: parsed.mentions,
140
- media: parsed.media,
141
- raw: event,
142
- });
143
190
  }
144
191
  /**
145
192
  * Start WebSocket connection and listen for messages.
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Lark Provider Plugin
3
+ *
4
+ * Implements the ProviderPlugin interface for Lark/Feishu integration.
5
+ * Provides message monitoring, processing, and sending capabilities.
6
+ */
7
+ import type { OpenClawConfig } from "openclaw/plugin-sdk";
8
+ import type { ResolvedLarkAccount, SendResult } from "./types.js";
9
+ /**
10
+ * List available users
11
+ */
12
+ declare function listPeers(account: ResolvedLarkAccount): Promise<Array<{
13
+ id: string;
14
+ name: string;
15
+ }>>;
16
+ /**
17
+ * List available chat groups
18
+ */
19
+ declare function listGroups(account: ResolvedLarkAccount): Promise<Array<{
20
+ id: string;
21
+ name: string;
22
+ }>>;
23
+ /**
24
+ * Lark/Feishu provider plugin implementation
25
+ */
26
+ export declare const larkProviderPlugin: {
27
+ id: string;
28
+ meta: {
29
+ label: string;
30
+ selectionLabel: string;
31
+ docsPath: string;
32
+ blurb: string;
33
+ order: number;
34
+ };
35
+ capabilities: {
36
+ chatTypes: string[];
37
+ reactions: boolean;
38
+ threads: boolean;
39
+ media: boolean;
40
+ nativeCommands: boolean;
41
+ blockStreaming: boolean;
42
+ };
43
+ config: {
44
+ listAccountIds(cfg: OpenClawConfig): string[];
45
+ resolveAccount(cfg: OpenClawConfig, accountId?: string): ResolvedLarkAccount | null;
46
+ isConfigured(account: ResolvedLarkAccount): boolean;
47
+ setAccountEnabled(cfg: OpenClawConfig, accountId: string, enabled: boolean): OpenClawConfig;
48
+ };
49
+ outbound: {
50
+ deliveryMode: string;
51
+ textChunkLimit: number;
52
+ chunkerMode: string;
53
+ sendText(args: {
54
+ account: ResolvedLarkAccount;
55
+ recipientId: string;
56
+ text: string;
57
+ threadId?: string;
58
+ }): Promise<SendResult>;
59
+ sendMedia(args: {
60
+ account: ResolvedLarkAccount;
61
+ recipientId: string;
62
+ mediaId: string;
63
+ mediaType: "image" | "file";
64
+ fileName?: string;
65
+ threadId?: string;
66
+ }): Promise<SendResult>;
67
+ downloadMedia(args: {
68
+ account: ResolvedLarkAccount;
69
+ mediaId: string;
70
+ mediaType: "image" | "file";
71
+ messageId?: string;
72
+ }): Promise<Buffer | null>;
73
+ addReaction(args: {
74
+ account: ResolvedLarkAccount;
75
+ messageId: string;
76
+ emoji: string;
77
+ }): Promise<void>;
78
+ removeReaction(args: {
79
+ account: ResolvedLarkAccount;
80
+ messageId: string;
81
+ emoji: string;
82
+ reactionId?: string;
83
+ }): Promise<void>;
84
+ listReactions(args: {
85
+ account: ResolvedLarkAccount;
86
+ messageId: string;
87
+ }): Promise<Array<{
88
+ emoji: string;
89
+ reactionId: string;
90
+ }>>;
91
+ };
92
+ directory: {
93
+ listPeers: typeof listPeers;
94
+ listGroups: typeof listGroups;
95
+ };
96
+ gateway: {
97
+ startAccount: (ctx: {
98
+ account: ResolvedLarkAccount;
99
+ cfg: OpenClawConfig;
100
+ runtime: any;
101
+ abortSignal?: AbortSignal;
102
+ log?: any;
103
+ }) => Promise<void>;
104
+ stopAccount: () => Promise<void>;
105
+ };
106
+ };
107
+ export {};
@@ -0,0 +1,350 @@
1
+ /**
2
+ * Lark Provider Plugin
3
+ *
4
+ * Implements the ProviderPlugin interface for Lark/Feishu integration.
5
+ * Provides message monitoring, processing, and sending capabilities.
6
+ */
7
+ import { createLarkClient } from "./client.js";
8
+ import { monitorLarkProvider, stopMonitor } from "./monitor.js";
9
+ import { listLarkDirectoryPeers, listLarkDirectoryGroups } from "./directory.js";
10
+ import { addReactionLark, removeReactionLark, listReactionsLark } from "./reactions.js";
11
+ import { downloadImageLark, downloadFileLark } from "./media.js";
12
+ // Default values for account configuration
13
+ const DEFAULTS = {
14
+ domain: "feishu",
15
+ connectionMode: "websocket",
16
+ webhookPort: 3000,
17
+ dmPolicy: "pairing",
18
+ groupPolicy: "open",
19
+ requireMention: true,
20
+ mediaMaxMb: 30,
21
+ renderMode: "auto",
22
+ historyLimit: 10,
23
+ };
24
+ /**
25
+ * Extract Feishu channel config from OpenClaw config
26
+ */
27
+ function getChannelConfig(cfg) {
28
+ return cfg.channels?.lark ?? {};
29
+ }
30
+ /**
31
+ * Get account config from channel config, with empty object fallback
32
+ */
33
+ function getAccountConfig(channelConfig, accountId) {
34
+ return channelConfig.accounts?.[accountId] ?? {};
35
+ }
36
+ /**
37
+ * Check if default account has env var credentials configured
38
+ */
39
+ function hasEnvCredentials() {
40
+ return Boolean(process.env.LARK_APP_ID && process.env.LARK_APP_SECRET);
41
+ }
42
+ /**
43
+ * Resolve account configuration with defaults and env fallbacks.
44
+ * For "default" account, environment variables take precedence.
45
+ */
46
+ function resolveAccount(cfg, accountId) {
47
+ const channelConfig = getChannelConfig(cfg);
48
+ const accountConfig = getAccountConfig(channelConfig, accountId);
49
+ // Resolve credentials - env vars as fallback for default account
50
+ const isDefault = accountId === "default";
51
+ const appId = accountConfig.appId ?? (isDefault ? process.env.LARK_APP_ID : undefined);
52
+ const appSecret = accountConfig.appSecret ?? (isDefault ? process.env.LARK_APP_SECRET : undefined);
53
+ const encryptKey = accountConfig.encryptKey ?? (isDefault ? process.env.LARK_ENCRYPT_KEY : undefined);
54
+ const verificationToken = accountConfig.verificationToken ?? (isDefault ? process.env.LARK_VERIFICATION_TOKEN : undefined);
55
+ const configured = Boolean(appId?.trim() && appSecret?.trim());
56
+ return {
57
+ accountId,
58
+ enabled: accountConfig.enabled ?? true,
59
+ configured,
60
+ appId: appId ?? "",
61
+ appSecret: appSecret ?? "",
62
+ encryptKey,
63
+ verificationToken,
64
+ domain: accountConfig.domain ?? DEFAULTS.domain,
65
+ connectionMode: accountConfig.connectionMode ?? DEFAULTS.connectionMode,
66
+ webhookPort: accountConfig.webhookPort ?? DEFAULTS.webhookPort,
67
+ dmPolicy: accountConfig.dmPolicy ?? DEFAULTS.dmPolicy,
68
+ dmAllowlist: accountConfig.dmAllowlist ?? [],
69
+ groupPolicy: accountConfig.groupPolicy ?? DEFAULTS.groupPolicy,
70
+ requireMention: accountConfig.requireMention ?? DEFAULTS.requireMention,
71
+ groupAllowlist: accountConfig.groupAllowlist ?? [],
72
+ mediaMaxMb: accountConfig.mediaMaxMb ?? DEFAULTS.mediaMaxMb,
73
+ renderMode: accountConfig.renderMode ?? DEFAULTS.renderMode,
74
+ historyLimit: accountConfig.historyLimit ?? DEFAULTS.historyLimit,
75
+ };
76
+ }
77
+ /**
78
+ * Determine receive_id_type from recipient ID format.
79
+ * IDs starting with "oc_" are chat IDs,
80
+ * IDs starting with "ou_" are open IDs (user),
81
+ * IDs starting with "on_" are union IDs (user).
82
+ */
83
+ function inferReceiveIdType(recipientId) {
84
+ if (recipientId.startsWith("oc_")) {
85
+ return "chat_id";
86
+ }
87
+ if (recipientId.startsWith("ou_")) {
88
+ return "open_id";
89
+ }
90
+ if (recipientId.startsWith("on_")) {
91
+ return "union_id";
92
+ }
93
+ // Default to open_id for other formats
94
+ return "open_id";
95
+ }
96
+ /**
97
+ * Send a message via Lark API, supporting text and interactive cards.
98
+ */
99
+ async function sendTextMessage(account, recipientId, text, threadId) {
100
+ try {
101
+ const client = createLarkClient(account);
102
+ const renderMode = account.renderMode;
103
+ // Determine if we should use a card
104
+ const useCard = renderMode === "card" ||
105
+ (renderMode === "auto" && (text.includes("```") || text.includes("| --- |") || text.includes("\n- ")));
106
+ let msgType;
107
+ let content;
108
+ if (useCard) {
109
+ msgType = "interactive";
110
+ // Simple Markdown card
111
+ content = JSON.stringify({
112
+ config: { wide_screen_mode: true },
113
+ header: {
114
+ template: "orange",
115
+ title: {
116
+ content: "OpenClaw Message",
117
+ tag: "plain_text",
118
+ },
119
+ },
120
+ elements: [
121
+ {
122
+ tag: "div",
123
+ text: {
124
+ tag: "lark_md",
125
+ content: text,
126
+ },
127
+ },
128
+ ],
129
+ });
130
+ }
131
+ else {
132
+ msgType = "text";
133
+ content = JSON.stringify({ text });
134
+ }
135
+ const response = await client.im.message.create({
136
+ params: {
137
+ receive_id_type: inferReceiveIdType(recipientId),
138
+ },
139
+ data: {
140
+ receive_id: recipientId,
141
+ msg_type: msgType,
142
+ content,
143
+ ...(threadId && { root_id: threadId }),
144
+ },
145
+ });
146
+ if (response.code === 0 && response.data) {
147
+ return { ok: true, messageId: response.data.message_id };
148
+ }
149
+ return { ok: false, error: response.msg ?? "Unknown error" };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ ok: false,
154
+ error: error instanceof Error ? error.message : "Unknown error",
155
+ };
156
+ }
157
+ }
158
+ /**
159
+ * List available users
160
+ */
161
+ async function listPeers(account) {
162
+ const peers = await listLarkDirectoryPeers({ account });
163
+ return peers.map(p => ({
164
+ id: p.id,
165
+ name: p.name ?? "",
166
+ }));
167
+ }
168
+ /**
169
+ * List available chat groups
170
+ */
171
+ async function listGroups(account) {
172
+ const groups = await listLarkDirectoryGroups({ account });
173
+ return groups.map(g => ({
174
+ id: g.id,
175
+ name: g.name ?? "",
176
+ }));
177
+ }
178
+ /**
179
+ * Lark/Feishu provider plugin implementation
180
+ */
181
+ export const larkProviderPlugin = {
182
+ id: "lark",
183
+ meta: {
184
+ label: "Lark",
185
+ selectionLabel: "Feishu / Lark",
186
+ docsPath: "/providers/feishu",
187
+ blurb: "Chat with your OpenClaw bot on Feishu or Lark",
188
+ order: 75,
189
+ },
190
+ capabilities: {
191
+ chatTypes: ["direct", "group"],
192
+ reactions: true,
193
+ threads: true,
194
+ media: true,
195
+ nativeCommands: false,
196
+ blockStreaming: false,
197
+ },
198
+ config: {
199
+ listAccountIds(cfg) {
200
+ const channelConfig = getChannelConfig(cfg);
201
+ const accountIds = Object.keys(channelConfig.accounts ?? {});
202
+ // Include default account if env vars are configured
203
+ if (!accountIds.includes("default") && hasEnvCredentials()) {
204
+ accountIds.push("default");
205
+ }
206
+ return accountIds;
207
+ },
208
+ resolveAccount(cfg, accountId) {
209
+ return resolveAccount(cfg, accountId ?? "default");
210
+ },
211
+ isConfigured(account) {
212
+ return account.configured;
213
+ },
214
+ setAccountEnabled(cfg, accountId, enabled) {
215
+ const channelConfig = getChannelConfig(cfg);
216
+ return {
217
+ ...cfg,
218
+ channels: {
219
+ ...cfg.channels,
220
+ lark: {
221
+ ...channelConfig,
222
+ accounts: {
223
+ ...channelConfig.accounts,
224
+ [accountId]: {
225
+ ...channelConfig.accounts?.[accountId],
226
+ enabled,
227
+ },
228
+ },
229
+ },
230
+ },
231
+ };
232
+ },
233
+ },
234
+ outbound: {
235
+ deliveryMode: "direct",
236
+ textChunkLimit: 4000,
237
+ chunkerMode: "markdown",
238
+ async sendText(args) {
239
+ const { account, recipientId, text, threadId } = args;
240
+ return sendTextMessage(account, recipientId, text, threadId);
241
+ },
242
+ async sendMedia(args) {
243
+ const { account, recipientId, mediaId, mediaType, fileName, threadId } = args;
244
+ try {
245
+ const client = createLarkClient(account);
246
+ const response = await client.im.message.create({
247
+ params: {
248
+ receive_id_type: inferReceiveIdType(recipientId),
249
+ },
250
+ data: {
251
+ receive_id: recipientId,
252
+ msg_type: mediaType === "image" ? "image" : "file",
253
+ content: JSON.stringify(mediaType === "image" ? { image_key: mediaId } : { file_key: mediaId, file_name: fileName }),
254
+ ...(threadId && { root_id: threadId }),
255
+ },
256
+ });
257
+ if (response.code === 0 && response.data) {
258
+ return { ok: true, messageId: response.data.message_id };
259
+ }
260
+ return { ok: false, error: response.msg ?? "Unknown error" };
261
+ }
262
+ catch (error) {
263
+ return {
264
+ ok: false,
265
+ error: error instanceof Error ? error.message : "Unknown error",
266
+ };
267
+ }
268
+ },
269
+ async downloadMedia(args) {
270
+ const { account, mediaId, messageId, mediaType } = args;
271
+ try {
272
+ if (mediaType === "image") {
273
+ const result = await downloadImageLark({ account, imageKey: mediaId });
274
+ return result.buffer;
275
+ }
276
+ else {
277
+ // For files, we need messageId
278
+ if (!messageId)
279
+ return null;
280
+ const result = await downloadFileLark({
281
+ account,
282
+ messageId,
283
+ fileKey: mediaId,
284
+ type: mediaType
285
+ });
286
+ return result.buffer;
287
+ }
288
+ }
289
+ catch (error) {
290
+ console.error("[lark] Download media failed:", error);
291
+ return null;
292
+ }
293
+ },
294
+ async addReaction(args) {
295
+ await addReactionLark({
296
+ account: args.account,
297
+ messageId: args.messageId,
298
+ emojiType: args.emoji,
299
+ });
300
+ },
301
+ async removeReaction(args) {
302
+ // If reactionId is not provided, we need to find it first
303
+ let reactionId = args.reactionId;
304
+ if (!reactionId) {
305
+ const reactions = await listReactionsLark({
306
+ account: args.account,
307
+ messageId: args.messageId,
308
+ emojiType: args.emoji,
309
+ });
310
+ // Find reaction by this app (bot)
311
+ // We need to filter by operator_id being the app itself
312
+ // For now, just take the first match
313
+ const match = reactions.find(r => r.emojiType === args.emoji);
314
+ reactionId = match?.reactionId;
315
+ }
316
+ if (reactionId) {
317
+ await removeReactionLark({
318
+ account: args.account,
319
+ messageId: args.messageId,
320
+ reactionId,
321
+ });
322
+ }
323
+ },
324
+ async listReactions(args) {
325
+ const reactions = await listReactionsLark({
326
+ account: args.account,
327
+ messageId: args.messageId,
328
+ });
329
+ return reactions.map(r => ({
330
+ emoji: r.emojiType,
331
+ reactionId: r.reactionId,
332
+ }));
333
+ },
334
+ },
335
+ directory: {
336
+ listPeers,
337
+ listGroups,
338
+ },
339
+ gateway: {
340
+ startAccount: async (ctx) => {
341
+ const { account, cfg, runtime, abortSignal, log } = ctx;
342
+ log?.info?.(`[${account.accountId}] starting Lark provider`);
343
+ return monitorLarkProvider({ account, abortSignal });
344
+ },
345
+ stopAccount: async () => {
346
+ stopMonitor();
347
+ },
348
+ },
349
+ };
350
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.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.21",
3
+ "version": "0.1.22",
4
4
  "type": "module",
5
5
  "description": "Lark/Feishu channel plugin for OpenClaw with WebSocket and Webhook support",
6
6
  "license": "MIT",