botmux 3.16.0 → 3.17.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 (619) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/backend/riff-backend.d.ts +84 -1
  3. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/riff-backend.js +202 -19
  5. package/dist/adapters/backend/riff-backend.js.map +1 -1
  6. package/dist/adapters/backend/sandbox.d.ts +8 -0
  7. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  8. package/dist/adapters/backend/sandbox.js +15 -0
  9. package/dist/adapters/backend/sandbox.js.map +1 -1
  10. package/dist/adapters/backend/tmux-backend.d.ts +61 -7
  11. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/tmux-backend.js +80 -9
  13. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  14. package/dist/adapters/backend/tmux-pipe-backend.d.ts +62 -4
  15. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  16. package/dist/adapters/backend/tmux-pipe-backend.js +240 -27
  17. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  18. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  19. package/dist/adapters/cli/claude-code.js +4 -2
  20. package/dist/adapters/cli/claude-code.js.map +1 -1
  21. package/dist/adapters/cli/coco.d.ts.map +1 -1
  22. package/dist/adapters/cli/coco.js +27 -0
  23. package/dist/adapters/cli/coco.js.map +1 -1
  24. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  25. package/dist/adapters/cli/codex-app.js +28 -0
  26. package/dist/adapters/cli/codex-app.js.map +1 -1
  27. package/dist/adapters/cli/codex.d.ts.map +1 -1
  28. package/dist/adapters/cli/codex.js +51 -23
  29. package/dist/adapters/cli/codex.js.map +1 -1
  30. package/dist/adapters/cli/dsh-tui.d.ts +24 -0
  31. package/dist/adapters/cli/dsh-tui.d.ts.map +1 -0
  32. package/dist/adapters/cli/dsh-tui.js +99 -0
  33. package/dist/adapters/cli/dsh-tui.js.map +1 -0
  34. package/dist/adapters/cli/dsh.d.ts.map +1 -1
  35. package/dist/adapters/cli/dsh.js +15 -9
  36. package/dist/adapters/cli/dsh.js.map +1 -1
  37. package/dist/adapters/cli/fs-policy.d.ts +98 -1
  38. package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
  39. package/dist/adapters/cli/fs-policy.js +182 -7
  40. package/dist/adapters/cli/fs-policy.js.map +1 -1
  41. package/dist/adapters/cli/grok.js +16 -18
  42. package/dist/adapters/cli/grok.js.map +1 -1
  43. package/dist/adapters/cli/model-catalog-json.d.ts +17 -0
  44. package/dist/adapters/cli/model-catalog-json.d.ts.map +1 -0
  45. package/dist/adapters/cli/model-catalog-json.js +43 -0
  46. package/dist/adapters/cli/model-catalog-json.js.map +1 -0
  47. package/dist/adapters/cli/oh-my-pi.d.ts +2 -0
  48. package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
  49. package/dist/adapters/cli/oh-my-pi.js +45 -13
  50. package/dist/adapters/cli/oh-my-pi.js.map +1 -1
  51. package/dist/adapters/cli/opencode.js +1 -1
  52. package/dist/adapters/cli/opencode.js.map +1 -1
  53. package/dist/adapters/cli/registry.d.ts +2 -1
  54. package/dist/adapters/cli/registry.d.ts.map +1 -1
  55. package/dist/adapters/cli/registry.js +6 -1
  56. package/dist/adapters/cli/registry.js.map +1 -1
  57. package/dist/adapters/cli/relay.d.ts.map +1 -1
  58. package/dist/adapters/cli/relay.js +7 -0
  59. package/dist/adapters/cli/relay.js.map +1 -1
  60. package/dist/adapters/cli/seed.d.ts.map +1 -1
  61. package/dist/adapters/cli/seed.js +6 -0
  62. package/dist/adapters/cli/seed.js.map +1 -1
  63. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  64. package/dist/adapters/cli/shared-hints.js +20 -14
  65. package/dist/adapters/cli/shared-hints.js.map +1 -1
  66. package/dist/adapters/cli/traex.d.ts +4 -0
  67. package/dist/adapters/cli/traex.d.ts.map +1 -1
  68. package/dist/adapters/cli/traex.js +153 -0
  69. package/dist/adapters/cli/traex.js.map +1 -1
  70. package/dist/adapters/cli/types.d.ts +42 -1
  71. package/dist/adapters/cli/types.d.ts.map +1 -1
  72. package/dist/autostart.d.ts +6 -0
  73. package/dist/autostart.d.ts.map +1 -1
  74. package/dist/autostart.js +21 -1
  75. package/dist/autostart.js.map +1 -1
  76. package/dist/bot-registry.d.ts +27 -0
  77. package/dist/bot-registry.d.ts.map +1 -1
  78. package/dist/bot-registry.js +62 -2
  79. package/dist/bot-registry.js.map +1 -1
  80. package/dist/cli/vc-agent.d.ts.map +1 -1
  81. package/dist/cli/vc-agent.js +21 -3
  82. package/dist/cli/vc-agent.js.map +1 -1
  83. package/dist/cli.d.ts.map +1 -1
  84. package/dist/cli.js +92 -1
  85. package/dist/cli.js.map +1 -1
  86. package/dist/codex-app-runner.js +28 -0
  87. package/dist/codex-app-runner.js.map +1 -1
  88. package/dist/core/bot-steer-directive.d.ts +25 -0
  89. package/dist/core/bot-steer-directive.d.ts.map +1 -0
  90. package/dist/core/bot-steer-directive.js +47 -0
  91. package/dist/core/bot-steer-directive.js.map +1 -0
  92. package/dist/core/command-handler.d.ts.map +1 -1
  93. package/dist/core/command-handler.js +102 -18
  94. package/dist/core/command-handler.js.map +1 -1
  95. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  96. package/dist/core/dashboard-ipc-server.js +53 -13
  97. package/dist/core/dashboard-ipc-server.js.map +1 -1
  98. package/dist/core/dashboard-rows.d.ts +3 -0
  99. package/dist/core/dashboard-rows.d.ts.map +1 -1
  100. package/dist/core/dashboard-rows.js +26 -5
  101. package/dist/core/dashboard-rows.js.map +1 -1
  102. package/dist/core/dashboard-url.d.ts +10 -1
  103. package/dist/core/dashboard-url.d.ts.map +1 -1
  104. package/dist/core/dashboard-url.js +12 -2
  105. package/dist/core/dashboard-url.js.map +1 -1
  106. package/dist/core/dispatch.d.ts.map +1 -1
  107. package/dist/core/dispatch.js +5 -4
  108. package/dist/core/dispatch.js.map +1 -1
  109. package/dist/core/existing-app-server.d.ts +22 -0
  110. package/dist/core/existing-app-server.d.ts.map +1 -0
  111. package/dist/core/existing-app-server.js +85 -0
  112. package/dist/core/existing-app-server.js.map +1 -0
  113. package/dist/core/native-topic-id.d.ts +9 -0
  114. package/dist/core/native-topic-id.d.ts.map +1 -0
  115. package/dist/core/native-topic-id.js +14 -0
  116. package/dist/core/native-topic-id.js.map +1 -0
  117. package/dist/core/per-bot-env.d.ts.map +1 -1
  118. package/dist/core/per-bot-env.js +10 -0
  119. package/dist/core/per-bot-env.js.map +1 -1
  120. package/dist/core/plugins/mcp/gateway.d.ts +27 -3
  121. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
  122. package/dist/core/plugins/mcp/gateway.js +272 -26
  123. package/dist/core/plugins/mcp/gateway.js.map +1 -1
  124. package/dist/core/plugins/mcp/host.d.ts +18 -0
  125. package/dist/core/plugins/mcp/host.d.ts.map +1 -1
  126. package/dist/core/plugins/mcp/host.js +80 -16
  127. package/dist/core/plugins/mcp/host.js.map +1 -1
  128. package/dist/core/plugins/mcp/launch-record.d.ts +14 -0
  129. package/dist/core/plugins/mcp/launch-record.d.ts.map +1 -0
  130. package/dist/core/plugins/mcp/launch-record.js +63 -0
  131. package/dist/core/plugins/mcp/launch-record.js.map +1 -0
  132. package/dist/core/session-activity.d.ts +11 -0
  133. package/dist/core/session-activity.d.ts.map +1 -1
  134. package/dist/core/session-activity.js +23 -0
  135. package/dist/core/session-activity.js.map +1 -1
  136. package/dist/core/session-group-birth.d.ts.map +1 -1
  137. package/dist/core/session-group-birth.js +23 -8
  138. package/dist/core/session-group-birth.js.map +1 -1
  139. package/dist/core/session-manager.d.ts +1 -4
  140. package/dist/core/session-manager.d.ts.map +1 -1
  141. package/dist/core/session-manager.js +16 -20
  142. package/dist/core/session-manager.js.map +1 -1
  143. package/dist/core/shared-adopt.d.ts +20 -0
  144. package/dist/core/shared-adopt.d.ts.map +1 -0
  145. package/dist/core/shared-adopt.js +26 -0
  146. package/dist/core/shared-adopt.js.map +1 -0
  147. package/dist/core/skills/customize-command.d.ts +7 -0
  148. package/dist/core/skills/customize-command.d.ts.map +1 -0
  149. package/dist/core/skills/customize-command.js +303 -0
  150. package/dist/core/skills/customize-command.js.map +1 -0
  151. package/dist/core/terminal-write-auth.d.ts +15 -0
  152. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  153. package/dist/core/terminal-write-auth.js +15 -0
  154. package/dist/core/terminal-write-auth.js.map +1 -1
  155. package/dist/core/terminal-write-frame.d.ts +30 -0
  156. package/dist/core/terminal-write-frame.d.ts.map +1 -0
  157. package/dist/core/terminal-write-frame.js +44 -0
  158. package/dist/core/terminal-write-frame.js.map +1 -0
  159. package/dist/core/types.d.ts +14 -4
  160. package/dist/core/types.d.ts.map +1 -1
  161. package/dist/core/types.js +6 -8
  162. package/dist/core/types.js.map +1 -1
  163. package/dist/core/worker-pool.d.ts +31 -6
  164. package/dist/core/worker-pool.d.ts.map +1 -1
  165. package/dist/core/worker-pool.js +444 -102
  166. package/dist/core/worker-pool.js.map +1 -1
  167. package/dist/core/worker-startup-retry.d.ts +52 -0
  168. package/dist/core/worker-startup-retry.d.ts.map +1 -0
  169. package/dist/core/worker-startup-retry.js +68 -0
  170. package/dist/core/worker-startup-retry.js.map +1 -0
  171. package/dist/daemon.d.ts +9 -8
  172. package/dist/daemon.d.ts.map +1 -1
  173. package/dist/daemon.js +467 -171
  174. package/dist/daemon.js.map +1 -1
  175. package/dist/dashboard/autostart-api.d.ts +26 -0
  176. package/dist/dashboard/autostart-api.d.ts.map +1 -0
  177. package/dist/dashboard/autostart-api.js +88 -0
  178. package/dist/dashboard/autostart-api.js.map +1 -0
  179. package/dist/dashboard/bot-payload.d.ts +5 -0
  180. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  181. package/dist/dashboard/bot-payload.js +2 -0
  182. package/dist/dashboard/bot-payload.js.map +1 -1
  183. package/dist/dashboard/control-csrf.d.ts +29 -1
  184. package/dist/dashboard/control-csrf.d.ts.map +1 -1
  185. package/dist/dashboard/control-csrf.js +49 -10
  186. package/dist/dashboard/control-csrf.js.map +1 -1
  187. package/dist/dashboard/customization-api.d.ts +23 -0
  188. package/dist/dashboard/customization-api.d.ts.map +1 -0
  189. package/dist/dashboard/customization-api.js +198 -0
  190. package/dist/dashboard/customization-api.js.map +1 -0
  191. package/dist/dashboard/debug-terminal.d.ts +13 -1
  192. package/dist/dashboard/debug-terminal.d.ts.map +1 -1
  193. package/dist/dashboard/debug-terminal.js +18 -4
  194. package/dist/dashboard/debug-terminal.js.map +1 -1
  195. package/dist/dashboard/settings-write-applier.d.ts +0 -23
  196. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  197. package/dist/dashboard/settings-write-applier.js +7 -28
  198. package/dist/dashboard/settings-write-applier.js.map +1 -1
  199. package/dist/dashboard/terminal-control-route.d.ts +32 -0
  200. package/dist/dashboard/terminal-control-route.d.ts.map +1 -0
  201. package/dist/dashboard/terminal-control-route.js +70 -0
  202. package/dist/dashboard/terminal-control-route.js.map +1 -0
  203. package/dist/dashboard/terminal-control.d.ts +64 -13
  204. package/dist/dashboard/terminal-control.d.ts.map +1 -1
  205. package/dist/dashboard/terminal-control.js +77 -14
  206. package/dist/dashboard/terminal-control.js.map +1 -1
  207. package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -1
  208. package/dist/dashboard/terminal-front-proxy.js +41 -9
  209. package/dist/dashboard/terminal-front-proxy.js.map +1 -1
  210. package/dist/dashboard/vc-consumer-profiles-api.d.ts +69 -18
  211. package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
  212. package/dist/dashboard/vc-consumer-profiles-api.js +149 -29
  213. package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -1
  214. package/dist/dashboard/web/agent-workbench-api.d.ts +34 -2
  215. package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -1
  216. package/dist/dashboard/web/agent-workbench-api.js +39 -4
  217. package/dist/dashboard/web/agent-workbench-api.js.map +1 -1
  218. package/dist/dashboard/web/agent-workbench-appearance.d.ts +6 -3
  219. package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -1
  220. package/dist/dashboard/web/agent-workbench-appearance.js +7 -4
  221. package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -1
  222. package/dist/dashboard/web/agent-workbench-model.d.ts +2 -0
  223. package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -1
  224. package/dist/dashboard/web/agent-workbench-model.js.map +1 -1
  225. package/dist/dashboard/web/agent-workbench-page.js +2 -2
  226. package/dist/dashboard/web/agent-workbench-page.js.map +1 -1
  227. package/dist/dashboard/web/agent-workbench-panes.d.ts +59 -4
  228. package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -1
  229. package/dist/dashboard/web/agent-workbench-panes.js +493 -85
  230. package/dist/dashboard/web/agent-workbench-panes.js.map +1 -1
  231. package/dist/dashboard/web/agent-workbench-session-list.d.ts +11 -7
  232. package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -1
  233. package/dist/dashboard/web/agent-workbench-session-list.js +24 -31
  234. package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -1
  235. package/dist/dashboard/web/agent-workbench-terminal-control.d.ts +198 -0
  236. package/dist/dashboard/web/agent-workbench-terminal-control.d.ts.map +1 -0
  237. package/dist/dashboard/web/agent-workbench-terminal-control.js +292 -0
  238. package/dist/dashboard/web/agent-workbench-terminal-control.js.map +1 -0
  239. package/dist/dashboard/web/agent-workbench-view.d.ts +3 -2
  240. package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -1
  241. package/dist/dashboard/web/agent-workbench-view.js +69 -50
  242. package/dist/dashboard/web/agent-workbench-view.js.map +1 -1
  243. package/dist/dashboard/web/app.d.ts.map +1 -1
  244. package/dist/dashboard/web/app.js +58 -7
  245. package/dist/dashboard/web/app.js.map +1 -1
  246. package/dist/dashboard/web/bot-defaults-page.d.ts +24 -0
  247. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  248. package/dist/dashboard/web/bot-defaults-page.js +191 -16
  249. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  250. package/dist/dashboard/web/bot-defaults.d.ts +17 -0
  251. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  252. package/dist/dashboard/web/bot-defaults.js +51 -2
  253. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  254. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  255. package/dist/dashboard/web/bot-onboarding.js +32 -8
  256. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  257. package/dist/dashboard/web/confirm-modal.d.ts +35 -0
  258. package/dist/dashboard/web/confirm-modal.d.ts.map +1 -0
  259. package/dist/dashboard/web/confirm-modal.js +111 -0
  260. package/dist/dashboard/web/confirm-modal.js.map +1 -0
  261. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  262. package/dist/dashboard/web/connectors-page.js +2 -1
  263. package/dist/dashboard/web/connectors-page.js.map +1 -1
  264. package/dist/dashboard/web/customization-page.d.ts +3 -0
  265. package/dist/dashboard/web/customization-page.d.ts.map +1 -0
  266. package/dist/dashboard/web/customization-page.js +315 -0
  267. package/dist/dashboard/web/customization-page.js.map +1 -0
  268. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  269. package/dist/dashboard/web/dashboard-routes.js +1 -0
  270. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  271. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  272. package/dist/dashboard/web/groups-page.js +11 -9
  273. package/dist/dashboard/web/groups-page.js.map +1 -1
  274. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  275. package/dist/dashboard/web/i18n.js +226 -42
  276. package/dist/dashboard/web/i18n.js.map +1 -1
  277. package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
  278. package/dist/dashboard/web/monitor-room.js +3 -2
  279. package/dist/dashboard/web/monitor-room.js.map +1 -1
  280. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  281. package/dist/dashboard/web/overview-page.js +98 -63
  282. package/dist/dashboard/web/overview-page.js.map +1 -1
  283. package/dist/dashboard/web/roles-page.d.ts.map +1 -1
  284. package/dist/dashboard/web/roles-page.js +4 -3
  285. package/dist/dashboard/web/roles-page.js.map +1 -1
  286. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  287. package/dist/dashboard/web/schedules-page.js +165 -18
  288. package/dist/dashboard/web/schedules-page.js.map +1 -1
  289. package/dist/dashboard/web/sessions-kanban.d.ts +2 -0
  290. package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
  291. package/dist/dashboard/web/sessions-kanban.js +142 -24
  292. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  293. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  294. package/dist/dashboard/web/sessions-page.js +177 -94
  295. package/dist/dashboard/web/sessions-page.js.map +1 -1
  296. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  297. package/dist/dashboard/web/sessions.js +5 -4
  298. package/dist/dashboard/web/sessions.js.map +1 -1
  299. package/dist/dashboard/web/settings-page.d.ts +0 -8
  300. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  301. package/dist/dashboard/web/settings-page.js +185 -65
  302. package/dist/dashboard/web/settings-page.js.map +1 -1
  303. package/dist/dashboard/web/skills/skill-library-tab.d.ts +2 -0
  304. package/dist/dashboard/web/skills/skill-library-tab.d.ts.map +1 -1
  305. package/dist/dashboard/web/skills/skill-library-tab.js +15 -1
  306. package/dist/dashboard/web/skills/skill-library-tab.js.map +1 -1
  307. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  308. package/dist/dashboard/web/skills-page.js +5 -4
  309. package/dist/dashboard/web/skills-page.js.map +1 -1
  310. package/dist/dashboard/web/store.d.ts +5 -0
  311. package/dist/dashboard/web/store.d.ts.map +1 -1
  312. package/dist/dashboard/web/store.js +4 -0
  313. package/dist/dashboard/web/store.js.map +1 -1
  314. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  315. package/dist/dashboard/web/team-federation-page.js +3 -2
  316. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  317. package/dist/dashboard/web/toast.d.ts +15 -0
  318. package/dist/dashboard/web/toast.d.ts.map +1 -0
  319. package/dist/dashboard/web/toast.js +70 -0
  320. package/dist/dashboard/web/toast.js.map +1 -0
  321. package/dist/dashboard/web/v3-components.d.ts.map +1 -1
  322. package/dist/dashboard/web/v3-components.js +2 -1
  323. package/dist/dashboard/web/v3-components.js.map +1 -1
  324. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +10 -12
  325. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
  326. package/dist/dashboard/web/vc-consumer-profiles-section.js +219 -200
  327. package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
  328. package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
  329. package/dist/dashboard/web/whiteboards-page.js +2 -1
  330. package/dist/dashboard/web/whiteboards-page.js.map +1 -1
  331. package/dist/dashboard-web/app.js +1 -1
  332. package/dist/dashboard-web/chunks/agent-workbench-dock-page-LZSUOCEQ.js +1 -0
  333. package/dist/dashboard-web/chunks/agent-workbench-page-YONDRJU7.js +1 -0
  334. package/dist/dashboard-web/chunks/bot-defaults-page-X7LV6373.js +1 -0
  335. package/dist/dashboard-web/chunks/chunk-2PVRDXEL.js +1 -0
  336. package/dist/dashboard-web/chunks/chunk-53JUKBU2.js +10 -0
  337. package/dist/dashboard-web/chunks/{chunk-5CJMHTT4.js → chunk-5QX4OYOR.js} +1 -1
  338. package/dist/dashboard-web/chunks/{chunk-NACP7BMR.js → chunk-5VRVJFQR.js} +1 -1
  339. package/dist/dashboard-web/chunks/{chunk-FDZ7WOBW.js → chunk-6ROOZWYV.js} +1 -1
  340. package/dist/dashboard-web/chunks/{chunk-F6KNPF4R.js → chunk-CK22743G.js} +15 -19
  341. package/dist/dashboard-web/chunks/chunk-CVNIMUPY.js +25 -0
  342. package/dist/dashboard-web/chunks/chunk-GJC2TMWS.js +2 -0
  343. package/dist/dashboard-web/chunks/chunk-OT6L6G7R.js +1 -0
  344. package/dist/dashboard-web/chunks/chunk-QITAMHW6.js +1 -0
  345. package/dist/dashboard-web/chunks/chunk-RHVFZC5Z.js +1 -0
  346. package/dist/dashboard-web/chunks/chunk-SOBMN2VY.js +1 -0
  347. package/dist/dashboard-web/chunks/chunk-SZOB6VK2.js +1 -0
  348. package/dist/dashboard-web/chunks/chunk-XVIXNQGC.js +44 -0
  349. package/dist/dashboard-web/chunks/chunk-YUJF34ME.js +1 -0
  350. package/dist/dashboard-web/chunks/connectors-page-LB2HEJ7F.js +1 -0
  351. package/dist/dashboard-web/chunks/customization-page-4GXBYLG6.js +105 -0
  352. package/dist/dashboard-web/chunks/feedback-page-IZQ7VLDG.js +1 -0
  353. package/dist/dashboard-web/chunks/groups-page-4WCP5OEV.js +8 -0
  354. package/dist/dashboard-web/chunks/{insights-page-HJFDYR5N.js → insights-page-TXQHIPQL.js} +1 -1
  355. package/dist/dashboard-web/chunks/{monitor-room-V7PCP47V.js → monitor-room-VBRVWXCM.js} +8 -8
  356. package/dist/dashboard-web/chunks/monitoring-page-QDDZWERE.js +2 -0
  357. package/dist/dashboard-web/chunks/office-page-PENFNYPG.js +1 -0
  358. package/dist/dashboard-web/chunks/overview-page-BZQDP6MP.js +1 -0
  359. package/dist/dashboard-web/chunks/plugin-page-JX4GSWZS.js +1 -0
  360. package/dist/dashboard-web/chunks/roles-page-VPNINZNK.js +1 -0
  361. package/dist/dashboard-web/chunks/schedules-page-BITO6HEA.js +1 -0
  362. package/dist/dashboard-web/chunks/sessions-page-ZKCOVTD2.js +8 -0
  363. package/dist/dashboard-web/chunks/settings-page-UT6JDTS6.js +2 -0
  364. package/dist/dashboard-web/chunks/skills-page-GULXVAJY.js +4 -0
  365. package/dist/dashboard-web/chunks/team-federation-page-CUUJWGEG.js +1 -0
  366. package/dist/dashboard-web/chunks/v3-page-5WVJ5AUR.js +94 -0
  367. package/dist/dashboard-web/chunks/whiteboards-page-FZ2CME4H.js +1 -0
  368. package/dist/dashboard-web/design-tokens.css +236 -0
  369. package/dist/dashboard-web/index.html +1 -0
  370. package/dist/dashboard-web/style.css +1930 -114
  371. package/dist/dashboard.js +360 -279
  372. package/dist/dashboard.js.map +1 -1
  373. package/dist/desktop/renderer/app.js +6 -0
  374. package/dist/desktop/renderer/app.js.map +1 -1
  375. package/dist/dsh-runner.js +139 -17
  376. package/dist/dsh-runner.js.map +1 -1
  377. package/dist/global-config.d.ts +33 -2
  378. package/dist/global-config.d.ts.map +1 -1
  379. package/dist/global-config.js +62 -0
  380. package/dist/global-config.js.map +1 -1
  381. package/dist/i18n/en.d.ts.map +1 -1
  382. package/dist/i18n/en.js +13 -4
  383. package/dist/i18n/en.js.map +1 -1
  384. package/dist/i18n/index.d.ts +27 -3
  385. package/dist/i18n/index.d.ts.map +1 -1
  386. package/dist/i18n/index.js +33 -4
  387. package/dist/i18n/index.js.map +1 -1
  388. package/dist/i18n/zh.d.ts.map +1 -1
  389. package/dist/i18n/zh.js +13 -4
  390. package/dist/i18n/zh.js.map +1 -1
  391. package/dist/im/lark/card-builder.d.ts +2 -0
  392. package/dist/im/lark/card-builder.d.ts.map +1 -1
  393. package/dist/im/lark/card-builder.js +7 -4
  394. package/dist/im/lark/card-builder.js.map +1 -1
  395. package/dist/im/lark/card-handler.d.ts.map +1 -1
  396. package/dist/im/lark/card-handler.js +135 -20
  397. package/dist/im/lark/card-handler.js.map +1 -1
  398. package/dist/im/lark/event-dispatcher.d.ts +38 -3
  399. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  400. package/dist/im/lark/event-dispatcher.js +163 -13
  401. package/dist/im/lark/event-dispatcher.js.map +1 -1
  402. package/dist/im/lark/v3-blocked-card-handler.d.ts.map +1 -1
  403. package/dist/im/lark/v3-blocked-card-handler.js +2 -1
  404. package/dist/im/lark/v3-blocked-card-handler.js.map +1 -1
  405. package/dist/im/lark/v3-blocked-card.d.ts +1 -1
  406. package/dist/im/lark/v3-blocked-card.d.ts.map +1 -1
  407. package/dist/im/lark/v3-blocked-card.js +14 -0
  408. package/dist/im/lark/v3-blocked-card.js.map +1 -1
  409. package/dist/index-core-only.js +2 -0
  410. package/dist/index-core-only.js.map +1 -1
  411. package/dist/index-daemon.js +3 -0
  412. package/dist/index-daemon.js.map +1 -1
  413. package/dist/platform/binding.d.ts +37 -0
  414. package/dist/platform/binding.d.ts.map +1 -1
  415. package/dist/platform/binding.js +15 -0
  416. package/dist/platform/binding.js.map +1 -1
  417. package/dist/services/bridge-turn-journal.d.ts +63 -0
  418. package/dist/services/bridge-turn-journal.d.ts.map +1 -0
  419. package/dist/services/bridge-turn-journal.js +149 -0
  420. package/dist/services/bridge-turn-journal.js.map +1 -0
  421. package/dist/services/bridge-turn-queue.d.ts +8 -1
  422. package/dist/services/bridge-turn-queue.d.ts.map +1 -1
  423. package/dist/services/bridge-turn-queue.js +2 -1
  424. package/dist/services/bridge-turn-queue.js.map +1 -1
  425. package/dist/services/codex-app-runner-protocol.d.ts +5 -0
  426. package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
  427. package/dist/services/codex-app-runner-protocol.js +5 -0
  428. package/dist/services/codex-app-runner-protocol.js.map +1 -1
  429. package/dist/services/customization-store.d.ts +93 -0
  430. package/dist/services/customization-store.d.ts.map +1 -0
  431. package/dist/services/customization-store.js +542 -0
  432. package/dist/services/customization-store.js.map +1 -0
  433. package/dist/services/file-bridge-path.d.ts.map +1 -1
  434. package/dist/services/file-bridge-path.js +3 -0
  435. package/dist/services/file-bridge-path.js.map +1 -1
  436. package/dist/services/grok-transcript.d.ts.map +1 -1
  437. package/dist/services/grok-transcript.js +44 -9
  438. package/dist/services/grok-transcript.js.map +1 -1
  439. package/dist/services/local-cli-opener.d.ts.map +1 -1
  440. package/dist/services/local-cli-opener.js +12 -3
  441. package/dist/services/local-cli-opener.js.map +1 -1
  442. package/dist/services/model-catalog.d.ts +54 -0
  443. package/dist/services/model-catalog.d.ts.map +1 -0
  444. package/dist/services/model-catalog.js +147 -0
  445. package/dist/services/model-catalog.js.map +1 -0
  446. package/dist/services/omp-transcript.d.ts +27 -0
  447. package/dist/services/omp-transcript.d.ts.map +1 -0
  448. package/dist/services/omp-transcript.js +214 -0
  449. package/dist/services/omp-transcript.js.map +1 -0
  450. package/dist/services/platform-team-store.d.ts +16 -8
  451. package/dist/services/platform-team-store.d.ts.map +1 -1
  452. package/dist/services/platform-team-store.js +17 -10
  453. package/dist/services/platform-team-store.js.map +1 -1
  454. package/dist/services/project-scanner.d.ts.map +1 -1
  455. package/dist/services/project-scanner.js +13 -8
  456. package/dist/services/project-scanner.js.map +1 -1
  457. package/dist/services/resumable-session-discovery.d.ts.map +1 -1
  458. package/dist/services/resumable-session-discovery.js +117 -35
  459. package/dist/services/resumable-session-discovery.js.map +1 -1
  460. package/dist/services/structured-bridge-clis.d.ts +5 -3
  461. package/dist/services/structured-bridge-clis.d.ts.map +1 -1
  462. package/dist/services/structured-bridge-clis.js +5 -1
  463. package/dist/services/structured-bridge-clis.js.map +1 -1
  464. package/dist/services/vc-meeting-action-gate.d.ts.map +1 -1
  465. package/dist/services/vc-meeting-action-gate.js +15 -4
  466. package/dist/services/vc-meeting-action-gate.js.map +1 -1
  467. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +46 -66
  468. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -1
  469. package/dist/services/vc-meeting-consumer-profile-bootstrap.js +33 -292
  470. package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -1
  471. package/dist/services/vc-meeting-consumer-profile-templates.js +3 -3
  472. package/dist/services/vc-meeting-consumer-profile-templates.js.map +1 -1
  473. package/dist/services/vc-meeting-delivery-store.d.ts +18 -0
  474. package/dist/services/vc-meeting-delivery-store.d.ts.map +1 -1
  475. package/dist/services/vc-meeting-delivery-store.js +55 -0
  476. package/dist/services/vc-meeting-delivery-store.js.map +1 -1
  477. package/dist/services/vc-meeting-send-policy.d.ts +21 -1
  478. package/dist/services/vc-meeting-send-policy.d.ts.map +1 -1
  479. package/dist/services/vc-meeting-send-policy.js +30 -2
  480. package/dist/services/vc-meeting-send-policy.js.map +1 -1
  481. package/dist/services/vc-meeting-shared-consumer-catalog-store.d.ts +78 -0
  482. package/dist/services/vc-meeting-shared-consumer-catalog-store.d.ts.map +1 -0
  483. package/dist/services/vc-meeting-shared-consumer-catalog-store.js +227 -0
  484. package/dist/services/vc-meeting-shared-consumer-catalog-store.js.map +1 -0
  485. package/dist/services/vc-meeting-shared-consumer-catalog.d.ts +53 -0
  486. package/dist/services/vc-meeting-shared-consumer-catalog.d.ts.map +1 -0
  487. package/dist/services/vc-meeting-shared-consumer-catalog.js +161 -0
  488. package/dist/services/vc-meeting-shared-consumer-catalog.js.map +1 -0
  489. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  490. package/dist/setup/bot-config-editor.js +1 -0
  491. package/dist/setup/bot-config-editor.js.map +1 -1
  492. package/dist/setup/open-platform-automation.d.ts +20 -0
  493. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  494. package/dist/setup/open-platform-automation.js +27 -0
  495. package/dist/setup/open-platform-automation.js.map +1 -1
  496. package/dist/skills/customization-bundle.d.ts +83 -0
  497. package/dist/skills/customization-bundle.d.ts.map +1 -0
  498. package/dist/skills/customization-bundle.js +214 -0
  499. package/dist/skills/customization-bundle.js.map +1 -0
  500. package/dist/skills/definitions.d.ts.map +1 -1
  501. package/dist/skills/definitions.js +10 -3
  502. package/dist/skills/definitions.js.map +1 -1
  503. package/dist/skills/effective-builtins.d.ts +38 -0
  504. package/dist/skills/effective-builtins.d.ts.map +1 -0
  505. package/dist/skills/effective-builtins.js +96 -0
  506. package/dist/skills/effective-builtins.js.map +1 -0
  507. package/dist/skills/injection-mode.d.ts +4 -1
  508. package/dist/skills/injection-mode.d.ts.map +1 -1
  509. package/dist/skills/injection-mode.js +11 -3
  510. package/dist/skills/injection-mode.js.map +1 -1
  511. package/dist/skills/installer.d.ts.map +1 -1
  512. package/dist/skills/installer.js +24 -1
  513. package/dist/skills/installer.js.map +1 -1
  514. package/dist/skills/prompt-fragments.d.ts +58 -0
  515. package/dist/skills/prompt-fragments.d.ts.map +1 -0
  516. package/dist/skills/prompt-fragments.js +88 -0
  517. package/dist/skills/prompt-fragments.js.map +1 -0
  518. package/dist/types.d.ts +51 -0
  519. package/dist/types.d.ts.map +1 -1
  520. package/dist/utils/cli-usage-limit.d.ts +50 -0
  521. package/dist/utils/cli-usage-limit.d.ts.map +1 -1
  522. package/dist/utils/cli-usage-limit.js +43 -0
  523. package/dist/utils/cli-usage-limit.js.map +1 -1
  524. package/dist/utils/idle-detector.d.ts +12 -0
  525. package/dist/utils/idle-detector.d.ts.map +1 -1
  526. package/dist/utils/idle-detector.js +88 -2
  527. package/dist/utils/idle-detector.js.map +1 -1
  528. package/dist/utils/stuck-detector.d.ts +5 -0
  529. package/dist/utils/stuck-detector.d.ts.map +1 -1
  530. package/dist/utils/stuck-detector.js +41 -0
  531. package/dist/utils/stuck-detector.js.map +1 -1
  532. package/dist/utils/usage-limit-tracker.d.ts +46 -0
  533. package/dist/utils/usage-limit-tracker.d.ts.map +1 -0
  534. package/dist/utils/usage-limit-tracker.js +91 -0
  535. package/dist/utils/usage-limit-tracker.js.map +1 -0
  536. package/dist/utils/user-token.js +1 -1
  537. package/dist/utils/user-token.js.map +1 -1
  538. package/dist/worker.js +812 -125
  539. package/dist/worker.js.map +1 -1
  540. package/dist/workflows/definition.d.ts +14 -14
  541. package/dist/workflows/events/payloads.d.ts +12 -12
  542. package/dist/workflows/events/schema.d.ts +164 -164
  543. package/dist/workflows/migration/v2-to-v3.js +1 -1
  544. package/dist/workflows/migration/v2-to-v3.js.map +1 -1
  545. package/dist/workflows/v3/architect.d.ts.map +1 -1
  546. package/dist/workflows/v3/architect.js +11 -5
  547. package/dist/workflows/v3/architect.js.map +1 -1
  548. package/dist/workflows/v3/artifact-contract-declarations.d.ts +22 -0
  549. package/dist/workflows/v3/artifact-contract-declarations.d.ts.map +1 -0
  550. package/dist/workflows/v3/artifact-contract-declarations.js +95 -0
  551. package/dist/workflows/v3/artifact-contract-declarations.js.map +1 -0
  552. package/dist/workflows/v3/contract.d.ts +1 -0
  553. package/dist/workflows/v3/contract.d.ts.map +1 -1
  554. package/dist/workflows/v3/contract.js.map +1 -1
  555. package/dist/workflows/v3/daemon-run.d.ts +2 -2
  556. package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
  557. package/dist/workflows/v3/daemon-run.js +4 -0
  558. package/dist/workflows/v3/daemon-run.js.map +1 -1
  559. package/dist/workflows/v3/dag.d.ts +7 -0
  560. package/dist/workflows/v3/dag.d.ts.map +1 -1
  561. package/dist/workflows/v3/dag.js +69 -8
  562. package/dist/workflows/v3/dag.js.map +1 -1
  563. package/dist/workflows/v3/ephemeral-pool.js +1 -1
  564. package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
  565. package/dist/workflows/v3/event-contract.d.ts +3 -1
  566. package/dist/workflows/v3/event-contract.d.ts.map +1 -1
  567. package/dist/workflows/v3/host.d.ts.map +1 -1
  568. package/dist/workflows/v3/host.js +5 -1
  569. package/dist/workflows/v3/host.js.map +1 -1
  570. package/dist/workflows/v3/journal.d.ts +1 -1
  571. package/dist/workflows/v3/journal.d.ts.map +1 -1
  572. package/dist/workflows/v3/journal.js.map +1 -1
  573. package/dist/workflows/v3/library-materialize.d.ts.map +1 -1
  574. package/dist/workflows/v3/library-materialize.js +9 -1
  575. package/dist/workflows/v3/library-materialize.js.map +1 -1
  576. package/dist/workflows/v3/library-schema.d.ts +3 -1
  577. package/dist/workflows/v3/library-schema.d.ts.map +1 -1
  578. package/dist/workflows/v3/library-schema.js +20 -4
  579. package/dist/workflows/v3/library-schema.js.map +1 -1
  580. package/dist/workflows/v3/library-store.d.ts.map +1 -1
  581. package/dist/workflows/v3/library-store.js +15 -3
  582. package/dist/workflows/v3/library-store.js.map +1 -1
  583. package/dist/workflows/v3/run-envelope.d.ts +16 -16
  584. package/dist/workflows/v3/shared-node-runtime.d.ts +2 -1
  585. package/dist/workflows/v3/shared-node-runtime.d.ts.map +1 -1
  586. package/dist/workflows/v3/shared-node-runtime.js +48 -7
  587. package/dist/workflows/v3/shared-node-runtime.js.map +1 -1
  588. package/package.json +2 -1
  589. package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +0 -1
  590. package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +0 -1
  591. package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +0 -10
  592. package/dist/dashboard-web/chunks/chunk-22WIADUT.js +0 -2
  593. package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +0 -1
  594. package/dist/dashboard-web/chunks/chunk-2W6SCN3M.js +0 -1
  595. package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +0 -1
  596. package/dist/dashboard-web/chunks/chunk-5THX4DI2.js +0 -66
  597. package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +0 -1
  598. package/dist/dashboard-web/chunks/chunk-AGCPF6MT.js +0 -1
  599. package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +0 -1
  600. package/dist/dashboard-web/chunks/chunk-SYC6D5XU.js +0 -1
  601. package/dist/dashboard-web/chunks/connectors-page-VOISXXII.js +0 -1
  602. package/dist/dashboard-web/chunks/feedback-page-RN6HRZMS.js +0 -1
  603. package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +0 -8
  604. package/dist/dashboard-web/chunks/monitoring-page-NKEKVQAP.js +0 -2
  605. package/dist/dashboard-web/chunks/office-page-GVJF73XW.js +0 -1
  606. package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +0 -1
  607. package/dist/dashboard-web/chunks/plugin-page-J3OF5IY4.js +0 -1
  608. package/dist/dashboard-web/chunks/roles-page-WQIRSOLZ.js +0 -1
  609. package/dist/dashboard-web/chunks/schedules-page-J2DEY2X6.js +0 -1
  610. package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +0 -8
  611. package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +0 -2
  612. package/dist/dashboard-web/chunks/skills-page-HGIFR3IU.js +0 -4
  613. package/dist/dashboard-web/chunks/team-federation-page-MR5ZPL4B.js +0 -1
  614. package/dist/dashboard-web/chunks/v3-page-GBR5JWPE.js +0 -94
  615. package/dist/dashboard-web/chunks/whiteboards-page-QAZM4BN3.js +0 -1
  616. package/dist/services/vc-meeting-consumer-profile-store.d.ts +0 -39
  617. package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +0 -1
  618. package/dist/services/vc-meeting-consumer-profile-store.js +0 -191
  619. package/dist/services/vc-meeting-consumer-profile-store.js.map +0 -1
@@ -14,11 +14,18 @@ const zh = {
14
14
  'nav.settings': '全局设置',
15
15
  'nav.botDefaults': 'Bot 配置',
16
16
  'nav.skills': 'Skill 管理',
17
+ 'nav.customization': '自定义',
17
18
  'nav.whiteboards': '白板',
18
19
  'nav.team': '团队协作',
19
20
  'nav.connectors': 'Webhook',
20
21
  'nav.webhookLogs': '调用日志',
21
22
  'nav.feedback': '反馈分析',
23
+ 'nav.workbench': '驾驶舱',
24
+ 'nav.group.overview': '概览',
25
+ 'nav.group.collab': '协作',
26
+ 'nav.group.workforce': '数字员工',
27
+ 'nav.group.analytics': '分析',
28
+ 'nav.group.manage': '管理',
22
29
  'feedback.title': '反馈分析',
23
30
  'feedback.subtitle': '查看已投递回答的覆盖率、最新评价、失败和脱敏明细。',
24
31
  'feedback.delivered': '已投递',
@@ -160,6 +167,12 @@ const zh = {
160
167
  'overview.nextSchedules': '定时任务',
161
168
  'overview.noSessions': '暂无会话。',
162
169
  'overview.noSchedules': '暂无定时任务。',
170
+ 'overview.allClear': '所有会话都在正常运行',
171
+ 'overview.waitingFor': '已等待 {time}',
172
+ 'overview.headingSubtitle': '{bots} 位 Bot 在线 · {needs} 项待处理',
173
+ 'overview.liveSync': '实时同步',
174
+ 'overview.syncOffline': '连接中断,重试中',
175
+ 'overview.upcomingSchedules': '即将执行的定时任务',
163
176
  'monitoring.eyebrow': '运行资源',
164
177
  'monitoring.title': '监控看板',
165
178
  'monitoring.subtitle': '实时查看宿主机、botmux、机器人和会话的 CPU 与内存压力。',
@@ -252,6 +265,22 @@ const zh = {
252
265
  'sessions.title': '会话控制',
253
266
  'sessions.search': '搜索群聊 / 工作目录 / 标题 / ID',
254
267
  'sessions.anyStatus': '全部状态',
268
+ 'sessions.filters.title': '筛选',
269
+ 'sessions.filters.clear': '清除筛选',
270
+ 'sessions.filters.done': '完成',
271
+ 'sessions.more': '更多',
272
+ 'sessions.terminal': '终端',
273
+ 'sessions.cardMenu': '更多操作',
274
+ 'sessions.view.need': '待处理',
275
+ 'sessions.view.work': '进行中',
276
+ 'sessions.view.all': '全部',
277
+ 'sessions.sort': '排序',
278
+ 'sessions.sort.lastMessageAt': '最近消息',
279
+ 'sessions.sort.spawnedAt': '创建时间',
280
+ 'sessions.sort.title': '标题',
281
+ 'sessions.sort.status': '状态',
282
+ 'sessions.takeoverTerminal': '接管终端',
283
+ 'sessions.loadingSessions': '正在加载会话…',
255
284
  'sessions.adoptAny': '来源:全部',
256
285
  'sessions.adoptYes': '来源:外部接入 (/adopt)',
257
286
  'sessions.adoptNo': '来源:飞书原生',
@@ -1255,6 +1284,21 @@ const zh = {
1255
1284
  'schedules.form.cancel': '取消',
1256
1285
  'schedules.form.create': '创建',
1257
1286
  'schedules.form.silentNewTopicConflict': '静默时将延迟创建话题:无通知则自动关闭隐藏会话,首次 botmux send 才创建新话题。',
1287
+ 'schedules.form.templates': '快捷模板',
1288
+ 'schedules.form.nextRun': '下次执行',
1289
+ 'schedules.form.errEmpty': '请输入调度规则',
1290
+ 'schedules.form.errCron': 'cron 表达式格式错误',
1291
+ 'schedules.form.errFormat': '无法识别的格式,支持 cron / 30m / every 2h / 每日9:00',
1292
+ 'schedules.form.errNameRequired': '请输入任务名称',
1293
+ 'schedules.form.errPromptRequired': '请输入执行内容',
1294
+ 'schedules.form.errChatRequired': '请选择目标群聊',
1295
+ 'schedules.form.errRootRequired': '请输入目标话题根消息 ID',
1296
+ 'schedules.form.chatPlaceholder': '选择群聊',
1297
+ 'schedules.form.chatManual': '手动输入 chatId',
1298
+ 'schedules.form.chatBackToSelect': '返回群列表选择',
1299
+ 'schedules.deleteDone': '定时任务已删除',
1300
+ 'schedules.deleteFailed': '删除失败',
1301
+ 'schedules.createDone': '定时任务已创建',
1258
1302
  'settings.title': '全局设置',
1259
1303
  'settings.loading': '正在加载设置…',
1260
1304
  'settings.loadFailed': '设置加载失败',
@@ -1344,11 +1388,6 @@ const zh = {
1344
1388
  'settings.sectionVcMeetingAgent': '会议监听',
1345
1389
  'settings.vcMeetingAgent': '允许本机使用会议监听能力',
1346
1390
  'settings.vcMeetingAgentHelp': '默认开启。控制本机 bot 是否接收新的会议监听事件。关闭后不再恢复监听;已进行中的会议通常自然结束。',
1347
- 'settings.vcMeetingListenerBot': '会议事件接收 Bot',
1348
- 'settings.vcMeetingListenerBotAuto': '按 bot 自身配置',
1349
- 'settings.vcMeetingListenerBotHelp': '指定接收会议事件的 Bot。保存时校验 lark-cli profile 与会议权限,校验通过后启用监听。',
1350
- 'settings.vcMeetingListenerBotDisabled': '保存后自动启用',
1351
- 'settings.vcMeetingListenerBotNoProfile': '需先配置 profile',
1352
1391
  'settings.larkCliReady': 'lark-cli {version} · 版本符合要求',
1353
1392
  'settings.larkCliOutdated': 'lark-cli {version} 版本过低,VC bot 入会需要 ≥ {minimum}',
1354
1393
  'settings.larkCliMissing': '未检测到 lark-cli,VC bot 入会前需安装',
@@ -1357,18 +1396,36 @@ const zh = {
1357
1396
  'settings.feishuLoginClose': '关闭登录二维码',
1358
1397
  'settings.vcProfiles.title': '会议角色预设',
1359
1398
  'settings.vcProfiles.help': '为会议 agent 定义可复用的角色:职责说明、事件过滤、输出方式与权限模板。已激活成员沿用激活时冻结的版本;移除后重新加入才取新版。',
1360
- 'settings.vcProfiles.listenerOwner': '配置所属 Listener',
1361
- 'settings.vcProfiles.configuringBot': '正在配置:{bot}',
1362
- 'settings.vcProfiles.migrationOffer': '检测到旧版生成的会议纪要预设。可升级为全能力默认角色:监听群回复可直接发送;会中文字和语音必须经过受管输出闸门,文本默认审批,语音还需 Listener 语音设施已启用。',
1363
- 'settings.vcProfiles.migrationEnable': '升级并启用全能力默认纪要(保存后生效)',
1364
- 'settings.vcProfiles.noEligibleDefaultAgent': '暂时无法生成默认角色:请至少为一个支持可靠回执的角色执行 Bot 配置默认工作目录。',
1365
- 'settings.vcProfiles.legacyCatalog': '检测到旧版或未完成的会议 Agent 配置;保存角色预设后将切换到多角色模式。',
1399
+ 'settings.vcProfiles.sharedNotice': '这份预设由所有 bot 共享:谁被拉进会议,就由谁执行选中的角色,不需要(也不能)在预设里指定执行 Bot。',
1400
+ 'settings.vcProfiles.noEligibleDefaultAgent': '当前没有任何 bot 能真正执行会议角色:请至少为一个支持可靠回执的 bot 配置默认工作目录(详见下方按 bot 的提示)。',
1366
1401
  'settings.vcProfiles.templates.title': '角色模板库',
1367
1402
  'settings.vcProfiles.templates.builtinBadge': '内置',
1368
- 'settings.vcProfiles.templates.help': '从模板开始,再按你的场景修改 Agent、职责、过滤和输出方式。应用模板只会创建一份可编辑副本,不会与模板持续绑定。',
1403
+ 'settings.vcProfiles.botPolicies.title': ' Bot 的会议开关',
1404
+ 'settings.vcProfiles.botPolicies.help': '「接收会议事件」关掉的 bot 被拉进会也不会开工。「默认角色」从共享目录里给这个 bot 挑一个进会默认跑的角色,留空则跟随全局默认。会中发言按 bot 控制:文字/语音各自可设为直接发送、需审核或禁止。实时语音默认开启(可按 bot 关闭);语音连接按需建立,只在这个 bot 真要发言时才连,不会空挂。',
1405
+ 'settings.vcProfiles.botPolicies.vcEnabled': '接收会议事件',
1406
+ 'settings.vcProfiles.botPolicies.searchPlaceholder': '搜索 bot 名称或 appId…',
1407
+ 'settings.vcProfiles.botPolicies.noMatch': '没有匹配的 bot',
1408
+ 'settings.vcProfiles.botPolicies.defaultProfile': '默认角色',
1409
+ 'settings.vcProfiles.botPolicies.defaultProfileFollowGlobal': '跟随全局默认',
1410
+ 'settings.vcProfiles.botPolicies.vcIneligible': '无飞书连接(apiOnly),收不到会议事件',
1411
+ 'settings.vcProfiles.botPolicies.vcOff': '不接收会议事件',
1412
+ 'settings.vcProfiles.botPolicies.preflight': '配置权限',
1413
+ 'settings.vcProfiles.botPolicies.preflightHelp': '兜底用:VC 权限现在会在 daemon 启动时自动体检(用 bot 自己的凭证,无需人工),缺了会在日志报错并私信 owner。只有当某个 bot 确实缺权限、或需要在开放平台补订阅会议事件(需扫码登录一次)时,才点这个按钮补齐。lark-cli 入会身份已自动补齐,不再需要手动点。',
1414
+ 'settings.vcProfiles.botPolicies.preflightRunning': '配置中…',
1415
+ 'settings.vcProfiles.botPolicies.preflightOk': '✅ 权限与事件订阅已就绪',
1416
+ 'settings.vcProfiles.botPolicies.text': '文字',
1417
+ 'settings.vcProfiles.botPolicies.voice': '语音',
1418
+ 'settings.vcProfiles.botPolicies.default': '默认',
1419
+ 'settings.vcProfiles.botPolicies.allow': '直接发送',
1420
+ 'settings.vcProfiles.botPolicies.approval': '需审核',
1421
+ 'settings.vcProfiles.botPolicies.deny': '禁止',
1422
+ 'settings.vcProfiles.botPolicies.realtimeVoice': '实时语音',
1423
+ 'settings.vcProfiles.botPolicies.effective': '生效:',
1424
+ 'settings.vcProfiles.templates.help': '从模板开始,再按你的场景修改职责、过滤和输出方式。应用模板只会创建一份可编辑副本,不会与模板持续绑定。',
1369
1425
  'settings.vcProfiles.templates.use': '使用此模板',
1370
1426
  'settings.vcProfiles.list.title': '我的预设',
1371
- 'settings.vcProfiles.list.help': '你维护的会议角色。点击卡片查看和编辑详情;勾选默认后,未操作飞书选择卡时会自动启用。',
1427
+ 'settings.vcProfiles.list.help': '所有 bot 共用的会议角色。点击卡片查看和编辑详情;设为默认后,作为「默认行为」在选择卡超时无人操作时自动启用。',
1428
+ 'settings.vcProfiles.defaultSingleHint': '默认角色只能有一个:一个 bot 进会后只跑一个角色。再点一次已选中的即可取消,回到仅监听。',
1372
1429
  'settings.vcProfiles.list.empty': '还没有角色预设。可以新建空白预设,或从下方官方模板开始。',
1373
1430
  'settings.vcProfiles.setDefault': '设为默认',
1374
1431
  'settings.vcProfiles.viewDetails': '查看详情',
@@ -1378,10 +1435,8 @@ const zh = {
1378
1435
  'settings.vcProfiles.close': '关闭',
1379
1436
  'settings.vcProfiles.done': '完成编辑',
1380
1437
  'settings.vcProfiles.needAuth': '会议角色预设需要授权访问后编辑。',
1381
- 'settings.vcProfiles.discardConfirm': '有未保存的修改,切换后将丢弃。确认切换?',
1382
1438
  'settings.vcProfiles.loading': '加载中…',
1383
1439
  'settings.vcProfiles.loadFailed': '加载失败',
1384
- 'settings.vcProfiles.botNotInConfig': '该 bot 不在 bots.json 配置中',
1385
1440
  'settings.vcProfiles.conflict': '配置已被其它端修改;请刷新后重新编辑,避免覆盖他人改动。',
1386
1441
  'settings.vcProfiles.reload': '刷新',
1387
1442
  'settings.vcProfiles.validationFailed': '校验未通过,请检查各字段',
@@ -1391,8 +1446,6 @@ const zh = {
1391
1446
  'settings.vcProfiles.idInvalid': '需以字母或数字开头,可含字母、数字、. _ -,最长 64 字符',
1392
1447
  'settings.vcProfiles.fieldLabel': '名称',
1393
1448
  'settings.vcProfiles.labelHelp': '仅用于展示的名称,可随时修改,例如「会议纪要员」。',
1394
- 'settings.vcProfiles.fieldAgent': '角色执行 Bot',
1395
- 'settings.vcProfiles.agentHelp': '指定由哪个 Bot 执行该角色。\n告警含义——离线:该 Bot 当前没有在线 daemon;未设默认目录:创建会议会话时可能没有合适的工作目录;不支持可靠回执:能运行,但异常恢复时会保守重放。\n同一场会议中,一个角色执行 Bot 最多承担一个角色。',
1396
1449
  'settings.vcProfiles.agentOffline': '离线',
1397
1450
  'settings.vcProfiles.agentNoWorkingDir': '未设默认目录',
1398
1451
  'settings.vcProfiles.agentNoReliableTerminal': 'CLI 不支持可靠回执',
@@ -1429,11 +1482,11 @@ const zh = {
1429
1482
  'settings.vcProfiles.activity.magic_share_ended': '结束共享',
1430
1483
  'settings.vcProfiles.remove': '删除此预设',
1431
1484
  'settings.vcProfiles.add': '+ 新增预设',
1432
- 'settings.vcProfiles.defaultMode': '未操作选择卡时',
1433
- 'settings.vcProfiles.defaultModeHelp': '用户未操作选择卡时采用的组合。该组合需满足:ID 不重复、每个角色执行 Bot 最多承担一个角色、每种会中输出只有一个负责角色、最多一个角色自动回帖;冲突组合会在会议激活时被运行时裁决拒绝并回退为仅监听。',
1485
+ 'settings.vcProfiles.defaultMode': '默认行为',
1486
+ 'settings.vcProfiles.defaultModeHelp': '机器人被拉进会议、且飞书选择卡超时无人操作时采用的默认行为。选「启用所选预设」则自动按上面设为默认的那个角色开工;选「仅监听」则只记录不发言。未设默认角色时,即使选了「启用所选预设」也会退化为仅监听。',
1434
1487
  'settings.vcProfiles.defaultModeListenOnly': '仅监听',
1435
1488
  'settings.vcProfiles.defaultModeAgents': '启用所选预设',
1436
- 'settings.vcProfiles.defaultConsumers': '未操作时启用的预设',
1489
+ 'settings.vcProfiles.defaultConsumers': '默认行为启用的预设',
1437
1490
  'settings.vcProfiles.save': '保存预设',
1438
1491
  'settings.vcProfiles.saving': '保存中…',
1439
1492
  'settings.vcProfiles.saved': '已保存',
@@ -1465,7 +1518,19 @@ const zh = {
1465
1518
  'settings.scheduleTimeZone': '时区',
1466
1519
  'settings.scheduleTimeZoneHost': '跟随主机({host})',
1467
1520
  'settings.scheduleTimeZoneHelp': '定时任务触发和显示所用时区。留空跟随主机({host});当前生效:{effective}。',
1521
+ 'settings.sectionAutostart': '开机自启',
1522
+ 'settings.autostartToggle': '自动启动 botmux 后台服务',
1523
+ 'settings.autostartHelp': '为当前用户管理系统自启;不会启动或停止当前正在运行的服务。',
1524
+ 'settings.autostartLoginRequired': '登录 Dashboard 后可管理开机自启。',
1525
+ 'settings.autostartLoading': '正在读取开机自启状态…',
1526
+ 'settings.autostartLoadFailed': '读取开机自启状态失败',
1527
+ 'settings.autostartRetry': '重试',
1528
+ 'settings.autostartUnsupported': '当前操作系统不支持 botmux 开机自启。',
1529
+ 'settings.autostartSaving': '正在更新开机自启…',
1530
+ 'settings.autostartSaved': '开机自启已更新。',
1531
+ 'settings.autostartSaveFailed': '更新开机自启失败。',
1468
1532
  'settings.sectionMaintenance': '自动维护',
1533
+ 'settings.sectionUpdate': '版本更新',
1469
1534
  'settings.autoUpdate': '自动更新',
1470
1535
  'settings.autoUpdateHelp': '默认关闭。按当前安装方式(npm / pnpm / Bun)更新全局版本;只更新安装包,不自动重启。',
1471
1536
  'settings.autoRestart': '自动重启',
@@ -1554,6 +1619,14 @@ const zh = {
1554
1619
  'update.noRestartHint': '更新完成。稍后请手动重启(botmux restart)以应用新版本。',
1555
1620
  'update.confirmPlainRestart': '重启 botmux?所有会话会冷恢复,仪表盘会短暂断开并自动重连。',
1556
1621
  'update.restarting': '正在重启 botmux,等待重连…',
1622
+ 'update.confirmMultiInstallTitle': '多个安装',
1623
+ 'update.confirmUpdateTitle': '更新 botmux',
1624
+ 'update.confirmRestartTitle': '重启 botmux',
1625
+ 'update.btnContinue': '继续',
1626
+ 'update.btnCancel': '取消',
1627
+ 'update.btnRunUpdate': '执行更新',
1628
+ 'update.btnRestartNow': '立即重启',
1629
+ 'update.btnLater': '稍后',
1557
1630
  'update.restartSlow': '重启耗时较长,请稍后手动刷新页面。',
1558
1631
  'update.restartFailed': '重启失败:{detail}',
1559
1632
  'update.bootstrapRequired': '新版本已安装,但当前运行的 daemon 还是升级前的旧进程,缺少信号自愈协议,网页无法安全重启它们。请在电脑前的终端里,确认所有会话空闲后运行:botmux restart --bootstrap-shutdown-protocol --yes 完成这一次性升级。',
@@ -1767,6 +1840,8 @@ const zh = {
1767
1840
  'skills.removeInUse': 'Skill "{skill}" 仍被以下配置引用:{refs}。删除只会移除 registry 文件,不会自动清理引用。继续删除?',
1768
1841
  'skills.saved': '已保存',
1769
1842
  'skills.failed': '失败',
1843
+ 'skills.installSuccess': '已安装 {skill}',
1844
+ 'skills.assignToBot': '分配给 Bot',
1770
1845
  'skills.jobRunning': '处理中...',
1771
1846
  'skills.refresh': '刷新',
1772
1847
  'skills.tabPacks': '专项包',
@@ -1884,6 +1959,10 @@ const zh = {
1884
1959
  'botDefaults.agentMissingHint': '当前 daemon PATH 找不到 {command};保存后新会话无法启动,请先安装或修正路径。',
1885
1960
  'botDefaults.agentModel': '模型',
1886
1961
  'botDefaults.agentModelPlaceholder': '留空使用该 CLI 默认模型',
1962
+ 'botDefaults.modelPickerDefault': '跟随 CLI 默认',
1963
+ 'botDefaults.modelPickerCustom': '自定义模型…',
1964
+ 'botDefaults.modelPickerBack': '返回选择',
1965
+ 'botDefaults.modelPickerDetected': '已探测 {count} 个可用模型',
1887
1966
  'botDefaults.agentHelp': '模型修改只影响新会话;切换 CLI、Runtime 或 Wrapper 会立即关闭仍使用旧启动身份的活跃会话,避免后续恢复到错误的 CLI。',
1888
1967
  'botDefaults.agentReasoningEffort': '思考强度',
1889
1968
  'botDefaults.agentReasoningEffortHelp': '新会话默认使用的思考强度。保存后不会改变已经创建的会话。',
@@ -1891,6 +1970,12 @@ const zh = {
1891
1970
  'botDefaults.agentTurnTimeoutHelp': '仅 dsh CLI 生效:runner 等待单轮对话结束的上限;超时会中止本轮并报错。留空使用默认 10 分钟。工具链长或模型偏慢时可调大(如 30)。保存后在下一次会话拉起时生效。',
1892
1971
  'botDefaults.agentTurnTimeoutPlaceholder': '留空 = 默认 10 分钟',
1893
1972
  'botDefaults.agentTurnTimeoutInvalid': '请输入正数分钟;留空表示用默认 10 分钟。超时上限约 35791 分钟。',
1973
+ 'botDefaults.dshRuntimeTitle': 'dsh 运行时',
1974
+ 'botDefaults.dshRuntimeHelp': '选择 dsh 的运行形态:Official dsh 走自研 JSON-RPC runner(headless,结构化事件);dsh-tui 走交互式 TUI(PTY 驱动,同 claude-code 路线)。切换后下一次会话拉起时生效。',
1975
+ 'botDefaults.dshRuntimeOfficial': 'Official dsh',
1976
+ 'botDefaults.dshRuntimeTui': 'dsh-tui',
1977
+ 'botDefaults.dshRuntimeOfficialNote': '使用 daemon PATH 中的 dsh-jsonrpc-agent,走自研 JSON-RPC runner(headless)。',
1978
+ 'botDefaults.dshRuntimeTuiNote': '使用 daemon PATH 中的 dsh-tui,走交互式 Ink TUI(PTY 驱动)。需安装 @deepseek-harness-tui/dsh-tui。',
1894
1979
  'botDefaults.agentReasoningEffortDefault': '跟随 CLI 默认值',
1895
1980
  'botDefaults.agentReasoningEffortDefaultCodex': '跟随 Codex 默认值',
1896
1981
  'botDefaults.agentReasoningEffortDefaultGrok': '跟随 Grok 默认值',
@@ -2078,7 +2163,14 @@ const zh = {
2078
2163
  'botDefaults.sgTagUnauthorized': '未授权(建群不进分组,仅头像标识)',
2079
2164
  'botDefaults.sgTagAuthStart': '一键授权',
2080
2165
  'botDefaults.sgTagAuthWaiting': '等待授权完成…',
2081
- 'botDefaults.sgTagAuthTimeout': '等待超时:若已在新页面完成授权,刷新本页即可;否则请重试',
2166
+ 'botDefaults.sgTagAuthTitle': '授权飞书标签',
2167
+ 'botDefaults.sgTagAuthHint': '点击下面的按钮,在飞书页面确认授权。如果 BotMux 与浏览器在同一台电脑,确认后会自动完成授权。如果 BotMux 运行在远程虚拟机上(如通过中心化平台 m-* 子域访问),浏览器会因无法访问本机地址 127.0.0.1:9768 而显示“无法访问”;此时请复制地址栏中的完整链接并粘贴到下方。',
2168
+ 'botDefaults.sgTagAuthOpen': '跳转飞书授权',
2169
+ 'botDefaults.sgTagAuthPasteLabel': '请把点击授权后的完整链接粘贴在这里',
2170
+ 'botDefaults.sgTagAuthCancel': '取消',
2171
+ 'botDefaults.sgTagAuthComplete': '完成授权',
2172
+ 'botDefaults.sgTagAuthSubmitting': '正在完成授权…',
2173
+ 'botDefaults.sgTagAuthNotConfirmed': '换取凭证成功,但未确认到标签权限(可能未授予 feed-group 权限,或状态刷新失败)。请重试,或改用「群标签」模式。',
2082
2174
  'botDefaults.p2pHelp': '私聊会话方式:chat(默认)=整段私聊共享一个连续会话;thread=每条顶层消息独立会话;group=每条顶层消息自动创建一个「你+bot」专属会话群并把会话落在群里(群名 AI 自动总结、回群续聊自动恢复上下文)。改动立即生效。',
2083
2175
  'botDefaults.regularGroupMode': '普通群会话模式',
2084
2176
  'botDefaults.regularGroupModeChat': 'chat(扁平连续单聊会话)',
@@ -2417,11 +2509,18 @@ const en = {
2417
2509
  'nav.settings': 'Global Settings',
2418
2510
  'nav.botDefaults': 'Bot Config',
2419
2511
  'nav.skills': 'Skill Management',
2512
+ 'nav.customization': 'Customization',
2420
2513
  'nav.whiteboards': 'Whiteboards',
2421
2514
  'nav.team': 'Team Collaboration',
2422
2515
  'nav.connectors': 'Webhook',
2423
2516
  'nav.webhookLogs': 'Invocation Logs',
2424
2517
  'nav.feedback': 'Feedback',
2518
+ 'nav.workbench': 'Cockpit',
2519
+ 'nav.group.overview': 'Overview',
2520
+ 'nav.group.collab': 'Collaboration',
2521
+ 'nav.group.workforce': 'Digital Workforce',
2522
+ 'nav.group.analytics': 'Analytics',
2523
+ 'nav.group.manage': 'Management',
2425
2524
  'feedback.title': 'Feedback analytics',
2426
2525
  'feedback.subtitle': 'Review delivery coverage, latest ratings, failures, and redacted drill-down data.',
2427
2526
  'feedback.delivered': 'Delivered',
@@ -2563,6 +2662,12 @@ const en = {
2563
2662
  'overview.nextSchedules': 'Schedules',
2564
2663
  'overview.noSessions': 'No sessions yet.',
2565
2664
  'overview.noSchedules': 'No schedules yet.',
2665
+ 'overview.allClear': 'All sessions are running smoothly',
2666
+ 'overview.waitingFor': 'Waiting {time}',
2667
+ 'overview.headingSubtitle': '{bots} bots online · {needs} pending',
2668
+ 'overview.liveSync': 'Live sync',
2669
+ 'overview.syncOffline': 'Reconnecting',
2670
+ 'overview.upcomingSchedules': 'Upcoming Schedules',
2566
2671
  'monitoring.eyebrow': 'Runtime resources',
2567
2672
  'monitoring.title': 'Monitoring Board',
2568
2673
  'monitoring.subtitle': 'Watch host, botmux, bot, and session CPU and memory pressure in real time.',
@@ -2655,6 +2760,22 @@ const en = {
2655
2760
  'sessions.title': 'Session Control',
2656
2761
  'sessions.search': 'Search chat / working dir / title / IDs',
2657
2762
  'sessions.anyStatus': 'Any status',
2763
+ 'sessions.filters.title': 'Filters',
2764
+ 'sessions.filters.clear': 'Clear filters',
2765
+ 'sessions.filters.done': 'Done',
2766
+ 'sessions.more': 'More',
2767
+ 'sessions.terminal': 'Terminal',
2768
+ 'sessions.cardMenu': 'More actions',
2769
+ 'sessions.view.need': 'Needs attention',
2770
+ 'sessions.view.work': 'In progress',
2771
+ 'sessions.view.all': 'All',
2772
+ 'sessions.sort': 'Sort',
2773
+ 'sessions.sort.lastMessageAt': 'Recent activity',
2774
+ 'sessions.sort.spawnedAt': 'Created',
2775
+ 'sessions.sort.title': 'Title',
2776
+ 'sessions.sort.status': 'Status',
2777
+ 'sessions.takeoverTerminal': 'Take over terminal',
2778
+ 'sessions.loadingSessions': 'Loading sessions…',
2658
2779
  'sessions.adoptAny': 'Source: all',
2659
2780
  'sessions.adoptYes': 'Source: external (/adopt)',
2660
2781
  'sessions.adoptNo': 'Source: Feishu-native',
@@ -3658,6 +3779,21 @@ const en = {
3658
3779
  'schedules.form.cancel': 'Cancel',
3659
3780
  'schedules.form.create': 'Create',
3660
3781
  'schedules.form.silentNewTopicConflict': 'Silent mode defers the topic: no alert closes the hidden session; the first botmux send creates the topic.',
3782
+ 'schedules.form.templates': 'Templates',
3783
+ 'schedules.form.nextRun': 'Next run',
3784
+ 'schedules.form.errEmpty': 'Enter a schedule',
3785
+ 'schedules.form.errCron': 'Invalid cron expression',
3786
+ 'schedules.form.errFormat': 'Unrecognized format — use cron / 30m / every 2h / 每日9:00',
3787
+ 'schedules.form.errNameRequired': 'Name is required',
3788
+ 'schedules.form.errPromptRequired': 'Prompt is required',
3789
+ 'schedules.form.errChatRequired': 'Select a target group',
3790
+ 'schedules.form.errRootRequired': 'Topic root message ID is required',
3791
+ 'schedules.form.chatPlaceholder': 'Select a group',
3792
+ 'schedules.form.chatManual': 'Enter chatId manually',
3793
+ 'schedules.form.chatBackToSelect': 'Back to group list',
3794
+ 'schedules.deleteDone': 'Schedule deleted',
3795
+ 'schedules.deleteFailed': 'Delete failed',
3796
+ 'schedules.createDone': 'Schedule created',
3661
3797
  'settings.title': 'Global Settings',
3662
3798
  'settings.loading': 'Loading settings…',
3663
3799
  'settings.loadFailed': 'Failed to load settings',
@@ -3747,11 +3883,6 @@ const en = {
3747
3883
  'settings.sectionVcMeetingAgent': 'Meeting Listener',
3748
3884
  'settings.vcMeetingAgent': 'Allow meeting listener features on this machine',
3749
3885
  'settings.vcMeetingAgentHelp': 'On by default. Controls whether bots on this host accept new meeting listener events. Off also skips listener restore; running meetings usually finish naturally.',
3750
- 'settings.vcMeetingListenerBot': 'Meeting event receiver Bot',
3751
- 'settings.vcMeetingListenerBotAuto': 'Follow each bot config',
3752
- 'settings.vcMeetingListenerBotHelp': 'Chooses the Bot that receives meeting events. Saving validates its lark-cli profile and meeting scopes, then enables the listener.',
3753
- 'settings.vcMeetingListenerBotDisabled': 'auto-enable on save',
3754
- 'settings.vcMeetingListenerBotNoProfile': 'profile required first',
3755
3886
  'settings.larkCliReady': 'lark-cli {version} · version requirement met',
3756
3887
  'settings.larkCliOutdated': 'lark-cli {version} is too old; VC bot joining requires ≥ {minimum}',
3757
3888
  'settings.larkCliMissing': 'lark-cli was not detected; install it before using VC bot joining',
@@ -3760,18 +3891,36 @@ const en = {
3760
3891
  'settings.feishuLoginClose': 'Close login QR code',
3761
3892
  'settings.vcProfiles.title': 'Meeting role presets',
3762
3893
  'settings.vcProfiles.help': 'Reusable roles for meeting agents: responsibility prompt, event filter, output mode, and permission template. Activated members keep the version frozen at activation; remove and re-add to pick up a new version.',
3763
- 'settings.vcProfiles.listenerOwner': 'Listener to configure',
3764
- 'settings.vcProfiles.configuringBot': 'Configuring: {bot}',
3765
- 'settings.vcProfiles.migrationOffer': 'A meeting-minutes preset generated by an earlier version was found. Upgrade it to the full-capability default: listener-thread replies can be sent directly; in-meeting text and voice must pass through the managed output gate, text requires approval by default, and voice also requires enabled Listener voice facilities.',
3766
- 'settings.vcProfiles.migrationEnable': 'Upgrade and enable full-capability minutes (save to apply)',
3767
- 'settings.vcProfiles.noEligibleDefaultAgent': 'A default role cannot be generated yet. Configure a default working directory for at least one role execution Bot whose CLI supports reliable turn receipts.',
3768
- 'settings.vcProfiles.legacyCatalog': 'A legacy or partial meeting-Agent policy was found. Saving role presets switches it to multi-role mode.',
3894
+ 'settings.vcProfiles.sharedNotice': 'These presets are shared by every bot: whichever bot is pulled into a meeting runs the selected role, so a preset neither needs nor can name an execution Bot.',
3895
+ 'settings.vcProfiles.noEligibleDefaultAgent': 'No bot can execute a meeting role yet. Configure a default working directory for at least one bot whose CLI supports reliable turn receipts (see the per-bot notes below).',
3769
3896
  'settings.vcProfiles.templates.title': 'Role template library',
3770
3897
  'settings.vcProfiles.templates.builtinBadge': 'Built in',
3771
- 'settings.vcProfiles.templates.help': 'Start with a template, then customize its Agent, responsibilities, filters, and output. Applying a template creates an editable copy with no ongoing link to the source.',
3898
+ 'settings.vcProfiles.botPolicies.title': 'Per-bot meeting switches',
3899
+ 'settings.vcProfiles.botPolicies.help': 'A bot with "Receive meeting events" off stays idle even when pulled into a meeting. "Default role" picks a role from the shared catalog for this bot to run by default on join; blank follows the global default. In-meeting speech is per bot: text/voice can each send directly, require review, or be denied. Realtime voice is on by default (can be turned off per bot); the voice connection is opened on demand — only when this bot actually needs to speak, never left idle.',
3900
+ 'settings.vcProfiles.botPolicies.vcEnabled': 'Receive meeting events',
3901
+ 'settings.vcProfiles.botPolicies.searchPlaceholder': 'Search bot name or appId…',
3902
+ 'settings.vcProfiles.botPolicies.noMatch': 'No matching bot',
3903
+ 'settings.vcProfiles.botPolicies.defaultProfile': 'Default role',
3904
+ 'settings.vcProfiles.botPolicies.defaultProfileFollowGlobal': 'Follow global default',
3905
+ 'settings.vcProfiles.botPolicies.vcIneligible': 'no Feishu connection (apiOnly); cannot receive meeting events',
3906
+ 'settings.vcProfiles.botPolicies.vcOff': 'not receiving meeting events',
3907
+ 'settings.vcProfiles.botPolicies.preflight': 'Grant permissions',
3908
+ 'settings.vcProfiles.botPolicies.preflightHelp': 'Fallback only: VC scopes are now auto-checked at daemon startup (using the bot\'s own credentials, no human needed) — missing ones are logged as errors and DM\'d to the owner. Click this only when a bot is actually missing scopes, or to subscribe meeting events on the Open Platform (needs a one-time QR login). The lark-cli join profile is now filled in automatically and no longer needs a manual click.',
3909
+ 'settings.vcProfiles.botPolicies.preflightRunning': 'Configuring…',
3910
+ 'settings.vcProfiles.botPolicies.preflightOk': '✅ Scopes and event subscriptions ready',
3911
+ 'settings.vcProfiles.botPolicies.text': 'Text',
3912
+ 'settings.vcProfiles.botPolicies.voice': 'Voice',
3913
+ 'settings.vcProfiles.botPolicies.default': 'Default',
3914
+ 'settings.vcProfiles.botPolicies.allow': 'Send directly',
3915
+ 'settings.vcProfiles.botPolicies.approval': 'Needs review',
3916
+ 'settings.vcProfiles.botPolicies.deny': 'Denied',
3917
+ 'settings.vcProfiles.botPolicies.realtimeVoice': 'Realtime voice',
3918
+ 'settings.vcProfiles.botPolicies.effective': 'Effective:',
3919
+ 'settings.vcProfiles.templates.help': 'Start with a template, then customize its responsibilities, filters, and output. Applying a template creates an editable copy with no ongoing link to the source.',
3772
3920
  'settings.vcProfiles.templates.use': 'Use template',
3773
3921
  'settings.vcProfiles.list.title': 'My presets',
3774
- 'settings.vcProfiles.list.help': 'Meeting roles you maintain. Open a card to view or edit it; mark it as default to enable it when the Feishu selection card is not used.',
3922
+ 'settings.vcProfiles.list.help': 'Meeting roles shared by every bot. Open a card to view or edit it; mark one as default so it becomes the "Default behavior" auto-enabled when the selection card times out with no action.',
3923
+ 'settings.vcProfiles.defaultSingleHint': 'Only one default role: a bot runs a single role per meeting. Click the selected one again to clear it and fall back to listen-only.',
3775
3924
  'settings.vcProfiles.list.empty': 'No role presets yet. Create a blank preset or start from an official template below.',
3776
3925
  'settings.vcProfiles.setDefault': 'Use by default',
3777
3926
  'settings.vcProfiles.viewDetails': 'View details',
@@ -3781,10 +3930,8 @@ const en = {
3781
3930
  'settings.vcProfiles.close': 'Close',
3782
3931
  'settings.vcProfiles.done': 'Done editing',
3783
3932
  'settings.vcProfiles.needAuth': 'Meeting role presets require authorized access to edit.',
3784
- 'settings.vcProfiles.discardConfirm': 'You have unsaved changes; switching will discard them. Continue?',
3785
3933
  'settings.vcProfiles.loading': 'Loading…',
3786
3934
  'settings.vcProfiles.loadFailed': 'Load failed',
3787
- 'settings.vcProfiles.botNotInConfig': 'This bot is not present in bots.json',
3788
3935
  'settings.vcProfiles.conflict': 'The config changed elsewhere; reload before editing so you do not overwrite it.',
3789
3936
  'settings.vcProfiles.reload': 'Reload',
3790
3937
  'settings.vcProfiles.validationFailed': 'Validation failed, check the fields',
@@ -3794,8 +3941,6 @@ const en = {
3794
3941
  'settings.vcProfiles.idInvalid': 'Must start with a letter/digit; letters, digits, . _ - only; max 64 chars',
3795
3942
  'settings.vcProfiles.fieldLabel': 'Name',
3796
3943
  'settings.vcProfiles.labelHelp': 'Display-only name, editable anytime, e.g. “Minutes taker”.',
3797
- 'settings.vcProfiles.fieldAgent': 'Role execution Bot',
3798
- 'settings.vcProfiles.agentHelp': 'Choose the Bot that executes this role.\nWarnings — offline: no live daemon for this Bot; no default working dir: meeting sessions may lack a suitable directory; no reliable receipts: it runs, but failure recovery replays conservatively.\nEach role execution Bot can run at most one role in a meeting.',
3799
3944
  'settings.vcProfiles.agentOffline': 'offline',
3800
3945
  'settings.vcProfiles.agentNoWorkingDir': 'no default working dir',
3801
3946
  'settings.vcProfiles.agentNoReliableTerminal': 'CLI lacks reliable turn receipts',
@@ -3832,11 +3977,11 @@ const en = {
3832
3977
  'settings.vcProfiles.activity.magic_share_ended': 'Share ended',
3833
3978
  'settings.vcProfiles.remove': 'Delete this preset',
3834
3979
  'settings.vcProfiles.add': '+ Add preset',
3835
- 'settings.vcProfiles.defaultMode': 'When no selection is made',
3836
- 'settings.vcProfiles.defaultModeHelp': 'This combination is used when the user takes no action on the selection card. It must have unique IDs, at most one role per role execution Bot, a single owner per in-meeting output kind, and at most one auto-posting role; conflicts are rejected by the runtime resolver at activation and fail closed to listen-only.',
3980
+ 'settings.vcProfiles.defaultMode': 'Default behavior',
3981
+ 'settings.vcProfiles.defaultModeHelp': 'The default behavior used when a bot joins a meeting and the Feishu selection card times out with no action. "Enable selected presets" starts the role marked as default above; "Listen only" records without speaking. With no default role set, "Enable selected presets" also falls back to listen-only.',
3837
3982
  'settings.vcProfiles.defaultModeListenOnly': 'Listen only',
3838
3983
  'settings.vcProfiles.defaultModeAgents': 'Enable selected presets',
3839
- 'settings.vcProfiles.defaultConsumers': 'Presets enabled when no selection is made',
3984
+ 'settings.vcProfiles.defaultConsumers': 'Presets for the default behavior',
3840
3985
  'settings.vcProfiles.save': 'Save presets',
3841
3986
  'settings.vcProfiles.saving': 'Saving…',
3842
3987
  'settings.vcProfiles.saved': 'Saved',
@@ -3868,7 +4013,19 @@ const en = {
3868
4013
  'settings.scheduleTimeZone': 'Timezone',
3869
4014
  'settings.scheduleTimeZoneHost': 'Follow host ({host})',
3870
4015
  'settings.scheduleTimeZoneHelp': 'Timezone for scheduled-task firing and display. Empty follows host zone ({host}); effective: {effective}.',
4016
+ 'settings.sectionAutostart': 'Auto-start',
4017
+ 'settings.autostartToggle': 'Start the botmux background service automatically',
4018
+ 'settings.autostartHelp': 'Manages auto-start for the current user. It does not start or stop the currently running service.',
4019
+ 'settings.autostartLoginRequired': 'Sign in to the Dashboard to manage auto-start.',
4020
+ 'settings.autostartLoading': 'Reading auto-start status…',
4021
+ 'settings.autostartLoadFailed': 'Failed to read auto-start status',
4022
+ 'settings.autostartRetry': 'Retry',
4023
+ 'settings.autostartUnsupported': 'This operating system does not support botmux auto-start.',
4024
+ 'settings.autostartSaving': 'Updating auto-start…',
4025
+ 'settings.autostartSaved': 'Auto-start updated.',
4026
+ 'settings.autostartSaveFailed': 'Failed to update auto-start.',
3871
4027
  'settings.sectionMaintenance': 'Auto Maintenance',
4028
+ 'settings.sectionUpdate': 'Version Update',
3872
4029
  'settings.autoUpdate': 'Auto update',
3873
4030
  'settings.autoUpdateHelp': 'Off by default. Updates the global install with its owning package manager (npm/pnpm/Bun). It updates the package only; no restart.',
3874
4031
  'settings.autoRestart': 'Auto restart',
@@ -3957,6 +4114,14 @@ const en = {
3957
4114
  'update.noRestartHint': 'Update installed. Restart later (botmux restart) to apply the new version.',
3958
4115
  'update.confirmPlainRestart': 'Restart botmux? Sessions cold-resume; the dashboard briefly disconnects and reconnects.',
3959
4116
  'update.restarting': 'Restarting botmux, waiting to reconnect…',
4117
+ 'update.confirmMultiInstallTitle': 'Multiple installs',
4118
+ 'update.confirmUpdateTitle': 'Update botmux',
4119
+ 'update.confirmRestartTitle': 'Restart botmux',
4120
+ 'update.btnContinue': 'Continue',
4121
+ 'update.btnCancel': 'Cancel',
4122
+ 'update.btnRunUpdate': 'Run update',
4123
+ 'update.btnRestartNow': 'Restart now',
4124
+ 'update.btnLater': 'Later',
3960
4125
  'update.restartSlow': 'Restart is taking a while; please refresh the page manually.',
3961
4126
  'update.restartFailed': 'Restart failed: {detail}',
3962
4127
  'update.bootstrapRequired': 'The new version is installed, but the currently running daemons predate the signal-death autorestart protocol, so the dashboard cannot safely restart them. At the machine, confirm every session is idle and run in a terminal: botmux restart --bootstrap-shutdown-protocol --yes to complete this one-time upgrade.',
@@ -4170,6 +4335,8 @@ const en = {
4170
4335
  'skills.removeInUse': 'Skill "{skill}" is still referenced by: {refs}. Removing it deletes the registry package but does not automatically clean references. Continue?',
4171
4336
  'skills.saved': 'Saved',
4172
4337
  'skills.failed': 'Failed',
4338
+ 'skills.installSuccess': 'Installed {skill}',
4339
+ 'skills.assignToBot': 'Assign to Bot',
4173
4340
  'skills.jobRunning': 'Working...',
4174
4341
  'skills.refresh': 'Refresh',
4175
4342
  'skills.tabPacks': 'Skill Packs',
@@ -4287,6 +4454,10 @@ const en = {
4287
4454
  'botDefaults.agentMissingHint': '{command} is not on the daemon PATH. New sessions cannot start until it is installed or the path is fixed.',
4288
4455
  'botDefaults.agentModel': 'Model',
4289
4456
  'botDefaults.agentModelPlaceholder': 'Leave empty for the CLI default model',
4457
+ 'botDefaults.modelPickerDefault': 'Follow CLI default',
4458
+ 'botDefaults.modelPickerCustom': 'Custom model…',
4459
+ 'botDefaults.modelPickerBack': 'Back to list',
4460
+ 'botDefaults.modelPickerDetected': 'Detected {count} available models',
4290
4461
  'botDefaults.agentHelp': 'Model changes affect new sessions only. Switching CLI, runtime, or wrapper immediately closes active sessions using the old launch identity so they cannot resume with the wrong CLI.',
4291
4462
  'botDefaults.agentReasoningEffort': 'Reasoning effort',
4292
4463
  'botDefaults.agentReasoningEffortHelp': 'Default reasoning effort for new sessions. Existing sessions are not changed.',
@@ -4294,6 +4465,12 @@ const en = {
4294
4465
  'botDefaults.agentTurnTimeoutHelp': 'dsh CLI only: the maximum time the runner waits for one turn to finish; exceeding it aborts the turn with an error. Leave empty for the 10-minute default. Raise it (e.g. 30) for long tool chains or slower models. Takes effect on the next session spawn.',
4295
4466
  'botDefaults.agentTurnTimeoutPlaceholder': 'Empty = 10-minute default',
4296
4467
  'botDefaults.agentTurnTimeoutInvalid': 'Enter a positive number of minutes; leave empty for the 10-minute default. Max ≈ 35791 minutes.',
4468
+ 'botDefaults.dshRuntimeTitle': 'dsh Runtime',
4469
+ 'botDefaults.dshRuntimeHelp': 'Choose the dsh runtime variant: Official dsh uses the built-in JSON-RPC runner (headless, structured events); dsh-tui uses the interactive TUI (PTY-driven, same approach as claude-code). Takes effect on the next session spawn.',
4470
+ 'botDefaults.dshRuntimeOfficial': 'Official dsh',
4471
+ 'botDefaults.dshRuntimeTui': 'dsh-tui',
4472
+ 'botDefaults.dshRuntimeOfficialNote': 'Uses dsh-jsonrpc-agent from the daemon PATH via the built-in JSON-RPC runner (headless).',
4473
+ 'botDefaults.dshRuntimeTuiNote': 'Uses dsh-tui from the daemon PATH, driven as an interactive Ink TUI (PTY). Requires @deepseek-harness-tui/dsh-tui.',
4297
4474
  'botDefaults.agentReasoningEffortDefault': 'Use the CLI default',
4298
4475
  'botDefaults.agentReasoningEffortDefaultCodex': 'Use the Codex default',
4299
4476
  'botDefaults.agentReasoningEffortDefaultGrok': 'Use the Grok default',
@@ -4481,7 +4658,14 @@ const en = {
4481
4658
  'botDefaults.sgTagUnauthorized': 'Not authorized (avatar marker only)',
4482
4659
  'botDefaults.sgTagAuthStart': 'Authorize',
4483
4660
  'botDefaults.sgTagAuthWaiting': 'Waiting for authorization…',
4484
- 'botDefaults.sgTagAuthTimeout': 'Timed out — if you finished authorizing in the new tab, just refresh this page; otherwise retry',
4661
+ 'botDefaults.sgTagAuthTitle': 'Authorize Feishu tags',
4662
+ 'botDefaults.sgTagAuthHint': 'Click the button below and confirm authorization on the Feishu page. If BotMux and your browser are on the same machine, it completes automatically. If BotMux runs on a remote VM (e.g. accessed via the centralized platform m-* subdomain), the browser can\'t reach the loopback address 127.0.0.1:9768 and will show “can\'t be reached”; in that case copy the full URL from the address bar and paste it below.',
4663
+ 'botDefaults.sgTagAuthOpen': 'Open Feishu authorization',
4664
+ 'botDefaults.sgTagAuthPasteLabel': 'Paste the full URL after authorizing here',
4665
+ 'botDefaults.sgTagAuthCancel': 'Cancel',
4666
+ 'botDefaults.sgTagAuthComplete': 'Complete authorization',
4667
+ 'botDefaults.sgTagAuthSubmitting': 'Completing…',
4668
+ 'botDefaults.sgTagAuthNotConfirmed': 'Token exchange succeeded, but the tag permission was not confirmed (feed-group scope may not have been granted, or the status refresh failed). Please retry, or switch to chat-tag mode.',
4485
4669
  'botDefaults.p2pHelp': 'Private chat session mode: chat (default) shares one continuous session; thread creates one session per top-level message; group births a dedicated user+bot group per top-level message and hosts the session there (AI-generated group name, returning to the group resumes the session). Applies immediately.',
4486
4670
  'botDefaults.regularGroupMode': 'Regular group session mode',
4487
4671
  'botDefaults.regularGroupModeChat': 'chat (flat continuous session)',