botmux 2.23.2 → 2.23.3-canary.2

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.
Files changed (56) hide show
  1. package/dist/adapters/backend/tmux-backend.d.ts +1 -0
  2. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  3. package/dist/adapters/backend/tmux-backend.js +23 -0
  4. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  5. package/dist/adapters/backend/tmux-pipe-backend.d.ts +1 -0
  6. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  7. package/dist/adapters/backend/tmux-pipe-backend.js +25 -0
  8. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  9. package/dist/bot-registry.d.ts +26 -0
  10. package/dist/bot-registry.d.ts.map +1 -1
  11. package/dist/bot-registry.js +21 -0
  12. package/dist/bot-registry.js.map +1 -1
  13. package/dist/core/command-handler.d.ts.map +1 -1
  14. package/dist/core/command-handler.js +12 -10
  15. package/dist/core/command-handler.js.map +1 -1
  16. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  17. package/dist/core/dashboard-ipc-server.js +73 -53
  18. package/dist/core/dashboard-ipc-server.js.map +1 -1
  19. package/dist/daemon.d.ts.map +1 -1
  20. package/dist/daemon.js +108 -11
  21. package/dist/daemon.js.map +1 -1
  22. package/dist/dashboard/web/app.js +3 -0
  23. package/dist/dashboard/web/app.js.map +1 -1
  24. package/dist/dashboard/web/bot-defaults.d.ts +2 -0
  25. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -0
  26. package/dist/dashboard/web/bot-defaults.js +201 -0
  27. package/dist/dashboard/web/bot-defaults.js.map +1 -0
  28. package/dist/dashboard-web/app.js +113 -72
  29. package/dist/dashboard-web/index.html +1 -0
  30. package/dist/dashboard-web/style.css +12 -0
  31. package/dist/dashboard.js +43 -0
  32. package/dist/dashboard.js.map +1 -1
  33. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  34. package/dist/im/lark/event-dispatcher.js +13 -3
  35. package/dist/im/lark/event-dispatcher.js.map +1 -1
  36. package/dist/services/chat-first-seen-store.d.ts +18 -3
  37. package/dist/services/chat-first-seen-store.d.ts.map +1 -1
  38. package/dist/services/chat-first-seen-store.js +20 -14
  39. package/dist/services/chat-first-seen-store.js.map +1 -1
  40. package/dist/services/group-creator.d.ts +23 -0
  41. package/dist/services/group-creator.d.ts.map +1 -0
  42. package/dist/services/group-creator.js +75 -0
  43. package/dist/services/group-creator.js.map +1 -0
  44. package/dist/services/oncall-store.d.ts +79 -5
  45. package/dist/services/oncall-store.d.ts.map +1 -1
  46. package/dist/services/oncall-store.js +243 -43
  47. package/dist/services/oncall-store.js.map +1 -1
  48. package/dist/utils/bot-mention-dedup.d.ts +11 -0
  49. package/dist/utils/bot-mention-dedup.d.ts.map +1 -1
  50. package/dist/utils/bot-mention-dedup.js +18 -0
  51. package/dist/utils/bot-mention-dedup.js.map +1 -1
  52. package/dist/utils/file-lock.d.ts +2 -0
  53. package/dist/utils/file-lock.d.ts.map +1 -0
  54. package/dist/utils/file-lock.js +114 -0
  55. package/dist/utils/file-lock.js.map +1 -0
  56. package/package.json +1 -1
@@ -6,6 +6,7 @@ import { logger } from '../utils/logger.js';
6
6
  import * as sessionStore from '../services/session-store.js';
7
7
  import * as scheduleStore from '../services/schedule-store.js';
8
8
  import * as groupsStore from '../services/groups-store.js';
9
+ import { createGroupWithBots } from '../services/group-creator.js';
9
10
  import * as oncallStore from '../services/oncall-store.js';
10
11
  import * as chatFirstSeenStore from '../services/chat-first-seen-store.js';
11
12
  import * as scheduler from './scheduler.js';
@@ -306,7 +307,7 @@ ipcRoute('PUT', '/api/oncall/:chatId', async (req, res, p) => {
306
307
  }
307
308
  if (!isDir)
308
309
  return jsonRes(res, 400, { ok: false, error: `路径不是目录:${resolvedPath}` });
309
- const r = oncallStore.bindOncall(cachedLarkAppId, p.chatId, workingDir);
310
+ const r = await oncallStore.bindOncall(cachedLarkAppId, p.chatId, workingDir);
310
311
  if (!r.ok)
311
312
  return jsonRes(res, 400, r);
312
313
  jsonRes(res, 200, { ok: true, entry: r.entry, created: r.created, resolvedPath });
@@ -314,10 +315,71 @@ ipcRoute('PUT', '/api/oncall/:chatId', async (req, res, p) => {
314
315
  ipcRoute('DELETE', '/api/oncall/:chatId', async (_req, res, p) => {
315
316
  if (!cachedLarkAppId)
316
317
  return jsonRes(res, 503, { error: 'larkAppId_not_set' });
317
- const r = oncallStore.unbindOncall(cachedLarkAppId, p.chatId);
318
+ // Idempotent: always succeeds. unbindOncall writes a tombstone into
319
+ // defaultOncallAutoboundChats so the auto-bind judge won't reinstate this
320
+ // chat on the next observation, even if it had no prior binding.
321
+ const r = await oncallStore.unbindOncall(cachedLarkAppId, p.chatId);
318
322
  if (!r.ok)
319
- return jsonRes(res, r.reason === 'not_bound' ? 404 : 400, r);
320
- jsonRes(res, 200, { ok: true });
323
+ return jsonRes(res, 400, r);
324
+ jsonRes(res, 200, { ok: true, wasBound: r.wasBound });
325
+ });
326
+ // ─── Per-bot defaultOncall (dashboard) ─────────────────────────────────────
327
+ // GET /api/bot-default-oncall → returns this daemon's current config
328
+ // PUT /api/bot-default-oncall body: { enabled, workingDir }
329
+ //
330
+ // Forward-only policy: enabling does not backfill or distinguish "old vs new"
331
+ // chats. Any group the bot is in — present or future — auto-binds on its
332
+ // next observed topic if it has no existing oncall binding and is not in
333
+ // the tombstone list. `since` is stamped purely as informational metadata
334
+ // (UI shows "上次启用时间").
335
+ ipcRoute('GET', '/api/bot-default-oncall', async (_req, res) => {
336
+ if (!cachedLarkAppId)
337
+ return jsonRes(res, 503, { error: 'larkAppId_not_set' });
338
+ const { defaultOncall, autoboundChats } = oncallStore.getBotDefaultOncall(cachedLarkAppId);
339
+ jsonRes(res, 200, {
340
+ larkAppId: cachedLarkAppId,
341
+ botName: getBotName(),
342
+ defaultOncall: defaultOncall ?? { enabled: false, workingDir: '', since: 0 },
343
+ autoboundChatCount: autoboundChats.length,
344
+ });
345
+ });
346
+ ipcRoute('PUT', '/api/bot-default-oncall', async (req, res) => {
347
+ if (!cachedLarkAppId)
348
+ return jsonRes(res, 503, { error: 'larkAppId_not_set' });
349
+ let body;
350
+ try {
351
+ body = await readJsonBody(req);
352
+ }
353
+ catch {
354
+ return jsonRes(res, 400, { ok: false, error: 'bad_json' });
355
+ }
356
+ const enabled = body.enabled === true;
357
+ const workingDir = typeof body.workingDir === 'string' ? body.workingDir.trim() : '';
358
+ // Validate workingDir when enabling. Allow blank workingDir only when
359
+ // disabling — the on-disk record keeps the last value so the UI can
360
+ // round-trip after a disable.
361
+ let resolvedPath = '';
362
+ if (enabled) {
363
+ if (!workingDir)
364
+ return jsonRes(res, 400, { ok: false, error: 'workingDir_required' });
365
+ resolvedPath = resolve(expandHome(workingDir));
366
+ if (!existsSync(resolvedPath)) {
367
+ return jsonRes(res, 400, { ok: false, error: `目录不存在:${resolvedPath}` });
368
+ }
369
+ let isDir = false;
370
+ try {
371
+ isDir = statSync(resolvedPath).isDirectory();
372
+ }
373
+ catch (e) {
374
+ return jsonRes(res, 400, { ok: false, error: `无法读取路径:${resolvedPath}(${e?.message ?? e})` });
375
+ }
376
+ if (!isDir)
377
+ return jsonRes(res, 400, { ok: false, error: `路径不是目录:${resolvedPath}` });
378
+ }
379
+ const r = await oncallStore.updateBotDefaultOncall(cachedLarkAppId, { enabled, workingDir });
380
+ if (!r.ok)
381
+ return jsonRes(res, 400, r);
382
+ jsonRes(res, 200, { ok: true, defaultOncall: r.defaultOncall, resolvedPath: resolvedPath || undefined });
321
383
  });
322
384
  // Create a brand-new chat with this bot as creator/owner and `larkAppIds` as
323
385
  // initial bot members. The dashboard's public route picks any online daemon
@@ -350,57 +412,15 @@ ipcRoute('POST', '/api/groups/create', async (req, res) => {
350
412
  ? body.notifyOwnerOpenId.trim()
351
413
  : null;
352
414
  try {
353
- const r = await groupsStore.createChat(cachedLarkAppId, {
415
+ const r = await createGroupWithBots({
416
+ creatorLarkAppId: cachedLarkAppId,
417
+ larkAppIds: body.larkAppIds,
354
418
  name,
355
- botIds: body.larkAppIds,
356
- userIds,
357
- });
358
- let ownerTransferredTo = null;
359
- let transferError = null;
360
- if (transferTo) {
361
- // Skip transfer if Feishu rejected the invite — transferring to a
362
- // non-member returns "user not in chat" anyway.
363
- if (r.invalidUserIds.includes(transferTo)) {
364
- transferError = 'invitee_rejected';
365
- }
366
- else {
367
- const tr = await groupsStore.transferChatOwner(cachedLarkAppId, r.chatId, transferTo);
368
- if (tr.ok)
369
- ownerTransferredTo = transferTo;
370
- else
371
- transferError = tr.error;
372
- }
373
- }
374
- // Send a bare @-mention into the new chat so the operator gets a Feishu
375
- // push notification — that's the most reliable way to make the chat
376
- // surface in their sidebar (membership alone isn't always enough on
377
- // mobile). Skipped if invite was rejected (non-member) or no notifyTo.
378
- let notifyMessageId = null;
379
- let notifyError = null;
380
- if (notifyTo) {
381
- if (r.invalidUserIds.includes(notifyTo)) {
382
- notifyError = 'invitee_rejected';
383
- }
384
- else {
385
- try {
386
- notifyMessageId = await sendMessage(cachedLarkAppId, r.chatId, `<at user_id="${notifyTo}"></at>`, 'text');
387
- }
388
- catch (e) {
389
- notifyError = e?.message ?? String(e);
390
- }
391
- }
392
- }
393
- jsonRes(res, 200, {
394
- ok: true,
395
- chatId: r.chatId,
396
- invalidBotIds: r.invalidBotIds,
397
- invalidUserIds: r.invalidUserIds,
398
- creator: cachedLarkAppId,
399
- ownerTransferredTo,
400
- transferError,
401
- notifyMessageId,
402
- notifyError,
419
+ userOpenIds: userIds,
420
+ transferOwnerTo: transferTo ?? undefined,
421
+ notifyOwnerOpenId: notifyTo ?? undefined,
403
422
  });
423
+ jsonRes(res, 200, r);
404
424
  }
405
425
  catch (e) {
406
426
  jsonRes(res, 502, { ok: false, error: String(e.message ?? e) });
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-ipc-server.js","sourceRoot":"","sources":["../../src/core/dashboard-ipc-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-ipc-server.js","sourceRoot":"","sources":["../../src/core/dashboard-ipc-server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAoBA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAm/BrD,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuMlE"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAsBA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4lCrD,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuMlE"}
package/dist/daemon.js CHANGED
@@ -6,10 +6,12 @@ import { fileURLToPath } from 'node:url';
6
6
  const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = dirname(__filename);
8
8
  import { config } from './config.js';
9
+ import { statSync } from 'node:fs';
9
10
  import { getChatMode, replyMessage, resolveAllowedUsers, sendMessage } from './im/lark/client.js';
10
11
  import { loadBotConfigs, registerBot, getBot, getAllBots, findOncallChatForAnyBot, isChatOncallBoundForAnyBot } from './bot-registry.js';
11
12
  import * as sessionStore from './services/session-store.js';
12
13
  import * as chatFirstSeenStore from './services/chat-first-seen-store.js';
14
+ import { autoBindOncallFromDefault } from './services/oncall-store.js';
13
15
  import * as scheduleStore from './services/schedule-store.js';
14
16
  import * as messageQueue from './services/message-queue.js';
15
17
  import { parseEventMessage, resolveNonsupportMessage, stripLeadingMentions } from './im/lark/message-parser.js';
@@ -27,10 +29,10 @@ import { saveFrozenCards } from './services/frozen-card-store.js';
27
29
  import { DAEMON_COMMANDS, PASSTHROUGH_COMMANDS, handleCommand, parseSlashCommandInvocation, parseForceTopicInvocation } from './core/command-handler.js';
28
30
  import { findInheritablePeer } from './core/inherit-peer.js';
29
31
  import { isCallbackUrl, handleCallbackUrl } from './utils/user-token.js';
30
- import { getSessionWorkingDir, getProjectScanDirs, downloadResources, formatAttachmentsHint, buildNewTopicPrompt, buildFollowUpContent, buildBridgeInputContent, buildReforkPrompt, getAvailableBots, restoreActiveSessions, executeScheduledTask, persistStreamCardState, } from './core/session-manager.js';
32
+ import { getSessionWorkingDir, getProjectScanDirs, expandHome, downloadResources, formatAttachmentsHint, buildNewTopicPrompt, buildFollowUpContent, buildBridgeInputContent, buildReforkPrompt, getAvailableBots, restoreActiveSessions, executeScheduledTask, persistStreamCardState, } from './core/session-manager.js';
31
33
  import { handleCardAction } from './im/lark/card-handler.js';
32
- import { isBotMentioned, probeBotOpenId, startLarkEventDispatcher, writeBotInfoFile, canOperate } from './im/lark/event-dispatcher.js';
33
- import { isBotMentionMessageHandled, markBotMentionMessageHandled } from './utils/bot-mention-dedup.js';
34
+ import { isBotMentioned, probeBotOpenId, startLarkEventDispatcher, writeBotInfoFile, canOperate, isKnownPeerBot } from './im/lark/event-dispatcher.js';
35
+ import { isBotMentionMessageHandled, tryClaimBotMentionMessage } from './utils/bot-mention-dedup.js';
34
36
  import { markSessionActivity } from './core/session-activity.js';
35
37
  // ─── State ───────────────────────────────────────────────────────────────────
36
38
  const activeSessions = new Map();
@@ -230,6 +232,59 @@ const cardDeps = {
230
232
  lastRepoScan,
231
233
  };
232
234
  // ─── Event handling ──────────────────────────────────────────────────────────
235
+ /**
236
+ * Default-oncall is a uniform forward-only policy: whenever the toggle is
237
+ * on, ANY chat the bot is currently in — old or newly added, doesn't matter —
238
+ * gets auto-bound to the configured workingDir on its next observed topic,
239
+ * unless it's already bound (`findOncallChatForAnyBot` upstream) or the user
240
+ * has opted out via tombstone.
241
+ *
242
+ * Returns the binding entry on success, undefined when any precondition
243
+ * fails or the lock-internal authoritative check (in `autoBindOncallFromDefault`)
244
+ * sees a concurrent tombstone / existing binding.
245
+ */
246
+ async function maybeAutoBindDefaultOncall(larkAppId, chatId, chatType) {
247
+ if (chatType !== 'group')
248
+ return undefined; // oncall is group-only by design
249
+ const bot = getBot(larkAppId);
250
+ const def = bot.config.defaultOncall;
251
+ if (!def?.enabled || !def.workingDir)
252
+ return undefined;
253
+ // Fast-path tombstone check against the in-memory snapshot — avoids taking
254
+ // the lock when we already know we'd skip. The AUTHORITATIVE re-check lives
255
+ // inside autoBindOncallFromDefault under the file lock, so a race with a
256
+ // concurrent unbind (which writes the tombstone) is still safe.
257
+ const autobound = bot.config.defaultOncallAutoboundChats ?? [];
258
+ if (autobound.includes(chatId))
259
+ return undefined;
260
+ // Validate workingDir at fire time too — directory might have been
261
+ // deleted/moved since the dashboard save validated it. Skipping (vs.
262
+ // crashing) lets the user fix the path without losing other bot config.
263
+ const resolved = expandHome(def.workingDir);
264
+ let isDir = false;
265
+ try {
266
+ isDir = statSync(resolved).isDirectory();
267
+ }
268
+ catch { /* not a dir */ }
269
+ if (!isDir) {
270
+ logger.warn(`[${larkAppId}] defaultOncall workingDir invalid (${resolved}); ` +
271
+ `skipping auto-bind for chat=${chatId}`);
272
+ return undefined;
273
+ }
274
+ const r = await autoBindOncallFromDefault(larkAppId, chatId, def.workingDir);
275
+ if (!r.ok) {
276
+ logger.warn(`[${larkAppId}] defaultOncall auto-bind failed: chat=${chatId} reason=${r.reason}`);
277
+ return undefined;
278
+ }
279
+ if (r.skipped) {
280
+ // Lock-internal authoritative check disagreed with our fast-path —
281
+ // tombstone or binding raced in. Fine, just don't surface a binding.
282
+ logger.info(`[${larkAppId}] defaultOncall auto-bind skipped chat=${chatId} reason=${r.skipped}`);
283
+ return undefined;
284
+ }
285
+ logger.info(`[${larkAppId}] defaultOncall auto-bound chat=${chatId} → ${def.workingDir}`);
286
+ return r.entry;
287
+ }
233
288
  async function handleNewTopic(data, ctx) {
234
289
  const { chatId, messageId, chatType, larkAppId } = ctx;
235
290
  // scope/anchor are mutable here: `/t` / `/topic` may flip a 普通群 chat-scope
@@ -348,7 +403,15 @@ async function handleNewTopic(data, ctx) {
348
403
  messageQueue.appendMessage(anchor, parsed);
349
404
  // Oncall group: pin working dir from the chat-level binding, even if a
350
405
  // sibling bot (running in another daemon) is the one that persisted it.
351
- const oncallEntry = findOncallChatForAnyBot(chatId);
406
+ // Layered lookup:
407
+ // 1) any existing binding (this bot or sibling)
408
+ // 2) this bot's defaultOncall — auto-binds the chat if it's brand new
409
+ // and the flag is on. Once auto-bound, the chat appears in oncallChats
410
+ // so the next handleNewTopic sees it via (1).
411
+ let oncallEntry = findOncallChatForAnyBot(chatId);
412
+ if (!oncallEntry) {
413
+ oncallEntry = await maybeAutoBindDefaultOncall(larkAppId, chatId, chatType);
414
+ }
352
415
  // Cross-bot / chat-scope inheritance: reuse a sibling session's workingDir
353
416
  // and skip the repo card. Same block lives in handleThreadReply's auto-create
354
417
  // branch — both handlers land unowned messages after the 4fec43c routing
@@ -560,7 +623,13 @@ async function handleThreadReply(data, ctx) {
560
623
  sessionStore.updateSession(session);
561
624
  // Oncall group: pin working dir from the chat-level binding, even if a
562
625
  // sibling bot (running in another daemon) is the one that persisted it.
563
- const oncallEntry = findOncallChatForAnyBot(autoCreateChatId);
626
+ // Defaults auto-bind path mirrors handleNewTopic — keep both call sites
627
+ // in sync (this is the auto-create branch that fires when routing lands
628
+ // here without an active session, e.g. chat-scope first-reply paths).
629
+ let oncallEntry = findOncallChatForAnyBot(autoCreateChatId);
630
+ if (!oncallEntry) {
631
+ oncallEntry = await maybeAutoBindDefaultOncall(larkAppId, autoCreateChatId, autoCreateChatType);
632
+ }
564
633
  // Cross-bot / chat-scope inheritance — see findInheritablePeer comments.
565
634
  const inheritedFrom = !oncallEntry
566
635
  ? findInheritablePeer({
@@ -722,7 +791,7 @@ async function handleThreadReply(data, ctx) {
722
791
  forkWorker(ds, wrappedPrompt, ds.hasHistory);
723
792
  }
724
793
  }
725
- function processBotMentionSignal(signal) {
794
+ async function processBotMentionSignal(signal) {
726
795
  // Find the target bot by open_id
727
796
  const targetBot = getAllBots().find(b => b.botOpenId === signal.targetBotOpenId);
728
797
  if (!targetBot) {
@@ -755,6 +824,14 @@ function processBotMentionSignal(signal) {
755
824
  }
756
825
  }
757
826
  const enrichedContent = enrichedParts.join('\n\n');
827
+ // Atomic claim before the worker send. Currently this branch is sync
828
+ // from the top-of-function check to here, but keeping the claim as
829
+ // close to the enqueue as possible (a) hardens against future async
830
+ // additions in between, and (b) keeps both dedup sites uniform.
831
+ if (!tryClaimBotMentionMessage(signal.messageId)) {
832
+ logger.debug(`[bot-mention] Signal-file path skipping ${signal.messageId.substring(0, 12)}: WSClient claimed during signal processing`);
833
+ return;
834
+ }
758
835
  markSessionActivity(ds);
759
836
  // Park the current streaming card so the new turn's POST can recall it.
760
837
  // Without this the bot-to-bot mention path leaves old cards stranded —
@@ -763,7 +840,6 @@ function processBotMentionSignal(signal) {
763
840
  ds.streamCardPending = true;
764
841
  ds.currentTurnTitle = signal.content.substring(0, 50);
765
842
  persistStreamCardState(ds);
766
- markBotMentionMessageHandled(signal.messageId);
767
843
  ds.worker.send({ type: 'message', content: enrichedContent });
768
844
  logger.info(`[bot-mention] Routed message from ${signal.senderAppId} to ${targetAppId} (scope=${signal.scope ?? 'thread'}, anchor=${anchor.substring(0, 12)})`);
769
845
  return;
@@ -773,11 +849,31 @@ function processBotMentionSignal(signal) {
773
849
  // oncall workingDir. Lark WSClient does not deliver bot-sent events, so
774
850
  // without this every bot-to-bot @mention into an oncall workspace where
775
851
  // the target lacks an active session would silent-drop here.
776
- const oncallEntry = findOncallChatForAnyBot(signal.chatId);
852
+ let oncallEntry = findOncallChatForAnyBot(signal.chatId);
853
+ if (!oncallEntry) {
854
+ // Defaults can also fire on bot-mention signals — a brand-new group
855
+ // chat first observed through a sibling bot's @mention should still
856
+ // honor the target bot's defaultOncall flag. Keep the same safety gate as
857
+ // the WS dispatcher: only trusted botmux peers may create a new target
858
+ // session from a signal file. This avoids arbitrary files/messages from
859
+ // another bot app spending the default and bypassing the human mention path.
860
+ const mentionChatType = signal.chatType === 'p2p' ? 'p2p' : 'group';
861
+ if (isKnownPeerBot(config.session.dataDir, targetAppId, signal.senderOpenId)) {
862
+ oncallEntry = await maybeAutoBindDefaultOncall(targetAppId, signal.chatId, mentionChatType);
863
+ }
864
+ }
777
865
  if (!oncallEntry) {
778
866
  logger.debug(`[bot-mention] Target bot ${targetAppId} has no active worker at ${signal.scope ?? 'thread'}-scope anchor ${anchor.substring(0, 12)} and chat is not oncall-bound — leaving for WSClient auto-create path`);
779
867
  return;
780
868
  }
869
+ // Re-check dedup AFTER the maybeAutoBindDefaultOncall await — the WS path
870
+ // could have claimed and routed this messageId while we were resolving the
871
+ // default-oncall binding. Without this gate the auto-spawn path would fork
872
+ // a duplicate worker and the same prompt would land in two sessions.
873
+ if (!tryClaimBotMentionMessage(signal.messageId)) {
874
+ logger.debug(`[bot-mention] Signal-file auto-spawn skipping ${signal.messageId.substring(0, 12)}: WSClient claimed during maybeAutoBindDefaultOncall yield`);
875
+ return;
876
+ }
781
877
  spawnSessionForBotMention(signal, targetBot, oncallEntry, anchor).catch(err => {
782
878
  logger.error(`[bot-mention] Failed to auto-spawn session for target ${targetAppId}: ${err}`);
783
879
  });
@@ -843,7 +939,8 @@ async function spawnSessionForBotMention(signal, targetBot, oncallEntry, anchor)
843
939
  currentTurnTitle: title,
844
940
  };
845
941
  activeSessions.set(sessionKey(anchor, larkAppId), newDs);
846
- markBotMentionMessageHandled(signal.messageId);
942
+ // Note: caller (processBotMentionSignal) already claimed signal.messageId
943
+ // via tryClaimBotMentionMessage before invoking us, so no mark here.
847
944
  const prompt = buildNewTopicPrompt(enrichedContent, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, [], undefined, await getAvailableBots(larkAppId, signal.chatId), undefined, { name: targetBot.botName, openId: targetBot.botOpenId });
848
945
  forkWorker(newDs, prompt);
849
946
  logger.info(`[bot-mention] Auto-spawned session for ${larkAppId} in oncall chat ${signal.chatId} (scope=${scope}, anchor=${anchor.substring(0, 12)}, dir=${oncallEntry.workingDir})`);
@@ -866,7 +963,7 @@ function startBotMentionWatcher() {
866
963
  if (!isSignalForMe(signal))
867
964
  continue; // not for this daemon, leave for target
868
965
  unlinkSync(filePath);
869
- processBotMentionSignal(signal);
966
+ void processBotMentionSignal(signal).catch(err => logger.error(`[bot-mention] processBotMentionSignal failed for ${file}: ${err}`));
870
967
  }
871
968
  catch (err) {
872
969
  logger.debug(`[bot-mention] Failed to process signal ${file}: ${err}`);
@@ -888,7 +985,7 @@ function startBotMentionWatcher() {
888
985
  if (!isSignalForMe(signal))
889
986
  return; // not for this daemon, leave for target
890
987
  unlinkSync(filePath);
891
- processBotMentionSignal(signal);
988
+ void processBotMentionSignal(signal).catch(err => logger.error(`[bot-mention] processBotMentionSignal failed for ${filename}: ${err}`));
892
989
  }
893
990
  catch (err) {
894
991
  logger.debug(`[bot-mention] Failed to process signal ${filename}: ${err}`);