botmux 2.110.0 → 2.111.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 (221) hide show
  1. package/dist/adapters/backend/tmux-backend.d.ts +25 -5
  2. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  3. package/dist/adapters/backend/tmux-backend.js +59 -93
  4. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  5. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  6. package/dist/adapters/backend/tmux-pipe-backend.js +5 -0
  7. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  8. package/dist/adapters/backend/zellij-backend.d.ts +30 -0
  9. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
  10. package/dist/adapters/backend/zellij-backend.js +80 -13
  11. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  12. package/dist/adapters/backend/zellij-socket-probe.d.ts +18 -0
  13. package/dist/adapters/backend/zellij-socket-probe.d.ts.map +1 -0
  14. package/dist/adapters/backend/zellij-socket-probe.js +146 -0
  15. package/dist/adapters/backend/zellij-socket-probe.js.map +1 -0
  16. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  17. package/dist/adapters/cli/claude-code.js +5 -0
  18. package/dist/adapters/cli/claude-code.js.map +1 -1
  19. package/dist/adapters/cli/codex-app-turn.d.ts +43 -0
  20. package/dist/adapters/cli/codex-app-turn.d.ts.map +1 -0
  21. package/dist/adapters/cli/codex-app-turn.js +110 -0
  22. package/dist/adapters/cli/codex-app-turn.js.map +1 -0
  23. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  24. package/dist/adapters/cli/codex-app.js +6 -0
  25. package/dist/adapters/cli/codex-app.js.map +1 -1
  26. package/dist/adapters/cli/codex.d.ts.map +1 -1
  27. package/dist/adapters/cli/codex.js +1 -0
  28. package/dist/adapters/cli/codex.js.map +1 -1
  29. package/dist/adapters/cli/runner-input.d.ts +3 -2
  30. package/dist/adapters/cli/runner-input.d.ts.map +1 -1
  31. package/dist/adapters/cli/runner-input.js +7 -4
  32. package/dist/adapters/cli/runner-input.js.map +1 -1
  33. package/dist/adapters/cli/types.d.ts +16 -0
  34. package/dist/adapters/cli/types.d.ts.map +1 -1
  35. package/dist/bot-registry.d.ts +5 -0
  36. package/dist/bot-registry.d.ts.map +1 -1
  37. package/dist/bot-registry.js +1 -0
  38. package/dist/bot-registry.js.map +1 -1
  39. package/dist/codex-app-runner.js +75 -12
  40. package/dist/codex-app-runner.js.map +1 -1
  41. package/dist/core/command-handler.d.ts +11 -0
  42. package/dist/core/command-handler.d.ts.map +1 -1
  43. package/dist/core/command-handler.js +101 -7
  44. package/dist/core/command-handler.js.map +1 -1
  45. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  46. package/dist/core/dashboard-ipc-server.js +69 -11
  47. package/dist/core/dashboard-ipc-server.js.map +1 -1
  48. package/dist/core/doc-comment-prompt.d.ts +57 -0
  49. package/dist/core/doc-comment-prompt.d.ts.map +1 -1
  50. package/dist/core/doc-comment-prompt.js +147 -2
  51. package/dist/core/doc-comment-prompt.js.map +1 -1
  52. package/dist/core/inflight-input-tracker.d.ts +2 -0
  53. package/dist/core/inflight-input-tracker.d.ts.map +1 -1
  54. package/dist/core/inflight-input-tracker.js.map +1 -1
  55. package/dist/core/passthrough-commands.d.ts.map +1 -1
  56. package/dist/core/passthrough-commands.js +1 -1
  57. package/dist/core/passthrough-commands.js.map +1 -1
  58. package/dist/core/persistent-backend.d.ts +4 -0
  59. package/dist/core/persistent-backend.d.ts.map +1 -1
  60. package/dist/core/persistent-backend.js +6 -0
  61. package/dist/core/persistent-backend.js.map +1 -1
  62. package/dist/core/plugins/cli-generation.d.ts +3 -0
  63. package/dist/core/plugins/cli-generation.d.ts.map +1 -1
  64. package/dist/core/plugins/cli-generation.js +1 -0
  65. package/dist/core/plugins/cli-generation.js.map +1 -1
  66. package/dist/core/session-board.d.ts +2 -1
  67. package/dist/core/session-board.d.ts.map +1 -1
  68. package/dist/core/session-board.js +3 -2
  69. package/dist/core/session-board.js.map +1 -1
  70. package/dist/core/session-create.d.ts +38 -0
  71. package/dist/core/session-create.d.ts.map +1 -1
  72. package/dist/core/session-create.js +43 -9
  73. package/dist/core/session-create.js.map +1 -1
  74. package/dist/core/session-manager.d.ts +65 -2
  75. package/dist/core/session-manager.d.ts.map +1 -1
  76. package/dist/core/session-manager.js +285 -68
  77. package/dist/core/session-manager.js.map +1 -1
  78. package/dist/core/session-rename.d.ts +25 -0
  79. package/dist/core/session-rename.d.ts.map +1 -0
  80. package/dist/core/session-rename.js +43 -0
  81. package/dist/core/session-rename.js.map +1 -0
  82. package/dist/core/session-title.d.ts +11 -0
  83. package/dist/core/session-title.d.ts.map +1 -0
  84. package/dist/core/session-title.js +17 -0
  85. package/dist/core/session-title.js.map +1 -0
  86. package/dist/core/trigger-session.d.ts +11 -0
  87. package/dist/core/trigger-session.d.ts.map +1 -1
  88. package/dist/core/trigger-session.js +61 -20
  89. package/dist/core/trigger-session.js.map +1 -1
  90. package/dist/core/types.d.ts +16 -1
  91. package/dist/core/types.d.ts.map +1 -1
  92. package/dist/core/types.js.map +1 -1
  93. package/dist/core/worker-pool.d.ts +6 -2
  94. package/dist/core/worker-pool.d.ts.map +1 -1
  95. package/dist/core/worker-pool.js +48 -15
  96. package/dist/core/worker-pool.js.map +1 -1
  97. package/dist/core/zellij-adopt-discovery.d.ts +17 -0
  98. package/dist/core/zellij-adopt-discovery.d.ts.map +1 -1
  99. package/dist/core/zellij-adopt-discovery.js +24 -4
  100. package/dist/core/zellij-adopt-discovery.js.map +1 -1
  101. package/dist/core/zellij-session-discovery.d.ts +3 -0
  102. package/dist/core/zellij-session-discovery.d.ts.map +1 -1
  103. package/dist/core/zellij-session-discovery.js +1 -0
  104. package/dist/core/zellij-session-discovery.js.map +1 -1
  105. package/dist/daemon.d.ts +3 -0
  106. package/dist/daemon.d.ts.map +1 -1
  107. package/dist/daemon.js +181 -81
  108. package/dist/daemon.js.map +1 -1
  109. package/dist/dashboard/bot-payload.d.ts +1 -0
  110. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  111. package/dist/dashboard/bot-payload.js +1 -0
  112. package/dist/dashboard/bot-payload.js.map +1 -1
  113. package/dist/dashboard/federated-group-core.d.ts +29 -8
  114. package/dist/dashboard/federated-group-core.d.ts.map +1 -1
  115. package/dist/dashboard/federated-group-core.js +68 -6
  116. package/dist/dashboard/federated-group-core.js.map +1 -1
  117. package/dist/dashboard/federation-api.d.ts +10 -9
  118. package/dist/dashboard/federation-api.d.ts.map +1 -1
  119. package/dist/dashboard/federation-api.js +82 -3
  120. package/dist/dashboard/federation-api.js.map +1 -1
  121. package/dist/dashboard/federation-spoke-api.d.ts +8 -9
  122. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
  123. package/dist/dashboard/federation-spoke-api.js +7 -2
  124. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  125. package/dist/dashboard/team-group.d.ts +21 -0
  126. package/dist/dashboard/team-group.d.ts.map +1 -1
  127. package/dist/dashboard/team-group.js +16 -0
  128. package/dist/dashboard/team-group.js.map +1 -1
  129. package/dist/dashboard/web/bot-defaults-page.d.ts +10 -0
  130. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  131. package/dist/dashboard/web/bot-defaults-page.js +33 -1
  132. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  133. package/dist/dashboard/web/bot-defaults.d.ts +1 -0
  134. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  135. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  136. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  137. package/dist/dashboard/web/i18n.js +8 -0
  138. package/dist/dashboard/web/i18n.js.map +1 -1
  139. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  140. package/dist/dashboard/web/sessions.js +5 -1
  141. package/dist/dashboard/web/sessions.js.map +1 -1
  142. package/dist/dashboard/web/ui.d.ts.map +1 -1
  143. package/dist/dashboard/web/ui.js +2 -4
  144. package/dist/dashboard/web/ui.js.map +1 -1
  145. package/dist/dashboard-web/app.js +1 -1
  146. package/dist/dashboard-web/chunks/bot-defaults-page-7T7DPOV6.js +4 -0
  147. package/dist/dashboard-web/chunks/{chunk-SHZ5PUYF.js → chunk-IGXYYRYJ.js} +1 -1
  148. package/dist/dashboard-web/chunks/{chunk-GF7DU2B5.js → chunk-ISOD7VDX.js} +1 -1
  149. package/dist/dashboard-web/chunks/{chunk-TORH53FI.js → chunk-OEJIT66L.js} +1 -1
  150. package/dist/dashboard-web/chunks/{chunk-7UY333A5.js → chunk-PNK3HQBI.js} +2 -2
  151. package/dist/dashboard-web/chunks/{chunk-IAES47WV.js → chunk-YQFXGRSD.js} +1 -1
  152. package/dist/dashboard-web/chunks/{connectors-page-N6GKR6JL.js → connectors-page-UQ4QBE45.js} +1 -1
  153. package/dist/dashboard-web/chunks/{groups-page-IK3GXSQU.js → groups-page-5AJPPJH2.js} +1 -1
  154. package/dist/dashboard-web/chunks/{insights-page-T2PDFPGO.js → insights-page-R3DFECX4.js} +1 -1
  155. package/dist/dashboard-web/chunks/{legacy-workflow-page-YQPLKH74.js → legacy-workflow-page-QMC7OZXH.js} +1 -1
  156. package/dist/dashboard-web/chunks/{monitor-room-7EL3LVJS.js → monitor-room-NLMKJLDY.js} +1 -1
  157. package/dist/dashboard-web/chunks/{monitoring-page-BCADF56L.js → monitoring-page-EHSOX4GV.js} +1 -1
  158. package/dist/dashboard-web/chunks/{office-page-KP7BDLAE.js → office-page-OXJKFJ4R.js} +1 -1
  159. package/dist/dashboard-web/chunks/{overview-page-6GWDHDTI.js → overview-page-GJHIVXJF.js} +1 -1
  160. package/dist/dashboard-web/chunks/{roles-page-2OFR2IBG.js → roles-page-6ZODQISW.js} +1 -1
  161. package/dist/dashboard-web/chunks/{schedules-page-TAWMTSNL.js → schedules-page-DAGMHVCH.js} +1 -1
  162. package/dist/dashboard-web/chunks/{sessions-page-42QZHPPP.js → sessions-page-NNZIDHZM.js} +1 -1
  163. package/dist/dashboard-web/chunks/{settings-page-OVKXUXSV.js → settings-page-LJIXX5LQ.js} +1 -1
  164. package/dist/dashboard-web/chunks/{skills-page-Y2EC3NBI.js → skills-page-J7EVUHXP.js} +1 -1
  165. package/dist/dashboard-web/chunks/{team-federation-page-QYMJUH5F.js → team-federation-page-YM5JBIII.js} +1 -1
  166. package/dist/dashboard-web/chunks/{v3-page-FZJCW5QG.js → v3-page-YLYVHGKD.js} +1 -1
  167. package/dist/dashboard-web/chunks/{whiteboards-page-FBHBBCAL.js → whiteboards-page-75N2U6W4.js} +1 -1
  168. package/dist/dashboard.js +46 -7
  169. package/dist/dashboard.js.map +1 -1
  170. package/dist/i18n/en.d.ts.map +1 -1
  171. package/dist/i18n/en.js +8 -0
  172. package/dist/i18n/en.js.map +1 -1
  173. package/dist/i18n/zh.d.ts.map +1 -1
  174. package/dist/i18n/zh.js +8 -0
  175. package/dist/i18n/zh.js.map +1 -1
  176. package/dist/im/lark/card-handler.d.ts.map +1 -1
  177. package/dist/im/lark/card-handler.js +96 -32
  178. package/dist/im/lark/card-handler.js.map +1 -1
  179. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  180. package/dist/im/lark/event-dispatcher.js +16 -5
  181. package/dist/im/lark/event-dispatcher.js.map +1 -1
  182. package/dist/services/bot-config-store.d.ts.map +1 -1
  183. package/dist/services/bot-config-store.js +1 -0
  184. package/dist/services/bot-config-store.js.map +1 -1
  185. package/dist/services/card-prefs-store.d.ts +4 -0
  186. package/dist/services/card-prefs-store.d.ts.map +1 -1
  187. package/dist/services/card-prefs-store.js +8 -0
  188. package/dist/services/card-prefs-store.js.map +1 -1
  189. package/dist/services/default-worktree.d.ts.map +1 -1
  190. package/dist/services/default-worktree.js +4 -1
  191. package/dist/services/default-worktree.js.map +1 -1
  192. package/dist/services/group-creator.d.ts +19 -0
  193. package/dist/services/group-creator.d.ts.map +1 -1
  194. package/dist/services/group-creator.js +62 -28
  195. package/dist/services/group-creator.js.map +1 -1
  196. package/dist/services/groups-store.d.ts +7 -5
  197. package/dist/services/groups-store.d.ts.map +1 -1
  198. package/dist/services/groups-store.js +10 -8
  199. package/dist/services/groups-store.js.map +1 -1
  200. package/dist/setup/ensure-tmux.d.ts +17 -0
  201. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  202. package/dist/setup/ensure-tmux.js +72 -1
  203. package/dist/setup/ensure-tmux.js.map +1 -1
  204. package/dist/types.d.ts +56 -6
  205. package/dist/types.d.ts.map +1 -1
  206. package/dist/utils/child-env.d.ts +27 -0
  207. package/dist/utils/child-env.d.ts.map +1 -1
  208. package/dist/utils/child-env.js +59 -0
  209. package/dist/utils/child-env.js.map +1 -1
  210. package/dist/utils/codex-app-context.d.ts +9 -0
  211. package/dist/utils/codex-app-context.d.ts.map +1 -0
  212. package/dist/utils/codex-app-context.js +47 -0
  213. package/dist/utils/codex-app-context.js.map +1 -0
  214. package/dist/utils/pending-input-queue.d.ts +2 -0
  215. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  216. package/dist/utils/pending-input-queue.js +6 -0
  217. package/dist/utils/pending-input-queue.js.map +1 -1
  218. package/dist/worker.js +197 -38
  219. package/dist/worker.js.map +1 -1
  220. package/package.json +1 -1
  221. package/dist/dashboard-web/chunks/bot-defaults-page-QXZ2VFJJ.js +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-ipc-server.d.ts","sourceRoot":"","sources":["../../src/core/dashboard-ipc-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-ipc-server.d.ts","sourceRoot":"","sources":["../../src/core/dashboard-ipc-server.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { listenWithProbe } from '../utils/listen-with-probe.js';
9
9
  import * as sessionStore from '../services/session-store.js';
10
10
  import * as scheduleStore from '../services/schedule-store.js';
11
11
  import * as groupsStore from '../services/groups-store.js';
12
- import { createGroupWithBots } from '../services/group-creator.js';
12
+ import { createGroupWithBots, transferGroupOwner } from '../services/group-creator.js';
13
13
  import * as oncallStore from '../services/oncall-store.js';
14
14
  import * as brandStore from '../services/brand-store.js';
15
15
  import * as sandboxStore from '../services/sandbox-store.js';
@@ -96,6 +96,8 @@ export function setBotRenamer(fn) {
96
96
  import { composeRowFromActive, composeRowFromClosed, feishuChatLink, setBotName as setRowsBotName, getBotName, } from './dashboard-rows.js';
97
97
  import { getBotBrand, getBot, loadBotConfigs, readBotSkillPolicy } from '../bot-registry.js';
98
98
  import { normalizeKanbanColumn, normalizeKanbanPosition, normalizeSessionTitle } from './session-board.js';
99
+ import { updateSessionTitle } from './session-title.js';
100
+ import { requestAgentSessionRename } from './session-rename.js';
99
101
  import { attachSkillPolicy, detachSkillPolicy } from './skills/im-command.js';
100
102
  import { readSkillRegistry } from '../services/skill-registry-store.js';
101
103
  const routes = [];
@@ -634,8 +636,9 @@ ipcRoute('GET', '/api/owner-profile', async (_req, res) => {
634
636
  const p = await getUserProfile(cachedLarkAppId, me.ownerUnionId, 'union_id');
635
637
  jsonRes(res, 200, { ok: true, name: p?.name ?? me.ownerName ?? null, avatarUrl: p?.avatarUrl ?? null });
636
638
  });
637
- // 会话重命名:dashboard 看板卡片就地编辑标题。title 只是展示元数据(飞书话题
638
- // 标题不受影响),但全视图(看板/状态板/表格/抽屉)读同一字段,改一处全变。
639
+ // 会话重命名:dashboard 看板卡片就地编辑 Botmux 的 canonical title;运行中的
640
+ // Codex/Claude Code 再收到一条 best-effort 原生 /rename,同步其 resume picker。
641
+ // 飞书话题标题不受影响。全视图(看板/状态板/表格/抽屉)读同一字段。
639
642
  ipcRoute('POST', '/api/sessions/:sessionId/rename', async (req, res, params) => {
640
643
  let body;
641
644
  try {
@@ -647,16 +650,17 @@ ipcRoute('POST', '/api/sessions/:sessionId/rename', async (req, res, params) =>
647
650
  const title = normalizeSessionTitle(body.title);
648
651
  if (!title)
649
652
  return jsonRes(res, 400, { ok: false, error: 'bad_title' });
650
- const session = findSessionRecord(params.sessionId);
653
+ const active = findActiveBySessionId(params.sessionId);
654
+ const session = active?.session ?? sessionStore.getSession(params.sessionId);
651
655
  if (!session)
652
656
  return jsonRes(res, 404, { ok: false, error: 'session_not_found' });
653
- session.title = title;
654
- sessionStore.updateSession(session);
655
- dashboardEventBus.publish({
656
- type: 'session.update',
657
- body: { sessionId: params.sessionId, patch: { title } },
658
- });
659
- jsonRes(res, 200, { ok: true, title });
657
+ const updated = updateSessionTitle(session, title);
658
+ if (!updated.ok)
659
+ return jsonRes(res, 400, { ok: false, error: updated.error });
660
+ const agentSync = active
661
+ ? requestAgentSessionRename(active, updated.title)
662
+ : { status: 'not_running' };
663
+ jsonRes(res, 200, { ...updated, agentSync: agentSync.status });
660
664
  });
661
665
  // 会话锁定:保护被锁定会话不被 dashboard「清理空闲」批量关闭。锁定是会话元数据,
662
666
  // 不影响用户显式点击关闭/批量关闭,避免把会话变成不可管理状态。
@@ -1589,6 +1593,7 @@ ipcRoute('GET', '/api/bot-default-oncall', async (_req, res) => {
1589
1593
  backendType: backendTypeStore.getBotBackendType(cachedLarkAppId) ?? null,
1590
1594
  disableStreamingCard: cardPrefs.disableStreamingCard,
1591
1595
  silentTurnReactions: cardPrefs.silentTurnReactions,
1596
+ codexAppCleanInput: cardPrefs.codexAppCleanInput,
1592
1597
  writableTerminalLinkInCard: cardPrefs.writableTerminalLinkInCard,
1593
1598
  privateCard: cardPrefs.privateCard,
1594
1599
  botToBotSameDir: cardPrefs.botToBotSameDir,
@@ -1639,6 +1644,8 @@ ipcRoute('PUT', '/api/bot-card-prefs', async (req, res) => {
1639
1644
  patch.botToBotSameDir = body.botToBotSameDir;
1640
1645
  if (typeof body.silentTurnReactions === 'boolean')
1641
1646
  patch.silentTurnReactions = body.silentTurnReactions;
1647
+ if (typeof body.codexAppCleanInput === 'boolean')
1648
+ patch.codexAppCleanInput = body.codexAppCleanInput;
1642
1649
  if (typeof body.writableTerminalLinkInCard === 'boolean')
1643
1650
  patch.writableTerminalLinkInCard = body.writableTerminalLinkInCard;
1644
1651
  if (typeof body.privateCard === 'boolean')
@@ -2483,6 +2490,13 @@ ipcRoute('POST', '/api/groups/create', async (req, res) => {
2483
2490
  const ownerUnionIds = Array.isArray(body.ownerUnionIds) && body.ownerUnionIds.every(x => typeof x === 'string')
2484
2491
  ? body.ownerUnionIds
2485
2492
  : [];
2493
+ const transferOwnerUnionId = typeof body.transferOwnerUnionId === 'string' && body.transferOwnerUnionId.trim()
2494
+ ? body.transferOwnerUnionId.trim()
2495
+ : null;
2496
+ if (body.transferOwnerUnionId !== undefined
2497
+ && (!transferOwnerUnionId || !transferOwnerUnionId.startsWith('on_') || !ownerUnionIds.includes(transferOwnerUnionId))) {
2498
+ return jsonRes(res, 400, { ok: false, error: 'invalid_transfer_owner_union_id' });
2499
+ }
2486
2500
  const transferTo = typeof body.transferOwnerTo === 'string' && body.transferOwnerTo.trim()
2487
2501
  ? body.transferOwnerTo.trim()
2488
2502
  : null;
@@ -2510,6 +2524,7 @@ ipcRoute('POST', '/api/groups/create', async (req, res) => {
2510
2524
  name,
2511
2525
  userOpenIds: userIds,
2512
2526
  ownerUnionIds,
2527
+ transferOwnerUnionId: transferOwnerUnionId ?? undefined,
2513
2528
  transferOwnerTo: transferTo ?? undefined,
2514
2529
  notifyOwnerOpenId: notifyTo ?? undefined,
2515
2530
  bindWorkingDir: bindWorkingDir || undefined,
@@ -2521,6 +2536,49 @@ ipcRoute('POST', '/api/groups/create', async (req, res) => {
2521
2536
  jsonRes(res, 502, { ok: false, error: String(e.message ?? e) });
2522
2537
  }
2523
2538
  });
2539
+ // Complete a deferred team-group owner transfer after another deployment has
2540
+ // added the operator to the chat. The caller sends union_id so no app-scoped
2541
+ // open_id crosses the dashboard/daemon or federation boundary.
2542
+ ipcRoute('POST', '/api/groups/transfer-owner', async (req, res) => {
2543
+ if (!cachedLarkAppId)
2544
+ return jsonRes(res, 503, { error: 'larkAppId_not_set' });
2545
+ let body;
2546
+ try {
2547
+ body = await readJsonBody(req);
2548
+ }
2549
+ catch {
2550
+ return jsonRes(res, 400, { ok: false, error: 'bad_json' });
2551
+ }
2552
+ const chatId = typeof body.chatId === 'string' ? body.chatId.trim() : '';
2553
+ const ownerUnionId = typeof body.ownerUnionId === 'string' ? body.ownerUnionId.trim() : '';
2554
+ if (!chatId.startsWith('oc_') || !ownerUnionId.startsWith('on_')) {
2555
+ return jsonRes(res, 400, { ok: false, error: 'invalid_owner_transfer' });
2556
+ }
2557
+ const transferred = await transferGroupOwner({
2558
+ creatorLarkAppId: cachedLarkAppId,
2559
+ chatId,
2560
+ ownerId: ownerUnionId,
2561
+ ownerIdType: 'union_id',
2562
+ });
2563
+ let notifyMessageId = null;
2564
+ let notifyError = null;
2565
+ if (transferred.ownerTransferredTo) {
2566
+ try {
2567
+ // Feishu accepts union_id in an @ tag; keeping it stable avoids a second
2568
+ // app-scope lookup after the owner was added by another deployment.
2569
+ notifyMessageId = await sendMessage(cachedLarkAppId, chatId, `<at user_id="${ownerUnionId}"></at>`, 'text');
2570
+ }
2571
+ catch (e) {
2572
+ notifyError = e?.message ?? String(e);
2573
+ }
2574
+ }
2575
+ return jsonRes(res, 200, {
2576
+ ok: true,
2577
+ ...transferred,
2578
+ notifyMessageId,
2579
+ notifyError,
2580
+ });
2581
+ });
2524
2582
  // ─── SSE event stream ──────────────────────────────────────────────────────
2525
2583
  ipcRoute('GET', '/api/events', (_req, res) => {
2526
2584
  res.writeHead(200, {