botmux 3.6.0 → 3.7.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.
Files changed (177) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/backend/riff-backend.d.ts +7 -6
  3. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/riff-backend.js +8 -7
  5. package/dist/adapters/backend/riff-backend.js.map +1 -1
  6. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  7. package/dist/adapters/backend/sandbox.js +5 -2
  8. package/dist/adapters/backend/sandbox.js.map +1 -1
  9. package/dist/adapters/cli/codex.d.ts.map +1 -1
  10. package/dist/adapters/cli/codex.js +15 -6
  11. package/dist/adapters/cli/codex.js.map +1 -1
  12. package/dist/adapters/cli/fs-policy.d.ts +62 -6
  13. package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
  14. package/dist/adapters/cli/fs-policy.js +70 -7
  15. package/dist/adapters/cli/fs-policy.js.map +1 -1
  16. package/dist/bot-registry.d.ts +13 -0
  17. package/dist/bot-registry.d.ts.map +1 -1
  18. package/dist/bot-registry.js +15 -7
  19. package/dist/bot-registry.js.map +1 -1
  20. package/dist/cli/daemon-lifecycle-env.d.ts +1 -1
  21. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  22. package/dist/cli/daemon-lifecycle-env.js +12 -0
  23. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +23 -7
  26. package/dist/cli.js.map +1 -1
  27. package/dist/core/command-handler.d.ts +7 -5
  28. package/dist/core/command-handler.d.ts.map +1 -1
  29. package/dist/core/command-handler.js +37 -21
  30. package/dist/core/command-handler.js.map +1 -1
  31. package/dist/core/cost-calculator.d.ts +3 -0
  32. package/dist/core/cost-calculator.d.ts.map +1 -1
  33. package/dist/core/cost-calculator.js.map +1 -1
  34. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  35. package/dist/core/dashboard-ipc-server.js +12 -9
  36. package/dist/core/dashboard-ipc-server.js.map +1 -1
  37. package/dist/core/dashboard-rows.d.ts.map +1 -1
  38. package/dist/core/dashboard-rows.js +1 -0
  39. package/dist/core/dashboard-rows.js.map +1 -1
  40. package/dist/core/initial-user-turn.d.ts +14 -0
  41. package/dist/core/initial-user-turn.d.ts.map +1 -0
  42. package/dist/core/initial-user-turn.js +65 -0
  43. package/dist/core/initial-user-turn.js.map +1 -0
  44. package/dist/core/maintenance.d.ts.map +1 -1
  45. package/dist/core/maintenance.js +6 -0
  46. package/dist/core/maintenance.js.map +1 -1
  47. package/dist/core/per-bot-env.d.ts.map +1 -1
  48. package/dist/core/per-bot-env.js +10 -0
  49. package/dist/core/per-bot-env.js.map +1 -1
  50. package/dist/core/plugins/pm2.d.ts.map +1 -1
  51. package/dist/core/plugins/pm2.js +4 -0
  52. package/dist/core/plugins/pm2.js.map +1 -1
  53. package/dist/core/session-discovery.d.ts +23 -0
  54. package/dist/core/session-discovery.d.ts.map +1 -1
  55. package/dist/core/session-discovery.js +162 -82
  56. package/dist/core/session-discovery.js.map +1 -1
  57. package/dist/core/session-manager.d.ts.map +1 -1
  58. package/dist/core/session-manager.js +23 -4
  59. package/dist/core/session-manager.js.map +1 -1
  60. package/dist/core/worker-pool.d.ts +2 -0
  61. package/dist/core/worker-pool.d.ts.map +1 -1
  62. package/dist/core/worker-pool.js +27 -4
  63. package/dist/core/worker-pool.js.map +1 -1
  64. package/dist/daemon.d.ts +18 -0
  65. package/dist/daemon.d.ts.map +1 -1
  66. package/dist/daemon.js +205 -39
  67. package/dist/daemon.js.map +1 -1
  68. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  69. package/dist/dashboard/bot-onboarding.js +29 -5
  70. package/dist/dashboard/bot-onboarding.js.map +1 -1
  71. package/dist/dashboard/bot-payload.js +3 -3
  72. package/dist/dashboard/bot-payload.js.map +1 -1
  73. package/dist/dashboard/web/bot-defaults-page.js +5 -5
  74. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  75. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  76. package/dist/dashboard/web/bot-onboarding.js +1 -1
  77. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  78. package/dist/dashboard/web/i18n.js +18 -18
  79. package/dist/dashboard/web/i18n.js.map +1 -1
  80. package/dist/dashboard-web/app.js +1 -1
  81. package/dist/dashboard-web/chunks/{bot-defaults-page-VQMPUJ4Y.js → bot-defaults-page-UKA7K4JV.js} +2 -2
  82. package/dist/dashboard-web/chunks/{chunk-NP4JUBGS.js → chunk-3QAUJXAS.js} +1 -1
  83. package/dist/dashboard-web/chunks/{chunk-JMRGZQDB.js → chunk-FLGXZJTD.js} +1 -1
  84. package/dist/dashboard-web/chunks/chunk-FNPGOZMX.js +1 -0
  85. package/dist/dashboard-web/chunks/{chunk-SNKATZWK.js → chunk-KQB42ML5.js} +4 -4
  86. package/dist/dashboard-web/chunks/{connectors-page-DOY4J3ZL.js → connectors-page-A77YAB5Y.js} +1 -1
  87. package/dist/dashboard-web/chunks/{groups-page-74TS2DIH.js → groups-page-RUZNVXQB.js} +1 -1
  88. package/dist/dashboard-web/chunks/{insights-page-AYCO65JC.js → insights-page-RF7U7RTA.js} +1 -1
  89. package/dist/dashboard-web/chunks/{monitor-room-YKYLTSAN.js → monitor-room-7IVIS75W.js} +1 -1
  90. package/dist/dashboard-web/chunks/{monitoring-page-QBIUNRBR.js → monitoring-page-5SSJRQZF.js} +1 -1
  91. package/dist/dashboard-web/chunks/{office-page-4PH2A26P.js → office-page-EOND3L5D.js} +1 -1
  92. package/dist/dashboard-web/chunks/{overview-page-H73D5UT4.js → overview-page-NISBVBBJ.js} +1 -1
  93. package/dist/dashboard-web/chunks/{roles-page-U4BTOQ7F.js → roles-page-BUMKD7Y4.js} +1 -1
  94. package/dist/dashboard-web/chunks/{schedules-page-RHRHX7R7.js → schedules-page-AVOOKLUH.js} +1 -1
  95. package/dist/dashboard-web/chunks/{sessions-page-VSC6AM5G.js → sessions-page-6HLSEAB7.js} +2 -2
  96. package/dist/dashboard-web/chunks/{settings-page-LF3RKM5P.js → settings-page-MJDZHQ4X.js} +1 -1
  97. package/dist/dashboard-web/chunks/{skills-page-SYOIGGXH.js → skills-page-5MW54PCC.js} +1 -1
  98. package/dist/dashboard-web/chunks/{team-federation-page-RMBLASTW.js → team-federation-page-2SNIMVXI.js} +1 -1
  99. package/dist/dashboard-web/chunks/{v3-page-XJXKKJRN.js → v3-page-W6SBXXQC.js} +1 -1
  100. package/dist/dashboard-web/chunks/{whiteboards-page-K3YVSTHJ.js → whiteboards-page-STC54KTP.js} +1 -1
  101. package/dist/dashboard-web/style.css +5 -0
  102. package/dist/dashboard.js +2 -2
  103. package/dist/dashboard.js.map +1 -1
  104. package/dist/desktop/main/dashboard-compat.js +1 -1
  105. package/dist/i18n/en.js +6 -6
  106. package/dist/i18n/en.js.map +1 -1
  107. package/dist/i18n/zh.js +6 -6
  108. package/dist/i18n/zh.js.map +1 -1
  109. package/dist/im/lark/card-builder.d.ts.map +1 -1
  110. package/dist/im/lark/card-builder.js +5 -4
  111. package/dist/im/lark/card-builder.js.map +1 -1
  112. package/dist/im/lark/card-handler.d.ts.map +1 -1
  113. package/dist/im/lark/card-handler.js +40 -7
  114. package/dist/im/lark/card-handler.js.map +1 -1
  115. package/dist/im/lark/client.d.ts.map +1 -1
  116. package/dist/im/lark/client.js +82 -1
  117. package/dist/im/lark/client.js.map +1 -1
  118. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  119. package/dist/im/lark/event-dispatcher.js +46 -12
  120. package/dist/im/lark/event-dispatcher.js.map +1 -1
  121. package/dist/im/lark/relay-target-routing.d.ts.map +1 -1
  122. package/dist/im/lark/relay-target-routing.js +12 -11
  123. package/dist/im/lark/relay-target-routing.js.map +1 -1
  124. package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
  125. package/dist/im/lark/reply-mode-command.js +4 -3
  126. package/dist/im/lark/reply-mode-command.js.map +1 -1
  127. package/dist/index-daemon.js +6 -1
  128. package/dist/index-daemon.js.map +1 -1
  129. package/dist/mir-runner.js +1 -1
  130. package/dist/mir-runner.js.map +1 -1
  131. package/dist/services/bot-config-store.d.ts +1 -1
  132. package/dist/services/bot-config-store.d.ts.map +1 -1
  133. package/dist/services/bot-config-store.js +1 -1
  134. package/dist/services/bot-config-store.js.map +1 -1
  135. package/dist/services/card-prefs-store.js +8 -8
  136. package/dist/services/card-prefs-store.js.map +1 -1
  137. package/dist/services/chat-reply-mode-store.d.ts.map +1 -1
  138. package/dist/services/chat-reply-mode-store.js +16 -11
  139. package/dist/services/chat-reply-mode-store.js.map +1 -1
  140. package/dist/services/insight/types.d.ts +3 -1
  141. package/dist/services/insight/types.d.ts.map +1 -1
  142. package/dist/services/insight/types.js.map +1 -1
  143. package/dist/services/project-scanner.d.ts +4 -4
  144. package/dist/services/project-scanner.d.ts.map +1 -1
  145. package/dist/services/project-scanner.js +13 -5
  146. package/dist/services/project-scanner.js.map +1 -1
  147. package/dist/services/transcript-resolver.d.ts +4 -0
  148. package/dist/services/transcript-resolver.d.ts.map +1 -1
  149. package/dist/services/transcript-resolver.js +53 -5
  150. package/dist/services/transcript-resolver.js.map +1 -1
  151. package/dist/services/usage-ledger.d.ts.map +1 -1
  152. package/dist/services/usage-ledger.js +1 -0
  153. package/dist/services/usage-ledger.js.map +1 -1
  154. package/dist/setup/bot-config-editor.d.ts +37 -1
  155. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  156. package/dist/setup/bot-config-editor.js +61 -3
  157. package/dist/setup/bot-config-editor.js.map +1 -1
  158. package/dist/setup/setup-args.js +1 -1
  159. package/dist/setup/setup-args.js.map +1 -1
  160. package/dist/types.d.ts +20 -0
  161. package/dist/types.d.ts.map +1 -1
  162. package/dist/utils/allowed-users-apply.d.ts.map +1 -1
  163. package/dist/utils/allowed-users-apply.js +3 -2
  164. package/dist/utils/allowed-users-apply.js.map +1 -1
  165. package/dist/utils/child-env.d.ts +31 -2
  166. package/dist/utils/child-env.d.ts.map +1 -1
  167. package/dist/utils/child-env.js +61 -3
  168. package/dist/utils/child-env.js.map +1 -1
  169. package/dist/utils/file-lock.d.ts +10 -0
  170. package/dist/utils/file-lock.d.ts.map +1 -1
  171. package/dist/utils/file-lock.js +295 -53
  172. package/dist/utils/file-lock.js.map +1 -1
  173. package/dist/worker.js +52 -3
  174. package/dist/worker.js.map +1 -1
  175. package/dist/workflows/v3/run-envelope.d.ts +24 -24
  176. package/package.json +1 -1
  177. package/dist/dashboard-web/chunks/chunk-P327LXOT.js +0 -1
package/dist/daemon.d.ts CHANGED
@@ -449,5 +449,23 @@ declare function resolvePinnedWorkingDir(ctx: {
449
449
  export declare const __testOnly_resolvePinnedWorkingDir: typeof resolvePinnedWorkingDir;
450
450
  export declare const __testOnly_handleNewTopic: (data: any, ctx: RoutingContext) => Promise<void>;
451
451
  export declare const __testOnly_handleThreadReply: (data: any, ctx: RoutingContext) => Promise<void>;
452
+ /**
453
+ * 主动开工 — 场景①: the bot was added to a chat. Auto-start a session when
454
+ * (1) the bot opted in via `autoStartOnGroupJoin`, and (2) at least one of its
455
+ * allowedUsers is a member of the chat (D7). Working dir per D6: the bot's
456
+ * default working dir, else degrade to the repo-selection card. The first-turn
457
+ * prompt is the configured prompt, or empty (the role/identity envelope still
458
+ * makes it a non-empty CLI turn — the bot reads the group context itself, D8).
459
+ *
460
+ * Scope is mode-aware: a 普通群 keeps a chat-scope session anchored at chatId.
461
+ * When its reply mode is shared, a top-level seed supplies the visible topic
462
+ * root while every turn still reuses that chat-scope session. A 话题群 has no
463
+ * thread to attach to yet, so it also seeds a fresh topic, but runs a
464
+ * thread-scope session anchored at that seed — otherwise a chat-scope session
465
+ * in a 话题群 is the known stale-session bug (every reply would wrap into a new
466
+ * topic, and later messages route elsewhere).
467
+ */
468
+ declare function handleBotAdded(chatId: string, operatorOpenId: string | undefined, larkAppId: string): Promise<void>;
469
+ export declare const __testOnly_handleBotAdded: typeof handleBotAdded;
452
470
  export declare function startDaemon(botIndex?: number): Promise<void>;
453
471
  //# sourceMappingURL=daemon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
package/dist/daemon.js CHANGED
@@ -26,6 +26,7 @@ import { addReaction, getChatMode, getChatNameAndMode, getMessageChatId, listCha
26
26
  import { resolveGroupJoinPrompt, waitForAllowedUserInChat } from './core/auto-start.js';
27
27
  import { loadBotConfigAtIndex, loadBotConfigs, isManagedActivationStartingAtIndex, registerBot, getBot, getAllBots, getOwnerOpenId, findOncallChat, effectiveDefaultWorkingDir, effectiveBotDisplayName, resolveVcMeetingConsumerProfiles, setResolvedAllowedUsersRepublishHook, setAllowedUsersResolveRetryHook, } from './bot-registry.js';
28
28
  import { setDisplayNameRefresher, findConfigField, applyConfigField } from './services/bot-config-store.js';
29
+ import { resolveRegularGroupMode } from './services/chat-reply-mode-store.js';
29
30
  import { renameBotOnOpenPlatform, changeBotAvatarOnOpenPlatform } from './services/open-platform-rename.js';
30
31
  import { migrateSandboxConfigAtStartup } from './services/sandbox-migration.js';
31
32
  import * as sessionStore from './services/session-store.js';
@@ -48,6 +49,7 @@ import { BoundedMap } from './utils/bounded-map.js';
48
49
  import { checkAllowedChatGroupsConfig } from './services/allowed-chat-groups.js';
49
50
  import { ensureCjkFontsInstalled } from './utils/font-installer.js';
50
51
  import { scrubTmuxServerGlobalEnv } from './setup/ensure-tmux.js';
52
+ import { entryNeedsContactResolve } from './setup/bot-config-editor.js';
51
53
  import { invalidWorkingDirs } from './utils/working-dir.js';
52
54
  import { validateWorkingDir } from './core/working-dir.js';
53
55
  import { activeSessionKey, sessionKey, sessionAnchorId, storedSessionAnchorId } from './core/types.js';
@@ -60,7 +62,7 @@ import { isLocalCliOpenReady } from './services/local-cli-opener.js';
60
62
  import { RECEIVED_REACTION_EMOJI_TYPE, SUBSTITUTE_RECEIVED_REACTION_EMOJI_TYPE } from './core/pending-response.js';
61
63
  import { t as tr, localeForBot } from './i18n/index.js';
62
64
  import { createCliAdapterSync } from './adapters/cli/registry.js';
63
- import { initWorkerPool, setActiveSessionsRegistry, forkWorker, sendWorkerInput, killWorker, reapOrphanWorkers, scheduleCardPatch, setCurrentCliVersion, getCurrentCliVersion, CARD_POSTING_SENTINEL, parkStreamCard, closeSession as closeSessionHelper, ensureCliEnv, sweepGlobalBotmuxSkills, writableTerminalLinkFor, findActiveBySessionId, getDaemonBootId, } from './core/worker-pool.js';
65
+ import { initWorkerPool, setActiveSessionsRegistry, forkWorker, forkAdoptWorker, sendWorkerInput, killWorker, reapOrphanWorkers, scheduleCardPatch, setCurrentCliVersion, getCurrentCliVersion, CARD_POSTING_SENTINEL, parkStreamCard, closeSession as closeSessionHelper, ensureCliEnv, sweepGlobalBotmuxSkills, writableTerminalLinkFor, findActiveBySessionId, getDaemonBootId, } from './core/worker-pool.js';
64
66
  import { AbortDeadlineError, hasExactSafeJsonKeys, ipcRoute, isTrustedHostIpcRequest, JsonBodyTooLargeError, jsonRes, readJsonBody, runWithAbortDeadline, setBotName, setLarkAppId, startIpcServer, setBotRenamer, setBotAvatarChanger } from './core/dashboard-ipc-server.js';
65
67
  import { setDeviceIsolationDaemonIdentity } from './core/device-isolation-daemon.js';
66
68
  import { cancelSessionReadyAck, waitForSessionReadyAck, } from './core/session-ready-handshake.js';
@@ -77,6 +79,7 @@ import { consumeQuota, removeChatGrant, removeGlobalGrant } from './services/gra
77
79
  import { abortCharge, commitCharge, beginCharge } from './services/quota-dedup.js';
78
80
  import { getSessionWorkingDir, getProjectScanDirs, expandHome, downloadResources, formatAttachmentsHint, buildNewTopicCliInput, buildFollowUpCliInput, buildBridgeInputContent, buildReforkCliInput, getAvailableBots, restoreActiveSessions, executeScheduledTask, persistStreamCardState, rememberLastCliInput, ensureTerminalWorkerPort, ensureSessionWhiteboard, } from './core/session-manager.js';
79
81
  import { triggerSessionTurn } from './core/trigger-session.js';
82
+ import { claimInitialUserTurn, isInitialUserTurnPending, releaseInitialUserTurn } from './core/initial-user-turn.js';
80
83
  import { applyQueuedCodexAppLegacyFallback, mergeQueuedCodexAppTurn } from './core/session-create.js';
81
84
  import { findOnlineDaemon, listOnlineDaemons } from './utils/daemon-discovery.js';
82
85
  import { beginReplyTargetTurn, fallbackTurnId, isSubstituteTurn, resolveSessionReplyTarget, syncReplyTargetState } from './core/reply-target.js';
@@ -2194,8 +2197,23 @@ function definitiveEntriesOf(entryStatus) {
2194
2197
  function notifyAllowedUsersResolveFailure(larkAppId, notice, recipients) {
2195
2198
  logger.error(`[${larkAppId}] ${notice}`);
2196
2199
  const unique = [...new Set(recipients.filter(u => typeof u === 'string' && u.startsWith('ou_')))];
2200
+ // Fail-safe recipient: on a cold start the resolve that would have produced
2201
+ // the owner's open_id is the very thing that just failed, so `recipients` is
2202
+ // empty and the owner would hear nothing. Fall back to the static ownerOpenId
2203
+ // captured at setup — a raw ou_ that never needs resolving, so it survives
2204
+ // the contact-API outage. Appended (not replacing) so a partial resolve still
2205
+ // reaches every recovered owner too.
2206
+ let staticOwner;
2207
+ try {
2208
+ staticOwner = getBot(larkAppId).config.ownerOpenId;
2209
+ }
2210
+ catch { /* bot gone mid-flight — nothing to fall back to */ }
2211
+ if (staticOwner && staticOwner.startsWith('ou_') && !unique.includes(staticOwner)) {
2212
+ unique.push(staticOwner);
2213
+ }
2197
2214
  if (unique.length === 0) {
2198
- logger.error(`[${larkAppId}] allowedUsers resolve failed with no open_id recipient available for DM; ` +
2215
+ logger.error(`[${larkAppId}] allowedUsers resolve failed with no open_id recipient available for DM ` +
2216
+ `(no resolved owner and no static ownerOpenId in bots.json); ` +
2199
2217
  `check daemon logs and Feishu contact API, then restart this bot.`);
2200
2218
  return;
2201
2219
  }
@@ -2216,8 +2234,24 @@ function notifyAllowedUsersResolveFailure(larkAppId, notice, recipients) {
2216
2234
  })();
2217
2235
  }
2218
2236
  function scheduleAllowedUsersResolveRetry(larkAppId, attempt = 1) {
2219
- if (attempt > 3)
2237
+ if (attempt > 3) {
2238
+ // Retries exhausted (startup + 3 retries all degraded). Don't just fall
2239
+ // silent — the owner has been locked out for ~7.5 min and auto-recovery
2240
+ // won't try again. Emit a terminal notice so they know to intervene. Only
2241
+ // when the allowlist is still actually broken: a config change or a bot
2242
+ // teardown mid-retry is not an exhaustion worth alarming on.
2243
+ try {
2244
+ const bot = getBot(larkAppId);
2245
+ const stillConfigured = (bot.config.allowedUsers ?? []).length > 0;
2246
+ const stillEmpty = (bot.resolvedAllowedUsers ?? []).length === 0;
2247
+ if (stillConfigured && stillEmpty) {
2248
+ notifyAllowedUsersResolveFailure(larkAppId, `allowedUsers 自动解析在启动后重试 3 次仍失败,运行时白名单为空 —— 期间包括你在内的所有人都会被拒。` +
2249
+ `请检查网络 / 飞书 contact API 后执行 \`botmux restart\` 重新解析。`, bot.resolvedAllowedUsers ?? []);
2250
+ }
2251
+ }
2252
+ catch { /* bot gone — nothing to report */ }
2220
2253
  return;
2254
+ }
2221
2255
  const delayMs = attempt === 1 ? 30_000 : attempt === 2 ? 120_000 : 300_000;
2222
2256
  const timer = setTimeout(() => {
2223
2257
  void (async () => {
@@ -3035,7 +3069,7 @@ async function adoptCodexNotifierEvent(larkAppId, event, cardMessageId, ownerOpe
3035
3069
  throw new Error('无法定位完成通知所在的飞书私聊');
3036
3070
  signal.throwIfAborted();
3037
3071
  const botCfg = getBot(larkAppId).config;
3038
- const scope = botCfg.p2pMode === 'chat' ? 'chat' : 'thread';
3072
+ const scope = botCfg.p2pMode === 'thread' ? 'thread' : 'chat';
3039
3073
  const anchor = scope === 'chat' ? chatId : cardMessageId;
3040
3074
  const activeKey = sessionKey(anchor, larkAppId);
3041
3075
  let ds = activeSessions.get(activeKey);
@@ -13039,11 +13073,13 @@ async function warnGroupJoinScopeOnce(larkAppId, detail) {
13039
13073
  * prompt is the configured prompt, or empty (the role/identity envelope still
13040
13074
  * makes it a non-empty CLI turn — the bot reads the group context itself, D8).
13041
13075
  *
13042
- * Scope is mode-aware: a 普通群 gets a chat-scope session anchored at chatId; a
13043
- * 话题群 (topic mode) has no thread to attach to yet, so we seed a fresh topic
13044
- * (a top-level message) and run a thread-scope session anchored at that seed —
13045
- * otherwise a chat-scope session in a 话题群 is the known stale-session bug
13046
- * (every reply would wrap into a new topic, and later messages route elsewhere).
13076
+ * Scope is mode-aware: a 普通群 keeps a chat-scope session anchored at chatId.
13077
+ * When its reply mode is shared, a top-level seed supplies the visible topic
13078
+ * root while every turn still reuses that chat-scope session. A 话题群 has no
13079
+ * thread to attach to yet, so it also seeds a fresh topic, but runs a
13080
+ * thread-scope session anchored at that seed otherwise a chat-scope session
13081
+ * in a 话题群 is the known stale-session bug (every reply would wrap into a new
13082
+ * topic, and later messages route elsewhere).
13047
13083
  */
13048
13084
  async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
13049
13085
  const bot = getBot(larkAppId);
@@ -13120,6 +13156,9 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
13120
13156
  logger.info(`[auto-start:入群] ${chatId.substring(0, 12)} 锚点已有会话,跳过`);
13121
13157
  return;
13122
13158
  }
13159
+ const sharedReplyRootId = mode === 'group' && resolveRegularGroupMode(larkAppId, chatId) === 'shared'
13160
+ ? await sendMessage(larkAppId, chatId, tr('daemon.auto_start_join_seed', undefined, localeForBot(larkAppId)), 'text')
13161
+ : undefined;
13123
13162
  const { pinnedWorkingDir, pinnedFromBotDefault } = await resolvePinnedWorkingDir({ scope, anchor, chatId, chatType, larkAppId });
13124
13163
  const autoWt = willAutoWorktree(larkAppId, pinnedWorkingDir, pinnedFromBotDefault);
13125
13164
  refreshCliVersion(botCfg.cliId, botCfg.cliPathOverride);
@@ -13153,7 +13192,12 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
13153
13192
  ownerOpenId: operatorOpenId,
13154
13193
  currentTurnTitle: title,
13155
13194
  workingDir: pinnedWorkingDir,
13195
+ pendingTurnId: sharedReplyRootId,
13156
13196
  };
13197
+ if (sharedReplyRootId) {
13198
+ beginReplyTargetTurn(ds, sharedReplyRootId, sharedReplyRootId, new Date(now).toISOString());
13199
+ sessionStore.updateSession(ds.session);
13200
+ }
13157
13201
  activeSessions.set(dsKey, ds);
13158
13202
  // Register the anchor so a later duplicate bot.added for this chat is deduped
13159
13203
  // even in 话题群 (where dsKey is the seed id, not chatId).
@@ -13175,7 +13219,8 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
13175
13219
  const prompt = await buildPrompt();
13176
13220
  await noteTurnReceived(ds, anchor, promptBody);
13177
13221
  rememberLastCliInput(ds, promptBody, prompt);
13178
- forkWorker(ds, prompt);
13222
+ forkWorker(ds, prompt, sharedReplyRootId ? { turnId: sharedReplyRootId } : false);
13223
+ ds.pendingTurnId = undefined;
13179
13224
  logger.info(`[auto-start:入群] ${chatId.substring(0, 12)} 自动开工(${mode}/${scope}),workingDir=${pinnedWorkingDir}`);
13180
13225
  return;
13181
13226
  }
@@ -13197,7 +13242,8 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
13197
13242
  const prompt = await buildPrompt();
13198
13243
  await noteTurnReceived(ds, anchor, promptBody);
13199
13244
  rememberLastCliInput(ds, promptBody, prompt);
13200
- forkWorker(ds, prompt);
13245
+ forkWorker(ds, prompt, sharedReplyRootId ? { turnId: sharedReplyRootId } : false);
13246
+ ds.pendingTurnId = undefined;
13201
13247
  logger.info(`[auto-start:入群] ${chatId.substring(0, 12)} 无默认目录且无可选项目,直接开工`);
13202
13248
  }
13203
13249
  }
@@ -13205,6 +13251,7 @@ async function handleBotAdded(chatId, operatorOpenId, larkAppId) {
13205
13251
  autoStartJoinInFlight.delete(lockKey);
13206
13252
  }
13207
13253
  }
13254
+ export const __testOnly_handleBotAdded = handleBotAdded;
13208
13255
  /** Reverse-lookup a foreign bot's display name for a sender open_id observed on
13209
13256
  * this app's WS events. Priority:
13210
13257
  * 1) bot-openids-${larkAppId}.json — per-app cross-ref populated by
@@ -13491,6 +13538,15 @@ async function handleThreadReply(data, ctx) {
13491
13538
  // Mark a new turn so the CLI's response to /model, /clear, /compact, etc.
13492
13539
  // shows up as a fresh streaming card instead of silently PATCH-ing the
13493
13540
  // previous turn's card.
13541
+ //
13542
+ // Compatibility note (empty-start opening): a raw passthrough is a
13543
+ // LITERAL CLI command — its contract is that the CLI sees exactly the
13544
+ // bytes the user typed, never a botmux XML envelope. So it deliberately
13545
+ // does NOT consume `Session.initialUserTurnPending`: wrapping `/model`
13546
+ // in `<user_message>` would break the literal contract, and silently
13547
+ // clearing the marker would lose the opening for the next real turn.
13548
+ // `/model` on an empty-started session therefore stays literal and the
13549
+ // FOLLOWING business message still opens as a new topic.
13494
13550
  beginNewTurn(ds, commandContent);
13495
13551
  ds.worker.send({
13496
13552
  type: 'raw_input',
@@ -13959,31 +14015,68 @@ async function handleThreadReply(data, ctx) {
13959
14015
  if (!isBridge)
13960
14016
  ensureSessionWhiteboard(ds);
13961
14017
  const effectiveCliId = ds.session.cliId ?? dsBotCfgForMsg.cliId;
14018
+ // Empty-started session (repo select/skip/switch booted the CLI with no
14019
+ // turn): a LIVE worker is not proof the CLI ever saw botmux's opening
14020
+ // context — only `buildNewTopicCliInput` emits <botmux_routing> /
14021
+ // <botmux_builtin_skills> / <identity>. Probe (non-consuming) before the
14022
+ // awaits below, then claim SYNCHRONOUSLY right before building so two
14023
+ // near-simultaneous first messages can only produce one opener; the loser
14024
+ // degrades to an ordinary follow-up in queue order.
14025
+ const wantsOpening = !isBridge && isInitialUserTurnPending(ds);
14026
+ const openingBots = wantsOpening ? await getAvailableBots(larkAppId, ds.chatId) : undefined;
14027
+ const turnSender = await getThreadSender();
14028
+ const openingTurn = wantsOpening && claimInitialUserTurn(ds);
13962
14029
  const cliInput = isBridge
13963
14030
  ? { content: buildBridgeInputContent(promptContent, {
13964
14031
  attachments,
13965
14032
  mentions: parsed.mentions,
13966
14033
  selfMention: { name: selfBot.botName, openId: selfBot.botOpenId },
13967
14034
  }) }
13968
- : buildFollowUpCliInput(promptContent, ds.session.sessionId, {
13969
- attachments,
13970
- mentions: parsed.mentions,
13971
- isAdoptMode: false,
13972
- cliId: effectiveCliId,
13973
- cliPathOverride: ds.session.cliPathOverride ?? dsBotCfgForMsg.cliPathOverride,
13974
- sender: await getThreadSender(),
13975
- larkAppId,
13976
- chatId: ds.session.chatId,
13977
- whiteboardId: ds.session.whiteboardId,
13978
- substituteTrigger,
13979
- codexAppText: parsed.content,
13980
- codexAppApplicationContext,
13981
- codexAppMessageContext,
13982
- });
14035
+ : openingTurn
14036
+ ? buildNewTopicCliInput(promptContent, ds.session.sessionId, effectiveCliId, ds.session.cliPathOverride ?? dsBotCfgForMsg.cliPathOverride, attachments, parsed.mentions, openingBots, undefined, { name: selfBot.botName, openId: selfBot.botOpenId }, localeForBot(larkAppId), turnSender, {
14037
+ larkAppId,
14038
+ chatId: ds.session.chatId,
14039
+ whiteboardId: ds.session.whiteboardId,
14040
+ substituteTrigger,
14041
+ codexAppText: parsed.content,
14042
+ codexAppApplicationContext,
14043
+ codexAppMessageContext,
14044
+ })
14045
+ : buildFollowUpCliInput(promptContent, ds.session.sessionId, {
14046
+ attachments,
14047
+ mentions: parsed.mentions,
14048
+ isAdoptMode: false,
14049
+ cliId: effectiveCliId,
14050
+ cliPathOverride: ds.session.cliPathOverride ?? dsBotCfgForMsg.cliPathOverride,
14051
+ sender: turnSender,
14052
+ larkAppId,
14053
+ chatId: ds.session.chatId,
14054
+ whiteboardId: ds.session.whiteboardId,
14055
+ substituteTrigger,
14056
+ codexAppText: parsed.content,
14057
+ codexAppApplicationContext,
14058
+ codexAppMessageContext,
14059
+ });
13983
14060
  beginNewTurn(ds, parsed.content);
13984
- await noteTurnReceived(ds, parsed.messageId, parsed.content, await getThreadSender(), parsed.messageId, substituteTrigger ? SUBSTITUTE_RECEIVED_REACTION_EMOJI_TYPE : undefined);
13985
- rememberLastCliInput(ds, promptContent, cliInput);
13986
- sendWorkerInput(ds, cliInput, parsed.messageId);
14061
+ await noteTurnReceived(ds, parsed.messageId, parsed.content, turnSender, parsed.messageId, substituteTrigger ? SUBSTITUTE_RECEIVED_REACTION_EMOJI_TYPE : undefined);
14062
+ let accepted = false;
14063
+ try {
14064
+ accepted = sendWorkerInput(ds, cliInput, parsed.messageId);
14065
+ // Record the input as the session's last real CLI turn ONLY after the
14066
+ // worker accepted it. Recording before delivery (the old order) persisted
14067
+ // lastCliInput / lastUserPrompt / Codex-App sidecar for a turn that never
14068
+ // reached the CLI; a rejected send then left that poison behind, and the
14069
+ // next message's worker-null refork would read it as `hadPriorCliInput`
14070
+ // and wrongly `--resume` a CLI that never took a real turn.
14071
+ if (accepted)
14072
+ rememberLastCliInput(ds, promptContent, cliInput);
14073
+ }
14074
+ finally {
14075
+ // The opening is one-shot: give it back when the worker died / refused,
14076
+ // so the next message re-opens instead of silently losing the context.
14077
+ if (openingTurn && !accepted)
14078
+ releaseInitialUserTurn(ds);
14079
+ }
13987
14080
  }
13988
14081
  else {
13989
14082
  // Worker not running — re-fork with resume. This is a NEW turn, so drop
@@ -14046,19 +14139,36 @@ async function handleThreadReply(data, ctx) {
14046
14139
  currentText: parsed.content,
14047
14140
  currentMessageContext: codexAppMessageContext,
14048
14141
  });
14142
+ // Empty-started session that lost its worker (daemon restart, idle sweep,
14143
+ // CLI exit) — same rule as the live branch: this is still the FIRST real
14144
+ // user turn, so it must be built as a new topic. A queued(待办池) activation
14145
+ // is excluded: its queuedPrompt already owns the first turn.
14146
+ const wantsOpening = !ds.adoptedFrom && !queuedDashboardTurn && isInitialUserTurnPending(ds);
14147
+ const openingBots = wantsOpening ? await getAvailableBots(larkAppId, ds.chatId) : undefined;
14148
+ const reforkSender = await getThreadSender();
14149
+ // An empty-started CLI has nothing to resume: `hasHistory` is set
14150
+ // unconditionally by restoreActiveSessions (and by claude_exit /
14151
+ // suspendWorker), so it cannot tell "booted idle" from "has real history".
14152
+ // `session.lastCliInput` can: rememberLastCliInput writes it on EVERY real
14153
+ // CLI input, and the empty-start fork deliberately writes none. Snapshot it
14154
+ // BEFORE this turn's own rememberLastCliInput below, so a session some
14155
+ // non-IM path (scheduler / webhook trigger / doc comment) already fed keeps
14156
+ // its normal `--resume` instead of being cold-spawned over.
14157
+ const hadPriorCliInput = !!(ds.lastCliInput ?? ds.session.lastCliInput);
14158
+ const openingTurn = wantsOpening && claimInitialUserTurn(ds);
14049
14159
  const builtReforkInput = buildReforkCliInput(ds, reforkContent, {
14050
14160
  attachments,
14051
14161
  mentions: parsed.mentions,
14052
14162
  cliId: ds.session.cliId ?? dsBotCfgForFork.cliId,
14053
14163
  cliPathOverride: ds.session.cliPathOverride ?? dsBotCfgForFork.cliPathOverride,
14054
14164
  selfMention: { name: selfBot.botName, openId: selfBot.botOpenId },
14055
- sender: await getThreadSender(),
14165
+ sender: reforkSender,
14056
14166
  substituteTrigger,
14057
14167
  codexAppText: reforkCodexApp.text,
14058
14168
  codexAppApplicationContext,
14059
14169
  codexAppMessageContext: reforkCodexApp.messageContext,
14060
14170
  });
14061
- const wrappedInput = applyQueuedCodexAppLegacyFallback(builtReforkInput, {
14171
+ let wrappedInput = applyQueuedCodexAppLegacyFallback(builtReforkInput, {
14062
14172
  queued: queuedDashboardTurn,
14063
14173
  queuedText: queuedCodexAppText,
14064
14174
  });
@@ -14069,13 +14179,58 @@ async function handleThreadReply(data, ctx) {
14069
14179
  // contain the reply and would silently discard the original task.
14070
14180
  logger.warn(`[${tag(ds)}] Legacy queued dashboard task has no clean-input text; using the full legacy activation prompt`);
14071
14181
  }
14072
- await noteTurnReceived(ds, parsed.messageId, parsed.content, await getThreadSender(), parsed.messageId, substituteTrigger ? SUBSTITUTE_RECEIVED_REACTION_EMOJI_TYPE : undefined);
14182
+ if (openingTurn) {
14183
+ // Replace the follow-up envelope built above with the real opening. The
14184
+ // discarded build is pure string assembly (no side effects) — keeping the
14185
+ // refork statement unconditional keeps the queued/substitute wiring, and
14186
+ // its guard test, on a single code path.
14187
+ wrappedInput = buildNewTopicCliInput(reforkContent, ds.session.sessionId, ds.session.cliId ?? dsBotCfgForFork.cliId, ds.session.cliPathOverride ?? dsBotCfgForFork.cliPathOverride, attachments, parsed.mentions, openingBots, undefined, { name: selfBot.botName, openId: selfBot.botOpenId }, localeForBot(larkAppId), reforkSender, {
14188
+ larkAppId,
14189
+ chatId: ds.session.chatId,
14190
+ whiteboardId: ds.session.whiteboardId,
14191
+ substituteTrigger,
14192
+ codexAppText: reforkCodexApp.text,
14193
+ codexAppApplicationContext,
14194
+ codexAppMessageContext: reforkCodexApp.messageContext,
14195
+ });
14196
+ }
14197
+ await noteTurnReceived(ds, parsed.messageId, parsed.content, reforkSender, parsed.messageId, substituteTrigger ? SUBSTITUTE_RECEIVED_REACTION_EMOJI_TYPE : undefined);
14198
+ try {
14199
+ // Adopt sessions must re-fork via forkAdoptWorker, NOT forkWorker: the
14200
+ // latter would spawn a fresh botmux-managed bmx-* CLI in the adopt cwd,
14201
+ // losing the observe/bridge semantics and typing the wrapped prompt into a
14202
+ // brand-new CLI instead of the user's original external pane. This branch
14203
+ // is reachable whenever an adopt session's bridge worker has exited (crash,
14204
+ // or the "adopted session ended" kill path) and a new Lark turn arrives.
14205
+ // The turn's input rides in on the init prompt (bridge-formatted by
14206
+ // buildReforkCliInput above); forkAdoptWorker queues it and the adopt idle
14207
+ // detector flushes it to the observed pane. Adopt never --resumes a botmux
14208
+ // session, so the openingTurn/hadPriorCliInput resume logic doesn't apply.
14209
+ if (ds.adoptedFrom) {
14210
+ forkAdoptWorker(ds, { prompt: wrappedInput.content, turnId: parsed.messageId });
14211
+ }
14212
+ else {
14213
+ forkWorker(ds, wrappedInput, {
14214
+ // See `hadPriorCliInput` above — an opening on a CLI that never took any
14215
+ // input cold-spawns rather than `--resume`-ing an empty session.
14216
+ resume: ds.hasHistory && !(openingTurn && !hadPriorCliInput),
14217
+ turnId: parsed.messageId,
14218
+ });
14219
+ }
14220
+ }
14221
+ catch (e) {
14222
+ if (openingTurn)
14223
+ releaseInitialUserTurn(ds);
14224
+ throw e;
14225
+ }
14226
+ // Record the input as the session's last real CLI turn ONLY after the fork
14227
+ // succeeded. Recording before the fork (the old order) persisted lastCliInput
14228
+ // for a turn that never launched when forkWorker threw; the retry then read
14229
+ // that poison as `hadPriorCliInput` and wrongly `--resume`d a CLI that never
14230
+ // took a real turn — breaking the empty-start invariant. forkWorker itself
14231
+ // persists the session (clearing queued); this records last* + reply state.
14073
14232
  rememberLastCliInput(ds, promptContent, wrappedInput);
14074
14233
  sessionStore.updateSession(ds.session);
14075
- forkWorker(ds, wrappedInput, {
14076
- resume: ds.hasHistory,
14077
- turnId: parsed.messageId,
14078
- });
14079
14234
  }
14080
14235
  }
14081
14236
  /**
@@ -14282,7 +14437,18 @@ async function handleDocComment(ctx) {
14282
14437
  await noteTurnReceived(ds, commentId, text, sender, turnId);
14283
14438
  rememberLastCliInput(ds, promptContent, wrappedInput);
14284
14439
  sessionStore.updateSession(ds.session);
14285
- forkWorker(ds, wrappedInput, { resume: ds.hasHistory, turnId });
14440
+ // Same adopt re-fork routing as handleThreadReply: an adopt session whose
14441
+ // bridge worker exited must come back through forkAdoptWorker (observe +
14442
+ // bridge), never forkWorker. buildDocCommentTurnInput(mode:'refork')
14443
+ // delegates to buildReforkCliInput, which already bridge-formats the content
14444
+ // when ds.adoptedFrom is set, so the doc-comment turn reaches the observed
14445
+ // pane without a <user_message> wrapper.
14446
+ if (ds.adoptedFrom) {
14447
+ forkAdoptWorker(ds, { prompt: wrappedInput.content, turnId });
14448
+ }
14449
+ else {
14450
+ forkWorker(ds, wrappedInput, { resume: ds.hasHistory, turnId });
14451
+ }
14286
14452
  }
14287
14453
  return true;
14288
14454
  }
@@ -15050,7 +15216,7 @@ export async function startDaemon(botIndex) {
15050
15216
  // schedule retries. The cache is a persistent sidecar — NOT the dashboard
15051
15217
  // descriptor, which is overwritten early in boot and deleted on shutdown.
15052
15218
  const configured = bot.config.allowedUsers ?? bot.resolvedAllowedUsers;
15053
- const needsResolve = configured.some(u => u.includes('@') || u.startsWith('on_') || u.startsWith('ou_'));
15219
+ const needsResolve = configured.some(entryNeedsContactResolve);
15054
15220
  if (needsResolve) {
15055
15221
  const previousResolvedMap = readAllowedUsersCache(cfg.larkAppId);
15056
15222
  try {
@@ -15081,7 +15247,7 @@ export async function startDaemon(botIndex) {
15081
15247
  // entry transient so the pure fn can recover each from cache.
15082
15248
  const throwStatus = new Map();
15083
15249
  for (const e of configured) {
15084
- if (e.includes('@') || e.startsWith('on_') || e.startsWith('ou_'))
15250
+ if (entryNeedsContactResolve(e))
15085
15251
  throwStatus.set(e, 'transient');
15086
15252
  }
15087
15253
  const applied = applyAllowedUsersResolve({