botmux 3.14.0 → 3.16.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 (812) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/.runtime-build-id +1 -1
  4. package/dist/adapters/backend/destroy-result.d.ts +159 -0
  5. package/dist/adapters/backend/destroy-result.d.ts.map +1 -0
  6. package/dist/adapters/backend/destroy-result.js +223 -0
  7. package/dist/adapters/backend/destroy-result.js.map +1 -0
  8. package/dist/adapters/backend/herdr-backend.d.ts +4 -0
  9. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  10. package/dist/adapters/backend/herdr-backend.js +23 -1
  11. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  12. package/dist/adapters/backend/mojo-backend.d.ts +577 -0
  13. package/dist/adapters/backend/mojo-backend.d.ts.map +1 -0
  14. package/dist/adapters/backend/mojo-backend.js +2471 -0
  15. package/dist/adapters/backend/mojo-backend.js.map +1 -0
  16. package/dist/adapters/backend/mojo-budgets.d.ts +21 -0
  17. package/dist/adapters/backend/mojo-budgets.d.ts.map +1 -0
  18. package/dist/adapters/backend/mojo-budgets.js +22 -0
  19. package/dist/adapters/backend/mojo-budgets.js.map +1 -0
  20. package/dist/adapters/backend/mojo-isolated-workspace.d.ts +69 -0
  21. package/dist/adapters/backend/mojo-isolated-workspace.d.ts.map +1 -0
  22. package/dist/adapters/backend/mojo-isolated-workspace.js +213 -0
  23. package/dist/adapters/backend/mojo-isolated-workspace.js.map +1 -0
  24. package/dist/adapters/backend/mojo-process-tree.d.ts +292 -0
  25. package/dist/adapters/backend/mojo-process-tree.d.ts.map +1 -0
  26. package/dist/adapters/backend/mojo-process-tree.js +486 -0
  27. package/dist/adapters/backend/mojo-process-tree.js.map +1 -0
  28. package/dist/adapters/backend/mojo-types.d.ts +542 -0
  29. package/dist/adapters/backend/mojo-types.d.ts.map +1 -0
  30. package/dist/adapters/backend/mojo-types.js +682 -0
  31. package/dist/adapters/backend/mojo-types.js.map +1 -0
  32. package/dist/adapters/backend/reproduce-command.js +3 -3
  33. package/dist/adapters/backend/reproduce-command.js.map +1 -1
  34. package/dist/adapters/backend/riff-backend.js +1 -1
  35. package/dist/adapters/backend/riff-backend.js.map +1 -1
  36. package/dist/adapters/backend/sandbox.d.ts +44 -7
  37. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  38. package/dist/adapters/backend/sandbox.js +30 -7
  39. package/dist/adapters/backend/sandbox.js.map +1 -1
  40. package/dist/adapters/backend/session-backend-selector.d.ts +14 -1
  41. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
  42. package/dist/adapters/backend/session-backend-selector.js +82 -10
  43. package/dist/adapters/backend/session-backend-selector.js.map +1 -1
  44. package/dist/adapters/backend/tmux-pipe-backend.d.ts +30 -0
  45. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  46. package/dist/adapters/backend/tmux-pipe-backend.js +60 -0
  47. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  48. package/dist/adapters/backend/types.d.ts +108 -6
  49. package/dist/adapters/backend/types.d.ts.map +1 -1
  50. package/dist/adapters/backend/types.js.map +1 -1
  51. package/dist/adapters/backend/zmx-backend.d.ts +11 -0
  52. package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
  53. package/dist/adapters/backend/zmx-backend.js +16 -1
  54. package/dist/adapters/backend/zmx-backend.js.map +1 -1
  55. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  56. package/dist/adapters/cli/codex-app.js +2 -2
  57. package/dist/adapters/cli/codex-app.js.map +1 -1
  58. package/dist/adapters/cli/codex.d.ts.map +1 -1
  59. package/dist/adapters/cli/codex.js +7 -0
  60. package/dist/adapters/cli/codex.js.map +1 -1
  61. package/dist/adapters/cli/copilot.d.ts +3 -1
  62. package/dist/adapters/cli/copilot.d.ts.map +1 -1
  63. package/dist/adapters/cli/copilot.js +23 -5
  64. package/dist/adapters/cli/copilot.js.map +1 -1
  65. package/dist/adapters/cli/cursor.d.ts.map +1 -1
  66. package/dist/adapters/cli/cursor.js +26 -4
  67. package/dist/adapters/cli/cursor.js.map +1 -1
  68. package/dist/adapters/cli/dsh.d.ts.map +1 -1
  69. package/dist/adapters/cli/dsh.js +5 -1
  70. package/dist/adapters/cli/dsh.js.map +1 -1
  71. package/dist/adapters/cli/grok.d.ts.map +1 -1
  72. package/dist/adapters/cli/grok.js +24 -5
  73. package/dist/adapters/cli/grok.js.map +1 -1
  74. package/dist/adapters/cli/kimi.d.ts.map +1 -1
  75. package/dist/adapters/cli/kimi.js +19 -1
  76. package/dist/adapters/cli/kimi.js.map +1 -1
  77. package/dist/adapters/cli/mojo.d.ts +28 -0
  78. package/dist/adapters/cli/mojo.d.ts.map +1 -0
  79. package/dist/adapters/cli/mojo.js +58 -0
  80. package/dist/adapters/cli/mojo.js.map +1 -0
  81. package/dist/adapters/cli/pi.d.ts +20 -5
  82. package/dist/adapters/cli/pi.d.ts.map +1 -1
  83. package/dist/adapters/cli/pi.js +27 -5
  84. package/dist/adapters/cli/pi.js.map +1 -1
  85. package/dist/adapters/cli/read-isolation.d.ts +251 -1
  86. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  87. package/dist/adapters/cli/read-isolation.js +254 -1
  88. package/dist/adapters/cli/read-isolation.js.map +1 -1
  89. package/dist/adapters/cli/registry.d.ts +13 -1
  90. package/dist/adapters/cli/registry.d.ts.map +1 -1
  91. package/dist/adapters/cli/registry.js +19 -1
  92. package/dist/adapters/cli/registry.js.map +1 -1
  93. package/dist/adapters/cli/runner-input.d.ts +3 -3
  94. package/dist/adapters/cli/runner-input.d.ts.map +1 -1
  95. package/dist/adapters/cli/runner-input.js +4 -3
  96. package/dist/adapters/cli/runner-input.js.map +1 -1
  97. package/dist/adapters/cli/shared-hints.d.ts +3 -1
  98. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  99. package/dist/adapters/cli/shared-hints.js +51 -30
  100. package/dist/adapters/cli/shared-hints.js.map +1 -1
  101. package/dist/adapters/cli/types.d.ts +33 -4
  102. package/dist/adapters/cli/types.d.ts.map +1 -1
  103. package/dist/bot-registry.d.ts +42 -0
  104. package/dist/bot-registry.d.ts.map +1 -1
  105. package/dist/bot-registry.js +54 -4
  106. package/dist/bot-registry.js.map +1 -1
  107. package/dist/cli/arg-utils.d.ts +5 -0
  108. package/dist/cli/arg-utils.d.ts.map +1 -1
  109. package/dist/cli/arg-utils.js +7 -0
  110. package/dist/cli/arg-utils.js.map +1 -1
  111. package/dist/cli/bots-list-output.d.ts +130 -2
  112. package/dist/cli/bots-list-output.d.ts.map +1 -1
  113. package/dist/cli/bots-list-output.js +173 -27
  114. package/dist/cli/bots-list-output.js.map +1 -1
  115. package/dist/cli/daemon-lifecycle-env.d.ts +10 -3
  116. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  117. package/dist/cli/daemon-lifecycle-env.js +38 -11
  118. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  119. package/dist/cli/dashboard-command.d.ts +15 -0
  120. package/dist/cli/dashboard-command.d.ts.map +1 -1
  121. package/dist/cli/dashboard-command.js +22 -0
  122. package/dist/cli/dashboard-command.js.map +1 -1
  123. package/dist/cli/log-tail.d.ts +54 -0
  124. package/dist/cli/log-tail.d.ts.map +1 -0
  125. package/dist/cli/log-tail.js +167 -0
  126. package/dist/cli/log-tail.js.map +1 -0
  127. package/dist/cli/pm2-env.d.ts +16 -0
  128. package/dist/cli/pm2-env.d.ts.map +1 -0
  129. package/dist/cli/pm2-env.js +63 -0
  130. package/dist/cli/pm2-env.js.map +1 -0
  131. package/dist/cli/pm2-fleet-lock.d.ts +26 -0
  132. package/dist/cli/pm2-fleet-lock.d.ts.map +1 -0
  133. package/dist/cli/pm2-fleet-lock.js +50 -0
  134. package/dist/cli/pm2-fleet-lock.js.map +1 -0
  135. package/dist/cli/pm2-god-retirement.d.ts +59 -0
  136. package/dist/cli/pm2-god-retirement.d.ts.map +1 -0
  137. package/dist/cli/pm2-god-retirement.js +95 -0
  138. package/dist/cli/pm2-god-retirement.js.map +1 -0
  139. package/dist/cli/session-list-wake.d.ts +41 -0
  140. package/dist/cli/session-list-wake.d.ts.map +1 -0
  141. package/dist/cli/session-list-wake.js +102 -0
  142. package/dist/cli/session-list-wake.js.map +1 -0
  143. package/dist/cli/workflow.d.ts.map +1 -1
  144. package/dist/cli/workflow.js +26 -0
  145. package/dist/cli/workflow.js.map +1 -1
  146. package/dist/cli.d.ts.map +1 -1
  147. package/dist/cli.js +941 -118
  148. package/dist/cli.js.map +1 -1
  149. package/dist/codex-app-runner.js +261 -49
  150. package/dist/codex-app-runner.js.map +1 -1
  151. package/dist/core/cli-runtime-update.d.ts +8 -0
  152. package/dist/core/cli-runtime-update.d.ts.map +1 -1
  153. package/dist/core/cli-runtime-update.js +127 -8
  154. package/dist/core/cli-runtime-update.js.map +1 -1
  155. package/dist/core/close-residual.d.ts +64 -0
  156. package/dist/core/close-residual.d.ts.map +1 -0
  157. package/dist/core/close-residual.js +93 -0
  158. package/dist/core/close-residual.js.map +1 -0
  159. package/dist/core/closed-session-card.d.ts.map +1 -1
  160. package/dist/core/closed-session-card.js +11 -3
  161. package/dist/core/closed-session-card.js.map +1 -1
  162. package/dist/core/command-discovery.d.ts.map +1 -1
  163. package/dist/core/command-discovery.js +4 -1
  164. package/dist/core/command-discovery.js.map +1 -1
  165. package/dist/core/command-handler.d.ts.map +1 -1
  166. package/dist/core/command-handler.js +129 -27
  167. package/dist/core/command-handler.js.map +1 -1
  168. package/dist/core/cost-calculator.d.ts +3 -1
  169. package/dist/core/cost-calculator.d.ts.map +1 -1
  170. package/dist/core/cost-calculator.js +230 -1
  171. package/dist/core/cost-calculator.js.map +1 -1
  172. package/dist/core/daemon-background-close.d.ts +19 -0
  173. package/dist/core/daemon-background-close.d.ts.map +1 -0
  174. package/dist/core/daemon-background-close.js +39 -0
  175. package/dist/core/daemon-background-close.js.map +1 -0
  176. package/dist/core/dashboard-command/overview.d.ts +4 -0
  177. package/dist/core/dashboard-command/overview.d.ts.map +1 -1
  178. package/dist/core/dashboard-command/overview.js +8 -1
  179. package/dist/core/dashboard-command/overview.js.map +1 -1
  180. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  181. package/dist/core/dashboard-ipc-server.js +415 -42
  182. package/dist/core/dashboard-ipc-server.js.map +1 -1
  183. package/dist/core/dashboard-rows.d.ts +4 -0
  184. package/dist/core/dashboard-rows.d.ts.map +1 -1
  185. package/dist/core/dashboard-rows.js +3 -0
  186. package/dist/core/dashboard-rows.js.map +1 -1
  187. package/dist/core/dashboard-url.d.ts +37 -0
  188. package/dist/core/dashboard-url.d.ts.map +1 -1
  189. package/dist/core/dashboard-url.js +71 -0
  190. package/dist/core/dashboard-url.js.map +1 -1
  191. package/dist/core/deferred-schedule-settlement.d.ts +15 -1
  192. package/dist/core/deferred-schedule-settlement.d.ts.map +1 -1
  193. package/dist/core/deferred-schedule-settlement.js +4 -1
  194. package/dist/core/deferred-schedule-settlement.js.map +1 -1
  195. package/dist/core/device-isolation-daemon.d.ts +91 -1
  196. package/dist/core/device-isolation-daemon.d.ts.map +1 -1
  197. package/dist/core/device-isolation-daemon.js +346 -2
  198. package/dist/core/device-isolation-daemon.js.map +1 -1
  199. package/dist/core/local-terminal-opener.d.ts.map +1 -1
  200. package/dist/core/local-terminal-opener.js +5 -1
  201. package/dist/core/local-terminal-opener.js.map +1 -1
  202. package/dist/core/loopback-target.d.ts +14 -0
  203. package/dist/core/loopback-target.d.ts.map +1 -0
  204. package/dist/core/loopback-target.js +20 -0
  205. package/dist/core/loopback-target.js.map +1 -0
  206. package/dist/core/maintenance.d.ts.map +1 -1
  207. package/dist/core/maintenance.js +16 -2
  208. package/dist/core/maintenance.js.map +1 -1
  209. package/dist/core/mojo-containment-command.d.ts +20 -0
  210. package/dist/core/mojo-containment-command.d.ts.map +1 -0
  211. package/dist/core/mojo-containment-command.js +266 -0
  212. package/dist/core/mojo-containment-command.js.map +1 -0
  213. package/dist/core/mojo-containment.d.ts +575 -0
  214. package/dist/core/mojo-containment.d.ts.map +1 -0
  215. package/dist/core/mojo-containment.js +1158 -0
  216. package/dist/core/mojo-containment.js.map +1 -0
  217. package/dist/core/mojo-launcher-env-quarantine.d.ts +30 -0
  218. package/dist/core/mojo-launcher-env-quarantine.d.ts.map +1 -0
  219. package/dist/core/mojo-launcher-env-quarantine.js +175 -0
  220. package/dist/core/mojo-launcher-env-quarantine.js.map +1 -0
  221. package/dist/core/mojo-session-identity.d.ts +3 -0
  222. package/dist/core/mojo-session-identity.d.ts.map +1 -0
  223. package/dist/core/mojo-session-identity.js +126 -0
  224. package/dist/core/mojo-session-identity.js.map +1 -0
  225. package/dist/core/persistent-backend.d.ts +32 -8
  226. package/dist/core/persistent-backend.d.ts.map +1 -1
  227. package/dist/core/persistent-backend.js +55 -17
  228. package/dist/core/persistent-backend.js.map +1 -1
  229. package/dist/core/plugins/mcp/gateway.d.ts +14 -1
  230. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
  231. package/dist/core/plugins/mcp/gateway.js +70 -3
  232. package/dist/core/plugins/mcp/gateway.js.map +1 -1
  233. package/dist/core/plugins/mcp/host.d.ts +2 -0
  234. package/dist/core/plugins/mcp/host.d.ts.map +1 -1
  235. package/dist/core/plugins/mcp/host.js +2 -0
  236. package/dist/core/plugins/mcp/host.js.map +1 -1
  237. package/dist/core/plugins/pm2.d.ts.map +1 -1
  238. package/dist/core/plugins/pm2.js +16 -3
  239. package/dist/core/plugins/pm2.js.map +1 -1
  240. package/dist/core/plugins/service-manager.d.ts +9 -0
  241. package/dist/core/plugins/service-manager.d.ts.map +1 -1
  242. package/dist/core/plugins/service-manager.js +33 -16
  243. package/dist/core/plugins/service-manager.js.map +1 -1
  244. package/dist/core/preview-port-owner.d.ts +109 -0
  245. package/dist/core/preview-port-owner.d.ts.map +1 -0
  246. package/dist/core/preview-port-owner.js +320 -0
  247. package/dist/core/preview-port-owner.js.map +1 -0
  248. package/dist/core/remote-cli-ids.d.ts +5 -0
  249. package/dist/core/remote-cli-ids.d.ts.map +1 -0
  250. package/dist/core/remote-cli-ids.js +24 -0
  251. package/dist/core/remote-cli-ids.js.map +1 -0
  252. package/dist/core/{riff-shutdown-detach.d.ts → remote-shutdown-detach.d.ts} +40 -39
  253. package/dist/core/remote-shutdown-detach.d.ts.map +1 -0
  254. package/dist/core/{riff-shutdown-detach.js → remote-shutdown-detach.js} +85 -83
  255. package/dist/core/remote-shutdown-detach.js.map +1 -0
  256. package/dist/core/{riff-worker-shutdown-readiness.d.ts → remote-worker-shutdown-readiness.d.ts} +5 -4
  257. package/dist/core/remote-worker-shutdown-readiness.d.ts.map +1 -0
  258. package/dist/core/{riff-worker-shutdown-readiness.js → remote-worker-shutdown-readiness.js} +4 -3
  259. package/dist/core/remote-worker-shutdown-readiness.js.map +1 -0
  260. package/dist/core/reply-target.d.ts +16 -1
  261. package/dist/core/reply-target.d.ts.map +1 -1
  262. package/dist/core/reply-target.js +61 -0
  263. package/dist/core/reply-target.js.map +1 -1
  264. package/dist/core/session-group-birth.d.ts +26 -0
  265. package/dist/core/session-group-birth.d.ts.map +1 -1
  266. package/dist/core/session-group-birth.js +81 -4
  267. package/dist/core/session-group-birth.js.map +1 -1
  268. package/dist/core/session-manager.d.ts +15 -2
  269. package/dist/core/session-manager.d.ts.map +1 -1
  270. package/dist/core/session-manager.js +259 -5
  271. package/dist/core/session-manager.js.map +1 -1
  272. package/dist/core/session-model.d.ts +46 -0
  273. package/dist/core/session-model.d.ts.map +1 -0
  274. package/dist/core/session-model.js +42 -0
  275. package/dist/core/session-model.js.map +1 -0
  276. package/dist/core/session-owner-reminder.d.ts +63 -0
  277. package/dist/core/session-owner-reminder.d.ts.map +1 -0
  278. package/dist/core/session-owner-reminder.js +196 -0
  279. package/dist/core/session-owner-reminder.js.map +1 -0
  280. package/dist/core/session-preview-registry.d.ts +53 -0
  281. package/dist/core/session-preview-registry.d.ts.map +1 -0
  282. package/dist/core/session-preview-registry.js +82 -0
  283. package/dist/core/session-preview-registry.js.map +1 -0
  284. package/dist/core/session-preview.d.ts +114 -0
  285. package/dist/core/session-preview.d.ts.map +1 -0
  286. package/dist/core/session-preview.js +184 -0
  287. package/dist/core/session-preview.js.map +1 -0
  288. package/dist/core/session-rename.d.ts.map +1 -1
  289. package/dist/core/session-rename.js +5 -3
  290. package/dist/core/session-rename.js.map +1 -1
  291. package/dist/core/session-wake-deadline.d.ts +5 -0
  292. package/dist/core/session-wake-deadline.d.ts.map +1 -0
  293. package/dist/core/session-wake-deadline.js +13 -0
  294. package/dist/core/session-wake-deadline.js.map +1 -0
  295. package/dist/core/shutdown-budgets.d.ts +7 -6
  296. package/dist/core/shutdown-budgets.d.ts.map +1 -1
  297. package/dist/core/shutdown-budgets.js +11 -10
  298. package/dist/core/shutdown-budgets.js.map +1 -1
  299. package/dist/core/skills/frontmatter.d.ts.map +1 -1
  300. package/dist/core/skills/frontmatter.js +6 -1
  301. package/dist/core/skills/frontmatter.js.map +1 -1
  302. package/dist/core/terminal-control-grant.d.ts +74 -0
  303. package/dist/core/terminal-control-grant.d.ts.map +1 -0
  304. package/dist/core/terminal-control-grant.js +183 -0
  305. package/dist/core/terminal-control-grant.js.map +1 -0
  306. package/dist/core/terminal-proxy.d.ts.map +1 -1
  307. package/dist/core/terminal-proxy.js +4 -5
  308. package/dist/core/terminal-proxy.js.map +1 -1
  309. package/dist/core/terminal-write-auth.d.ts +4 -11
  310. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  311. package/dist/core/terminal-write-auth.js +19 -16
  312. package/dist/core/terminal-write-auth.js.map +1 -1
  313. package/dist/core/trigger-session.d.ts.map +1 -1
  314. package/dist/core/trigger-session.js +36 -29
  315. package/dist/core/trigger-session.js.map +1 -1
  316. package/dist/core/types.d.ts +88 -10
  317. package/dist/core/types.d.ts.map +1 -1
  318. package/dist/core/types.js +9 -7
  319. package/dist/core/types.js.map +1 -1
  320. package/dist/core/workbench-link.d.ts +81 -0
  321. package/dist/core/workbench-link.d.ts.map +1 -0
  322. package/dist/core/workbench-link.js +109 -0
  323. package/dist/core/workbench-link.js.map +1 -0
  324. package/dist/core/worker-pool.d.ts +312 -11
  325. package/dist/core/worker-pool.d.ts.map +1 -1
  326. package/dist/core/worker-pool.js +2515 -217
  327. package/dist/core/worker-pool.js.map +1 -1
  328. package/dist/daemon.d.ts +6 -0
  329. package/dist/daemon.d.ts.map +1 -1
  330. package/dist/daemon.js +447 -116
  331. package/dist/daemon.js.map +1 -1
  332. package/dist/dashboard/aggregator.d.ts +33 -3
  333. package/dist/dashboard/aggregator.d.ts.map +1 -1
  334. package/dist/dashboard/aggregator.js +93 -17
  335. package/dist/dashboard/aggregator.js.map +1 -1
  336. package/dist/dashboard/auth-session-connections.d.ts +59 -0
  337. package/dist/dashboard/auth-session-connections.d.ts.map +1 -0
  338. package/dist/dashboard/auth-session-connections.js +109 -0
  339. package/dist/dashboard/auth-session-connections.js.map +1 -0
  340. package/dist/dashboard/auth.d.ts +99 -1
  341. package/dist/dashboard/auth.d.ts.map +1 -1
  342. package/dist/dashboard/auth.js +176 -64
  343. package/dist/dashboard/auth.js.map +1 -1
  344. package/dist/dashboard/bot-payload.d.ts +5 -0
  345. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  346. package/dist/dashboard/bot-payload.js +4 -0
  347. package/dist/dashboard/bot-payload.js.map +1 -1
  348. package/dist/dashboard/control-audit.d.ts +112 -0
  349. package/dist/dashboard/control-audit.d.ts.map +1 -0
  350. package/dist/dashboard/control-audit.js +195 -0
  351. package/dist/dashboard/control-audit.js.map +1 -0
  352. package/dist/dashboard/control-csrf.d.ts +123 -0
  353. package/dist/dashboard/control-csrf.d.ts.map +1 -0
  354. package/dist/dashboard/control-csrf.js +392 -0
  355. package/dist/dashboard/control-csrf.js.map +1 -0
  356. package/dist/dashboard/daemon-reconcile.d.ts +26 -0
  357. package/dist/dashboard/daemon-reconcile.d.ts.map +1 -0
  358. package/dist/dashboard/daemon-reconcile.js +46 -0
  359. package/dist/dashboard/daemon-reconcile.js.map +1 -0
  360. package/dist/dashboard/debug-terminal.d.ts.map +1 -1
  361. package/dist/dashboard/debug-terminal.js +18 -4
  362. package/dist/dashboard/debug-terminal.js.map +1 -1
  363. package/dist/dashboard/events-sse.d.ts +60 -0
  364. package/dist/dashboard/events-sse.d.ts.map +1 -0
  365. package/dist/dashboard/events-sse.js +63 -0
  366. package/dist/dashboard/events-sse.js.map +1 -0
  367. package/dist/dashboard/h5-auth.d.ts +256 -0
  368. package/dist/dashboard/h5-auth.d.ts.map +1 -0
  369. package/dist/dashboard/h5-auth.js +825 -0
  370. package/dist/dashboard/h5-auth.js.map +1 -0
  371. package/dist/dashboard/managed-spawn.d.ts +36 -0
  372. package/dist/dashboard/managed-spawn.d.ts.map +1 -0
  373. package/dist/dashboard/managed-spawn.js +169 -0
  374. package/dist/dashboard/managed-spawn.js.map +1 -0
  375. package/dist/dashboard/preview-content-capability.d.ts +41 -0
  376. package/dist/dashboard/preview-content-capability.d.ts.map +1 -0
  377. package/dist/dashboard/preview-content-capability.js +127 -0
  378. package/dist/dashboard/preview-content-capability.js.map +1 -0
  379. package/dist/dashboard/preview-contract.d.ts +85 -0
  380. package/dist/dashboard/preview-contract.d.ts.map +1 -0
  381. package/dist/dashboard/preview-contract.js +198 -0
  382. package/dist/dashboard/preview-contract.js.map +1 -0
  383. package/dist/dashboard/preview-guard-page.d.ts +52 -0
  384. package/dist/dashboard/preview-guard-page.d.ts.map +1 -0
  385. package/dist/dashboard/preview-guard-page.js +162 -0
  386. package/dist/dashboard/preview-guard-page.js.map +1 -0
  387. package/dist/dashboard/preview-interaction.d.ts +57 -0
  388. package/dist/dashboard/preview-interaction.d.ts.map +1 -0
  389. package/dist/dashboard/preview-interaction.js +198 -0
  390. package/dist/dashboard/preview-interaction.js.map +1 -0
  391. package/dist/dashboard/preview-proxy.d.ts +113 -0
  392. package/dist/dashboard/preview-proxy.d.ts.map +1 -0
  393. package/dist/dashboard/preview-proxy.js +543 -0
  394. package/dist/dashboard/preview-proxy.js.map +1 -0
  395. package/dist/dashboard/public-redact.d.ts +23 -0
  396. package/dist/dashboard/public-redact.d.ts.map +1 -1
  397. package/dist/dashboard/public-redact.js +90 -21
  398. package/dist/dashboard/public-redact.js.map +1 -1
  399. package/dist/dashboard/request-identity.d.ts +77 -0
  400. package/dist/dashboard/request-identity.d.ts.map +1 -0
  401. package/dist/dashboard/request-identity.js +72 -0
  402. package/dist/dashboard/request-identity.js.map +1 -0
  403. package/dist/dashboard/session-cleanup.d.ts +5 -0
  404. package/dist/dashboard/session-cleanup.d.ts.map +1 -1
  405. package/dist/dashboard/session-cleanup.js +4 -0
  406. package/dist/dashboard/session-cleanup.js.map +1 -1
  407. package/dist/dashboard/settings-write-applier.d.ts +5 -1
  408. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  409. package/dist/dashboard/settings-write-applier.js +14 -0
  410. package/dist/dashboard/settings-write-applier.js.map +1 -1
  411. package/dist/dashboard/standing-link.d.ts +76 -0
  412. package/dist/dashboard/standing-link.d.ts.map +1 -0
  413. package/dist/dashboard/standing-link.js +111 -0
  414. package/dist/dashboard/standing-link.js.map +1 -0
  415. package/dist/dashboard/terminal-control.d.ts +105 -0
  416. package/dist/dashboard/terminal-control.d.ts.map +1 -0
  417. package/dist/dashboard/terminal-control.js +296 -0
  418. package/dist/dashboard/terminal-control.js.map +1 -0
  419. package/dist/dashboard/terminal-front-proxy.d.ts +55 -0
  420. package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -0
  421. package/dist/dashboard/terminal-front-proxy.js +397 -0
  422. package/dist/dashboard/terminal-front-proxy.js.map +1 -0
  423. package/dist/dashboard/terminal-view-capability.d.ts +97 -0
  424. package/dist/dashboard/terminal-view-capability.d.ts.map +1 -0
  425. package/dist/dashboard/terminal-view-capability.js +145 -0
  426. package/dist/dashboard/terminal-view-capability.js.map +1 -0
  427. package/dist/dashboard/web/agent-workbench-api.d.ts +59 -0
  428. package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -0
  429. package/dist/dashboard/web/agent-workbench-api.js +227 -0
  430. package/dist/dashboard/web/agent-workbench-api.js.map +1 -0
  431. package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts +59 -0
  432. package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts.map +1 -0
  433. package/dist/dashboard/web/agent-workbench-appearance-menu.js +195 -0
  434. package/dist/dashboard/web/agent-workbench-appearance-menu.js.map +1 -0
  435. package/dist/dashboard/web/agent-workbench-appearance.d.ts +222 -0
  436. package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -0
  437. package/dist/dashboard/web/agent-workbench-appearance.js +499 -0
  438. package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -0
  439. package/dist/dashboard/web/agent-workbench-capabilities.d.ts +13 -0
  440. package/dist/dashboard/web/agent-workbench-capabilities.d.ts.map +1 -0
  441. package/dist/dashboard/web/agent-workbench-capabilities.js +24 -0
  442. package/dist/dashboard/web/agent-workbench-capabilities.js.map +1 -0
  443. package/dist/dashboard/web/agent-workbench-chat.d.ts +90 -0
  444. package/dist/dashboard/web/agent-workbench-chat.d.ts.map +1 -0
  445. package/dist/dashboard/web/agent-workbench-chat.js +168 -0
  446. package/dist/dashboard/web/agent-workbench-chat.js.map +1 -0
  447. package/dist/dashboard/web/agent-workbench-dock-page.d.ts +3 -0
  448. package/dist/dashboard/web/agent-workbench-dock-page.d.ts.map +1 -0
  449. package/dist/dashboard/web/agent-workbench-dock-page.js +23 -0
  450. package/dist/dashboard/web/agent-workbench-dock-page.js.map +1 -0
  451. package/dist/dashboard/web/agent-workbench-dock-view.d.ts +22 -0
  452. package/dist/dashboard/web/agent-workbench-dock-view.d.ts.map +1 -0
  453. package/dist/dashboard/web/agent-workbench-dock-view.js +76 -0
  454. package/dist/dashboard/web/agent-workbench-dock-view.js.map +1 -0
  455. package/dist/dashboard/web/agent-workbench-model.d.ts +196 -0
  456. package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -0
  457. package/dist/dashboard/web/agent-workbench-model.js +529 -0
  458. package/dist/dashboard/web/agent-workbench-model.js.map +1 -0
  459. package/dist/dashboard/web/agent-workbench-page.d.ts +3 -0
  460. package/dist/dashboard/web/agent-workbench-page.d.ts.map +1 -0
  461. package/dist/dashboard/web/agent-workbench-page.js +27 -0
  462. package/dist/dashboard/web/agent-workbench-page.js.map +1 -0
  463. package/dist/dashboard/web/agent-workbench-panes.d.ts +49 -0
  464. package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -0
  465. package/dist/dashboard/web/agent-workbench-panes.js +468 -0
  466. package/dist/dashboard/web/agent-workbench-panes.js.map +1 -0
  467. package/dist/dashboard/web/agent-workbench-session-list.d.ts +42 -0
  468. package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -0
  469. package/dist/dashboard/web/agent-workbench-session-list.js +353 -0
  470. package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -0
  471. package/dist/dashboard/web/agent-workbench-storage.d.ts +49 -0
  472. package/dist/dashboard/web/agent-workbench-storage.d.ts.map +1 -0
  473. package/dist/dashboard/web/agent-workbench-storage.js +197 -0
  474. package/dist/dashboard/web/agent-workbench-storage.js.map +1 -0
  475. package/dist/dashboard/web/agent-workbench-touch.d.ts +46 -0
  476. package/dist/dashboard/web/agent-workbench-touch.d.ts.map +1 -0
  477. package/dist/dashboard/web/agent-workbench-touch.js +96 -0
  478. package/dist/dashboard/web/agent-workbench-touch.js.map +1 -0
  479. package/dist/dashboard/web/agent-workbench-view.d.ts +34 -0
  480. package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -0
  481. package/dist/dashboard/web/agent-workbench-view.js +439 -0
  482. package/dist/dashboard/web/agent-workbench-view.js.map +1 -0
  483. package/dist/dashboard/web/app.d.ts.map +1 -1
  484. package/dist/dashboard/web/app.js +63 -2
  485. package/dist/dashboard/web/app.js.map +1 -1
  486. package/dist/dashboard/web/bot-defaults-page.d.ts +18 -0
  487. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  488. package/dist/dashboard/web/bot-defaults-page.js +362 -36
  489. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  490. package/dist/dashboard/web/bot-defaults.d.ts +8 -0
  491. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  492. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  493. package/dist/dashboard/web/control-csrf.d.ts +4 -0
  494. package/dist/dashboard/web/control-csrf.d.ts.map +1 -0
  495. package/dist/dashboard/web/control-csrf.js +26 -0
  496. package/dist/dashboard/web/control-csrf.js.map +1 -0
  497. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  498. package/dist/dashboard/web/dashboard-routes.js +2 -0
  499. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  500. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  501. package/dist/dashboard/web/groups-page.js +11 -2
  502. package/dist/dashboard/web/groups-page.js.map +1 -1
  503. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  504. package/dist/dashboard/web/i18n.js +140 -6
  505. package/dist/dashboard/web/i18n.js.map +1 -1
  506. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  507. package/dist/dashboard/web/overview-page.js +3 -2
  508. package/dist/dashboard/web/overview-page.js.map +1 -1
  509. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  510. package/dist/dashboard/web/sessions-page.js +41 -1
  511. package/dist/dashboard/web/sessions-page.js.map +1 -1
  512. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  513. package/dist/dashboard/web/sessions.js +5 -1
  514. package/dist/dashboard/web/sessions.js.map +1 -1
  515. package/dist/dashboard/web/settings-page.d.ts +3 -0
  516. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  517. package/dist/dashboard/web/settings-page.js +56 -10
  518. package/dist/dashboard/web/settings-page.js.map +1 -1
  519. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  520. package/dist/dashboard/web/skills-page.js +4 -2
  521. package/dist/dashboard/web/skills-page.js.map +1 -1
  522. package/dist/dashboard/web/store.d.ts +27 -2
  523. package/dist/dashboard/web/store.d.ts.map +1 -1
  524. package/dist/dashboard/web/store.js +43 -4
  525. package/dist/dashboard/web/store.js.map +1 -1
  526. package/dist/dashboard/web/ui.d.ts +3 -0
  527. package/dist/dashboard/web/ui.d.ts.map +1 -1
  528. package/dist/dashboard/web/ui.js +11 -0
  529. package/dist/dashboard/web/ui.js.map +1 -1
  530. package/dist/dashboard/web/update-action.d.ts +12 -0
  531. package/dist/dashboard/web/update-action.d.ts.map +1 -1
  532. package/dist/dashboard/web/update-action.js +11 -0
  533. package/dist/dashboard/web/update-action.js.map +1 -1
  534. package/dist/dashboard/workbench-doctor.d.ts +114 -0
  535. package/dist/dashboard/workbench-doctor.d.ts.map +1 -0
  536. package/dist/dashboard/workbench-doctor.js +620 -0
  537. package/dist/dashboard/workbench-doctor.js.map +1 -0
  538. package/dist/dashboard/workbench-ticket.d.ts +165 -0
  539. package/dist/dashboard/workbench-ticket.d.ts.map +1 -0
  540. package/dist/dashboard/workbench-ticket.js +495 -0
  541. package/dist/dashboard/workbench-ticket.js.map +1 -0
  542. package/dist/dashboard-web/app.js +1 -1
  543. package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +1 -0
  544. package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +1 -0
  545. package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +10 -0
  546. package/dist/dashboard-web/chunks/chunk-22WIADUT.js +2 -0
  547. package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +1 -0
  548. package/dist/dashboard-web/chunks/{chunk-6O7KXFD2.js → chunk-2W6SCN3M.js} +1 -1
  549. package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
  550. package/dist/dashboard-web/chunks/{chunk-Q2MT4VWH.js → chunk-F6KNPF4R.js} +11 -9
  551. package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +1 -0
  552. package/dist/dashboard-web/chunks/chunk-G5ZS2YUS.js +1 -0
  553. package/dist/dashboard-web/chunks/chunk-KTQ7B6ZR.js +1 -0
  554. package/dist/dashboard-web/chunks/{chunk-U3ZFSO7E.js → chunk-NACP7BMR.js} +1 -1
  555. package/dist/dashboard-web/chunks/{connectors-page-2KZO5KSJ.js → connectors-page-VOISXXII.js} +1 -1
  556. package/dist/dashboard-web/chunks/{feedback-page-CLVTOLLO.js → feedback-page-RN6HRZMS.js} +1 -1
  557. package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +8 -0
  558. package/dist/dashboard-web/chunks/{insights-page-4RPU2CRU.js → insights-page-HJFDYR5N.js} +3 -3
  559. package/dist/dashboard-web/chunks/{monitor-room-OTKQ2CXK.js → monitor-room-V7PCP47V.js} +1 -1
  560. package/dist/dashboard-web/chunks/{monitoring-page-IJPUB6JT.js → monitoring-page-NKEKVQAP.js} +1 -1
  561. package/dist/dashboard-web/chunks/{office-page-QSR3J44Y.js → office-page-GVJF73XW.js} +1 -1
  562. package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +1 -0
  563. package/dist/dashboard-web/chunks/{plugin-page-VEGTCEAS.js → plugin-page-J3OF5IY4.js} +1 -1
  564. package/dist/dashboard-web/chunks/{roles-page-6NWJMOB5.js → roles-page-WQIRSOLZ.js} +1 -1
  565. package/dist/dashboard-web/chunks/{schedules-page-6I3LNXD4.js → schedules-page-J2DEY2X6.js} +1 -1
  566. package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +8 -0
  567. package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +2 -0
  568. package/dist/dashboard-web/chunks/{skills-page-M2Q6L5CB.js → skills-page-HGIFR3IU.js} +2 -2
  569. package/dist/dashboard-web/chunks/{team-federation-page-7I7FDE3B.js → team-federation-page-MR5ZPL4B.js} +1 -1
  570. package/dist/dashboard-web/chunks/{v3-page-HQXRL65L.js → v3-page-GBR5JWPE.js} +2 -2
  571. package/dist/dashboard-web/chunks/{whiteboards-page-LQKC4TAZ.js → whiteboards-page-QAZM4BN3.js} +1 -1
  572. package/dist/dashboard-web/index.html +8 -1
  573. package/dist/dashboard-web/style.css +2006 -10
  574. package/dist/dashboard.js +1017 -264
  575. package/dist/dashboard.js.map +1 -1
  576. package/dist/dsh-runner.js +8 -1
  577. package/dist/dsh-runner.js.map +1 -1
  578. package/dist/global-config.d.ts +30 -0
  579. package/dist/global-config.d.ts.map +1 -1
  580. package/dist/global-config.js +33 -0
  581. package/dist/global-config.js.map +1 -1
  582. package/dist/i18n/en.d.ts.map +1 -1
  583. package/dist/i18n/en.js +46 -27
  584. package/dist/i18n/en.js.map +1 -1
  585. package/dist/i18n/zh.d.ts.map +1 -1
  586. package/dist/i18n/zh.js +43 -27
  587. package/dist/i18n/zh.js.map +1 -1
  588. package/dist/im/lark/card-builder.d.ts +1 -1
  589. package/dist/im/lark/card-builder.d.ts.map +1 -1
  590. package/dist/im/lark/card-builder.js +22 -6
  591. package/dist/im/lark/card-builder.js.map +1 -1
  592. package/dist/im/lark/card-handler.d.ts.map +1 -1
  593. package/dist/im/lark/card-handler.js +118 -24
  594. package/dist/im/lark/card-handler.js.map +1 -1
  595. package/dist/im/lark/client.d.ts +15 -0
  596. package/dist/im/lark/client.d.ts.map +1 -1
  597. package/dist/im/lark/client.js +30 -0
  598. package/dist/im/lark/client.js.map +1 -1
  599. package/dist/im/lark/event-dispatcher.d.ts +48 -0
  600. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  601. package/dist/im/lark/event-dispatcher.js +138 -41
  602. package/dist/im/lark/event-dispatcher.js.map +1 -1
  603. package/dist/im/lark/identity-cache.d.ts +14 -6
  604. package/dist/im/lark/identity-cache.d.ts.map +1 -1
  605. package/dist/im/lark/identity-cache.js +69 -26
  606. package/dist/im/lark/identity-cache.js.map +1 -1
  607. package/dist/im/lark/lark-hosts.d.ts +13 -0
  608. package/dist/im/lark/lark-hosts.d.ts.map +1 -1
  609. package/dist/im/lark/lark-hosts.js +16 -0
  610. package/dist/im/lark/lark-hosts.js.map +1 -1
  611. package/dist/im/lark/overview-card.d.ts +22 -0
  612. package/dist/im/lark/overview-card.d.ts.map +1 -1
  613. package/dist/im/lark/overview-card.js +53 -3
  614. package/dist/im/lark/overview-card.js.map +1 -1
  615. package/dist/im/lark/sessions-card.d.ts.map +1 -1
  616. package/dist/im/lark/sessions-card.js +26 -3
  617. package/dist/im/lark/sessions-card.js.map +1 -1
  618. package/dist/im/lark/workflow-slash-command.d.ts +6 -0
  619. package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
  620. package/dist/im/lark/workflow-slash-command.js +7 -0
  621. package/dist/im/lark/workflow-slash-command.js.map +1 -1
  622. package/dist/index-daemon.js +27 -4
  623. package/dist/index-daemon.js.map +1 -1
  624. package/dist/index-dashboard.d.ts +3 -0
  625. package/dist/index-dashboard.d.ts.map +1 -0
  626. package/dist/index-dashboard.js +94 -0
  627. package/dist/index-dashboard.js.map +1 -0
  628. package/dist/platform/team-agents-client.d.ts +199 -0
  629. package/dist/platform/team-agents-client.d.ts.map +1 -0
  630. package/dist/platform/team-agents-client.js +263 -0
  631. package/dist/platform/team-agents-client.js.map +1 -0
  632. package/dist/platform/tunnel-client.d.ts +6 -0
  633. package/dist/platform/tunnel-client.d.ts.map +1 -1
  634. package/dist/platform/tunnel-client.js.map +1 -1
  635. package/dist/services/async-trigger-state.d.ts +7 -3
  636. package/dist/services/async-trigger-state.d.ts.map +1 -1
  637. package/dist/services/async-trigger-state.js +28 -0
  638. package/dist/services/async-trigger-state.js.map +1 -1
  639. package/dist/services/async-trigger-store.d.ts +13 -4
  640. package/dist/services/async-trigger-store.d.ts.map +1 -1
  641. package/dist/services/async-trigger-store.js +55 -8
  642. package/dist/services/async-trigger-store.js.map +1 -1
  643. package/dist/services/bot-config-store.d.ts +1 -11
  644. package/dist/services/bot-config-store.d.ts.map +1 -1
  645. package/dist/services/bot-config-store.js +27 -3
  646. package/dist/services/bot-config-store.js.map +1 -1
  647. package/dist/services/bot-profile-store.d.ts +17 -2
  648. package/dist/services/bot-profile-store.d.ts.map +1 -1
  649. package/dist/services/bot-profile-store.js +93 -12
  650. package/dist/services/bot-profile-store.js.map +1 -1
  651. package/dist/services/bridge-fallback-gate.d.ts +15 -7
  652. package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
  653. package/dist/services/bridge-fallback-gate.js +43 -16
  654. package/dist/services/bridge-fallback-gate.js.map +1 -1
  655. package/dist/services/bridge-turn-queue.d.ts +10 -1
  656. package/dist/services/bridge-turn-queue.d.ts.map +1 -1
  657. package/dist/services/bridge-turn-queue.js +29 -9
  658. package/dist/services/bridge-turn-queue.js.map +1 -1
  659. package/dist/services/claude-transcript.d.ts +19 -0
  660. package/dist/services/claude-transcript.d.ts.map +1 -1
  661. package/dist/services/claude-transcript.js +57 -5
  662. package/dist/services/claude-transcript.js.map +1 -1
  663. package/dist/services/codex-app-threads.d.ts +2 -0
  664. package/dist/services/codex-app-threads.d.ts.map +1 -1
  665. package/dist/services/codex-app-threads.js +1 -1
  666. package/dist/services/codex-app-threads.js.map +1 -1
  667. package/dist/services/codex-reasoning-effort.d.ts +8 -0
  668. package/dist/services/codex-reasoning-effort.d.ts.map +1 -1
  669. package/dist/services/codex-reasoning-effort.js +24 -0
  670. package/dist/services/codex-reasoning-effort.js.map +1 -1
  671. package/dist/services/cursor-resume-policy.d.ts.map +1 -1
  672. package/dist/services/cursor-resume-policy.js +15 -3
  673. package/dist/services/cursor-resume-policy.js.map +1 -1
  674. package/dist/services/open-platform-rename.d.ts.map +1 -1
  675. package/dist/services/open-platform-rename.js +3 -2
  676. package/dist/services/open-platform-rename.js.map +1 -1
  677. package/dist/services/ordinary-turn-recovery.d.ts +76 -0
  678. package/dist/services/ordinary-turn-recovery.d.ts.map +1 -0
  679. package/dist/services/ordinary-turn-recovery.js +349 -0
  680. package/dist/services/ordinary-turn-recovery.js.map +1 -0
  681. package/dist/services/peer-cross-ref-store.d.ts +8 -0
  682. package/dist/services/peer-cross-ref-store.d.ts.map +1 -0
  683. package/dist/services/peer-cross-ref-store.js +95 -0
  684. package/dist/services/peer-cross-ref-store.js.map +1 -0
  685. package/dist/services/pi-transcript.d.ts.map +1 -1
  686. package/dist/services/pi-transcript.js +10 -6
  687. package/dist/services/pi-transcript.js.map +1 -1
  688. package/dist/services/resume-fresh-policy.d.ts +17 -0
  689. package/dist/services/resume-fresh-policy.d.ts.map +1 -0
  690. package/dist/services/resume-fresh-policy.js +24 -0
  691. package/dist/services/resume-fresh-policy.js.map +1 -0
  692. package/dist/services/session-group-title.d.ts +1 -0
  693. package/dist/services/session-group-title.d.ts.map +1 -1
  694. package/dist/services/session-group-title.js +16 -1
  695. package/dist/services/session-group-title.js.map +1 -1
  696. package/dist/services/session-groups-store.d.ts +30 -0
  697. package/dist/services/session-groups-store.d.ts.map +1 -1
  698. package/dist/services/session-groups-store.js +26 -4
  699. package/dist/services/session-groups-store.js.map +1 -1
  700. package/dist/services/session-owner-notification.d.ts +9 -0
  701. package/dist/services/session-owner-notification.d.ts.map +1 -0
  702. package/dist/services/session-owner-notification.js +10 -0
  703. package/dist/services/session-owner-notification.js.map +1 -0
  704. package/dist/services/session-owner-reminder-config-store.d.ts +9 -0
  705. package/dist/services/session-owner-reminder-config-store.d.ts.map +1 -0
  706. package/dist/services/session-owner-reminder-config-store.js +24 -0
  707. package/dist/services/session-owner-reminder-config-store.js.map +1 -0
  708. package/dist/services/session-owner-reminder-store.d.ts +5 -0
  709. package/dist/services/session-owner-reminder-store.d.ts.map +1 -0
  710. package/dist/services/session-owner-reminder-store.js +54 -0
  711. package/dist/services/session-owner-reminder-store.js.map +1 -0
  712. package/dist/services/session-store.d.ts +98 -21
  713. package/dist/services/session-store.d.ts.map +1 -1
  714. package/dist/services/session-store.js +406 -48
  715. package/dist/services/session-store.js.map +1 -1
  716. package/dist/services/structured-bridge-clis.d.ts +15 -2
  717. package/dist/services/structured-bridge-clis.d.ts.map +1 -1
  718. package/dist/services/structured-bridge-clis.js +16 -1
  719. package/dist/services/structured-bridge-clis.js.map +1 -1
  720. package/dist/services/transcript-resolver.d.ts +1 -1
  721. package/dist/services/transcript-resolver.d.ts.map +1 -1
  722. package/dist/services/transcript-resolver.js +6 -1
  723. package/dist/services/transcript-resolver.js.map +1 -1
  724. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  725. package/dist/setup/bot-config-editor.js +7 -2
  726. package/dist/setup/bot-config-editor.js.map +1 -1
  727. package/dist/setup/ensure-herdr-integrations.d.ts +13 -0
  728. package/dist/setup/ensure-herdr-integrations.d.ts.map +1 -1
  729. package/dist/setup/ensure-herdr-integrations.js +21 -3
  730. package/dist/setup/ensure-herdr-integrations.js.map +1 -1
  731. package/dist/setup/open-platform-automation.d.ts +1 -0
  732. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  733. package/dist/setup/open-platform-automation.js +107 -7
  734. package/dist/setup/open-platform-automation.js.map +1 -1
  735. package/dist/skills/definitions.d.ts +17 -0
  736. package/dist/skills/definitions.d.ts.map +1 -1
  737. package/dist/skills/definitions.js +78 -8
  738. package/dist/skills/definitions.js.map +1 -1
  739. package/dist/skills/injection-mode.d.ts +24 -3
  740. package/dist/skills/injection-mode.d.ts.map +1 -1
  741. package/dist/skills/injection-mode.js +64 -15
  742. package/dist/skills/injection-mode.js.map +1 -1
  743. package/dist/skills/installer.d.ts +18 -0
  744. package/dist/skills/installer.d.ts.map +1 -1
  745. package/dist/skills/installer.js +45 -1
  746. package/dist/skills/installer.js.map +1 -1
  747. package/dist/types.d.ts +222 -10
  748. package/dist/types.d.ts.map +1 -1
  749. package/dist/utils/bot-routing.d.ts +1 -1
  750. package/dist/utils/bot-routing.d.ts.map +1 -1
  751. package/dist/utils/bot-routing.js.map +1 -1
  752. package/dist/utils/child-env.d.ts +92 -2
  753. package/dist/utils/child-env.d.ts.map +1 -1
  754. package/dist/utils/child-env.js +195 -1
  755. package/dist/utils/child-env.js.map +1 -1
  756. package/dist/utils/cli-usage-limit.d.ts +25 -14
  757. package/dist/utils/cli-usage-limit.d.ts.map +1 -1
  758. package/dist/utils/cli-usage-limit.js +25 -15
  759. package/dist/utils/cli-usage-limit.js.map +1 -1
  760. package/dist/utils/daemon-rejection-guard.d.ts +35 -0
  761. package/dist/utils/daemon-rejection-guard.d.ts.map +1 -0
  762. package/dist/utils/daemon-rejection-guard.js +101 -0
  763. package/dist/utils/daemon-rejection-guard.js.map +1 -0
  764. package/dist/utils/dashboard-env.d.ts +53 -0
  765. package/dist/utils/dashboard-env.d.ts.map +1 -0
  766. package/dist/utils/dashboard-env.js +116 -0
  767. package/dist/utils/dashboard-env.js.map +1 -0
  768. package/dist/utils/global-install.d.ts.map +1 -1
  769. package/dist/utils/global-install.js +61 -5
  770. package/dist/utils/global-install.js.map +1 -1
  771. package/dist/utils/install-diagnostics.d.ts +14 -7
  772. package/dist/utils/install-diagnostics.d.ts.map +1 -1
  773. package/dist/utils/install-diagnostics.js +20 -11
  774. package/dist/utils/install-diagnostics.js.map +1 -1
  775. package/dist/utils/local-dev-update.d.ts +132 -0
  776. package/dist/utils/local-dev-update.d.ts.map +1 -0
  777. package/dist/utils/local-dev-update.js +176 -0
  778. package/dist/utils/local-dev-update.js.map +1 -0
  779. package/dist/utils/pending-input-queue.d.ts +12 -1
  780. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  781. package/dist/utils/pending-input-queue.js.map +1 -1
  782. package/dist/worker.js +1517 -236
  783. package/dist/worker.js.map +1 -1
  784. package/dist/workflows/definition.d.ts +68 -68
  785. package/dist/workflows/events/payloads.d.ts +14 -14
  786. package/dist/workflows/events/schema.d.ts +312 -312
  787. package/dist/workflows/migration/v2-run-archive-schema.d.ts +40 -40
  788. package/dist/workflows/v3/cli-run.d.ts.map +1 -1
  789. package/dist/workflows/v3/cli-run.js +7 -0
  790. package/dist/workflows/v3/cli-run.js.map +1 -1
  791. package/dist/workflows/v3/goal-cli.d.ts +3 -0
  792. package/dist/workflows/v3/goal-cli.d.ts.map +1 -1
  793. package/dist/workflows/v3/goal-cli.js +11 -0
  794. package/dist/workflows/v3/goal-cli.js.map +1 -1
  795. package/dist/workflows/v3/run-envelope.d.ts +144 -144
  796. package/package.json +7 -2
  797. package/dist/cli/pm2-god-admission.d.ts +0 -8
  798. package/dist/cli/pm2-god-admission.d.ts.map +0 -1
  799. package/dist/cli/pm2-god-admission.js +0 -25
  800. package/dist/cli/pm2-god-admission.js.map +0 -1
  801. package/dist/core/riff-shutdown-detach.d.ts.map +0 -1
  802. package/dist/core/riff-shutdown-detach.js.map +0 -1
  803. package/dist/core/riff-worker-shutdown-readiness.d.ts.map +0 -1
  804. package/dist/core/riff-worker-shutdown-readiness.js.map +0 -1
  805. package/dist/dashboard-web/chunks/bot-defaults-page-4RENHE7J.js +0 -10
  806. package/dist/dashboard-web/chunks/chunk-2WQDS65D.js +0 -1
  807. package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
  808. package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
  809. package/dist/dashboard-web/chunks/groups-page-HLASRTSY.js +0 -8
  810. package/dist/dashboard-web/chunks/overview-page-6OK63V4V.js +0 -1
  811. package/dist/dashboard-web/chunks/sessions-page-B2TXGJDO.js +0 -8
  812. package/dist/dashboard-web/chunks/settings-page-6KJADSC6.js +0 -2
@@ -0,0 +1,10 @@
1
+ import{a as re}from"./chunk-KTQ7B6ZR.js";import{b as le}from"./chunk-2W6SCN3M.js";import{a as $t,b as ht,c as Rt,g as oe,h as ne,j as se,k as ie,q as Lt}from"./chunk-5CJMHTT4.js";import{d as j}from"./chunk-FXW3V4JR.js";import{a as xt}from"./chunk-24ONYQMR.js";import{B as Ot,C as gt,F as Yt,G as te,b as Xt,w as Zt}from"./chunk-F6KNPF4R.js";import{a as ee}from"./chunk-SYC6D5XU.js";import{a as We,b as qe,d as ae}from"./chunk-5THX4DI2.js";import{c as Tt}from"./chunk-7SZRL6FY.js";var n=Tt(We(),1),Pe=Tt(qe(),1);var ue=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],yt={options:ue,ttadkModelDefault:"glm-5.1",ttadkModelSuggestions:[]};function wt(a,t){return typeof a?.cliId=="string"&&a.cliId?a.cliId:t}function Et(a){let t=null;for(let o of xt.sessions.values())o.larkAppId!==a||!o.cliId||(!t||Number(o.lastMessageAt??0)>Number(t.lastMessageAt??0))&&(t=o);return t?.cliId??""}function Ft(a,t){let o=typeof a.agentSelectionKey=="string"&&a.agentSelectionKey?a.agentSelectionKey:"";return o||wt(a,t)||"claude-code"}function Ut(a,t){return a.find(o=>o.id===t)}function de(a,t){return a?.gateway==="ttadk"&&a.acceptsModel!==!1?t.ttadkModelSuggestions:[]}function ce(){let a=0;return{begin(){let t=++a;return{commit:()=>t===a}}}}async function be(){try{let a=await fetch("/api/bots"),t=await a.json().catch(()=>({}));if(!a.ok){let o=t?.error?`HTTP ${a.status}: ${t.error}${t.path?` (${t.path})`:""}`:`HTTP ${a.status}`;return{bots:[],error:o}}return!t||!Array.isArray(t.bots)?{bots:[],error:"unexpected response shape (no `bots` array)"}:{bots:t.bots,error:null}}catch(a){return{bots:[],error:a?.message??String(a)}}}async function fe(a,t){try{let o=await fetch(`/api/bots/${encodeURIComponent(a)}/substitute-targets/resolve`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:t})}),d=await o.json().catch(()=>({}));return o.ok?{ok:!0,resolution:d?.resolution??{}}:{ok:!1,error:d?.error?`HTTP ${o.status}: ${d.error}`:`HTTP ${o.status}`}}catch(o){return{ok:!1,error:o?.message??String(o)}}}async function me(){try{let a=await fetch("/api/cli-options"),t=await a.json().catch(()=>({}));if(!a.ok||!Array.isArray(t?.options))return yt;let o=t.options.filter(i=>i&&typeof i.id=="string"&&typeof i.label=="string"),d=typeof t.ttadkModelDefault=="string"&&t.ttadkModelDefault.trim()?t.ttadkModelDefault.trim():yt.ttadkModelDefault,u=Array.isArray(t.ttadkModelSuggestions)?t.ttadkModelSuggestions.filter(i=>typeof i=="string"):[];return{options:o.length?o:ue,ttadkModelDefault:d,ttadkModelSuggestions:u}}catch{return yt}}function pe(a){if(!a)return"\u2014";let t=new Date(a);return Number.isNaN(t.getTime())?"\u2014":t.toLocaleString()}var ge=[3600*1e3,480*60*1e3,1440*60*1e3,10080*60*1e3];var It=["low","medium","high","xhigh","max","ultra"],Je=It.slice(0,4),he=It.slice(0,4),Ke=he.slice(0,3),Ve=new Set(["gpt-5.6-sol","gpt-5.6-terra"]),Qe=new Set(["gpt-5.6-luna"]),ze=new Set(["grok-4.6"]);function Xe(a){return a==="codex"||a==="codex-app"}function Ze(a){let t=a?.trim().toLowerCase()??"";return Ve.has(t)?It:Qe.has(t)?It.slice(0,5):Je}function Ye(a){let t=a?.trim().toLowerCase()??"";return ze.has(t)?he:Ke}function ye(a,t){return a==="grok"?Ye(t):Xe(a)?Ze(t):[]}var e=Tt(ae(),1);function Gt(a){let t=a.cliRuntime;if(!t||typeof t!="object"){let u=typeof a.cliPathOverride=="string"?a.cliPathOverride.trim():"";return{mode:u?"legacy":"official",id:"",displayName:"",executable:u,legacyPath:u,updateProvider:"auto",packageName:""}}let o=t.update?.provider,d=o==="self"||o==="npm"||o==="none"?o:"auto";return{mode:"custom",id:typeof t.id=="string"?t.id:"",displayName:typeof t.displayName=="string"?t.displayName:"",executable:typeof t.executable=="string"?t.executable:"",legacyPath:"",updateProvider:d,packageName:t.update?.provider==="npm"&&typeof t.update.packageName=="string"?t.update.packageName:""}}var Dt=["common","sessions","security","cards","advanced"];function ta(a){let t=j(),o=(0,n.useRef)([]),d={common:t("botDefaults.tabCommon"),sessions:t("botDefaults.tabSessions"),security:t("botDefaults.tabSecurity"),cards:t("botDefaults.tabCards"),advanced:t("botDefaults.tabAdvanced")};function u(i){let f=(i+Dt.length)%Dt.length,s=Dt[f];a.onChange(s),o.current[f]?.focus()}return(0,e.jsxs)("nav",{className:"bd-tab-bar","aria-label":t("botDefaults.tabNavigation"),children:[(0,e.jsx)("div",{className:"bd-tabs",role:"tablist",children:Dt.map((i,f)=>(0,e.jsx)("button",{ref:s=>{o.current[f]=s},id:`bd-tab-${i}`,type:"button",role:"tab",className:`bd-tab${a.active===i?" active":""}`,"aria-selected":a.active===i,"aria-controls":`bd-panel-${i}`,tabIndex:a.active===i?0:-1,"data-bd-tab":i,onClick:()=>a.onChange(i),onKeyDown:s=>{s.key==="ArrowRight"?(s.preventDefault(),u(f+1)):s.key==="ArrowLeft"?(s.preventDefault(),u(f-1)):s.key==="Home"?(s.preventDefault(),u(0)):s.key==="End"&&(s.preventDefault(),u(Dt.length-1))},children:d[i]},i))}),(0,e.jsx)("small",{className:"bd-tab-hint",children:t("botDefaults.tabHint")})]})}var ea=1,ve=14;function kt(a){let t=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let o=t.current;if(!o||typeof window>"u")return;let d=s=>{for(let b of s)b.style.gridColumn="",b.style.gridRowStart="",b.style.gridRowEnd=""},u=()=>{let s=Array.from(o.children).filter(N=>N instanceof HTMLElement);if(!s.length)return;let b=o.clientWidth;if(b<=0)return;let h=(o.closest(".bd-detail")?.clientWidth??b)>=1024?2:1;if(h<2){d(s);return}let c=ea+ve,v=new Array(h).fill(0);for(let N of s){let x=Math.max(1,Math.ceil((N.getBoundingClientRect().height+ve)/c));if(N.classList.contains("bd-tile-wide")){let D=Math.max(...v);N.style.gridColumn="1 / -1",N.style.gridRowStart=String(D+1),N.style.gridRowEnd=String(D+1+x),v.fill(D+x);continue}let C=0;for(let D=1;D<h;D++)v[D]<v[C]&&(C=D);let g=v[C];N.style.gridColumn=String(C+1),N.style.gridRowStart=String(g+1),N.style.gridRowEnd=String(g+1+x),v[C]=g+x}},i=window.requestAnimationFrame(u),f=typeof ResizeObserver<"u"?new ResizeObserver(()=>u()):null;if(f){f.observe(o);for(let s of Array.from(o.children))f.observe(s)}return window.addEventListener("resize",u),()=>{window.cancelAnimationFrame(i),f?.disconnect(),window.removeEventListener("resize",u)}}),(0,e.jsx)("div",{ref:t,className:a.className?`bd-tab-grid ${a.className}`:"bd-tab-grid",children:a.children})}function De(a){if(!a||typeof a!="object")return!1;let t=a;return"closedMismatchedSessions"in t||"closedMismatchedFailed"in t||"closedMismatchedResidual"in t||"closedMismatchedResidualTaskIds"in t}function jt(a){let t=a&&typeof a=="object"?a:{},o=r=>typeof r=="number"&&Number.isInteger(r)&&r>0?r:0,d=o(t.closedMismatchedSessions),u=o(t.closedMismatchedFailed),i=o(t.closedMismatchedResidual),f=t.closedMismatchedResidualTaskIds,s=Array.isArray(f)?f.map(r=>typeof r=="string"&&r.trim()?r:"unknown"):[],b=i>0||s.length>0,l=b&&s.length===0?["unknown"]:s;return{closed:d,failed:u,residual:Math.max(i,l.length),residualIds:l,hasResidual:b}}function Pt(a,t){return a.residualIds.length===0?"":t("botDefaults.agentResidualIds",{ids:a.residualIds.join(", ")})}function Jt(a,t=""){let o=a?` ${a.ok?"hint-ok":"hint-warn-inline"}`:"";return`oncall-status${t?` ${t}`:""}${o}`}function J(a){return(0,e.jsx)("span",{role:"status","aria-live":"polite",className:Jt(a.status),...a.attr??{},children:a.status?.text??""})}function aa(a){let t=typeof a.children=="string"?a.children:void 0;return(0,e.jsx)(se,{className:"bd-info-tip",label:t,children:a.children})}function M(a){return(0,e.jsxs)("span",{className:"bd-field-title",children:[(0,e.jsx)("span",{className:"bd-field-title-text",children:a.children}),a.help?(0,e.jsx)(aa,{children:a.help}):null]})}function et(a){let t=j();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Lt,{id:`bd-menu-${a.dataInput}`,className:["bd-field-menu",a.className].filter(Boolean).join(" "),ariaLabel:a.ariaLabel,disabled:a.disabled,label:$t(a.options,a.value),value:a.value,options:a.options,searchable:a.searchable,searchPlaceholder:a.searchable?t("common.dropdownSearch"):void 0,searchEmptyLabel:a.searchable?t("common.dropdownSearchEmpty"):void 0,onChange:a.onChange}),(0,e.jsx)("input",{type:"hidden","data-input":a.dataInput,value:a.value,readOnly:!0})]})}function tt(a){return(0,e.jsxs)("label",{className:a.className?`toggle-row ${a.className}`:"toggle-row",children:[(0,e.jsx)("input",{type:"checkbox","data-action":a.dataAction,checked:a.checked,disabled:a.disabled,onChange:t=>a.onChange(t.currentTarget.checked)}),(0,e.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,e.jsxs)("span",{className:"toggle-tx",children:[(0,e.jsx)("strong",{children:(0,e.jsx)(M,{help:a.help,children:a.title})}),a.description?(0,e.jsx)("small",{children:a.description}):null]})]})}async function K(a,t,o){let d=await fetch(t,{method:a,headers:{"content-type":"application/json"},body:o===void 0?void 0:JSON.stringify(o)}),u=await d.json().catch(()=>({}));return{ok:d.ok&&u?.ok!==!1,status:d.status,body:u}}function _(a){let t=typeof a.body?.reason=="string"?a.body.reason:"",o=typeof a.body?.manualCommand=="string"?a.body.manualCommand:"";return t&&o?`${t}\uFF08${o}\uFF09`:String(t||a.body?.error||a.status)}function L(a){return a?.message??String(a)}function Me(a){let t=a.trim();return t?/^[1-9]\d*$/.test(t)?Number(t):"invalid":null}function ke(a,t){let o=a.trim();return o===""?t:/^(0|[1-9]\d*)$/.test(o)?Number(o):null}var Kt=["email","openId","userId","unionId"];function Ce(a){let t=a.split(/[\r\n,,;;]+/).map(o=>o.trim()).filter(Boolean);return[...new Set(t)]}function ft(a){return(a??[]).join(`
2
+ `)}function oa(a){return Kt.find(t=>a?.[t]?.trim())??"email"}function na(a){let t=a.idValue.trim();if(!t)return null;let o={...a.persisted};if(a.persisted[a.idField]!==t||a.originalIdField!=null&&a.originalIdField!==a.idField)for(let i of Kt)delete o[i];o[a.idField]=t;let u=a.name.trim();return u?o.name=u:delete o.name,o}function sa(a,t){return a==null?t("botDefaults.brandStateDefault"):a.trim()===""?t("botDefaults.brandStateOff"):t("botDefaults.brandStateCustom")}var ia=ge;function la(a,t){return a==null?t("botDefaults.maxLiveWorkersStateDefault"):t("botDefaults.maxLiveWorkersStateOn",{count:a})}function ra(a,t){return{...a,usageDisplay:t.usageDisplay,disableStreamingCard:t.disableStreamingCard,silentTurnReactions:t.silentTurnReactions,codexAppCleanInput:t.codexAppCleanInput,writableTerminalLinkInCard:t.writableTerminalLinkInCard,privateCard:t.privateCard,summaryMemory:t.summaryMemory,summaryMemoryPath:t.summaryMemoryPath,botToBotSameDir:t.botToBotSameDir,autoStartOnGroupJoin:t.autoStartOnGroupJoin,autoStartOnGroupJoinPrompt:t.autoStartOnGroupJoinPrompt,autoStartOnNewTopic:t.autoStartOnNewTopic,regularGroupReplyMode:t.regularGroupReplyMode,regularGroupMentionMode:t.regularGroupMentionMode,docSubscribeDefaultMode:t.docSubscribeDefaultMode}}function ua(){let a=j(),t=(0,n.useRef)(!0),o=(0,n.useRef)(ce()),[d,u]=(0,n.useState)([]),[i,f]=(0,n.useState)(yt),[s,b]=(0,n.useState)(null),[l,r]=(0,n.useState)(!0),[h,c]=(0,n.useState)(!1),[v,N]=(0,n.useState)(""),[x,C]=(0,n.useState)(null),[g,D]=(0,n.useState)(0),[,m]=(0,n.useState)(0),[S,y]=(0,n.useState)(!1),[p,U]=(0,n.useState)("common"),E=(0,n.useCallback)(async(T=!1)=>{T&&D(Y=>Y+1);let F=o.current.begin();r(!0);try{let[Y,G]=await Promise.all([be(),me()]);if(!t.current||!F.commit())return;u(Y.bots),b(Y.error),f(G)}finally{t.current&&F.commit()&&r(!1)}},[]);(0,n.useEffect)(()=>{t.current=!0,E(),te().then(()=>{t.current&&m(F=>F+1)});let T=xt.onBotsChanged(()=>{t.current&&E()});return()=>{t.current=!1,T()}},[E]);let H=(0,n.useMemo)(()=>{let T=v.trim().toLowerCase();return d.filter(F=>!T||(F.botName??"").toLowerCase().includes(T)||(F.larkAppId??"").toLowerCase().includes(T))},[d,v]);(0,n.useEffect)(()=>{if(!(s||l)){if(H.length===0){x!==null&&C(null);return}(!x||!H.some(T=>T.larkAppId===x))&&C(H[0].larkAppId)}},[H,s,l,x]);let w=x?H.find(T=>T.larkAppId===x)??null:null,Z=(0,n.useCallback)((T,F)=>{u(Y=>Y.map(G=>G.larkAppId!==T?G:typeof F=="function"?F(G):{...G,...F}))},[]),q=async()=>{c(!0);try{await E(!0)}finally{t.current&&c(!1)}},W;return l?W=(0,e.jsx)(Rt,{label:a("common.loading")}):s?W=(0,e.jsxs)("p",{className:"hint-warn",children:["\u65E0\u6CD5\u52A0\u8F7D bot \u5217\u8868\uFF1A",s,(0,e.jsx)("br",{}),"\u5E38\u89C1\u539F\u56E0\uFF1Adashboard / daemon \u8FDB\u7A0B\u8FD8\u5728\u8DD1\u65E7\u4EE3\u7801\uFF0C\u6267\u884C ",(0,e.jsx)("code",{children:"botmux restart"})," \u540E\u5237\u65B0\u3002"]}):H.length===0?W=(0,e.jsx)("p",{className:"empty",children:a("botDefaults.empty")}):w?W=(0,e.jsx)(ca,{bot:w,cliState:i,patchBot:Z,activeTab:p,onTabChange:U},`${w.larkAppId}:${g}`):W=null,(0,e.jsxs)("section",{className:"page bot-defaults-page",children:[(0,e.jsxs)("div",{className:"page-heading",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"eyebrow",children:a("nav.botDefaults")}),(0,e.jsx)("h1",{children:a("botDefaults.title")})]}),(0,e.jsxs)("div",{className:"page-heading-actions",children:[(0,e.jsx)(ne,{id:"bd-refresh",label:a("botDefaults.refresh"),busy:h,disabled:h,onClick:()=>{q()}}),Zt.authed?(0,e.jsx)(oe,{className:"page-primary-action add-bot-btn",disabled:S,onClick:()=>{y(!0),le().finally(()=>y(!1))},children:a("botOnboarding.add")}):null]})]}),(0,e.jsxs)("div",{className:"bd-layout",children:[(0,e.jsxs)("aside",{id:"bd-roster",className:"bd-roster",children:[(0,e.jsx)("form",{id:"bd-filters",className:"filters dashboard-toolbar",onSubmit:T=>T.preventDefault(),children:(0,e.jsx)("input",{type:"search",name:"q",placeholder:a("botDefaults.search"),value:v,onChange:T=>N(T.currentTarget.value)})}),(0,e.jsxs)("div",{className:"bd-roster-meta",children:[(0,e.jsx)("span",{children:a("botDefaults.rosterCount",{count:H.length})}),v.trim()&&H.length!==d.length?(0,e.jsx)("span",{children:a("botDefaults.rosterFiltered",{total:d.length})}):null]}),(0,e.jsx)("div",{className:"bd-roster-list",children:!s&&H.map(T=>(0,e.jsx)(da,{bot:T,selected:T.larkAppId===x,onSelect:()=>C(T.larkAppId)},T.larkAppId))})]}),(0,e.jsx)("div",{id:"bd-list",className:"bd-detail",children:W})]})]})}function da(a){let{bot:t}=a,o=t.botName??t.larkAppId,d=wt(t,Et(t.larkAppId));return(0,e.jsxs)("div",{className:`bd-roster-item${a.selected?" on":""}`,"data-appid":t.larkAppId,role:"button",tabIndex:0,onClick:a.onSelect,onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),a.onSelect())},children:[(0,e.jsx)(ht,{html:gt({name:o,larkAppId:t.larkAppId,size:"sm"})}),(0,e.jsxs)("div",{className:"bd-roster-tx",children:[(0,e.jsx)("b",{children:(0,e.jsx)(ie,{text:o,showPopover:!1,textClassName:"bd-roster-name"})}),(0,e.jsx)("span",{children:d||t.larkAppId.slice(0,14)})]}),t.defaultOncall?.enabled?(0,e.jsx)("span",{className:"bd-roster-flag",children:"oncall"}):null]})}function ca(a){let t=j(),{bot:o,cliState:d,patchBot:u}=a,i=o.botName??o.larkAppId,f=wt(o,Et(o.larkAppId)),s=(0,n.useCallback)(async l=>{let r=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/card-prefs`,l);return r.ok&&u(o.larkAppId,h=>ra(h,r.body)),r},[o.larkAppId,u]);if(o.error)return(0,e.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,e.jsxs)("header",{className:"bd-profile-head",children:[(0,e.jsx)(ht,{html:gt({name:i,larkAppId:o.larkAppId})}),(0,e.jsxs)("div",{className:"bd-profile-id",children:[(0,e.jsx)("strong",{children:i}),(0,e.jsx)("code",{children:o.larkAppId})]})]}),(0,e.jsxs)("p",{className:"hint-warn-inline",children:["\u67E5\u8BE2\u5931\u8D25\uFF1A",o.error]})]});let b=o.defaultOncall??{enabled:!1,workingDir:"",since:0};return(0,e.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,e.jsxs)("div",{className:"bd-profile-chrome",children:[(0,e.jsxs)("header",{className:"bd-profile-head",children:[(0,e.jsx)(ga,{bot:o,name:i,patchBot:u}),(0,e.jsx)("div",{className:"bd-profile-main",children:(0,e.jsx)(ha,{bot:o,cli:f,patchBot:u,meta:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("small",{className:"bd-meta-ok",children:["\u25CF ",t("botDefaults.metaOnline")]}),(b.since??0)>0?(0,e.jsxs)("small",{"data-oncall-since":!0,children:[t("botDefaults.lastEnabled"),": ",pe(b.since??0)]}):null,(o.autoboundChatCount??0)>0?(0,e.jsx)("small",{children:t("botDefaults.autobound",{count:o.autoboundChatCount??0})}):null]})})})]}),(0,e.jsx)(ta,{active:a.activeTab,onChange:a.onTabChange})]}),(0,e.jsxs)("div",{className:"bd-body bd-tab-panels",children:[(0,e.jsx)("div",{id:"bd-panel-common",role:"tabpanel","aria-labelledby":"bd-tab-common",className:"bd-tab-panel",hidden:a.activeTab!=="common",children:(0,e.jsxs)(kt,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(ya,{bot:o,sessionFallback:f,cliState:d,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Da,{bot:o,patchBot:u,putCardPref:s})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(wa,{bot:o,patchBot:u})})]})}),(0,e.jsx)("div",{id:"bd-panel-sessions",role:"tabpanel","aria-labelledby":"bd-tab-sessions",className:"bd-tab-panel",hidden:a.activeTab!=="sessions",children:(0,e.jsxs)(kt,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)($a,{bot:o,patchBot:u,putCardPref:s})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(La,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Aa,{bot:o,putCardPref:s})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Fa,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ua,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Oa,{bot:o,patchBot:u,putCardPref:s})})]})}),(0,e.jsx)("div",{id:"bd-panel-security",role:"tabpanel","aria-labelledby":"bd-tab-security",className:"bd-tab-panel",hidden:a.activeTab!=="security",children:(0,e.jsxs)(kt,{children:[o.cliId!=="riff"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ca,{bot:o,patchBot:u})}):null,o.cliId!=="riff"&&o.sandbox===!0?(0,e.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,e.jsx)(Ta,{bot:o,patchBot:u})}):null,(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Va,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ga,{bot:o,patchBot:u})})]})}),(0,e.jsx)("div",{id:"bd-panel-cards",role:"tabpanel","aria-labelledby":"bd-tab-cards",className:"bd-tab-panel",hidden:a.activeTab!=="cards",children:(0,e.jsxs)(kt,{children:[(0,e.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,e.jsx)(Pa,{bot:o,putCardPref:s})}),(0,e.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,e.jsx)(ba,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ka,{bot:o,patchBot:u})})]})}),(0,e.jsx)("div",{id:"bd-panel-advanced",role:"tabpanel","aria-labelledby":"bd-tab-advanced",className:"bd-tab-panel",hidden:a.activeTab!=="advanced",children:(0,e.jsxs)(kt,{children:[re(o.cliId)?null:(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ra,{bot:o,patchBot:u})}),o.cliId==="codex-app"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ma,{bot:o,putCardPref:s})}):null,o.cliId==="claude-code"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ba,{bot:o,patchBot:u})}):null,(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(fa,{bot:o,patchBot:u})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(ma,{bot:o,patchBot:u})})]})})]})]})}function ba(a){let t=a.bot.feedback?.enabled===!0,[o,d]=(0,n.useState)(t),[u,i]=(0,n.useState)(JSON.stringify(a.bot.feedback??{enabled:!0},null,2)),[f,s]=(0,n.useState)(null),[b,l]=(0,n.useState)(!1),[r,h]=(0,n.useState)(""),[c,v]=(0,n.useState)([]),[N,x]=(0,n.useState)(null);(0,n.useEffect)(()=>{d(a.bot.feedback?.enabled===!0),i(JSON.stringify(a.bot.feedback??{enabled:!0},null,2))},[a.bot.feedback]),(0,n.useEffect)(()=>{Xt().then(m=>{v(m.chats.filter(S=>S.memberBots.some(y=>y.larkAppId===a.bot.larkAppId&&y.inChat)))}).catch(()=>v([]))},[a.bot.larkAppId]);async function C(m=o){l(!0),s(null);try{let S={enabled:!1};if(m){let p=JSON.parse(u);if(!p||typeof p!="object"||Array.isArray(p))throw new Error("\u9AD8\u7EA7 JSON \u5FC5\u987B\u662F\u5BF9\u8C61");S={...p,enabled:!0}}let y=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/feedback`,{feedback:JSON.stringify(S)});if(!y.ok)throw new Error(_(y));a.patchBot(a.bot.larkAppId,{feedback:y.body.feedback??null}),s({text:"\u2713 \u5DF2\u4FDD\u5B58",ok:!0})}catch(S){s({text:`\u2717 ${L(S)}`})}finally{l(!1)}}async function g(){let m=r.trim()?`?chatId=${encodeURIComponent(r.trim())}`:"",S=await fetch(`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/feedback/effective${m}`),y=await S.json().catch(()=>({}));if(!S.ok)throw new Error(y?.error??`HTTP ${S.status}`);x(y.trace)}async function D(){if(!r.trim())return s({text:"\u2717 \u8BF7\u8F93\u5165\u804A\u5929 ID"});l(!0),s(null);try{let m=JSON.parse(u),S=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/chats/${encodeURIComponent(r.trim())}/feedback`,{feedback:m});if(!S.ok)throw new Error(_(S));await g(),s({text:"\u2713 \u804A\u5929\u8986\u76D6\u5DF2\u4FDD\u5B58",ok:!0})}catch(m){s({text:`\u2717 ${L(m)}`})}finally{l(!1)}}return(0,e.jsxs)("section",{className:"bd-section","aria-busy":b,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(M,{help:"\u5F00\u542F\u540E\uFF0C\u6700\u7EC8\u56DE\u7B54\u5361\u7247\u4F1A\u663E\u793A\u201C\u7ED3\u8BBA\u53EF\u7528 / \u6709\u6548\u63A8\u8FDB / \u7ED3\u8BBA\u6709\u8BEF\u201D\u7B49\u53CD\u9988\u6309\u94AE\uFF0C\u7528\u4E8E\u6536\u96C6\u56DE\u7B54\u8D28\u91CF\u8BC4\u4EF7\u3002\u9ED8\u8BA4\u5173\u95ED\uFF1B\u53EA\u5F71\u54CD\u8FD9\u4E2A bot \u7684\u6700\u7EC8\u56DE\u7B54\uFF0C\u4E0D\u5F71\u54CD\u8FC7\u7A0B\u6D88\u606F\u3002",children:"\u6700\u7EC8\u56DE\u7B54\u53CD\u9988"})}),(0,e.jsx)(tt,{checked:o,disabled:b,title:"\u6700\u7EC8\u56DE\u7B54\u53CD\u9988",help:null,description:"\u5728\u6700\u7EC8\u56DE\u7B54\u5361\u7247\u4E2D\u6536\u96C6\u7528\u6237\u8BC4\u4EF7\u3002",onChange:m=>{d(m),C(m)}}),(0,e.jsx)(J,{status:f}),o?(0,e.jsxs)("details",{className:"bd-feedback-advanced",children:[(0,e.jsx)("summary",{children:"\u9AD8\u7EA7\u914D\u7F6E\uFF08JSON \u4E0E\u804A\u5929\u8986\u76D6\uFF09"}),(0,e.jsxs)("div",{className:"bd-feedback-advanced-body",children:[(0,e.jsxs)("label",{className:"bd-row",children:[(0,e.jsx)(M,{help:"\u7528\u4E8E\u81EA\u5B9A\u4E49\u53CD\u9988\u6309\u94AE\u3001\u6587\u6848\u3001\u8D1F\u5411\u539F\u56E0\u548C\u662F\u5426\u5141\u8BB8\u6539\u9009\u3002\u4E0D\u4E86\u89E3 JSON \u914D\u7F6E\u65F6\u4FDD\u6301\u9ED8\u8BA4\u5373\u53EF\u3002",children:"\u9AD8\u7EA7 JSON"}),(0,e.jsx)("textarea",{className:"bd-feedback-json",value:u,disabled:b,rows:6,onChange:m=>i(m.target.value)})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary",disabled:b,onClick:()=>{C()},children:"\u4FDD\u5B58\u53CD\u9988\u914D\u7F6E"})}),(0,e.jsxs)("div",{className:"bd-feedback-chat-override",children:[(0,e.jsx)("h4",{children:(0,e.jsx)(M,{help:"\u8BA9\u540C\u4E00\u4E2A bot \u5728\u4E0D\u540C\u98DE\u4E66\u804A\u5929\u4E2D\u4F7F\u7528\u4E0D\u540C\u53CD\u9988\u89C4\u5219\uFF1B\u804A\u5929\u914D\u7F6E\u4F18\u5148\u4E8E bot \u9ED8\u8BA4\u914D\u7F6E\u3002\u53EA\u6709\u5404\u7FA4\u89C4\u5219\u4E0D\u540C\u65F6\u624D\u9700\u8981\u8BBE\u7F6E\u3002",children:"\u6BCF\u804A\u5929\u8986\u76D6"})}),(0,e.jsx)("p",{className:"hint",children:"\u4EC5\u5F53\u8FD9\u4E2A bot \u5728\u4E0D\u540C\u804A\u5929\u4E2D\u9700\u8981\u4E0D\u540C\u53CD\u9988\u89C4\u5219\u65F6\u8BBE\u7F6E\u3002"}),(0,e.jsxs)("label",{className:"bd-row",children:[(0,e.jsx)("span",{children:"\u804A\u5929"}),(0,e.jsxs)("select",{value:r,onChange:m=>{h(m.target.value),x(null)},children:[(0,e.jsx)("option",{value:"",children:"\u9009\u62E9\u804A\u5929"}),c.map(m=>(0,e.jsx)("option",{value:m.chatId,children:m.name||m.chatId},m.chatId))]})]}),r.trim()?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",disabled:b,onClick:()=>{D()},children:"\u4FDD\u5B58\u804A\u5929\u8986\u76D6"}),(0,e.jsx)("button",{type:"button",disabled:b,onClick:()=>{g()},children:"\u751F\u6548\u9884\u89C8"})]}),N?(0,e.jsx)("pre",{className:"code-block",children:JSON.stringify(N,null,2)}):null]}):null]})]})]}):null]})}function fa(a){let t=j();return(0,e.jsxs)("section",{className:"bd-section bd-runtime-env",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionRuntimeEnv")}),(0,e.jsx)(ja,{bot:a.bot,patchBot:a.patchBot}),(0,e.jsx)(_a,{bot:a.bot,patchBot:a.patchBot})]})}var Be=[{value:"idle",labelKey:"botDefaults.ownerReminderStateIdle"},{value:"dormant",labelKey:"botDefaults.ownerReminderStateDormant"},{value:"pending_repo",labelKey:"botDefaults.ownerReminderStatePendingRepo"},{value:"tui_prompt",labelKey:"botDefaults.ownerReminderStateTuiPrompt"},{value:"agent_attention",labelKey:"botDefaults.ownerReminderStateAgentAttention"},{value:"limited",labelKey:"botDefaults.ownerReminderStateLimited"}],Se={enabled:!1,intervalMinutes:30,text:"\u8BE5\u4F1A\u8BDD\u5DF2\u7B49\u5F85\u5904\u7406\uFF0C\u8BF7\u7EE7\u7EED\u8DDF\u8FDB\u3002",states:Be.map(a=>a.value)};function ma(a){let t=j(),o=a.bot.sessionOwnerReminder??Se,[d,u]=(0,n.useState)(o.enabled===!0),[i,f]=(0,n.useState)(String(o.intervalMinutes)),[s,b]=(0,n.useState)(o.text),[l,r]=(0,n.useState)([...o.states]),[h,c]=(0,n.useState)(null),[v,N]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let g=a.bot.sessionOwnerReminder??Se;u(g.enabled===!0),f(String(g.intervalMinutes)),b(g.text),r([...g.states])},[a.bot.sessionOwnerReminder]);function x(g,D){r(m=>D?m.includes(g)?m:[...m,g]:m.filter(S=>S!==g))}async function C(){let g=Number(i),D=s.trim();if(!Number.isInteger(g)||g<1||g>10080){c({text:`\u2717 ${t("botDefaults.ownerReminderIntervalInvalid")}`});return}if(!D||Array.from(D).length>500||/<\s*at\b/i.test(D)){c({text:`\u2717 ${t("botDefaults.ownerReminderTextInvalid")}`});return}if(d&&l.length===0){c({text:`\u2717 ${t("botDefaults.ownerReminderStatesInvalid")}`});return}N(!0),c(null);try{let m={enabled:d,intervalMinutes:g,text:D,states:l},S=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-owner-reminder`,m);if(S.ok&&S.body.ok){let y=S.body.sessionOwnerReminder??m;a.patchBot(a.bot.larkAppId,{sessionOwnerReminder:y}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${_(S)}`})}catch(m){c({text:`\u2717 ${L(m)}`})}finally{N(!1)}}return(0,e.jsxs)("section",{className:"bd-section bd-owner-reminder",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(M,{help:t("botDefaults.ownerReminderHelp"),children:t("botDefaults.ownerReminderTitle")})}),(0,e.jsx)(tt,{checked:d,disabled:v,dataAction:"toggle-owner-reminder",title:t("botDefaults.ownerReminderEnabled"),help:t("botDefaults.ownerReminderEnabledHelp"),onChange:u}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.ownerReminderInterval")}),(0,e.jsx)("input",{type:"number",min:1,max:10080,step:1,"data-input":"ownerReminderInterval",value:i,disabled:v,onChange:g=>f(g.currentTarget.value)})]})}),(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:t("botDefaults.ownerReminderStates")}),(0,e.jsx)("div",{className:"bd-owner-reminder-states",children:Be.map(g=>(0,e.jsxs)("label",{children:[(0,e.jsx)("input",{type:"checkbox",checked:l.includes(g.value),disabled:v,onChange:D=>x(g.value,D.currentTarget.checked)}),(0,e.jsx)("span",{children:t(g.labelKey)})]},g.value))})]}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(M,{help:t("botDefaults.ownerReminderTextHelp"),children:t("botDefaults.ownerReminderText")})}),(0,e.jsx)("textarea",{rows:3,maxLength:500,"data-input":"ownerReminderText",value:s,disabled:v,onChange:g=>b(g.currentTarget.value)})]})}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-owner-reminder",disabled:v,onClick:()=>{C()},children:t("botDefaults.ownerReminderSave")}),(0,e.jsx)(J,{status:h,attr:{"data-owner-reminder-status":""}})]})]})}var Mt=512;async function pa(a){let t=await createImageBitmap(a);try{let o=Math.min(t.width,t.height);if(!o)throw new Error("empty image");let d=document.createElement("canvas");d.width=Mt,d.height=Mt;let u=d.getContext("2d");if(!u)throw new Error("canvas unavailable");let i=(t.width-o)/2,f=(t.height-o)/2;return u.drawImage(t,i,f,o,o,0,0,Mt,Mt),d.toDataURL("image/png")}finally{t.close()}}function ga(a){let t=j(),{bot:o,name:d,patchBot:u}=a,i=(0,n.useRef)(null),[f,s]=(0,n.useState)(!1),[b,l]=(0,n.useState)(null),[r,h]=(0,n.useState)(!1),[c,v]=(0,n.useState)(!1),N=(0,n.useRef)(null);function x(D,m){let y=["no_session","session_expired","no_access","unsupported_brand"].includes(D)?t(`botDefaults.avatarWarn.${D}`):m||D;return t("botDefaults.avatarFailed",{error:y})}let C=(0,n.useCallback)(async D=>{s(!0),l({text:`\u23F3 ${t("botDefaults.avatarUploading")}`,ok:!0});try{let m=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/avatar`,{imageBase64:D});if(m.ok&&m.body.ok){let S=typeof m.body.avatarUrl=="string"?m.body.avatarUrl:"";S&&Yt(o.larkAppId,d,S),u(o.larkAppId,y=>({...y})),N.current=null,h(!1),l({text:`\u2713 ${t("botDefaults.avatarOkFeishu")}`,ok:!0})}else{let S=String(m.body?.error??""),y=typeof m.body?.message=="string"?m.body.message:void 0;l({text:`\u2717 ${x(S,y??_(m))}`});let p=S==="no_session"||S==="session_expired";h(p),p||(N.current=null)}}catch(m){l({text:`\u2717 ${t("botDefaults.avatarFailed",{error:L(m)})}`})}finally{s(!1)}},[o.larkAppId,d,u,t]);async function g(D){if(!D||f)return;s(!0);let m;try{m=await pa(D)}catch{s(!1),l({text:`\u2717 ${t("botDefaults.avatarBadImage")}`});return}N.current=m,await C(m)}return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"bd-profile-avatar bd-avatar-editable","data-avatar-control":!0,children:[(0,e.jsxs)("button",{type:"button",className:"bd-avatar-btn","data-action":"edit-bot-avatar",title:t("botDefaults.avatarTitle"),"aria-label":t("botDefaults.avatarTitle"),disabled:f,onClick:()=>i.current?.click(),children:[(0,e.jsx)(ht,{html:gt({name:d,larkAppId:o.larkAppId,dot:"ok"})}),(0,e.jsx)("span",{className:"bd-avatar-edit-badge","aria-hidden":"true",children:f?"\u23F3":"\u270E"})]}),(0,e.jsx)("input",{ref:i,type:"file",accept:"image/*",hidden:!0,"data-input":"botAvatarFile",onChange:D=>{let m=D.currentTarget.files?.[0];D.currentTarget.value="",g(m)}}),c?(0,e.jsx)(Ae,{onClose:()=>v(!1),onSuccess:()=>{h(!1),v(!1),N.current&&C(N.current)}}):null]}),b?(0,e.jsxs)("small",{className:Jt(b,"bd-avatar-status"),"data-avatar-status":!0,children:[b.text,r?(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login-avatar",onClick:()=>v(!0),children:t("feishuLogin.entry")}):null]}):null]})}function ha(a){let t=j(),{bot:o,cli:d,patchBot:u}=a,i=o.botName??o.larkAppId,[f,s]=(0,n.useState)(!1),[b,l]=(0,n.useState)(i),[r,h]=(0,n.useState)(!1),[c,v]=(0,n.useState)(null),[N,x]=(0,n.useState)(!1),[C,g]=(0,n.useState)(!1);(0,n.useEffect)(()=>{f||l(i)},[f,i]);function D(y){s(y),y&&(l(i),v(null),x(!1))}function m(y,p){let E=["no_session","session_expired","no_access","unsupported_brand"].includes(y)?t(`botDefaults.renameWarn.${y}`):p||y;return t("botDefaults.renameLocalOnly",{reason:E})}let S=(0,n.useCallback)(async()=>{let y=b.trim();if(!y){v({text:`\u2717 ${t("botDefaults.renameEmpty")}`});return}h(!0),v({text:`\u23F3 ${t("botDefaults.renaming")}`,ok:!0});try{let p=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/rename`,{name:y});if(p.ok&&p.body.ok){let U=typeof p.body.botName=="string"&&p.body.botName?p.body.botName:y;u(o.larkAppId,E=>({...E,botName:U,larkBotName:p.body.mode==="feishu"?y:E.larkBotName,displayName:p.body.mode==="feishu"?null:y})),D(!1),p.body.mode==="feishu"?(v({text:`\u2713 ${t("botDefaults.renameOkFeishu")}`,ok:!0}),x(!1)):(v({text:`\u26A0 ${m(String(p.body.warning??""),p.body.message)}`}),x(p.body.warning==="no_session"||p.body.warning==="session_expired"))}else v({text:`\u2717 ${t("botDefaults.renameFailed",{error:_(p)})}`})}catch(p){v({text:`\u2717 ${t("botDefaults.renameFailed",{error:L(p)})}`})}finally{h(!1)}},[o.larkAppId,b,u,t]);return(0,e.jsxs)("div",{className:"bd-profile-id",children:[f?(0,e.jsxs)("span",{className:"bd-name-editor","data-name-editor":!0,children:[(0,e.jsx)("input",{type:"text",className:"bd-name-input","data-input":"botRename",maxLength:64,value:b,disabled:r,autoFocus:!0,onChange:y=>l(y.currentTarget.value),onKeyDown:y=>{y.key==="Enter"?(y.preventDefault(),S()):y.key==="Escape"&&D(!1)}}),(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-bot-name",disabled:r,onClick:()=>{S()},children:t("botDefaults.renameSave")}),(0,e.jsx)("button",{type:"button","data-action":"cancel-bot-name",disabled:r,onClick:()=>D(!1),children:t("botDefaults.renameCancel")})]}):(0,e.jsxs)("div",{className:"bd-profile-title-row","data-name-row":!0,children:[(0,e.jsxs)("div",{className:"bd-profile-title-content",children:[(0,e.jsx)("strong",{"data-bot-name":!0,children:i}),d?(0,e.jsx)("span",{className:"mate-role bd-profile-cli-tag",children:d}):null,a.meta?(0,e.jsx)("span",{className:"bd-profile-meta bd-meta",children:a.meta}):null]}),(0,e.jsx)("button",{type:"button",className:"bd-name-edit","data-action":"edit-bot-name",title:t("botDefaults.renameTitle"),"aria-label":t("botDefaults.renameTitle"),onClick:()=>D(!0),children:(0,e.jsx)("svg",{viewBox:"0 0 16 16",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,e.jsx)("path",{d:"M11.5 2.5l2 2L6 12l-2.5.5L4 10z"})})})]}),(0,e.jsxs)("div",{className:"bd-profile-appid-row",children:[(0,e.jsx)("code",{children:o.larkAppId}),Ot(o.larkAppId,o.brand)?(0,e.jsxs)("a",{className:"bd-console-link",href:Ot(o.larkAppId,o.brand),target:"_blank",rel:"noopener noreferrer",children:[t("botDefaults.openConsole"),(0,e.jsx)("svg",{viewBox:"0 0 24 24",width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,e.jsx)("path",{d:"M7 17 17 7M9 7h8v8"})})]}):null]}),(0,e.jsx)("small",{className:Jt(c,"bd-name-status"),"data-name-status":!0,children:c?.text??""}),(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login",hidden:!N,onClick:()=>g(!0),children:t("feishuLogin.entry")}),C?(0,e.jsx)(Ae,{onClose:()=>g(!1),onSuccess:()=>{x(!1),g(!1),S()}}):null]})}function Ae(a){let t=j(),{onClose:o,onSuccess:d}=a,u=(0,n.useRef)(null),i=(0,n.useRef)(null),[f,s]=(0,n.useState)(t("feishuLogin.starting")),[b,l]=(0,n.useState)(null),[r,h]=(0,n.useState)(!1),c=(0,n.useCallback)(()=>{u.current!==null&&(window.clearInterval(u.current),u.current=null)},[]),v=(0,n.useCallback)(C=>C?C.status==="awaiting_scan"&&C.qrDataUrl?(l(C.qrDataUrl),s(C.message||t("feishuLogin.scanHint")),h(!1),"active"):C.status==="starting"?(s(C.message||t("feishuLogin.starting")),l(null),h(!1),"active"):C.status==="success"?(c(),l(null),h(!1),s(t("feishuLogin.success")),i.current=window.setTimeout(()=>d(),900),"done"):(c(),l(null),s(t("feishuLogin.failed",{reason:C.message||C.reason||""})),h(!0),"done"):"active",[d,c,t]),N=(0,n.useCallback)(async()=>{try{let g=await(await fetch("/api/feishu-login/status")).json().catch(()=>({}));v(g.login)}catch{}},[v]),x=(0,n.useCallback)(async()=>{c(),s(t("feishuLogin.starting")),l(null),h(!1);let C="active";try{let D=await(await fetch("/api/feishu-login/start",{method:"POST"})).json().catch(()=>({}));C=v(D.login)}catch(g){s(t("feishuLogin.failed",{reason:L(g)})),h(!0);return}C==="active"&&u.current===null&&(u.current=window.setInterval(()=>{N()},1500))},[N,v,c,t]);return(0,n.useEffect)(()=>(x(),()=>{c(),i.current!==null&&window.clearTimeout(i.current)}),[x,c]),typeof document>"u"?null:(0,Pe.createPortal)((0,e.jsx)("div",{className:"feishu-login-overlay",onClick:C=>{C.currentTarget===C.target&&o()},children:(0,e.jsxs)("div",{className:"feishu-login-modal",role:"dialog","aria-modal":"true",children:[(0,e.jsx)("button",{type:"button",className:"feishu-login-close","data-close":!0,"aria-label":t("feishuLogin.close"),onClick:o,children:"x"}),(0,e.jsx)("h3",{className:"feishu-login-title",children:t("feishuLogin.title")}),(0,e.jsx)("p",{className:"feishu-login-hint","data-hint":!0,children:f}),(0,e.jsx)("div",{className:"feishu-login-qr","data-qr":!0,children:b?(0,e.jsx)("img",{className:"qr-image",src:b,alt:t("feishuLogin.qrAlt")}):null}),(0,e.jsx)("div",{className:"feishu-login-actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-retry":!0,hidden:!r,onClick:()=>{x()},children:t("feishuLogin.retry")})})]})}),document.body)}function ya(a){let t=j(),{bot:o,cliState:d,patchBot:u}=a,i=Ft(o,a.sessionFallback),f=JSON.stringify([o.cliRuntime??null,o.cliPathOverride??null]),[s,b]=(0,n.useState)(i),[l,r]=(0,n.useState)(!1),[h,c]=(0,n.useState)(typeof o.model=="string"?o.model:""),[v,N]=(0,n.useState)(o.reasoningEffort??""),[x,C]=(0,n.useState)(_t(o.turnTimeoutMs)),[g,D]=(0,n.useState)(!1),[m,S]=(0,n.useState)(null),[y,p]=(0,n.useState)(()=>Gt(o)),[U,E]=(0,n.useState)(!1),[H,w]=(0,n.useState)(null),[Z,q]=(0,n.useState)(null),[W,T]=(0,n.useState)(!1),[F,Y]=(0,n.useState)(Ne(o)),[G,B]=(0,n.useState)(null),[k,I]=(0,n.useState)(!1);(0,n.useEffect)(()=>{b(Ft(o,a.sessionFallback)),r(!1),c(typeof o.model=="string"?o.model:""),N(o.reasoningEffort??""),C(_t(o.turnTimeoutMs)),D(!1),S(null),p(Gt(o)),E(!1),Y(Ne(o))},[o.agentSelectionKey,o.cliId,o.larkAppId,o.model,o.reasoningEffort,o.turnTimeoutMs,f,o.wrapperCli,o.skillInjection,o.skillInjectionDefault,a.sessionFallback]);let P=Ut(d.options,s),A=de(P,d),O=P?.gateway==="ttadk"&&P.acceptsModel===!1,V=O?t("botOnboarding.modelTtadkCocoPlaceholder"):P?.gateway==="ttadk"?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",d.ttadkModelDefault):t("botDefaults.agentModelPlaceholder");function ot(R){let Q=s;b(R),r(!0),R!==Q&&(R!=="codex"||Q!=="codex")&&(p(Gt({cliRuntime:null,cliPathOverride:null})),E(!0),w(null));let lt=Ut(d.options,R),$=lt?.gateway==="ttadk",st=$&&lt.acceptsModel!==!1;c($&&!st?"":st?it=>it.trim()?it:d.ttadkModelDefault:it=>it.trim()===d.ttadkModelDefault?"":it)}function X(R){p(Q=>({...Q,mode:R})),E(!0),w(null),q(null)}function z(R){p(Q=>({...Q,...R})),E(!0),w(null),q(null)}async function nt(){q(null),w(null);let R;if(U&&(R=null),U&&s==="codex"&&y.mode==="custom"){let lt=y.id.trim(),$=y.executable.trim(),st=y.displayName.trim(),it=y.packageName.trim();if(!lt||!$){let ut=t("botDefaults.runtimeRequired");q({text:ut}),w({text:ut});return}if(y.updateProvider==="npm"&&!it){let ut=t("botDefaults.runtimePackageRequired");q({text:ut}),w({text:ut});return}R={id:lt,...st?{displayName:st}:{},executable:$,update:y.updateProvider==="npm"?{provider:"npm",packageName:it}:{provider:y.updateProvider}}}let Q;if(s==="dsh"&&g){let lt=va(x);if(lt==="invalid"){let $=t("botDefaults.agentTurnTimeoutInvalid");S($),q({text:`\u2717 ${$}`});return}S(null),Q=lt}T(!0);try{let lt={cliId:s,model:h,reasoningEffort:s==="grok"||s==="codex"||s==="codex-app"||s.endsWith("-codex")?v:"",...s==="dsh"&&Q!==void 0?{turnTimeoutMs:Q}:{},...U?{cliRuntime:R}:{}},$=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,lt);if($.ok&&$.body.ok){let st=jt($.body),it=st.closed,ut=st.residual,ct=st.failed,Nt=[it>0?t("botDefaults.agentClosedCount",{count:it}):"",ut>0?t("botDefaults.agentClosedResidual",{count:ut}):"",ct>0?t("botDefaults.agentCloseFailed",{count:ct}):"",Pt(st,t)].filter(Boolean).join(" \xB7 "),He=st.hasResidual||ct>0;if(q($.body.availabilityWarning?{text:`\u26A0\uFE0F ${$.body.availabilityWarning}${Nt?` \xB7 ${Nt}`:""}`}:He?{text:`\u26A0\uFE0F ${Nt}`}:{text:`\u2713 ${Nt||t("botDefaults.agentSaved")}`,ok:!0}),u(o.larkAppId,{cliId:$.body.cliId,cliRuntime:$.body.cliRuntime===void 0?U?R??null:o.cliRuntime??null:$.body.cliRuntime,cliPathOverride:$.body.cliPathOverride===void 0?U?null:o.cliPathOverride??null:$.body.cliPathOverride,wrapperCli:$.body.wrapperCli??null,model:$.body.model??"",reasoningEffort:$.body.reasoningEffort??void 0,turnTimeoutMs:typeof $.body.turnTimeoutMs=="number"?$.body.turnTimeoutMs:void 0,agentSelectionKey:$.body.selectionKey??s}),C(_t(typeof $.body.turnTimeoutMs=="number"?$.body.turnTimeoutMs:void 0)),D(!1),S(null),E(!1),R){let pt=$.body.runtimeProbe;pt&&typeof pt.version=="string"?w({text:t("botDefaults.runtimeProbeOk",{version:pt.version,provider:typeof pt.updateProvider=="string"?pt.updateProvider:y.updateProvider}),ok:!0}):w({text:t("botDefaults.runtimeProbeMissing")})}}else{let st=De($.body),it=jt($.body),ct=`\u2717 ${st?[t("botDefaults.agentSwitchAborted",{closed:it.closed,failed:it.failed}),Pt(it,t)].filter(Boolean).join(" \xB7 "):typeof $.body?.message=="string"&&$.body.message?$.body.message:_($)}`;q({text:ct}),s==="codex"&&y.mode==="custom"&&w({text:ct})}}catch(lt){let $=`\u2717 ${L(lt)}`;q({text:$}),s==="codex"&&y.mode==="custom"&&w({text:$})}finally{T(!1)}}async function at(){if(o.cliId==="riff")return{ok:!0,hadProblem:!1,note:""};try{let R=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,{cliId:"riff",model:""}),Q=jt(R.body);if(R.ok&&R.body.ok){u(o.larkAppId,{cliId:R.body.cliId,cliRuntime:R.body.cliRuntime??null,wrapperCli:R.body.wrapperCli??null,model:R.body.model??"",agentSelectionKey:R.body.selectionKey??"riff"});let st=[Q.residual>0?t("botDefaults.agentClosedResidual",{count:Q.residual}):"",Pt(Q,t)].filter(Boolean).join(" \xB7 ");return{ok:!0,hadProblem:Q.hasResidual,note:st}}return{ok:!1,hadProblem:!0,note:De(R.body)?[t("botDefaults.riffAgentSwitchAborted",{closed:Q.closed,failed:Q.failed}),Pt(Q,t)].filter(Boolean).join(" \xB7 "):_(R)}}catch(R){return{ok:!1,hadProblem:!0,note:L(R)}}}async function rt(R){Y(R),B(null),I(!0);try{let Q=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/skill-injection`,{skillInjection:R});Q.ok&&Q.body.ok?(B({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}),u(o.larkAppId,{skillInjection:Q.body.skillInjection??null})):B({text:`\u2717 ${_(Q)}`})}catch(Q){B({text:`\u2717 ${L(Q)}`})}finally{I(!1)}}let Vt=o.skillInjectionSupport==="dynamic"?"dynamic":o.skillInjectionSupport==="global"?"global":"none",mt=s==="riff",St=s==="codex"||s==="codex-app"||s.endsWith("-codex"),Ee=St||s==="grok",Fe=s==="dsh",At=(0,n.useMemo)(()=>ye(s==="grok"?"grok":St?"codex":void 0,h),[s,St,h]);(0,n.useEffect)(()=>{v&&!At.includes(v)&&N("")},[v,At]);let Qt=s==="codex"&&(!o.wrapperCli||l),zt=Qt&&y.mode!=="official",Ue=[...d.options].sort((R,Q)=>R.label.localeCompare(Q.label,"en",{sensitivity:"base"})).map(R=>({value:R.id,label:R.available===!1&&!(R.id==="codex"&&zt)?t("botDefaults.agentMissingOption",{label:R.label,command:R.command??R.id}):`${R.label}\uFF08${R.id}\uFF09`})),Ge=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamic")}],je=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamicUnsupported"),disabled:!0},{value:"prompt",label:t("botDefaults.skillInjectionPrompt")},{value:"global",label:t("botDefaults.skillInjectionGlobal")},{value:"off",label:t("botDefaults.skillInjectionOff")}],_e=[{value:"auto",label:t("botDefaults.runtimeProviderAuto")},{value:"self",label:t("botDefaults.runtimeProviderSelf")},{value:"npm",label:t("botDefaults.runtimeProviderNpm")},{value:"none",label:t("botDefaults.runtimeProviderNone")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionAgent")}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:t("botDefaults.agentCli")}),(0,e.jsx)(et,{dataInput:"agentCliId",ariaLabel:t("botDefaults.agentCli"),value:s,disabled:W,options:Ue,searchable:!0,onChange:ot}),P?.available===!1&&!zt?(0,e.jsx)("small",{className:"hint-warn",children:t("botDefaults.agentMissingHint",{command:P.command??s})}):null]})}),Qt?(0,e.jsxs)("div",{className:"bd-codex-runtime","data-codex-runtime":"",children:[(0,e.jsx)("div",{className:"bd-runtime-heading",children:(0,e.jsx)(M,{help:t("botDefaults.runtimeHelp"),children:t("botDefaults.runtimeTitle")})}),(0,e.jsxs)("div",{className:"bd-runtime-mode",role:"group","aria-label":t("botDefaults.runtimeTitle"),children:[(0,e.jsx)("button",{type:"button","data-action":"runtime-official","aria-pressed":y.mode==="official",disabled:W,onClick:()=>X("official"),children:t("botDefaults.runtimeOfficial")}),(0,e.jsx)("button",{type:"button","data-action":"runtime-custom","aria-pressed":y.mode==="custom",disabled:W,onClick:()=>X("custom"),children:t("botDefaults.runtimeCustom")})]}),(0,e.jsx)("input",{type:"hidden","data-input":"agentRuntimeMode",value:y.mode,readOnly:!0}),(0,e.jsx)("p",{className:"bd-runtime-note",children:t(y.mode==="official"?"botDefaults.runtimeOfficialNote":y.mode==="legacy"?"botDefaults.runtimeLegacyNote":"botDefaults.runtimeCustomNote")}),y.mode==="legacy"?(0,e.jsx)("div",{className:"bd-runtime-fields","data-runtime-legacy":"",children:(0,e.jsxs)("label",{className:"bd-runtime-wide",children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeLegacyPath")}),(0,e.jsx)("input",{type:"text",value:y.legacyPath,readOnly:!0,"aria-readonly":"true","data-input":"agentRuntimeLegacyPath"})]})}):null,y.mode==="custom"?(0,e.jsxs)("div",{className:"bd-runtime-fields",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.runtimeIdHelp"),children:t("botDefaults.runtimeId")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeId",value:y.id,disabled:W,autoComplete:"off",onChange:R=>z({id:R.currentTarget.value})})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeDisplayName")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeDisplayName",placeholder:t("botDefaults.runtimeDisplayNamePlaceholder"),value:y.displayName,disabled:W,autoComplete:"off",onChange:R=>z({displayName:R.currentTarget.value})})]}),(0,e.jsxs)("label",{className:"bd-runtime-wide",children:[(0,e.jsx)(M,{help:t("botDefaults.runtimeExecutableHelp"),children:t("botDefaults.runtimeExecutable")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeExecutable",value:y.executable,disabled:W,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:R=>z({executable:R.currentTarget.value})})]}),(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeUpdateProvider")}),(0,e.jsx)(et,{dataInput:"agentRuntimeUpdateProvider",ariaLabel:t("botDefaults.runtimeUpdateProvider"),value:y.updateProvider,disabled:W,options:_e,onChange:R=>z({updateProvider:R})})]}),y.updateProvider==="npm"?(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.runtimePackageHelp"),children:t("botDefaults.runtimePackageName")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimePackageName",value:y.packageName,disabled:W,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:R=>z({packageName:R.currentTarget.value})})]}):null]}):null,(0,e.jsx)(J,{status:H,attr:{"data-runtime-status":""}})]}):null,!mt&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.agentHelp"),children:t("botDefaults.agentModel")}),(0,e.jsx)("input",{type:"text","data-input":"agentModel",list:`agent-model-suggestions-${o.larkAppId}`,placeholder:V,value:h,disabled:W||O,onChange:R=>c(R.currentTarget.value)}),(0,e.jsx)("datalist",{id:`agent-model-suggestions-${o.larkAppId}`,children:A.map(R=>(0,e.jsx)("option",{value:R},R))})]})}),Fe&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.agentTurnTimeoutHelp"),children:t("botDefaults.agentTurnTimeout")}),(0,e.jsx)("input",{type:"number",min:0,step:"any",inputMode:"decimal","data-input":"agentTurnTimeout",placeholder:t("botDefaults.agentTurnTimeoutPlaceholder"),value:x,disabled:W,onChange:R=>{C(R.currentTarget.value),D(!0),S(null)}}),m?(0,e.jsx)("small",{className:"hint-warn","data-turn-timeout-error":"",children:m}):null]})}),Ee&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.agentReasoningEffortHelp"),children:t("botDefaults.agentReasoningEffort")}),(0,e.jsx)(et,{dataInput:"agentReasoningEffort",ariaLabel:t("botDefaults.agentReasoningEffort"),value:v,disabled:W,options:[{value:"",label:t(s==="grok"?"botDefaults.agentReasoningEffortDefaultGrok":St?"botDefaults.agentReasoningEffortDefaultCodex":"botDefaults.agentReasoningEffortDefault")},...At.map(R=>({value:R,label:t(`botDefaults.agentReasoningEffort${R==="xhigh"?"Xhigh":R[0].toUpperCase()+R.slice(1)}`)}))],onChange:R=>N(R)})]})}),mt&&(0,e.jsx)(Ja,{bot:o,patchBot:u,persistCliSelection:at}),!mt&&Vt==="dynamic"?(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.skillInjectionHelpDynamic"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(et,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:"dynamic",disabled:!0,options:Ge,onChange:()=>{}})]})}):!mt&&Vt==="global"?(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.skillInjectionHelp"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(et,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:F,disabled:k,options:je,onChange:R=>{rt(R)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:G,attr:{"data-skill-injection-status":""}})})]}):null,!mt&&(0,e.jsxs)("div",{className:"actions bd-section-actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-agent",disabled:W,onClick:()=>{nt()},children:t("botDefaults.agentSave")}),(0,e.jsx)(J,{status:Z,attr:{"data-agent-status":""}})]})]})}var Oe=2147483647;function _t(a){if(typeof a!="number"||!Number.isInteger(a)||a<=0||a>Oe)return"";let t=a/6e4;return Number.isInteger(t)?String(t):String(Number(t.toFixed(10)))}function va(a){let t=a.trim();if(!t)return"";let o=Number(t);if(!Number.isFinite(o)||o<=0)return"invalid";let d=Math.round(o*6e4);return d<=0||d>Oe?"invalid":d}function Ne(a){let t=a.skillInjection==="global"||a.skillInjection==="prompt"||a.skillInjection==="off"?a.skillInjection:"",o=a.skillInjectionDefault==="global"||a.skillInjectionDefault==="off"?a.skillInjectionDefault:"prompt";return t||o}function Da(a){let t=j(),{bot:o,patchBot:d}=a,u=Te(o),[i,f]=(0,n.useState)(u.mode),[s,b]=(0,n.useState)(u.workingDir),[l,r]=(0,n.useState)(o.defaultWorkingDirAutoWorktree===!0),[h,c]=(0,n.useState)(null),[v,N]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let g=Te(o);f(g.mode),b(g.workingDir),r(o.defaultWorkingDirAutoWorktree===!0)},[o.defaultOncall?.enabled,o.defaultOncall?.workingDir,o.defaultWorkingDir,o.defaultWorkingDirAutoWorktree]);async function x(){c(null);let g=s.trim();if(i!=="off"&&!g){c({text:t("botDefaults.required")});return}let D=i==="default"&&l;N(!0);try{let m=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/working-dir-mode`,{mode:i,workingDir:g,autoWorktree:D});if(m.ok&&m.body.ok){let S=m.body.resolvedPath?` \u2192 ${m.body.resolvedPath}`:"";c({text:`\u2713 ${t("botDefaults.workingDirSaved")}${S}`,ok:!0}),d(o.larkAppId,{defaultOncall:m.body.defaultOncall??o.defaultOncall,defaultWorkingDir:m.body.defaultWorkingDir??null,defaultWorkingDirAutoWorktree:m.body.defaultWorkingDirAutoWorktree===!0})}else c({text:`\u2717 ${_(m)}`})}catch(m){c({text:`\u2717 ${L(m)}`})}finally{N(!1)}}let C=[{value:"off",label:t("botDefaults.workingDirModeOff")},{value:"default",label:t("botDefaults.workingDirModeDefault")},{value:"oncall",label:t("botDefaults.workingDirModeOncall")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionWorkingDir")}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.workingDirModeHelp"),children:t("botDefaults.workingDirMode")}),(0,e.jsx)(et,{dataInput:"workingDirMode",ariaLabel:t("botDefaults.workingDirMode"),value:i,disabled:v,options:C,onChange:g=>f(g)})]})}),(0,e.jsx)("div",{className:"bd-row","data-wd-dir-row":!0,hidden:i==="off",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.workingDirField")}),(0,e.jsx)("input",{type:"text","data-input":"workingDir",placeholder:"e.g. /root/iserver/botmux",value:s,disabled:v,onChange:g=>b(g.currentTarget.value)})]})}),(0,e.jsxs)("label",{className:"toggle-row","data-wd-worktree-row":!0,hidden:i!=="default",children:[(0,e.jsx)("input",{type:"checkbox","data-input":"autoWorktree",checked:l,disabled:v,onChange:g=>r(g.currentTarget.checked)}),(0,e.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,e.jsx)("span",{className:"toggle-tx",children:(0,e.jsx)("strong",{children:(0,e.jsx)(M,{help:t("botDefaults.autoWorktreeHelp"),children:t("botDefaults.autoWorktree")})})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-working-dir",disabled:v,onClick:()=>{x()},children:t("botDefaults.save")}),(0,e.jsx)(J,{status:h,attr:{"data-status":""}})]}),(0,e.jsx)(ka,{bot:o,putCardPref:a.putCardPref})]})}function Te(a){let t=a.defaultOncall??{enabled:!1,workingDir:""};return{mode:t.enabled?"oncall":a.defaultWorkingDir?"default":"off",workingDir:a.defaultWorkingDir||t.workingDir||""}}function ka(a){let t=j(),{bot:o,putCardPref:d}=a,[u,i]=(0,n.useState)(o.autoStartOnGroupJoin===!0),[f,s]=(0,n.useState)(o.autoStartOnNewTopic===!0),[b,l]=(0,n.useState)(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:""),[r,h]=(0,n.useState)(null),[c,v]=(0,n.useState)(null);(0,n.useEffect)(()=>{i(o.autoStartOnGroupJoin===!0),s(o.autoStartOnNewTopic===!0),l(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:"")},[o.autoStartOnGroupJoin,o.autoStartOnGroupJoinPrompt,o.autoStartOnNewTopic]);async function N(x,C){v(C),h(null);try{let g=await d(x);h(g.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${_(g)}`})}catch(g){h({text:`\u2717 ${L(g)}`})}finally{v(null)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:t("botDefaults.sectionAutoStart")}),(0,e.jsx)(tt,{checked:u,disabled:c==="join",dataAction:"toggle-auto-join",title:t("botDefaults.autoStartJoin"),help:t("botDefaults.autoStartJoinHelp"),onChange:x=>{i(x),N({autoStartOnGroupJoin:x},"join")}}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.autoStartJoinPrompt")}),(0,e.jsx)("textarea",{"data-input":"autoJoinPrompt",rows:3,placeholder:t("botDefaults.autoStartJoinPromptPlaceholder"),value:b,onChange:x=>l(x.currentTarget.value)})]})}),(0,e.jsx)(tt,{checked:f,disabled:c==="topic",dataAction:"toggle-auto-topic",title:t("botDefaults.autoStartTopic"),help:t("botDefaults.autoStartTopicHelp"),onChange:x=>{s(x),N({autoStartOnNewTopic:x},"topic")}}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-auto-join-prompt",disabled:c==="prompt",onClick:()=>{N({autoStartOnGroupJoinPrompt:b},"prompt")},children:t("botDefaults.autoStartJoinPromptSave")}),(0,e.jsx)(J,{status:r,attr:{"data-auto-start-status":""}})]})]})}function Ca(a){let t=j(),{bot:o,patchBot:d}=a,[u,i]=(0,n.useState)(o.sandbox===!0),[f,s]=(0,n.useState)(null),[b,l]=(0,n.useState)(!1);(0,n.useEffect)(()=>i(o.sandbox===!0),[o.sandbox]);async function r(c){i(c),s(null),l(!0);try{let v=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox`,{enabled:c});v.ok&&v.body.ok?(s({text:`\u2713 ${t("botDefaults.sandboxSaved")}`,ok:!0}),d(o.larkAppId,{sandbox:v.body.sandbox===!0})):(s({text:`\u2717 ${_(v)}`}),i(!c))}catch(v){s({text:`\u2717 ${L(v)}`}),i(!c)}finally{l(!1)}}let h=o.readIsolationSupported===!0;return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSandbox")}),(0,e.jsx)(tt,{checked:u,disabled:b,dataAction:"toggle-sandbox",title:t("botDefaults.sandboxToggle"),help:t("botDefaults.sandboxHelp"),onChange:c=>{r(c)}}),(0,e.jsx)("p",{className:"bd-section-note","data-read-iso-capability":h?"yes":"no",children:h?`\uFF0B ${t("botDefaults.sandboxReadIsoOn")}`:t("botDefaults.sandboxReadIsoOff")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:f,attr:{"data-sandbox-status":""}})})]})}var xe={readWrite:0,readOnly:1,deny:2};function Re(a,t,o){let d=r=>r==="~"||r.startsWith("~/")?o.replace(/\/+$/,"")+r.slice(1):r,u=r=>d(r).replace(/\/+$/,"")||"/",i=u(t),f=(r,h)=>{let c=u(r),v=u(h);return c===v||v.startsWith(c==="/"?"/":c+"/")},s=r=>u(r)==="/"?0:u(r).split("/").filter(Boolean).length,b,l=(r,h)=>{if(!f(h,i))return;let c=s(h);(!b||c>b.ruleDepth||c===b.ruleDepth&&xe[r]>xe[b.access])&&(b={access:r,ruleDepth:c,rule:h})};for(let r of a.readWrite)l("readWrite",r);for(let r of a.readOnly)l("readOnly",r);for(let r of a.deny)l("deny",r);return b?{access:b.access,rule:b.rule}:{access:"none"}}function $e(){return{readWrite:[],readOnly:[],deny:[]}}function Ct(a){return a?{readWrite:[...a.readWrite??[]],readOnly:[...a.readOnly??[]],deny:[...a.deny??[]]}:$e()}function Sa(a,t){let o=d=>[...d].sort().join(`
3
+ `);return o(a.readWrite)===o(t.readWrite)&&o(a.readOnly)===o(t.readOnly)&&o(a.deny)===o(t.deny)}function Ht(a){let t=[];for(let o of a.readWrite)t.push(`rw ${o}`);for(let o of a.readOnly)t.push(`ro ${o}`);for(let o of a.deny)t.push(`deny ${o}`);return t.join(`
4
+ `)}function Na(a){let t=$e();for(let o of a.split(`
5
+ `)){let d=o.trim();if(!d||d.startsWith("#"))continue;let u=/^(\S+)\s+(.+)$/.exec(d);if(!u)continue;let i=u[1].toLowerCase(),f=u[2].trim();i==="rw"||i==="readwrite"||i==="rw:"?t.readWrite.push(f):i==="ro"||i==="readonly"||i==="ro:"?t.readOnly.push(f):(i==="deny"||i==="-"||i==="deny:")&&t.deny.push(f)}return t}function Ta(a){let t=j(),{bot:o,patchBot:d}=a,[u,i]=(0,n.useState)(()=>Ct(o.sandboxPaths)),[f,s]=(0,n.useState)(()=>Ht(Ct(o.sandboxPaths))),[b,l]=(0,n.useState)(!1),[r,h]=(0,n.useState)(null),[c,v]=(0,n.useState)(!1),[N,x]=(0,n.useState)(""),[C,g]=(0,n.useState)({}),[D,m]=(0,n.useState)(new Set),[S,y]=(0,n.useState)([]),[p,U]=(0,n.useState)("~"),E=(0,n.useMemo)(()=>Ct(o.sandboxPaths),[o.sandboxPaths]);(0,n.useEffect)(()=>{i(Ct(o.sandboxPaths)),s(Ht(Ct(o.sandboxPaths)))},[o.sandboxPaths]);let H=!Sa(u,E),w=(0,n.useCallback)(async B=>{try{let k=B?`?path=${encodeURIComponent(B)}`:"",P=await(await fetch(`/api/fs/list${k}`)).json();if(!P.ok)return;B?g(A=>({...A,[B]:P.entries.map(O=>({name:O.name,path:O.path}))})):(y(P.entries.map(A=>({name:A.name,path:A.path}))),typeof P.home=="string"&&P.home.startsWith("/")&&U(P.home))}catch{}},[]);(0,n.useEffect)(()=>{!b&&S.length===0&&w("")},[b,S.length,w]);let Z=(0,n.useCallback)(B=>{let k=B.replace(/\/+$/,"")||"/";if(u.readWrite.some(I=>(I.replace(/\/+$/,"")||"/")===k))return"readWrite";if(u.readOnly.some(I=>(I.replace(/\/+$/,"")||"/")===k))return"readOnly";if(u.deny.some(I=>(I.replace(/\/+$/,"")||"/")===k))return"deny"},[u]),q=(0,n.useCallback)(B=>{h(null);let k=B.replace(/\/+$/,"")||"/",I=Z(B),P=I===void 0?"readWrite":I==="readWrite"?"readOnly":I==="readOnly"?"deny":void 0;i(A=>{let O=ot=>ot.filter(X=>(X.replace(/\/+$/,"")||"/")!==k),V={readWrite:O(A.readWrite),readOnly:O(A.readOnly),deny:O(A.deny)};return P&&V[P].push(B),s(Ht(V)),V})},[Z]);function W(B){s(B),i(Na(B)),h(null)}async function T(){v(!0),h(null);try{let B=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox-paths`,u);B.ok&&B.body.ok?(h({text:`\u2713 ${t("botDefaults.sbxPathsSaved")}`,ok:!0}),d(o.larkAppId,{sandboxPaths:B.body.sandboxPaths??{readWrite:[],readOnly:[],deny:[]}})):h({text:`\u2717 ${_(B)}`})}catch(B){h({text:`\u2717 ${L(B)}`})}finally{v(!1)}}let F=B=>t(B==="readWrite"?"botDefaults.sbxRw":B==="readOnly"?"botDefaults.sbxRo":B==="deny"?"botDefaults.sbxDeny":"botDefaults.sbxNone");function Y(B){let{name:k,path:I,depth:P}=B,A=D.has(I),O=Z(I),V=Re(u,I,p),ot=C[I];return(0,e.jsxs)("div",{className:"bd-sbx-node",children:[(0,e.jsxs)("div",{className:"bd-sbx-row",style:{paddingLeft:P*16},children:[(0,e.jsx)("span",{className:"bd-sbx-twisty",onClick:()=>{m(X=>{let z=new Set(X);return z.has(I)?z.delete(I):z.add(I),z}),ot||w(I)},children:A?"\u25BE":"\u25B8"}),(0,e.jsx)("span",{className:"bd-sbx-name",title:I,children:k}),(0,e.jsx)("button",{type:"button",className:`bd-sbx-state bd-sbx-state-${O??"inherit"}`,"data-action":"cycle-sandbox-path","data-path":I,title:O?void 0:`${t("botDefaults.sbxInherit")}: ${F(V.access)}`,onClick:()=>q(I),children:O?F(O):`\u21B3 ${F(V.access)}`})]}),A&&(0,e.jsxs)("div",{className:"bd-sbx-kids",children:[ot?.map(X=>(0,e.jsx)(Y,{name:X.name,path:X.path,depth:P+1},X.path)),ot&&ot.length===0&&(0,e.jsx)("div",{className:"bd-sbx-empty",style:{paddingLeft:(P+1)*16+20},children:t("botDefaults.sbxNoSubdirs")})]})]})}let G=N.trim()?Re(u,N.trim(),p):null;return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSandboxPaths")}),(0,e.jsx)("p",{className:"bd-section-note",children:t("botDefaults.sbxPathsHelp")}),(0,e.jsx)("div",{className:"actions",style:{gap:8,flexWrap:"wrap"},children:(0,e.jsx)("button",{type:"button",className:"bd-btn",onClick:()=>l(B=>!B),children:t(b?"botDefaults.sbxPathsTreeMode":"botDefaults.sbxPathsTextMode")})}),b?(0,e.jsx)("textarea",{className:"bd-sbx-text","data-field":"sandbox-paths-text",rows:8,value:f,spellCheck:!1,placeholder:`rw ~/my-data
6
+ ro ~/reference-repos
7
+ deny ~/my-data/secrets`,onChange:B=>W(B.target.value)}):(0,e.jsx)("div",{className:"bd-sbx-tree","data-field":"sandbox-paths-tree",children:S.map(B=>(0,e.jsx)(Y,{name:B.name,path:B.path,depth:0},B.path))}),(0,e.jsxs)("div",{className:"bd-sbx-tester",children:[(0,e.jsx)("input",{className:"bd-sbx-test-input","data-field":"sandbox-path-test",placeholder:t("botDefaults.sbxTestPlaceholder"),value:N,onChange:B=>x(B.target.value)}),G&&(0,e.jsxs)("span",{className:`bd-sbx-test-out bd-sbx-state-${G.access}`,"data-test-access":G.access,children:[F(G.access),G.rule?` \u2190 ${G.rule}`:""]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"bd-btn bd-btn-primary","data-action":"save-sandbox-paths",disabled:c||!H,onClick:()=>{T()},children:t("botDefaults.sbxPathsSave")}),(0,e.jsx)(J,{status:r,attr:{"data-sandbox-paths-status":""}})]})]})}var xa=[{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 Ra(a){let t=j(),{bot:o,patchBot:d}=a,[u,i]=(0,n.useState)(typeof o.backendType=="string"?o.backendType:""),[f,s]=(0,n.useState)(null),[b,l]=(0,n.useState)(!1);(0,n.useEffect)(()=>i(typeof o.backendType=="string"?o.backendType:""),[o.backendType]);let r=(0,n.useMemo)(()=>xa.map(c=>({value:c.value,label:t(c.labelKey)})),[t]);async function h(c){let v=u;i(c),s(null),l(!0);try{let N=await K("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/backend-type`,{backendType:c});N.ok&&N.body.ok?(s({text:`\u2713 ${t("botDefaults.backendSaved")}`,ok:!0}),d(o.larkAppId,{backendType:typeof N.body.backendType=="string"?N.body.backendType:null})):(s({text:`\u2717 ${_(N)}`}),i(v))}catch(N){s({text:`\u2717 ${L(N)}`}),i(v)}finally{l(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionBackend")}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.backendHelp"),children:t("botDefaults.backendLabel")}),(0,e.jsx)(et,{dataInput:"backendType",ariaLabel:t("botDefaults.backendLabel"),value:u,disabled:b,options:r,onChange:c=>{h(c)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:f,attr:{"data-backend-status":""}})})]})]})}function wa(a){let t=j(),{bot:o,patchBot:d}=a,[u,i]=(0,n.useState)(typeof o.teamRole=="string"),[f,s]=(0,n.useState)(typeof o.teamRole=="string"?o.teamRole:""),[b,l]=(0,n.useState)("every"),[r,h]=(0,n.useState)(null),[c,v]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let C=!0,g=`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`;return typeof o.teamRole=="string"?(i(!0),s(o.teamRole),()=>{C=!1}):(h(null),i(!1),s(""),(async()=>{try{let D=await fetch(g),m=await D.json().catch(()=>({}));if(!C)return;if(D.ok&&m.ok){let S=m.role??"";s(S),l(m.injectMode==="once"?"once":"every"),i(!0),d(o.larkAppId,{teamRole:S})}else h({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${m.error??D.status}`})}catch(D){C&&h({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${L(D)}`})}})(),()=>{C=!1})},[o.larkAppId,o.teamRole,d,t]),(0,n.useEffect)(()=>{let C=!0;return typeof o.teamRole!="string"?()=>{C=!1}:((async()=>{try{let g=await fetch(`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`),D=await g.json().catch(()=>({}));C&&g.ok&&D.ok&&l(D.injectMode==="once"?"once":"every")}catch{}})(),()=>{C=!1})},[o.larkAppId]);async function N(C,g,D=b){if(u){h(null),v(!0);try{let m=await K("PUT",`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`,{role:C,injectMode:D});if(m.ok&&m.body.ok){let S=C.trim();s(S),(m.body.injectMode==="once"||m.body.injectMode==="every")&&l(m.body.injectMode),d(o.larkAppId,{teamRole:S}),h({text:`\u2713 ${t(g?"botDefaults.roleDeleted":"botDefaults.roleSaved")}`,ok:!0})}else h({text:`\u2717 ${_(m)}`})}catch(m){h({text:`\u2717 ${L(m)}`})}finally{v(!1)}}}let x=[{value:"every",label:t("roles.injectModeEvery")},{value:"once",label:t("roles.injectModeOnce")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(M,{help:t("botDefaults.roleHelp"),children:t("botDefaults.sectionRole")})}),(0,e.jsx)("textarea",{"data-input":"teamRole",rows:6,placeholder:t("botDefaults.rolePlaceholder"),disabled:!u||c,value:f,onChange:C=>s(C.currentTarget.value)}),(0,e.jsxs)("div",{className:"bd-role-inject",children:[(0,e.jsx)("span",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("roles.injectModeHint"),children:t("roles.injectModeLabel")})}),(0,e.jsx)(Lt,{id:`bd-role-inject-${o.larkAppId}`,className:"bd-role-inject-menu",ariaLabel:t("roles.injectModeLabel"),disabled:!u||c,label:$t(x,b),value:b,options:x,onChange:C=>{let g=C==="once"?"once":"every";l(g),N(f,f.trim()==="",g)}})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-role",disabled:!u||c,onClick:()=>{N(f,f.trim()==="")},children:t("botDefaults.roleSave")}),(0,e.jsx)(J,{status:r,attr:{"data-role-status":""}})]}),(0,e.jsx)(Ia,{appId:o.larkAppId})]})}function Ia(a){let t=j(),[o,d]=(0,n.useState)({loaded:!1,loading:!0,items:[]});(0,n.useEffect)(()=>{let f=!0;return d({loaded:!1,loading:!0,items:[]}),(async()=>{try{let s=await fetch("/api/role-profiles"),b=await s.json().catch(()=>({}));if(!f)return;if(!s.ok)throw new Error(b?.error??String(s.status));let r=(Array.isArray(b.profiles)?b.profiles:[]).filter(h=>(h.botEntries??[]).some(c=>c?.larkAppId===a.appId&&c?.hasEntry)).map(h=>({profileId:String(h.profileId)}));d({loaded:!0,loading:!1,items:r})}catch(s){f&&d({loaded:!0,loading:!1,error:L(s),items:[]})}})(),()=>{f=!1}},[a.appId]);async function u(f){let s=o.items.find(b=>b.profileId===f);if(!(!s||s.loaded||s.loading)){d(b=>({...b,items:b.items.map(l=>l.profileId===f?{...l,loading:!0}:l)}));try{let b=await fetch(`/api/role-profiles/${encodeURIComponent(f)}/${encodeURIComponent(a.appId)}`),l=await b.json().catch(()=>({}));if(!b.ok)throw new Error(l?.error??String(b.status));d(r=>({...r,items:r.items.map(h=>h.profileId===f?{...h,loading:!1,loaded:!0,content:l?.hasEntry?String(l.content??""):""}:h)}))}catch(b){d(l=>({...l,items:l.items.map(r=>r.profileId===f?{...r,loading:!1,error:L(b)}:r)}))}}}let i;return o.loading?i=(0,e.jsx)(Rt,{label:t("common.loading"),compact:!0}):o.error?i=(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRolesLoadFailed",{error:o.error})}):o.items.length===0?i=(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRolesEmpty")}):i=o.items.map(f=>(0,e.jsxs)("details",{className:"bd-profile-role-entry","data-profile-id":f.profileId,onToggle:s=>{s.currentTarget.open&&u(f.profileId)},children:[(0,e.jsx)("summary",{children:(0,e.jsx)("span",{className:"bd-profile-role-id",children:f.profileId})}),(0,e.jsx)("div",{className:"bd-profile-role-content","data-profile-role-body":f.profileId,children:f.loading?(0,e.jsx)(Rt,{label:t("common.loading"),compact:!0}):f.error?(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRoleDetailLoadFailed",{error:f.error})}):f.loaded?(0,e.jsx)("pre",{children:f.content??""}):(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRoleClickToLoad")})})]},f.profileId)),(0,e.jsxs)("div",{className:"bd-profile-roles","data-profile-roles":!0,children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("botDefaults.profileRolesHelp"),children:t("botDefaults.profileRoles")})}),(0,e.jsx)("div",{className:"bd-profile-role-list","data-profile-role-list":!0,children:i})]})}function Pa(a){let t=j(),{bot:o,putCardPref:d}=a,[u,i]=(0,n.useState)(o.usageDisplay??"streaming"),[f,s]=(0,n.useState)(o.disableStreamingCard===!0),[b,l]=(0,n.useState)(o.silentTurnReactions===!0),[r,h]=(0,n.useState)(o.writableTerminalLinkInCard===!0),[c,v]=(0,n.useState)(o.privateCard===!0),[N,x]=(0,n.useState)(null),[C,g]=(0,n.useState)(null);(0,n.useEffect)(()=>{i(o.usageDisplay??"streaming"),s(o.disableStreamingCard===!0),l(o.silentTurnReactions===!0),h(o.writableTerminalLinkInCard===!0),v(o.privateCard===!0)},[o.disableStreamingCard,o.privateCard,o.usageDisplay,o.silentTurnReactions,o.writableTerminalLinkInCard]);async function D(S,y,p){g(y),x(null);try{let U=await d(S);U.ok?x({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(p?.(),x({text:`\u2717 ${_(U)}`}))}catch(U){p?.(),x({text:`\u2717 ${L(U)}`})}finally{g(null)}}let m=[{value:"streaming",label:t("botDefaults.usageDisplayStreaming")},{value:"footer",label:t("botDefaults.usageDisplayFooter")},{value:"off",label:t("botDefaults.usageDisplayOff")}];return(0,e.jsxs)("section",{className:"bd-section","aria-busy":C!==null,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCard")}),(0,e.jsxs)("div",{className:"bd-card-settings",children:[(0,e.jsxs)("section",{className:"bd-card-setting-group","data-card-feedback-group":!0,children:[(0,e.jsx)("h4",{className:"bd-card-setting-heading",children:t("botDefaults.cardFeedbackGroup")}),(0,e.jsx)(tt,{className:"bd-card-primary-toggle",checked:!f,disabled:C!==null,dataAction:"toggle-disable-streaming",title:t("botDefaults.autoStreaming"),description:t("botDefaults.autoStreamingDescription"),help:t("botDefaults.autoStreamingHelp"),onChange:S=>{let y=f,p=!S;s(p),D({disableStreamingCard:p},"streaming",()=>s(y))}}),(0,e.jsxs)("div",{className:"bd-card-dependent","data-card-off-options":!0,hidden:!f,children:[(0,e.jsx)(tt,{checked:!b,disabled:C!==null,dataAction:"toggle-silent-reactions",title:t("botDefaults.silentTurnReactions"),description:t("botDefaults.silentTurnReactionsDescription"),help:t("botDefaults.silentTurnReactionsHelp"),onChange:S=>{let y=b,p=!S;l(p),D({silentTurnReactions:p},"silent",()=>l(y))}}),(0,e.jsx)("p",{role:"status","data-card-pref-moot":!0,className:"bd-card-mode-note",children:t("botDefaults.manualCardHint")})]})]}),(0,e.jsxs)("section",{className:"bd-card-setting-group","data-card-content-group":!0,children:[(0,e.jsx)("h4",{className:"bd-card-setting-heading",children:t("botDefaults.cardContentGroup")}),o.usageSupported===!0&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.usageDisplayHelp"),children:t("botDefaults.usageDisplay")}),(0,e.jsx)(et,{dataInput:"usageDisplay",ariaLabel:t("botDefaults.usageDisplay"),value:u,disabled:C!==null,options:m,onChange:S=>{let y=u;i(S),D({usageDisplay:S},"usage",()=>i(y))}})]})}),(0,e.jsx)("div",{className:"bd-card-control-list",children:(0,e.jsx)(tt,{checked:r,disabled:C!==null,dataAction:"toggle-writable-link",title:t("botDefaults.writableLink"),description:t("botDefaults.writableLinkDescription"),help:t("botDefaults.writableLinkHelp"),onChange:S=>{let y=r;h(S),D({writableTerminalLinkInCard:S},"writable",()=>h(y))}})})]}),(0,e.jsxs)("section",{className:"bd-card-setting-group","data-card-manual-group":!0,children:[(0,e.jsx)("h4",{className:"bd-card-setting-heading",children:t("botDefaults.cardManualGroup")}),(0,e.jsx)("p",{className:"bd-card-setting-copy",children:t("botDefaults.manualCardIntro")}),(0,e.jsx)("div",{className:"bd-card-control-list",children:(0,e.jsx)(tt,{checked:c,disabled:C!==null,dataAction:"toggle-private-card",title:t("botDefaults.privateCard"),description:t("botDefaults.privateCardDescription"),help:t("botDefaults.privateCardHelp"),onChange:S=>{let y=c;v(S),D({privateCard:S},"private",()=>v(y))}})})]})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:N,attr:{"data-card-pref-status":""}})})]})}function Ma(a){let t=j(),[o,d]=(0,n.useState)(a.bot.codexAppCleanInput===!0),[u,i]=(0,n.useState)(null),[f,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>d(a.bot.codexAppCleanInput===!0),[a.bot.codexAppCleanInput]);async function b(l){let r=o;d(l),s(!0),i(null);try{let h=await a.putCardPref({codexAppCleanInput:l});h.ok?i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(d(r),i({text:`\u2717 ${_(h)}`}))}catch(h){d(r),i({text:`\u2717 ${L(h)}`})}finally{s(!1)}}return(0,e.jsxs)("section",{className:"bd-section","data-codex-app-display":!0,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCodexAppDisplay")}),(0,e.jsx)(tt,{checked:o,disabled:f,dataAction:"toggle-codex-app-clean-input",title:t("botDefaults.codexAppCleanInput"),help:t("botDefaults.codexAppCleanInputHelp"),onChange:l=>{b(l)}}),(0,e.jsx)("small",{className:"bd-section-note",children:t("botDefaults.codexAppCleanInputCompat")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:u,attr:{"data-codex-app-clean-input-status":""}})})]})}function Ba(a){let t=j(),[o,d]=(0,n.useState)(a.bot.envelopeInjection==="auto"),[u,i]=(0,n.useState)(null),[f,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>d(a.bot.envelopeInjection==="auto"),[a.bot.envelopeInjection]);async function b(l){let r=o;d(l),s(!0),i(null);try{let h=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/envelope-injection`,{envelopeInjection:l?"auto":"off"});if(h.ok&&h.body.ok){let c=h.body.envelopeInjection==="auto";d(c),a.patchBot(a.bot.larkAppId,{envelopeInjection:c?"auto":"off"}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else d(r),i({text:`\u2717 ${_(h)}`})}catch(h){d(r),i({text:`\u2717 ${L(h)}`})}finally{s(!1)}}return(0,e.jsxs)("section",{className:"bd-section","data-envelope-injection":!0,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.envelopeInjection")}),(0,e.jsx)(tt,{checked:o,disabled:f,dataAction:"toggle-envelope-injection",title:t("botDefaults.envelopeInjectionAuto"),help:t("botDefaults.envelopeInjectionHelp"),onChange:l=>{b(l)}}),(0,e.jsx)("small",{className:"bd-section-note",children:t("botDefaults.envelopeInjectionNote")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:u,attr:{"data-envelope-injection-status":""}})})]})}function Aa(a){let t=j(),[o,d]=(0,n.useState)(a.bot.botToBotSameDir!==!1),[u,i]=(0,n.useState)(null),[f,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>d(a.bot.botToBotSameDir!==!1),[a.bot.botToBotSameDir]);async function b(l){d(l),s(!0),i(null);try{let r=await a.putCardPref({botToBotSameDir:l});i(r.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${_(r)}`})}catch(r){i({text:`\u2717 ${L(r)}`})}finally{s(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCrossBot")}),(0,e.jsx)(tt,{checked:o,disabled:f,dataAction:"toggle-cross-bot-samedir",title:t("botDefaults.botToBotSameDir"),help:t("botDefaults.botToBotSameDirHelp"),onChange:l=>{b(l)}}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:u,attr:{"data-crossbot-status":""}})})]})}function Oa(a){let t=j(),o=qt(a.bot),[d,u]=(0,n.useState)(String(o.limit)),[i,f]=(0,n.useState)(String(o.sinceHours)),[s,b]=(0,n.useState)(a.bot.summaryMemory===!0),[l,r]=(0,n.useState)(Wt(a.bot)),[h,c]=(0,n.useState)(null),[v,N]=(0,n.useState)(null),[x,C]=(0,n.useState)(!1),[g,D]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let y=qt(a.bot);u(String(y.limit)),f(String(y.sinceHours)),b(a.bot.summaryMemory===!0),r(Wt(a.bot))},[a.bot.summaryRange?.limit,a.bot.summaryRange?.sinceHours,a.bot.summaryMemory,a.bot.summaryMemoryPath]);async function m(){c(null);let y=ke(d,50),p=ke(i,24);if(y==null||p==null){c({text:`\u2717 ${t("botDefaults.summaryNumberInvalid")}`});return}C(!0);try{let U=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/summary-range`,{limit:y,sinceHours:p});if(U.ok&&U.body.ok){let E=U.body.summaryRange??{limit:y,sinceHours:p},H=qt({...a.bot,summaryRange:E});u(String(H.limit)),f(String(H.sinceHours)),a.patchBot(a.bot.larkAppId,{summaryRange:E}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${_(U)}`})}catch(U){c({text:`\u2717 ${L(U)}`})}finally{C(!1)}}async function S(y,p=l){let U=s,E=l,H=Le(p);b(y),r(H),N(null),D(!0);try{let w=await a.putCardPref({summaryMemory:y,summaryMemoryPath:H});if(w.ok&&w.body.ok){let Z=w.body.summaryMemory===!0,q=Wt({...a.bot,summaryMemoryPath:w.body.summaryMemoryPath});b(Z),r(q),a.patchBot(a.bot.larkAppId,{summaryMemory:Z,summaryMemoryPath:q}),N({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else b(U),r(E),N({text:`\u2717 ${_(w)}`})}catch(w){b(U),r(E),N({text:`\u2717 ${L(w)}`})}finally{D(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(M,{help:t("botDefaults.summaryLimitHelp"),children:t("botDefaults.sectionSummaryTrigger")})}),(0,e.jsxs)("div",{className:"bd-row bd-summary-limits",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summaryLimit")}),(0,e.jsx)("input",{type:"number",min:0,step:1,"data-input":"summaryLimit",value:d,disabled:x,onChange:y=>u(y.currentTarget.value)})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summarySinceHours")}),(0,e.jsx)("input",{type:"number",min:0,step:1,"data-input":"summarySinceHours",value:i,disabled:x,onChange:y=>f(y.currentTarget.value)})]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-trigger",disabled:x,onClick:()=>{m()},children:t("botDefaults.summarySave")}),(0,e.jsx)(J,{status:h,attr:{"data-summary-trigger-status":""}})]}),(0,e.jsx)(tt,{checked:s,disabled:g,title:t("botDefaults.summaryMemory"),help:t("botDefaults.summaryMemoryHelp"),onChange:y=>{S(y)}}),(0,e.jsx)("div",{className:"bd-row bd-summary-limits",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summaryMemoryPath")}),(0,e.jsx)("input",{type:"text","data-input":"summaryMemoryPath",value:l,disabled:g,onChange:y=>r(y.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-memory-path",disabled:g,onClick:()=>{S(s,l)},children:t("botDefaults.summaryMemoryPathSave")})}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:v,attr:{"data-summary-memory-status":""}})})]})}function Le(a){return a.trim()||"summary.md"}function Wt(a){return Le(typeof a.summaryMemoryPath=="string"?a.summaryMemoryPath:"")}function qt(a){let t=a.summaryRange??{limit:50,sinceHours:24};return{limit:Number.isInteger(t.limit)&&Number(t.limit)>=0?Number(t.limit):50,sinceHours:Number.isInteger(t.sinceHours)&&Number(t.sinceHours)>=0?Number(t.sinceHours):24}}function $a(a){let t=j(),[o,d]=(0,n.useState)(Bt(a.bot.p2pMode)),[u,i]=(0,n.useState)(we(a.bot)),[f,s]=(0,n.useState)(Ie(a.bot)),[b,l]=(0,n.useState)(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only"),[r,h]=(0,n.useState)(null),[c,v]=(0,n.useState)(null),[N,x]=(0,n.useState)(null),[C,g]=(0,n.useState)(null),[D,m]=(0,n.useState)(null);(0,n.useEffect)(()=>{d(Bt(a.bot.p2pMode)),i(we(a.bot)),s(Ie(a.bot)),l(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only")},[a.bot.docSubscribeDefaultMode,a.bot.p2pMode,a.bot.regularGroupMentionMode,a.bot.regularGroupReplyMode]);async function S(w){let Z=Bt(w);d(Z),h("p2p"),v(null);try{let q=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/p2p-mode`,{p2pMode:Z});q.ok&&q.body.ok?(a.patchBot(a.bot.larkAppId,{p2pMode:Bt(q.body.p2pMode)}),v({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})):v({text:`\u2717 ${_(q)}`})}catch(q){v({text:`\u2717 ${L(q)}`})}finally{h(null)}}async function y(w,Z,q){h(w),q(null);try{let W=await a.putCardPref(Z);q(W.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${_(W)}`})}catch(W){q({text:`\u2717 ${L(W)}`})}finally{h(null)}}let p=[{value:"thread",label:t("botDefaults.p2pThread")},{value:"chat",label:t("botDefaults.p2pChat")},{value:"group",label:t("botDefaults.p2pGroup")}],U=[{value:"chat",label:t("botDefaults.regularGroupModeChat")},{value:"chat-topic",label:t("botDefaults.regularGroupModeChatTopic")},{value:"new-topic",label:t("botDefaults.regularGroupModeNewTopic")},{value:"shared",label:t("botDefaults.regularGroupModeShared")}],E=[{value:"always",label:t("botDefaults.mentionModeAlways")},{value:"topic",label:t("botDefaults.mentionModeTopic")},{value:"never",label:t("botDefaults.mentionModeNever")},{value:"ambient",label:t("botDefaults.mentionModeAmbient")}],H=[{value:"mention-only",label:t("botDefaults.docSubscribeModeMention")},{value:"all",label:t("botDefaults.docSubscribeModeAll")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSessionMode")}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.p2pHelp"),children:t("botDefaults.p2pMode")}),(0,e.jsx)(et,{dataInput:"p2pMode",ariaLabel:t("botDefaults.p2pMode"),value:o,disabled:r==="p2p",options:p,onChange:w=>{S(w)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:c,attr:{"data-p2p-status":""}})})]}),o==="group"&&(0,e.jsx)(Ea,{bot:a.bot}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.regularGroupModeHelp"),children:t("botDefaults.regularGroupMode")}),(0,e.jsx)(et,{dataInput:"regularGroupMode",ariaLabel:t("botDefaults.regularGroupMode"),value:u,disabled:r==="regular",options:U,onChange:w=>{i(w),y("regular",{regularGroupReplyMode:w},x)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:N,attr:{"data-regular-group-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.mentionModeHelp"),children:t("botDefaults.mentionMode")}),(0,e.jsx)(et,{dataInput:"regularGroupMentionMode",ariaLabel:t("botDefaults.mentionMode"),value:f,disabled:r==="mention",options:E,onChange:w=>{s(w),y("mention",{regularGroupMentionMode:w},g)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:C,attr:{"data-mention-mode-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.docSubscribeModeHelp"),children:t("botDefaults.docSubscribeMode")}),(0,e.jsx)(et,{dataInput:"docSubscribeDefaultMode",ariaLabel:t("botDefaults.docSubscribeMode"),value:b,disabled:r==="doc",options:H,onChange:w=>{l(w),y("doc",{docSubscribeDefaultMode:w},m)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:D,attr:{"data-doc-subscribe-mode-status":""}})})]})]})}function La(a){let t=j(),o=a.bot.substituteMode??null,[d,u]=(0,n.useState)(o?.enabled===!0);function i(k){switch(k){case"cross_app_open_id":return t("botDefaults.substituteReasonCrossAppOpenId");case"not_visible":return t("botDefaults.substituteReasonNotVisible");case"resolve_failed":return t("botDefaults.substituteReasonResolveFailed");case"unresolvable":return t("botDefaults.substituteReasonUnresolvable");default:return t("botDefaults.substituteUnresolved")}}let[f,s]=(0,n.useState)(o?.disclosure==="none"?"none":"prefix"),[b,l]=(0,n.useState)(o?.replyMode==="quote"?"quote":"thread"),[r,h]=(0,n.useState)(o?.disableControlCard!==!0),[c,v]=(0,n.useState)(()=>ft(o?.chats)),[N,x]=(0,n.useState)(()=>ft(o?.excludedChats)),[C,g]=(0,n.useState)(o?.topicGroups!==!1),[D,m]=(0,n.useState)(o?.topicActiveSessionTrigger!==!1),[S,y]=(0,n.useState)(null),[p,U]=(0,n.useState)(!1),E=(0,n.useRef)(0),H=(0,n.useRef)(!1);function w(k){let I=oa(k);return{key:++E.current,idField:I,idValue:k?.[I]??"",name:k?.name??"",persisted:k?{...k}:{},originalIdField:k?I: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 I=(Z.current.get(k)??0)+1;Z.current.set(k,I);let P=()=>Z.current.get(k)===I;T(A=>A.map(O=>O.key===k?{...O,resolving:!0}:O));try{let A=W.find(X=>X.key===k);if(!A)return;let O=A.idValue.trim();if(!O){T(X=>X.map(z=>z.key===k?{...z,resolving:!1,resolution:void 0}:z));return}let V={[A.idField]:O};A.name.trim()&&(V.name=A.name.trim());let ot=await fe(a.bot.larkAppId,V);if(!P())return;T(X=>X.map(z=>{if(z.key!==k)return z;if(!ot.ok)return{...z,resolving:!1,resolution:{ok:!1}};let nt=ot.resolution;if(nt?.ok===!0){if(!nt.openId)return{...z,resolving:!1,resolution:void 0};let at={...z.persisted};return at.openId=nt.openId,nt.name&&(at.name=nt.name),nt.avatarUrl&&(at.avatarUrl=nt.avatarUrl),{...z,name:nt.name??z.name,persisted:at,resolving:!1,resolution:{ok:!0,name:nt.name,avatarUrl:nt.avatarUrl}}}return{...z,resolving:!1,resolution:{ok:!1,reason:nt?.reason}}}))}catch{if(!P())return;T(A=>A.map(O=>O.key===k?{...O,resolving:!1,resolution:{ok:!1}}:O))}}let[W,T]=(0,n.useState)(()=>{let k=o?.targets??[];return k.length?k.map(I=>w(I)):[w()]});(0,n.useEffect)(()=>{if(H.current){H.current=!1;return}let k=a.bot.substituteMode??null;u(k?.enabled===!0),s(k?.disclosure==="none"?"none":"prefix"),l(k?.replyMode==="quote"?"quote":"thread"),h(k?.disableControlCard!==!0),v(ft(k?.chats)),x(ft(k?.excludedChats)),g(k?.topicGroups!==!1),m(k?.topicActiveSessionTrigger!==!1);let I=k?.targets??[];T(I.length?I.map(P=>w(P)):[w()])},[a.bot.larkAppId,a.bot.substituteMode]);async function F(k){U(!0),y(null);try{let I=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/substitute-mode`,k);if(I.ok&&I.body.ok){let P=I.body.substituteMode&&typeof I.body.substituteMode=="object"?I.body.substituteMode:null,A=Array.isArray(I.body?.resolution)?I.body.resolution:[],O=A.filter(V=>V?.ok===!1).map(V=>String(V.input??"").trim()).filter(Boolean);if(u(P?.enabled===!0),s(P?.disclosure==="none"?"none":"prefix"),l(P?.replyMode==="quote"?"quote":"thread"),h(P?.disableControlCard!==!0),v(ft(P?.chats)),x(ft(P?.excludedChats)),g(P?.topicGroups!==!1),m(P?.topicActiveSessionTrigger!==!1),A.length)H.current=!0,T(V=>{let ot=[...A];return V.map(X=>{let z=X.idValue.trim(),nt=ot.findIndex(rt=>String(rt.input??"").trim()===z);if(nt<0)return X;let at=ot.splice(nt,1)[0];if(at?.ok===!0){let rt={...X.persisted};return at.openId&&(rt.openId=at.openId),X.idField==="email"&&(rt.email=z),at.name&&(rt.name=at.name),at.avatarUrl&&(rt.avatarUrl=at.avatarUrl),{...X,name:at.name??X.name,persisted:rt,resolution:{ok:!0,name:at.name,avatarUrl:at.avatarUrl}}}return{...X,resolution:{ok:!1,reason:at?.reason}}})});else{let V=P?.targets??[];T(V.length?V.map(ot=>w(ot)):[w()])}a.patchBot(a.bot.larkAppId,{substituteMode:P}),y(O.length?{text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${O.join(", ")}`}:{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else{let P=Array.isArray(I.body?.resolution)?I.body.resolution.filter(A=>A?.ok===!1).map(A=>String(A.input??"").trim()).filter(Boolean):[];y({text:P.length?`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${P.join(", ")}`:`\u2717 ${_(I)}`})}}catch(I){y({text:`\u2717 ${L(I)}`})}finally{U(!1)}}function Y(){let k=[],I=!1;for(let P of W){let A=na(P);if(!A){I||=!!P.name.trim();continue}k.push(A)}if(I||d&&k.length===0){y({text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}`});return}F({enabled:d,targets:k,disclosure:f,chats:Ce(c),excludedChats:Ce(N),replyMode:b,disableControlCard:!r,topicGroups:C,topicActiveSessionTrigger:D})}let G=[{value:"prefix",label:t("botDefaults.substituteDisclosurePrefix")},{value:"none",label:t("botDefaults.substituteDisclosureNone")}],B=[{value:"thread",label:t("botDefaults.substituteReplyModeThread")},{value:"quote",label:t("botDefaults.substituteReplyModeQuote")}];return(0,e.jsxs)("section",{className:"bd-section bd-substitute-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSubstitute")}),(0,e.jsx)(tt,{checked:d,disabled:p,dataAction:"toggle-substitute-mode",title:t("botDefaults.substituteEnabled"),help:t("botDefaults.substituteHelp"),onChange:u}),(0,e.jsx)(tt,{checked:C,disabled:p,dataAction:"toggle-substitute-topic-groups",title:t("botDefaults.substituteTopicGroups"),help:t("botDefaults.substituteTopicGroupsHelp"),onChange:g}),(0,e.jsx)(tt,{checked:D,disabled:p||!C,dataAction:"toggle-substitute-topic-active",title:t("botDefaults.substituteTopicActive"),help:t("botDefaults.substituteTopicActiveHelp"),onChange:m}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{children:t("botDefaults.substituteDisclosure")}),(0,e.jsx)(et,{dataInput:"substituteDisclosure",ariaLabel:t("botDefaults.substituteDisclosure"),value:f,disabled:p,options:G,onChange:k=>s(k)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.substituteReplyModeHelp"),children:t("botDefaults.substituteReplyMode")}),(0,e.jsx)(et,{dataInput:"substituteReplyMode",ariaLabel:t("botDefaults.substituteReplyMode"),value:b,disabled:p,options:B,onChange:k=>l(k)})]})}),(0,e.jsx)(tt,{checked:r,disabled:p,dataAction:"toggle-substitute-control-card",title:t("botDefaults.substituteControlCard"),help:t("botDefaults.substituteControlCardHelp"),onChange:h}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.substituteChatsHelp"),children:t("botDefaults.substituteChats")}),(0,e.jsx)("textarea",{"data-input":"substituteChats",rows:3,placeholder:t("botDefaults.substituteChatsPlaceholder"),value:c,disabled:p,onChange:k=>v(k.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.substituteExcludedChatsHelp"),children:t("botDefaults.substituteExcludedChats")}),(0,e.jsx)("textarea",{"data-input":"substituteExcludedChats",rows:3,placeholder:t("botDefaults.substituteExcludedChatsPlaceholder"),value:N,disabled:p,onChange:k=>x(k.currentTarget.value)})]})}),(0,e.jsxs)("div",{className:"bd-row bd-substitute-targets",children:[(0,e.jsx)(M,{help:t("botDefaults.substituteTargetsHelp"),children:t("botDefaults.substituteTargets")}),(0,e.jsxs)("div",{className:"bd-substitute-target-list","data-input":"substituteTargets",children:[W.map((k,I)=>(0,e.jsxs)("div",{className:"bd-substitute-target-row",children:[(0,e.jsx)(et,{dataInput:`substituteTargetType-${k.key}`,className:"bd-substitute-target-type",ariaLabel:`${t("botDefaults.substituteTargetType")} ${I+1}`,value:k.idField,disabled:p,options:Kt.map(P=>({value:P,label:t(`botDefaults.substituteTarget${P[0].toUpperCase()}${P.slice(1)}`)})),onChange:P=>{T(A=>A.map(O=>O.key===k.key?{...O,idField:P,idValue:O.persisted[P]??"",resolution:void 0}:O))}}),(0,e.jsx)("input",{className:"bd-substitute-target-id",type:"text","data-input":`substituteTargetId-${k.key}`,"aria-label":`${t("botDefaults.substituteTargetType")} ${I+1}`,placeholder:t("botDefaults.substituteTargetIdPlaceholder"),value:k.idValue,disabled:p,onChange:P=>{let A=P.currentTarget.value;T(O=>O.map(V=>V.key===k.key?{...V,idValue:A,resolution:void 0}:V))},onBlur:()=>{k.idValue.trim()&&q(k.key)}}),(0,e.jsx)("div",{className:"bd-substitute-target-name",children:k.resolving?(0,e.jsx)("span",{className:"bd-substitute-target-resolving",children:t("botDefaults.substituteResolving")}):k.resolution?.ok===!0&&(k.name||k.resolution.avatarUrl)?(0,e.jsxs)(e.Fragment,{children:[k.resolution.avatarUrl?(0,e.jsx)(ht,{html:gt({name:k.resolution.name,avatarUrl:k.resolution.avatarUrl,size:"sm"})}):null,(0,e.jsx)("span",{className:"bd-substitute-target-name-chip","data-chip":`substituteTargetName-${k.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${I+1}`,children:k.name})]}):k.resolution?.ok===!1?(0,e.jsx)("span",{className:"bd-substitute-target-resolution-badge",children:i(k.resolution.reason)}):(0,e.jsx)("input",{type:"text","data-input":`substituteTargetName-${k.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${I+1}`,placeholder:t("botDefaults.substituteTargetNamePlaceholder"),value:k.name,disabled:p,onChange:P=>{let A=P.currentTarget.value;T(O=>O.map(V=>V.key===k.key?{...V,name:A}:V))}})}),(0,e.jsx)("button",{type:"button",className:"bd-substitute-target-remove","data-action":"remove-substitute-target",title:t("botDefaults.substituteTargetRemove"),"aria-label":t("botDefaults.substituteTargetRemove"),disabled:p,onClick:()=>{T(P=>{let A=P.filter(O=>O.key!==k.key);return A.length?A:[w()]})},children:(0,e.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]},k.key)),(0,e.jsx)("button",{type:"button",className:"bd-substitute-target-add","data-action":"add-substitute-target",title:t("botDefaults.substituteTargetAdd"),"aria-label":t("botDefaults.substituteTargetAdd"),disabled:p,onClick:()=>T(k=>[...k,w()]),children:(0,e.jsx)("span",{"aria-hidden":"true",children:"+"})})]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-substitute-mode",disabled:p,onClick:Y,children:t("botDefaults.substituteSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-substitute-mode",disabled:p,onClick:()=>{F({enabled:!1,targets:[]})},children:t("botDefaults.substituteOff")}),(0,e.jsx)(J,{status:S,attr:{"data-substitute-status":""}})]})]})}function Bt(a){return a==="thread"?"thread":a==="group"?"group":"chat"}function Ea(a){let t=j(),[o,d]=(0,n.useState)(null),[u,i]=(0,n.useState)(!1),[f,s]=(0,n.useState)(!1),[b,l]=(0,n.useState)(null),r=(0,n.useRef)({generation:0,mounted:!0}),h=async(g=r.current.generation)=>{try{let D=await K("GET",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-group-tag-status`);if(r.current.mounted&&g===r.current.generation&&D.ok&&D.body.ok)return d({authorized:!!D.body.authorized,tagMode:String(D.body.tagMode??"feed-group")}),!!D.body.authorized}catch{}return!1};(0,n.useEffect)(()=>{r.current.mounted=!0;let g=++r.current.generation;return d(null),i(!1),s(!1),l(null),h(g),()=>{r.current.mounted=!1,r.current.generation+=1}},[a.bot.larkAppId]);async function c(g){let D=r.current.generation;s(!0),l(null);try{let m=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-group-tag-config`,{mode:g});if(!r.current.mounted||D!==r.current.generation)return;m.ok&&m.body.ok?d(S=>({authorized:S?.authorized??!1,tagMode:String(m.body.tagMode)})):l(_(m))}catch(m){r.current.mounted&&D===r.current.generation&&l(L(m))}finally{r.current.mounted&&D===r.current.generation&&s(!1)}}async function v(){let g=++r.current.generation;i(!0),l(null);try{let D=await K("POST",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/session-group-tag-auth`,{});if(!r.current.mounted||g!==r.current.generation)return;if(!D.ok||!D.body.ok||!D.body.authUrl){l(_(D));return}window.open(D.body.authUrl,"_blank","noopener");for(let m=0;m<60;m++)if(await new Promise(S=>setTimeout(S,3e3)),!r.current.mounted||g!==r.current.generation||await h(g))return;r.current.mounted&&g===r.current.generation&&l(t("botDefaults.sgTagAuthTimeout"))}catch(D){r.current.mounted&&g===r.current.generation&&l(L(D))}finally{r.current.mounted&&g===r.current.generation&&i(!1)}}let N=o?.tagMode??"feed-group",x=o?.authorized===!0,C=[{value:"feed-group",label:t("botDefaults.sgTagModeFeedGroup")},{value:"chat-tag",label:t("botDefaults.sgTagModeChatTag")},{value:"off",label:t("botDefaults.sgTagModeOff")}];return(0,e.jsx)("div",{className:"bd-row","data-session-group-tag-row":!0,children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.sgTagHelp"),children:t("botDefaults.sgTag")}),(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"},children:[(0,e.jsx)(et,{dataInput:"sessionGroupTagMode",ariaLabel:t("botDefaults.sgTag"),value:N,disabled:f||!o,options:C,onChange:g=>{c(g)}}),N==="chat-tag"&&(0,e.jsx)("span",{"data-sg-tag-state":"tenant",children:t("botDefaults.sgTagChatTagNote")}),N==="feed-group"&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{"data-sg-tag-state":x?"authorized":"unauthorized",children:x?`\u{1F7E2} ${t("botDefaults.sgTagAuthorized")}`:`\u26AA ${t("botDefaults.sgTagUnauthorized")}`}),!x&&(0,e.jsx)("button",{type:"button",className:"primary","data-action":"session-group-tag-auth",disabled:u,onClick:()=>{v()},children:t(u?"botDefaults.sgTagAuthWaiting":"botDefaults.sgTagAuthStart")})]}),b&&(0,e.jsxs)("span",{className:"status-error",children:["\u2717 ",b]})]})]})})}function we(a){return a.regularGroupReplyMode==="chat"||a.regularGroupReplyMode==="new-topic"||a.regularGroupReplyMode==="shared"?a.regularGroupReplyMode:"chat-topic"}function Ie(a){return a.regularGroupMentionMode==="topic"||a.regularGroupMentionMode==="never"||a.regularGroupMentionMode==="ambient"?a.regularGroupMentionMode:"always"}function Fa(a){let t=j(),o=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null,d=Number.isFinite(a.bot.logicalSessionCount)?Number(a.bot.logicalSessionCount):0,u=Number.isFinite(a.bot.residentSessionCount)?Number(a.bot.residentSessionCount):0,i=Number.isFinite(a.bot.dormantSessionCount)?Number(a.bot.dormantSessionCount):0,[f,s]=(0,n.useState)(o),b=f??30,[l,r]=(0,n.useState)(o==null?"":String(o)),[h,c]=(0,n.useState)(null),[v,N]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let g=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null;s(g),r(g==null?"":String(g))},[a.bot.maxLiveWorkers]);async function x(g){c(null),N(!0);try{let D=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/max-live-workers`,{maxLiveWorkers:g});if(D.ok&&D.body.ok){let m=typeof D.body.maxLiveWorkers=="number"?D.body.maxLiveWorkers:null;s(m),r(m==null?"":String(m)),a.patchBot(a.bot.larkAppId,{maxLiveWorkers:m}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${_(D)}`})}catch(D){c({text:`\u2717 ${L(D)}`})}finally{N(!1)}}function C(){let g=Me(l);if(g==="invalid"){c({text:`\u2717 ${t("botDefaults.maxLiveWorkersInvalid")}`});return}x(g)}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSessionCap")}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.maxLiveWorkersHelp"),children:t("botDefaults.maxLiveWorkers")}),(0,e.jsx)("input",{type:"number",min:1,step:1,"data-input":"maxLiveWorkers",placeholder:t("botDefaults.maxLiveWorkersPlaceholder"),value:l,disabled:v,onChange:g=>r(g.currentTarget.value)})]}),(0,e.jsx)("small",{"data-session-cap-state":!0,children:la(f,t)}),(0,e.jsx)("small",{className:"bd-help bd-session-residency",children:t("botDefaults.maxLiveWorkersUsage",{resident:u,cap:b,dormant:i,logical:d})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-session-cap",disabled:v,onClick:C,children:t("botDefaults.maxLiveWorkersSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-session-cap",disabled:v,onClick:()=>{r(""),x(null)},children:t("botDefaults.maxLiveWorkersOff")}),(0,e.jsx)(J,{status:h,attr:{"data-session-cap-status":""}})]})]})}function Ua(a){let t=j(),[o,d]=(0,n.useState)(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[u,i]=(0,n.useState)(null),[f,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>d(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[a.bot.startupCommands]);async function b(){i(null),s(!0);try{let l=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/startup-commands`,{startupCommands:o});if(l.ok&&l.body.ok){let r=typeof l.body.startupCommands=="string"?l.body.startupCommands:"";d(r),a.patchBot(a.bot.larkAppId,{startupCommands:r}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else i({text:`\u2717 ${_(l)}`})}catch(l){i({text:`\u2717 ${L(l)}`})}finally{s(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(M,{help:t("botDefaults.startupCommandsHelp"),children:t("botDefaults.sectionStartupCommands")})}),(0,e.jsx)("textarea",{"data-input":"startupCommands",rows:3,placeholder:t("botDefaults.startupCommandsPlaceholder"),value:o,disabled:f,onChange:l=>d(l.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-startup-commands",disabled:f,onClick:()=>{b()},children:t("botDefaults.startupCommandsSave")}),(0,e.jsx)(J,{status:u,attr:{"data-startup-commands-status":""}})]})]})}function Ga(a){let t=j(),[o,d]=(0,n.useState)(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:""),[u,i]=(0,n.useState)(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:""),[f,s]=(0,n.useState)(null),[b,l]=(0,n.useState)(null);(0,n.useEffect)(()=>{d(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:"")},[a.bot.customPassthroughCommands]),(0,n.useEffect)(()=>{i(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:"")},[a.bot.canTalkDaemonCommands]);async function r(){s(null),l("passthrough");try{let c=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/custom-passthrough`,{customPassthroughCommands:o});if(c.ok&&c.body.ok){let v=typeof c.body.customPassthroughCommands=="string"?c.body.customPassthroughCommands:"";d(v),a.patchBot(a.bot.larkAppId,{customPassthroughCommands:v}),s({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else s({text:`\u2717 ${_(c)}`})}catch(c){s({text:`\u2717 ${L(c)}`})}finally{l(null)}}async function h(){s(null),l("cantalk");try{let c=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/cantalk-daemon-commands`,{canTalkDaemonCommands:u});if(c.ok&&c.body.ok){let v=typeof c.body.canTalkDaemonCommands=="string"?c.body.canTalkDaemonCommands:"";i(v),a.patchBot(a.bot.larkAppId,{canTalkDaemonCommands:v}),s({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else s({text:`\u2717 ${_(c)}`})}catch(c){s({text:`\u2717 ${L(c)}`})}finally{l(null)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)(M,{help:t("botDefaults.sectionSlashCommandsHelp"),children:t("botDefaults.sectionSlashCommands")})}),(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("botDefaults.customPassthroughHelp"),children:t("botDefaults.customPassthrough")})}),(0,e.jsx)("textarea",{"data-input":"customPassthroughCommands",rows:2,placeholder:t("botDefaults.customPassthroughPlaceholder"),value:o,disabled:b==="passthrough",onChange:c=>d(c.currentTarget.value)}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-custom-passthrough",disabled:b==="passthrough",onClick:()=>{r()},children:t("botDefaults.customPassthroughSave")})})]}),(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("botDefaults.canTalkDaemonHelp"),children:t("botDefaults.canTalkDaemon")})}),(0,e.jsx)("textarea",{"data-input":"canTalkDaemonCommands",rows:2,placeholder:t("botDefaults.canTalkDaemonPlaceholder"),value:u,disabled:b==="cantalk",onChange:c=>i(c.currentTarget.value)}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-cantalk-daemon",disabled:b==="cantalk",onClick:()=>{h()},children:t("botDefaults.canTalkDaemonSave")})})]}),(0,e.jsx)(J,{status:f,attr:{"data-slash-commands-status":""}})]})}function ja(a){let t=j(),[o,d]=(0,n.useState)(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[u,i]=(0,n.useState)(null),[f,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>d(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[a.bot.launchShell]);async function b(){i(null),s(!0);try{let l=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/launch-shell`,{launchShell:o});if(l.ok&&l.body.ok){let r=typeof l.body.launchShell=="string"?l.body.launchShell:"";d(r),a.patchBot(a.bot.larkAppId,{launchShell:r}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else i({text:`\u2717 ${_(l)}`})}catch(l){i({text:`\u2717 ${L(l)}`})}finally{s(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("botDefaults.launchShellHelp"),children:t("botDefaults.sectionLaunchShell")})}),(0,e.jsx)("input",{type:"text","data-input":"launchShell",placeholder:t("botDefaults.launchShellPlaceholder"),value:o,disabled:f,onChange:l=>d(l.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-launch-shell",disabled:f,onClick:()=>{b()},children:t("botDefaults.launchShellSave")}),(0,e.jsx)(J,{status:u,attr:{"data-launch-shell-status":""}})]})]})}function _a(a){let t=j(),[o,d]=(0,n.useState)(typeof a.bot.env=="string"?a.bot.env:""),[u,i]=(0,n.useState)(null),[f,s]=(0,n.useState)(!1);(0,n.useEffect)(()=>d(typeof a.bot.env=="string"?a.bot.env:""),[a.bot.env]);async function b(){i(null),s(!0);try{let l=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/env`,{env:o});if(l.ok&&l.body.ok){let r=typeof l.body.env=="string"?l.body.env:"";d(r),a.patchBot(a.bot.larkAppId,{env:r}),i({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else i({text:`\u2717 ${_(l)}`})}catch(l){i({text:`\u2717 ${L(l)}`})}finally{s(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("botDefaults.envHelp"),children:t("botDefaults.sectionEnv")})}),(0,e.jsx)("textarea",{"data-input":"env",rows:5,placeholder:t("botDefaults.envPlaceholder"),value:o,disabled:f,onChange:l=>d(l.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-env",disabled:f,onClick:()=>{b()},children:t("botDefaults.envSave")}),(0,e.jsx)(J,{status:u,attr:{"data-env-status":""}})]})]})}var Ha=["gpt-5.5","gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.4","gpt-5.4-pro"],Wa=["","low","medium","high","xhigh"],qa=["boe","cn"];function Ja(a){let t=j(),o=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{},[d,u]=(0,n.useState)(typeof o.baseUrl=="string"?o.baseUrl:""),[i,f]=(0,n.useState)(o.sandboxCluster==="cn"?"cn":"boe"),[s,b]=(0,n.useState)(typeof o.model=="string"?o.model:""),[l,r]=(0,n.useState)(typeof o.reasoningEffort=="string"?o.reasoningEffort:""),[h,c]=(0,n.useState)(typeof o.jwtEnv=="string"?o.jwtEnv:""),[v,N]=(0,n.useState)(typeof o.systemPrompt=="string"?o.systemPrompt:""),[x,C]=(0,n.useState)(Array.isArray(o.setupCommands)?o.setupCommands.join(`
8
+ `):""),[g,D]=(0,n.useState)(null),[m,S]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let p=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{};u(typeof p.baseUrl=="string"?p.baseUrl:""),f(p.sandboxCluster==="cn"?"cn":"boe"),b(typeof p.model=="string"?p.model:""),r(typeof p.reasoningEffort=="string"?p.reasoningEffort:""),c(typeof p.jwtEnv=="string"?p.jwtEnv:""),N(typeof p.systemPrompt=="string"?p.systemPrompt:""),C(Array.isArray(p.setupCommands)?p.setupCommands.join(`
9
+ `):"")},[a.bot.riff]);async function y(){D(null),S(!0);try{let p={};d.trim()&&(p.baseUrl=d.trim()),p.sandboxCluster=i,s.trim()&&(p.model=s.trim()),l&&(p.reasoningEffort=l),h.trim()&&(p.jwtEnv=h.trim()),v.trim()&&(p.systemPrompt=v.trim()),x.trim()&&(p.setupCommands=x.split(`
10
+ `).map(H=>H.trim()).filter(Boolean));let U=Object.keys(p).length?JSON.stringify(p):"",E=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/riff`,{riff:U});if(E.ok&&E.body.ok){let H=typeof E.body.riff=="string"&&E.body.riff?JSON.parse(E.body.riff):null;a.patchBot(a.bot.larkAppId,{riff:H});let w=await a.persistCliSelection?.();if(w&&!w.ok){D({text:`\u2717 ${w.note||t("botDefaults.riffCliPersistFailed")}`});return}if(w?.hadProblem){D({text:`\u26A0\uFE0F ${w.note}`});return}D({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else D({text:`\u2717 ${_(E)}`})}catch(p){D({text:`\u2717 ${L(p)}`})}finally{S(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)(M,{help:t("botDefaults.riffHelp"),children:t("botDefaults.sectionRiff")})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffBaseUrl")}),(0,e.jsx)("input",{type:"text","data-input":"riff-base-url",placeholder:t("botDefaults.riffBaseUrlPlaceholder"),value:d,disabled:m,onChange:p=>u(p.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:(0,e.jsx)(M,{help:t("botDefaults.riffSandboxClusterHelp"),children:t("botDefaults.riffSandboxCluster")})}),(0,e.jsx)(et,{dataInput:"riff-sandbox-cluster",ariaLabel:t("botDefaults.riffSandboxCluster"),value:i,disabled:m,options:qa.map(p=>({value:p,label:p.toUpperCase()})),onChange:p=>f(p)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(M,{help:t("botDefaults.riffModelHelp"),children:t("botDefaults.riffModel")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-model",list:`riff-model-suggestions-${a.bot.larkAppId}`,placeholder:t("botDefaults.riffModelPlaceholder"),value:s,disabled:m,onChange:p=>b(p.currentTarget.value)}),(0,e.jsx)("datalist",{id:`riff-model-suggestions-${a.bot.larkAppId}`,children:Ha.map(p=>(0,e.jsx)("option",{value:p},p))})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:(0,e.jsx)(M,{help:t("botDefaults.riffReasoningEffortHelp"),children:t("botDefaults.riffReasoningEffort")})}),(0,e.jsx)(et,{dataInput:"riff-reasoning-effort",ariaLabel:t("botDefaults.riffReasoningEffort"),value:l,disabled:m,options:Wa.map(p=>({value:p,label:p===""?t("botDefaults.riffReasoningEffortDefault"):p})),onChange:p=>r(p)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)(M,{help:t("botDefaults.riffJwtEnvHelp"),children:t("botDefaults.riffJwtEnv")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-jwt-env",placeholder:t("botDefaults.riffJwtEnvPlaceholder"),value:h,disabled:m,onChange:p=>c(p.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffSystemPrompt")}),(0,e.jsx)("textarea",{"data-input":"riff-system-prompt",placeholder:t("botDefaults.riffSystemPromptPlaceholder"),value:v,disabled:m,onChange:p=>N(p.currentTarget.value),rows:4})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffSetupCommands")}),(0,e.jsx)("textarea",{"data-input":"riff-setup-commands",placeholder:t("botDefaults.riffSetupCommandsPlaceholder"),value:x,disabled:m,onChange:p=>C(p.currentTarget.value),rows:3})]})}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-riff",disabled:m,onClick:()=>{y()},children:t("botDefaults.riffSave")}),(0,e.jsx)(J,{status:g,attr:{"data-riff-status":""}})]})]})}function Ka(a){let t=j(),o=a.bot.brandLabel??null,[d,u]=(0,n.useState)(o),[i,f]=(0,n.useState)(o??""),[s,b]=(0,n.useState)(null),[l,r]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let c=a.bot.brandLabel??null;u(c),f(c??"")},[a.bot.brandLabel]);async function h(c){b(null),r(!0);try{let v=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/brand-label`,{brandLabel:c});if(v.ok&&v.body.ok){let N=v.body.brandLabel??null;u(N),f(N??""),a.patchBot(a.bot.larkAppId,{brandLabel:N}),b({text:"\u2713",ok:!0})}else b({text:`\u2717 ${_(v)}`})}catch(v){b({text:`\u2717 ${L(v)}`})}finally{r(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionBrand")}),(0,e.jsxs)("div",{className:"bd-row bd-brand",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:t("botDefaults.brandLabelHelp"),children:t("botDefaults.brandLabel")}),(0,e.jsx)("input",{type:"text","data-input":"brandLabel",placeholder:t("botDefaults.brandLabelPlaceholder"),value:i,disabled:l,onChange:c=>f(c.currentTarget.value)})]}),(0,e.jsx)("small",{"data-brand-state":!0,children:sa(d,t)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-brand",disabled:l,onClick:()=>{h(i)},children:t("botDefaults.brandSave")}),(0,e.jsx)("button",{type:"button","data-action":"reset-brand",disabled:l,onClick:()=>{h(null)},children:t("botDefaults.brandReset")}),(0,e.jsx)(J,{status:s,attr:{"data-brand-status":""}})]})]})}function Va(a){let t=j(),[o,d]=(0,n.useState)(a.bot.autoGrantRequestCards!==!1),[u,i]=(0,n.useState)(a.bot.restrictGrantCommands===!0),[f,s]=(0,n.useState)(a.bot.p2pOpen===!0),[b,l]=(0,n.useState)(typeof a.bot.grantDefaultDurationMs=="number"?a.bot.grantDefaultDurationMs:null),[r,h]=(0,n.useState)(String(a.bot.grantDefaultDurationMs??36e5)),[c,v]=(0,n.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null),[N,x]=(0,n.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?String(a.bot.messageQuotaDefaultLimit):""),[C,g]=(0,n.useState)(null),[D,m]=(0,n.useState)(null),[S,y]=(0,n.useState)(null);(0,n.useEffect)(()=>{d(a.bot.autoGrantRequestCards!==!1)},[a.bot.autoGrantRequestCards]),(0,n.useEffect)(()=>{i(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;l(T),h(String(T??36e5))},[a.bot.grantDefaultDurationMs]),(0,n.useEffect)(()=>{let T=typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null;v(T),x(T===null?"":String(T))},[a.bot.messageQuotaDefaultLimit]);async function p(T,F,Y){y(F),g(F==="duration"||F==="quota"?{text:t("botDefaults.grantDefaultsSaving")}:null);try{let G=await K("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/grant-prefs`,T);if(G.ok&&G.body.ok){let B=typeof G.body.grantDefaultDurationMs=="number"?G.body.grantDefaultDurationMs:null,k=typeof G.body.messageQuotaDefaultLimit=="number"?G.body.messageQuotaDefaultLimit:null;d(G.body.autoGrantRequestCards!==!1),i(G.body.restrictGrantCommands===!0),s(G.body.p2pOpen===!0),l(B),v(k),"grantDefaultDurationMs"in T&&h(String(B??36e5)),"messageQuotaDefaultLimit"in T&&x(k===null?"":String(k)),a.patchBot(a.bot.larkAppId,{autoGrantRequestCards:G.body.autoGrantRequestCards!==!1,restrictGrantCommands:G.body.restrictGrantCommands===!0,p2pOpen:G.body.p2pOpen===!0,grantDefaultDurationMs:B,messageQuotaDefaultLimit:k}),"messageQuotaDefaultLimit"in T&&m(null),g({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else Y?.(),g({text:`\u2717 ${_(G)}`})}catch(G){Y?.(),g({text:`\u2717 ${L(G)}`})}finally{y(null)}}function U(T){h(T),g(null);let F=Number(T);if(!ia.includes(F)){g({text:`\u2717 ${t("botDefaults.grantDurationInvalid")}`});return}let Y=F===36e5?null:F;if(Y===b)return;let G=String(b??36e5);p({grantDefaultDurationMs:Y},"duration",()=>h(G))}function E(){let T=Me(N),F=T!==c;if(g(null),!F){m(null);return}if(T==="invalid"||typeof T=="number"&&T>1e3){m(t("botDefaults.quotaInvalid"));return}m(null),p({messageQuotaDefaultLimit:T},"quota")}let H=[{value:String(36e5),label:t("botDefaults.grantDuration1Hour")},{value:String(480*60*1e3),label:t("botDefaults.grantDuration8Hours")},{value:String(1440*60*1e3),label:t("botDefaults.grantDuration1Day")},{value:String(10080*60*1e3),label:t("botDefaults.grantDuration7Days")}],w=b??36e5,Z=w===36e5?t("botDefaults.grantDuration1HourValue"):String(H.find(T=>T.value===String(w))?.label??""),q=c===null?t("botDefaults.quotaHelpBuiltIn",{count:3}):c>1e3?t("botDefaults.quotaHelpLegacy",{cardCount:1e3,oncallCount:c,defaultCount:3}):t("botDefaults.quotaHelpCustom",{count:c,defaultCount:3}),W=c===null?t(b===null?"botDefaults.grantDefaultsCurrentBuiltIn":"botDefaults.grantDefaultsCurrentCustomBuiltInQuota",{duration:Z,count:3}):c>1e3?t("botDefaults.grantDefaultsCurrentLegacy",{duration:Z,cardCount:1e3,oncallCount:c}):t("botDefaults.grantDefaultsCurrentCustom",{duration:Z,count:c});return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionGrant")}),(0,e.jsxs)("div",{className:"bd-toggle-grid bd-grant-toggle-grid",children:[(0,e.jsx)(tt,{checked:o,disabled:S!==null,dataAction:"toggle-auto-grant-card",title:t("botDefaults.autoGrantCard"),help:t("botDefaults.autoGrantCardHelp"),onChange:T=>{let F=o;d(T),p({autoGrantRequestCards:T},"autoGrant",()=>d(F))}}),(0,e.jsx)(tt,{checked:u,disabled:S!==null,dataAction:"toggle-restrict-grant",title:t("botDefaults.restrictGrant"),help:t("botDefaults.restrictGrantHelp"),onChange:T=>{let F=u;i(T),p({restrictGrantCommands:T},"restrict",()=>i(F))}}),(0,e.jsx)(tt,{checked:f,disabled:S!==null,dataAction:"toggle-p2p-open",title:t("botDefaults.p2pOpen"),help:t("botDefaults.p2pOpenHelp"),onChange:T=>{let F=f;s(T),p({p2pOpen:T},"p2pOpen",()=>s(F))}})]}),(0,e.jsxs)("form",{className:"bd-grant-defaults",noValidate:!0,onSubmit:T=>{T.preventDefault(),E()},children:[(0,e.jsx)("div",{className:"bd-row bd-grant-duration",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)(M,{help:t("botDefaults.grantDurationHelp"),children:t("botDefaults.grantDurationDefault")}),(0,e.jsx)(et,{dataInput:"grantDefaultDurationMs",value:r,options:H,disabled:S!==null,ariaLabel:t("botDefaults.grantDurationDefault"),onChange:U})]})}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)(M,{help:q,children:t("botDefaults.quotaDefault")}),(0,e.jsx)("input",{type:"number",min:1,max:1e3,step:1,"data-input":"quotaLimit",placeholder:t("botDefaults.quotaPlaceholder",{count:3}),value:N,disabled:S!==null,"aria-label":t("botDefaults.quotaDefault"),"aria-invalid":D?!0:void 0,"aria-describedby":D?"grant-defaults-state grant-default-quota-error":"grant-defaults-state",onChange:T=>{x(T.currentTarget.value),m(null),g(null)},onBlur:E,onKeyDown:T=>{T.key==="Enter"&&(T.preventDefault(),T.currentTarget.blur())}})]}),D?(0,e.jsx)("small",{id:"grant-default-quota-error",className:"bd-field-error",role:"alert",children:D}):null,(0,e.jsx)("small",{id:"grant-defaults-state","data-grant-defaults-state":!0,children:W})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(J,{status:C,attr:{"data-grant-status":""}})})]})]})}function bo(a){return ee(a,(0,e.jsx)(ua,{}))}export{Dt as BOT_DEFAULTS_TABS,kt as BdTabGrid,ya as BotAgentSection,ua as BotDefaultsPage,ta as BotDefaultsTabs,Pa as CardBehaviorSection,Ma as CodexAppDisplaySection,Oe as DASHBOARD_MAX_TURN_TIMEOUT_MS,Ba as EnvelopeInjectionSection,Va as GrantSection,Ea as SessionGroupTagRow,na as buildSubstituteTarget,Re as effectiveAccess,bo as renderBotDefaultsPage};
@@ -0,0 +1,2 @@
1
+ import{a as Fe}from"./chunk-ZJVTGU5X.js";import{f as he,h as Me,i as De,w as Oe,x as d}from"./chunk-F6KNPF4R.js";import{a as pe,d as Y}from"./chunk-5THX4DI2.js";import{c as D}from"./chunk-7SZRL6FY.js";var Ge="#/agent-workbench",He="#/agent-workbench-dock";var ke=[{value:"status",label:"\u72B6\u6001"},{value:"bot",label:"\u673A\u5668\u4EBA"},{value:"chat",label:"\u4F1A\u8BDD\u4F4D\u7F6E"},{value:"kind",label:"\u7C7B\u578B"},{value:"cli",label:"CLI"},{value:"time",label:"\u6D3B\u8DC3\u65F6\u95F4"}];function F(e){return typeof e=="string"&&ke.some(n=>n.value===e)}var Kn=new Set(["starting","working","analyzing","active","idle","limited"]),Bn=512;function X(e){return typeof e=="string"&&e.length>0&&e.length<=Bn&&!/[\u0000-\u001f\u007f]/.test(e)}function fe(e,n){let t=e==="dock"?He:Ge;return X(n)?`${t}/${encodeURIComponent(n)}`:t}function Bt(e){let n=String(e||"").split("?")[0].replace(/\/+$/,"");for(let[t,r]of[["dock",He],["main",Ge]]){if(n===r)return{surface:t,sessionId:null};if(!n.startsWith(`${r}/`))continue;let o=n.slice(r.length+1),s;try{s=decodeURIComponent(o)}catch{return null}return X(s)?{surface:t,sessionId:s}:null}return null}function q(e){return Number.isFinite(e)?Math.min(460,Math.max(176,Math.round(e))):300}function Gn(e){return Number.isFinite(e)?Math.min(.72,Math.max(.28,Math.round(e*1e3)/1e3)):.5}function J(){return{version:1,railWidth:300,railCollapsed:!1,focus:"terminal",paneMode:"focus",splitAxis:"horizontal",splitRatio:.5,chatRequested:!1}}function me(e){let n=J();if(!e||typeof e!="object"||Array.isArray(e))return n;let t=e;return{version:1,railWidth:q(Number(t.railWidth)),railCollapsed:t.railCollapsed===!0,focus:t.focus==="web"?"web":"terminal",paneMode:t.paneMode==="split"?"split":"focus",splitAxis:t.splitAxis==="vertical"?"vertical":"horizontal",splitRatio:Gn(Number(t.splitRatio)),chatRequested:t.chatRequested===!0}}function Gt(e,n){return e<620?{mode:"mobile",step:"mobile-stack",railCollapsed:!0,paneMode:"focus",chatMode:"jump"}:e<960?{mode:"desktop",step:"chat-jump",railCollapsed:n.railCollapsed,paneMode:"focus",chatMode:"jump"}:e<1120?{mode:"desktop",step:"focus",railCollapsed:n.railCollapsed,paneMode:"focus",chatMode:"native-split"}:e<1280?{mode:"desktop",step:"rail-collapsed",railCollapsed:n.railCollapsed,paneMode:n.paneMode,chatMode:"native-split"}:{mode:"desktop",step:"full",railCollapsed:n.railCollapsed,paneMode:n.paneMode,chatMode:"native-split"}}function Q(e){if(e.status==="closed")return null;let n=String(e.agentAttention?.reason??"").trim();return n||(e.agentAttention?"Agent \u8BF7\u6C42\u534F\u52A9":e.pendingRepo?"\u9700\u8981\u9009\u62E9\u4ED3\u5E93":e.tuiPromptActive?"\u7EC8\u7AEF\u6709\u5F85\u786E\u8BA4\u7684\u63D0\u793A":e.queued?"\u5F85\u542F\u52A8":e.status==="limited"?"\u7528\u91CF\u5DF2\u8FBE\u4E0A\u9650":null)}function ge(e){return e.chatType==="p2p"?"p2p":e.scope==="thread"?"thread":e.scope==="chat"?"group":null}function Z(e,n=!1){return Q(e)||n&&e.status!=="closed"?"needs-you":e.status!=="closed"&&e.status!=="dormant"&&Kn.has(e.status)||e.status!=="closed"&&e.status!=="dormant"?"active":"recent"}function L(e){let n=Number(e.agentAttention?.at??e.lastMessageAt??e.closedAt??e.spawnedAt??0);return Number.isFinite(n)?n:0}function ye(e){return String(e.title??"").trim()||String(e.chatDisplayName??"").trim()||e.sessionId}function $e(e){return[ye(e),e.sessionId,e.botName,e.cliId,e.repoName,e.workingDir,e.gitBranch,e.chatDisplayName,Q(e)].filter(Boolean).join(`
2
+ `).toLocaleLowerCase()}function Ht(e,n=""){let t=n.trim().toLocaleLowerCase(),r={"needs-you":[],active:[],recent:[]};for(let o of e)X(o.sessionId)&&(t&&!$e(o).includes(t)||r[Z(o)].push(o));for(let o of Object.values(r))o.sort((s,l)=>L(l)-L(s)||s.sessionId.localeCompare(l.sessionId));return r}var Ue="\u5F85\u4F60\u5904\u7406",Je={"needs-you":Ue,active:"\u8FDB\u884C\u4E2D",recent:"\u6700\u8FD1"},Hn={thread:"\u8BDD\u9898",group:"\u7FA4",p2p:"\u5355\u804A"},$n=["\u8BDD\u9898","\u7FA4","\u5355\u804A","\u5176\u4ED6"],Un=["\u4ECA\u5929","\u6628\u5929","\u672C\u5468","\u66F4\u65E9"],Jn={status:["active","recent"],kind:$n.map(e=>`kind:${e}`),time:Un.map(e=>`time:${e}`)};function z(e){return typeof e=="string"?e.trim():""}function be(e){let n=new Date(e);return n.setHours(0,0,0,0),n}function jn(e){let n=be(e),t=be(e);t.setDate(t.getDate()-1);let r=be(e);return r.setDate(r.getDate()-6),{today:n.getTime(),yesterday:t.getTime(),week:r.getTime()}}function Vn(e,n){return e>0?e>=n.today?"\u4ECA\u5929":e>=n.yesterday?"\u6628\u5929":e>=n.week?"\u672C\u5468":"\u66F4\u65E9":"\u66F4\u65E9"}function Yn(e,n,t){switch(n){case"bot":{let r=z(e.botName)||"\u672A\u77E5\u673A\u5668\u4EBA";return{key:`bot:${r}`,label:r}}case"chat":{let r=z(e.chatDisplayName)||z(e.chatId)||"\u672A\u77E5\u4F1A\u8BDD";return{key:`chat:${r}`,label:r}}case"kind":{let r=ge(e),o=r?Hn[r]:"\u5176\u4ED6";return{key:`kind:${o}`,label:o}}case"cli":{let r=z(e.cliId)||"unknown";return{key:`cli:${r}`,label:r}}case"time":{let r=Vn(L(e),t);return{key:`time:${r}`,label:r}}default:{let r=Z(e)==="recent"?"recent":"active";return{key:r,label:Je[r]}}}}function Ke(e,n){return L(n)-L(e)||e.sessionId.localeCompare(n.sessionId)}function je(e,n){let t=String(n.query??"").trim().toLocaleLowerCase(),r=n.unreadIds,o=Number.isFinite(n.now)?Number(n.now):Date.now(),s=jn(o),l=F(n.dimension)?n.dimension:"status",b=[],v=new Map;for(let h of e){if(!X(h.sessionId)||t&&!$e(h).includes(t))continue;let m=r?.has(h.sessionId)===!0;if(Z(h,m)==="needs-you"){b.push(h);continue}let g=Yn(h,l,s),I=v.get(g.key);I?I.sessions.push(h):v.set(g.key,{key:g.key,label:g.label,kind:"plain",sessions:[h]})}let y=Jn[l],S=[...v.values()];if(y)S.sort((h,m)=>{let g=y.indexOf(h.key),I=y.indexOf(m.key);return(g<0?y.length:g)-(I<0?y.length:I)||h.label.localeCompare(m.label)});else{let h=new Map(S.map(m=>[m.key,m.sessions.reduce((g,I)=>Math.max(g,L(I)),0)]));S.sort((m,g)=>(h.get(g.key)??0)-(h.get(m.key)??0)||m.label.localeCompare(g.label))}for(let h of S)h.sessions.sort(Ke);let k=[];return b.length>0&&(b.sort(Ke),k.push({key:"needs-you",label:Ue,kind:"needs-you",sessions:b})),k.push(...S),k}function zn(e){return["needs-you","active","recent"].map(n=>({key:n,label:Je[n],kind:n==="needs-you"?"needs-you":"plain",sessions:e[n]}))}function Be(e,n){return e.kind==="needs-you"?"needs-you":n?Z(n):e.key==="recent"?"recent":"active"}function Ve(e,n){let t=Array.isArray(e)?e:zn(e),r=[];for(let o of t){let s=o.kind==="needs-you",l=n?.has(o.key)===!0;if(r.push({kind:"header",key:`header-${o.key}`,group:Be(o),groupKey:o.key,label:o.label,count:o.sessions.length,isNeedsYou:s,collapsed:l}),!l)for(let b of o.sessions)r.push({kind:"session",key:`${o.key}-${b.sessionId}`,group:Be(o,b),groupKey:o.key,label:o.label,isNeedsYou:s,session:b})}return r}function ee(e,n=!1){return e.kind==="header"?30:n?60:54}function Ye(e,n,t,r=240,o=!1){let s=new Array(e.length+1);s[0]=0;for(let k=0;k<e.length;k+=1)s[k+1]=s[k]+ee(e[k],o);let l=s[e.length]??0,b=Math.max(0,Number.isFinite(n)?n-r:0),v=Math.min(l,Math.max(0,n)+Math.max(0,t)+r),y=0;for(;y<e.length&&s[y+1]<b;)y+=1;let S=y;for(;S<e.length&&s[S]<=v;)S+=1;return{start:y,end:S,offsetTop:s[y]??0,totalHeight:l,positions:s}}function ze(e,n=Date.now(),t="en"){if(!Number.isFinite(e)||e<=0)return"\u2014";let r=Math.round((e-n)/1e3),o=Math.abs(r);if(o<45)return t.toLowerCase().startsWith("zh")?"\u521A\u521A":"just now";let s=[["year",365*24*60*60],["month",720*60*60],["day",1440*60],["hour",3600],["minute",60]],[l,b]=s.find(([,v])=>o>=v)??["minute",60];return new Intl.RelativeTimeFormat(t,{numeric:"auto",style:"short"}).format(Math.round(r/b),l)}function $t(e,n){let t=Xn(e);return t||(!e.webPort||!e.proxyPort||!n?null:`${n.origin}/s/${encodeURIComponent(e.sessionId)}`)}function Xn(e){if(typeof e.riffAccessUrl!="string"||e.riffAccessUrl.length>2048)return null;try{let n=new URL(e.riffAccessUrl);return n.protocol!=="http:"&&n.protocol!=="https:"||n.username||n.password?null:n.toString()}catch{return null}}function Ut(e){let n=e.preview?.path;if(typeof n!="string"||n.length>2048)return null;let t=`/preview/${encodeURIComponent(e.sessionId)}/`;return n===t?n:null}function Xe(e){return e==="lark"?"https://applink.larksuite.com":"https://applink.feishu.cn"}function qe(e,n="feishu"){let t=new URL("/client/chat/open",Xe(n));return t.searchParams.set("openChatId",e),t.toString()}function Vt(e){if(!e.appId.trim()||!/^https?:\/\//.test(e.targetOrigin))return null;try{let n=new URL("/client/web_app/open",Xe(e.brand??"feishu")),t=fe(e.surface,e.sessionId),r=new URL("/",e.targetOrigin);return r.protocol!=="http:"&&r.protocol!=="https:"?null:(r.hash=t,n.searchParams.set("appId",e.appId),n.searchParams.set("mode",e.surface==="dock"?"sidebar":"appCenter"),e.surface==="dock"&&(n.searchParams.set("min_width","350"),n.searchParams.set("max_width","520")),n.searchParams.set("lk_target_url",r.toString()),n.toString())}catch{return null}}function Yt(e,n,t){return`${/^\/[A-Za-z0-9/_-]+$/.test(e)?e:"/auth/feishu"}?returnTo=${encodeURIComponent(`/${fe(n,t)}`)}`}var qn="x-botmux-csrf",Qn="botmux-csrf";function Zn(){if(typeof document>"u")return null;let n=document.querySelector(`meta[name="${Qn}"]`)?.getAttribute("content")?.trim();return n||null}function Qe(){let e=Zn();return e?{[qn]:e}:{}}var A=class extends Error{constructor(t,r,o){super(r);this.status=t;this.code=r;this.retryAfterSeconds=o;this.name="WorkbenchApiError"}status;code;retryAfterSeconds};function et(e,n){if(e.status!==429)return;let t=Number(e.headers?.get?.("retry-after"));if(Number.isFinite(t)&&t>0)return Math.ceil(t);let r=Number(n?.retryAfterMs);if(Number.isFinite(r)&&r>0)return Math.ceil(r/1e3)}async function C(e,n,t={}){let o=String(t.method??"GET").toUpperCase()==="GET"?t.headers:{...Qe(),...t.headers},s=await e(n,{cache:"no-store",...t,headers:o}),l=await s.json().catch(()=>null);if(!s.ok||!l||l.ok===!1)throw new A(s.status,String(l?.error??`http_${s.status}`),et(s,l));return l}function K(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new A(502,n);return e}function Ze(e,n){if(e!==void 0){if(typeof e!="number"||!Number.isSafeInteger(e)||e<=0)throw new A(502,n);return e}}function we(e,n){let t=K(e,"invalid_control_response");if(t.mode!=="readonly"&&t.mode!=="controlled")throw new A(502,"invalid_control_response");let r=typeof t.owned=="boolean"?t.owned:n;if(typeof r!="boolean")throw new A(502,"invalid_control_response");let o=Ze(t.expiresAt,"invalid_control_response"),s=t.fixed===void 0?void 0:t.fixed;if(s!==void 0&&typeof s!="boolean")throw new A(502,"invalid_control_response");if(t.mode==="readonly"&&(r||o!==void 0)||t.mode==="controlled"&&o===void 0&&s!==!0)throw new A(502,"invalid_control_response");let l=t.reused===void 0?void 0:t.reused;if(l!==void 0&&typeof l!="boolean")throw new A(502,"invalid_control_response");if(s===!0&&(t.mode!=="controlled"||!r||o!==void 0))throw new A(502,"invalid_control_response");return{mode:t.mode,owned:r,...o===void 0?{}:{expiresAt:o},...l===void 0?{}:{reused:l},...s===void 0?{}:{fixed:s}}}function ne(e){let n=K(e,"invalid_preview_interaction_response");if(n.mode!=="preview"&&n.mode!=="interactive")throw new A(502,"invalid_preview_interaction_response");if(typeof n.label!="string"||!n.label||n.label.length>256||typeof n.securityNotice!="string"||!n.securityNotice||n.securityNotice.length>1024)throw new A(502,"invalid_preview_interaction_response");let t=Ze(n.idleExpiresAt,"invalid_preview_interaction_response");if(n.mode==="preview"&&t!==void 0||n.mode==="interactive"&&t===void 0)throw new A(502,"invalid_preview_interaction_response");return{mode:n.mode,label:n.label,securityNotice:n.securityNotice,...t===void 0?{}:{idleExpiresAt:t}}}function nt(){let e=globalThis.window?.location?.origin;return typeof e=="string"&&e?e:null}function tt(e){let n=nt();if(!n)return e;try{let t=new URL(e,n);return t.protocol!=="http:"&&t.protocol!=="https:"?e:t.toString()}catch{return e}}function Se(e,n){return`/api/sessions/${encodeURIComponent(e)}/control${n?`/${n}`:""}`}function te(e,n){return`/api/sessions/${encodeURIComponent(e)}/preview-interaction${n?`/${n}`:""}`}function en(e=fetch){return{getTerminalControl:async(n,t)=>we(await C(e,Se(n),{signal:t})),takeoverTerminal:async(n,t)=>we(await C(e,Se(n,"takeover"),{method:"POST",signal:t}),!0),releaseTerminal:async(n,t)=>we(await C(e,Se(n,"release"),{method:"POST",signal:t}),!1),getPreviewInteraction:async(n,t)=>ne(await C(e,te(n),{signal:t})),unlockPreview:async(n,t)=>ne(await C(e,te(n,"unlock"),{method:"POST",signal:t})),touchPreview:async(n,t)=>ne(await C(e,te(n,"activity"),{method:"POST",signal:t})),lockPreview:async(n,t)=>ne(await C(e,te(n,"lock"),{method:"POST",signal:t})),async locateSession(n,t){await C(e,`/api/sessions/${encodeURIComponent(n)}/locate`,{method:"POST",signal:t})},async getTerminalViewLink(n,t){try{let r=K(await C(e,`/api/sessions/${encodeURIComponent(n)}/view-link`,{signal:t}),"invalid_view_link_response");if(typeof r.url!="string"||r.url.length>2048||!/^\/s\/[^/\\]/.test(r.url))return null;let o=typeof r.expiresAt=="number"&&Number.isSafeInteger(r.expiresAt)&&r.expiresAt>0?r.expiresAt:null;return{url:tt(r.url),expiresAt:o}}catch{return null}},async getStandingLink(n){try{let t=K(await C(e,"/api/workbench/standing-link",{signal:n}),"invalid_standing_link_response");if(typeof t.url!="string"||!t.url||t.url.length>2048)return null;let r=new URL(t.url);return r.protocol!=="http:"&&r.protocol!=="https:"?null:{url:t.url}}catch{return null}},async getH5Context(n){try{let t=K(await C(e,"/api/workbench/h5-context",{signal:n}),"invalid_h5_context_response"),r=K(t.h5,"invalid_h5_context_response");if(typeof r.enabled!="boolean"||typeof r.appId!="string"||r.appId.length>256||r.brand!=="feishu"&&r.brand!=="lark"||typeof r.entryPath!="string"||!/^\/[A-Za-z0-9/_-]{1,127}$/.test(r.entryPath))throw new A(502,"invalid_h5_context_response");return{enabled:r.enabled,appId:r.appId,brand:r.brand,entryPath:r.entryPath}}catch{return null}}}}var w=D(pe(),1);var ve="botmux.agent-workbench.appearance.v1",Ae=["ink","slate-blue","warm-graphite","light-frost"];var rt={"orca-ink":"ink"},ot={orca:"reader"};function it(e){return ct(e)?e:typeof e=="string"?rt[e]??null:null}function st(e){return lt(e)?e:typeof e=="string"?ot[e]??null:null}var re="light-frost",rn="slate-blue",at="classic";function ct(e){return typeof e=="string"&&Ae.includes(e)}function lt(e){return e==="reader"||e==="classic"}function ut(e){return e===re?"light":"dark"}function B(e="dark"){return{skin:rn,mode:he(e)??"dark",termStyle:at}}function xe(e,n="dark"){let t=B(n);if(!e||typeof e!="object"||Array.isArray(e))return t;let r=e;return{skin:it(r.skin)??t.skin,mode:he(r.mode)??t.mode,termStyle:st(r.termStyle)??t.termStyle}}function nn(e,n="dark"){if(!e)return B(n);try{let t=e.getItem(ve);return t?xe(JSON.parse(t),n):B(n)}catch{return B(n)}}function dt(e,n){if(!e)return!1;try{return e.setItem(ve,JSON.stringify(xe(n))),!0}catch{return!1}}function pt(e,n){return Me(e.mode,n)==="light"?re:e.skin===re?rn:e.skin}function on(e,n){if(n===re)return e.mode==="light"?e:{...e,mode:"light"};let t=e.mode==="light"?"dark":e.mode;return{...e,skin:n,mode:t}}function sn(e,n){return e.mode===n?e:{...e,mode:n}}function an(e,n){return e.termStyle===n?e:{...e,termStyle:n}}function er(e){return e==="reader"?"wb-term-reader":"wb-term-classic"}var cn={ink:{bg:"#212121",raise:"#3C3C3C",accent:"#FF8B63"},"slate-blue":{bg:"#19212C",raise:"#333F4E",accent:"#6FCBF7"},"warm-graphite":{bg:"#24211A",raise:"#443E34",accent:"#F2A33C"},"light-frost":{bg:"#F3F6F9",raise:"#C9D7E8",accent:"#0B5F8F"}},ht={background:"#1a1b26",foreground:"#a9b1d6",cursor:"#c0caf5",selectionBackground:"#33467c",black:"#15161e",red:"#f7768e",green:"#9ece6a",yellow:"#e0af68",blue:"#7aa2f7",magenta:"#bb9af7",cyan:"#7dcfff",white:"#a9b1d6"},bt={ink:{background:"#030303",foreground:"#EDEDED",cursor:"#FF8B63",selectionBackground:"#3C3C3C",black:"#181818",red:"#FF8C8F",green:"#3ED598",yellow:"#EFC260",blue:"#FF8B63",magenta:"#D8A0FF",cyan:"#7FD8D0",white:"#A6A6A6"},"slate-blue":{background:"#030407",foreground:"#E4EBF2",cursor:"#6FCBF7",selectionBackground:"#333F4E",black:"#141922",red:"#F58A94",green:"#63D6A0",yellow:"#EDB95C",blue:"#6FCBF7",magenta:"#C0A6F5",cyan:"#7FD8D0",white:"#A2B2C3"},"warm-graphite":{background:"#040402",foreground:"#F0EBE1",cursor:"#F2A33C",selectionBackground:"#443E34",black:"#1B1912",red:"#FF9186",green:"#5FCE9B",yellow:"#EAC14F",blue:"#F2A33C",magenta:"#D9A7DA",cyan:"#7FD8D0",white:"#B3AA9C"},"light-frost":{background:"#16202B",foreground:"#E8EEF5",cursor:"#6FCBF7",selectionBackground:"#33465C",black:"#16202B",red:"#F58A94",green:"#63D6A0",yellow:"#EDB95C",blue:"#6FCBF7",magenta:"#C0A6F5",cyan:"#7FD8D0",white:"#A7B6C6"}};function ln(e,n){return e==="reader"?bt[n]:ht}var kt="--term-canvas-bg";function nr(e,n){return{[kt]:ln(e,n).background}}var ft="botmux:wb-appearance";function mt(e,n){return{type:ft,termStyle:e,skin:n,theme:ln(e,n)}}function tr(e,n,t,r,o){let s=e?.contentWindow;if(!s||!n)return!1;let l;try{l=new URL(n,o).origin}catch{return!1}if(!l||l==="null")return!1;try{return s.postMessage(mt(t,r),l),!0}catch{return!1}}function tn(e,n){if(!e)return{};let t={skin:e.dataset.skin,theme:e.dataset.theme};return e.dataset.skin=n.skin,e.dataset.theme=n.theme,t}function gt(e,n){e&&(n.skin===void 0?delete e.dataset.skin:e.dataset.skin=n.skin,n.theme===void 0?delete e.dataset.theme:e.dataset.theme=n.theme)}function yt(){if(typeof window>"u")return null;let e=null;try{e=window.localStorage}catch{e=null}let n=window.matchMedia?.("(prefers-color-scheme: dark)")??null;return{storage:e,root:typeof document>"u"?null:document.documentElement,inheritedMode:De(e??void 0),prefersDark:()=>!!n?.matches,onSystemThemeChange:t=>(n?.addEventListener("change",t),()=>n?.removeEventListener("change",t)),onStorageChange:t=>{let r=o=>t(o.key,o.newValue);return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}}}var We=class{env=null;envResolved=!1;value=B();snapshot=this.buildSnapshot(!1);listeners=new Set;mounted=0;disposers=[];rootSnapshot=null;configure(n){this.envResolved||(this.envResolved=!0,this.env=n,n&&(this.value=nn(n.storage,n.inheritedMode),this.snapshot=this.buildSnapshot(n.prefersDark())))}getSnapshot(){return this.ensureEnv(),this.snapshot}subscribe(n){return this.ensureEnv(),this.listeners.add(n),()=>{this.listeners.delete(n)}}set(n){this.ensureEnv(),n!==this.value&&(this.value=n,dt(this.env?.storage,n),this.refresh())}mount(){this.ensureEnv(),this.mounted+=1,this.mounted===1&&this.bind();let n=!1;return()=>{n||(n=!0,this.mounted-=1,this.mounted===0&&this.unbind())}}reset(){this.unbind(),this.mounted=0,this.env=null,this.envResolved=!1,this.value=B(),this.snapshot=this.buildSnapshot(!1),this.listeners.clear()}ensureEnv(){this.envResolved||this.configure(yt())}bind(){let n=this.env;n&&(this.rootSnapshot=tn(n.root,{skin:this.snapshot.skin,theme:this.snapshot.theme}),n.onSystemThemeChange&&this.disposers.push(n.onSystemThemeChange(()=>this.refresh())),n.onStorageChange&&this.disposers.push(n.onStorageChange((t,r)=>{if(t!==null&&t!==ve)return;let o=null;if(r)try{o=JSON.parse(r)}catch{o=null}this.value=r?xe(o,n.inheritedMode):nn(n.storage,n.inheritedMode),this.refresh()})))}unbind(){for(let n of this.disposers.splice(0))n();this.rootSnapshot&&(gt(this.env?.root,this.rootSnapshot),this.rootSnapshot=null)}reapply(){this.refresh()}refresh(){let n=this.buildSnapshot(this.env?.prefersDark()??!1),t=this.snapshot,r=t.skin===n.skin&&t.theme===n.theme&&t.appearance.skin===n.appearance.skin&&t.appearance.mode===n.appearance.mode&&t.appearance.termStyle===n.appearance.termStyle;if(r?this.value=t.appearance:this.snapshot=n,this.rootSnapshot&&tn(this.env?.root,{skin:this.snapshot.skin,theme:this.snapshot.theme}),!r)for(let o of this.listeners)o()}buildSnapshot(n){let t=pt(this.value,n);return{appearance:this.value,skin:t,theme:ut(t)}}},E=new We;var a=D(Y(),1),un={ink:"workbench.appearance.skin.ink","slate-blue":"workbench.appearance.skin.slateBlue","warm-graphite":"workbench.appearance.skin.warmGraphite","light-frost":"workbench.appearance.skin.lightFrost"},wt=[{value:"system",labelKey:"workbench.appearance.mode.system"},{value:"light",labelKey:"workbench.appearance.mode.light"},{value:"dark",labelKey:"workbench.appearance.mode.dark"}],St=[{value:"reader",labelKey:"workbench.appearance.term.reader"},{value:"classic",labelKey:"workbench.appearance.term.classic"}],Wt=null;function hn(){return Wt??=en()}function vt(e){return E.subscribe(e)}function dn(){return E.getSnapshot()}function bn(){return(0,w.useSyncExternalStore)(vt,dn,dn)}function cr(){return(0,w.useEffect)(()=>E.mount(),[]),(0,w.useEffect)(()=>Oe.on(()=>E.reapply()),[]),bn()}function At(e){E.set(on(E.getSnapshot().appearance,e))}function xt(e){E.set(sn(E.getSnapshot().appearance,e))}function Rt(e){E.set(an(E.getSnapshot().appearance,e))}function pn(e,n){let r=[...e.currentTarget.querySelectorAll('button[role="radio"]')];if(r.length===0)return;let o=r.indexOf(e.target),s=r[((o<0?0:o)+n+r.length)%r.length];e.preventDefault(),s.focus(),s.click()}function Re(e){e.key==="ArrowRight"||e.key==="ArrowDown"?pn(e,1):(e.key==="ArrowLeft"||e.key==="ArrowUp")&&pn(e,-1)}function Ct(e){return(0,a.jsx)("span",{className:"wb-seg wb-term-style-seg",role:"radiogroup","aria-label":d("workbench.appearance.termStyleLabel"),onKeyDown:Re,children:St.map(n=>(0,a.jsx)("button",{type:"button",role:"radio",className:`wb-seg-item${e.termStyle===n.value?" is-on":""}`,"aria-checked":e.termStyle===n.value,tabIndex:e.termStyle===n.value?0:-1,onClick:()=>Rt(n.value),children:d(n.labelKey)},n.value))})}function kn(){let{appearance:e,skin:n}=bn();return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"wb-appearance-group",children:[(0,a.jsx)("span",{className:"wb-appearance-group-label",id:"wb-appearance-theme-label",children:d("workbench.appearance.themeGroup")}),(0,a.jsx)("span",{className:"wb-skin-swatches",role:"radiogroup","aria-labelledby":"wb-appearance-theme-label",onKeyDown:Re,children:Ae.map(t=>{let r=cn[t],o=n===t;return(0,a.jsxs)("button",{type:"button",role:"radio",className:`wb-skin-swatch${o?" is-active":""}`,"aria-checked":o,tabIndex:o?0:-1,title:d(un[t]),onClick:()=>At(t),children:[(0,a.jsx)("span",{className:"wb-skin-swatch-chip","aria-hidden":"true",style:{"--sw-bg":r.bg,"--sw-raise":r.raise,"--sw-accent":r.accent}}),(0,a.jsx)("span",{className:"wb-skin-swatch-name",children:d(un[t])})]},t)})}),(0,a.jsx)("span",{className:"wb-seg wb-appearance-mode-seg",role:"radiogroup","aria-label":d("workbench.appearance.modeLabel"),onKeyDown:Re,children:wt.map(t=>(0,a.jsx)("button",{type:"button",role:"radio",className:`wb-seg-item${e.mode===t.value?" is-on":""}`,"aria-checked":e.mode===t.value,tabIndex:e.mode===t.value?0:-1,onClick:()=>xt(t.value),children:d(t.labelKey)},t.value))})]}),(0,a.jsxs)("div",{className:"wb-appearance-group",children:[(0,a.jsx)("span",{className:"wb-appearance-group-label",children:d("workbench.appearance.termGroup")}),(0,a.jsx)(Ct,{termStyle:e.termStyle}),(0,a.jsx)("p",{className:"wb-appearance-note",children:d("workbench.appearance.termNote")})]})]})}function fn(e){let[n,t]=(0,w.useState)(null),[r,o]=(0,w.useState)(!0),[s,l]=(0,w.useState)("idle"),b=(0,w.useRef)(null),{api:v}=e;(0,w.useEffect)(()=>{let k=typeof AbortController=="function"?new AbortController:null,h=!0;return v.getStandingLink(k?.signal).then(m=>{h&&(t(m?.url??null),o(!1))}),()=>{h=!1,k?.abort()}},[v]);let y=e.copy??Fe,S=async()=>{n&&l(await y(n)?"copied":"failed")};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("header",{className:"wb-appearance-head",children:[(0,a.jsx)("strong",{children:d("workbench.standingLink.title")}),(0,a.jsx)("button",{type:"button","aria-label":d("workbench.appearance.close"),onClick:e.onClose,children:"\u2715"})]}),r?(0,a.jsx)("p",{className:"wb-standing-link-status",role:"status",children:d("workbench.standingLink.loading")}):n?(0,a.jsxs)("div",{className:"wb-standing-link-body",children:[(0,a.jsx)("textarea",{ref:b,className:"wb-standing-link-url",readOnly:!0,rows:3,value:n,"aria-label":d("workbench.standingLink.fieldLabel"),onFocus:k=>k.currentTarget.select(),onClick:k=>k.currentTarget.select()}),(0,a.jsx)("button",{type:"button",className:"wb-standing-link-copy",onClick:()=>{S()},children:s==="copied"?d("workbench.standingLink.copied"):s==="failed"?d("workbench.standingLink.copyFailed"):d("workbench.standingLink.copy")})]}):(0,a.jsx)("p",{className:"wb-standing-link-status",role:"status",children:d("workbench.standingLink.error")}),(0,a.jsx)("p",{className:"wb-standing-link-note wb-appearance-note",children:d("workbench.standingLink.note")})]})}function mn(e,n,t){(0,w.useEffect)(()=>{if(!e||typeof document>"u")return;let r=s=>{s.key==="Escape"&&n()},o=s=>{let l=s.target;l instanceof Node&&t.current&&!t.current.contains(l)&&n()};return document.addEventListener("keydown",r),document.addEventListener("mousedown",o),()=>{document.removeEventListener("keydown",r),document.removeEventListener("mousedown",o)}},[n,e,t])}function lr(e){let n=(0,w.useRef)(null),[t,r]=(0,w.useState)(!1),o=e.api??hn();return mn(e.open,e.onClose,n),(0,w.useEffect)(()=>{e.open||r(!1)},[e.open]),e.open?(0,a.jsx)("div",{className:"wb-appearance-backdrop",children:(0,a.jsx)("div",{ref:n,className:"wb-appearance-sheet",role:"dialog","aria-label":d("workbench.appearance.title"),children:t?(0,a.jsx)(fn,{api:o,onClose:e.onClose}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("header",{className:"wb-appearance-head",children:[(0,a.jsx)("strong",{children:d("workbench.appearance.title")}),(0,a.jsx)("button",{type:"button","aria-label":d("workbench.appearance.close"),onClick:e.onClose,children:"\u2715"})]}),(0,a.jsx)(kn,{}),e.standingLink?(0,a.jsx)("div",{className:"wb-appearance-group",children:(0,a.jsx)("button",{type:"button",className:"wb-standing-link-open",onClick:()=>r(!0),children:d("workbench.standingLink.title")})}):null]})})}):null}function ur(e={}){let[n,t]=(0,w.useState)(null),r=(0,w.useRef)(null),o=(0,w.useRef)(null),s=e.api??hn(),l=(0,w.useCallback)(()=>{t(b=>(b!==null&&o.current?.focus(),null))},[]);return mn(n!==null,l,r),(0,a.jsxs)("div",{className:"wb-more",ref:r,children:[(0,a.jsx)("button",{ref:o,type:"button",className:"wb-more-btn","aria-haspopup":"menu","aria-expanded":n!==null,"aria-label":d("workbench.appearance.more"),title:d("workbench.appearance.more"),onClick:()=>t(b=>b===null?"menu":null),children:"\u22EF"}),n==="menu"?(0,a.jsxs)("div",{className:"wb-more-menu",role:"menu",children:[(0,a.jsx)("button",{type:"button",role:"menuitem",className:"wb-more-item",autoFocus:!0,onClick:()=>t("panel"),children:d("workbench.appearance.title")}),e.standingLink?(0,a.jsx)("button",{type:"button",role:"menuitem",className:"wb-more-item",onClick:()=>t("standing"),children:d("workbench.standingLink.title")}):null]}):null,n==="panel"?(0,a.jsxs)("div",{className:"wb-appearance-pop",role:"dialog","aria-label":d("workbench.appearance.title"),children:[(0,a.jsxs)("header",{className:"wb-appearance-head",children:[(0,a.jsx)("strong",{children:d("workbench.appearance.title")}),(0,a.jsx)("button",{type:"button","aria-label":d("workbench.appearance.close"),onClick:l,children:"\u2715"})]}),(0,a.jsx)(kn,{})]}):null,n==="standing"?(0,a.jsx)("div",{className:"wb-appearance-pop wb-standing-link-pop",role:"dialog","aria-label":d("workbench.standingLink.title"),children:(0,a.jsx)(fn,{api:s,onClose:l})}):null]})}var Et="botmux.agent-workbench.layout.v1:",yn="botmux.agent-workbench.rail.v1",wn="botmux.agent-workbench.seen.v1",Sn="botmux.agent-workbench.group-dim.v1",Wn="botmux.agent-workbench.collapsed.v1",Tt=500,It=200;function vn(e){return`${Et}${encodeURIComponent(e)}`}function hr(e,n){if(!n)return J();try{let t=n.getItem(vn(e));return t?me(JSON.parse(t)):J()}catch{return J()}}function br(e,n,t){if(!t)return!1;try{return t.setItem(vn(e),JSON.stringify(me(n))),!0}catch{return!1}}function kr(e){if(!e)return null;try{let n=e.getItem(yn);if(!n)return null;let t=JSON.parse(n);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=t;return{railWidth:q(Number(r.railWidth)),railCollapsed:r.railCollapsed===!0}}catch{return null}}function fr(e,n){if(!e)return!1;try{return e.setItem(yn,JSON.stringify({railWidth:q(Number(n.railWidth)),railCollapsed:n.railCollapsed===!0})),!0}catch{return!1}}function oe(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function gn(e,n){if(!oe(e))return{};let t=[];for(let[r,o]of Object.entries(e)){let s=Number(o);!r||!Number.isFinite(s)||s<=0||t.push([r,s])}return t.length>n&&(t.sort((r,o)=>o[1]-r[1]),t.length=n),Object.fromEntries(t)}function An(e,n=Tt){return{seen:gn(e.seen,n),unread:gn(e.unread,n)}}function mr(e){if(!e)return null;try{let n=e.getItem(wn);if(!n)return null;let t=JSON.parse(n);return!oe(t)||!oe(t.seen)&&!oe(t.unread)?null:An({seen:t.seen??{},unread:t.unread??{}})}catch{return null}}function gr(e,n){if(!e)return!1;try{return e.setItem(wn,JSON.stringify(An(n))),!0}catch{return!1}}function yr(e){if(!e)return null;try{let n=e.getItem(Sn);return F(n)?n:null}catch{return null}}function wr(e,n){if(!e||!F(n))return!1;try{return e.setItem(Sn,n),!0}catch{return!1}}function xn(e,n=It){let t=e.filter(o=>typeof o=="string"&&o.length>0),r=[...new Set(t)];return r.length>n?r.slice(r.length-n):r}function Rn(e){if(!e)return null;try{let n=e.getItem(Wn);if(!n)return null;let t=JSON.parse(n);return Array.isArray(t)?xn(t):null}catch{return null}}function Cn(e,n){if(!e)return!1;try{return e.setItem(Wn,JSON.stringify(xn([...n]))),!0}catch{return!1}}var f=D(pe(),1);var c=D(Y(),1),En={thread:{label:"\u8BDD\u9898",title:"\u8BDD\u9898\u4F1A\u8BDD"},group:{label:"\u7FA4",title:"\u7FA4\u4F1A\u8BDD"},p2p:{label:"\u5355\u804A",title:"\u5355\u804A\u4F1A\u8BDD"}},ie=3e4,Lt=2e3;function Nt(e){let n=Number(e?.retryAfterSeconds);return Number.isFinite(n)&&n>0?Math.min(n*1e3,ie):null}function _t(e){return(e instanceof Error?e.message:String(e??"")).trim()||"\u672A\u77E5\u9519\u8BEF"}var se={"needs-you":"!",active:"\u25CF",recent:"\u21BA"},Tn="\u6709\u65B0\u56DE\u590D",Pt=new Set;function In(){if(typeof window>"u")return null;try{return window.localStorage}catch{return null}}function Mt(e){let n=e;return typeof n?.closest=="function"&&n.closest(".wb-session-group-toggle")!==null}function Dt(e){return e.isNeedsYou?se["needs-you"]:e.groupKey==="active"?se.active:e.groupKey==="recent"?se.recent:"\xB7"}function Ot(e){return e.isNeedsYou?"wb-session-group wb-session-group-needs-you":e.groupKey==="active"?"wb-session-group wb-session-group-active":e.groupKey==="recent"?"wb-session-group wb-session-group-recent":"wb-session-group"}function Ln(e){return(0,c.jsx)("a",{className:e.className,href:e.href,target:"_blank",rel:"noopener",title:e.title,"aria-label":e.ariaLabel,onClick:n=>{n.stopPropagation(),e.onActivate?.()},children:e.children})}function Ft(e){let[n,t]=(0,f.useState)(560);return(0,f.useEffect)(()=>{let r=e.current;if(!r)return;let o=()=>t(Math.max(120,r.clientHeight||560));if(o(),typeof ResizeObserver>"u")return;let s=new ResizeObserver(o);return s.observe(r),()=>s.disconnect()},[e]),n}function Ce(e){let n=2166136261;for(let t=0;t<e.length;t+=1)n^=e.charCodeAt(t),n=Math.imul(n,16777619);return`wb-session-${(n>>>0).toString(36)}`}function Nn(e){return[e.botName,e.cliId,e.repoName].filter(Boolean).join(" \xB7 ")||e.sessionId}function Kt(){let[e,n]=(0,f.useState)(!1);return(0,f.useEffect)(()=>{if(typeof window>"u"||!window.matchMedia)return;let t=window.matchMedia("(max-width: 620px)"),r=()=>n(t.matches);return r(),t.addEventListener("change",r),()=>t.removeEventListener("change",r)},[]),e}function Rr(e){let n=Kt(),[t,r]=(0,f.useState)(""),[o,s]=(0,f.useState)(0),l=(0,f.useRef)(null),b=(0,f.useRef)(e.selectedSessionId??null),v=Ft(l),[y,S]=(0,f.useState)(()=>new Map),[k,h]=(0,f.useState)(()=>new Map),[,m]=(0,f.useState)(0),[g,I]=(0,f.useState)(()=>new Set(Rn(In())??[])),ae=e.unreadIds??Pt,ce=e.dimension??"status",Ee=Math.floor((e.now??Date.now())/6e4)*6e4,O=(0,f.useMemo)(()=>je(e.sessions,{query:t,dimension:ce,unreadIds:ae,now:Ee}),[Ee,ce,e.sessions,t,ae]),N=(0,f.useMemo)(()=>Ve(O,g),[g,O]),_=(0,f.useMemo)(()=>Ye(N,o,v,240,n),[N,o,n,v]),P=(0,f.useMemo)(()=>N.filter(i=>i.kind==="session"),[N]),_n=(0,f.useMemo)(()=>O.reduce((i,u)=>i+u.sessions.length,0),[O]),Te=(0,f.useMemo)(()=>O.find(i=>i.kind==="needs-you")?.sessions.length??0,[O]);(0,f.useEffect)(()=>{if(!e.selectedSessionId){b.current=null;return}if(b.current===e.selectedSessionId||!P.some(p=>p.session.sessionId===e.selectedSessionId))return;b.current=e.selectedSessionId;let i=N.findIndex(p=>p.kind==="session"&&p.session.sessionId===e.selectedSessionId),u=_.positions[i]??0,x=u+ee(N[i],n),W=l.current;!W||u>=W.scrollTop&&x<=W.scrollTop+W.clientHeight||(W.scrollTop=Math.max(0,u-Math.round(W.clientHeight/3)))},[N,e.selectedSessionId,P,_.positions]),(0,f.useEffect)(()=>{if(y.size===0)return;let i=setInterval(()=>{S(u=>{let x=Date.now(),W=new Map([...u].filter(([,p])=>x-p<ie));return W.size===u.size?u:W}),m(u=>u+1)},500);return()=>clearInterval(i)},[y]);let le=e.onLocate,Pn=i=>{le&&(S(u=>new Map(u).set(i,Date.now())),h(u=>{if(!u.has(i))return u;let x=new Map(u);return x.delete(i),x}),le(i).then(()=>{S(u=>new Map(u).set(i,Date.now()))},u=>{h(W=>new Map(W).set(i,_t(u)));let x=Nt(u);S(W=>{let p=new Map(W);return x===null?p.delete(i):p.set(i,Date.now()-(ie-x)),p})}))},Mn=i=>{let u=new Set(g);u.delete(i)||u.add(i),I(u),Cn(In(),u)},ue=i=>{if(P.length===0)return;let u=P.findIndex(W=>W.session.sessionId===e.selectedSessionId),x=u<0?i>0?0:P.length-1:Math.max(0,Math.min(P.length-1,u+i));e.onSelect(P[x].session.sessionId)},Ie=i=>{r(i),s(0),l.current&&(l.current.scrollTop=0)},Dn=i=>{i.altKey||i.ctrlKey||i.metaKey||(i.key==="Enter"||i.key===" ")&&Mt(i.target)||(i.key==="j"||i.key==="ArrowDown"?(i.preventDefault(),ue(1)):i.key==="k"||i.key==="ArrowUp"?(i.preventDefault(),ue(-1)):i.key==="Enter"&&e.selectedSessionId&&(i.preventDefault(),e.onSelect(e.selectedSessionId),e.chatFollowNavigates&&typeof document<"u"&&document.getElementById(Ce(e.selectedSessionId))?.querySelector("a.wb-session-copy-link")?.focus()))};if(e.collapsed){let i=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{"aria-hidden":"true",children:"\xBB"}),(0,c.jsx)("span",{className:"wb-rail-vertical-label",children:"\u4F1A\u8BDD"})]});return(0,c.jsxs)("aside",{className:"wb-session-rail is-collapsed","aria-label":"\u4F1A\u8BDD\u5217\u8868\uFF08\u5DF2\u6536\u8D77\uFF09",children:[e.onToggleCollapsed?(0,c.jsx)("button",{type:"button",className:"wb-rail-expand","aria-label":"\u5C55\u5F00\u4F1A\u8BDD\u5217\u8868",title:"\u5C55\u5F00\u4F1A\u8BDD\u5217\u8868",onClick:e.onToggleCollapsed,children:i}):(0,c.jsx)("div",{className:"wb-rail-expand","aria-label":"\u4F1A\u8BDD\u5217\u8868\uFF08\u5DF2\u6536\u8D77\uFF09",children:i}),(0,c.jsx)("span",{className:"wb-rail-count","aria-label":`${Te} \u4E2A\u4F1A\u8BDD\u9700\u8981\u5904\u7406`,children:Te})]})}return(0,c.jsxs)("aside",{className:"wb-session-rail","aria-label":"\u4F1A\u8BDD\u5217\u8868",children:[(0,c.jsxs)("div",{className:"wb-rail-heading",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("span",{className:e.online?"is-online":"is-offline",title:e.online?"\u5B9E\u65F6\u8FDE\u63A5\u6B63\u5E38":"\u5DF2\u79BB\u7EBF\uFF0C\u663E\u793A\u6700\u540E\u5FEB\u7167","aria-hidden":"true",children:e.online?"\u25CF":"\u25CB"}),(0,c.jsx)("strong",{children:"\u4F1A\u8BDD"}),(0,c.jsx)("span",{children:e.sessions.length})]}),e.onDimensionChange?(0,c.jsx)("select",{className:"wb-group-dim","aria-label":"\u5206\u7EC4\u7EF4\u5EA6",value:ce,onChange:i=>{let u=i.currentTarget.value;F(u)&&e.onDimensionChange?.(u)},children:ke.map(i=>(0,c.jsx)("option",{value:i.value,children:i.label},i.value))}):null,e.onOpenAppearance?(0,c.jsx)("button",{type:"button",className:"wb-appearance-btn","aria-haspopup":"dialog","aria-label":d("workbench.appearance.title"),title:d("workbench.appearance.title"),onClick:e.onOpenAppearance,children:"\u25D0"}):null,e.onToggleCollapsed?(0,c.jsx)("button",{type:"button","aria-label":"\u6536\u8D77\u4F1A\u8BDD\u5217\u8868",title:"\u6536\u8D77\u4F1A\u8BDD\u5217\u8868",onClick:e.onToggleCollapsed,children:"\xAB"}):null]}),(0,c.jsxs)("label",{className:"wb-session-search",children:[(0,c.jsx)("span",{className:"wb-visually-hidden",children:"\u641C\u7D22\u4F1A\u8BDD"}),(0,c.jsx)("span",{"aria-hidden":"true",children:"\u2315"}),(0,c.jsx)("input",{type:"search",placeholder:"\u641C\u7D22\u2026",value:t,onChange:i=>Ie(i.currentTarget.value),onKeyDown:i=>{i.key==="ArrowDown"&&(i.preventDefault(),l.current?.focus(),ue(1))}}),t?(0,c.jsx)("button",{type:"button","aria-label":"\u6E05\u9664\u641C\u7D22",onClick:()=>Ie(""),children:"\xD7"}):null]}),(0,c.jsxs)("div",{ref:l,className:"wb-session-list",role:"listbox",tabIndex:0,"aria-label":"\u5DE5\u4F5C\u53F0\u4F1A\u8BDD","aria-activedescendant":e.selectedSessionId?Ce(e.selectedSessionId):void 0,onScroll:i=>s(i.currentTarget.scrollTop),onKeyDown:Dn,children:[(0,c.jsx)("div",{className:"wb-session-list-space",style:{height:_.totalHeight},children:N.slice(_.start,_.end).map((i,u)=>{let x=_.start+u,W={top:_.positions[x],height:ee(i,n)};if(i.kind==="header"){let R=i.collapsed===!0;return(0,c.jsxs)("button",{type:"button",className:`${Ot(i)} wb-session-group-toggle`,style:W,"aria-expanded":!R,title:R?`\u5C55\u5F00\u300C${i.label}\u300D`:`\u6298\u53E0\u300C${i.label}\u300D`,onClick:()=>Mn(i.groupKey),children:[(0,c.jsx)("span",{className:"wb-session-group-caret","aria-hidden":"true",children:R?"\u25B8":"\u25BE"}),(0,c.jsx)("span",{"aria-hidden":"true",children:Dt(i)}),(0,c.jsx)("strong",{children:i.label}),(0,c.jsx)("span",{children:i.count})]},i.key)}let p=i.session,M=ye(p),de=ae.has(p.sessionId),j=Q(p)??(de?Tn:null),Le=p.sessionId===e.selectedSessionId,On=i.group==="needs-you"?"\u5F85\u4F60\u5904\u7406":i.group==="active"?p.status:"\u6700\u8FD1",Ne=e.onOpenSurface,V=p.feishuChatLink||(p.chatId?qe(p.chatId):null),G=ge(p);return(0,c.jsxs)("div",{id:Ce(p.sessionId),className:`wb-session-row wb-session-row-${i.group}${Le?" is-selected":""}${de?" is-unread":""}`,role:"option",tabIndex:-1,"aria-selected":Le,"aria-label":`${M}. ${On}${j?`. ${j}`:""}`,style:W,onClick:()=>e.onSelect(p.sessionId),children:[(0,c.jsx)("span",{className:"wb-session-state-mark","aria-hidden":"true",children:se[i.group]}),(()=>{let R=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"wb-session-title",title:M,children:M}),(0,c.jsxs)("span",{className:"wb-session-meta",title:Nn(p),children:[G?(0,c.jsx)("span",{className:`wb-session-kind is-${G}`,title:En[G].title,children:En[G].label}):null,j?(0,c.jsx)("span",{className:"wb-session-reason",children:j}):(0,c.jsx)("span",{children:Nn(p)}),de?(0,c.jsx)("span",{className:"wb-unread-dot",role:"img","aria-label":Tn}):null,(0,c.jsx)("time",{dateTime:new Date(L(p)).toISOString(),children:ze(L(p),e.now,e.locale)})]})]});return!e.chatFollowNavigates||!V?(0,c.jsx)("span",{className:"wb-session-copy",children:R}):(0,c.jsx)(Ln,{className:"wb-session-copy wb-session-copy-link",href:V,ariaLabel:`\u9009\u4E2D\u5E76\u6253\u5F00\u98DE\u4E66\u804A\u5929 \u2014 ${M}`,onActivate:()=>e.onSelect(p.sessionId),children:R})})(),Ne?(0,c.jsxs)("span",{className:"wb-session-row-actions",children:[V?(0,c.jsx)(Ln,{className:"wb-session-row-action is-chat",href:V,title:"\u6253\u5F00\u98DE\u4E66\u804A\u5929",ariaLabel:`\u6253\u5F00\u98DE\u4E66\u804A\u5929 \u2014 ${M}`,onActivate:()=>e.onSeen?.(p.sessionId),children:"\u804A\u5929"}):null,G==="thread"&&le?(()=>{let R=y.get(p.sessionId)??0,H=Date.now()-R,$=R>0&&H<ie,U=k.get(p.sessionId),_e=$&&!U&&H<Lt,Pe=$?"\u5B9A\u4F4D\u5DF2\u53D1\u9001\uFF0C30 \u79D2\u540E\u53EF\u518D\u6B21\u4F7F\u7528":U?`\u5B9A\u4F4D\u5931\u8D25\uFF1A${U}`:"\u5728\u8BDD\u9898\u91CC @ \u6211\u5B9A\u4F4D";return(0,c.jsx)("button",{type:"button",className:`wb-session-row-action is-locate${_e?" is-located":""}`,title:Pe,"aria-label":`${Pe} \u2014 ${M}`,disabled:$,onClick:Fn=>{Fn.stopPropagation(),e.onSeen?.(p.sessionId),Pn(p.sessionId)},children:_e?"\u5DF2\u53D1\u9001":"\u5B9A\u4F4D"})})():null,[["terminal","\u6253\u5F00\u53EA\u8BFB\u7EC8\u7AEF","\u7EC8\u7AEF"],...e.canControlTerminal!==!1?[["terminal-control","\u6253\u5F00\u7EC8\u7AEF\u5E76\u63A5\u7BA1\u8F93\u5165","\u63A5\u7BA1"]]:[]].map(([R,H,$])=>(0,c.jsx)("button",{type:"button",className:`wb-session-row-action is-${R}`,title:H,"aria-label":`${H} \u2014 ${M}`,onClick:U=>{U.stopPropagation(),Ne(p.sessionId,R)},children:$},R))]}):null]},i.key)})}),_n===0?(0,c.jsx)("p",{className:"wb-session-empty",children:"\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD"}):null]})]})}var T=D(pe(),1);function Er(){let[e,n]=(0,T.useState)(!1);return(0,T.useEffect)(()=>{if(typeof window>"u"||!window.matchMedia)return;let t=window.matchMedia("(hover: none)"),r=()=>n(typeof navigator<"u"&&navigator.maxTouchPoints>0||t.matches);return r(),t.addEventListener?.("change",r),()=>t.removeEventListener?.("change",r)},[]),e}function Tr(e){let{api:n,enabled:t,sessionId:r}=e,[o,s]=(0,T.useState)(null),[l,b]=(0,T.useState)("idle"),[v,y]=(0,T.useState)(0);(0,T.useEffect)(()=>{if(!t)return;let k=new AbortController,h;return s(m=>m?.sessionId===r?m:null),b("loading"),n.getTerminalViewLink(r,k.signal).then(m=>{if(!k.signal.aborted){if(m){s({sessionId:r,url:m.url,expiresAt:m.expiresAt}),b("ready");return}b("failed"),s(g=>g?.sessionId===r&&g.expiresAt!==null&&g.expiresAt<=Date.now()?null:g),h=setTimeout(()=>y(g=>g+1),8e3)}}),()=>{k.abort(),h!==void 0&&clearTimeout(h)}},[n,v,t,r]),(0,T.useEffect)(()=>{if(l!=="ready"||o?.expiresAt==null)return;let k=o.expiresAt-Date.now()-3e4,h=setTimeout(()=>y(m=>m+1),Math.max(5e3,k));return()=>clearTimeout(h)},[o,l]);let S=(0,T.useCallback)(()=>{b("loading"),y(k=>k+1)},[]);return{link:o,phase:l,retry:S}}export{X as a,fe as b,Bt as c,q as d,Gn as e,Gt as f,L as g,ye as h,Ht as i,ze as j,$t as k,Xn as l,Ut as m,qe as n,Vt as o,Yt as p,A as q,en as r,er as s,nr as t,tr as u,bn as v,cr as w,Ct as x,lr as y,ur as z,hr as A,br as B,kr as C,fr as D,An as E,mr as F,gr as G,yr as H,wr as I,Rr as J,Er as K,Tr as L};
@@ -0,0 +1 @@
1
+ var u=class{sessions=new Map;schedules=new Map;online=!0;scheduleTimeZone="";schedulesAvailable=!0;version=0;snapshot={sessions:this.sessions,schedules:this.schedules,online:this.online,version:this.version,scheduleTimeZone:this.scheduleTimeZone,schedulesAvailable:this.schedulesAvailable};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 n of e)this.sessions.set(n.sessionId,n);this.schedules.clear();for(let n of s??[])this.schedules.set(n.id,n);this.schedulesAvailable=s!==null,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,schedulesAvailable:this.schedulesAvailable};for(let e of this.listeners)e()}},a=new u;async function m(){try{let l=await fetch("/api/schedules");if(!l.ok)return null;let e=await l.json();return{schedules:Array.isArray(e?.schedules)?e.schedules:[],timezone:typeof e?.timezone=="string"?e.timezone:void 0}}catch{return null}}async function v(l={}){let e=l.canReadSchedules??(()=>!0),s=[],t=!1,n=new EventSource("/events"),S=["session.spawned","session.update","session.exited","schedule.created","schedule.updated","schedule.deleted","schedule.fired","schedule.timezone","bots.changed","heartbeat"];for(let c of S)n.addEventListener(c,i=>{try{let o=JSON.parse(i.data),r=o.body??o;t?a.applySse(c,r):s.push({type:c,body:r})}catch{}});let h=null,d=0,p=0,f=()=>(d+=1,h||(h=(async()=>{for(;p<d;){let c=d;t=!1;try{let[i,o]=await Promise.all([fetch("/api/sessions").then(r=>r.json()),e()?m():Promise.resolve(null)]);a.replaceSnapshot(i.sessions??[],o?o.schedules:null,o?.timezone),p=c}finally{t=!0;for(let i of s.splice(0))a.applySse(i.type,i.body)}}})().finally(()=>{h=null}),h));n.onerror=()=>a.setOnline(!1),n.onopen=()=>{a.setOnline(!0),f().catch(()=>{})},await f()}export{a,v as b};
@@ -1 +1 @@
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};
1
+ import{q as T}from"./chunk-5CJMHTT4.js";import{x as t}from"./chunk-F6KNPF4R.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};