botmux 3.4.2 → 3.5.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 (378) hide show
  1. package/README.en.md +10 -7
  2. package/README.md +11 -6
  3. package/dist/adapters/backend/herdr-backend.d.ts +43 -6
  4. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  5. package/dist/adapters/backend/herdr-backend.js +362 -28
  6. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  7. package/dist/adapters/backend/reproduce-command.d.ts +39 -0
  8. package/dist/adapters/backend/reproduce-command.d.ts.map +1 -0
  9. package/dist/adapters/backend/reproduce-command.js +63 -0
  10. package/dist/adapters/backend/reproduce-command.js.map +1 -0
  11. package/dist/adapters/backend/session-backend-selector.d.ts +10 -1
  12. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
  13. package/dist/adapters/backend/session-backend-selector.js +73 -4
  14. package/dist/adapters/backend/session-backend-selector.js.map +1 -1
  15. package/dist/adapters/backend/types.d.ts +16 -0
  16. package/dist/adapters/backend/types.d.ts.map +1 -1
  17. package/dist/adapters/backend/types.js.map +1 -1
  18. package/dist/adapters/cli/pi-initial-prompt-extension.d.ts +27 -0
  19. package/dist/adapters/cli/pi-initial-prompt-extension.d.ts.map +1 -0
  20. package/dist/adapters/cli/pi-initial-prompt-extension.js +38 -0
  21. package/dist/adapters/cli/pi-initial-prompt-extension.js.map +1 -0
  22. package/dist/adapters/cli/pi-initial-prompt.d.ts +21 -0
  23. package/dist/adapters/cli/pi-initial-prompt.d.ts.map +1 -0
  24. package/dist/adapters/cli/pi-initial-prompt.js +59 -0
  25. package/dist/adapters/cli/pi-initial-prompt.js.map +1 -0
  26. package/dist/adapters/cli/pi.d.ts.map +1 -1
  27. package/dist/adapters/cli/pi.js +15 -4
  28. package/dist/adapters/cli/pi.js.map +1 -1
  29. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  30. package/dist/adapters/cli/read-isolation.js +5 -0
  31. package/dist/adapters/cli/read-isolation.js.map +1 -1
  32. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  33. package/dist/adapters/cli/shared-hints.js +8 -0
  34. package/dist/adapters/cli/shared-hints.js.map +1 -1
  35. package/dist/adapters/cli/traex.d.ts.map +1 -1
  36. package/dist/adapters/cli/traex.js +5 -0
  37. package/dist/adapters/cli/traex.js.map +1 -1
  38. package/dist/adapters/cli/types.d.ts +23 -3
  39. package/dist/adapters/cli/types.d.ts.map +1 -1
  40. package/dist/adapters/hook-installer.d.ts +7 -0
  41. package/dist/adapters/hook-installer.d.ts.map +1 -1
  42. package/dist/adapters/hook-installer.js +56 -0
  43. package/dist/adapters/hook-installer.js.map +1 -1
  44. package/dist/bot-registry.d.ts +13 -0
  45. package/dist/bot-registry.d.ts.map +1 -1
  46. package/dist/bot-registry.js +118 -2
  47. package/dist/bot-registry.js.map +1 -1
  48. package/dist/cli/capabilities.d.ts +24 -0
  49. package/dist/cli/capabilities.d.ts.map +1 -0
  50. package/dist/cli/capabilities.js +25 -0
  51. package/dist/cli/capabilities.js.map +1 -0
  52. package/dist/cli/create-group-resolver.d.ts +24 -0
  53. package/dist/cli/create-group-resolver.d.ts.map +1 -1
  54. package/dist/cli/create-group-resolver.js +23 -0
  55. package/dist/cli/create-group-resolver.js.map +1 -1
  56. package/dist/cli/daemon-lifecycle-env.d.ts +5 -7
  57. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  58. package/dist/cli/daemon-lifecycle-env.js +13 -7
  59. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  60. package/dist/cli/exact-chat-grant-client.d.ts +48 -0
  61. package/dist/cli/exact-chat-grant-client.d.ts.map +1 -0
  62. package/dist/cli/exact-chat-grant-client.js +108 -0
  63. package/dist/cli/exact-chat-grant-client.js.map +1 -0
  64. package/dist/cli/exact-chat-grant.d.ts +18 -0
  65. package/dist/cli/exact-chat-grant.d.ts.map +1 -0
  66. package/dist/cli/exact-chat-grant.js +97 -0
  67. package/dist/cli/exact-chat-grant.js.map +1 -0
  68. package/dist/cli.d.ts +10 -1
  69. package/dist/cli.d.ts.map +1 -1
  70. package/dist/cli.js +770 -126
  71. package/dist/cli.js.map +1 -1
  72. package/dist/codex-rpc-engine.d.ts +26 -0
  73. package/dist/codex-rpc-engine.d.ts.map +1 -1
  74. package/dist/codex-rpc-engine.js +113 -2
  75. package/dist/codex-rpc-engine.js.map +1 -1
  76. package/dist/config.d.ts +16 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +16 -0
  79. package/dist/config.js.map +1 -1
  80. package/dist/core/bot-live-control.d.ts +41 -0
  81. package/dist/core/bot-live-control.d.ts.map +1 -0
  82. package/dist/core/bot-live-control.js +135 -0
  83. package/dist/core/bot-live-control.js.map +1 -0
  84. package/dist/core/command-handler.d.ts.map +1 -1
  85. package/dist/core/command-handler.js +28 -8
  86. package/dist/core/command-handler.js.map +1 -1
  87. package/dist/core/daemon-config-fence.d.ts +8 -0
  88. package/dist/core/daemon-config-fence.d.ts.map +1 -0
  89. package/dist/core/daemon-config-fence.js +13 -0
  90. package/dist/core/daemon-config-fence.js.map +1 -0
  91. package/dist/core/dashboard-events.d.ts +5 -0
  92. package/dist/core/dashboard-events.d.ts.map +1 -1
  93. package/dist/core/dashboard-events.js.map +1 -1
  94. package/dist/core/dashboard-ipc-server.d.ts +21 -2
  95. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  96. package/dist/core/dashboard-ipc-server.js +232 -5
  97. package/dist/core/dashboard-ipc-server.js.map +1 -1
  98. package/dist/core/dispatch-registry.d.ts +12 -0
  99. package/dist/core/dispatch-registry.d.ts.map +1 -0
  100. package/dist/core/dispatch-registry.js +33 -0
  101. package/dist/core/dispatch-registry.js.map +1 -0
  102. package/dist/core/dispatch.d.ts +99 -0
  103. package/dist/core/dispatch.d.ts.map +1 -1
  104. package/dist/core/dispatch.js +136 -0
  105. package/dist/core/dispatch.js.map +1 -1
  106. package/dist/core/inflight-input-tracker.d.ts +1 -0
  107. package/dist/core/inflight-input-tracker.d.ts.map +1 -1
  108. package/dist/core/inflight-input-tracker.js.map +1 -1
  109. package/dist/core/maintenance.d.ts.map +1 -1
  110. package/dist/core/maintenance.js +10 -3
  111. package/dist/core/maintenance.js.map +1 -1
  112. package/dist/core/persistent-backend.d.ts +16 -2
  113. package/dist/core/persistent-backend.d.ts.map +1 -1
  114. package/dist/core/persistent-backend.js +40 -0
  115. package/dist/core/persistent-backend.js.map +1 -1
  116. package/dist/core/session-discovery.d.ts +8 -1
  117. package/dist/core/session-discovery.d.ts.map +1 -1
  118. package/dist/core/session-discovery.js +140 -8
  119. package/dist/core/session-discovery.js.map +1 -1
  120. package/dist/core/session-manager.d.ts.map +1 -1
  121. package/dist/core/session-manager.js +12 -8
  122. package/dist/core/session-manager.js.map +1 -1
  123. package/dist/core/session-title.d.ts +8 -0
  124. package/dist/core/session-title.d.ts.map +1 -1
  125. package/dist/core/session-title.js +54 -0
  126. package/dist/core/session-title.js.map +1 -1
  127. package/dist/core/terminal-write-auth.d.ts +15 -0
  128. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  129. package/dist/core/terminal-write-auth.js +20 -0
  130. package/dist/core/terminal-write-auth.js.map +1 -1
  131. package/dist/core/trigger-session.d.ts.map +1 -1
  132. package/dist/core/trigger-session.js +3 -2
  133. package/dist/core/trigger-session.js.map +1 -1
  134. package/dist/core/types.d.ts +33 -0
  135. package/dist/core/types.d.ts.map +1 -1
  136. package/dist/core/types.js.map +1 -1
  137. package/dist/core/worker-pool.d.ts +27 -8
  138. package/dist/core/worker-pool.d.ts.map +1 -1
  139. package/dist/core/worker-pool.js +389 -19
  140. package/dist/core/worker-pool.js.map +1 -1
  141. package/dist/daemon.d.ts +4 -2
  142. package/dist/daemon.d.ts.map +1 -1
  143. package/dist/daemon.js +397 -26
  144. package/dist/daemon.js.map +1 -1
  145. package/dist/dashboard/bot-onboarding.d.ts +127 -1
  146. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  147. package/dist/dashboard/bot-onboarding.js +1104 -25
  148. package/dist/dashboard/bot-onboarding.js.map +1 -1
  149. package/dist/dashboard/debug-terminal.d.ts +18 -0
  150. package/dist/dashboard/debug-terminal.d.ts.map +1 -0
  151. package/dist/dashboard/debug-terminal.js +338 -0
  152. package/dist/dashboard/debug-terminal.js.map +1 -0
  153. package/dist/dashboard/public-redact.d.ts +2 -0
  154. package/dist/dashboard/public-redact.d.ts.map +1 -1
  155. package/dist/dashboard/public-redact.js +12 -3
  156. package/dist/dashboard/public-redact.js.map +1 -1
  157. package/dist/dashboard/registry.d.ts +8 -0
  158. package/dist/dashboard/registry.d.ts.map +1 -1
  159. package/dist/dashboard/registry.js +13 -0
  160. package/dist/dashboard/registry.js.map +1 -1
  161. package/dist/dashboard/settings-write-applier.d.ts +47 -1
  162. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  163. package/dist/dashboard/settings-write-applier.js +102 -1
  164. package/dist/dashboard/settings-write-applier.js.map +1 -1
  165. package/dist/dashboard/web/app.d.ts.map +1 -1
  166. package/dist/dashboard/web/app.js +2 -0
  167. package/dist/dashboard/web/app.js.map +1 -1
  168. package/dist/dashboard/web/bot-defaults-page.d.ts +1 -0
  169. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  170. package/dist/dashboard/web/bot-defaults-page.js +24 -5
  171. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  172. package/dist/dashboard/web/bot-defaults.d.ts +15 -0
  173. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  174. package/dist/dashboard/web/bot-defaults.js +19 -0
  175. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  176. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  177. package/dist/dashboard/web/i18n.js +76 -6
  178. package/dist/dashboard/web/i18n.js.map +1 -1
  179. package/dist/dashboard/web/icon-tooltip.d.ts +3 -0
  180. package/dist/dashboard/web/icon-tooltip.d.ts.map +1 -0
  181. package/dist/dashboard/web/icon-tooltip.js +108 -0
  182. package/dist/dashboard/web/icon-tooltip.js.map +1 -0
  183. package/dist/dashboard/web/sessions-kanban.js +2 -2
  184. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  185. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  186. package/dist/dashboard/web/sessions-page.js +48 -9
  187. package/dist/dashboard/web/sessions-page.js.map +1 -1
  188. package/dist/dashboard/web/sessions.d.ts +2 -0
  189. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  190. package/dist/dashboard/web/sessions.js +46 -2
  191. package/dist/dashboard/web/sessions.js.map +1 -1
  192. package/dist/dashboard/web/settings-page.d.ts +78 -0
  193. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  194. package/dist/dashboard/web/settings-page.js +88 -1
  195. package/dist/dashboard/web/settings-page.js.map +1 -1
  196. package/dist/dashboard/web/store.d.ts +2 -0
  197. package/dist/dashboard/web/store.d.ts.map +1 -1
  198. package/dist/dashboard/web/store.js +13 -1
  199. package/dist/dashboard/web/store.js.map +1 -1
  200. package/dist/dashboard-web/app.js +1 -1
  201. package/dist/dashboard-web/chunks/bot-defaults-page-O376WSER.js +5 -0
  202. package/dist/dashboard-web/chunks/{chunk-JNRSPKLS.js → chunk-EJDYUINZ.js} +1 -1
  203. package/dist/dashboard-web/chunks/{chunk-CUV65BIQ.js → chunk-H7P5UV4W.js} +6 -6
  204. package/dist/dashboard-web/chunks/{chunk-P6GO5KT4.js → chunk-QCPPKCX3.js} +1 -1
  205. package/dist/dashboard-web/chunks/{chunk-UBOLHQCK.js → chunk-WXPMNEYV.js} +1 -1
  206. package/dist/dashboard-web/chunks/{connectors-page-KTC2QWNW.js → connectors-page-IR54AOAI.js} +1 -1
  207. package/dist/dashboard-web/chunks/{groups-page-B3EKGOLY.js → groups-page-3P4TLUMF.js} +1 -1
  208. package/dist/dashboard-web/chunks/{insights-page-X6RXNCWX.js → insights-page-TDCZV56A.js} +1 -1
  209. package/dist/dashboard-web/chunks/{monitor-room-LLRA5LQW.js → monitor-room-QWCWL3SX.js} +1 -1
  210. package/dist/dashboard-web/chunks/{monitoring-page-7MT5FEOS.js → monitoring-page-IOWFSNVC.js} +1 -1
  211. package/dist/dashboard-web/chunks/{office-page-KD46D5TD.js → office-page-5AUPEHZP.js} +1 -1
  212. package/dist/dashboard-web/chunks/{overview-page-JUWNH32O.js → overview-page-QJMI6NLW.js} +1 -1
  213. package/dist/dashboard-web/chunks/{roles-page-P6F7NLOI.js → roles-page-WJVB52ET.js} +1 -1
  214. package/dist/dashboard-web/chunks/{schedules-page-XIHWZST4.js → schedules-page-RVRWHP4V.js} +1 -1
  215. package/dist/dashboard-web/chunks/sessions-page-KWLGBX6G.js +3 -0
  216. package/dist/dashboard-web/chunks/settings-page-TNZEPC7V.js +2 -0
  217. package/dist/dashboard-web/chunks/{skills-page-A46KVWBL.js → skills-page-7YT5TIX5.js} +1 -1
  218. package/dist/dashboard-web/chunks/{team-federation-page-SDUC56DF.js → team-federation-page-NJZKTU7A.js} +1 -1
  219. package/dist/dashboard-web/chunks/{v3-page-J5JOTUSQ.js → v3-page-NQ73UA2Q.js} +1 -1
  220. package/dist/dashboard-web/chunks/{whiteboards-page-U7LSOAWI.js → whiteboards-page-DSM3MDMN.js} +1 -1
  221. package/dist/dashboard-web/style.css +198 -7
  222. package/dist/dashboard.js +294 -7
  223. package/dist/dashboard.js.map +1 -1
  224. package/dist/features/codex-notifier/adoption.d.ts +11 -0
  225. package/dist/features/codex-notifier/adoption.d.ts.map +1 -0
  226. package/dist/features/codex-notifier/adoption.js +11 -0
  227. package/dist/features/codex-notifier/adoption.js.map +1 -0
  228. package/dist/features/codex-notifier/app-opener.d.ts +21 -0
  229. package/dist/features/codex-notifier/app-opener.d.ts.map +1 -0
  230. package/dist/features/codex-notifier/app-opener.js +33 -0
  231. package/dist/features/codex-notifier/app-opener.js.map +1 -0
  232. package/dist/features/codex-notifier/card-action.d.ts +27 -0
  233. package/dist/features/codex-notifier/card-action.d.ts.map +1 -0
  234. package/dist/features/codex-notifier/card-action.js +84 -0
  235. package/dist/features/codex-notifier/card-action.js.map +1 -0
  236. package/dist/features/codex-notifier/card.d.ts +12 -0
  237. package/dist/features/codex-notifier/card.d.ts.map +1 -0
  238. package/dist/features/codex-notifier/card.js +150 -0
  239. package/dist/features/codex-notifier/card.js.map +1 -0
  240. package/dist/features/codex-notifier/codex-context.d.ts +12 -0
  241. package/dist/features/codex-notifier/codex-context.d.ts.map +1 -0
  242. package/dist/features/codex-notifier/codex-context.js +161 -0
  243. package/dist/features/codex-notifier/codex-context.js.map +1 -0
  244. package/dist/features/codex-notifier/config.d.ts +9 -0
  245. package/dist/features/codex-notifier/config.d.ts.map +1 -0
  246. package/dist/features/codex-notifier/config.js +11 -0
  247. package/dist/features/codex-notifier/config.js.map +1 -0
  248. package/dist/features/codex-notifier/confirmed-turn.d.ts +20 -0
  249. package/dist/features/codex-notifier/confirmed-turn.d.ts.map +1 -0
  250. package/dist/features/codex-notifier/confirmed-turn.js +130 -0
  251. package/dist/features/codex-notifier/confirmed-turn.js.map +1 -0
  252. package/dist/features/codex-notifier/emitter.d.ts +13 -0
  253. package/dist/features/codex-notifier/emitter.d.ts.map +1 -0
  254. package/dist/features/codex-notifier/emitter.js +33 -0
  255. package/dist/features/codex-notifier/emitter.js.map +1 -0
  256. package/dist/features/codex-notifier/event-store.d.ts +29 -0
  257. package/dist/features/codex-notifier/event-store.d.ts.map +1 -0
  258. package/dist/features/codex-notifier/event-store.js +217 -0
  259. package/dist/features/codex-notifier/event-store.js.map +1 -0
  260. package/dist/features/codex-notifier/event.d.ts +46 -0
  261. package/dist/features/codex-notifier/event.d.ts.map +1 -0
  262. package/dist/features/codex-notifier/event.js +188 -0
  263. package/dist/features/codex-notifier/event.js.map +1 -0
  264. package/dist/features/codex-notifier/hook-cli.d.ts +23 -0
  265. package/dist/features/codex-notifier/hook-cli.d.ts.map +1 -0
  266. package/dist/features/codex-notifier/hook-cli.js +130 -0
  267. package/dist/features/codex-notifier/hook-cli.js.map +1 -0
  268. package/dist/features/codex-notifier/hook-installer.d.ts +19 -0
  269. package/dist/features/codex-notifier/hook-installer.d.ts.map +1 -0
  270. package/dist/features/codex-notifier/hook-installer.js +158 -0
  271. package/dist/features/codex-notifier/hook-installer.js.map +1 -0
  272. package/dist/features/codex-notifier/index.d.ts +21 -0
  273. package/dist/features/codex-notifier/index.d.ts.map +1 -0
  274. package/dist/features/codex-notifier/index.js +19 -0
  275. package/dist/features/codex-notifier/index.js.map +1 -0
  276. package/dist/features/codex-notifier/internal-turn.d.ts +5 -0
  277. package/dist/features/codex-notifier/internal-turn.d.ts.map +1 -0
  278. package/dist/features/codex-notifier/internal-turn.js +43 -0
  279. package/dist/features/codex-notifier/internal-turn.js.map +1 -0
  280. package/dist/features/codex-notifier/outbox-worker.d.ts +71 -0
  281. package/dist/features/codex-notifier/outbox-worker.d.ts.map +1 -0
  282. package/dist/features/codex-notifier/outbox-worker.js +290 -0
  283. package/dist/features/codex-notifier/outbox-worker.js.map +1 -0
  284. package/dist/features/codex-notifier/outbox.d.ts +25 -0
  285. package/dist/features/codex-notifier/outbox.d.ts.map +1 -0
  286. package/dist/features/codex-notifier/outbox.js +225 -0
  287. package/dist/features/codex-notifier/outbox.js.map +1 -0
  288. package/dist/features/codex-notifier/paths.d.ts +7 -0
  289. package/dist/features/codex-notifier/paths.d.ts.map +1 -0
  290. package/dist/features/codex-notifier/paths.js +20 -0
  291. package/dist/features/codex-notifier/paths.js.map +1 -0
  292. package/dist/features/codex-notifier/screen-lock.d.ts +12 -0
  293. package/dist/features/codex-notifier/screen-lock.d.ts.map +1 -0
  294. package/dist/features/codex-notifier/screen-lock.js +47 -0
  295. package/dist/features/codex-notifier/screen-lock.js.map +1 -0
  296. package/dist/features/codex-notifier/side-conversation-monitor.d.ts +102 -0
  297. package/dist/features/codex-notifier/side-conversation-monitor.d.ts.map +1 -0
  298. package/dist/features/codex-notifier/side-conversation-monitor.js +774 -0
  299. package/dist/features/codex-notifier/side-conversation-monitor.js.map +1 -0
  300. package/dist/features/codex-notifier/types.d.ts +42 -0
  301. package/dist/features/codex-notifier/types.d.ts.map +1 -0
  302. package/dist/features/codex-notifier/types.js +2 -0
  303. package/dist/features/codex-notifier/types.js.map +1 -0
  304. package/dist/features/codex-notifier/worker-lock.d.ts +8 -0
  305. package/dist/features/codex-notifier/worker-lock.d.ts.map +1 -0
  306. package/dist/features/codex-notifier/worker-lock.js +108 -0
  307. package/dist/features/codex-notifier/worker-lock.js.map +1 -0
  308. package/dist/global-config.d.ts +13 -0
  309. package/dist/global-config.d.ts.map +1 -1
  310. package/dist/global-config.js +30 -0
  311. package/dist/global-config.js.map +1 -1
  312. package/dist/im/lark/card-builder.js +2 -2
  313. package/dist/im/lark/card-builder.js.map +1 -1
  314. package/dist/im/lark/card-handler.d.ts +2 -0
  315. package/dist/im/lark/card-handler.d.ts.map +1 -1
  316. package/dist/im/lark/card-handler.js +165 -34
  317. package/dist/im/lark/card-handler.js.map +1 -1
  318. package/dist/im/lark/client.d.ts +62 -4
  319. package/dist/im/lark/client.d.ts.map +1 -1
  320. package/dist/im/lark/client.js +237 -29
  321. package/dist/im/lark/client.js.map +1 -1
  322. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  323. package/dist/im/lark/event-dispatcher.js +20 -30
  324. package/dist/im/lark/event-dispatcher.js.map +1 -1
  325. package/dist/platform/secure-host-file.d.ts.map +1 -1
  326. package/dist/platform/secure-host-file.js +173 -54
  327. package/dist/platform/secure-host-file.js.map +1 -1
  328. package/dist/services/codex-app-threads.d.ts +47 -0
  329. package/dist/services/codex-app-threads.d.ts.map +1 -1
  330. package/dist/services/codex-app-threads.js +502 -10
  331. package/dist/services/codex-app-threads.js.map +1 -1
  332. package/dist/services/exact-chat-grant.d.ts +83 -0
  333. package/dist/services/exact-chat-grant.d.ts.map +1 -0
  334. package/dist/services/exact-chat-grant.js +249 -0
  335. package/dist/services/exact-chat-grant.js.map +1 -0
  336. package/dist/services/group-creator.d.ts +11 -0
  337. package/dist/services/group-creator.d.ts.map +1 -1
  338. package/dist/services/group-creator.js +18 -9
  339. package/dist/services/group-creator.js.map +1 -1
  340. package/dist/services/local-cli-opener.d.ts.map +1 -1
  341. package/dist/services/local-cli-opener.js +10 -5
  342. package/dist/services/local-cli-opener.js.map +1 -1
  343. package/dist/services/traex-user-input.d.ts +19 -0
  344. package/dist/services/traex-user-input.d.ts.map +1 -0
  345. package/dist/services/traex-user-input.js +57 -0
  346. package/dist/services/traex-user-input.js.map +1 -0
  347. package/dist/setup/open-platform-automation.d.ts +24 -3
  348. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  349. package/dist/setup/open-platform-automation.js +45 -8
  350. package/dist/setup/open-platform-automation.js.map +1 -1
  351. package/dist/setup/verify-permissions.d.ts +18 -0
  352. package/dist/setup/verify-permissions.d.ts.map +1 -1
  353. package/dist/setup/verify-permissions.js +60 -0
  354. package/dist/setup/verify-permissions.js.map +1 -1
  355. package/dist/types.d.ts +70 -4
  356. package/dist/types.d.ts.map +1 -1
  357. package/dist/utils/child-env.d.ts +1 -1
  358. package/dist/utils/child-env.d.ts.map +1 -1
  359. package/dist/utils/child-env.js +2 -0
  360. package/dist/utils/child-env.js.map +1 -1
  361. package/dist/utils/pending-input-queue.d.ts +19 -0
  362. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  363. package/dist/utils/pending-input-queue.js +21 -1
  364. package/dist/utils/pending-input-queue.js.map +1 -1
  365. package/dist/utils/stuck-detector.d.ts +45 -0
  366. package/dist/utils/stuck-detector.d.ts.map +1 -0
  367. package/dist/utils/stuck-detector.js +188 -0
  368. package/dist/utils/stuck-detector.js.map +1 -0
  369. package/dist/utils/stuck-key-guard.d.ts +75 -0
  370. package/dist/utils/stuck-key-guard.d.ts.map +1 -0
  371. package/dist/utils/stuck-key-guard.js +77 -0
  372. package/dist/utils/stuck-key-guard.js.map +1 -0
  373. package/dist/worker.js +807 -117
  374. package/dist/worker.js.map +1 -1
  375. package/package.json +1 -1
  376. package/dist/dashboard-web/chunks/bot-defaults-page-B5AY4B2J.js +0 -5
  377. package/dist/dashboard-web/chunks/sessions-page-2VECQ27T.js +0 -3
  378. package/dist/dashboard-web/chunks/settings-page-HMIUE2JA.js +0 -2
@@ -12,6 +12,10 @@ class Store {
12
12
  scheduleTimeZone: this.scheduleTimeZone,
13
13
  };
14
14
  listeners = new Set();
15
+ // Bot roster changes don't live in this cache (the Bot 配置 page owns its own
16
+ // /api/bots fetch), so relay them through a dedicated listener set instead of
17
+ // bumping the snapshot version. Signature-deduped server-side.
18
+ botsListeners = new Set();
15
19
  setScheduleTimeZone(tz) {
16
20
  if (typeof tz === 'string' && tz && this.scheduleTimeZone !== tz) {
17
21
  this.scheduleTimeZone = tz;
@@ -59,11 +63,19 @@ class Store {
59
63
  if (typeof body?.timezone === 'string' && body.timezone)
60
64
  this.scheduleTimeZone = body.timezone;
61
65
  }
66
+ else if (type === 'bots.changed') {
67
+ // Bot roster changed (bot added / removed / renamed). Notify subscribers
68
+ // so the Bot 配置 page re-fetches /api/bots without a manual refresh.
69
+ for (const fn of this.botsListeners)
70
+ fn();
71
+ return; // no snapshot mutation — bots aren't cached here
72
+ }
62
73
  else {
63
74
  return; // heartbeat / schedule.fired — no cache mutation
64
75
  }
65
76
  this.emit();
66
77
  }
78
+ onBotsChanged(fn) { this.botsListeners.add(fn); return () => this.botsListeners.delete(fn); }
67
79
  setOnline(v) {
68
80
  if (this.online !== v) {
69
81
  this.online = v;
@@ -99,7 +111,7 @@ export async function bootstrap() {
99
111
  const types = [
100
112
  'session.spawned', 'session.update', 'session.exited',
101
113
  'schedule.created', 'schedule.updated', 'schedule.deleted',
102
- 'schedule.fired', 'schedule.timezone', 'heartbeat',
114
+ 'schedule.fired', 'schedule.timezone', 'bots.changed', 'heartbeat',
103
115
  ];
104
116
  for (const t of types) {
105
117
  es.addEventListener(t, e => {
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/dashboard/web/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/dashboard/web/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{a as Qe,b as et}from"./chunks/chunk-JNRSPKLS.js";import{b as xe}from"./chunks/chunk-SZOB6VK2.js";import{a as Ge}from"./chunks/chunk-BD3PZGH2.js";import{a as ie,b as Ye,c as Ze}from"./chunks/chunk-UBOLHQCK.js";import{i as Xe}from"./chunks/chunk-QFMH6ITB.js";import{A as We,C as je,F as qe,G as se,a as re,b as Ke,e as oe,r as g,s,t as Ve,u as ze}from"./chunks/chunk-CUV65BIQ.js";import{a as Ft,c as Kt,d as Je}from"./chunks/chunk-5THX4DI2.js";import{c as ae}from"./chunks/chunk-7SZRL6FY.js";var St=ae(Kt(),1),u=ae(Ft(),1);var Ee="botmux:close-theme-menu",Vt={palette:'<circle cx="13.5" cy="6.5" r=".5" fill="currentColor"/><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"/><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"/><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"/><path d="M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>',moon:'<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/>',cpu:'<path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/>',zap:'<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>',chevron:'<path d="m6 9 6 6 6-6"/>'},nt=[{labelKey:"theme.base",options:[{value:"system",labelKey:"status.system",icon:"monitor"},{value:"light",labelKey:"status.light",icon:"sun"},{value:"dark",labelKey:"status.dark",icon:"moon"}]},{labelKey:"theme.skins",options:[{value:"cyber",labelKey:"skin.cyber",icon:"cpu"},{value:"fallout",labelKey:"skin.fallout",icon:"zap"}]}],tt=nt.flatMap(e=>e.options),N=!1,q=null,G=null,zt=70,Wt=120;function ke(e){return`<svg class="tm-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${Vt[e]??""}</svg>`}function jt(e){return e.replace(/[&<>"]/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[n])}function at(){let e=document.getElementById("theme-menu"),n=document.getElementById("theme-menu-btn"),a=document.getElementById("theme-menu-pop");if(!e||!n||!a||e.dataset.themeMenuInit==="1")return;e.dataset.themeMenuInit="1",a.innerHTML=nt.map(i=>`<div class="tm-group" data-label-key="${i.labelKey}"></div>`+i.options.map(f=>`<button type="button" class="tm-item" role="option" data-value="${f.value}"><span class="tm-ic">${ke(f.icon)}</span><span class="tm-label" data-label-key="${f.labelKey}"></span></button>`).join("")).join("");let r=()=>{if(!N)return;let i=n.getBoundingClientRect(),f=12,p=Math.min(Math.max(a.offsetWidth||216,216),Math.max(0,window.innerWidth-f*2)),E=f+p/2,v=window.innerWidth-f-p/2,w=i.left+i.width/2,R=Math.min(Math.max(w,E),Math.max(E,v)),x=Math.max(180,window.innerHeight-i.bottom-20);a.style.setProperty("--theme-menu-pop-left",`${Math.round(R)}px`),a.style.setProperty("--theme-menu-pop-top",`${Math.round(i.bottom+8)}px`),a.style.setProperty("--theme-menu-pop-max-height",`${Math.round(x)}px`)},o=i=>{q!=null&&(window.clearTimeout(q),q=null),G!=null&&(window.clearTimeout(G),G=null),N=i,n.setAttribute("aria-expanded",String(N)),document.body.classList.toggle("theme-menu-open",N),N?(a.hidden=!1,r(),window.requestAnimationFrame(()=>e.classList.add("open"))):(e.classList.remove("open"),G=window.setTimeout(()=>{G=null,N||(a.hidden=!0)},Wt))},l=()=>o(!0),d=()=>{q==null&&(q=window.setTimeout(()=>o(!1),zt))},m=i=>{i.pointerType!=="touch"&&l()},c=i=>{i.pointerType!=="touch"&&d()};e.addEventListener("pointerenter",m),e.addEventListener("pointerleave",c),a.addEventListener("pointerenter",m),a.addEventListener("pointerleave",c),n.addEventListener("click",i=>{i.stopPropagation(),o(!N)}),n.addEventListener("focus",()=>{n.matches(":focus-visible")&&l()}),e.addEventListener("focusout",i=>{let f=i.relatedTarget;(!(f instanceof Node)||!e.contains(f))&&d()}),a.addEventListener("click",i=>{let f=i.target.closest(".tm-item");f&&(g.setTheme(f.dataset.value??"system"),o(!1))}),document.addEventListener("click",i=>{N&&!e.contains(i.target)&&o(!1)}),document.addEventListener("pointermove",i=>{if(!N||i.pointerType==="touch")return;let f=i.target;f instanceof Node&&e.contains(f)||d()}),document.addEventListener("keydown",i=>{i.key==="Escape"&&N&&o(!1)}),window.addEventListener("resize",r),window.addEventListener("scroll",r,!0),window.addEventListener(Ee,()=>{N&&o(!1)}),Re()}function Re(){let e=document.getElementById("theme-menu-btn");if(!e)return;let n=tt.find(a=>a.value===g.theme)??tt[0];e.innerHTML=`<span class="tm-ic">${ke("palette")}</span><span class="tm-current">${jt(s(n.labelKey))}</span><span class="tm-chev">${ke("chevron")}</span>`,document.querySelectorAll("#theme-menu-pop [data-label-key]").forEach(a=>{a.textContent=s(a.dataset.labelKey??"")}),document.querySelectorAll("#theme-menu-pop .tm-item").forEach(a=>{a.classList.toggle("active",a.dataset.value===g.theme)})}function b(e,n,a,r,o=!1){return{id:e,routePrefix:n,rerenderOnUiChange:o,load:async()=>(await a())[r]}}var qt=[{id:"plugins",routePrefix:"#/plugins",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/plugin-page-JXC5F5YV.js");return n=>e.renderPluginPage(n)}},b("workflows","#/workflows",()=>import("./chunks/v3-page-J5JOTUSQ.js"),"renderV3RunsPage"),b("groups","#/groups",()=>import("./chunks/groups-page-B3EKGOLY.js"),"renderGroupsPage"),b("settings","#/settings",()=>import("./chunks/settings-page-HMIUE2JA.js"),"renderSettingsPage"),b("bot-defaults","#/bot-defaults",()=>import("./chunks/bot-defaults-page-B5AY4B2J.js"),"renderBotDefaultsPage"),b("skills","#/skills",()=>import("./chunks/skills-page-A46KVWBL.js"),"renderSkillsPage"),b("connectors-logs","#/connectors/logs",()=>import("./chunks/connectors-page-KTC2QWNW.js"),"renderConnectorsLogsPage"),b("webhook-logs","#/webhook-logs",()=>import("./chunks/connectors-page-KTC2QWNW.js"),"renderConnectorsLogsPage"),b("connectors","#/connectors",()=>import("./chunks/connectors-page-KTC2QWNW.js"),"renderConnectorsPage"),b("team-manage","#/team/manage",()=>import("./chunks/team-federation-page-SDUC56DF.js"),"renderTeamManagePage"),b("team","#/team",()=>import("./chunks/team-federation-page-SDUC56DF.js"),"renderTeamFederationPage"),b("roles-profile","#/roles/profile",()=>import("./chunks/roles-page-P6F7NLOI.js"),"renderRoleProfilesPage"),b("roles","#/roles",()=>import("./chunks/roles-page-P6F7NLOI.js"),"renderRolesPage"),b("schedules","#/schedules",()=>import("./chunks/schedules-page-XIHWZST4.js"),"renderSchedulesPage"),b("whiteboards","#/whiteboards",()=>import("./chunks/whiteboards-page-U7LSOAWI.js"),"renderWhiteboardsPage"),b("monitoring","#/monitoring",()=>import("./chunks/monitoring-page-7MT5FEOS.js"),"renderMonitoringPage"),b("sessions","#/sessions",()=>import("./chunks/sessions-page-2VECQ27T.js"),"renderSessionsPage"),b("monitor-room","#/monitor-room",()=>import("./chunks/monitor-room-LLRA5LQW.js"),"renderMonitorRoomPage",!0),b("office","#/office",()=>import("./chunks/office-page-KD46D5TD.js"),"renderOfficePage"),b("insights","#/insights",()=>import("./chunks/insights-page-X6RXNCWX.js"),"renderInsightsPage")];function rt(e){return qt.find(n=>n.exact?e===n.routePrefix:e.startsWith(n.routePrefix))}async function ot(){let e=await import("./chunks/overview-page-JUWNH32O.js");return n=>e.renderOverviewPage(n)}function it(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function lt(e){let n=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),n}function st(e,n){return n===e.seq}async function dt(e,n,a,r,o={}){let l=await r();if(!st(e,n))return!1;let d=l(a);return st(e,n)?(e.pageDispose=typeof d=="function"?d:null,e.rerenderOnUiChange=o.rerenderOnUiChange??!0,!0):(typeof d=="function"&&d(),!1)}var Gt="botmux.dashboard.stale-chunk-reload.v1:",Jt=/Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|dynamically imported module/i,Xt=/\b(?:https?:\/\/|\/assets\/)\S+?\.js\b/;function ct(e){return e instanceof Error?`${e.name}: ${e.message}`:String(e)}function ut(e){return Jt.test(ct(e))}function Yt(e,n){let o=ct(e).match(Xt)?.[0]||`${n.href}|${n.hash}`;return`${Gt}${o.slice(-240)}`}function Zt(e,n){if(!ut(e))return!1;let a=Yt(e,n);try{if(n.sessionStorage.getItem(a)==="1")return!1;n.sessionStorage.setItem(a,"1")}catch{return!1}return n.reload(),!0}function pt(e,n){if(!ut(e))return!1;let a;try{a=n.getSessionStorage()}catch{return!1}return Zt(e,{...n,sessionStorage:a})}var Qt=new Set(["auto","scroll","overlay"]),le=28,L=3,I=6,ht=!1,vt=null,mt=new WeakMap,P=new Map,ft=null,bt=null,Me=0,Ne=0,J=null;function en(e){return e.closest("dialog[open]")??document.body}function tn(e){let n=mt.get(e);if(n?.isConnected)return n;let a=document.createElement("div");return a.className="floating-scrollbar-layer",a.setAttribute("aria-hidden","true"),e.appendChild(a),mt.set(e,a),a}function nn(e){return Qt.has(e)}function Se(e,n){let a=getComputedStyle(e),r=n==="y"?a.overflowY:a.overflowX;return nn(r)?n==="y"?e.scrollHeight-e.clientHeight>1:e.scrollWidth-e.clientWidth>1:!1}function an(e){if(!e.isConnected||e.closest("[hidden]"))return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>0&&n.right>0&&n.top<window.innerHeight&&n.left<window.innerWidth}function rn(e){return[e,...Array.from(e.querySelectorAll("*"))].filter(a=>an(a)&&(Se(a,"x")||Se(a,"y")))}function de(e){e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.track.remove()}function on(e,n){let a=P.get(e);a||(a={},P.set(e,a));let r=a[n],o=en(e),l=tn(o);if(r?.track.parentElement===l)return r;r&&de(r);let d=document.createElement("div"),m=document.createElement("div");d.className=`floating-scrollbar floating-scrollbar-${n}`,m.className="floating-scrollbar-thumb",d.appendChild(m),l.appendChild(d);let c={target:e,axis:n,track:d,thumb:m,hideTimer:void 0};return a[n]=c,c}function Te(e,n=!1){e.track.classList.add("is-visible"),e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.hideTimer=n?void 0:window.setTimeout(()=>{e.track.classList.remove("is-visible","is-active"),e.hideTimer=void 0},900)}function sn(e){let{target:n,axis:a,track:r,thumb:o}=e,l=n.getBoundingClientRect();if(a==="y"){let E=Math.max(0,l.top+L),v=Math.min(window.innerHeight,l.bottom-L),w=Math.max(0,v-E);if(w<le||n.scrollHeight<=n.clientHeight){r.hidden=!0;return}let R=Math.max(le,Math.round(w*n.clientHeight/n.scrollHeight)),x=Math.max(1,n.scrollHeight-n.clientHeight),_=Math.round((w-R)*n.scrollTop/x);r.hidden=!1,r.style.left=`${Math.min(window.innerWidth-I-L,Math.max(L,l.right-I-L))}px`,r.style.top=`${E}px`,r.style.width=`${I}px`,r.style.height=`${w}px`,o.style.width="100%",o.style.height=`${R}px`,o.style.transform=`translate3d(0, ${_}px, 0)`;return}let d=Math.max(0,l.left+L),m=Math.min(window.innerWidth,l.right-L),c=Math.max(0,m-d);if(c<le||n.scrollWidth<=n.clientWidth){r.hidden=!0;return}let i=Math.max(le,Math.round(c*n.clientWidth/n.scrollWidth)),f=Math.max(1,n.scrollWidth-n.clientWidth),p=Math.round((c-i)*n.scrollLeft/f);r.hidden=!1,r.style.left=`${d}px`,r.style.top=`${Math.min(window.innerHeight-I-L,Math.max(L,l.bottom-I-L))}px`,r.style.width=`${c}px`,r.style.height=`${I}px`,o.style.width=`${i}px`,o.style.height="100%",o.style.transform=`translate3d(${p}px, 0, 0)`}function $(){Me||(Me=window.requestAnimationFrame(()=>{Me=0,dn()}))}function ln(){Ne||(Ne=window.setTimeout(()=>{Ne=0,$()},120))}function dn(){let e=vt;if(!e)return;let n=new Set(rn(e));for(let[a,r]of P)n.has(a)||(r.x&&de(r.x),r.y&&de(r.y),P.delete(a));for(let a of n){let r=a===J;for(let o of["x","y"]){let l=P.get(a);if(!Se(a,o)){let m=l?.[o];m&&(de(m),delete l?.[o]);continue}let d=on(a,o);sn(d),r&&Te(d,!0)}}}function cn(e){if(!(e instanceof HTMLElement))return;let n=P.get(e);if(n)for(let a of Object.values(n))a&&(a.track.classList.add("is-active"),Te(a))}function un(e){for(let n=e;n;n=n.parentElement)if(n instanceof HTMLElement&&P.has(n))return n;return null}function gt(e){if(J===e)return;let n=J?P.get(J):void 0;if(J=e,n)for(let r of Object.values(n))r?.track.classList.remove("is-visible");let a=e?P.get(e):void 0;if(a)for(let r of Object.values(a))r&&Te(r,!0)}function yt(e){ht||(ht=!0,vt=e,document.documentElement.classList.add("floating-scrollbars-on"),ft=typeof ResizeObserver>"u"?null:new ResizeObserver($),ft?.observe(e),bt=new MutationObserver(n=>{for(let a of n){let r=a.target;if(!(r instanceof Element&&r.closest(".floating-scrollbar-layer"))){ln();return}}}),bt.observe(e,{attributes:!0,attributeFilter:["class","style","hidden","open"],childList:!0,subtree:!0}),document.addEventListener("scroll",n=>{cn(n.target),$()},!0),window.addEventListener("resize",$),window.addEventListener("hashchange",$),document.addEventListener("pointermove",n=>{gt(un(document.elementFromPoint(n.clientX,n.clientY)))}),document.addEventListener("pointerleave",()=>gt(null)),$())}async function wt(e){let n=await e.json().catch(()=>null);return n&&typeof n=="object"?n:{}}function xt(e,n){let a=n.detail??n.error;return new Error(typeof a=="string"?a:`HTTP ${e.status}`)}async function Le(e,n=()=>{},a){n("updating");let r=await e(a?"/api/update/rollback":"/api/update/run",a?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({version:a})}:{method:"POST"}),o=await wt(r);if(!r.ok||o.ok===!1)throw xt(r,o);if(o.ok!==!0||typeof o.oldVersion!="string"||typeof o.newVersion!="string"||typeof o.changed!="boolean")throw new Error("Invalid update response");if(a&&(o.newVersion!==a||o.changed!==!0))throw new Error("Invalid rollback response");let l={oldVersion:o.oldVersion,newVersion:o.newVersion,changed:o.changed,restarted:!1};if(n("restarting"),a)return{...l,restarted:!0};let d=await e("/api/update/restart",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({update:{oldVersion:l.oldVersion,newVersion:l.newVersion}})}),m=await wt(d);if(!d.ok||m.ok===!1)return{...l,restarted:!1,restartError:xt(d,m).message};if(m.ok!==!0)throw new Error("Invalid restart response");return m.alreadyScheduled===!0?{...l,restarted:!0,alreadyScheduled:!0}:{...l,restarted:!0}}var t=ae(Je(),1),pn=["roles","role-profiles","bot-defaults","skills","plugins","team","connectors","insights","whiteboards"],X=[{id:"overview",href:"#/",labelKey:"nav.overview",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"1.5",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"9.1",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"1.5",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"9.1",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"})]})},{id:"sessions",href:"#/sessions",labelKey:"nav.sessions",icon:(0,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"})},{id:"groups",href:"#/groups",labelKey:"nav.groups",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"5.6",cy:"5.8",r:"2.4"}),(0,t.jsx)("circle",{cx:"11",cy:"6.8",r:"1.9"}),(0,t.jsx)("path",{d:"M1.8 13.2c.5-2.4 2-3.6 3.8-3.6s3.3 1.2 3.8 3.6M9.8 12.6c.4-1.7 1.5-2.6 2.8-2.6 1 0 1.9.5 2.4 1.6"})]})},{id:"roles",href:"#/roles",labelKey:"nav.roles",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M8 1.8l5.2 2v3.4c0 3.4-2.2 5.9-5.2 7-3-1.1-5.2-3.6-5.2-7V3.8z"}),(0,t.jsx)("path",{d:"M5.8 8l1.6 1.6 2.8-3"})]})},{id:"monitoring",href:"#/monitoring",labelKey:"nav.monitoring",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 9.2h2.3l1.3-4.8 2.5 8.4 1.8-5.1h4.1"}),(0,t.jsx)("path",{d:"M2 2.5h12v11H2z"})]})},{id:"insights",href:"#/insights",labelKey:"nav.insights",manage:!0,icon:(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("path",{d:"M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"})})},{id:"workflows",href:"#/workflows",labelKey:"nav.workflows",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"3.4",cy:"3.6",r:"1.9"}),(0,t.jsx)("circle",{cx:"3.4",cy:"12.4",r:"1.9"}),(0,t.jsx)("circle",{cx:"12.6",cy:"8",r:"1.9"}),(0,t.jsx)("path",{d:"M5.2 4.4l5.6 2.8M5.2 11.6l5.6-2.8"})]})},{id:"schedules",href:"#/schedules",labelKey:"nav.schedules",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.jsx)("path",{d:"M8 4.5V8l2.4 1.6"})]})},{id:"whiteboards",href:"#/whiteboards",labelKey:"nav.whiteboards",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})},{id:"office",href:"#/office",labelKey:"nav.office",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"3",y:"4",width:"10",height:"7",rx:"2"}),(0,t.jsx)("circle",{cx:"6",cy:"7.5",r:"1"}),(0,t.jsx)("circle",{cx:"10",cy:"7.5",r:"1"}),(0,t.jsx)("path",{d:"M8 4V2M4.5 11v2M11.5 11v2"})]})},{id:"bot-defaults",href:"#/bot-defaults",labelKey:"nav.botDefaults",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"5",width:"11",height:"8",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9",r:"1"}),(0,t.jsx)("path",{d:"M8 5V2.5M5.5 13v1.2M10.5 13v1.2"})]})},{id:"skills",href:"#/skills",labelKey:"nav.skills",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M3 2.5h10v3H3zM3 7h10v6.5H3z"}),(0,t.jsx)("path",{d:"M5.4 9.2h5.2M5.4 11.2h3.8"})]})},{id:"plugins",href:"#/plugins",label:"\u63D2\u4EF6",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M6.4 1.8h3.2v3h2.8v3.2H9.6v2.8H6.4V8H3.6V4.8h2.8z"}),(0,t.jsx)("path",{d:"M2.2 11.8h11.6v2.4H2.2z"})]})},{id:"team",href:"#/team",labelKey:"nav.team",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.jsx)("path",{d:"M1.8 8h12.4M8 1.8c-2 1.8-2 10.6 0 12.4 2-1.8 2-10.6 0-12.4z"})]})},{id:"connectors",href:"#/connectors",labelKey:"nav.connectors",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"}),(0,t.jsx)("rect",{x:"3.5",y:"6.5",width:"9",height:"7",rx:"2"})]})},{id:"settings",href:"#/settings",labelKey:"nav.settings",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M8 1.75 9.35 2.05 10 3.28l1.38.3 1.04-.96.96.96-.96 1.04.3 1.38 1.23.65L14.25 8l-.3 1.35-1.23.65-.3 1.38.96 1.04-.96.96-1.04-.96-1.38.3-.65 1.23L8 14.25l-1.35-.3L6 12.72l-1.38-.3-1.04.96-.96-.96.96-1.04-.3-1.38-1.23-.65L1.75 8l.3-1.35 1.23-.65.3-1.38-.96-1.04.96-.96 1.04.96 1.38-.3.65-1.23z"}),(0,t.jsx)("circle",{cx:"8",cy:"8",r:"2"})]})}],Z=[],A=!0,Ae=!1,Tt=location.hash||"#/",U=null,Q=!1,ee=null,ue=null,Lt=null,pe=null,Ot=null,D=it(),Pt="botmux.ownerAvatar.v1",hn=new Set(["working","analyzing","active","starting"]),He="botmux:auth-expired";function Y(e){return(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e})}function kt(e){return e.labelKey?s(e.labelKey):e.label??""}function mn(e,n){let a=n||"#/";return e.id==="plugins"&&Z.some(r=>r.href===a||a.startsWith(`${r.href}?`)||a.startsWith(`${r.href}/`))?!1:e.id==="sessions"&&(a==="#/monitor-room"||a.startsWith("#/monitor-room?")||a.startsWith("#/monitor-room/"))||e.id==="connectors"&&(a==="#/webhook-logs"||a.startsWith("#/webhook-logs?")||a.startsWith("#/webhook-logs/"))?!0:e.href===a||e.href!=="#/"&&(a.startsWith(`${e.href}?`)||a.startsWith(`${e.href}/`))}function fn(){if(Z.length===0)return X;let e=X.findIndex(n=>n.id==="plugins");return e<0?[...X,...Z]:[...X.slice(0,e+1),...Z,...X.slice(e+1)]}function bn(e){let n=[];return mn(e,Tt)&&n.push("active"),e.id==="settings"&&Q&&n.push("nav-has-update"),n.length?n.join(" "):void 0}function Ct(){let e=oe(new URLSearchParams(location.search).get("locale"));if(e)return e;let n=location.hash.indexOf("?");return n<0?null:oe(new URLSearchParams(location.hash.slice(n+1)).get("locale"))}function Et(){let e=Ct();return!e||e===g.locale?!1:(g.setLocale(e),!0)}function gn(){let e=location.hash.indexOf("?");return e<0?null:{path:location.hash.slice(0,e)||"#/",params:new URLSearchParams(location.hash.slice(e+1))}}function vn(){let e=gn(),n=e?.params.get("open");if(!e||!n||n!=="bot-onboarding"&&n!=="create-session")return!1;e.params.delete("open");let a=e.params.toString();return history.replaceState(null,"",a?`${e.path}?${a}`:e.path),n==="bot-onboarding"?window.dispatchEvent(new Event(ie)):xe(),!0}function Rt(){let e=ee?`v${ee}`:"";return ue==="codex"?s("update.navRuntimeBadgeTitle",{version:e}):s("update.navBadgeTitle",{version:e})}function yn(e){pe=e}function Oe(){if(pe)return pe;let e=document.getElementById("root");if(!e)throw new Error("dashboard root is not mounted");return pe=e,e}function wn(){return(0,u.useEffect)(()=>{at()},[]),(0,u.useEffect)(()=>{Re()}),(0,t.jsxs)("div",{className:"theme-menu",id:"theme-menu",children:[(0,t.jsx)("button",{type:"button",className:"theme-menu-btn",id:"theme-menu-btn","aria-haspopup":"listbox","aria-expanded":"false","aria-label":"Theme",children:(0,t.jsx)("span",{className:"tm-ic",children:(0,t.jsxs)("svg",{className:"tm-svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),(0,t.jsx)("path",{d:"M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"})]})})}),(0,t.jsx)("div",{className:"theme-menu-pop",id:"theme-menu-pop",role:"listbox",hidden:!0})]})}function xn(){let e=[...re.sessions.values()],n=e.filter(c=>c.status!=="closed"),a=n.map(c=>({s:c,reason:qe(c)})).filter(c=>!!c.reason).sort((c,i)=>se(c.s)-se(i.s)),r=new Set(a.map(c=>String(c.s.sessionId??""))),o=n.filter(c=>hn.has(String(c.status))&&!r.has(String(c.sessionId??""))).length,l=a[0]??null,d=et(e).filter(c=>c.online||c.active.length>0).length,m=Math.max(0,n.length-a.length-o);return{working:o,attention:a.length,idle:m,onlineBots:d,attentionNotice:l?{count:a.length,time:ze(se(l.s)),bot:je(l.s),reason:l.reason}:null}}function ce(e){return(0,t.jsxs)("div",{className:`topbar-status-row${e.hot?" topbar-status-row-hot":""}`,children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("b",{className:e.value>0?"status-count-on":void 0,children:e.value})]})}function kn(e){let{attention:n,idle:a,working:r}=e.summary,o=r+n+a,l=o===0?"conic-gradient(var(--border) 0 360deg)":(()=>{let d=r/o*360,m=d+n/o*360;return`conic-gradient(var(--accent) 0 ${d}deg, var(--warning) ${d}deg ${m}deg, var(--success) ${m}deg 360deg)`})();return(0,t.jsxs)("div",{className:"topbar-status-donut-wrap","aria-hidden":"true",children:[(0,t.jsx)("div",{className:"topbar-status-donut",style:{background:l}}),(0,t.jsxs)("div",{className:"topbar-status-donut-center",children:[(0,t.jsx)("b",{children:o}),(0,t.jsx)("span",{children:s("overview.openSessions")})]})]})}function Pe(){window.dispatchEvent(new Event(Ee))}function En(e){let{autoOpen:n=!1,summary:a}=e,[r,o]=(0,u.useState)(!1),[l,d]=(0,u.useState)(!1),[m,c]=(0,u.useState)(!1),i=(0,u.useRef)(null),f=n&&!l,p=r||f;return(0,u.useEffect)(()=>{n||d(!1)},[n]),(0,u.useEffect)(()=>{if(!p)return;let v=w=>{let R=w.target;R instanceof Node&&i.current?.contains(R)||(o(!1),d(!0))};return document.addEventListener("pointerdown",v),()=>document.removeEventListener("pointerdown",v)},[p]),(0,t.jsxs)("div",{ref:i,className:`topbar-status-menu${f?" topbar-status-auto-open":""}${r?" is-open":""}${m?" suppress-hover":""}`,onPointerEnter:Pe,onPointerLeave:()=>c(!1),onFocusCapture:Pe,onBlur:v=>{let w=v.relatedTarget;(!(w instanceof Node)||!v.currentTarget.contains(w))&&o(!1)},onKeyDown:v=>{v.key==="Escape"&&(o(!1),d(!0),c(!0),v.currentTarget.querySelector("#status")?.focus())},children:[(0,t.jsx)("button",{type:"button",id:"status",className:"connection-status","aria-haspopup":"true","aria-expanded":p,onClick:()=>{if(Pe(),p){o(!1),d(!0),c(!0);return}c(!1),o(!0)},children:s("overview.sessionOverview")}),(0,t.jsxs)("div",{className:"topbar-status-pop",children:[a.attentionNotice?(0,t.jsxs)("a",{className:"topbar-attention-notice",href:"#/sessions",children:[(0,t.jsx)("span",{className:"topbar-attention-dot","aria-hidden":"true"}),(0,t.jsxs)("span",{className:"topbar-attention-copy",children:[(0,t.jsx)("b",{children:s("strip.pending",{count:a.attentionNotice.count})}),(0,t.jsx)("small",{children:s("strip.longestCompact",{time:a.attentionNotice.time,bot:a.attentionNotice.bot,reason:a.attentionNotice.reason})})]}),(0,t.jsx)("span",{className:"topbar-attention-action",children:s("strip.handle")})]}):null,(0,t.jsxs)("div",{className:"topbar-status-list",children:[(0,t.jsx)(ce,{label:s("overview.workingSessions"),value:a.working}),(0,t.jsx)(ce,{label:s("overview.idleSessions"),value:a.idle}),(0,t.jsx)(ce,{label:s("overview.attention"),value:a.attention,hot:a.attention>0}),(0,t.jsx)(ce,{label:s("overview.onlineBots"),value:a.onlineBots})]}),(0,t.jsx)(kn,{summary:a})]})]})}function Rn(e){return e.open?(0,t.jsx)("div",{id:"auth-expired-overlay",className:"auth-expired-overlay",role:"presentation",onClick:n=>{n.target===n.currentTarget&&e.onClose()},children:(0,t.jsxs)("div",{className:"auth-expired-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"auth-expired-title",children:[(0,t.jsx)("h2",{id:"auth-expired-title",children:"\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548"}),(0,t.jsx)("p",{children:"\u5F53\u524D\u94FE\u63A5/\u8BBF\u95EE\u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u6700\u65B0\u6388\u6743\u94FE\u63A5\u91CD\u65B0\u8FDB\u5165\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09\u3002"}),(0,t.jsx)("button",{id:"auth-expired-dismiss",type:"button",className:"primary",onClick:e.onClose,children:"\u77E5\u9053\u4E86"})]})}):null}function Mn(e){let n=new Date(e);if(Number.isNaN(n.getTime()))return e.slice(0,10);try{return new Intl.DateTimeFormat(g.locale==="zh"?"zh-CN":"en-US",{year:"numeric",month:"numeric",day:"numeric"}).format(n)}catch{return e.slice(0,10)}}async function Mt(){let e=await fetch("/__selfcheck",{cache:"no-store"}),n=await e.text();if(!e.ok||!n)throw new Error(s("update.healthCheckFailed"));return n}function Nn(e){let{status:n}=e,[a,r]=(0,u.useState)(!1),[o,l]=(0,u.useState)("idle"),[d,m]=(0,u.useState)(!1),[c,i]=(0,u.useState)(!1),[f,p]=(0,u.useState)(""),[E,v]=(0,u.useState)(!1),[w,R]=(0,u.useState)(!1),[x,_]=(0,u.useState)(!1),[F,te]=(0,u.useState)(!1),[K,Ie]=(0,u.useState)([]),[y,me]=(0,u.useState)(null),[C,fe]=(0,u.useState)(null),O=(0,u.useRef)(!1),V=(0,u.useRef)(null),$e=(0,u.useRef)(null),Ue=(0,u.useRef)(null),Dt=()=>{V.current!==null&&(window.clearTimeout(V.current),V.current=null)};if((0,u.useEffect)(()=>{O.current=!1,l("idle"),m(!1),i(!1),p(""),v(!1),R(!1),_(!1),te(!1),Ie([]),me(null),fe(null)},[n?.current,n?.latest]),(0,u.useEffect)(()=>{n&&i(n.versionLookupOk===!1)},[n]),(0,u.useEffect)(()=>{a||v(!1)},[a]),(0,u.useEffect)(()=>()=>Dt(),[]),(0,u.useEffect)(()=>{if(!a)return;let h=M=>{$e.current?.contains(M.target)||r(!1)},k=M=>{M.key==="Escape"&&(r(!1),Ue.current?.focus())};return document.addEventListener("pointerdown",h),document.addEventListener("keydown",k),()=>{document.removeEventListener("pointerdown",h),document.removeEventListener("keydown",k)}},[a]),!n)return null;let H=n.behind&&!!n.latest,be=!n.latest,ge=H&&n.updateSupported&&!n.localDevInstall&&n.node.ok,_e=n.updateSupported&&!n.localDevInstall&&n.node.ok,T=o==="updating"||o==="restarting",At=n.updateCommand??"botmux update",ve=`v${n.current}`,Ht=n.latest?`v${n.latest}`:"",Bt=n.localDevInstall?s("update.localDev"):n.updateSupported?n.node.ok?"":s("update.nodeWarn",{version:n.node.version,required:n.node.required}):s("update.unsupportedInstall"),Fe=h=>{let k=Date.now(),M=async()=>{try{let z=await fetch("/__selfcheck",{cache:"no-store"}),W=await z.text();if(z.ok&&W&&W!==h){location.reload();return}}catch{}if(Date.now()-k>9e4){O.current=!1,l("error"),p(s("update.restartSlow"));return}V.current=window.setTimeout(()=>{M()},2e3)};V.current=window.setTimeout(()=>{M()},3e3)},It=async()=>{if(H){if(!ge){r(!1),location.hash="#/settings";return}if(!O.current){O.current=!0,fe(null),i(!1),p("");try{let h=await Mt(),k=await Le(fetch,l);if(!k.restarted){O.current=!1,l("error"),p(s("update.restartFailed",{detail:k.restartError??"unknown"}));return}Fe(h)}catch(h){O.current=!1,l("error"),p(h instanceof Error?h.message:String(h))}}}},ye=async(h=!1)=>{if(x)return!F;_(!0),te(!1);try{let k=await fetch(`/api/update/versions${h?"?refresh=1":""}`,{cache:"no-store"}),M=await k.json().catch(()=>null);if(!M||!Array.isArray(M.versions))throw new Error("Invalid rollback versions response");let z=M.versions.filter(B=>{if(!B||typeof B!="object")return!1;let j=B;return typeof j.version=="string"&&(typeof j.publishedAt=="string"||j.publishedAt===null)}).slice(0,3);Ie(z),me(B=>z.some(j=>j.version===B)?B:null),R(!0);let W=k.ok&&M.ok===!0;return te(!W),W}catch{return R(!0),te(!0),!1}finally{_(!1)}},$t=async()=>{if(!(!y||!_e||x||O.current)){O.current=!0,fe(y),i(!1),p("");try{let h=await Mt();await Le(fetch,l,y),Fe(h)}catch(h){O.current=!1,l("error"),p(h instanceof Error?h.message:String(h))}}},Ut=async()=>{if(!(d||T)){m(!0),i(!1);try{let h=await e.onRefresh();E&&await ye(!0),i(!h)}finally{m(!1)}}},we=o==="updating"?C?s("update.rollbackInstalling",{version:C}):s("update.updating",{command:At}):o==="restarting"?C?s("update.rollbackRestarting",{version:C}):s("update.restarting"):o==="error"?C?s("update.rollbackFailed",{detail:f}):s("update.updateFailed",{detail:f}):c?s("update.topbarRefreshFailed"):H?ge?s("update.versionUpgradePrompt",{version:Ht}):Bt:n.latest?s("update.upToDate"):s("update.checkUnavailable"),_t=ge?o==="error"?s("update.topbarRetry"):o==="idle"?s("update.topbarAction"):s("update.topbarWorking"):s("update.topbarReview"),ne=o==="error"||c&&be?{className:"is-error",symbol:"!"}:H?{className:"has-update",symbol:"\u2191"}:be?{className:"is-unknown",symbol:"?"}:{className:"is-current",symbol:"\u2713"};return(0,t.jsxs)("div",{ref:$e,className:`dashboard-version-control${a?" is-open":""}`,children:[(0,t.jsxs)("button",{ref:Ue,type:"button",className:`dashboard-version-chip${H?" has-update":""}${be?" is-unknown":""}${o==="error"?" is-error":""}`,"aria-haspopup":"dialog","aria-expanded":a,"aria-label":`${ve}. ${we}`,title:we,onClick:()=>r(h=>!h),children:[(0,t.jsx)("span",{children:ve}),T?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):(0,t.jsx)("span",{className:`dashboard-version-state ${ne.className}`,"aria-hidden":"true",children:ne.symbol})]}),a?(0,t.jsxs)("section",{className:"dashboard-version-popover",role:"dialog","aria-modal":"false","aria-labelledby":"dashboard-version-title",children:[(0,t.jsxs)("header",{className:"dashboard-version-popover-head",children:[(0,t.jsx)("strong",{id:"dashboard-version-title",children:s("update.current")}),(0,t.jsxs)("div",{className:"dashboard-version-head-actions",children:[(0,t.jsx)("button",{type:"button",className:`dashboard-version-refresh${d?" is-refreshing":""}`,"aria-label":s(d?"update.topbarRefreshing":"update.topbarRefresh"),title:s(d?"update.topbarRefreshing":"update.topbarRefresh"),disabled:d||x||T,onClick:()=>{Ut()},children:(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M13.2 5.7A5.8 5.8 0 1 0 13 10.8"}),(0,t.jsx)("path",{d:"M13.2 2.8v2.9h-2.9"})]})}),(0,t.jsx)("button",{type:"button",className:"dashboard-version-close","aria-label":s("update.topbarClose"),onClick:()=>r(!1),children:"\xD7"})]})]}),(0,t.jsxs)("div",{className:"dashboard-version-popover-body",children:[(0,t.jsxs)("div",{className:"dashboard-version-current",children:[(0,t.jsx)("strong",{children:ve}),(0,t.jsx)("span",{className:ne.className,"aria-hidden":"true",children:T?(0,t.jsx)("span",{className:"dashboard-update-spinner"}):ne.symbol})]}),(0,t.jsx)("p",{className:`dashboard-version-message${o==="error"||c?" is-error":""}`,role:o==="error"||c?"alert":"status","aria-live":"polite",children:we}),(0,t.jsxs)("a",{className:"dashboard-version-release-link",href:"https://github.com/deepcoldy/botmux/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M8 1.5a6.5 6.5 0 0 0-2.1 12.65c.33.06.45-.14.45-.32v-1.26c-1.84.4-2.23-.78-2.23-.78-.3-.76-.73-.96-.73-.96-.6-.41.05-.4.05-.4.66.05 1 .68 1 .68.59 1 1.54.72 1.92.55.06-.42.23-.72.42-.88-1.47-.17-3.02-.74-3.02-3.28 0-.72.26-1.32.68-1.78-.07-.17-.3-.84.07-1.75 0 0 .56-.18 1.79.68A6.2 6.2 0 0 1 8 4.63a6.2 6.2 0 0 1 1.71.22c1.23-.86 1.79-.68 1.79-.68.37.91.14 1.58.07 1.75.42.46.68 1.06.68 1.78 0 2.55-1.55 3.11-3.03 3.28.24.21.45.61.45 1.23v1.62c0 .18.12.38.46.32A6.5 6.5 0 0 0 8 1.5Z"})}),(0,t.jsx)("span",{children:s("update.changelogViewOnGitHub")})]}),(H||E)&&n.installs.multiple?(0,t.jsxs)("details",{className:"dashboard-version-installs",children:[(0,t.jsx)("summary",{children:s("update.multiInstallWarn")}),(0,t.jsx)("ul",{children:n.installs.entries.map(h=>(0,t.jsx)("li",{children:h.binPath},h.binPath))})]}):null,_e?(0,t.jsxs)("details",{className:"dashboard-version-rollback",open:E,"aria-busy":x,onToggle:h=>{let k=h.currentTarget.open;v(k),k&&!w&&!x&&ye()},children:[(0,t.jsxs)("summary",{children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,t.jsx)("path",{d:"M8 4.8V8l2.2 1.3"})]}),(0,t.jsx)("span",{children:s("update.rollbackTitle")}),(0,t.jsx)("span",{className:"dashboard-version-rollback-chevron","aria-hidden":"true",children:"\u2304"})]}),(0,t.jsxs)("div",{className:"dashboard-version-rollback-body",children:[x&&K.length===0?(0,t.jsxs)("p",{className:"dashboard-version-rollback-status",role:"status","aria-live":"polite",children:[(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}),s("update.rollbackLoading")]}):null,F?(0,t.jsxs)("p",{className:"dashboard-version-rollback-load-error",role:"alert",children:[(0,t.jsx)("span",{children:s("update.rollbackLoadFailed")}),(0,t.jsx)("button",{type:"button",disabled:x,onClick:()=>{ye(!0)},children:s("update.rollbackRetry")})]}):null,w&&!x&&!F&&K.length===0?(0,t.jsx)("p",{className:"dashboard-version-rollback-status",children:s("update.rollbackEmpty")}):null,K.length>0?(0,t.jsxs)("fieldset",{disabled:T||x||F,children:[(0,t.jsx)("legend",{children:s("update.rollbackHint")}),(0,t.jsx)("div",{className:"dashboard-version-rollback-options",children:K.map(h=>(0,t.jsxs)("label",{className:y===h.version?"is-selected":"",children:[(0,t.jsx)("input",{type:"radio",name:"dashboard-rollback-version",value:h.version,checked:y===h.version,onChange:()=>me(h.version)}),(0,t.jsxs)("strong",{children:["v",h.version]}),h.publishedAt?(0,t.jsx)("time",{dateTime:h.publishedAt,children:Mn(h.publishedAt)}):null]},h.version))})]}):null,y?(0,t.jsxs)("p",{id:"dashboard-version-rollback-risk",className:"dashboard-version-rollback-risk",role:"note",children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M7.1 2.3 1.8 12a1 1 0 0 0 .9 1.5h10.6a1 1 0 0 0 .9-1.5L8.9 2.3a1 1 0 0 0-1.8 0Z"}),(0,t.jsx)("path",{d:"M8 5.5v3.6M8 11.6h.01"})]}),(0,t.jsxs)("span",{children:[s("update.rollbackRisk",{version:y})," ",(0,t.jsx)("a",{href:`https://github.com/deepcoldy/botmux/releases/tag/v${encodeURIComponent(y)}`,target:"_blank",rel:"noopener noreferrer","aria-label":s("update.rollbackReleaseNotesA11y",{version:y}),children:s("update.rollbackReleaseNotes",{version:y})})]})]}):null,K.length>0?(0,t.jsxs)("button",{type:"button",className:"dashboard-version-rollback-action",disabled:!y||x||F||T,"aria-describedby":y?"dashboard-version-rollback-risk":void 0,onClick:()=>{$t()},children:[T&&C?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,y?o==="error"&&C===y?s("update.rollbackRetry"):s("update.rollbackAction",{version:y}):s("update.rollbackSelect")]}):null]})]}):null]}),H&&!E&&!C?(0,t.jsxs)("footer",{className:"dashboard-version-popover-actions",children:[(0,t.jsx)("button",{type:"button",className:"dashboard-version-secondary",onClick:()=>r(!1),children:T?s("update.topbarClose"):s("update.topbarLater")}),(0,t.jsxs)("button",{type:"button",className:"dashboard-version-primary",disabled:T,onClick:()=>{It()},children:[T?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,_t]})]}):null]}):null]})}function Sn(){let e=xn(),[n,a]=(0,u.useState)(!1),[r,o]=(0,u.useState)(!1),[l,d]=(0,u.useState)(!1),m=(0,u.useRef)(e.attention),c=(0,u.useRef)(null),i=()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)};(0,u.useEffect)(()=>{let p=()=>a(!0);return window.addEventListener(ie,p),()=>window.removeEventListener(ie,p)},[]),(0,u.useEffect)(()=>{let p=()=>o(!0);return window.addEventListener(He,p),he&&o(!0),()=>window.removeEventListener(He,p)},[]),(0,u.useEffect)(()=>()=>i(),[]),(0,u.useEffect)(()=>{let p=m.current;if(m.current=e.attention,e.attention===0){i(),d(!1);return}p!==0||document.body.classList.contains("theme-menu-open")||(d(!0),i(),c.current=window.setTimeout(()=>{c.current=null,d(!1)},4e3))},[e.attention]);let f=()=>{he=!1,o(!1)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"aurora","aria-hidden":"true",children:[(0,t.jsx)("i",{className:"a1"}),(0,t.jsx)("i",{className:"a2"}),(0,t.jsx)("i",{className:"a3"})]}),(0,t.jsxs)("div",{className:"app-shell",children:[(0,t.jsxs)("header",{className:"topbar",children:[(0,t.jsx)("div",{className:"topbar-left",children:(0,t.jsxs)("div",{className:"topbar-brand-block",children:[(0,t.jsxs)("a",{className:"brand",href:"#/",children:[(0,t.jsx)("span",{className:"brand-mark","aria-hidden":"true",children:(0,t.jsx)("img",{className:"brand-logo-img",src:"/assets/brand-logo.png",alt:"",decoding:"sync",loading:"eager",fetchPriority:"high"})}),(0,t.jsx)("strong",{className:"brand-wordmark",children:"Botmux"}),(0,t.jsx)("span",{className:"brand-product",children:"Dashboard"})]}),(0,t.jsx)(Nn,{status:Lt,onRefresh:()=>Be(!0)})]})}),(0,t.jsxs)("div",{className:"topbar-actions",children:[(0,t.jsx)(En,{summary:e,autoOpen:l}),(0,t.jsxs)("div",{className:"topbar-tool-group",children:[(0,t.jsx)("button",{type:"button",className:"topbar-locale-toggle","aria-label":g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",title:g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",onClick:()=>Tn(g.locale==="zh"?"en":"zh"),children:g.locale==="zh"?"CN":"EN"}),(0,t.jsx)(wn,{}),(0,t.jsxs)("a",{className:"topbar-docs-link",href:"https://bytedance.aiforce.cloud/app/app_4k9smq6rdxher/",target:"_blank",rel:"noopener noreferrer",title:s("nav.docs"),"aria-label":s("nav.docs"),children:[Y((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})),(0,t.jsx)("span",{children:s("nav.docs")})]})]}),(0,t.jsxs)("span",{className:"topbar-owner",title:U?.name,"aria-label":U?.name??"Owner",children:[(0,t.jsx)("span",{className:"topbar-owner-placeholder","aria-hidden":"true",children:Y((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"6",r:"2.4"}),(0,t.jsx)("path",{d:"M3.7 13c.7-2.5 2.2-3.7 4.3-3.7s3.6 1.2 4.3 3.7"})]}))}),U?.avatarUrl?(0,t.jsx)("img",{className:"topbar-owner-img",src:U.avatarUrl,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:p=>{p.currentTarget.remove()}}):null]})]})]}),(0,t.jsxs)("div",{className:"chrome-body",children:[(0,t.jsxs)("aside",{className:"sidebar",children:[A?(0,t.jsxs)("div",{className:"sidebar-create-actions",children:[(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>xe(),children:[Y((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"}),(0,t.jsx)("path",{d:"M8 4.9v4.2M5.9 7h4.2"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createSession")})]}),(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>{Ye()},children:[Y((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"6",width:"11",height:"7.5",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9.75",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9.75",r:"1"}),(0,t.jsx)("path",{d:"M8 6V3.8M6.3 1.9h3.4"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createBot")})]})]}):null,(0,t.jsx)("nav",{className:"sidebar-nav","aria-label":"Dashboard",children:fn().filter(p=>A||!p.manage).map(p=>(0,t.jsxs)("a",{href:p.href,"data-route":p.id,className:[bn(p),p.plugin?"sidebar-plugin-item":""].filter(Boolean).join(" ")||void 0,title:p.plugin?kt(p):void 0,children:[Y(p.icon),(0,t.jsx)("span",{className:"sidebar-nav-label",children:kt(p)}),p.id==="settings"&&Q?(0,t.jsx)(Xe,{className:"nav-update-tip",label:Rt(),trigger:(0,t.jsx)("span",{className:"nav-update-dot","aria-hidden":"true"}),preventClick:!1,focusable:!1,children:Rt()}):null]},p.id))})]}),(0,t.jsxs)("div",{className:"workspace",children:[(0,t.jsx)("dialog",{id:"create-session-modal",className:"create-session-modal"}),(0,t.jsx)(Ze,{open:n,onClose:()=>a(!1)}),(0,t.jsx)("main",{id:"root",ref:yn})]})]})]}),(0,t.jsx)(Rn,{open:r,onClose:f})]})}function S(){Ot?.render((0,t.jsx)(Sn,{}))}function Tn(e){g.setLocale(e),Dn(e)}var he=!1;function Ln(){he||(he=!0,window.dispatchEvent(new Event(He)))}var Ce;function On(){let e=document.getElementById("readonly-toast");e||(e=document.createElement("div"),e.id="readonly-toast",e.style.cssText="position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;border-radius:var(--radius-lg);font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)",document.body.appendChild(e)),e.textContent="\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u6B64\u64CD\u4F5C\u9700\u8981\u6388\u6743\u94FE\u63A5\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09",e.style.display="block",Ce&&window.clearTimeout(Ce),Ce=window.setTimeout(()=>{e.style.display="none"},4e3)}var Pn=window.fetch.bind(window);window.fetch=async function(...n){let a=await Pn(...n);if(a.status===401){let r=(n[1]?.method??"GET").toUpperCase();(r==="GET"||r==="HEAD")&&!Ae?Ln():On()}return a};async function Cn(){try{let e=await fetch("/api/settings");if(e.ok){let n=await e.json();A=!!n.authed,g.authed=A,Ae=!!(n.settings&&n.settings.publicReadOnly),g.publicReadOnly=Ae;let a=Ct()??oe(n.lang);a&&g.setLocale(a)}}catch{}}async function Nt(){try{let e=await fetch("/api/plugins/dashboard");if(!e.ok)return;let n=await e.json();Z=(Array.isArray(n?.plugins)?n.plugins:[]).filter(r=>r.pinned===!0&&typeof r.route=="string").map(r=>({id:`plugin:${r.pluginId}:${r.id}`,href:r.route,label:r.displayName||r.pluginId,manage:!0,plugin:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M5.2 2.2h5.6v3.1l1.7 1.7-1.4 1.4-1-1v6.4H5.9V7.4l-1 1L3.5 7l1.7-1.7z"}),(0,t.jsx)("path",{d:"M8 13.8v1"})]})})),S()}catch{}}async function Dn(e){if(A)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}async function Be(e=!1){if(!A)return!1;try{let n=await fetch(`/api/update/status${e?"?refresh=1":""}`,{cache:"no-store"});if(!n.ok)return!1;let a=await n.json();Lt=a;let r=Array.isArray(a.cliUpdates)?a.cliUpdates.find(o=>o?.updateAvailable===!0&&o?.latest):null;return a.behind===!0&&a.latest?(Q=!0,ue="botmux",ee=String(a.latest)):r?(Q=!0,ue="codex",ee=String(r.latest)):(Q=!1,ue=null,ee=null),S(),a.versionLookupOk!==!1}catch{return!1}}function An(e){e.innerHTML='<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)"><h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">\u6B64\u9875\u9700\u8981\u6388\u6743\u94FE\u63A5</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">\u4F60\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u7BA1\u7406\u9875\uFF08\u7FA4\u89D2\u8272 / Profiles / Bot \u914D\u7F6E / \u56E2\u961F / Webhook\uFF09\u9700\u8981\u6388\u6743\u94FE\u63A5\u3002\u8FD0\u884C <code>botmux dashboard</code> \u83B7\u53D6\u6700\u65B0\u94FE\u63A5\u540E\u5373\u53EF\u7BA1\u7406\u3002</p><a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-lg);text-decoration:none;font-size:14px">\u8FD4\u56DE\u603B\u89C8</a></section>'}async function De(){let e=lt(D),n=location.hash||"#/";if(Tt=n,S(),!A&&pn.some(a=>n.startsWith("#/"+a))){An(Oe()),D.rerenderOnUiChange=!0;return}if(n.startsWith("#/v3")){window.location.replace(`#/workflows${n.slice(4)}`);return}else if(n.startsWith("#/legacy-workflow")){window.location.replace("#/workflows");return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(n)){window.location.replace("#/workflows");return}if(n.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${n.slice(15)}`);return}try{let a=rt(n);await dt(D,e,Oe(),a?a.load:ot,{rerenderOnUiChange:a?a.rerenderOnUiChange:!1}),e===D.seq&&A&&vn()}catch(a){if(e!==D.seq||pt(a,{href:window.location.href,hash:n,getSessionStorage:()=>window.sessionStorage,reload:()=>window.location.reload()}))return;Oe().innerHTML=`<section class="page"><div class="empty">Dashboard route failed: ${Ve(String(a))}</div></section>`,D.pageDispose=null,D.rerenderOnUiChange=!0}}function Hn(){try{let e=JSON.parse(window.localStorage.getItem(Pt)??"null");if(e?.avatarUrl)return{avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0}}catch{}return null}function Bn(){U=Hn(),S(),fetch("/api/owner-profile").then(e=>e.ok?e.json():null).then(e=>{if(!(!e?.ok||!e.avatarUrl)){U={avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0};try{window.localStorage.setItem(Pt,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}S()}}).catch(()=>{})}(async()=>{g.init(),Et();let e=document.getElementById("app-root");if(!e)throw new Error("missing dashboard app root");yt(e),Ot=(0,St.createRoot)(e),S(),g.on(()=>{S(),D.rerenderOnUiChange&&De()}),re.on(()=>{S()}),await Cn(),S(),window.addEventListener(Ge,()=>{Nt()}),Nt(),Be(),window.setInterval(()=>{document.hidden||Be()},30*6e4),Bn();try{await Ke()}catch(n){console.error("botmux dashboard bootstrap failed",n),re.setOnline(!1)}We().then(S),Qe().then(S),window.addEventListener("hashchange",()=>{Et()||De()}),De()})();export{Ln as showAuthExpiredOverlay,On as showReadOnlyToast};
1
+ import{a as at,b as rt}from"./chunks/chunk-EJDYUINZ.js";import{b as Me}from"./chunks/chunk-SZOB6VK2.js";import{a as Qe}from"./chunks/chunk-BD3PZGH2.js";import{a as ce,b as nt,c as ot}from"./chunks/chunk-WXPMNEYV.js";import{i as tt}from"./chunks/chunk-QFMH6ITB.js";import{A as Xe,C as Ye,F as Ze,G as de,a as ie,b as je,e as le,r as g,s,t as Ge,u as Je}from"./chunks/chunk-H7P5UV4W.js";import{a as Xt,c as Yt,d as et}from"./chunks/chunk-5THX4DI2.js";import{c as se}from"./chunks/chunk-7SZRL6FY.js";var Bt=se(Yt(),1),u=se(Xt(),1);var Ne="botmux:close-theme-menu",Zt={palette:'<circle cx="13.5" cy="6.5" r=".5" fill="currentColor"/><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"/><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"/><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"/><path d="M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>',moon:'<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/>',cpu:'<path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/>',zap:'<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>',chevron:'<path d="m6 9 6 6 6-6"/>'},it=[{labelKey:"theme.base",options:[{value:"system",labelKey:"status.system",icon:"monitor"},{value:"light",labelKey:"status.light",icon:"sun"},{value:"dark",labelKey:"status.dark",icon:"moon"}]},{labelKey:"theme.skins",options:[{value:"cyber",labelKey:"skin.cyber",icon:"cpu"},{value:"fallout",labelKey:"skin.fallout",icon:"zap"}]}],st=it.flatMap(e=>e.options),T=!1,J=null,X=null,Qt=70,en=120;function Te(e){return`<svg class="tm-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${Zt[e]??""}</svg>`}function tn(e){return e.replace(/[&<>"]/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[n])}function lt(){let e=document.getElementById("theme-menu"),n=document.getElementById("theme-menu-btn"),o=document.getElementById("theme-menu-pop");if(!e||!n||!o||e.dataset.themeMenuInit==="1")return;e.dataset.themeMenuInit="1",o.innerHTML=it.map(c=>`<div class="tm-group" data-label-key="${c.labelKey}"></div>`+c.options.map(f=>`<button type="button" class="tm-item" role="option" data-value="${f.value}"><span class="tm-ic">${Te(f.icon)}</span><span class="tm-label" data-label-key="${f.labelKey}"></span></button>`).join("")).join("");let a=()=>{if(!T)return;let c=n.getBoundingClientRect(),f=12,p=Math.min(Math.max(o.offsetWidth||216,216),Math.max(0,window.innerWidth-f*2)),E=f+p/2,v=window.innerWidth-f-p/2,w=c.left+c.width/2,R=Math.min(Math.max(w,E),Math.max(E,v)),x=Math.max(180,window.innerHeight-c.bottom-20);o.style.setProperty("--theme-menu-pop-left",`${Math.round(R)}px`),o.style.setProperty("--theme-menu-pop-top",`${Math.round(c.bottom+8)}px`),o.style.setProperty("--theme-menu-pop-max-height",`${Math.round(x)}px`)},r=c=>{J!=null&&(window.clearTimeout(J),J=null),X!=null&&(window.clearTimeout(X),X=null),T=c,n.setAttribute("aria-expanded",String(T)),document.body.classList.toggle("theme-menu-open",T),T?(o.hidden=!1,a(),window.requestAnimationFrame(()=>e.classList.add("open"))):(e.classList.remove("open"),X=window.setTimeout(()=>{X=null,T||(o.hidden=!0)},en))},i=()=>r(!0),l=()=>{J==null&&(J=window.setTimeout(()=>r(!1),Qt))},m=c=>{c.pointerType!=="touch"&&i()},d=c=>{c.pointerType!=="touch"&&l()};e.addEventListener("pointerenter",m),e.addEventListener("pointerleave",d),o.addEventListener("pointerenter",m),o.addEventListener("pointerleave",d),n.addEventListener("click",c=>{c.stopPropagation(),r(!T)}),n.addEventListener("focus",()=>{n.matches(":focus-visible")&&i()}),e.addEventListener("focusout",c=>{let f=c.relatedTarget;(!(f instanceof Node)||!e.contains(f))&&l()}),o.addEventListener("click",c=>{let f=c.target.closest(".tm-item");f&&(g.setTheme(f.dataset.value??"system"),r(!1))}),document.addEventListener("click",c=>{T&&!e.contains(c.target)&&r(!1)}),document.addEventListener("pointermove",c=>{if(!T||c.pointerType==="touch")return;let f=c.target;f instanceof Node&&e.contains(f)||l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&T&&r(!1)}),window.addEventListener("resize",a),window.addEventListener("scroll",a,!0),window.addEventListener(Ne,()=>{T&&r(!1)}),Le()}function Le(){let e=document.getElementById("theme-menu-btn");if(!e)return;let n=st.find(o=>o.value===g.theme)??st[0];e.innerHTML=`<span class="tm-ic">${Te("palette")}</span><span class="tm-current">${tn(s(n.labelKey))}</span><span class="tm-chev">${Te("chevron")}</span>`,document.querySelectorAll("#theme-menu-pop [data-label-key]").forEach(o=>{o.textContent=s(o.dataset.labelKey??"")}),document.querySelectorAll("#theme-menu-pop .tm-item").forEach(o=>{o.classList.toggle("active",o.dataset.value===g.theme)})}function b(e,n,o,a,r=!1){return{id:e,routePrefix:n,rerenderOnUiChange:r,load:async()=>(await o())[a]}}var nn=[{id:"plugins",routePrefix:"#/plugins",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/plugin-page-JXC5F5YV.js");return n=>e.renderPluginPage(n)}},b("workflows","#/workflows",()=>import("./chunks/v3-page-NQ73UA2Q.js"),"renderV3RunsPage"),b("groups","#/groups",()=>import("./chunks/groups-page-3P4TLUMF.js"),"renderGroupsPage"),b("settings","#/settings",()=>import("./chunks/settings-page-TNZEPC7V.js"),"renderSettingsPage"),b("bot-defaults","#/bot-defaults",()=>import("./chunks/bot-defaults-page-O376WSER.js"),"renderBotDefaultsPage"),b("skills","#/skills",()=>import("./chunks/skills-page-7YT5TIX5.js"),"renderSkillsPage"),b("connectors-logs","#/connectors/logs",()=>import("./chunks/connectors-page-IR54AOAI.js"),"renderConnectorsLogsPage"),b("webhook-logs","#/webhook-logs",()=>import("./chunks/connectors-page-IR54AOAI.js"),"renderConnectorsLogsPage"),b("connectors","#/connectors",()=>import("./chunks/connectors-page-IR54AOAI.js"),"renderConnectorsPage"),b("team-manage","#/team/manage",()=>import("./chunks/team-federation-page-NJZKTU7A.js"),"renderTeamManagePage"),b("team","#/team",()=>import("./chunks/team-federation-page-NJZKTU7A.js"),"renderTeamFederationPage"),b("roles-profile","#/roles/profile",()=>import("./chunks/roles-page-WJVB52ET.js"),"renderRoleProfilesPage"),b("roles","#/roles",()=>import("./chunks/roles-page-WJVB52ET.js"),"renderRolesPage"),b("schedules","#/schedules",()=>import("./chunks/schedules-page-RVRWHP4V.js"),"renderSchedulesPage"),b("whiteboards","#/whiteboards",()=>import("./chunks/whiteboards-page-DSM3MDMN.js"),"renderWhiteboardsPage"),b("monitoring","#/monitoring",()=>import("./chunks/monitoring-page-IOWFSNVC.js"),"renderMonitoringPage"),b("sessions","#/sessions",()=>import("./chunks/sessions-page-KWLGBX6G.js"),"renderSessionsPage"),b("monitor-room","#/monitor-room",()=>import("./chunks/monitor-room-QWCWL3SX.js"),"renderMonitorRoomPage",!0),b("office","#/office",()=>import("./chunks/office-page-5AUPEHZP.js"),"renderOfficePage"),b("insights","#/insights",()=>import("./chunks/insights-page-TDCZV56A.js"),"renderInsightsPage")];function dt(e){return nn.find(n=>n.exact?e===n.routePrefix:e.startsWith(n.routePrefix))}async function ct(){let e=await import("./chunks/overview-page-QJMI6NLW.js");return n=>e.renderOverviewPage(n)}function pt(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function ht(e){let n=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),n}function ut(e,n){return n===e.seq}async function mt(e,n,o,a,r={}){let i=await a();if(!ut(e,n))return!1;let l=i(o);return ut(e,n)?(e.pageDispose=typeof l=="function"?l:null,e.rerenderOnUiChange=r.rerenderOnUiChange??!0,!0):(typeof l=="function"&&l(),!1)}var on="botmux.dashboard.stale-chunk-reload.v1:",an=/Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|dynamically imported module/i,rn=/\b(?:https?:\/\/|\/assets\/)\S+?\.js\b/;function ft(e){return e instanceof Error?`${e.name}: ${e.message}`:String(e)}function bt(e){return an.test(ft(e))}function sn(e,n){let r=ft(e).match(rn)?.[0]||`${n.href}|${n.hash}`;return`${on}${r.slice(-240)}`}function ln(e,n){if(!bt(e))return!1;let o=sn(e,n);try{if(n.sessionStorage.getItem(o)==="1")return!1;n.sessionStorage.setItem(o,"1")}catch{return!1}return n.reload(),!0}function gt(e,n){if(!bt(e))return!1;let o;try{o=n.getSessionStorage()}catch{return!1}return ln(e,{...n,sessionStorage:o})}var dn=new Set(["auto","scroll","overlay"]),ue=28,S=3,I=6,vt=!1,Et=null,yt=new WeakMap,P=new Map,wt=null,xt=null,Se=0,Oe=0,Y=null;function cn(e){return e.closest("dialog[open]")??document.body}function un(e){let n=yt.get(e);if(n?.isConnected)return n;let o=document.createElement("div");return o.className="floating-scrollbar-layer",o.setAttribute("aria-hidden","true"),e.appendChild(o),yt.set(e,o),o}function pn(e){return dn.has(e)}function Pe(e,n){let o=getComputedStyle(e),a=n==="y"?o.overflowY:o.overflowX;return pn(a)?n==="y"?e.scrollHeight-e.clientHeight>1:e.scrollWidth-e.clientWidth>1:!1}function hn(e){if(!e.isConnected||e.closest("[hidden]"))return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>0&&n.right>0&&n.top<window.innerHeight&&n.left<window.innerWidth}function mn(e){return[e,...Array.from(e.querySelectorAll("*"))].filter(o=>hn(o)&&(Pe(o,"x")||Pe(o,"y")))}function pe(e){e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.track.remove()}function fn(e,n){let o=P.get(e);o||(o={},P.set(e,o));let a=o[n],r=cn(e),i=un(r);if(a?.track.parentElement===i)return a;a&&pe(a);let l=document.createElement("div"),m=document.createElement("div");l.className=`floating-scrollbar floating-scrollbar-${n}`,m.className="floating-scrollbar-thumb",l.appendChild(m),i.appendChild(l);let d={target:e,axis:n,track:l,thumb:m,hideTimer:void 0};return o[n]=d,d}function Ce(e,n=!1){e.track.classList.add("is-visible"),e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.hideTimer=n?void 0:window.setTimeout(()=>{e.track.classList.remove("is-visible","is-active"),e.hideTimer=void 0},900)}function bn(e){let{target:n,axis:o,track:a,thumb:r}=e,i=n.getBoundingClientRect();if(o==="y"){let E=Math.max(0,i.top+S),v=Math.min(window.innerHeight,i.bottom-S),w=Math.max(0,v-E);if(w<ue||n.scrollHeight<=n.clientHeight){a.hidden=!0;return}let R=Math.max(ue,Math.round(w*n.clientHeight/n.scrollHeight)),x=Math.max(1,n.scrollHeight-n.clientHeight),K=Math.round((w-R)*n.scrollTop/x);a.hidden=!1,a.style.left=`${Math.min(window.innerWidth-I-S,Math.max(S,i.right-I-S))}px`,a.style.top=`${E}px`,a.style.width=`${I}px`,a.style.height=`${w}px`,r.style.width="100%",r.style.height=`${R}px`,r.style.transform=`translate3d(0, ${K}px, 0)`;return}let l=Math.max(0,i.left+S),m=Math.min(window.innerWidth,i.right-S),d=Math.max(0,m-l);if(d<ue||n.scrollWidth<=n.clientWidth){a.hidden=!0;return}let c=Math.max(ue,Math.round(d*n.clientWidth/n.scrollWidth)),f=Math.max(1,n.scrollWidth-n.clientWidth),p=Math.round((d-c)*n.scrollLeft/f);a.hidden=!1,a.style.left=`${l}px`,a.style.top=`${Math.min(window.innerHeight-I-S,Math.max(S,i.bottom-I-S))}px`,a.style.width=`${d}px`,a.style.height=`${I}px`,r.style.width=`${c}px`,r.style.height="100%",r.style.transform=`translate3d(${p}px, 0, 0)`}function $(){Se||(Se=window.requestAnimationFrame(()=>{Se=0,vn()}))}function gn(){Oe||(Oe=window.setTimeout(()=>{Oe=0,$()},120))}function vn(){let e=Et;if(!e)return;let n=new Set(mn(e));for(let[o,a]of P)n.has(o)||(a.x&&pe(a.x),a.y&&pe(a.y),P.delete(o));for(let o of n){let a=o===Y;for(let r of["x","y"]){let i=P.get(o);if(!Pe(o,r)){let m=i?.[r];m&&(pe(m),delete i?.[r]);continue}let l=fn(o,r);bn(l),a&&Ce(l,!0)}}}function yn(e){if(!(e instanceof HTMLElement))return;let n=P.get(e);if(n)for(let o of Object.values(n))o&&(o.track.classList.add("is-active"),Ce(o))}function wn(e){for(let n=e;n;n=n.parentElement)if(n instanceof HTMLElement&&P.has(n))return n;return null}function kt(e){if(Y===e)return;let n=Y?P.get(Y):void 0;if(Y=e,n)for(let a of Object.values(n))a?.track.classList.remove("is-visible");let o=e?P.get(e):void 0;if(o)for(let a of Object.values(o))a&&Ce(a,!0)}function Rt(e){vt||(vt=!0,Et=e,document.documentElement.classList.add("floating-scrollbars-on"),wt=typeof ResizeObserver>"u"?null:new ResizeObserver($),wt?.observe(e),xt=new MutationObserver(n=>{for(let o of n){let a=o.target;if(!(a instanceof Element&&a.closest(".floating-scrollbar-layer"))){gn();return}}}),xt.observe(e,{attributes:!0,attributeFilter:["class","style","hidden","open"],childList:!0,subtree:!0}),document.addEventListener("scroll",n=>{yn(n.target),$()},!0),window.addEventListener("resize",$),window.addEventListener("hashchange",$),document.addEventListener("pointermove",n=>{kt(wn(document.elementFromPoint(n.clientX,n.clientY)))}),document.addEventListener("pointerleave",()=>kt(null)),$())}var Mt=!1,U=null,he=null,_=null;function Nt(){if(U)return U;let e=document.createElement("div");return e.className="icon-tip",e.setAttribute("role","tooltip"),e.style.display="none",document.body.appendChild(e),U=e,e}function xn(e){let n=Nt(),o=e.getBoundingClientRect(),a=n.offsetWidth,r=n.offsetHeight,i=8,l=o.top<r+i+4,m=o.left+o.width/2-a/2;m=Math.min(Math.max(m,6),window.innerWidth-a-6);let d=l?o.bottom+i:o.top-r-i;n.style.left=`${Math.round(m)}px`,n.style.top=`${Math.round(d)}px`,n.dataset.placement=l?"bottom":"top"}function Z(){_&&(clearTimeout(_),_=null),he=null,U&&(U.style.display="none",U.classList.remove("show"))}function Tt(e){let n=e.getAttribute("data-tip");if(!n)return;he=e;let o=Nt();o.textContent=n,o.style.display="block",o.classList.remove("show"),xn(e),requestAnimationFrame(()=>{he===e&&o.classList.add("show")})}function Ae(e){return e instanceof Element?e.closest("[data-tip]"):null}function Lt(){Mt||typeof document>"u"||(Mt=!0,document.addEventListener("pointerover",e=>{let n=Ae(e.target);!n||n===he||(_&&clearTimeout(_),_=setTimeout(()=>Tt(n),120))}),document.addEventListener("pointerout",e=>{let n=Ae(e.target);if(!n)return;let o=e.relatedTarget instanceof Element?e.relatedTarget:null;o&&(o===n||n.contains(o))||Z()}),document.addEventListener("focusin",e=>{let n=Ae(e.target);n&&Tt(n)}),document.addEventListener("focusout",Z),document.addEventListener("click",Z,!0),window.addEventListener("scroll",Z,!0),window.addEventListener("resize",Z))}async function St(e){let n=await e.json().catch(()=>null);return n&&typeof n=="object"?n:{}}function Ot(e,n){let o=n.detail??n.error;return new Error(typeof o=="string"?o:`HTTP ${e.status}`)}async function De(e,n=()=>{},o){n("updating");let a=await e(o?"/api/update/rollback":"/api/update/run",o?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({version:o})}:{method:"POST"}),r=await St(a);if(!a.ok||r.ok===!1)throw Ot(a,r);if(r.ok!==!0||typeof r.oldVersion!="string"||typeof r.newVersion!="string"||typeof r.changed!="boolean")throw new Error("Invalid update response");if(o&&(r.newVersion!==o||r.changed!==!0))throw new Error("Invalid rollback response");let i={oldVersion:r.oldVersion,newVersion:r.newVersion,changed:r.changed,restarted:!1};if(n("restarting"),o)return{...i,restarted:!0};let l=await e("/api/update/restart",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({update:{oldVersion:i.oldVersion,newVersion:i.newVersion}})}),m=await St(l);if(!l.ok||m.ok===!1)return{...i,restarted:!1,restartError:Ot(l,m).message};if(m.ok!==!0)throw new Error("Invalid restart response");return m.alreadyScheduled===!0?{...i,restarted:!0,alreadyScheduled:!0}:{...i,restarted:!0}}var t=se(et(),1),kn=["roles","role-profiles","bot-defaults","skills","plugins","team","connectors","insights","whiteboards"],Q=[{id:"overview",href:"#/",labelKey:"nav.overview",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"1.5",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"9.1",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"1.5",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"9.1",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"})]})},{id:"sessions",href:"#/sessions",labelKey:"nav.sessions",icon:(0,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"})},{id:"groups",href:"#/groups",labelKey:"nav.groups",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"5.6",cy:"5.8",r:"2.4"}),(0,t.jsx)("circle",{cx:"11",cy:"6.8",r:"1.9"}),(0,t.jsx)("path",{d:"M1.8 13.2c.5-2.4 2-3.6 3.8-3.6s3.3 1.2 3.8 3.6M9.8 12.6c.4-1.7 1.5-2.6 2.8-2.6 1 0 1.9.5 2.4 1.6"})]})},{id:"roles",href:"#/roles",labelKey:"nav.roles",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M8 1.8l5.2 2v3.4c0 3.4-2.2 5.9-5.2 7-3-1.1-5.2-3.6-5.2-7V3.8z"}),(0,t.jsx)("path",{d:"M5.8 8l1.6 1.6 2.8-3"})]})},{id:"monitoring",href:"#/monitoring",labelKey:"nav.monitoring",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 9.2h2.3l1.3-4.8 2.5 8.4 1.8-5.1h4.1"}),(0,t.jsx)("path",{d:"M2 2.5h12v11H2z"})]})},{id:"insights",href:"#/insights",labelKey:"nav.insights",manage:!0,icon:(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("path",{d:"M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"})})},{id:"workflows",href:"#/workflows",labelKey:"nav.workflows",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"3.4",cy:"3.6",r:"1.9"}),(0,t.jsx)("circle",{cx:"3.4",cy:"12.4",r:"1.9"}),(0,t.jsx)("circle",{cx:"12.6",cy:"8",r:"1.9"}),(0,t.jsx)("path",{d:"M5.2 4.4l5.6 2.8M5.2 11.6l5.6-2.8"})]})},{id:"schedules",href:"#/schedules",labelKey:"nav.schedules",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.jsx)("path",{d:"M8 4.5V8l2.4 1.6"})]})},{id:"whiteboards",href:"#/whiteboards",labelKey:"nav.whiteboards",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})},{id:"office",href:"#/office",labelKey:"nav.office",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"3",y:"4",width:"10",height:"7",rx:"2"}),(0,t.jsx)("circle",{cx:"6",cy:"7.5",r:"1"}),(0,t.jsx)("circle",{cx:"10",cy:"7.5",r:"1"}),(0,t.jsx)("path",{d:"M8 4V2M4.5 11v2M11.5 11v2"})]})},{id:"bot-defaults",href:"#/bot-defaults",labelKey:"nav.botDefaults",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"5",width:"11",height:"8",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9",r:"1"}),(0,t.jsx)("path",{d:"M8 5V2.5M5.5 13v1.2M10.5 13v1.2"})]})},{id:"skills",href:"#/skills",labelKey:"nav.skills",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M3 2.5h10v3H3zM3 7h10v6.5H3z"}),(0,t.jsx)("path",{d:"M5.4 9.2h5.2M5.4 11.2h3.8"})]})},{id:"plugins",href:"#/plugins",label:"\u63D2\u4EF6",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M6.4 1.8h3.2v3h2.8v3.2H9.6v2.8H6.4V8H3.6V4.8h2.8z"}),(0,t.jsx)("path",{d:"M2.2 11.8h11.6v2.4H2.2z"})]})},{id:"team",href:"#/team",labelKey:"nav.team",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.jsx)("path",{d:"M1.8 8h12.4M8 1.8c-2 1.8-2 10.6 0 12.4 2-1.8 2-10.6 0-12.4z"})]})},{id:"connectors",href:"#/connectors",labelKey:"nav.connectors",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"}),(0,t.jsx)("rect",{x:"3.5",y:"6.5",width:"9",height:"7",rx:"2"})]})},{id:"settings",href:"#/settings",labelKey:"nav.settings",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M8 1.75 9.35 2.05 10 3.28l1.38.3 1.04-.96.96.96-.96 1.04.3 1.38 1.23.65L14.25 8l-.3 1.35-1.23.65-.3 1.38.96 1.04-.96.96-1.04-.96-1.38.3-.65 1.23L8 14.25l-1.35-.3L6 12.72l-1.38-.3-1.04.96-.96-.96.96-1.04-.3-1.38-1.23-.65L1.75 8l.3-1.35 1.23-.65.3-1.38-.96-1.04.96-.96 1.04.96 1.38-.3.65-1.23z"}),(0,t.jsx)("circle",{cx:"8",cy:"8",r:"2"})]})}],te=[],D=!0,Ue=!1,It=location.hash||"#/",F=null,ne=!1,oe=null,fe=null,$t=null,be=null,Ut=null,A=pt(),_t="botmux.ownerAvatar.v1",En=new Set(["working","analyzing","active","starting"]),_e="botmux:auth-expired";function ee(e){return(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e})}function Pt(e){return e.labelKey?s(e.labelKey):e.label??""}function Rn(e,n){let o=n||"#/";return e.id==="plugins"&&te.some(a=>a.href===o||o.startsWith(`${a.href}?`)||o.startsWith(`${a.href}/`))?!1:e.id==="sessions"&&(o==="#/monitor-room"||o.startsWith("#/monitor-room?")||o.startsWith("#/monitor-room/"))||e.id==="connectors"&&(o==="#/webhook-logs"||o.startsWith("#/webhook-logs?")||o.startsWith("#/webhook-logs/"))?!0:e.href===o||e.href!=="#/"&&(o.startsWith(`${e.href}?`)||o.startsWith(`${e.href}/`))}function Mn(){if(te.length===0)return Q;let e=Q.findIndex(n=>n.id==="plugins");return e<0?[...Q,...te]:[...Q.slice(0,e+1),...te,...Q.slice(e+1)]}function Tn(e){let n=[];return Rn(e,It)&&n.push("active"),e.id==="settings"&&ne&&n.push("nav-has-update"),n.length?n.join(" "):void 0}function Ft(){let e=le(new URLSearchParams(location.search).get("locale"));if(e)return e;let n=location.hash.indexOf("?");return n<0?null:le(new URLSearchParams(location.hash.slice(n+1)).get("locale"))}function Ct(){let e=Ft();return!e||e===g.locale?!1:(g.setLocale(e),!0)}function Nn(){let e=location.hash.indexOf("?");return e<0?null:{path:location.hash.slice(0,e)||"#/",params:new URLSearchParams(location.hash.slice(e+1))}}function Ln(){let e=Nn(),n=e?.params.get("open");if(!e||!n||n!=="bot-onboarding"&&n!=="create-session")return!1;e.params.delete("open");let o=e.params.toString();return history.replaceState(null,"",o?`${e.path}?${o}`:e.path),n==="bot-onboarding"?window.dispatchEvent(new Event(ce)):Me(),!0}function At(){let e=oe?`v${oe}`:"";return fe==="codex"?s("update.navRuntimeBadgeTitle",{version:e}):s("update.navBadgeTitle",{version:e})}function Sn(e){be=e}function He(){if(be)return be;let e=document.getElementById("root");if(!e)throw new Error("dashboard root is not mounted");return be=e,e}function On(){return(0,u.useEffect)(()=>{lt()},[]),(0,u.useEffect)(()=>{Le()}),(0,t.jsxs)("div",{className:"theme-menu",id:"theme-menu",children:[(0,t.jsx)("button",{type:"button",className:"theme-menu-btn",id:"theme-menu-btn","aria-haspopup":"listbox","aria-expanded":"false","aria-label":"Theme",children:(0,t.jsx)("span",{className:"tm-ic",children:(0,t.jsxs)("svg",{className:"tm-svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),(0,t.jsx)("path",{d:"M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"})]})})}),(0,t.jsx)("div",{className:"theme-menu-pop",id:"theme-menu-pop",role:"listbox",hidden:!0})]})}function Pn(){let e=[...ie.sessions.values()],n=e.filter(d=>d.status!=="closed"),o=n.map(d=>({s:d,reason:Ze(d)})).filter(d=>!!d.reason).sort((d,c)=>de(d.s)-de(c.s)),a=new Set(o.map(d=>String(d.s.sessionId??""))),r=n.filter(d=>En.has(String(d.status))&&!a.has(String(d.sessionId??""))).length,i=o[0]??null,l=rt(e).filter(d=>d.online||d.active.length>0).length,m=Math.max(0,n.length-o.length-r);return{working:r,attention:o.length,idle:m,onlineBots:l,attentionNotice:i?{count:o.length,time:Je(de(i.s)),bot:Ye(i.s),reason:i.reason}:null}}function me(e){return(0,t.jsxs)("div",{className:`topbar-status-row${e.hot?" topbar-status-row-hot":""}`,children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("b",{className:e.value>0?"status-count-on":void 0,children:e.value})]})}function Cn(e){let{attention:n,idle:o,working:a}=e.summary,r=a+n+o,i=r===0?"conic-gradient(var(--border) 0 360deg)":(()=>{let l=a/r*360,m=l+n/r*360;return`conic-gradient(var(--accent) 0 ${l}deg, var(--warning) ${l}deg ${m}deg, var(--success) ${m}deg 360deg)`})();return(0,t.jsxs)("div",{className:"topbar-status-donut-wrap","aria-hidden":"true",children:[(0,t.jsx)("div",{className:"topbar-status-donut",style:{background:i}}),(0,t.jsxs)("div",{className:"topbar-status-donut-center",children:[(0,t.jsx)("b",{children:r}),(0,t.jsx)("span",{children:s("overview.openSessions")})]})]})}function Be(){window.dispatchEvent(new Event(Ne))}function An(e){let{autoOpen:n=!1,summary:o}=e,[a,r]=(0,u.useState)(!1),[i,l]=(0,u.useState)(!1),[m,d]=(0,u.useState)(!1),c=(0,u.useRef)(null),f=n&&!i,p=a||f;return(0,u.useEffect)(()=>{n||l(!1)},[n]),(0,u.useEffect)(()=>{if(!p)return;let v=w=>{let R=w.target;R instanceof Node&&c.current?.contains(R)||(r(!1),l(!0))};return document.addEventListener("pointerdown",v),()=>document.removeEventListener("pointerdown",v)},[p]),(0,t.jsxs)("div",{ref:c,className:`topbar-status-menu${f?" topbar-status-auto-open":""}${a?" is-open":""}${m?" suppress-hover":""}`,onPointerEnter:Be,onPointerLeave:()=>d(!1),onFocusCapture:Be,onBlur:v=>{let w=v.relatedTarget;(!(w instanceof Node)||!v.currentTarget.contains(w))&&r(!1)},onKeyDown:v=>{v.key==="Escape"&&(r(!1),l(!0),d(!0),v.currentTarget.querySelector("#status")?.focus())},children:[(0,t.jsx)("button",{type:"button",id:"status",className:"connection-status","aria-haspopup":"true","aria-expanded":p,onClick:()=>{if(Be(),p){r(!1),l(!0),d(!0);return}d(!1),r(!0)},children:s("overview.sessionOverview")}),(0,t.jsxs)("div",{className:"topbar-status-pop",children:[o.attentionNotice?(0,t.jsxs)("a",{className:"topbar-attention-notice",href:"#/sessions",children:[(0,t.jsx)("span",{className:"topbar-attention-dot","aria-hidden":"true"}),(0,t.jsxs)("span",{className:"topbar-attention-copy",children:[(0,t.jsx)("b",{children:s("strip.pending",{count:o.attentionNotice.count})}),(0,t.jsx)("small",{children:s("strip.longestCompact",{time:o.attentionNotice.time,bot:o.attentionNotice.bot,reason:o.attentionNotice.reason})})]}),(0,t.jsx)("span",{className:"topbar-attention-action",children:s("strip.handle")})]}):null,(0,t.jsxs)("div",{className:"topbar-status-list",children:[(0,t.jsx)(me,{label:s("overview.workingSessions"),value:o.working}),(0,t.jsx)(me,{label:s("overview.idleSessions"),value:o.idle}),(0,t.jsx)(me,{label:s("overview.attention"),value:o.attention,hot:o.attention>0}),(0,t.jsx)(me,{label:s("overview.onlineBots"),value:o.onlineBots})]}),(0,t.jsx)(Cn,{summary:o})]})]})}function Dn(e){return e.open?(0,t.jsx)("div",{id:"auth-expired-overlay",className:"auth-expired-overlay",role:"presentation",onClick:n=>{n.target===n.currentTarget&&e.onClose()},children:(0,t.jsxs)("div",{className:"auth-expired-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"auth-expired-title",children:[(0,t.jsx)("h2",{id:"auth-expired-title",children:"\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548"}),(0,t.jsx)("p",{children:"\u5F53\u524D\u94FE\u63A5/\u8BBF\u95EE\u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u6700\u65B0\u6388\u6743\u94FE\u63A5\u91CD\u65B0\u8FDB\u5165\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09\u3002"}),(0,t.jsx)("button",{id:"auth-expired-dismiss",type:"button",className:"primary",onClick:e.onClose,children:"\u77E5\u9053\u4E86"})]})}):null}function Hn(e){let n=new Date(e);if(Number.isNaN(n.getTime()))return e.slice(0,10);try{return new Intl.DateTimeFormat(g.locale==="zh"?"zh-CN":"en-US",{year:"numeric",month:"numeric",day:"numeric"}).format(n)}catch{return e.slice(0,10)}}async function Dt(){let e=await fetch("/__selfcheck",{cache:"no-store"}),n=await e.text();if(!e.ok||!n)throw new Error(s("update.healthCheckFailed"));return n}function Bn(e){let{status:n}=e,[o,a]=(0,u.useState)(!1),[r,i]=(0,u.useState)("idle"),[l,m]=(0,u.useState)(!1),[d,c]=(0,u.useState)(!1),[f,p]=(0,u.useState)(""),[E,v]=(0,u.useState)(!1),[w,R]=(0,u.useState)(!1),[x,K]=(0,u.useState)(!1),[V,ae]=(0,u.useState)(!1),[z,Ke]=(0,u.useState)([]),[y,ve]=(0,u.useState)(null),[C,ye]=(0,u.useState)(null),O=(0,u.useRef)(!1),W=(0,u.useRef)(null),Ve=(0,u.useRef)(null),ze=(0,u.useRef)(null),Kt=()=>{W.current!==null&&(window.clearTimeout(W.current),W.current=null)};if((0,u.useEffect)(()=>{O.current=!1,i("idle"),m(!1),c(!1),p(""),v(!1),R(!1),K(!1),ae(!1),Ke([]),ve(null),ye(null)},[n?.current,n?.latest]),(0,u.useEffect)(()=>{n&&c(n.versionLookupOk===!1)},[n]),(0,u.useEffect)(()=>{o||v(!1)},[o]),(0,u.useEffect)(()=>()=>Kt(),[]),(0,u.useEffect)(()=>{if(!o)return;let h=M=>{Ve.current?.contains(M.target)||a(!1)},k=M=>{M.key==="Escape"&&(a(!1),ze.current?.focus())};return document.addEventListener("pointerdown",h),document.addEventListener("keydown",k),()=>{document.removeEventListener("pointerdown",h),document.removeEventListener("keydown",k)}},[o]),!n)return null;let H=n.behind&&!!n.latest,we=!n.latest,xe=H&&n.updateSupported&&!n.localDevInstall&&n.node.ok,We=n.updateSupported&&!n.localDevInstall&&n.node.ok,L=r==="updating"||r==="restarting",Vt=n.updateCommand??"botmux update",ke=`v${n.current}`,zt=n.latest?`v${n.latest}`:"",Wt=n.localDevInstall?s("update.localDev"):n.updateSupported?n.node.ok?"":s("update.nodeWarn",{version:n.node.version,required:n.node.required}):s("update.unsupportedInstall"),qe=h=>{let k=Date.now(),M=async()=>{try{let q=await fetch("/__selfcheck",{cache:"no-store"}),j=await q.text();if(q.ok&&j&&j!==h){location.reload();return}}catch{}if(Date.now()-k>9e4){O.current=!1,i("error"),p(s("update.restartSlow"));return}W.current=window.setTimeout(()=>{M()},2e3)};W.current=window.setTimeout(()=>{M()},3e3)},qt=async()=>{if(H){if(!xe){a(!1),location.hash="#/settings";return}if(!O.current){O.current=!0,ye(null),c(!1),p("");try{let h=await Dt(),k=await De(fetch,i);if(!k.restarted){O.current=!1,i("error"),p(s("update.restartFailed",{detail:k.restartError??"unknown"}));return}qe(h)}catch(h){O.current=!1,i("error"),p(h instanceof Error?h.message:String(h))}}}},Ee=async(h=!1)=>{if(x)return!V;K(!0),ae(!1);try{let k=await fetch(`/api/update/versions${h?"?refresh=1":""}`,{cache:"no-store"}),M=await k.json().catch(()=>null);if(!M||!Array.isArray(M.versions))throw new Error("Invalid rollback versions response");let q=M.versions.filter(B=>{if(!B||typeof B!="object")return!1;let G=B;return typeof G.version=="string"&&(typeof G.publishedAt=="string"||G.publishedAt===null)}).slice(0,3);Ke(q),ve(B=>q.some(G=>G.version===B)?B:null),R(!0);let j=k.ok&&M.ok===!0;return ae(!j),j}catch{return R(!0),ae(!0),!1}finally{K(!1)}},jt=async()=>{if(!(!y||!We||x||O.current)){O.current=!0,ye(y),c(!1),p("");try{let h=await Dt();await De(fetch,i,y),qe(h)}catch(h){O.current=!1,i("error"),p(h instanceof Error?h.message:String(h))}}},Gt=async()=>{if(!(l||L)){m(!0),c(!1);try{let h=await e.onRefresh();E&&await Ee(!0),c(!h)}finally{m(!1)}}},Re=r==="updating"?C?s("update.rollbackInstalling",{version:C}):s("update.updating",{command:Vt}):r==="restarting"?C?s("update.rollbackRestarting",{version:C}):s("update.restarting"):r==="error"?C?s("update.rollbackFailed",{detail:f}):s("update.updateFailed",{detail:f}):d?s("update.topbarRefreshFailed"):H?xe?s("update.versionUpgradePrompt",{version:zt}):Wt:n.latest?s("update.upToDate"):s("update.checkUnavailable"),Jt=xe?r==="error"?s("update.topbarRetry"):r==="idle"?s("update.topbarAction"):s("update.topbarWorking"):s("update.topbarReview"),re=r==="error"||d&&we?{className:"is-error",symbol:"!"}:H?{className:"has-update",symbol:"\u2191"}:we?{className:"is-unknown",symbol:"?"}:{className:"is-current",symbol:"\u2713"};return(0,t.jsxs)("div",{ref:Ve,className:`dashboard-version-control${o?" is-open":""}`,children:[(0,t.jsxs)("button",{ref:ze,type:"button",className:`dashboard-version-chip${H?" has-update":""}${we?" is-unknown":""}${r==="error"?" is-error":""}`,"aria-haspopup":"dialog","aria-expanded":o,"aria-label":`${ke}. ${Re}`,title:Re,onClick:()=>a(h=>!h),children:[(0,t.jsx)("span",{children:ke}),L?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):(0,t.jsx)("span",{className:`dashboard-version-state ${re.className}`,"aria-hidden":"true",children:re.symbol})]}),o?(0,t.jsxs)("section",{className:"dashboard-version-popover",role:"dialog","aria-modal":"false","aria-labelledby":"dashboard-version-title",children:[(0,t.jsxs)("header",{className:"dashboard-version-popover-head",children:[(0,t.jsx)("strong",{id:"dashboard-version-title",children:s("update.current")}),(0,t.jsxs)("div",{className:"dashboard-version-head-actions",children:[(0,t.jsx)("button",{type:"button",className:`dashboard-version-refresh${l?" is-refreshing":""}`,"aria-label":s(l?"update.topbarRefreshing":"update.topbarRefresh"),title:s(l?"update.topbarRefreshing":"update.topbarRefresh"),disabled:l||x||L,onClick:()=>{Gt()},children:(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M13.2 5.7A5.8 5.8 0 1 0 13 10.8"}),(0,t.jsx)("path",{d:"M13.2 2.8v2.9h-2.9"})]})}),(0,t.jsx)("button",{type:"button",className:"dashboard-version-close","aria-label":s("update.topbarClose"),onClick:()=>a(!1),children:"\xD7"})]})]}),(0,t.jsxs)("div",{className:"dashboard-version-popover-body",children:[(0,t.jsxs)("div",{className:"dashboard-version-current",children:[(0,t.jsx)("strong",{children:ke}),(0,t.jsx)("span",{className:re.className,"aria-hidden":"true",children:L?(0,t.jsx)("span",{className:"dashboard-update-spinner"}):re.symbol})]}),(0,t.jsx)("p",{className:`dashboard-version-message${r==="error"||d?" is-error":""}`,role:r==="error"||d?"alert":"status","aria-live":"polite",children:Re}),(0,t.jsxs)("a",{className:"dashboard-version-release-link",href:"https://github.com/deepcoldy/botmux/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M8 1.5a6.5 6.5 0 0 0-2.1 12.65c.33.06.45-.14.45-.32v-1.26c-1.84.4-2.23-.78-2.23-.78-.3-.76-.73-.96-.73-.96-.6-.41.05-.4.05-.4.66.05 1 .68 1 .68.59 1 1.54.72 1.92.55.06-.42.23-.72.42-.88-1.47-.17-3.02-.74-3.02-3.28 0-.72.26-1.32.68-1.78-.07-.17-.3-.84.07-1.75 0 0 .56-.18 1.79.68A6.2 6.2 0 0 1 8 4.63a6.2 6.2 0 0 1 1.71.22c1.23-.86 1.79-.68 1.79-.68.37.91.14 1.58.07 1.75.42.46.68 1.06.68 1.78 0 2.55-1.55 3.11-3.03 3.28.24.21.45.61.45 1.23v1.62c0 .18.12.38.46.32A6.5 6.5 0 0 0 8 1.5Z"})}),(0,t.jsx)("span",{children:s("update.changelogViewOnGitHub")})]}),(H||E)&&n.installs.multiple?(0,t.jsxs)("details",{className:"dashboard-version-installs",children:[(0,t.jsx)("summary",{children:s("update.multiInstallWarn")}),(0,t.jsx)("ul",{children:n.installs.entries.map(h=>(0,t.jsx)("li",{children:h.binPath},h.binPath))})]}):null,We?(0,t.jsxs)("details",{className:"dashboard-version-rollback",open:E,"aria-busy":x,onToggle:h=>{let k=h.currentTarget.open;v(k),k&&!w&&!x&&Ee()},children:[(0,t.jsxs)("summary",{children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,t.jsx)("path",{d:"M8 4.8V8l2.2 1.3"})]}),(0,t.jsx)("span",{children:s("update.rollbackTitle")}),(0,t.jsx)("span",{className:"dashboard-version-rollback-chevron","aria-hidden":"true",children:"\u2304"})]}),(0,t.jsxs)("div",{className:"dashboard-version-rollback-body",children:[x&&z.length===0?(0,t.jsxs)("p",{className:"dashboard-version-rollback-status",role:"status","aria-live":"polite",children:[(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}),s("update.rollbackLoading")]}):null,V?(0,t.jsxs)("p",{className:"dashboard-version-rollback-load-error",role:"alert",children:[(0,t.jsx)("span",{children:s("update.rollbackLoadFailed")}),(0,t.jsx)("button",{type:"button",disabled:x,onClick:()=>{Ee(!0)},children:s("update.rollbackRetry")})]}):null,w&&!x&&!V&&z.length===0?(0,t.jsx)("p",{className:"dashboard-version-rollback-status",children:s("update.rollbackEmpty")}):null,z.length>0?(0,t.jsxs)("fieldset",{disabled:L||x||V,children:[(0,t.jsx)("legend",{children:s("update.rollbackHint")}),(0,t.jsx)("div",{className:"dashboard-version-rollback-options",children:z.map(h=>(0,t.jsxs)("label",{className:y===h.version?"is-selected":"",children:[(0,t.jsx)("input",{type:"radio",name:"dashboard-rollback-version",value:h.version,checked:y===h.version,onChange:()=>ve(h.version)}),(0,t.jsxs)("strong",{children:["v",h.version]}),h.publishedAt?(0,t.jsx)("time",{dateTime:h.publishedAt,children:Hn(h.publishedAt)}):null]},h.version))})]}):null,y?(0,t.jsxs)("p",{id:"dashboard-version-rollback-risk",className:"dashboard-version-rollback-risk",role:"note",children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M7.1 2.3 1.8 12a1 1 0 0 0 .9 1.5h10.6a1 1 0 0 0 .9-1.5L8.9 2.3a1 1 0 0 0-1.8 0Z"}),(0,t.jsx)("path",{d:"M8 5.5v3.6M8 11.6h.01"})]}),(0,t.jsxs)("span",{children:[s("update.rollbackRisk",{version:y})," ",(0,t.jsx)("a",{href:`https://github.com/deepcoldy/botmux/releases/tag/v${encodeURIComponent(y)}`,target:"_blank",rel:"noopener noreferrer","aria-label":s("update.rollbackReleaseNotesA11y",{version:y}),children:s("update.rollbackReleaseNotes",{version:y})})]})]}):null,z.length>0?(0,t.jsxs)("button",{type:"button",className:"dashboard-version-rollback-action",disabled:!y||x||V||L,"aria-describedby":y?"dashboard-version-rollback-risk":void 0,onClick:()=>{jt()},children:[L&&C?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,y?r==="error"&&C===y?s("update.rollbackRetry"):s("update.rollbackAction",{version:y}):s("update.rollbackSelect")]}):null]})]}):null]}),H&&!E&&!C?(0,t.jsxs)("footer",{className:"dashboard-version-popover-actions",children:[(0,t.jsx)("button",{type:"button",className:"dashboard-version-secondary",onClick:()=>a(!1),children:L?s("update.topbarClose"):s("update.topbarLater")}),(0,t.jsxs)("button",{type:"button",className:"dashboard-version-primary",disabled:L,onClick:()=>{qt()},children:[L?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,Jt]})]}):null]}):null]})}function In(){let e=Pn(),[n,o]=(0,u.useState)(!1),[a,r]=(0,u.useState)(!1),[i,l]=(0,u.useState)(!1),m=(0,u.useRef)(e.attention),d=(0,u.useRef)(null),c=()=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null)};(0,u.useEffect)(()=>{let p=()=>o(!0);return window.addEventListener(ce,p),()=>window.removeEventListener(ce,p)},[]),(0,u.useEffect)(()=>{let p=()=>r(!0);return window.addEventListener(_e,p),ge&&r(!0),()=>window.removeEventListener(_e,p)},[]),(0,u.useEffect)(()=>()=>c(),[]),(0,u.useEffect)(()=>{let p=m.current;if(m.current=e.attention,e.attention===0){c(),l(!1);return}p!==0||document.body.classList.contains("theme-menu-open")||(l(!0),c(),d.current=window.setTimeout(()=>{d.current=null,l(!1)},4e3))},[e.attention]);let f=()=>{ge=!1,r(!1)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"aurora","aria-hidden":"true",children:[(0,t.jsx)("i",{className:"a1"}),(0,t.jsx)("i",{className:"a2"}),(0,t.jsx)("i",{className:"a3"})]}),(0,t.jsxs)("div",{className:"app-shell",children:[(0,t.jsxs)("header",{className:"topbar",children:[(0,t.jsx)("div",{className:"topbar-left",children:(0,t.jsxs)("div",{className:"topbar-brand-block",children:[(0,t.jsxs)("a",{className:"brand",href:"#/",children:[(0,t.jsx)("span",{className:"brand-mark","aria-hidden":"true",children:(0,t.jsx)("img",{className:"brand-logo-img",src:"/assets/brand-logo.png",alt:"",decoding:"sync",loading:"eager",fetchPriority:"high"})}),(0,t.jsx)("strong",{className:"brand-wordmark",children:"Botmux"}),(0,t.jsx)("span",{className:"brand-product",children:"Dashboard"})]}),(0,t.jsx)(Bn,{status:$t,onRefresh:()=>Fe(!0)})]})}),(0,t.jsxs)("div",{className:"topbar-actions",children:[(0,t.jsx)(An,{summary:e,autoOpen:i}),(0,t.jsxs)("div",{className:"topbar-tool-group",children:[(0,t.jsx)("button",{type:"button",className:"topbar-locale-toggle","aria-label":g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",title:g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",onClick:()=>$n(g.locale==="zh"?"en":"zh"),children:g.locale==="zh"?"CN":"EN"}),(0,t.jsx)(On,{}),(0,t.jsxs)("a",{className:"topbar-docs-link",href:"https://bytedance.aiforce.cloud/app/app_4k9smq6rdxher/",target:"_blank",rel:"noopener noreferrer",title:s("nav.docs"),"aria-label":s("nav.docs"),children:[ee((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})),(0,t.jsx)("span",{children:s("nav.docs")})]})]}),(0,t.jsxs)("span",{className:"topbar-owner",title:F?.name,"aria-label":F?.name??"Owner",children:[(0,t.jsx)("span",{className:"topbar-owner-placeholder","aria-hidden":"true",children:ee((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"6",r:"2.4"}),(0,t.jsx)("path",{d:"M3.7 13c.7-2.5 2.2-3.7 4.3-3.7s3.6 1.2 4.3 3.7"})]}))}),F?.avatarUrl?(0,t.jsx)("img",{className:"topbar-owner-img",src:F.avatarUrl,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:p=>{p.currentTarget.remove()}}):null]})]})]}),(0,t.jsxs)("div",{className:"chrome-body",children:[(0,t.jsxs)("aside",{className:"sidebar",children:[D?(0,t.jsxs)("div",{className:"sidebar-create-actions",children:[(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>Me(),children:[ee((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"}),(0,t.jsx)("path",{d:"M8 4.9v4.2M5.9 7h4.2"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createSession")})]}),(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>{nt()},children:[ee((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"6",width:"11",height:"7.5",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9.75",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9.75",r:"1"}),(0,t.jsx)("path",{d:"M8 6V3.8M6.3 1.9h3.4"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createBot")})]})]}):null,(0,t.jsx)("nav",{className:"sidebar-nav","aria-label":"Dashboard",children:Mn().filter(p=>D||!p.manage).map(p=>(0,t.jsxs)("a",{href:p.href,"data-route":p.id,className:[Tn(p),p.plugin?"sidebar-plugin-item":""].filter(Boolean).join(" ")||void 0,title:p.plugin?Pt(p):void 0,children:[ee(p.icon),(0,t.jsx)("span",{className:"sidebar-nav-label",children:Pt(p)}),p.id==="settings"&&ne?(0,t.jsx)(tt,{className:"nav-update-tip",label:At(),trigger:(0,t.jsx)("span",{className:"nav-update-dot","aria-hidden":"true"}),preventClick:!1,focusable:!1,children:At()}):null]},p.id))})]}),(0,t.jsxs)("div",{className:"workspace",children:[(0,t.jsx)("dialog",{id:"create-session-modal",className:"create-session-modal"}),(0,t.jsx)(ot,{open:n,onClose:()=>o(!1)}),(0,t.jsx)("main",{id:"root",ref:Sn})]})]})]}),(0,t.jsx)(Dn,{open:a,onClose:f})]})}function N(){Ut?.render((0,t.jsx)(In,{}))}function $n(e){g.setLocale(e),Vn(e)}var ge=!1;function Un(){ge||(ge=!0,window.dispatchEvent(new Event(_e)))}var Ie;function _n(){let e=document.getElementById("readonly-toast");e||(e=document.createElement("div"),e.id="readonly-toast",e.style.cssText="position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;border-radius:var(--radius-lg);font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)",document.body.appendChild(e)),e.textContent="\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u6B64\u64CD\u4F5C\u9700\u8981\u6388\u6743\u94FE\u63A5\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09",e.style.display="block",Ie&&window.clearTimeout(Ie),Ie=window.setTimeout(()=>{e.style.display="none"},4e3)}var Fn=window.fetch.bind(window);window.fetch=async function(...n){let o=await Fn(...n);if(o.status===401){let a=(n[1]?.method??"GET").toUpperCase();(a==="GET"||a==="HEAD")&&!Ue?Un():_n()}return o};async function Kn(){try{let e=await fetch("/api/settings");if(e.ok){let n=await e.json();D=!!n.authed,g.authed=D,Ue=!!(n.settings&&n.settings.publicReadOnly),g.publicReadOnly=Ue;let o=Ft()??le(n.lang);o&&g.setLocale(o)}}catch{}}async function Ht(){try{let e=await fetch("/api/plugins/dashboard");if(!e.ok)return;let n=await e.json();te=(Array.isArray(n?.plugins)?n.plugins:[]).filter(a=>a.pinned===!0&&typeof a.route=="string").map(a=>({id:`plugin:${a.pluginId}:${a.id}`,href:a.route,label:a.displayName||a.pluginId,manage:!0,plugin:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M5.2 2.2h5.6v3.1l1.7 1.7-1.4 1.4-1-1v6.4H5.9V7.4l-1 1L3.5 7l1.7-1.7z"}),(0,t.jsx)("path",{d:"M8 13.8v1"})]})})),N()}catch{}}async function Vn(e){if(D)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}async function Fe(e=!1){if(!D)return!1;try{let n=await fetch(`/api/update/status${e?"?refresh=1":""}`,{cache:"no-store"});if(!n.ok)return!1;let o=await n.json();$t=o;let a=Array.isArray(o.cliUpdates)?o.cliUpdates.find(r=>r?.updateAvailable===!0&&r?.latest):null;return o.behind===!0&&o.latest?(ne=!0,fe="botmux",oe=String(o.latest)):a?(ne=!0,fe="codex",oe=String(a.latest)):(ne=!1,fe=null,oe=null),N(),o.versionLookupOk!==!1}catch{return!1}}function zn(e){e.innerHTML='<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)"><h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">\u6B64\u9875\u9700\u8981\u6388\u6743\u94FE\u63A5</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">\u4F60\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u7BA1\u7406\u9875\uFF08\u7FA4\u89D2\u8272 / Profiles / Bot \u914D\u7F6E / \u56E2\u961F / Webhook\uFF09\u9700\u8981\u6388\u6743\u94FE\u63A5\u3002\u8FD0\u884C <code>botmux dashboard</code> \u83B7\u53D6\u6700\u65B0\u94FE\u63A5\u540E\u5373\u53EF\u7BA1\u7406\u3002</p><a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-lg);text-decoration:none;font-size:14px">\u8FD4\u56DE\u603B\u89C8</a></section>'}async function $e(){let e=ht(A),n=location.hash||"#/";if(It=n,N(),!D&&kn.some(o=>n.startsWith("#/"+o))){zn(He()),A.rerenderOnUiChange=!0;return}if(n.startsWith("#/v3")){window.location.replace(`#/workflows${n.slice(4)}`);return}else if(n.startsWith("#/legacy-workflow")){window.location.replace("#/workflows");return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(n)){window.location.replace("#/workflows");return}if(n.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${n.slice(15)}`);return}try{let o=dt(n);await mt(A,e,He(),o?o.load:ct,{rerenderOnUiChange:o?o.rerenderOnUiChange:!1}),e===A.seq&&D&&Ln()}catch(o){if(e!==A.seq||gt(o,{href:window.location.href,hash:n,getSessionStorage:()=>window.sessionStorage,reload:()=>window.location.reload()}))return;He().innerHTML=`<section class="page"><div class="empty">Dashboard route failed: ${Ge(String(o))}</div></section>`,A.pageDispose=null,A.rerenderOnUiChange=!0}}function Wn(){try{let e=JSON.parse(window.localStorage.getItem(_t)??"null");if(e?.avatarUrl)return{avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0}}catch{}return null}function qn(){F=Wn(),N(),fetch("/api/owner-profile").then(e=>e.ok?e.json():null).then(e=>{if(!(!e?.ok||!e.avatarUrl)){F={avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0};try{window.localStorage.setItem(_t,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}N()}}).catch(()=>{})}(async()=>{g.init(),Ct();let e=document.getElementById("app-root");if(!e)throw new Error("missing dashboard app root");Rt(e),Lt(),Ut=(0,Bt.createRoot)(e),N(),g.on(()=>{N(),A.rerenderOnUiChange&&$e()}),ie.on(()=>{N()}),await Kn(),N(),window.addEventListener(Qe,()=>{Ht()}),Ht(),Fe(),window.setInterval(()=>{document.hidden||Fe()},30*6e4),qn();try{await je()}catch(n){console.error("botmux dashboard bootstrap failed",n),ie.setOnline(!1)}Xe().then(N),at().then(N),window.addEventListener("hashchange",()=>{Ct()||$e()}),$e()})();export{Un as showAuthExpiredOverlay,_n as showReadOnlyToast};
@@ -0,0 +1,5 @@
1
+ import{b as Tt}from"./chunk-WXPMNEYV.js";import{b as A}from"./chunk-QCPPKCX3.js";import{a as Dt,b as at,c as nt,g as St,h as Ct,i as It,p as Nt}from"./chunk-QFMH6ITB.js";import{A as yt,a as st,r as gt,w as et,z as vt}from"./chunk-H7P5UV4W.js";import{a as ht}from"./chunk-SYC6D5XU.js";import{a as jt,d as kt}from"./chunk-5THX4DI2.js";import{c as rt}from"./chunk-7SZRL6FY.js";var s=rt(jt(),1);var wt=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],ot={options:wt,ttadkModelDefault:"glm-5.1",ttadkModelSuggestions:[]};function lt(a,t){return typeof a?.cliId=="string"&&a.cliId?a.cliId:t}function ut(a){let t=null;for(let o of st.sessions.values())o.larkAppId!==a||!o.cliId||(!t||Number(o.lastMessageAt??0)>Number(t.lastMessageAt??0))&&(t=o);return t?.cliId??""}function dt(a,t){let o=typeof a.agentSelectionKey=="string"&&a.agentSelectionKey?a.agentSelectionKey:"";return o||lt(a,t)||"claude-code"}function ct(a,t){return a.find(o=>o.id===t)}function xt(a,t){return a?.gateway==="ttadk"&&a.acceptsModel!==!1?t.ttadkModelSuggestions:[]}function Rt(){let a=0;return{begin(){let t=++a;return{commit:()=>t===a}}}}async function Bt(){try{let a=await fetch("/api/bots"),t=await a.json().catch(()=>({}));if(!a.ok){let o=t?.error?`HTTP ${a.status}: ${t.error}${t.path?` (${t.path})`:""}`:`HTTP ${a.status}`;return{bots:[],error:o}}return!t||!Array.isArray(t.bots)?{bots:[],error:"unexpected response shape (no `bots` array)"}:{bots:t.bots,error:null}}catch(a){return{bots:[],error:a?.message??String(a)}}}async function Pt(a,t){try{let o=await fetch(`/api/bots/${encodeURIComponent(a)}/substitute-targets/resolve`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:t})}),r=await o.json().catch(()=>({}));return o.ok?{ok:!0,resolution:r?.resolution??{}}:{ok:!1,error:r?.error?`HTTP ${o.status}: ${r.error}`:`HTTP ${o.status}`}}catch(o){return{ok:!1,error:o?.message??String(o)}}}async function Mt(){try{let a=await fetch("/api/cli-options"),t=await a.json().catch(()=>({}));if(!a.ok||!Array.isArray(t?.options))return ot;let o=t.options.filter(i=>i&&typeof i.id=="string"&&typeof i.label=="string"),r=typeof t.ttadkModelDefault=="string"&&t.ttadkModelDefault.trim()?t.ttadkModelDefault.trim():ot.ttadkModelDefault,u=Array.isArray(t.ttadkModelSuggestions)?t.ttadkModelSuggestions.filter(i=>typeof i=="string"):[];return{options:o.length?o:wt,ttadkModelDefault:r,ttadkModelSuggestions:u}}catch{return ot}}function At(a){if(!a)return"\u2014";let t=new Date(a);return Number.isNaN(t.getTime())?"\u2014":t.toLocaleString()}var e=rt(kt(),1);function pt(a,t=""){let o=a?` ${a.ok?"hint-ok":"hint-warn-inline"}`:"";return`oncall-status${t?` ${t}`:""}${o}`}function O(a){return(0,e.jsx)("span",{className:pt(a.status),...a.attr??{},children:a.status?.text??""})}function Et(a){let t=typeof a.children=="string"?a.children:void 0;return(0,e.jsx)(It,{className:"bd-info-tip",label:t,children:a.children})}function P(a){return(0,e.jsxs)("span",{className:"bd-field-title",children:[(0,e.jsx)("span",{className:"bd-field-title-text",children:a.children}),a.help?(0,e.jsx)(Et,{children:a.help}):null]})}function V(a){let t=A();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Nt,{id:`bd-menu-${a.dataInput}`,className:["bd-field-menu",a.className].filter(Boolean).join(" "),ariaLabel:a.ariaLabel,disabled:a.disabled,label:Dt(a.options,a.value),value:a.value,options:a.options,searchable:a.searchable,searchPlaceholder:a.searchable?t("common.dropdownSearch"):void 0,searchEmptyLabel:a.searchable?t("common.dropdownSearchEmpty"):void 0,onChange:a.onChange}),(0,e.jsx)("input",{type:"hidden","data-input":a.dataInput,value:a.value,readOnly:!0})]})}function J(a){return(0,e.jsxs)("label",{className:"toggle-row",children:[(0,e.jsx)("input",{type:"checkbox","data-action":a.dataAction,checked:a.checked,disabled:a.disabled,onChange:t=>a.onChange(t.currentTarget.checked)}),(0,e.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,e.jsx)("span",{className:"toggle-tx",children:(0,e.jsx)("strong",{children:(0,e.jsx)(P,{help:a.help,children:a.title})})})]})}async function H(a,t,o){let r=await fetch(t,{method:a,headers:{"content-type":"application/json"},body:o===void 0?void 0:JSON.stringify(o)}),u=await r.json().catch(()=>({}));return{ok:r.ok&&u?.ok!==!1,status:r.status,body:u}}function L(a){let t=typeof a.body?.reason=="string"?a.body.reason:"",o=typeof a.body?.manualCommand=="string"?a.body.manualCommand:"";return t&&o?`${t}\uFF08${o}\uFF09`:String(t||a.body?.error||a.status)}function $(a){return a?.message??String(a)}function Gt(a){let t=a.trim();return t?/^[1-9]\d*$/.test(t)?Number(t):"invalid":null}function $t(a,t){let o=a.trim();return o===""?t:/^(0|[1-9]\d*)$/.test(o)?Number(o):null}var mt=["email","openId","userId","unionId"];function Wt(a){let t=a.split(/[\r\n,,;;]+/).map(o=>o.trim()).filter(Boolean);return[...new Set(t)]}function bt(a){return(a??[]).join(`
2
+ `)}function qt(a){return mt.find(t=>a?.[t]?.trim())??"email"}function Jt(a){let t=a.idValue.trim();if(!t)return null;let o={...a.persisted};if(a.persisted[a.idField]!==t||a.originalIdField!=null&&a.originalIdField!==a.idField)for(let i of mt)delete o[i];o[a.idField]=t;let u=a.name.trim();return u?o.name=u:delete o.name,o}function _t(a,t){return a==null?t("botDefaults.brandStateDefault"):a.trim()===""?t("botDefaults.brandStateOff"):t("botDefaults.brandStateCustom")}function Vt(a,t){return a==null?t("botDefaults.quotaStateOff"):t("botDefaults.quotaStateOn",{count:a})}function Kt(a,t){return a==null?t("botDefaults.maxLiveWorkersStateDefault"):t("botDefaults.maxLiveWorkersStateOn",{count:a})}function Qt(a,t){return{...a,disableStreamingCard:t.disableStreamingCard,silentTurnReactions:t.silentTurnReactions,codexAppCleanInput:t.codexAppCleanInput,writableTerminalLinkInCard:t.writableTerminalLinkInCard,privateCard:t.privateCard,botToBotSameDir:t.botToBotSameDir,autoStartOnGroupJoin:t.autoStartOnGroupJoin,autoStartOnGroupJoinPrompt:t.autoStartOnGroupJoinPrompt,autoStartOnNewTopic:t.autoStartOnNewTopic,regularGroupReplyMode:t.regularGroupReplyMode,regularGroupMentionMode:t.regularGroupMentionMode,docSubscribeDefaultMode:t.docSubscribeDefaultMode}}function zt(){let a=A(),t=(0,s.useRef)(!0),o=(0,s.useRef)(Rt()),[r,u]=(0,s.useState)([]),[i,c]=(0,s.useState)(ot),[d,g]=(0,s.useState)(null),[n,v]=(0,s.useState)(!0),[m,b]=(0,s.useState)(!1),[f,S]=(0,s.useState)(""),[D,y]=(0,s.useState)(null),[h,C]=(0,s.useState)(0),[,k]=(0,s.useState)(0),[T,w]=(0,s.useState)(!1),p=(0,s.useCallback)(async(I=!1)=>{I&&C(z=>z+1);let F=o.current.begin();v(!0);try{let[z,X]=await Promise.all([Bt(),Mt()]);if(!t.current||!F.commit())return;u(z.bots),g(z.error),c(X)}finally{t.current&&F.commit()&&v(!1)}},[]);(0,s.useEffect)(()=>{t.current=!0,p(),yt().then(()=>{t.current&&k(F=>F+1)});let I=st.onBotsChanged(()=>{t.current&&p()});return()=>{t.current=!1,I()}},[p]);let U=(0,s.useMemo)(()=>{let I=f.trim().toLowerCase();return r.filter(F=>!I||(F.botName??"").toLowerCase().includes(I)||(F.larkAppId??"").toLowerCase().includes(I))},[r,f]);(0,s.useEffect)(()=>{if(!(d||n)){if(U.length===0){D!==null&&y(null);return}(!D||!U.some(I=>I.larkAppId===D))&&y(U[0].larkAppId)}},[U,d,n,D]);let M=D?U.find(I=>I.larkAppId===D)??null:null,K=(0,s.useCallback)((I,F)=>{u(z=>z.map(X=>X.larkAppId!==I?X:typeof F=="function"?F(X):{...X,...F}))},[]),G=async()=>{b(!0);try{await p(!0)}finally{t.current&&b(!1)}},E;return n?E=(0,e.jsx)(nt,{label:a("common.loading")}):d?E=(0,e.jsxs)("p",{className:"hint-warn",children:["\u65E0\u6CD5\u52A0\u8F7D bot \u5217\u8868\uFF1A",d,(0,e.jsx)("br",{}),"\u5E38\u89C1\u539F\u56E0\uFF1Adashboard / daemon \u8FDB\u7A0B\u8FD8\u5728\u8DD1\u65E7\u4EE3\u7801\uFF0C\u6267\u884C ",(0,e.jsx)("code",{children:"botmux restart"})," \u540E\u5237\u65B0\u3002"]}):U.length===0?E=(0,e.jsx)("p",{className:"empty",children:a("botDefaults.empty")}):M?E=(0,e.jsx)(Yt,{bot:M,cliState:i,patchBot:K},`${M.larkAppId}:${h}`):E=null,(0,e.jsxs)("section",{className:"page bot-defaults-page",children:[(0,e.jsxs)("div",{className:"page-heading",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"eyebrow",children:a("nav.botDefaults")}),(0,e.jsx)("h1",{children:a("botDefaults.title")})]}),(0,e.jsxs)("div",{className:"page-heading-actions",children:[(0,e.jsx)(Ct,{id:"bd-refresh",label:a("botDefaults.refresh"),busy:m,disabled:m,onClick:()=>{G()}}),gt.authed?(0,e.jsx)(St,{className:"page-primary-action add-bot-btn",disabled:T,onClick:()=>{w(!0),Tt().finally(()=>w(!1))},children:a("botOnboarding.add")}):null]})]}),(0,e.jsxs)("div",{className:"bd-layout",children:[(0,e.jsxs)("aside",{id:"bd-roster",className:"bd-roster",children:[(0,e.jsx)("form",{id:"bd-filters",className:"filters dashboard-toolbar",onSubmit:I=>I.preventDefault(),children:(0,e.jsx)("input",{type:"search",name:"q",placeholder:a("botDefaults.search"),value:f,onChange:I=>S(I.currentTarget.value)})}),(0,e.jsx)("div",{className:"bd-roster-list",children:!d&&U.map(I=>(0,e.jsx)(Xt,{bot:I,selected:I.larkAppId===D,onSelect:()=>y(I.larkAppId)},I.larkAppId))})]}),(0,e.jsx)("div",{id:"bd-list",className:"bd-detail",children:E})]})]})}function Xt(a){let{bot:t}=a,o=t.botName??t.larkAppId,r=lt(t,ut(t.larkAppId));return(0,e.jsxs)("div",{className:`bd-roster-item${a.selected?" on":""}`,"data-appid":t.larkAppId,role:"button",tabIndex:0,onClick:a.onSelect,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),a.onSelect())},children:[(0,e.jsx)(at,{html:et({name:o,larkAppId:t.larkAppId,size:"sm"})}),(0,e.jsxs)("div",{className:"bd-roster-tx",children:[(0,e.jsx)("b",{children:o}),(0,e.jsx)("span",{children:r||t.larkAppId.slice(0,14)})]}),t.defaultOncall?.enabled?(0,e.jsx)("span",{className:"bd-roster-flag",children:"oncall"}):null]})}function Yt(a){let t=A(),{bot:o,cliState:r,patchBot:u}=a,i=o.botName??o.larkAppId,c=lt(o,ut(o.larkAppId)),d=(0,s.useCallback)(async n=>{let v=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/card-prefs`,n);return v.ok&&u(o.larkAppId,m=>Qt(m,v.body)),v},[o.larkAppId,u]);if(o.error)return(0,e.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,e.jsxs)("header",{className:"bd-profile-head",children:[(0,e.jsx)(at,{html:et({name:i,larkAppId:o.larkAppId})}),(0,e.jsxs)("div",{className:"bd-profile-id",children:[(0,e.jsx)("strong",{children:i}),(0,e.jsx)("code",{children:o.larkAppId})]})]}),(0,e.jsxs)("p",{className:"hint-warn-inline",children:["\u67E5\u8BE2\u5931\u8D25\uFF1A",o.error]})]});let g=o.defaultOncall??{enabled:!1,workingDir:"",since:0};return(0,e.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,e.jsxs)("header",{className:"bd-profile-head",children:[(0,e.jsx)(ee,{bot:o,name:i,patchBot:u}),(0,e.jsx)("div",{className:"bd-profile-main",children:(0,e.jsx)(ae,{bot:o,cli:c,patchBot:u,meta:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("small",{className:"bd-meta-ok",children:["\u25CF ",t("botDefaults.metaOnline")]}),(0,e.jsxs)("small",{"data-oncall-since":!0,children:[t("botDefaults.lastEnabled"),": ",At(g.since??0)]}),(0,e.jsx)("small",{children:t("botDefaults.autobound",{count:o.autoboundChatCount??0})})]})})})]}),(0,e.jsxs)("div",{className:"bd-body bd-grid",children:[(0,e.jsxs)("div",{className:"bd-column",children:[(0,e.jsxs)("section",{className:"bd-tile",children:[(0,e.jsx)(oe,{bot:o,sessionFallback:c,cliState:r,patchBot:u}),(0,e.jsx)(se,{bot:o,patchBot:u,putCardPref:d}),o.cliId!=="riff"&&(0,e.jsx)(le,{bot:o,patchBot:u}),o.cliId!=="riff"&&(0,e.jsx)(re,{bot:o,patchBot:u})]}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Zt,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Te,{bot:o,patchBot:u})})]}),(0,e.jsxs)("div",{className:"bd-column",children:[(0,e.jsxs)("section",{className:"bd-tile",children:[(0,e.jsx)(me,{bot:o,patchBot:u,putCardPref:d}),(0,e.jsx)(ge,{bot:o,patchBot:u}),(0,e.jsx)(fe,{bot:o,putCardPref:d}),(0,e.jsx)(ve,{bot:o,patchBot:u})]}),(0,e.jsxs)("section",{className:"bd-tile",children:[(0,e.jsx)(ce,{bot:o,putCardPref:d}),(0,e.jsx)(be,{bot:o,putCardPref:d}),(0,e.jsx)(pe,{bot:o,patchBot:u}),(0,e.jsx)(Ne,{bot:o,patchBot:u})]}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(ue,{bot:o,patchBot:u})})]})]})]})}function Zt(a){let t=A();return(0,e.jsxs)("section",{className:"bd-section bd-runtime-env",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionRuntimeEnv")}),(0,e.jsx)(ye,{bot:a.bot,patchBot:a.patchBot}),(0,e.jsx)(he,{bot:a.bot,patchBot:a.patchBot}),(0,e.jsx)(ke,{bot:a.bot,patchBot:a.patchBot})]})}var it=512;async function te(a){let t=await createImageBitmap(a);try{let o=Math.min(t.width,t.height);if(!o)throw new Error("empty image");let r=document.createElement("canvas");r.width=it,r.height=it;let u=r.getContext("2d");if(!u)throw new Error("canvas unavailable");let i=(t.width-o)/2,c=(t.height-o)/2;return u.drawImage(t,i,c,o,o,0,0,it,it),r.toDataURL("image/png")}finally{t.close()}}function ee(a){let t=A(),{bot:o,name:r,patchBot:u}=a,i=(0,s.useRef)(null),[c,d]=(0,s.useState)(!1),[g,n]=(0,s.useState)(null),[v,m]=(0,s.useState)(!1),[b,f]=(0,s.useState)(!1),S=(0,s.useRef)(null);function D(C,k){let w=["no_session","session_expired","no_access","unsupported_brand"].includes(C)?t(`botDefaults.avatarWarn.${C}`):k||C;return t("botDefaults.avatarFailed",{error:w})}let y=(0,s.useCallback)(async C=>{d(!0),n({text:`\u23F3 ${t("botDefaults.avatarUploading")}`,ok:!0});try{let k=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/avatar`,{imageBase64:C});if(k.ok&&k.body.ok){let T=typeof k.body.avatarUrl=="string"?k.body.avatarUrl:"";T&&vt(o.larkAppId,r,T),u(o.larkAppId,w=>({...w})),S.current=null,m(!1),n({text:`\u2713 ${t("botDefaults.avatarOkFeishu")}`,ok:!0})}else{let T=String(k.body?.error??""),w=typeof k.body?.message=="string"?k.body.message:void 0;n({text:`\u2717 ${D(T,w??L(k))}`});let p=T==="no_session"||T==="session_expired";m(p),p||(S.current=null)}}catch(k){n({text:`\u2717 ${t("botDefaults.avatarFailed",{error:$(k)})}`})}finally{d(!1)}},[o.larkAppId,r,u,t]);async function h(C){if(!C||c)return;d(!0);let k;try{k=await te(C)}catch{d(!1),n({text:`\u2717 ${t("botDefaults.avatarBadImage")}`});return}S.current=k,await y(k)}return(0,e.jsxs)("div",{className:"bd-profile-avatar bd-avatar-editable","data-avatar-control":!0,children:[(0,e.jsxs)("button",{type:"button",className:"bd-avatar-btn","data-action":"edit-bot-avatar",title:t("botDefaults.avatarTitle"),"aria-label":t("botDefaults.avatarTitle"),disabled:c,onClick:()=>i.current?.click(),children:[(0,e.jsx)(at,{html:et({name:r,larkAppId:o.larkAppId,dot:"ok"})}),(0,e.jsx)("span",{className:"bd-avatar-edit-badge","aria-hidden":"true",children:c?"\u23F3":"\u270E"})]}),(0,e.jsx)("input",{ref:i,type:"file",accept:"image/*",hidden:!0,"data-input":"botAvatarFile",onChange:C=>{let k=C.currentTarget.files?.[0];C.currentTarget.value="",h(k)}}),g?(0,e.jsxs)("small",{className:pt(g,"bd-avatar-status"),"data-avatar-status":!0,children:[g.text,v?(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login-avatar",onClick:()=>f(!0),children:t("feishuLogin.entry")}):null]}):null,b?(0,e.jsx)(Ht,{onClose:()=>f(!1),onSuccess:()=>{m(!1),f(!1),S.current&&y(S.current)}}):null]})}function ae(a){let t=A(),{bot:o,cli:r,patchBot:u}=a,i=o.botName??o.larkAppId,[c,d]=(0,s.useState)(!1),[g,n]=(0,s.useState)(i),[v,m]=(0,s.useState)(!1),[b,f]=(0,s.useState)(null),[S,D]=(0,s.useState)(!1),[y,h]=(0,s.useState)(!1);(0,s.useEffect)(()=>{c||n(i)},[c,i]);function C(w){d(w),w&&(n(i),f(null),D(!1))}function k(w,p){let M=["no_session","session_expired","no_access","unsupported_brand"].includes(w)?t(`botDefaults.renameWarn.${w}`):p||w;return t("botDefaults.renameLocalOnly",{reason:M})}let T=(0,s.useCallback)(async()=>{let w=g.trim();if(!w){f({text:`\u2717 ${t("botDefaults.renameEmpty")}`});return}m(!0),f({text:`\u23F3 ${t("botDefaults.renaming")}`,ok:!0});try{let p=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/rename`,{name:w});if(p.ok&&p.body.ok){let U=typeof p.body.botName=="string"&&p.body.botName?p.body.botName:w;u(o.larkAppId,M=>({...M,botName:U,larkBotName:p.body.mode==="feishu"?w:M.larkBotName,displayName:p.body.mode==="feishu"?null:w})),C(!1),p.body.mode==="feishu"?(f({text:`\u2713 ${t("botDefaults.renameOkFeishu")}`,ok:!0}),D(!1)):(f({text:`\u26A0 ${k(String(p.body.warning??""),p.body.message)}`}),D(p.body.warning==="no_session"||p.body.warning==="session_expired"))}else f({text:`\u2717 ${t("botDefaults.renameFailed",{error:L(p)})}`})}catch(p){f({text:`\u2717 ${t("botDefaults.renameFailed",{error:$(p)})}`})}finally{m(!1)}},[o.larkAppId,g,u,t]);return(0,e.jsxs)("div",{className:"bd-profile-id",children:[c?(0,e.jsxs)("span",{className:"bd-name-editor","data-name-editor":!0,children:[(0,e.jsx)("input",{type:"text",className:"bd-name-input","data-input":"botRename",maxLength:64,value:g,disabled:v,autoFocus:!0,onChange:w=>n(w.currentTarget.value),onKeyDown:w=>{w.key==="Enter"?(w.preventDefault(),T()):w.key==="Escape"&&C(!1)}}),(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-bot-name",disabled:v,onClick:()=>{T()},children:t("botDefaults.renameSave")}),(0,e.jsx)("button",{type:"button","data-action":"cancel-bot-name",disabled:v,onClick:()=>C(!1),children:t("botDefaults.renameCancel")})]}):(0,e.jsxs)("div",{className:"bd-profile-title-row","data-name-row":!0,children:[(0,e.jsxs)("div",{className:"bd-profile-title-content",children:[(0,e.jsx)("strong",{"data-bot-name":!0,children:i}),r?(0,e.jsx)("span",{className:"mate-role bd-profile-cli-tag",children:r}):null,a.meta?(0,e.jsx)("span",{className:"bd-profile-meta bd-meta",children:a.meta}):null]}),(0,e.jsx)("button",{type:"button",className:"bd-name-edit","data-action":"edit-bot-name",title:t("botDefaults.renameTitle"),"aria-label":t("botDefaults.renameTitle"),onClick:()=>C(!0),children:t("botDefaults.renameAction")})]}),(0,e.jsx)("code",{children:o.larkAppId}),(0,e.jsx)("small",{className:pt(b,"bd-name-status"),"data-name-status":!0,children:b?.text??""}),(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login",hidden:!S,onClick:()=>h(!0),children:t("feishuLogin.entry")}),y?(0,e.jsx)(Ht,{onClose:()=>h(!1),onSuccess:()=>{D(!1),h(!1),T()}}):null]})}function Ht(a){let t=A(),{onClose:o,onSuccess:r}=a,u=(0,s.useRef)(null),i=(0,s.useRef)(null),[c,d]=(0,s.useState)(t("feishuLogin.starting")),[g,n]=(0,s.useState)(null),[v,m]=(0,s.useState)(!1),b=(0,s.useCallback)(()=>{u.current!==null&&(window.clearInterval(u.current),u.current=null)},[]),f=(0,s.useCallback)(y=>y?y.status==="awaiting_scan"&&y.qrDataUrl?(n(y.qrDataUrl),d(y.message||t("feishuLogin.scanHint")),m(!1),"active"):y.status==="starting"?(d(y.message||t("feishuLogin.starting")),n(null),m(!1),"active"):y.status==="success"?(b(),n(null),m(!1),d(t("feishuLogin.success")),i.current=window.setTimeout(()=>r(),900),"done"):(b(),n(null),d(t("feishuLogin.failed",{reason:y.message||y.reason||""})),m(!0),"done"):"active",[r,b,t]),S=(0,s.useCallback)(async()=>{try{let h=await(await fetch("/api/feishu-login/status")).json().catch(()=>({}));f(h.login)}catch{}},[f]),D=(0,s.useCallback)(async()=>{b(),d(t("feishuLogin.starting")),n(null),m(!1);let y="active";try{let C=await(await fetch("/api/feishu-login/start",{method:"POST"})).json().catch(()=>({}));y=f(C.login)}catch(h){d(t("feishuLogin.failed",{reason:$(h)})),m(!0);return}y==="active"&&u.current===null&&(u.current=window.setInterval(()=>{S()},1500))},[S,f,b,t]);return(0,s.useEffect)(()=>(D(),()=>{b(),i.current!==null&&window.clearTimeout(i.current)}),[D,b]),(0,e.jsx)("div",{className:"feishu-login-overlay",onClick:y=>{y.currentTarget===y.target&&o()},children:(0,e.jsxs)("div",{className:"feishu-login-modal",role:"dialog","aria-modal":"true",children:[(0,e.jsx)("button",{type:"button",className:"feishu-login-close","data-close":!0,"aria-label":t("feishuLogin.close"),onClick:o,children:"x"}),(0,e.jsx)("h3",{className:"feishu-login-title",children:t("feishuLogin.title")}),(0,e.jsx)("p",{className:"feishu-login-hint","data-hint":!0,children:c}),(0,e.jsx)("div",{className:"feishu-login-qr","data-qr":!0,children:g?(0,e.jsx)("img",{className:"qr-image",src:g,alt:t("feishuLogin.qrAlt")}):null}),(0,e.jsx)("div",{className:"feishu-login-actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-retry":!0,hidden:!v,onClick:()=>{D()},children:t("feishuLogin.retry")})})]})})}function oe(a){let t=A(),{bot:o,cliState:r,patchBot:u}=a,i=dt(o,a.sessionFallback),[c,d]=(0,s.useState)(i),[g,n]=(0,s.useState)(typeof o.model=="string"?o.model:""),[v,m]=(0,s.useState)(null),[b,f]=(0,s.useState)(!1),[S,D]=(0,s.useState)(Lt(o)),[y,h]=(0,s.useState)(null),[C,k]=(0,s.useState)(!1);(0,s.useEffect)(()=>{d(dt(o,a.sessionFallback)),n(typeof o.model=="string"?o.model:""),D(Lt(o))},[o.agentSelectionKey,o.cliId,o.larkAppId,o.model,o.skillInjection,o.skillInjectionDefault,a.sessionFallback]);let T=ct(r.options,c),w=xt(T,r),p=T?.gateway==="ttadk"&&T.acceptsModel===!1,U=p?t("botOnboarding.modelTtadkCocoPlaceholder"):T?.gateway==="ttadk"?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",r.ttadkModelDefault):t("botDefaults.agentModelPlaceholder");function M(l){d(l);let N=ct(r.options,l),x=N?.gateway==="ttadk",R=x&&N.acceptsModel!==!1;n(x&&!R?"":R?B=>B.trim()?B:r.ttadkModelDefault:B=>B.trim()===r.ttadkModelDefault?"":B)}async function K(){m(null),f(!0);try{let l=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,{cliId:c,model:g});l.ok&&l.body.ok?(m(l.body.availabilityWarning?{text:`\u26A0\uFE0F ${l.body.availabilityWarning}`}:{text:`\u2713 ${t("botDefaults.agentSaved")}`,ok:!0}),u(o.larkAppId,{cliId:l.body.cliId,wrapperCli:l.body.wrapperCli??null,model:l.body.model??"",agentSelectionKey:l.body.selectionKey??c})):m({text:`\u2717 ${L(l)}`})}catch(l){m({text:`\u2717 ${$(l)}`})}finally{f(!1)}}async function G(){if(o.cliId==="riff")return!0;try{let l=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,{cliId:"riff",model:""});return l.ok&&l.body.ok?(u(o.larkAppId,{cliId:l.body.cliId,wrapperCli:l.body.wrapperCli??null,model:l.body.model??"",agentSelectionKey:l.body.selectionKey??"riff"}),!0):(m({text:`\u2717 ${L(l)}`}),!1)}catch(l){return m({text:`\u2717 ${$(l)}`}),!1}}async function E(l){D(l),h(null),k(!0);try{let N=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/skill-injection`,{skillInjection:l});N.ok&&N.body.ok?(h({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}),u(o.larkAppId,{skillInjection:N.body.skillInjection??null})):h({text:`\u2717 ${L(N)}`})}catch(N){h({text:`\u2717 ${$(N)}`})}finally{k(!1)}}let I=o.skillInjectionSupport==="dynamic"?"dynamic":o.skillInjectionSupport==="global"?"global":"none",F=[...r.options].sort((l,N)=>l.label.localeCompare(N.label,"en",{sensitivity:"base"})).map(l=>({value:l.id,label:l.available===!1?t("botDefaults.agentMissingOption",{label:l.label,command:l.command??l.id}):`${l.label}\uFF08${l.id}\uFF09`})),z=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamic")}],X=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamicUnsupported"),disabled:!0},{value:"prompt",label:t("botDefaults.skillInjectionPrompt")},{value:"global",label:t("botDefaults.skillInjectionGlobal")},{value:"off",label:t("botDefaults.skillInjectionOff")}],Y=c==="riff";return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionAgent")}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:t("botDefaults.agentCli")}),(0,e.jsx)(V,{dataInput:"agentCliId",ariaLabel:t("botDefaults.agentCli"),value:c,disabled:b,options:F,searchable:!0,onChange:M}),T?.available===!1?(0,e.jsx)("small",{className:"hint-warn",children:t("botDefaults.agentMissingHint",{command:T.command??c})}):null]})}),!Y&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(P,{help:t("botDefaults.agentHelp"),children:t("botDefaults.agentModel")}),(0,e.jsx)("input",{type:"text","data-input":"agentModel",list:`agent-model-suggestions-${o.larkAppId}`,placeholder:U,value:g,disabled:b||p,onChange:l=>n(l.currentTarget.value)}),(0,e.jsx)("datalist",{id:`agent-model-suggestions-${o.larkAppId}`,children:w.map(l=>(0,e.jsx)("option",{value:l},l))})]})}),Y&&(0,e.jsx)(Ie,{bot:o,patchBot:u,persistCliSelection:G}),!Y&&I==="dynamic"?(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.skillInjectionHelpDynamic"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(V,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:"dynamic",disabled:!0,options:z,onChange:()=>{}})]})}):!Y&&I==="global"?(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.skillInjectionHelp"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(V,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:S,disabled:C,options:X,onChange:l=>{E(l)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:y,attr:{"data-skill-injection-status":""}})})]}):null,!Y&&(0,e.jsxs)("div",{className:"actions bd-section-actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-agent",disabled:b,onClick:()=>{K()},children:t("botDefaults.agentSave")}),(0,e.jsx)(O,{status:v,attr:{"data-agent-status":""}})]})]})}function Lt(a){let t=a.skillInjection==="global"||a.skillInjection==="prompt"||a.skillInjection==="off"?a.skillInjection:"",o=a.skillInjectionDefault==="global"||a.skillInjectionDefault==="off"?a.skillInjectionDefault:"prompt";return t||o}function se(a){let t=A(),{bot:o,patchBot:r}=a,u=Ot(o),[i,c]=(0,s.useState)(u.mode),[d,g]=(0,s.useState)(u.workingDir),[n,v]=(0,s.useState)(o.defaultWorkingDirAutoWorktree===!0),[m,b]=(0,s.useState)(null),[f,S]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let h=Ot(o);c(h.mode),g(h.workingDir),v(o.defaultWorkingDirAutoWorktree===!0)},[o.defaultOncall?.enabled,o.defaultOncall?.workingDir,o.defaultWorkingDir,o.defaultWorkingDirAutoWorktree]);async function D(){b(null);let h=d.trim();if(i!=="off"&&!h){b({text:t("botDefaults.required")});return}let C=i==="default"&&n;S(!0);try{let k=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/working-dir-mode`,{mode:i,workingDir:h,autoWorktree:C});if(k.ok&&k.body.ok){let T=k.body.resolvedPath?` \u2192 ${k.body.resolvedPath}`:"";b({text:`\u2713 ${t("botDefaults.workingDirSaved")}${T}`,ok:!0}),r(o.larkAppId,{defaultOncall:k.body.defaultOncall??o.defaultOncall,defaultWorkingDir:k.body.defaultWorkingDir??null,defaultWorkingDirAutoWorktree:k.body.defaultWorkingDirAutoWorktree===!0})}else b({text:`\u2717 ${L(k)}`})}catch(k){b({text:`\u2717 ${$(k)}`})}finally{S(!1)}}let y=[{value:"off",label:t("botDefaults.workingDirModeOff")},{value:"default",label:t("botDefaults.workingDirModeDefault")},{value:"oncall",label:t("botDefaults.workingDirModeOncall")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionWorkingDir")}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.workingDirModeHelp"),children:t("botDefaults.workingDirMode")}),(0,e.jsx)(V,{dataInput:"workingDirMode",ariaLabel:t("botDefaults.workingDirMode"),value:i,disabled:f,options:y,onChange:h=>c(h)})]})}),(0,e.jsx)("div",{className:"bd-row","data-wd-dir-row":!0,hidden:i==="off",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.workingDirField")}),(0,e.jsx)("input",{type:"text","data-input":"workingDir",placeholder:"e.g. /root/iserver/botmux",value:d,disabled:f,onChange:h=>g(h.currentTarget.value)})]})}),(0,e.jsxs)("label",{className:"toggle-row","data-wd-worktree-row":!0,hidden:i!=="default",children:[(0,e.jsx)("input",{type:"checkbox","data-input":"autoWorktree",checked:n,disabled:f,onChange:h=>v(h.currentTarget.checked)}),(0,e.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,e.jsx)("span",{className:"toggle-tx",children:(0,e.jsx)("strong",{children:(0,e.jsx)(P,{help:t("botDefaults.autoWorktreeHelp"),children:t("botDefaults.autoWorktree")})})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-working-dir",disabled:f,onClick:()=>{D()},children:t("botDefaults.save")}),(0,e.jsx)(O,{status:m,attr:{"data-status":""}})]}),(0,e.jsx)(ne,{bot:o,putCardPref:a.putCardPref})]})}function Ot(a){let t=a.defaultOncall??{enabled:!1,workingDir:""};return{mode:t.enabled?"oncall":a.defaultWorkingDir?"default":"off",workingDir:a.defaultWorkingDir||t.workingDir||""}}function ne(a){let t=A(),{bot:o,putCardPref:r}=a,[u,i]=(0,s.useState)(o.autoStartOnGroupJoin===!0),[c,d]=(0,s.useState)(o.autoStartOnNewTopic===!0),[g,n]=(0,s.useState)(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:""),[v,m]=(0,s.useState)(null),[b,f]=(0,s.useState)(null);(0,s.useEffect)(()=>{i(o.autoStartOnGroupJoin===!0),d(o.autoStartOnNewTopic===!0),n(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:"")},[o.autoStartOnGroupJoin,o.autoStartOnGroupJoinPrompt,o.autoStartOnNewTopic]);async function S(D,y){f(y),m(null);try{let h=await r(D);m(h.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${L(h)}`})}catch(h){m({text:`\u2717 ${$(h)}`})}finally{f(null)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:t("botDefaults.sectionAutoStart")}),(0,e.jsx)(J,{checked:u,disabled:b==="join",dataAction:"toggle-auto-join",title:t("botDefaults.autoStartJoin"),help:t("botDefaults.autoStartJoinHelp"),onChange:D=>{i(D),S({autoStartOnGroupJoin:D},"join")}}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.autoStartJoinPrompt")}),(0,e.jsx)("textarea",{"data-input":"autoJoinPrompt",rows:3,placeholder:t("botDefaults.autoStartJoinPromptPlaceholder"),value:g,onChange:D=>n(D.currentTarget.value)})]})}),(0,e.jsx)(J,{checked:c,disabled:b==="topic",dataAction:"toggle-auto-topic",title:t("botDefaults.autoStartTopic"),help:t("botDefaults.autoStartTopicHelp"),onChange:D=>{d(D),S({autoStartOnNewTopic:D},"topic")}}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-auto-join-prompt",disabled:b==="prompt",onClick:()=>{S({autoStartOnGroupJoinPrompt:g},"prompt")},children:t("botDefaults.autoStartJoinPromptSave")}),(0,e.jsx)(O,{status:v,attr:{"data-auto-start-status":""}})]})]})}function le(a){let t=A(),{bot:o,patchBot:r}=a,[u,i]=(0,s.useState)(o.sandbox===!0),[c,d]=(0,s.useState)(null),[g,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>i(o.sandbox===!0),[o.sandbox]);async function v(b){i(b),d(null),n(!0);try{let f=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox`,{enabled:b});f.ok&&f.body.ok?(d({text:`\u2713 ${t("botDefaults.sandboxSaved")}`,ok:!0}),r(o.larkAppId,{sandbox:f.body.sandbox===!0})):(d({text:`\u2717 ${L(f)}`}),i(!b))}catch(f){d({text:`\u2717 ${$(f)}`}),i(!b)}finally{n(!1)}}let m=o.readIsolationSupported===!0;return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSandbox")}),(0,e.jsx)(J,{checked:u,disabled:g,dataAction:"toggle-sandbox",title:t("botDefaults.sandboxToggle"),help:t("botDefaults.sandboxHelp"),onChange:b=>{v(b)}}),(0,e.jsx)("p",{className:"bd-section-note","data-read-iso-capability":m?"yes":"no",children:m?`\uFF0B ${t("botDefaults.sandboxReadIsoOn")}`:t("botDefaults.sandboxReadIsoOff")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:c,attr:{"data-sandbox-status":""}})})]})}var ie=[{value:"",labelKey:"botDefaults.backendAuto"},{value:"tmux",labelKey:"botDefaults.backendTmux"},{value:"herdr",labelKey:"botDefaults.backendHerdr"},{value:"zellij",labelKey:"botDefaults.backendZellij"},{value:"pty",labelKey:"botDefaults.backendPty"}];function re(a){let t=A(),{bot:o,patchBot:r}=a,[u,i]=(0,s.useState)(typeof o.backendType=="string"?o.backendType:""),[c,d]=(0,s.useState)(null),[g,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>i(typeof o.backendType=="string"?o.backendType:""),[o.backendType]);let v=(0,s.useMemo)(()=>ie.map(b=>({value:b.value,label:t(b.labelKey)})),[t]);async function m(b){let f=u;i(b),d(null),n(!0);try{let S=await H("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/backend-type`,{backendType:b});S.ok&&S.body.ok?(d({text:`\u2713 ${t("botDefaults.backendSaved")}`,ok:!0}),r(o.larkAppId,{backendType:typeof S.body.backendType=="string"?S.body.backendType:null})):(d({text:`\u2717 ${L(S)}`}),i(f))}catch(S){d({text:`\u2717 ${$(S)}`}),i(f)}finally{n(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionBackend")}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.backendHelp"),children:t("botDefaults.backendLabel")}),(0,e.jsx)(V,{dataInput:"backendType",ariaLabel:t("botDefaults.backendLabel"),value:u,disabled:g,options:v,onChange:b=>{m(b)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:c,attr:{"data-backend-status":""}})})]})]})}function ue(a){let t=A(),{bot:o,patchBot:r}=a,[u,i]=(0,s.useState)(typeof o.teamRole=="string"),[c,d]=(0,s.useState)(typeof o.teamRole=="string"?o.teamRole:""),[g,n]=(0,s.useState)(null),[v,m]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let f=!0,S=`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`;return typeof o.teamRole=="string"?(i(!0),d(o.teamRole),()=>{f=!1}):(n(null),i(!1),d(""),(async()=>{try{let D=await fetch(S),y=await D.json().catch(()=>({}));if(!f)return;if(D.ok&&y.ok){let h=y.role??"";d(h),i(!0),r(o.larkAppId,{teamRole:h})}else n({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${y.error??D.status}`})}catch(D){f&&n({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${$(D)}`})}})(),()=>{f=!1})},[o.larkAppId,o.teamRole,r,t]);async function b(f,S){if(u){n(null),m(!0);try{let D=await H("PUT",`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`,{role:f});if(D.ok&&D.body.ok){let y=f.trim();d(y),r(o.larkAppId,{teamRole:y}),n({text:`\u2713 ${t(S?"botDefaults.roleDeleted":"botDefaults.roleSaved")}`,ok:!0})}else n({text:`\u2717 ${L(D)}`})}catch(D){n({text:`\u2717 ${$(D)}`})}finally{m(!1)}}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(P,{help:t("botDefaults.roleHelp"),children:t("botDefaults.sectionRole")})}),(0,e.jsx)("textarea",{"data-input":"teamRole",rows:6,placeholder:t("botDefaults.rolePlaceholder"),disabled:!u||v,value:c,onChange:f=>d(f.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-role",disabled:!u||v,onClick:()=>{b(c,c.trim()==="")},children:t("botDefaults.roleSave")}),(0,e.jsx)(O,{status:g,attr:{"data-role-status":""}})]}),(0,e.jsx)(de,{appId:o.larkAppId})]})}function de(a){let t=A(),[o,r]=(0,s.useState)({loaded:!1,loading:!0,items:[]});(0,s.useEffect)(()=>{let c=!0;return r({loaded:!1,loading:!0,items:[]}),(async()=>{try{let d=await fetch("/api/role-profiles"),g=await d.json().catch(()=>({}));if(!c)return;if(!d.ok)throw new Error(g?.error??String(d.status));let v=(Array.isArray(g.profiles)?g.profiles:[]).filter(m=>(m.botEntries??[]).some(b=>b?.larkAppId===a.appId&&b?.hasEntry)).map(m=>({profileId:String(m.profileId)}));r({loaded:!0,loading:!1,items:v})}catch(d){c&&r({loaded:!0,loading:!1,error:$(d),items:[]})}})(),()=>{c=!1}},[a.appId]);async function u(c){let d=o.items.find(g=>g.profileId===c);if(!(!d||d.loaded||d.loading)){r(g=>({...g,items:g.items.map(n=>n.profileId===c?{...n,loading:!0}:n)}));try{let g=await fetch(`/api/role-profiles/${encodeURIComponent(c)}/${encodeURIComponent(a.appId)}`),n=await g.json().catch(()=>({}));if(!g.ok)throw new Error(n?.error??String(g.status));r(v=>({...v,items:v.items.map(m=>m.profileId===c?{...m,loading:!1,loaded:!0,content:n?.hasEntry?String(n.content??""):""}:m)}))}catch(g){r(n=>({...n,items:n.items.map(v=>v.profileId===c?{...v,loading:!1,error:$(g)}:v)}))}}}let i;return o.loading?i=(0,e.jsx)(nt,{label:t("common.loading"),compact:!0}):o.error?i=(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRolesLoadFailed",{error:o.error})}):o.items.length===0?i=(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRolesEmpty")}):i=o.items.map(c=>(0,e.jsxs)("details",{className:"bd-profile-role-entry","data-profile-id":c.profileId,onToggle:d=>{d.currentTarget.open&&u(c.profileId)},children:[(0,e.jsx)("summary",{children:(0,e.jsx)("span",{className:"bd-profile-role-id",children:c.profileId})}),(0,e.jsx)("div",{className:"bd-profile-role-content","data-profile-role-body":c.profileId,children:c.loading?(0,e.jsx)(nt,{label:t("common.loading"),compact:!0}):c.error?(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRoleDetailLoadFailed",{error:c.error})}):c.loaded?(0,e.jsx)("pre",{children:c.content??""}):(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRoleClickToLoad")})})]},c.profileId)),(0,e.jsxs)("div",{className:"bd-profile-roles","data-profile-roles":!0,children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(P,{help:t("botDefaults.profileRolesHelp"),children:t("botDefaults.profileRoles")})}),(0,e.jsx)("div",{className:"bd-profile-role-list","data-profile-role-list":!0,children:i})]})}function ce(a){let t=A(),{bot:o,putCardPref:r}=a,[u,i]=(0,s.useState)(o.disableStreamingCard===!0),[c,d]=(0,s.useState)(o.silentTurnReactions===!0),[g,n]=(0,s.useState)(o.writableTerminalLinkInCard===!0),[v,m]=(0,s.useState)(o.privateCard===!0),[b,f]=(0,s.useState)(null),[S,D]=(0,s.useState)(null);(0,s.useEffect)(()=>{i(o.disableStreamingCard===!0),d(o.silentTurnReactions===!0),n(o.writableTerminalLinkInCard===!0),m(o.privateCard===!0)},[o.disableStreamingCard,o.privateCard,o.silentTurnReactions,o.writableTerminalLinkInCard]);async function y(h,C){D(C),f(null);try{let k=await r(h);f(k.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${L(k)}`})}catch(k){f({text:`\u2717 ${$(k)}`})}finally{D(null)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCard")}),(0,e.jsxs)("div",{className:"bd-toggle-grid bd-card-behavior-grid",children:[(0,e.jsx)(J,{checked:u,disabled:S==="streaming",dataAction:"toggle-disable-streaming",title:t("botDefaults.disableStreaming"),help:t("botDefaults.disableStreamingHelp"),onChange:h=>{i(h),y({disableStreamingCard:h},"streaming")}}),(0,e.jsx)(J,{checked:c,disabled:!u||S==="silent",dataAction:"toggle-silent-reactions",title:t("botDefaults.silentTurnReactions"),help:t("botDefaults.silentTurnReactionsHelp"),onChange:h=>{d(h),y({silentTurnReactions:h},"silent")}}),(0,e.jsx)(J,{checked:g,disabled:u||S==="writable",dataAction:"toggle-writable-link",title:t("botDefaults.writableLink"),help:t("botDefaults.writableLinkHelp"),onChange:h=>{n(h),y({writableTerminalLinkInCard:h},"writable")}}),(0,e.jsx)(J,{checked:v,disabled:S==="private",dataAction:"toggle-private-card",title:t("botDefaults.privateCard"),help:t("botDefaults.privateCardHelp"),onChange:h=>{m(h),y({privateCard:h},"private")}})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("small",{"data-card-pref-moot":!0,className:"hint-warn-inline",hidden:!u,children:t("botDefaults.writableLinkMoot")}),(0,e.jsx)(O,{status:b,attr:{"data-card-pref-status":""}})]})]})}function be(a){let t=A(),[o,r]=(0,s.useState)(a.bot.codexAppCleanInput===!0),[u,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>r(a.bot.codexAppCleanInput===!0),[a.bot.codexAppCleanInput]);async function g(n){let v=o;r(n),d(!0),i(null);try{let m=await a.putCardPref({codexAppCleanInput:n});m.ok?i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(r(v),i({text:`\u2717 ${L(m)}`}))}catch(m){r(v),i({text:`\u2717 ${$(m)}`})}finally{d(!1)}}return(0,e.jsxs)("section",{className:"bd-section","data-codex-app-display":!0,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCodexAppDisplay")}),(0,e.jsx)(J,{checked:o,disabled:c,dataAction:"toggle-codex-app-clean-input",title:t("botDefaults.codexAppCleanInput"),help:t("botDefaults.codexAppCleanInputHelp"),onChange:n=>{g(n)}}),(0,e.jsx)("small",{className:"bd-section-note",children:t("botDefaults.codexAppCleanInputCompat")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:u,attr:{"data-codex-app-clean-input-status":""}})})]})}function fe(a){let t=A(),[o,r]=(0,s.useState)(a.bot.botToBotSameDir!==!1),[u,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>r(a.bot.botToBotSameDir!==!1),[a.bot.botToBotSameDir]);async function g(n){r(n),d(!0),i(null);try{let v=await a.putCardPref({botToBotSameDir:n});i(v.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${L(v)}`})}catch(v){i({text:`\u2717 ${$(v)}`})}finally{d(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCrossBot")}),(0,e.jsx)(J,{checked:o,disabled:c,dataAction:"toggle-cross-bot-samedir",title:t("botDefaults.botToBotSameDir"),help:t("botDefaults.botToBotSameDirHelp"),onChange:n=>{g(n)}}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:u,attr:{"data-crossbot-status":""}})})]})}function pe(a){let t=A(),o=ft(a.bot),[r,u]=(0,s.useState)(String(o.limit)),[i,c]=(0,s.useState)(String(o.sinceHours)),[d,g]=(0,s.useState)(null),[n,v]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let b=ft(a.bot);u(String(b.limit)),c(String(b.sinceHours))},[a.bot.summaryRange?.limit,a.bot.summaryRange?.sinceHours]);async function m(){g(null);let b=$t(r,50),f=$t(i,24);if(b==null||f==null){g({text:`\u2717 ${t("botDefaults.summaryNumberInvalid")}`});return}v(!0);try{let S=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/summary-range`,{limit:b,sinceHours:f});if(S.ok&&S.body.ok){let D=S.body.summaryRange??{limit:b,sinceHours:f},y=ft({...a.bot,summaryRange:D});u(String(y.limit)),c(String(y.sinceHours)),a.patchBot(a.bot.larkAppId,{summaryRange:D}),g({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else g({text:`\u2717 ${L(S)}`})}catch(S){g({text:`\u2717 ${$(S)}`})}finally{v(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(P,{help:t("botDefaults.summaryLimitHelp"),children:t("botDefaults.sectionSummaryTrigger")})}),(0,e.jsxs)("div",{className:"bd-row bd-summary-limits",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summaryLimit")}),(0,e.jsx)("input",{type:"number",min:0,step:1,"data-input":"summaryLimit",value:r,disabled:n,onChange:b=>u(b.currentTarget.value)})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summarySinceHours")}),(0,e.jsx)("input",{type:"number",min:0,step:1,"data-input":"summarySinceHours",value:i,disabled:n,onChange:b=>c(b.currentTarget.value)})]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-trigger",disabled:n,onClick:()=>{m()},children:t("botDefaults.summarySave")}),(0,e.jsx)(O,{status:d,attr:{"data-summary-trigger-status":""}})]})]})}function ft(a){let t=a.summaryRange??{limit:50,sinceHours:24};return{limit:Number.isInteger(t.limit)&&Number(t.limit)>=0?Number(t.limit):50,sinceHours:Number.isInteger(t.sinceHours)&&Number(t.sinceHours)>=0?Number(t.sinceHours):24}}function me(a){let t=A(),[o,r]=(0,s.useState)(a.bot.p2pMode==="chat"?"chat":"thread"),[u,i]=(0,s.useState)(Ft(a.bot)),[c,d]=(0,s.useState)(Ut(a.bot)),[g,n]=(0,s.useState)(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only"),[v,m]=(0,s.useState)(null),[b,f]=(0,s.useState)(null),[S,D]=(0,s.useState)(null),[y,h]=(0,s.useState)(null),[C,k]=(0,s.useState)(null);(0,s.useEffect)(()=>{r(a.bot.p2pMode==="chat"?"chat":"thread"),i(Ft(a.bot)),d(Ut(a.bot)),n(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only")},[a.bot.docSubscribeDefaultMode,a.bot.p2pMode,a.bot.regularGroupMentionMode,a.bot.regularGroupReplyMode]);async function T(G){let E=G==="chat"?"chat":"thread";r(E),m("p2p"),f(null);try{let I=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/p2p-mode`,{p2pMode:E});I.ok&&I.body.ok?(a.patchBot(a.bot.larkAppId,{p2pMode:I.body.p2pMode==="chat"?"chat":"thread"}),f({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})):f({text:`\u2717 ${L(I)}`})}catch(I){f({text:`\u2717 ${$(I)}`})}finally{m(null)}}async function w(G,E,I){m(G),I(null);try{let F=await a.putCardPref(E);I(F.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${L(F)}`})}catch(F){I({text:`\u2717 ${$(F)}`})}finally{m(null)}}let p=[{value:"thread",label:t("botDefaults.p2pThread")},{value:"chat",label:t("botDefaults.p2pChat")}],U=[{value:"chat",label:t("botDefaults.regularGroupModeChat")},{value:"chat-topic",label:t("botDefaults.regularGroupModeChatTopic")},{value:"new-topic",label:t("botDefaults.regularGroupModeNewTopic")},{value:"shared",label:t("botDefaults.regularGroupModeShared")}],M=[{value:"always",label:t("botDefaults.mentionModeAlways")},{value:"topic",label:t("botDefaults.mentionModeTopic")},{value:"never",label:t("botDefaults.mentionModeNever")},{value:"ambient",label:t("botDefaults.mentionModeAmbient")}],K=[{value:"mention-only",label:t("botDefaults.docSubscribeModeMention")},{value:"all",label:t("botDefaults.docSubscribeModeAll")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSessionMode")}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.p2pHelp"),children:t("botDefaults.p2pMode")}),(0,e.jsx)(V,{dataInput:"p2pMode",ariaLabel:t("botDefaults.p2pMode"),value:o,disabled:v==="p2p",options:p,onChange:G=>{T(G)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:b,attr:{"data-p2p-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.regularGroupModeHelp"),children:t("botDefaults.regularGroupMode")}),(0,e.jsx)(V,{dataInput:"regularGroupMode",ariaLabel:t("botDefaults.regularGroupMode"),value:u,disabled:v==="regular",options:U,onChange:G=>{i(G),w("regular",{regularGroupReplyMode:G},D)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:S,attr:{"data-regular-group-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.mentionModeHelp"),children:t("botDefaults.mentionMode")}),(0,e.jsx)(V,{dataInput:"regularGroupMentionMode",ariaLabel:t("botDefaults.mentionMode"),value:c,disabled:v==="mention",options:M,onChange:G=>{d(G),w("mention",{regularGroupMentionMode:G},h)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:y,attr:{"data-mention-mode-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.docSubscribeModeHelp"),children:t("botDefaults.docSubscribeMode")}),(0,e.jsx)(V,{dataInput:"docSubscribeDefaultMode",ariaLabel:t("botDefaults.docSubscribeMode"),value:g,disabled:v==="doc",options:K,onChange:G=>{n(G),w("doc",{docSubscribeDefaultMode:G},k)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(O,{status:C,attr:{"data-doc-subscribe-mode-status":""}})})]})]})}function ge(a){let t=A(),o=a.bot.substituteMode??null,[r,u]=(0,s.useState)(o?.enabled===!0);function i(l){switch(l){case"cross_app_open_id":return t("botDefaults.substituteReasonCrossAppOpenId");case"not_visible":return t("botDefaults.substituteReasonNotVisible");case"resolve_failed":return t("botDefaults.substituteReasonResolveFailed");case"unresolvable":return t("botDefaults.substituteReasonUnresolvable");default:return t("botDefaults.substituteUnresolved")}}let[c,d]=(0,s.useState)(o?.disclosure==="none"?"none":"prefix"),[g,n]=(0,s.useState)(o?.replyMode==="quote"?"quote":"thread"),[v,m]=(0,s.useState)(o?.disableControlCard!==!0),[b,f]=(0,s.useState)(()=>bt(o?.chats)),[S,D]=(0,s.useState)(o?.topicGroups!==!1),[y,h]=(0,s.useState)(o?.topicActiveSessionTrigger!==!1),[C,k]=(0,s.useState)(null),[T,w]=(0,s.useState)(!1),p=(0,s.useRef)(0),U=(0,s.useRef)(!1);function M(l){let N=qt(l);return{key:++p.current,idField:N,idValue:l?.[N]??"",name:l?.name??"",persisted:l?{...l}:{},originalIdField:l?N:void 0,resolution:l?.name||l?.avatarUrl?{ok:!0,name:l.name,avatarUrl:l.avatarUrl}:void 0}}let K=(0,s.useRef)(new Map);async function G(l){let N=(K.current.get(l)??0)+1;K.current.set(l,N);let x=()=>K.current.get(l)===N;I(R=>R.map(B=>B.key===l?{...B,resolving:!0}:B));try{let R=E.find(Q=>Q.key===l);if(!R)return;let B=R.idValue.trim();if(!B){I(Q=>Q.map(q=>q.key===l?{...q,resolving:!1,resolution:void 0}:q));return}let j={[R.idField]:B};R.name.trim()&&(j.name=R.name.trim());let Z=await Pt(a.bot.larkAppId,j);if(!x())return;I(Q=>Q.map(q=>{if(q.key!==l)return q;if(!Z.ok)return{...q,resolving:!1,resolution:{ok:!1}};let _=Z.resolution;if(_?.ok===!0){if(!_.openId)return{...q,resolving:!1,resolution:void 0};let W={...q.persisted};return W.openId=_.openId,_.name&&(W.name=_.name),_.avatarUrl&&(W.avatarUrl=_.avatarUrl),{...q,name:_.name??q.name,persisted:W,resolving:!1,resolution:{ok:!0,name:_.name,avatarUrl:_.avatarUrl}}}return{...q,resolving:!1,resolution:{ok:!1,reason:_?.reason}}}))}catch{if(!x())return;I(R=>R.map(B=>B.key===l?{...B,resolving:!1,resolution:{ok:!1}}:B))}}let[E,I]=(0,s.useState)(()=>{let l=o?.targets??[];return l.length?l.map(N=>M(N)):[M()]});(0,s.useEffect)(()=>{if(U.current){U.current=!1;return}let l=a.bot.substituteMode??null;u(l?.enabled===!0),d(l?.disclosure==="none"?"none":"prefix"),n(l?.replyMode==="quote"?"quote":"thread"),m(l?.disableControlCard!==!0),f(bt(l?.chats)),D(l?.topicGroups!==!1),h(l?.topicActiveSessionTrigger!==!1);let N=l?.targets??[];I(N.length?N.map(x=>M(x)):[M()])},[a.bot.larkAppId,a.bot.substituteMode]);async function F(l){w(!0),k(null);try{let N=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/substitute-mode`,l);if(N.ok&&N.body.ok){let x=N.body.substituteMode&&typeof N.body.substituteMode=="object"?N.body.substituteMode:null,R=Array.isArray(N.body?.resolution)?N.body.resolution:[],B=R.filter(j=>j?.ok===!1).map(j=>String(j.input??"").trim()).filter(Boolean);if(u(x?.enabled===!0),d(x?.disclosure==="none"?"none":"prefix"),n(x?.replyMode==="quote"?"quote":"thread"),m(x?.disableControlCard!==!0),f(bt(x?.chats)),D(x?.topicGroups!==!1),h(x?.topicActiveSessionTrigger!==!1),R.length)U.current=!0,I(j=>{let Z=[...R];return j.map(Q=>{let q=Q.idValue.trim(),_=Z.findIndex(tt=>String(tt.input??"").trim()===q);if(_<0)return Q;let W=Z.splice(_,1)[0];if(W?.ok===!0){let tt={...Q.persisted};return W.openId&&(tt.openId=W.openId),Q.idField==="email"&&(tt.email=q),W.name&&(tt.name=W.name),W.avatarUrl&&(tt.avatarUrl=W.avatarUrl),{...Q,name:W.name??Q.name,persisted:tt,resolution:{ok:!0,name:W.name,avatarUrl:W.avatarUrl}}}return{...Q,resolution:{ok:!1,reason:W?.reason}}})});else{let j=x?.targets??[];I(j.length?j.map(Z=>M(Z)):[M()])}a.patchBot(a.bot.larkAppId,{substituteMode:x}),k(B.length?{text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${B.join(", ")}`}:{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else{let x=Array.isArray(N.body?.resolution)?N.body.resolution.filter(R=>R?.ok===!1).map(R=>String(R.input??"").trim()).filter(Boolean):[];k({text:x.length?`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${x.join(", ")}`:`\u2717 ${L(N)}`})}}catch(N){k({text:`\u2717 ${$(N)}`})}finally{w(!1)}}function z(){let l=[],N=!1;for(let x of E){let R=Jt(x);if(!R){N||=!!x.name.trim();continue}l.push(R)}if(N||r&&l.length===0){k({text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}`});return}F({enabled:r,targets:l,disclosure:c,chats:Wt(b),replyMode:g,disableControlCard:!v,topicGroups:S,topicActiveSessionTrigger:y})}let X=[{value:"prefix",label:t("botDefaults.substituteDisclosurePrefix")},{value:"none",label:t("botDefaults.substituteDisclosureNone")}],Y=[{value:"thread",label:t("botDefaults.substituteReplyModeThread")},{value:"quote",label:t("botDefaults.substituteReplyModeQuote")}];return(0,e.jsxs)("section",{className:"bd-section bd-substitute-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSubstitute")}),(0,e.jsx)(J,{checked:r,disabled:T,dataAction:"toggle-substitute-mode",title:t("botDefaults.substituteEnabled"),help:t("botDefaults.substituteHelp"),onChange:u}),(0,e.jsx)(J,{checked:S,disabled:T,dataAction:"toggle-substitute-topic-groups",title:t("botDefaults.substituteTopicGroups"),help:t("botDefaults.substituteTopicGroupsHelp"),onChange:D}),(0,e.jsx)(J,{checked:y,disabled:T||!S,dataAction:"toggle-substitute-topic-active",title:t("botDefaults.substituteTopicActive"),help:t("botDefaults.substituteTopicActiveHelp"),onChange:h}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{children:t("botDefaults.substituteDisclosure")}),(0,e.jsx)(V,{dataInput:"substituteDisclosure",ariaLabel:t("botDefaults.substituteDisclosure"),value:c,disabled:T,options:X,onChange:l=>d(l)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(P,{help:t("botDefaults.substituteReplyModeHelp"),children:t("botDefaults.substituteReplyMode")}),(0,e.jsx)(V,{dataInput:"substituteReplyMode",ariaLabel:t("botDefaults.substituteReplyMode"),value:g,disabled:T,options:Y,onChange:l=>n(l)})]})}),(0,e.jsx)(J,{checked:v,disabled:T,dataAction:"toggle-substitute-control-card",title:t("botDefaults.substituteControlCard"),help:t("botDefaults.substituteControlCardHelp"),onChange:m}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(P,{help:t("botDefaults.substituteChatsHelp"),children:t("botDefaults.substituteChats")}),(0,e.jsx)("textarea",{"data-input":"substituteChats",rows:3,placeholder:t("botDefaults.substituteChatsPlaceholder"),value:b,disabled:T,onChange:l=>f(l.currentTarget.value)})]})}),(0,e.jsxs)("div",{className:"bd-row bd-substitute-targets",children:[(0,e.jsx)(P,{help:t("botDefaults.substituteTargetsHelp"),children:t("botDefaults.substituteTargets")}),(0,e.jsxs)("div",{className:"bd-substitute-target-list","data-input":"substituteTargets",children:[E.map((l,N)=>(0,e.jsxs)("div",{className:"bd-substitute-target-row",children:[(0,e.jsx)(V,{dataInput:`substituteTargetType-${l.key}`,className:"bd-substitute-target-type",ariaLabel:`${t("botDefaults.substituteTargetType")} ${N+1}`,value:l.idField,disabled:T,options:mt.map(x=>({value:x,label:t(`botDefaults.substituteTarget${x[0].toUpperCase()}${x.slice(1)}`)})),onChange:x=>{I(R=>R.map(B=>B.key===l.key?{...B,idField:x,idValue:B.persisted[x]??"",resolution:void 0}:B))}}),(0,e.jsx)("input",{className:"bd-substitute-target-id",type:"text","data-input":`substituteTargetId-${l.key}`,"aria-label":`${t("botDefaults.substituteTargetType")} ${N+1}`,placeholder:t("botDefaults.substituteTargetIdPlaceholder"),value:l.idValue,disabled:T,onChange:x=>{let R=x.currentTarget.value;I(B=>B.map(j=>j.key===l.key?{...j,idValue:R,resolution:void 0}:j))},onBlur:()=>{l.idValue.trim()&&G(l.key)}}),(0,e.jsx)("div",{className:"bd-substitute-target-name",children:l.resolving?(0,e.jsx)("span",{className:"bd-substitute-target-resolving",children:t("botDefaults.substituteResolving")}):l.resolution?.ok===!0&&(l.name||l.resolution.avatarUrl)?(0,e.jsxs)(e.Fragment,{children:[l.resolution.avatarUrl?(0,e.jsx)(at,{html:et({name:l.resolution.name,avatarUrl:l.resolution.avatarUrl,size:"sm"})}):null,(0,e.jsx)("span",{className:"bd-substitute-target-name-chip","data-chip":`substituteTargetName-${l.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${N+1}`,children:l.name})]}):l.resolution?.ok===!1?(0,e.jsx)("span",{className:"bd-substitute-target-resolution-badge",children:i(l.resolution.reason)}):(0,e.jsx)("input",{type:"text","data-input":`substituteTargetName-${l.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${N+1}`,placeholder:t("botDefaults.substituteTargetNamePlaceholder"),value:l.name,disabled:T,onChange:x=>{let R=x.currentTarget.value;I(B=>B.map(j=>j.key===l.key?{...j,name:R}:j))}})}),(0,e.jsx)("button",{type:"button",className:"bd-substitute-target-remove","data-action":"remove-substitute-target",title:t("botDefaults.substituteTargetRemove"),"aria-label":t("botDefaults.substituteTargetRemove"),disabled:T,onClick:()=>{I(x=>{let R=x.filter(B=>B.key!==l.key);return R.length?R:[M()]})},children:(0,e.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]},l.key)),(0,e.jsx)("button",{type:"button",className:"bd-substitute-target-add","data-action":"add-substitute-target",title:t("botDefaults.substituteTargetAdd"),"aria-label":t("botDefaults.substituteTargetAdd"),disabled:T,onClick:()=>I(l=>[...l,M()]),children:(0,e.jsx)("span",{"aria-hidden":"true",children:"+"})})]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-substitute-mode",disabled:T,onClick:z,children:t("botDefaults.substituteSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-substitute-mode",disabled:T,onClick:()=>{F({enabled:!1,targets:[]})},children:t("botDefaults.substituteOff")}),(0,e.jsx)(O,{status:C,attr:{"data-substitute-status":""}})]})]})}function Ft(a){return a.regularGroupReplyMode==="new-topic"||a.regularGroupReplyMode==="shared"||a.regularGroupReplyMode==="chat-topic"?a.regularGroupReplyMode:"chat"}function Ut(a){return a.regularGroupMentionMode==="topic"||a.regularGroupMentionMode==="never"||a.regularGroupMentionMode==="ambient"?a.regularGroupMentionMode:"always"}function ve(a){let t=A(),o=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null,r=Number.isFinite(a.bot.logicalSessionCount)?Number(a.bot.logicalSessionCount):0,u=Number.isFinite(a.bot.residentSessionCount)?Number(a.bot.residentSessionCount):0,i=Number.isFinite(a.bot.dormantSessionCount)?Number(a.bot.dormantSessionCount):0,[c,d]=(0,s.useState)(o),g=c??30,[n,v]=(0,s.useState)(o==null?"":String(o)),[m,b]=(0,s.useState)(null),[f,S]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let h=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null;d(h),v(h==null?"":String(h))},[a.bot.maxLiveWorkers]);async function D(h){b(null),S(!0);try{let C=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/max-live-workers`,{maxLiveWorkers:h});if(C.ok&&C.body.ok){let k=typeof C.body.maxLiveWorkers=="number"?C.body.maxLiveWorkers:null;d(k),v(k==null?"":String(k)),a.patchBot(a.bot.larkAppId,{maxLiveWorkers:k}),b({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else b({text:`\u2717 ${L(C)}`})}catch(C){b({text:`\u2717 ${$(C)}`})}finally{S(!1)}}function y(){let h=Gt(n);if(h==="invalid"){b({text:`\u2717 ${t("botDefaults.maxLiveWorkersInvalid")}`});return}D(h)}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:t("botDefaults.sectionSessionCap")}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(P,{help:t("botDefaults.maxLiveWorkersHelp"),children:t("botDefaults.maxLiveWorkers")}),(0,e.jsx)("input",{type:"number",min:1,step:1,"data-input":"maxLiveWorkers",placeholder:t("botDefaults.maxLiveWorkersPlaceholder"),value:n,disabled:f,onChange:h=>v(h.currentTarget.value)})]}),(0,e.jsx)("small",{"data-session-cap-state":!0,children:Kt(c,t)}),(0,e.jsx)("small",{className:"bd-help bd-session-residency",children:t("botDefaults.maxLiveWorkersUsage",{resident:u,cap:g,dormant:i,logical:r})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-session-cap",disabled:f,onClick:y,children:t("botDefaults.maxLiveWorkersSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-session-cap",disabled:f,onClick:()=>{v(""),D(null)},children:t("botDefaults.maxLiveWorkersOff")}),(0,e.jsx)(O,{status:m,attr:{"data-session-cap-status":""}})]})]})}function ye(a){let t=A(),[o,r]=(0,s.useState)(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[u,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>r(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[a.bot.startupCommands]);async function g(){i(null),d(!0);try{let n=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/startup-commands`,{startupCommands:o});if(n.ok&&n.body.ok){let v=typeof n.body.startupCommands=="string"?n.body.startupCommands:"";r(v),a.patchBot(a.bot.larkAppId,{startupCommands:v}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else i({text:`\u2717 ${L(n)}`})}catch(n){i({text:`\u2717 ${$(n)}`})}finally{d(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(P,{help:t("botDefaults.startupCommandsHelp"),children:t("botDefaults.sectionStartupCommands")})}),(0,e.jsx)("textarea",{"data-input":"startupCommands",rows:3,placeholder:t("botDefaults.startupCommandsPlaceholder"),value:o,disabled:c,onChange:n=>r(n.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-startup-commands",disabled:c,onClick:()=>{g()},children:t("botDefaults.startupCommandsSave")}),(0,e.jsx)(O,{status:u,attr:{"data-startup-commands-status":""}})]})]})}function he(a){let t=A(),[o,r]=(0,s.useState)(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[u,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>r(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[a.bot.launchShell]);async function g(){i(null),d(!0);try{let n=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/launch-shell`,{launchShell:o});if(n.ok&&n.body.ok){let v=typeof n.body.launchShell=="string"?n.body.launchShell:"";r(v),a.patchBot(a.bot.larkAppId,{launchShell:v}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else i({text:`\u2717 ${L(n)}`})}catch(n){i({text:`\u2717 ${$(n)}`})}finally{d(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(P,{help:t("botDefaults.launchShellHelp"),children:t("botDefaults.sectionLaunchShell")})}),(0,e.jsx)("input",{type:"text","data-input":"launchShell",placeholder:t("botDefaults.launchShellPlaceholder"),value:o,disabled:c,onChange:n=>r(n.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-launch-shell",disabled:c,onClick:()=>{g()},children:t("botDefaults.launchShellSave")}),(0,e.jsx)(O,{status:u,attr:{"data-launch-shell-status":""}})]})]})}function ke(a){let t=A(),[o,r]=(0,s.useState)(typeof a.bot.env=="string"?a.bot.env:""),[u,i]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>r(typeof a.bot.env=="string"?a.bot.env:""),[a.bot.env]);async function g(){i(null),d(!0);try{let n=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/env`,{env:o});if(n.ok&&n.body.ok){let v=typeof n.body.env=="string"?n.body.env:"";r(v),a.patchBot(a.bot.larkAppId,{env:v}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else i({text:`\u2717 ${L(n)}`})}catch(n){i({text:`\u2717 ${$(n)}`})}finally{d(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(P,{help:t("botDefaults.envHelp"),children:t("botDefaults.sectionEnv")})}),(0,e.jsx)("textarea",{"data-input":"env",rows:5,placeholder:t("botDefaults.envPlaceholder"),value:o,disabled:c,onChange:n=>r(n.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-env",disabled:c,onClick:()=>{g()},children:t("botDefaults.envSave")}),(0,e.jsx)(O,{status:u,attr:{"data-env-status":""}})]})]})}var De=["gpt-5.5","gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.4","gpt-5.4-pro"],Se=["","low","medium","high","xhigh"],Ce=["boe","cn"];function Ie(a){let t=A(),o=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{},[r,u]=(0,s.useState)(typeof o.baseUrl=="string"?o.baseUrl:""),[i,c]=(0,s.useState)(o.sandboxCluster==="cn"?"cn":"boe"),[d,g]=(0,s.useState)(typeof o.model=="string"?o.model:""),[n,v]=(0,s.useState)(typeof o.reasoningEffort=="string"?o.reasoningEffort:""),[m,b]=(0,s.useState)(typeof o.jwtEnv=="string"?o.jwtEnv:""),[f,S]=(0,s.useState)(typeof o.systemPrompt=="string"?o.systemPrompt:""),[D,y]=(0,s.useState)(Array.isArray(o.setupCommands)?o.setupCommands.join(`
3
+ `):""),[h,C]=(0,s.useState)(null),[k,T]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let p=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{};u(typeof p.baseUrl=="string"?p.baseUrl:""),c(p.sandboxCluster==="cn"?"cn":"boe"),g(typeof p.model=="string"?p.model:""),v(typeof p.reasoningEffort=="string"?p.reasoningEffort:""),b(typeof p.jwtEnv=="string"?p.jwtEnv:""),S(typeof p.systemPrompt=="string"?p.systemPrompt:""),y(Array.isArray(p.setupCommands)?p.setupCommands.join(`
4
+ `):"")},[a.bot.riff]);async function w(){C(null),T(!0);try{let p={};r.trim()&&(p.baseUrl=r.trim()),p.sandboxCluster=i,d.trim()&&(p.model=d.trim()),n&&(p.reasoningEffort=n),m.trim()&&(p.jwtEnv=m.trim()),f.trim()&&(p.systemPrompt=f.trim()),D.trim()&&(p.setupCommands=D.split(`
5
+ `).map(K=>K.trim()).filter(Boolean));let U=Object.keys(p).length?JSON.stringify(p):"",M=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/riff`,{riff:U});if(M.ok&&M.body.ok){let K=typeof M.body.riff=="string"&&M.body.riff?JSON.parse(M.body.riff):null;if(a.patchBot(a.bot.larkAppId,{riff:K}),a.persistCliSelection&&!await a.persistCliSelection()){C({text:`\u2717 ${t("botDefaults.riffCliPersistFailed")}`});return}C({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else C({text:`\u2717 ${L(M)}`})}catch(p){C({text:`\u2717 ${$(p)}`})}finally{T(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(P,{help:t("botDefaults.riffHelp"),children:t("botDefaults.sectionRiff")})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffBaseUrl")}),(0,e.jsx)("input",{type:"text","data-input":"riff-base-url",placeholder:t("botDefaults.riffBaseUrlPlaceholder"),value:r,disabled:k,onChange:p=>u(p.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:(0,e.jsx)(P,{help:t("botDefaults.riffSandboxClusterHelp"),children:t("botDefaults.riffSandboxCluster")})}),(0,e.jsx)(V,{dataInput:"riff-sandbox-cluster",ariaLabel:t("botDefaults.riffSandboxCluster"),value:i,disabled:k,options:Ce.map(p=>({value:p,label:p.toUpperCase()})),onChange:p=>c(p)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(P,{help:t("botDefaults.riffModelHelp"),children:t("botDefaults.riffModel")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-model",list:`riff-model-suggestions-${a.bot.larkAppId}`,placeholder:t("botDefaults.riffModelPlaceholder"),value:d,disabled:k,onChange:p=>g(p.currentTarget.value)}),(0,e.jsx)("datalist",{id:`riff-model-suggestions-${a.bot.larkAppId}`,children:De.map(p=>(0,e.jsx)("option",{value:p},p))})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:(0,e.jsx)(P,{help:t("botDefaults.riffReasoningEffortHelp"),children:t("botDefaults.riffReasoningEffort")})}),(0,e.jsx)(V,{dataInput:"riff-reasoning-effort",ariaLabel:t("botDefaults.riffReasoningEffort"),value:n,disabled:k,options:Se.map(p=>({value:p,label:p===""?t("botDefaults.riffReasoningEffortDefault"):p})),onChange:p=>v(p)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(P,{help:t("botDefaults.riffJwtEnvHelp"),children:t("botDefaults.riffJwtEnv")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-jwt-env",placeholder:t("botDefaults.riffJwtEnvPlaceholder"),value:m,disabled:k,onChange:p=>b(p.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffSystemPrompt")}),(0,e.jsx)("textarea",{"data-input":"riff-system-prompt",placeholder:t("botDefaults.riffSystemPromptPlaceholder"),value:f,disabled:k,onChange:p=>S(p.currentTarget.value),rows:4})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffSetupCommands")}),(0,e.jsx)("textarea",{"data-input":"riff-setup-commands",placeholder:t("botDefaults.riffSetupCommandsPlaceholder"),value:D,disabled:k,onChange:p=>y(p.currentTarget.value),rows:3})]})}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-riff",disabled:k,onClick:()=>{w()},children:t("botDefaults.riffSave")}),(0,e.jsx)(O,{status:h,attr:{"data-riff-status":""}})]})]})}function Ne(a){let t=A(),o=a.bot.brandLabel??null,[r,u]=(0,s.useState)(o),[i,c]=(0,s.useState)(o??""),[d,g]=(0,s.useState)(null),[n,v]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let b=a.bot.brandLabel??null;u(b),c(b??"")},[a.bot.brandLabel]);async function m(b){g(null),v(!0);try{let f=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/brand-label`,{brandLabel:b});if(f.ok&&f.body.ok){let S=f.body.brandLabel??null;u(S),c(S??""),a.patchBot(a.bot.larkAppId,{brandLabel:S}),g({text:"\u2713",ok:!0})}else g({text:`\u2717 ${L(f)}`})}catch(f){g({text:`\u2717 ${$(f)}`})}finally{v(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionBrand")}),(0,e.jsxs)("div",{className:"bd-row bd-brand",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(P,{help:t("botDefaults.brandLabelHelp"),children:t("botDefaults.brandLabel")}),(0,e.jsx)("input",{type:"text","data-input":"brandLabel",placeholder:t("botDefaults.brandLabelPlaceholder"),value:i,disabled:n,onChange:b=>c(b.currentTarget.value)})]}),(0,e.jsx)("small",{"data-brand-state":!0,children:_t(r,t)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-brand",disabled:n,onClick:()=>{m(i)},children:t("botDefaults.brandSave")}),(0,e.jsx)("button",{type:"button","data-action":"reset-brand",disabled:n,onClick:()=>{m(null)},children:t("botDefaults.brandReset")}),(0,e.jsx)(O,{status:d,attr:{"data-brand-status":""}})]})]})}function Te(a){let t=A(),[o,r]=(0,s.useState)(a.bot.autoGrantRequestCards!==!1),[u,i]=(0,s.useState)(a.bot.restrictGrantCommands===!0),[c,d]=(0,s.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null),[g,n]=(0,s.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?String(a.bot.messageQuotaDefaultLimit):""),[v,m]=(0,s.useState)(null),[b,f]=(0,s.useState)(null);(0,s.useEffect)(()=>{r(a.bot.autoGrantRequestCards!==!1),i(a.bot.restrictGrantCommands===!0);let y=typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null;d(y),n(y==null?"":String(y))},[a.bot.autoGrantRequestCards,a.bot.messageQuotaDefaultLimit,a.bot.restrictGrantCommands]);async function S(y,h){f(h),m(null);try{let C=await H("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/grant-prefs`,y);if(C.ok&&C.body.ok){let k=typeof C.body.messageQuotaDefaultLimit=="number"?C.body.messageQuotaDefaultLimit:null;r(C.body.autoGrantRequestCards!==!1),i(C.body.restrictGrantCommands===!0),d(k),"messageQuotaDefaultLimit"in y&&n(k==null?"":String(k)),a.patchBot(a.bot.larkAppId,{autoGrantRequestCards:C.body.autoGrantRequestCards!==!1,restrictGrantCommands:C.body.restrictGrantCommands===!0,messageQuotaDefaultLimit:k}),m({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else m({text:`\u2717 ${L(C)}`})}catch(C){m({text:`\u2717 ${$(C)}`})}finally{f(null)}}function D(){let y=Gt(g);if(y==="invalid"){m({text:`\u2717 ${t("botDefaults.quotaInvalid")}`});return}S({messageQuotaDefaultLimit:y},"quota")}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionGrant")}),(0,e.jsxs)("div",{className:"bd-toggle-grid bd-grant-toggle-grid",children:[(0,e.jsx)(J,{checked:o,disabled:b==="autoGrant",dataAction:"toggle-auto-grant-card",title:t("botDefaults.autoGrantCard"),help:t("botDefaults.autoGrantCardHelp"),onChange:y=>{r(y),S({autoGrantRequestCards:y},"autoGrant")}}),(0,e.jsx)(J,{checked:u,disabled:b==="restrict",dataAction:"toggle-restrict-grant",title:t("botDefaults.restrictGrant"),help:t("botDefaults.restrictGrantHelp"),onChange:y=>{i(y),S({restrictGrantCommands:y},"restrict")}})]}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(P,{help:t("botDefaults.quotaHelp"),children:t("botDefaults.quotaDefault")}),(0,e.jsx)("input",{type:"number",min:1,step:1,"data-input":"quotaLimit",placeholder:t("botDefaults.quotaPlaceholder"),value:g,disabled:b==="quota",onChange:y=>n(y.currentTarget.value)})]}),(0,e.jsx)("small",{"data-quota-state":!0,children:Vt(c,t)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-quota",disabled:b==="quota",onClick:D,children:t("botDefaults.quotaSave")}),(0,e.jsx)(O,{status:v,attr:{"data-grant-status":""}})]})]})}function Oe(a){return ht(a,(0,e.jsx)(zt,{}))}export{oe as BotAgentSection,zt as BotDefaultsPage,be as CodexAppDisplaySection,Jt as buildSubstituteTarget,Oe as renderBotDefaultsPage};
@@ -1 +1 @@
1
- import{B as i,F as c,d as r}from"./chunk-CUV65BIQ.js";var l={chats:[],bots:[]};async function A(){try{l=await r()}catch{}}var u=new Set(["working","analyzing","active","starting"]);function m(d){let s=new Map,e=t=>{let o=s.get(t);return o||(o={botName:t,larkAppId:t,cliId:"unknown",online:!1,sessions:[],active:[],busy:[],attention:[],lastActiveAt:0},s.set(t,o)),o};for(let t of l.bots??[]){let o=e(t.larkAppId??t.botName??"-");o.online=!0,t.botName&&(o.botName=t.botName),t.botAvatarUrl&&(o.botAvatarUrl=t.botAvatarUrl),t.cliId&&(o.cliId=t.cliId)}let p=[...d].sort((t,o)=>+(t.status==="closed")-+(o.status==="closed"));for(let t of p){let o=t.larkAppId??t.botName??"-";if(t.status==="closed"&&!s.has(o))continue;let a=e(o);t.botName&&(a.botName===a.larkAppId||!a.botName)&&(a.botName=t.botName),a.sessions.push(t),t.cliId&&a.cliId==="unknown"&&(a.cliId=t.cliId),a.lastActiveAt=Math.max(a.lastActiveAt,Number(t.lastMessageAt??0)),t.status!=="closed"&&(a.active.push(t),u.has(t.status)&&a.busy.push(t),c(t)&&a.attention.push(t))}for(let t of s.values())if(t.botName===t.larkAppId){let o=i(t.larkAppId);o&&(t.botName=o)}return[...s.values()].sort((t,o)=>{let a=n=>n.attention.length?0:n.busy.length?1:n.online||n.active.length?2:3;return a(t)!==a(o)?a(t)-a(o):o.lastActiveAt-t.lastActiveAt})}export{A as a,m as b};
1
+ import{B as i,F as c,d as r}from"./chunk-H7P5UV4W.js";var l={chats:[],bots:[]};async function A(){try{l=await r()}catch{}}var u=new Set(["working","analyzing","active","starting"]);function m(d){let s=new Map,e=t=>{let o=s.get(t);return o||(o={botName:t,larkAppId:t,cliId:"unknown",online:!1,sessions:[],active:[],busy:[],attention:[],lastActiveAt:0},s.set(t,o)),o};for(let t of l.bots??[]){let o=e(t.larkAppId??t.botName??"-");o.online=!0,t.botName&&(o.botName=t.botName),t.botAvatarUrl&&(o.botAvatarUrl=t.botAvatarUrl),t.cliId&&(o.cliId=t.cliId)}let p=[...d].sort((t,o)=>+(t.status==="closed")-+(o.status==="closed"));for(let t of p){let o=t.larkAppId??t.botName??"-";if(t.status==="closed"&&!s.has(o))continue;let a=e(o);t.botName&&(a.botName===a.larkAppId||!a.botName)&&(a.botName=t.botName),a.sessions.push(t),t.cliId&&a.cliId==="unknown"&&(a.cliId=t.cliId),a.lastActiveAt=Math.max(a.lastActiveAt,Number(t.lastMessageAt??0)),t.status!=="closed"&&(a.active.push(t),u.has(t.status)&&a.busy.push(t),c(t)&&a.attention.push(t))}for(let t of s.values())if(t.botName===t.larkAppId){let o=i(t.larkAppId);o&&(t.botName=o)}return[...s.values()].sort((t,o)=>{let a=n=>n.attention.length?0:n.busy.length?1:n.online||n.active.length?2:3;return a(t)!==a(o)?a(t)-a(o):o.lastActiveAt-t.lastActiveAt})}export{A as a,m as b};