botmux 3.13.0 → 3.15.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 (541) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +25 -1
  3. package/dist/.runtime-build-id +1 -1
  4. package/dist/adapters/adopt-route.d.ts +58 -0
  5. package/dist/adapters/adopt-route.d.ts.map +1 -1
  6. package/dist/adapters/adopt-route.js +136 -0
  7. package/dist/adapters/adopt-route.js.map +1 -1
  8. package/dist/adapters/backend/capabilities.js +1 -1
  9. package/dist/adapters/backend/capabilities.js.map +1 -1
  10. package/dist/adapters/backend/herdr-backend.d.ts +1 -1
  11. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/herdr-backend.js +2 -1
  13. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  14. package/dist/adapters/backend/riff-backend.d.ts +97 -0
  15. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  16. package/dist/adapters/backend/riff-backend.js +380 -66
  17. package/dist/adapters/backend/riff-backend.js.map +1 -1
  18. package/dist/adapters/backend/sandbox.d.ts +8 -0
  19. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  20. package/dist/adapters/backend/sandbox.js +16 -2
  21. package/dist/adapters/backend/sandbox.js.map +1 -1
  22. package/dist/adapters/backend/tmux-backend.d.ts +12 -13
  23. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  24. package/dist/adapters/backend/tmux-backend.js +113 -53
  25. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  26. package/dist/adapters/backend/tmux-pipe-backend.d.ts +34 -3
  27. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  28. package/dist/adapters/backend/tmux-pipe-backend.js +72 -9
  29. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  30. package/dist/adapters/backend/types.d.ts +7 -0
  31. package/dist/adapters/backend/types.d.ts.map +1 -1
  32. package/dist/adapters/backend/types.js.map +1 -1
  33. package/dist/adapters/backend/zellij-backend.d.ts +2 -3
  34. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
  35. package/dist/adapters/backend/zellij-backend.js +6 -13
  36. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  37. package/dist/adapters/backend/zellij-observe-backend.d.ts +2 -1
  38. package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
  39. package/dist/adapters/backend/zellij-observe-backend.js +6 -3
  40. package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
  41. package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
  42. package/dist/adapters/backend/zmx-backend.js +40 -18
  43. package/dist/adapters/backend/zmx-backend.js.map +1 -1
  44. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  45. package/dist/adapters/cli/claude-code.js +12 -1
  46. package/dist/adapters/cli/claude-code.js.map +1 -1
  47. package/dist/adapters/cli/codex.d.ts.map +1 -1
  48. package/dist/adapters/cli/codex.js +3 -2
  49. package/dist/adapters/cli/codex.js.map +1 -1
  50. package/dist/adapters/cli/cursor.d.ts.map +1 -1
  51. package/dist/adapters/cli/cursor.js +13 -1
  52. package/dist/adapters/cli/cursor.js.map +1 -1
  53. package/dist/adapters/cli/dsh.d.ts +4 -0
  54. package/dist/adapters/cli/dsh.d.ts.map +1 -0
  55. package/dist/adapters/cli/dsh.js +100 -0
  56. package/dist/adapters/cli/dsh.js.map +1 -0
  57. package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
  58. package/dist/adapters/cli/fs-policy.js +5 -0
  59. package/dist/adapters/cli/fs-policy.js.map +1 -1
  60. package/dist/adapters/cli/opencode.d.ts +52 -1
  61. package/dist/adapters/cli/opencode.d.ts.map +1 -1
  62. package/dist/adapters/cli/opencode.js +117 -76
  63. package/dist/adapters/cli/opencode.js.map +1 -1
  64. package/dist/adapters/cli/opencode2.d.ts +4 -0
  65. package/dist/adapters/cli/opencode2.d.ts.map +1 -0
  66. package/dist/adapters/cli/opencode2.js +137 -0
  67. package/dist/adapters/cli/opencode2.js.map +1 -0
  68. package/dist/adapters/cli/pi.d.ts +14 -1
  69. package/dist/adapters/cli/pi.d.ts.map +1 -1
  70. package/dist/adapters/cli/pi.js +21 -1
  71. package/dist/adapters/cli/pi.js.map +1 -1
  72. package/dist/adapters/cli/read-isolation.d.ts +1 -1
  73. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  74. package/dist/adapters/cli/read-isolation.js +5 -2
  75. package/dist/adapters/cli/read-isolation.js.map +1 -1
  76. package/dist/adapters/cli/registry.d.ts +7 -1
  77. package/dist/adapters/cli/registry.d.ts.map +1 -1
  78. package/dist/adapters/cli/registry.js +19 -6
  79. package/dist/adapters/cli/registry.js.map +1 -1
  80. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  81. package/dist/adapters/cli/shared-hints.js +41 -23
  82. package/dist/adapters/cli/shared-hints.js.map +1 -1
  83. package/dist/adapters/cli/types.d.ts +28 -3
  84. package/dist/adapters/cli/types.d.ts.map +1 -1
  85. package/dist/adapters/hook-command.d.ts +8 -0
  86. package/dist/adapters/hook-command.d.ts.map +1 -1
  87. package/dist/adapters/hook-command.js +11 -0
  88. package/dist/adapters/hook-command.js.map +1 -1
  89. package/dist/adapters/hook-installer.d.ts +16 -1
  90. package/dist/adapters/hook-installer.d.ts.map +1 -1
  91. package/dist/adapters/hook-installer.js +232 -2
  92. package/dist/adapters/hook-installer.js.map +1 -1
  93. package/dist/bot-registry.d.ts +138 -8
  94. package/dist/bot-registry.d.ts.map +1 -1
  95. package/dist/bot-registry.js +76 -4
  96. package/dist/bot-registry.js.map +1 -1
  97. package/dist/cli/pm2-start-transaction.d.ts +14 -0
  98. package/dist/cli/pm2-start-transaction.d.ts.map +1 -1
  99. package/dist/cli/pm2-start-transaction.js +25 -9
  100. package/dist/cli/pm2-start-transaction.js.map +1 -1
  101. package/dist/cli/restart-failure-notification.d.ts +54 -0
  102. package/dist/cli/restart-failure-notification.d.ts.map +1 -0
  103. package/dist/cli/restart-failure-notification.js +142 -0
  104. package/dist/cli/restart-failure-notification.js.map +1 -0
  105. package/dist/cli/restart-failure-owner.d.ts +20 -0
  106. package/dist/cli/restart-failure-owner.d.ts.map +1 -0
  107. package/dist/cli/restart-failure-owner.js +27 -0
  108. package/dist/cli/restart-failure-owner.js.map +1 -0
  109. package/dist/cli/restart-shutdown-preflight.d.ts +24 -0
  110. package/dist/cli/restart-shutdown-preflight.d.ts.map +1 -0
  111. package/dist/cli/restart-shutdown-preflight.js +105 -0
  112. package/dist/cli/restart-shutdown-preflight.js.map +1 -0
  113. package/dist/cli/send-dispatch.d.ts +26 -0
  114. package/dist/cli/send-dispatch.d.ts.map +1 -1
  115. package/dist/cli/send-dispatch.js +30 -0
  116. package/dist/cli/send-dispatch.js.map +1 -1
  117. package/dist/cli.d.ts +4 -1
  118. package/dist/cli.d.ts.map +1 -1
  119. package/dist/cli.js +673 -402
  120. package/dist/cli.js.map +1 -1
  121. package/dist/codex-app-runner.js +38 -15
  122. package/dist/codex-app-runner.js.map +1 -1
  123. package/dist/codex-rpc-lifecycle.d.ts +14 -2
  124. package/dist/codex-rpc-lifecycle.d.ts.map +1 -1
  125. package/dist/codex-rpc-lifecycle.js +13 -3
  126. package/dist/codex-rpc-lifecycle.js.map +1 -1
  127. package/dist/core/ask-broker.d.ts +3 -0
  128. package/dist/core/ask-broker.d.ts.map +1 -1
  129. package/dist/core/ask-broker.js +29 -7
  130. package/dist/core/ask-broker.js.map +1 -1
  131. package/dist/core/ask-hook/registry.d.ts.map +1 -1
  132. package/dist/core/ask-hook/registry.js +4 -0
  133. package/dist/core/ask-hook/registry.js.map +1 -1
  134. package/dist/core/ask-types.d.ts +5 -1
  135. package/dist/core/ask-types.d.ts.map +1 -1
  136. package/dist/core/ask-types.js.map +1 -1
  137. package/dist/core/browser-restart.d.ts +112 -0
  138. package/dist/core/browser-restart.d.ts.map +1 -0
  139. package/dist/core/browser-restart.js +233 -0
  140. package/dist/core/browser-restart.js.map +1 -0
  141. package/dist/core/command-discovery.d.ts.map +1 -1
  142. package/dist/core/command-discovery.js +4 -1
  143. package/dist/core/command-discovery.js.map +1 -1
  144. package/dist/core/command-handler.d.ts +19 -11
  145. package/dist/core/command-handler.d.ts.map +1 -1
  146. package/dist/core/command-handler.js +237 -43
  147. package/dist/core/command-handler.js.map +1 -1
  148. package/dist/core/current-turn-provenance.d.ts.map +1 -1
  149. package/dist/core/current-turn-provenance.js +7 -27
  150. package/dist/core/current-turn-provenance.js.map +1 -1
  151. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  152. package/dist/core/dashboard-ipc-server.js +359 -11
  153. package/dist/core/dashboard-ipc-server.js.map +1 -1
  154. package/dist/core/dispatch-registry.d.ts.map +1 -1
  155. package/dist/core/dispatch-registry.js +6 -0
  156. package/dist/core/dispatch-registry.js.map +1 -1
  157. package/dist/core/dispatch-report-binding.d.ts +31 -0
  158. package/dist/core/dispatch-report-binding.d.ts.map +1 -0
  159. package/dist/core/dispatch-report-binding.js +88 -0
  160. package/dist/core/dispatch-report-binding.js.map +1 -0
  161. package/dist/core/doc-comment-prompt.d.ts +2 -0
  162. package/dist/core/doc-comment-prompt.d.ts.map +1 -1
  163. package/dist/core/doc-comment-prompt.js +6 -0
  164. package/dist/core/doc-comment-prompt.js.map +1 -1
  165. package/dist/core/host-overload-alert.d.ts +25 -1
  166. package/dist/core/host-overload-alert.d.ts.map +1 -1
  167. package/dist/core/host-overload-alert.js +69 -8
  168. package/dist/core/host-overload-alert.js.map +1 -1
  169. package/dist/core/local-terminal-opener.js +1 -1
  170. package/dist/core/local-terminal-opener.js.map +1 -1
  171. package/dist/core/managed-origin-capability.d.ts +7 -6
  172. package/dist/core/managed-origin-capability.d.ts.map +1 -1
  173. package/dist/core/managed-origin-capability.js +32 -1
  174. package/dist/core/managed-origin-capability.js.map +1 -1
  175. package/dist/core/passthrough-commands.d.ts.map +1 -1
  176. package/dist/core/passthrough-commands.js +3 -2
  177. package/dist/core/passthrough-commands.js.map +1 -1
  178. package/dist/core/plugins/materializer.d.ts.map +1 -1
  179. package/dist/core/plugins/materializer.js +1 -0
  180. package/dist/core/plugins/materializer.js.map +1 -1
  181. package/dist/core/producer-quiescence.d.ts +70 -0
  182. package/dist/core/producer-quiescence.d.ts.map +1 -0
  183. package/dist/core/producer-quiescence.js +90 -0
  184. package/dist/core/producer-quiescence.js.map +1 -0
  185. package/dist/core/raw-command-write-options.d.ts +10 -0
  186. package/dist/core/raw-command-write-options.d.ts.map +1 -0
  187. package/dist/core/raw-command-write-options.js +23 -0
  188. package/dist/core/raw-command-write-options.js.map +1 -0
  189. package/dist/core/raw-command-writer.d.ts +4 -0
  190. package/dist/core/raw-command-writer.d.ts.map +1 -1
  191. package/dist/core/raw-command-writer.js +15 -6
  192. package/dist/core/raw-command-writer.js.map +1 -1
  193. package/dist/core/reply-target.d.ts +11 -0
  194. package/dist/core/reply-target.d.ts.map +1 -1
  195. package/dist/core/reply-target.js +22 -7
  196. package/dist/core/reply-target.js.map +1 -1
  197. package/dist/core/report-session-relay.d.ts +53 -0
  198. package/dist/core/report-session-relay.d.ts.map +1 -0
  199. package/dist/core/report-session-relay.js +116 -0
  200. package/dist/core/report-session-relay.js.map +1 -0
  201. package/dist/core/session-discovery.d.ts +5 -0
  202. package/dist/core/session-discovery.d.ts.map +1 -1
  203. package/dist/core/session-discovery.js +13 -0
  204. package/dist/core/session-discovery.js.map +1 -1
  205. package/dist/core/session-group-birth.d.ts +7 -0
  206. package/dist/core/session-group-birth.d.ts.map +1 -0
  207. package/dist/core/session-group-birth.js +145 -0
  208. package/dist/core/session-group-birth.js.map +1 -0
  209. package/dist/core/session-manager.d.ts +16 -21
  210. package/dist/core/session-manager.d.ts.map +1 -1
  211. package/dist/core/session-manager.js +140 -21
  212. package/dist/core/session-manager.js.map +1 -1
  213. package/dist/core/skills/frontmatter.d.ts.map +1 -1
  214. package/dist/core/skills/frontmatter.js +6 -1
  215. package/dist/core/skills/frontmatter.js.map +1 -1
  216. package/dist/core/trigger-session.d.ts.map +1 -1
  217. package/dist/core/trigger-session.js +18 -3
  218. package/dist/core/trigger-session.js.map +1 -1
  219. package/dist/core/types.d.ts +18 -0
  220. package/dist/core/types.d.ts.map +1 -1
  221. package/dist/core/types.js.map +1 -1
  222. package/dist/core/worker-pool.d.ts +63 -11
  223. package/dist/core/worker-pool.d.ts.map +1 -1
  224. package/dist/core/worker-pool.js +262 -21
  225. package/dist/core/worker-pool.js.map +1 -1
  226. package/dist/daemon.d.ts +33 -0
  227. package/dist/daemon.d.ts.map +1 -1
  228. package/dist/daemon.js +904 -147
  229. package/dist/daemon.js.map +1 -1
  230. package/dist/dashboard/auth.d.ts +20 -0
  231. package/dist/dashboard/auth.d.ts.map +1 -1
  232. package/dist/dashboard/auth.js +86 -1
  233. package/dist/dashboard/auth.js.map +1 -1
  234. package/dist/dashboard/bot-payload.d.ts +9 -0
  235. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  236. package/dist/dashboard/bot-payload.js +5 -1
  237. package/dist/dashboard/bot-payload.js.map +1 -1
  238. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
  239. package/dist/dashboard/federation-spoke-api.js +27 -3
  240. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  241. package/dist/dashboard/feedback-analytics-api.d.ts +6 -0
  242. package/dist/dashboard/feedback-analytics-api.d.ts.map +1 -0
  243. package/dist/dashboard/feedback-analytics-api.js +39 -0
  244. package/dist/dashboard/feedback-analytics-api.js.map +1 -0
  245. package/dist/dashboard/session-action-timeout.d.ts +3 -0
  246. package/dist/dashboard/session-action-timeout.d.ts.map +1 -0
  247. package/dist/dashboard/session-action-timeout.js +12 -0
  248. package/dist/dashboard/session-action-timeout.js.map +1 -0
  249. package/dist/dashboard/vc-consumer-profiles-api.d.ts +9 -3
  250. package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
  251. package/dist/dashboard/vc-consumer-profiles-api.js +2 -1
  252. package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -1
  253. package/dist/dashboard/web/app.d.ts.map +1 -1
  254. package/dist/dashboard/web/app.js +48 -5
  255. package/dist/dashboard/web/app.js.map +1 -1
  256. package/dist/dashboard/web/bot-defaults-page.d.ts +11 -0
  257. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  258. package/dist/dashboard/web/bot-defaults-page.js +368 -36
  259. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  260. package/dist/dashboard/web/bot-defaults.d.ts +8 -0
  261. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  262. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  263. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  264. package/dist/dashboard/web/dashboard-routes.js +1 -0
  265. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  266. package/dist/dashboard/web/feedback-page.d.ts +3 -0
  267. package/dist/dashboard/web/feedback-page.d.ts.map +1 -0
  268. package/dist/dashboard/web/feedback-page.js +34 -0
  269. package/dist/dashboard/web/feedback-page.js.map +1 -0
  270. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  271. package/dist/dashboard/web/groups-page.js +7 -2
  272. package/dist/dashboard/web/groups-page.js.map +1 -1
  273. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  274. package/dist/dashboard/web/i18n.js +122 -22
  275. package/dist/dashboard/web/i18n.js.map +1 -1
  276. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  277. package/dist/dashboard/web/skills-page.js +4 -2
  278. package/dist/dashboard/web/skills-page.js.map +1 -1
  279. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  280. package/dist/dashboard/web/team-federation-page.js +26 -2
  281. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  282. package/dist/dashboard/web/team-federation.d.ts +19 -0
  283. package/dist/dashboard/web/team-federation.d.ts.map +1 -1
  284. package/dist/dashboard/web/team-federation.js +3 -0
  285. package/dist/dashboard/web/team-federation.js.map +1 -1
  286. package/dist/dashboard/web/update-action.d.ts +8 -0
  287. package/dist/dashboard/web/update-action.d.ts.map +1 -1
  288. package/dist/dashboard/web/update-action.js +10 -0
  289. package/dist/dashboard/web/update-action.js.map +1 -1
  290. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
  291. package/dist/dashboard/web/vc-consumer-profiles-section.js +58 -9
  292. package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
  293. package/dist/dashboard-web/app.js +1 -1
  294. package/dist/dashboard-web/chunks/bot-defaults-page-65SMZ4QY.js +10 -0
  295. package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +1 -0
  296. package/dist/dashboard-web/chunks/chunk-IKN6WURK.js +1 -0
  297. package/dist/dashboard-web/chunks/{chunk-6JTZJRQJ.js → chunk-VMWNR3SV.js} +15 -15
  298. package/dist/dashboard-web/chunks/{chunk-CU4SUKK3.js → chunk-Z7B3E3US.js} +1 -1
  299. package/dist/dashboard-web/chunks/{chunk-5QJB24I2.js → chunk-Z7DO42GJ.js} +1 -1
  300. package/dist/dashboard-web/chunks/connectors-page-CPH6VVFY.js +1 -0
  301. package/dist/dashboard-web/chunks/feedback-page-J2FKQ3LK.js +1 -0
  302. package/dist/dashboard-web/chunks/groups-page-VDOOLS4M.js +8 -0
  303. package/dist/dashboard-web/chunks/{insights-page-EVGGJI5L.js → insights-page-A2LWTKJD.js} +1 -1
  304. package/dist/dashboard-web/chunks/{monitor-room-HRGR2ENP.js → monitor-room-2YR752E3.js} +1 -1
  305. package/dist/dashboard-web/chunks/monitoring-page-BGYSKZGM.js +2 -0
  306. package/dist/dashboard-web/chunks/office-page-ZZHTEAE4.js +1 -0
  307. package/dist/dashboard-web/chunks/overview-page-7NYPKQSB.js +1 -0
  308. package/dist/dashboard-web/chunks/roles-page-YUC4YLJG.js +1 -0
  309. package/dist/dashboard-web/chunks/schedules-page-2L2NKTDJ.js +1 -0
  310. package/dist/dashboard-web/chunks/{sessions-page-DXBCDWCS.js → sessions-page-DYZZMKFL.js} +1 -1
  311. package/dist/dashboard-web/chunks/settings-page-LIULUSMH.js +2 -0
  312. package/dist/dashboard-web/chunks/{skills-page-2QAVB2SA.js → skills-page-DQPBBI3T.js} +2 -2
  313. package/dist/dashboard-web/chunks/team-federation-page-LQKLDV4K.js +1 -0
  314. package/dist/dashboard-web/chunks/{v3-page-AY35LKCX.js → v3-page-RVKQIMAP.js} +1 -1
  315. package/dist/dashboard-web/chunks/whiteboards-page-S5K55HRZ.js +1 -0
  316. package/dist/dashboard-web/style.css +35 -0
  317. package/dist/dashboard.js +210 -13
  318. package/dist/dashboard.js.map +1 -1
  319. package/dist/desktop/shared/shell-path-probes.d.ts +1 -1
  320. package/dist/desktop/shared/shell-path-probes.js +2 -2
  321. package/dist/desktop/shared/shell-path-probes.js.map +1 -1
  322. package/dist/dsh-runner.d.ts +3 -0
  323. package/dist/dsh-runner.d.ts.map +1 -0
  324. package/dist/dsh-runner.js +673 -0
  325. package/dist/dsh-runner.js.map +1 -0
  326. package/dist/global-config.d.ts +24 -0
  327. package/dist/global-config.d.ts.map +1 -1
  328. package/dist/global-config.js +35 -0
  329. package/dist/global-config.js.map +1 -1
  330. package/dist/i18n/en.d.ts.map +1 -1
  331. package/dist/i18n/en.js +39 -31
  332. package/dist/i18n/en.js.map +1 -1
  333. package/dist/i18n/zh.d.ts.map +1 -1
  334. package/dist/i18n/zh.js +39 -31
  335. package/dist/i18n/zh.js.map +1 -1
  336. package/dist/im/lark/ask-card.d.ts +3 -1
  337. package/dist/im/lark/ask-card.d.ts.map +1 -1
  338. package/dist/im/lark/ask-card.js +61 -5
  339. package/dist/im/lark/ask-card.js.map +1 -1
  340. package/dist/im/lark/card-builder.d.ts.map +1 -1
  341. package/dist/im/lark/card-builder.js +13 -6
  342. package/dist/im/lark/card-builder.js.map +1 -1
  343. package/dist/im/lark/card-handler.d.ts +2 -1
  344. package/dist/im/lark/card-handler.d.ts.map +1 -1
  345. package/dist/im/lark/card-handler.js +145 -5
  346. package/dist/im/lark/card-handler.js.map +1 -1
  347. package/dist/im/lark/event-dispatcher.d.ts +18 -0
  348. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  349. package/dist/im/lark/event-dispatcher.js +41 -28
  350. package/dist/im/lark/event-dispatcher.js.map +1 -1
  351. package/dist/im/lark/md-card.d.ts +18 -0
  352. package/dist/im/lark/md-card.d.ts.map +1 -1
  353. package/dist/im/lark/md-card.js +21 -0
  354. package/dist/im/lark/md-card.js.map +1 -1
  355. package/dist/im/lark/relay-target-routing.d.ts.map +1 -1
  356. package/dist/im/lark/relay-target-routing.js +3 -2
  357. package/dist/im/lark/relay-target-routing.js.map +1 -1
  358. package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
  359. package/dist/im/lark/reply-mode-command.js +19 -8
  360. package/dist/im/lark/reply-mode-command.js.map +1 -1
  361. package/dist/im/lark/skill-feedback-card.d.ts +15 -0
  362. package/dist/im/lark/skill-feedback-card.d.ts.map +1 -0
  363. package/dist/im/lark/skill-feedback-card.js +149 -0
  364. package/dist/im/lark/skill-feedback-card.js.map +1 -0
  365. package/dist/services/bot-config-store.d.ts +10 -1
  366. package/dist/services/bot-config-store.d.ts.map +1 -1
  367. package/dist/services/bot-config-store.js +103 -3
  368. package/dist/services/bot-config-store.js.map +1 -1
  369. package/dist/services/bridge-fallback-gate.d.ts +29 -7
  370. package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
  371. package/dist/services/bridge-fallback-gate.js +58 -16
  372. package/dist/services/bridge-fallback-gate.js.map +1 -1
  373. package/dist/services/codex-reasoning-effort.d.ts +9 -0
  374. package/dist/services/codex-reasoning-effort.d.ts.map +1 -0
  375. package/dist/services/codex-reasoning-effort.js +23 -0
  376. package/dist/services/codex-reasoning-effort.js.map +1 -0
  377. package/dist/services/codex-service-tier.d.ts +1 -1
  378. package/dist/services/codex-service-tier.d.ts.map +1 -1
  379. package/dist/services/codex-transcript.d.ts +9 -0
  380. package/dist/services/codex-transcript.d.ts.map +1 -1
  381. package/dist/services/codex-transcript.js +13 -6
  382. package/dist/services/codex-transcript.js.map +1 -1
  383. package/dist/services/feed-group-tagger.d.ts +15 -0
  384. package/dist/services/feed-group-tagger.d.ts.map +1 -0
  385. package/dist/services/feed-group-tagger.js +348 -0
  386. package/dist/services/feed-group-tagger.js.map +1 -0
  387. package/dist/services/feedback-analytics.d.ts +82 -0
  388. package/dist/services/feedback-analytics.d.ts.map +1 -0
  389. package/dist/services/feedback-analytics.js +95 -0
  390. package/dist/services/feedback-analytics.js.map +1 -0
  391. package/dist/services/feedback-outbox.d.ts +24 -0
  392. package/dist/services/feedback-outbox.d.ts.map +1 -0
  393. package/dist/services/feedback-outbox.js +12 -0
  394. package/dist/services/feedback-outbox.js.map +1 -0
  395. package/dist/services/feedback-policy-resolver.d.ts +56 -0
  396. package/dist/services/feedback-policy-resolver.d.ts.map +1 -0
  397. package/dist/services/feedback-policy-resolver.js +156 -0
  398. package/dist/services/feedback-policy-resolver.js.map +1 -0
  399. package/dist/services/feedback-policy.d.ts +41 -0
  400. package/dist/services/feedback-policy.d.ts.map +1 -0
  401. package/dist/services/feedback-policy.js +102 -0
  402. package/dist/services/feedback-policy.js.map +1 -0
  403. package/dist/services/feedback-webhook-dispatcher.d.ts +76 -0
  404. package/dist/services/feedback-webhook-dispatcher.d.ts.map +1 -0
  405. package/dist/services/feedback-webhook-dispatcher.js +237 -0
  406. package/dist/services/feedback-webhook-dispatcher.js.map +1 -0
  407. package/dist/services/grant-prefs-store.d.ts +3 -0
  408. package/dist/services/grant-prefs-store.d.ts.map +1 -1
  409. package/dist/services/grant-prefs-store.js +30 -1
  410. package/dist/services/grant-prefs-store.js.map +1 -1
  411. package/dist/services/groups-store.d.ts +14 -0
  412. package/dist/services/groups-store.d.ts.map +1 -1
  413. package/dist/services/groups-store.js +23 -0
  414. package/dist/services/groups-store.js.map +1 -1
  415. package/dist/services/local-cli-opener.d.ts +1 -1
  416. package/dist/services/local-cli-opener.d.ts.map +1 -1
  417. package/dist/services/local-cli-opener.js +2 -0
  418. package/dist/services/local-cli-opener.js.map +1 -1
  419. package/dist/services/peer-cross-ref-store.d.ts +8 -0
  420. package/dist/services/peer-cross-ref-store.d.ts.map +1 -0
  421. package/dist/services/peer-cross-ref-store.js +95 -0
  422. package/dist/services/peer-cross-ref-store.js.map +1 -0
  423. package/dist/services/pi-transcript.d.ts.map +1 -1
  424. package/dist/services/pi-transcript.js +10 -6
  425. package/dist/services/pi-transcript.js.map +1 -1
  426. package/dist/services/prompt-context-store.d.ts +29 -0
  427. package/dist/services/prompt-context-store.d.ts.map +1 -0
  428. package/dist/services/prompt-context-store.js +205 -0
  429. package/dist/services/prompt-context-store.js.map +1 -0
  430. package/dist/services/session-group-avatar.d.ts +6 -0
  431. package/dist/services/session-group-avatar.d.ts.map +1 -0
  432. package/dist/services/session-group-avatar.js +96 -0
  433. package/dist/services/session-group-avatar.js.map +1 -0
  434. package/dist/services/session-group-title.d.ts +47 -0
  435. package/dist/services/session-group-title.d.ts.map +1 -0
  436. package/dist/services/session-group-title.js +226 -0
  437. package/dist/services/session-group-title.js.map +1 -0
  438. package/dist/services/session-groups-store.d.ts +30 -0
  439. package/dist/services/session-groups-store.d.ts.map +1 -0
  440. package/dist/services/session-groups-store.js +132 -0
  441. package/dist/services/session-groups-store.js.map +1 -0
  442. package/dist/services/session-store.d.ts +58 -0
  443. package/dist/services/session-store.d.ts.map +1 -1
  444. package/dist/services/session-store.js +174 -0
  445. package/dist/services/session-store.js.map +1 -1
  446. package/dist/services/skill-feedback-store.d.ts +252 -0
  447. package/dist/services/skill-feedback-store.d.ts.map +1 -0
  448. package/dist/services/skill-feedback-store.js +795 -0
  449. package/dist/services/skill-feedback-store.js.map +1 -0
  450. package/dist/services/skill-registry-store.d.ts +23 -0
  451. package/dist/services/skill-registry-store.d.ts.map +1 -1
  452. package/dist/services/skill-registry-store.js +93 -7
  453. package/dist/services/skill-registry-store.js.map +1 -1
  454. package/dist/services/structured-bridge-clis.d.ts +13 -4
  455. package/dist/services/structured-bridge-clis.d.ts.map +1 -1
  456. package/dist/services/structured-bridge-clis.js +13 -3
  457. package/dist/services/structured-bridge-clis.js.map +1 -1
  458. package/dist/services/team-store.d.ts +4 -0
  459. package/dist/services/team-store.d.ts.map +1 -1
  460. package/dist/services/team-store.js +16 -0
  461. package/dist/services/team-store.js.map +1 -1
  462. package/dist/services/traex-transcript.d.ts +32 -4
  463. package/dist/services/traex-transcript.d.ts.map +1 -1
  464. package/dist/services/traex-transcript.js +116 -8
  465. package/dist/services/traex-transcript.js.map +1 -1
  466. package/dist/services/trigger-types.d.ts +1 -1
  467. package/dist/services/trigger-types.d.ts.map +1 -1
  468. package/dist/services/trigger-types.js +2 -2
  469. package/dist/services/trigger-types.js.map +1 -1
  470. package/dist/services/turn-completion-events.d.ts +57 -0
  471. package/dist/services/turn-completion-events.d.ts.map +1 -0
  472. package/dist/services/turn-completion-events.js +179 -0
  473. package/dist/services/turn-completion-events.js.map +1 -0
  474. package/dist/services/vc-meeting-consumer-isolation.d.ts +21 -12
  475. package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -1
  476. package/dist/services/vc-meeting-consumer-isolation.js +25 -19
  477. package/dist/services/vc-meeting-consumer-isolation.js.map +1 -1
  478. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +8 -2
  479. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -1
  480. package/dist/services/vc-meeting-consumer-profile-bootstrap.js +18 -10
  481. package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -1
  482. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  483. package/dist/setup/bot-config-editor.js +6 -0
  484. package/dist/setup/bot-config-editor.js.map +1 -1
  485. package/dist/setup/cli-availability.d.ts +2 -1
  486. package/dist/setup/cli-availability.d.ts.map +1 -1
  487. package/dist/setup/cli-availability.js +2 -1
  488. package/dist/setup/cli-availability.js.map +1 -1
  489. package/dist/setup/cli-selection.d.ts +8 -0
  490. package/dist/setup/cli-selection.d.ts.map +1 -1
  491. package/dist/setup/cli-selection.js +31 -0
  492. package/dist/setup/cli-selection.js.map +1 -1
  493. package/dist/setup/ensure-fonts.d.ts +5 -0
  494. package/dist/setup/ensure-fonts.d.ts.map +1 -1
  495. package/dist/setup/ensure-fonts.js +26 -1
  496. package/dist/setup/ensure-fonts.js.map +1 -1
  497. package/dist/setup/lark-scopes.json +3 -1
  498. package/dist/setup/open-platform-automation.d.ts +1 -1
  499. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  500. package/dist/setup/open-platform-automation.js +15 -3
  501. package/dist/setup/open-platform-automation.js.map +1 -1
  502. package/dist/skills/definitions.d.ts +1 -1
  503. package/dist/skills/definitions.d.ts.map +1 -1
  504. package/dist/skills/definitions.js +9 -2
  505. package/dist/skills/definitions.js.map +1 -1
  506. package/dist/types.d.ts +11 -4
  507. package/dist/types.d.ts.map +1 -1
  508. package/dist/utils/bot-routing.d.ts +1 -1
  509. package/dist/utils/bot-routing.d.ts.map +1 -1
  510. package/dist/utils/bot-routing.js.map +1 -1
  511. package/dist/utils/user-token.d.ts +38 -0
  512. package/dist/utils/user-token.d.ts.map +1 -1
  513. package/dist/utils/user-token.js +76 -1
  514. package/dist/utils/user-token.js.map +1 -1
  515. package/dist/utils/web-terminal-scroll.d.ts +27 -0
  516. package/dist/utils/web-terminal-scroll.d.ts.map +1 -0
  517. package/dist/utils/web-terminal-scroll.js +60 -0
  518. package/dist/utils/web-terminal-scroll.js.map +1 -0
  519. package/dist/vc-agent/polling-source.d.ts +70 -0
  520. package/dist/vc-agent/polling-source.d.ts.map +1 -1
  521. package/dist/vc-agent/polling-source.js +115 -0
  522. package/dist/vc-agent/polling-source.js.map +1 -1
  523. package/dist/worker.js +469 -86
  524. package/dist/worker.js.map +1 -1
  525. package/dist/workflows/definition.d.ts +22 -22
  526. package/dist/workflows/events/payloads.d.ts +8 -8
  527. package/dist/workflows/events/schema.d.ts +20 -20
  528. package/dist/workflows/migration/v2-run-archive-schema.d.ts +20 -20
  529. package/package.json +5 -1
  530. package/dist/dashboard-web/chunks/bot-defaults-page-NQJFJ45Z.js +0 -10
  531. package/dist/dashboard-web/chunks/chunk-KEEYQ3WF.js +0 -1
  532. package/dist/dashboard-web/chunks/connectors-page-HADHZXXZ.js +0 -1
  533. package/dist/dashboard-web/chunks/groups-page-5TYF46RS.js +0 -8
  534. package/dist/dashboard-web/chunks/monitoring-page-LBU7TTTW.js +0 -2
  535. package/dist/dashboard-web/chunks/office-page-DF6RRBMN.js +0 -1
  536. package/dist/dashboard-web/chunks/overview-page-ZB6QH2EX.js +0 -1
  537. package/dist/dashboard-web/chunks/roles-page-ZBZGHIIF.js +0 -1
  538. package/dist/dashboard-web/chunks/schedules-page-NQVQC3QY.js +0 -1
  539. package/dist/dashboard-web/chunks/settings-page-E7NN4NVQ.js +0 -2
  540. package/dist/dashboard-web/chunks/team-federation-page-VGWL53AE.js +0 -1
  541. package/dist/dashboard-web/chunks/whiteboards-page-BNWUU4KG.js +0 -1
@@ -13,7 +13,9 @@ import { addChatGrant, addGlobalGrant } from '../../services/grant-store.js';
13
13
  import { checkNonce, clearPending, getPendingGrantLimits, getPendingMessage, markDenied, updatePendingGrantLimits, } from './grant-pending.js';
14
14
  import { normalizeGrantDurationOption, normalizeGrantQuotaOption } from '../../services/grant-policy.js';
15
15
  import { claimOverloadNonce, releaseOverloadNonce } from './overload-nonce.js';
16
- import { buildOverloadAlertCard, buildOverloadExpiredCard, OVERLOAD_ACTION_CLEAN_STOPPED, OVERLOAD_ACTION_SUSPEND_IDLE, OVERLOAD_ACTION_NOOP, } from '../../core/host-overload-alert.js';
16
+ import { buildOverloadAlertCard, buildOverloadExpiredCard, OVERLOAD_ACTION_CLEAN_STOPPED, OVERLOAD_ACTION_SUSPEND_IDLE, OVERLOAD_ACTION_RESTART_BROWSER, OVERLOAD_ACTION_NOOP, buildOverloadBrowserFailureCard, } from '../../core/host-overload-alert.js';
17
+ import { restartBrowser, resolveBrowserTargets } from '../../core/browser-restart.js';
18
+ import { readGlobalConfig } from '../../global-config.js';
17
19
  import { listOnlineDaemons } from '../../utils/daemon-discovery.js';
18
20
  import { fetchDaemonIpc } from '../../core/daemon-ipc-auth.js';
19
21
  import { recordObservedBots } from '../../services/observed-bots-store.js';
@@ -692,6 +694,25 @@ export async function countHostOverload() {
692
694
  }));
693
695
  return { stopped, idle };
694
696
  }
697
+ /** Resolve a card's actual visible placement from Lark, not action.value
698
+ * (which is round-tripped client data and therefore untrusted). */
699
+ async function cardReplyOptions(larkAppId, cardMessageId, expectedChatId) {
700
+ if (!larkAppId || !cardMessageId)
701
+ return undefined;
702
+ try {
703
+ const detail = await getMessageDetail(larkAppId, cardMessageId);
704
+ const item = detail?.items?.[0];
705
+ if (!item || item.chat_id !== expectedChatId)
706
+ return undefined;
707
+ return item.thread_id
708
+ ? { replyTarget: { mode: 'thread', rootMessageId: cardMessageId } }
709
+ : { replyTarget: { mode: 'plain', chatId: item.chat_id } };
710
+ }
711
+ catch (err) {
712
+ logger.debug(`card reply-placement probe failed; preserving legacy route: ${err}`);
713
+ return undefined;
714
+ }
715
+ }
695
716
  export async function handleCardAction(data, deps, larkAppId) {
696
717
  const { activeSessions, lastRepoScan } = deps;
697
718
  // turnId is forwarded only when the caller actually has a turn anchor
@@ -773,6 +794,92 @@ export async function handleCardAction(data, deps, larkAppId) {
773
794
  // Rebuild the SAME card: clicked button → ✓done+disabled, other → still live.
774
795
  return JSON.parse(buildOverloadAlertCard(st));
775
796
  }
797
+ // ─── 过载告警卡:重启浏览器(overload_restart_browser)────────────────────
798
+ // owner 强闸门 + 按 bundleId 分开的一次性 nonce 核销(可分别重启 Arc/Chrome/Edge,
799
+ // 各一次)。重启在本机 daemon 直接执行(浏览器就跑在本机),不跨 daemon 扇出。
800
+ if (value?.action === OVERLOAD_ACTION_RESTART_BROWSER && larkAppId) {
801
+ const owner = getOwnerOpenId(larkAppId);
802
+ if (!operatorOpenId || operatorOpenId !== owner) {
803
+ logger.info(`Overload browser-restart blocked for non-owner: ${operatorOpenId}`);
804
+ return { toast: { type: 'error', content: '仅管理员可操作' } };
805
+ }
806
+ const bundleId = typeof value.bundleId === 'string' ? value.bundleId : '';
807
+ if (!bundleId)
808
+ return { toast: { type: 'error', content: '按钮缺少 bundleId' } };
809
+ let st;
810
+ try {
811
+ st = JSON.parse(value.st ?? '');
812
+ }
813
+ catch {
814
+ return JSON.parse(buildOverloadExpiredCard());
815
+ }
816
+ if (!st?.nonce)
817
+ return JSON.parse(buildOverloadExpiredCard());
818
+ // Fail-closed against config drift: the button lives
819
+ // on a card that stays clickable for the nonce's 1h TTL, but the config's
820
+ // enabled targets can change underneath it (a target disabled via
821
+ // `enabled:false` or removed entirely). Before we quit a real host browser,
822
+ // require the bundleId to be present BOTH on this card's `st.browsers` (it
823
+ // was a rendered button, not a forged value) AND in the live resolved
824
+ // enabled targets (it's still an allowed target right now). Either miss →
825
+ // refuse without touching the browser, so a stale card can't kill a browser
826
+ // the operator has since taken off the allow-list.
827
+ const target = (st.browsers ?? []).find(b => b.bundleId === bundleId);
828
+ let liveTargets = [];
829
+ try {
830
+ const alertCfg = (readGlobalConfig().hostOverloadAlert ?? {});
831
+ liveTargets = resolveBrowserTargets(alertCfg.browserRestartTargets);
832
+ }
833
+ catch { /* resolver is pure over config; treat a throw as "no live targets" → fail-closed below */ }
834
+ const liveTarget = liveTargets.find(t => t.bundleId === bundleId);
835
+ if (!target || !liveTarget) {
836
+ logger.info(`[overload] restart browser refused (config drift): bundleId=${bundleId} onCard=${!!target} liveEnabled=${!!liveTarget}`);
837
+ return JSON.parse(buildOverloadExpiredCard('该浏览器的重启配置已变更或卡片已过期,未执行。'));
838
+ }
839
+ const label = target.label ?? liveTarget.label ?? bundleId;
840
+ // One-shot per (nonce, bundleId): each browser button burns its own claim so
841
+ // the owner can bounce several browsers on one card, but none twice.
842
+ const claimKey = `${OVERLOAD_ACTION_RESTART_BROWSER}:${bundleId}`;
843
+ if (!claimOverloadNonce(st.nonce, claimKey)) {
844
+ return JSON.parse(buildOverloadExpiredCard('这个按钮已点过,或该告警卡已过期。'));
845
+ }
846
+ const openArgs = liveTarget.openArgs;
847
+ let result;
848
+ try {
849
+ result = await restartBrowser({ bundleId, ...(openArgs ? { openArgs } : {}) });
850
+ }
851
+ catch (err) {
852
+ logger.warn(`[overload] restart browser ${label} threw: ${err instanceof Error ? err.message : String(err)}`);
853
+ releaseOverloadNonce(st.nonce, claimKey);
854
+ // Return a VISIBLE card, not a toast: the handler can
855
+ // run up to ~12s (quit-wait), which exceeds the 2.5s card-ACK window — a
856
+ // toast-only result after that ACK is silently dropped by the dispatcher.
857
+ // buildOverloadBrowserFailureCard renders a patchable card carrying the
858
+ // rebuilt alert `st`, so the owner actually sees the failure + can retry.
859
+ return JSON.parse(buildOverloadBrowserFailureCard(st, label, '重启失败,请稍后重试'));
860
+ }
861
+ if (!result.ok) {
862
+ // Quit never happened (e.g. unsaved-changes dialog) — nothing was killed;
863
+ // release the claim so the owner can retry after handling the dialog. Same
864
+ // reasoning as above: deliver via a patchable card, never a toast.
865
+ logger.warn(`[overload] restart browser ${label} not ok: ${result.error ?? 'unknown'}`);
866
+ releaseOverloadNonce(st.nonce, claimKey);
867
+ return JSON.parse(buildOverloadBrowserFailureCard(st, label, result.error ?? '重启失败'));
868
+ }
869
+ if (!result.relaunched) {
870
+ // Quit succeeded but relaunch failed: the browser is
871
+ // now DOWN, not restarted. Do NOT mark it「✓已重启」and do NOT burn the
872
+ // claim — release it so the owner can retry the reopen. Report the true
873
+ // state (已退出未重开) on a patchable card.
874
+ logger.warn(`[overload] browser ${label} quit but relaunch failed: ${result.error ?? 'unknown'}`);
875
+ releaseOverloadNonce(st.nonce, claimKey);
876
+ return JSON.parse(buildOverloadBrowserFailureCard(st, label, `已退出但重开失败:${result.error ?? '未知错误'}。可再点一次重试重开`));
877
+ }
878
+ // Mark this browser done on the card (button → ✓已重启, disabled).
879
+ st.restartedBrowsers = [...new Set([...(st.restartedBrowsers ?? []), bundleId])];
880
+ logger.info(`[overload] browser ${label} restarted by owner ${operatorOpenId} (relaunched=${result.relaunched})`);
881
+ return JSON.parse(buildOverloadAlertCard(st));
882
+ }
776
883
  // ─── 群内授权卡片动作(限制提交 + grant/revoke,talk-only)──────────────────
777
884
  // 不绑定 session,必须在 session 解析之前处理。owner 强闸门 + nonce 校验。
778
885
  if (value?.action && (value.action === 'grant_chat'
@@ -952,6 +1059,27 @@ export async function handleCardAction(data, deps, larkAppId) {
952
1059
  if (isAskCardAction(value?.action)) {
953
1060
  return handleAskCardAction(data);
954
1061
  }
1062
+ if (['feedback_submit', 'feedback_reason', 'feedback_comment', 'skill_feedback_submit'].includes(value?.action ?? '') && larkAppId) {
1063
+ const { handleSkillFeedbackCardAction } = await import('./skill-feedback-card.js');
1064
+ const { getSkillFeedbackStore } = await import('../../services/skill-feedback-store.js');
1065
+ const { config } = await import('../../config.js');
1066
+ return handleSkillFeedbackCardAction(data, larkAppId, {
1067
+ store: await getSkillFeedbackStore(config.session.dataDir),
1068
+ loadBaseCard: async (platformMessageId) => {
1069
+ const detail = await getMessageDetail(larkAppId, platformMessageId);
1070
+ const content = detail?.items?.[0]?.body?.content ?? detail?.body?.content;
1071
+ if (typeof content !== 'string')
1072
+ return undefined;
1073
+ try {
1074
+ const parsed = JSON.parse(content);
1075
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;
1076
+ }
1077
+ catch {
1078
+ return undefined;
1079
+ }
1080
+ },
1081
+ });
1082
+ }
955
1083
  if ((value?.action === 'codex_notifier_continue' || value?.action === 'codex_notifier_open_app')
956
1084
  && larkAppId) {
957
1085
  if (!operatorOpenId) {
@@ -1685,6 +1813,18 @@ export async function handleCardAction(data, deps, larkAppId) {
1685
1813
  const ds = activeSessions.get(sKey);
1686
1814
  if (!ds)
1687
1815
  return { toast: { type: 'error', content: t('card.adopt.toast_no_session', undefined, loc) } };
1816
+ // The picker can live in a folded chat-scope topic while rootId remains the
1817
+ // chat session anchor. Freeze the trusted card placement before adoption
1818
+ // mutates the session, so its success/error replies stay beside the picker.
1819
+ const replyOptionsPromise = cardReplyOptions(larkAppId, cardMessageId, ds.chatId);
1820
+ const pickerSessionReply = async (rid, content, msgType, appId, turnId, opts) => {
1821
+ const placement = await replyOptionsPromise;
1822
+ return deps.sessionReply(rid, content, msgType, appId, turnId, opts?.replyTarget || !placement
1823
+ ? opts
1824
+ : { ...opts, replyTarget: placement.replyTarget });
1825
+ };
1826
+ const pickerDeps = { ...deps, sessionReply: pickerSessionReply };
1827
+ const pickerReply = (content, msgType) => pickerSessionReply(rootId, content, msgType, larkAppId);
1688
1828
  const sourceSession = ds.session;
1689
1829
  if (isSessionTransferring(ds)) {
1690
1830
  return { toast: { type: 'warning', content: t('cmd.session.transfer_in_progress', undefined, localeForBot(ds.larkAppId)) } };
@@ -1709,13 +1849,13 @@ export async function handleCardAction(data, deps, larkAppId) {
1709
1849
  }
1710
1850
  const target = resumable.find(r => r.cliSessionId === cliSessionId);
1711
1851
  if (!target) {
1712
- await sessionReply(rootId, t('cmd.adopt.resume_not_found', { id: cliSessionId }, localeForBot(ds.larkAppId)));
1852
+ await pickerReply(t('cmd.adopt.resume_not_found', { id: cliSessionId }, localeForBot(ds.larkAppId)));
1713
1853
  clearAdoptCandidates(rootId);
1714
1854
  if (cardMessageId && larkAppId)
1715
1855
  deleteMessage(larkAppId, cardMessageId);
1716
1856
  return;
1717
1857
  }
1718
- await startResumeImportSession(target, ds, { activeSessions, sessionReply: deps.sessionReply, getActiveCount: () => 0, lastRepoScan }, larkAppId);
1858
+ await startResumeImportSession(target, ds, { ...pickerDeps, getActiveCount: () => 0 }, larkAppId);
1719
1859
  clearAdoptCandidates(rootId);
1720
1860
  if (cardMessageId && larkAppId)
1721
1861
  deleteMessage(larkAppId, cardMessageId);
@@ -1764,14 +1904,14 @@ export async function handleCardAction(data, deps, larkAppId) {
1764
1904
  return { toast: { type: 'warning', content: t('cmd.session.transfer_in_progress', undefined, localeForBot(ds.larkAppId)) } };
1765
1905
  }
1766
1906
  if (!target) {
1767
- await sessionReply(rootId, t('cmd.adopt.target_exited', undefined, localeForBot(ds.larkAppId)));
1907
+ await pickerReply(t('cmd.adopt.target_exited', undefined, localeForBot(ds.larkAppId)));
1768
1908
  clearAdoptCandidates(rootId);
1769
1909
  if (cardMessageId && larkAppId)
1770
1910
  deleteMessage(larkAppId, cardMessageId);
1771
1911
  return;
1772
1912
  }
1773
1913
  const { startAdoptSession } = await import('../../core/command-handler.js');
1774
- await startAdoptSession(target, ds, { activeSessions, sessionReply: deps.sessionReply, getActiveCount: () => 0, lastRepoScan }, larkAppId);
1914
+ await startAdoptSession(target, ds, { ...pickerDeps, getActiveCount: () => 0 }, larkAppId);
1775
1915
  clearAdoptCandidates(rootId);
1776
1916
  if (cardMessageId && larkAppId)
1777
1917
  deleteMessage(larkAppId, cardMessageId);