botmux 1.9.1 → 1.9.3
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/README.en.md +4 -0
- package/README.md +20 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +7 -5
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/core/session-manager.d.ts +6 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +17 -2
- package/dist/core/session-manager.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +33 -18
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/client.d.ts +7 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +31 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +4 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +66 -18
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +9 -0
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/services/project-scanner.js +2 -2
- package/dist/services/project-scanner.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-bots.d.ts +42 -0
- package/dist/tools/list-bots.d.ts.map +1 -0
- package/dist/tools/list-bots.js +76 -0
- package/dist/tools/list-bots.js.map +1 -0
- package/dist/tools/send-to-thread.d.ts +19 -1
- package/dist/tools/send-to-thread.d.ts.map +1 -1
- package/dist/tools/send-to-thread.js +15 -2
- package/dist/tools/send-to-thread.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -4
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Extracted from daemon.ts for modularity.
|
|
5
5
|
*/
|
|
6
6
|
import * as Lark from '@larksuiteoapi/node-sdk';
|
|
7
|
+
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
7
9
|
import { getBot, getAllBots } from '../../bot-registry.js';
|
|
8
10
|
import { getChatInfo, replyMessage } from './client.js';
|
|
9
11
|
import { logger } from '../../utils/logger.js';
|
|
@@ -11,9 +13,23 @@ import { logger } from '../../utils/logger.js';
|
|
|
11
13
|
export function getBotOpenId(larkAppId) {
|
|
12
14
|
return getBot(larkAppId).botOpenId;
|
|
13
15
|
}
|
|
16
|
+
/** Set the bot's open_id. Callers should also call writeBotInfoFile() to persist. */
|
|
14
17
|
export function setBotOpenId(larkAppId, id) {
|
|
15
18
|
getBot(larkAppId).botOpenId = id;
|
|
16
19
|
}
|
|
20
|
+
/** Persist bot registry info to disk for MCP subprocesses to read. */
|
|
21
|
+
export function writeBotInfoFile(dataDir) {
|
|
22
|
+
const bots = getAllBots();
|
|
23
|
+
const info = bots.map(b => ({
|
|
24
|
+
larkAppId: b.config.larkAppId,
|
|
25
|
+
botOpenId: b.botOpenId ?? null,
|
|
26
|
+
cliId: b.config.cliId,
|
|
27
|
+
}));
|
|
28
|
+
const filePath = join(dataDir, 'bots-info.json');
|
|
29
|
+
if (!existsSync(dataDir))
|
|
30
|
+
mkdirSync(dataDir, { recursive: true });
|
|
31
|
+
writeFileSync(filePath, JSON.stringify(info, null, 2) + '\n');
|
|
32
|
+
}
|
|
17
33
|
/**
|
|
18
34
|
* Probe the bot's own open_id at startup via the Lark bot info API.
|
|
19
35
|
*/
|
|
@@ -69,17 +85,34 @@ export async function getGroupUserCount(larkAppId, chatId) {
|
|
|
69
85
|
// ─── @mention detection ──────────────────────────────────────────────────
|
|
70
86
|
/** Check if the bot was @mentioned in this message */
|
|
71
87
|
export function isBotMentioned(larkAppId, message, _senderOpenId) {
|
|
72
|
-
const mentions = message.mentions ?? [];
|
|
73
|
-
if (mentions.length === 0)
|
|
74
|
-
return false;
|
|
75
88
|
const botOpenId = getBot(larkAppId).botOpenId;
|
|
76
89
|
if (!botOpenId) {
|
|
77
|
-
// Bot open_id unknown — cannot reliably detect @bot mentions.
|
|
78
|
-
// Will be resolved once probeBotOpenId() completes or first bot message event arrives.
|
|
79
90
|
logger.warn('Bot open_id unknown, cannot check @mentions');
|
|
80
91
|
return false;
|
|
81
92
|
}
|
|
82
|
-
|
|
93
|
+
// 1. Check message.mentions array (populated for user-sent text messages)
|
|
94
|
+
const mentions = message.mentions ?? [];
|
|
95
|
+
if (mentions.some((m) => m.id?.open_id === botOpenId)) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
// 2. Check post content for inline at tags (bot-sent post messages may not
|
|
99
|
+
// populate message.mentions — the @mention is embedded in the content structure)
|
|
100
|
+
try {
|
|
101
|
+
const content = JSON.parse(message.content ?? '{}');
|
|
102
|
+
const inner = content.zh_cn ?? content.en_us ?? content;
|
|
103
|
+
if (Array.isArray(inner?.content)) {
|
|
104
|
+
for (const paragraph of inner.content) {
|
|
105
|
+
if (!Array.isArray(paragraph))
|
|
106
|
+
continue;
|
|
107
|
+
for (const node of paragraph) {
|
|
108
|
+
if (node.tag === 'at' && node.user_id === botOpenId)
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch { /* ignore parse errors */ }
|
|
115
|
+
return false;
|
|
83
116
|
}
|
|
84
117
|
// ─── Group message access check ──────────────────────────────────────────
|
|
85
118
|
/**
|
|
@@ -111,7 +144,7 @@ export async function checkGroupMessageAccess(larkAppId, message, chatId, sender
|
|
|
111
144
|
* Create and start the Lark WSClient with event dispatching.
|
|
112
145
|
* Returns the WSClient instance for lifecycle management.
|
|
113
146
|
*/
|
|
114
|
-
export function startLarkEventDispatcher(larkAppId, larkAppSecret, handlers) {
|
|
147
|
+
export function startLarkEventDispatcher(larkAppId, larkAppSecret, handlers, dataDir) {
|
|
115
148
|
const eventDispatcher = new Lark.EventDispatcher({}).register({
|
|
116
149
|
'card.action.trigger': async (data) => {
|
|
117
150
|
try {
|
|
@@ -132,26 +165,41 @@ export function startLarkEventDispatcher(larkAppId, larkAppSecret, handlers) {
|
|
|
132
165
|
const sender = data.sender;
|
|
133
166
|
if (!message)
|
|
134
167
|
return;
|
|
135
|
-
//
|
|
168
|
+
// Bot-originated messages
|
|
136
169
|
if (sender?.sender_type === 'app') {
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
170
|
+
const senderOpenId = sender.sender_id?.open_id;
|
|
171
|
+
const myOpenId = getBotOpenId(larkAppId);
|
|
172
|
+
// Learn own open_id from outgoing messages
|
|
173
|
+
if (!myOpenId && senderOpenId) {
|
|
174
|
+
setBotOpenId(larkAppId, senderOpenId);
|
|
175
|
+
if (dataDir)
|
|
176
|
+
writeBotInfoFile(dataDir);
|
|
140
177
|
logger.info(`Learned bot open_id from message event: ${getBotOpenId(larkAppId)}`);
|
|
141
178
|
}
|
|
142
|
-
// Allow bot's own messages only if they are /close commands in threads
|
|
143
179
|
const rootId = message.root_id;
|
|
144
180
|
if (!rootId)
|
|
145
181
|
return;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
182
|
+
// Check if this is our own message vs another bot's message
|
|
183
|
+
const isSelfMessage = senderOpenId === getBotOpenId(larkAppId);
|
|
184
|
+
if (isSelfMessage) {
|
|
185
|
+
// Own messages: only process /close commands
|
|
186
|
+
try {
|
|
187
|
+
const body = JSON.parse(message.content ?? '{}');
|
|
188
|
+
if (body.text?.trim() !== '/close')
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
149
192
|
return;
|
|
150
|
-
|
|
151
|
-
|
|
193
|
+
}
|
|
194
|
+
handlers.handleThreadReply(data, rootId, larkAppId).catch(err => logger.error(`Error handling message event: ${err}`));
|
|
152
195
|
return;
|
|
153
196
|
}
|
|
154
|
-
|
|
197
|
+
// Message from another bot: check if it @mentions this bot
|
|
198
|
+
const mentioned = isBotMentioned(larkAppId, message, undefined);
|
|
199
|
+
if (mentioned) {
|
|
200
|
+
logger.info(`Bot-to-bot @mention detected: routing to handleThreadReply`);
|
|
201
|
+
handlers.handleThreadReply(data, rootId, larkAppId).catch(err => logger.error(`Error handling bot @mention: ${err}`));
|
|
202
|
+
}
|
|
155
203
|
return;
|
|
156
204
|
}
|
|
157
205
|
const rootId = message.root_id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-dispatcher.js","sourceRoot":"","sources":["../../../src/im/lark/event-dispatcher.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"event-dispatcher.js","sourceRoot":"","sources":["../../../src/im/lark/event-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-parser.d.ts","sourceRoot":"","sources":["../../../src/im/lark/message-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"message-parser.d.ts","sourceRoot":"","sources":["../../../src/im/lark/message-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAK/D,UAAU,YAAY;IACpB,MAAM,EAAE;QACN,SAAS,EAAE;YACT,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;YACf,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAmCvF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,eAAe,EAAE,CAAA;CAAE,CA+B3G;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,CAUrD"}
|
|
@@ -40,6 +40,14 @@ export function parseEventMessage(data) {
|
|
|
40
40
|
logger.info(`[parser] type=${message.message_type} content=${message.content} keys=${Object.keys(message).join(',')}`);
|
|
41
41
|
}
|
|
42
42
|
const resources = extractResources(message.message_type, message.content);
|
|
43
|
+
// Extract structured mentions
|
|
44
|
+
const mentions = message.mentions && message.mentions.length > 0
|
|
45
|
+
? message.mentions.map(m => ({
|
|
46
|
+
key: m.key,
|
|
47
|
+
name: m.name,
|
|
48
|
+
openId: m.id?.open_id,
|
|
49
|
+
}))
|
|
50
|
+
: undefined;
|
|
43
51
|
const parsed = {
|
|
44
52
|
messageId: message.message_id,
|
|
45
53
|
rootId: message.root_id ?? '',
|
|
@@ -48,6 +56,7 @@ export function parseEventMessage(data) {
|
|
|
48
56
|
msgType: message.message_type,
|
|
49
57
|
content: extractTextContent(message.message_type, message.content, message.mentions),
|
|
50
58
|
createTime: message.create_time,
|
|
59
|
+
mentions,
|
|
51
60
|
};
|
|
52
61
|
return { parsed, resources };
|
|
53
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../src/im/lark/message-parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAsC/C,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,UAAkB;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,MAAM,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;YAChC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,SAAS,GAAsB,EAAE,CAAC;YACxC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACzC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;oBACxF,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEjC,4CAA4C;IAC5C,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,YAAY,YAAY,OAAO,CAAC,OAAO,SAAS,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../src/im/lark/message-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { join, basename } from 'node:path';
|
|
|
4
4
|
import { logger } from '../utils/logger.js';
|
|
5
5
|
function getGitBranch(dir) {
|
|
6
6
|
try {
|
|
7
|
-
return execSync('git rev-parse --abbrev-ref HEAD', { cwd: dir, timeout: 5000, encoding: 'utf-8' }).trim();
|
|
7
|
+
return execSync('git rev-parse --abbrev-ref HEAD', { cwd: dir, timeout: 5000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
|
|
8
8
|
}
|
|
9
9
|
catch {
|
|
10
10
|
return 'unknown';
|
|
@@ -12,7 +12,7 @@ function getGitBranch(dir) {
|
|
|
12
12
|
}
|
|
13
13
|
function getWorktrees(repoPath) {
|
|
14
14
|
try {
|
|
15
|
-
const output = execSync('git worktree list --porcelain', { cwd: repoPath, timeout: 5000, encoding: 'utf-8' });
|
|
15
|
+
const output = execSync('git worktree list --porcelain', { cwd: repoPath, timeout: 5000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
|
|
16
16
|
const worktrees = [];
|
|
17
17
|
let currentPath = '';
|
|
18
18
|
let currentBranch = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-scanner.js","sourceRoot":"","sources":["../../src/services/project-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAc,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAY,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAS5C,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,iCAAiC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"project-scanner.js","sourceRoot":"","sources":["../../src/services/project-scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as sendToThread from './send-to-thread.js';
|
|
2
2
|
import * as getThreadMessages from './get-thread-messages.js';
|
|
3
3
|
import * as reactToMessage from './react-to-message.js';
|
|
4
|
+
import * as listBots from './list-bots.js';
|
|
4
5
|
export declare const tools: {
|
|
5
6
|
readonly send_to_thread: typeof sendToThread;
|
|
6
7
|
readonly get_thread_messages: typeof getThreadMessages;
|
|
7
8
|
readonly react_to_message: typeof reactToMessage;
|
|
9
|
+
readonly list_bots: typeof listBots;
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,KAAK;;;;;CAKR,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -2,9 +2,11 @@ import { TOOL_NAMES } from '../types.js';
|
|
|
2
2
|
import * as sendToThread from './send-to-thread.js';
|
|
3
3
|
import * as getThreadMessages from './get-thread-messages.js';
|
|
4
4
|
import * as reactToMessage from './react-to-message.js';
|
|
5
|
+
import * as listBots from './list-bots.js';
|
|
5
6
|
export const tools = {
|
|
6
7
|
[TOOL_NAMES.SEND_TO_THREAD]: sendToThread,
|
|
7
8
|
[TOOL_NAMES.GET_THREAD_MESSAGES]: getThreadMessages,
|
|
8
9
|
[TOOL_NAMES.REACT_TO_MESSAGE]: reactToMessage,
|
|
10
|
+
[TOOL_NAMES.LIST_BOTS]: listBots,
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,YAAY;IACzC,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,iBAAiB;IACnD,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,cAAc;IAC7C,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ;CACxB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const schema: z.ZodObject<{
|
|
3
|
+
session_id: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
session_id: string;
|
|
6
|
+
}, {
|
|
7
|
+
session_id: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const description = "List bots available in the current group chat. Returns bot names, open_ids, and CLI types for use with send_to_thread mentions.";
|
|
10
|
+
export declare function execute(args: z.infer<typeof schema>): Promise<{
|
|
11
|
+
error: string;
|
|
12
|
+
sessionId?: undefined;
|
|
13
|
+
chatId?: undefined;
|
|
14
|
+
bots?: undefined;
|
|
15
|
+
total?: undefined;
|
|
16
|
+
hint?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
sessionId: string;
|
|
19
|
+
chatId: string;
|
|
20
|
+
bots: {
|
|
21
|
+
name: string;
|
|
22
|
+
openId: string;
|
|
23
|
+
cliId: string;
|
|
24
|
+
isSelf: boolean;
|
|
25
|
+
}[];
|
|
26
|
+
total: number;
|
|
27
|
+
hint: string;
|
|
28
|
+
error?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
sessionId: string;
|
|
31
|
+
bots: {
|
|
32
|
+
name: string;
|
|
33
|
+
openId: string;
|
|
34
|
+
cliId: string;
|
|
35
|
+
isSelf: boolean;
|
|
36
|
+
}[];
|
|
37
|
+
total: number;
|
|
38
|
+
hint: string;
|
|
39
|
+
error?: undefined;
|
|
40
|
+
chatId?: undefined;
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=list-bots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-bots.d.ts","sourceRoot":"","sources":["../../src/tools/list-bots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,MAAM;;;;;;EAEjB,CAAC;AAEH,eAAO,MAAM,WAAW,oIAAoI,CAAC;AAmB7J,wBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDzD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import * as sessionStore from '../services/session-store.js';
|
|
5
|
+
import { listChatBotMembers } from '../im/lark/client.js';
|
|
6
|
+
import { config } from '../config.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
export const schema = z.object({
|
|
9
|
+
session_id: z.string().describe('Session ID — used to determine which group chat to query for bot members'),
|
|
10
|
+
});
|
|
11
|
+
export const description = 'List bots available in the current group chat. Returns bot names, open_ids, and CLI types for use with send_to_thread mentions.';
|
|
12
|
+
/** Read bots-info.json written by the daemon. */
|
|
13
|
+
function readBotInfo() {
|
|
14
|
+
const filePath = join(config.session.dataDir, 'bots-info.json');
|
|
15
|
+
if (!existsSync(filePath))
|
|
16
|
+
return [];
|
|
17
|
+
try {
|
|
18
|
+
return JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export async function execute(args) {
|
|
25
|
+
const session = sessionStore.getSession(args.session_id);
|
|
26
|
+
if (!session) {
|
|
27
|
+
return { error: `Session ${args.session_id} not found` };
|
|
28
|
+
}
|
|
29
|
+
const appId = session.larkAppId || config.lark.appId;
|
|
30
|
+
const botInfo = readBotInfo();
|
|
31
|
+
// Build a map of open_id → bot info for quick lookup
|
|
32
|
+
const botByOpenId = new Map();
|
|
33
|
+
for (const b of botInfo) {
|
|
34
|
+
if (b.botOpenId)
|
|
35
|
+
botByOpenId.set(b.botOpenId, b);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
// Query group chat members to find bots in this chat
|
|
39
|
+
const chatBots = await listChatBotMembers(appId, session.chatId);
|
|
40
|
+
const result = chatBots.map(cb => {
|
|
41
|
+
const info = botByOpenId.get(cb.openId);
|
|
42
|
+
return {
|
|
43
|
+
name: cb.name,
|
|
44
|
+
openId: cb.openId,
|
|
45
|
+
cliId: info?.cliId ?? 'unknown',
|
|
46
|
+
isSelf: info?.larkAppId === appId,
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
sessionId: args.session_id,
|
|
51
|
+
chatId: session.chatId,
|
|
52
|
+
bots: result,
|
|
53
|
+
total: result.length,
|
|
54
|
+
hint: 'Use send_to_thread with mentions parameter to @mention a bot. Pass open_id and name from this list.',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger.warn(`listChatBotMembers failed, falling back to bots-info.json: ${err.message}`);
|
|
59
|
+
// Fallback: return all known bots from the registry file
|
|
60
|
+
const result = botInfo
|
|
61
|
+
.filter(b => b.botOpenId)
|
|
62
|
+
.map(b => ({
|
|
63
|
+
name: b.cliId, // best-effort name when chat query fails
|
|
64
|
+
openId: b.botOpenId,
|
|
65
|
+
cliId: b.cliId,
|
|
66
|
+
isSelf: b.larkAppId === appId,
|
|
67
|
+
}));
|
|
68
|
+
return {
|
|
69
|
+
sessionId: args.session_id,
|
|
70
|
+
bots: result,
|
|
71
|
+
total: result.length,
|
|
72
|
+
hint: 'Use send_to_thread with mentions parameter to @mention a bot. Note: chat member query failed, showing all registered bots.',
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=list-bots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-bots.js","sourceRoot":"","sources":["../../src/tools/list-bots.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,32 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const schema: z.ZodObject<{
|
|
3
3
|
session_id: z.ZodString;
|
|
4
4
|
content: z.ZodString;
|
|
5
|
+
mentions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
6
|
+
open_id: z.ZodString;
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
open_id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
}, {
|
|
12
|
+
open_id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
}>, "many">>;
|
|
5
15
|
}, "strip", z.ZodTypeAny, {
|
|
6
16
|
content: string;
|
|
7
17
|
session_id: string;
|
|
18
|
+
mentions?: {
|
|
19
|
+
open_id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
}[] | undefined;
|
|
8
22
|
}, {
|
|
9
23
|
content: string;
|
|
10
24
|
session_id: string;
|
|
25
|
+
mentions?: {
|
|
26
|
+
open_id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
}[] | undefined;
|
|
11
29
|
}>;
|
|
12
|
-
export declare const description = "Send a plain text message to the Lark thread associated with a session. Just send plain text \u2014 formatting is handled automatically.";
|
|
30
|
+
export declare const description = "Send a plain text message to the Lark thread associated with a session. Just send plain text \u2014 formatting is handled automatically. Use optional mentions parameter to @mention other bots.";
|
|
13
31
|
export declare function execute(args: z.infer<typeof schema>): Promise<{
|
|
14
32
|
error: string;
|
|
15
33
|
success?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-to-thread.d.ts","sourceRoot":"","sources":["../../src/tools/send-to-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"send-to-thread.d.ts","sourceRoot":"","sources":["../../src/tools/send-to-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOjB,CAAC;AAEH,eAAO,MAAM,WAAW,qMAAgM,CAAC;AA+BzN,wBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC;;;;;;;;;;GAwDzD"}
|
|
@@ -6,8 +6,12 @@ import { logger } from '../utils/logger.js';
|
|
|
6
6
|
export const schema = z.object({
|
|
7
7
|
session_id: z.string().describe('Session ID for the active session'),
|
|
8
8
|
content: z.string().describe('Message content to send (plain text)'),
|
|
9
|
+
mentions: z.array(z.object({
|
|
10
|
+
open_id: z.string().describe('Open ID of the user/bot to @mention'),
|
|
11
|
+
name: z.string().describe('Display name for the @mention'),
|
|
12
|
+
})).optional().describe('Optional list of users/bots to @mention in the message. Get open_ids from list_bots tool.'),
|
|
9
13
|
});
|
|
10
|
-
export const description = 'Send a plain text message to the Lark thread associated with a session. Just send plain text — formatting is handled automatically.';
|
|
14
|
+
export const description = 'Send a plain text message to the Lark thread associated with a session. Just send plain text — formatting is handled automatically. Use optional mentions parameter to @mention other bots.';
|
|
11
15
|
/** Build a post content block from plain text, splitting by newlines into paragraphs */
|
|
12
16
|
function textToPostContent(text) {
|
|
13
17
|
return text.split('\n').map(line => [{ tag: 'text', text: line }]);
|
|
@@ -58,7 +62,16 @@ export async function execute(args) {
|
|
|
58
62
|
text = extracted;
|
|
59
63
|
}
|
|
60
64
|
const postContent = textToPostContent(text);
|
|
61
|
-
// Append
|
|
65
|
+
// Append explicit mentions (e.g. @mention other bots)
|
|
66
|
+
if (args.mentions && args.mentions.length > 0) {
|
|
67
|
+
if (postContent.length === 0)
|
|
68
|
+
postContent.push([]);
|
|
69
|
+
const lastLine = postContent[postContent.length - 1];
|
|
70
|
+
for (const m of args.mentions) {
|
|
71
|
+
lastLine.push({ tag: 'at', user_id: m.open_id });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Append @mention to session owner (human user)
|
|
62
75
|
if (mentionUser) {
|
|
63
76
|
if (postContent.length === 0)
|
|
64
77
|
postContent.push([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-to-thread.js","sourceRoot":"","sources":["../../src/tools/send-to-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,YAAY,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"send-to-thread.js","sourceRoot":"","sources":["../../src/tools/send-to-thread.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export interface LarkAttachment {
|
|
|
17
17
|
path: string;
|
|
18
18
|
name: string;
|
|
19
19
|
}
|
|
20
|
+
export interface LarkMention {
|
|
21
|
+
key: string;
|
|
22
|
+
name: string;
|
|
23
|
+
openId?: string;
|
|
24
|
+
}
|
|
20
25
|
export interface LarkMessage {
|
|
21
26
|
messageId: string;
|
|
22
27
|
rootId: string;
|
|
@@ -26,6 +31,7 @@ export interface LarkMessage {
|
|
|
26
31
|
content: string;
|
|
27
32
|
createTime: string;
|
|
28
33
|
attachments?: LarkAttachment[];
|
|
34
|
+
mentions?: LarkMention[];
|
|
29
35
|
}
|
|
30
36
|
export interface ScheduledTask {
|
|
31
37
|
id: string;
|
|
@@ -86,5 +92,6 @@ export declare const TOOL_NAMES: {
|
|
|
86
92
|
readonly SEND_TO_THREAD: "send_to_thread";
|
|
87
93
|
readonly GET_THREAD_MESSAGES: "get_thread_messages";
|
|
88
94
|
readonly REACT_TO_MESSAGE: "react_to_message";
|
|
95
|
+
readonly LIST_BOTS: "list_bots";
|
|
89
96
|
};
|
|
90
97
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAqEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,gBAAgB,EAAE,kBAAkB;IACpC,SAAS,EAAE,WAAW;CACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,MAAM;cACP,MAAM,WAAW,OAAO,EAAE,GAAG,IAAI;cAGjC,MAAM,WAAW,OAAO,EAAE,GAAG,IAAI;eAGhC,MAAM,WAAW,OAAO,EAAE,GAAG,IAAI;eAGjC,MAAM,WAAW,OAAO,EAAE,GAAG,IAAI;CAK7C,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -6,10 +6,9 @@ function fmt(msg, args) {
|
|
|
6
6
|
return `[${timestamp()}] ${msg}${extra}\n`;
|
|
7
7
|
}
|
|
8
8
|
// MCP server (index.ts) uses stdio transport — stdout must stay clean.
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
const
|
|
12
|
-
const out = isMcpMode ? process.stderr : process.stdout;
|
|
9
|
+
// Always use stderr for log output — it's safe in both MCP and daemon mode,
|
|
10
|
+
// and avoids misdetection (the MCP subprocess receives SESSION_DATA_DIR via --env).
|
|
11
|
+
const out = process.stderr;
|
|
13
12
|
export const logger = {
|
|
14
13
|
info(msg, ...args) {
|
|
15
14
|
out.write(fmt(`[INFO] ${msg}`, args));
|