botmux 2.29.0 → 2.30.0
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/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +19 -1
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/cli.js +79 -4
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +4 -2
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/session-manager.d.ts +11 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +22 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +41 -33
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +64 -5
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +20 -16
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +127 -22
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +16 -3
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +32 -4
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +14 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +101 -15
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/identity-cache.d.ts +64 -0
- package/dist/im/lark/identity-cache.d.ts.map +1 -0
- package/dist/im/lark/identity-cache.js +264 -0
- package/dist/im/lark/identity-cache.js.map +1 -0
- package/dist/services/observed-bots-store.d.ts +33 -0
- package/dist/services/observed-bots-store.d.ts.map +1 -0
- package/dist/services/observed-bots-store.js +98 -0
- package/dist/services/observed-bots-store.js.map +1 -0
- package/dist/setup/verify-permissions.d.ts +5 -0
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +11 -3
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/utils/user-token.js +1 -1
- package/dist/utils/user-token.js.map +1 -1
- package/package.json +4 -3
|
@@ -33,6 +33,20 @@ export declare function updateBotOpenIdCrossRef(dataDir: string, larkAppId: stri
|
|
|
33
33
|
open_id?: string;
|
|
34
34
|
};
|
|
35
35
|
}>): void;
|
|
36
|
+
/**
|
|
37
|
+
* If `message` is a /introduce command, side-effect it (record observed bots
|
|
38
|
+
* + send ack) and return `true` so the caller skips normal CLI routing.
|
|
39
|
+
*
|
|
40
|
+
* Consumed without side effects (still returns true) when:
|
|
41
|
+
* - sender is not in allowedUsers — silent drop, do not surface "无操作权限"
|
|
42
|
+
* - mentions[] minus self is empty — nothing to learn, ignore quietly
|
|
43
|
+
*
|
|
44
|
+
* Writes ALL mentions including self to the store. Each receiving bot's
|
|
45
|
+
* daemon owns its own per-observer file (see observed-bots-store), so the
|
|
46
|
+
* self entry is the only authoritative record of this app's own open_id
|
|
47
|
+
* in the per-observer view — useful for `botmux bots list` self-identification.
|
|
48
|
+
*/
|
|
49
|
+
export declare function tryHandleIntroduceCommand(larkAppId: string, message: any, senderOpenId: string | undefined, isAllowed: boolean): Promise<boolean>;
|
|
36
50
|
/** Check if the bot was @mentioned in this message */
|
|
37
51
|
export declare function isBotMentioned(larkAppId: string, message: any, _senderOpenId: string | undefined): boolean;
|
|
38
52
|
export declare function canTalk(larkAppId: string, chatId: string | undefined, senderOpenId: string | undefined): boolean;
|
|
@@ -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":"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"}
|
|
@@ -12,6 +12,8 @@ import { getChatInfo, getChatMode, replyMessage, sendUserMessage } from './clien
|
|
|
12
12
|
import { logger } from '../../utils/logger.js';
|
|
13
13
|
import { parseForceTopicInvocation } from '../../core/command-handler.js';
|
|
14
14
|
import { stripLeadingMentions } from './message-parser.js';
|
|
15
|
+
import { recordObservedBots } from '../../services/observed-bots-store.js';
|
|
16
|
+
import { BOTMUX_REQUIRED_SCOPES, buildScopeDeepLink } from '../../setup/verify-permissions.js';
|
|
15
17
|
// ─── Bot identity ─────────────────────────────────────────────────────────
|
|
16
18
|
/** Set the bot's open_id. Callers should also call writeBotInfoFile() to persist. */
|
|
17
19
|
export function setBotOpenId(larkAppId, id) {
|
|
@@ -168,28 +170,34 @@ export async function checkRequiredScopes(larkAppId) {
|
|
|
168
170
|
logger.debug(`[${larkAppId}] scope check inconclusive: scopes array empty or shape unexpected — skipping`);
|
|
169
171
|
return;
|
|
170
172
|
}
|
|
171
|
-
const grantedScopes = scopesRaw.map(s => typeof s === 'string' ? s : s?.scope).filter(Boolean);
|
|
172
|
-
|
|
173
|
-
|
|
173
|
+
const grantedScopes = new Set(scopesRaw.map(s => typeof s === 'string' ? s : s?.scope).filter(Boolean));
|
|
174
|
+
// Diff against the canonical list. Critical-missing is the main signal;
|
|
175
|
+
// non-critical is mentioned only when something critical is also missing,
|
|
176
|
+
// so single-bot deployments don't get nagged about `include_bot:readonly`.
|
|
177
|
+
const missingCritical = BOTMUX_REQUIRED_SCOPES.filter(s => s.critical && !grantedScopes.has(s.name));
|
|
178
|
+
const missingOptional = BOTMUX_REQUIRED_SCOPES.filter(s => !s.critical && !grantedScopes.has(s.name));
|
|
179
|
+
if (missingCritical.length === 0) {
|
|
180
|
+
logger.info(`[${larkAppId}] all critical scopes granted (${BOTMUX_REQUIRED_SCOPES.filter(s => s.critical).length} checked)`);
|
|
174
181
|
return;
|
|
175
182
|
}
|
|
176
|
-
//
|
|
177
|
-
|
|
178
|
-
|
|
183
|
+
// Log + DM consolidated message listing all missing critical scopes.
|
|
184
|
+
const summaryLine = missingCritical.map(s => `${s.name} (${s.desc})`).join('、');
|
|
185
|
+
logger.error(`[${larkAppId}] 缺少 ${missingCritical.length} 项必需权限:${summaryLine}。` +
|
|
186
|
+
`botmux 核心功能(消息收发、附件下载、用户名解析等)会受影响。请到飞书开放平台 → 应用 → 权限管理里申请,开通后 \`botmux restart\`。`);
|
|
179
187
|
const adminOpenId = getAdminOpenId(bot);
|
|
180
188
|
if (!adminOpenId) {
|
|
181
189
|
logger.warn(`[${larkAppId}] no resolved admin open_id in allowedUsers; missing-scope warning visible only in daemon log`);
|
|
182
190
|
return;
|
|
183
191
|
}
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
await dmAdmin(larkAppId, adminOpenId, dm,
|
|
192
|
+
const criticalLines = missingCritical.map((s, i) => `${i + 1}. **${s.desc}** (\`${s.name}\`)\n ${buildScopeDeepLink(bot.config.larkAppId, s.name)}`).join('\n\n');
|
|
193
|
+
const optionalBlock = missingOptional.length > 0
|
|
194
|
+
? `\n\n**可选权限(建议一并开通)**:\n${missingOptional.map(s => `- ${s.desc} (\`${s.name}\`): ${buildScopeDeepLink(bot.config.larkAppId, s.name)}`).join('\n')}`
|
|
195
|
+
: '';
|
|
196
|
+
const dm = `⚠️ botmux 启动检查发现机器人 "${bot.botName ?? larkAppId}" 缺少 ${missingCritical.length} 项必需权限\n\n` +
|
|
197
|
+
`**操作步骤(点链接 → 申请开通 → 重启 daemon)**:\n\n` +
|
|
198
|
+
`${criticalLines}\n\n` +
|
|
199
|
+
`开通完成后执行 \`botmux restart\`,botmux 会再次自检并把结果发到这里。${optionalBlock}`;
|
|
200
|
+
await dmAdmin(larkAppId, adminOpenId, dm, `missing scopes: ${missingCritical.map(s => s.name).join(',')}`);
|
|
193
201
|
}
|
|
194
202
|
catch (err) {
|
|
195
203
|
logger.debug(`[${larkAppId}] scope check errored: ${err?.message ?? err}`);
|
|
@@ -313,6 +321,78 @@ export function updateBotOpenIdCrossRef(dataDir, larkAppId, mentionsList) {
|
|
|
313
321
|
}
|
|
314
322
|
}
|
|
315
323
|
}
|
|
324
|
+
// ─── /introduce collaboration handshake ──────────────────────────────────
|
|
325
|
+
//
|
|
326
|
+
// 用户在群里发 `@A @B /introduce`(顺序任意,带不带额外文本都行),每个被
|
|
327
|
+
// @ 的 bot 的 daemon 都会收到一份相同的 mentions[],里面自带每个被 @ 实体
|
|
328
|
+
// 的 (open_id, name)。我们把这些登记进按 chatId 分文件的 observed-bots-store,
|
|
329
|
+
// 后续 `botmux bots list` / `<available_bots>` 就能感知到非本机 daemon 启动
|
|
330
|
+
// 的协作 bot,并能 @ 回去。
|
|
331
|
+
//
|
|
332
|
+
// 飞书没有任何公开接口能列出群里 bot 的 open_id(chat-members/get 明文跳过
|
|
333
|
+
// bot 成员),这是当前条件下能拿到陌生 bot open_id 的唯一可靠路径。
|
|
334
|
+
/** Command-position match: after stripping leading @mentions, the remaining
|
|
335
|
+
* text must begin with `/introduce` (optionally followed by whitespace).
|
|
336
|
+
* This is the same approach `parseForceTopicInvocation` takes for /t /topic.
|
|
337
|
+
* Stricter than a bare token match — "please run /introduce" or similar
|
|
338
|
+
* quoted/explanatory text won't trigger. */
|
|
339
|
+
const INTRODUCE_RE = /^\/introduce(?:\s|$)/i;
|
|
340
|
+
/**
|
|
341
|
+
* If `message` is a /introduce command, side-effect it (record observed bots
|
|
342
|
+
* + send ack) and return `true` so the caller skips normal CLI routing.
|
|
343
|
+
*
|
|
344
|
+
* Consumed without side effects (still returns true) when:
|
|
345
|
+
* - sender is not in allowedUsers — silent drop, do not surface "无操作权限"
|
|
346
|
+
* - mentions[] minus self is empty — nothing to learn, ignore quietly
|
|
347
|
+
*
|
|
348
|
+
* Writes ALL mentions including self to the store. Each receiving bot's
|
|
349
|
+
* daemon owns its own per-observer file (see observed-bots-store), so the
|
|
350
|
+
* self entry is the only authoritative record of this app's own open_id
|
|
351
|
+
* in the per-observer view — useful for `botmux bots list` self-identification.
|
|
352
|
+
*/
|
|
353
|
+
export async function tryHandleIntroduceCommand(larkAppId, message, senderOpenId, isAllowed) {
|
|
354
|
+
const text = extractMessageTextForRouting(message);
|
|
355
|
+
if (!text)
|
|
356
|
+
return false;
|
|
357
|
+
// Strip leading @<mention> tokens (using the message's mentions list to
|
|
358
|
+
// tolerate names with spaces) before checking the command position.
|
|
359
|
+
const stripped = stripLeadingMentions(text.trim(), message?.mentions ?? []);
|
|
360
|
+
if (!INTRODUCE_RE.test(stripped))
|
|
361
|
+
return false;
|
|
362
|
+
if (!isAllowed) {
|
|
363
|
+
logger.debug(`[${larkAppId}] /introduce from non-allowed user ${senderOpenId} — silent drop`);
|
|
364
|
+
return true;
|
|
365
|
+
}
|
|
366
|
+
const selfOpenId = getBot(larkAppId).botOpenId;
|
|
367
|
+
const rawMentions = message.mentions ?? [];
|
|
368
|
+
const all = rawMentions
|
|
369
|
+
.map(m => ({ openId: m.id?.open_id ?? '', name: m.name ?? '' }))
|
|
370
|
+
.filter(m => m.openId && m.name);
|
|
371
|
+
const hasExternal = all.some(m => m.openId !== selfOpenId);
|
|
372
|
+
if (!hasExternal) {
|
|
373
|
+
logger.debug(`[${larkAppId}] /introduce ignored: no external bot in mentions`);
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
const chatId = message.chat_id;
|
|
377
|
+
try {
|
|
378
|
+
// Persist to the observer-scoped store: these open_ids are scoped to the
|
|
379
|
+
// receiving app (larkAppId), so they're correct for THIS daemon to use
|
|
380
|
+
// when @-mentioning back.
|
|
381
|
+
recordObservedBots(config.session.dataDir, larkAppId, chatId, all, 'introduce');
|
|
382
|
+
}
|
|
383
|
+
catch (err) {
|
|
384
|
+
logger.warn(`[${larkAppId}] /introduce: failed to persist observed bots: ${err}`);
|
|
385
|
+
}
|
|
386
|
+
const items = all.map(m => `@${m.name}`).join(' ');
|
|
387
|
+
const ackText = `✅ 已认识本群 ${all.length} 个伙伴:${items}`;
|
|
388
|
+
try {
|
|
389
|
+
await replyMessage(larkAppId, message.message_id, ackText);
|
|
390
|
+
}
|
|
391
|
+
catch (err) {
|
|
392
|
+
logger.warn(`[${larkAppId}] /introduce ack failed: ${err}`);
|
|
393
|
+
}
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
316
396
|
// ─── @mention detection ──────────────────────────────────────────────────
|
|
317
397
|
/** Check if the bot was @mentioned in this message */
|
|
318
398
|
export function isBotMentioned(larkAppId, message, _senderOpenId) {
|
|
@@ -607,6 +687,12 @@ export function startLarkEventDispatcher(larkAppId, larkAppSecret, handlers) {
|
|
|
607
687
|
}
|
|
608
688
|
const senderOpenId = sender?.sender_id?.open_id;
|
|
609
689
|
const isAllowed = canTalk(larkAppId, chatId, senderOpenId);
|
|
690
|
+
// /introduce — collaboration handshake. Intercept before any routing
|
|
691
|
+
// so the command never reaches a CLI session (each @ed bot's daemon
|
|
692
|
+
// independently records the mentions[] open_ids + names).
|
|
693
|
+
if (await tryHandleIntroduceCommand(larkAppId, message, senderOpenId, isAllowed)) {
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
610
696
|
logger.debug('Received message:', message);
|
|
611
697
|
// Diagnostic: record the Lark quote-bubble UI quirk where root_id
|
|
612
698
|
// appears without thread_id. decideRouting now treats this as
|
|
@@ -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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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export type IdentityType = 'user' | 'bot' | 'app' | 'unknown';
|
|
2
|
+
export interface IdentityRecord {
|
|
3
|
+
openId: string;
|
|
4
|
+
type: IdentityType;
|
|
5
|
+
name?: string;
|
|
6
|
+
source: 'sender' | 'mention' | 'contact_api' | 'bot_cross_ref' | 'bot_info';
|
|
7
|
+
updatedAt: number;
|
|
8
|
+
}
|
|
9
|
+
/** Best-effort flush on shutdown — pairs with the debounce above. */
|
|
10
|
+
export declare function flushIdentityCacheSync(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Merge a partial identity record into the cache. Existing `name` is preserved
|
|
13
|
+
* unless the incoming record carries a real name (no clobbering). Existing
|
|
14
|
+
* `type` is only overridden when the incoming value is more specific
|
|
15
|
+
* (anything other than `unknown`).
|
|
16
|
+
*/
|
|
17
|
+
export declare function recordIdentity(larkAppId: string, rec: {
|
|
18
|
+
openId: string;
|
|
19
|
+
type?: IdentityType;
|
|
20
|
+
name?: string;
|
|
21
|
+
source?: IdentityRecord['source'];
|
|
22
|
+
}): void;
|
|
23
|
+
/**
|
|
24
|
+
* Learn (open_id, name) pairs from a parsed message's mentions. Free path —
|
|
25
|
+
* no API call. Mentions don't carry sender_type, so we leave `type` as
|
|
26
|
+
* `unknown` and let a subsequent sender event (or bot cross-ref lookup) tighten
|
|
27
|
+
* it.
|
|
28
|
+
*/
|
|
29
|
+
export declare function learnFromMentions(larkAppId: string, mentions?: Array<{
|
|
30
|
+
name: string;
|
|
31
|
+
openId?: string;
|
|
32
|
+
}>): void;
|
|
33
|
+
export declare function getIdentity(larkAppId: string, openId: string): IdentityRecord | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Best-effort name resolution. Returns the cached name on hit; on miss for a
|
|
36
|
+
* user open_id, calls `contact.v3.user.get` with a budget and updates the
|
|
37
|
+
* cache. Bots/apps skip the API (no public contact endpoint). Failures
|
|
38
|
+
* (permission denied, network, timeout) degrade silently to `undefined`.
|
|
39
|
+
*
|
|
40
|
+
* When the bot lacks `contact:user.base:readonly`, the first 99991672 from
|
|
41
|
+
* the API trips a per-app circuit breaker so subsequent calls short-circuit
|
|
42
|
+
* without burning quota.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveName(larkAppId: string, openId: string): Promise<string | undefined>;
|
|
45
|
+
export interface ResolvedSender {
|
|
46
|
+
openId: string;
|
|
47
|
+
type: 'user' | 'bot';
|
|
48
|
+
name?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolve sender identity for prompt injection.
|
|
52
|
+
*
|
|
53
|
+
* Inputs are taken directly from the Lark event (`sender_id.open_id`,
|
|
54
|
+
* `sender_type` ∈ {user, app, bot}). We normalize Lark's `app`/`bot` to our
|
|
55
|
+
* prompt vocabulary (`bot`), record the sender event in the cache for future
|
|
56
|
+
* lookups, and best-effort resolve the display name. Caller-supplied hints
|
|
57
|
+
* (e.g. a known foreign-bot display name from `bot-openids-${appId}.json`)
|
|
58
|
+
* win over cache.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveSender(larkAppId: string, openId: string | undefined, senderType: string | undefined, hint?: {
|
|
61
|
+
name?: string;
|
|
62
|
+
type?: 'user' | 'bot';
|
|
63
|
+
}): Promise<ResolvedSender | undefined>;
|
|
64
|
+
//# sourceMappingURL=identity-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-cache.d.ts","sourceRoot":"","sources":["../../../src/im/lark/identity-cache.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,eAAe,GAAG,UAAU,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAkED,qEAAqE;AACrE,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;CAAE,GAC7F,IAAI,CAmBN;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAClD,IAAI,CAMN;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEzF;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyChG;AA8CD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,GAC9C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAmBrC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User / bot identity cache for prompt injection.
|
|
3
|
+
*
|
|
4
|
+
* Lark events only carry the sender's open_id (no name). To inject a
|
|
5
|
+
* `<sender name="张三" ... />` tag into the CLI prompt we need a name → open_id
|
|
6
|
+
* dictionary. Three population sources, ordered by cost:
|
|
7
|
+
*
|
|
8
|
+
* 1. mentions — free. Lark mention payloads carry (name, open_id) pairs,
|
|
9
|
+
* so every @ that flows through us teaches the cache.
|
|
10
|
+
* 2. sender — free, but only learns open_id + type, not name.
|
|
11
|
+
* 3. contact API — `contact.v3.user.get` for users; only used as fallback
|
|
12
|
+
* when 1+2 didn't give us a name. Requires `contact:user.base:readonly`
|
|
13
|
+
* (already in `BOTMUX_REQUIRED_SCOPES`).
|
|
14
|
+
*
|
|
15
|
+
* Scope: per Lark app. Open_id values are app-scoped on Lark's side, so the
|
|
16
|
+
* cache file follows the same `identities-${larkAppId}.json` shape as the
|
|
17
|
+
* existing `bot-openids-${larkAppId}.json`. The two files are deliberately
|
|
18
|
+
* kept separate: bot-openids doubles as a "trusted botmux peer" routing
|
|
19
|
+
* signal, and merging would entangle that with the display-name dictionary.
|
|
20
|
+
*/
|
|
21
|
+
import { readFileSync, writeFileSync, mkdirSync, renameSync, existsSync } from 'node:fs';
|
|
22
|
+
import { join, dirname } from 'node:path';
|
|
23
|
+
import { getBotClient } from '../../bot-registry.js';
|
|
24
|
+
import { config } from '../../config.js';
|
|
25
|
+
import { logger } from '../../utils/logger.js';
|
|
26
|
+
const stores = new Map();
|
|
27
|
+
const inflight = new Map();
|
|
28
|
+
const scopeUnavailable = new Set();
|
|
29
|
+
const dirty = new Set();
|
|
30
|
+
let flushTimer = null;
|
|
31
|
+
const FLUSH_DEBOUNCE_MS = 2_000;
|
|
32
|
+
const RESOLVE_BUDGET_MS = 800;
|
|
33
|
+
function cacheFile(larkAppId) {
|
|
34
|
+
return join(config.session.dataDir, `identities-${larkAppId}.json`);
|
|
35
|
+
}
|
|
36
|
+
function getStore(larkAppId) {
|
|
37
|
+
let store = stores.get(larkAppId);
|
|
38
|
+
if (store)
|
|
39
|
+
return store;
|
|
40
|
+
store = new Map();
|
|
41
|
+
stores.set(larkAppId, store);
|
|
42
|
+
try {
|
|
43
|
+
const fp = cacheFile(larkAppId);
|
|
44
|
+
if (existsSync(fp)) {
|
|
45
|
+
const data = JSON.parse(readFileSync(fp, 'utf-8'));
|
|
46
|
+
let n = 0;
|
|
47
|
+
for (const rec of data) {
|
|
48
|
+
if (rec?.openId) {
|
|
49
|
+
store.set(rec.openId, rec);
|
|
50
|
+
n++;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (n > 0)
|
|
54
|
+
logger.info(`[identity] hydrated ${n} records for ${larkAppId} from ${fp}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger.warn(`[identity] failed to hydrate ${larkAppId}: ${err?.message ?? err}`);
|
|
59
|
+
}
|
|
60
|
+
return store;
|
|
61
|
+
}
|
|
62
|
+
function schedulePersist(larkAppId) {
|
|
63
|
+
dirty.add(larkAppId);
|
|
64
|
+
if (flushTimer)
|
|
65
|
+
return;
|
|
66
|
+
flushTimer = setTimeout(() => {
|
|
67
|
+
flushTimer = null;
|
|
68
|
+
flushAll();
|
|
69
|
+
}, FLUSH_DEBOUNCE_MS);
|
|
70
|
+
}
|
|
71
|
+
function flushAll() {
|
|
72
|
+
const appIds = [...dirty];
|
|
73
|
+
dirty.clear();
|
|
74
|
+
for (const appId of appIds) {
|
|
75
|
+
const store = stores.get(appId);
|
|
76
|
+
if (!store)
|
|
77
|
+
continue;
|
|
78
|
+
try {
|
|
79
|
+
const fp = cacheFile(appId);
|
|
80
|
+
mkdirSync(dirname(fp), { recursive: true });
|
|
81
|
+
const tmp = `${fp}.tmp`;
|
|
82
|
+
writeFileSync(tmp, JSON.stringify([...store.values()], null, 2) + '\n');
|
|
83
|
+
renameSync(tmp, fp);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
logger.warn(`[identity] flush ${appId} failed: ${err?.message ?? err}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** Best-effort flush on shutdown — pairs with the debounce above. */
|
|
91
|
+
export function flushIdentityCacheSync() {
|
|
92
|
+
if (flushTimer) {
|
|
93
|
+
clearTimeout(flushTimer);
|
|
94
|
+
flushTimer = null;
|
|
95
|
+
}
|
|
96
|
+
flushAll();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Merge a partial identity record into the cache. Existing `name` is preserved
|
|
100
|
+
* unless the incoming record carries a real name (no clobbering). Existing
|
|
101
|
+
* `type` is only overridden when the incoming value is more specific
|
|
102
|
+
* (anything other than `unknown`).
|
|
103
|
+
*/
|
|
104
|
+
export function recordIdentity(larkAppId, rec) {
|
|
105
|
+
if (!rec.openId)
|
|
106
|
+
return;
|
|
107
|
+
const store = getStore(larkAppId);
|
|
108
|
+
const existing = store.get(rec.openId);
|
|
109
|
+
const incomingType = rec.type && rec.type !== 'unknown' ? rec.type : undefined;
|
|
110
|
+
const merged = {
|
|
111
|
+
openId: rec.openId,
|
|
112
|
+
type: incomingType ?? existing?.type ?? 'unknown',
|
|
113
|
+
name: rec.name ?? existing?.name,
|
|
114
|
+
source: rec.source ?? existing?.source ?? 'sender',
|
|
115
|
+
updatedAt: Date.now(),
|
|
116
|
+
};
|
|
117
|
+
// Skip persist when nothing meaningful changed — avoids disk churn from
|
|
118
|
+
// every sender event re-bumping updatedAt.
|
|
119
|
+
if (existing && existing.type === merged.type && existing.name === merged.name) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
store.set(rec.openId, merged);
|
|
123
|
+
schedulePersist(larkAppId);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Learn (open_id, name) pairs from a parsed message's mentions. Free path —
|
|
127
|
+
* no API call. Mentions don't carry sender_type, so we leave `type` as
|
|
128
|
+
* `unknown` and let a subsequent sender event (or bot cross-ref lookup) tighten
|
|
129
|
+
* it.
|
|
130
|
+
*/
|
|
131
|
+
export function learnFromMentions(larkAppId, mentions) {
|
|
132
|
+
if (!mentions || mentions.length === 0)
|
|
133
|
+
return;
|
|
134
|
+
for (const m of mentions) {
|
|
135
|
+
if (!m.openId || !m.name)
|
|
136
|
+
continue;
|
|
137
|
+
recordIdentity(larkAppId, { openId: m.openId, name: m.name, source: 'mention' });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
export function getIdentity(larkAppId, openId) {
|
|
141
|
+
return getStore(larkAppId).get(openId);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Best-effort name resolution. Returns the cached name on hit; on miss for a
|
|
145
|
+
* user open_id, calls `contact.v3.user.get` with a budget and updates the
|
|
146
|
+
* cache. Bots/apps skip the API (no public contact endpoint). Failures
|
|
147
|
+
* (permission denied, network, timeout) degrade silently to `undefined`.
|
|
148
|
+
*
|
|
149
|
+
* When the bot lacks `contact:user.base:readonly`, the first 99991672 from
|
|
150
|
+
* the API trips a per-app circuit breaker so subsequent calls short-circuit
|
|
151
|
+
* without burning quota.
|
|
152
|
+
*/
|
|
153
|
+
export async function resolveName(larkAppId, openId) {
|
|
154
|
+
if (!openId)
|
|
155
|
+
return undefined;
|
|
156
|
+
const cached = getIdentity(larkAppId, openId);
|
|
157
|
+
if (cached?.name)
|
|
158
|
+
return cached.name;
|
|
159
|
+
if (cached?.type === 'bot' || cached?.type === 'app')
|
|
160
|
+
return undefined;
|
|
161
|
+
if (scopeUnavailable.has(larkAppId))
|
|
162
|
+
return undefined;
|
|
163
|
+
const key = `${larkAppId}:${openId}`;
|
|
164
|
+
let pending = inflight.get(key);
|
|
165
|
+
if (!pending) {
|
|
166
|
+
pending = fetchUserName(larkAppId, openId);
|
|
167
|
+
inflight.set(key, pending);
|
|
168
|
+
// Identity-guarded cleanup. A request that times out is evicted by the
|
|
169
|
+
// catch below; if its underlying fetch later settles, we must NOT clobber
|
|
170
|
+
// whatever inflight entry now lives there — that entry belongs to a
|
|
171
|
+
// newer caller. Comparing by reference catches both this race and the
|
|
172
|
+
// simple "settled normally" case.
|
|
173
|
+
//
|
|
174
|
+
// `.then(cleanup, cleanup)` (not `.finally`) so a future fetchUserName
|
|
175
|
+
// refactor that rejects can't leave the returned cleanup promise as an
|
|
176
|
+
// unhandled rejection. Current fetchUserName swallows everything to
|
|
177
|
+
// logger.debug, but that's an undocumented invariant we shouldn't rely on.
|
|
178
|
+
const local = pending;
|
|
179
|
+
const cleanup = () => { if (inflight.get(key) === local)
|
|
180
|
+
inflight.delete(key); };
|
|
181
|
+
void local.then(cleanup, cleanup);
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
await withTimeout(pending, RESOLVE_BUDGET_MS);
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// withTimeout rejected → either the budget elapsed or the underlying
|
|
188
|
+
// request errored. If the Lark SDK call hangs forever (no built-in
|
|
189
|
+
// request timeout) the cleanup wired via local.then(...) above never
|
|
190
|
+
// fires, and every subsequent caller would re-wait the full budget.
|
|
191
|
+
// Evict here so the next caller starts a fresh attempt. Same identity
|
|
192
|
+
// guard: only evict if the entry still IS our promise — otherwise we'd
|
|
193
|
+
// race-clobber a newer caller's entry that arrived between our await
|
|
194
|
+
// rejection and this line.
|
|
195
|
+
if (inflight.get(key) === pending)
|
|
196
|
+
inflight.delete(key);
|
|
197
|
+
}
|
|
198
|
+
return getIdentity(larkAppId, openId)?.name;
|
|
199
|
+
}
|
|
200
|
+
async function fetchUserName(larkAppId, openId) {
|
|
201
|
+
try {
|
|
202
|
+
const c = getBotClient(larkAppId);
|
|
203
|
+
const res = await c.contact.v3.user.get({
|
|
204
|
+
path: { user_id: openId },
|
|
205
|
+
params: { user_id_type: 'open_id' },
|
|
206
|
+
});
|
|
207
|
+
if (res?.code === 0) {
|
|
208
|
+
const name = res.data?.user?.name;
|
|
209
|
+
if (name) {
|
|
210
|
+
recordIdentity(larkAppId, { openId, name, type: 'user', source: 'contact_api' });
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
// 99991672 = app身份缺权限 (contact:user.base:readonly 没开)
|
|
215
|
+
if (res?.code === 99991672) {
|
|
216
|
+
if (!scopeUnavailable.has(larkAppId)) {
|
|
217
|
+
scopeUnavailable.add(larkAppId);
|
|
218
|
+
logger.warn(`[identity] [${larkAppId}] contact:user.base:readonly 未开通,sender name 解析将降级到 open_id (code=99991672)`);
|
|
219
|
+
}
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
logger.debug(`[identity] contact.user.get(${openId.substring(0, 12)}) code=${res?.code} msg=${res?.msg ?? ''}`);
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
logger.debug(`[identity] contact.user.get(${openId.substring(0, 12)}) failed: ${err?.message ?? err}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function withTimeout(p, ms) {
|
|
229
|
+
return new Promise((resolve, reject) => {
|
|
230
|
+
const t = setTimeout(() => reject(new Error('identity-resolve-timeout')), ms);
|
|
231
|
+
p.then(v => { clearTimeout(t); resolve(v); }, e => { clearTimeout(t); reject(e); });
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Resolve sender identity for prompt injection.
|
|
236
|
+
*
|
|
237
|
+
* Inputs are taken directly from the Lark event (`sender_id.open_id`,
|
|
238
|
+
* `sender_type` ∈ {user, app, bot}). We normalize Lark's `app`/`bot` to our
|
|
239
|
+
* prompt vocabulary (`bot`), record the sender event in the cache for future
|
|
240
|
+
* lookups, and best-effort resolve the display name. Caller-supplied hints
|
|
241
|
+
* (e.g. a known foreign-bot display name from `bot-openids-${appId}.json`)
|
|
242
|
+
* win over cache.
|
|
243
|
+
*/
|
|
244
|
+
export async function resolveSender(larkAppId, openId, senderType, hint) {
|
|
245
|
+
if (!openId)
|
|
246
|
+
return undefined;
|
|
247
|
+
let type;
|
|
248
|
+
if (hint?.type) {
|
|
249
|
+
type = hint.type;
|
|
250
|
+
}
|
|
251
|
+
else if (senderType === 'app' || senderType === 'bot') {
|
|
252
|
+
type = 'bot';
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
type = 'user';
|
|
256
|
+
}
|
|
257
|
+
recordIdentity(larkAppId, { openId, type, source: 'sender' });
|
|
258
|
+
let name = hint?.name ?? getIdentity(larkAppId, openId)?.name;
|
|
259
|
+
if (!name && type === 'user') {
|
|
260
|
+
name = await resolveName(larkAppId, openId);
|
|
261
|
+
}
|
|
262
|
+
return { openId, type, name };
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=identity-cache.js.map
|