@xwang152/claw-lark 0.1.23 → 0.1.25
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 +8 -3
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/src/media.d.ts +63 -0
- package/dist/src/media.js +259 -0
- package/dist/src/media.js.map +1 -1
- package/dist/src/mention.d.ts +17 -0
- package/dist/src/mention.js +22 -0
- package/dist/src/mention.js.map +1 -1
- package/dist/src/message-context.d.ts +65 -0
- package/dist/src/message-context.js +105 -0
- package/dist/src/message-context.js.map +1 -0
- package/dist/src/policy.d.ts +84 -0
- package/dist/src/policy.js +137 -0
- package/dist/src/policy.js.map +1 -0
- package/dist/src/sender-name.d.ts +54 -0
- package/dist/src/sender-name.js +108 -0
- package/dist/src/sender-name.js.map +1 -0
- package/dist/src/types.d.ts +15 -0
- package/dist/src/typing.d.ts +76 -0
- package/dist/src/typing.js +165 -0
- package/dist/src/typing.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,10 +12,15 @@ export { createLarkClient, createLarkWSClient } from "./src/client.js";
|
|
|
12
12
|
export { monitorLarkProvider, stopMonitor } from "./src/monitor.js";
|
|
13
13
|
export { startWebhookServer } from "./src/webhook.js";
|
|
14
14
|
export { listLarkDirectoryPeers, listLarkDirectoryGroups } from "./src/directory.js";
|
|
15
|
-
export { downloadImageLark, downloadFileLark } from "./src/media.js";
|
|
15
|
+
export { downloadImageLark, downloadFileLark, uploadImageLark, uploadFileLark, sendImageLark, sendFileLark, sendMediaLark, detectFileType, } from "./src/media.js";
|
|
16
16
|
export { addReactionLark, removeReactionLark, listReactionsLark } from "./src/reactions.js";
|
|
17
|
-
export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, formatMentionForText, formatMentionForCard, formatMentionAllForText, formatMentionAllForCard, } from "./src/mention.js";
|
|
18
|
-
export
|
|
17
|
+
export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, formatMentionForText, formatMentionForCard, formatMentionAllForText, formatMentionAllForCard, buildMentionedMessage, buildMentionedCardContent, } from "./src/mention.js";
|
|
18
|
+
export { addTypingIndicator, removeTypingIndicator, createTypingController, } from "./src/typing.js";
|
|
19
|
+
export type { TypingIndicatorState } from "./src/typing.js";
|
|
20
|
+
export { resolveLarkSenderName, clearSenderNameCache, getSenderNameCacheStats, prefetchLarkSenderNames, } from "./src/sender-name.js";
|
|
21
|
+
export { getLarkMessage, formatQuotedContext, isReplyMessage, buildMessageContextWithQuote, } from "./src/message-context.js";
|
|
22
|
+
export type { LarkDomain, LarkConnectionMode, DmPolicy, GroupPolicy, RenderMode, LarkAccountConfig, ResolvedLarkAccount, LarkChannelConfig, LarkGroupConfig, LarkMessageEvent, LarkMention, ParsedMessage, SendResult, } from "./src/types.js";
|
|
23
|
+
export { resolveLarkAllowlistMatch, resolveLarkGroupConfig, resolveLarkGroupToolPolicy, isLarkGroupAllowed, resolveLarkGroupRequireMention, resolveLarkReplyToMode, } from "./src/policy.js";
|
|
19
24
|
declare const plugin: {
|
|
20
25
|
id: string;
|
|
21
26
|
name: string;
|
package/dist/index.js
CHANGED
|
@@ -16,9 +16,13 @@ export { createLarkClient, createLarkWSClient } from "./src/client.js";
|
|
|
16
16
|
export { monitorLarkProvider, stopMonitor } from "./src/monitor.js";
|
|
17
17
|
export { startWebhookServer } from "./src/webhook.js";
|
|
18
18
|
export { listLarkDirectoryPeers, listLarkDirectoryGroups } from "./src/directory.js";
|
|
19
|
-
export { downloadImageLark, downloadFileLark } from "./src/media.js";
|
|
19
|
+
export { downloadImageLark, downloadFileLark, uploadImageLark, uploadFileLark, sendImageLark, sendFileLark, sendMediaLark, detectFileType, } from "./src/media.js";
|
|
20
20
|
export { addReactionLark, removeReactionLark, listReactionsLark } from "./src/reactions.js";
|
|
21
|
-
export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, formatMentionForText, formatMentionForCard, formatMentionAllForText, formatMentionAllForCard, } from "./src/mention.js";
|
|
21
|
+
export { extractMentionTargets, extractMessageBody, isMentionForwardRequest, formatMentionForText, formatMentionForCard, formatMentionAllForText, formatMentionAllForCard, buildMentionedMessage, buildMentionedCardContent, } from "./src/mention.js";
|
|
22
|
+
export { addTypingIndicator, removeTypingIndicator, createTypingController, } from "./src/typing.js";
|
|
23
|
+
export { resolveLarkSenderName, clearSenderNameCache, getSenderNameCacheStats, prefetchLarkSenderNames, } from "./src/sender-name.js";
|
|
24
|
+
export { getLarkMessage, formatQuotedContext, isReplyMessage, buildMessageContextWithQuote, } from "./src/message-context.js";
|
|
25
|
+
export { resolveLarkAllowlistMatch, resolveLarkGroupConfig, resolveLarkGroupToolPolicy, isLarkGroupAllowed, resolveLarkGroupRequireMention, resolveLarkReplyToMode, } from "./src/policy.js";
|
|
22
26
|
const plugin = {
|
|
23
27
|
id: "claw-lark",
|
|
24
28
|
name: "Lark",
|
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,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,
|
|
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,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,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,EACvB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAgBlC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,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"}
|
package/dist/src/media.d.ts
CHANGED
|
@@ -19,3 +19,66 @@ export declare function downloadFileLark(params: {
|
|
|
19
19
|
fileKey: string;
|
|
20
20
|
type: "file" | "image" | "media";
|
|
21
21
|
}): Promise<DownloadImageResult>;
|
|
22
|
+
export type UploadImageResult = {
|
|
23
|
+
imageKey: string;
|
|
24
|
+
};
|
|
25
|
+
export type UploadFileResult = {
|
|
26
|
+
fileKey: string;
|
|
27
|
+
};
|
|
28
|
+
export type SendMediaResult = {
|
|
29
|
+
messageId: string;
|
|
30
|
+
chatId: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Upload an image to Lark and get an image_key for sending.
|
|
34
|
+
* Supports: JPEG, PNG, WEBP, GIF, TIFF, BMP, ICO
|
|
35
|
+
*/
|
|
36
|
+
export declare function uploadImageLark(params: {
|
|
37
|
+
account: ResolvedLarkAccount;
|
|
38
|
+
image: Buffer | string;
|
|
39
|
+
imageType?: "message" | "avatar";
|
|
40
|
+
}): Promise<UploadImageResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Upload a file to Lark and get a file_key for sending.
|
|
43
|
+
* Max file size: 30MB
|
|
44
|
+
*/
|
|
45
|
+
export declare function uploadFileLark(params: {
|
|
46
|
+
account: ResolvedLarkAccount;
|
|
47
|
+
file: Buffer | string;
|
|
48
|
+
fileName: string;
|
|
49
|
+
fileType: "opus" | "mp4" | "pdf" | "doc" | "xls" | "ppt" | "stream";
|
|
50
|
+
duration?: number;
|
|
51
|
+
}): Promise<UploadFileResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Send an image message using an image_key
|
|
54
|
+
*/
|
|
55
|
+
export declare function sendImageLark(params: {
|
|
56
|
+
account: ResolvedLarkAccount;
|
|
57
|
+
to: string;
|
|
58
|
+
imageKey: string;
|
|
59
|
+
replyToMessageId?: string;
|
|
60
|
+
}): Promise<SendMediaResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Send a file message using a file_key
|
|
63
|
+
*/
|
|
64
|
+
export declare function sendFileLark(params: {
|
|
65
|
+
account: ResolvedLarkAccount;
|
|
66
|
+
to: string;
|
|
67
|
+
fileKey: string;
|
|
68
|
+
replyToMessageId?: string;
|
|
69
|
+
}): Promise<SendMediaResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Helper to detect file type from extension
|
|
72
|
+
*/
|
|
73
|
+
export declare function detectFileType(fileName: string): "opus" | "mp4" | "pdf" | "doc" | "xls" | "ppt" | "stream";
|
|
74
|
+
/**
|
|
75
|
+
* Upload and send media (image or file) from URL, local path, or buffer
|
|
76
|
+
*/
|
|
77
|
+
export declare function sendMediaLark(params: {
|
|
78
|
+
account: ResolvedLarkAccount;
|
|
79
|
+
to: string;
|
|
80
|
+
mediaUrl?: string;
|
|
81
|
+
mediaBuffer?: Buffer;
|
|
82
|
+
fileName?: string;
|
|
83
|
+
replyToMessageId?: string;
|
|
84
|
+
}): Promise<SendMediaResult>;
|
package/dist/src/media.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createLarkClient } from "./client.js";
|
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import os from "os";
|
|
5
|
+
import { Readable } from "stream";
|
|
5
6
|
/**
|
|
6
7
|
* Download an image from Lark using image_key.
|
|
7
8
|
*/
|
|
@@ -97,4 +98,262 @@ async function processResponseData(response, responseAny, tempPrefix) {
|
|
|
97
98
|
}
|
|
98
99
|
return buffer;
|
|
99
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Upload an image to Lark and get an image_key for sending.
|
|
103
|
+
* Supports: JPEG, PNG, WEBP, GIF, TIFF, BMP, ICO
|
|
104
|
+
*/
|
|
105
|
+
export async function uploadImageLark(params) {
|
|
106
|
+
const { account, image, imageType = "message" } = params;
|
|
107
|
+
const client = createLarkClient(account);
|
|
108
|
+
// SDK expects a Readable stream, not a Buffer
|
|
109
|
+
// Use type assertion since SDK actually accepts any Readable at runtime
|
|
110
|
+
const imageStream = typeof image === "string" ? fs.createReadStream(image) : Readable.from(image);
|
|
111
|
+
const response = await client.im.image.create({
|
|
112
|
+
data: {
|
|
113
|
+
image_type: imageType,
|
|
114
|
+
image: imageStream,
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
// SDK v1.30+ returns data directly without code wrapper on success
|
|
118
|
+
// On error, it throws or returns { code, msg }
|
|
119
|
+
const responseAny = response;
|
|
120
|
+
if (responseAny.code !== undefined && responseAny.code !== 0) {
|
|
121
|
+
throw new Error(`Lark image upload failed: ${responseAny.msg || `code ${responseAny.code}`}`);
|
|
122
|
+
}
|
|
123
|
+
const imageKey = responseAny.image_key ?? responseAny.data?.image_key;
|
|
124
|
+
if (!imageKey) {
|
|
125
|
+
throw new Error("Lark image upload failed: no image_key returned");
|
|
126
|
+
}
|
|
127
|
+
return { imageKey };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Upload a file to Lark and get a file_key for sending.
|
|
131
|
+
* Max file size: 30MB
|
|
132
|
+
*/
|
|
133
|
+
export async function uploadFileLark(params) {
|
|
134
|
+
const { account, file, fileName, fileType, duration } = params;
|
|
135
|
+
const client = createLarkClient(account);
|
|
136
|
+
// SDK expects a Readable stream, not a Buffer
|
|
137
|
+
// Use type assertion since SDK actually accepts any Readable at runtime
|
|
138
|
+
const fileStream = typeof file === "string" ? fs.createReadStream(file) : Readable.from(file);
|
|
139
|
+
const response = await client.im.file.create({
|
|
140
|
+
data: {
|
|
141
|
+
file_type: fileType,
|
|
142
|
+
file_name: fileName,
|
|
143
|
+
file: fileStream,
|
|
144
|
+
...(duration !== undefined && { duration }),
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
// SDK v1.30+ returns data directly without code wrapper on success
|
|
148
|
+
const responseAny = response;
|
|
149
|
+
if (responseAny.code !== undefined && responseAny.code !== 0) {
|
|
150
|
+
throw new Error(`Lark file upload failed: ${responseAny.msg || `code ${responseAny.code}`}`);
|
|
151
|
+
}
|
|
152
|
+
const fileKey = responseAny.file_key ?? responseAny.data?.file_key;
|
|
153
|
+
if (!fileKey) {
|
|
154
|
+
throw new Error("Lark file upload failed: no file_key returned");
|
|
155
|
+
}
|
|
156
|
+
return { fileKey };
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Send an image message using an image_key
|
|
160
|
+
*/
|
|
161
|
+
export async function sendImageLark(params) {
|
|
162
|
+
const { account, to, imageKey, replyToMessageId } = params;
|
|
163
|
+
const client = createLarkClient(account);
|
|
164
|
+
const receiveId = to;
|
|
165
|
+
const content = JSON.stringify({ image_key: imageKey });
|
|
166
|
+
// Determine receive_id_type from recipient ID format
|
|
167
|
+
const inferReceiveIdType = (recipientId) => {
|
|
168
|
+
if (recipientId.startsWith("oc_"))
|
|
169
|
+
return "chat_id";
|
|
170
|
+
if (recipientId.startsWith("ou_"))
|
|
171
|
+
return "open_id";
|
|
172
|
+
if (recipientId.startsWith("on_"))
|
|
173
|
+
return "union_id";
|
|
174
|
+
return "open_id";
|
|
175
|
+
};
|
|
176
|
+
const receiveIdType = inferReceiveIdType(receiveId);
|
|
177
|
+
if (replyToMessageId) {
|
|
178
|
+
const response = await client.im.message.reply({
|
|
179
|
+
path: { message_id: replyToMessageId },
|
|
180
|
+
data: {
|
|
181
|
+
content,
|
|
182
|
+
msg_type: "image",
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
if (response.code !== 0) {
|
|
186
|
+
throw new Error(`Lark image reply failed: ${response.msg || `code ${response.code}`}`);
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
messageId: response.data?.message_id ?? "unknown",
|
|
190
|
+
chatId: receiveId,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const response = await client.im.message.create({
|
|
194
|
+
params: { receive_id_type: receiveIdType },
|
|
195
|
+
data: {
|
|
196
|
+
receive_id: receiveId,
|
|
197
|
+
content,
|
|
198
|
+
msg_type: "image",
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
if (response.code !== 0) {
|
|
202
|
+
throw new Error(`Lark image send failed: ${response.msg || `code ${response.code}`}`);
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
messageId: response.data?.message_id ?? "unknown",
|
|
206
|
+
chatId: receiveId,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Send a file message using a file_key
|
|
211
|
+
*/
|
|
212
|
+
export async function sendFileLark(params) {
|
|
213
|
+
const { account, to, fileKey, replyToMessageId } = params;
|
|
214
|
+
const client = createLarkClient(account);
|
|
215
|
+
const receiveId = to;
|
|
216
|
+
const content = JSON.stringify({ file_key: fileKey });
|
|
217
|
+
// Determine receive_id_type from recipient ID format
|
|
218
|
+
const inferReceiveIdType = (recipientId) => {
|
|
219
|
+
if (recipientId.startsWith("oc_"))
|
|
220
|
+
return "chat_id";
|
|
221
|
+
if (recipientId.startsWith("ou_"))
|
|
222
|
+
return "open_id";
|
|
223
|
+
if (recipientId.startsWith("on_"))
|
|
224
|
+
return "union_id";
|
|
225
|
+
return "open_id";
|
|
226
|
+
};
|
|
227
|
+
const receiveIdType = inferReceiveIdType(receiveId);
|
|
228
|
+
if (replyToMessageId) {
|
|
229
|
+
const response = await client.im.message.reply({
|
|
230
|
+
path: { message_id: replyToMessageId },
|
|
231
|
+
data: {
|
|
232
|
+
content,
|
|
233
|
+
msg_type: "file",
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
if (response.code !== 0) {
|
|
237
|
+
throw new Error(`Lark file reply failed: ${response.msg || `code ${response.code}`}`);
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
messageId: response.data?.message_id ?? "unknown",
|
|
241
|
+
chatId: receiveId,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
const response = await client.im.message.create({
|
|
245
|
+
params: { receive_id_type: receiveIdType },
|
|
246
|
+
data: {
|
|
247
|
+
receive_id: receiveId,
|
|
248
|
+
content,
|
|
249
|
+
msg_type: "file",
|
|
250
|
+
},
|
|
251
|
+
});
|
|
252
|
+
if (response.code !== 0) {
|
|
253
|
+
throw new Error(`Lark file send failed: ${response.msg || `code ${response.code}`}`);
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
messageId: response.data?.message_id ?? "unknown",
|
|
257
|
+
chatId: receiveId,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Helper to detect file type from extension
|
|
262
|
+
*/
|
|
263
|
+
export function detectFileType(fileName) {
|
|
264
|
+
const ext = path.extname(fileName).toLowerCase();
|
|
265
|
+
switch (ext) {
|
|
266
|
+
case ".opus":
|
|
267
|
+
case ".ogg":
|
|
268
|
+
return "opus";
|
|
269
|
+
case ".mp4":
|
|
270
|
+
case ".mov":
|
|
271
|
+
case ".avi":
|
|
272
|
+
return "mp4";
|
|
273
|
+
case ".pdf":
|
|
274
|
+
return "pdf";
|
|
275
|
+
case ".doc":
|
|
276
|
+
case ".docx":
|
|
277
|
+
return "doc";
|
|
278
|
+
case ".xls":
|
|
279
|
+
case ".xlsx":
|
|
280
|
+
return "xls";
|
|
281
|
+
case ".ppt":
|
|
282
|
+
case ".pptx":
|
|
283
|
+
return "ppt";
|
|
284
|
+
default:
|
|
285
|
+
return "stream";
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Check if a string is a local file path (not a URL)
|
|
290
|
+
*/
|
|
291
|
+
function isLocalPath(urlOrPath) {
|
|
292
|
+
// Starts with / or ~ or drive letter (Windows)
|
|
293
|
+
if (urlOrPath.startsWith("/") || urlOrPath.startsWith("~") || /^[a-zA-Z]:/.test(urlOrPath)) {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
// Try to parse as URL - if it fails or has no protocol, it's likely a local path
|
|
297
|
+
try {
|
|
298
|
+
const url = new URL(urlOrPath);
|
|
299
|
+
return url.protocol === "file:";
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
return true; // Not a valid URL, treat as local path
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Upload and send media (image or file) from URL, local path, or buffer
|
|
307
|
+
*/
|
|
308
|
+
export async function sendMediaLark(params) {
|
|
309
|
+
const { account, to, mediaUrl, mediaBuffer, fileName, replyToMessageId } = params;
|
|
310
|
+
let buffer;
|
|
311
|
+
let name;
|
|
312
|
+
if (mediaBuffer) {
|
|
313
|
+
buffer = mediaBuffer;
|
|
314
|
+
name = fileName ?? "file";
|
|
315
|
+
}
|
|
316
|
+
else if (mediaUrl) {
|
|
317
|
+
if (isLocalPath(mediaUrl)) {
|
|
318
|
+
// Local file path - read directly
|
|
319
|
+
const filePath = mediaUrl.startsWith("~")
|
|
320
|
+
? mediaUrl.replace("~", process.env.HOME ?? "")
|
|
321
|
+
: mediaUrl.replace("file://", "");
|
|
322
|
+
if (!fs.existsSync(filePath)) {
|
|
323
|
+
throw new Error(`Local file not found: ${filePath}`);
|
|
324
|
+
}
|
|
325
|
+
buffer = fs.readFileSync(filePath);
|
|
326
|
+
name = fileName ?? path.basename(filePath);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
// Remote URL - fetch
|
|
330
|
+
const response = await fetch(mediaUrl);
|
|
331
|
+
if (!response.ok) {
|
|
332
|
+
throw new Error(`Failed to fetch media from URL: ${response.status}`);
|
|
333
|
+
}
|
|
334
|
+
buffer = Buffer.from(await response.arrayBuffer());
|
|
335
|
+
name = fileName ?? (path.basename(new URL(mediaUrl).pathname) || "file");
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
throw new Error("Either mediaUrl or mediaBuffer must be provided");
|
|
340
|
+
}
|
|
341
|
+
// Determine if it's an image based on extension
|
|
342
|
+
const ext = path.extname(name).toLowerCase();
|
|
343
|
+
const isImage = [".jpg", ".jpeg", ".png", ".gif", ".webp", ".bmp", ".ico", ".tiff"].includes(ext);
|
|
344
|
+
if (isImage) {
|
|
345
|
+
const { imageKey } = await uploadImageLark({ account, image: buffer });
|
|
346
|
+
return sendImageLark({ account, to, imageKey, replyToMessageId });
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
const fileType = detectFileType(name);
|
|
350
|
+
const { fileKey } = await uploadFileLark({
|
|
351
|
+
account,
|
|
352
|
+
file: buffer,
|
|
353
|
+
fileName: name,
|
|
354
|
+
fileType,
|
|
355
|
+
});
|
|
356
|
+
return sendFileLark({ account, to, fileKey, replyToMessageId });
|
|
357
|
+
}
|
|
358
|
+
}
|
|
100
359
|
//# sourceMappingURL=media.js.map
|
package/dist/src/media.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/media.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/media.ts"],"names":[],"mappings":"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"}
|
package/dist/src/mention.d.ts
CHANGED
|
@@ -43,3 +43,20 @@ export declare function formatMentionForCard(target: {
|
|
|
43
43
|
* Format @everyone for card message
|
|
44
44
|
*/
|
|
45
45
|
export declare function formatMentionAllForCard(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Build complete message with @mentions (text format)
|
|
48
|
+
*
|
|
49
|
+
* Prepends all mention tags to the message for proper forwarding.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildMentionedMessage(targets: Array<{
|
|
52
|
+
openId: string;
|
|
53
|
+
name?: string;
|
|
54
|
+
}>, message: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Build card content with @mentions (Markdown format)
|
|
57
|
+
*
|
|
58
|
+
* Prepends all mention tags to the message for card rendering.
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildMentionedCardContent(targets: Array<{
|
|
61
|
+
openId: string;
|
|
62
|
+
}>, message: string): string;
|
package/dist/src/mention.js
CHANGED
|
@@ -74,4 +74,26 @@ export function formatMentionForCard(target) {
|
|
|
74
74
|
export function formatMentionAllForCard() {
|
|
75
75
|
return `<at id=all></at>`;
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Build complete message with @mentions (text format)
|
|
79
|
+
*
|
|
80
|
+
* Prepends all mention tags to the message for proper forwarding.
|
|
81
|
+
*/
|
|
82
|
+
export function buildMentionedMessage(targets, message) {
|
|
83
|
+
if (targets.length === 0)
|
|
84
|
+
return message;
|
|
85
|
+
const mentionParts = targets.map((t) => formatMentionForText(t));
|
|
86
|
+
return `${mentionParts.join(" ")} ${message}`;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Build card content with @mentions (Markdown format)
|
|
90
|
+
*
|
|
91
|
+
* Prepends all mention tags to the message for card rendering.
|
|
92
|
+
*/
|
|
93
|
+
export function buildMentionedCardContent(targets, message) {
|
|
94
|
+
if (targets.length === 0)
|
|
95
|
+
return message;
|
|
96
|
+
const mentionParts = targets.map((t) => formatMentionForCard(t));
|
|
97
|
+
return `${mentionParts.join(" ")} ${message}`;
|
|
98
|
+
}
|
|
77
99
|
//# sourceMappingURL=mention.js.map
|
package/dist/src/mention.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mention.js","sourceRoot":"","sources":["../../src/mention.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAuB,EACvB,SAAkB;IAElB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IAE9C,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,yBAAyB;QACzB,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1D,oBAAoB;QACpB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,OAAQ;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAuB,EACvB,SAAkB;IAElB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC;IAC1D,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IAEzE,IAAI,eAAe,EAAE,CAAC;QACpB,+CAA+C;QAC/C,OAAO,eAAe,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QACvE,OAAO,aAAa,IAAI,eAAe,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,cAAwB;IACvE,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,4BAA4B;IAC5B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyC;IAC5E,OAAO,gBAAgB,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,OAAO,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,iCAAiC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA0B;IAC7D,OAAO,UAAU,MAAM,CAAC,MAAM,QAAQ,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"mention.js","sourceRoot":"","sources":["../../src/mention.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Context and Quoting
|
|
3
|
+
*
|
|
4
|
+
* Functions for fetching quoted/replied message content to provide
|
|
5
|
+
* better conversational context to the AI agent.
|
|
6
|
+
*/
|
|
7
|
+
import type { ResolvedLarkAccount } from "./types.js";
|
|
8
|
+
export type LarkMessageInfo = {
|
|
9
|
+
messageId: string;
|
|
10
|
+
chatId: string;
|
|
11
|
+
senderId?: string;
|
|
12
|
+
senderOpenId?: string;
|
|
13
|
+
content: string;
|
|
14
|
+
contentType: string;
|
|
15
|
+
createTime?: number;
|
|
16
|
+
parent_id?: string;
|
|
17
|
+
thread_id?: string;
|
|
18
|
+
root_id?: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get a message by its ID.
|
|
22
|
+
*
|
|
23
|
+
* Useful for fetching quoted/replied message content when the user
|
|
24
|
+
* replies to a previous message. This provides context to the AI agent.
|
|
25
|
+
*
|
|
26
|
+
* @param params - Account and message ID
|
|
27
|
+
* @returns Message info or null if not found
|
|
28
|
+
*/
|
|
29
|
+
export declare function getLarkMessage(params: {
|
|
30
|
+
account: ResolvedLarkAccount;
|
|
31
|
+
messageId: string;
|
|
32
|
+
}): Promise<LarkMessageInfo | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Format quoted message context for inclusion in the message body.
|
|
35
|
+
*
|
|
36
|
+
* When a user replies to a previous message, this function formats
|
|
37
|
+
* the quoted content for inclusion in the AI context.
|
|
38
|
+
*
|
|
39
|
+
* @param quotedMessage - The message being replied to
|
|
40
|
+
* @returns Formatted context string
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatQuotedContext(quotedMessage: LarkMessageInfo | null): string;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a message event is a reply to another message.
|
|
45
|
+
*
|
|
46
|
+
* Lark messages have a parent_id field when they are replies.
|
|
47
|
+
*
|
|
48
|
+
* @param parent_id - The parent_id from the message event
|
|
49
|
+
* @returns true if this is a reply
|
|
50
|
+
*/
|
|
51
|
+
export declare function isReplyMessage(parent_id?: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Build context with quoted message if applicable.
|
|
54
|
+
*
|
|
55
|
+
* This combines the original message body with quoted context
|
|
56
|
+
* when the user is replying to a previous message.
|
|
57
|
+
*
|
|
58
|
+
* @param params - Message details
|
|
59
|
+
* @returns Combined message body with context
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildMessageContextWithQuote(params: {
|
|
62
|
+
account: ResolvedLarkAccount;
|
|
63
|
+
messageBody: string;
|
|
64
|
+
parentId?: string;
|
|
65
|
+
}): Promise<string>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Context and Quoting
|
|
3
|
+
*
|
|
4
|
+
* Functions for fetching quoted/replied message content to provide
|
|
5
|
+
* better conversational context to the AI agent.
|
|
6
|
+
*/
|
|
7
|
+
import { createLarkClient } from "./client.js";
|
|
8
|
+
import { extractText as extractTextFromMessage } from "./monitor.js";
|
|
9
|
+
/**
|
|
10
|
+
* Get a message by its ID.
|
|
11
|
+
*
|
|
12
|
+
* Useful for fetching quoted/replied message content when the user
|
|
13
|
+
* replies to a previous message. This provides context to the AI agent.
|
|
14
|
+
*
|
|
15
|
+
* @param params - Account and message ID
|
|
16
|
+
* @returns Message info or null if not found
|
|
17
|
+
*/
|
|
18
|
+
export async function getLarkMessage(params) {
|
|
19
|
+
const { account, messageId } = params;
|
|
20
|
+
const client = createLarkClient(account);
|
|
21
|
+
try {
|
|
22
|
+
const response = (await client.im.message.get({
|
|
23
|
+
path: { message_id: messageId },
|
|
24
|
+
}));
|
|
25
|
+
if (response.code !== 0) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const item = response.data?.items?.[0];
|
|
29
|
+
if (!item) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
// Extract text content based on message type
|
|
33
|
+
const content = extractTextFromMessage(item.content ?? "", item.msg_type ?? "text");
|
|
34
|
+
return {
|
|
35
|
+
messageId: item.message_id ?? messageId,
|
|
36
|
+
chatId: item.chat_id ?? "",
|
|
37
|
+
senderId: item.sender_id?.union_id || item.sender_id?.user_id,
|
|
38
|
+
senderOpenId: item.sender_id?.open_id,
|
|
39
|
+
content,
|
|
40
|
+
contentType: item.msg_type ?? "text",
|
|
41
|
+
createTime: item.create_time ? parseInt(item.create_time, 10) : undefined,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(`[lark] Failed to get message ${messageId}:`, error);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format quoted message context for inclusion in the message body.
|
|
51
|
+
*
|
|
52
|
+
* When a user replies to a previous message, this function formats
|
|
53
|
+
* the quoted content for inclusion in the AI context.
|
|
54
|
+
*
|
|
55
|
+
* @param quotedMessage - The message being replied to
|
|
56
|
+
* @returns Formatted context string
|
|
57
|
+
*/
|
|
58
|
+
export function formatQuotedContext(quotedMessage) {
|
|
59
|
+
if (!quotedMessage) {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
const sender = quotedMessage.senderOpenId || quotedMessage.senderId || "Unknown";
|
|
63
|
+
const content = quotedMessage.content.slice(0, 200); // Limit to 200 chars
|
|
64
|
+
const ellipsis = quotedMessage.content.length > 200 ? "..." : "";
|
|
65
|
+
return `[Replying to ${sender}: "${content}"${ellipsis}]`;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if a message event is a reply to another message.
|
|
69
|
+
*
|
|
70
|
+
* Lark messages have a parent_id field when they are replies.
|
|
71
|
+
*
|
|
72
|
+
* @param parent_id - The parent_id from the message event
|
|
73
|
+
* @returns true if this is a reply
|
|
74
|
+
*/
|
|
75
|
+
export function isReplyMessage(parent_id) {
|
|
76
|
+
return !!parent_id && parent_id.length > 0;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Build context with quoted message if applicable.
|
|
80
|
+
*
|
|
81
|
+
* This combines the original message body with quoted context
|
|
82
|
+
* when the user is replying to a previous message.
|
|
83
|
+
*
|
|
84
|
+
* @param params - Message details
|
|
85
|
+
* @returns Combined message body with context
|
|
86
|
+
*/
|
|
87
|
+
export async function buildMessageContextWithQuote(params) {
|
|
88
|
+
const { account, messageBody, parentId } = params;
|
|
89
|
+
// If not a reply, return as-is
|
|
90
|
+
if (!parentId || !isReplyMessage(parentId)) {
|
|
91
|
+
return messageBody;
|
|
92
|
+
}
|
|
93
|
+
// Fetch the quoted message
|
|
94
|
+
const quotedMessage = await getLarkMessage({
|
|
95
|
+
account,
|
|
96
|
+
messageId: parentId,
|
|
97
|
+
});
|
|
98
|
+
const quotedContext = formatQuotedContext(quotedMessage);
|
|
99
|
+
// Combine quoted context with new message
|
|
100
|
+
if (quotedContext) {
|
|
101
|
+
return `${quotedContext}\n\n${messageBody}`;
|
|
102
|
+
}
|
|
103
|
+
return messageBody;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=message-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-context.js","sourceRoot":"","sources":["../../src/message-context.ts"],"names":[],"mappings":"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"}
|