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.
- package/dist/adapters/backend/tmux-backend.d.ts +25 -5
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +59 -93
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +5 -0
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts +30 -0
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +80 -13
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-socket-probe.d.ts +18 -0
- package/dist/adapters/backend/zellij-socket-probe.d.ts.map +1 -0
- package/dist/adapters/backend/zellij-socket-probe.js +146 -0
- package/dist/adapters/backend/zellij-socket-probe.js.map +1 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +5 -0
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/codex-app-turn.d.ts +43 -0
- package/dist/adapters/cli/codex-app-turn.d.ts.map +1 -0
- package/dist/adapters/cli/codex-app-turn.js +110 -0
- package/dist/adapters/cli/codex-app-turn.js.map +1 -0
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +6 -0
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +1 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/runner-input.d.ts +3 -2
- package/dist/adapters/cli/runner-input.d.ts.map +1 -1
- package/dist/adapters/cli/runner-input.js +7 -4
- package/dist/adapters/cli/runner-input.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +16 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +5 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +1 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/codex-app-runner.js +75 -12
- package/dist/codex-app-runner.js.map +1 -1
- package/dist/core/command-handler.d.ts +11 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +101 -7
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +69 -11
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/doc-comment-prompt.d.ts +57 -0
- package/dist/core/doc-comment-prompt.d.ts.map +1 -1
- package/dist/core/doc-comment-prompt.js +147 -2
- package/dist/core/doc-comment-prompt.js.map +1 -1
- package/dist/core/inflight-input-tracker.d.ts +2 -0
- package/dist/core/inflight-input-tracker.d.ts.map +1 -1
- package/dist/core/inflight-input-tracker.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +1 -1
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/core/persistent-backend.d.ts +4 -0
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +6 -0
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/plugins/cli-generation.d.ts +3 -0
- package/dist/core/plugins/cli-generation.d.ts.map +1 -1
- package/dist/core/plugins/cli-generation.js +1 -0
- package/dist/core/plugins/cli-generation.js.map +1 -1
- package/dist/core/session-board.d.ts +2 -1
- package/dist/core/session-board.d.ts.map +1 -1
- package/dist/core/session-board.js +3 -2
- package/dist/core/session-board.js.map +1 -1
- package/dist/core/session-create.d.ts +38 -0
- package/dist/core/session-create.d.ts.map +1 -1
- package/dist/core/session-create.js +43 -9
- package/dist/core/session-create.js.map +1 -1
- package/dist/core/session-manager.d.ts +65 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +285 -68
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-rename.d.ts +25 -0
- package/dist/core/session-rename.d.ts.map +1 -0
- package/dist/core/session-rename.js +43 -0
- package/dist/core/session-rename.js.map +1 -0
- package/dist/core/session-title.d.ts +11 -0
- package/dist/core/session-title.d.ts.map +1 -0
- package/dist/core/session-title.js +17 -0
- package/dist/core/session-title.js.map +1 -0
- package/dist/core/trigger-session.d.ts +11 -0
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +61 -20
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +16 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +6 -2
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +48 -15
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/core/zellij-adopt-discovery.d.ts +17 -0
- package/dist/core/zellij-adopt-discovery.d.ts.map +1 -1
- package/dist/core/zellij-adopt-discovery.js +24 -4
- package/dist/core/zellij-adopt-discovery.js.map +1 -1
- package/dist/core/zellij-session-discovery.d.ts +3 -0
- package/dist/core/zellij-session-discovery.d.ts.map +1 -1
- package/dist/core/zellij-session-discovery.js +1 -0
- package/dist/core/zellij-session-discovery.js.map +1 -1
- package/dist/daemon.d.ts +3 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +181 -81
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +1 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/federated-group-core.d.ts +29 -8
- package/dist/dashboard/federated-group-core.d.ts.map +1 -1
- package/dist/dashboard/federated-group-core.js +68 -6
- package/dist/dashboard/federated-group-core.js.map +1 -1
- package/dist/dashboard/federation-api.d.ts +10 -9
- package/dist/dashboard/federation-api.d.ts.map +1 -1
- package/dist/dashboard/federation-api.js +82 -3
- package/dist/dashboard/federation-api.js.map +1 -1
- package/dist/dashboard/federation-spoke-api.d.ts +8 -9
- package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
- package/dist/dashboard/federation-spoke-api.js +7 -2
- package/dist/dashboard/federation-spoke-api.js.map +1 -1
- package/dist/dashboard/team-group.d.ts +21 -0
- package/dist/dashboard/team-group.d.ts.map +1 -1
- package/dist/dashboard/team-group.js +16 -0
- package/dist/dashboard/team-group.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +10 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +33 -1
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +1 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +8 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +5 -1
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/ui.d.ts.map +1 -1
- package/dist/dashboard/web/ui.js +2 -4
- package/dist/dashboard/web/ui.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-7T7DPOV6.js +4 -0
- package/dist/dashboard-web/chunks/{chunk-SHZ5PUYF.js → chunk-IGXYYRYJ.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-GF7DU2B5.js → chunk-ISOD7VDX.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-TORH53FI.js → chunk-OEJIT66L.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-7UY333A5.js → chunk-PNK3HQBI.js} +2 -2
- package/dist/dashboard-web/chunks/{chunk-IAES47WV.js → chunk-YQFXGRSD.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-N6GKR6JL.js → connectors-page-UQ4QBE45.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-IK3GXSQU.js → groups-page-5AJPPJH2.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-T2PDFPGO.js → insights-page-R3DFECX4.js} +1 -1
- package/dist/dashboard-web/chunks/{legacy-workflow-page-YQPLKH74.js → legacy-workflow-page-QMC7OZXH.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-7EL3LVJS.js → monitor-room-NLMKJLDY.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-BCADF56L.js → monitoring-page-EHSOX4GV.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-KP7BDLAE.js → office-page-OXJKFJ4R.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-6GWDHDTI.js → overview-page-GJHIVXJF.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-2OFR2IBG.js → roles-page-6ZODQISW.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-TAWMTSNL.js → schedules-page-DAGMHVCH.js} +1 -1
- package/dist/dashboard-web/chunks/{sessions-page-42QZHPPP.js → sessions-page-NNZIDHZM.js} +1 -1
- package/dist/dashboard-web/chunks/{settings-page-OVKXUXSV.js → settings-page-LJIXX5LQ.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-Y2EC3NBI.js → skills-page-J7EVUHXP.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-QYMJUH5F.js → team-federation-page-YM5JBIII.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-FZJCW5QG.js → v3-page-YLYVHGKD.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-FBHBBCAL.js → whiteboards-page-75N2U6W4.js} +1 -1
- package/dist/dashboard.js +46 -7
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +8 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +8 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +96 -32
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +16 -5
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +1 -0
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/card-prefs-store.d.ts +4 -0
- package/dist/services/card-prefs-store.d.ts.map +1 -1
- package/dist/services/card-prefs-store.js +8 -0
- package/dist/services/card-prefs-store.js.map +1 -1
- package/dist/services/default-worktree.d.ts.map +1 -1
- package/dist/services/default-worktree.js +4 -1
- package/dist/services/default-worktree.js.map +1 -1
- package/dist/services/group-creator.d.ts +19 -0
- package/dist/services/group-creator.d.ts.map +1 -1
- package/dist/services/group-creator.js +62 -28
- package/dist/services/group-creator.js.map +1 -1
- package/dist/services/groups-store.d.ts +7 -5
- package/dist/services/groups-store.d.ts.map +1 -1
- package/dist/services/groups-store.js +10 -8
- package/dist/services/groups-store.js.map +1 -1
- package/dist/setup/ensure-tmux.d.ts +17 -0
- package/dist/setup/ensure-tmux.d.ts.map +1 -1
- package/dist/setup/ensure-tmux.js +72 -1
- package/dist/setup/ensure-tmux.js.map +1 -1
- package/dist/types.d.ts +56 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +27 -0
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +59 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/codex-app-context.d.ts +9 -0
- package/dist/utils/codex-app-context.d.ts.map +1 -0
- package/dist/utils/codex-app-context.js +47 -0
- package/dist/utils/codex-app-context.js.map +1 -0
- package/dist/utils/pending-input-queue.d.ts +2 -0
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js +6 -0
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/worker.js +197 -38
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- 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":"AACA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAe,MAAM,WAAW,CAAC;AAsFjG,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAS/E,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAE3F;AAKD,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAE/F;AACD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EAIpB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;
|
|
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
|
|
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
|
|
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
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
jsonRes(res, 200, {
|
|
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, {
|