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.
Files changed (207) hide show
  1. package/dist/adapters/backend/herdr-backend.d.ts +9 -7
  2. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  3. package/dist/adapters/backend/herdr-backend.js +63 -53
  4. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  5. package/dist/adapters/backend/riff-backend.d.ts +6 -1
  6. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  7. package/dist/adapters/backend/riff-backend.js +7 -2
  8. package/dist/adapters/backend/riff-backend.js.map +1 -1
  9. package/dist/adapters/backend/sandbox.d.ts +20 -16
  10. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  11. package/dist/adapters/backend/sandbox.js +192 -65
  12. package/dist/adapters/backend/sandbox.js.map +1 -1
  13. package/dist/adapters/backend/tmux-backend.d.ts +39 -2
  14. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  15. package/dist/adapters/backend/tmux-backend.js +55 -5
  16. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  17. package/dist/adapters/backend/tmux-pipe-backend.js +2 -2
  18. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  19. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
  20. package/dist/adapters/backend/zellij-backend.js +9 -3
  21. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  22. package/dist/adapters/cli/claude-code.d.ts +25 -0
  23. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  24. package/dist/adapters/cli/claude-code.js +79 -9
  25. package/dist/adapters/cli/claude-code.js.map +1 -1
  26. package/dist/adapters/cli/read-isolation.d.ts +2 -1
  27. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  28. package/dist/adapters/cli/read-isolation.js.map +1 -1
  29. package/dist/adapters/cli/types.d.ts +2 -2
  30. package/dist/adapters/hook-installer.d.ts +11 -0
  31. package/dist/adapters/hook-installer.d.ts.map +1 -1
  32. package/dist/adapters/hook-installer.js +72 -11
  33. package/dist/adapters/hook-installer.js.map +1 -1
  34. package/dist/cli.d.ts.map +1 -1
  35. package/dist/cli.js +15 -4
  36. package/dist/cli.js.map +1 -1
  37. package/dist/config.d.ts +6 -0
  38. package/dist/config.d.ts.map +1 -1
  39. package/dist/config.js +18 -0
  40. package/dist/config.js.map +1 -1
  41. package/dist/core/command-handler.d.ts.map +1 -1
  42. package/dist/core/command-handler.js +211 -57
  43. package/dist/core/command-handler.js.map +1 -1
  44. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  45. package/dist/core/dashboard-ipc-server.js +12 -5
  46. package/dist/core/dashboard-ipc-server.js.map +1 -1
  47. package/dist/core/dashboard-rows.d.ts +5 -0
  48. package/dist/core/dashboard-rows.d.ts.map +1 -1
  49. package/dist/core/dashboard-rows.js +2 -0
  50. package/dist/core/dashboard-rows.js.map +1 -1
  51. package/dist/core/doc-comment-prompt.d.ts +2 -0
  52. package/dist/core/doc-comment-prompt.d.ts.map +1 -1
  53. package/dist/core/doc-comment-prompt.js +30 -0
  54. package/dist/core/doc-comment-prompt.js.map +1 -1
  55. package/dist/core/github-auth.d.ts +8 -0
  56. package/dist/core/github-auth.d.ts.map +1 -0
  57. package/dist/core/github-auth.js +44 -0
  58. package/dist/core/github-auth.js.map +1 -0
  59. package/dist/core/managed-origin-capability.d.ts +7 -0
  60. package/dist/core/managed-origin-capability.d.ts.map +1 -1
  61. package/dist/core/managed-origin-capability.js +12 -0
  62. package/dist/core/managed-origin-capability.js.map +1 -1
  63. package/dist/core/passthrough-commands.d.ts.map +1 -1
  64. package/dist/core/passthrough-commands.js +1 -1
  65. package/dist/core/passthrough-commands.js.map +1 -1
  66. package/dist/core/restart-report.d.ts +7 -1
  67. package/dist/core/restart-report.d.ts.map +1 -1
  68. package/dist/core/restart-report.js +19 -5
  69. package/dist/core/restart-report.js.map +1 -1
  70. package/dist/core/session-activity.d.ts +8 -0
  71. package/dist/core/session-activity.d.ts.map +1 -1
  72. package/dist/core/session-activity.js +16 -0
  73. package/dist/core/session-activity.js.map +1 -1
  74. package/dist/core/session-discovery.d.ts.map +1 -1
  75. package/dist/core/session-discovery.js +4 -2
  76. package/dist/core/session-discovery.js.map +1 -1
  77. package/dist/core/update-check.d.ts +11 -0
  78. package/dist/core/update-check.d.ts.map +1 -1
  79. package/dist/core/update-check.js +6 -1
  80. package/dist/core/update-check.js.map +1 -1
  81. package/dist/core/vc-meeting-prepare-command.d.ts +22 -0
  82. package/dist/core/vc-meeting-prepare-command.d.ts.map +1 -0
  83. package/dist/core/vc-meeting-prepare-command.js +50 -0
  84. package/dist/core/vc-meeting-prepare-command.js.map +1 -0
  85. package/dist/core/worker-pool.d.ts.map +1 -1
  86. package/dist/core/worker-pool.js +11 -2
  87. package/dist/core/worker-pool.js.map +1 -1
  88. package/dist/daemon.d.ts +15 -5
  89. package/dist/daemon.d.ts.map +1 -1
  90. package/dist/daemon.js +555 -41
  91. package/dist/daemon.js.map +1 -1
  92. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  93. package/dist/dashboard/web/bot-defaults-page.js +6 -1
  94. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  95. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  96. package/dist/dashboard/web/i18n.js +34 -0
  97. package/dist/dashboard/web/i18n.js.map +1 -1
  98. package/dist/dashboard/web/preferences.d.ts +1 -1
  99. package/dist/dashboard/web/preferences.d.ts.map +1 -1
  100. package/dist/dashboard/web/preferences.js +1 -1
  101. package/dist/dashboard/web/preferences.js.map +1 -1
  102. package/dist/dashboard/web/sessions-page.d.ts +19 -0
  103. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  104. package/dist/dashboard/web/sessions-page.js +66 -7
  105. package/dist/dashboard/web/sessions-page.js.map +1 -1
  106. package/dist/dashboard/web/sessions.d.ts +31 -0
  107. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  108. package/dist/dashboard/web/sessions.js +82 -0
  109. package/dist/dashboard/web/sessions.js.map +1 -1
  110. package/dist/dashboard-web/app.js +1 -1
  111. package/dist/dashboard-web/chunks/{bot-defaults-page-MBORWWP7.js → bot-defaults-page-KLDCZNLP.js} +5 -5
  112. package/dist/dashboard-web/chunks/{chunk-G43RUPUN.js → chunk-EZAW2EPM.js} +1 -1
  113. package/dist/dashboard-web/chunks/{chunk-EIO5AWDA.js → chunk-FMJNOATE.js} +1 -1
  114. package/dist/dashboard-web/chunks/{chunk-4QTBR7UF.js → chunk-KEAOTUL3.js} +7 -7
  115. package/dist/dashboard-web/chunks/{chunk-7STGZ5BX.js → chunk-MLNI5BKE.js} +1 -1
  116. package/dist/dashboard-web/chunks/{connectors-page-LKDT4WBG.js → connectors-page-O32LFAL5.js} +1 -1
  117. package/dist/dashboard-web/chunks/{groups-page-XKIWJ2TP.js → groups-page-PSAFIZ6M.js} +1 -1
  118. package/dist/dashboard-web/chunks/{insights-page-CBEZCYKV.js → insights-page-V23LLATX.js} +1 -1
  119. package/dist/dashboard-web/chunks/{monitor-room-AQTHAWXA.js → monitor-room-7X5AKYOF.js} +1 -1
  120. package/dist/dashboard-web/chunks/{monitoring-page-2R4NCNBQ.js → monitoring-page-CBA3CQYL.js} +1 -1
  121. package/dist/dashboard-web/chunks/{office-page-5M6MQIIL.js → office-page-RL6QSEM7.js} +1 -1
  122. package/dist/dashboard-web/chunks/{overview-page-N22HDZ2V.js → overview-page-XQIPO6KH.js} +1 -1
  123. package/dist/dashboard-web/chunks/{roles-page-J6K2HWFX.js → roles-page-ACIWV7QS.js} +1 -1
  124. package/dist/dashboard-web/chunks/{schedules-page-CGAQCB4J.js → schedules-page-KJDUKOJV.js} +1 -1
  125. package/dist/dashboard-web/chunks/sessions-page-2WDWHSP4.js +3 -0
  126. package/dist/dashboard-web/chunks/{settings-page-GLRWV5KU.js → settings-page-6VX4OUGG.js} +1 -1
  127. package/dist/dashboard-web/chunks/{skills-page-KQVW42QU.js → skills-page-WXE3UYLT.js} +1 -1
  128. package/dist/dashboard-web/chunks/{team-federation-page-5PYUOV5M.js → team-federation-page-PYTF4FLM.js} +1 -1
  129. package/dist/dashboard-web/chunks/{v3-page-DXPFILRZ.js → v3-page-G6CD6O3I.js} +1 -1
  130. package/dist/dashboard-web/chunks/{whiteboards-page-NUH6VZ4I.js → whiteboards-page-6SG33GP4.js} +1 -1
  131. package/dist/dashboard-web/style.css +167 -2
  132. package/dist/i18n/en.d.ts.map +1 -1
  133. package/dist/i18n/en.js +18 -3
  134. package/dist/i18n/en.js.map +1 -1
  135. package/dist/i18n/zh.d.ts.map +1 -1
  136. package/dist/i18n/zh.js +18 -3
  137. package/dist/i18n/zh.js.map +1 -1
  138. package/dist/im/lark/card-builder.d.ts.map +1 -1
  139. package/dist/im/lark/card-builder.js +11 -2
  140. package/dist/im/lark/card-builder.js.map +1 -1
  141. package/dist/im/lark/event-dispatcher.d.ts +4 -0
  142. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  143. package/dist/im/lark/event-dispatcher.js +249 -5
  144. package/dist/im/lark/event-dispatcher.js.map +1 -1
  145. package/dist/im/lark/forward-followup-buffer.d.ts +26 -0
  146. package/dist/im/lark/forward-followup-buffer.d.ts.map +1 -0
  147. package/dist/im/lark/forward-followup-buffer.js +48 -0
  148. package/dist/im/lark/forward-followup-buffer.js.map +1 -0
  149. package/dist/im/lark/forward-followup-content.d.ts +6 -0
  150. package/dist/im/lark/forward-followup-content.d.ts.map +1 -0
  151. package/dist/im/lark/forward-followup-content.js +46 -0
  152. package/dist/im/lark/forward-followup-content.js.map +1 -0
  153. package/dist/im/lark/forward-followup-store.d.ts +9 -0
  154. package/dist/im/lark/forward-followup-store.d.ts.map +1 -0
  155. package/dist/im/lark/forward-followup-store.js +48 -0
  156. package/dist/im/lark/forward-followup-store.js.map +1 -0
  157. package/dist/im/lark/message-parser.d.ts +1 -1
  158. package/dist/im/lark/message-parser.d.ts.map +1 -1
  159. package/dist/im/lark/message-parser.js +1 -2
  160. package/dist/im/lark/message-parser.js.map +1 -1
  161. package/dist/platform/tunnel-client.js +3 -3
  162. package/dist/platform/tunnel-client.js.map +1 -1
  163. package/dist/services/local-cli-opener.d.ts +7 -0
  164. package/dist/services/local-cli-opener.d.ts.map +1 -1
  165. package/dist/services/local-cli-opener.js +111 -3
  166. package/dist/services/local-cli-opener.js.map +1 -1
  167. package/dist/services/skill-registry-store.d.ts.map +1 -1
  168. package/dist/services/skill-registry-store.js +15 -2
  169. package/dist/services/skill-registry-store.js.map +1 -1
  170. package/dist/services/vc-meeting-consumer-isolation.d.ts +7 -5
  171. package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -1
  172. package/dist/services/vc-meeting-consumer-isolation.js +7 -5
  173. package/dist/services/vc-meeting-consumer-isolation.js.map +1 -1
  174. package/dist/services/vc-meeting-preparations-store.d.ts +22 -0
  175. package/dist/services/vc-meeting-preparations-store.d.ts.map +1 -0
  176. package/dist/services/vc-meeting-preparations-store.js +131 -0
  177. package/dist/services/vc-meeting-preparations-store.js.map +1 -0
  178. package/dist/services/vc-meeting-runtime-store.d.ts +9 -0
  179. package/dist/services/vc-meeting-runtime-store.d.ts.map +1 -1
  180. package/dist/services/vc-meeting-runtime-store.js +16 -0
  181. package/dist/services/vc-meeting-runtime-store.js.map +1 -1
  182. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  183. package/dist/setup/ensure-tmux.js +9 -11
  184. package/dist/setup/ensure-tmux.js.map +1 -1
  185. package/dist/utils/child-env.d.ts +16 -8
  186. package/dist/utils/child-env.d.ts.map +1 -1
  187. package/dist/utils/child-env.js +30 -8
  188. package/dist/utils/child-env.js.map +1 -1
  189. package/dist/utils/daemon-discovery.d.ts +8 -0
  190. package/dist/utils/daemon-discovery.d.ts.map +1 -1
  191. package/dist/utils/daemon-discovery.js +19 -0
  192. package/dist/utils/daemon-discovery.js.map +1 -1
  193. package/dist/utils/ready-gate.d.ts +9 -3
  194. package/dist/utils/ready-gate.d.ts.map +1 -1
  195. package/dist/utils/ready-gate.js +12 -4
  196. package/dist/utils/ready-gate.js.map +1 -1
  197. package/dist/worker.js +131 -28
  198. package/dist/worker.js.map +1 -1
  199. package/dist/workflows/ops-projection.d.ts.map +1 -1
  200. package/dist/workflows/ops-projection.js +27 -5
  201. package/dist/workflows/ops-projection.js.map +1 -1
  202. package/dist/workflows/v3/distillation-runner.d.ts +4 -0
  203. package/dist/workflows/v3/distillation-runner.d.ts.map +1 -1
  204. package/dist/workflows/v3/distillation-runner.js +4 -2
  205. package/dist/workflows/v3/distillation-runner.js.map +1 -1
  206. package/package.json +1 -1
  207. 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[];
@@ -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;;;;;;;;;;;;;;;;;;;QAuCrC;;;;;;;;;;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"}
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),
@@ -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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,sEAAsE;AACtE,SAAS,UAAU;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAChE,MAAM,+BAA+B,GACnC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAE9E,MAAM,UAAU,kBAAkB;IAChC,OAAO,yBAAyB,IAAI,UAAU,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,+BAA+B,IAAI,UAAU,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,iDAAiD;AACjD,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAarE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAyB,OAAO,CAAC,GAAG;IAChF,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC;IACtD,MAAM,kBAAkB,GACtB,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE;QAC/B,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM;QAClC,CAAC,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,KAAK,CAAC,CAAC,aAAa;IAC7E,OAAO;QACL,kBAAkB;QAClB,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,IAAI,KAAK;KAChF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAyB,OAAO,CAAC,GAAG;IAChF,MAAM,UAAU,GAAG,GAAG,CAAC,iCAAiC,CAAC;IACzD,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACpE,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,IAAI,UAAU,KAAK,EAAE;QACrD,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,MAAM;QACrC,CAAC,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,cAAc;IAClD,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACnF,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,cAAc,GAAG,GAAG,CAAC,gCAAgC,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC;IACtF,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7G,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO,6BAA6B,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO,oCAAoC,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAC/C,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/E,MAAM,GAAG,GAAG,GAAG,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,gCAAgC,CAAC;IAElD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,gCAAgC,CAAC;IAClF,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;KAC7C;IACD,OAAO,EAAE;QACP,IAAI,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC,CAAC;QACzE,gEAAgE;QAChE,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,OAAO,CAAC,KAAa,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC;KACrE;IACD,IAAI,EAAE;QACJ;;;4CAGoC;QACpC,sBAAsB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO;KAC1G;IACD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,aAAa,CAA4C;QACvF,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;QACrC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,oBAAoB,EAAE,CAAgB;QAChF;;;;;6CAKqC;QACrC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACvF,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,GAAG,CAAC,CAAC;QAC1F,qBAAqB,EAAE,4BAA4B,EAAE;QACrD,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;QACpG,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3F,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;KAC9F;IACD,GAAG,EAAE;QACH,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS;QACvC,UAAU,EAAE,qBAAqB,EAAE;QACnC,IAAI,YAAY,KAAK,OAAO,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACnD,uEAAuE;QACvE,2EAA2E;QAC3E,gFAAgF;QAChF,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,IAAI;QACrE,0EAA0E;QAC1E,4EAA4E;QAC5E,6EAA6E;QAC7E,yEAAyE;QACzE,8EAA8E;QAC9E,8EAA8E;QAC9E,kEAAkE;QAClE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;KACzD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;QACpD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI;QACvD,IAAI,YAAY,KAAK,OAAO,wBAAwB,EAAE,CAAC,CAAC,CAAC;QACzD,8EAA8E;QAC9E,4EAA4E;QAC5E,2EAA2E;QAC3E,yEAAyE;QACzE,uEAAuE;QACvE,+EAA+E;QAC/E,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,oDAAoD;QACpD,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,IAAI;QACpE;;;;;;;;;;sEAU8D;QAC9D,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO;KACnG;IACD,cAAc,EAAE;QACd,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAC7E,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;QACjD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;QAC9C,sCAAsC;QACtC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,KAAK;QACpE,iEAAiE;QACjE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC;QAClE,2CAA2C;QAC3C,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,IAAI,KAAK;QACjF,mFAAmF;QACnF,YAAY,EAAE,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAC7E,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACtB,CAAC,CAAC,EAA4B;QAC9B,mGAAmG;QACnG,SAAS,EAAE,CAAC,GAAG,EAAE;YACf,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAC1E,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACtB,CAAC,CAAC,EAA6B;KAChC;IACD,cAAc,EAAE;QACd;;;;;WAKG;QACH,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QACrF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE;QAC3D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE;QACzD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE;QACtD,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,IAAI,KAAK;QAC1E,uDAAuD;QACvD,YAAY,EAAE,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YACrF,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACtB,CAAC,CAAC,EAA4B;QAC9B,2DAA2D;QAC3D,SAAS,EAAE,CAAC,GAAG,EAAE;YACf,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAClF,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACtB,CAAC,CAAC,EAA6B;KAChC;IACD,wEAAwE;IACxE,4EAA4E;IAC5E,gEAAgE;IAChE,IAAI,gBAAgB,KAAK,OAAO,6BAA6B,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,gBAAgB,KAAK,OAAO,6BAA6B,EAAE,CAAC,CAAC,CAAC;CACnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
@@ -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
- killWorker(ds);
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
- const effectiveDir = validatedDir ?? existing?.workingDir ?? botCfg.docRepoMap?.[file.fileToken];
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 sessionReply(rootId, t('cmd.relay.target_has_session', { title: conflict.session.title || conflict.session.sessionId.substring(0, 8) }, loc));
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 sessionReply(rootId, card, 'interactive');
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
- if (knownBotNames.size === 0 && mentions.some(m => !!m.name)) {
2625
- logger.warn(`[${logTag}] /relay --create: global bot registry empty; cannot elect a creator`);
2626
- await sessionReply(rootId, t('cmd.relay.resolve_failed', undefined, loc));
2627
- break;
2628
- }
2629
- const botMentions = mentions.filter(m => m.name && knownBotNames.has(m.name.toLowerCase()));
2630
- if (botMentions.length === 0) {
2631
- await sessionReply(rootId, t('cmd.relay.no_mentions', undefined, loc));
2632
- break;
2633
- }
2634
- // Am I `mentions[0]`?
2635
- const firstBot = botMentions[0];
2636
- const myOpenId = getBotOpenId(creatorAppId);
2637
- const myName = getBot(creatorAppId).botName?.toLowerCase();
2638
- const myNameAmbiguous = !!myName
2639
- && botMentions.filter(m => m.name?.toLowerCase() === myName).length > 1;
2640
- const iAmFirstBot = (!!myOpenId && firstBot.openId === myOpenId) ||
2641
- (!myOpenId && !!myName && !myNameAmbiguous && firstBot.name?.toLowerCase() === myName);
2642
- if (!iAmFirstBot) {
2643
- logger.info(`[${logTag}] /relay --create: not the first @-mentioned bot, staying silent`);
2644
- break;
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
- const seenApp = new Set();
2668
- let unresolved;
2669
- for (const bm of botMentions) {
2670
- const mem = bm.openId ? memberByOpenId.get(bm.openId) : undefined;
2671
- if (!mem || !mem.larkAppId) {
2672
- unresolved = bm.name;
2673
- break;
2799
+ if (sourceIsP2p) {
2800
+ mentionedBotAppIds.push(creatorAppId);
2801
+ }
2802
+ else {
2803
+ let members = [];
2804
+ try {
2805
+ members = await listChatBotMembers(creatorAppId, sourceChatId);
2674
2806
  }
2675
- if (!seenApp.has(mem.larkAppId)) {
2676
- seenApp.add(mem.larkAppId);
2677
- mentionedBotAppIds.push(mem.larkAppId);
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:341) so the message reads the same in both UX
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 = (await getChatName(creatorAppId, sourceChatId).catch(() => null)) ?? sourceChatId;
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),