botmux 3.13.0 → 3.14.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 (508) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +25 -1
  3. package/dist/.runtime-build-id +1 -1
  4. package/dist/adapters/adopt-route.d.ts +58 -0
  5. package/dist/adapters/adopt-route.d.ts.map +1 -1
  6. package/dist/adapters/adopt-route.js +136 -0
  7. package/dist/adapters/adopt-route.js.map +1 -1
  8. package/dist/adapters/backend/capabilities.js +1 -1
  9. package/dist/adapters/backend/capabilities.js.map +1 -1
  10. package/dist/adapters/backend/herdr-backend.d.ts +1 -1
  11. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/herdr-backend.js +2 -1
  13. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  14. package/dist/adapters/backend/riff-backend.d.ts +97 -0
  15. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  16. package/dist/adapters/backend/riff-backend.js +380 -66
  17. package/dist/adapters/backend/riff-backend.js.map +1 -1
  18. package/dist/adapters/backend/sandbox.d.ts +8 -0
  19. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  20. package/dist/adapters/backend/sandbox.js +16 -2
  21. package/dist/adapters/backend/sandbox.js.map +1 -1
  22. package/dist/adapters/backend/tmux-backend.d.ts +12 -13
  23. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  24. package/dist/adapters/backend/tmux-backend.js +113 -53
  25. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  26. package/dist/adapters/backend/tmux-pipe-backend.d.ts +4 -3
  27. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  28. package/dist/adapters/backend/tmux-pipe-backend.js +12 -9
  29. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  30. package/dist/adapters/backend/zellij-backend.d.ts +2 -3
  31. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
  32. package/dist/adapters/backend/zellij-backend.js +6 -13
  33. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  34. package/dist/adapters/backend/zellij-observe-backend.d.ts +2 -1
  35. package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
  36. package/dist/adapters/backend/zellij-observe-backend.js +6 -3
  37. package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
  38. package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
  39. package/dist/adapters/backend/zmx-backend.js +40 -18
  40. package/dist/adapters/backend/zmx-backend.js.map +1 -1
  41. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  42. package/dist/adapters/cli/claude-code.js +12 -1
  43. package/dist/adapters/cli/claude-code.js.map +1 -1
  44. package/dist/adapters/cli/codex.d.ts.map +1 -1
  45. package/dist/adapters/cli/codex.js +3 -2
  46. package/dist/adapters/cli/codex.js.map +1 -1
  47. package/dist/adapters/cli/dsh.d.ts +4 -0
  48. package/dist/adapters/cli/dsh.d.ts.map +1 -0
  49. package/dist/adapters/cli/dsh.js +96 -0
  50. package/dist/adapters/cli/dsh.js.map +1 -0
  51. package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
  52. package/dist/adapters/cli/fs-policy.js +5 -0
  53. package/dist/adapters/cli/fs-policy.js.map +1 -1
  54. package/dist/adapters/cli/opencode.d.ts +52 -1
  55. package/dist/adapters/cli/opencode.d.ts.map +1 -1
  56. package/dist/adapters/cli/opencode.js +117 -76
  57. package/dist/adapters/cli/opencode.js.map +1 -1
  58. package/dist/adapters/cli/opencode2.d.ts +4 -0
  59. package/dist/adapters/cli/opencode2.d.ts.map +1 -0
  60. package/dist/adapters/cli/opencode2.js +137 -0
  61. package/dist/adapters/cli/opencode2.js.map +1 -0
  62. package/dist/adapters/cli/read-isolation.d.ts +1 -1
  63. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  64. package/dist/adapters/cli/read-isolation.js +5 -2
  65. package/dist/adapters/cli/read-isolation.js.map +1 -1
  66. package/dist/adapters/cli/registry.d.ts +7 -1
  67. package/dist/adapters/cli/registry.d.ts.map +1 -1
  68. package/dist/adapters/cli/registry.js +19 -6
  69. package/dist/adapters/cli/registry.js.map +1 -1
  70. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  71. package/dist/adapters/cli/shared-hints.js +13 -0
  72. package/dist/adapters/cli/shared-hints.js.map +1 -1
  73. package/dist/adapters/cli/types.d.ts +24 -3
  74. package/dist/adapters/cli/types.d.ts.map +1 -1
  75. package/dist/adapters/hook-command.d.ts +8 -0
  76. package/dist/adapters/hook-command.d.ts.map +1 -1
  77. package/dist/adapters/hook-command.js +11 -0
  78. package/dist/adapters/hook-command.js.map +1 -1
  79. package/dist/adapters/hook-installer.d.ts +16 -1
  80. package/dist/adapters/hook-installer.d.ts.map +1 -1
  81. package/dist/adapters/hook-installer.js +232 -2
  82. package/dist/adapters/hook-installer.js.map +1 -1
  83. package/dist/bot-registry.d.ts +116 -8
  84. package/dist/bot-registry.d.ts.map +1 -1
  85. package/dist/bot-registry.js +52 -4
  86. package/dist/bot-registry.js.map +1 -1
  87. package/dist/cli/pm2-start-transaction.d.ts +14 -0
  88. package/dist/cli/pm2-start-transaction.d.ts.map +1 -1
  89. package/dist/cli/pm2-start-transaction.js +25 -9
  90. package/dist/cli/pm2-start-transaction.js.map +1 -1
  91. package/dist/cli/restart-failure-notification.d.ts +54 -0
  92. package/dist/cli/restart-failure-notification.d.ts.map +1 -0
  93. package/dist/cli/restart-failure-notification.js +142 -0
  94. package/dist/cli/restart-failure-notification.js.map +1 -0
  95. package/dist/cli/restart-failure-owner.d.ts +20 -0
  96. package/dist/cli/restart-failure-owner.d.ts.map +1 -0
  97. package/dist/cli/restart-failure-owner.js +27 -0
  98. package/dist/cli/restart-failure-owner.js.map +1 -0
  99. package/dist/cli/restart-shutdown-preflight.d.ts +24 -0
  100. package/dist/cli/restart-shutdown-preflight.d.ts.map +1 -0
  101. package/dist/cli/restart-shutdown-preflight.js +105 -0
  102. package/dist/cli/restart-shutdown-preflight.js.map +1 -0
  103. package/dist/cli/send-dispatch.d.ts +26 -0
  104. package/dist/cli/send-dispatch.d.ts.map +1 -1
  105. package/dist/cli/send-dispatch.js +30 -0
  106. package/dist/cli/send-dispatch.js.map +1 -1
  107. package/dist/cli.d.ts +4 -1
  108. package/dist/cli.d.ts.map +1 -1
  109. package/dist/cli.js +665 -399
  110. package/dist/cli.js.map +1 -1
  111. package/dist/codex-app-runner.js +38 -15
  112. package/dist/codex-app-runner.js.map +1 -1
  113. package/dist/codex-rpc-lifecycle.d.ts +14 -2
  114. package/dist/codex-rpc-lifecycle.d.ts.map +1 -1
  115. package/dist/codex-rpc-lifecycle.js +13 -3
  116. package/dist/codex-rpc-lifecycle.js.map +1 -1
  117. package/dist/core/ask-broker.d.ts +3 -0
  118. package/dist/core/ask-broker.d.ts.map +1 -1
  119. package/dist/core/ask-broker.js +29 -7
  120. package/dist/core/ask-broker.js.map +1 -1
  121. package/dist/core/ask-hook/registry.d.ts.map +1 -1
  122. package/dist/core/ask-hook/registry.js +4 -0
  123. package/dist/core/ask-hook/registry.js.map +1 -1
  124. package/dist/core/ask-types.d.ts +5 -1
  125. package/dist/core/ask-types.d.ts.map +1 -1
  126. package/dist/core/ask-types.js.map +1 -1
  127. package/dist/core/browser-restart.d.ts +112 -0
  128. package/dist/core/browser-restart.d.ts.map +1 -0
  129. package/dist/core/browser-restart.js +233 -0
  130. package/dist/core/browser-restart.js.map +1 -0
  131. package/dist/core/command-handler.d.ts +19 -11
  132. package/dist/core/command-handler.d.ts.map +1 -1
  133. package/dist/core/command-handler.js +237 -43
  134. package/dist/core/command-handler.js.map +1 -1
  135. package/dist/core/current-turn-provenance.d.ts.map +1 -1
  136. package/dist/core/current-turn-provenance.js +7 -27
  137. package/dist/core/current-turn-provenance.js.map +1 -1
  138. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  139. package/dist/core/dashboard-ipc-server.js +317 -10
  140. package/dist/core/dashboard-ipc-server.js.map +1 -1
  141. package/dist/core/dispatch-registry.d.ts.map +1 -1
  142. package/dist/core/dispatch-registry.js +6 -0
  143. package/dist/core/dispatch-registry.js.map +1 -1
  144. package/dist/core/dispatch-report-binding.d.ts +31 -0
  145. package/dist/core/dispatch-report-binding.d.ts.map +1 -0
  146. package/dist/core/dispatch-report-binding.js +88 -0
  147. package/dist/core/dispatch-report-binding.js.map +1 -0
  148. package/dist/core/doc-comment-prompt.d.ts +2 -0
  149. package/dist/core/doc-comment-prompt.d.ts.map +1 -1
  150. package/dist/core/doc-comment-prompt.js +6 -0
  151. package/dist/core/doc-comment-prompt.js.map +1 -1
  152. package/dist/core/host-overload-alert.d.ts +25 -1
  153. package/dist/core/host-overload-alert.d.ts.map +1 -1
  154. package/dist/core/host-overload-alert.js +69 -8
  155. package/dist/core/host-overload-alert.js.map +1 -1
  156. package/dist/core/local-terminal-opener.js +1 -1
  157. package/dist/core/local-terminal-opener.js.map +1 -1
  158. package/dist/core/managed-origin-capability.d.ts +7 -6
  159. package/dist/core/managed-origin-capability.d.ts.map +1 -1
  160. package/dist/core/managed-origin-capability.js +32 -1
  161. package/dist/core/managed-origin-capability.js.map +1 -1
  162. package/dist/core/passthrough-commands.d.ts.map +1 -1
  163. package/dist/core/passthrough-commands.js +3 -2
  164. package/dist/core/passthrough-commands.js.map +1 -1
  165. package/dist/core/plugins/materializer.d.ts.map +1 -1
  166. package/dist/core/plugins/materializer.js +1 -0
  167. package/dist/core/plugins/materializer.js.map +1 -1
  168. package/dist/core/producer-quiescence.d.ts +70 -0
  169. package/dist/core/producer-quiescence.d.ts.map +1 -0
  170. package/dist/core/producer-quiescence.js +90 -0
  171. package/dist/core/producer-quiescence.js.map +1 -0
  172. package/dist/core/raw-command-write-options.d.ts +10 -0
  173. package/dist/core/raw-command-write-options.d.ts.map +1 -0
  174. package/dist/core/raw-command-write-options.js +23 -0
  175. package/dist/core/raw-command-write-options.js.map +1 -0
  176. package/dist/core/raw-command-writer.d.ts +4 -0
  177. package/dist/core/raw-command-writer.d.ts.map +1 -1
  178. package/dist/core/raw-command-writer.js +15 -6
  179. package/dist/core/raw-command-writer.js.map +1 -1
  180. package/dist/core/reply-target.d.ts +11 -0
  181. package/dist/core/reply-target.d.ts.map +1 -1
  182. package/dist/core/reply-target.js +22 -7
  183. package/dist/core/reply-target.js.map +1 -1
  184. package/dist/core/report-session-relay.d.ts +53 -0
  185. package/dist/core/report-session-relay.d.ts.map +1 -0
  186. package/dist/core/report-session-relay.js +116 -0
  187. package/dist/core/report-session-relay.js.map +1 -0
  188. package/dist/core/session-discovery.d.ts +5 -0
  189. package/dist/core/session-discovery.d.ts.map +1 -1
  190. package/dist/core/session-discovery.js +13 -0
  191. package/dist/core/session-discovery.js.map +1 -1
  192. package/dist/core/session-group-birth.d.ts +7 -0
  193. package/dist/core/session-group-birth.d.ts.map +1 -0
  194. package/dist/core/session-group-birth.js +145 -0
  195. package/dist/core/session-group-birth.js.map +1 -0
  196. package/dist/core/session-manager.d.ts +16 -21
  197. package/dist/core/session-manager.d.ts.map +1 -1
  198. package/dist/core/session-manager.js +140 -21
  199. package/dist/core/session-manager.js.map +1 -1
  200. package/dist/core/trigger-session.d.ts.map +1 -1
  201. package/dist/core/trigger-session.js +18 -3
  202. package/dist/core/trigger-session.js.map +1 -1
  203. package/dist/core/types.d.ts +18 -0
  204. package/dist/core/types.d.ts.map +1 -1
  205. package/dist/core/types.js.map +1 -1
  206. package/dist/core/worker-pool.d.ts +63 -11
  207. package/dist/core/worker-pool.d.ts.map +1 -1
  208. package/dist/core/worker-pool.js +241 -13
  209. package/dist/core/worker-pool.js.map +1 -1
  210. package/dist/daemon.d.ts +33 -0
  211. package/dist/daemon.d.ts.map +1 -1
  212. package/dist/daemon.js +900 -137
  213. package/dist/daemon.js.map +1 -1
  214. package/dist/dashboard/auth.d.ts +20 -0
  215. package/dist/dashboard/auth.d.ts.map +1 -1
  216. package/dist/dashboard/auth.js +86 -1
  217. package/dist/dashboard/auth.js.map +1 -1
  218. package/dist/dashboard/bot-payload.d.ts +5 -0
  219. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  220. package/dist/dashboard/bot-payload.js +4 -1
  221. package/dist/dashboard/bot-payload.js.map +1 -1
  222. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
  223. package/dist/dashboard/federation-spoke-api.js +27 -3
  224. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  225. package/dist/dashboard/feedback-analytics-api.d.ts +6 -0
  226. package/dist/dashboard/feedback-analytics-api.d.ts.map +1 -0
  227. package/dist/dashboard/feedback-analytics-api.js +39 -0
  228. package/dist/dashboard/feedback-analytics-api.js.map +1 -0
  229. package/dist/dashboard/session-action-timeout.d.ts +3 -0
  230. package/dist/dashboard/session-action-timeout.d.ts.map +1 -0
  231. package/dist/dashboard/session-action-timeout.js +12 -0
  232. package/dist/dashboard/session-action-timeout.js.map +1 -0
  233. package/dist/dashboard/vc-consumer-profiles-api.d.ts +9 -3
  234. package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
  235. package/dist/dashboard/vc-consumer-profiles-api.js +2 -1
  236. package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -1
  237. package/dist/dashboard/web/app.d.ts.map +1 -1
  238. package/dist/dashboard/web/app.js +48 -5
  239. package/dist/dashboard/web/app.js.map +1 -1
  240. package/dist/dashboard/web/bot-defaults-page.d.ts +4 -0
  241. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  242. package/dist/dashboard/web/bot-defaults-page.js +273 -36
  243. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  244. package/dist/dashboard/web/bot-defaults.d.ts +6 -0
  245. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  246. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  247. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  248. package/dist/dashboard/web/dashboard-routes.js +1 -0
  249. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  250. package/dist/dashboard/web/feedback-page.d.ts +3 -0
  251. package/dist/dashboard/web/feedback-page.d.ts.map +1 -0
  252. package/dist/dashboard/web/feedback-page.js +34 -0
  253. package/dist/dashboard/web/feedback-page.js.map +1 -0
  254. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  255. package/dist/dashboard/web/groups-page.js +7 -2
  256. package/dist/dashboard/web/groups-page.js.map +1 -1
  257. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  258. package/dist/dashboard/web/i18n.js +114 -22
  259. package/dist/dashboard/web/i18n.js.map +1 -1
  260. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  261. package/dist/dashboard/web/team-federation-page.js +26 -2
  262. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  263. package/dist/dashboard/web/team-federation.d.ts +19 -0
  264. package/dist/dashboard/web/team-federation.d.ts.map +1 -1
  265. package/dist/dashboard/web/team-federation.js +3 -0
  266. package/dist/dashboard/web/team-federation.js.map +1 -1
  267. package/dist/dashboard/web/update-action.d.ts +8 -0
  268. package/dist/dashboard/web/update-action.d.ts.map +1 -1
  269. package/dist/dashboard/web/update-action.js +10 -0
  270. package/dist/dashboard/web/update-action.js.map +1 -1
  271. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
  272. package/dist/dashboard/web/vc-consumer-profiles-section.js +58 -9
  273. package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
  274. package/dist/dashboard-web/app.js +1 -1
  275. package/dist/dashboard-web/chunks/bot-defaults-page-4RENHE7J.js +10 -0
  276. package/dist/dashboard-web/chunks/chunk-2WQDS65D.js +1 -0
  277. package/dist/dashboard-web/chunks/{chunk-CU4SUKK3.js → chunk-6O7KXFD2.js} +1 -1
  278. package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +1 -0
  279. package/dist/dashboard-web/chunks/{chunk-6JTZJRQJ.js → chunk-Q2MT4VWH.js} +15 -15
  280. package/dist/dashboard-web/chunks/{chunk-5QJB24I2.js → chunk-U3ZFSO7E.js} +1 -1
  281. package/dist/dashboard-web/chunks/connectors-page-2KZO5KSJ.js +1 -0
  282. package/dist/dashboard-web/chunks/feedback-page-CLVTOLLO.js +1 -0
  283. package/dist/dashboard-web/chunks/groups-page-HLASRTSY.js +8 -0
  284. package/dist/dashboard-web/chunks/{insights-page-EVGGJI5L.js → insights-page-4RPU2CRU.js} +1 -1
  285. package/dist/dashboard-web/chunks/{monitor-room-HRGR2ENP.js → monitor-room-OTKQ2CXK.js} +1 -1
  286. package/dist/dashboard-web/chunks/monitoring-page-IJPUB6JT.js +2 -0
  287. package/dist/dashboard-web/chunks/office-page-QSR3J44Y.js +1 -0
  288. package/dist/dashboard-web/chunks/overview-page-6OK63V4V.js +1 -0
  289. package/dist/dashboard-web/chunks/roles-page-6NWJMOB5.js +1 -0
  290. package/dist/dashboard-web/chunks/schedules-page-6I3LNXD4.js +1 -0
  291. package/dist/dashboard-web/chunks/{sessions-page-DXBCDWCS.js → sessions-page-B2TXGJDO.js} +1 -1
  292. package/dist/dashboard-web/chunks/settings-page-6KJADSC6.js +2 -0
  293. package/dist/dashboard-web/chunks/{skills-page-2QAVB2SA.js → skills-page-M2Q6L5CB.js} +1 -1
  294. package/dist/dashboard-web/chunks/team-federation-page-7I7FDE3B.js +1 -0
  295. package/dist/dashboard-web/chunks/{v3-page-AY35LKCX.js → v3-page-HQXRL65L.js} +1 -1
  296. package/dist/dashboard-web/chunks/whiteboards-page-LQKC4TAZ.js +1 -0
  297. package/dist/dashboard-web/style.css +35 -0
  298. package/dist/dashboard.js +199 -12
  299. package/dist/dashboard.js.map +1 -1
  300. package/dist/desktop/shared/shell-path-probes.d.ts +1 -1
  301. package/dist/desktop/shared/shell-path-probes.js +2 -2
  302. package/dist/desktop/shared/shell-path-probes.js.map +1 -1
  303. package/dist/dsh-runner.d.ts +3 -0
  304. package/dist/dsh-runner.d.ts.map +1 -0
  305. package/dist/dsh-runner.js +666 -0
  306. package/dist/dsh-runner.js.map +1 -0
  307. package/dist/global-config.d.ts +24 -0
  308. package/dist/global-config.d.ts.map +1 -1
  309. package/dist/global-config.js +35 -0
  310. package/dist/global-config.js.map +1 -1
  311. package/dist/i18n/en.d.ts.map +1 -1
  312. package/dist/i18n/en.js +25 -6
  313. package/dist/i18n/en.js.map +1 -1
  314. package/dist/i18n/zh.d.ts.map +1 -1
  315. package/dist/i18n/zh.js +25 -6
  316. package/dist/i18n/zh.js.map +1 -1
  317. package/dist/im/lark/ask-card.d.ts +3 -1
  318. package/dist/im/lark/ask-card.d.ts.map +1 -1
  319. package/dist/im/lark/ask-card.js +61 -5
  320. package/dist/im/lark/ask-card.js.map +1 -1
  321. package/dist/im/lark/card-builder.d.ts.map +1 -1
  322. package/dist/im/lark/card-builder.js +13 -6
  323. package/dist/im/lark/card-builder.js.map +1 -1
  324. package/dist/im/lark/card-handler.d.ts +2 -1
  325. package/dist/im/lark/card-handler.d.ts.map +1 -1
  326. package/dist/im/lark/card-handler.js +145 -5
  327. package/dist/im/lark/card-handler.js.map +1 -1
  328. package/dist/im/lark/event-dispatcher.d.ts +18 -0
  329. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  330. package/dist/im/lark/event-dispatcher.js +36 -9
  331. package/dist/im/lark/event-dispatcher.js.map +1 -1
  332. package/dist/im/lark/md-card.d.ts +18 -0
  333. package/dist/im/lark/md-card.d.ts.map +1 -1
  334. package/dist/im/lark/md-card.js +21 -0
  335. package/dist/im/lark/md-card.js.map +1 -1
  336. package/dist/im/lark/relay-target-routing.d.ts.map +1 -1
  337. package/dist/im/lark/relay-target-routing.js +3 -2
  338. package/dist/im/lark/relay-target-routing.js.map +1 -1
  339. package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
  340. package/dist/im/lark/reply-mode-command.js +19 -8
  341. package/dist/im/lark/reply-mode-command.js.map +1 -1
  342. package/dist/im/lark/skill-feedback-card.d.ts +15 -0
  343. package/dist/im/lark/skill-feedback-card.d.ts.map +1 -0
  344. package/dist/im/lark/skill-feedback-card.js +149 -0
  345. package/dist/im/lark/skill-feedback-card.js.map +1 -0
  346. package/dist/services/bot-config-store.d.ts +10 -1
  347. package/dist/services/bot-config-store.d.ts.map +1 -1
  348. package/dist/services/bot-config-store.js +103 -3
  349. package/dist/services/bot-config-store.js.map +1 -1
  350. package/dist/services/bridge-fallback-gate.d.ts +14 -0
  351. package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
  352. package/dist/services/bridge-fallback-gate.js +15 -0
  353. package/dist/services/bridge-fallback-gate.js.map +1 -1
  354. package/dist/services/codex-reasoning-effort.d.ts +9 -0
  355. package/dist/services/codex-reasoning-effort.d.ts.map +1 -0
  356. package/dist/services/codex-reasoning-effort.js +23 -0
  357. package/dist/services/codex-reasoning-effort.js.map +1 -0
  358. package/dist/services/codex-service-tier.d.ts +1 -1
  359. package/dist/services/codex-service-tier.d.ts.map +1 -1
  360. package/dist/services/codex-transcript.d.ts +9 -0
  361. package/dist/services/codex-transcript.d.ts.map +1 -1
  362. package/dist/services/codex-transcript.js +13 -6
  363. package/dist/services/codex-transcript.js.map +1 -1
  364. package/dist/services/feed-group-tagger.d.ts +15 -0
  365. package/dist/services/feed-group-tagger.d.ts.map +1 -0
  366. package/dist/services/feed-group-tagger.js +348 -0
  367. package/dist/services/feed-group-tagger.js.map +1 -0
  368. package/dist/services/feedback-analytics.d.ts +82 -0
  369. package/dist/services/feedback-analytics.d.ts.map +1 -0
  370. package/dist/services/feedback-analytics.js +95 -0
  371. package/dist/services/feedback-analytics.js.map +1 -0
  372. package/dist/services/feedback-outbox.d.ts +24 -0
  373. package/dist/services/feedback-outbox.d.ts.map +1 -0
  374. package/dist/services/feedback-outbox.js +12 -0
  375. package/dist/services/feedback-outbox.js.map +1 -0
  376. package/dist/services/feedback-policy-resolver.d.ts +56 -0
  377. package/dist/services/feedback-policy-resolver.d.ts.map +1 -0
  378. package/dist/services/feedback-policy-resolver.js +156 -0
  379. package/dist/services/feedback-policy-resolver.js.map +1 -0
  380. package/dist/services/feedback-policy.d.ts +41 -0
  381. package/dist/services/feedback-policy.d.ts.map +1 -0
  382. package/dist/services/feedback-policy.js +102 -0
  383. package/dist/services/feedback-policy.js.map +1 -0
  384. package/dist/services/feedback-webhook-dispatcher.d.ts +76 -0
  385. package/dist/services/feedback-webhook-dispatcher.d.ts.map +1 -0
  386. package/dist/services/feedback-webhook-dispatcher.js +237 -0
  387. package/dist/services/feedback-webhook-dispatcher.js.map +1 -0
  388. package/dist/services/grant-prefs-store.d.ts +3 -0
  389. package/dist/services/grant-prefs-store.d.ts.map +1 -1
  390. package/dist/services/grant-prefs-store.js +30 -1
  391. package/dist/services/grant-prefs-store.js.map +1 -1
  392. package/dist/services/groups-store.d.ts +14 -0
  393. package/dist/services/groups-store.d.ts.map +1 -1
  394. package/dist/services/groups-store.js +23 -0
  395. package/dist/services/groups-store.js.map +1 -1
  396. package/dist/services/local-cli-opener.d.ts +1 -1
  397. package/dist/services/local-cli-opener.d.ts.map +1 -1
  398. package/dist/services/local-cli-opener.js +2 -0
  399. package/dist/services/local-cli-opener.js.map +1 -1
  400. package/dist/services/prompt-context-store.d.ts +29 -0
  401. package/dist/services/prompt-context-store.d.ts.map +1 -0
  402. package/dist/services/prompt-context-store.js +205 -0
  403. package/dist/services/prompt-context-store.js.map +1 -0
  404. package/dist/services/session-group-avatar.d.ts +6 -0
  405. package/dist/services/session-group-avatar.d.ts.map +1 -0
  406. package/dist/services/session-group-avatar.js +96 -0
  407. package/dist/services/session-group-avatar.js.map +1 -0
  408. package/dist/services/session-group-title.d.ts +47 -0
  409. package/dist/services/session-group-title.d.ts.map +1 -0
  410. package/dist/services/session-group-title.js +226 -0
  411. package/dist/services/session-group-title.js.map +1 -0
  412. package/dist/services/session-groups-store.d.ts +30 -0
  413. package/dist/services/session-groups-store.d.ts.map +1 -0
  414. package/dist/services/session-groups-store.js +132 -0
  415. package/dist/services/session-groups-store.js.map +1 -0
  416. package/dist/services/session-store.d.ts +58 -0
  417. package/dist/services/session-store.d.ts.map +1 -1
  418. package/dist/services/session-store.js +174 -0
  419. package/dist/services/session-store.js.map +1 -1
  420. package/dist/services/skill-feedback-store.d.ts +252 -0
  421. package/dist/services/skill-feedback-store.d.ts.map +1 -0
  422. package/dist/services/skill-feedback-store.js +795 -0
  423. package/dist/services/skill-feedback-store.js.map +1 -0
  424. package/dist/services/skill-registry-store.d.ts +23 -0
  425. package/dist/services/skill-registry-store.d.ts.map +1 -1
  426. package/dist/services/skill-registry-store.js +93 -7
  427. package/dist/services/skill-registry-store.js.map +1 -1
  428. package/dist/services/team-store.d.ts +4 -0
  429. package/dist/services/team-store.d.ts.map +1 -1
  430. package/dist/services/team-store.js +16 -0
  431. package/dist/services/team-store.js.map +1 -1
  432. package/dist/services/traex-transcript.d.ts +32 -4
  433. package/dist/services/traex-transcript.d.ts.map +1 -1
  434. package/dist/services/traex-transcript.js +116 -8
  435. package/dist/services/traex-transcript.js.map +1 -1
  436. package/dist/services/trigger-types.d.ts +1 -1
  437. package/dist/services/trigger-types.d.ts.map +1 -1
  438. package/dist/services/trigger-types.js +2 -2
  439. package/dist/services/trigger-types.js.map +1 -1
  440. package/dist/services/turn-completion-events.d.ts +57 -0
  441. package/dist/services/turn-completion-events.d.ts.map +1 -0
  442. package/dist/services/turn-completion-events.js +179 -0
  443. package/dist/services/turn-completion-events.js.map +1 -0
  444. package/dist/services/vc-meeting-consumer-isolation.d.ts +21 -12
  445. package/dist/services/vc-meeting-consumer-isolation.d.ts.map +1 -1
  446. package/dist/services/vc-meeting-consumer-isolation.js +25 -19
  447. package/dist/services/vc-meeting-consumer-isolation.js.map +1 -1
  448. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +8 -2
  449. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -1
  450. package/dist/services/vc-meeting-consumer-profile-bootstrap.js +18 -10
  451. package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -1
  452. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  453. package/dist/setup/bot-config-editor.js +6 -0
  454. package/dist/setup/bot-config-editor.js.map +1 -1
  455. package/dist/setup/cli-availability.d.ts +2 -1
  456. package/dist/setup/cli-availability.d.ts.map +1 -1
  457. package/dist/setup/cli-availability.js +2 -1
  458. package/dist/setup/cli-availability.js.map +1 -1
  459. package/dist/setup/cli-selection.d.ts +8 -0
  460. package/dist/setup/cli-selection.d.ts.map +1 -1
  461. package/dist/setup/cli-selection.js +31 -0
  462. package/dist/setup/cli-selection.js.map +1 -1
  463. package/dist/setup/ensure-fonts.d.ts +5 -0
  464. package/dist/setup/ensure-fonts.d.ts.map +1 -1
  465. package/dist/setup/ensure-fonts.js +26 -1
  466. package/dist/setup/ensure-fonts.js.map +1 -1
  467. package/dist/setup/lark-scopes.json +3 -1
  468. package/dist/setup/open-platform-automation.d.ts +1 -1
  469. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  470. package/dist/setup/open-platform-automation.js +15 -3
  471. package/dist/setup/open-platform-automation.js.map +1 -1
  472. package/dist/skills/definitions.d.ts +1 -1
  473. package/dist/skills/definitions.d.ts.map +1 -1
  474. package/dist/skills/definitions.js +9 -2
  475. package/dist/skills/definitions.js.map +1 -1
  476. package/dist/types.d.ts +10 -4
  477. package/dist/types.d.ts.map +1 -1
  478. package/dist/utils/user-token.d.ts +38 -0
  479. package/dist/utils/user-token.d.ts.map +1 -1
  480. package/dist/utils/user-token.js +76 -1
  481. package/dist/utils/user-token.js.map +1 -1
  482. package/dist/utils/web-terminal-scroll.d.ts +27 -0
  483. package/dist/utils/web-terminal-scroll.d.ts.map +1 -0
  484. package/dist/utils/web-terminal-scroll.js +60 -0
  485. package/dist/utils/web-terminal-scroll.js.map +1 -0
  486. package/dist/vc-agent/polling-source.d.ts +70 -0
  487. package/dist/vc-agent/polling-source.d.ts.map +1 -1
  488. package/dist/vc-agent/polling-source.js +115 -0
  489. package/dist/vc-agent/polling-source.js.map +1 -1
  490. package/dist/worker.js +237 -76
  491. package/dist/worker.js.map +1 -1
  492. package/dist/workflows/definition.d.ts +22 -22
  493. package/dist/workflows/events/payloads.d.ts +8 -8
  494. package/dist/workflows/events/schema.d.ts +20 -20
  495. package/dist/workflows/migration/v2-run-archive-schema.d.ts +20 -20
  496. package/package.json +1 -1
  497. package/dist/dashboard-web/chunks/bot-defaults-page-NQJFJ45Z.js +0 -10
  498. package/dist/dashboard-web/chunks/chunk-KEEYQ3WF.js +0 -1
  499. package/dist/dashboard-web/chunks/connectors-page-HADHZXXZ.js +0 -1
  500. package/dist/dashboard-web/chunks/groups-page-5TYF46RS.js +0 -8
  501. package/dist/dashboard-web/chunks/monitoring-page-LBU7TTTW.js +0 -2
  502. package/dist/dashboard-web/chunks/office-page-DF6RRBMN.js +0 -1
  503. package/dist/dashboard-web/chunks/overview-page-ZB6QH2EX.js +0 -1
  504. package/dist/dashboard-web/chunks/roles-page-ZBZGHIIF.js +0 -1
  505. package/dist/dashboard-web/chunks/schedules-page-NQVQC3QY.js +0 -1
  506. package/dist/dashboard-web/chunks/settings-page-E7NN4NVQ.js +0 -2
  507. package/dist/dashboard-web/chunks/team-federation-page-VGWL53AE.js +0 -1
  508. package/dist/dashboard-web/chunks/whiteboards-page-BNWUU4KG.js +0 -1
@@ -54,7 +54,7 @@ export declare const V2RunArchiveVerdictSchema: z.ZodObject<{
54
54
  }>;
55
55
  liveTerminalSidecars: z.ZodNumber;
56
56
  }, "strict", z.ZodTypeAny, {
57
- status: "failed" | "succeeded" | "cancelled";
57
+ status: "failed" | "cancelled" | "succeeded";
58
58
  updatedAt: number;
59
59
  workflowId: string;
60
60
  lastSeq: number;
@@ -67,7 +67,7 @@ export declare const V2RunArchiveVerdictSchema: z.ZodObject<{
67
67
  liveTerminalSidecars: number;
68
68
  revisionId?: string | undefined;
69
69
  }, {
70
- status: "failed" | "succeeded" | "cancelled";
70
+ status: "failed" | "cancelled" | "succeeded";
71
71
  updatedAt: number;
72
72
  workflowId: string;
73
73
  lastSeq: number;
@@ -137,7 +137,7 @@ export declare const V2RunArchiveRunSchema: z.ZodObject<{
137
137
  }>;
138
138
  liveTerminalSidecars: z.ZodNumber;
139
139
  }, "strict", z.ZodTypeAny, {
140
- status: "failed" | "succeeded" | "cancelled";
140
+ status: "failed" | "cancelled" | "succeeded";
141
141
  updatedAt: number;
142
142
  workflowId: string;
143
143
  lastSeq: number;
@@ -150,7 +150,7 @@ export declare const V2RunArchiveRunSchema: z.ZodObject<{
150
150
  liveTerminalSidecars: number;
151
151
  revisionId?: string | undefined;
152
152
  }, {
153
- status: "failed" | "succeeded" | "cancelled";
153
+ status: "failed" | "cancelled" | "succeeded";
154
154
  updatedAt: number;
155
155
  workflowId: string;
156
156
  lastSeq: number;
@@ -180,7 +180,7 @@ export declare const V2RunArchiveRunSchema: z.ZodObject<{
180
180
  blobsDir: boolean;
181
181
  };
182
182
  verdict: {
183
- status: "failed" | "succeeded" | "cancelled";
183
+ status: "failed" | "cancelled" | "succeeded";
184
184
  updatedAt: number;
185
185
  workflowId: string;
186
186
  lastSeq: number;
@@ -210,7 +210,7 @@ export declare const V2RunArchiveRunSchema: z.ZodObject<{
210
210
  blobsDir: boolean;
211
211
  };
212
212
  verdict: {
213
- status: "failed" | "succeeded" | "cancelled";
213
+ status: "failed" | "cancelled" | "succeeded";
214
214
  updatedAt: number;
215
215
  workflowId: string;
216
216
  lastSeq: number;
@@ -308,7 +308,7 @@ export declare const V2RunArchiveContentSchema: z.ZodObject<{
308
308
  }>;
309
309
  liveTerminalSidecars: z.ZodNumber;
310
310
  }, "strict", z.ZodTypeAny, {
311
- status: "failed" | "succeeded" | "cancelled";
311
+ status: "failed" | "cancelled" | "succeeded";
312
312
  updatedAt: number;
313
313
  workflowId: string;
314
314
  lastSeq: number;
@@ -321,7 +321,7 @@ export declare const V2RunArchiveContentSchema: z.ZodObject<{
321
321
  liveTerminalSidecars: number;
322
322
  revisionId?: string | undefined;
323
323
  }, {
324
- status: "failed" | "succeeded" | "cancelled";
324
+ status: "failed" | "cancelled" | "succeeded";
325
325
  updatedAt: number;
326
326
  workflowId: string;
327
327
  lastSeq: number;
@@ -351,7 +351,7 @@ export declare const V2RunArchiveContentSchema: z.ZodObject<{
351
351
  blobsDir: boolean;
352
352
  };
353
353
  verdict: {
354
- status: "failed" | "succeeded" | "cancelled";
354
+ status: "failed" | "cancelled" | "succeeded";
355
355
  updatedAt: number;
356
356
  workflowId: string;
357
357
  lastSeq: number;
@@ -381,7 +381,7 @@ export declare const V2RunArchiveContentSchema: z.ZodObject<{
381
381
  blobsDir: boolean;
382
382
  };
383
383
  verdict: {
384
- status: "failed" | "succeeded" | "cancelled";
384
+ status: "failed" | "cancelled" | "succeeded";
385
385
  updatedAt: number;
386
386
  workflowId: string;
387
387
  lastSeq: number;
@@ -452,7 +452,7 @@ export declare const V2RunArchiveContentSchema: z.ZodObject<{
452
452
  blobsDir: boolean;
453
453
  };
454
454
  verdict: {
455
- status: "failed" | "succeeded" | "cancelled";
455
+ status: "failed" | "cancelled" | "succeeded";
456
456
  updatedAt: number;
457
457
  workflowId: string;
458
458
  lastSeq: number;
@@ -499,7 +499,7 @@ export declare const V2RunArchiveContentSchema: z.ZodObject<{
499
499
  blobsDir: boolean;
500
500
  };
501
501
  verdict: {
502
- status: "failed" | "succeeded" | "cancelled";
502
+ status: "failed" | "cancelled" | "succeeded";
503
503
  updatedAt: number;
504
504
  workflowId: string;
505
505
  lastSeq: number;
@@ -594,7 +594,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
594
594
  }>;
595
595
  liveTerminalSidecars: z.ZodNumber;
596
596
  }, "strict", z.ZodTypeAny, {
597
- status: "failed" | "succeeded" | "cancelled";
597
+ status: "failed" | "cancelled" | "succeeded";
598
598
  updatedAt: number;
599
599
  workflowId: string;
600
600
  lastSeq: number;
@@ -607,7 +607,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
607
607
  liveTerminalSidecars: number;
608
608
  revisionId?: string | undefined;
609
609
  }, {
610
- status: "failed" | "succeeded" | "cancelled";
610
+ status: "failed" | "cancelled" | "succeeded";
611
611
  updatedAt: number;
612
612
  workflowId: string;
613
613
  lastSeq: number;
@@ -637,7 +637,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
637
637
  blobsDir: boolean;
638
638
  };
639
639
  verdict: {
640
- status: "failed" | "succeeded" | "cancelled";
640
+ status: "failed" | "cancelled" | "succeeded";
641
641
  updatedAt: number;
642
642
  workflowId: string;
643
643
  lastSeq: number;
@@ -667,7 +667,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
667
667
  blobsDir: boolean;
668
668
  };
669
669
  verdict: {
670
- status: "failed" | "succeeded" | "cancelled";
670
+ status: "failed" | "cancelled" | "succeeded";
671
671
  updatedAt: number;
672
672
  workflowId: string;
673
673
  lastSeq: number;
@@ -738,7 +738,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
738
738
  blobsDir: boolean;
739
739
  };
740
740
  verdict: {
741
- status: "failed" | "succeeded" | "cancelled";
741
+ status: "failed" | "cancelled" | "succeeded";
742
742
  updatedAt: number;
743
743
  workflowId: string;
744
744
  lastSeq: number;
@@ -785,7 +785,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
785
785
  blobsDir: boolean;
786
786
  };
787
787
  verdict: {
788
- status: "failed" | "succeeded" | "cancelled";
788
+ status: "failed" | "cancelled" | "succeeded";
789
789
  updatedAt: number;
790
790
  workflowId: string;
791
791
  lastSeq: number;
@@ -835,7 +835,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
835
835
  blobsDir: boolean;
836
836
  };
837
837
  verdict: {
838
- status: "failed" | "succeeded" | "cancelled";
838
+ status: "failed" | "cancelled" | "succeeded";
839
839
  updatedAt: number;
840
840
  workflowId: string;
841
841
  lastSeq: number;
@@ -890,7 +890,7 @@ export declare const V2RunArchiveManifestSchema: z.ZodObject<{
890
890
  blobsDir: boolean;
891
891
  };
892
892
  verdict: {
893
- status: "failed" | "succeeded" | "cancelled";
893
+ status: "failed" | "cancelled" | "succeeded";
894
894
  updatedAt: number;
895
895
  workflowId: string;
896
896
  lastSeq: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botmux",
3
- "version": "3.13.0",
3
+ "version": "3.14.0",
4
4
  "description": "Bridge between IM platforms and AI coding CLIs — one topic, one CLI session with live streaming",
5
5
  "type": "module",
6
6
  "main": "dist/index-daemon.js",
@@ -1,10 +0,0 @@
1
- import{b as qt}from"./chunk-CU4SUKK3.js";import{c as H}from"./chunk-KEEYQ3WF.js";import{a as Nt,b as bt,c as vt,g as jt,h as Ht,j as Wt,k as _t,q as Tt}from"./chunk-5CJMHTT4.js";import{C as Ut,D as Ft,a as ht,t as Lt,y as St,z as ct}from"./chunk-6JTZJRQJ.js";import{a as Gt}from"./chunk-SYC6D5XU.js";import{a as fe,b as me,d as Et}from"./chunk-5THX4DI2.js";import{c as yt}from"./chunk-7SZRL6FY.js";var s=yt(fe(),1),ue=yt(me(),1);var Jt=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],ft={options:Jt,ttadkModelDefault:"glm-5.1",ttadkModelSuggestions:[]};function Dt(a,t){return typeof a?.cliId=="string"&&a.cliId?a.cliId:t}function xt(a){let t=null;for(let o of ht.sessions.values())o.larkAppId!==a||!o.cliId||(!t||Number(o.lastMessageAt??0)>Number(t.lastMessageAt??0))&&(t=o);return t?.cliId??""}function Pt(a,t){let o=typeof a.agentSelectionKey=="string"&&a.agentSelectionKey?a.agentSelectionKey:"";return o||Dt(a,t)||"claude-code"}function It(a,t){return a.find(o=>o.id===t)}function Qt(a,t){return a?.gateway==="ttadk"&&a.acceptsModel!==!1?t.ttadkModelSuggestions:[]}function Vt(){let a=0;return{begin(){let t=++a;return{commit:()=>t===a}}}}async function Kt(){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 zt(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})}),u=await o.json().catch(()=>({}));return o.ok?{ok:!0,resolution:u?.resolution??{}}:{ok:!1,error:u?.error?`HTTP ${o.status}: ${u.error}`:`HTTP ${o.status}`}}catch(o){return{ok:!1,error:o?.message??String(o)}}}async function Xt(){try{let a=await fetch("/api/cli-options"),t=await a.json().catch(()=>({}));if(!a.ok||!Array.isArray(t?.options))return ft;let o=t.options.filter(l=>l&&typeof l.id=="string"&&typeof l.label=="string"),u=typeof t.ttadkModelDefault=="string"&&t.ttadkModelDefault.trim()?t.ttadkModelDefault.trim():ft.ttadkModelDefault,i=Array.isArray(t.ttadkModelSuggestions)?t.ttadkModelSuggestions.filter(l=>typeof l=="string"):[];return{options:o.length?o:Jt,ttadkModelDefault:u,ttadkModelSuggestions:i}}catch{return ft}}function Zt(a){if(!a)return"\u2014";let t=new Date(a);return Number.isNaN(t.getTime())?"\u2014":t.toLocaleString()}var Yt=[3600*1e3,480*60*1e3,1440*60*1e3,10080*60*1e3];var e=yt(Et(),1);function Rt(a){let t=a.cliRuntime;if(!t||typeof t!="object"){let i=typeof a.cliPathOverride=="string"?a.cliPathOverride.trim():"";return{mode:i?"legacy":"official",id:"",displayName:"",executable:i,legacyPath:i,updateProvider:"auto",packageName:""}}let o=t.update?.provider,u=o==="self"||o==="npm"||o==="none"?o:"auto";return{mode:"custom",id:typeof t.id=="string"?t.id:"",displayName:typeof t.displayName=="string"?t.displayName:"",executable:typeof t.executable=="string"?t.executable:"",legacyPath:"",updateProvider:u,packageName:t.update?.provider==="npm"&&typeof t.update.packageName=="string"?t.update.packageName:""}}var mt=["common","sessions","security","cards","advanced"];function ge(a){let t=H(),o=(0,s.useRef)([]),u={common:t("botDefaults.tabCommon"),sessions:t("botDefaults.tabSessions"),security:t("botDefaults.tabSecurity"),cards:t("botDefaults.tabCards"),advanced:t("botDefaults.tabAdvanced")};function i(l){let f=(l+mt.length)%mt.length,n=mt[f];a.onChange(n),o.current[f]?.focus()}return(0,e.jsxs)("nav",{className:"bd-tab-bar","aria-label":t("botDefaults.tabNavigation"),children:[(0,e.jsx)("div",{className:"bd-tabs",role:"tablist",children:mt.map((l,f)=>(0,e.jsx)("button",{ref:n=>{o.current[f]=n},id:`bd-tab-${l}`,type:"button",role:"tab",className:`bd-tab${a.active===l?" active":""}`,"aria-selected":a.active===l,"aria-controls":`bd-panel-${l}`,tabIndex:a.active===l?0:-1,"data-bd-tab":l,onClick:()=>a.onChange(l),onKeyDown:n=>{n.key==="ArrowRight"?(n.preventDefault(),i(f+1)):n.key==="ArrowLeft"?(n.preventDefault(),i(f-1)):n.key==="Home"?(n.preventDefault(),i(0)):n.key==="End"&&(n.preventDefault(),i(mt.length-1))},children:u[l]},l))}),(0,e.jsx)("small",{className:"bd-tab-hint",children:t("botDefaults.tabHint")})]})}var ye=1,te=14;function pt(a){let t=(0,s.useRef)(null);return(0,s.useEffect)(()=>{let o=t.current;if(!o||typeof window>"u")return;let u=n=>{for(let p of n)p.style.gridColumn="",p.style.gridRowStart="",p.style.gridRowEnd=""},i=()=>{let n=Array.from(o.children).filter(N=>N instanceof HTMLElement);if(!n.length)return;let p=o.clientWidth;if(p<=0)return;let g=(o.closest(".bd-detail")?.clientWidth??p)>=1024?2:1;if(g<2){u(n);return}let c=ye+te,d=new Array(g).fill(0);for(let N of n){let S=Math.max(1,Math.ceil((N.getBoundingClientRect().height+te)/c));if(N.classList.contains("bd-tile-wide")){let h=Math.max(...d);N.style.gridColumn="1 / -1",N.style.gridRowStart=String(h+1),N.style.gridRowEnd=String(h+1+S),d.fill(h+S);continue}let v=0;for(let h=1;h<g;h++)d[h]<d[v]&&(v=h);let k=d[v];N.style.gridColumn=String(v+1),N.style.gridRowStart=String(k+1),N.style.gridRowEnd=String(k+1+S),d[v]=k+S}},l=window.requestAnimationFrame(i),f=typeof ResizeObserver<"u"?new ResizeObserver(()=>i()):null;if(f){f.observe(o);for(let n of Array.from(o.children))f.observe(n)}return window.addEventListener("resize",i),()=>{window.cancelAnimationFrame(l),f?.disconnect(),window.removeEventListener("resize",i)}}),(0,e.jsx)("div",{ref:t,className:a.className?`bd-tab-grid ${a.className}`:"bd-tab-grid",children:a.children})}function Ot(a,t=""){let o=a?` ${a.ok?"hint-ok":"hint-warn-inline"}`:"";return`oncall-status${t?` ${t}`:""}${o}`}function J(a){return(0,e.jsx)("span",{role:"status","aria-live":"polite",className:Ot(a.status),...a.attr??{},children:a.status?.text??""})}function he(a){let t=typeof a.children=="string"?a.children:void 0;return(0,e.jsx)(Wt,{className:"bd-info-tip",label:t,children:a.children})}function O(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)(he,{children:a.help}):null]})}function ot(a){let t=H();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Tt,{id:`bd-menu-${a.dataInput}`,className:["bd-field-menu",a.className].filter(Boolean).join(" "),ariaLabel:a.ariaLabel,disabled:a.disabled,label:Nt(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 nt(a){return(0,e.jsxs)("label",{className:a.className?`toggle-row ${a.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.jsxs)("span",{className:"toggle-tx",children:[(0,e.jsx)("strong",{children:(0,e.jsx)(O,{help:a.help,children:a.title})}),a.description?(0,e.jsx)("small",{children:a.description}):null]})]})}async function K(a,t,o){let u=await fetch(t,{method:a,headers:{"content-type":"application/json"},body:o===void 0?void 0:JSON.stringify(o)}),i=await u.json().catch(()=>({}));return{ok:u.ok&&i?.ok!==!1,status:u.status,body:i}}function q(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 j(a){return a?.message??String(a)}function At(a){let t=a.trim();return t?/^[1-9]\d*$/.test(t)?Number(t):"invalid":null}function ee(a,t){let o=a.trim();return o===""?t:/^(0|[1-9]\d*)$/.test(o)?Number(o):null}var $t=["email","openId","userId","unionId"];function ae(a){let t=a.split(/[\r\n,,;;]+/).map(o=>o.trim()).filter(Boolean);return[...new Set(t)]}function dt(a){return(a??[]).join(`
2
- `)}function ve(a){return $t.find(t=>a?.[t]?.trim())??"email"}function De(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 l of $t)delete o[l];o[a.idField]=t;let i=a.name.trim();return i?o.name=i:delete o.name,o}function ke(a,t){return a==null?t("botDefaults.brandStateDefault"):a.trim()===""?t("botDefaults.brandStateOff"):t("botDefaults.brandStateCustom")}var Ce=Yt;function Se(a,t){return a==null?t("botDefaults.maxLiveWorkersStateDefault"):t("botDefaults.maxLiveWorkersStateOn",{count:a})}function Ne(a,t){return{...a,usageDisplay:t.usageDisplay,disableStreamingCard:t.disableStreamingCard,silentTurnReactions:t.silentTurnReactions,codexAppCleanInput:t.codexAppCleanInput,writableTerminalLinkInCard:t.writableTerminalLinkInCard,privateCard:t.privateCard,summaryMemory:t.summaryMemory,summaryMemoryPath:t.summaryMemoryPath,botToBotSameDir:t.botToBotSameDir,autoStartOnGroupJoin:t.autoStartOnGroupJoin,autoStartOnGroupJoinPrompt:t.autoStartOnGroupJoinPrompt,autoStartOnNewTopic:t.autoStartOnNewTopic,regularGroupReplyMode:t.regularGroupReplyMode,regularGroupMentionMode:t.regularGroupMentionMode,docSubscribeDefaultMode:t.docSubscribeDefaultMode}}function Te(){let a=H(),t=(0,s.useRef)(!0),o=(0,s.useRef)(Vt()),[u,i]=(0,s.useState)([]),[l,f]=(0,s.useState)(ft),[n,p]=(0,s.useState)(null),[r,b]=(0,s.useState)(!0),[g,c]=(0,s.useState)(!1),[d,N]=(0,s.useState)(""),[S,v]=(0,s.useState)(null),[k,h]=(0,s.useState)(0),[,C]=(0,s.useState)(0),[T,D]=(0,s.useState)(!1),[m,U]=(0,s.useState)("common"),L=(0,s.useCallback)(async(w=!1)=>{w&&h(G=>G+1);let W=o.current.begin();b(!0);try{let[G,Y]=await Promise.all([Kt(),Xt()]);if(!t.current||!W.commit())return;i(G.bots),p(G.error),f(Y)}finally{t.current&&W.commit()&&b(!1)}},[]);(0,s.useEffect)(()=>{t.current=!0,L(),Ft().then(()=>{t.current&&C(W=>W+1)});let w=ht.onBotsChanged(()=>{t.current&&L()});return()=>{t.current=!1,w()}},[L]);let F=(0,s.useMemo)(()=>{let w=d.trim().toLowerCase();return u.filter(W=>!w||(W.botName??"").toLowerCase().includes(w)||(W.larkAppId??"").toLowerCase().includes(w))},[u,d]);(0,s.useEffect)(()=>{if(!(n||r)){if(F.length===0){S!==null&&v(null);return}(!S||!F.some(w=>w.larkAppId===S))&&v(F[0].larkAppId)}},[F,n,r,S]);let M=S?F.find(w=>w.larkAppId===S)??null:null,Z=(0,s.useCallback)((w,W)=>{i(G=>G.map(Y=>Y.larkAppId!==w?Y:typeof W=="function"?W(Y):{...Y,...W}))},[]),Q=async()=>{c(!0);try{await L(!0)}finally{t.current&&c(!1)}},I;return r?I=(0,e.jsx)(vt,{label:a("common.loading")}):n?I=(0,e.jsxs)("p",{className:"hint-warn",children:["\u65E0\u6CD5\u52A0\u8F7D bot \u5217\u8868\uFF1A",n,(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"]}):F.length===0?I=(0,e.jsx)("p",{className:"empty",children:a("botDefaults.empty")}):M?I=(0,e.jsx)(Pe,{bot:M,cliState:l,patchBot:Z,activeTab:m,onTabChange:U},`${M.larkAppId}:${k}`):I=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)(Ht,{id:"bd-refresh",label:a("botDefaults.refresh"),busy:g,disabled:g,onClick:()=>{Q()}}),Lt.authed?(0,e.jsx)(jt,{className:"page-primary-action add-bot-btn",disabled:T,onClick:()=>{D(!0),qt().finally(()=>D(!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:w=>w.preventDefault(),children:(0,e.jsx)("input",{type:"search",name:"q",placeholder:a("botDefaults.search"),value:d,onChange:w=>N(w.currentTarget.value)})}),(0,e.jsxs)("div",{className:"bd-roster-meta",children:[(0,e.jsx)("span",{children:a("botDefaults.rosterCount",{count:F.length})}),d.trim()&&F.length!==u.length?(0,e.jsx)("span",{children:a("botDefaults.rosterFiltered",{total:u.length})}):null]}),(0,e.jsx)("div",{className:"bd-roster-list",children:!n&&F.map(w=>(0,e.jsx)(xe,{bot:w,selected:w.larkAppId===S,onSelect:()=>v(w.larkAppId)},w.larkAppId))})]}),(0,e.jsx)("div",{id:"bd-list",className:"bd-detail",children:I})]})]})}function xe(a){let{bot:t}=a,o=t.botName??t.larkAppId,u=Dt(t,xt(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:i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),a.onSelect())},children:[(0,e.jsx)(bt,{html:ct({name:o,larkAppId:t.larkAppId,size:"sm"})}),(0,e.jsxs)("div",{className:"bd-roster-tx",children:[(0,e.jsx)("b",{children:(0,e.jsx)(_t,{text:o,showPopover:!1,textClassName:"bd-roster-name"})}),(0,e.jsx)("span",{children:u||t.larkAppId.slice(0,14)})]}),t.defaultOncall?.enabled?(0,e.jsx)("span",{className:"bd-roster-flag",children:"oncall"}):null]})}function Pe(a){let t=H(),{bot:o,cliState:u,patchBot:i}=a,l=o.botName??o.larkAppId,f=Dt(o,xt(o.larkAppId)),n=(0,s.useCallback)(async r=>{let b=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/card-prefs`,r);return b.ok&&i(o.larkAppId,g=>Ne(g,b.body)),b},[o.larkAppId,i]);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)(bt,{html:ct({name:l,larkAppId:o.larkAppId})}),(0,e.jsxs)("div",{className:"bd-profile-id",children:[(0,e.jsx)("strong",{children:l}),(0,e.jsx)("code",{children:o.larkAppId})]})]}),(0,e.jsxs)("p",{className:"hint-warn-inline",children:["\u67E5\u8BE2\u5931\u8D25\uFF1A",o.error]})]});let p=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)("div",{className:"bd-profile-chrome",children:[(0,e.jsxs)("header",{className:"bd-profile-head",children:[(0,e.jsx)(we,{bot:o,name:l,patchBot:i}),(0,e.jsx)("div",{className:"bd-profile-main",children:(0,e.jsx)(Me,{bot:o,cli:f,patchBot:i,meta:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("small",{className:"bd-meta-ok",children:["\u25CF ",t("botDefaults.metaOnline")]}),(p.since??0)>0?(0,e.jsxs)("small",{"data-oncall-since":!0,children:[t("botDefaults.lastEnabled"),": ",Zt(p.since??0)]}):null,(o.autoboundChatCount??0)>0?(0,e.jsx)("small",{children:t("botDefaults.autobound",{count:o.autoboundChatCount??0})}):null]})})})]}),(0,e.jsx)(ge,{active:a.activeTab,onChange:a.onTabChange})]}),(0,e.jsxs)("div",{className:"bd-body bd-tab-panels",children:[(0,e.jsx)("div",{id:"bd-panel-common",role:"tabpanel","aria-labelledby":"bd-tab-common",className:"bd-tab-panel",hidden:a.activeTab!=="common",children:(0,e.jsxs)(pt,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Be,{bot:o,sessionFallback:f,cliState:u,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ae,{bot:o,patchBot:i,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(je,{bot:o,patchBot:i})})]})}),(0,e.jsx)("div",{id:"bd-panel-sessions",role:"tabpanel","aria-labelledby":"bd-tab-sessions",className:"bd-tab-panel",hidden:a.activeTab!=="sessions",children:(0,e.jsxs)(pt,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Qe,{bot:o,patchBot:i,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ve,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(qe,{bot:o,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ke,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(ze,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Je,{bot:o,patchBot:i,putCardPref:n})})]})}),(0,e.jsx)("div",{id:"bd-panel-security",role:"tabpanel","aria-labelledby":"bd-tab-security",className:"bd-tab-panel",hidden:a.activeTab!=="security",children:(0,e.jsxs)(pt,{children:[o.cliId!=="riff"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)($e,{bot:o,patchBot:i})}):null,o.cliId!=="riff"&&o.sandbox===!0?(0,e.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,e.jsx)(Fe,{bot:o,patchBot:i})}):null,(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(na,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Xe,{bot:o,patchBot:i})})]})}),(0,e.jsx)("div",{id:"bd-panel-cards",role:"tabpanel","aria-labelledby":"bd-tab-cards",className:"bd-tab-panel",hidden:a.activeTab!=="cards",children:(0,e.jsxs)(pt,{children:[(0,e.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,e.jsx)(We,{bot:o,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(sa,{bot:o,patchBot:i})})]})}),(0,e.jsx)("div",{id:"bd-panel-advanced",role:"tabpanel","aria-labelledby":"bd-tab-advanced",className:"bd-tab-panel",hidden:a.activeTab!=="advanced",children:(0,e.jsxs)(pt,{children:[o.cliId!=="riff"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ee,{bot:o,patchBot:i})}):null,o.cliId==="codex-app"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(_e,{bot:o,putCardPref:n})}):null,(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ie,{bot:o,patchBot:i})})]})})]})]})}function Ie(a){let t=H();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)(Ze,{bot:a.bot,patchBot:a.patchBot}),(0,e.jsx)(Ye,{bot:a.bot,patchBot:a.patchBot})]})}var Ct=512;async function Re(a){let t=await createImageBitmap(a);try{let o=Math.min(t.width,t.height);if(!o)throw new Error("empty image");let u=document.createElement("canvas");u.width=Ct,u.height=Ct;let i=u.getContext("2d");if(!i)throw new Error("canvas unavailable");let l=(t.width-o)/2,f=(t.height-o)/2;return i.drawImage(t,l,f,o,o,0,0,Ct,Ct),u.toDataURL("image/png")}finally{t.close()}}function we(a){let t=H(),{bot:o,name:u,patchBot:i}=a,l=(0,s.useRef)(null),[f,n]=(0,s.useState)(!1),[p,r]=(0,s.useState)(null),[b,g]=(0,s.useState)(!1),[c,d]=(0,s.useState)(!1),N=(0,s.useRef)(null);function S(h,C){let D=["no_session","session_expired","no_access","unsupported_brand"].includes(h)?t(`botDefaults.avatarWarn.${h}`):C||h;return t("botDefaults.avatarFailed",{error:D})}let v=(0,s.useCallback)(async h=>{n(!0),r({text:`\u23F3 ${t("botDefaults.avatarUploading")}`,ok:!0});try{let C=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/avatar`,{imageBase64:h});if(C.ok&&C.body.ok){let T=typeof C.body.avatarUrl=="string"?C.body.avatarUrl:"";T&&Ut(o.larkAppId,u,T),i(o.larkAppId,D=>({...D})),N.current=null,g(!1),r({text:`\u2713 ${t("botDefaults.avatarOkFeishu")}`,ok:!0})}else{let T=String(C.body?.error??""),D=typeof C.body?.message=="string"?C.body.message:void 0;r({text:`\u2717 ${S(T,D??q(C))}`});let m=T==="no_session"||T==="session_expired";g(m),m||(N.current=null)}}catch(C){r({text:`\u2717 ${t("botDefaults.avatarFailed",{error:j(C)})}`})}finally{n(!1)}},[o.larkAppId,u,i,t]);async function k(h){if(!h||f)return;n(!0);let C;try{C=await Re(h)}catch{n(!1),r({text:`\u2717 ${t("botDefaults.avatarBadImage")}`});return}N.current=C,await v(C)}return(0,e.jsxs)(e.Fragment,{children:[(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:f,onClick:()=>l.current?.click(),children:[(0,e.jsx)(bt,{html:ct({name:u,larkAppId:o.larkAppId,dot:"ok"})}),(0,e.jsx)("span",{className:"bd-avatar-edit-badge","aria-hidden":"true",children:f?"\u23F3":"\u270E"})]}),(0,e.jsx)("input",{ref:l,type:"file",accept:"image/*",hidden:!0,"data-input":"botAvatarFile",onChange:h=>{let C=h.currentTarget.files?.[0];h.currentTarget.value="",k(C)}}),c?(0,e.jsx)(de,{onClose:()=>d(!1),onSuccess:()=>{g(!1),d(!1),N.current&&v(N.current)}}):null]}),p?(0,e.jsxs)("small",{className:Ot(p,"bd-avatar-status"),"data-avatar-status":!0,children:[p.text,b?(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login-avatar",onClick:()=>d(!0),children:t("feishuLogin.entry")}):null]}):null]})}function Me(a){let t=H(),{bot:o,cli:u,patchBot:i}=a,l=o.botName??o.larkAppId,[f,n]=(0,s.useState)(!1),[p,r]=(0,s.useState)(l),[b,g]=(0,s.useState)(!1),[c,d]=(0,s.useState)(null),[N,S]=(0,s.useState)(!1),[v,k]=(0,s.useState)(!1);(0,s.useEffect)(()=>{f||r(l)},[f,l]);function h(D){n(D),D&&(r(l),d(null),S(!1))}function C(D,m){let L=["no_session","session_expired","no_access","unsupported_brand"].includes(D)?t(`botDefaults.renameWarn.${D}`):m||D;return t("botDefaults.renameLocalOnly",{reason:L})}let T=(0,s.useCallback)(async()=>{let D=p.trim();if(!D){d({text:`\u2717 ${t("botDefaults.renameEmpty")}`});return}g(!0),d({text:`\u23F3 ${t("botDefaults.renaming")}`,ok:!0});try{let m=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/rename`,{name:D});if(m.ok&&m.body.ok){let U=typeof m.body.botName=="string"&&m.body.botName?m.body.botName:D;i(o.larkAppId,L=>({...L,botName:U,larkBotName:m.body.mode==="feishu"?D:L.larkBotName,displayName:m.body.mode==="feishu"?null:D})),h(!1),m.body.mode==="feishu"?(d({text:`\u2713 ${t("botDefaults.renameOkFeishu")}`,ok:!0}),S(!1)):(d({text:`\u26A0 ${C(String(m.body.warning??""),m.body.message)}`}),S(m.body.warning==="no_session"||m.body.warning==="session_expired"))}else d({text:`\u2717 ${t("botDefaults.renameFailed",{error:q(m)})}`})}catch(m){d({text:`\u2717 ${t("botDefaults.renameFailed",{error:j(m)})}`})}finally{g(!1)}},[o.larkAppId,p,i,t]);return(0,e.jsxs)("div",{className:"bd-profile-id",children:[f?(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:p,disabled:b,autoFocus:!0,onChange:D=>r(D.currentTarget.value),onKeyDown:D=>{D.key==="Enter"?(D.preventDefault(),T()):D.key==="Escape"&&h(!1)}}),(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-bot-name",disabled:b,onClick:()=>{T()},children:t("botDefaults.renameSave")}),(0,e.jsx)("button",{type:"button","data-action":"cancel-bot-name",disabled:b,onClick:()=>h(!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:l}),u?(0,e.jsx)("span",{className:"mate-role bd-profile-cli-tag",children:u}):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:()=>h(!0),children:(0,e.jsx)("svg",{viewBox:"0 0 16 16",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,e.jsx)("path",{d:"M11.5 2.5l2 2L6 12l-2.5.5L4 10z"})})})]}),(0,e.jsxs)("div",{className:"bd-profile-appid-row",children:[(0,e.jsx)("code",{children:o.larkAppId}),St(o.larkAppId,o.brand)?(0,e.jsxs)("a",{className:"bd-console-link",href:St(o.larkAppId,o.brand),target:"_blank",rel:"noopener noreferrer",children:[t("botDefaults.openConsole"),(0,e.jsx)("svg",{viewBox:"0 0 24 24",width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,e.jsx)("path",{d:"M7 17 17 7M9 7h8v8"})})]}):null]}),(0,e.jsx)("small",{className:Ot(c,"bd-name-status"),"data-name-status":!0,children:c?.text??""}),(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login",hidden:!N,onClick:()=>k(!0),children:t("feishuLogin.entry")}),v?(0,e.jsx)(de,{onClose:()=>k(!1),onSuccess:()=>{S(!1),k(!1),T()}}):null]})}function de(a){let t=H(),{onClose:o,onSuccess:u}=a,i=(0,s.useRef)(null),l=(0,s.useRef)(null),[f,n]=(0,s.useState)(t("feishuLogin.starting")),[p,r]=(0,s.useState)(null),[b,g]=(0,s.useState)(!1),c=(0,s.useCallback)(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null)},[]),d=(0,s.useCallback)(v=>v?v.status==="awaiting_scan"&&v.qrDataUrl?(r(v.qrDataUrl),n(v.message||t("feishuLogin.scanHint")),g(!1),"active"):v.status==="starting"?(n(v.message||t("feishuLogin.starting")),r(null),g(!1),"active"):v.status==="success"?(c(),r(null),g(!1),n(t("feishuLogin.success")),l.current=window.setTimeout(()=>u(),900),"done"):(c(),r(null),n(t("feishuLogin.failed",{reason:v.message||v.reason||""})),g(!0),"done"):"active",[u,c,t]),N=(0,s.useCallback)(async()=>{try{let k=await(await fetch("/api/feishu-login/status")).json().catch(()=>({}));d(k.login)}catch{}},[d]),S=(0,s.useCallback)(async()=>{c(),n(t("feishuLogin.starting")),r(null),g(!1);let v="active";try{let h=await(await fetch("/api/feishu-login/start",{method:"POST"})).json().catch(()=>({}));v=d(h.login)}catch(k){n(t("feishuLogin.failed",{reason:j(k)})),g(!0);return}v==="active"&&i.current===null&&(i.current=window.setInterval(()=>{N()},1500))},[N,d,c,t]);return(0,s.useEffect)(()=>(S(),()=>{c(),l.current!==null&&window.clearTimeout(l.current)}),[S,c]),typeof document>"u"?null:(0,ue.createPortal)((0,e.jsx)("div",{className:"feishu-login-overlay",onClick:v=>{v.currentTarget===v.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:f}),(0,e.jsx)("div",{className:"feishu-login-qr","data-qr":!0,children:p?(0,e.jsx)("img",{className:"qr-image",src:p,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:!b,onClick:()=>{S()},children:t("feishuLogin.retry")})})]})}),document.body)}function Be(a){let t=H(),{bot:o,cliState:u,patchBot:i}=a,l=Pt(o,a.sessionFallback),f=JSON.stringify([o.cliRuntime??null,o.cliPathOverride??null]),[n,p]=(0,s.useState)(l),[r,b]=(0,s.useState)(!1),[g,c]=(0,s.useState)(typeof o.model=="string"?o.model:""),[d,N]=(0,s.useState)(()=>Rt(o)),[S,v]=(0,s.useState)(!1),[k,h]=(0,s.useState)(null),[C,T]=(0,s.useState)(null),[D,m]=(0,s.useState)(!1),[U,L]=(0,s.useState)(oe(o)),[F,M]=(0,s.useState)(null),[Z,Q]=(0,s.useState)(!1);(0,s.useEffect)(()=>{p(Pt(o,a.sessionFallback)),b(!1),c(typeof o.model=="string"?o.model:""),N(Rt(o)),v(!1),L(oe(o))},[o.agentSelectionKey,o.cliId,o.larkAppId,o.model,f,o.wrapperCli,o.skillInjection,o.skillInjectionDefault,a.sessionFallback]);let I=It(u.options,n),w=Qt(I,u),W=I?.gateway==="ttadk"&&I.acceptsModel===!1,G=W?t("botOnboarding.modelTtadkCocoPlaceholder"):I?.gateway==="ttadk"?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",u.ttadkModelDefault):t("botDefaults.agentModelPlaceholder");function Y(P){let X=n;p(P),b(!0),P!==X&&(P!=="codex"||X!=="codex")&&(N(Rt({cliRuntime:null,cliPathOverride:null})),v(!0),h(null));let _=It(u.options,P),rt=_?.gateway==="ttadk",lt=rt&&_.acceptsModel!==!1;c(rt&&!lt?"":lt?at=>at.trim()?at:u.ttadkModelDefault:at=>at.trim()===u.ttadkModelDefault?"":at)}function B(P){N(X=>({...X,mode:P})),v(!0),h(null),T(null)}function y(P){N(X=>({...X,...P})),v(!0),h(null),T(null)}async function x(){T(null),h(null);let P;if(S&&(P=null),S&&n==="codex"&&d.mode==="custom"){let X=d.id.trim(),_=d.executable.trim(),rt=d.displayName.trim(),lt=d.packageName.trim();if(!X||!_){let at=t("botDefaults.runtimeRequired");T({text:at}),h({text:at});return}if(d.updateProvider==="npm"&&!lt){let at=t("botDefaults.runtimePackageRequired");T({text:at}),h({text:at});return}P={id:X,...rt?{displayName:rt}:{},executable:_,update:d.updateProvider==="npm"?{provider:"npm",packageName:lt}:{provider:d.updateProvider}}}m(!0);try{let X={cliId:n,model:g,...S?{cliRuntime:P}:{}},_=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,X);if(_.ok&&_.body.ok){let rt=Number.isInteger(_.body.closedMismatchedSessions)&&_.body.closedMismatchedSessions>0?_.body.closedMismatchedSessions:0,lt=rt>0?t("botDefaults.agentClosedCount",{count:rt}):"";if(T(_.body.availabilityWarning?{text:`\u26A0\uFE0F ${_.body.availabilityWarning}${lt?` \xB7 ${lt}`:""}`}:{text:`\u2713 ${lt||t("botDefaults.agentSaved")}`,ok:!0}),i(o.larkAppId,{cliId:_.body.cliId,cliRuntime:_.body.cliRuntime===void 0?S?P??null:o.cliRuntime??null:_.body.cliRuntime,cliPathOverride:_.body.cliPathOverride===void 0?S?null:o.cliPathOverride??null:_.body.cliPathOverride,wrapperCli:_.body.wrapperCli??null,model:_.body.model??"",agentSelectionKey:_.body.selectionKey??n}),v(!1),P){let at=_.body.runtimeProbe;at&&typeof at.version=="string"?h({text:t("botDefaults.runtimeProbeOk",{version:at.version,provider:typeof at.updateProvider=="string"?at.updateProvider:d.updateProvider}),ok:!0}):h({text:t("botDefaults.runtimeProbeMissing")})}}else{let lt=`\u2717 ${typeof _.body?.message=="string"&&_.body.message?_.body.message:q(_)}`;T({text:lt}),n==="codex"&&d.mode==="custom"&&h({text:lt})}}catch(X){let _=`\u2717 ${j(X)}`;T({text:_}),n==="codex"&&d.mode==="custom"&&h({text:_})}finally{m(!1)}}async function R(){if(o.cliId==="riff")return!0;try{let P=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,{cliId:"riff",model:""});return P.ok&&P.body.ok?(i(o.larkAppId,{cliId:P.body.cliId,cliRuntime:P.body.cliRuntime??null,wrapperCli:P.body.wrapperCli??null,model:P.body.model??"",agentSelectionKey:P.body.selectionKey??"riff"}),!0):(T({text:`\u2717 ${q(P)}`}),!1)}catch(P){return T({text:`\u2717 ${j(P)}`}),!1}}async function A(P){L(P),M(null),Q(!0);try{let X=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/skill-injection`,{skillInjection:P});X.ok&&X.body.ok?(M({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}),i(o.larkAppId,{skillInjection:X.body.skillInjection??null})):M({text:`\u2717 ${q(X)}`})}catch(X){M({text:`\u2717 ${j(X)}`})}finally{Q(!1)}}let $=o.skillInjectionSupport==="dynamic"?"dynamic":o.skillInjectionSupport==="global"?"global":"none",E=n==="riff",et=n==="codex"&&(!o.wrapperCli||r),V=et&&d.mode!=="official",z=[...u.options].sort((P,X)=>P.label.localeCompare(X.label,"en",{sensitivity:"base"})).map(P=>({value:P.id,label:P.available===!1&&!(P.id==="codex"&&V)?t("botDefaults.agentMissingOption",{label:P.label,command:P.command??P.id}):`${P.label}\uFF08${P.id}\uFF09`})),st=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamic")}],tt=[{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")}],it=[{value:"auto",label:t("botDefaults.runtimeProviderAuto")},{value:"self",label:t("botDefaults.runtimeProviderSelf")},{value:"npm",label:t("botDefaults.runtimeProviderNpm")},{value:"none",label:t("botDefaults.runtimeProviderNone")}];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)(ot,{dataInput:"agentCliId",ariaLabel:t("botDefaults.agentCli"),value:n,disabled:D,options:z,searchable:!0,onChange:Y}),I?.available===!1&&!V?(0,e.jsx)("small",{className:"hint-warn",children:t("botDefaults.agentMissingHint",{command:I.command??n})}):null]})}),et?(0,e.jsxs)("div",{className:"bd-codex-runtime","data-codex-runtime":"",children:[(0,e.jsx)("div",{className:"bd-runtime-heading",children:(0,e.jsx)(O,{help:t("botDefaults.runtimeHelp"),children:t("botDefaults.runtimeTitle")})}),(0,e.jsxs)("div",{className:"bd-runtime-mode",role:"group","aria-label":t("botDefaults.runtimeTitle"),children:[(0,e.jsx)("button",{type:"button","data-action":"runtime-official","aria-pressed":d.mode==="official",disabled:D,onClick:()=>B("official"),children:t("botDefaults.runtimeOfficial")}),(0,e.jsx)("button",{type:"button","data-action":"runtime-custom","aria-pressed":d.mode==="custom",disabled:D,onClick:()=>B("custom"),children:t("botDefaults.runtimeCustom")})]}),(0,e.jsx)("input",{type:"hidden","data-input":"agentRuntimeMode",value:d.mode,readOnly:!0}),(0,e.jsx)("p",{className:"bd-runtime-note",children:t(d.mode==="official"?"botDefaults.runtimeOfficialNote":d.mode==="legacy"?"botDefaults.runtimeLegacyNote":"botDefaults.runtimeCustomNote")}),d.mode==="legacy"?(0,e.jsx)("div",{className:"bd-runtime-fields","data-runtime-legacy":"",children:(0,e.jsxs)("label",{className:"bd-runtime-wide",children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeLegacyPath")}),(0,e.jsx)("input",{type:"text",value:d.legacyPath,readOnly:!0,"aria-readonly":"true","data-input":"agentRuntimeLegacyPath"})]})}):null,d.mode==="custom"?(0,e.jsxs)("div",{className:"bd-runtime-fields",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{help:t("botDefaults.runtimeIdHelp"),children:t("botDefaults.runtimeId")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeId",value:d.id,disabled:D,autoComplete:"off",onChange:P=>y({id:P.currentTarget.value})})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeDisplayName")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeDisplayName",placeholder:t("botDefaults.runtimeDisplayNamePlaceholder"),value:d.displayName,disabled:D,autoComplete:"off",onChange:P=>y({displayName:P.currentTarget.value})})]}),(0,e.jsxs)("label",{className:"bd-runtime-wide",children:[(0,e.jsx)(O,{help:t("botDefaults.runtimeExecutableHelp"),children:t("botDefaults.runtimeExecutable")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeExecutable",value:d.executable,disabled:D,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:P=>y({executable:P.currentTarget.value})})]}),(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeUpdateProvider")}),(0,e.jsx)(ot,{dataInput:"agentRuntimeUpdateProvider",ariaLabel:t("botDefaults.runtimeUpdateProvider"),value:d.updateProvider,disabled:D,options:it,onChange:P=>y({updateProvider:P})})]}),d.updateProvider==="npm"?(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{help:t("botDefaults.runtimePackageHelp"),children:t("botDefaults.runtimePackageName")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimePackageName",value:d.packageName,disabled:D,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:P=>y({packageName:P.currentTarget.value})})]}):null]}):null,(0,e.jsx)(J,{status:k,attr:{"data-runtime-status":""}})]}):null,!E&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{help:t("botDefaults.agentHelp"),children:t("botDefaults.agentModel")}),(0,e.jsx)("input",{type:"text","data-input":"agentModel",list:`agent-model-suggestions-${o.larkAppId}`,placeholder:G,value:g,disabled:D||W,onChange:P=>c(P.currentTarget.value)}),(0,e.jsx)("datalist",{id:`agent-model-suggestions-${o.larkAppId}`,children:w.map(P=>(0,e.jsx)("option",{value:P},P))})]})}),E&&(0,e.jsx)(oa,{bot:o,patchBot:i,persistCliSelection:R}),!E&&$==="dynamic"?(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.skillInjectionHelpDynamic"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(ot,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:"dynamic",disabled:!0,options:st,onChange:()=>{}})]})}):!E&&$==="global"?(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.skillInjectionHelp"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(ot,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:U,disabled:Z,options:tt,onChange:P=>{A(P)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:F,attr:{"data-skill-injection-status":""}})})]}):null,!E&&(0,e.jsxs)("div",{className:"actions bd-section-actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-agent",disabled:D,onClick:()=>{x()},children:t("botDefaults.agentSave")}),(0,e.jsx)(J,{status:C,attr:{"data-agent-status":""}})]})]})}function oe(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 Ae(a){let t=H(),{bot:o,patchBot:u}=a,i=se(o),[l,f]=(0,s.useState)(i.mode),[n,p]=(0,s.useState)(i.workingDir),[r,b]=(0,s.useState)(o.defaultWorkingDirAutoWorktree===!0),[g,c]=(0,s.useState)(null),[d,N]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let k=se(o);f(k.mode),p(k.workingDir),b(o.defaultWorkingDirAutoWorktree===!0)},[o.defaultOncall?.enabled,o.defaultOncall?.workingDir,o.defaultWorkingDir,o.defaultWorkingDirAutoWorktree]);async function S(){c(null);let k=n.trim();if(l!=="off"&&!k){c({text:t("botDefaults.required")});return}let h=l==="default"&&r;N(!0);try{let C=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/working-dir-mode`,{mode:l,workingDir:k,autoWorktree:h});if(C.ok&&C.body.ok){let T=C.body.resolvedPath?` \u2192 ${C.body.resolvedPath}`:"";c({text:`\u2713 ${t("botDefaults.workingDirSaved")}${T}`,ok:!0}),u(o.larkAppId,{defaultOncall:C.body.defaultOncall??o.defaultOncall,defaultWorkingDir:C.body.defaultWorkingDir??null,defaultWorkingDirAutoWorktree:C.body.defaultWorkingDirAutoWorktree===!0})}else c({text:`\u2717 ${q(C)}`})}catch(C){c({text:`\u2717 ${j(C)}`})}finally{N(!1)}}let v=[{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)(O,{help:t("botDefaults.workingDirModeHelp"),children:t("botDefaults.workingDirMode")}),(0,e.jsx)(ot,{dataInput:"workingDirMode",ariaLabel:t("botDefaults.workingDirMode"),value:l,disabled:d,options:v,onChange:k=>f(k)})]})}),(0,e.jsx)("div",{className:"bd-row","data-wd-dir-row":!0,hidden:l==="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:n,disabled:d,onChange:k=>p(k.currentTarget.value)})]})}),(0,e.jsxs)("label",{className:"toggle-row","data-wd-worktree-row":!0,hidden:l!=="default",children:[(0,e.jsx)("input",{type:"checkbox","data-input":"autoWorktree",checked:r,disabled:d,onChange:k=>b(k.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)(O,{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:d,onClick:()=>{S()},children:t("botDefaults.save")}),(0,e.jsx)(J,{status:g,attr:{"data-status":""}})]}),(0,e.jsx)(Oe,{bot:o,putCardPref:a.putCardPref})]})}function se(a){let t=a.defaultOncall??{enabled:!1,workingDir:""};return{mode:t.enabled?"oncall":a.defaultWorkingDir?"default":"off",workingDir:a.defaultWorkingDir||t.workingDir||""}}function Oe(a){let t=H(),{bot:o,putCardPref:u}=a,[i,l]=(0,s.useState)(o.autoStartOnGroupJoin===!0),[f,n]=(0,s.useState)(o.autoStartOnNewTopic===!0),[p,r]=(0,s.useState)(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:""),[b,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(null);(0,s.useEffect)(()=>{l(o.autoStartOnGroupJoin===!0),n(o.autoStartOnNewTopic===!0),r(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:"")},[o.autoStartOnGroupJoin,o.autoStartOnGroupJoinPrompt,o.autoStartOnNewTopic]);async function N(S,v){d(v),g(null);try{let k=await u(S);g(k.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${q(k)}`})}catch(k){g({text:`\u2717 ${j(k)}`})}finally{d(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)(nt,{checked:i,disabled:c==="join",dataAction:"toggle-auto-join",title:t("botDefaults.autoStartJoin"),help:t("botDefaults.autoStartJoinHelp"),onChange:S=>{l(S),N({autoStartOnGroupJoin:S},"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:p,onChange:S=>r(S.currentTarget.value)})]})}),(0,e.jsx)(nt,{checked:f,disabled:c==="topic",dataAction:"toggle-auto-topic",title:t("botDefaults.autoStartTopic"),help:t("botDefaults.autoStartTopicHelp"),onChange:S=>{n(S),N({autoStartOnNewTopic:S},"topic")}}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-auto-join-prompt",disabled:c==="prompt",onClick:()=>{N({autoStartOnGroupJoinPrompt:p},"prompt")},children:t("botDefaults.autoStartJoinPromptSave")}),(0,e.jsx)(J,{status:b,attr:{"data-auto-start-status":""}})]})]})}function $e(a){let t=H(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(o.sandbox===!0),[f,n]=(0,s.useState)(null),[p,r]=(0,s.useState)(!1);(0,s.useEffect)(()=>l(o.sandbox===!0),[o.sandbox]);async function b(c){l(c),n(null),r(!0);try{let d=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox`,{enabled:c});d.ok&&d.body.ok?(n({text:`\u2713 ${t("botDefaults.sandboxSaved")}`,ok:!0}),u(o.larkAppId,{sandbox:d.body.sandbox===!0})):(n({text:`\u2717 ${q(d)}`}),l(!c))}catch(d){n({text:`\u2717 ${j(d)}`}),l(!c)}finally{r(!1)}}let g=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)(nt,{checked:i,disabled:p,dataAction:"toggle-sandbox",title:t("botDefaults.sandboxToggle"),help:t("botDefaults.sandboxHelp"),onChange:c=>{b(c)}}),(0,e.jsx)("p",{className:"bd-section-note","data-read-iso-capability":g?"yes":"no",children:g?`\uFF0B ${t("botDefaults.sandboxReadIsoOn")}`:t("botDefaults.sandboxReadIsoOff")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:f,attr:{"data-sandbox-status":""}})})]})}var ne={readWrite:0,readOnly:1,deny:2};function le(a,t,o){let u=b=>b==="~"||b.startsWith("~/")?o.replace(/\/+$/,"")+b.slice(1):b,i=b=>u(b).replace(/\/+$/,"")||"/",l=i(t),f=(b,g)=>{let c=i(b),d=i(g);return c===d||d.startsWith(c==="/"?"/":c+"/")},n=b=>i(b)==="/"?0:i(b).split("/").filter(Boolean).length,p,r=(b,g)=>{if(!f(g,l))return;let c=n(g);(!p||c>p.ruleDepth||c===p.ruleDepth&&ne[b]>ne[p.access])&&(p={access:b,ruleDepth:c,rule:g})};for(let b of a.readWrite)r("readWrite",b);for(let b of a.readOnly)r("readOnly",b);for(let b of a.deny)r("deny",b);return p?{access:p.access,rule:p.rule}:{access:"none"}}function ce(){return{readWrite:[],readOnly:[],deny:[]}}function gt(a){return a?{readWrite:[...a.readWrite??[]],readOnly:[...a.readOnly??[]],deny:[...a.deny??[]]}:ce()}function Le(a,t){let o=u=>[...u].sort().join(`
3
- `);return o(a.readWrite)===o(t.readWrite)&&o(a.readOnly)===o(t.readOnly)&&o(a.deny)===o(t.deny)}function wt(a){let t=[];for(let o of a.readWrite)t.push(`rw ${o}`);for(let o of a.readOnly)t.push(`ro ${o}`);for(let o of a.deny)t.push(`deny ${o}`);return t.join(`
4
- `)}function Ue(a){let t=ce();for(let o of a.split(`
5
- `)){let u=o.trim();if(!u||u.startsWith("#"))continue;let i=/^(\S+)\s+(.+)$/.exec(u);if(!i)continue;let l=i[1].toLowerCase(),f=i[2].trim();l==="rw"||l==="readwrite"||l==="rw:"?t.readWrite.push(f):l==="ro"||l==="readonly"||l==="ro:"?t.readOnly.push(f):(l==="deny"||l==="-"||l==="deny:")&&t.deny.push(f)}return t}function Fe(a){let t=H(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(()=>gt(o.sandboxPaths)),[f,n]=(0,s.useState)(()=>wt(gt(o.sandboxPaths))),[p,r]=(0,s.useState)(!1),[b,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1),[N,S]=(0,s.useState)(""),[v,k]=(0,s.useState)({}),[h,C]=(0,s.useState)(new Set),[T,D]=(0,s.useState)([]),[m,U]=(0,s.useState)("~"),L=(0,s.useMemo)(()=>gt(o.sandboxPaths),[o.sandboxPaths]);(0,s.useEffect)(()=>{l(gt(o.sandboxPaths)),n(wt(gt(o.sandboxPaths)))},[o.sandboxPaths]);let F=!Le(i,L),M=(0,s.useCallback)(async B=>{try{let y=B?`?path=${encodeURIComponent(B)}`:"",R=await(await fetch(`/api/fs/list${y}`)).json();if(!R.ok)return;B?k(A=>({...A,[B]:R.entries.map($=>({name:$.name,path:$.path}))})):(D(R.entries.map(A=>({name:A.name,path:A.path}))),typeof R.home=="string"&&R.home.startsWith("/")&&U(R.home))}catch{}},[]);(0,s.useEffect)(()=>{!p&&T.length===0&&M("")},[p,T.length,M]);let Z=(0,s.useCallback)(B=>{let y=B.replace(/\/+$/,"")||"/";if(i.readWrite.some(x=>(x.replace(/\/+$/,"")||"/")===y))return"readWrite";if(i.readOnly.some(x=>(x.replace(/\/+$/,"")||"/")===y))return"readOnly";if(i.deny.some(x=>(x.replace(/\/+$/,"")||"/")===y))return"deny"},[i]),Q=(0,s.useCallback)(B=>{g(null);let y=B.replace(/\/+$/,"")||"/",x=Z(B),R=x===void 0?"readWrite":x==="readWrite"?"readOnly":x==="readOnly"?"deny":void 0;l(A=>{let $=et=>et.filter(V=>(V.replace(/\/+$/,"")||"/")!==y),E={readWrite:$(A.readWrite),readOnly:$(A.readOnly),deny:$(A.deny)};return R&&E[R].push(B),n(wt(E)),E})},[Z]);function I(B){n(B),l(Ue(B)),g(null)}async function w(){d(!0),g(null);try{let B=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox-paths`,i);B.ok&&B.body.ok?(g({text:`\u2713 ${t("botDefaults.sbxPathsSaved")}`,ok:!0}),u(o.larkAppId,{sandboxPaths:B.body.sandboxPaths??{readWrite:[],readOnly:[],deny:[]}})):g({text:`\u2717 ${q(B)}`})}catch(B){g({text:`\u2717 ${j(B)}`})}finally{d(!1)}}let W=B=>t(B==="readWrite"?"botDefaults.sbxRw":B==="readOnly"?"botDefaults.sbxRo":B==="deny"?"botDefaults.sbxDeny":"botDefaults.sbxNone");function G(B){let{name:y,path:x,depth:R}=B,A=h.has(x),$=Z(x),E=le(i,x,m),et=v[x];return(0,e.jsxs)("div",{className:"bd-sbx-node",children:[(0,e.jsxs)("div",{className:"bd-sbx-row",style:{paddingLeft:R*16},children:[(0,e.jsx)("span",{className:"bd-sbx-twisty",onClick:()=>{C(V=>{let z=new Set(V);return z.has(x)?z.delete(x):z.add(x),z}),et||M(x)},children:A?"\u25BE":"\u25B8"}),(0,e.jsx)("span",{className:"bd-sbx-name",title:x,children:y}),(0,e.jsx)("button",{type:"button",className:`bd-sbx-state bd-sbx-state-${$??"inherit"}`,"data-action":"cycle-sandbox-path","data-path":x,title:$?void 0:`${t("botDefaults.sbxInherit")}: ${W(E.access)}`,onClick:()=>Q(x),children:$?W($):`\u21B3 ${W(E.access)}`})]}),A&&(0,e.jsxs)("div",{className:"bd-sbx-kids",children:[et?.map(V=>(0,e.jsx)(G,{name:V.name,path:V.path,depth:R+1},V.path)),et&&et.length===0&&(0,e.jsx)("div",{className:"bd-sbx-empty",style:{paddingLeft:(R+1)*16+20},children:t("botDefaults.sbxNoSubdirs")})]})]})}let Y=N.trim()?le(i,N.trim(),m):null;return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSandboxPaths")}),(0,e.jsx)("p",{className:"bd-section-note",children:t("botDefaults.sbxPathsHelp")}),(0,e.jsx)("div",{className:"actions",style:{gap:8,flexWrap:"wrap"},children:(0,e.jsx)("button",{type:"button",className:"bd-btn",onClick:()=>r(B=>!B),children:t(p?"botDefaults.sbxPathsTreeMode":"botDefaults.sbxPathsTextMode")})}),p?(0,e.jsx)("textarea",{className:"bd-sbx-text","data-field":"sandbox-paths-text",rows:8,value:f,spellCheck:!1,placeholder:`rw ~/my-data
6
- ro ~/reference-repos
7
- deny ~/my-data/secrets`,onChange:B=>I(B.target.value)}):(0,e.jsx)("div",{className:"bd-sbx-tree","data-field":"sandbox-paths-tree",children:T.map(B=>(0,e.jsx)(G,{name:B.name,path:B.path,depth:0},B.path))}),(0,e.jsxs)("div",{className:"bd-sbx-tester",children:[(0,e.jsx)("input",{className:"bd-sbx-test-input","data-field":"sandbox-path-test",placeholder:t("botDefaults.sbxTestPlaceholder"),value:N,onChange:B=>S(B.target.value)}),Y&&(0,e.jsxs)("span",{className:`bd-sbx-test-out bd-sbx-state-${Y.access}`,"data-test-access":Y.access,children:[W(Y.access),Y.rule?` \u2190 ${Y.rule}`:""]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"bd-btn bd-btn-primary","data-action":"save-sandbox-paths",disabled:c||!F,onClick:()=>{w()},children:t("botDefaults.sbxPathsSave")}),(0,e.jsx)(J,{status:b,attr:{"data-sandbox-paths-status":""}})]})]})}var Ge=[{value:"",labelKey:"botDefaults.backendAuto"},{value:"tmux",labelKey:"botDefaults.backendTmux"},{value:"herdr",labelKey:"botDefaults.backendHerdr"},{value:"zellij",labelKey:"botDefaults.backendZellij"},{value:"zmx",labelKey:"botDefaults.backendZmx"},{value:"pty",labelKey:"botDefaults.backendPty"}];function Ee(a){let t=H(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(typeof o.backendType=="string"?o.backendType:""),[f,n]=(0,s.useState)(null),[p,r]=(0,s.useState)(!1);(0,s.useEffect)(()=>l(typeof o.backendType=="string"?o.backendType:""),[o.backendType]);let b=(0,s.useMemo)(()=>Ge.map(c=>({value:c.value,label:t(c.labelKey)})),[t]);async function g(c){let d=i;l(c),n(null),r(!0);try{let N=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/backend-type`,{backendType:c});N.ok&&N.body.ok?(n({text:`\u2713 ${t("botDefaults.backendSaved")}`,ok:!0}),u(o.larkAppId,{backendType:typeof N.body.backendType=="string"?N.body.backendType:null})):(n({text:`\u2717 ${q(N)}`}),l(d))}catch(N){n({text:`\u2717 ${j(N)}`}),l(d)}finally{r(!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)(O,{help:t("botDefaults.backendHelp"),children:t("botDefaults.backendLabel")}),(0,e.jsx)(ot,{dataInput:"backendType",ariaLabel:t("botDefaults.backendLabel"),value:i,disabled:p,options:b,onChange:c=>{g(c)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:f,attr:{"data-backend-status":""}})})]})]})}function je(a){let t=H(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(typeof o.teamRole=="string"),[f,n]=(0,s.useState)(typeof o.teamRole=="string"?o.teamRole:""),[p,r]=(0,s.useState)("every"),[b,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let v=!0,k=`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`;return typeof o.teamRole=="string"?(l(!0),n(o.teamRole),()=>{v=!1}):(g(null),l(!1),n(""),(async()=>{try{let h=await fetch(k),C=await h.json().catch(()=>({}));if(!v)return;if(h.ok&&C.ok){let T=C.role??"";n(T),r(C.injectMode==="once"?"once":"every"),l(!0),u(o.larkAppId,{teamRole:T})}else g({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${C.error??h.status}`})}catch(h){v&&g({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${j(h)}`})}})(),()=>{v=!1})},[o.larkAppId,o.teamRole,u,t]),(0,s.useEffect)(()=>{let v=!0;return typeof o.teamRole!="string"?()=>{v=!1}:((async()=>{try{let k=await fetch(`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`),h=await k.json().catch(()=>({}));v&&k.ok&&h.ok&&r(h.injectMode==="once"?"once":"every")}catch{}})(),()=>{v=!1})},[o.larkAppId]);async function N(v,k,h=p){if(i){g(null),d(!0);try{let C=await K("PUT",`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`,{role:v,injectMode:h});if(C.ok&&C.body.ok){let T=v.trim();n(T),(C.body.injectMode==="once"||C.body.injectMode==="every")&&r(C.body.injectMode),u(o.larkAppId,{teamRole:T}),g({text:`\u2713 ${t(k?"botDefaults.roleDeleted":"botDefaults.roleSaved")}`,ok:!0})}else g({text:`\u2717 ${q(C)}`})}catch(C){g({text:`\u2717 ${j(C)}`})}finally{d(!1)}}}let S=[{value:"every",label:t("roles.injectModeEvery")},{value:"once",label:t("roles.injectModeOnce")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(O,{help:t("botDefaults.roleHelp"),children:t("botDefaults.sectionRole")})}),(0,e.jsx)("textarea",{"data-input":"teamRole",rows:6,placeholder:t("botDefaults.rolePlaceholder"),disabled:!i||c,value:f,onChange:v=>n(v.currentTarget.value)}),(0,e.jsxs)("div",{className:"bd-role-inject",children:[(0,e.jsx)("span",{className:"bd-subsection-title",children:(0,e.jsx)(O,{help:t("roles.injectModeHint"),children:t("roles.injectModeLabel")})}),(0,e.jsx)(Tt,{id:`bd-role-inject-${o.larkAppId}`,className:"bd-role-inject-menu",ariaLabel:t("roles.injectModeLabel"),disabled:!i||c,label:Nt(S,p),value:p,options:S,onChange:v=>{let k=v==="once"?"once":"every";r(k),N(f,f.trim()==="",k)}})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-role",disabled:!i||c,onClick:()=>{N(f,f.trim()==="")},children:t("botDefaults.roleSave")}),(0,e.jsx)(J,{status:b,attr:{"data-role-status":""}})]}),(0,e.jsx)(He,{appId:o.larkAppId})]})}function He(a){let t=H(),[o,u]=(0,s.useState)({loaded:!1,loading:!0,items:[]});(0,s.useEffect)(()=>{let f=!0;return u({loaded:!1,loading:!0,items:[]}),(async()=>{try{let n=await fetch("/api/role-profiles"),p=await n.json().catch(()=>({}));if(!f)return;if(!n.ok)throw new Error(p?.error??String(n.status));let b=(Array.isArray(p.profiles)?p.profiles:[]).filter(g=>(g.botEntries??[]).some(c=>c?.larkAppId===a.appId&&c?.hasEntry)).map(g=>({profileId:String(g.profileId)}));u({loaded:!0,loading:!1,items:b})}catch(n){f&&u({loaded:!0,loading:!1,error:j(n),items:[]})}})(),()=>{f=!1}},[a.appId]);async function i(f){let n=o.items.find(p=>p.profileId===f);if(!(!n||n.loaded||n.loading)){u(p=>({...p,items:p.items.map(r=>r.profileId===f?{...r,loading:!0}:r)}));try{let p=await fetch(`/api/role-profiles/${encodeURIComponent(f)}/${encodeURIComponent(a.appId)}`),r=await p.json().catch(()=>({}));if(!p.ok)throw new Error(r?.error??String(p.status));u(b=>({...b,items:b.items.map(g=>g.profileId===f?{...g,loading:!1,loaded:!0,content:r?.hasEntry?String(r.content??""):""}:g)}))}catch(p){u(r=>({...r,items:r.items.map(b=>b.profileId===f?{...b,loading:!1,error:j(p)}:b)}))}}}let l;return o.loading?l=(0,e.jsx)(vt,{label:t("common.loading"),compact:!0}):o.error?l=(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRolesLoadFailed",{error:o.error})}):o.items.length===0?l=(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRolesEmpty")}):l=o.items.map(f=>(0,e.jsxs)("details",{className:"bd-profile-role-entry","data-profile-id":f.profileId,onToggle:n=>{n.currentTarget.open&&i(f.profileId)},children:[(0,e.jsx)("summary",{children:(0,e.jsx)("span",{className:"bd-profile-role-id",children:f.profileId})}),(0,e.jsx)("div",{className:"bd-profile-role-content","data-profile-role-body":f.profileId,children:f.loading?(0,e.jsx)(vt,{label:t("common.loading"),compact:!0}):f.error?(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRoleDetailLoadFailed",{error:f.error})}):f.loaded?(0,e.jsx)("pre",{children:f.content??""}):(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRoleClickToLoad")})})]},f.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)(O,{help:t("botDefaults.profileRolesHelp"),children:t("botDefaults.profileRoles")})}),(0,e.jsx)("div",{className:"bd-profile-role-list","data-profile-role-list":!0,children:l})]})}function We(a){let t=H(),{bot:o,putCardPref:u}=a,[i,l]=(0,s.useState)(o.usageDisplay??"streaming"),[f,n]=(0,s.useState)(o.disableStreamingCard===!0),[p,r]=(0,s.useState)(o.silentTurnReactions===!0),[b,g]=(0,s.useState)(o.writableTerminalLinkInCard===!0),[c,d]=(0,s.useState)(o.privateCard===!0),[N,S]=(0,s.useState)(null),[v,k]=(0,s.useState)(null);(0,s.useEffect)(()=>{l(o.usageDisplay??"streaming"),n(o.disableStreamingCard===!0),r(o.silentTurnReactions===!0),g(o.writableTerminalLinkInCard===!0),d(o.privateCard===!0)},[o.disableStreamingCard,o.privateCard,o.usageDisplay,o.silentTurnReactions,o.writableTerminalLinkInCard]);async function h(T,D,m){k(D),S(null);try{let U=await u(T);U.ok?S({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(m?.(),S({text:`\u2717 ${q(U)}`}))}catch(U){m?.(),S({text:`\u2717 ${j(U)}`})}finally{k(null)}}let C=[{value:"streaming",label:t("botDefaults.usageDisplayStreaming")},{value:"footer",label:t("botDefaults.usageDisplayFooter")},{value:"off",label:t("botDefaults.usageDisplayOff")}];return(0,e.jsxs)("section",{className:"bd-section","aria-busy":v!==null,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCard")}),(0,e.jsxs)("div",{className:"bd-card-settings",children:[(0,e.jsxs)("section",{className:"bd-card-setting-group","data-card-feedback-group":!0,children:[(0,e.jsx)("h4",{className:"bd-card-setting-heading",children:t("botDefaults.cardFeedbackGroup")}),(0,e.jsx)(nt,{className:"bd-card-primary-toggle",checked:!f,disabled:v!==null,dataAction:"toggle-disable-streaming",title:t("botDefaults.autoStreaming"),description:t("botDefaults.autoStreamingDescription"),help:t("botDefaults.autoStreamingHelp"),onChange:T=>{let D=f,m=!T;n(m),h({disableStreamingCard:m},"streaming",()=>n(D))}}),(0,e.jsxs)("div",{className:"bd-card-dependent","data-card-off-options":!0,hidden:!f,children:[(0,e.jsx)(nt,{checked:!p,disabled:v!==null,dataAction:"toggle-silent-reactions",title:t("botDefaults.silentTurnReactions"),description:t("botDefaults.silentTurnReactionsDescription"),help:t("botDefaults.silentTurnReactionsHelp"),onChange:T=>{let D=p,m=!T;r(m),h({silentTurnReactions:m},"silent",()=>r(D))}}),(0,e.jsx)("p",{role:"status","data-card-pref-moot":!0,className:"bd-card-mode-note",children:t("botDefaults.manualCardHint")})]})]}),(0,e.jsxs)("section",{className:"bd-card-setting-group","data-card-content-group":!0,children:[(0,e.jsx)("h4",{className:"bd-card-setting-heading",children:t("botDefaults.cardContentGroup")}),o.usageSupported===!0&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.usageDisplayHelp"),children:t("botDefaults.usageDisplay")}),(0,e.jsx)(ot,{dataInput:"usageDisplay",ariaLabel:t("botDefaults.usageDisplay"),value:i,disabled:v!==null,options:C,onChange:T=>{let D=i;l(T),h({usageDisplay:T},"usage",()=>l(D))}})]})}),(0,e.jsx)("div",{className:"bd-card-control-list",children:(0,e.jsx)(nt,{checked:b,disabled:v!==null,dataAction:"toggle-writable-link",title:t("botDefaults.writableLink"),description:t("botDefaults.writableLinkDescription"),help:t("botDefaults.writableLinkHelp"),onChange:T=>{let D=b;g(T),h({writableTerminalLinkInCard:T},"writable",()=>g(D))}})})]}),(0,e.jsxs)("section",{className:"bd-card-setting-group","data-card-manual-group":!0,children:[(0,e.jsx)("h4",{className:"bd-card-setting-heading",children:t("botDefaults.cardManualGroup")}),(0,e.jsx)("p",{className:"bd-card-setting-copy",children:t("botDefaults.manualCardIntro")}),(0,e.jsx)("div",{className:"bd-card-control-list",children:(0,e.jsx)(nt,{checked:c,disabled:v!==null,dataAction:"toggle-private-card",title:t("botDefaults.privateCard"),description:t("botDefaults.privateCardDescription"),help:t("botDefaults.privateCardHelp"),onChange:T=>{let D=c;d(T),h({privateCard:T},"private",()=>d(D))}})})]})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:N,attr:{"data-card-pref-status":""}})})]})}function _e(a){let t=H(),[o,u]=(0,s.useState)(a.bot.codexAppCleanInput===!0),[i,l]=(0,s.useState)(null),[f,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(a.bot.codexAppCleanInput===!0),[a.bot.codexAppCleanInput]);async function p(r){let b=o;u(r),n(!0),l(null);try{let g=await a.putCardPref({codexAppCleanInput:r});g.ok?l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(u(b),l({text:`\u2717 ${q(g)}`}))}catch(g){u(b),l({text:`\u2717 ${j(g)}`})}finally{n(!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)(nt,{checked:o,disabled:f,dataAction:"toggle-codex-app-clean-input",title:t("botDefaults.codexAppCleanInput"),help:t("botDefaults.codexAppCleanInputHelp"),onChange:r=>{p(r)}}),(0,e.jsx)("small",{className:"bd-section-note",children:t("botDefaults.codexAppCleanInputCompat")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:i,attr:{"data-codex-app-clean-input-status":""}})})]})}function qe(a){let t=H(),[o,u]=(0,s.useState)(a.bot.botToBotSameDir!==!1),[i,l]=(0,s.useState)(null),[f,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(a.bot.botToBotSameDir!==!1),[a.bot.botToBotSameDir]);async function p(r){u(r),n(!0),l(null);try{let b=await a.putCardPref({botToBotSameDir:r});l(b.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${q(b)}`})}catch(b){l({text:`\u2717 ${j(b)}`})}finally{n(!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)(nt,{checked:o,disabled:f,dataAction:"toggle-cross-bot-samedir",title:t("botDefaults.botToBotSameDir"),help:t("botDefaults.botToBotSameDirHelp"),onChange:r=>{p(r)}}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:i,attr:{"data-crossbot-status":""}})})]})}function Je(a){let t=H(),o=Bt(a.bot),[u,i]=(0,s.useState)(String(o.limit)),[l,f]=(0,s.useState)(String(o.sinceHours)),[n,p]=(0,s.useState)(a.bot.summaryMemory===!0),[r,b]=(0,s.useState)(Mt(a.bot)),[g,c]=(0,s.useState)(null),[d,N]=(0,s.useState)(null),[S,v]=(0,s.useState)(!1),[k,h]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let D=Bt(a.bot);i(String(D.limit)),f(String(D.sinceHours)),p(a.bot.summaryMemory===!0),b(Mt(a.bot))},[a.bot.summaryRange?.limit,a.bot.summaryRange?.sinceHours,a.bot.summaryMemory,a.bot.summaryMemoryPath]);async function C(){c(null);let D=ee(u,50),m=ee(l,24);if(D==null||m==null){c({text:`\u2717 ${t("botDefaults.summaryNumberInvalid")}`});return}v(!0);try{let U=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/summary-range`,{limit:D,sinceHours:m});if(U.ok&&U.body.ok){let L=U.body.summaryRange??{limit:D,sinceHours:m},F=Bt({...a.bot,summaryRange:L});i(String(F.limit)),f(String(F.sinceHours)),a.patchBot(a.bot.larkAppId,{summaryRange:L}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${q(U)}`})}catch(U){c({text:`\u2717 ${j(U)}`})}finally{v(!1)}}async function T(D,m=r){let U=n,L=r,F=be(m);p(D),b(F),N(null),h(!0);try{let M=await a.putCardPref({summaryMemory:D,summaryMemoryPath:F});if(M.ok&&M.body.ok){let Z=M.body.summaryMemory===!0,Q=Mt({...a.bot,summaryMemoryPath:M.body.summaryMemoryPath});p(Z),b(Q),a.patchBot(a.bot.larkAppId,{summaryMemory:Z,summaryMemoryPath:Q}),N({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else p(U),b(L),N({text:`\u2717 ${q(M)}`})}catch(M){p(U),b(L),N({text:`\u2717 ${j(M)}`})}finally{h(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(O,{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:u,disabled:S,onChange:D=>i(D.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:l,disabled:S,onChange:D=>f(D.currentTarget.value)})]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-trigger",disabled:S,onClick:()=>{C()},children:t("botDefaults.summarySave")}),(0,e.jsx)(J,{status:g,attr:{"data-summary-trigger-status":""}})]}),(0,e.jsx)(nt,{checked:n,disabled:k,title:t("botDefaults.summaryMemory"),help:t("botDefaults.summaryMemoryHelp"),onChange:D=>{T(D)}}),(0,e.jsx)("div",{className:"bd-row bd-summary-limits",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summaryMemoryPath")}),(0,e.jsx)("input",{type:"text","data-input":"summaryMemoryPath",value:r,disabled:k,onChange:D=>b(D.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-memory-path",disabled:k,onClick:()=>{T(n,r)},children:t("botDefaults.summaryMemoryPathSave")})}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:d,attr:{"data-summary-memory-status":""}})})]})}function be(a){return a.trim()||"summary.md"}function Mt(a){return be(typeof a.summaryMemoryPath=="string"?a.summaryMemoryPath:"")}function Bt(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 Qe(a){let t=H(),[o,u]=(0,s.useState)(a.bot.p2pMode==="thread"?"thread":"chat"),[i,l]=(0,s.useState)(ie(a.bot)),[f,n]=(0,s.useState)(re(a.bot)),[p,r]=(0,s.useState)(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only"),[b,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(null),[N,S]=(0,s.useState)(null),[v,k]=(0,s.useState)(null),[h,C]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(a.bot.p2pMode==="thread"?"thread":"chat"),l(ie(a.bot)),n(re(a.bot)),r(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only")},[a.bot.docSubscribeDefaultMode,a.bot.p2pMode,a.bot.regularGroupMentionMode,a.bot.regularGroupReplyMode]);async function T(M){let Z=M==="chat"?"chat":"thread";u(Z),g("p2p"),d(null);try{let Q=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/p2p-mode`,{p2pMode:Z});Q.ok&&Q.body.ok?(a.patchBot(a.bot.larkAppId,{p2pMode:Q.body.p2pMode==="thread"?"thread":"chat"}),d({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})):d({text:`\u2717 ${q(Q)}`})}catch(Q){d({text:`\u2717 ${j(Q)}`})}finally{g(null)}}async function D(M,Z,Q){g(M),Q(null);try{let I=await a.putCardPref(Z);Q(I.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${q(I)}`})}catch(I){Q({text:`\u2717 ${j(I)}`})}finally{g(null)}}let m=[{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")}],L=[{value:"always",label:t("botDefaults.mentionModeAlways")},{value:"topic",label:t("botDefaults.mentionModeTopic")},{value:"never",label:t("botDefaults.mentionModeNever")},{value:"ambient",label:t("botDefaults.mentionModeAmbient")}],F=[{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)(O,{help:t("botDefaults.p2pHelp"),children:t("botDefaults.p2pMode")}),(0,e.jsx)(ot,{dataInput:"p2pMode",ariaLabel:t("botDefaults.p2pMode"),value:o,disabled:b==="p2p",options:m,onChange:M=>{T(M)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:c,attr:{"data-p2p-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.regularGroupModeHelp"),children:t("botDefaults.regularGroupMode")}),(0,e.jsx)(ot,{dataInput:"regularGroupMode",ariaLabel:t("botDefaults.regularGroupMode"),value:i,disabled:b==="regular",options:U,onChange:M=>{l(M),D("regular",{regularGroupReplyMode:M},S)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:N,attr:{"data-regular-group-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.mentionModeHelp"),children:t("botDefaults.mentionMode")}),(0,e.jsx)(ot,{dataInput:"regularGroupMentionMode",ariaLabel:t("botDefaults.mentionMode"),value:f,disabled:b==="mention",options:L,onChange:M=>{n(M),D("mention",{regularGroupMentionMode:M},k)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:v,attr:{"data-mention-mode-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.docSubscribeModeHelp"),children:t("botDefaults.docSubscribeMode")}),(0,e.jsx)(ot,{dataInput:"docSubscribeDefaultMode",ariaLabel:t("botDefaults.docSubscribeMode"),value:p,disabled:b==="doc",options:F,onChange:M=>{r(M),D("doc",{docSubscribeDefaultMode:M},C)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:h,attr:{"data-doc-subscribe-mode-status":""}})})]})]})}function Ve(a){let t=H(),o=a.bot.substituteMode??null,[u,i]=(0,s.useState)(o?.enabled===!0);function l(y){switch(y){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[f,n]=(0,s.useState)(o?.disclosure==="none"?"none":"prefix"),[p,r]=(0,s.useState)(o?.replyMode==="quote"?"quote":"thread"),[b,g]=(0,s.useState)(o?.disableControlCard!==!0),[c,d]=(0,s.useState)(()=>dt(o?.chats)),[N,S]=(0,s.useState)(()=>dt(o?.excludedChats)),[v,k]=(0,s.useState)(o?.topicGroups!==!1),[h,C]=(0,s.useState)(o?.topicActiveSessionTrigger!==!1),[T,D]=(0,s.useState)(null),[m,U]=(0,s.useState)(!1),L=(0,s.useRef)(0),F=(0,s.useRef)(!1);function M(y){let x=ve(y);return{key:++L.current,idField:x,idValue:y?.[x]??"",name:y?.name??"",persisted:y?{...y}:{},originalIdField:y?x:void 0,resolution:y?.name||y?.avatarUrl?{ok:!0,name:y.name,avatarUrl:y.avatarUrl}:void 0}}let Z=(0,s.useRef)(new Map);async function Q(y){let x=(Z.current.get(y)??0)+1;Z.current.set(y,x);let R=()=>Z.current.get(y)===x;w(A=>A.map($=>$.key===y?{...$,resolving:!0}:$));try{let A=I.find(V=>V.key===y);if(!A)return;let $=A.idValue.trim();if(!$){w(V=>V.map(z=>z.key===y?{...z,resolving:!1,resolution:void 0}:z));return}let E={[A.idField]:$};A.name.trim()&&(E.name=A.name.trim());let et=await zt(a.bot.larkAppId,E);if(!R())return;w(V=>V.map(z=>{if(z.key!==y)return z;if(!et.ok)return{...z,resolving:!1,resolution:{ok:!1}};let st=et.resolution;if(st?.ok===!0){if(!st.openId)return{...z,resolving:!1,resolution:void 0};let tt={...z.persisted};return tt.openId=st.openId,st.name&&(tt.name=st.name),st.avatarUrl&&(tt.avatarUrl=st.avatarUrl),{...z,name:st.name??z.name,persisted:tt,resolving:!1,resolution:{ok:!0,name:st.name,avatarUrl:st.avatarUrl}}}return{...z,resolving:!1,resolution:{ok:!1,reason:st?.reason}}}))}catch{if(!R())return;w(A=>A.map($=>$.key===y?{...$,resolving:!1,resolution:{ok:!1}}:$))}}let[I,w]=(0,s.useState)(()=>{let y=o?.targets??[];return y.length?y.map(x=>M(x)):[M()]});(0,s.useEffect)(()=>{if(F.current){F.current=!1;return}let y=a.bot.substituteMode??null;i(y?.enabled===!0),n(y?.disclosure==="none"?"none":"prefix"),r(y?.replyMode==="quote"?"quote":"thread"),g(y?.disableControlCard!==!0),d(dt(y?.chats)),S(dt(y?.excludedChats)),k(y?.topicGroups!==!1),C(y?.topicActiveSessionTrigger!==!1);let x=y?.targets??[];w(x.length?x.map(R=>M(R)):[M()])},[a.bot.larkAppId,a.bot.substituteMode]);async function W(y){U(!0),D(null);try{let x=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/substitute-mode`,y);if(x.ok&&x.body.ok){let R=x.body.substituteMode&&typeof x.body.substituteMode=="object"?x.body.substituteMode:null,A=Array.isArray(x.body?.resolution)?x.body.resolution:[],$=A.filter(E=>E?.ok===!1).map(E=>String(E.input??"").trim()).filter(Boolean);if(i(R?.enabled===!0),n(R?.disclosure==="none"?"none":"prefix"),r(R?.replyMode==="quote"?"quote":"thread"),g(R?.disableControlCard!==!0),d(dt(R?.chats)),S(dt(R?.excludedChats)),k(R?.topicGroups!==!1),C(R?.topicActiveSessionTrigger!==!1),A.length)F.current=!0,w(E=>{let et=[...A];return E.map(V=>{let z=V.idValue.trim(),st=et.findIndex(it=>String(it.input??"").trim()===z);if(st<0)return V;let tt=et.splice(st,1)[0];if(tt?.ok===!0){let it={...V.persisted};return tt.openId&&(it.openId=tt.openId),V.idField==="email"&&(it.email=z),tt.name&&(it.name=tt.name),tt.avatarUrl&&(it.avatarUrl=tt.avatarUrl),{...V,name:tt.name??V.name,persisted:it,resolution:{ok:!0,name:tt.name,avatarUrl:tt.avatarUrl}}}return{...V,resolution:{ok:!1,reason:tt?.reason}}})});else{let E=R?.targets??[];w(E.length?E.map(et=>M(et)):[M()])}a.patchBot(a.bot.larkAppId,{substituteMode:R}),D($.length?{text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${$.join(", ")}`}:{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else{let R=Array.isArray(x.body?.resolution)?x.body.resolution.filter(A=>A?.ok===!1).map(A=>String(A.input??"").trim()).filter(Boolean):[];D({text:R.length?`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${R.join(", ")}`:`\u2717 ${q(x)}`})}}catch(x){D({text:`\u2717 ${j(x)}`})}finally{U(!1)}}function G(){let y=[],x=!1;for(let R of I){let A=De(R);if(!A){x||=!!R.name.trim();continue}y.push(A)}if(x||u&&y.length===0){D({text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}`});return}W({enabled:u,targets:y,disclosure:f,chats:ae(c),excludedChats:ae(N),replyMode:p,disableControlCard:!b,topicGroups:v,topicActiveSessionTrigger:h})}let Y=[{value:"prefix",label:t("botDefaults.substituteDisclosurePrefix")},{value:"none",label:t("botDefaults.substituteDisclosureNone")}],B=[{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)(nt,{checked:u,disabled:m,dataAction:"toggle-substitute-mode",title:t("botDefaults.substituteEnabled"),help:t("botDefaults.substituteHelp"),onChange:i}),(0,e.jsx)(nt,{checked:v,disabled:m,dataAction:"toggle-substitute-topic-groups",title:t("botDefaults.substituteTopicGroups"),help:t("botDefaults.substituteTopicGroupsHelp"),onChange:k}),(0,e.jsx)(nt,{checked:h,disabled:m||!v,dataAction:"toggle-substitute-topic-active",title:t("botDefaults.substituteTopicActive"),help:t("botDefaults.substituteTopicActiveHelp"),onChange:C}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{children:t("botDefaults.substituteDisclosure")}),(0,e.jsx)(ot,{dataInput:"substituteDisclosure",ariaLabel:t("botDefaults.substituteDisclosure"),value:f,disabled:m,options:Y,onChange:y=>n(y)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.substituteReplyModeHelp"),children:t("botDefaults.substituteReplyMode")}),(0,e.jsx)(ot,{dataInput:"substituteReplyMode",ariaLabel:t("botDefaults.substituteReplyMode"),value:p,disabled:m,options:B,onChange:y=>r(y)})]})}),(0,e.jsx)(nt,{checked:b,disabled:m,dataAction:"toggle-substitute-control-card",title:t("botDefaults.substituteControlCard"),help:t("botDefaults.substituteControlCardHelp"),onChange:g}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{help:t("botDefaults.substituteChatsHelp"),children:t("botDefaults.substituteChats")}),(0,e.jsx)("textarea",{"data-input":"substituteChats",rows:3,placeholder:t("botDefaults.substituteChatsPlaceholder"),value:c,disabled:m,onChange:y=>d(y.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{help:t("botDefaults.substituteExcludedChatsHelp"),children:t("botDefaults.substituteExcludedChats")}),(0,e.jsx)("textarea",{"data-input":"substituteExcludedChats",rows:3,placeholder:t("botDefaults.substituteExcludedChatsPlaceholder"),value:N,disabled:m,onChange:y=>S(y.currentTarget.value)})]})}),(0,e.jsxs)("div",{className:"bd-row bd-substitute-targets",children:[(0,e.jsx)(O,{help:t("botDefaults.substituteTargetsHelp"),children:t("botDefaults.substituteTargets")}),(0,e.jsxs)("div",{className:"bd-substitute-target-list","data-input":"substituteTargets",children:[I.map((y,x)=>(0,e.jsxs)("div",{className:"bd-substitute-target-row",children:[(0,e.jsx)(ot,{dataInput:`substituteTargetType-${y.key}`,className:"bd-substitute-target-type",ariaLabel:`${t("botDefaults.substituteTargetType")} ${x+1}`,value:y.idField,disabled:m,options:$t.map(R=>({value:R,label:t(`botDefaults.substituteTarget${R[0].toUpperCase()}${R.slice(1)}`)})),onChange:R=>{w(A=>A.map($=>$.key===y.key?{...$,idField:R,idValue:$.persisted[R]??"",resolution:void 0}:$))}}),(0,e.jsx)("input",{className:"bd-substitute-target-id",type:"text","data-input":`substituteTargetId-${y.key}`,"aria-label":`${t("botDefaults.substituteTargetType")} ${x+1}`,placeholder:t("botDefaults.substituteTargetIdPlaceholder"),value:y.idValue,disabled:m,onChange:R=>{let A=R.currentTarget.value;w($=>$.map(E=>E.key===y.key?{...E,idValue:A,resolution:void 0}:E))},onBlur:()=>{y.idValue.trim()&&Q(y.key)}}),(0,e.jsx)("div",{className:"bd-substitute-target-name",children:y.resolving?(0,e.jsx)("span",{className:"bd-substitute-target-resolving",children:t("botDefaults.substituteResolving")}):y.resolution?.ok===!0&&(y.name||y.resolution.avatarUrl)?(0,e.jsxs)(e.Fragment,{children:[y.resolution.avatarUrl?(0,e.jsx)(bt,{html:ct({name:y.resolution.name,avatarUrl:y.resolution.avatarUrl,size:"sm"})}):null,(0,e.jsx)("span",{className:"bd-substitute-target-name-chip","data-chip":`substituteTargetName-${y.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${x+1}`,children:y.name})]}):y.resolution?.ok===!1?(0,e.jsx)("span",{className:"bd-substitute-target-resolution-badge",children:l(y.resolution.reason)}):(0,e.jsx)("input",{type:"text","data-input":`substituteTargetName-${y.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${x+1}`,placeholder:t("botDefaults.substituteTargetNamePlaceholder"),value:y.name,disabled:m,onChange:R=>{let A=R.currentTarget.value;w($=>$.map(E=>E.key===y.key?{...E,name:A}:E))}})}),(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:m,onClick:()=>{w(R=>{let A=R.filter($=>$.key!==y.key);return A.length?A:[M()]})},children:(0,e.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]},y.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:m,onClick:()=>w(y=>[...y,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:m,onClick:G,children:t("botDefaults.substituteSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-substitute-mode",disabled:m,onClick:()=>{W({enabled:!1,targets:[]})},children:t("botDefaults.substituteOff")}),(0,e.jsx)(J,{status:T,attr:{"data-substitute-status":""}})]})]})}function ie(a){return a.regularGroupReplyMode==="chat"||a.regularGroupReplyMode==="new-topic"||a.regularGroupReplyMode==="shared"?a.regularGroupReplyMode:"chat-topic"}function re(a){return a.regularGroupMentionMode==="topic"||a.regularGroupMentionMode==="never"||a.regularGroupMentionMode==="ambient"?a.regularGroupMentionMode:"always"}function Ke(a){let t=H(),o=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null,u=Number.isFinite(a.bot.logicalSessionCount)?Number(a.bot.logicalSessionCount):0,i=Number.isFinite(a.bot.residentSessionCount)?Number(a.bot.residentSessionCount):0,l=Number.isFinite(a.bot.dormantSessionCount)?Number(a.bot.dormantSessionCount):0,[f,n]=(0,s.useState)(o),p=f??30,[r,b]=(0,s.useState)(o==null?"":String(o)),[g,c]=(0,s.useState)(null),[d,N]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let k=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null;n(k),b(k==null?"":String(k))},[a.bot.maxLiveWorkers]);async function S(k){c(null),N(!0);try{let h=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/max-live-workers`,{maxLiveWorkers:k});if(h.ok&&h.body.ok){let C=typeof h.body.maxLiveWorkers=="number"?h.body.maxLiveWorkers:null;n(C),b(C==null?"":String(C)),a.patchBot(a.bot.larkAppId,{maxLiveWorkers:C}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${q(h)}`})}catch(h){c({text:`\u2717 ${j(h)}`})}finally{N(!1)}}function v(){let k=At(r);if(k==="invalid"){c({text:`\u2717 ${t("botDefaults.maxLiveWorkersInvalid")}`});return}S(k)}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSessionCap")}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{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:r,disabled:d,onChange:k=>b(k.currentTarget.value)})]}),(0,e.jsx)("small",{"data-session-cap-state":!0,children:Se(f,t)}),(0,e.jsx)("small",{className:"bd-help bd-session-residency",children:t("botDefaults.maxLiveWorkersUsage",{resident:i,cap:p,dormant:l,logical:u})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-session-cap",disabled:d,onClick:v,children:t("botDefaults.maxLiveWorkersSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-session-cap",disabled:d,onClick:()=>{b(""),S(null)},children:t("botDefaults.maxLiveWorkersOff")}),(0,e.jsx)(J,{status:g,attr:{"data-session-cap-status":""}})]})]})}function ze(a){let t=H(),[o,u]=(0,s.useState)(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[i,l]=(0,s.useState)(null),[f,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[a.bot.startupCommands]);async function p(){l(null),n(!0);try{let r=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/startup-commands`,{startupCommands:o});if(r.ok&&r.body.ok){let b=typeof r.body.startupCommands=="string"?r.body.startupCommands:"";u(b),a.patchBot(a.bot.larkAppId,{startupCommands:b}),l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${q(r)}`})}catch(r){l({text:`\u2717 ${j(r)}`})}finally{n(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(O,{help:t("botDefaults.startupCommandsHelp"),children:t("botDefaults.sectionStartupCommands")})}),(0,e.jsx)("textarea",{"data-input":"startupCommands",rows:3,placeholder:t("botDefaults.startupCommandsPlaceholder"),value:o,disabled:f,onChange:r=>u(r.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-startup-commands",disabled:f,onClick:()=>{p()},children:t("botDefaults.startupCommandsSave")}),(0,e.jsx)(J,{status:i,attr:{"data-startup-commands-status":""}})]})]})}function Xe(a){let t=H(),[o,u]=(0,s.useState)(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:""),[i,l]=(0,s.useState)(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:""),[f,n]=(0,s.useState)(null),[p,r]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:"")},[a.bot.customPassthroughCommands]),(0,s.useEffect)(()=>{l(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:"")},[a.bot.canTalkDaemonCommands]);async function b(){n(null),r("passthrough");try{let c=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/custom-passthrough`,{customPassthroughCommands:o});if(c.ok&&c.body.ok){let d=typeof c.body.customPassthroughCommands=="string"?c.body.customPassthroughCommands:"";u(d),a.patchBot(a.bot.larkAppId,{customPassthroughCommands:d}),n({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else n({text:`\u2717 ${q(c)}`})}catch(c){n({text:`\u2717 ${j(c)}`})}finally{r(null)}}async function g(){n(null),r("cantalk");try{let c=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/cantalk-daemon-commands`,{canTalkDaemonCommands:i});if(c.ok&&c.body.ok){let d=typeof c.body.canTalkDaemonCommands=="string"?c.body.canTalkDaemonCommands:"";l(d),a.patchBot(a.bot.larkAppId,{canTalkDaemonCommands:d}),n({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else n({text:`\u2717 ${q(c)}`})}catch(c){n({text:`\u2717 ${j(c)}`})}finally{r(null)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(O,{help:t("botDefaults.sectionSlashCommandsHelp"),children:t("botDefaults.sectionSlashCommands")})}),(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(O,{help:t("botDefaults.customPassthroughHelp"),children:t("botDefaults.customPassthrough")})}),(0,e.jsx)("textarea",{"data-input":"customPassthroughCommands",rows:2,placeholder:t("botDefaults.customPassthroughPlaceholder"),value:o,disabled:p==="passthrough",onChange:c=>u(c.currentTarget.value)}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-custom-passthrough",disabled:p==="passthrough",onClick:()=>{b()},children:t("botDefaults.customPassthroughSave")})})]}),(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(O,{help:t("botDefaults.canTalkDaemonHelp"),children:t("botDefaults.canTalkDaemon")})}),(0,e.jsx)("textarea",{"data-input":"canTalkDaemonCommands",rows:2,placeholder:t("botDefaults.canTalkDaemonPlaceholder"),value:i,disabled:p==="cantalk",onChange:c=>l(c.currentTarget.value)}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-cantalk-daemon",disabled:p==="cantalk",onClick:()=>{g()},children:t("botDefaults.canTalkDaemonSave")})})]}),(0,e.jsx)(J,{status:f,attr:{"data-slash-commands-status":""}})]})}function Ze(a){let t=H(),[o,u]=(0,s.useState)(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[i,l]=(0,s.useState)(null),[f,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[a.bot.launchShell]);async function p(){l(null),n(!0);try{let r=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/launch-shell`,{launchShell:o});if(r.ok&&r.body.ok){let b=typeof r.body.launchShell=="string"?r.body.launchShell:"";u(b),a.patchBot(a.bot.larkAppId,{launchShell:b}),l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${q(r)}`})}catch(r){l({text:`\u2717 ${j(r)}`})}finally{n(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(O,{help:t("botDefaults.launchShellHelp"),children:t("botDefaults.sectionLaunchShell")})}),(0,e.jsx)("input",{type:"text","data-input":"launchShell",placeholder:t("botDefaults.launchShellPlaceholder"),value:o,disabled:f,onChange:r=>u(r.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-launch-shell",disabled:f,onClick:()=>{p()},children:t("botDefaults.launchShellSave")}),(0,e.jsx)(J,{status:i,attr:{"data-launch-shell-status":""}})]})]})}function Ye(a){let t=H(),[o,u]=(0,s.useState)(typeof a.bot.env=="string"?a.bot.env:""),[i,l]=(0,s.useState)(null),[f,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(typeof a.bot.env=="string"?a.bot.env:""),[a.bot.env]);async function p(){l(null),n(!0);try{let r=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/env`,{env:o});if(r.ok&&r.body.ok){let b=typeof r.body.env=="string"?r.body.env:"";u(b),a.patchBot(a.bot.larkAppId,{env:b}),l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${q(r)}`})}catch(r){l({text:`\u2717 ${j(r)}`})}finally{n(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(O,{help:t("botDefaults.envHelp"),children:t("botDefaults.sectionEnv")})}),(0,e.jsx)("textarea",{"data-input":"env",rows:5,placeholder:t("botDefaults.envPlaceholder"),value:o,disabled:f,onChange:r=>u(r.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-env",disabled:f,onClick:()=>{p()},children:t("botDefaults.envSave")}),(0,e.jsx)(J,{status:i,attr:{"data-env-status":""}})]})]})}var ta=["gpt-5.5","gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.4","gpt-5.4-pro"],ea=["","low","medium","high","xhigh"],aa=["boe","cn"];function oa(a){let t=H(),o=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{},[u,i]=(0,s.useState)(typeof o.baseUrl=="string"?o.baseUrl:""),[l,f]=(0,s.useState)(o.sandboxCluster==="cn"?"cn":"boe"),[n,p]=(0,s.useState)(typeof o.model=="string"?o.model:""),[r,b]=(0,s.useState)(typeof o.reasoningEffort=="string"?o.reasoningEffort:""),[g,c]=(0,s.useState)(typeof o.jwtEnv=="string"?o.jwtEnv:""),[d,N]=(0,s.useState)(typeof o.systemPrompt=="string"?o.systemPrompt:""),[S,v]=(0,s.useState)(Array.isArray(o.setupCommands)?o.setupCommands.join(`
8
- `):""),[k,h]=(0,s.useState)(null),[C,T]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let m=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{};i(typeof m.baseUrl=="string"?m.baseUrl:""),f(m.sandboxCluster==="cn"?"cn":"boe"),p(typeof m.model=="string"?m.model:""),b(typeof m.reasoningEffort=="string"?m.reasoningEffort:""),c(typeof m.jwtEnv=="string"?m.jwtEnv:""),N(typeof m.systemPrompt=="string"?m.systemPrompt:""),v(Array.isArray(m.setupCommands)?m.setupCommands.join(`
9
- `):"")},[a.bot.riff]);async function D(){h(null),T(!0);try{let m={};u.trim()&&(m.baseUrl=u.trim()),m.sandboxCluster=l,n.trim()&&(m.model=n.trim()),r&&(m.reasoningEffort=r),g.trim()&&(m.jwtEnv=g.trim()),d.trim()&&(m.systemPrompt=d.trim()),S.trim()&&(m.setupCommands=S.split(`
10
- `).map(F=>F.trim()).filter(Boolean));let U=Object.keys(m).length?JSON.stringify(m):"",L=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/riff`,{riff:U});if(L.ok&&L.body.ok){let F=typeof L.body.riff=="string"&&L.body.riff?JSON.parse(L.body.riff):null;if(a.patchBot(a.bot.larkAppId,{riff:F}),a.persistCliSelection&&!await a.persistCliSelection()){h({text:`\u2717 ${t("botDefaults.riffCliPersistFailed")}`});return}h({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else h({text:`\u2717 ${q(L)}`})}catch(m){h({text:`\u2717 ${j(m)}`})}finally{T(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(O,{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:u,disabled:C,onChange:m=>i(m.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)(O,{help:t("botDefaults.riffSandboxClusterHelp"),children:t("botDefaults.riffSandboxCluster")})}),(0,e.jsx)(ot,{dataInput:"riff-sandbox-cluster",ariaLabel:t("botDefaults.riffSandboxCluster"),value:l,disabled:C,options:aa.map(m=>({value:m,label:m.toUpperCase()})),onChange:m=>f(m)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(O,{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:n,disabled:C,onChange:m=>p(m.currentTarget.value)}),(0,e.jsx)("datalist",{id:`riff-model-suggestions-${a.bot.larkAppId}`,children:ta.map(m=>(0,e.jsx)("option",{value:m},m))})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:(0,e.jsx)(O,{help:t("botDefaults.riffReasoningEffortHelp"),children:t("botDefaults.riffReasoningEffort")})}),(0,e.jsx)(ot,{dataInput:"riff-reasoning-effort",ariaLabel:t("botDefaults.riffReasoningEffort"),value:r,disabled:C,options:ea.map(m=>({value:m,label:m===""?t("botDefaults.riffReasoningEffortDefault"):m})),onChange:m=>b(m)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(O,{help:t("botDefaults.riffJwtEnvHelp"),children:t("botDefaults.riffJwtEnv")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-jwt-env",placeholder:t("botDefaults.riffJwtEnvPlaceholder"),value:g,disabled:C,onChange:m=>c(m.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:d,disabled:C,onChange:m=>N(m.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:S,disabled:C,onChange:m=>v(m.currentTarget.value),rows:3})]})}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-riff",disabled:C,onClick:()=>{D()},children:t("botDefaults.riffSave")}),(0,e.jsx)(J,{status:k,attr:{"data-riff-status":""}})]})]})}function sa(a){let t=H(),o=a.bot.brandLabel??null,[u,i]=(0,s.useState)(o),[l,f]=(0,s.useState)(o??""),[n,p]=(0,s.useState)(null),[r,b]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let c=a.bot.brandLabel??null;i(c),f(c??"")},[a.bot.brandLabel]);async function g(c){p(null),b(!0);try{let d=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/brand-label`,{brandLabel:c});if(d.ok&&d.body.ok){let N=d.body.brandLabel??null;i(N),f(N??""),a.patchBot(a.bot.larkAppId,{brandLabel:N}),p({text:"\u2713",ok:!0})}else p({text:`\u2717 ${q(d)}`})}catch(d){p({text:`\u2717 ${j(d)}`})}finally{b(!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)(O,{help:t("botDefaults.brandLabelHelp"),children:t("botDefaults.brandLabel")}),(0,e.jsx)("input",{type:"text","data-input":"brandLabel",placeholder:t("botDefaults.brandLabelPlaceholder"),value:l,disabled:r,onChange:c=>f(c.currentTarget.value)})]}),(0,e.jsx)("small",{"data-brand-state":!0,children:ke(u,t)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-brand",disabled:r,onClick:()=>{g(l)},children:t("botDefaults.brandSave")}),(0,e.jsx)("button",{type:"button","data-action":"reset-brand",disabled:r,onClick:()=>{g(null)},children:t("botDefaults.brandReset")}),(0,e.jsx)(J,{status:n,attr:{"data-brand-status":""}})]})]})}function na(a){let t=H(),[o,u]=(0,s.useState)(a.bot.autoGrantRequestCards!==!1),[i,l]=(0,s.useState)(a.bot.restrictGrantCommands===!0),[f,n]=(0,s.useState)(typeof a.bot.grantDefaultDurationMs=="number"?a.bot.grantDefaultDurationMs:null),[p,r]=(0,s.useState)(String(a.bot.grantDefaultDurationMs??36e5)),[b,g]=(0,s.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null),[c,d]=(0,s.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?String(a.bot.messageQuotaDefaultLimit):""),[N,S]=(0,s.useState)(null),[v,k]=(0,s.useState)(null),[h,C]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(a.bot.autoGrantRequestCards!==!1)},[a.bot.autoGrantRequestCards]),(0,s.useEffect)(()=>{l(a.bot.restrictGrantCommands===!0)},[a.bot.restrictGrantCommands]),(0,s.useEffect)(()=>{let I=typeof a.bot.grantDefaultDurationMs=="number"?a.bot.grantDefaultDurationMs:null;n(I),r(String(I??36e5))},[a.bot.grantDefaultDurationMs]),(0,s.useEffect)(()=>{let I=typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null;g(I),d(I===null?"":String(I))},[a.bot.messageQuotaDefaultLimit]);async function T(I,w,W){C(w),S(null);try{let G=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/grant-prefs`,I);if(G.ok&&G.body.ok){let Y=typeof G.body.grantDefaultDurationMs=="number"?G.body.grantDefaultDurationMs:null,B=typeof G.body.messageQuotaDefaultLimit=="number"?G.body.messageQuotaDefaultLimit:null;u(G.body.autoGrantRequestCards!==!1),l(G.body.restrictGrantCommands===!0),n(Y),g(B),"grantDefaultDurationMs"in I&&r(String(Y??36e5)),"messageQuotaDefaultLimit"in I&&d(B===null?"":String(B)),a.patchBot(a.bot.larkAppId,{autoGrantRequestCards:G.body.autoGrantRequestCards!==!1,restrictGrantCommands:G.body.restrictGrantCommands===!0,grantDefaultDurationMs:Y,messageQuotaDefaultLimit:B}),w==="defaults"&&k(null),S({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else W?.(),S({text:`\u2717 ${q(G)}`})}catch(G){W?.(),S({text:`\u2717 ${j(G)}`})}finally{C(null)}}function D(){let I=At(c),w=I!==b;if(S(null),w&&(I==="invalid"||typeof I=="number"&&I>1e3)){k(t("botDefaults.quotaInvalid"));return}k(null);let W=Number(p);if(!Ce.includes(W)){S({text:`\u2717 ${t("botDefaults.grantDurationInvalid")}`});return}let G={};W!==(f??36e5)&&(G.grantDefaultDurationMs=W===36e5?null:W),w&&(G.messageQuotaDefaultLimit=I),Object.keys(G).length>0&&T(G,"defaults")}let m=[{value:String(36e5),label:t("botDefaults.grantDuration1Hour")},{value:String(480*60*1e3),label:t("botDefaults.grantDuration8Hours")},{value:String(1440*60*1e3),label:t("botDefaults.grantDuration1Day")},{value:String(10080*60*1e3),label:t("botDefaults.grantDuration7Days")}],U=f??36e5,L=U===36e5?t("botDefaults.grantDuration1HourValue"):String(m.find(I=>I.value===String(U))?.label??""),F=At(c),M=F==="invalid"||F!==b,Z=p!==String(U)||M,Q=b===null?t("botDefaults.grantDefaultsCurrentBuiltIn",{duration:L,count:3}):b>1e3?t("botDefaults.grantDefaultsCurrentLegacy",{duration:L,cardCount:1e3,oncallCount:b}):t("botDefaults.grantDefaultsCurrentCustom",{duration:L,count:b});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)(nt,{checked:o,disabled:h!==null,dataAction:"toggle-auto-grant-card",title:t("botDefaults.autoGrantCard"),help:t("botDefaults.autoGrantCardHelp"),onChange:I=>{let w=o;u(I),T({autoGrantRequestCards:I},"autoGrant",()=>u(w))}}),(0,e.jsx)(nt,{checked:i,disabled:h!==null,dataAction:"toggle-restrict-grant",title:t("botDefaults.restrictGrant"),help:t("botDefaults.restrictGrantHelp"),onChange:I=>{let w=i;l(I),T({restrictGrantCommands:I},"restrict",()=>l(w))}})]}),(0,e.jsxs)("form",{className:"bd-grant-defaults",noValidate:!0,onSubmit:I=>{I.preventDefault(),D()},children:[(0,e.jsx)("div",{className:"bd-row bd-grant-duration",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(O,{help:t("botDefaults.grantDurationHelp"),children:t("botDefaults.grantDurationDefault")}),(0,e.jsx)(ot,{dataInput:"grantDefaultDurationMs",value:p,options:m,disabled:h!==null,ariaLabel:t("botDefaults.grantDurationDefault"),onChange:I=>{r(I),S(null)}})]})}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(O,{help:t("botDefaults.quotaHelp"),children:t("botDefaults.quotaDefault")}),(0,e.jsx)("input",{type:"number",min:1,max:1e3,step:1,"data-input":"quotaLimit",placeholder:t("botDefaults.quotaPlaceholder"),value:c,disabled:h!==null,"aria-label":t("botDefaults.quotaDefault"),"aria-invalid":v?!0:void 0,"aria-describedby":v?"grant-defaults-state grant-default-quota-error":"grant-defaults-state",onChange:I=>{d(I.currentTarget.value),k(null),S(null)}})]}),v?(0,e.jsx)("small",{id:"grant-default-quota-error",className:"bd-field-error",role:"alert",children:v}):null,(0,e.jsx)("small",{id:"grant-defaults-state","data-grant-defaults-state":!0,children:Q})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"submit",className:"primary","data-action":"save-grant-defaults",disabled:h!==null||!Z,children:t(h==="defaults"?"botDefaults.grantDefaultsSaving":"botDefaults.grantDefaultsSave")}),(0,e.jsx)(J,{status:N,attr:{"data-grant-status":""}})]})]})]})}function ya(a){return Gt(a,(0,e.jsx)(Te,{}))}export{mt as BOT_DEFAULTS_TABS,pt as BdTabGrid,Be as BotAgentSection,Te as BotDefaultsPage,ge as BotDefaultsTabs,We as CardBehaviorSection,_e as CodexAppDisplaySection,na as GrantSection,De as buildSubstituteTarget,le as effectiveAccess,ya as renderBotDefaultsPage};
@@ -1 +0,0 @@
1
- import{a as n,t as s,u as i}from"./chunk-6JTZJRQJ.js";import{a as l}from"./chunk-5THX4DI2.js";import{c as S}from"./chunk-7SZRL6FY.js";var e=S(l(),1);function f(o){return n.on(o)}function m(o){let u=(0,e.useRef)(o),r=(0,e.useRef)(null);u.current=o;let a=()=>{let t=n.getSnapshot();if(r.current&&r.current.version===t.version)return r.current.value;let c=u.current(t);return r.current={version:t.version,value:c},c};return(0,e.useSyncExternalStore)(f,a,a)}function h(o){return s.on(o)}function p(){return s.locale}function v(){return(0,e.useSyncExternalStore)(h,p,p)}function T(){return v(),i}export{m as a,v as b,T as c};
@@ -1 +0,0 @@
1
- import{a as q,b as V}from"./chunk-EVK77ASG.js";import{a as ue}from"./chunk-ZJVTGU5X.js";import{c as _}from"./chunk-KEEYQ3WF.js";import{a as le,c as ie,g as Se,l as T,q as de}from"./chunk-5CJMHTT4.js";import"./chunk-6JTZJRQJ.js";import{a as re}from"./chunk-SYC6D5XU.js";import{a as Pe,d as ce}from"./chunk-5THX4DI2.js";import{c as j}from"./chunk-7SZRL6FY.js";var i=j(Pe(),1);var p=j(Pe(),1);var n=j(ce(),1),Ge=50,Ne={total:0,ok:0,error:0,successRate:0};function We(o,e=Date.now()){if(o==="all")return;let s=o==="24h"?24:o==="7d"?168:720;return new Date(e-s*60*60*1e3).toISOString()}function _e(o,e=0){let s=new URLSearchParams({limit:String(Ge),offset:String(e)});o.connectorId&&s.set("connectorId",o.connectorId),o.status&&s.set("status",o.status);let d=We(o.timeWindow);return d&&s.set("since",d),o.query.trim()&&s.set("q",o.query.trim()),s}function Fe(o){if(!o)return"\u2014";let e=new Date(o);return Number.isFinite(e.getTime())?e.toLocaleString():o}function ge(o){return o===void 0||!Number.isFinite(o)?"\u2014":o<1e3?`${Math.round(o)} ms`:o<6e4?`${(o/1e3).toFixed(o<1e4?1:0)} s`:`${(o/6e4).toFixed(1)} min`}function Ue(o){return o===void 0?"\u2014":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/1024/1024).toFixed(1)} MB`}function Le(o){return o.value===void 0||o.value===null?(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:o.empty}):typeof o.value=="object"&&!Array.isArray(o.value)&&Object.keys(o.value).length===0?(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:o.empty}):(0,n.jsx)("pre",{className:`webhook-log-json${o.fullHeight?" full-height":""}`,children:(0,n.jsx)("code",{children:JSON.stringify(o.value,null,2)})})}function Je(o){let e=[["kind",o.value?.kind],["mode",o.value?.mode],["botId",o.value?.botId],["chatId",o.value?.chatId],["sessionId",o.value?.sessionId],["rootMessageId",o.value?.rootMessageId],["workflowId",o.value?.workflowId]].filter(([,s])=>s!=null&&s!=="");return e.length?(0,n.jsx)("dl",{className:"webhook-log-target-facts",children:e.map(([s,d])=>(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:s}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:String(d)})})]},s))}):(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:"\u2014"})}function Ie(o){return(0,n.jsx)(de,{id:o.id,className:"webhook-log-filter-menu",ariaLabel:o.label,style:{width:"100%",minWidth:0},value:o.value,label:le(o.options,o.value),options:o.options,onChange:o.onChange})}function me(o){return(0,n.jsxs)("article",{className:`card webhook-log-metric${o.tone?` ${o.tone}`:""}`,children:[(0,n.jsx)("span",{children:o.label}),(0,n.jsx)("strong",{children:o.value}),(0,n.jsx)("small",{children:o.hint||"\xA0"})]})}function Ee(o={}){let e=_(),s=(0,p.useRef)(!1),d=(0,p.useRef)([]),[f,N]=(0,p.useState)([]),[y,I]=(0,p.useState)([]),[k,R]=(0,p.useState)(Ne),[L,$]=(0,p.useState)({connectorId:"",status:"",timeWindow:"7d",query:""}),[u,r]=(0,p.useState)(null),[E,U]=(0,p.useState)(!0),[w,J]=(0,p.useState)(!1),[A,X]=(0,p.useState)(!1),[Y,Z]=(0,p.useState)(0),[B,x]=(0,p.useState)(""),[K,ee]=(0,p.useState)(!1),M=(0,p.useMemo)(()=>new Map(f.map(c=>[c.id,c.name])),[f]),g=(0,p.useMemo)(()=>y.find(c=>c.triggerId===u)??y[0]??null,[y,u]),te=(0,p.useMemo)(()=>[{value:"",label:e("webhookLogs.allConnectors")},...f.map(c=>({value:c.id,label:c.name}))],[f,e]),G=(0,p.useMemo)(()=>[{value:"",label:e("webhookLogs.allStatuses")},{value:"ok",label:e("webhookLogs.success")},{value:"error",label:e("webhookLogs.failed")}],[e]),fe=(0,p.useMemo)(()=>[{value:"24h",label:e("webhookLogs.last24h")},{value:"7d",label:e("webhookLogs.last7d")},{value:"30d",label:e("webhookLogs.last30d")},{value:"all",label:e("webhookLogs.allTime")}],[e]),H=(0,p.useCallback)(async(c=!1,v=!1)=>{v?J(!0):U(!0),x("");let Q=c?d.current.length:0,oe=_e(L,Q),h=new URLSearchParams(oe);h.delete("limit"),h.delete("offset");try{let[S,ne]=await Promise.all([q(`/api/trigger-logs?${oe}`),c?Promise.resolve(null):q(`/api/trigger-logs/summary?${h}`)]);if(!s.current)return;if(S.status!==200)throw new Error(String(S.body?.error||S.status));let P=Array.isArray(S.body?.logs)?S.body.logs:[],ae=c?[...d.current,...P]:P;d.current=ae,I(ae),Z(Number(S.body?.total??P.length)),X(S.body?.hasMore===!0),c||(R(ne?.status===200?ne.body?.summary??Ne:Ne),r(se=>P.some(ve=>ve.triggerId===se)?se:P[0]?.triggerId??null))}catch(S){s.current&&x(S?.message||e("webhookLogs.loadFailed"))}finally{s.current&&(U(!1),J(!1))}},[L,e]);(0,p.useEffect)(()=>(s.current=!0,q("/api/connectors").then(c=>{s.current&&c.status===200&&N(Array.isArray(c.body?.connectors)?c.body.connectors:[])}),()=>{s.current=!1}),[]),(0,p.useEffect)(()=>{let c=setTimeout(()=>{H(!1)},L.query?260:0);return()=>clearTimeout(c)},[L,H]),(0,p.useEffect)(()=>{let c=setInterval(()=>{H(!1,!0)},15e3);return()=>clearInterval(c)},[H]);async function ye(){!g||!await ue(JSON.stringify(g,null,2),e("webhookLogs.copyJson"))||(ee(!0),setTimeout(()=>s.current&&ee(!1),1200))}let ke=g?.request?.payloadOmittedReason==="disabled"?e("webhookLogs.payloadDisabled"):g?.request?.payloadOmittedReason==="too_large"?e("webhookLogs.payloadTooLarge"):e("webhookLogs.payloadUnavailable"),z=(0,n.jsxs)(n.Fragment,{children:[o.embedded?null:(0,n.jsxs)("div",{className:"page-heading",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"eyebrow",children:e("nav.connectors")}),(0,n.jsx)("h1",{children:e("nav.webhookLogs")}),(0,n.jsx)("p",{className:"webhook-log-heading-copy",children:e("webhookLogs.subtitle")})]}),(0,n.jsxs)("div",{className:"page-heading-actions",children:[(0,n.jsxs)("span",{className:`webhook-log-live${w?" refreshing":""}`,children:[(0,n.jsx)("i",{}),e("webhookLogs.autoRefresh")]}),(0,n.jsx)("a",{className:"button page-primary-action",href:"#/connectors",children:e("webhookLogs.manage")})]})]}),(0,n.jsxs)("section",{className:"webhook-log-metrics","aria-label":e("webhookLogs.summary"),children:[(0,n.jsx)(me,{label:e("webhookLogs.total"),value:k.total,hint:e("webhookLogs.filteredRange")}),(0,n.jsx)(me,{label:e("webhookLogs.successRate"),value:`${k.successRate.toFixed(k.successRate%1?1:0)}%`,tone:"ok",hint:`${k.ok} ${e("webhookLogs.calls")}`}),(0,n.jsx)(me,{label:e("webhookLogs.failures"),value:k.error,tone:k.error?"error":void 0,hint:k.error?e("webhookLogs.needsReview"):e("webhookLogs.noFailures")}),(0,n.jsx)(me,{label:e("webhookLogs.p95"),value:ge(k.p95DurationMs),hint:`${e("webhookLogs.average")} ${ge(k.avgDurationMs)}`})]}),(0,n.jsxs)("form",{className:"filters dashboard-toolbar webhook-log-toolbar",onSubmit:c=>c.preventDefault(),children:[(0,n.jsx)("input",{type:"search",name:"q","aria-label":e("webhookLogs.search"),placeholder:e("webhookLogs.searchPlaceholder"),value:L.query,onChange:c=>{let v=c.currentTarget.value;$(Q=>({...Q,query:v}))}}),(0,n.jsx)(Ie,{id:"webhook-log-connector",label:e("webhookLogs.connector"),value:L.connectorId,options:te,onChange:c=>$(v=>({...v,connectorId:c}))}),(0,n.jsx)(Ie,{id:"webhook-log-status",label:e("webhookLogs.status"),value:L.status,options:G,onChange:c=>$(v=>({...v,status:c}))}),(0,n.jsx)(Ie,{id:"webhook-log-window",label:e("webhookLogs.timeRange"),value:L.timeWindow,options:fe,onChange:c=>$(v=>({...v,timeWindow:c}))}),(0,n.jsx)("button",{type:"button",className:"ghost webhook-log-refresh",disabled:w,onClick:()=>{H(!1,!0)},children:e("webhookLogs.refresh")})]}),B?(0,n.jsxs)("p",{className:"err webhook-log-error",children:[e("webhookLogs.loadFailed"),": ",B]}):null,(0,n.jsxs)("section",{className:"webhook-log-workspace",children:[(0,n.jsxs)("article",{className:"card webhook-log-list-panel",children:[(0,n.jsx)("header",{className:"webhook-log-panel-head",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:e("webhookLogs.records")}),(0,n.jsx)("span",{children:e("webhookLogs.matching",{count:Y})})]})}),E&&!y.length?(0,n.jsx)(ie,{label:e("webhookLogs.loading"),compact:!0}):null,!E&&!y.length?(0,n.jsxs)("div",{className:"webhook-log-empty",children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"\u25CE"}),(0,n.jsx)("strong",{children:e("webhookLogs.empty")}),(0,n.jsx)("p",{children:e("webhookLogs.emptyHint")})]}):null,(0,n.jsx)("div",{className:"webhook-log-list",role:"listbox","aria-label":e("webhookLogs.records"),children:y.map(c=>{let v=g?.triggerId===c.triggerId;return(0,n.jsxs)("button",{type:"button",role:"option","aria-selected":v,className:`webhook-log-row${v?" active":""}`,onClick:()=>r(c.triggerId),children:[(0,n.jsx)("span",{className:`webhook-log-status-dot ${c.status}`,"aria-hidden":"true"}),(0,n.jsxs)("span",{className:"webhook-log-row-main",children:[(0,n.jsxs)("span",{className:"webhook-log-row-title",children:[(0,n.jsx)("strong",{children:M.get(c.connectorId||"")||c.connectorId||e("webhookLogs.unknownConnector")}),(0,n.jsx)("code",{children:c.request?.method||"POST"})]}),(0,n.jsxs)("span",{className:"webhook-log-row-meta",children:[(0,n.jsx)("span",{children:Fe(c.createdAt)}),(0,n.jsx)("span",{children:c.errorCode||c.action})]})]}),(0,n.jsxs)("span",{className:"webhook-log-row-result",children:[(0,n.jsx)("b",{className:c.status,children:c.response?.httpStatus??(c.status==="ok"?"2xx":"ERR")}),(0,n.jsx)("small",{children:ge(c.response?.durationMs)})]})]},`${c.triggerId}-${c.createdAt}`)})}),A?(0,n.jsx)("button",{type:"button",className:"ghost webhook-log-more",disabled:E,onClick:()=>{H(!0)},children:e("webhookLogs.loadMore")}):null]}),(0,n.jsx)("article",{className:"card webhook-log-detail-panel",children:g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("header",{className:"webhook-log-detail-head",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{className:`webhook-log-result-pill ${g.status}`,children:g.status==="ok"?e("webhookLogs.success"):e("webhookLogs.failed")}),(0,n.jsx)("h2",{children:M.get(g.connectorId||"")||g.connectorId||e("webhookLogs.unknownConnector")}),(0,n.jsxs)("p",{children:[Fe(g.createdAt)," \xB7 ",g.request?.method||"POST"," ",g.request?.path||"/webhook/\u2026"]})]}),(0,n.jsx)("button",{type:"button",className:"ghost",onClick:()=>{ye()},children:e(K?"webhookLogs.copied":"webhookLogs.copyJson")})]}),g.error?(0,n.jsxs)("div",{className:"webhook-log-failure",children:[(0,n.jsx)("strong",{children:g.errorCode||e("webhookLogs.failureReason")}),(0,n.jsx)("span",{children:g.error})]}):null,(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.overview")}),(0,n.jsxs)("dl",{className:"webhook-log-facts",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.httpStatus")}),(0,n.jsx)("dd",{children:g.response?.httpStatus??"\u2014"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.duration")}),(0,n.jsx)("dd",{children:ge(g.response?.durationMs)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.action")}),(0,n.jsx)("dd",{children:g.action})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.bodySize")}),(0,n.jsx)("dd",{children:Ue(g.request?.bodyBytes)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"Trigger ID"}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.triggerId})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:"Request ID"}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.requestId||"\u2014"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.remoteAddress")}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.request?.remoteAddress||"\u2014"})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("dt",{children:e("webhookLogs.target")}),(0,n.jsx)("dd",{children:(0,n.jsx)("code",{children:g.target?.chatId||g.target?.sessionId||g.response?.chatId||"\u2014"})})]})]})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.queryParams")}),(0,n.jsx)(Le,{value:g.request?.query,empty:e("webhookLogs.none")})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsxs)("h3",{children:[e("webhookLogs.headers"),(0,n.jsx)("small",{children:e("webhookLogs.redacted")})]}),(0,n.jsx)(Le,{value:g.request?.headers,empty:e("webhookLogs.headersNotStored")})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsxs)("h3",{children:[e("webhookLogs.payload"),(0,n.jsx)("small",{children:e("webhookLogs.redacted")})]}),g.request?.payloadStored?(0,n.jsx)(Le,{value:g.request.payload,empty:e("webhookLogs.none")}):(0,n.jsx)("p",{className:"webhook-log-detail-empty",children:ke})]}),(0,n.jsxs)("section",{className:"webhook-log-detail-section",children:[(0,n.jsx)("h3",{children:e("webhookLogs.routeTarget")}),(0,n.jsx)(Je,{value:g.target})]})]}):(0,n.jsx)("div",{className:"webhook-log-empty",children:(0,n.jsx)("strong",{children:e("webhookLogs.selectRecord")})})})]})]});return o.embedded?(0,n.jsx)("section",{className:"webhook-logs-content webhook-logs-panel",children:z}):(0,n.jsx)("section",{className:"page webhook-logs-content webhook-logs-page",children:z})}var t=j(ce(),1);function Xe(o,e){return o.map(s=>s.id===e.id?e:s)}var Re={name:"",botId:"",kind:"turn",workflowId:"",mode:"dynamic",chatId:"",manualChat:!1,manualChatId:"",allowChats:[],deduplicate:!1,dedup:"",instruction:"",topicMessageMode:"default",topicMessageText:"",topicMessageExtractors:"{}",suppressFinalOutput:!1,verify:"token",secret:"",storePayload:!0};function ut(o,e){return{promptEnvelope:{sourceName:o.promptEnvelope?.sourceName||o.name,instruction:e}}}function Ke(o,e,s){let d=e.trim();if(o!=="template")return{ok:!0,value:o==="custom"?{mode:o,text:d}:{mode:o}};try{let f=JSON.parse(s);return!f||typeof f!="object"||Array.isArray(f)?{ok:!1,error:"connectors.errTopicExtractors"}:{ok:!0,value:{mode:o,text:d,extractors:f}}}catch{return{ok:!1,error:"connectors.errTopicExtractors"}}}function je(o){return[{value:"turn",label:o("connectors.kindTurn")},{value:"workflow",label:o("connectors.kindWorkflowRetiring"),disabled:!0}]}function be(o){return`${location.origin}/webhook/${encodeURIComponent(o)}`}function pe(o){return(0,t.jsx)(de,{id:o.id,className:"connector-form-menu",ariaLabel:o.label,value:o.value,label:le(o.options,o.value),options:o.options,onChange:o.onChange})}function De(o){let e=(0,i.useRef)(null),[s,d]=(0,i.useState)(!1),[f,N]=(0,i.useState)(""),y=Array.isArray(o.value)?o.value:o.value?[o.value]:[],I=(0,i.useMemo)(()=>new Set(y),[y]),k=f.trim().toLocaleLowerCase(),R=(0,i.useMemo)(()=>k?o.groups.filter(u=>`${u.name} ${u.chatId}`.toLocaleLowerCase().includes(k)):o.groups,[k,o.groups]),L=o.multiple?y.length===0?o.allLabel||o.placeholder:o.selectedCountLabel(y.length):o.groups.find(u=>u.chatId===y[0])?.name||y[0]||o.placeholder;(0,i.useEffect)(()=>{if(!s)return;let u=r=>{e.current?.contains(r.target)||d(!1)};return document.addEventListener("pointerdown",u),()=>document.removeEventListener("pointerdown",u)},[s]);function $(u){if(!o.multiple){o.onChange(u),d(!1),N("");return}o.onChange(I.has(u)?y.filter(r=>r!==u):[...y,u])}return(0,t.jsxs)("div",{ref:e,className:`connector-group-picker${s?" open":""}`,children:[(0,t.jsxs)("button",{id:o.id,type:"button",className:"connector-group-picker-trigger","aria-label":o.label,"aria-haspopup":"listbox","aria-expanded":s,onClick:()=>d(u=>!u),children:[(0,t.jsx)("span",{className:y.length||o.multiple&&o.allLabel?"":"muted",children:L}),(0,t.jsx)("span",{className:"connector-group-picker-chevron","aria-hidden":"true"})]}),s?(0,t.jsxs)("div",{className:"connector-group-picker-popover",children:[(0,t.jsxs)("label",{className:"connector-group-search",htmlFor:`${o.id}-search`,children:[(0,t.jsx)("span",{className:"connector-group-search-icon","aria-hidden":"true"}),(0,t.jsx)("input",{id:`${o.id}-search`,type:"search",autoComplete:"off",autoFocus:!0,value:f,placeholder:o.searchPlaceholder,onChange:u=>N(u.currentTarget.value),onKeyDown:u=>{u.key==="Escape"&&(u.preventDefault(),d(!1))}})]}),(0,t.jsxs)("div",{className:"connector-group-options",role:"listbox","aria-label":o.label,"aria-multiselectable":o.multiple||void 0,children:[o.multiple&&o.allLabel&&!k?(0,t.jsxs)("button",{type:"button",className:`connector-group-option connector-group-option-all${y.length===0?" selected":""}`,role:"option","aria-selected":y.length===0,onClick:()=>o.onChange([]),children:[(0,t.jsx)("span",{className:"connector-group-check","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:o.allLabel}),(0,t.jsx)("small",{children:o.placeholder})]})]}):null,R.map(u=>{let r=I.has(u.chatId);return(0,t.jsxs)("button",{type:"button",className:`connector-group-option${r?" selected":""}`,role:"option","aria-selected":r,onClick:()=>$(u.chatId),children:[(0,t.jsx)("span",{className:"connector-group-check","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:u.name||u.chatId}),u.name?(0,t.jsx)("small",{children:u.chatId}):null]})]},u.chatId)}),R.length?null:(0,t.jsx)("p",{className:"connector-group-empty",children:o.emptyLabel})]})]}):null]})}function he(o,e){return o.filter(s=>s.bots.includes(e))}function ze(o,e){let s=o.target.chatId||"",d=s&&he(e,o.target.botId).some(f=>f.chatId===s);return{name:o.name,botId:o.target.botId,kind:o.target.kind,workflowId:o.target.workflowId||"",mode:o.target.mode,chatId:d?s:"",manualChat:!!(s&&!d),manualChatId:d?"":s,allowChats:o.target.allowChats||[],deduplicate:!!o.lifecycleExtractors?.dedupKey,dedup:o.lifecycleExtractors?.dedupKey||"",instruction:o.promptEnvelope?.instruction||"",topicMessageMode:o.topicMessage?.mode||"default",topicMessageText:o.topicMessage?.text||"",topicMessageExtractors:JSON.stringify(o.topicMessage?.extractors||{},null,2),suppressFinalOutput:o.suppressFinalOutput===!0,verify:o.verify?.type||"token",secret:"",storePayload:o.loggingPolicy?.storePayload!==!1}}function Qe(o){let e=_(),s=o.active==="webhooks",d=o.active==="logs";return(0,t.jsxs)("nav",{className:"connectors-subnav-slot connectors-subnav insight-tabs",role:"tablist","aria-label":e("nav.connectors"),children:[(0,t.jsx)("a",{href:"#/connectors",className:`itab${s?" on":""}`,role:"tab","aria-selected":s,children:e("connectors.tabWebhooks")}),(0,t.jsx)("a",{href:"#/connectors/logs",className:`itab${d?" on":""}`,role:"tab","aria-selected":d,children:e("connectors.tabLogs")})]})}function Oe(o){let e=_(),s=(0,i.useRef)(!1),d=(0,i.useRef)(null),f=(0,i.useRef)(null),[N,y]=(0,i.useState)([]),[I,k]=(0,i.useState)([]),[R,L]=(0,i.useState)([]),[$,u]=(0,i.useState)(!0),[r,E]=(0,i.useState)(Re),[U,w]=(0,i.useState)(null),[J,A]=(0,i.useState)(null),[X,Y]=(0,i.useState)(!1),[Z,B]=(0,i.useState)(!1),[x,K]=(0,i.useState)(null),[ee,M]=(0,i.useState)(null),[g,te]=(0,i.useState)(null),G=(0,i.useMemo)(()=>he(I,r.botId),[I,r.botId]),fe=(0,i.useMemo)(()=>N.length?N.map(a=>({value:a.larkAppId,label:a.botName})):[{value:"",label:e("connectors.noOnlineBots")}],[N,e]),H=(0,i.useMemo)(()=>je(e),[e]),ye=(0,i.useMemo)(()=>[{value:"dynamic",label:e("connectors.modeDynamic")},{value:"fixed",label:e("connectors.modeFixed")},{value:"new-group",label:e("connectors.modeNewGroup")}],[e]),ke=(0,i.useMemo)(()=>[{value:"token",label:e("connectors.verifyToken")},{value:"hmac-sha256",label:e("connectors.verifyHmac")}],[e]),z=(0,i.useCallback)(a=>I.find(b=>b.chatId===a)?.name||a,[I]),c=(0,i.useCallback)((a,l)=>{E(b=>{let F=b.botId&&a.some(O=>O.larkAppId===b.botId)?b.botId:a[0]?.larkAppId??"",C=he(l,F),m=b.chatId&&C.some(O=>O.chatId===b.chatId)?b.chatId:C[0]?.chatId??"",D=new Set(C.map(O=>O.chatId));return{...b,botId:F,chatId:m,allowChats:b.allowChats.filter(O=>D.has(O))}})},[]),v=(0,i.useCallback)(async()=>{u(!0);try{let[a,l,b]=await Promise.all([q("/api/bots"),q("/api/connectors"),q("/api/groups")]);if(!s.current)return;let F=(a.body?.bots||[]).map(m=>({larkAppId:m.larkAppId,botName:m.botName||m.larkAppId})),C=(b.body?.chats||[]).map(m=>({chatId:m.chatId,name:m.name||"",bots:(m.memberBots||[]).filter(D=>D.inChat).map(D=>D.larkAppId)}));y(F),k(C),L(Array.isArray(l.body?.connectors)?l.body.connectors:[]),c(F,C)}finally{s.current&&u(!1)}},[c]);(0,i.useEffect)(()=>(s.current=!0,v(),()=>{s.current=!1,d.current&&clearTimeout(d.current)}),[v]),(0,i.useEffect)(()=>{let a=new Set(G.map(l=>l.chatId));E(l=>({...l,chatId:l.chatId&&a.has(l.chatId)?l.chatId:G[0]?.chatId??"",allowChats:l.allowChats.filter(b=>a.has(b))}))},[G]),(0,i.useEffect)(()=>{let a=f.current;if(a)if(Z){if(!a.open)try{a.showModal()}catch{}let l=a.querySelector(".connector-modal-body");l&&(l.scrollTop=0)}else a.open&&a.close()},[Z]),(0,i.useEffect)(()=>()=>{let a=f.current;a?.open&&a.close()},[]);function Q(a){return e(a==="fixed"?"connectors.modeLabelFixed":a==="new-group"?"connectors.modeLabelNewGroup":"connectors.modeLabelDynamic")}function oe(a){return e(a==="workflow"?"connectors.kindLabelWorkflow":"connectors.kindLabelTurn")}function h(a){E(l=>({...l,...a}))}function S(){w(null),A(null),K(null),E(a=>{let l=a.botId||N[0]?.larkAppId||"";return{...Re,botId:l,chatId:he(I,l)[0]?.chatId||""}}),B(!0)}function ne(a){w(null),A(null),M(null),K(a),E(ze(a,I)),B(!0)}function P(){X||(B(!1),w(null),A(null),K(null))}async function ae(){w(null),A(null);let a=r.name.trim(),l=r.botId;if(!a){w({text:e("connectors.errName"),error:!0});return}if(!l){w({text:e("connectors.errBot"),error:!0});return}if(r.kind==="workflow"){w({text:e("connectors.errLegacyWorkflowRetired"),error:!0});return}let b=r.topicMessageText.trim();if((r.topicMessageMode==="custom"||r.topicMessageMode==="template")&&!b){w({text:e("connectors.errTopicMessage"),error:!0});return}let F=Ke(r.topicMessageMode,b,r.topicMessageExtractors);if(!F.ok){w({text:e(F.error),error:!0});return}let C={name:a,enabled:x?.enabled??!0,target:{kind:r.kind,mode:r.mode,botId:l},promptEnvelope:{sourceName:a,instruction:r.instruction.trim()},topicMessage:F.value,suppressFinalOutput:r.suppressFinalOutput,verify:{type:r.verify},loggingPolicy:{storePayload:r.storePayload,storeHeaders:!0,retentionDays:14}};if(r.mode==="fixed"){let m=r.manualChat?r.manualChatId.trim():r.chatId;if(!m){w({text:e("connectors.errChat"),error:!0});return}C.target.chatId=m}else r.mode==="dynamic"&&(C.target.allowChats=r.allowChats);if(r.mode==="new-group"){let m=r.dedup.trim();if(r.deduplicate&&!m){w({text:e("connectors.errDedup"),error:!0});return}C.lifecycleExtractors=r.deduplicate?{dedupKey:m}:null}else C.lifecycleExtractors=null;r.secret.trim()&&(C.secret=r.secret.trim()),Y(!0),w({text:e(x?"connectors.saving":"connectors.creating")});try{let m=await V(x?"PUT":"POST",x?`/api/connectors/${encodeURIComponent(x.id)}`:"/api/connectors",C);if(!s.current)return;if((m.status===201||m.status===200)&&m.body?.ok){if(x){let we=x.id,W=m.body.connector;L(Ce=>Xe(Ce,W));let Te=m.body.secret??C.secret;if(Te){let Ce=m.body.webhookUrl||be(W.id),qe=(W.verify?.type??"token")==="token",xe=W.target.mode==="dynamic",Be=xe?W.target.allowChats?.[0]||"<chatId>":"";w(null),A({name:a,mode:W.target.mode,chatId:W.target.chatId,url:Ce,secret:Te,isToken:qe,isDynamic:xe,exampleChat:Be,rotated:!0}),await v();return}M({id:we,text:e("connectors.updated")}),B(!1),K(null);return}let D=m.body.webhookUrl||be(m.body.connector.id),O=(m.body.connector?.verify?.type??"token")==="token",Me=r.mode==="dynamic",He=Me?C.target.allowChats?.[0]||"<chatId>":"";w(null),A({name:a,mode:r.mode,chatId:C.target.chatId,url:D,secret:m.body.secret,isToken:O,isDynamic:Me,exampleChat:He}),E(we=>({...we,name:"",workflowId:"",manualChatId:"",dedup:"",secret:"",instruction:"",topicMessageMode:"default",topicMessageText:"",topicMessageExtractors:"{}",suppressFinalOutput:!1,allowChats:[],storePayload:!0})),await v()}else{let D=m.body?.error||m.status;w({text:e("connectors.createFailed",{error:String(D)}),error:!0})}}finally{s.current&&Y(!1)}}async function se(a){M({id:a.id,text:e(a.enabled?"connectors.disabling":"connectors.enabling")});let l=await V("PATCH",`/api/connectors/${encodeURIComponent(a.id)}`,{enabled:!a.enabled});if(s.current)if(l.status===200&&l.body?.ok)M(null),await v();else{let b=l.body?.error||l.status;M({id:a.id,text:e("connectors.toggleFailed",{error:String(b)}),error:!0})}}async function ve(a){let l=a.loggingPolicy?.storePayload!==!1;M({id:a.id,text:e("connectors.saving")});let b=await V("PUT",`/api/connectors/${encodeURIComponent(a.id)}`,{loggingPolicy:{storePayload:!l,storeHeaders:a.loggingPolicy?.storeHeaders!==!1,retentionDays:a.loggingPolicy?.retentionDays??14}});if(s.current)if(b.status===200&&b.body?.ok)M(null),await v();else{let F=b.body?.error||b.status;M({id:a.id,text:e("connectors.saveFailed",{error:String(F)}),error:!0})}}async function $e(a){if(!confirm(e("connectors.delConfirm")))return;M({id:a.id,text:e("connectors.deleting")});let l=await V("DELETE",`/api/connectors/${encodeURIComponent(a.id)}`);if(s.current)if(l.status===200&&l.body?.ok)M(null),await v();else{let b=l.body?.error||l.status;M({id:a.id,text:e("connectors.deleteFailed",{error:String(b)}),error:!0})}}function Ae(a){ue(be(a.id),e("connectors.copy")).then(l=>{!l||!s.current||(te(a.id),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{s.current&&te(null)},1200))})}return(0,t.jsxs)("section",{className:"page connectors-page",children:[(0,t.jsxs)("div",{className:"page-heading",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"eyebrow",children:e("nav.connectors")}),(0,t.jsx)("h1",{children:e("nav.connectors")})]}),(0,t.jsx)("div",{className:"page-heading-actions",children:o.tab==="webhooks"?(0,t.jsx)(Se,{className:"page-primary-action connector-create-trigger",onClick:S,children:e("connectors.createTitle")}):(0,t.jsx)("a",{className:"button page-primary-action",href:"#/connectors",children:e("webhookLogs.manage")})})]}),(0,t.jsx)(Qe,{active:o.tab}),o.tab==="webhooks"?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dialog",{ref:f,className:"connector-create-modal",onCancel:a=>{a.preventDefault(),P()},onClose:P,onClick:a=>{a.target===a.currentTarget&&P()},children:(0,t.jsxs)("article",{className:"connector-modal-card",children:[(0,t.jsxs)("header",{className:"connector-modal-header",children:[(0,t.jsx)("h3",{children:e(x?"connectors.editTitle":"connectors.createTitle")}),(0,t.jsx)("button",{type:"button",className:"connector-modal-close","aria-label":e("connectors.close"),title:e("connectors.close"),disabled:X,onClick:P,children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]}),(0,t.jsx)("div",{className:"connector-modal-body",children:J?(0,t.jsx)(Ve,{created:J,groupName:z}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"cn-form",children:[(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-name",children:[(0,t.jsx)(T,{children:e("connectors.fName")}),(0,t.jsx)("input",{id:"cn-name",value:r.name,onChange:a=>h({name:a.currentTarget.value}),placeholder:e("connectors.fNamePh")})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fBot")}),(0,t.jsx)(pe,{id:"cn-bot",label:e("connectors.fBot"),value:r.botId,options:fe,onChange:a=>h({botId:a})})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fKind")}),(0,t.jsx)(pe,{id:"cn-kind",label:e("connectors.fKind"),value:r.kind,options:H,onChange:a=>h({kind:a})})]}),r.kind==="workflow"?(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-wf",children:[(0,t.jsx)(T,{children:e("connectors.fWf")}),(0,t.jsx)("input",{id:"cn-wf",value:r.workflowId,onChange:a=>h({workflowId:a.currentTarget.value}),placeholder:"workflowId"})]}):null,(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fMode")}),(0,t.jsx)(pe,{id:"cn-mode",label:e("connectors.fMode"),value:r.mode,options:ye,onChange:a=>h({mode:a})})]}),r.mode==="fixed"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide",children:[(0,t.jsx)(T,{children:e("connectors.fFixedChat")}),(0,t.jsxs)("div",{className:"connector-chat-control",children:[r.manualChat?(0,t.jsx)("input",{id:"cn-chat",value:r.manualChatId,onChange:a=>h({manualChatId:a.currentTarget.value}),placeholder:e("connectors.fChatManualPh")}):(0,t.jsx)(De,{id:"cn-chat-sel",label:e("connectors.fFixedChat"),groups:G,value:r.chatId,placeholder:e("connectors.groupPickerPlaceholder"),searchPlaceholder:e("connectors.groupSearchPlaceholder"),emptyLabel:e("connectors.groupNoMatches"),selectedCountLabel:a=>e("connectors.groupSelectedCount",{count:a}),onChange:a=>h({chatId:a})}),(0,t.jsx)("button",{type:"button",className:"ghost connector-inline-link",onClick:()=>h({manualChat:!r.manualChat}),children:r.manualChat?e("connectors.chatListLink"):e("connectors.chatManualLink")})]})]}):r.mode==="dynamic"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide",children:[(0,t.jsxs)(T,{help:e("connectors.allowHint"),children:[e("connectors.fAllow"),(0,t.jsx)("span",{className:"muted cn-optional",children:e("connectors.optional")})]}),(0,t.jsx)(De,{id:"cn-allow-chats",label:e("connectors.fAllow"),groups:G,value:r.allowChats,multiple:!0,allLabel:e("connectors.allowAll"),placeholder:e("connectors.allowAllHint"),searchPlaceholder:e("connectors.groupSearchPlaceholder"),emptyLabel:e("connectors.groupNoMatches"),selectedCountLabel:a=>e("connectors.groupSelectedCount",{count:a}),onChange:a=>h({allowChats:a})})]}):null,r.mode==="dynamic"?(0,t.jsx)("div",{className:"cn-field-wide",children:(0,t.jsx)("div",{className:"muted connector-form-hint",dangerouslySetInnerHTML:{__html:e("connectors.dynamicHint")}})}):null,r.mode==="new-group"?(0,t.jsxs)("div",{className:"cn-field cn-field-wide connector-new-group-config",children:[(0,t.jsx)(T,{children:e("connectors.newGroupStrategy")}),(0,t.jsxs)("div",{className:"connector-strategy-options",role:"radiogroup","aria-label":e("connectors.newGroupStrategy"),children:[(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":!r.deduplicate,className:`connector-strategy-option${r.deduplicate?"":" selected"}`,onClick:()=>h({deduplicate:!1}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e("connectors.newGroupFresh")}),(0,t.jsx)("small",{children:e("connectors.newGroupFreshHint")})]})]}),(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":r.deduplicate,className:`connector-strategy-option${r.deduplicate?" selected":""}`,onClick:()=>h({deduplicate:!0}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e("connectors.newGroupReuse")}),(0,t.jsx)("small",{children:e("connectors.newGroupReuseHint")})]})]})]}),r.deduplicate?(0,t.jsxs)("label",{className:"connector-dedup-field",htmlFor:"cn-dedup",children:[(0,t.jsx)(T,{help:(0,t.jsx)("span",{dangerouslySetInnerHTML:{__html:e("connectors.dedupHint")}}),children:e("connectors.fDedup")}),(0,t.jsx)("input",{id:"cn-dedup",value:r.dedup,onChange:a=>h({dedup:a.currentTarget.value}),placeholder:e("connectors.fDedupPh")})]}):null,(0,t.jsx)("p",{className:"connector-new-group-note",children:e("connectors.newGroupNotice")})]}):null,(0,t.jsxs)("label",{className:"cn-field cn-field-wide",htmlFor:"cn-instruction",children:[(0,t.jsxs)(T,{help:e("connectors.fInstructionPh"),children:[e("connectors.fInstruction"),(0,t.jsx)("span",{className:"muted cn-optional",children:e("connectors.optional")})]}),(0,t.jsx)("textarea",{id:"cn-instruction",rows:3,value:r.instruction,onChange:a=>h({instruction:a.currentTarget.value}),placeholder:e("connectors.fInstructionPh")})]}),(0,t.jsxs)("div",{className:"cn-field cn-field-wide connector-topic-message-config",children:[(0,t.jsx)(T,{help:e("connectors.topicMessageHint"),children:e("connectors.topicMessage")}),(0,t.jsx)("div",{className:"connector-topic-message-options",role:"radiogroup","aria-label":e("connectors.topicMessage"),children:["default","custom","template","none"].map(a=>{let l=a==="default"?"Default":a==="custom"?"Custom":a==="template"?"Template":"None";return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":r.topicMessageMode===a,className:`connector-topic-message-option${r.topicMessageMode===a?" selected":""}`,onClick:()=>h({topicMessageMode:a}),children:[(0,t.jsx)("span",{className:"connector-strategy-radio","aria-hidden":"true"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{children:e(`connectors.topicMessage${l}`)}),(0,t.jsx)("small",{children:e(`connectors.topicMessage${l}Hint`)})]})]},a)})}),r.topicMessageMode==="custom"||r.topicMessageMode==="template"?(0,t.jsxs)("div",{className:"connector-topic-message-input",children:[(0,t.jsx)("input",{id:"cn-topic-message",type:"text",maxLength:200,value:r.topicMessageText,onChange:a=>h({topicMessageText:a.currentTarget.value}),"aria-label":e(r.topicMessageMode==="template"?"connectors.topicMessageTemplate":"connectors.topicMessageCustom"),placeholder:e(r.topicMessageMode==="template"?"connectors.topicMessageTemplatePh":"connectors.topicMessageCustomPh")}),(0,t.jsxs)("small",{children:[e(r.topicMessageMode==="template"?"connectors.topicMessageTemplateHelp":"connectors.topicMessageCustomHelp"),(0,t.jsxs)("span",{children:[Array.from(r.topicMessageText).length,"/200"]})]}),r.topicMessageMode==="template"?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("textarea",{id:"cn-topic-message-extractors",className:"connector-topic-message-extractors",rows:8,value:r.topicMessageExtractors,onChange:a=>h({topicMessageExtractors:a.currentTarget.value}),placeholder:e("connectors.topicMessageExtractorsPh"),"aria-label":e("connectors.topicMessageExtractors")}),(0,t.jsx)("small",{children:e("connectors.topicMessageExtractorsHelp")})]}):null]}):(0,t.jsx)("p",{className:`connector-topic-message-preview${r.topicMessageMode==="none"?" muted":""}`,children:r.topicMessageMode==="none"?e("connectors.topicMessageNonePreview"):e("connectors.topicMessagePreview",{source:r.name.trim()||e("connectors.topicMessageSourceFallback")})})]}),(0,t.jsxs)("label",{className:"connector-log-policy cn-field-wide",htmlFor:"cn-store-payload",children:[(0,t.jsx)("input",{id:"cn-store-payload",type:"checkbox",checked:r.storePayload,onChange:a=>h({storePayload:a.currentTarget.checked})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:e("connectors.storePayload")}),(0,t.jsx)("small",{children:e("connectors.storePayloadHint")})]})]}),(0,t.jsxs)("label",{className:"connector-log-policy cn-field-wide",htmlFor:"cn-suppress-final",children:[(0,t.jsx)("input",{id:"cn-suppress-final",type:"checkbox",checked:r.suppressFinalOutput,onChange:a=>h({suppressFinalOutput:a.currentTarget.checked})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:e("connectors.suppressFinalOutput")}),(0,t.jsx)("small",{children:e("connectors.suppressFinalOutputHint")})]})]}),(0,t.jsxs)("div",{className:"cn-field",children:[(0,t.jsx)(T,{children:e("connectors.fVerify")}),(0,t.jsx)(pe,{id:"cn-verify",label:e("connectors.fVerify"),value:r.verify,options:ke,onChange:a=>h({verify:a})})]}),(0,t.jsxs)("label",{className:"cn-field",htmlFor:"cn-secret",children:[(0,t.jsx)(T,{children:e("connectors.fSecret")}),(0,t.jsx)("input",{id:"cn-secret",value:r.secret,onChange:a=>h({secret:a.currentTarget.value}),placeholder:e(x?"connectors.fSecretEditPh":"connectors.fSecretPh")})]})]}),U?(0,t.jsx)("p",{className:`connector-create-message${U.error?" err":""}`,children:U.text}):null]})}),(0,t.jsx)("footer",{className:"connector-modal-actions",children:J?(0,t.jsx)("button",{type:"button",className:"primary",onClick:P,children:e("connectors.close")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",disabled:X,onClick:P,children:e("connectors.cancel")}),(0,t.jsx)("button",{id:"cn-create",type:"button",className:"primary",disabled:X,onClick:()=>{ae()},children:e(x?"connectors.btnSave":"connectors.btnCreate")})]})})]})}),(0,t.jsx)("section",{className:"overview-block connector-section connector-list-section",children:(0,t.jsx)("div",{className:"card connector-list-card",children:$?(0,t.jsx)(ie,{className:"connector-list-loading",label:e("connectors.loading"),compact:!0}):(0,t.jsx)(Ye,{connectors:R,bots:N,copiedId:g,editMsg:ee,groupName:z,modeLabel:Q,kindLabel:oe,onCopy:Ae,onEdit:ne,onToggle:a=>{se(a)},onTogglePayloadLogging:a=>{ve(a)},onDelete:a=>{$e(a)}})})})]}):(0,t.jsx)(Ee,{embedded:!0})]})}function Ve(o){let e=_(),s=o.created,d=s.isDynamic?`${s.url}?chatId=${s.exampleChat}`:s.url,f=s.exampleChat!=="<chatId>"?`\uFF08${o.groupName(s.exampleChat)}\uFF09`:"";return(0,t.jsx)("div",{className:"connector-created-wrap",children:(0,t.jsxs)("div",{className:"card connector-created-card",children:[(0,t.jsxs)("p",{className:"connector-created-title ok",children:[e(s.rotated?"connectors.rotatedPrefix":"connectors.createdPrefix",{name:s.name}),s.mode==="fixed"&&s.chatId?(0,t.jsxs)("span",{className:"muted",children:[" \xB7 ",e("connectors.createdDest",{name:o.groupName(s.chatId)})]}):null]}),(0,t.jsxs)("p",{className:"connector-created-line",children:[(0,t.jsx)("span",{className:"muted",children:e("connectors.webhookUrl")}),(0,t.jsx)("code",{children:s.url})]}),s.secret?(0,t.jsxs)("p",{className:"connector-created-line",children:[(0,t.jsxs)("span",{className:"muted",children:[s.isToken?e("connectors.tokenLabel"):e("connectors.signLabel"),e("connectors.secretOnce")]}),(0,t.jsx)("code",{children:s.secret})]}):null,s.isToken&&s.isDynamic?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted connector-created-help",children:e("connectors.usageDynamicLede",{gn:f})}),(0,t.jsx)("pre",{children:(0,t.jsx)("code",{children:`curl -X POST '${d}' -H 'content-type: application/json' -d '{}'`})}),(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageDynamicNote")}})]}):s.isToken?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"muted connector-created-help",children:e("connectors.usageTokenLede")}),(0,t.jsx)("pre",{children:(0,t.jsx)("code",{children:`curl -X POST '${d}' -H 'content-type: application/json' -d '{}'`})}),(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageTokenNote")}})]}):(0,t.jsx)("p",{className:"muted connector-created-help",dangerouslySetInnerHTML:{__html:e("connectors.usageHmac")+(s.isDynamic?e("connectors.usageHmacDynamic"):"")}})]})})}function Ye(o){let e=_();return o.connectors.length?(0,t.jsx)(t.Fragment,{children:o.connectors.map(s=>{let d=o.bots.find(L=>L.larkAppId===s.target.botId),f=be(s.id),N=(s.verify?.type??"token")==="token",y=e(N?"connectors.badgeToken":"connectors.badgeSign"),I=s.target.mode==="fixed"&&s.target.chatId?e("connectors.dest",{name:o.groupName(s.target.chatId)}):"",k=o.editMsg?.id===s.id?o.editMsg:null,R=o.copiedId===s.id;return(0,t.jsxs)("div",{className:"card connector-item-card",children:[(0,t.jsxs)("div",{className:"connector-item-head",children:[(0,t.jsxs)("div",{className:"connector-item-main",children:[(0,t.jsxs)("div",{className:"connector-item-title",children:[(0,t.jsx)("b",{children:s.name}),(0,t.jsx)("span",{className:s.enabled?"connector-status-pill ok":"connector-status-pill muted",children:s.enabled?e("connectors.enabled"):e("connectors.disabled")})]}),(0,t.jsxs)("div",{className:"connector-item-meta",children:[(0,t.jsx)("span",{children:d?.botName||s.target.botId}),(0,t.jsx)("span",{children:o.kindLabel(s.target.kind)}),(0,t.jsx)("span",{children:o.modeLabel(s.target.mode)}),I?(0,t.jsx)("span",{children:I}):null,(0,t.jsx)("span",{children:y}),(0,t.jsx)("span",{children:s.loggingPolicy?.storePayload!==!1?e("connectors.payloadLogged",{days:s.loggingPolicy?.retentionDays??14}):e("connectors.metadataOnly")})]})]}),(0,t.jsx)("button",{className:`ghost connector-copy-button${R?" copied":""}`,type:"button",onClick:()=>o.onCopy(s),children:e(R?"connectors.copied":"connectors.copy")})]}),(0,t.jsxs)("div",{className:"connector-url-row",children:[(0,t.jsx)("span",{className:"muted",children:e("connectors.webhookUrl")}),(0,t.jsxs)("code",{children:[f,N?"/<token>":""]})]}),N?(0,t.jsx)("div",{className:"muted connector-item-note",dangerouslySetInnerHTML:{__html:e("connectors.tokenHint")}}):null,s.target.kind==="workflow"?(0,t.jsx)("div",{className:"muted connector-item-note",children:e("connectors.legacyWorkflowNote")}):null,s.target.mode==="dynamic"?(0,t.jsx)("div",{className:"muted connector-item-note",dangerouslySetInnerHTML:{__html:e("connectors.dynamicReqHint")}}):null,s.promptEnvelope?.instruction?(0,t.jsxs)("div",{className:"muted connector-item-note",children:[e("connectors.instructionPrefix"),s.promptEnvelope.instruction]}):null,(0,t.jsx)("div",{className:"muted connector-item-note",children:s.topicMessage?.mode==="none"?e("connectors.topicMessageListNone"):s.topicMessage?.mode==="custom"||s.topicMessage?.mode==="template"?e("connectors.topicMessageListCustom",{text:s.topicMessage.text||""}):e("connectors.topicMessageListDefault")}),k?(0,t.jsx)("div",{className:k.error?"err connector-item-note":"muted connector-item-note",children:k.text}):null,(0,t.jsxs)("div",{className:"connector-item-actions",children:[(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onEdit(s),children:e("connectors.btnEdit")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onTogglePayloadLogging(s),children:s.loggingPolicy?.storePayload!==!1?e("connectors.btnDisablePayloadLog"):e("connectors.btnEnablePayloadLog")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onToggle(s),children:s.enabled?e("connectors.btnDisable"):e("connectors.btnEnable")}),(0,t.jsx)("button",{className:"ghost",type:"button",onClick:()=>o.onDelete(s),children:e("connectors.btnDel")})]})]},s.id)})}):(0,t.jsx)("p",{className:"muted connector-list-empty",children:e("connectors.empty")})}function gt(o){return re(o,(0,t.jsx)(Oe,{tab:"webhooks"}))}function mt(o){return re(o,(0,t.jsx)(Oe,{tab:"logs"}))}export{ut as buildConnectorInstructionUpdateBody,je as buildConnectorKindOptions,Ke as buildConnectorTopicMessageConfig,mt as renderConnectorsLogsPage,gt as renderConnectorsPage,Xe as replaceConnectorById};