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
@@ -0,0 +1,10 @@
1
+ import{b as Qt}from"./chunk-6O7KXFD2.js";import{c as G}from"./chunk-2WQDS65D.js";import{a as Tt,b as ft,c as kt,g as _t,h as qt,j as Jt,k as Vt,q as It}from"./chunk-5CJMHTT4.js";import{a as Dt}from"./chunk-G5XGBCM6.js";import{A as Gt,B as jt,b as Ut,r as Ft,w as xt,x as bt}from"./chunk-Q2MT4VWH.js";import{a as Ht}from"./chunk-SYC6D5XU.js";import{a as Ce,b as Se,d as Wt}from"./chunk-5THX4DI2.js";import{c as vt}from"./chunk-7SZRL6FY.js";var n=vt(Ce(),1),fe=vt(Se(),1);var zt=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],mt={options:zt,ttadkModelDefault:"glm-5.1",ttadkModelSuggestions:[]};function Ct(a,e){return typeof a?.cliId=="string"&&a.cliId?a.cliId:e}function Pt(a){let e=null;for(let o of Dt.sessions.values())o.larkAppId!==a||!o.cliId||(!e||Number(o.lastMessageAt??0)>Number(e.lastMessageAt??0))&&(e=o);return e?.cliId??""}function Rt(a,e){let o=typeof a.agentSelectionKey=="string"&&a.agentSelectionKey?a.agentSelectionKey:"";return o||Ct(a,e)||"claude-code"}function wt(a,e){return a.find(o=>o.id===e)}function Kt(a,e){return a?.gateway==="ttadk"&&a.acceptsModel!==!1?e.ttadkModelSuggestions:[]}function Xt(){let a=0;return{begin(){let e=++a;return{commit:()=>e===a}}}}async function Zt(){try{let a=await fetch("/api/bots"),e=await a.json().catch(()=>({}));if(!a.ok){let o=e?.error?`HTTP ${a.status}: ${e.error}${e.path?` (${e.path})`:""}`:`HTTP ${a.status}`;return{bots:[],error:o}}return!e||!Array.isArray(e.bots)?{bots:[],error:"unexpected response shape (no `bots` array)"}:{bots:e.bots,error:null}}catch(a){return{bots:[],error:a?.message??String(a)}}}async function Yt(a,e){try{let o=await fetch(`/api/bots/${encodeURIComponent(a)}/substitute-targets/resolve`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:e})}),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 te(){try{let a=await fetch("/api/cli-options"),e=await a.json().catch(()=>({}));if(!a.ok||!Array.isArray(e?.options))return mt;let o=e.options.filter(l=>l&&typeof l.id=="string"&&typeof l.label=="string"),u=typeof e.ttadkModelDefault=="string"&&e.ttadkModelDefault.trim()?e.ttadkModelDefault.trim():mt.ttadkModelDefault,i=Array.isArray(e.ttadkModelSuggestions)?e.ttadkModelSuggestions.filter(l=>typeof l=="string"):[];return{options:o.length?o:zt,ttadkModelDefault:u,ttadkModelSuggestions:i}}catch{return mt}}function ee(a){if(!a)return"\u2014";let e=new Date(a);return Number.isNaN(e.getTime())?"\u2014":e.toLocaleString()}var ae=[3600*1e3,480*60*1e3,1440*60*1e3,10080*60*1e3];var Mt=["low","medium","high","xhigh","max","ultra"],Ne=Mt.slice(0,4),xe=new Set(["gpt-5.6-sol","gpt-5.6-terra"]),Te=new Set(["gpt-5.6-luna"]);function oe(a){let e=a?.trim().toLowerCase()??"";return xe.has(e)?Mt:Te.has(e)?Mt.slice(0,5):Ne}var t=vt(Wt(),1);function Bt(a){let e=a.cliRuntime;if(!e||typeof e!="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=e.update?.provider,u=o==="self"||o==="npm"||o==="none"?o:"auto";return{mode:"custom",id:typeof e.id=="string"?e.id:"",displayName:typeof e.displayName=="string"?e.displayName:"",executable:typeof e.executable=="string"?e.executable:"",legacyPath:"",updateProvider:u,packageName:e.update?.provider==="npm"&&typeof e.update.packageName=="string"?e.update.packageName:""}}var gt=["common","sessions","security","cards","advanced"];function Ie(a){let e=G(),o=(0,n.useRef)([]),u={common:e("botDefaults.tabCommon"),sessions:e("botDefaults.tabSessions"),security:e("botDefaults.tabSecurity"),cards:e("botDefaults.tabCards"),advanced:e("botDefaults.tabAdvanced")};function i(l){let m=(l+gt.length)%gt.length,s=gt[m];a.onChange(s),o.current[m]?.focus()}return(0,t.jsxs)("nav",{className:"bd-tab-bar","aria-label":e("botDefaults.tabNavigation"),children:[(0,t.jsx)("div",{className:"bd-tabs",role:"tablist",children:gt.map((l,m)=>(0,t.jsx)("button",{ref:s=>{o.current[m]=s},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:s=>{s.key==="ArrowRight"?(s.preventDefault(),i(m+1)):s.key==="ArrowLeft"?(s.preventDefault(),i(m-1)):s.key==="Home"?(s.preventDefault(),i(0)):s.key==="End"&&(s.preventDefault(),i(gt.length-1))},children:u[l]},l))}),(0,t.jsx)("small",{className:"bd-tab-hint",children:e("botDefaults.tabHint")})]})}var Pe=1,ne=14;function yt(a){let e=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let o=e.current;if(!o||typeof window>"u")return;let u=s=>{for(let b of s)b.style.gridColumn="",b.style.gridRowStart="",b.style.gridRowEnd=""},i=()=>{let s=Array.from(o.children).filter(N=>N instanceof HTMLElement);if(!s.length)return;let b=o.clientWidth;if(b<=0)return;let p=(o.closest(".bd-detail")?.clientWidth??b)>=1024?2:1;if(p<2){u(s);return}let d=Pe+ne,g=new Array(p).fill(0);for(let N of s){let D=Math.max(1,Math.ceil((N.getBoundingClientRect().height+ne)/d));if(N.classList.contains("bd-tile-wide")){let C=Math.max(...g);N.style.gridColumn="1 / -1",N.style.gridRowStart=String(C+1),N.style.gridRowEnd=String(C+1+D),g.fill(C+D);continue}let y=0;for(let C=1;C<p;C++)g[C]<g[y]&&(y=C);let v=g[y];N.style.gridColumn=String(y+1),N.style.gridRowStart=String(v+1),N.style.gridRowEnd=String(v+1+D),g[y]=v+D}},l=window.requestAnimationFrame(i),m=typeof ResizeObserver<"u"?new ResizeObserver(()=>i()):null;if(m){m.observe(o);for(let s of Array.from(o.children))m.observe(s)}return window.addEventListener("resize",i),()=>{window.cancelAnimationFrame(l),m?.disconnect(),window.removeEventListener("resize",i)}}),(0,t.jsx)("div",{ref:e,className:a.className?`bd-tab-grid ${a.className}`:"bd-tab-grid",children:a.children})}function Lt(a,e=""){let o=a?` ${a.ok?"hint-ok":"hint-warn-inline"}`:"";return`oncall-status${e?` ${e}`:""}${o}`}function _(a){return(0,t.jsx)("span",{role:"status","aria-live":"polite",className:Lt(a.status),...a.attr??{},children:a.status?.text??""})}function Re(a){let e=typeof a.children=="string"?a.children:void 0;return(0,t.jsx)(Jt,{className:"bd-info-tip",label:e,children:a.children})}function $(a){return(0,t.jsxs)("span",{className:"bd-field-title",children:[(0,t.jsx)("span",{className:"bd-field-title-text",children:a.children}),a.help?(0,t.jsx)(Re,{children:a.help}):null]})}function et(a){let e=G();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(It,{id:`bd-menu-${a.dataInput}`,className:["bd-field-menu",a.className].filter(Boolean).join(" "),ariaLabel:a.ariaLabel,disabled:a.disabled,label:Tt(a.options,a.value),value:a.value,options:a.options,searchable:a.searchable,searchPlaceholder:a.searchable?e("common.dropdownSearch"):void 0,searchEmptyLabel:a.searchable?e("common.dropdownSearchEmpty"):void 0,onChange:a.onChange}),(0,t.jsx)("input",{type:"hidden","data-input":a.dataInput,value:a.value,readOnly:!0})]})}function at(a){return(0,t.jsxs)("label",{className:a.className?`toggle-row ${a.className}`:"toggle-row",children:[(0,t.jsx)("input",{type:"checkbox","data-action":a.dataAction,checked:a.checked,disabled:a.disabled,onChange:e=>a.onChange(e.currentTarget.checked)}),(0,t.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,t.jsxs)("span",{className:"toggle-tx",children:[(0,t.jsx)("strong",{children:(0,t.jsx)($,{help:a.help,children:a.title})}),a.description?(0,t.jsx)("small",{children:a.description}):null]})]})}async function q(a,e,o){let u=await fetch(e,{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 j(a){let e=typeof a.body?.reason=="string"?a.body.reason:"",o=typeof a.body?.manualCommand=="string"?a.body.manualCommand:"";return e&&o?`${e}\uFF08${o}\uFF09`:String(e||a.body?.error||a.status)}function E(a){return a?.message??String(a)}function me(a){let e=a.trim();return e?/^[1-9]\d*$/.test(e)?Number(e):"invalid":null}function se(a,e){let o=a.trim();return o===""?e:/^(0|[1-9]\d*)$/.test(o)?Number(o):null}var Et=["email","openId","userId","unionId"];function le(a){let e=a.split(/[\r\n,,;;]+/).map(o=>o.trim()).filter(Boolean);return[...new Set(e)]}function ct(a){return(a??[]).join(`
2
+ `)}function we(a){return Et.find(e=>a?.[e]?.trim())??"email"}function Me(a){let e=a.idValue.trim();if(!e)return null;let o={...a.persisted};if(a.persisted[a.idField]!==e||a.originalIdField!=null&&a.originalIdField!==a.idField)for(let l of Et)delete o[l];o[a.idField]=e;let i=a.name.trim();return i?o.name=i:delete o.name,o}function Be(a,e){return a==null?e("botDefaults.brandStateDefault"):a.trim()===""?e("botDefaults.brandStateOff"):e("botDefaults.brandStateCustom")}var Ae=ae;function Oe(a,e){return a==null?e("botDefaults.maxLiveWorkersStateDefault"):e("botDefaults.maxLiveWorkersStateOn",{count:a})}function $e(a,e){return{...a,usageDisplay:e.usageDisplay,disableStreamingCard:e.disableStreamingCard,silentTurnReactions:e.silentTurnReactions,codexAppCleanInput:e.codexAppCleanInput,writableTerminalLinkInCard:e.writableTerminalLinkInCard,privateCard:e.privateCard,summaryMemory:e.summaryMemory,summaryMemoryPath:e.summaryMemoryPath,botToBotSameDir:e.botToBotSameDir,autoStartOnGroupJoin:e.autoStartOnGroupJoin,autoStartOnGroupJoinPrompt:e.autoStartOnGroupJoinPrompt,autoStartOnNewTopic:e.autoStartOnNewTopic,regularGroupReplyMode:e.regularGroupReplyMode,regularGroupMentionMode:e.regularGroupMentionMode,docSubscribeDefaultMode:e.docSubscribeDefaultMode}}function Le(){let a=G(),e=(0,n.useRef)(!0),o=(0,n.useRef)(Xt()),[u,i]=(0,n.useState)([]),[l,m]=(0,n.useState)(mt),[s,b]=(0,n.useState)(null),[r,f]=(0,n.useState)(!0),[p,d]=(0,n.useState)(!1),[g,N]=(0,n.useState)(""),[D,y]=(0,n.useState)(null),[v,C]=(0,n.useState)(0),[,h]=(0,n.useState)(0),[x,S]=(0,n.useState)(!1),[c,A]=(0,n.useState)("common"),F=(0,n.useCallback)(async(T=!1)=>{T&&C(Y=>Y+1);let O=o.current.begin();f(!0);try{let[Y,U]=await Promise.all([Zt(),te()]);if(!e.current||!O.commit())return;i(Y.bots),b(Y.error),m(U)}finally{e.current&&O.commit()&&f(!1)}},[]);(0,n.useEffect)(()=>{e.current=!0,F(),jt().then(()=>{e.current&&h(O=>O+1)});let T=Dt.onBotsChanged(()=>{e.current&&F()});return()=>{e.current=!1,T()}},[F]);let H=(0,n.useMemo)(()=>{let T=g.trim().toLowerCase();return u.filter(O=>!T||(O.botName??"").toLowerCase().includes(T)||(O.larkAppId??"").toLowerCase().includes(T))},[u,g]);(0,n.useEffect)(()=>{if(!(s||r)){if(H.length===0){D!==null&&y(null);return}(!D||!H.some(T=>T.larkAppId===D))&&y(H[0].larkAppId)}},[H,s,r,D]);let w=D?H.find(T=>T.larkAppId===D)??null:null,z=(0,n.useCallback)((T,O)=>{i(Y=>Y.map(U=>U.larkAppId!==T?U:typeof O=="function"?O(U):{...U,...O}))},[]),Q=async()=>{d(!0);try{await F(!0)}finally{e.current&&d(!1)}},Z;return r?Z=(0,t.jsx)(kt,{label:a("common.loading")}):s?Z=(0,t.jsxs)("p",{className:"hint-warn",children:["\u65E0\u6CD5\u52A0\u8F7D bot \u5217\u8868\uFF1A",s,(0,t.jsx)("br",{}),"\u5E38\u89C1\u539F\u56E0\uFF1Adashboard / daemon \u8FDB\u7A0B\u8FD8\u5728\u8DD1\u65E7\u4EE3\u7801\uFF0C\u6267\u884C ",(0,t.jsx)("code",{children:"botmux restart"})," \u540E\u5237\u65B0\u3002"]}):H.length===0?Z=(0,t.jsx)("p",{className:"empty",children:a("botDefaults.empty")}):w?Z=(0,t.jsx)(Ue,{bot:w,cliState:l,patchBot:z,activeTab:c,onTabChange:A},`${w.larkAppId}:${v}`):Z=null,(0,t.jsxs)("section",{className:"page bot-defaults-page",children:[(0,t.jsxs)("div",{className:"page-heading",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"eyebrow",children:a("nav.botDefaults")}),(0,t.jsx)("h1",{children:a("botDefaults.title")})]}),(0,t.jsxs)("div",{className:"page-heading-actions",children:[(0,t.jsx)(qt,{id:"bd-refresh",label:a("botDefaults.refresh"),busy:p,disabled:p,onClick:()=>{Q()}}),Ft.authed?(0,t.jsx)(_t,{className:"page-primary-action add-bot-btn",disabled:x,onClick:()=>{S(!0),Qt().finally(()=>S(!1))},children:a("botOnboarding.add")}):null]})]}),(0,t.jsxs)("div",{className:"bd-layout",children:[(0,t.jsxs)("aside",{id:"bd-roster",className:"bd-roster",children:[(0,t.jsx)("form",{id:"bd-filters",className:"filters dashboard-toolbar",onSubmit:T=>T.preventDefault(),children:(0,t.jsx)("input",{type:"search",name:"q",placeholder:a("botDefaults.search"),value:g,onChange:T=>N(T.currentTarget.value)})}),(0,t.jsxs)("div",{className:"bd-roster-meta",children:[(0,t.jsx)("span",{children:a("botDefaults.rosterCount",{count:H.length})}),g.trim()&&H.length!==u.length?(0,t.jsx)("span",{children:a("botDefaults.rosterFiltered",{total:u.length})}):null]}),(0,t.jsx)("div",{className:"bd-roster-list",children:!s&&H.map(T=>(0,t.jsx)(Ee,{bot:T,selected:T.larkAppId===D,onSelect:()=>y(T.larkAppId)},T.larkAppId))})]}),(0,t.jsx)("div",{id:"bd-list",className:"bd-detail",children:Z})]})]})}function Ee(a){let{bot:e}=a,o=e.botName??e.larkAppId,u=Ct(e,Pt(e.larkAppId));return(0,t.jsxs)("div",{className:`bd-roster-item${a.selected?" on":""}`,"data-appid":e.larkAppId,role:"button",tabIndex:0,onClick:a.onSelect,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),a.onSelect())},children:[(0,t.jsx)(ft,{html:bt({name:o,larkAppId:e.larkAppId,size:"sm"})}),(0,t.jsxs)("div",{className:"bd-roster-tx",children:[(0,t.jsx)("b",{children:(0,t.jsx)(Vt,{text:o,showPopover:!1,textClassName:"bd-roster-name"})}),(0,t.jsx)("span",{children:u||e.larkAppId.slice(0,14)})]}),e.defaultOncall?.enabled?(0,t.jsx)("span",{className:"bd-roster-flag",children:"oncall"}):null]})}function Ue(a){let e=G(),{bot:o,cliState:u,patchBot:i}=a,l=o.botName??o.larkAppId,m=Ct(o,Pt(o.larkAppId)),s=(0,n.useCallback)(async r=>{let f=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/card-prefs`,r);return f.ok&&i(o.larkAppId,p=>$e(p,f.body)),f},[o.larkAppId,i]);if(o.error)return(0,t.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,t.jsxs)("header",{className:"bd-profile-head",children:[(0,t.jsx)(ft,{html:bt({name:l,larkAppId:o.larkAppId})}),(0,t.jsxs)("div",{className:"bd-profile-id",children:[(0,t.jsx)("strong",{children:l}),(0,t.jsx)("code",{children:o.larkAppId})]})]}),(0,t.jsxs)("p",{className:"hint-warn-inline",children:["\u67E5\u8BE2\u5931\u8D25\uFF1A",o.error]})]});let b=o.defaultOncall??{enabled:!1,workingDir:"",since:0};return(0,t.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,t.jsxs)("div",{className:"bd-profile-chrome",children:[(0,t.jsxs)("header",{className:"bd-profile-head",children:[(0,t.jsx)(He,{bot:o,name:l,patchBot:i}),(0,t.jsx)("div",{className:"bd-profile-main",children:(0,t.jsx)(We,{bot:o,cli:m,patchBot:i,meta:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("small",{className:"bd-meta-ok",children:["\u25CF ",e("botDefaults.metaOnline")]}),(b.since??0)>0?(0,t.jsxs)("small",{"data-oncall-since":!0,children:[e("botDefaults.lastEnabled"),": ",ee(b.since??0)]}):null,(o.autoboundChatCount??0)>0?(0,t.jsx)("small",{children:e("botDefaults.autobound",{count:o.autoboundChatCount??0})}):null]})})})]}),(0,t.jsx)(Ie,{active:a.activeTab,onChange:a.onTabChange})]}),(0,t.jsxs)("div",{className:"bd-body bd-tab-panels",children:[(0,t.jsx)("div",{id:"bd-panel-common",role:"tabpanel","aria-labelledby":"bd-tab-common",className:"bd-tab-panel",hidden:a.activeTab!=="common",children:(0,t.jsxs)(yt,{children:[(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(_e,{bot:o,sessionFallback:m,cliState:u,patchBot:i})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(qe,{bot:o,patchBot:i,putCardPref:s})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(Ye,{bot:o,patchBot:i})})]})}),(0,t.jsx)("div",{id:"bd-panel-sessions",role:"tabpanel","aria-labelledby":"bd-tab-sessions",className:"bd-tab-panel",hidden:a.activeTab!=="sessions",children:(0,t.jsxs)(yt,{children:[(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(la,{bot:o,patchBot:i,putCardPref:s})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(ia,{bot:o,patchBot:i})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(na,{bot:o,putCardPref:s})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(ua,{bot:o,patchBot:i})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(da,{bot:o,patchBot:i})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(sa,{bot:o,patchBot:i,putCardPref:s})})]})}),(0,t.jsx)("div",{id:"bd-panel-security",role:"tabpanel","aria-labelledby":"bd-tab-security",className:"bd-tab-panel",hidden:a.activeTab!=="security",children:(0,t.jsxs)(yt,{children:[o.cliId!=="riff"?(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(Ve,{bot:o,patchBot:i})}):null,o.cliId!=="riff"&&o.sandbox===!0?(0,t.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,t.jsx)(Ke,{bot:o,patchBot:i})}):null,(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(va,{bot:o,patchBot:i})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(ca,{bot:o,patchBot:i})})]})}),(0,t.jsx)("div",{id:"bd-panel-cards",role:"tabpanel","aria-labelledby":"bd-tab-cards",className:"bd-tab-panel",hidden:a.activeTab!=="cards",children:(0,t.jsxs)(yt,{children:[(0,t.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,t.jsx)(ea,{bot:o,putCardPref:s})}),(0,t.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,t.jsx)(Fe,{bot:o,patchBot:i})}),(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(ha,{bot:o,patchBot:i})})]})}),(0,t.jsx)("div",{id:"bd-panel-advanced",role:"tabpanel","aria-labelledby":"bd-tab-advanced",className:"bd-tab-panel",hidden:a.activeTab!=="advanced",children:(0,t.jsxs)(yt,{children:[o.cliId!=="riff"?(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(Ze,{bot:o,patchBot:i})}):null,o.cliId==="codex-app"?(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(aa,{bot:o,putCardPref:s})}):null,o.cliId==="claude-code"?(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(oa,{bot:o,patchBot:i})}):null,(0,t.jsx)("section",{className:"bd-tile",children:(0,t.jsx)(Ge,{bot:o,patchBot:i})})]})})]})]})}function Fe(a){let e=a.bot.feedback?.enabled===!0,[o,u]=(0,n.useState)(e),[i,l]=(0,n.useState)(JSON.stringify(a.bot.feedback??{enabled:!0},null,2)),[m,s]=(0,n.useState)(null),[b,r]=(0,n.useState)(!1),[f,p]=(0,n.useState)(""),[d,g]=(0,n.useState)([]),[N,D]=(0,n.useState)(null);(0,n.useEffect)(()=>{u(a.bot.feedback?.enabled===!0),l(JSON.stringify(a.bot.feedback??{enabled:!0},null,2))},[a.bot.feedback]),(0,n.useEffect)(()=>{Ut().then(h=>{g(h.chats.filter(x=>x.memberBots.some(S=>S.larkAppId===a.bot.larkAppId&&S.inChat)))}).catch(()=>g([]))},[a.bot.larkAppId]);async function y(h=o){r(!0),s(null);try{let x={enabled:!1};if(h){let c=JSON.parse(i);if(!c||typeof c!="object"||Array.isArray(c))throw new Error("\u9AD8\u7EA7 JSON \u5FC5\u987B\u662F\u5BF9\u8C61");x={...c,enabled:!0}}let S=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/feedback`,{feedback:JSON.stringify(x)});if(!S.ok)throw new Error(j(S));a.patchBot(a.bot.larkAppId,{feedback:S.body.feedback??null}),s({text:"\u2713 \u5DF2\u4FDD\u5B58",ok:!0})}catch(x){s({text:`\u2717 ${E(x)}`})}finally{r(!1)}}async function v(){let h=f.trim()?`?chatId=${encodeURIComponent(f.trim())}`:"",x=await fetch(`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/feedback/effective${h}`),S=await x.json().catch(()=>({}));if(!x.ok)throw new Error(S?.error??`HTTP ${x.status}`);D(S.trace)}async function C(){if(!f.trim())return s({text:"\u2717 \u8BF7\u8F93\u5165\u804A\u5929 ID"});r(!0),s(null);try{let h=JSON.parse(i),x=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/chats/${encodeURIComponent(f.trim())}/feedback`,{feedback:h});if(!x.ok)throw new Error(j(x));await v(),s({text:"\u2713 \u804A\u5929\u8986\u76D6\u5DF2\u4FDD\u5B58",ok:!0})}catch(h){s({text:`\u2717 ${E(h)}`})}finally{r(!1)}}return(0,t.jsxs)("section",{className:"bd-section","aria-busy":b,children:[(0,t.jsx)("h3",{className:"bd-section-title",children:"\u6700\u7EC8\u56DE\u7B54\u53CD\u9988"}),(0,t.jsx)(at,{checked:o,disabled:b,title:"\u6700\u7EC8\u56DE\u7B54\u53CD\u9988",help:"\u9ED8\u8BA4\u5173\u95ED\uFF1B\u53EA\u5BF9\u8FD9\u4E2A bot \u7684\u6700\u7EC8\u56DE\u7B54\u751F\u6548",onChange:h=>{u(h),y(h)}}),(0,t.jsxs)("label",{className:"bd-row",children:[(0,t.jsx)("span",{children:"\u9AD8\u7EA7 JSON"}),(0,t.jsx)("textarea",{value:i,disabled:b||!o,rows:10,onChange:h=>l(h.target.value)})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary",disabled:b||!o,onClick:()=>{y()},children:"\u4FDD\u5B58\u53CD\u9988\u914D\u7F6E"}),(0,t.jsx)(_,{status:m})]}),(0,t.jsx)("h4",{children:"\u6BCF\u804A\u5929\u8986\u76D6"}),(0,t.jsxs)("label",{className:"bd-row",children:[(0,t.jsx)("span",{children:"\u804A\u5929"}),(0,t.jsxs)("select",{value:f,onChange:h=>p(h.target.value),children:[(0,t.jsx)("option",{value:"",children:"\u9009\u62E9\u804A\u5929"}),d.map(h=>(0,t.jsx)("option",{value:h.chatId,children:h.name||h.chatId},h.chatId))]})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",disabled:b||!f.trim(),onClick:()=>{C()},children:"\u4FDD\u5B58\u804A\u5929\u8986\u76D6"}),(0,t.jsx)("button",{type:"button",disabled:b,onClick:()=>{v()},children:"\u751F\u6548\u9884\u89C8"})]}),N?(0,t.jsx)("pre",{className:"code-block",children:JSON.stringify(N,null,2)}):null]})}function Ge(a){let e=G();return(0,t.jsxs)("section",{className:"bd-section bd-runtime-env",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionRuntimeEnv")}),(0,t.jsx)(ba,{bot:a.bot,patchBot:a.patchBot}),(0,t.jsx)(fa,{bot:a.bot,patchBot:a.patchBot})]})}var St=512;async function je(a){let e=await createImageBitmap(a);try{let o=Math.min(e.width,e.height);if(!o)throw new Error("empty image");let u=document.createElement("canvas");u.width=St,u.height=St;let i=u.getContext("2d");if(!i)throw new Error("canvas unavailable");let l=(e.width-o)/2,m=(e.height-o)/2;return i.drawImage(e,l,m,o,o,0,0,St,St),u.toDataURL("image/png")}finally{e.close()}}function He(a){let e=G(),{bot:o,name:u,patchBot:i}=a,l=(0,n.useRef)(null),[m,s]=(0,n.useState)(!1),[b,r]=(0,n.useState)(null),[f,p]=(0,n.useState)(!1),[d,g]=(0,n.useState)(!1),N=(0,n.useRef)(null);function D(C,h){let S=["no_session","session_expired","no_access","unsupported_brand"].includes(C)?e(`botDefaults.avatarWarn.${C}`):h||C;return e("botDefaults.avatarFailed",{error:S})}let y=(0,n.useCallback)(async C=>{s(!0),r({text:`\u23F3 ${e("botDefaults.avatarUploading")}`,ok:!0});try{let h=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/avatar`,{imageBase64:C});if(h.ok&&h.body.ok){let x=typeof h.body.avatarUrl=="string"?h.body.avatarUrl:"";x&&Gt(o.larkAppId,u,x),i(o.larkAppId,S=>({...S})),N.current=null,p(!1),r({text:`\u2713 ${e("botDefaults.avatarOkFeishu")}`,ok:!0})}else{let x=String(h.body?.error??""),S=typeof h.body?.message=="string"?h.body.message:void 0;r({text:`\u2717 ${D(x,S??j(h))}`});let c=x==="no_session"||x==="session_expired";p(c),c||(N.current=null)}}catch(h){r({text:`\u2717 ${e("botDefaults.avatarFailed",{error:E(h)})}`})}finally{s(!1)}},[o.larkAppId,u,i,e]);async function v(C){if(!C||m)return;s(!0);let h;try{h=await je(C)}catch{s(!1),r({text:`\u2717 ${e("botDefaults.avatarBadImage")}`});return}N.current=h,await y(h)}return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"bd-profile-avatar bd-avatar-editable","data-avatar-control":!0,children:[(0,t.jsxs)("button",{type:"button",className:"bd-avatar-btn","data-action":"edit-bot-avatar",title:e("botDefaults.avatarTitle"),"aria-label":e("botDefaults.avatarTitle"),disabled:m,onClick:()=>l.current?.click(),children:[(0,t.jsx)(ft,{html:bt({name:u,larkAppId:o.larkAppId,dot:"ok"})}),(0,t.jsx)("span",{className:"bd-avatar-edit-badge","aria-hidden":"true",children:m?"\u23F3":"\u270E"})]}),(0,t.jsx)("input",{ref:l,type:"file",accept:"image/*",hidden:!0,"data-input":"botAvatarFile",onChange:C=>{let h=C.currentTarget.files?.[0];C.currentTarget.value="",v(h)}}),d?(0,t.jsx)(pe,{onClose:()=>g(!1),onSuccess:()=>{p(!1),g(!1),N.current&&y(N.current)}}):null]}),b?(0,t.jsxs)("small",{className:Lt(b,"bd-avatar-status"),"data-avatar-status":!0,children:[b.text,f?(0,t.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login-avatar",onClick:()=>g(!0),children:e("feishuLogin.entry")}):null]}):null]})}function We(a){let e=G(),{bot:o,cli:u,patchBot:i}=a,l=o.botName??o.larkAppId,[m,s]=(0,n.useState)(!1),[b,r]=(0,n.useState)(l),[f,p]=(0,n.useState)(!1),[d,g]=(0,n.useState)(null),[N,D]=(0,n.useState)(!1),[y,v]=(0,n.useState)(!1);(0,n.useEffect)(()=>{m||r(l)},[m,l]);function C(S){s(S),S&&(r(l),g(null),D(!1))}function h(S,c){let F=["no_session","session_expired","no_access","unsupported_brand"].includes(S)?e(`botDefaults.renameWarn.${S}`):c||S;return e("botDefaults.renameLocalOnly",{reason:F})}let x=(0,n.useCallback)(async()=>{let S=b.trim();if(!S){g({text:`\u2717 ${e("botDefaults.renameEmpty")}`});return}p(!0),g({text:`\u23F3 ${e("botDefaults.renaming")}`,ok:!0});try{let c=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/rename`,{name:S});if(c.ok&&c.body.ok){let A=typeof c.body.botName=="string"&&c.body.botName?c.body.botName:S;i(o.larkAppId,F=>({...F,botName:A,larkBotName:c.body.mode==="feishu"?S:F.larkBotName,displayName:c.body.mode==="feishu"?null:S})),C(!1),c.body.mode==="feishu"?(g({text:`\u2713 ${e("botDefaults.renameOkFeishu")}`,ok:!0}),D(!1)):(g({text:`\u26A0 ${h(String(c.body.warning??""),c.body.message)}`}),D(c.body.warning==="no_session"||c.body.warning==="session_expired"))}else g({text:`\u2717 ${e("botDefaults.renameFailed",{error:j(c)})}`})}catch(c){g({text:`\u2717 ${e("botDefaults.renameFailed",{error:E(c)})}`})}finally{p(!1)}},[o.larkAppId,b,i,e]);return(0,t.jsxs)("div",{className:"bd-profile-id",children:[m?(0,t.jsxs)("span",{className:"bd-name-editor","data-name-editor":!0,children:[(0,t.jsx)("input",{type:"text",className:"bd-name-input","data-input":"botRename",maxLength:64,value:b,disabled:f,autoFocus:!0,onChange:S=>r(S.currentTarget.value),onKeyDown:S=>{S.key==="Enter"?(S.preventDefault(),x()):S.key==="Escape"&&C(!1)}}),(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-bot-name",disabled:f,onClick:()=>{x()},children:e("botDefaults.renameSave")}),(0,t.jsx)("button",{type:"button","data-action":"cancel-bot-name",disabled:f,onClick:()=>C(!1),children:e("botDefaults.renameCancel")})]}):(0,t.jsxs)("div",{className:"bd-profile-title-row","data-name-row":!0,children:[(0,t.jsxs)("div",{className:"bd-profile-title-content",children:[(0,t.jsx)("strong",{"data-bot-name":!0,children:l}),u?(0,t.jsx)("span",{className:"mate-role bd-profile-cli-tag",children:u}):null,a.meta?(0,t.jsx)("span",{className:"bd-profile-meta bd-meta",children:a.meta}):null]}),(0,t.jsx)("button",{type:"button",className:"bd-name-edit","data-action":"edit-bot-name",title:e("botDefaults.renameTitle"),"aria-label":e("botDefaults.renameTitle"),onClick:()=>C(!0),children:(0,t.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,t.jsx)("path",{d:"M11.5 2.5l2 2L6 12l-2.5.5L4 10z"})})})]}),(0,t.jsxs)("div",{className:"bd-profile-appid-row",children:[(0,t.jsx)("code",{children:o.larkAppId}),xt(o.larkAppId,o.brand)?(0,t.jsxs)("a",{className:"bd-console-link",href:xt(o.larkAppId,o.brand),target:"_blank",rel:"noopener noreferrer",children:[e("botDefaults.openConsole"),(0,t.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,t.jsx)("path",{d:"M7 17 17 7M9 7h8v8"})})]}):null]}),(0,t.jsx)("small",{className:Lt(d,"bd-name-status"),"data-name-status":!0,children:d?.text??""}),(0,t.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login",hidden:!N,onClick:()=>v(!0),children:e("feishuLogin.entry")}),y?(0,t.jsx)(pe,{onClose:()=>v(!1),onSuccess:()=>{D(!1),v(!1),x()}}):null]})}function pe(a){let e=G(),{onClose:o,onSuccess:u}=a,i=(0,n.useRef)(null),l=(0,n.useRef)(null),[m,s]=(0,n.useState)(e("feishuLogin.starting")),[b,r]=(0,n.useState)(null),[f,p]=(0,n.useState)(!1),d=(0,n.useCallback)(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null)},[]),g=(0,n.useCallback)(y=>y?y.status==="awaiting_scan"&&y.qrDataUrl?(r(y.qrDataUrl),s(y.message||e("feishuLogin.scanHint")),p(!1),"active"):y.status==="starting"?(s(y.message||e("feishuLogin.starting")),r(null),p(!1),"active"):y.status==="success"?(d(),r(null),p(!1),s(e("feishuLogin.success")),l.current=window.setTimeout(()=>u(),900),"done"):(d(),r(null),s(e("feishuLogin.failed",{reason:y.message||y.reason||""})),p(!0),"done"):"active",[u,d,e]),N=(0,n.useCallback)(async()=>{try{let v=await(await fetch("/api/feishu-login/status")).json().catch(()=>({}));g(v.login)}catch{}},[g]),D=(0,n.useCallback)(async()=>{d(),s(e("feishuLogin.starting")),r(null),p(!1);let y="active";try{let C=await(await fetch("/api/feishu-login/start",{method:"POST"})).json().catch(()=>({}));y=g(C.login)}catch(v){s(e("feishuLogin.failed",{reason:E(v)})),p(!0);return}y==="active"&&i.current===null&&(i.current=window.setInterval(()=>{N()},1500))},[N,g,d,e]);return(0,n.useEffect)(()=>(D(),()=>{d(),l.current!==null&&window.clearTimeout(l.current)}),[D,d]),typeof document>"u"?null:(0,fe.createPortal)((0,t.jsx)("div",{className:"feishu-login-overlay",onClick:y=>{y.currentTarget===y.target&&o()},children:(0,t.jsxs)("div",{className:"feishu-login-modal",role:"dialog","aria-modal":"true",children:[(0,t.jsx)("button",{type:"button",className:"feishu-login-close","data-close":!0,"aria-label":e("feishuLogin.close"),onClick:o,children:"x"}),(0,t.jsx)("h3",{className:"feishu-login-title",children:e("feishuLogin.title")}),(0,t.jsx)("p",{className:"feishu-login-hint","data-hint":!0,children:m}),(0,t.jsx)("div",{className:"feishu-login-qr","data-qr":!0,children:b?(0,t.jsx)("img",{className:"qr-image",src:b,alt:e("feishuLogin.qrAlt")}):null}),(0,t.jsx)("div",{className:"feishu-login-actions",children:(0,t.jsx)("button",{type:"button",className:"primary","data-retry":!0,hidden:!f,onClick:()=>{D()},children:e("feishuLogin.retry")})})]})}),document.body)}function _e(a){let e=G(),{bot:o,cliState:u,patchBot:i}=a,l=Rt(o,a.sessionFallback),m=JSON.stringify([o.cliRuntime??null,o.cliPathOverride??null]),[s,b]=(0,n.useState)(l),[r,f]=(0,n.useState)(!1),[p,d]=(0,n.useState)(typeof o.model=="string"?o.model:""),[g,N]=(0,n.useState)(o.reasoningEffort??""),[D,y]=(0,n.useState)(()=>Bt(o)),[v,C]=(0,n.useState)(!1),[h,x]=(0,n.useState)(null),[S,c]=(0,n.useState)(null),[A,F]=(0,n.useState)(!1),[H,w]=(0,n.useState)(ie(o)),[z,Q]=(0,n.useState)(null),[Z,T]=(0,n.useState)(!1);(0,n.useEffect)(()=>{b(Rt(o,a.sessionFallback)),f(!1),d(typeof o.model=="string"?o.model:""),N(o.reasoningEffort??""),y(Bt(o)),C(!1),w(ie(o))},[o.agentSelectionKey,o.cliId,o.larkAppId,o.model,o.reasoningEffort,m,o.wrapperCli,o.skillInjection,o.skillInjectionDefault,a.sessionFallback]);let O=wt(u.options,s),Y=Kt(O,u),U=O?.gateway==="ttadk"&&O.acceptsModel===!1,M=U?e("botOnboarding.modelTtadkCocoPlaceholder"):O?.gateway==="ttadk"?e("botOnboarding.modelTtadkPlaceholder").replace("{model}",u.ttadkModelDefault):e("botDefaults.agentModelPlaceholder");function k(I){let X=s;b(I),f(!0),I!==X&&(I!=="codex"||X!=="codex")&&(y(Bt({cliRuntime:null,cliPathOverride:null})),C(!0),x(null));let W=wt(u.options,I),rt=W?.gateway==="ttadk",lt=rt&&W.acceptsModel!==!1;d(rt&&!lt?"":lt?st=>st.trim()?st:u.ttadkModelDefault:st=>st.trim()===u.ttadkModelDefault?"":st)}function P(I){y(X=>({...X,mode:I})),C(!0),x(null),c(null)}function R(I){y(X=>({...X,...I})),C(!0),x(null),c(null)}async function B(){c(null),x(null);let I;if(v&&(I=null),v&&s==="codex"&&D.mode==="custom"){let X=D.id.trim(),W=D.executable.trim(),rt=D.displayName.trim(),lt=D.packageName.trim();if(!X||!W){let st=e("botDefaults.runtimeRequired");c({text:st}),x({text:st});return}if(D.updateProvider==="npm"&&!lt){let st=e("botDefaults.runtimePackageRequired");c({text:st}),x({text:st});return}I={id:X,...rt?{displayName:rt}:{},executable:W,update:D.updateProvider==="npm"?{provider:"npm",packageName:lt}:{provider:D.updateProvider}}}F(!0);try{let X={cliId:s,model:p,reasoningEffort:s==="codex"||s==="codex-app"||s.endsWith("-codex")?g:"",...v?{cliRuntime:I}:{}},W=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,X);if(W.ok&&W.body.ok){let rt=Number.isInteger(W.body.closedMismatchedSessions)&&W.body.closedMismatchedSessions>0?W.body.closedMismatchedSessions:0,lt=rt>0?e("botDefaults.agentClosedCount",{count:rt}):"";if(c(W.body.availabilityWarning?{text:`\u26A0\uFE0F ${W.body.availabilityWarning}${lt?` \xB7 ${lt}`:""}`}:{text:`\u2713 ${lt||e("botDefaults.agentSaved")}`,ok:!0}),i(o.larkAppId,{cliId:W.body.cliId,cliRuntime:W.body.cliRuntime===void 0?v?I??null:o.cliRuntime??null:W.body.cliRuntime,cliPathOverride:W.body.cliPathOverride===void 0?v?null:o.cliPathOverride??null:W.body.cliPathOverride,wrapperCli:W.body.wrapperCli??null,model:W.body.model??"",reasoningEffort:W.body.reasoningEffort??void 0,agentSelectionKey:W.body.selectionKey??s}),C(!1),I){let st=W.body.runtimeProbe;st&&typeof st.version=="string"?x({text:e("botDefaults.runtimeProbeOk",{version:st.version,provider:typeof st.updateProvider=="string"?st.updateProvider:D.updateProvider}),ok:!0}):x({text:e("botDefaults.runtimeProbeMissing")})}}else{let lt=`\u2717 ${typeof W.body?.message=="string"&&W.body.message?W.body.message:j(W)}`;c({text:lt}),s==="codex"&&D.mode==="custom"&&x({text:lt})}}catch(X){let W=`\u2717 ${E(X)}`;c({text:W}),s==="codex"&&D.mode==="custom"&&x({text:W})}finally{F(!1)}}async function L(){if(o.cliId==="riff")return!0;try{let I=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,{cliId:"riff",model:""});return I.ok&&I.body.ok?(i(o.larkAppId,{cliId:I.body.cliId,cliRuntime:I.body.cliRuntime??null,wrapperCli:I.body.wrapperCli??null,model:I.body.model??"",agentSelectionKey:I.body.selectionKey??"riff"}),!0):(c({text:`\u2717 ${j(I)}`}),!1)}catch(I){return c({text:`\u2717 ${E(I)}`}),!1}}async function J(I){w(I),Q(null),T(!0);try{let X=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/skill-injection`,{skillInjection:I});X.ok&&X.body.ok?(Q({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0}),i(o.larkAppId,{skillInjection:X.body.skillInjection??null})):Q({text:`\u2717 ${j(X)}`})}catch(X){Q({text:`\u2717 ${E(X)}`})}finally{T(!1)}}let nt=o.skillInjectionSupport==="dynamic"?"dynamic":o.skillInjectionSupport==="global"?"global":"none",V=s==="riff",K=s==="codex"||s==="codex-app"||s.endsWith("-codex"),ot=(0,n.useMemo)(()=>oe(p),[p]);(0,n.useEffect)(()=>{g&&!ot.includes(g)&&N("")},[g,ot]);let tt=s==="codex"&&(!o.wrapperCli||r),it=tt&&D.mode!=="official",he=[...u.options].sort((I,X)=>I.label.localeCompare(X.label,"en",{sensitivity:"base"})).map(I=>({value:I.id,label:I.available===!1&&!(I.id==="codex"&&it)?e("botDefaults.agentMissingOption",{label:I.label,command:I.command??I.id}):`${I.label}\uFF08${I.id}\uFF09`})),ve=[{value:"dynamic",label:e("botDefaults.skillInjectionDynamic")}],De=[{value:"dynamic",label:e("botDefaults.skillInjectionDynamicUnsupported"),disabled:!0},{value:"prompt",label:e("botDefaults.skillInjectionPrompt")},{value:"global",label:e("botDefaults.skillInjectionGlobal")},{value:"off",label:e("botDefaults.skillInjectionOff")}],ke=[{value:"auto",label:e("botDefaults.runtimeProviderAuto")},{value:"self",label:e("botDefaults.runtimeProviderSelf")},{value:"npm",label:e("botDefaults.runtimeProviderNpm")},{value:"none",label:e("botDefaults.runtimeProviderNone")}];return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionAgent")}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)("span",{children:e("botDefaults.agentCli")}),(0,t.jsx)(et,{dataInput:"agentCliId",ariaLabel:e("botDefaults.agentCli"),value:s,disabled:A,options:he,searchable:!0,onChange:k}),O?.available===!1&&!it?(0,t.jsx)("small",{className:"hint-warn",children:e("botDefaults.agentMissingHint",{command:O.command??s})}):null]})}),tt?(0,t.jsxs)("div",{className:"bd-codex-runtime","data-codex-runtime":"",children:[(0,t.jsx)("div",{className:"bd-runtime-heading",children:(0,t.jsx)($,{help:e("botDefaults.runtimeHelp"),children:e("botDefaults.runtimeTitle")})}),(0,t.jsxs)("div",{className:"bd-runtime-mode",role:"group","aria-label":e("botDefaults.runtimeTitle"),children:[(0,t.jsx)("button",{type:"button","data-action":"runtime-official","aria-pressed":D.mode==="official",disabled:A,onClick:()=>P("official"),children:e("botDefaults.runtimeOfficial")}),(0,t.jsx)("button",{type:"button","data-action":"runtime-custom","aria-pressed":D.mode==="custom",disabled:A,onClick:()=>P("custom"),children:e("botDefaults.runtimeCustom")})]}),(0,t.jsx)("input",{type:"hidden","data-input":"agentRuntimeMode",value:D.mode,readOnly:!0}),(0,t.jsx)("p",{className:"bd-runtime-note",children:e(D.mode==="official"?"botDefaults.runtimeOfficialNote":D.mode==="legacy"?"botDefaults.runtimeLegacyNote":"botDefaults.runtimeCustomNote")}),D.mode==="legacy"?(0,t.jsx)("div",{className:"bd-runtime-fields","data-runtime-legacy":"",children:(0,t.jsxs)("label",{className:"bd-runtime-wide",children:[(0,t.jsx)("span",{children:e("botDefaults.runtimeLegacyPath")}),(0,t.jsx)("input",{type:"text",value:D.legacyPath,readOnly:!0,"aria-readonly":"true","data-input":"agentRuntimeLegacyPath"})]})}):null,D.mode==="custom"?(0,t.jsxs)("div",{className:"bd-runtime-fields",children:[(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.runtimeIdHelp"),children:e("botDefaults.runtimeId")}),(0,t.jsx)("input",{type:"text","data-input":"agentRuntimeId",value:D.id,disabled:A,autoComplete:"off",onChange:I=>R({id:I.currentTarget.value})})]}),(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.runtimeDisplayName")}),(0,t.jsx)("input",{type:"text","data-input":"agentRuntimeDisplayName",placeholder:e("botDefaults.runtimeDisplayNamePlaceholder"),value:D.displayName,disabled:A,autoComplete:"off",onChange:I=>R({displayName:I.currentTarget.value})})]}),(0,t.jsxs)("label",{className:"bd-runtime-wide",children:[(0,t.jsx)($,{help:e("botDefaults.runtimeExecutableHelp"),children:e("botDefaults.runtimeExecutable")}),(0,t.jsx)("input",{type:"text","data-input":"agentRuntimeExecutable",value:D.executable,disabled:A,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:I=>R({executable:I.currentTarget.value})})]}),(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)("span",{children:e("botDefaults.runtimeUpdateProvider")}),(0,t.jsx)(et,{dataInput:"agentRuntimeUpdateProvider",ariaLabel:e("botDefaults.runtimeUpdateProvider"),value:D.updateProvider,disabled:A,options:ke,onChange:I=>R({updateProvider:I})})]}),D.updateProvider==="npm"?(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.runtimePackageHelp"),children:e("botDefaults.runtimePackageName")}),(0,t.jsx)("input",{type:"text","data-input":"agentRuntimePackageName",value:D.packageName,disabled:A,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:I=>R({packageName:I.currentTarget.value})})]}):null]}):null,(0,t.jsx)(_,{status:h,attr:{"data-runtime-status":""}})]}):null,!V&&(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.agentHelp"),children:e("botDefaults.agentModel")}),(0,t.jsx)("input",{type:"text","data-input":"agentModel",list:`agent-model-suggestions-${o.larkAppId}`,placeholder:M,value:p,disabled:A||U,onChange:I=>d(I.currentTarget.value)}),(0,t.jsx)("datalist",{id:`agent-model-suggestions-${o.larkAppId}`,children:Y.map(I=>(0,t.jsx)("option",{value:I},I))})]})}),K&&(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.agentReasoningEffortHelp"),children:e("botDefaults.agentReasoningEffort")}),(0,t.jsx)(et,{dataInput:"agentReasoningEffort",ariaLabel:e("botDefaults.agentReasoningEffort"),value:g,disabled:A,options:[{value:"",label:e("botDefaults.agentReasoningEffortDefault")},...ot.map(I=>({value:I,label:e(`botDefaults.agentReasoningEffort${I==="xhigh"?"Xhigh":I[0].toUpperCase()+I.slice(1)}`)}))],onChange:I=>N(I)})]})}),V&&(0,t.jsx)(ya,{bot:o,patchBot:i,persistCliSelection:L}),!V&&nt==="dynamic"?(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.skillInjectionHelpDynamic"),children:e("botDefaults.skillInjection")}),(0,t.jsx)(et,{dataInput:"skillInjection",ariaLabel:e("botDefaults.skillInjection"),value:"dynamic",disabled:!0,options:ve,onChange:()=>{}})]})}):!V&&nt==="global"?(0,t.jsxs)("div",{className:"bd-row",children:[(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.skillInjectionHelp"),children:e("botDefaults.skillInjection")}),(0,t.jsx)(et,{dataInput:"skillInjection",ariaLabel:e("botDefaults.skillInjection"),value:H,disabled:Z,options:De,onChange:I=>{J(I)}})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:z,attr:{"data-skill-injection-status":""}})})]}):null,!V&&(0,t.jsxs)("div",{className:"actions bd-section-actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-agent",disabled:A,onClick:()=>{B()},children:e("botDefaults.agentSave")}),(0,t.jsx)(_,{status:S,attr:{"data-agent-status":""}})]})]})}function ie(a){let e=a.skillInjection==="global"||a.skillInjection==="prompt"||a.skillInjection==="off"?a.skillInjection:"",o=a.skillInjectionDefault==="global"||a.skillInjectionDefault==="off"?a.skillInjectionDefault:"prompt";return e||o}function qe(a){let e=G(),{bot:o,patchBot:u}=a,i=re(o),[l,m]=(0,n.useState)(i.mode),[s,b]=(0,n.useState)(i.workingDir),[r,f]=(0,n.useState)(o.defaultWorkingDirAutoWorktree===!0),[p,d]=(0,n.useState)(null),[g,N]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let v=re(o);m(v.mode),b(v.workingDir),f(o.defaultWorkingDirAutoWorktree===!0)},[o.defaultOncall?.enabled,o.defaultOncall?.workingDir,o.defaultWorkingDir,o.defaultWorkingDirAutoWorktree]);async function D(){d(null);let v=s.trim();if(l!=="off"&&!v){d({text:e("botDefaults.required")});return}let C=l==="default"&&r;N(!0);try{let h=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/working-dir-mode`,{mode:l,workingDir:v,autoWorktree:C});if(h.ok&&h.body.ok){let x=h.body.resolvedPath?` \u2192 ${h.body.resolvedPath}`:"";d({text:`\u2713 ${e("botDefaults.workingDirSaved")}${x}`,ok:!0}),u(o.larkAppId,{defaultOncall:h.body.defaultOncall??o.defaultOncall,defaultWorkingDir:h.body.defaultWorkingDir??null,defaultWorkingDirAutoWorktree:h.body.defaultWorkingDirAutoWorktree===!0})}else d({text:`\u2717 ${j(h)}`})}catch(h){d({text:`\u2717 ${E(h)}`})}finally{N(!1)}}let y=[{value:"off",label:e("botDefaults.workingDirModeOff")},{value:"default",label:e("botDefaults.workingDirModeDefault")},{value:"oncall",label:e("botDefaults.workingDirModeOncall")}];return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionWorkingDir")}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.workingDirModeHelp"),children:e("botDefaults.workingDirMode")}),(0,t.jsx)(et,{dataInput:"workingDirMode",ariaLabel:e("botDefaults.workingDirMode"),value:l,disabled:g,options:y,onChange:v=>m(v)})]})}),(0,t.jsx)("div",{className:"bd-row","data-wd-dir-row":!0,hidden:l==="off",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.workingDirField")}),(0,t.jsx)("input",{type:"text","data-input":"workingDir",placeholder:"e.g. /root/iserver/botmux",value:s,disabled:g,onChange:v=>b(v.currentTarget.value)})]})}),(0,t.jsxs)("label",{className:"toggle-row","data-wd-worktree-row":!0,hidden:l!=="default",children:[(0,t.jsx)("input",{type:"checkbox","data-input":"autoWorktree",checked:r,disabled:g,onChange:v=>f(v.currentTarget.checked)}),(0,t.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,t.jsx)("span",{className:"toggle-tx",children:(0,t.jsx)("strong",{children:(0,t.jsx)($,{help:e("botDefaults.autoWorktreeHelp"),children:e("botDefaults.autoWorktree")})})})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-working-dir",disabled:g,onClick:()=>{D()},children:e("botDefaults.save")}),(0,t.jsx)(_,{status:p,attr:{"data-status":""}})]}),(0,t.jsx)(Je,{bot:o,putCardPref:a.putCardPref})]})}function re(a){let e=a.defaultOncall??{enabled:!1,workingDir:""};return{mode:e.enabled?"oncall":a.defaultWorkingDir?"default":"off",workingDir:a.defaultWorkingDir||e.workingDir||""}}function Je(a){let e=G(),{bot:o,putCardPref:u}=a,[i,l]=(0,n.useState)(o.autoStartOnGroupJoin===!0),[m,s]=(0,n.useState)(o.autoStartOnNewTopic===!0),[b,r]=(0,n.useState)(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:""),[f,p]=(0,n.useState)(null),[d,g]=(0,n.useState)(null);(0,n.useEffect)(()=>{l(o.autoStartOnGroupJoin===!0),s(o.autoStartOnNewTopic===!0),r(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:"")},[o.autoStartOnGroupJoin,o.autoStartOnGroupJoinPrompt,o.autoStartOnNewTopic]);async function N(D,y){g(y),p(null);try{let v=await u(D);p(v.ok?{text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${j(v)}`})}catch(v){p({text:`\u2717 ${E(v)}`})}finally{g(null)}}return(0,t.jsxs)("div",{className:"bd-subsection",children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:e("botDefaults.sectionAutoStart")}),(0,t.jsx)(at,{checked:i,disabled:d==="join",dataAction:"toggle-auto-join",title:e("botDefaults.autoStartJoin"),help:e("botDefaults.autoStartJoinHelp"),onChange:D=>{l(D),N({autoStartOnGroupJoin:D},"join")}}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.autoStartJoinPrompt")}),(0,t.jsx)("textarea",{"data-input":"autoJoinPrompt",rows:3,placeholder:e("botDefaults.autoStartJoinPromptPlaceholder"),value:b,onChange:D=>r(D.currentTarget.value)})]})}),(0,t.jsx)(at,{checked:m,disabled:d==="topic",dataAction:"toggle-auto-topic",title:e("botDefaults.autoStartTopic"),help:e("botDefaults.autoStartTopicHelp"),onChange:D=>{s(D),N({autoStartOnNewTopic:D},"topic")}}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-auto-join-prompt",disabled:d==="prompt",onClick:()=>{N({autoStartOnGroupJoinPrompt:b},"prompt")},children:e("botDefaults.autoStartJoinPromptSave")}),(0,t.jsx)(_,{status:f,attr:{"data-auto-start-status":""}})]})]})}function Ve(a){let e=G(),{bot:o,patchBot:u}=a,[i,l]=(0,n.useState)(o.sandbox===!0),[m,s]=(0,n.useState)(null),[b,r]=(0,n.useState)(!1);(0,n.useEffect)(()=>l(o.sandbox===!0),[o.sandbox]);async function f(d){l(d),s(null),r(!0);try{let g=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox`,{enabled:d});g.ok&&g.body.ok?(s({text:`\u2713 ${e("botDefaults.sandboxSaved")}`,ok:!0}),u(o.larkAppId,{sandbox:g.body.sandbox===!0})):(s({text:`\u2717 ${j(g)}`}),l(!d))}catch(g){s({text:`\u2717 ${E(g)}`}),l(!d)}finally{r(!1)}}let p=o.readIsolationSupported===!0;return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionSandbox")}),(0,t.jsx)(at,{checked:i,disabled:b,dataAction:"toggle-sandbox",title:e("botDefaults.sandboxToggle"),help:e("botDefaults.sandboxHelp"),onChange:d=>{f(d)}}),(0,t.jsx)("p",{className:"bd-section-note","data-read-iso-capability":p?"yes":"no",children:p?`\uFF0B ${e("botDefaults.sandboxReadIsoOn")}`:e("botDefaults.sandboxReadIsoOff")}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:m,attr:{"data-sandbox-status":""}})})]})}var ue={readWrite:0,readOnly:1,deny:2};function de(a,e,o){let u=f=>f==="~"||f.startsWith("~/")?o.replace(/\/+$/,"")+f.slice(1):f,i=f=>u(f).replace(/\/+$/,"")||"/",l=i(e),m=(f,p)=>{let d=i(f),g=i(p);return d===g||g.startsWith(d==="/"?"/":d+"/")},s=f=>i(f)==="/"?0:i(f).split("/").filter(Boolean).length,b,r=(f,p)=>{if(!m(p,l))return;let d=s(p);(!b||d>b.ruleDepth||d===b.ruleDepth&&ue[f]>ue[b.access])&&(b={access:f,ruleDepth:d,rule:p})};for(let f of a.readWrite)r("readWrite",f);for(let f of a.readOnly)r("readOnly",f);for(let f of a.deny)r("deny",f);return b?{access:b.access,rule:b.rule}:{access:"none"}}function ge(){return{readWrite:[],readOnly:[],deny:[]}}function ht(a){return a?{readWrite:[...a.readWrite??[]],readOnly:[...a.readOnly??[]],deny:[...a.deny??[]]}:ge()}function Qe(a,e){let o=u=>[...u].sort().join(`
3
+ `);return o(a.readWrite)===o(e.readWrite)&&o(a.readOnly)===o(e.readOnly)&&o(a.deny)===o(e.deny)}function At(a){let e=[];for(let o of a.readWrite)e.push(`rw ${o}`);for(let o of a.readOnly)e.push(`ro ${o}`);for(let o of a.deny)e.push(`deny ${o}`);return e.join(`
4
+ `)}function ze(a){let e=ge();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(),m=i[2].trim();l==="rw"||l==="readwrite"||l==="rw:"?e.readWrite.push(m):l==="ro"||l==="readonly"||l==="ro:"?e.readOnly.push(m):(l==="deny"||l==="-"||l==="deny:")&&e.deny.push(m)}return e}function Ke(a){let e=G(),{bot:o,patchBot:u}=a,[i,l]=(0,n.useState)(()=>ht(o.sandboxPaths)),[m,s]=(0,n.useState)(()=>At(ht(o.sandboxPaths))),[b,r]=(0,n.useState)(!1),[f,p]=(0,n.useState)(null),[d,g]=(0,n.useState)(!1),[N,D]=(0,n.useState)(""),[y,v]=(0,n.useState)({}),[C,h]=(0,n.useState)(new Set),[x,S]=(0,n.useState)([]),[c,A]=(0,n.useState)("~"),F=(0,n.useMemo)(()=>ht(o.sandboxPaths),[o.sandboxPaths]);(0,n.useEffect)(()=>{l(ht(o.sandboxPaths)),s(At(ht(o.sandboxPaths)))},[o.sandboxPaths]);let H=!Qe(i,F),w=(0,n.useCallback)(async M=>{try{let k=M?`?path=${encodeURIComponent(M)}`:"",R=await(await fetch(`/api/fs/list${k}`)).json();if(!R.ok)return;M?v(B=>({...B,[M]:R.entries.map(L=>({name:L.name,path:L.path}))})):(S(R.entries.map(B=>({name:B.name,path:B.path}))),typeof R.home=="string"&&R.home.startsWith("/")&&A(R.home))}catch{}},[]);(0,n.useEffect)(()=>{!b&&x.length===0&&w("")},[b,x.length,w]);let z=(0,n.useCallback)(M=>{let k=M.replace(/\/+$/,"")||"/";if(i.readWrite.some(P=>(P.replace(/\/+$/,"")||"/")===k))return"readWrite";if(i.readOnly.some(P=>(P.replace(/\/+$/,"")||"/")===k))return"readOnly";if(i.deny.some(P=>(P.replace(/\/+$/,"")||"/")===k))return"deny"},[i]),Q=(0,n.useCallback)(M=>{p(null);let k=M.replace(/\/+$/,"")||"/",P=z(M),R=P===void 0?"readWrite":P==="readWrite"?"readOnly":P==="readOnly"?"deny":void 0;l(B=>{let L=nt=>nt.filter(V=>(V.replace(/\/+$/,"")||"/")!==k),J={readWrite:L(B.readWrite),readOnly:L(B.readOnly),deny:L(B.deny)};return R&&J[R].push(M),s(At(J)),J})},[z]);function Z(M){s(M),l(ze(M)),p(null)}async function T(){g(!0),p(null);try{let M=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox-paths`,i);M.ok&&M.body.ok?(p({text:`\u2713 ${e("botDefaults.sbxPathsSaved")}`,ok:!0}),u(o.larkAppId,{sandboxPaths:M.body.sandboxPaths??{readWrite:[],readOnly:[],deny:[]}})):p({text:`\u2717 ${j(M)}`})}catch(M){p({text:`\u2717 ${E(M)}`})}finally{g(!1)}}let O=M=>e(M==="readWrite"?"botDefaults.sbxRw":M==="readOnly"?"botDefaults.sbxRo":M==="deny"?"botDefaults.sbxDeny":"botDefaults.sbxNone");function Y(M){let{name:k,path:P,depth:R}=M,B=C.has(P),L=z(P),J=de(i,P,c),nt=y[P];return(0,t.jsxs)("div",{className:"bd-sbx-node",children:[(0,t.jsxs)("div",{className:"bd-sbx-row",style:{paddingLeft:R*16},children:[(0,t.jsx)("span",{className:"bd-sbx-twisty",onClick:()=>{h(V=>{let K=new Set(V);return K.has(P)?K.delete(P):K.add(P),K}),nt||w(P)},children:B?"\u25BE":"\u25B8"}),(0,t.jsx)("span",{className:"bd-sbx-name",title:P,children:k}),(0,t.jsx)("button",{type:"button",className:`bd-sbx-state bd-sbx-state-${L??"inherit"}`,"data-action":"cycle-sandbox-path","data-path":P,title:L?void 0:`${e("botDefaults.sbxInherit")}: ${O(J.access)}`,onClick:()=>Q(P),children:L?O(L):`\u21B3 ${O(J.access)}`})]}),B&&(0,t.jsxs)("div",{className:"bd-sbx-kids",children:[nt?.map(V=>(0,t.jsx)(Y,{name:V.name,path:V.path,depth:R+1},V.path)),nt&&nt.length===0&&(0,t.jsx)("div",{className:"bd-sbx-empty",style:{paddingLeft:(R+1)*16+20},children:e("botDefaults.sbxNoSubdirs")})]})]})}let U=N.trim()?de(i,N.trim(),c):null;return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionSandboxPaths")}),(0,t.jsx)("p",{className:"bd-section-note",children:e("botDefaults.sbxPathsHelp")}),(0,t.jsx)("div",{className:"actions",style:{gap:8,flexWrap:"wrap"},children:(0,t.jsx)("button",{type:"button",className:"bd-btn",onClick:()=>r(M=>!M),children:e(b?"botDefaults.sbxPathsTreeMode":"botDefaults.sbxPathsTextMode")})}),b?(0,t.jsx)("textarea",{className:"bd-sbx-text","data-field":"sandbox-paths-text",rows:8,value:m,spellCheck:!1,placeholder:`rw ~/my-data
6
+ ro ~/reference-repos
7
+ deny ~/my-data/secrets`,onChange:M=>Z(M.target.value)}):(0,t.jsx)("div",{className:"bd-sbx-tree","data-field":"sandbox-paths-tree",children:x.map(M=>(0,t.jsx)(Y,{name:M.name,path:M.path,depth:0},M.path))}),(0,t.jsxs)("div",{className:"bd-sbx-tester",children:[(0,t.jsx)("input",{className:"bd-sbx-test-input","data-field":"sandbox-path-test",placeholder:e("botDefaults.sbxTestPlaceholder"),value:N,onChange:M=>D(M.target.value)}),U&&(0,t.jsxs)("span",{className:`bd-sbx-test-out bd-sbx-state-${U.access}`,"data-test-access":U.access,children:[O(U.access),U.rule?` \u2190 ${U.rule}`:""]})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"bd-btn bd-btn-primary","data-action":"save-sandbox-paths",disabled:d||!H,onClick:()=>{T()},children:e("botDefaults.sbxPathsSave")}),(0,t.jsx)(_,{status:f,attr:{"data-sandbox-paths-status":""}})]})]})}var Xe=[{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 Ze(a){let e=G(),{bot:o,patchBot:u}=a,[i,l]=(0,n.useState)(typeof o.backendType=="string"?o.backendType:""),[m,s]=(0,n.useState)(null),[b,r]=(0,n.useState)(!1);(0,n.useEffect)(()=>l(typeof o.backendType=="string"?o.backendType:""),[o.backendType]);let f=(0,n.useMemo)(()=>Xe.map(d=>({value:d.value,label:e(d.labelKey)})),[e]);async function p(d){let g=i;l(d),s(null),r(!0);try{let N=await q("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/backend-type`,{backendType:d});N.ok&&N.body.ok?(s({text:`\u2713 ${e("botDefaults.backendSaved")}`,ok:!0}),u(o.larkAppId,{backendType:typeof N.body.backendType=="string"?N.body.backendType:null})):(s({text:`\u2717 ${j(N)}`}),l(g))}catch(N){s({text:`\u2717 ${E(N)}`}),l(g)}finally{r(!1)}}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionBackend")}),(0,t.jsxs)("div",{className:"bd-row",children:[(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.backendHelp"),children:e("botDefaults.backendLabel")}),(0,t.jsx)(et,{dataInput:"backendType",ariaLabel:e("botDefaults.backendLabel"),value:i,disabled:b,options:f,onChange:d=>{p(d)}})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:m,attr:{"data-backend-status":""}})})]})]})}function Ye(a){let e=G(),{bot:o,patchBot:u}=a,[i,l]=(0,n.useState)(typeof o.teamRole=="string"),[m,s]=(0,n.useState)(typeof o.teamRole=="string"?o.teamRole:""),[b,r]=(0,n.useState)("every"),[f,p]=(0,n.useState)(null),[d,g]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let y=!0,v=`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`;return typeof o.teamRole=="string"?(l(!0),s(o.teamRole),()=>{y=!1}):(p(null),l(!1),s(""),(async()=>{try{let C=await fetch(v),h=await C.json().catch(()=>({}));if(!y)return;if(C.ok&&h.ok){let x=h.role??"";s(x),r(h.injectMode==="once"?"once":"every"),l(!0),u(o.larkAppId,{teamRole:x})}else p({text:`\u2717 ${e("botDefaults.roleLoadErr")}: ${h.error??C.status}`})}catch(C){y&&p({text:`\u2717 ${e("botDefaults.roleLoadErr")}: ${E(C)}`})}})(),()=>{y=!1})},[o.larkAppId,o.teamRole,u,e]),(0,n.useEffect)(()=>{let y=!0;return typeof o.teamRole!="string"?()=>{y=!1}:((async()=>{try{let v=await fetch(`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`),C=await v.json().catch(()=>({}));y&&v.ok&&C.ok&&r(C.injectMode==="once"?"once":"every")}catch{}})(),()=>{y=!1})},[o.larkAppId]);async function N(y,v,C=b){if(i){p(null),g(!0);try{let h=await q("PUT",`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`,{role:y,injectMode:C});if(h.ok&&h.body.ok){let x=y.trim();s(x),(h.body.injectMode==="once"||h.body.injectMode==="every")&&r(h.body.injectMode),u(o.larkAppId,{teamRole:x}),p({text:`\u2713 ${e(v?"botDefaults.roleDeleted":"botDefaults.roleSaved")}`,ok:!0})}else p({text:`\u2717 ${j(h)}`})}catch(h){p({text:`\u2717 ${E(h)}`})}finally{g(!1)}}}let D=[{value:"every",label:e("roles.injectModeEvery")},{value:"once",label:e("roles.injectModeOnce")}];return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:(0,t.jsx)($,{help:e("botDefaults.roleHelp"),children:e("botDefaults.sectionRole")})}),(0,t.jsx)("textarea",{"data-input":"teamRole",rows:6,placeholder:e("botDefaults.rolePlaceholder"),disabled:!i||d,value:m,onChange:y=>s(y.currentTarget.value)}),(0,t.jsxs)("div",{className:"bd-role-inject",children:[(0,t.jsx)("span",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("roles.injectModeHint"),children:e("roles.injectModeLabel")})}),(0,t.jsx)(It,{id:`bd-role-inject-${o.larkAppId}`,className:"bd-role-inject-menu",ariaLabel:e("roles.injectModeLabel"),disabled:!i||d,label:Tt(D,b),value:b,options:D,onChange:y=>{let v=y==="once"?"once":"every";r(v),N(m,m.trim()==="",v)}})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-role",disabled:!i||d,onClick:()=>{N(m,m.trim()==="")},children:e("botDefaults.roleSave")}),(0,t.jsx)(_,{status:f,attr:{"data-role-status":""}})]}),(0,t.jsx)(ta,{appId:o.larkAppId})]})}function ta(a){let e=G(),[o,u]=(0,n.useState)({loaded:!1,loading:!0,items:[]});(0,n.useEffect)(()=>{let m=!0;return u({loaded:!1,loading:!0,items:[]}),(async()=>{try{let s=await fetch("/api/role-profiles"),b=await s.json().catch(()=>({}));if(!m)return;if(!s.ok)throw new Error(b?.error??String(s.status));let f=(Array.isArray(b.profiles)?b.profiles:[]).filter(p=>(p.botEntries??[]).some(d=>d?.larkAppId===a.appId&&d?.hasEntry)).map(p=>({profileId:String(p.profileId)}));u({loaded:!0,loading:!1,items:f})}catch(s){m&&u({loaded:!0,loading:!1,error:E(s),items:[]})}})(),()=>{m=!1}},[a.appId]);async function i(m){let s=o.items.find(b=>b.profileId===m);if(!(!s||s.loaded||s.loading)){u(b=>({...b,items:b.items.map(r=>r.profileId===m?{...r,loading:!0}:r)}));try{let b=await fetch(`/api/role-profiles/${encodeURIComponent(m)}/${encodeURIComponent(a.appId)}`),r=await b.json().catch(()=>({}));if(!b.ok)throw new Error(r?.error??String(b.status));u(f=>({...f,items:f.items.map(p=>p.profileId===m?{...p,loading:!1,loaded:!0,content:r?.hasEntry?String(r.content??""):""}:p)}))}catch(b){u(r=>({...r,items:r.items.map(f=>f.profileId===m?{...f,loading:!1,error:E(b)}:f)}))}}}let l;return o.loading?l=(0,t.jsx)(kt,{label:e("common.loading"),compact:!0}):o.error?l=(0,t.jsx)("p",{className:"hint-warn-inline",children:e("botDefaults.profileRolesLoadFailed",{error:o.error})}):o.items.length===0?l=(0,t.jsx)("p",{className:"empty",children:e("botDefaults.profileRolesEmpty")}):l=o.items.map(m=>(0,t.jsxs)("details",{className:"bd-profile-role-entry","data-profile-id":m.profileId,onToggle:s=>{s.currentTarget.open&&i(m.profileId)},children:[(0,t.jsx)("summary",{children:(0,t.jsx)("span",{className:"bd-profile-role-id",children:m.profileId})}),(0,t.jsx)("div",{className:"bd-profile-role-content","data-profile-role-body":m.profileId,children:m.loading?(0,t.jsx)(kt,{label:e("common.loading"),compact:!0}):m.error?(0,t.jsx)("p",{className:"hint-warn-inline",children:e("botDefaults.profileRoleDetailLoadFailed",{error:m.error})}):m.loaded?(0,t.jsx)("pre",{children:m.content??""}):(0,t.jsx)("p",{className:"empty",children:e("botDefaults.profileRoleClickToLoad")})})]},m.profileId)),(0,t.jsxs)("div",{className:"bd-profile-roles","data-profile-roles":!0,children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("botDefaults.profileRolesHelp"),children:e("botDefaults.profileRoles")})}),(0,t.jsx)("div",{className:"bd-profile-role-list","data-profile-role-list":!0,children:l})]})}function ea(a){let e=G(),{bot:o,putCardPref:u}=a,[i,l]=(0,n.useState)(o.usageDisplay??"streaming"),[m,s]=(0,n.useState)(o.disableStreamingCard===!0),[b,r]=(0,n.useState)(o.silentTurnReactions===!0),[f,p]=(0,n.useState)(o.writableTerminalLinkInCard===!0),[d,g]=(0,n.useState)(o.privateCard===!0),[N,D]=(0,n.useState)(null),[y,v]=(0,n.useState)(null);(0,n.useEffect)(()=>{l(o.usageDisplay??"streaming"),s(o.disableStreamingCard===!0),r(o.silentTurnReactions===!0),p(o.writableTerminalLinkInCard===!0),g(o.privateCard===!0)},[o.disableStreamingCard,o.privateCard,o.usageDisplay,o.silentTurnReactions,o.writableTerminalLinkInCard]);async function C(x,S,c){v(S),D(null);try{let A=await u(x);A.ok?D({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0}):(c?.(),D({text:`\u2717 ${j(A)}`}))}catch(A){c?.(),D({text:`\u2717 ${E(A)}`})}finally{v(null)}}let h=[{value:"streaming",label:e("botDefaults.usageDisplayStreaming")},{value:"footer",label:e("botDefaults.usageDisplayFooter")},{value:"off",label:e("botDefaults.usageDisplayOff")}];return(0,t.jsxs)("section",{className:"bd-section","aria-busy":y!==null,children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionCard")}),(0,t.jsxs)("div",{className:"bd-card-settings",children:[(0,t.jsxs)("section",{className:"bd-card-setting-group","data-card-feedback-group":!0,children:[(0,t.jsx)("h4",{className:"bd-card-setting-heading",children:e("botDefaults.cardFeedbackGroup")}),(0,t.jsx)(at,{className:"bd-card-primary-toggle",checked:!m,disabled:y!==null,dataAction:"toggle-disable-streaming",title:e("botDefaults.autoStreaming"),description:e("botDefaults.autoStreamingDescription"),help:e("botDefaults.autoStreamingHelp"),onChange:x=>{let S=m,c=!x;s(c),C({disableStreamingCard:c},"streaming",()=>s(S))}}),(0,t.jsxs)("div",{className:"bd-card-dependent","data-card-off-options":!0,hidden:!m,children:[(0,t.jsx)(at,{checked:!b,disabled:y!==null,dataAction:"toggle-silent-reactions",title:e("botDefaults.silentTurnReactions"),description:e("botDefaults.silentTurnReactionsDescription"),help:e("botDefaults.silentTurnReactionsHelp"),onChange:x=>{let S=b,c=!x;r(c),C({silentTurnReactions:c},"silent",()=>r(S))}}),(0,t.jsx)("p",{role:"status","data-card-pref-moot":!0,className:"bd-card-mode-note",children:e("botDefaults.manualCardHint")})]})]}),(0,t.jsxs)("section",{className:"bd-card-setting-group","data-card-content-group":!0,children:[(0,t.jsx)("h4",{className:"bd-card-setting-heading",children:e("botDefaults.cardContentGroup")}),o.usageSupported===!0&&(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.usageDisplayHelp"),children:e("botDefaults.usageDisplay")}),(0,t.jsx)(et,{dataInput:"usageDisplay",ariaLabel:e("botDefaults.usageDisplay"),value:i,disabled:y!==null,options:h,onChange:x=>{let S=i;l(x),C({usageDisplay:x},"usage",()=>l(S))}})]})}),(0,t.jsx)("div",{className:"bd-card-control-list",children:(0,t.jsx)(at,{checked:f,disabled:y!==null,dataAction:"toggle-writable-link",title:e("botDefaults.writableLink"),description:e("botDefaults.writableLinkDescription"),help:e("botDefaults.writableLinkHelp"),onChange:x=>{let S=f;p(x),C({writableTerminalLinkInCard:x},"writable",()=>p(S))}})})]}),(0,t.jsxs)("section",{className:"bd-card-setting-group","data-card-manual-group":!0,children:[(0,t.jsx)("h4",{className:"bd-card-setting-heading",children:e("botDefaults.cardManualGroup")}),(0,t.jsx)("p",{className:"bd-card-setting-copy",children:e("botDefaults.manualCardIntro")}),(0,t.jsx)("div",{className:"bd-card-control-list",children:(0,t.jsx)(at,{checked:d,disabled:y!==null,dataAction:"toggle-private-card",title:e("botDefaults.privateCard"),description:e("botDefaults.privateCardDescription"),help:e("botDefaults.privateCardHelp"),onChange:x=>{let S=d;g(x),C({privateCard:x},"private",()=>g(S))}})})]})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:N,attr:{"data-card-pref-status":""}})})]})}function aa(a){let e=G(),[o,u]=(0,n.useState)(a.bot.codexAppCleanInput===!0),[i,l]=(0,n.useState)(null),[m,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>u(a.bot.codexAppCleanInput===!0),[a.bot.codexAppCleanInput]);async function b(r){let f=o;u(r),s(!0),l(null);try{let p=await a.putCardPref({codexAppCleanInput:r});p.ok?l({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0}):(u(f),l({text:`\u2717 ${j(p)}`}))}catch(p){u(f),l({text:`\u2717 ${E(p)}`})}finally{s(!1)}}return(0,t.jsxs)("section",{className:"bd-section","data-codex-app-display":!0,children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionCodexAppDisplay")}),(0,t.jsx)(at,{checked:o,disabled:m,dataAction:"toggle-codex-app-clean-input",title:e("botDefaults.codexAppCleanInput"),help:e("botDefaults.codexAppCleanInputHelp"),onChange:r=>{b(r)}}),(0,t.jsx)("small",{className:"bd-section-note",children:e("botDefaults.codexAppCleanInputCompat")}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:i,attr:{"data-codex-app-clean-input-status":""}})})]})}function oa(a){let e=G(),[o,u]=(0,n.useState)(a.bot.envelopeInjection==="auto"),[i,l]=(0,n.useState)(null),[m,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>u(a.bot.envelopeInjection==="auto"),[a.bot.envelopeInjection]);async function b(r){let f=o;u(r),s(!0),l(null);try{let p=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/envelope-injection`,{envelopeInjection:r?"auto":"off"});if(p.ok&&p.body.ok){let d=p.body.envelopeInjection==="auto";u(d),a.patchBot(a.bot.larkAppId,{envelopeInjection:d?"auto":"off"}),l({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else u(f),l({text:`\u2717 ${j(p)}`})}catch(p){u(f),l({text:`\u2717 ${E(p)}`})}finally{s(!1)}}return(0,t.jsxs)("section",{className:"bd-section","data-envelope-injection":!0,children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.envelopeInjection")}),(0,t.jsx)(at,{checked:o,disabled:m,dataAction:"toggle-envelope-injection",title:e("botDefaults.envelopeInjectionAuto"),help:e("botDefaults.envelopeInjectionHelp"),onChange:r=>{b(r)}}),(0,t.jsx)("small",{className:"bd-section-note",children:e("botDefaults.envelopeInjectionNote")}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:i,attr:{"data-envelope-injection-status":""}})})]})}function na(a){let e=G(),[o,u]=(0,n.useState)(a.bot.botToBotSameDir!==!1),[i,l]=(0,n.useState)(null),[m,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>u(a.bot.botToBotSameDir!==!1),[a.bot.botToBotSameDir]);async function b(r){u(r),s(!0),l(null);try{let f=await a.putCardPref({botToBotSameDir:r});l(f.ok?{text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${j(f)}`})}catch(f){l({text:`\u2717 ${E(f)}`})}finally{s(!1)}}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionCrossBot")}),(0,t.jsx)(at,{checked:o,disabled:m,dataAction:"toggle-cross-bot-samedir",title:e("botDefaults.botToBotSameDir"),help:e("botDefaults.botToBotSameDirHelp"),onChange:r=>{b(r)}}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:i,attr:{"data-crossbot-status":""}})})]})}function sa(a){let e=G(),o=$t(a.bot),[u,i]=(0,n.useState)(String(o.limit)),[l,m]=(0,n.useState)(String(o.sinceHours)),[s,b]=(0,n.useState)(a.bot.summaryMemory===!0),[r,f]=(0,n.useState)(Ot(a.bot)),[p,d]=(0,n.useState)(null),[g,N]=(0,n.useState)(null),[D,y]=(0,n.useState)(!1),[v,C]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let S=$t(a.bot);i(String(S.limit)),m(String(S.sinceHours)),b(a.bot.summaryMemory===!0),f(Ot(a.bot))},[a.bot.summaryRange?.limit,a.bot.summaryRange?.sinceHours,a.bot.summaryMemory,a.bot.summaryMemoryPath]);async function h(){d(null);let S=se(u,50),c=se(l,24);if(S==null||c==null){d({text:`\u2717 ${e("botDefaults.summaryNumberInvalid")}`});return}y(!0);try{let A=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/summary-range`,{limit:S,sinceHours:c});if(A.ok&&A.body.ok){let F=A.body.summaryRange??{limit:S,sinceHours:c},H=$t({...a.bot,summaryRange:F});i(String(H.limit)),m(String(H.sinceHours)),a.patchBot(a.bot.larkAppId,{summaryRange:F}),d({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else d({text:`\u2717 ${j(A)}`})}catch(A){d({text:`\u2717 ${E(A)}`})}finally{y(!1)}}async function x(S,c=r){let A=s,F=r,H=ye(c);b(S),f(H),N(null),C(!0);try{let w=await a.putCardPref({summaryMemory:S,summaryMemoryPath:H});if(w.ok&&w.body.ok){let z=w.body.summaryMemory===!0,Q=Ot({...a.bot,summaryMemoryPath:w.body.summaryMemoryPath});b(z),f(Q),a.patchBot(a.bot.larkAppId,{summaryMemory:z,summaryMemoryPath:Q}),N({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else b(A),f(F),N({text:`\u2717 ${j(w)}`})}catch(w){b(A),f(F),N({text:`\u2717 ${E(w)}`})}finally{C(!1)}}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:(0,t.jsx)($,{help:e("botDefaults.summaryLimitHelp"),children:e("botDefaults.sectionSummaryTrigger")})}),(0,t.jsxs)("div",{className:"bd-row bd-summary-limits",children:[(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.summaryLimit")}),(0,t.jsx)("input",{type:"number",min:0,step:1,"data-input":"summaryLimit",value:u,disabled:D,onChange:S=>i(S.currentTarget.value)})]}),(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.summarySinceHours")}),(0,t.jsx)("input",{type:"number",min:0,step:1,"data-input":"summarySinceHours",value:l,disabled:D,onChange:S=>m(S.currentTarget.value)})]})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-trigger",disabled:D,onClick:()=>{h()},children:e("botDefaults.summarySave")}),(0,t.jsx)(_,{status:p,attr:{"data-summary-trigger-status":""}})]}),(0,t.jsx)(at,{checked:s,disabled:v,title:e("botDefaults.summaryMemory"),help:e("botDefaults.summaryMemoryHelp"),onChange:S=>{x(S)}}),(0,t.jsx)("div",{className:"bd-row bd-summary-limits",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.summaryMemoryPath")}),(0,t.jsx)("input",{type:"text","data-input":"summaryMemoryPath",value:r,disabled:v,onChange:S=>f(S.currentTarget.value)})]})}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-memory-path",disabled:v,onClick:()=>{x(s,r)},children:e("botDefaults.summaryMemoryPathSave")})}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:g,attr:{"data-summary-memory-status":""}})})]})}function ye(a){return a.trim()||"summary.md"}function Ot(a){return ye(typeof a.summaryMemoryPath=="string"?a.summaryMemoryPath:"")}function $t(a){let e=a.summaryRange??{limit:50,sinceHours:24};return{limit:Number.isInteger(e.limit)&&Number(e.limit)>=0?Number(e.limit):50,sinceHours:Number.isInteger(e.sinceHours)&&Number(e.sinceHours)>=0?Number(e.sinceHours):24}}function la(a){let e=G(),[o,u]=(0,n.useState)(Nt(a.bot.p2pMode)),[i,l]=(0,n.useState)(ce(a.bot)),[m,s]=(0,n.useState)(be(a.bot)),[b,r]=(0,n.useState)(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only"),[f,p]=(0,n.useState)(null),[d,g]=(0,n.useState)(null),[N,D]=(0,n.useState)(null),[y,v]=(0,n.useState)(null),[C,h]=(0,n.useState)(null);(0,n.useEffect)(()=>{u(Nt(a.bot.p2pMode)),l(ce(a.bot)),s(be(a.bot)),r(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only")},[a.bot.docSubscribeDefaultMode,a.bot.p2pMode,a.bot.regularGroupMentionMode,a.bot.regularGroupReplyMode]);async function x(w){let z=Nt(w);u(z),p("p2p"),g(null);try{let Q=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/p2p-mode`,{p2pMode:z});Q.ok&&Q.body.ok?(a.patchBot(a.bot.larkAppId,{p2pMode:Nt(Q.body.p2pMode)}),g({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})):g({text:`\u2717 ${j(Q)}`})}catch(Q){g({text:`\u2717 ${E(Q)}`})}finally{p(null)}}async function S(w,z,Q){p(w),Q(null);try{let Z=await a.putCardPref(z);Q(Z.ok?{text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${j(Z)}`})}catch(Z){Q({text:`\u2717 ${E(Z)}`})}finally{p(null)}}let c=[{value:"thread",label:e("botDefaults.p2pThread")},{value:"chat",label:e("botDefaults.p2pChat")},{value:"group",label:e("botDefaults.p2pGroup")}],A=[{value:"chat",label:e("botDefaults.regularGroupModeChat")},{value:"chat-topic",label:e("botDefaults.regularGroupModeChatTopic")},{value:"new-topic",label:e("botDefaults.regularGroupModeNewTopic")},{value:"shared",label:e("botDefaults.regularGroupModeShared")}],F=[{value:"always",label:e("botDefaults.mentionModeAlways")},{value:"topic",label:e("botDefaults.mentionModeTopic")},{value:"never",label:e("botDefaults.mentionModeNever")},{value:"ambient",label:e("botDefaults.mentionModeAmbient")}],H=[{value:"mention-only",label:e("botDefaults.docSubscribeModeMention")},{value:"all",label:e("botDefaults.docSubscribeModeAll")}];return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionSessionMode")}),(0,t.jsxs)("div",{className:"bd-row",children:[(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.p2pHelp"),children:e("botDefaults.p2pMode")}),(0,t.jsx)(et,{dataInput:"p2pMode",ariaLabel:e("botDefaults.p2pMode"),value:o,disabled:f==="p2p",options:c,onChange:w=>{x(w)}})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:d,attr:{"data-p2p-status":""}})})]}),o==="group"&&(0,t.jsx)(ra,{bot:a.bot}),(0,t.jsxs)("div",{className:"bd-row",children:[(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.regularGroupModeHelp"),children:e("botDefaults.regularGroupMode")}),(0,t.jsx)(et,{dataInput:"regularGroupMode",ariaLabel:e("botDefaults.regularGroupMode"),value:i,disabled:f==="regular",options:A,onChange:w=>{l(w),S("regular",{regularGroupReplyMode:w},D)}})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:N,attr:{"data-regular-group-status":""}})})]}),(0,t.jsxs)("div",{className:"bd-row",children:[(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.mentionModeHelp"),children:e("botDefaults.mentionMode")}),(0,t.jsx)(et,{dataInput:"regularGroupMentionMode",ariaLabel:e("botDefaults.mentionMode"),value:m,disabled:f==="mention",options:F,onChange:w=>{s(w),S("mention",{regularGroupMentionMode:w},v)}})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:y,attr:{"data-mention-mode-status":""}})})]}),(0,t.jsxs)("div",{className:"bd-row",children:[(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.docSubscribeModeHelp"),children:e("botDefaults.docSubscribeMode")}),(0,t.jsx)(et,{dataInput:"docSubscribeDefaultMode",ariaLabel:e("botDefaults.docSubscribeMode"),value:b,disabled:f==="doc",options:H,onChange:w=>{r(w),S("doc",{docSubscribeDefaultMode:w},h)}})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:C,attr:{"data-doc-subscribe-mode-status":""}})})]})]})}function ia(a){let e=G(),o=a.bot.substituteMode??null,[u,i]=(0,n.useState)(o?.enabled===!0);function l(k){switch(k){case"cross_app_open_id":return e("botDefaults.substituteReasonCrossAppOpenId");case"not_visible":return e("botDefaults.substituteReasonNotVisible");case"resolve_failed":return e("botDefaults.substituteReasonResolveFailed");case"unresolvable":return e("botDefaults.substituteReasonUnresolvable");default:return e("botDefaults.substituteUnresolved")}}let[m,s]=(0,n.useState)(o?.disclosure==="none"?"none":"prefix"),[b,r]=(0,n.useState)(o?.replyMode==="quote"?"quote":"thread"),[f,p]=(0,n.useState)(o?.disableControlCard!==!0),[d,g]=(0,n.useState)(()=>ct(o?.chats)),[N,D]=(0,n.useState)(()=>ct(o?.excludedChats)),[y,v]=(0,n.useState)(o?.topicGroups!==!1),[C,h]=(0,n.useState)(o?.topicActiveSessionTrigger!==!1),[x,S]=(0,n.useState)(null),[c,A]=(0,n.useState)(!1),F=(0,n.useRef)(0),H=(0,n.useRef)(!1);function w(k){let P=we(k);return{key:++F.current,idField:P,idValue:k?.[P]??"",name:k?.name??"",persisted:k?{...k}:{},originalIdField:k?P:void 0,resolution:k?.name||k?.avatarUrl?{ok:!0,name:k.name,avatarUrl:k.avatarUrl}:void 0}}let z=(0,n.useRef)(new Map);async function Q(k){let P=(z.current.get(k)??0)+1;z.current.set(k,P);let R=()=>z.current.get(k)===P;T(B=>B.map(L=>L.key===k?{...L,resolving:!0}:L));try{let B=Z.find(V=>V.key===k);if(!B)return;let L=B.idValue.trim();if(!L){T(V=>V.map(K=>K.key===k?{...K,resolving:!1,resolution:void 0}:K));return}let J={[B.idField]:L};B.name.trim()&&(J.name=B.name.trim());let nt=await Yt(a.bot.larkAppId,J);if(!R())return;T(V=>V.map(K=>{if(K.key!==k)return K;if(!nt.ok)return{...K,resolving:!1,resolution:{ok:!1}};let ot=nt.resolution;if(ot?.ok===!0){if(!ot.openId)return{...K,resolving:!1,resolution:void 0};let tt={...K.persisted};return tt.openId=ot.openId,ot.name&&(tt.name=ot.name),ot.avatarUrl&&(tt.avatarUrl=ot.avatarUrl),{...K,name:ot.name??K.name,persisted:tt,resolving:!1,resolution:{ok:!0,name:ot.name,avatarUrl:ot.avatarUrl}}}return{...K,resolving:!1,resolution:{ok:!1,reason:ot?.reason}}}))}catch{if(!R())return;T(B=>B.map(L=>L.key===k?{...L,resolving:!1,resolution:{ok:!1}}:L))}}let[Z,T]=(0,n.useState)(()=>{let k=o?.targets??[];return k.length?k.map(P=>w(P)):[w()]});(0,n.useEffect)(()=>{if(H.current){H.current=!1;return}let k=a.bot.substituteMode??null;i(k?.enabled===!0),s(k?.disclosure==="none"?"none":"prefix"),r(k?.replyMode==="quote"?"quote":"thread"),p(k?.disableControlCard!==!0),g(ct(k?.chats)),D(ct(k?.excludedChats)),v(k?.topicGroups!==!1),h(k?.topicActiveSessionTrigger!==!1);let P=k?.targets??[];T(P.length?P.map(R=>w(R)):[w()])},[a.bot.larkAppId,a.bot.substituteMode]);async function O(k){A(!0),S(null);try{let P=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/substitute-mode`,k);if(P.ok&&P.body.ok){let R=P.body.substituteMode&&typeof P.body.substituteMode=="object"?P.body.substituteMode:null,B=Array.isArray(P.body?.resolution)?P.body.resolution:[],L=B.filter(J=>J?.ok===!1).map(J=>String(J.input??"").trim()).filter(Boolean);if(i(R?.enabled===!0),s(R?.disclosure==="none"?"none":"prefix"),r(R?.replyMode==="quote"?"quote":"thread"),p(R?.disableControlCard!==!0),g(ct(R?.chats)),D(ct(R?.excludedChats)),v(R?.topicGroups!==!1),h(R?.topicActiveSessionTrigger!==!1),B.length)H.current=!0,T(J=>{let nt=[...B];return J.map(V=>{let K=V.idValue.trim(),ot=nt.findIndex(it=>String(it.input??"").trim()===K);if(ot<0)return V;let tt=nt.splice(ot,1)[0];if(tt?.ok===!0){let it={...V.persisted};return tt.openId&&(it.openId=tt.openId),V.idField==="email"&&(it.email=K),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 J=R?.targets??[];T(J.length?J.map(nt=>w(nt)):[w()])}a.patchBot(a.bot.larkAppId,{substituteMode:R}),S(L.length?{text:`\u2717 ${e("botDefaults.substituteTargetsInvalid")}: ${L.join(", ")}`}:{text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else{let R=Array.isArray(P.body?.resolution)?P.body.resolution.filter(B=>B?.ok===!1).map(B=>String(B.input??"").trim()).filter(Boolean):[];S({text:R.length?`\u2717 ${e("botDefaults.substituteTargetsInvalid")}: ${R.join(", ")}`:`\u2717 ${j(P)}`})}}catch(P){S({text:`\u2717 ${E(P)}`})}finally{A(!1)}}function Y(){let k=[],P=!1;for(let R of Z){let B=Me(R);if(!B){P||=!!R.name.trim();continue}k.push(B)}if(P||u&&k.length===0){S({text:`\u2717 ${e("botDefaults.substituteTargetsInvalid")}`});return}O({enabled:u,targets:k,disclosure:m,chats:le(d),excludedChats:le(N),replyMode:b,disableControlCard:!f,topicGroups:y,topicActiveSessionTrigger:C})}let U=[{value:"prefix",label:e("botDefaults.substituteDisclosurePrefix")},{value:"none",label:e("botDefaults.substituteDisclosureNone")}],M=[{value:"thread",label:e("botDefaults.substituteReplyModeThread")},{value:"quote",label:e("botDefaults.substituteReplyModeQuote")}];return(0,t.jsxs)("section",{className:"bd-section bd-substitute-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionSubstitute")}),(0,t.jsx)(at,{checked:u,disabled:c,dataAction:"toggle-substitute-mode",title:e("botDefaults.substituteEnabled"),help:e("botDefaults.substituteHelp"),onChange:i}),(0,t.jsx)(at,{checked:y,disabled:c,dataAction:"toggle-substitute-topic-groups",title:e("botDefaults.substituteTopicGroups"),help:e("botDefaults.substituteTopicGroupsHelp"),onChange:v}),(0,t.jsx)(at,{checked:C,disabled:c||!y,dataAction:"toggle-substitute-topic-active",title:e("botDefaults.substituteTopicActive"),help:e("botDefaults.substituteTopicActiveHelp"),onChange:h}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{children:e("botDefaults.substituteDisclosure")}),(0,t.jsx)(et,{dataInput:"substituteDisclosure",ariaLabel:e("botDefaults.substituteDisclosure"),value:m,disabled:c,options:U,onChange:k=>s(k)})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.substituteReplyModeHelp"),children:e("botDefaults.substituteReplyMode")}),(0,t.jsx)(et,{dataInput:"substituteReplyMode",ariaLabel:e("botDefaults.substituteReplyMode"),value:b,disabled:c,options:M,onChange:k=>r(k)})]})}),(0,t.jsx)(at,{checked:f,disabled:c,dataAction:"toggle-substitute-control-card",title:e("botDefaults.substituteControlCard"),help:e("botDefaults.substituteControlCardHelp"),onChange:p}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.substituteChatsHelp"),children:e("botDefaults.substituteChats")}),(0,t.jsx)("textarea",{"data-input":"substituteChats",rows:3,placeholder:e("botDefaults.substituteChatsPlaceholder"),value:d,disabled:c,onChange:k=>g(k.currentTarget.value)})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.substituteExcludedChatsHelp"),children:e("botDefaults.substituteExcludedChats")}),(0,t.jsx)("textarea",{"data-input":"substituteExcludedChats",rows:3,placeholder:e("botDefaults.substituteExcludedChatsPlaceholder"),value:N,disabled:c,onChange:k=>D(k.currentTarget.value)})]})}),(0,t.jsxs)("div",{className:"bd-row bd-substitute-targets",children:[(0,t.jsx)($,{help:e("botDefaults.substituteTargetsHelp"),children:e("botDefaults.substituteTargets")}),(0,t.jsxs)("div",{className:"bd-substitute-target-list","data-input":"substituteTargets",children:[Z.map((k,P)=>(0,t.jsxs)("div",{className:"bd-substitute-target-row",children:[(0,t.jsx)(et,{dataInput:`substituteTargetType-${k.key}`,className:"bd-substitute-target-type",ariaLabel:`${e("botDefaults.substituteTargetType")} ${P+1}`,value:k.idField,disabled:c,options:Et.map(R=>({value:R,label:e(`botDefaults.substituteTarget${R[0].toUpperCase()}${R.slice(1)}`)})),onChange:R=>{T(B=>B.map(L=>L.key===k.key?{...L,idField:R,idValue:L.persisted[R]??"",resolution:void 0}:L))}}),(0,t.jsx)("input",{className:"bd-substitute-target-id",type:"text","data-input":`substituteTargetId-${k.key}`,"aria-label":`${e("botDefaults.substituteTargetType")} ${P+1}`,placeholder:e("botDefaults.substituteTargetIdPlaceholder"),value:k.idValue,disabled:c,onChange:R=>{let B=R.currentTarget.value;T(L=>L.map(J=>J.key===k.key?{...J,idValue:B,resolution:void 0}:J))},onBlur:()=>{k.idValue.trim()&&Q(k.key)}}),(0,t.jsx)("div",{className:"bd-substitute-target-name",children:k.resolving?(0,t.jsx)("span",{className:"bd-substitute-target-resolving",children:e("botDefaults.substituteResolving")}):k.resolution?.ok===!0&&(k.name||k.resolution.avatarUrl)?(0,t.jsxs)(t.Fragment,{children:[k.resolution.avatarUrl?(0,t.jsx)(ft,{html:bt({name:k.resolution.name,avatarUrl:k.resolution.avatarUrl,size:"sm"})}):null,(0,t.jsx)("span",{className:"bd-substitute-target-name-chip","data-chip":`substituteTargetName-${k.key}`,"aria-label":`${e("botDefaults.substituteTargetName")} ${P+1}`,children:k.name})]}):k.resolution?.ok===!1?(0,t.jsx)("span",{className:"bd-substitute-target-resolution-badge",children:l(k.resolution.reason)}):(0,t.jsx)("input",{type:"text","data-input":`substituteTargetName-${k.key}`,"aria-label":`${e("botDefaults.substituteTargetName")} ${P+1}`,placeholder:e("botDefaults.substituteTargetNamePlaceholder"),value:k.name,disabled:c,onChange:R=>{let B=R.currentTarget.value;T(L=>L.map(J=>J.key===k.key?{...J,name:B}:J))}})}),(0,t.jsx)("button",{type:"button",className:"bd-substitute-target-remove","data-action":"remove-substitute-target",title:e("botDefaults.substituteTargetRemove"),"aria-label":e("botDefaults.substituteTargetRemove"),disabled:c,onClick:()=>{T(R=>{let B=R.filter(L=>L.key!==k.key);return B.length?B:[w()]})},children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]},k.key)),(0,t.jsx)("button",{type:"button",className:"bd-substitute-target-add","data-action":"add-substitute-target",title:e("botDefaults.substituteTargetAdd"),"aria-label":e("botDefaults.substituteTargetAdd"),disabled:c,onClick:()=>T(k=>[...k,w()]),children:(0,t.jsx)("span",{"aria-hidden":"true",children:"+"})})]})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-substitute-mode",disabled:c,onClick:Y,children:e("botDefaults.substituteSave")}),(0,t.jsx)("button",{type:"button","data-action":"off-substitute-mode",disabled:c,onClick:()=>{O({enabled:!1,targets:[]})},children:e("botDefaults.substituteOff")}),(0,t.jsx)(_,{status:x,attr:{"data-substitute-status":""}})]})]})}function Nt(a){return a==="thread"?"thread":a==="group"?"group":"chat"}function ra(a){let e=G(),[o,u]=(0,n.useState)(null),[i,l]=(0,n.useState)(!1),[m,s]=(0,n.useState)(!1),[b,r]=(0,n.useState)(null),f=async()=>{try{let y=await q("GET",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-group-tag-status`);if(y.ok&&y.body.ok)return u({authorized:!!y.body.authorized,tagMode:String(y.body.tagMode??"feed-group")}),!!y.body.authorized}catch{}return!1};(0,n.useEffect)(()=>{f()},[a.bot.larkAppId]);async function p(y){s(!0),r(null);try{let v=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-group-tag-config`,{mode:y});v.ok&&v.body.ok?u(C=>({authorized:C?.authorized??!1,tagMode:String(v.body.tagMode)})):r(j(v))}catch(v){r(E(v))}finally{s(!1)}}async function d(){l(!0),r(null);try{let y=await q("POST",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-group-tag-auth`,{});if(!y.ok||!y.body.ok||!y.body.authUrl){r(j(y));return}window.open(y.body.authUrl,"_blank","noopener");for(let v=0;v<60;v++)if(await new Promise(C=>setTimeout(C,3e3)),await f())return;r(e("botDefaults.sgTagAuthTimeout"))}catch(y){r(E(y))}finally{l(!1)}}let g=o?.tagMode??"feed-group",N=o?.authorized===!0,D=[{value:"feed-group",label:e("botDefaults.sgTagModeFeedGroup")},{value:"chat-tag",label:e("botDefaults.sgTagModeChatTag")},{value:"off",label:e("botDefaults.sgTagModeOff")}];return(0,t.jsx)("div",{className:"bd-row","data-session-group-tag-row":!0,children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.sgTagHelp"),children:e("botDefaults.sgTag")}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[(0,t.jsx)(et,{dataInput:"sessionGroupTagMode",ariaLabel:e("botDefaults.sgTag"),value:g,disabled:m||!o,options:D,onChange:y=>{p(y)}}),g==="chat-tag"&&(0,t.jsx)("span",{"data-sg-tag-state":"tenant",children:e("botDefaults.sgTagChatTagNote")}),g==="feed-group"&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{"data-sg-tag-state":N?"authorized":"unauthorized",children:N?`\u{1F7E2} ${e("botDefaults.sgTagAuthorized")}`:`\u26AA ${e("botDefaults.sgTagUnauthorized")}`}),!N&&(0,t.jsx)("button",{type:"button",className:"primary","data-action":"session-group-tag-auth",disabled:i,onClick:()=>{d()},children:e(i?"botDefaults.sgTagAuthWaiting":"botDefaults.sgTagAuthStart")})]}),b&&(0,t.jsxs)("span",{className:"status-error",children:["\u2717 ",b]})]})]})})}function ce(a){return a.regularGroupReplyMode==="chat"||a.regularGroupReplyMode==="new-topic"||a.regularGroupReplyMode==="shared"?a.regularGroupReplyMode:"chat-topic"}function be(a){return a.regularGroupMentionMode==="topic"||a.regularGroupMentionMode==="never"||a.regularGroupMentionMode==="ambient"?a.regularGroupMentionMode:"always"}function ua(a){let e=G(),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,[m,s]=(0,n.useState)(o),b=m??30,[r,f]=(0,n.useState)(o==null?"":String(o)),[p,d]=(0,n.useState)(null),[g,N]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let v=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null;s(v),f(v==null?"":String(v))},[a.bot.maxLiveWorkers]);async function D(v){d(null),N(!0);try{let C=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/max-live-workers`,{maxLiveWorkers:v});if(C.ok&&C.body.ok){let h=typeof C.body.maxLiveWorkers=="number"?C.body.maxLiveWorkers:null;s(h),f(h==null?"":String(h)),a.patchBot(a.bot.larkAppId,{maxLiveWorkers:h}),d({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else d({text:`\u2717 ${j(C)}`})}catch(C){d({text:`\u2717 ${E(C)}`})}finally{N(!1)}}function y(){let v=me(r);if(v==="invalid"){d({text:`\u2717 ${e("botDefaults.maxLiveWorkersInvalid")}`});return}D(v)}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionSessionCap")}),(0,t.jsxs)("div",{className:"bd-row bd-quota",children:[(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.maxLiveWorkersHelp"),children:e("botDefaults.maxLiveWorkers")}),(0,t.jsx)("input",{type:"number",min:1,step:1,"data-input":"maxLiveWorkers",placeholder:e("botDefaults.maxLiveWorkersPlaceholder"),value:r,disabled:g,onChange:v=>f(v.currentTarget.value)})]}),(0,t.jsx)("small",{"data-session-cap-state":!0,children:Oe(m,e)}),(0,t.jsx)("small",{className:"bd-help bd-session-residency",children:e("botDefaults.maxLiveWorkersUsage",{resident:i,cap:b,dormant:l,logical:u})})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-session-cap",disabled:g,onClick:y,children:e("botDefaults.maxLiveWorkersSave")}),(0,t.jsx)("button",{type:"button","data-action":"off-session-cap",disabled:g,onClick:()=>{f(""),D(null)},children:e("botDefaults.maxLiveWorkersOff")}),(0,t.jsx)(_,{status:p,attr:{"data-session-cap-status":""}})]})]})}function da(a){let e=G(),[o,u]=(0,n.useState)(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[i,l]=(0,n.useState)(null),[m,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>u(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[a.bot.startupCommands]);async function b(){l(null),s(!0);try{let r=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/startup-commands`,{startupCommands:o});if(r.ok&&r.body.ok){let f=typeof r.body.startupCommands=="string"?r.body.startupCommands:"";u(f),a.patchBot(a.bot.larkAppId,{startupCommands:f}),l({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${j(r)}`})}catch(r){l({text:`\u2717 ${E(r)}`})}finally{s(!1)}}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:(0,t.jsx)($,{help:e("botDefaults.startupCommandsHelp"),children:e("botDefaults.sectionStartupCommands")})}),(0,t.jsx)("textarea",{"data-input":"startupCommands",rows:3,placeholder:e("botDefaults.startupCommandsPlaceholder"),value:o,disabled:m,onChange:r=>u(r.currentTarget.value)}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-startup-commands",disabled:m,onClick:()=>{b()},children:e("botDefaults.startupCommandsSave")}),(0,t.jsx)(_,{status:i,attr:{"data-startup-commands-status":""}})]})]})}function ca(a){let e=G(),[o,u]=(0,n.useState)(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:""),[i,l]=(0,n.useState)(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:""),[m,s]=(0,n.useState)(null),[b,r]=(0,n.useState)(null);(0,n.useEffect)(()=>{u(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:"")},[a.bot.customPassthroughCommands]),(0,n.useEffect)(()=>{l(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:"")},[a.bot.canTalkDaemonCommands]);async function f(){s(null),r("passthrough");try{let d=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/custom-passthrough`,{customPassthroughCommands:o});if(d.ok&&d.body.ok){let g=typeof d.body.customPassthroughCommands=="string"?d.body.customPassthroughCommands:"";u(g),a.patchBot(a.bot.larkAppId,{customPassthroughCommands:g}),s({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else s({text:`\u2717 ${j(d)}`})}catch(d){s({text:`\u2717 ${E(d)}`})}finally{r(null)}}async function p(){s(null),r("cantalk");try{let d=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/cantalk-daemon-commands`,{canTalkDaemonCommands:i});if(d.ok&&d.body.ok){let g=typeof d.body.canTalkDaemonCommands=="string"?d.body.canTalkDaemonCommands:"";l(g),a.patchBot(a.bot.larkAppId,{canTalkDaemonCommands:g}),s({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else s({text:`\u2717 ${j(d)}`})}catch(d){s({text:`\u2717 ${E(d)}`})}finally{r(null)}}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:(0,t.jsx)($,{help:e("botDefaults.sectionSlashCommandsHelp"),children:e("botDefaults.sectionSlashCommands")})}),(0,t.jsxs)("div",{className:"bd-subsection",children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("botDefaults.customPassthroughHelp"),children:e("botDefaults.customPassthrough")})}),(0,t.jsx)("textarea",{"data-input":"customPassthroughCommands",rows:2,placeholder:e("botDefaults.customPassthroughPlaceholder"),value:o,disabled:b==="passthrough",onChange:d=>u(d.currentTarget.value)}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-custom-passthrough",disabled:b==="passthrough",onClick:()=>{f()},children:e("botDefaults.customPassthroughSave")})})]}),(0,t.jsxs)("div",{className:"bd-subsection",children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("botDefaults.canTalkDaemonHelp"),children:e("botDefaults.canTalkDaemon")})}),(0,t.jsx)("textarea",{"data-input":"canTalkDaemonCommands",rows:2,placeholder:e("botDefaults.canTalkDaemonPlaceholder"),value:i,disabled:b==="cantalk",onChange:d=>l(d.currentTarget.value)}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-cantalk-daemon",disabled:b==="cantalk",onClick:()=>{p()},children:e("botDefaults.canTalkDaemonSave")})})]}),(0,t.jsx)(_,{status:m,attr:{"data-slash-commands-status":""}})]})}function ba(a){let e=G(),[o,u]=(0,n.useState)(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[i,l]=(0,n.useState)(null),[m,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>u(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[a.bot.launchShell]);async function b(){l(null),s(!0);try{let r=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/launch-shell`,{launchShell:o});if(r.ok&&r.body.ok){let f=typeof r.body.launchShell=="string"?r.body.launchShell:"";u(f),a.patchBot(a.bot.larkAppId,{launchShell:f}),l({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${j(r)}`})}catch(r){l({text:`\u2717 ${E(r)}`})}finally{s(!1)}}return(0,t.jsxs)("div",{className:"bd-subsection",children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("botDefaults.launchShellHelp"),children:e("botDefaults.sectionLaunchShell")})}),(0,t.jsx)("input",{type:"text","data-input":"launchShell",placeholder:e("botDefaults.launchShellPlaceholder"),value:o,disabled:m,onChange:r=>u(r.currentTarget.value)}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-launch-shell",disabled:m,onClick:()=>{b()},children:e("botDefaults.launchShellSave")}),(0,t.jsx)(_,{status:i,attr:{"data-launch-shell-status":""}})]})]})}function fa(a){let e=G(),[o,u]=(0,n.useState)(typeof a.bot.env=="string"?a.bot.env:""),[i,l]=(0,n.useState)(null),[m,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>u(typeof a.bot.env=="string"?a.bot.env:""),[a.bot.env]);async function b(){l(null),s(!0);try{let r=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/env`,{env:o});if(r.ok&&r.body.ok){let f=typeof r.body.env=="string"?r.body.env:"";u(f),a.patchBot(a.bot.larkAppId,{env:f}),l({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${j(r)}`})}catch(r){l({text:`\u2717 ${E(r)}`})}finally{s(!1)}}return(0,t.jsxs)("div",{className:"bd-subsection",children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("botDefaults.envHelp"),children:e("botDefaults.sectionEnv")})}),(0,t.jsx)("textarea",{"data-input":"env",rows:5,placeholder:e("botDefaults.envPlaceholder"),value:o,disabled:m,onChange:r=>u(r.currentTarget.value)}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-env",disabled:m,onClick:()=>{b()},children:e("botDefaults.envSave")}),(0,t.jsx)(_,{status:i,attr:{"data-env-status":""}})]})]})}var ma=["gpt-5.5","gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.4","gpt-5.4-pro"],pa=["","low","medium","high","xhigh"],ga=["boe","cn"];function ya(a){let e=G(),o=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{},[u,i]=(0,n.useState)(typeof o.baseUrl=="string"?o.baseUrl:""),[l,m]=(0,n.useState)(o.sandboxCluster==="cn"?"cn":"boe"),[s,b]=(0,n.useState)(typeof o.model=="string"?o.model:""),[r,f]=(0,n.useState)(typeof o.reasoningEffort=="string"?o.reasoningEffort:""),[p,d]=(0,n.useState)(typeof o.jwtEnv=="string"?o.jwtEnv:""),[g,N]=(0,n.useState)(typeof o.systemPrompt=="string"?o.systemPrompt:""),[D,y]=(0,n.useState)(Array.isArray(o.setupCommands)?o.setupCommands.join(`
8
+ `):""),[v,C]=(0,n.useState)(null),[h,x]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let c=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{};i(typeof c.baseUrl=="string"?c.baseUrl:""),m(c.sandboxCluster==="cn"?"cn":"boe"),b(typeof c.model=="string"?c.model:""),f(typeof c.reasoningEffort=="string"?c.reasoningEffort:""),d(typeof c.jwtEnv=="string"?c.jwtEnv:""),N(typeof c.systemPrompt=="string"?c.systemPrompt:""),y(Array.isArray(c.setupCommands)?c.setupCommands.join(`
9
+ `):"")},[a.bot.riff]);async function S(){C(null),x(!0);try{let c={};u.trim()&&(c.baseUrl=u.trim()),c.sandboxCluster=l,s.trim()&&(c.model=s.trim()),r&&(c.reasoningEffort=r),p.trim()&&(c.jwtEnv=p.trim()),g.trim()&&(c.systemPrompt=g.trim()),D.trim()&&(c.setupCommands=D.split(`
10
+ `).map(H=>H.trim()).filter(Boolean));let A=Object.keys(c).length?JSON.stringify(c):"",F=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/riff`,{riff:A});if(F.ok&&F.body.ok){let H=typeof F.body.riff=="string"&&F.body.riff?JSON.parse(F.body.riff):null;if(a.patchBot(a.bot.larkAppId,{riff:H}),a.persistCliSelection&&!await a.persistCliSelection()){C({text:`\u2717 ${e("botDefaults.riffCliPersistFailed")}`});return}C({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else C({text:`\u2717 ${j(F)}`})}catch(c){C({text:`\u2717 ${E(c)}`})}finally{x(!1)}}return(0,t.jsxs)("div",{className:"bd-subsection",children:[(0,t.jsx)("h4",{className:"bd-subsection-title",children:(0,t.jsx)($,{help:e("botDefaults.riffHelp"),children:e("botDefaults.sectionRiff")})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.riffBaseUrl")}),(0,t.jsx)("input",{type:"text","data-input":"riff-base-url",placeholder:e("botDefaults.riffBaseUrlPlaceholder"),value:u,disabled:h,onChange:c=>i(c.currentTarget.value)})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)("span",{children:(0,t.jsx)($,{help:e("botDefaults.riffSandboxClusterHelp"),children:e("botDefaults.riffSandboxCluster")})}),(0,t.jsx)(et,{dataInput:"riff-sandbox-cluster",ariaLabel:e("botDefaults.riffSandboxCluster"),value:l,disabled:h,options:ga.map(c=>({value:c,label:c.toUpperCase()})),onChange:c=>m(c)})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:(0,t.jsx)($,{help:e("botDefaults.riffModelHelp"),children:e("botDefaults.riffModel")})}),(0,t.jsx)("input",{type:"text","data-input":"riff-model",list:`riff-model-suggestions-${a.bot.larkAppId}`,placeholder:e("botDefaults.riffModelPlaceholder"),value:s,disabled:h,onChange:c=>b(c.currentTarget.value)}),(0,t.jsx)("datalist",{id:`riff-model-suggestions-${a.bot.larkAppId}`,children:ma.map(c=>(0,t.jsx)("option",{value:c},c))})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)("span",{children:(0,t.jsx)($,{help:e("botDefaults.riffReasoningEffortHelp"),children:e("botDefaults.riffReasoningEffort")})}),(0,t.jsx)(et,{dataInput:"riff-reasoning-effort",ariaLabel:e("botDefaults.riffReasoningEffort"),value:r,disabled:h,options:pa.map(c=>({value:c,label:c===""?e("botDefaults.riffReasoningEffortDefault"):c})),onChange:c=>f(c)})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:(0,t.jsx)($,{help:e("botDefaults.riffJwtEnvHelp"),children:e("botDefaults.riffJwtEnv")})}),(0,t.jsx)("input",{type:"text","data-input":"riff-jwt-env",placeholder:e("botDefaults.riffJwtEnvPlaceholder"),value:p,disabled:h,onChange:c=>d(c.currentTarget.value)})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.riffSystemPrompt")}),(0,t.jsx)("textarea",{"data-input":"riff-system-prompt",placeholder:e("botDefaults.riffSystemPromptPlaceholder"),value:g,disabled:h,onChange:c=>N(c.currentTarget.value),rows:4})]})}),(0,t.jsx)("div",{className:"bd-row",children:(0,t.jsxs)("label",{children:[(0,t.jsx)("span",{children:e("botDefaults.riffSetupCommands")}),(0,t.jsx)("textarea",{"data-input":"riff-setup-commands",placeholder:e("botDefaults.riffSetupCommandsPlaceholder"),value:D,disabled:h,onChange:c=>y(c.currentTarget.value),rows:3})]})}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-riff",disabled:h,onClick:()=>{S()},children:e("botDefaults.riffSave")}),(0,t.jsx)(_,{status:v,attr:{"data-riff-status":""}})]})]})}function ha(a){let e=G(),o=a.bot.brandLabel??null,[u,i]=(0,n.useState)(o),[l,m]=(0,n.useState)(o??""),[s,b]=(0,n.useState)(null),[r,f]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let d=a.bot.brandLabel??null;i(d),m(d??"")},[a.bot.brandLabel]);async function p(d){b(null),f(!0);try{let g=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/brand-label`,{brandLabel:d});if(g.ok&&g.body.ok){let N=g.body.brandLabel??null;i(N),m(N??""),a.patchBot(a.bot.larkAppId,{brandLabel:N}),b({text:"\u2713",ok:!0})}else b({text:`\u2717 ${j(g)}`})}catch(g){b({text:`\u2717 ${E(g)}`})}finally{f(!1)}}return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionBrand")}),(0,t.jsxs)("div",{className:"bd-row bd-brand",children:[(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:e("botDefaults.brandLabelHelp"),children:e("botDefaults.brandLabel")}),(0,t.jsx)("input",{type:"text","data-input":"brandLabel",placeholder:e("botDefaults.brandLabelPlaceholder"),value:l,disabled:r,onChange:d=>m(d.currentTarget.value)})]}),(0,t.jsx)("small",{"data-brand-state":!0,children:Be(u,e)})]}),(0,t.jsxs)("div",{className:"actions",children:[(0,t.jsx)("button",{type:"button",className:"primary","data-action":"save-brand",disabled:r,onClick:()=>{p(l)},children:e("botDefaults.brandSave")}),(0,t.jsx)("button",{type:"button","data-action":"reset-brand",disabled:r,onClick:()=>{p(null)},children:e("botDefaults.brandReset")}),(0,t.jsx)(_,{status:s,attr:{"data-brand-status":""}})]})]})}function va(a){let e=G(),[o,u]=(0,n.useState)(a.bot.autoGrantRequestCards!==!1),[i,l]=(0,n.useState)(a.bot.restrictGrantCommands===!0),[m,s]=(0,n.useState)(a.bot.p2pOpen===!0),[b,r]=(0,n.useState)(typeof a.bot.grantDefaultDurationMs=="number"?a.bot.grantDefaultDurationMs:null),[f,p]=(0,n.useState)(String(a.bot.grantDefaultDurationMs??36e5)),[d,g]=(0,n.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null),[N,D]=(0,n.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?String(a.bot.messageQuotaDefaultLimit):""),[y,v]=(0,n.useState)(null),[C,h]=(0,n.useState)(null),[x,S]=(0,n.useState)(null);(0,n.useEffect)(()=>{u(a.bot.autoGrantRequestCards!==!1)},[a.bot.autoGrantRequestCards]),(0,n.useEffect)(()=>{l(a.bot.restrictGrantCommands===!0)},[a.bot.restrictGrantCommands]),(0,n.useEffect)(()=>{s(a.bot.p2pOpen===!0)},[a.bot.p2pOpen]),(0,n.useEffect)(()=>{let T=typeof a.bot.grantDefaultDurationMs=="number"?a.bot.grantDefaultDurationMs:null;r(T),p(String(T??36e5))},[a.bot.grantDefaultDurationMs]),(0,n.useEffect)(()=>{let T=typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null;g(T),D(T===null?"":String(T))},[a.bot.messageQuotaDefaultLimit]);async function c(T,O,Y){S(O),v(O==="duration"||O==="quota"?{text:e("botDefaults.grantDefaultsSaving")}:null);try{let U=await q("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/grant-prefs`,T);if(U.ok&&U.body.ok){let M=typeof U.body.grantDefaultDurationMs=="number"?U.body.grantDefaultDurationMs:null,k=typeof U.body.messageQuotaDefaultLimit=="number"?U.body.messageQuotaDefaultLimit:null;u(U.body.autoGrantRequestCards!==!1),l(U.body.restrictGrantCommands===!0),s(U.body.p2pOpen===!0),r(M),g(k),"grantDefaultDurationMs"in T&&p(String(M??36e5)),"messageQuotaDefaultLimit"in T&&D(k===null?"":String(k)),a.patchBot(a.bot.larkAppId,{autoGrantRequestCards:U.body.autoGrantRequestCards!==!1,restrictGrantCommands:U.body.restrictGrantCommands===!0,p2pOpen:U.body.p2pOpen===!0,grantDefaultDurationMs:M,messageQuotaDefaultLimit:k}),"messageQuotaDefaultLimit"in T&&h(null),v({text:`\u2713 ${e("botDefaults.cardPrefSaved")}`,ok:!0})}else Y?.(),v({text:`\u2717 ${j(U)}`})}catch(U){Y?.(),v({text:`\u2717 ${E(U)}`})}finally{S(null)}}function A(T){p(T),v(null);let O=Number(T);if(!Ae.includes(O)){v({text:`\u2717 ${e("botDefaults.grantDurationInvalid")}`});return}let Y=O===36e5?null:O;if(Y===b)return;let U=String(b??36e5);c({grantDefaultDurationMs:Y},"duration",()=>p(U))}function F(){let T=me(N),O=T!==d;if(v(null),!O){h(null);return}if(T==="invalid"||typeof T=="number"&&T>1e3){h(e("botDefaults.quotaInvalid"));return}h(null),c({messageQuotaDefaultLimit:T},"quota")}let H=[{value:String(36e5),label:e("botDefaults.grantDuration1Hour")},{value:String(480*60*1e3),label:e("botDefaults.grantDuration8Hours")},{value:String(1440*60*1e3),label:e("botDefaults.grantDuration1Day")},{value:String(10080*60*1e3),label:e("botDefaults.grantDuration7Days")}],w=b??36e5,z=w===36e5?e("botDefaults.grantDuration1HourValue"):String(H.find(T=>T.value===String(w))?.label??""),Q=d===null?e("botDefaults.quotaHelpBuiltIn",{count:3}):d>1e3?e("botDefaults.quotaHelpLegacy",{cardCount:1e3,oncallCount:d,defaultCount:3}):e("botDefaults.quotaHelpCustom",{count:d,defaultCount:3}),Z=d===null?e(b===null?"botDefaults.grantDefaultsCurrentBuiltIn":"botDefaults.grantDefaultsCurrentCustomBuiltInQuota",{duration:z,count:3}):d>1e3?e("botDefaults.grantDefaultsCurrentLegacy",{duration:z,cardCount:1e3,oncallCount:d}):e("botDefaults.grantDefaultsCurrentCustom",{duration:z,count:d});return(0,t.jsxs)("section",{className:"bd-section",children:[(0,t.jsx)("h3",{className:"bd-section-title",children:e("botDefaults.sectionGrant")}),(0,t.jsxs)("div",{className:"bd-toggle-grid bd-grant-toggle-grid",children:[(0,t.jsx)(at,{checked:o,disabled:x!==null,dataAction:"toggle-auto-grant-card",title:e("botDefaults.autoGrantCard"),help:e("botDefaults.autoGrantCardHelp"),onChange:T=>{let O=o;u(T),c({autoGrantRequestCards:T},"autoGrant",()=>u(O))}}),(0,t.jsx)(at,{checked:i,disabled:x!==null,dataAction:"toggle-restrict-grant",title:e("botDefaults.restrictGrant"),help:e("botDefaults.restrictGrantHelp"),onChange:T=>{let O=i;l(T),c({restrictGrantCommands:T},"restrict",()=>l(O))}}),(0,t.jsx)(at,{checked:m,disabled:x!==null,dataAction:"toggle-p2p-open",title:e("botDefaults.p2pOpen"),help:e("botDefaults.p2pOpenHelp"),onChange:T=>{let O=m;s(T),c({p2pOpen:T},"p2pOpen",()=>s(O))}})]}),(0,t.jsxs)("form",{className:"bd-grant-defaults",noValidate:!0,onSubmit:T=>{T.preventDefault(),F()},children:[(0,t.jsx)("div",{className:"bd-row bd-grant-duration",children:(0,t.jsxs)("div",{className:"bd-field",children:[(0,t.jsx)($,{help:e("botDefaults.grantDurationHelp"),children:e("botDefaults.grantDurationDefault")}),(0,t.jsx)(et,{dataInput:"grantDefaultDurationMs",value:f,options:H,disabled:x!==null,ariaLabel:e("botDefaults.grantDurationDefault"),onChange:A})]})}),(0,t.jsxs)("div",{className:"bd-row bd-quota",children:[(0,t.jsxs)("label",{children:[(0,t.jsx)($,{help:Q,children:e("botDefaults.quotaDefault")}),(0,t.jsx)("input",{type:"number",min:1,max:1e3,step:1,"data-input":"quotaLimit",placeholder:e("botDefaults.quotaPlaceholder",{count:3}),value:N,disabled:x!==null,"aria-label":e("botDefaults.quotaDefault"),"aria-invalid":C?!0:void 0,"aria-describedby":C?"grant-defaults-state grant-default-quota-error":"grant-defaults-state",onChange:T=>{D(T.currentTarget.value),h(null),v(null)},onBlur:F,onKeyDown:T=>{T.key==="Enter"&&(T.preventDefault(),T.currentTarget.blur())}})]}),C?(0,t.jsx)("small",{id:"grant-default-quota-error",className:"bd-field-error",role:"alert",children:C}):null,(0,t.jsx)("small",{id:"grant-defaults-state","data-grant-defaults-state":!0,children:Z})]}),(0,t.jsx)("div",{className:"actions",children:(0,t.jsx)(_,{status:y,attr:{"data-grant-status":""}})})]})]})}function Oa(a){return Ht(a,(0,t.jsx)(Le,{}))}export{gt as BOT_DEFAULTS_TABS,yt as BdTabGrid,_e as BotAgentSection,Le as BotDefaultsPage,Ie as BotDefaultsTabs,ea as CardBehaviorSection,aa as CodexAppDisplaySection,oa as EnvelopeInjectionSection,va as GrantSection,Me as buildSubstituteTarget,de as effectiveAccess,Oa as renderBotDefaultsPage};
@@ -0,0 +1 @@
1
+ import{a as n}from"./chunk-G5XGBCM6.js";import{r as s,s as i}from"./chunk-Q2MT4VWH.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 +1 @@
1
- import{q as T}from"./chunk-5CJMHTT4.js";import{u as t}from"./chunk-6JTZJRQJ.js";import{a as Z,d as B}from"./chunk-5THX4DI2.js";import{c as E}from"./chunk-7SZRL6FY.js";var r=E(Z(),1);var e=E(B(),1),nn="botmux:open-bot-onboarding",L={id:"claude-code",label:"Claude"},G="glm-5.1";function x(){return{options:[L],ttadkModelDefault:G,ttadkModelSuggestions:[],suggestedAppName:"botmux-0",webSession:{status:"checking"}}}function Q(){return{appName:"",cliId:L.id,dirMode:"fixed",workingDir:"~",model:""}}function en(n,o){return n||o==="checking"}function q(n){return n instanceof Error?n.message:String(n)}function X(n){return n.status==="completed"||n.status==="failed"||n.status==="needs_owner"}function N(n){return n==="login_failed"||n==="invalid_session"||n==="identity_unavailable"||n==="session_changed"}function tn(n){return n.status==="waiting_for_scan"?n.registrationMode==="compat"?t("botOnboarding.waitingCompat"):t("botOnboarding.waiting",{name:n.appName??""}):n.status==="verifying"?t("botOnboarding.verifying"):n.status==="configuring_permissions"?n.permissionStatusMsg?`${t("botOnboarding.configuringPermissions")} ${n.permissionStatusMsg}`:t("botOnboarding.configuringPermissions"):n.status==="waiting_for_platform_scan"?t("botOnboarding.platformScanHint"):n.status==="needs_owner"?t("botOnboarding.needsOwnerTitle"):n.status==="completed"?t("botOnboarding.completed",{name:n.appName??t("botOnboarding.botFallback")}):n.status==="failed"?n.appId?t("botOnboarding.partialFailureTitle"):n.error==="qr_expired"?t("botOnboarding.qrExpiredTitle"):N(n.error)?t("botOnboarding.authIncompleteTitle"):t("botOnboarding.createFailedTitle"):t("botOnboarding.starting")}async function on(){try{let n=await fetch("/api/cli-options"),o=await n.json();if(n.ok&&Array.isArray(o?.options)){let a=typeof o.ttadkModelDefault=="string"&&o.ttadkModelDefault.trim()?o.ttadkModelDefault.trim():G,l=Array.isArray(o.ttadkModelSuggestions)?o.ttadkModelSuggestions.filter(f=>typeof f=="string"):[],d=typeof o.suggestedAppName=="string"&&o.suggestedAppName.trim()?o.suggestedAppName.trim():"botmux-0",b=o?.webSession?.identity,c=o?.webSession?.status==="ready"&&typeof b?.userId=="string"&&typeof b?.userName=="string"&&typeof b?.tenantId=="string"&&typeof b?.tenantName=="string"?{status:"ready",source:typeof o.webSession.source=="string"?o.webSession.source:"botmux_cache",identity:{userId:b.userId,userName:b.userName,...typeof b.email=="string"?{email:b.email}:{},tenantId:b.tenantId,tenantName:b.tenantName}}:{status:"scan_required",...typeof o?.webSession?.reason=="string"?{reason:o.webSession.reason}:{}};return{options:o.options,ttadkModelDefault:a,ttadkModelSuggestions:l,suggestedAppName:d,webSession:c}}}catch{}return{...x(),webSession:{status:"scan_required"}}}function K(n,o,a){let l=a.options.find(f=>f.id===o),d=l?.gateway==="ttadk",b=d&&l?.acceptsModel!==!1,c=n.model;return d&&!b?c="":b&&!c.trim()?c=a.ttadkModelDefault:!b&&c.trim()===a.ttadkModelDefault&&(c=""),{...n,cliId:o,model:c}}function an(n,o){let a=o.options.some(l=>l.id===n.cliId)?n.cliId:o.options[0]?.id??L.id;return K({...n},a,o)}async function gn(){window.dispatchEvent(new Event(nn))}function rn(n){let{job:o}=n;if(o.status!=="completed"&&o.status!=="needs_owner"||!o.permission)return null;let a=o.permission;if(a.ok){let d=[t("botOnboarding.permissionOk",{count:a.scopeCount??0})];return a.skippedScopeCount&&a.skippedScopeCount>0&&d.push(t("botOnboarding.permissionSkipped",{count:a.skippedScopeCount})),a.versionId&&d.push(t("botOnboarding.permissionVersion",{version:a.versionId})),(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-ok",children:d.join(" ")}),a.scopeWarning?(0,e.jsx)("p",{className:"hint-warn",children:a.scopeWarning}):null]})}let l=o.remainingSteps??[];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("p",{className:"hint-warn",children:[t("botOnboarding.permissionManual"),a.message?`\uFF08${a.message}\uFF09`:""]}),l.length?(0,e.jsx)("ol",{className:"onboarding-steps",children:l.map(d=>(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:d.url,target:"_blank",rel:"noopener",children:d.title})},`${d.title}:${d.url}`))}):null]})}function sn(n){let{job:o}=n;return o.appId?(0,e.jsxs)("p",{className:"onboarding-meta",children:[(0,e.jsx)("b",{children:"App ID:"})," ",(0,e.jsx)("code",{children:o.appId}),o.appName?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.appNameLabel"),":"]})," ",(0,e.jsx)("code",{children:o.appName})]}):null,o.cliId?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsx)("b",{children:"CLI:"})," ",(0,e.jsx)("code",{children:o.cliId})]}):null,o.workingDir?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.metaDir"),":"]})," ",(0,e.jsx)("code",{children:o.workingDir})]}):null]}):null}function W(n){return(0,e.jsxs)("div",{className:"qr-card",children:[(0,e.jsx)("img",{className:"qr-image",src:n.dataUrl,alt:n.alt}),n.link?(0,e.jsx)("a",{className:"onboarding-link",href:n.link,target:"_blank",rel:"noopener",children:t("botOnboarding.openLink")}):null]})}function z(n,o){return n.find(a=>a.value===o)?.label??o}function ln(n){let{job:o,ownerError:a}=n.view;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:`onboarding-status status-${o.status}`,children:tn(o)}),o.status==="waiting_for_scan"&&o.qrDataUrl?(0,e.jsx)(W,{dataUrl:o.qrDataUrl,alt:t("botOnboarding.qrAlt"),link:o.qrUrl}):null,o.status==="waiting_for_platform_scan"&&o.platformQrDataUrl?(0,e.jsx)(W,{dataUrl:o.platformQrDataUrl,alt:t("botOnboarding.platformQrAlt")}):null,(0,e.jsx)(sn,{job:o}),(0,e.jsx)(rn,{job:o}),o.status==="needs_owner"?(0,e.jsxs)("form",{className:"onboarding-form",id:"ob-owner-form",onSubmit:l=>{l.preventDefault(),n.onSubmitOwner(o,n.ownerInput,n.ownerIdInput)},children:[(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerLabel")}),(0,e.jsx)("input",{id:"ob-owner",type:"text",inputMode:"email",placeholder:t("botOnboarding.ownerPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerInput,onChange:l=>n.onOwnerInputChange(l.currentTarget.value)})]}),(0,e.jsx)("p",{className:"hint-warn",children:t("botOnboarding.needsOwnerDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.ownerUseId")}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerIdLabel")}),(0,e.jsx)("input",{id:"ob-owner-id",type:"text",placeholder:t("botOnboarding.ownerIdPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerIdInput,onChange:l=>n.onOwnerIdInputChange(l.currentTarget.value)})]})]}),a?(0,e.jsx)("p",{className:"form-error",children:a}):null,(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",children:t("botOnboarding.ownerSubmit")})})]}):null,o.status==="completed"?(0,e.jsx)("p",{className:"hint-ok",children:o.liveStarted?t("botOnboarding.liveOk"):t("botOnboarding.restartHint")}):null,o.status==="failed"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-warn",children:o.appId?t("botOnboarding.partialFailureDescription"):o.error==="qr_expired"?t("botOnboarding.qrExpiredDescription"):N(o.error)?t("botOnboarding.authIncompleteDescription"):t("botOnboarding.createFailedDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.technicalDetails")}),(0,e.jsx)("code",{children:o.message??o.error??"unknown"})]}),(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")}),o.appId?null:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("button",{type:"button",onClick:()=>n.onRetry("compat"),children:t("botOnboarding.compatibilityMode")}),(0,e.jsx)("button",{type:"button",className:"primary onboarding-submit",onClick:()=>n.onRetry("web"),children:o.error==="qr_expired"?t("botOnboarding.generateQr"):N(o.error)?t("botOnboarding.scanAgain"):t("botOnboarding.retry")})]})]})]}):null,o.status==="completed"?(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")})}):null]})}function dn(n){let o=n.cliState.options.find(s=>s.id===n.form.cliId),a=o?.gateway==="ttadk"&&o.acceptsModel!==!1,l=o?.gateway==="ttadk"&&o.acceptsModel===!1,d=a?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",n.cliState.ttadkModelDefault):t("botOnboarding.modelPlaceholder"),b=n.form.dirMode==="card"?t("botOnboarding.dirLabelCard"):t("botOnboarding.dirLabelFixed"),c=n.form.dirMode==="card"?t("botOnboarding.dirPlaceholderCard"):t("botOnboarding.dirPlaceholderFixed"),f=[...n.cliState.options].sort((s,p)=>s.label.localeCompare(p.label,"en",{sensitivity:"base"})).map(s=>({value:s.id,label:s.available===!1?t("botOnboarding.cliMissingOption",{label:s.label,command:s.command??s.id}):s.label})),S=[{value:"fixed",label:t("botOnboarding.dirModeFixed")},{value:"card",label:t("botOnboarding.dirModeCard")}];return(0,e.jsxs)("form",{id:"onboarding-form",className:"onboarding-form",onSubmit:n.onSubmit,children:[(0,e.jsx)("div",{className:"onboarding-session","aria-live":"polite",children:n.sessionMode==="checking"?(0,e.jsx)("p",{children:t("botOnboarding.sessionChecking")}):n.cliState.webSession.status==="ready"?n.sessionMode==="reuse"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionReady",{user:n.cliState.webSession.identity.userName,tenant:n.cliState.webSession.identity.tenantName})}),n.cliState.webSession.identity.email?(0,e.jsx)("small",{children:n.cliState.webSession.identity.email}):null]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("qr"),children:t("botOnboarding.switchAccount")})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionSwitching")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionSwitchingHint")})]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("reuse"),children:t("botOnboarding.reuseCurrentAccount")})]}):(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionScanRequired")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionScanRequiredHint")})]})}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.appNameLabel")}),(0,e.jsx)("input",{id:"ob-app-name",type:"text",maxLength:64,value:n.form.appName,placeholder:t("botOnboarding.appNamePlaceholder"),autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,appName:s.currentTarget.value})}),(0,e.jsx)("small",{className:"onboarding-field-hint",children:t("botOnboarding.appNameHint",{name:n.cliState.suggestedAppName})})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.cliLabel")}),(0,e.jsx)(T,{id:"ob-cli",className:"onboarding-menu",ariaLabel:t("botOnboarding.cliLabel"),label:z(f,n.form.cliId),value:n.form.cliId,options:f,searchable:!0,searchPlaceholder:t("common.dropdownSearch"),searchEmptyLabel:t("common.dropdownSearchEmpty"),onChange:s=>{n.onFormChange(K(n.form,s,n.cliState))}}),o?.available===!1?(0,e.jsx)("small",{className:"hint-warn",children:t("botOnboarding.cliMissingHint",{command:o.command??n.form.cliId})}):(0,e.jsx)("small",{className:"onboarding-field-hint",children:n.form.cliId})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.dirModeLabel")}),(0,e.jsx)(T,{id:"ob-dir-mode",className:"onboarding-menu",ariaLabel:t("botOnboarding.dirModeLabel"),label:z(S,n.form.dirMode),value:n.form.dirMode,options:S,onChange:s=>n.onFormChange({...n.form,dirMode:s})})]}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:b}),(0,e.jsx)("input",{id:"ob-dir",type:"text",value:n.form.workingDir,placeholder:c,autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,workingDir:s.currentTarget.value})})]}),l?null:(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.modelLabel")}),(0,e.jsx)("input",{id:"ob-model",type:"text",list:a?"ob-model-suggestions":void 0,placeholder:d,autoComplete:"off",spellCheck:!1,value:n.form.model,onChange:s=>n.onFormChange({...n.form,model:s.currentTarget.value})}),a?(0,e.jsx)("datalist",{id:"ob-model-suggestions",children:n.cliState.ttadkModelSuggestions.map(s=>(0,e.jsx)("option",{value:s},s))}):null]}),n.error?(0,e.jsx)("p",{className:"form-error",children:n.error}):null,(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",id:"ob-cancel",disabled:n.submitting,onClick:n.onClose,children:t("botOnboarding.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",disabled:en(n.submitting,n.sessionMode),children:n.submitting?t("botOnboarding.starting"):n.sessionMode==="reuse"?t("botOnboarding.confirmReuse"):t("botOnboarding.startScan")})]})]})}function un(n){let o=(0,r.useRef)(null),a=(0,r.useRef)(null),l=(0,r.useRef)(0),[d,b]=(0,r.useState)(()=>x()),[c,f]=(0,r.useState)(()=>Q()),[S,s]=(0,r.useState)("checking"),[p,w]=(0,r.useState)({kind:"form"}),[P,I]=(0,r.useState)(!1),[R,M]=(0,r.useState)(""),[A,_]=(0,r.useState)(""),g=(0,r.useCallback)(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]),v=(0,r.useCallback)(()=>{g(),n.onClose()},[n,g]),y=(0,r.useCallback)(i=>{w({kind:"job",job:i}),i.status==="needs_owner"&&(M(i.suggestedOwner??""),_("")),X(i)&&g()},[g]),J=(0,r.useCallback)(async i=>{let m=await fetch(`/api/bot-onboarding/${encodeURIComponent(i)}`),u=await m.json();if(!m.ok||!u?.job)throw new Error(u?.error??`http_${m.status}`);y(u.job)},[y]),j=(0,r.useCallback)(i=>{g(),a.current=window.setInterval(()=>{J(i).catch(m=>{g(),w({kind:"job",job:{id:i,status:"failed",message:q(m)}})})},1200)},[J,g]),U=(0,r.useCallback)(()=>{g();let i=l.current+1;l.current=i;let m=x();b(m),f(Q()),s("checking"),w({kind:"form"}),I(!1),M(""),_(""),on().then(u=>{l.current===i&&(b(u),f(k=>an(k,u)),s(u.webSession.status==="ready"?"reuse":"qr"))})},[g]);(0,r.useEffect)(()=>{if(n.open){U();return}g(),l.current+=1},[n.open,U,g]),(0,r.useEffect)(()=>{let i=o.current;if(i)if(n.open&&!i.open)try{i.showModal()}catch{}else!n.open&&i.open&&i.close()},[n.open]),(0,r.useEffect)(()=>()=>g(),[g]);let C=(0,r.useCallback)(async(i,m)=>{g(),I(!0),w({kind:"job",job:{id:"",status:"starting"}});try{let u=m??(S==="reuse"?"reuse":"qr"),k=i==="web"&&u==="reuse"&&d.webSession.status==="ready"?{userId:d.webSession.identity.userId,tenantId:d.webSession.identity.tenantId}:void 0,h=await fetch("/api/bot-onboarding/start",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({appName:i==="web"&&c.appName.trim()||void 0,registrationMode:i,...i==="web"?{sessionMode:u,expectedIdentity:k}:{},cliId:c.cliId,workingDir:c.workingDir.trim(),dirMode:c.dirMode,model:c.model.trim()||void 0})}),O=await h.json();if(h.status===400){w({kind:"form",error:O?.message??O?.error??"invalid_input"});return}if(!h.ok||!O?.job?.id)throw new Error(O?.error??`http_${h.status}`);let F=O.job;y(F),X(F)||j(F.id)}catch(u){w({kind:"job",job:{id:"",status:"failed",message:q(u)}})}finally{I(!1)}},[y,d.webSession,c,S,j,g]),H=(0,r.useCallback)(i=>{i.preventDefault(),C("web")},[C]),$=(0,r.useCallback)(i=>{if(i==="compat"&&!window.confirm(t("botOnboarding.compatibilityConfirm")))return;let m=i==="web"&&p.kind==="job"&&N(p.job.error);m&&s("qr"),C(i,m?"qr":void 0)},[C,p]),V=(0,r.useCallback)(async(i,m,u)=>{let k=[m.trim(),u.trim()].filter(Boolean).join(",");if(!k){w({kind:"job",job:i,ownerError:t("botOnboarding.ownerEmpty")});return}try{let h=await fetch(`/api/bot-onboarding/${encodeURIComponent(i.id)}/owner`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:k})}),O=await h.json();if(!h.ok){w({kind:"job",job:i,ownerError:O?.message??O?.error??t("botOnboarding.ownerInvalid")});return}O?.job&&y(O.job)}catch(h){w({kind:"job",job:i,ownerError:q(h)})}},[y]),Y=(0,r.useMemo)(()=>p.kind==="form"?(0,e.jsx)(dn,{cliState:d,form:c,sessionMode:S,error:p.error,submitting:P,onFormChange:f,onSessionModeChange:s,onSubmit:H,onClose:v}):(0,e.jsx)(ln,{view:p,ownerInput:R,ownerIdInput:A,onOwnerInputChange:M,onOwnerIdInputChange:_,onSubmitOwner:V,onRetry:$,onClose:v}),[d,v,c,A,R,$,S,H,V,P,p]),D=p.kind==="form"||p.kind==="job"&&(p.job.status==="completed"||p.job.status==="failed");return(0,e.jsx)("dialog",{className:"onboarding-dialog",ref:o,onCancel:i=>{D||i.preventDefault()},onClose:()=>{D&&v()},onClick:i=>{D&&i.target===i.currentTarget&&v()},children:(0,e.jsxs)("article",{className:"onboarding-card",children:[(0,e.jsxs)("header",{className:"onboarding-header",children:[(0,e.jsx)("h3",{children:t("botOnboarding.title")}),(0,e.jsx)("p",{children:t("botOnboarding.intro")})]}),Y]})})}export{nn as a,gn as b,un as c};
1
+ import{q as T}from"./chunk-5CJMHTT4.js";import{s as t}from"./chunk-Q2MT4VWH.js";import{a as Z,d as B}from"./chunk-5THX4DI2.js";import{c as E}from"./chunk-7SZRL6FY.js";var r=E(Z(),1);var e=E(B(),1),nn="botmux:open-bot-onboarding",L={id:"claude-code",label:"Claude"},G="glm-5.1";function x(){return{options:[L],ttadkModelDefault:G,ttadkModelSuggestions:[],suggestedAppName:"botmux-0",webSession:{status:"checking"}}}function Q(){return{appName:"",cliId:L.id,dirMode:"fixed",workingDir:"~",model:""}}function en(n,o){return n||o==="checking"}function q(n){return n instanceof Error?n.message:String(n)}function X(n){return n.status==="completed"||n.status==="failed"||n.status==="needs_owner"}function N(n){return n==="login_failed"||n==="invalid_session"||n==="identity_unavailable"||n==="session_changed"}function tn(n){return n.status==="waiting_for_scan"?n.registrationMode==="compat"?t("botOnboarding.waitingCompat"):t("botOnboarding.waiting",{name:n.appName??""}):n.status==="verifying"?t("botOnboarding.verifying"):n.status==="configuring_permissions"?n.permissionStatusMsg?`${t("botOnboarding.configuringPermissions")} ${n.permissionStatusMsg}`:t("botOnboarding.configuringPermissions"):n.status==="waiting_for_platform_scan"?t("botOnboarding.platformScanHint"):n.status==="needs_owner"?t("botOnboarding.needsOwnerTitle"):n.status==="completed"?t("botOnboarding.completed",{name:n.appName??t("botOnboarding.botFallback")}):n.status==="failed"?n.appId?t("botOnboarding.partialFailureTitle"):n.error==="qr_expired"?t("botOnboarding.qrExpiredTitle"):N(n.error)?t("botOnboarding.authIncompleteTitle"):t("botOnboarding.createFailedTitle"):t("botOnboarding.starting")}async function on(){try{let n=await fetch("/api/cli-options"),o=await n.json();if(n.ok&&Array.isArray(o?.options)){let a=typeof o.ttadkModelDefault=="string"&&o.ttadkModelDefault.trim()?o.ttadkModelDefault.trim():G,l=Array.isArray(o.ttadkModelSuggestions)?o.ttadkModelSuggestions.filter(f=>typeof f=="string"):[],d=typeof o.suggestedAppName=="string"&&o.suggestedAppName.trim()?o.suggestedAppName.trim():"botmux-0",b=o?.webSession?.identity,c=o?.webSession?.status==="ready"&&typeof b?.userId=="string"&&typeof b?.userName=="string"&&typeof b?.tenantId=="string"&&typeof b?.tenantName=="string"?{status:"ready",source:typeof o.webSession.source=="string"?o.webSession.source:"botmux_cache",identity:{userId:b.userId,userName:b.userName,...typeof b.email=="string"?{email:b.email}:{},tenantId:b.tenantId,tenantName:b.tenantName}}:{status:"scan_required",...typeof o?.webSession?.reason=="string"?{reason:o.webSession.reason}:{}};return{options:o.options,ttadkModelDefault:a,ttadkModelSuggestions:l,suggestedAppName:d,webSession:c}}}catch{}return{...x(),webSession:{status:"scan_required"}}}function K(n,o,a){let l=a.options.find(f=>f.id===o),d=l?.gateway==="ttadk",b=d&&l?.acceptsModel!==!1,c=n.model;return d&&!b?c="":b&&!c.trim()?c=a.ttadkModelDefault:!b&&c.trim()===a.ttadkModelDefault&&(c=""),{...n,cliId:o,model:c}}function an(n,o){let a=o.options.some(l=>l.id===n.cliId)?n.cliId:o.options[0]?.id??L.id;return K({...n},a,o)}async function gn(){window.dispatchEvent(new Event(nn))}function rn(n){let{job:o}=n;if(o.status!=="completed"&&o.status!=="needs_owner"||!o.permission)return null;let a=o.permission;if(a.ok){let d=[t("botOnboarding.permissionOk",{count:a.scopeCount??0})];return a.skippedScopeCount&&a.skippedScopeCount>0&&d.push(t("botOnboarding.permissionSkipped",{count:a.skippedScopeCount})),a.versionId&&d.push(t("botOnboarding.permissionVersion",{version:a.versionId})),(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-ok",children:d.join(" ")}),a.scopeWarning?(0,e.jsx)("p",{className:"hint-warn",children:a.scopeWarning}):null]})}let l=o.remainingSteps??[];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("p",{className:"hint-warn",children:[t("botOnboarding.permissionManual"),a.message?`\uFF08${a.message}\uFF09`:""]}),l.length?(0,e.jsx)("ol",{className:"onboarding-steps",children:l.map(d=>(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:d.url,target:"_blank",rel:"noopener",children:d.title})},`${d.title}:${d.url}`))}):null]})}function sn(n){let{job:o}=n;return o.appId?(0,e.jsxs)("p",{className:"onboarding-meta",children:[(0,e.jsx)("b",{children:"App ID:"})," ",(0,e.jsx)("code",{children:o.appId}),o.appName?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.appNameLabel"),":"]})," ",(0,e.jsx)("code",{children:o.appName})]}):null,o.cliId?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsx)("b",{children:"CLI:"})," ",(0,e.jsx)("code",{children:o.cliId})]}):null,o.workingDir?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.metaDir"),":"]})," ",(0,e.jsx)("code",{children:o.workingDir})]}):null]}):null}function W(n){return(0,e.jsxs)("div",{className:"qr-card",children:[(0,e.jsx)("img",{className:"qr-image",src:n.dataUrl,alt:n.alt}),n.link?(0,e.jsx)("a",{className:"onboarding-link",href:n.link,target:"_blank",rel:"noopener",children:t("botOnboarding.openLink")}):null]})}function z(n,o){return n.find(a=>a.value===o)?.label??o}function ln(n){let{job:o,ownerError:a}=n.view;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:`onboarding-status status-${o.status}`,children:tn(o)}),o.status==="waiting_for_scan"&&o.qrDataUrl?(0,e.jsx)(W,{dataUrl:o.qrDataUrl,alt:t("botOnboarding.qrAlt"),link:o.qrUrl}):null,o.status==="waiting_for_platform_scan"&&o.platformQrDataUrl?(0,e.jsx)(W,{dataUrl:o.platformQrDataUrl,alt:t("botOnboarding.platformQrAlt")}):null,(0,e.jsx)(sn,{job:o}),(0,e.jsx)(rn,{job:o}),o.status==="needs_owner"?(0,e.jsxs)("form",{className:"onboarding-form",id:"ob-owner-form",onSubmit:l=>{l.preventDefault(),n.onSubmitOwner(o,n.ownerInput,n.ownerIdInput)},children:[(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerLabel")}),(0,e.jsx)("input",{id:"ob-owner",type:"text",inputMode:"email",placeholder:t("botOnboarding.ownerPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerInput,onChange:l=>n.onOwnerInputChange(l.currentTarget.value)})]}),(0,e.jsx)("p",{className:"hint-warn",children:t("botOnboarding.needsOwnerDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.ownerUseId")}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerIdLabel")}),(0,e.jsx)("input",{id:"ob-owner-id",type:"text",placeholder:t("botOnboarding.ownerIdPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerIdInput,onChange:l=>n.onOwnerIdInputChange(l.currentTarget.value)})]})]}),a?(0,e.jsx)("p",{className:"form-error",children:a}):null,(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",children:t("botOnboarding.ownerSubmit")})})]}):null,o.status==="completed"?(0,e.jsx)("p",{className:"hint-ok",children:o.liveStarted?t("botOnboarding.liveOk"):t("botOnboarding.restartHint")}):null,o.status==="failed"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-warn",children:o.appId?t("botOnboarding.partialFailureDescription"):o.error==="qr_expired"?t("botOnboarding.qrExpiredDescription"):N(o.error)?t("botOnboarding.authIncompleteDescription"):t("botOnboarding.createFailedDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.technicalDetails")}),(0,e.jsx)("code",{children:o.message??o.error??"unknown"})]}),(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")}),o.appId?null:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("button",{type:"button",onClick:()=>n.onRetry("compat"),children:t("botOnboarding.compatibilityMode")}),(0,e.jsx)("button",{type:"button",className:"primary onboarding-submit",onClick:()=>n.onRetry("web"),children:o.error==="qr_expired"?t("botOnboarding.generateQr"):N(o.error)?t("botOnboarding.scanAgain"):t("botOnboarding.retry")})]})]})]}):null,o.status==="completed"?(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")})}):null]})}function dn(n){let o=n.cliState.options.find(s=>s.id===n.form.cliId),a=o?.gateway==="ttadk"&&o.acceptsModel!==!1,l=o?.gateway==="ttadk"&&o.acceptsModel===!1,d=a?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",n.cliState.ttadkModelDefault):t("botOnboarding.modelPlaceholder"),b=n.form.dirMode==="card"?t("botOnboarding.dirLabelCard"):t("botOnboarding.dirLabelFixed"),c=n.form.dirMode==="card"?t("botOnboarding.dirPlaceholderCard"):t("botOnboarding.dirPlaceholderFixed"),f=[...n.cliState.options].sort((s,p)=>s.label.localeCompare(p.label,"en",{sensitivity:"base"})).map(s=>({value:s.id,label:s.available===!1?t("botOnboarding.cliMissingOption",{label:s.label,command:s.command??s.id}):s.label})),S=[{value:"fixed",label:t("botOnboarding.dirModeFixed")},{value:"card",label:t("botOnboarding.dirModeCard")}];return(0,e.jsxs)("form",{id:"onboarding-form",className:"onboarding-form",onSubmit:n.onSubmit,children:[(0,e.jsx)("div",{className:"onboarding-session","aria-live":"polite",children:n.sessionMode==="checking"?(0,e.jsx)("p",{children:t("botOnboarding.sessionChecking")}):n.cliState.webSession.status==="ready"?n.sessionMode==="reuse"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionReady",{user:n.cliState.webSession.identity.userName,tenant:n.cliState.webSession.identity.tenantName})}),n.cliState.webSession.identity.email?(0,e.jsx)("small",{children:n.cliState.webSession.identity.email}):null]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("qr"),children:t("botOnboarding.switchAccount")})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionSwitching")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionSwitchingHint")})]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("reuse"),children:t("botOnboarding.reuseCurrentAccount")})]}):(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionScanRequired")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionScanRequiredHint")})]})}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.appNameLabel")}),(0,e.jsx)("input",{id:"ob-app-name",type:"text",maxLength:64,value:n.form.appName,placeholder:t("botOnboarding.appNamePlaceholder"),autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,appName:s.currentTarget.value})}),(0,e.jsx)("small",{className:"onboarding-field-hint",children:t("botOnboarding.appNameHint",{name:n.cliState.suggestedAppName})})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.cliLabel")}),(0,e.jsx)(T,{id:"ob-cli",className:"onboarding-menu",ariaLabel:t("botOnboarding.cliLabel"),label:z(f,n.form.cliId),value:n.form.cliId,options:f,searchable:!0,searchPlaceholder:t("common.dropdownSearch"),searchEmptyLabel:t("common.dropdownSearchEmpty"),onChange:s=>{n.onFormChange(K(n.form,s,n.cliState))}}),o?.available===!1?(0,e.jsx)("small",{className:"hint-warn",children:t("botOnboarding.cliMissingHint",{command:o.command??n.form.cliId})}):(0,e.jsx)("small",{className:"onboarding-field-hint",children:n.form.cliId})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.dirModeLabel")}),(0,e.jsx)(T,{id:"ob-dir-mode",className:"onboarding-menu",ariaLabel:t("botOnboarding.dirModeLabel"),label:z(S,n.form.dirMode),value:n.form.dirMode,options:S,onChange:s=>n.onFormChange({...n.form,dirMode:s})})]}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:b}),(0,e.jsx)("input",{id:"ob-dir",type:"text",value:n.form.workingDir,placeholder:c,autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,workingDir:s.currentTarget.value})})]}),l?null:(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.modelLabel")}),(0,e.jsx)("input",{id:"ob-model",type:"text",list:a?"ob-model-suggestions":void 0,placeholder:d,autoComplete:"off",spellCheck:!1,value:n.form.model,onChange:s=>n.onFormChange({...n.form,model:s.currentTarget.value})}),a?(0,e.jsx)("datalist",{id:"ob-model-suggestions",children:n.cliState.ttadkModelSuggestions.map(s=>(0,e.jsx)("option",{value:s},s))}):null]}),n.error?(0,e.jsx)("p",{className:"form-error",children:n.error}):null,(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",id:"ob-cancel",disabled:n.submitting,onClick:n.onClose,children:t("botOnboarding.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",disabled:en(n.submitting,n.sessionMode),children:n.submitting?t("botOnboarding.starting"):n.sessionMode==="reuse"?t("botOnboarding.confirmReuse"):t("botOnboarding.startScan")})]})]})}function un(n){let o=(0,r.useRef)(null),a=(0,r.useRef)(null),l=(0,r.useRef)(0),[d,b]=(0,r.useState)(()=>x()),[c,f]=(0,r.useState)(()=>Q()),[S,s]=(0,r.useState)("checking"),[p,w]=(0,r.useState)({kind:"form"}),[P,I]=(0,r.useState)(!1),[R,M]=(0,r.useState)(""),[A,_]=(0,r.useState)(""),g=(0,r.useCallback)(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]),v=(0,r.useCallback)(()=>{g(),n.onClose()},[n,g]),y=(0,r.useCallback)(i=>{w({kind:"job",job:i}),i.status==="needs_owner"&&(M(i.suggestedOwner??""),_("")),X(i)&&g()},[g]),J=(0,r.useCallback)(async i=>{let m=await fetch(`/api/bot-onboarding/${encodeURIComponent(i)}`),u=await m.json();if(!m.ok||!u?.job)throw new Error(u?.error??`http_${m.status}`);y(u.job)},[y]),j=(0,r.useCallback)(i=>{g(),a.current=window.setInterval(()=>{J(i).catch(m=>{g(),w({kind:"job",job:{id:i,status:"failed",message:q(m)}})})},1200)},[J,g]),U=(0,r.useCallback)(()=>{g();let i=l.current+1;l.current=i;let m=x();b(m),f(Q()),s("checking"),w({kind:"form"}),I(!1),M(""),_(""),on().then(u=>{l.current===i&&(b(u),f(k=>an(k,u)),s(u.webSession.status==="ready"?"reuse":"qr"))})},[g]);(0,r.useEffect)(()=>{if(n.open){U();return}g(),l.current+=1},[n.open,U,g]),(0,r.useEffect)(()=>{let i=o.current;if(i)if(n.open&&!i.open)try{i.showModal()}catch{}else!n.open&&i.open&&i.close()},[n.open]),(0,r.useEffect)(()=>()=>g(),[g]);let C=(0,r.useCallback)(async(i,m)=>{g(),I(!0),w({kind:"job",job:{id:"",status:"starting"}});try{let u=m??(S==="reuse"?"reuse":"qr"),k=i==="web"&&u==="reuse"&&d.webSession.status==="ready"?{userId:d.webSession.identity.userId,tenantId:d.webSession.identity.tenantId}:void 0,h=await fetch("/api/bot-onboarding/start",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({appName:i==="web"&&c.appName.trim()||void 0,registrationMode:i,...i==="web"?{sessionMode:u,expectedIdentity:k}:{},cliId:c.cliId,workingDir:c.workingDir.trim(),dirMode:c.dirMode,model:c.model.trim()||void 0})}),O=await h.json();if(h.status===400){w({kind:"form",error:O?.message??O?.error??"invalid_input"});return}if(!h.ok||!O?.job?.id)throw new Error(O?.error??`http_${h.status}`);let F=O.job;y(F),X(F)||j(F.id)}catch(u){w({kind:"job",job:{id:"",status:"failed",message:q(u)}})}finally{I(!1)}},[y,d.webSession,c,S,j,g]),H=(0,r.useCallback)(i=>{i.preventDefault(),C("web")},[C]),$=(0,r.useCallback)(i=>{if(i==="compat"&&!window.confirm(t("botOnboarding.compatibilityConfirm")))return;let m=i==="web"&&p.kind==="job"&&N(p.job.error);m&&s("qr"),C(i,m?"qr":void 0)},[C,p]),V=(0,r.useCallback)(async(i,m,u)=>{let k=[m.trim(),u.trim()].filter(Boolean).join(",");if(!k){w({kind:"job",job:i,ownerError:t("botOnboarding.ownerEmpty")});return}try{let h=await fetch(`/api/bot-onboarding/${encodeURIComponent(i.id)}/owner`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:k})}),O=await h.json();if(!h.ok){w({kind:"job",job:i,ownerError:O?.message??O?.error??t("botOnboarding.ownerInvalid")});return}O?.job&&y(O.job)}catch(h){w({kind:"job",job:i,ownerError:q(h)})}},[y]),Y=(0,r.useMemo)(()=>p.kind==="form"?(0,e.jsx)(dn,{cliState:d,form:c,sessionMode:S,error:p.error,submitting:P,onFormChange:f,onSessionModeChange:s,onSubmit:H,onClose:v}):(0,e.jsx)(ln,{view:p,ownerInput:R,ownerIdInput:A,onOwnerInputChange:M,onOwnerIdInputChange:_,onSubmitOwner:V,onRetry:$,onClose:v}),[d,v,c,A,R,$,S,H,V,P,p]),D=p.kind==="form"||p.kind==="job"&&(p.job.status==="completed"||p.job.status==="failed");return(0,e.jsx)("dialog",{className:"onboarding-dialog",ref:o,onCancel:i=>{D||i.preventDefault()},onClose:()=>{D&&v()},onClick:i=>{D&&i.target===i.currentTarget&&v()},children:(0,e.jsxs)("article",{className:"onboarding-card",children:[(0,e.jsxs)("header",{className:"onboarding-header",children:[(0,e.jsx)("h3",{children:t("botOnboarding.title")}),(0,e.jsx)("p",{children:t("botOnboarding.intro")})]}),Y]})})}export{nn as a,gn as b,un as c};
@@ -0,0 +1 @@
1
+ var a=class{sessions=new Map;schedules=new Map;online=!0;scheduleTimeZone="";version=0;snapshot={sessions:this.sessions,schedules:this.schedules,online:this.online,version:this.version,scheduleTimeZone:this.scheduleTimeZone};listeners=new Set;botsListeners=new Set;setScheduleTimeZone(e){typeof e=="string"&&e&&this.scheduleTimeZone!==e&&(this.scheduleTimeZone=e,this.emit())}replaceSnapshot(e,s,t){this.sessions.clear();for(let i of e)this.sessions.set(i.sessionId,i);this.schedules.clear();for(let i of s)this.schedules.set(i.id,i);t&&(this.scheduleTimeZone=t),this.emit()}applySse(e,s){if(e==="session.spawned")this.sessions.set(s.session.sessionId,s.session);else if(e==="session.update"){let t=this.sessions.get(s.sessionId);t&&this.sessions.set(s.sessionId,{...t,...s.patch})}else if(e==="session.exited"){let t=this.sessions.get(s.sessionId);t&&this.sessions.set(s.sessionId,{...t,status:"closed"})}else if(e==="schedule.created")this.schedules.set(s.schedule.id,s.schedule);else if(e==="schedule.updated"){let t=this.schedules.get(s.id);t&&this.schedules.set(s.id,{...t,...s.patch})}else if(e==="schedule.deleted")this.schedules.delete(s.id);else if(e==="schedule.timezone")typeof s?.timezone=="string"&&s.timezone&&(this.scheduleTimeZone=s.timezone);else if(e==="bots.changed"){for(let t of this.botsListeners)t();return}else return;this.emit()}onBotsChanged(e){return this.botsListeners.add(e),()=>this.botsListeners.delete(e)}setOnline(e){this.online!==e&&(this.online=e,this.emit())}on(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getSnapshot(){return this.snapshot}emit(){this.version+=1,this.snapshot={sessions:this.sessions,schedules:this.schedules,online:this.online,version:this.version,scheduleTimeZone:this.scheduleTimeZone};for(let e of this.listeners)e()}},r=new a;async function f(){let c=[],e=!1,s=new EventSource("/events"),t=["session.spawned","session.update","session.exited","schedule.created","schedule.updated","schedule.deleted","schedule.fired","schedule.timezone","bots.changed","heartbeat"];for(let l of t)s.addEventListener(l,n=>{try{let o=JSON.parse(n.data),h=o.body??o;e?r.applySse(l,h):c.push({type:l,body:h})}catch{}});let i=null,d=0,u=0,p=()=>(d+=1,i||(i=(async()=>{for(;u<d;){let l=d;e=!1;try{let[n,o]=await Promise.all([fetch("/api/sessions").then(h=>h.json()),fetch("/api/schedules").then(h=>h.json())]);r.replaceSnapshot(n.sessions??[],o.schedules??[],typeof o.timezone=="string"?o.timezone:void 0),u=l}finally{e=!0;for(let n of c.splice(0))r.applySse(n.type,n.body)}}})().finally(()=>{i=null}),i));s.onerror=()=>r.setOnline(!1),s.onopen=()=>{r.setOnline(!0),p().catch(()=>{})},await p()}export{r as a,f as b};