botmux 1.4.3 → 1.4.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/.env.example +5 -0
- package/dist/bot-registry.d.ts +31 -0
- package/dist/bot-registry.d.ts.map +1 -0
- package/dist/bot-registry.js +125 -0
- package/dist/bot-registry.js.map +1 -0
- package/dist/cli.js +0 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +6 -4
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/session-manager.d.ts +4 -3
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +42 -10
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/worker-pool.d.ts +3 -2
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +39 -26
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +83 -61
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +30 -13
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +11 -13
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +23 -45
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +10 -10
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +36 -33
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/get-thread-messages.d.ts.map +1 -1
- package/dist/tools/get-thread-messages.js +2 -1
- package/dist/tools/get-thread-messages.js.map +1 -1
- package/dist/tools/react-to-message.d.ts.map +1 -1
- package/dist/tools/react-to-message.js +3 -2
- package/dist/tools/react-to-message.js.map +1 -1
- package/dist/tools/send-to-thread.js +1 -1
- package/dist/tools/send-to-thread.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker.js +7 -1
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/scheduler.d.ts +0 -38
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js +0 -221
- package/dist/scheduler.js.map +0 -1
- package/dist/services/lark-client.d.ts +0 -22
- package/dist/services/lark-client.d.ts.map +0 -1
- package/dist/services/lark-client.js +0 -238
- package/dist/services/lark-client.js.map +0 -1
- package/dist/services/lark-ws.d.ts +0 -5
- package/dist/services/lark-ws.d.ts.map +0 -1
- package/dist/services/lark-ws.js +0 -79
- package/dist/services/lark-ws.js.map +0 -1
- package/dist/services/message-router.d.ts +0 -8
- package/dist/services/message-router.d.ts.map +0 -1
- package/dist/services/message-router.js +0 -73
- package/dist/services/message-router.js.map +0 -1
- package/dist/tools/close-session.d.ts +0 -22
- package/dist/tools/close-session.d.ts.map +0 -1
- package/dist/tools/close-session.js +0 -38
- package/dist/tools/close-session.js.map +0 -1
- package/dist/tools/create-session.d.ts +0 -28
- package/dist/tools/create-session.d.ts.map +0 -1
- package/dist/tools/create-session.js +0 -40
- package/dist/tools/create-session.js.map +0 -1
- package/dist/tools/wait-for-reply.d.ts +0 -17
- package/dist/tools/wait-for-reply.d.ts.map +0 -1
- package/dist/tools/wait-for-reply.js +0 -65
- package/dist/tools/wait-for-reply.js.map +0 -1
- package/dist/utils/card-builder.d.ts +0 -16
- package/dist/utils/card-builder.d.ts.map +0 -1
- package/dist/utils/card-builder.js +0 -183
- package/dist/utils/card-builder.js.map +0 -1
- package/dist/utils/message-parser.d.ts +0 -45
- package/dist/utils/message-parser.d.ts.map +0 -1
- package/dist/utils/message-parser.js +0 -132
- package/dist/utils/message-parser.js.map +0 -1
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Extracted from daemon.ts for modularity.
|
|
5
5
|
*/
|
|
6
6
|
import { config } from '../../config.js';
|
|
7
|
+
import { getBot, getAllBots } from '../../bot-registry.js';
|
|
7
8
|
import { sendUserMessage, updateMessage } from './client.js';
|
|
8
9
|
import { buildSessionCard, buildStreamingCard, getCliDisplayName } from './card-builder.js';
|
|
9
10
|
import { logger } from '../../utils/logger.js';
|
|
@@ -21,12 +22,23 @@ export async function handleCardAction(data, deps) {
|
|
|
21
22
|
const value = action?.value;
|
|
22
23
|
// Check ALLOWED_USERS for sensitive actions
|
|
23
24
|
const operatorOpenId = data?.operator?.open_id;
|
|
24
|
-
const allowedUsers = config.daemon.allowedUsers;
|
|
25
25
|
const isSensitive = value?.action && ['restart', 'close', 'skip_repo', 'get_write_link'].includes(value.action);
|
|
26
|
-
if (isSensitive
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
if (isSensitive) {
|
|
27
|
+
const rootId = value?.root_id;
|
|
28
|
+
const ds = rootId ? activeSessions.get(rootId) : undefined;
|
|
29
|
+
let allowedUsers;
|
|
30
|
+
if (ds) {
|
|
31
|
+
allowedUsers = getBot(ds.larkAppId).resolvedAllowedUsers;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// No session yet — merge allowedUsers from all bots
|
|
35
|
+
allowedUsers = getAllBots().flatMap(b => b.resolvedAllowedUsers);
|
|
36
|
+
}
|
|
37
|
+
if (allowedUsers.length > 0) {
|
|
38
|
+
if (!operatorOpenId || !allowedUsers.includes(operatorOpenId)) {
|
|
39
|
+
logger.info(`Card action "${value.action}" blocked for non-allowed user: ${operatorOpenId}`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
30
42
|
}
|
|
31
43
|
}
|
|
32
44
|
// Handle session card button actions (restart/close)
|
|
@@ -34,18 +46,19 @@ export async function handleCardAction(data, deps) {
|
|
|
34
46
|
const { action: actionType, root_id: rootId } = value;
|
|
35
47
|
const ds = activeSessions.get(rootId);
|
|
36
48
|
if (actionType === 'restart' && ds) {
|
|
49
|
+
const botCfg = getBot(ds.larkAppId).config;
|
|
37
50
|
if (ds.worker) {
|
|
38
51
|
// Worker alive — tell it to restart Claude
|
|
39
52
|
logger.info(`[${tag(ds)}] Restart via card button`);
|
|
40
53
|
ds.worker.send({ type: 'restart' });
|
|
41
|
-
const cliName = getCliDisplayName(
|
|
54
|
+
const cliName = getCliDisplayName(botCfg.cliId);
|
|
42
55
|
await sessionReply(rootId, `🔄 已重启 ${cliName}`);
|
|
43
56
|
}
|
|
44
57
|
else {
|
|
45
58
|
// Worker gone (e.g. after daemon restart) — re-fork
|
|
46
59
|
logger.info(`[${tag(ds)}] Re-forking worker via card button`);
|
|
47
60
|
forkWorker(ds, '', ds.hasHistory);
|
|
48
|
-
const cliName = getCliDisplayName(
|
|
61
|
+
const cliName = getCliDisplayName(botCfg.cliId);
|
|
49
62
|
await sessionReply(rootId, `🔄 已重新启动 ${cliName}`);
|
|
50
63
|
// DM card will be sent by the ready handler when worker starts
|
|
51
64
|
}
|
|
@@ -58,10 +71,11 @@ export async function handleCardAction(data, deps) {
|
|
|
58
71
|
logger.info(`[${tag(ds)}] Closed via card button`);
|
|
59
72
|
}
|
|
60
73
|
if (actionType === 'get_write_link' && ds && operatorOpenId) {
|
|
74
|
+
const botCfg = getBot(ds.larkAppId).config;
|
|
61
75
|
if (ds.workerPort && ds.workerToken) {
|
|
62
76
|
const writeUrl = `http://${config.web.externalHost}:${ds.workerPort}?token=${ds.workerToken}`;
|
|
63
|
-
const dmCardJson = buildSessionCard(ds.session.sessionId, ds.session.rootMessageId, writeUrl, ds.session.title || 'Claude Code',
|
|
64
|
-
sendUserMessage(operatorOpenId, dmCardJson, 'interactive').catch(err => logger.warn(`[${tag(ds)}] Failed to DM write link: ${err}`));
|
|
77
|
+
const dmCardJson = buildSessionCard(ds.session.sessionId, ds.session.rootMessageId, writeUrl, ds.session.title || 'Claude Code', botCfg.cliId);
|
|
78
|
+
sendUserMessage(ds.larkAppId, operatorOpenId, dmCardJson, 'interactive').catch(err => logger.warn(`[${tag(ds)}] Failed to DM write link: ${err}`));
|
|
65
79
|
logger.info(`[${tag(ds)}] Sent write link via DM to ${operatorOpenId}`);
|
|
66
80
|
}
|
|
67
81
|
else {
|
|
@@ -69,20 +83,22 @@ export async function handleCardAction(data, deps) {
|
|
|
69
83
|
}
|
|
70
84
|
}
|
|
71
85
|
if (actionType === 'toggle_stream' && ds) {
|
|
86
|
+
const botCfg = getBot(ds.larkAppId).config;
|
|
72
87
|
ds.streamExpanded = !ds.streamExpanded;
|
|
73
88
|
// Immediately rebuild and PATCH the current streaming card
|
|
74
89
|
if (ds.streamCardId && ds.workerPort) {
|
|
75
90
|
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
76
91
|
const turnTitle = ds.currentTurnTitle || ds.session.title || 'Claude Code';
|
|
77
|
-
const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working',
|
|
78
|
-
updateMessage(ds.streamCardId, cardJson).catch(err => logger.warn(`[${tag(ds)}] Failed to update card on toggle: ${err}`));
|
|
92
|
+
const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent || '', ds.lastScreenStatus || 'working', botCfg.cliId, ds.streamExpanded);
|
|
93
|
+
updateMessage(ds.larkAppId, ds.streamCardId, cardJson).catch(err => logger.warn(`[${tag(ds)}] Failed to update card on toggle: ${err}`));
|
|
79
94
|
}
|
|
80
95
|
logger.info(`[${tag(ds)}] Stream display toggled: ${ds.streamExpanded ? 'expanded' : 'collapsed'}`);
|
|
81
96
|
}
|
|
82
97
|
if (actionType === 'skip_repo' && ds && ds.pendingRepo) {
|
|
98
|
+
const botCfg = getBot(ds.larkAppId).config;
|
|
83
99
|
// Skip repo selection — spawn Claude with default working dir
|
|
84
100
|
ds.pendingRepo = false;
|
|
85
|
-
const prompt = buildNewTopicPrompt(ds.pendingPrompt ?? '', ds.session.sessionId, ds.pendingAttachments);
|
|
101
|
+
const prompt = buildNewTopicPrompt(ds.pendingPrompt ?? '', ds.session.sessionId, botCfg.cliId, botCfg.cliPathOverride, ds.pendingAttachments);
|
|
86
102
|
ds.pendingPrompt = undefined;
|
|
87
103
|
ds.pendingAttachments = undefined;
|
|
88
104
|
forkWorker(ds, prompt);
|
|
@@ -118,9 +134,10 @@ export async function handleCardAction(data, deps) {
|
|
|
118
134
|
targetDs.session.workingDir = selectedPath;
|
|
119
135
|
sessionStore.updateSession(targetDs.session);
|
|
120
136
|
if (targetDs.pendingRepo) {
|
|
137
|
+
const botCfg = getBot(targetDs.larkAppId).config;
|
|
121
138
|
// First-time repo selection — now spawn Claude with the original prompt
|
|
122
139
|
targetDs.pendingRepo = false;
|
|
123
|
-
const prompt = buildNewTopicPrompt(targetDs.pendingPrompt ?? '', targetDs.session.sessionId, targetDs.pendingAttachments);
|
|
140
|
+
const prompt = buildNewTopicPrompt(targetDs.pendingPrompt ?? '', targetDs.session.sessionId, botCfg.cliId, botCfg.cliPathOverride, targetDs.pendingAttachments);
|
|
124
141
|
targetDs.pendingPrompt = undefined;
|
|
125
142
|
targetDs.pendingAttachments = undefined;
|
|
126
143
|
forkWorker(targetDs, prompt);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-handler.js","sourceRoot":"","sources":["../../../src/im/lark/card-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAa1F,6EAA6E;AAE7E,SAAS,GAAG,CAAC,EAAiB;IAC5B,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,6EAA6E;AAE7E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAS,EAAE,IAAqB;IACrE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAE5B,4CAA4C;IAC5C,MAAM,cAAc,GAAuB,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;IACnE,MAAM,
|
|
1
|
+
{"version":3,"file":"card-handler.js","sourceRoot":"","sources":["../../../src/im/lark/card-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/im/lark/client.d.ts
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function sendUserMessage(openId: string, content: string, msgType?: string): Promise<string>;
|
|
8
|
-
export declare function getChatInfo(chatId: string): Promise<{
|
|
1
|
+
export declare function sendMessage(larkAppId: string, chatId: string, content: string, msgType?: string): Promise<string>;
|
|
2
|
+
export declare function replyMessage(larkAppId: string, messageId: string, content: string, msgType?: string, replyInThread?: boolean): Promise<string>;
|
|
3
|
+
export declare function addReaction(larkAppId: string, messageId: string, emojiType: string): Promise<string>;
|
|
4
|
+
export declare function removeReaction(larkAppId: string, messageId: string, reactionId: string): Promise<void>;
|
|
5
|
+
export declare function sendUserMessage(larkAppId: string, openId: string, content: string, msgType?: string): Promise<string>;
|
|
6
|
+
export declare function getChatInfo(larkAppId: string, chatId: string): Promise<{
|
|
9
7
|
userCount: number;
|
|
10
8
|
}>;
|
|
11
|
-
export declare function updateMessage(messageId: string, cardJson: string): Promise<void>;
|
|
12
|
-
export declare function getMessageDetail(messageId: string): Promise<any>;
|
|
13
|
-
export declare function downloadMessageResource(messageId: string, fileKey: string, type: 'image' | 'file', savePath: string): Promise<void>;
|
|
9
|
+
export declare function updateMessage(larkAppId: string, messageId: string, cardJson: string): Promise<void>;
|
|
10
|
+
export declare function getMessageDetail(larkAppId: string, messageId: string): Promise<any>;
|
|
11
|
+
export declare function downloadMessageResource(larkAppId: string, messageId: string, fileKey: string, type: 'image' | 'file', savePath: string): Promise<void>;
|
|
14
12
|
/**
|
|
15
13
|
* Resolve emails to Lark open_ids via batch user lookup.
|
|
16
14
|
* Accepts mixed input: items starting with "ou_" are kept as-is; everything else
|
|
17
15
|
* must be a full email address (e.g. "alice@example.com") and is looked up.
|
|
18
16
|
* Returns an array of open_ids (unresolvable entries are dropped with a warning).
|
|
19
17
|
*/
|
|
20
|
-
export declare function resolveAllowedUsers(raw: string[]): Promise<string[]>;
|
|
21
|
-
export declare function listThreadMessages(chatId: string, rootMessageId: string, pageSize?: number): Promise<any[]>;
|
|
18
|
+
export declare function resolveAllowedUsers(larkAppId: string, raw: string[]): Promise<string[]>;
|
|
19
|
+
export declare function listThreadMessages(larkAppId: string, chatId: string, rootMessageId: string, pageSize?: number): Promise<any[]>;
|
|
22
20
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/im/lark/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/im/lark/client.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB/H;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,EAAE,aAAa,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnK;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1G;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5G;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnI;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAUnG;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASzG;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CASzF;AAED,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B5J;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmC7F;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAuCxI"}
|
package/dist/im/lark/client.js
CHANGED
|
@@ -1,31 +1,9 @@
|
|
|
1
|
-
import * as Lark from '@larksuiteoapi/node-sdk';
|
|
2
1
|
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
3
2
|
import { dirname } from 'node:path';
|
|
4
|
-
import {
|
|
3
|
+
import { getBotClient } from '../../bot-registry.js';
|
|
5
4
|
import { logger } from '../../utils/logger.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (!client) {
|
|
9
|
-
// Provide a custom logger that writes to stderr.
|
|
10
|
-
// The default Lark SDK logger uses console.log (stdout), which corrupts
|
|
11
|
-
// MCP stdio protocol when the server is spawned as an MCP child process.
|
|
12
|
-
const stderrLogger = {
|
|
13
|
-
error: (...msg) => { process.stderr.write(`[lark:error] ${msg.map(m => JSON.stringify(m)).join(' ')}\n`); },
|
|
14
|
-
warn: (...msg) => { process.stderr.write(`[lark:warn] ${msg.map(m => JSON.stringify(m)).join(' ')}\n`); },
|
|
15
|
-
info: (...msg) => { process.stderr.write(`[lark:info] ${msg.map(m => JSON.stringify(m)).join(' ')}\n`); },
|
|
16
|
-
debug: (...msg) => { process.stderr.write(`[lark:debug] ${msg.map(m => JSON.stringify(m)).join(' ')}\n`); },
|
|
17
|
-
trace: (...msg) => { process.stderr.write(`[lark:trace] ${msg.map(m => JSON.stringify(m)).join(' ')}\n`); },
|
|
18
|
-
};
|
|
19
|
-
client = new Lark.Client({
|
|
20
|
-
appId: config.lark.appId,
|
|
21
|
-
appSecret: config.lark.appSecret,
|
|
22
|
-
logger: stderrLogger,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return client;
|
|
26
|
-
}
|
|
27
|
-
export async function sendMessage(chatId, content, msgType = 'text') {
|
|
28
|
-
const c = getLarkClient();
|
|
5
|
+
export async function sendMessage(larkAppId, chatId, content, msgType = 'text') {
|
|
6
|
+
const c = getBotClient(larkAppId);
|
|
29
7
|
const body = msgType === 'text' ? JSON.stringify({ text: content }) : content;
|
|
30
8
|
const res = await c.im.v1.message.create({
|
|
31
9
|
params: { receive_id_type: 'chat_id' },
|
|
@@ -44,8 +22,8 @@ export async function sendMessage(chatId, content, msgType = 'text') {
|
|
|
44
22
|
logger.info(`Sent message ${messageId} to chat ${chatId}`);
|
|
45
23
|
return messageId;
|
|
46
24
|
}
|
|
47
|
-
export async function replyMessage(messageId, content, msgType = 'text', replyInThread = false) {
|
|
48
|
-
const c =
|
|
25
|
+
export async function replyMessage(larkAppId, messageId, content, msgType = 'text', replyInThread = false) {
|
|
26
|
+
const c = getBotClient(larkAppId);
|
|
49
27
|
const body = msgType === 'text' ? JSON.stringify({ text: content }) : content;
|
|
50
28
|
const res = await c.im.v1.message.reply({
|
|
51
29
|
path: { message_id: messageId },
|
|
@@ -64,8 +42,8 @@ export async function replyMessage(messageId, content, msgType = 'text', replyIn
|
|
|
64
42
|
logger.info(`Replied ${replyId} to message ${messageId}${replyInThread ? ' (in thread)' : ''}`);
|
|
65
43
|
return replyId;
|
|
66
44
|
}
|
|
67
|
-
export async function addReaction(messageId, emojiType) {
|
|
68
|
-
const c =
|
|
45
|
+
export async function addReaction(larkAppId, messageId, emojiType) {
|
|
46
|
+
const c = getBotClient(larkAppId);
|
|
69
47
|
const res = await c.im.v1.messageReaction.create({
|
|
70
48
|
path: { message_id: messageId },
|
|
71
49
|
data: { reaction_type: { emoji_type: emojiType } },
|
|
@@ -77,8 +55,8 @@ export async function addReaction(messageId, emojiType) {
|
|
|
77
55
|
logger.info(`Added reaction ${emojiType} (${reactionId}) to message ${messageId}`);
|
|
78
56
|
return reactionId ?? '';
|
|
79
57
|
}
|
|
80
|
-
export async function removeReaction(messageId, reactionId) {
|
|
81
|
-
const c =
|
|
58
|
+
export async function removeReaction(larkAppId, messageId, reactionId) {
|
|
59
|
+
const c = getBotClient(larkAppId);
|
|
82
60
|
const res = await c.im.v1.messageReaction.delete({
|
|
83
61
|
path: { message_id: messageId, reaction_id: reactionId },
|
|
84
62
|
});
|
|
@@ -87,8 +65,8 @@ export async function removeReaction(messageId, reactionId) {
|
|
|
87
65
|
}
|
|
88
66
|
logger.info(`Removed reaction ${reactionId} from message ${messageId}`);
|
|
89
67
|
}
|
|
90
|
-
export async function sendUserMessage(openId, content, msgType = 'text') {
|
|
91
|
-
const c =
|
|
68
|
+
export async function sendUserMessage(larkAppId, openId, content, msgType = 'text') {
|
|
69
|
+
const c = getBotClient(larkAppId);
|
|
92
70
|
const body = msgType === 'text' ? JSON.stringify({ text: content }) : content;
|
|
93
71
|
const res = await c.im.v1.message.create({
|
|
94
72
|
params: { receive_id_type: 'open_id' },
|
|
@@ -107,8 +85,8 @@ export async function sendUserMessage(openId, content, msgType = 'text') {
|
|
|
107
85
|
logger.info(`Sent DM ${messageId} to user ${openId}`);
|
|
108
86
|
return messageId;
|
|
109
87
|
}
|
|
110
|
-
export async function getChatInfo(chatId) {
|
|
111
|
-
const c =
|
|
88
|
+
export async function getChatInfo(larkAppId, chatId) {
|
|
89
|
+
const c = getBotClient(larkAppId);
|
|
112
90
|
const res = await c.im.v1.chat.get({
|
|
113
91
|
path: { chat_id: chatId },
|
|
114
92
|
});
|
|
@@ -118,8 +96,8 @@ export async function getChatInfo(chatId) {
|
|
|
118
96
|
// user_count excludes bots, only real users
|
|
119
97
|
return { userCount: Number(res.data?.user_count ?? 0) };
|
|
120
98
|
}
|
|
121
|
-
export async function updateMessage(messageId, cardJson) {
|
|
122
|
-
const c =
|
|
99
|
+
export async function updateMessage(larkAppId, messageId, cardJson) {
|
|
100
|
+
const c = getBotClient(larkAppId);
|
|
123
101
|
const res = await c.im.v1.message.patch({
|
|
124
102
|
path: { message_id: messageId },
|
|
125
103
|
data: { content: cardJson },
|
|
@@ -128,8 +106,8 @@ export async function updateMessage(messageId, cardJson) {
|
|
|
128
106
|
throw new Error(`Failed to update message: ${res.msg} (code: ${res.code})`);
|
|
129
107
|
}
|
|
130
108
|
}
|
|
131
|
-
export async function getMessageDetail(messageId) {
|
|
132
|
-
const c =
|
|
109
|
+
export async function getMessageDetail(larkAppId, messageId) {
|
|
110
|
+
const c = getBotClient(larkAppId);
|
|
133
111
|
const res = await c.im.v1.message.get({
|
|
134
112
|
path: { message_id: messageId },
|
|
135
113
|
});
|
|
@@ -138,8 +116,8 @@ export async function getMessageDetail(messageId) {
|
|
|
138
116
|
}
|
|
139
117
|
return res.data;
|
|
140
118
|
}
|
|
141
|
-
export async function downloadMessageResource(messageId, fileKey, type, savePath) {
|
|
142
|
-
const c =
|
|
119
|
+
export async function downloadMessageResource(larkAppId, messageId, fileKey, type, savePath) {
|
|
120
|
+
const c = getBotClient(larkAppId);
|
|
143
121
|
const dir = dirname(savePath);
|
|
144
122
|
if (!existsSync(dir)) {
|
|
145
123
|
mkdirSync(dir, { recursive: true });
|
|
@@ -170,7 +148,7 @@ export async function downloadMessageResource(messageId, fileKey, type, savePath
|
|
|
170
148
|
* must be a full email address (e.g. "alice@example.com") and is looked up.
|
|
171
149
|
* Returns an array of open_ids (unresolvable entries are dropped with a warning).
|
|
172
150
|
*/
|
|
173
|
-
export async function resolveAllowedUsers(raw) {
|
|
151
|
+
export async function resolveAllowedUsers(larkAppId, raw) {
|
|
174
152
|
const openIds = [];
|
|
175
153
|
const emails = [];
|
|
176
154
|
for (const v of raw) {
|
|
@@ -183,7 +161,7 @@ export async function resolveAllowedUsers(raw) {
|
|
|
183
161
|
}
|
|
184
162
|
if (emails.length === 0)
|
|
185
163
|
return openIds;
|
|
186
|
-
const c =
|
|
164
|
+
const c = getBotClient(larkAppId);
|
|
187
165
|
try {
|
|
188
166
|
const res = await c.contact.v3.user.batchGetId({
|
|
189
167
|
params: { user_id_type: 'open_id' },
|
|
@@ -209,8 +187,8 @@ export async function resolveAllowedUsers(raw) {
|
|
|
209
187
|
}
|
|
210
188
|
return openIds;
|
|
211
189
|
}
|
|
212
|
-
export async function listThreadMessages(chatId, rootMessageId, pageSize = 50) {
|
|
213
|
-
const c =
|
|
190
|
+
export async function listThreadMessages(larkAppId, chatId, rootMessageId, pageSize = 50) {
|
|
191
|
+
const c = getBotClient(larkAppId);
|
|
214
192
|
const allMessages = [];
|
|
215
193
|
let pageToken;
|
|
216
194
|
// Lark API only supports container_id_type="chat", so we list chat messages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/im/lark/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/im/lark/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,31 +4,31 @@
|
|
|
4
4
|
* Extracted from daemon.ts for modularity.
|
|
5
5
|
*/
|
|
6
6
|
import * as Lark from '@larksuiteoapi/node-sdk';
|
|
7
|
-
export declare function getBotOpenId(): string | undefined;
|
|
8
|
-
export declare function setBotOpenId(id: string): void;
|
|
7
|
+
export declare function getBotOpenId(larkAppId: string): string | undefined;
|
|
8
|
+
export declare function setBotOpenId(larkAppId: string, id: string): void;
|
|
9
9
|
/**
|
|
10
10
|
* Probe the bot's own open_id at startup via the Lark bot info API.
|
|
11
11
|
*/
|
|
12
|
-
export declare function probeBotOpenId(): Promise<void>;
|
|
12
|
+
export declare function probeBotOpenId(larkAppId: string): Promise<void>;
|
|
13
13
|
export declare const CHAT_CACHE_TTL: number;
|
|
14
|
-
export declare function getGroupUserCount(chatId: string): Promise<number>;
|
|
14
|
+
export declare function getGroupUserCount(larkAppId: string, chatId: string): Promise<number>;
|
|
15
15
|
/** Check if the bot was @mentioned in this message */
|
|
16
|
-
export declare function isBotMentioned(message: any, _senderOpenId: string | undefined): boolean;
|
|
16
|
+
export declare function isBotMentioned(larkAppId: string, message: any, _senderOpenId: string | undefined): boolean;
|
|
17
17
|
/**
|
|
18
18
|
* Check group message addressing:
|
|
19
19
|
* - 'allowed' -> sender is allowed, bot was @mentioned or solo group
|
|
20
20
|
* - 'not_allowed' -> bot was @mentioned but sender is not in allowlist
|
|
21
21
|
* - 'ignore' -> not addressed to bot at all
|
|
22
22
|
*/
|
|
23
|
-
export declare function checkGroupMessageAccess(message: any, chatId: string, senderOpenId: string | undefined): Promise<'allowed' | 'not_allowed' | 'ignore'>;
|
|
23
|
+
export declare function checkGroupMessageAccess(larkAppId: string, message: any, chatId: string, senderOpenId: string | undefined): Promise<'allowed' | 'not_allowed' | 'ignore'>;
|
|
24
24
|
export interface EventHandlers {
|
|
25
|
-
handleCardAction: (data: any) => Promise<void>;
|
|
26
|
-
handleNewTopic: (data: any, chatId: string, messageId: string, chatType: 'group' | 'p2p') => Promise<void>;
|
|
27
|
-
handleThreadReply: (data: any, rootId: string) => Promise<void>;
|
|
25
|
+
handleCardAction: (data: any, larkAppId: string) => Promise<void>;
|
|
26
|
+
handleNewTopic: (data: any, chatId: string, messageId: string, chatType: 'group' | 'p2p', larkAppId: string) => Promise<void>;
|
|
27
|
+
handleThreadReply: (data: any, rootId: string, larkAppId: string) => Promise<void>;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Create and start the Lark WSClient with event dispatching.
|
|
31
31
|
* Returns the WSClient instance for lifecycle management.
|
|
32
32
|
*/
|
|
33
|
-
export declare function startLarkEventDispatcher(handlers: EventHandlers): Lark.WSClient;
|
|
33
|
+
export declare function startLarkEventDispatcher(larkAppId: string, larkAppSecret: string, handlers: EventHandlers): Lark.WSClient;
|
|
34
34
|
//# sourceMappingURL=event-dispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/im/lark/event-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/im/lark/event-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAOhD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrE;AAKD,eAAO,MAAM,cAAc,QAAa,CAAC;AAEzC,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc1F;AAID,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAa1G;AAID;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAChF,OAAO,CAAC,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC,CAkB/C;AAID,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9H,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ,CAkGzH"}
|
|
@@ -4,28 +4,28 @@
|
|
|
4
4
|
* Extracted from daemon.ts for modularity.
|
|
5
5
|
*/
|
|
6
6
|
import * as Lark from '@larksuiteoapi/node-sdk';
|
|
7
|
-
import {
|
|
7
|
+
import { getBot } from '../../bot-registry.js';
|
|
8
8
|
import { getChatInfo, replyMessage } from './client.js';
|
|
9
9
|
import { logger } from '../../utils/logger.js';
|
|
10
10
|
// ─── Bot identity ─────────────────────────────────────────────────────────
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return botOpenId;
|
|
11
|
+
export function getBotOpenId(larkAppId) {
|
|
12
|
+
return getBot(larkAppId).botOpenId;
|
|
14
13
|
}
|
|
15
|
-
export function setBotOpenId(id) {
|
|
16
|
-
botOpenId = id;
|
|
14
|
+
export function setBotOpenId(larkAppId, id) {
|
|
15
|
+
getBot(larkAppId).botOpenId = id;
|
|
17
16
|
}
|
|
18
17
|
/**
|
|
19
18
|
* Probe the bot's own open_id at startup via the Lark bot info API.
|
|
20
19
|
*/
|
|
21
|
-
export async function probeBotOpenId() {
|
|
22
|
-
|
|
20
|
+
export async function probeBotOpenId(larkAppId) {
|
|
21
|
+
const bot = getBot(larkAppId);
|
|
22
|
+
if (bot.botOpenId)
|
|
23
23
|
return; // already known
|
|
24
24
|
// Call /bot/v3/info to get the bot's open_id using tenant_access_token
|
|
25
25
|
const tokenRes = await fetch('https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal', {
|
|
26
26
|
method: 'POST',
|
|
27
27
|
headers: { 'Content-Type': 'application/json' },
|
|
28
|
-
body: JSON.stringify({ app_id: config.
|
|
28
|
+
body: JSON.stringify({ app_id: bot.config.larkAppId, app_secret: bot.config.larkAppSecret }),
|
|
29
29
|
});
|
|
30
30
|
const tokenData = await tokenRes.json();
|
|
31
31
|
if (tokenData.code !== 0) {
|
|
@@ -40,8 +40,8 @@ export async function probeBotOpenId() {
|
|
|
40
40
|
}
|
|
41
41
|
const openId = botData.bot?.open_id;
|
|
42
42
|
if (openId) {
|
|
43
|
-
botOpenId = openId;
|
|
44
|
-
logger.info(`Bot open_id: ${botOpenId}`);
|
|
43
|
+
bot.botOpenId = openId;
|
|
44
|
+
logger.info(`Bot open_id: ${bot.botOpenId}`);
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
47
47
|
throw new Error('No open_id in bot info response');
|
|
@@ -50,14 +50,15 @@ export async function probeBotOpenId() {
|
|
|
50
50
|
// ─── Group user count cache ───────────────────────────────────────────────
|
|
51
51
|
const chatUserCountCache = new Map();
|
|
52
52
|
export const CHAT_CACHE_TTL = 5 * 60_000; // 5 minutes
|
|
53
|
-
export async function getGroupUserCount(chatId) {
|
|
54
|
-
const
|
|
53
|
+
export async function getGroupUserCount(larkAppId, chatId) {
|
|
54
|
+
const cacheKey = `${larkAppId}:${chatId}`;
|
|
55
|
+
const cached = chatUserCountCache.get(cacheKey);
|
|
55
56
|
if (cached && Date.now() - cached.fetchedAt < CHAT_CACHE_TTL) {
|
|
56
57
|
return cached.count;
|
|
57
58
|
}
|
|
58
59
|
try {
|
|
59
|
-
const info = await getChatInfo(chatId);
|
|
60
|
-
chatUserCountCache.set(
|
|
60
|
+
const info = await getChatInfo(larkAppId, chatId);
|
|
61
|
+
chatUserCountCache.set(cacheKey, { count: info.userCount, fetchedAt: Date.now() });
|
|
61
62
|
return info.userCount;
|
|
62
63
|
}
|
|
63
64
|
catch (err) {
|
|
@@ -67,10 +68,11 @@ export async function getGroupUserCount(chatId) {
|
|
|
67
68
|
}
|
|
68
69
|
// ─── @mention detection ──────────────────────────────────────────────────
|
|
69
70
|
/** Check if the bot was @mentioned in this message */
|
|
70
|
-
export function isBotMentioned(message, _senderOpenId) {
|
|
71
|
+
export function isBotMentioned(larkAppId, message, _senderOpenId) {
|
|
71
72
|
const mentions = message.mentions ?? [];
|
|
72
73
|
if (mentions.length === 0)
|
|
73
74
|
return false;
|
|
75
|
+
const botOpenId = getBot(larkAppId).botOpenId;
|
|
74
76
|
if (!botOpenId) {
|
|
75
77
|
// Bot open_id unknown — cannot reliably detect @bot mentions.
|
|
76
78
|
// Will be resolved once probeBotOpenId() completes or first bot message event arrives.
|
|
@@ -86,16 +88,16 @@ export function isBotMentioned(message, _senderOpenId) {
|
|
|
86
88
|
* - 'not_allowed' -> bot was @mentioned but sender is not in allowlist
|
|
87
89
|
* - 'ignore' -> not addressed to bot at all
|
|
88
90
|
*/
|
|
89
|
-
export async function checkGroupMessageAccess(message, chatId, senderOpenId) {
|
|
90
|
-
const mentioned = isBotMentioned(message, senderOpenId);
|
|
91
|
-
const allowedUsers =
|
|
91
|
+
export async function checkGroupMessageAccess(larkAppId, message, chatId, senderOpenId) {
|
|
92
|
+
const mentioned = isBotMentioned(larkAppId, message, senderOpenId);
|
|
93
|
+
const allowedUsers = getBot(larkAppId).resolvedAllowedUsers;
|
|
92
94
|
const isAllowed = allowedUsers.length === 0 || (!!senderOpenId && allowedUsers.includes(senderOpenId));
|
|
93
95
|
if (mentioned) {
|
|
94
96
|
return isAllowed ? 'allowed' : 'not_allowed';
|
|
95
97
|
}
|
|
96
98
|
// No @mention — only allow if sender is the sole human in the group
|
|
97
99
|
if (isAllowed) {
|
|
98
|
-
const userCount = await getGroupUserCount(chatId);
|
|
100
|
+
const userCount = await getGroupUserCount(larkAppId, chatId);
|
|
99
101
|
if (userCount <= 1) {
|
|
100
102
|
return 'allowed';
|
|
101
103
|
}
|
|
@@ -106,11 +108,11 @@ export async function checkGroupMessageAccess(message, chatId, senderOpenId) {
|
|
|
106
108
|
* Create and start the Lark WSClient with event dispatching.
|
|
107
109
|
* Returns the WSClient instance for lifecycle management.
|
|
108
110
|
*/
|
|
109
|
-
export function startLarkEventDispatcher(handlers) {
|
|
111
|
+
export function startLarkEventDispatcher(larkAppId, larkAppSecret, handlers) {
|
|
110
112
|
const eventDispatcher = new Lark.EventDispatcher({}).register({
|
|
111
113
|
'card.action.trigger': async (data) => {
|
|
112
114
|
try {
|
|
113
|
-
await handlers.handleCardAction(data);
|
|
115
|
+
await handlers.handleCardAction(data, larkAppId);
|
|
114
116
|
}
|
|
115
117
|
catch (err) {
|
|
116
118
|
logger.error(`Error handling card action: ${err}`);
|
|
@@ -126,9 +128,10 @@ export function startLarkEventDispatcher(handlers) {
|
|
|
126
128
|
return;
|
|
127
129
|
// Learn bot's own open_id from its outgoing messages
|
|
128
130
|
if (sender?.sender_type === 'app') {
|
|
131
|
+
const botOpenId = getBotOpenId(larkAppId);
|
|
129
132
|
if (!botOpenId && sender.sender_id?.open_id) {
|
|
130
|
-
|
|
131
|
-
logger.info(`Learned bot open_id from message event: ${
|
|
133
|
+
setBotOpenId(larkAppId, sender.sender_id.open_id);
|
|
134
|
+
logger.info(`Learned bot open_id from message event: ${getBotOpenId(larkAppId)}`);
|
|
132
135
|
}
|
|
133
136
|
// Allow bot's own messages only if they are /close commands in threads
|
|
134
137
|
const rootId = message.root_id;
|
|
@@ -142,7 +145,7 @@ export function startLarkEventDispatcher(handlers) {
|
|
|
142
145
|
catch {
|
|
143
146
|
return;
|
|
144
147
|
}
|
|
145
|
-
handlers.handleThreadReply(data, rootId).catch(err => logger.error(`Error handling message event: ${err}`));
|
|
148
|
+
handlers.handleThreadReply(data, rootId, larkAppId).catch(err => logger.error(`Error handling message event: ${err}`));
|
|
146
149
|
return;
|
|
147
150
|
}
|
|
148
151
|
const rootId = message.root_id;
|
|
@@ -150,13 +153,13 @@ export function startLarkEventDispatcher(handlers) {
|
|
|
150
153
|
const chatType = message.chat_type; // 'group' or 'p2p'
|
|
151
154
|
const messageId = message.message_id;
|
|
152
155
|
const senderOpenId = sender?.sender_id?.open_id;
|
|
153
|
-
const allowedUsers =
|
|
156
|
+
const allowedUsers = getBot(larkAppId).resolvedAllowedUsers;
|
|
154
157
|
const isAllowed = allowedUsers.length === 0 || (!!senderOpenId && allowedUsers.includes(senderOpenId));
|
|
155
158
|
// Group new topics (no rootId): check @mention + permissions
|
|
156
159
|
if (chatType === 'group' && !rootId) {
|
|
157
|
-
const access = await checkGroupMessageAccess(message, chatId, senderOpenId);
|
|
160
|
+
const access = await checkGroupMessageAccess(larkAppId, message, chatId, senderOpenId);
|
|
158
161
|
if (access === 'not_allowed') {
|
|
159
|
-
replyMessage(messageId, JSON.stringify({ text: '⚠️ 无操作权限' }))
|
|
162
|
+
replyMessage(larkAppId, messageId, JSON.stringify({ text: '⚠️ 无操作权限' }))
|
|
160
163
|
.catch(err => logger.debug(`Failed to send permission denied: ${err}`));
|
|
161
164
|
return;
|
|
162
165
|
}
|
|
@@ -167,7 +170,7 @@ export function startLarkEventDispatcher(handlers) {
|
|
|
167
170
|
}
|
|
168
171
|
else if (chatType === 'group' && rootId) {
|
|
169
172
|
// Group thread replies: require @mention or solo group (same as new topics)
|
|
170
|
-
const access = await checkGroupMessageAccess(message, chatId, senderOpenId);
|
|
173
|
+
const access = await checkGroupMessageAccess(larkAppId, message, chatId, senderOpenId);
|
|
171
174
|
if (access === 'not_allowed') {
|
|
172
175
|
// @mentioned but not in allowlist — silently ignore in threads
|
|
173
176
|
logger.debug(`Ignoring thread reply from non-allowed user: ${senderOpenId}`);
|
|
@@ -186,8 +189,8 @@ export function startLarkEventDispatcher(handlers) {
|
|
|
186
189
|
// p2p messages without rootId -> create session directly in the DM chat
|
|
187
190
|
// group messages -> normal flow
|
|
188
191
|
const promise = !rootId
|
|
189
|
-
? handlers.handleNewTopic(data, chatId, messageId, chatType)
|
|
190
|
-
: handlers.handleThreadReply(data, rootId);
|
|
192
|
+
? handlers.handleNewTopic(data, chatId, messageId, chatType, larkAppId)
|
|
193
|
+
: handlers.handleThreadReply(data, rootId, larkAppId);
|
|
191
194
|
promise.catch(err => logger.error(`Error handling message event: ${err}`));
|
|
192
195
|
}
|
|
193
196
|
catch (err) {
|
|
@@ -197,8 +200,8 @@ export function startLarkEventDispatcher(handlers) {
|
|
|
197
200
|
});
|
|
198
201
|
// Start WSClient
|
|
199
202
|
const wsClient = new Lark.WSClient({
|
|
200
|
-
appId:
|
|
201
|
-
appSecret:
|
|
203
|
+
appId: larkAppId,
|
|
204
|
+
appSecret: larkAppSecret,
|
|
202
205
|
loggerLevel: Lark.LoggerLevel.info,
|
|
203
206
|
});
|
|
204
207
|
wsClient.start({ eventDispatcher });
|