botmux 3.0.0 → 3.1.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/herdr-backend.d.ts +9 -7
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +63 -53
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +6 -1
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +7 -2
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +20 -16
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +192 -65
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +39 -2
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +55 -5
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +2 -2
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +9 -3
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts +25 -0
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +79 -9
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +2 -1
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +2 -2
- package/dist/adapters/hook-installer.d.ts +11 -0
- package/dist/adapters/hook-installer.d.ts.map +1 -1
- package/dist/adapters/hook-installer.js +72 -11
- package/dist/adapters/hook-installer.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -4
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +18 -0
- package/dist/config.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +211 -57
- 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 +12 -5
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +5 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +2 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/doc-comment-prompt.d.ts +2 -0
- package/dist/core/doc-comment-prompt.d.ts.map +1 -1
- package/dist/core/doc-comment-prompt.js +30 -0
- package/dist/core/doc-comment-prompt.js.map +1 -1
- package/dist/core/github-auth.d.ts +8 -0
- package/dist/core/github-auth.d.ts.map +1 -0
- package/dist/core/github-auth.js +44 -0
- package/dist/core/github-auth.js.map +1 -0
- package/dist/core/managed-origin-capability.d.ts +7 -0
- package/dist/core/managed-origin-capability.d.ts.map +1 -1
- package/dist/core/managed-origin-capability.js +12 -0
- package/dist/core/managed-origin-capability.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/restart-report.d.ts +7 -1
- package/dist/core/restart-report.d.ts.map +1 -1
- package/dist/core/restart-report.js +19 -5
- package/dist/core/restart-report.js.map +1 -1
- package/dist/core/session-activity.d.ts +8 -0
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-activity.js +16 -0
- package/dist/core/session-activity.js.map +1 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +4 -2
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/update-check.d.ts +11 -0
- package/dist/core/update-check.d.ts.map +1 -1
- package/dist/core/update-check.js +6 -1
- package/dist/core/update-check.js.map +1 -1
- package/dist/core/vc-meeting-prepare-command.d.ts +22 -0
- package/dist/core/vc-meeting-prepare-command.d.ts.map +1 -0
- package/dist/core/vc-meeting-prepare-command.js +50 -0
- package/dist/core/vc-meeting-prepare-command.js.map +1 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +11 -2
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +15 -5
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +555 -41
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +6 -1
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +34 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +1 -1
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +1 -1
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts +19 -0
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +66 -7
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +31 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +82 -0
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-MBORWWP7.js → bot-defaults-page-KLDCZNLP.js} +5 -5
- package/dist/dashboard-web/chunks/{chunk-G43RUPUN.js → chunk-EZAW2EPM.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-EIO5AWDA.js → chunk-FMJNOATE.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-4QTBR7UF.js → chunk-KEAOTUL3.js} +7 -7
- package/dist/dashboard-web/chunks/{chunk-7STGZ5BX.js → chunk-MLNI5BKE.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-LKDT4WBG.js → connectors-page-O32LFAL5.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-XKIWJ2TP.js → groups-page-PSAFIZ6M.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-CBEZCYKV.js → insights-page-V23LLATX.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-AQTHAWXA.js → monitor-room-7X5AKYOF.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-2R4NCNBQ.js → monitoring-page-CBA3CQYL.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-5M6MQIIL.js → office-page-RL6QSEM7.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-N22HDZ2V.js → overview-page-XQIPO6KH.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-J6K2HWFX.js → roles-page-ACIWV7QS.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-CGAQCB4J.js → schedules-page-KJDUKOJV.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-2WDWHSP4.js +3 -0
- package/dist/dashboard-web/chunks/{settings-page-GLRWV5KU.js → settings-page-6VX4OUGG.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-KQVW42QU.js → skills-page-WXE3UYLT.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-5PYUOV5M.js → team-federation-page-PYTF4FLM.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-DXPFILRZ.js → v3-page-G6CD6O3I.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-NUH6VZ4I.js → whiteboards-page-6SG33GP4.js} +1 -1
- package/dist/dashboard-web/style.css +167 -2
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +18 -3
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +18 -3
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +11 -2
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +4 -0
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +249 -5
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/forward-followup-buffer.d.ts +26 -0
- package/dist/im/lark/forward-followup-buffer.d.ts.map +1 -0
- package/dist/im/lark/forward-followup-buffer.js +48 -0
- package/dist/im/lark/forward-followup-buffer.js.map +1 -0
- package/dist/im/lark/forward-followup-content.d.ts +6 -0
- package/dist/im/lark/forward-followup-content.d.ts.map +1 -0
- package/dist/im/lark/forward-followup-content.js +46 -0
- package/dist/im/lark/forward-followup-content.js.map +1 -0
- package/dist/im/lark/forward-followup-store.d.ts +9 -0
- package/dist/im/lark/forward-followup-store.d.ts.map +1 -0
- package/dist/im/lark/forward-followup-store.js +48 -0
- package/dist/im/lark/forward-followup-store.js.map +1 -0
- package/dist/im/lark/message-parser.d.ts +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +1 -2
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/platform/tunnel-client.js +3 -3
- package/dist/platform/tunnel-client.js.map +1 -1
- package/dist/services/local-cli-opener.d.ts +7 -0
- package/dist/services/local-cli-opener.d.ts.map +1 -1
- package/dist/services/local-cli-opener.js +111 -3
- package/dist/services/local-cli-opener.js.map +1 -1
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +15 -2
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/vc-meeting-consumer-isolation.d.ts +7 -5
- package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -1
- package/dist/services/vc-meeting-consumer-isolation.js +7 -5
- package/dist/services/vc-meeting-consumer-isolation.js.map +1 -1
- package/dist/services/vc-meeting-preparations-store.d.ts +22 -0
- package/dist/services/vc-meeting-preparations-store.d.ts.map +1 -0
- package/dist/services/vc-meeting-preparations-store.js +131 -0
- package/dist/services/vc-meeting-preparations-store.js.map +1 -0
- package/dist/services/vc-meeting-runtime-store.d.ts +9 -0
- package/dist/services/vc-meeting-runtime-store.d.ts.map +1 -1
- package/dist/services/vc-meeting-runtime-store.js +16 -0
- package/dist/services/vc-meeting-runtime-store.js.map +1 -1
- package/dist/setup/ensure-tmux.d.ts.map +1 -1
- package/dist/setup/ensure-tmux.js +9 -11
- package/dist/setup/ensure-tmux.js.map +1 -1
- package/dist/utils/child-env.d.ts +16 -8
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +30 -8
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/daemon-discovery.d.ts +8 -0
- package/dist/utils/daemon-discovery.d.ts.map +1 -1
- package/dist/utils/daemon-discovery.js +19 -0
- package/dist/utils/daemon-discovery.js.map +1 -1
- package/dist/utils/ready-gate.d.ts +9 -3
- package/dist/utils/ready-gate.d.ts.map +1 -1
- package/dist/utils/ready-gate.js +12 -4
- package/dist/utils/ready-gate.js.map +1 -1
- package/dist/worker.js +131 -28
- package/dist/worker.js.map +1 -1
- package/dist/workflows/ops-projection.d.ts.map +1 -1
- package/dist/workflows/ops-projection.js +27 -5
- package/dist/workflows/ops-projection.js.map +1 -1
- package/dist/workflows/v3/distillation-runner.d.ts +4 -0
- package/dist/workflows/v3/distillation-runner.d.ts.map +1 -1
- package/dist/workflows/v3/distillation-runner.js +4 -2
- package/dist/workflows/v3/distillation-runner.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/sessions-page-WJ2QYTIE.js +0 -3
package/dist/config.d.ts
CHANGED
|
@@ -38,6 +38,11 @@ export declare function resolveHerdrTraexPluginConfig(env?: NodeJS.ProcessEnv):
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function isVcMeetingAgentGloballyEnabled(): boolean;
|
|
40
40
|
export declare function vcMeetingAgentGlobalListenerBotAppId(): string | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Grace period for coalescing a newly forwarded topic with the user's
|
|
43
|
+
* immediate root-linked clarification. Zero is an explicit kill switch.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveForwardFollowupWaitMs(env?: NodeJS.ProcessEnv): number;
|
|
41
46
|
export declare const config: {
|
|
42
47
|
lark: {
|
|
43
48
|
appId: string;
|
|
@@ -65,6 +70,7 @@ export declare const config: {
|
|
|
65
70
|
* BOTMUX_RECOVERY_FORK_DELAY_MS. */
|
|
66
71
|
recoveryForkBatchSize: number;
|
|
67
72
|
recoveryForkDelayMs: number;
|
|
73
|
+
forwardFollowupWaitMs: number;
|
|
68
74
|
workingDir: string;
|
|
69
75
|
workingDirs: string[];
|
|
70
76
|
allowedUsers: string[];
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAsB/D,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AA2BD,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,sBAAsB,CAU1G;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,6BAA6B,CAgBjH;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED,wBAAgB,oCAAoC,IAAI,MAAM,GAAG,SAAS,CAEzE;AAED,eAAO,MAAM,MAAM;;;;;;iBAUI,MAAM;;;QAGzB;;;4CAGoC;;;;eAIY,OAAO,yBAAyB,EAAE,KAAK;;qBAElB,WAAW;QAChF;;;;;6CAKqC
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAsB/D,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AA2BD,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,sBAAsB,CAU1G;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,6BAA6B,CAgBjH;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED,wBAAgB,oCAAoC,IAAI,MAAM,GAAG,SAAS,CAEzE;AAKD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAQzF;AAED,eAAO,MAAM,MAAM;;;;;;iBAUI,MAAM;;;QAGzB;;;4CAGoC;;;;eAIY,OAAO,yBAAyB,EAAE,KAAK;;qBAElB,WAAW;QAChF;;;;;6CAKqC;;;;;;;;;;;;;;;;;;;;QAwCrC;;;;;;;;;;sEAU8D;;;;;;;;QAQ9D,sCAAsC;;QAEtC,iEAAiE;;QAEjE,2CAA2C;;QAE3C,mFAAmF;sBAI3E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9B,mGAAmG;mBAI3F,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;QAG/B;;;;;WAKG;;;;;;QAMH,uDAAuD;sBAI/C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9B,2DAA2D;mBAInD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;CAOlC,CAAC;AAGF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -99,6 +99,23 @@ export function isVcMeetingAgentGloballyEnabled() {
|
|
|
99
99
|
export function vcMeetingAgentGlobalListenerBotAppId() {
|
|
100
100
|
return globalVcMeetingAgentListenerBotAppId();
|
|
101
101
|
}
|
|
102
|
+
const DEFAULT_FORWARD_FOLLOWUP_WAIT_MS = 1_500;
|
|
103
|
+
const MAX_FORWARD_FOLLOWUP_WAIT_MS = 10_000;
|
|
104
|
+
/**
|
|
105
|
+
* Grace period for coalescing a newly forwarded topic with the user's
|
|
106
|
+
* immediate root-linked clarification. Zero is an explicit kill switch.
|
|
107
|
+
*/
|
|
108
|
+
export function resolveForwardFollowupWaitMs(env = process.env) {
|
|
109
|
+
const raw = env.BOTMUX_FORWARD_FOLLOWUP_WAIT_MS?.trim();
|
|
110
|
+
if (!raw)
|
|
111
|
+
return DEFAULT_FORWARD_FOLLOWUP_WAIT_MS;
|
|
112
|
+
const value = Number(raw);
|
|
113
|
+
if (!Number.isFinite(value) || value < 0)
|
|
114
|
+
return DEFAULT_FORWARD_FOLLOWUP_WAIT_MS;
|
|
115
|
+
if (value === 0)
|
|
116
|
+
return 0;
|
|
117
|
+
return Math.min(MAX_FORWARD_FOLLOWUP_WAIT_MS, Math.max(1, Math.trunc(value)));
|
|
118
|
+
}
|
|
102
119
|
export const config = {
|
|
103
120
|
lark: {
|
|
104
121
|
appId: process.env.LARK_APP_ID ?? '',
|
|
@@ -130,6 +147,7 @@ export const config = {
|
|
|
130
147
|
* BOTMUX_RECOVERY_FORK_DELAY_MS. */
|
|
131
148
|
recoveryForkBatchSize: Math.max(1, Number(process.env.BOTMUX_RECOVERY_FORK_BATCH) || 5),
|
|
132
149
|
recoveryForkDelayMs: Math.max(0, Number(process.env.BOTMUX_RECOVERY_FORK_DELAY_MS ?? 250)),
|
|
150
|
+
forwardFollowupWaitMs: resolveForwardFollowupWaitMs(),
|
|
133
151
|
workingDir: (process.env.WORKING_DIR ?? '~').split(',').map(s => s.trim()).filter(Boolean)[0] || '~',
|
|
134
152
|
workingDirs: (process.env.WORKING_DIR ?? '~').split(',').map(s => s.trim()).filter(Boolean),
|
|
135
153
|
allowedUsers: (process.env.ALLOWED_USERS ?? '').split(',').map(s => s.trim()).filter(Boolean),
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AASxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAoF,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjJ,OAAO,EAA8D,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACtI,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AASxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAoF,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjJ,OAAO,EAA8D,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACtI,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAMnG,OAAO,EAEoB,KAAK,eAAe,EAC9C,MAAM,+BAA+B,CAAC;AAmCvC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAchD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAA4D,MAAM,2BAA2B,CAAC;AAC5I,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,aAAkI,CAAC;AAE3K;;;;;;;;;GASG;AACH,eAAO,MAAM,qCAAqC,aAAuB,CAAC;AAE1E,wBAAgB,wCAAwC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAe1E;AAID,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA0C9C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKpF;AAED;;;;mCAImC;AACnC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CA0B1F;AAoED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1H,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,gCAAgC,EAAE,WAAW,EAAE,CAAC,CAAC;IAClF,qCAAqC;IACrC,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvF;AAuqBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CA6Df;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AA8BD,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,kBAAkB,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsiEf;AAoDD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,qBAAqB,EAC7B,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,kBAAkB,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,GAAG,sBAAsB,EACjD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,kBAAkB,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;;wBAGwB;AACxB,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1C,KAAK,SAAK,GACT,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuB7B;AAED;;kFAEkF;AAClF,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,gBAAgB,EACxB,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,kBAAkB,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -19,12 +19,12 @@ import { buildRepoSelectCard, buildAdoptSelectCard, buildCodexAppThreadSelectCar
|
|
|
19
19
|
import { computeSandboxDiff } from '../services/sandbox-land.js';
|
|
20
20
|
import { handleDashboardCommand } from './dashboard-command/index.js';
|
|
21
21
|
import { createCliAdapterSync } from '../adapters/cli/registry.js';
|
|
22
|
-
import { deleteMessage, sendMessage, sendUserMessage, listChatBotMembers, resolveUserUnionId, getChatModeStrict, uploadFile, UserTokenMissingError } from '../im/lark/client.js';
|
|
22
|
+
import { deleteMessage, sendMessage, sendUserMessage, replyMessage, listChatBotMembers, resolveUserUnionId, getChatModeStrict, uploadFile, UserTokenMissingError } from '../im/lark/client.js';
|
|
23
23
|
import { chatAppLink, normalizeBrand } from '../im/lark/lark-hosts.js';
|
|
24
24
|
import { claimPairing } from '../services/pairing-store.js';
|
|
25
25
|
import { logger } from '../utils/logger.js';
|
|
26
26
|
import { scheduleTimeZone } from '../utils/timezone.js';
|
|
27
|
-
import { killWorker, forkWorker, forkAdoptWorker, getCurrentCliVersion, postFreshStreamingCard, postPrivateSnapshotCard, resolvePrivateCardAudience, deliverEphemeralOrReply, deliverWritableTerminalCardTo } from './worker-pool.js';
|
|
27
|
+
import { killWorker, suspendWorker, forkWorker, forkAdoptWorker, getCurrentCliVersion, postFreshStreamingCard, postPrivateSnapshotCard, resolvePrivateCardAudience, deliverEphemeralOrReply, deliverWritableTerminalCardTo } from './worker-pool.js';
|
|
28
28
|
import { expandHome, getSessionWorkingDir, getProjectScanDirs, rememberLastCliInput } from './session-manager.js';
|
|
29
29
|
import { discoverSlashCommandsForAdapter, listMcpServerNames, supportsFilesystemCommandDiscovery } from './command-discovery.js';
|
|
30
30
|
import { validateWorkingDir } from './working-dir.js';
|
|
@@ -35,8 +35,10 @@ import { listCodexAppThreads } from '../services/codex-app-threads.js';
|
|
|
35
35
|
import { generateAuthUrl, getTokenStatus, resolveUserToken, DOC_COMMENT_OAUTH_SCOPES } from '../utils/user-token.js';
|
|
36
36
|
import { DocSubscriptionPermissionError, listDocComments, resolveDocFile, subscribeDocFile, unsubscribeDocFile } from '../im/lark/doc-comment.js';
|
|
37
37
|
import { parseDocWatchCommand } from './doc-watch-command.js';
|
|
38
|
+
import { parseVcMeetingPrepareCommand } from './vc-meeting-prepare-command.js';
|
|
38
39
|
import { latestDocCommentPollCursor } from './doc-comment-poller.js';
|
|
39
40
|
import { putDocSubscription, removeDocSubscription, listDocSubscriptionsForSession, listAllDocSubscriptions, getDocSubscription, } from '../services/doc-subs-store.js';
|
|
41
|
+
import { findVcMeetingPreparationByChat, getVcMeetingPreparation, listVcMeetingPreparations, putVcMeetingPreparation, removeVcMeetingPreparation, removeVcMeetingPreparationsByChat, } from '../services/vc-meeting-preparations-store.js';
|
|
40
42
|
import { bindOncall, unbindOncall, getOncallStatus } from '../services/oncall-store.js';
|
|
41
43
|
import { CONFIG_FIELDS, findConfigField, settableFieldKeys, parseBooleanValue, applyConfigField, setBotAllowedUsers, getConfigSnapshot, getConfigCardData, coerceConfigValue, } from '../services/bot-config-store.js';
|
|
42
44
|
import { resolveCliId, findInvalidAllowedUserEntries } from '../setup/bot-config-editor.js';
|
|
@@ -1321,7 +1323,15 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
1321
1323
|
break;
|
|
1322
1324
|
}
|
|
1323
1325
|
const resolvedPath = validation.resolvedPath;
|
|
1324
|
-
|
|
1326
|
+
// Persistent backends can cold-resume without treating a cwd switch as
|
|
1327
|
+
// a real session close. This also preserves a sandbox upper long enough
|
|
1328
|
+
// for the next worker to relocate Claude's cwd-scoped transcript.
|
|
1329
|
+
// Adopted sessions are observers of a user-owned CLI and keep the old
|
|
1330
|
+
// detach/kill behavior; PTY falls back to killWorker, while its normal
|
|
1331
|
+
// on-disk transcript remains available for the resume-sync preflight.
|
|
1332
|
+
const suspended = !ds.adoptedFrom && suspendWorker(ds, 'working_dir_changed');
|
|
1333
|
+
if (!suspended)
|
|
1334
|
+
killWorker(ds);
|
|
1325
1335
|
repinSessionWorkingDir(ds, resolvedPath);
|
|
1326
1336
|
if (validation.created) {
|
|
1327
1337
|
await sessionReply(rootId, t('cmd.cd.created_switched', { path: resolvedPath }, loc));
|
|
@@ -2055,7 +2065,12 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2055
2065
|
const mode = request.requestedMode
|
|
2056
2066
|
?? (botCfg.docSubscribeDefaultMode === 'all' ? 'all' : 'mention-only');
|
|
2057
2067
|
const anchor = ds ? sessionAnchorId(ds) : `doc:${file.fileToken}`;
|
|
2058
|
-
|
|
2068
|
+
// Existing chat/thread sessions own their project binding. A watch
|
|
2069
|
+
// without an explicit --dir inherits that binding; session-less
|
|
2070
|
+
// document watches keep their own stored/mapped directory fallback.
|
|
2071
|
+
const effectiveDir = ds
|
|
2072
|
+
? (validatedDir ?? ds.workingDir ?? ds.session.workingDir)
|
|
2073
|
+
: (validatedDir ?? existing?.workingDir ?? botCfg.docRepoMap?.[file.fileToken]);
|
|
2059
2074
|
let pollCursorAt;
|
|
2060
2075
|
let pollCursorReplyId;
|
|
2061
2076
|
let pollBaselineReady;
|
|
@@ -2106,6 +2121,8 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2106
2121
|
}, loc);
|
|
2107
2122
|
if (effectiveDir)
|
|
2108
2123
|
replyText += `\n📂 ${t('cmd.watch.working_dir', { dir: effectiveDir }, loc)}`;
|
|
2124
|
+
else
|
|
2125
|
+
replyText += `\n\n${t(ds ? 'cmd.watch.project_optional_session' : 'cmd.watch.project_optional_lazy', undefined, loc)}`;
|
|
2109
2126
|
if (ds && deps.prewarmDocCommentSession) {
|
|
2110
2127
|
try {
|
|
2111
2128
|
await deps.prewarmDocCommentSession(ds, subscription);
|
|
@@ -2124,6 +2141,95 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2124
2141
|
}
|
|
2125
2142
|
break;
|
|
2126
2143
|
}
|
|
2144
|
+
case '/vc': {
|
|
2145
|
+
if (!larkAppId) {
|
|
2146
|
+
await sessionReply(rootId, t('cmd.vc.no_session', undefined, loc));
|
|
2147
|
+
break;
|
|
2148
|
+
}
|
|
2149
|
+
const ownerOpenId = getOwnerOpenId(larkAppId);
|
|
2150
|
+
if (!ownerOpenId || message.senderId !== ownerOpenId) {
|
|
2151
|
+
await sessionReply(rootId, t('cmd.vc.owner_only', undefined, loc));
|
|
2152
|
+
break;
|
|
2153
|
+
}
|
|
2154
|
+
const request = parseVcMeetingPrepareCommand(message.content);
|
|
2155
|
+
const dataDir = config.session.dataDir;
|
|
2156
|
+
if (request.kind === 'usage' || request.kind === 'invalid') {
|
|
2157
|
+
const prefix = request.kind === 'invalid'
|
|
2158
|
+
? `${t('cmd.vc.invalid', undefined, loc)}\n\n`
|
|
2159
|
+
: '';
|
|
2160
|
+
await sessionReply(rootId, prefix + t('cmd.vc.usage', undefined, loc));
|
|
2161
|
+
break;
|
|
2162
|
+
}
|
|
2163
|
+
if (request.kind === 'status') {
|
|
2164
|
+
const requestedRecord = request.meetingNo
|
|
2165
|
+
? getVcMeetingPreparation(dataDir, larkAppId, request.meetingNo)
|
|
2166
|
+
: undefined;
|
|
2167
|
+
const records = request.meetingNo
|
|
2168
|
+
? (requestedRecord ? [requestedRecord] : [])
|
|
2169
|
+
: listVcMeetingPreparations(dataDir, larkAppId);
|
|
2170
|
+
if (records.length === 0) {
|
|
2171
|
+
await sessionReply(rootId, t('cmd.vc.none', undefined, loc));
|
|
2172
|
+
break;
|
|
2173
|
+
}
|
|
2174
|
+
const lines = records.map(record => [
|
|
2175
|
+
`• ${record.topic || record.meetingNo}`,
|
|
2176
|
+
` meetingNo: \`${record.meetingNo}\``,
|
|
2177
|
+
` chat: \`${record.prepChatId}\``,
|
|
2178
|
+
` agent: \`${record.agentAppId}\``,
|
|
2179
|
+
` Q&A: ${record.qaMode}`,
|
|
2180
|
+
].join('\n'));
|
|
2181
|
+
await sessionReply(rootId, [t('cmd.vc.status_title', undefined, loc), '', ...lines].join('\n'));
|
|
2182
|
+
break;
|
|
2183
|
+
}
|
|
2184
|
+
if (request.kind === 'off') {
|
|
2185
|
+
let count = 0;
|
|
2186
|
+
if (request.all) {
|
|
2187
|
+
for (const record of listVcMeetingPreparations(dataDir, larkAppId)) {
|
|
2188
|
+
if (removeVcMeetingPreparation(dataDir, larkAppId, record.meetingNo))
|
|
2189
|
+
count += 1;
|
|
2190
|
+
}
|
|
2191
|
+
}
|
|
2192
|
+
else if (request.meetingNo) {
|
|
2193
|
+
count = removeVcMeetingPreparation(dataDir, larkAppId, request.meetingNo) ? 1 : 0;
|
|
2194
|
+
}
|
|
2195
|
+
else if (ds) {
|
|
2196
|
+
count = removeVcMeetingPreparationsByChat(dataDir, larkAppId, ds.chatId);
|
|
2197
|
+
}
|
|
2198
|
+
await sessionReply(rootId, count > 0
|
|
2199
|
+
? t('cmd.vc.stopped', { count }, loc)
|
|
2200
|
+
: t('cmd.vc.none', undefined, loc));
|
|
2201
|
+
break;
|
|
2202
|
+
}
|
|
2203
|
+
if (!ds || ds.chatType !== 'group' || ds.scope !== 'chat') {
|
|
2204
|
+
await sessionReply(rootId, t('cmd.vc.need_group_chat', undefined, loc));
|
|
2205
|
+
break;
|
|
2206
|
+
}
|
|
2207
|
+
const existingInChat = findVcMeetingPreparationByChat(dataDir, larkAppId, ds.chatId);
|
|
2208
|
+
const record = putVcMeetingPreparation(dataDir, {
|
|
2209
|
+
larkAppId,
|
|
2210
|
+
meetingNo: request.meetingNo,
|
|
2211
|
+
...(request.meetingLink ? { meetingLink: request.meetingLink } : {}),
|
|
2212
|
+
prepChatId: ds.chatId,
|
|
2213
|
+
agentAppId: larkAppId,
|
|
2214
|
+
agentSessionId: ds.session.sessionId,
|
|
2215
|
+
ownerOpenId: message.senderId,
|
|
2216
|
+
qaMode: request.qaMode,
|
|
2217
|
+
});
|
|
2218
|
+
const replaced = existingInChat && existingInChat.meetingNo !== record.meetingNo
|
|
2219
|
+
? `\n${t('cmd.vc.replaced', { meetingNo: existingInChat.meetingNo }, loc)}`
|
|
2220
|
+
: '';
|
|
2221
|
+
let preparedText = t('cmd.vc.prepared', {
|
|
2222
|
+
meetingNo: record.meetingNo,
|
|
2223
|
+
qaMode: record.qaMode,
|
|
2224
|
+
}, loc) + replaced;
|
|
2225
|
+
const meetingProjectDir = ds.workingDir ?? ds.session.workingDir;
|
|
2226
|
+
preparedText += meetingProjectDir
|
|
2227
|
+
? `\n\n${t('cmd.vc.project_bound', { dir: meetingProjectDir }, loc)}`
|
|
2228
|
+
: `\n\n${t('cmd.vc.project_optional', undefined, loc)}`;
|
|
2229
|
+
await sessionReply(rootId, preparedText);
|
|
2230
|
+
logger.info(`[${logTag}] /vc prepare meetingNo=${record.meetingNo} chat=${record.prepChatId} agent=${record.agentAppId} qa=${record.qaMode}`);
|
|
2231
|
+
break;
|
|
2232
|
+
}
|
|
2127
2233
|
case '/adopt': {
|
|
2128
2234
|
const adoptArgs = message.content.replace(/^\/adopt\s*/i, '').trim();
|
|
2129
2235
|
if (ds?.adoptedFrom) {
|
|
@@ -2470,6 +2576,11 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2470
2576
|
* the @-mentioned bots, then migrate every bot's session in this
|
|
2471
2577
|
* thread (including the leader's) into the new chat.
|
|
2472
2578
|
*
|
|
2579
|
+
* p2p (私聊) variant: `/relay --create [群名]` with NO mentions — DMs
|
|
2580
|
+
* have no member roster so @-ing a bot is impossible there. The bot
|
|
2581
|
+
* itself is the sole participant and leader; the new group is user +
|
|
2582
|
+
* this bot, and the DM session migrates over (solo relay, no peers).
|
|
2583
|
+
*
|
|
2473
2584
|
* Two-path command:
|
|
2474
2585
|
* • `--create` (PR2) — implemented below; creates a new chat.
|
|
2475
2586
|
* • no flag (PR3) — picker card listing user's relayable sessions
|
|
@@ -2552,6 +2663,29 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2552
2663
|
});
|
|
2553
2664
|
const targetScope = targetRouting.scope;
|
|
2554
2665
|
const targetAnchor = targetRouting.anchor;
|
|
2666
|
+
// ── Reply WHERE the user typed /relay ─────────────────────────────
|
|
2667
|
+
// Not through sessionReply: in chat-scope groups (普通群扁平 /
|
|
2668
|
+
// chat-topic / shared) that path either leaks to the chat top level
|
|
2669
|
+
// (the /relay scratch has no turn state to fold back into) or lands
|
|
2670
|
+
// in the CURRENT turn's 话题 (a real chat-scope session) — both away
|
|
2671
|
+
// from the 话题 the user invoked in (申晗 live 反馈). The target
|
|
2672
|
+
// routing already encodes the invocation spot:
|
|
2673
|
+
// thread → reply_in_thread into that 话题 (for 话题群 / DM-thread
|
|
2674
|
+
// top-level this seeds the 话题 on the /relay message —
|
|
2675
|
+
// same place the relayed session will land);
|
|
2676
|
+
// chat → quote-reply the /relay message at the top level.
|
|
2677
|
+
// Fallback to sessionReply if the reply API refuses (e.g. the
|
|
2678
|
+
// command message was withdrawn mid-flight).
|
|
2679
|
+
const replyAtInvocation = async (content, msgType) => {
|
|
2680
|
+
try {
|
|
2681
|
+
await replyMessage(myAppId, targetScope === 'thread' ? targetAnchor : message.messageId, content, msgType ?? 'text',
|
|
2682
|
+
/*replyInThread*/ targetScope === 'thread');
|
|
2683
|
+
}
|
|
2684
|
+
catch (err) {
|
|
2685
|
+
logger.warn(`[${logTag}] /relay reply-at-invocation failed (${err instanceof Error ? err.message : err}); falling back to sessionReply`);
|
|
2686
|
+
await sessionReply(rootId, content, msgType);
|
|
2687
|
+
}
|
|
2688
|
+
};
|
|
2555
2689
|
// ── Existing-session guard (anchor-based) ─────────────────────────
|
|
2556
2690
|
// A real session already sitting AT the target anchor would collide
|
|
2557
2691
|
// on sessionKey(targetAnchor, larkAppId) after transfer — Map.set
|
|
@@ -2566,7 +2700,7 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2566
2700
|
&& !!c.worker // real running session, not a placeholder
|
|
2567
2701
|
);
|
|
2568
2702
|
if (conflict) {
|
|
2569
|
-
await
|
|
2703
|
+
await replyAtInvocation(t('cmd.relay.target_has_session', { title: conflict.session.title || conflict.session.sessionId.substring(0, 8) }, loc));
|
|
2570
2704
|
break;
|
|
2571
2705
|
}
|
|
2572
2706
|
// Shared candidate-collection logic — used here at initial render
|
|
@@ -2578,7 +2712,7 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2578
2712
|
const entries = await collectRelayPickerEntries(activeSessions, myAppId, targetAnchor, operatorOpenId);
|
|
2579
2713
|
const { buildRelayPickerCard } = await import('../im/lark/card-builder.js');
|
|
2580
2714
|
const card = buildRelayPickerCard(entries, targetChatId, targetAnchor, operatorOpenId, loc, undefined, targetScope, targetChatType);
|
|
2581
|
-
await
|
|
2715
|
+
await replyAtInvocation(card, 'interactive');
|
|
2582
2716
|
break;
|
|
2583
2717
|
}
|
|
2584
2718
|
const afterFlag = argsLine.replace(/^--create\s*/i, '').trim();
|
|
@@ -2618,30 +2752,38 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2618
2752
|
await sessionReply(rootId, t('cmd.relay.not_started_yet', undefined, loc));
|
|
2619
2753
|
break;
|
|
2620
2754
|
}
|
|
2755
|
+
// ── p2p (私聊) solo relay: no mention gate, no leader election ──────
|
|
2756
|
+
// 飞书私聊里 @ 不到任何机器人(DM 没有成员列表),mention 门与 leader
|
|
2757
|
+
// 选举在这里没有意义 —— 本 bot 就是唯一参与者兼 leader,新群 = 用户 +
|
|
2758
|
+
// 本 bot,无 peer 协调(peerAppIds 自然为空)。群聊路径语义不变。
|
|
2759
|
+
// chatType 取自 ds(会话创建时从 Lark 事件记录,权威、不漂移)。
|
|
2760
|
+
const sourceIsP2p = ds.chatType === 'p2p';
|
|
2621
2761
|
// ── Mention parsing & leader election (mirror of /group) ───────────
|
|
2622
2762
|
const mentions = message.mentions ?? [];
|
|
2623
2763
|
const knownBotNames = globalKnownBotNames();
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2764
|
+
const botMentions = sourceIsP2p ? [] : mentions.filter(m => m.name && knownBotNames.has(m.name.toLowerCase()));
|
|
2765
|
+
if (!sourceIsP2p) {
|
|
2766
|
+
if (knownBotNames.size === 0 && mentions.some(m => !!m.name)) {
|
|
2767
|
+
logger.warn(`[${logTag}] /relay --create: global bot registry empty; cannot elect a creator`);
|
|
2768
|
+
await sessionReply(rootId, t('cmd.relay.resolve_failed', undefined, loc));
|
|
2769
|
+
break;
|
|
2770
|
+
}
|
|
2771
|
+
if (botMentions.length === 0) {
|
|
2772
|
+
await sessionReply(rootId, t('cmd.relay.no_mentions', undefined, loc));
|
|
2773
|
+
break;
|
|
2774
|
+
}
|
|
2775
|
+
// Am I `mentions[0]`?
|
|
2776
|
+
const firstBot = botMentions[0];
|
|
2777
|
+
const myOpenId = getBotOpenId(creatorAppId);
|
|
2778
|
+
const myName = getBot(creatorAppId).botName?.toLowerCase();
|
|
2779
|
+
const myNameAmbiguous = !!myName
|
|
2780
|
+
&& botMentions.filter(m => m.name?.toLowerCase() === myName).length > 1;
|
|
2781
|
+
const iAmFirstBot = (!!myOpenId && firstBot.openId === myOpenId) ||
|
|
2782
|
+
(!myOpenId && !!myName && !myNameAmbiguous && firstBot.name?.toLowerCase() === myName);
|
|
2783
|
+
if (!iAmFirstBot) {
|
|
2784
|
+
logger.info(`[${logTag}] /relay --create: not the first @-mentioned bot, staying silent`);
|
|
2785
|
+
break;
|
|
2786
|
+
}
|
|
2645
2787
|
}
|
|
2646
2788
|
// Owner-only — only the source session owner may relay this session.
|
|
2647
2789
|
if (ds.session.ownerOpenId && ds.session.ownerOpenId !== senderOpenId) {
|
|
@@ -2649,38 +2791,45 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2649
2791
|
break;
|
|
2650
2792
|
}
|
|
2651
2793
|
// ── Resolve @-bots to larkAppIds via the source chat's bot roster ──
|
|
2794
|
+
// p2p: 跳过成员表解析(DM 没有 bot roster,listChatBotMembers 会失败),
|
|
2795
|
+
// 参与者就是本 bot 自己;名字兜底走 botDisplayName(nameOf)。
|
|
2652
2796
|
const sourceChatId = ds.chatId;
|
|
2653
|
-
let members = [];
|
|
2654
|
-
try {
|
|
2655
|
-
members = await listChatBotMembers(creatorAppId, sourceChatId);
|
|
2656
|
-
}
|
|
2657
|
-
catch (e) {
|
|
2658
|
-
logger.warn(`[${logTag}] /relay --create: failed to list source chat members: ${e?.message ?? e}`);
|
|
2659
|
-
}
|
|
2660
|
-
const memberByOpenId = new Map(members.map(m => [m.openId, m]));
|
|
2661
2797
|
const appIdToName = new Map();
|
|
2662
|
-
for (const m of members) {
|
|
2663
|
-
if (m.larkAppId && m.displayName)
|
|
2664
|
-
appIdToName.set(m.larkAppId, m.displayName);
|
|
2665
|
-
}
|
|
2666
2798
|
const mentionedBotAppIds = [];
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2799
|
+
if (sourceIsP2p) {
|
|
2800
|
+
mentionedBotAppIds.push(creatorAppId);
|
|
2801
|
+
}
|
|
2802
|
+
else {
|
|
2803
|
+
let members = [];
|
|
2804
|
+
try {
|
|
2805
|
+
members = await listChatBotMembers(creatorAppId, sourceChatId);
|
|
2674
2806
|
}
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2807
|
+
catch (e) {
|
|
2808
|
+
logger.warn(`[${logTag}] /relay --create: failed to list source chat members: ${e?.message ?? e}`);
|
|
2809
|
+
}
|
|
2810
|
+
const memberByOpenId = new Map(members.map(m => [m.openId, m]));
|
|
2811
|
+
for (const m of members) {
|
|
2812
|
+
if (m.larkAppId && m.displayName)
|
|
2813
|
+
appIdToName.set(m.larkAppId, m.displayName);
|
|
2814
|
+
}
|
|
2815
|
+
const seenApp = new Set();
|
|
2816
|
+
let unresolved;
|
|
2817
|
+
for (const bm of botMentions) {
|
|
2818
|
+
const mem = bm.openId ? memberByOpenId.get(bm.openId) : undefined;
|
|
2819
|
+
if (!mem || !mem.larkAppId) {
|
|
2820
|
+
unresolved = bm.name;
|
|
2821
|
+
break;
|
|
2822
|
+
}
|
|
2823
|
+
if (!seenApp.has(mem.larkAppId)) {
|
|
2824
|
+
seenApp.add(mem.larkAppId);
|
|
2825
|
+
mentionedBotAppIds.push(mem.larkAppId);
|
|
2826
|
+
}
|
|
2827
|
+
}
|
|
2828
|
+
if (unresolved) {
|
|
2829
|
+
logger.warn(`[${logTag}] /relay --create: unresolved bot "${unresolved}"`);
|
|
2830
|
+
await sessionReply(rootId, t('cmd.relay.resolve_failed', undefined, loc));
|
|
2831
|
+
break;
|
|
2678
2832
|
}
|
|
2679
|
-
}
|
|
2680
|
-
if (unresolved) {
|
|
2681
|
-
logger.warn(`[${logTag}] /relay --create: unresolved bot "${unresolved}"`);
|
|
2682
|
-
await sessionReply(rootId, t('cmd.relay.resolve_failed', undefined, loc));
|
|
2683
|
-
break;
|
|
2684
2833
|
}
|
|
2685
2834
|
// ── Group name extraction (mirror of /group) ───────────────────────
|
|
2686
2835
|
let rawArgs = afterFlag;
|
|
@@ -2742,10 +2891,14 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2742
2891
|
const placeholderRootMessageId = newChatId;
|
|
2743
2892
|
// Resolve friendly source-chat label for the M1 body — falls back to
|
|
2744
2893
|
// raw chatId if Lark can't return a name. Mirrors picker-path
|
|
2745
|
-
// (card-handler.ts
|
|
2746
|
-
// entry points.
|
|
2894
|
+
// (card-handler.ts relay_confirm) so the message reads the same in
|
|
2895
|
+
// both UX entry points; p2p source has no chat name (chat.get often
|
|
2896
|
+
// fails/returns empty for DMs) — use the locale-aware 单聊 label
|
|
2897
|
+
// instead of leaking a raw oc_ id into the M1.
|
|
2747
2898
|
const { getChatName } = await import('../im/lark/client.js');
|
|
2748
|
-
const sourceLabel =
|
|
2899
|
+
const sourceLabel = sourceIsP2p
|
|
2900
|
+
? t('card.relay.type_p2p', undefined, loc)
|
|
2901
|
+
: (await getChatName(creatorAppId, sourceChatId).catch(() => null)) ?? sourceChatId;
|
|
2749
2902
|
// ── Step 1: leader transfers its own session (if any) ───────────────
|
|
2750
2903
|
// Empty-leader handling: daemon auto-creates a placeholder ds for any
|
|
2751
2904
|
// DAEMON_COMMAND (worker:null + hasHistory:false). If the user typed
|
|
@@ -3009,6 +3162,7 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
3009
3162
|
t('help.land', undefined, loc),
|
|
3010
3163
|
t('help.subscribe_doc', undefined, loc),
|
|
3011
3164
|
t('help.watch_comment', undefined, loc),
|
|
3165
|
+
t('help.vc', undefined, loc),
|
|
3012
3166
|
t('help.summary', undefined, loc),
|
|
3013
3167
|
'',
|
|
3014
3168
|
t('help.heading_passthrough', { cliName }, loc),
|