botmux 3.4.3 → 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 (350) 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.d.ts.map +1 -1
  19. package/dist/adapters/cli/pi-initial-prompt.js +5 -1
  20. package/dist/adapters/cli/pi-initial-prompt.js.map +1 -1
  21. package/dist/adapters/cli/traex.d.ts.map +1 -1
  22. package/dist/adapters/cli/traex.js +5 -0
  23. package/dist/adapters/cli/traex.js.map +1 -1
  24. package/dist/adapters/cli/types.d.ts +3 -3
  25. package/dist/adapters/cli/types.d.ts.map +1 -1
  26. package/dist/adapters/hook-installer.d.ts +7 -0
  27. package/dist/adapters/hook-installer.d.ts.map +1 -1
  28. package/dist/adapters/hook-installer.js +56 -0
  29. package/dist/adapters/hook-installer.js.map +1 -1
  30. package/dist/bot-registry.d.ts +13 -0
  31. package/dist/bot-registry.d.ts.map +1 -1
  32. package/dist/bot-registry.js +118 -2
  33. package/dist/bot-registry.js.map +1 -1
  34. package/dist/cli/capabilities.d.ts +24 -0
  35. package/dist/cli/capabilities.d.ts.map +1 -0
  36. package/dist/cli/capabilities.js +25 -0
  37. package/dist/cli/capabilities.js.map +1 -0
  38. package/dist/cli/create-group-resolver.d.ts +24 -0
  39. package/dist/cli/create-group-resolver.d.ts.map +1 -1
  40. package/dist/cli/create-group-resolver.js +23 -0
  41. package/dist/cli/create-group-resolver.js.map +1 -1
  42. package/dist/cli/daemon-lifecycle-env.d.ts +5 -7
  43. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  44. package/dist/cli/daemon-lifecycle-env.js +13 -7
  45. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  46. package/dist/cli/exact-chat-grant-client.d.ts +48 -0
  47. package/dist/cli/exact-chat-grant-client.d.ts.map +1 -0
  48. package/dist/cli/exact-chat-grant-client.js +108 -0
  49. package/dist/cli/exact-chat-grant-client.js.map +1 -0
  50. package/dist/cli/exact-chat-grant.d.ts +18 -0
  51. package/dist/cli/exact-chat-grant.d.ts.map +1 -0
  52. package/dist/cli/exact-chat-grant.js +97 -0
  53. package/dist/cli/exact-chat-grant.js.map +1 -0
  54. package/dist/cli.d.ts +10 -1
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +770 -126
  57. package/dist/cli.js.map +1 -1
  58. package/dist/codex-rpc-engine.d.ts +26 -0
  59. package/dist/codex-rpc-engine.d.ts.map +1 -1
  60. package/dist/codex-rpc-engine.js +113 -2
  61. package/dist/codex-rpc-engine.js.map +1 -1
  62. package/dist/config.d.ts +16 -0
  63. package/dist/config.d.ts.map +1 -1
  64. package/dist/config.js +16 -0
  65. package/dist/config.js.map +1 -1
  66. package/dist/core/bot-live-control.d.ts +41 -0
  67. package/dist/core/bot-live-control.d.ts.map +1 -0
  68. package/dist/core/bot-live-control.js +135 -0
  69. package/dist/core/bot-live-control.js.map +1 -0
  70. package/dist/core/command-handler.d.ts.map +1 -1
  71. package/dist/core/command-handler.js +28 -8
  72. package/dist/core/command-handler.js.map +1 -1
  73. package/dist/core/daemon-config-fence.d.ts +8 -0
  74. package/dist/core/daemon-config-fence.d.ts.map +1 -0
  75. package/dist/core/daemon-config-fence.js +13 -0
  76. package/dist/core/daemon-config-fence.js.map +1 -0
  77. package/dist/core/dashboard-events.d.ts +5 -0
  78. package/dist/core/dashboard-events.d.ts.map +1 -1
  79. package/dist/core/dashboard-events.js.map +1 -1
  80. package/dist/core/dashboard-ipc-server.d.ts +21 -2
  81. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  82. package/dist/core/dashboard-ipc-server.js +232 -5
  83. package/dist/core/dashboard-ipc-server.js.map +1 -1
  84. package/dist/core/dispatch-registry.d.ts +12 -0
  85. package/dist/core/dispatch-registry.d.ts.map +1 -0
  86. package/dist/core/dispatch-registry.js +33 -0
  87. package/dist/core/dispatch-registry.js.map +1 -0
  88. package/dist/core/dispatch.d.ts +99 -0
  89. package/dist/core/dispatch.d.ts.map +1 -1
  90. package/dist/core/dispatch.js +136 -0
  91. package/dist/core/dispatch.js.map +1 -1
  92. package/dist/core/maintenance.d.ts.map +1 -1
  93. package/dist/core/maintenance.js +10 -3
  94. package/dist/core/maintenance.js.map +1 -1
  95. package/dist/core/persistent-backend.d.ts +16 -2
  96. package/dist/core/persistent-backend.d.ts.map +1 -1
  97. package/dist/core/persistent-backend.js +40 -0
  98. package/dist/core/persistent-backend.js.map +1 -1
  99. package/dist/core/session-discovery.d.ts +8 -1
  100. package/dist/core/session-discovery.d.ts.map +1 -1
  101. package/dist/core/session-discovery.js +140 -8
  102. package/dist/core/session-discovery.js.map +1 -1
  103. package/dist/core/session-manager.d.ts.map +1 -1
  104. package/dist/core/session-manager.js +12 -8
  105. package/dist/core/session-manager.js.map +1 -1
  106. package/dist/core/session-title.d.ts +8 -0
  107. package/dist/core/session-title.d.ts.map +1 -1
  108. package/dist/core/session-title.js +54 -0
  109. package/dist/core/session-title.js.map +1 -1
  110. package/dist/core/terminal-write-auth.d.ts +15 -0
  111. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  112. package/dist/core/terminal-write-auth.js +20 -0
  113. package/dist/core/terminal-write-auth.js.map +1 -1
  114. package/dist/core/trigger-session.d.ts.map +1 -1
  115. package/dist/core/trigger-session.js +3 -2
  116. package/dist/core/trigger-session.js.map +1 -1
  117. package/dist/core/types.d.ts +33 -0
  118. package/dist/core/types.d.ts.map +1 -1
  119. package/dist/core/types.js.map +1 -1
  120. package/dist/core/worker-pool.d.ts +27 -8
  121. package/dist/core/worker-pool.d.ts.map +1 -1
  122. package/dist/core/worker-pool.js +389 -19
  123. package/dist/core/worker-pool.js.map +1 -1
  124. package/dist/daemon.d.ts +4 -2
  125. package/dist/daemon.d.ts.map +1 -1
  126. package/dist/daemon.js +397 -26
  127. package/dist/daemon.js.map +1 -1
  128. package/dist/dashboard/bot-onboarding.d.ts +127 -1
  129. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  130. package/dist/dashboard/bot-onboarding.js +1104 -25
  131. package/dist/dashboard/bot-onboarding.js.map +1 -1
  132. package/dist/dashboard/debug-terminal.d.ts +18 -0
  133. package/dist/dashboard/debug-terminal.d.ts.map +1 -0
  134. package/dist/dashboard/debug-terminal.js +338 -0
  135. package/dist/dashboard/debug-terminal.js.map +1 -0
  136. package/dist/dashboard/public-redact.d.ts +2 -0
  137. package/dist/dashboard/public-redact.d.ts.map +1 -1
  138. package/dist/dashboard/public-redact.js +12 -3
  139. package/dist/dashboard/public-redact.js.map +1 -1
  140. package/dist/dashboard/registry.d.ts +8 -0
  141. package/dist/dashboard/registry.d.ts.map +1 -1
  142. package/dist/dashboard/registry.js +13 -0
  143. package/dist/dashboard/registry.js.map +1 -1
  144. package/dist/dashboard/settings-write-applier.d.ts +47 -1
  145. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  146. package/dist/dashboard/settings-write-applier.js +102 -1
  147. package/dist/dashboard/settings-write-applier.js.map +1 -1
  148. package/dist/dashboard/web/app.d.ts.map +1 -1
  149. package/dist/dashboard/web/app.js +2 -0
  150. package/dist/dashboard/web/app.js.map +1 -1
  151. package/dist/dashboard/web/bot-defaults-page.d.ts +1 -0
  152. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  153. package/dist/dashboard/web/bot-defaults-page.js +24 -5
  154. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  155. package/dist/dashboard/web/bot-defaults.d.ts +15 -0
  156. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  157. package/dist/dashboard/web/bot-defaults.js +19 -0
  158. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  159. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  160. package/dist/dashboard/web/i18n.js +76 -6
  161. package/dist/dashboard/web/i18n.js.map +1 -1
  162. package/dist/dashboard/web/icon-tooltip.d.ts +3 -0
  163. package/dist/dashboard/web/icon-tooltip.d.ts.map +1 -0
  164. package/dist/dashboard/web/icon-tooltip.js +108 -0
  165. package/dist/dashboard/web/icon-tooltip.js.map +1 -0
  166. package/dist/dashboard/web/sessions-kanban.js +2 -2
  167. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  168. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  169. package/dist/dashboard/web/sessions-page.js +48 -9
  170. package/dist/dashboard/web/sessions-page.js.map +1 -1
  171. package/dist/dashboard/web/sessions.d.ts +2 -0
  172. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  173. package/dist/dashboard/web/sessions.js +46 -2
  174. package/dist/dashboard/web/sessions.js.map +1 -1
  175. package/dist/dashboard/web/settings-page.d.ts +78 -0
  176. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  177. package/dist/dashboard/web/settings-page.js +88 -1
  178. package/dist/dashboard/web/settings-page.js.map +1 -1
  179. package/dist/dashboard/web/store.d.ts +2 -0
  180. package/dist/dashboard/web/store.d.ts.map +1 -1
  181. package/dist/dashboard/web/store.js +13 -1
  182. package/dist/dashboard/web/store.js.map +1 -1
  183. package/dist/dashboard-web/app.js +1 -1
  184. package/dist/dashboard-web/chunks/bot-defaults-page-O376WSER.js +5 -0
  185. package/dist/dashboard-web/chunks/{chunk-JNRSPKLS.js → chunk-EJDYUINZ.js} +1 -1
  186. package/dist/dashboard-web/chunks/{chunk-CUV65BIQ.js → chunk-H7P5UV4W.js} +6 -6
  187. package/dist/dashboard-web/chunks/{chunk-P6GO5KT4.js → chunk-QCPPKCX3.js} +1 -1
  188. package/dist/dashboard-web/chunks/{chunk-UBOLHQCK.js → chunk-WXPMNEYV.js} +1 -1
  189. package/dist/dashboard-web/chunks/{connectors-page-KTC2QWNW.js → connectors-page-IR54AOAI.js} +1 -1
  190. package/dist/dashboard-web/chunks/{groups-page-B3EKGOLY.js → groups-page-3P4TLUMF.js} +1 -1
  191. package/dist/dashboard-web/chunks/{insights-page-X6RXNCWX.js → insights-page-TDCZV56A.js} +1 -1
  192. package/dist/dashboard-web/chunks/{monitor-room-LLRA5LQW.js → monitor-room-QWCWL3SX.js} +1 -1
  193. package/dist/dashboard-web/chunks/{monitoring-page-7MT5FEOS.js → monitoring-page-IOWFSNVC.js} +1 -1
  194. package/dist/dashboard-web/chunks/{office-page-KD46D5TD.js → office-page-5AUPEHZP.js} +1 -1
  195. package/dist/dashboard-web/chunks/{overview-page-JUWNH32O.js → overview-page-QJMI6NLW.js} +1 -1
  196. package/dist/dashboard-web/chunks/{roles-page-P6F7NLOI.js → roles-page-WJVB52ET.js} +1 -1
  197. package/dist/dashboard-web/chunks/{schedules-page-XIHWZST4.js → schedules-page-RVRWHP4V.js} +1 -1
  198. package/dist/dashboard-web/chunks/sessions-page-KWLGBX6G.js +3 -0
  199. package/dist/dashboard-web/chunks/settings-page-TNZEPC7V.js +2 -0
  200. package/dist/dashboard-web/chunks/{skills-page-A46KVWBL.js → skills-page-7YT5TIX5.js} +1 -1
  201. package/dist/dashboard-web/chunks/{team-federation-page-SDUC56DF.js → team-federation-page-NJZKTU7A.js} +1 -1
  202. package/dist/dashboard-web/chunks/{v3-page-J5JOTUSQ.js → v3-page-NQ73UA2Q.js} +1 -1
  203. package/dist/dashboard-web/chunks/{whiteboards-page-U7LSOAWI.js → whiteboards-page-DSM3MDMN.js} +1 -1
  204. package/dist/dashboard-web/style.css +198 -7
  205. package/dist/dashboard.js +294 -7
  206. package/dist/dashboard.js.map +1 -1
  207. package/dist/features/codex-notifier/adoption.d.ts +11 -0
  208. package/dist/features/codex-notifier/adoption.d.ts.map +1 -0
  209. package/dist/features/codex-notifier/adoption.js +11 -0
  210. package/dist/features/codex-notifier/adoption.js.map +1 -0
  211. package/dist/features/codex-notifier/app-opener.d.ts +21 -0
  212. package/dist/features/codex-notifier/app-opener.d.ts.map +1 -0
  213. package/dist/features/codex-notifier/app-opener.js +33 -0
  214. package/dist/features/codex-notifier/app-opener.js.map +1 -0
  215. package/dist/features/codex-notifier/card-action.d.ts +27 -0
  216. package/dist/features/codex-notifier/card-action.d.ts.map +1 -0
  217. package/dist/features/codex-notifier/card-action.js +84 -0
  218. package/dist/features/codex-notifier/card-action.js.map +1 -0
  219. package/dist/features/codex-notifier/card.d.ts +12 -0
  220. package/dist/features/codex-notifier/card.d.ts.map +1 -0
  221. package/dist/features/codex-notifier/card.js +150 -0
  222. package/dist/features/codex-notifier/card.js.map +1 -0
  223. package/dist/features/codex-notifier/codex-context.d.ts +12 -0
  224. package/dist/features/codex-notifier/codex-context.d.ts.map +1 -0
  225. package/dist/features/codex-notifier/codex-context.js +161 -0
  226. package/dist/features/codex-notifier/codex-context.js.map +1 -0
  227. package/dist/features/codex-notifier/config.d.ts +9 -0
  228. package/dist/features/codex-notifier/config.d.ts.map +1 -0
  229. package/dist/features/codex-notifier/config.js +11 -0
  230. package/dist/features/codex-notifier/config.js.map +1 -0
  231. package/dist/features/codex-notifier/confirmed-turn.d.ts +20 -0
  232. package/dist/features/codex-notifier/confirmed-turn.d.ts.map +1 -0
  233. package/dist/features/codex-notifier/confirmed-turn.js +130 -0
  234. package/dist/features/codex-notifier/confirmed-turn.js.map +1 -0
  235. package/dist/features/codex-notifier/emitter.d.ts +13 -0
  236. package/dist/features/codex-notifier/emitter.d.ts.map +1 -0
  237. package/dist/features/codex-notifier/emitter.js +33 -0
  238. package/dist/features/codex-notifier/emitter.js.map +1 -0
  239. package/dist/features/codex-notifier/event-store.d.ts +29 -0
  240. package/dist/features/codex-notifier/event-store.d.ts.map +1 -0
  241. package/dist/features/codex-notifier/event-store.js +217 -0
  242. package/dist/features/codex-notifier/event-store.js.map +1 -0
  243. package/dist/features/codex-notifier/event.d.ts +46 -0
  244. package/dist/features/codex-notifier/event.d.ts.map +1 -0
  245. package/dist/features/codex-notifier/event.js +188 -0
  246. package/dist/features/codex-notifier/event.js.map +1 -0
  247. package/dist/features/codex-notifier/hook-cli.d.ts +23 -0
  248. package/dist/features/codex-notifier/hook-cli.d.ts.map +1 -0
  249. package/dist/features/codex-notifier/hook-cli.js +130 -0
  250. package/dist/features/codex-notifier/hook-cli.js.map +1 -0
  251. package/dist/features/codex-notifier/hook-installer.d.ts +19 -0
  252. package/dist/features/codex-notifier/hook-installer.d.ts.map +1 -0
  253. package/dist/features/codex-notifier/hook-installer.js +158 -0
  254. package/dist/features/codex-notifier/hook-installer.js.map +1 -0
  255. package/dist/features/codex-notifier/index.d.ts +21 -0
  256. package/dist/features/codex-notifier/index.d.ts.map +1 -0
  257. package/dist/features/codex-notifier/index.js +19 -0
  258. package/dist/features/codex-notifier/index.js.map +1 -0
  259. package/dist/features/codex-notifier/internal-turn.d.ts +5 -0
  260. package/dist/features/codex-notifier/internal-turn.d.ts.map +1 -0
  261. package/dist/features/codex-notifier/internal-turn.js +43 -0
  262. package/dist/features/codex-notifier/internal-turn.js.map +1 -0
  263. package/dist/features/codex-notifier/outbox-worker.d.ts +71 -0
  264. package/dist/features/codex-notifier/outbox-worker.d.ts.map +1 -0
  265. package/dist/features/codex-notifier/outbox-worker.js +290 -0
  266. package/dist/features/codex-notifier/outbox-worker.js.map +1 -0
  267. package/dist/features/codex-notifier/outbox.d.ts +25 -0
  268. package/dist/features/codex-notifier/outbox.d.ts.map +1 -0
  269. package/dist/features/codex-notifier/outbox.js +225 -0
  270. package/dist/features/codex-notifier/outbox.js.map +1 -0
  271. package/dist/features/codex-notifier/paths.d.ts +7 -0
  272. package/dist/features/codex-notifier/paths.d.ts.map +1 -0
  273. package/dist/features/codex-notifier/paths.js +20 -0
  274. package/dist/features/codex-notifier/paths.js.map +1 -0
  275. package/dist/features/codex-notifier/screen-lock.d.ts +12 -0
  276. package/dist/features/codex-notifier/screen-lock.d.ts.map +1 -0
  277. package/dist/features/codex-notifier/screen-lock.js +47 -0
  278. package/dist/features/codex-notifier/screen-lock.js.map +1 -0
  279. package/dist/features/codex-notifier/side-conversation-monitor.d.ts +102 -0
  280. package/dist/features/codex-notifier/side-conversation-monitor.d.ts.map +1 -0
  281. package/dist/features/codex-notifier/side-conversation-monitor.js +774 -0
  282. package/dist/features/codex-notifier/side-conversation-monitor.js.map +1 -0
  283. package/dist/features/codex-notifier/types.d.ts +42 -0
  284. package/dist/features/codex-notifier/types.d.ts.map +1 -0
  285. package/dist/features/codex-notifier/types.js +2 -0
  286. package/dist/features/codex-notifier/types.js.map +1 -0
  287. package/dist/features/codex-notifier/worker-lock.d.ts +8 -0
  288. package/dist/features/codex-notifier/worker-lock.d.ts.map +1 -0
  289. package/dist/features/codex-notifier/worker-lock.js +108 -0
  290. package/dist/features/codex-notifier/worker-lock.js.map +1 -0
  291. package/dist/global-config.d.ts +13 -0
  292. package/dist/global-config.d.ts.map +1 -1
  293. package/dist/global-config.js +30 -0
  294. package/dist/global-config.js.map +1 -1
  295. package/dist/im/lark/card-builder.js +2 -2
  296. package/dist/im/lark/card-builder.js.map +1 -1
  297. package/dist/im/lark/card-handler.d.ts +2 -0
  298. package/dist/im/lark/card-handler.d.ts.map +1 -1
  299. package/dist/im/lark/card-handler.js +165 -34
  300. package/dist/im/lark/card-handler.js.map +1 -1
  301. package/dist/im/lark/client.d.ts +62 -4
  302. package/dist/im/lark/client.d.ts.map +1 -1
  303. package/dist/im/lark/client.js +237 -29
  304. package/dist/im/lark/client.js.map +1 -1
  305. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  306. package/dist/im/lark/event-dispatcher.js +20 -30
  307. package/dist/im/lark/event-dispatcher.js.map +1 -1
  308. package/dist/services/codex-app-threads.d.ts +47 -0
  309. package/dist/services/codex-app-threads.d.ts.map +1 -1
  310. package/dist/services/codex-app-threads.js +502 -10
  311. package/dist/services/codex-app-threads.js.map +1 -1
  312. package/dist/services/exact-chat-grant.d.ts +83 -0
  313. package/dist/services/exact-chat-grant.d.ts.map +1 -0
  314. package/dist/services/exact-chat-grant.js +249 -0
  315. package/dist/services/exact-chat-grant.js.map +1 -0
  316. package/dist/services/group-creator.d.ts +11 -0
  317. package/dist/services/group-creator.d.ts.map +1 -1
  318. package/dist/services/group-creator.js +18 -9
  319. package/dist/services/group-creator.js.map +1 -1
  320. package/dist/services/local-cli-opener.d.ts.map +1 -1
  321. package/dist/services/local-cli-opener.js +10 -5
  322. package/dist/services/local-cli-opener.js.map +1 -1
  323. package/dist/services/traex-user-input.d.ts +19 -0
  324. package/dist/services/traex-user-input.d.ts.map +1 -0
  325. package/dist/services/traex-user-input.js +57 -0
  326. package/dist/services/traex-user-input.js.map +1 -0
  327. package/dist/setup/open-platform-automation.d.ts +24 -3
  328. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  329. package/dist/setup/open-platform-automation.js +45 -8
  330. package/dist/setup/open-platform-automation.js.map +1 -1
  331. package/dist/setup/verify-permissions.d.ts +18 -0
  332. package/dist/setup/verify-permissions.d.ts.map +1 -1
  333. package/dist/setup/verify-permissions.js +60 -0
  334. package/dist/setup/verify-permissions.js.map +1 -1
  335. package/dist/types.d.ts +70 -4
  336. package/dist/types.d.ts.map +1 -1
  337. package/dist/utils/stuck-detector.d.ts +45 -0
  338. package/dist/utils/stuck-detector.d.ts.map +1 -0
  339. package/dist/utils/stuck-detector.js +188 -0
  340. package/dist/utils/stuck-detector.js.map +1 -0
  341. package/dist/utils/stuck-key-guard.d.ts +75 -0
  342. package/dist/utils/stuck-key-guard.d.ts.map +1 -0
  343. package/dist/utils/stuck-key-guard.js +77 -0
  344. package/dist/utils/stuck-key-guard.js.map +1 -0
  345. package/dist/worker.js +705 -93
  346. package/dist/worker.js.map +1 -1
  347. package/package.json +1 -1
  348. package/dist/dashboard-web/chunks/bot-defaults-page-B5AY4B2J.js +0 -5
  349. package/dist/dashboard-web/chunks/sessions-page-2VECQ27T.js +0 -3
  350. package/dist/dashboard-web/chunks/settings-page-HMIUE2JA.js +0 -2
@@ -1,2 +0,0 @@
1
- import{b as w}from"./chunk-P6GO5KT4.js";import{a as q,c as re,i as Ce,k as D,p as E}from"./chunk-QFMH6ITB.js";import{a as pe,r as fe}from"./chunk-CUV65BIQ.js";import{a as Pe}from"./chunk-SYC6D5XU.js";import{a as ke,d as oe}from"./chunk-5THX4DI2.js";import{c as te}from"./chunk-7SZRL6FY.js";var f=te(ke(),1);var y=te(ke(),1);var a=te(oe(),1),Oe=["transcript_received","chat_received","participant_joined","participant_left","magic_share_started","magic_share_ended"],me=8e3,xe=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Be="\u6301\u7EED\u6574\u7406\u4F1A\u8BAE\u7EAA\u8981\uFF0C\u91CD\u70B9\u8BB0\u5F55\u5DF2\u786E\u8BA4\u7684\u51B3\u7B56\u3001\u5F85\u529E\u4E8B\u9879\uFF08\u542B\u8D1F\u8D23\u4EBA\u548C\u622A\u6B62\u65F6\u95F4\uFF09\u4EE5\u53CA\u672A\u89E3\u51B3\u98CE\u9669\uFF1B\u5B57\u5E55\u4FEE\u8BA2\u65F6\u66F4\u65B0\u5DF2\u6709\u6761\u76EE\uFF0C\u4E0D\u91CD\u590D\u8BB0\u5F55\u540C\u4E00\u4E8B\u9879\u3002\u4EC5\u5728\u51FA\u73B0\u65B0\u7684\u5173\u952E\u51B3\u7B56\u3001\u660E\u786E\u5F85\u529E\u6216\u98CE\u9669\uFF0C\u6216\u88AB\u7528\u6237\u70B9\u540D\u65F6\uFF0C\u624D\u5728\u76D1\u542C\u7FA4\u8F93\u51FA\u7B80\u6D01\u589E\u91CF\uFF1B\u65E0\u5B9E\u8D28\u589E\u91CF\u65F6\u4FDD\u6301\u9759\u9ED8\uFF0C\u4E0D\u53D1\u9001\u786E\u8BA4\u6216\u5FC3\u8DF3\u3002\u9700\u8981\u5411\u4F1A\u8BAE\u5185\u53D1\u9001\u6587\u5B57\u6216\u8BED\u97F3\u65F6\uFF0C\u5FC5\u987B\u901A\u8FC7 botmux \u53D7\u7BA1 request-output/action gate \u63D0\u4EA4\uFF0C\u4E0D\u5F97\u7ED5\u8FC7\u6743\u9650\u3001\u6240\u6709\u6743\u4E0E\u5BA1\u6838\u7B56\u7565\u3002",Ne=0;function Se(){return Ne+=1,`p${Ne}`}function Te(e){return{...e,uiKey:Se(),isNew:!1}}function Le(e){let{uiKey:t,isNew:i,...g}=e;return g}function Q(e){return(0,a.jsxs)("span",{className:"vc-profile-field-head",children:[e.title,(0,a.jsx)(Ce,{label:e.title,children:(0,a.jsx)("span",{className:"vc-profile-help",children:e.help})})]})}function Me(e){let t=w();return e.enabled?e.canWrite?(0,a.jsx)(Ue,{canWrite:e.canWrite,listenerBotAppId:e.listenerBotAppId,listenerBotOptions:e.listenerBotOptions}):(0,a.jsx)("p",{className:"hint",children:t("settings.vcProfiles.needAuth")}):null}function Ue(e){let t=w(),i=(0,y.useRef)(!1),g=e.listenerBotOptions,[m,v]=(0,y.useState)(e.listenerBotAppId??g[0]?.larkAppId??""),[c,N]=(0,y.useState)(null),[I,S]=(0,y.useState)(null),[k,z]=(0,y.useState)(!1),[B,H]=(0,y.useState)(!1),[M,r]=(0,y.useState)(!1),[p,P]=(0,y.useState)(!1),[j,L]=(0,y.useState)({}),[G,ie]=(0,y.useState)(!1);(0,y.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let V=(0,y.useRef)(0);(0,y.useEffect)(()=>{e.listenerBotAppId&&e.listenerBotAppId!==m&&!B&&v(e.listenerBotAppId)},[B,e.listenerBotAppId,m]);let J=(0,y.useCallback)(async s=>{let o=++V.current;if(N(null),H(!1),P(!1),L({}),!s){S(null);return}z(!0);try{let l=await fetch(`/api/vc-meeting/consumer-profiles?listenerBotAppId=${encodeURIComponent(s)}`),u=await l.json().catch(()=>({}));if(!i.current||V.current!==o)return;!l.ok||u?.ok!==!0?(N(null),S(typeof u?.error=="string"?u.error:`HTTP ${l.status}`)):(N({forBot:s,revision:u.revision,catalogState:u.catalogState==="explicit_empty"||u.catalogState==="legacy_or_partial"||u.catalogState==="profiles"?u.catalogState:"uninitialized",defaultMode:u.defaultMode==="agents"?"agents":"listenOnly",defaultConsumerIds:Array.isArray(u.defaultConsumerIds)?u.defaultConsumerIds:[],profiles:(Array.isArray(u.profiles)?u.profiles:[]).map(Te),agentOptions:Array.isArray(u.agentOptions)?u.agentOptions:[],...u.migrationOffer==="enable_seeded_minutes_default"?{migrationOffer:u.migrationOffer}:{}}),S(null),H(!1))}catch(l){if(!i.current||V.current!==o)return;N(null),S(l instanceof Error?l.message:String(l))}finally{i.current&&V.current===o&&z(!1)}},[]);(0,y.useEffect)(()=>{J(m)},[J,m]);let T=(0,y.useCallback)(s=>{N(o=>o&&s(o)),H(!0),ie(!1)},[]),Z=(0,y.useCallback)((s,o)=>{T(l=>({...l,profiles:l.profiles.map(u=>u.uiKey===s?{...u,...o}:u)}))},[T]),ne=(0,y.useCallback)(async()=>{if(!c||M||k||!c.forBot||c.forBot!==m)return;let s={};if(c.profiles.forEach((o,l)=>{xe.test(o.id)||(s[`profiles[${l}].id`]=t("settings.vcProfiles.idInvalid")),(o.instructions??"").length>me&&(s[`profiles[${l}].instructions`]=t("settings.vcProfiles.instructionsTooLong"))}),Object.keys(s).length>0){L(s);return}r(!0),P(!1),L({});try{let o=await fetch("/api/vc-meeting/consumer-profiles",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({listenerBotAppId:c.forBot,expectedRevision:c.revision,defaultMode:c.defaultMode,defaultConsumerIds:c.defaultConsumerIds,profiles:c.profiles.map(Le)})}),l=await o.json().catch(()=>({}));if(!i.current||c.forBot!==m)return;if(o.status===409){P(!0);return}if(o.status===422){let u={};for(let O of Array.isArray(l?.fieldErrors)?l.fieldErrors:[])typeof O?.path=="string"&&typeof O?.message=="string"&&(u[O.path]=O.message);L(Object.keys(u).length>0?u:{profiles:t("settings.vcProfiles.validationFailed")});return}if(!o.ok||l?.ok!==!0){L({profiles:typeof l?.error=="string"?l.error:`HTTP ${o.status}`});return}N({forBot:c.forBot,revision:l.revision,catalogState:l.catalogState==="explicit_empty"||l.catalogState==="legacy_or_partial"||l.catalogState==="profiles"?l.catalogState:"uninitialized",defaultMode:l.defaultMode==="agents"?"agents":"listenOnly",defaultConsumerIds:Array.isArray(l.defaultConsumerIds)?l.defaultConsumerIds:[],profiles:(Array.isArray(l.profiles)?l.profiles:[]).map(Te),agentOptions:Array.isArray(l.agentOptions)?l.agentOptions:[],...l.migrationOffer==="enable_seeded_minutes_default"?{migrationOffer:l.migrationOffer}:{}}),H(!1),ie(!0)}catch(o){if(!i.current)return;L({profiles:o instanceof Error?o.message:String(o)})}finally{i.current&&r(!1)}},[c,M,m,t]),X=(0,y.useMemo)(()=>g.map(s=>({value:s.larkAppId,label:s.botName||s.larkAppId})),[g]),Y=X.find(s=>s.value===m)?.label??m,ce=(0,y.useMemo)(()=>c?c.agentOptions.map(s=>{let o=[s.online?void 0:t("settings.vcProfiles.agentOffline"),s.workingDirReady?void 0:t("settings.vcProfiles.agentNoWorkingDir"),s.reliableTurnTerminal?void 0:t("settings.vcProfiles.agentNoReliableTerminal"),s.managedSideEffectIsolation?void 0:t("settings.vcProfiles.agentNoManagedIsolation")].filter(Boolean);return{value:s.appId,label:(0,a.jsxs)("span",{className:"vc-agent-option",children:[(0,a.jsxs)("span",{className:"vc-agent-option-name",children:[s.label,s.cliId?(0,a.jsx)("em",{className:"vc-agent-option-cli",children:s.cliId}):null]}),o.length>0?(0,a.jsxs)("span",{className:"vc-agent-option-warn",children:["\u26A0 ",o.join(" \xB7 ")]}):null]})}}):[],[c,t]),se=s=>{let o=c?.agentOptions.find(u=>u.appId===s);return o?!o.online||!o.workingDirReady||!o.reliableTurnTerminal||!o.managedSideEffectIsolation?`\u26A0 ${o.label}`:o.label:s},ae=(0,y.useCallback)(s=>{let l=["observe_only","meeting_text","meeting_voice","meeting_text_voice"].map(u=>({value:u,label:t(`settings.vcProfiles.preset.${u}`)}));return(!s.isNew||s.permissionPreset==="custom")&&l.push({value:"custom",label:t("settings.vcProfiles.preset.custom")}),l},[t]),de=(0,y.useCallback)(()=>{T(s=>({...s,profiles:[...s.profiles,{uiKey:Se(),isNew:!0,id:"",agentAppId:s.agentOptions[0]?.appId??"",responseMode:"silent",permissionPreset:"observe_only"}]}))},[T]),ue=(0,y.useCallback)(s=>{T(o=>({...o,profiles:o.profiles.filter(l=>l.uiKey!==s),defaultConsumerIds:o.defaultConsumerIds.filter(l=>o.profiles.some(u=>u.uiKey!==s&&u.id===l))}))},[T]);if(g.length===0)return null;let b=s=>j[s],x=!e.canWrite||M||k,R=c?.agentOptions.some(s=>s.workingDirReady&&s.reliableTurnTerminal&&s.managedSideEffectIsolation)??!1;return(0,a.jsxs)("div",{className:"vc-profiles-section",children:[(0,a.jsxs)("div",{className:"settings-field-row",children:[(0,a.jsx)(D,{help:t("settings.vcProfiles.help"),children:t("settings.vcProfiles.title")}),e.listenerBotAppId===null&&X.length>1?(0,a.jsxs)("div",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:t("settings.vcProfiles.listenerOwner")}),(0,a.jsx)(E,{className:"settings-field-menu",ariaLabel:t("settings.vcProfiles.listenerOwner"),disabled:k||M,value:m,label:q(X,m),options:X,onChange:s=>{s!==m&&(B&&!window.confirm(t("settings.vcProfiles.discardConfirm"))||v(s))}})]}):(0,a.jsx)("span",{className:"vc-profile-config-target",children:t("settings.vcProfiles.configuringBot",{bot:Y})})]}),(0,a.jsx)("p",{className:"hint vc-profiles-freeze",children:t("settings.vcProfiles.freezeNotice")}),k?(0,a.jsx)("p",{className:"hint",children:t("settings.vcProfiles.loading")}):null,I?(0,a.jsx)("p",{className:"hint-warn",children:I==="bot_not_in_config"?t("settings.vcProfiles.botNotInConfig"):`${t("settings.vcProfiles.loadFailed")}: ${I}`}):null,p?(0,a.jsxs)("p",{className:"hint-warn",children:[t("settings.vcProfiles.conflict")," ",(0,a.jsx)("button",{type:"button",className:"vc-profiles-link",onClick:()=>{J(m)},children:t("settings.vcProfiles.reload")})]}):null,b("profiles")?(0,a.jsx)("p",{className:"hint-warn",children:b("profiles")}):null,c?(0,a.jsxs)(a.Fragment,{children:[c.migrationOffer==="enable_seeded_minutes_default"?(0,a.jsxs)("p",{className:"hint-warn vc-profile-migration-offer",children:[t("settings.vcProfiles.migrationOffer")," ",(0,a.jsx)("button",{type:"button",className:"vc-profiles-link",disabled:x||B,onClick:()=>T(s=>({...s,defaultMode:"agents",defaultConsumerIds:["minutes"],profiles:s.profiles.map(o=>o.id==="minutes"?{...o,instructions:Be,responseMode:"listener_thread",permissionPreset:"meeting_text_voice"}:o),migrationOffer:void 0})),children:t("settings.vcProfiles.migrationEnable")})]}):null,c.catalogState==="uninitialized"&&c.profiles.length===0&&!R?(0,a.jsx)("p",{className:"hint-warn",children:t("settings.vcProfiles.noEligibleDefaultAgent")}):null,c.catalogState==="legacy_or_partial"?(0,a.jsx)("p",{className:"hint",children:t("settings.vcProfiles.legacyCatalog")}):null,c.profiles.map((s,o)=>(0,a.jsxs)("div",{className:"vc-profile-card",children:[(0,a.jsxs)("div",{className:"vc-profile-grid",children:[(0,a.jsxs)("label",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldId"),help:t("settings.vcProfiles.idHelp")})}),(0,a.jsx)("input",{type:"text",value:s.id,disabled:x||!s.isNew,placeholder:"minutes",onChange:l=>{let u=l.target.value,O=s.id;T($=>({...$,profiles:$.profiles.map(F=>F.uiKey===s.uiKey?{...F,id:u}:F),defaultConsumerIds:$.defaultConsumerIds.map(F=>F===O&&O?u:F).filter(F=>!!F)}))}}),b(`profiles[${o}].id`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].id`)}):null]}),(0,a.jsxs)("label",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldLabel"),help:t("settings.vcProfiles.labelHelp")})}),(0,a.jsx)("input",{type:"text",value:s.label??"",disabled:x,onChange:l=>Z(s.uiKey,{label:l.target.value||void 0})}),b(`profiles[${o}].label`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].label`)}):null]}),(0,a.jsxs)("div",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldAgent"),help:t("settings.vcProfiles.agentHelp")})}),(0,a.jsx)(E,{className:"vc-profile-agent-menu",ariaLabel:t("settings.vcProfiles.fieldAgent"),disabled:x,value:s.agentAppId,label:se(s.agentAppId),options:ce,onChange:l=>Z(s.uiKey,{agentAppId:l})}),b(`profiles[${o}].agentAppId`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].agentAppId`)}):null]}),(0,a.jsxs)("div",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldResponseMode"),help:t("settings.vcProfiles.responseModeHelp")})}),(0,a.jsx)(E,{ariaLabel:t("settings.vcProfiles.fieldResponseMode"),disabled:x,value:s.responseMode,label:s.responseMode==="listener_thread"?t("settings.vcProfiles.responseListener"):t("settings.vcProfiles.responseSilent"),options:[{value:"silent",label:t("settings.vcProfiles.responseSilent")},{value:"listener_thread",label:t("settings.vcProfiles.responseListener")}],onChange:l=>Z(s.uiKey,{responseMode:l})}),b(`profiles[${o}].responseMode`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].responseMode`)}):null]}),(0,a.jsxs)("div",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldPreset"),help:t("settings.vcProfiles.presetHelp")})}),(0,a.jsx)(E,{ariaLabel:t("settings.vcProfiles.fieldPreset"),disabled:x,value:s.permissionPreset,label:q(ae(s),s.permissionPreset),options:ae(s),onChange:l=>Z(s.uiKey,{permissionPreset:l})}),b(`profiles[${o}].permissionPreset`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].permissionPreset`)}):null]})]}),(0,a.jsxs)("label",{className:"vc-profile-field vc-profile-instructions",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldInstructions"),help:t("settings.vcProfiles.instructionsHelp")}),(0,a.jsxs)("em",{className:"vc-profile-count",children:[(s.instructions??"").length,"/",me]})]}),(0,a.jsx)("textarea",{rows:4,maxLength:me,value:s.instructions??"",disabled:x,placeholder:t("settings.vcProfiles.instructionsPlaceholder"),onChange:l=>Z(s.uiKey,{instructions:l.target.value||void 0})}),b(`profiles[${o}].instructions`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].instructions`)}):null]}),(0,a.jsxs)("div",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:(0,a.jsx)(Q,{title:t("settings.vcProfiles.fieldActivityTypes"),help:t("settings.vcProfiles.activityHelp")})}),(0,a.jsx)("div",{className:"vc-profile-activity",children:Oe.map(l=>{let u=s.activityTypes?.includes(l)??!1;return(0,a.jsxs)("label",{className:"vc-profile-check",children:[(0,a.jsx)("input",{type:"checkbox",checked:u,disabled:x,onChange:O=>{let $=new Set(s.activityTypes??[]);O.target.checked?$.add(l):$.delete(l),Z(s.uiKey,{activityTypes:$.size>0?[...$]:void 0})}}),t(`settings.vcProfiles.activity.${l}`)]},l)})}),(0,a.jsx)("em",{className:"vc-profile-hint",children:t("settings.vcProfiles.activityAllHint")}),b(`profiles[${o}].activityTypes`)?(0,a.jsx)("em",{className:"vc-profile-err",children:b(`profiles[${o}].activityTypes`)}):null]}),e.canWrite?(0,a.jsx)("button",{type:"button",className:"vc-profiles-link vc-profile-remove",disabled:M||k,onClick:()=>ue(s.uiKey),children:t("settings.vcProfiles.remove")}):null]},s.uiKey)),e.canWrite?(0,a.jsx)("button",{type:"button",className:"vc-profiles-link",disabled:M||k,onClick:de,children:t("settings.vcProfiles.add")}):null,(0,a.jsxs)("div",{className:"settings-field-row",children:[(0,a.jsx)(D,{help:t("settings.vcProfiles.defaultModeHelp"),children:t("settings.vcProfiles.defaultMode")}),(0,a.jsx)(E,{className:"settings-field-menu",ariaLabel:t("settings.vcProfiles.defaultMode"),disabled:x,value:c.defaultMode,label:c.defaultMode==="agents"?t("settings.vcProfiles.defaultModeAgents"):t("settings.vcProfiles.defaultModeListenOnly"),options:[{value:"listenOnly",label:t("settings.vcProfiles.defaultModeListenOnly")},{value:"agents",label:t("settings.vcProfiles.defaultModeAgents")}],onChange:s=>T(o=>({...o,defaultMode:s==="agents"?"agents":"listenOnly"}))})]}),c.defaultMode==="agents"?(0,a.jsxs)("div",{className:"vc-profile-field",children:[(0,a.jsx)("span",{children:t("settings.vcProfiles.defaultConsumers")}),(0,a.jsx)("div",{className:"vc-profile-activity",children:c.profiles.filter(s=>s.id).map(s=>{let o=c.defaultConsumerIds.includes(s.id);return(0,a.jsxs)("label",{className:"vc-profile-check",children:[(0,a.jsx)("input",{type:"checkbox",checked:o,disabled:x,onChange:l=>{T(u=>({...u,defaultConsumerIds:l.target.checked?[...u.defaultConsumerIds,s.id]:u.defaultConsumerIds.filter(O=>O!==s.id)}))}}),s.label||s.id]},s.uiKey)})}),b("defaultConsumerIds")?(0,a.jsx)("em",{className:"vc-profile-err",children:b("defaultConsumerIds")}):null,b("defaultMode")?(0,a.jsx)("em",{className:"vc-profile-err",children:b("defaultMode")}):null]}):null,e.canWrite?(0,a.jsxs)("div",{className:"vc-profiles-actions",children:[(0,a.jsx)("button",{type:"button",className:"vc-profiles-save",disabled:!B||M||p,onClick:()=>{ne()},children:t(M?"settings.vcProfiles.saving":"settings.vcProfiles.save")}),G?(0,a.jsx)("span",{className:"vc-profile-hint",children:t("settings.vcProfiles.saved")}):null,B&&!M?(0,a.jsx)("span",{className:"vc-profile-hint",children:t("settings.vcProfiles.unsaved")}):null]}):null]}):null]})}var n=te(oe(),1),ve=["Asia/Shanghai","Asia/Hong_Kong","Asia/Tokyo","Asia/Singapore","Asia/Kolkata","UTC","Europe/London","Europe/Paris","Europe/Moscow","America/Los_Angeles","America/New_York","America/Sao_Paulo","Australia/Sydney"];function De(e,t){if(!e||typeof e!="object")return null;if(e.failed){let i=e.failed.step==="install"?t("settings.herdrTraexInstallStepInstall"):t("settings.herdrTraexInstallStepAction");return{text:`${t("settings.herdrTraexInstallFailed")}\uFF08${i}\uFF09: ${e.failed.reason??""}`,cls:"hint-warn-inline"}}if(e.skippedReason==="plugin_unsupported"){let i=typeof e.herdrVersion=="string"&&e.herdrVersion?` (${e.herdrVersion})`:"";return{text:`${t("settings.herdrTraexUnsupported")}${i}`,cls:"hint-warn-inline"}}return e.installed||e.actionInvoked?{text:t("settings.herdrTraexInstalled"),cls:"hint-ok"}:e.alreadyInstalled?{text:t("settings.herdrTraexAlreadyInstalled"),cls:"hint-ok"}:null}function he(e){return{publicReadOnly:e?.publicReadOnly===!0,openTerminalInFeishu:e?.openTerminalInFeishu===!0,enableLocalCliOpen:e?.enableLocalCliOpen===!0,localCliOpenMode:e?.localCliOpenMode==="resume"?"resume":"attach",chatBotDiscovery:e?.chatBotDiscovery!==!1,herdrTraexPlugin:{enabled:e?.herdrTraexPlugin?.enabled===!0,source:typeof e?.herdrTraexPlugin?.source=="string"?e.herdrTraexPlugin.source:"",ref:typeof e?.herdrTraexPlugin?.ref=="string"?e.herdrTraexPlugin.ref:"",recommendedSource:typeof e?.herdrTraexPlugin?.recommendedSource=="string"?e.herdrTraexPlugin.recommendedSource:"",recommendedRef:typeof e?.herdrTraexPlugin?.recommendedRef=="string"?e.herdrTraexPlugin.recommendedRef:""},codexRpcInput:e?.codexRpcInput===!0,vcMeetingAgent:{enabled:e?.vcMeetingAgent?.enabled!==!1,listenerBotAppId:typeof e?.vcMeetingAgent?.listenerBotAppId=="string"?e.vcMeetingAgent.listenerBotAppId:null,listenerBotOptions:Array.isArray(e?.vcMeetingAgent?.listenerBotOptions)?e.vcMeetingAgent.listenerBotOptions:[],larkCliVersion:e?.vcMeetingAgent?.larkCliVersion===void 0?void 0:e.vcMeetingAgent.larkCliVersion??null,larkCliMeetsRequirement:e?.vcMeetingAgent?.larkCliMeetsRequirement===!0,larkCliMinVersion:typeof e?.vcMeetingAgent?.larkCliMinVersion=="string"?e.vcMeetingAgent.larkCliMinVersion:void 0},repoPickerMode:e?.repoPickerMode==="repos"?"repos":"all",maintenance:e?.maintenance&&typeof e.maintenance=="object"?e.maintenance:{},localDevInstall:e?.localDevInstall===!0,autoUpdateSupported:e?.autoUpdateSupported!==!1,whiteboard:{enabled:e?.whiteboard?.enabled===!0},remoteAccess:e?.remoteAccess===!0,scheduleTimeZone:typeof e?.scheduleTimeZone=="string"?e.scheduleTimeZone:"",hostTimeZone:typeof e?.hostTimeZone=="string"&&e.hostTimeZone?e.hostTimeZone:"UTC",effectiveScheduleTimeZone:typeof e?.effectiveScheduleTimeZone=="string"&&e.effectiveScheduleTimeZone?e.effectiveScheduleTimeZone:typeof e?.scheduleTimeZone=="string"&&e.scheduleTimeZone?e.scheduleTimeZone:typeof e?.hostTimeZone=="string"&&e.hostTimeZone?e.hostTimeZone:"UTC"}}function Ee(e,t){let i=e?.[t]??{};return{enabled:i.enabled===!0,time:typeof i.time=="string"?i.time:"04:00"}}function we(e,t){return t(e==="npm-global"?"update.kindNpm":e==="pnpm-global"?"update.kindPnpm":e==="yarn-global"?"update.kindYarn":e==="bun-global"?"update.kindBun":e==="source-checkout"?"update.kindSource":"update.kindUnknown")}function _e(){let e=w(),t=(0,f.useRef)(!1),i=(0,f.useRef)(new Set),[g,m]=(0,f.useState)(null),[v,c]=(0,f.useState)(!1),[N,I]=(0,f.useState)(null),[S,k]=(0,f.useState)(!0),[z,B]=(0,f.useState)(!1),[H,M]=(0,f.useState)(null),[r,p]=(0,f.useState)(null),[P,j]=(0,f.useState)(null),[L,G]=(0,f.useState)(null),[ie,V]=(0,f.useState)(null),[J,T]=(0,f.useState)(null),[Z,ne]=(0,f.useState)(!1),[X,Y]=(0,f.useState)(!0),[ce,se]=(0,f.useState)(!1),[ae,de]=(0,f.useState)(""),[ue,b]=(0,f.useState)(!1),[x,R]=(0,f.useState)(null),s=(0,f.useCallback)(()=>{for(let d of i.current)window.clearTimeout(d);i.current.clear()},[]),o=(0,f.useCallback)((d,h)=>{let C=window.setTimeout(()=>{i.current.delete(C),d()},h);return i.current.add(C),C},[]),l=(0,f.useCallback)(async()=>{try{let d=await fetch("/api/update/status"),h=await d.json().catch(()=>({}));if(!t.current)return;if(!d.ok){G(null),V(h?.error??`HTTP ${d.status}`);return}G(h),V(null)}catch(d){if(!t.current)return;G(null),V(d instanceof Error?d.message:String(d))}},[]),u=(0,f.useCallback)(async()=>{try{let d=await fetch("/api/settings"),h=await d.json().catch(()=>({}));if(!t.current)return;if(!d.ok){m(null),I(h?.error??`HTTP ${d.status}`),c(!0);return}m(he(h.settings)),k(h.authed===!0),B(h.bound===!0),I(null),c(!0)}catch(d){if(!t.current)return;m(null),I(d instanceof Error?d.message:String(d)),c(!0)}},[]);(0,f.useEffect)(()=>(t.current=!0,u(),()=>{t.current=!1,s()}),[s,u]),(0,f.useEffect)(()=>{v&&(b(!1),R(null),ne(!1),S&&l())},[S,l,v]);async function O(d,h,C){if(!g)return;let A=g;m(C(g)),M(d),p({text:e("settings.saving")});try{let K=await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(h)}),U=await K.json().catch(()=>({}));if(!t.current)return;if(!K.ok||U.ok===!1)throw typeof U?.feishuLoginQr=="string"&&U.feishuLoginQr&&j(U.feishuLoginQr),new Error(U?.error??`HTTP ${K.status}`);j(null);let ee=he(U.settings);m(ee),fe.publicReadOnly=ee.publicReadOnly,pe.setScheduleTimeZone(ee.effectiveScheduleTimeZone);let le=De(U.herdrTraexInstall,e);p(le??{text:e("settings.saved"),cls:"hint-ok"})}catch(K){if(!t.current)return;let U=!1;try{let le=await fetch("/api/settings"),ye=await le.json().catch(()=>({}));if(t.current&&le.ok&&ye?.settings){let ge=he(ye.settings);m(ge),fe.publicReadOnly=ge.publicReadOnly,pe.setScheduleTimeZone(ge.effectiveScheduleTimeZone),U=!0}}catch{}if(!t.current)return;U||m(A);let ee=K instanceof Error?K.message:String(K);p({text:U?`${e("settings.saveReconciled")}: ${ee}`:`${e("settings.saveFailed")}: ${ee}`,cls:"hint-warn-inline"})}finally{t.current&&M(null)}}async function $(){T(null),Y(!0),se(!1);try{let d=await fetch("/api/update/changelog"),h=await d.json().catch(()=>({}));if(!t.current)return;de(typeof h?.releasesUrl=="string"?h.releasesUrl:""),d.ok?(T(Array.isArray(h.releases)?h.releases:[]),Y(h.ok!==!1),se(h.rateLimited===!0)):(T([]),Y(!1))}catch{if(!t.current)return;T([]),Y(!1)}}function F(){let d=Date.now(),h=async()=>{if(t.current){if(Date.now()-d>9e4){b(!1),R({text:e("update.restartSlow"),cls:"hint-warn-inline"});return}try{let C=await fetch("/__health",{cache:"no-store"});if(!t.current)return;if(C.ok){location.reload();return}}catch{}t.current&&o(()=>{h()},2e3)}};o(()=>{h()},3e3)}async function be(d){b(!0),R({text:e("update.restarting")});try{let h=await fetch("/api/update/restart",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(d?{update:d}:{})}),C=await h.json().catch(()=>({}));if(!h.ok||C.ok===!1)throw new Error(String(C.detail??C.error??`HTTP ${h.status}`));if(!t.current)return}catch(h){if(!t.current)return;b(!1),R({text:e("update.restartFailed",{detail:h instanceof Error?h.message:String(h)}),cls:"hint-warn-inline"});return}F()}async function Ie(){let d=L;if(!d)return;if(!d.node.ok){window.alert(e("update.nodeTooOldAlert",{version:d.node.version,required:d.node.required}));return}if(!d.updateSupported||!d.updateCommand){window.alert(e("update.unsupportedInstall"));return}if(d.installs.multiple){let C=d.installs.entries.map(A=>`\u2022 ${A.binPath} (${we(A.kind,e)})`).join(`
2
- `);if(!window.confirm(e("update.confirmMultiInstall",{paths:C})))return}let h=d.latest?e("update.confirmUpdate",{version:`v${d.latest}`,command:d.updateCommand}):e("update.confirmUpdateNoVer",{command:d.updateCommand});if(window.confirm(h)){b(!0),R({text:e("update.updating",{command:d.updateCommand})});try{let C=await fetch("/api/update/run",{method:"POST"}),A=await C.json().catch(()=>({}));if(!t.current)return;if(!C.ok||A.ok===!1){let K=A?.detail??A?.error??`HTTP ${C.status}`;b(!1),R({text:e("update.updateFailed",{detail:K}),cls:"hint-warn-inline"});return}A.changed?(b(!1),R({text:e("update.updatedChanged",{old:`v${A.oldVersion}`,new:`v${A.newVersion}`}),cls:"hint-ok"}),window.confirm(e("update.confirmRestart"))?await be({oldVersion:A.oldVersion,newVersion:A.newVersion}):t.current&&R({text:e("update.noRestartHint"),cls:"hint-ok"})):(b(!1),R({text:e("update.alreadyLatestRun",{version:`v${A.newVersion}`}),cls:"hint-ok"}),await l())}catch(C){if(!t.current)return;b(!1),R({text:e("update.updateFailed",{detail:C instanceof Error?C.message:String(C)}),cls:"hint-warn-inline"})}}}let Re=g?(0,n.jsx)($e,{settings:g,canWrite:S,bound:z,savingKey:H,message:r,updateBlock:(0,n.jsx)(Ze,{canWrite:S,status:L,statusError:ie,changelog:J,changelogOpen:Z,changelogOk:X,changelogRateLimited:ce,releasesUrl:ae,busy:ue,message:x,onCheck:()=>{G(null),T(null),ne(!1),R(null),V(null),l()},onToggleChangelog:()=>{let d=!Z;ne(d),d&&J===null&&$()},onUpdate:()=>{Ie()},onRestart:()=>{window.confirm(e("update.confirmPlainRestart"))&&be(null)}}),feishuLoginQr:P,onCloseFeishuLoginQr:()=>j(null),onSave:O}):N?(0,n.jsxs)("p",{className:"hint-warn",children:[e("settings.loadFailed"),": ",N]}):(0,n.jsx)(re,{label:e("settings.loading")});return(0,n.jsxs)("section",{className:"page settings-page",children:[(0,n.jsx)("div",{className:"page-heading",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"eyebrow",children:e("nav.settings")}),(0,n.jsx)("h1",{children:e("settings.title")})]})}),Re]})}function $e(e){let t=w(),{settings:i,canWrite:g,bound:m,savingKey:v}=e,c=!g,N=Ee(i.maintenance,"autoUpdate"),I=!g||i.localDevInstall||!i.autoUpdateSupported,S=!g||i.maintenance.autoUpdate?.enabled!==!0,k=(r,p)=>{e.onSave(r,{[r]:p},P=>({...P,[r]:p}))},z=r=>e.onSave("herdrTraexPlugin",{herdrTraexPlugin:r},p=>({...p,herdrTraexPlugin:{...p.herdrTraexPlugin,...r}})),B=(0,f.useMemo)(()=>[{value:"all",label:t("settings.repoPickerModeAll")},{value:"repos",label:t("settings.repoPickerModeRepos")}],[t]),H=(0,f.useMemo)(()=>[{value:"attach",label:t("settings.localCliOpenModeAttach")},{value:"resume",label:t("settings.localCliOpenModeResume")}],[t]),M=(0,f.useMemo)(()=>[{value:"",label:t("settings.vcMeetingListenerBotAuto")},...i.vcMeetingAgent.listenerBotOptions.map(r=>{let p=r.botName||r.larkAppId,P=r.cliId?` \xB7 ${r.cliId}`:"",j=[r.vcMeetingAgentEnabled===!0?void 0:t("settings.vcMeetingListenerBotDisabled"),r.hasLarkCliProfile===!0?void 0:t("settings.vcMeetingListenerBotNoProfile")].filter(Boolean),L=j.length>0?` \xB7 ${j.join(" \xB7 ")}`:"";return{value:r.larkAppId,label:`${p}${P}${L}`}})],[i.vcMeetingAgent.listenerBotOptions,t]);return(0,n.jsxs)("div",{className:"settings-layout",children:[g?null:(0,n.jsx)("article",{className:"bd-card settings-card settings-alert-card",children:(0,n.jsx)("p",{className:"hint-warn",children:t("settings.readOnlyVisitor")})}),(0,n.jsxs)(Ae,{className:"settings-group-main",children:[(0,n.jsxs)(W,{title:t("settings.sectionAccess"),children:[(0,n.jsx)(_,{title:t("settings.publicReadOnly"),help:t("settings.publicReadOnlyHelp"),checked:i.publicReadOnly,disabled:c||v==="publicReadOnly",onChange:r=>k("publicReadOnly",r)}),m?(0,n.jsx)(_,{title:t("settings.remoteAccess"),help:t("settings.remoteAccessHelp"),checked:i.remoteAccess,disabled:c||v==="remoteAccess",onChange:r=>k("remoteAccess",r)}):null]}),(0,n.jsxs)(W,{title:t("settings.sectionCards"),children:[(0,n.jsx)(_,{title:t("settings.openTerminalInFeishu"),help:t("settings.openTerminalInFeishuHelp"),checked:i.openTerminalInFeishu,disabled:c||v==="openTerminalInFeishu",onChange:r=>k("openTerminalInFeishu",r)}),(0,n.jsx)(_,{title:t("settings.enableLocalCliOpen"),help:t("settings.enableLocalCliOpenHelp"),checked:i.enableLocalCliOpen,disabled:c||v==="enableLocalCliOpen",onChange:r=>k("enableLocalCliOpen",r)}),(0,n.jsxs)("div",{className:"settings-field-row",children:[(0,n.jsx)(D,{help:t("settings.localCliOpenModeHelp"),children:t("settings.localCliOpenMode")}),(0,n.jsx)(E,{className:"settings-field-menu",ariaLabel:t("settings.localCliOpenMode"),disabled:c||!i.enableLocalCliOpen||v==="localCliOpenMode",value:i.localCliOpenMode,label:q(H,i.localCliOpenMode),options:H,onChange:r=>{e.onSave("localCliOpenMode",{localCliOpenMode:r},p=>({...p,localCliOpenMode:r}))}})]})]}),(0,n.jsxs)(W,{title:t("settings.sectionExperimental"),children:[(0,n.jsx)(_,{title:t("settings.chatBotDiscovery"),help:t("settings.chatBotDiscoveryHelp"),checked:i.chatBotDiscovery,disabled:c||v==="chatBotDiscovery",onChange:r=>k("chatBotDiscovery",r)}),(0,n.jsx)(_,{title:t("settings.herdrTraexPlugin"),help:t("settings.herdrTraexPluginHelp"),checked:i.herdrTraexPlugin.enabled,disabled:c||v==="herdrTraexPlugin",onChange:r=>z({enabled:r})}),i.herdrTraexPlugin.enabled?(0,n.jsx)(Ve,{value:i.herdrTraexPlugin,disabled:c||v==="herdrTraexPlugin",onSave:r=>z(r)}):null,(0,n.jsx)(_,{title:t("settings.codexRpcInput"),help:t("settings.codexRpcInputHelp"),checked:i.codexRpcInput,disabled:c||v==="codexRpcInput",onChange:r=>k("codexRpcInput",r)})]}),(0,n.jsx)(W,{title:t("settings.sectionWhiteboard"),children:(0,n.jsx)(_,{title:t("settings.whiteboardEnable"),help:t("settings.whiteboardEnableHelp"),checked:i.whiteboard.enabled,disabled:c||v==="whiteboard",onChange:r=>{e.onSave("whiteboard",{whiteboard:{enabled:r}},p=>({...p,whiteboard:{enabled:r}}))}})}),(0,n.jsx)(W,{title:t("settings.sectionRepoPicker"),children:(0,n.jsxs)("div",{className:"settings-field-row",children:[(0,n.jsx)(D,{help:t("settings.repoPickerModeHelp"),children:t("settings.repoPickerMode")}),(0,n.jsx)(E,{className:"settings-field-menu",ariaLabel:t("settings.repoPickerMode"),disabled:c||v==="repoPickerMode",value:i.repoPickerMode,label:q(B,i.repoPickerMode),options:B,onChange:r=>{e.onSave("repoPickerMode",{repoPickerMode:r},p=>({...p,repoPickerMode:r}))}})]})}),(0,n.jsx)(W,{title:t("settings.sectionSchedule"),children:(0,n.jsx)(He,{value:i.scheduleTimeZone,host:i.hostTimeZone,effective:i.effectiveScheduleTimeZone,disabled:c||v==="scheduleTimeZone",onSave:r=>{e.onSave("scheduleTimeZone",{scheduleTimeZone:r},p=>({...p,scheduleTimeZone:r??""}))}})}),(0,n.jsxs)(W,{className:"settings-vc-block",title:t("settings.sectionVcMeetingAgent"),children:[(0,n.jsx)(_,{title:t("settings.vcMeetingAgent"),help:t("settings.vcMeetingAgentHelp"),checked:i.vcMeetingAgent.enabled,disabled:c||v==="vcMeetingAgent",onChange:r=>{e.onSave("vcMeetingAgent",{vcMeetingAgent:{enabled:r}},p=>({...p,vcMeetingAgent:{...p.vcMeetingAgent,enabled:r}}))}}),(0,n.jsxs)("div",{className:"settings-field-row",children:[(0,n.jsx)(D,{help:t("settings.vcMeetingListenerBotHelp"),children:t("settings.vcMeetingListenerBot")}),(0,n.jsx)(E,{className:"settings-field-menu",ariaLabel:t("settings.vcMeetingListenerBot"),disabled:c||v==="vcMeetingAgent",value:i.vcMeetingAgent.listenerBotAppId??"",label:q(M,i.vcMeetingAgent.listenerBotAppId??""),options:M,onChange:r=>{let p=r||null;e.onSave("vcMeetingAgent",{vcMeetingAgent:{listenerBotAppId:p}},P=>({...P,vcMeetingAgent:{...P.vcMeetingAgent,listenerBotAppId:p}}))}})]}),(0,n.jsx)(Fe,{settings:i.vcMeetingAgent}),(0,n.jsx)(Me,{enabled:i.vcMeetingAgent.enabled,canWrite:g,listenerBotAppId:i.vcMeetingAgent.listenerBotAppId,listenerBotOptions:i.vcMeetingAgent.listenerBotOptions}),e.feishuLoginQr?(0,n.jsxs)("div",{className:"settings-feishu-login",children:[(0,n.jsx)("button",{type:"button",className:"settings-feishu-login-close","aria-label":t("settings.feishuLoginClose"),title:t("settings.feishuLoginClose"),onClick:e.onCloseFeishuLoginQr}),(0,n.jsx)("p",{children:t("settings.feishuLoginRequired")}),(0,n.jsx)("img",{src:e.feishuLoginQr,alt:t("settings.feishuLoginQrAlt")})]}):null]})]}),(0,n.jsxs)(Ae,{className:"settings-group-ops",children:[(0,n.jsx)(W,{title:t("settings.sectionMaintenance"),titleExtra:i.localDevInstall?(0,n.jsx)("span",{className:"settings-title-note",children:t("settings.autoUpdateLocalDev")}):i.autoUpdateSupported?null:(0,n.jsx)("span",{className:"settings-title-note",children:t("settings.autoUpdateUnsupportedInstall")}),children:(0,n.jsxs)("div",{className:"settings-maintenance-grid",children:[(0,n.jsxs)("div",{className:"settings-maintenance-update",children:[(0,n.jsx)(_,{title:t("settings.autoUpdate"),help:t("settings.autoUpdateHelp"),checked:N.enabled,disabled:I||v==="autoUpdate",onChange:r=>{let p={enabled:r,time:N.time};e.onSave("autoUpdate",{maintenance:{autoUpdate:p}},P=>({...P,maintenance:{...P.maintenance,autoUpdate:p}}))}}),(0,n.jsx)("div",{className:"maint-time",children:(0,n.jsxs)("label",{children:[(0,n.jsx)("span",{children:t("settings.maintenanceTime")}),(0,n.jsx)("input",{type:"time",value:N.time,disabled:I||v==="autoUpdate",onChange:r=>{let p={enabled:N.enabled,time:r.currentTarget.value||"04:00"};e.onSave("autoUpdate",{maintenance:{autoUpdate:p}},P=>({...P,maintenance:{...P.maintenance,autoUpdate:p}}))}})]})})]}),(0,n.jsx)("div",{className:"settings-maintenance-restart",children:(0,n.jsx)(_,{title:t("settings.autoRestart"),help:t("settings.autoRestartHelp"),checked:i.maintenance.autoRestart?.enabled===!0,disabled:S||v==="autoRestart",onChange:r=>{let p={enabled:r};e.onSave("autoRestart",{maintenance:{autoRestart:p}},P=>({...P,maintenance:{...P.maintenance,autoRestart:p}}))}})})]})}),e.updateBlock]}),(0,n.jsx)("div",{className:"settings-status-row",children:(0,n.jsx)("span",{className:`oncall-status ${e.message?.cls??""}`,"data-settings-status":!0,children:e.message?.text??""})})]})}function Fe(e){let t=w(),i=e.settings.larkCliVersion,g=typeof i=="string"&&e.settings.larkCliMeetsRequirement===!0,m=g?t("settings.larkCliReady",{version:i}):typeof i=="string"?t("settings.larkCliOutdated",{version:i,minimum:e.settings.larkCliMinVersion??"-"}):t("settings.larkCliMissing");return(0,n.jsxs)("div",{className:`settings-lark-cli-status ${g?"is-ready":"is-warning"}`,children:[(0,n.jsx)("span",{"aria-hidden":"true"}),(0,n.jsx)("strong",{children:m}),g?null:(0,n.jsx)("code",{children:"npm i -g @larksuite/cli@latest"})]})}function Ae(e){let t=["settings-group",e.className].filter(Boolean).join(" ");return(0,n.jsx)("section",{className:t,children:(0,n.jsx)("article",{className:"bd-card settings-group-card",children:e.children})})}function W(e){let t=["settings-block",e.className].filter(Boolean).join(" ");return(0,n.jsx)("section",{className:t,children:(0,n.jsxs)("article",{className:"bd-card settings-card",children:[(0,n.jsxs)("div",{className:"settings-block-title-row",children:[(0,n.jsx)("h2",{className:"bd-section-title",children:e.title}),e.titleExtra?(0,n.jsx)("div",{className:"settings-block-title-extra",children:e.titleExtra}):null]}),e.children]})})}function He(e){let t=w(),i=e.value.trim(),g=e.effective||e.value.trim()||e.host,m=(0,f.useMemo)(()=>{let v=i&&!ve.includes(i)?[i,...ve]:ve;return[{value:"",label:t("settings.scheduleTimeZoneHost",{host:e.host})},...v.map(c=>({value:c,label:c}))]},[e.host,t,i]);return(0,n.jsxs)("div",{className:"settings-field-row settings-timezone-row",children:[(0,n.jsx)(D,{help:t("settings.scheduleTimeZoneHelp",{host:e.host,effective:g}),children:t("settings.scheduleTimeZone")}),(0,n.jsx)(E,{className:"settings-field-menu settings-timezone-menu",ariaLabel:t("settings.scheduleTimeZone"),value:i,label:q(m,i),options:m,disabled:e.disabled,onChange:v=>e.onSave(v===""?null:v)})]})}function _(e){return(0,n.jsxs)("label",{className:"toggle-row",children:[(0,n.jsx)("input",{type:"checkbox",checked:e.checked,disabled:e.disabled,onChange:t=>e.onChange(t.currentTarget.checked)}),(0,n.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,n.jsx)("span",{className:"toggle-tx",children:(0,n.jsx)("strong",{children:(0,n.jsx)(D,{className:"settings-toggle-title",help:e.help,children:e.title})})})]})}function Ve(e){let t=w(),[i,g]=(0,f.useState)(e.value.source),[m,v]=(0,f.useState)(e.value.ref);(0,f.useEffect)(()=>{g(e.value.source),v(e.value.ref)},[e.value.source,e.value.ref]);let c=i.trim(),N=m.trim(),I=c!==e.value.source.trim()||N!==e.value.ref.trim(),S=()=>{e.disabled||!I||e.onSave({source:c,ref:N})};return(0,n.jsxs)("div",{className:"settings-subfield",children:[(0,n.jsxs)("div",{className:"settings-field-row",children:[(0,n.jsx)(D,{help:t("settings.herdrTraexPluginSourceHelp"),children:t("settings.herdrTraexPluginSource")}),(0,n.jsx)("input",{className:"settings-text-input",type:"text",value:i,placeholder:t("settings.herdrTraexPluginSourcePlaceholder"),disabled:e.disabled,onChange:k=>g(k.currentTarget.value),onKeyDown:k=>{k.key==="Enter"&&(k.preventDefault(),S())}})]}),(0,n.jsxs)("div",{className:"settings-field-row",children:[(0,n.jsx)(D,{help:t("settings.herdrTraexPluginRefHelp"),children:t("settings.herdrTraexPluginRef")}),(0,n.jsx)("input",{className:"settings-text-input",type:"text",value:m,placeholder:t("settings.herdrTraexPluginRefPlaceholder"),disabled:e.disabled,onChange:k=>v(k.currentTarget.value),onKeyDown:k=>{k.key==="Enter"&&(k.preventDefault(),S())}})]}),c?null:(0,n.jsx)("p",{className:"hint-warn-inline settings-subfield-hint",children:t("settings.herdrTraexPluginSourceRequired")}),e.value.recommendedSource&&(c!==e.value.recommendedSource||N!==e.value.recommendedRef)?(0,n.jsxs)("p",{className:"settings-subfield-hint",children:[t("settings.herdrTraexPluginRecommended")," ",(0,n.jsxs)("button",{type:"button",className:"settings-inline-link",disabled:e.disabled,onClick:()=>{g(e.value.recommendedSource),v(e.value.recommendedRef)},children:[e.value.recommendedSource,e.value.recommendedRef?` @ ${e.value.recommendedRef}`:""]})]}):null,(0,n.jsx)("div",{className:"actions",children:(0,n.jsx)("button",{type:"button",className:"page-primary-action",disabled:e.disabled||!I,onClick:S,children:t("settings.herdrTraexPluginSave")})})]})}function Ze(e){let t=w(),i;if(!e.canWrite)i=(0,n.jsx)("p",{className:"hint-warn",children:t("update.loginRequired")});else if(e.statusError)i=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"hint-warn",children:[t("update.checkFailed"),": ",e.statusError]}),(0,n.jsx)("div",{className:"update-actions",children:(0,n.jsx)("button",{type:"button","data-up":"check",onClick:e.onCheck,children:t("update.btnCheck")})})]});else if(!e.status)i=(0,n.jsx)(re,{label:t("update.loading"),compact:!0});else{let g=e.status,m=g.localDevInstall||!g.updateSupported||e.busy;i=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"update-version",children:[(0,n.jsxs)("span",{children:[t("update.current"),": ",(0,n.jsxs)("strong",{children:["v",g.current]})]})," ",(0,n.jsx)(We,{status:g})]}),g.node.ok?null:(0,n.jsx)("p",{className:"hint-warn",children:t("update.nodeWarn",{version:g.node.version,required:g.node.required})}),!g.localDevInstall&&!g.updateSupported?(0,n.jsx)("p",{className:"hint-warn",children:t("update.unsupportedInstall")}):null,g.installs.multiple?(0,n.jsx)(je,{entries:g.installs.entries}):null,(0,n.jsxs)("div",{className:"update-actions",children:[(0,n.jsx)("button",{type:"button","data-up":"check",disabled:e.busy,onClick:e.onCheck,children:t("update.btnCheck")}),(0,n.jsx)("button",{type:"button","data-up":"changelog",disabled:e.busy,onClick:e.onToggleChangelog,children:e.changelogOpen?t("update.btnChangelogHide"):t("update.btnChangelog")}),(0,n.jsx)("button",{type:"button",className:"page-primary-action","data-up":"update",disabled:m,onClick:e.onUpdate,children:t("update.btnUpdate")}),(0,n.jsx)("button",{type:"button","data-up":"restart",disabled:e.busy,onClick:e.onRestart,children:t("update.btnRestart")})]}),g.cliUpdates?.length?(0,n.jsx)(Ke,{entries:g.cliUpdates}):null,e.changelogOpen?(0,n.jsx)(qe,{changelog:e.changelog,ok:e.changelogOk,rateLimited:e.changelogRateLimited,releasesUrl:e.releasesUrl}):null,e.message?(0,n.jsx)("p",{className:`oncall-status ${e.message.cls??""}`,children:e.message.text}):null]})}return(0,n.jsx)(W,{className:"settings-update-block",title:t("update.section"),titleExtra:e.status?.localDevInstall?(0,n.jsx)("span",{className:"settings-title-note",children:t("update.localDev")}):e.status&&!e.status.updateSupported?(0,n.jsx)("span",{className:"settings-title-note",children:t("update.unsupportedInstall")}):null,children:i})}function Ke(e){let t=w();return(0,n.jsxs)("div",{className:"cli-runtime-updates",children:[(0,n.jsx)("strong",{children:t("update.runtimeTitle")}),(0,n.jsx)("ul",{children:e.entries.map(i=>(0,n.jsxs)("li",{className:i.updateAvailable?"is-behind":"",children:[(0,n.jsxs)("div",{className:"cli-runtime-update-head",children:[(0,n.jsx)("span",{children:"Codex"}),i.updateAvailable&&i.latest?(0,n.jsx)("span",{className:"update-badge update-badge-new",children:t("update.runtimeAvailable",{current:i.current??"?",latest:i.latest})}):i.latest?(0,n.jsx)("span",{className:"update-badge update-badge-ok",children:t("update.upToDate")}):(0,n.jsx)("span",{className:"hint-warn-inline",children:t("update.checkUnavailable")})]}),(0,n.jsx)("code",{children:i.binPath}),i.updateAvailable?(0,n.jsxs)("small",{children:[t("update.runtimeCommand"),": ",(0,n.jsx)("code",{children:i.updateCommand})]}):null]},`${i.cliId}:${i.binPath}`))}),(0,n.jsx)("p",{className:"settings-help",children:t("update.runtimeHelp")})]})}function We(e){let t=w(),i=e.status;return i.latest?i.behind?(0,n.jsx)("span",{className:"update-badge update-badge-new",children:t("update.newAvailable",{version:`v${i.latest}`})}):(0,n.jsx)("span",{className:"update-badge update-badge-ok",children:t("update.upToDate")}):(0,n.jsx)("span",{className:"hint-warn-inline",children:t("update.checkUnavailable")})}function je(e){let t=w();return(0,n.jsxs)("div",{className:"hint-warn",children:[(0,n.jsx)("p",{children:t("update.multiInstallWarn")}),(0,n.jsx)("ul",{className:"update-install-list",children:e.entries.map(i=>(0,n.jsxs)("li",{children:[(0,n.jsx)("code",{children:i.binPath})," \u2192 ",we(i.kind,t)," ",(0,n.jsx)("small",{children:i.root})]},`${i.binPath}:${i.root}`))})]})}function qe(e){let t=w();if(e.changelog===null)return(0,n.jsx)(re,{label:t("update.changelogLoading"),compact:!0});if(!e.ok){let i=e.rateLimited?t("update.changelogRateLimited"):t("update.changelogFailed");return(0,n.jsxs)("p",{className:"hint-warn-inline",children:[i,e.releasesUrl?(0,n.jsxs)(n.Fragment,{children:[" ",(0,n.jsx)("a",{href:e.releasesUrl,target:"_blank",rel:"noopener",children:t("update.changelogViewOnGitHub")})]}):null]})}return e.changelog.length===0?(0,n.jsx)("p",{className:"empty",children:t("update.changelogEmpty")}):(0,n.jsx)("div",{className:"update-changelog",children:e.changelog.map(i=>{let g=i.name&&i.name!==`v${i.version}`?i.name:"",m=i.publishedAt?new Date(i.publishedAt).toLocaleDateString():"";return(0,n.jsxs)("details",{className:"update-release",open:!0,children:[(0,n.jsxs)("summary",{children:[(0,n.jsxs)("strong",{children:["v",i.version]})," ",g," ",(0,n.jsx)("small",{children:m})," ",(0,n.jsx)("a",{href:i.url,target:"_blank",rel:"noopener",children:"\u2197"})]}),(0,n.jsx)("pre",{className:"update-release-body",children:i.body||""})]},i.version)})})}function st(e){return Pe(e,(0,n.jsx)(_e,{}))}export{He as TimeZoneRow,st as renderSettingsPage};