botmux 3.10.0 → 3.11.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 (539) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/backend/herdr-backend.d.ts +4 -3
  3. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/herdr-backend.js +11 -8
  5. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  6. package/dist/adapters/backend/pty-backend.d.ts +1 -1
  7. package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
  8. package/dist/adapters/backend/pty-backend.js +4 -1
  9. package/dist/adapters/backend/pty-backend.js.map +1 -1
  10. package/dist/adapters/backend/riff-backend.d.ts +29 -5
  11. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/riff-backend.js +302 -31
  13. package/dist/adapters/backend/riff-backend.js.map +1 -1
  14. package/dist/adapters/backend/sandbox.d.ts +6 -0
  15. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  16. package/dist/adapters/backend/sandbox.js +7 -0
  17. package/dist/adapters/backend/sandbox.js.map +1 -1
  18. package/dist/adapters/backend/tmux-backend.d.ts +1 -1
  19. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  20. package/dist/adapters/backend/tmux-backend.js +4 -1
  21. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  22. package/dist/adapters/backend/tmux-pipe-backend.d.ts +1 -1
  23. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  24. package/dist/adapters/backend/tmux-pipe-backend.js +1 -1
  25. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  26. package/dist/adapters/backend/types.d.ts +37 -3
  27. package/dist/adapters/backend/types.d.ts.map +1 -1
  28. package/dist/adapters/backend/types.js.map +1 -1
  29. package/dist/adapters/backend/zellij-backend.d.ts +3 -3
  30. package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
  31. package/dist/adapters/backend/zellij-backend.js +9 -3
  32. package/dist/adapters/backend/zellij-backend.js.map +1 -1
  33. package/dist/adapters/backend/zellij-observe-backend.d.ts +3 -3
  34. package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
  35. package/dist/adapters/backend/zellij-observe-backend.js +12 -7
  36. package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
  37. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  38. package/dist/adapters/cli/codex-app.js +11 -2
  39. package/dist/adapters/cli/codex-app.js.map +1 -1
  40. package/dist/adapters/cli/read-isolation.d.ts +35 -2
  41. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  42. package/dist/adapters/cli/read-isolation.js +88 -7
  43. package/dist/adapters/cli/read-isolation.js.map +1 -1
  44. package/dist/adapters/cli/runner-input.d.ts +15 -14
  45. package/dist/adapters/cli/runner-input.d.ts.map +1 -1
  46. package/dist/adapters/cli/runner-input.js +64 -26
  47. package/dist/adapters/cli/runner-input.js.map +1 -1
  48. package/dist/adapters/cli/types.d.ts +20 -5
  49. package/dist/adapters/cli/types.d.ts.map +1 -1
  50. package/dist/bot-registry.d.ts +24 -0
  51. package/dist/bot-registry.d.ts.map +1 -1
  52. package/dist/bot-registry.js +110 -5
  53. package/dist/bot-registry.js.map +1 -1
  54. package/dist/cli/fleet-shutdown.d.ts +47 -0
  55. package/dist/cli/fleet-shutdown.d.ts.map +1 -0
  56. package/dist/cli/fleet-shutdown.js +387 -0
  57. package/dist/cli/fleet-shutdown.js.map +1 -0
  58. package/dist/cli/pm2-descriptor-guard.d.ts +19 -0
  59. package/dist/cli/pm2-descriptor-guard.d.ts.map +1 -0
  60. package/dist/cli/pm2-descriptor-guard.js +122 -0
  61. package/dist/cli/pm2-descriptor-guard.js.map +1 -0
  62. package/dist/cli/pm2-exact-start.d.ts +16 -0
  63. package/dist/cli/pm2-exact-start.d.ts.map +1 -0
  64. package/dist/cli/pm2-exact-start.js +63 -0
  65. package/dist/cli/pm2-exact-start.js.map +1 -0
  66. package/dist/cli/pm2-god-admission.d.ts +8 -0
  67. package/dist/cli/pm2-god-admission.d.ts.map +1 -0
  68. package/dist/cli/pm2-god-admission.js +25 -0
  69. package/dist/cli/pm2-god-admission.js.map +1 -0
  70. package/dist/cli/pm2-jlist.d.ts +13 -0
  71. package/dist/cli/pm2-jlist.d.ts.map +1 -0
  72. package/dist/cli/pm2-jlist.js +108 -0
  73. package/dist/cli/pm2-jlist.js.map +1 -0
  74. package/dist/cli/pm2-preflight.d.ts +10 -0
  75. package/dist/cli/pm2-preflight.d.ts.map +1 -0
  76. package/dist/cli/pm2-preflight.js +23 -0
  77. package/dist/cli/pm2-preflight.js.map +1 -0
  78. package/dist/cli/pm2-shutdown-capability.d.ts +27 -0
  79. package/dist/cli/pm2-shutdown-capability.d.ts.map +1 -0
  80. package/dist/cli/pm2-shutdown-capability.js +161 -0
  81. package/dist/cli/pm2-shutdown-capability.js.map +1 -0
  82. package/dist/cli/pm2-start-transaction.d.ts +55 -0
  83. package/dist/cli/pm2-start-transaction.d.ts.map +1 -0
  84. package/dist/cli/pm2-start-transaction.js +220 -0
  85. package/dist/cli/pm2-start-transaction.js.map +1 -0
  86. package/dist/cli/send-dispatch.d.ts +12 -0
  87. package/dist/cli/send-dispatch.d.ts.map +1 -1
  88. package/dist/cli/send-dispatch.js +31 -4
  89. package/dist/cli/send-dispatch.js.map +1 -1
  90. package/dist/cli/session-list-liveness.d.ts +1 -0
  91. package/dist/cli/session-list-liveness.d.ts.map +1 -1
  92. package/dist/cli/session-list-liveness.js +6 -0
  93. package/dist/cli/session-list-liveness.js.map +1 -1
  94. package/dist/cli/session-picker-layout.d.ts +26 -0
  95. package/dist/cli/session-picker-layout.d.ts.map +1 -0
  96. package/dist/cli/session-picker-layout.js +123 -0
  97. package/dist/cli/session-picker-layout.js.map +1 -0
  98. package/dist/cli/session-picker-viewport.d.ts +49 -0
  99. package/dist/cli/session-picker-viewport.d.ts.map +1 -0
  100. package/dist/cli/session-picker-viewport.js +46 -0
  101. package/dist/cli/session-picker-viewport.js.map +1 -0
  102. package/dist/cli/supervisor-shutdown-client.d.ts +31 -0
  103. package/dist/cli/supervisor-shutdown-client.d.ts.map +1 -0
  104. package/dist/cli/supervisor-shutdown-client.js +146 -0
  105. package/dist/cli/supervisor-shutdown-client.js.map +1 -0
  106. package/dist/cli/terminal-width.d.ts +48 -0
  107. package/dist/cli/terminal-width.d.ts.map +1 -0
  108. package/dist/cli/terminal-width.js +119 -0
  109. package/dist/cli/terminal-width.js.map +1 -0
  110. package/dist/cli/vc-agent.d.ts.map +1 -1
  111. package/dist/cli/vc-agent.js +1 -1
  112. package/dist/cli/vc-agent.js.map +1 -1
  113. package/dist/cli.d.ts.map +1 -1
  114. package/dist/cli.js +2269 -716
  115. package/dist/cli.js.map +1 -1
  116. package/dist/codex-app-runner.js +1630 -125
  117. package/dist/codex-app-runner.js.map +1 -1
  118. package/dist/core/ask-api.d.ts +8 -1
  119. package/dist/core/ask-api.d.ts.map +1 -1
  120. package/dist/core/ask-api.js +18 -0
  121. package/dist/core/ask-api.js.map +1 -1
  122. package/dist/core/ask-broker.d.ts +20 -0
  123. package/dist/core/ask-broker.d.ts.map +1 -1
  124. package/dist/core/ask-broker.js +467 -47
  125. package/dist/core/ask-broker.js.map +1 -1
  126. package/dist/core/ask-persist-store.d.ts +126 -0
  127. package/dist/core/ask-persist-store.d.ts.map +1 -0
  128. package/dist/core/ask-persist-store.js +188 -0
  129. package/dist/core/ask-persist-store.js.map +1 -0
  130. package/dist/core/ask-types.d.ts +80 -0
  131. package/dist/core/ask-types.d.ts.map +1 -1
  132. package/dist/core/ask-types.js +62 -0
  133. package/dist/core/ask-types.js.map +1 -1
  134. package/dist/core/cli-session-id-publisher.d.ts +20 -0
  135. package/dist/core/cli-session-id-publisher.d.ts.map +1 -0
  136. package/dist/core/cli-session-id-publisher.js +21 -0
  137. package/dist/core/cli-session-id-publisher.js.map +1 -0
  138. package/dist/core/command-handler.d.ts.map +1 -1
  139. package/dist/core/command-handler.js +427 -255
  140. package/dist/core/command-handler.js.map +1 -1
  141. package/dist/core/cost-calculator.d.ts +13 -0
  142. package/dist/core/cost-calculator.d.ts.map +1 -1
  143. package/dist/core/cost-calculator.js +385 -26
  144. package/dist/core/cost-calculator.js.map +1 -1
  145. package/dist/core/dashboard-ipc-server.d.ts +9 -0
  146. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  147. package/dist/core/dashboard-ipc-server.js +842 -288
  148. package/dist/core/dashboard-ipc-server.js.map +1 -1
  149. package/dist/core/explicit-session-backing-cleanup.d.ts +49 -0
  150. package/dist/core/explicit-session-backing-cleanup.d.ts.map +1 -0
  151. package/dist/core/explicit-session-backing-cleanup.js +76 -0
  152. package/dist/core/explicit-session-backing-cleanup.js.map +1 -0
  153. package/dist/core/idle-worker-sweeper.d.ts +20 -0
  154. package/dist/core/idle-worker-sweeper.d.ts.map +1 -1
  155. package/dist/core/idle-worker-sweeper.js +18 -0
  156. package/dist/core/idle-worker-sweeper.js.map +1 -1
  157. package/dist/core/inflight-input-tracker.d.ts +10 -0
  158. package/dist/core/inflight-input-tracker.d.ts.map +1 -1
  159. package/dist/core/inflight-input-tracker.js +7 -0
  160. package/dist/core/inflight-input-tracker.js.map +1 -1
  161. package/dist/core/managed-origin-attestation.d.ts +51 -0
  162. package/dist/core/managed-origin-attestation.d.ts.map +1 -0
  163. package/dist/core/managed-origin-attestation.js +208 -0
  164. package/dist/core/managed-origin-attestation.js.map +1 -0
  165. package/dist/core/managed-origin-capability.d.ts +62 -3
  166. package/dist/core/managed-origin-capability.d.ts.map +1 -1
  167. package/dist/core/managed-origin-capability.js +419 -9
  168. package/dist/core/managed-origin-capability.js.map +1 -1
  169. package/dist/core/pending-repo-journal.d.ts +6 -0
  170. package/dist/core/pending-repo-journal.d.ts.map +1 -0
  171. package/dist/core/pending-repo-journal.js +85 -0
  172. package/dist/core/pending-repo-journal.js.map +1 -0
  173. package/dist/core/persistent-backend.d.ts +6 -1
  174. package/dist/core/persistent-backend.d.ts.map +1 -1
  175. package/dist/core/persistent-backend.js +12 -6
  176. package/dist/core/persistent-backend.js.map +1 -1
  177. package/dist/core/process-start-identity.d.ts +3 -0
  178. package/dist/core/process-start-identity.d.ts.map +1 -0
  179. package/dist/core/process-start-identity.js +62 -0
  180. package/dist/core/process-start-identity.js.map +1 -0
  181. package/dist/core/raw-command-writer.d.ts +34 -0
  182. package/dist/core/raw-command-writer.d.ts.map +1 -0
  183. package/dist/core/raw-command-writer.js +48 -0
  184. package/dist/core/raw-command-writer.js.map +1 -0
  185. package/dist/core/reply-target.d.ts +85 -22
  186. package/dist/core/reply-target.d.ts.map +1 -1
  187. package/dist/core/reply-target.js +267 -32
  188. package/dist/core/reply-target.js.map +1 -1
  189. package/dist/core/resource-monitor/runtime.d.ts.map +1 -1
  190. package/dist/core/resource-monitor/runtime.js +4 -1
  191. package/dist/core/resource-monitor/runtime.js.map +1 -1
  192. package/dist/core/restart-report.d.ts +6 -1
  193. package/dist/core/restart-report.d.ts.map +1 -1
  194. package/dist/core/restart-report.js +22 -4
  195. package/dist/core/restart-report.js.map +1 -1
  196. package/dist/core/riff-shutdown-detach.d.ts +164 -0
  197. package/dist/core/riff-shutdown-detach.d.ts.map +1 -0
  198. package/dist/core/riff-shutdown-detach.js +787 -0
  199. package/dist/core/riff-shutdown-detach.js.map +1 -0
  200. package/dist/core/riff-worker-shutdown-readiness.d.ts +17 -0
  201. package/dist/core/riff-worker-shutdown-readiness.d.ts.map +1 -0
  202. package/dist/core/riff-worker-shutdown-readiness.js +21 -0
  203. package/dist/core/riff-worker-shutdown-readiness.js.map +1 -0
  204. package/dist/core/session-manager.d.ts +6 -6
  205. package/dist/core/session-manager.d.ts.map +1 -1
  206. package/dist/core/session-manager.js +1227 -594
  207. package/dist/core/session-manager.js.map +1 -1
  208. package/dist/core/session-marker.d.ts +1 -1
  209. package/dist/core/session-marker.d.ts.map +1 -1
  210. package/dist/core/session-marker.js +2 -2
  211. package/dist/core/session-marker.js.map +1 -1
  212. package/dist/core/session-mutation-guard.d.ts +17 -0
  213. package/dist/core/session-mutation-guard.d.ts.map +1 -0
  214. package/dist/core/session-mutation-guard.js +33 -0
  215. package/dist/core/session-mutation-guard.js.map +1 -0
  216. package/dist/core/shutdown-budgets.d.ts +27 -0
  217. package/dist/core/shutdown-budgets.d.ts.map +1 -0
  218. package/dist/core/shutdown-budgets.js +47 -0
  219. package/dist/core/shutdown-budgets.js.map +1 -0
  220. package/dist/core/supervisor-shutdown-ipc.d.ts +10 -0
  221. package/dist/core/supervisor-shutdown-ipc.d.ts.map +1 -0
  222. package/dist/core/supervisor-shutdown-ipc.js +10 -0
  223. package/dist/core/supervisor-shutdown-ipc.js.map +1 -0
  224. package/dist/core/supervisor-shutdown-protocol.d.ts +16 -0
  225. package/dist/core/supervisor-shutdown-protocol.d.ts.map +1 -0
  226. package/dist/core/supervisor-shutdown-protocol.js +16 -0
  227. package/dist/core/supervisor-shutdown-protocol.js.map +1 -0
  228. package/dist/core/trigger-final-suppression.d.ts +4 -0
  229. package/dist/core/trigger-final-suppression.d.ts.map +1 -1
  230. package/dist/core/trigger-final-suppression.js +6 -11
  231. package/dist/core/trigger-final-suppression.js.map +1 -1
  232. package/dist/core/trigger-session.d.ts +70 -0
  233. package/dist/core/trigger-session.d.ts.map +1 -1
  234. package/dist/core/trigger-session.js +923 -145
  235. package/dist/core/trigger-session.js.map +1 -1
  236. package/dist/core/types.d.ts +94 -1
  237. package/dist/core/types.d.ts.map +1 -1
  238. package/dist/core/types.js +9 -0
  239. package/dist/core/types.js.map +1 -1
  240. package/dist/core/worker-pool.d.ts +194 -13
  241. package/dist/core/worker-pool.d.ts.map +1 -1
  242. package/dist/core/worker-pool.js +2597 -547
  243. package/dist/core/worker-pool.js.map +1 -1
  244. package/dist/daemon.d.ts +76 -2
  245. package/dist/daemon.d.ts.map +1 -1
  246. package/dist/daemon.js +2255 -773
  247. package/dist/daemon.js.map +1 -1
  248. package/dist/dashboard/bot-payload.d.ts +20 -0
  249. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  250. package/dist/dashboard/bot-payload.js +24 -0
  251. package/dist/dashboard/bot-payload.js.map +1 -1
  252. package/dist/dashboard/feed-groups.d.ts +17 -0
  253. package/dist/dashboard/feed-groups.d.ts.map +1 -0
  254. package/dist/dashboard/feed-groups.js +75 -0
  255. package/dist/dashboard/feed-groups.js.map +1 -0
  256. package/dist/dashboard/session-card-model.d.ts +1 -1
  257. package/dist/dashboard/session-card-model.d.ts.map +1 -1
  258. package/dist/dashboard/session-card-model.js +8 -5
  259. package/dist/dashboard/session-card-model.js.map +1 -1
  260. package/dist/dashboard/web/bot-defaults-page.d.ts +4 -0
  261. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  262. package/dist/dashboard/web/bot-defaults-page.js +139 -46
  263. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  264. package/dist/dashboard/web/bot-defaults.d.ts +4 -0
  265. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  266. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  267. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  268. package/dist/dashboard/web/connectors-page.js +40 -3
  269. package/dist/dashboard/web/connectors-page.js.map +1 -1
  270. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  271. package/dist/dashboard/web/groups-page.js +95 -2
  272. package/dist/dashboard/web/groups-page.js.map +1 -1
  273. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  274. package/dist/dashboard/web/i18n.js +86 -40
  275. package/dist/dashboard/web/i18n.js.map +1 -1
  276. package/dist/dashboard/web/kanban-model.js +1 -1
  277. package/dist/dashboard/web/kanban-model.js.map +1 -1
  278. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  279. package/dist/dashboard/web/overview-page.js +3 -2
  280. package/dist/dashboard/web/overview-page.js.map +1 -1
  281. package/dist/dashboard/web/overview.d.ts +3 -0
  282. package/dist/dashboard/web/overview.d.ts.map +1 -1
  283. package/dist/dashboard/web/overview.js +2 -0
  284. package/dist/dashboard/web/overview.js.map +1 -1
  285. package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
  286. package/dist/dashboard/web/sessions-kanban.js +2 -0
  287. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  288. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  289. package/dist/dashboard/web/sessions-page.js +103 -2
  290. package/dist/dashboard/web/sessions-page.js.map +1 -1
  291. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  292. package/dist/dashboard/web/sessions.js +3 -2
  293. package/dist/dashboard/web/sessions.js.map +1 -1
  294. package/dist/dashboard/web/ui.d.ts +8 -0
  295. package/dist/dashboard/web/ui.d.ts.map +1 -1
  296. package/dist/dashboard/web/ui.js +15 -0
  297. package/dist/dashboard/web/ui.js.map +1 -1
  298. package/dist/dashboard-web/app.js +1 -1
  299. package/dist/dashboard-web/chunks/bot-defaults-page-GED4FEMS.js +10 -0
  300. package/dist/dashboard-web/chunks/chunk-6J5LS5AU.js +51 -0
  301. package/dist/dashboard-web/chunks/{chunk-ZU3UUKAR.js → chunk-HK7NIBJG.js} +1 -1
  302. package/dist/dashboard-web/chunks/{chunk-3UE7S77S.js → chunk-KRHWZEXU.js} +1 -1
  303. package/dist/dashboard-web/chunks/chunk-VBXJOJFH.js +1 -0
  304. package/dist/dashboard-web/chunks/connectors-page-EELM66G3.js +1 -0
  305. package/dist/dashboard-web/chunks/groups-page-WKUV6E42.js +8 -0
  306. package/dist/dashboard-web/chunks/{insights-page-T2ZX2RWL.js → insights-page-54UBPPOC.js} +1 -1
  307. package/dist/dashboard-web/chunks/{monitor-room-YNVBAGR6.js → monitor-room-PORHVKRH.js} +1 -1
  308. package/dist/dashboard-web/chunks/{monitoring-page-LHM55YWN.js → monitoring-page-XGA7AXNL.js} +1 -1
  309. package/dist/dashboard-web/chunks/{office-page-ATXVP7PW.js → office-page-AO3AFG45.js} +1 -1
  310. package/dist/dashboard-web/chunks/overview-page-F5BUTYR6.js +1 -0
  311. package/dist/dashboard-web/chunks/{roles-page-56VWM6CD.js → roles-page-M5GIASJU.js} +1 -1
  312. package/dist/dashboard-web/chunks/{schedules-page-S5K6U4EO.js → schedules-page-O232WQRR.js} +1 -1
  313. package/dist/dashboard-web/chunks/sessions-page-YFRPSTIL.js +6 -0
  314. package/dist/dashboard-web/chunks/{settings-page-QUZDQARR.js → settings-page-OJAZLZQT.js} +1 -1
  315. package/dist/dashboard-web/chunks/{skills-page-IFY7AEND.js → skills-page-EFZQPWV4.js} +1 -1
  316. package/dist/dashboard-web/chunks/{team-federation-page-C7FJQPFZ.js → team-federation-page-ZJVAP7HW.js} +1 -1
  317. package/dist/dashboard-web/chunks/{v3-page-2LMF3WWR.js → v3-page-GYWTRGO2.js} +1 -1
  318. package/dist/dashboard-web/chunks/{whiteboards-page-3XC6QRMY.js → whiteboards-page-MSDAG6P7.js} +1 -1
  319. package/dist/dashboard-web/style.css +255 -0
  320. package/dist/dashboard.js +172 -7
  321. package/dist/dashboard.js.map +1 -1
  322. package/dist/desktop/renderer/app.js +21 -0
  323. package/dist/desktop/renderer/app.js.map +1 -1
  324. package/dist/i18n/en.d.ts.map +1 -1
  325. package/dist/i18n/en.js +35 -9
  326. package/dist/i18n/en.js.map +1 -1
  327. package/dist/i18n/zh.d.ts.map +1 -1
  328. package/dist/i18n/zh.js +35 -9
  329. package/dist/i18n/zh.js.map +1 -1
  330. package/dist/im/lark/ask-card.d.ts +23 -0
  331. package/dist/im/lark/ask-card.d.ts.map +1 -1
  332. package/dist/im/lark/ask-card.js +94 -4
  333. package/dist/im/lark/ask-card.js.map +1 -1
  334. package/dist/im/lark/card-builder.d.ts +6 -1
  335. package/dist/im/lark/card-builder.d.ts.map +1 -1
  336. package/dist/im/lark/card-builder.js +112 -15
  337. package/dist/im/lark/card-builder.js.map +1 -1
  338. package/dist/im/lark/card-handler.d.ts +1 -1
  339. package/dist/im/lark/card-handler.d.ts.map +1 -1
  340. package/dist/im/lark/card-handler.js +496 -310
  341. package/dist/im/lark/card-handler.js.map +1 -1
  342. package/dist/im/lark/client.d.ts +7 -0
  343. package/dist/im/lark/client.d.ts.map +1 -1
  344. package/dist/im/lark/client.js +39 -26
  345. package/dist/im/lark/client.js.map +1 -1
  346. package/dist/im/lark/doc-comment.d.ts +7 -4
  347. package/dist/im/lark/doc-comment.d.ts.map +1 -1
  348. package/dist/im/lark/doc-comment.js +19 -6
  349. package/dist/im/lark/doc-comment.js.map +1 -1
  350. package/dist/im/lark/event-dispatcher.d.ts +16 -0
  351. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  352. package/dist/im/lark/event-dispatcher.js +88 -23
  353. package/dist/im/lark/event-dispatcher.js.map +1 -1
  354. package/dist/im/lark/forward-followup-content.d.ts.map +1 -1
  355. package/dist/im/lark/forward-followup-content.js +9 -1
  356. package/dist/im/lark/forward-followup-content.js.map +1 -1
  357. package/dist/im/lark/grant-command.d.ts.map +1 -1
  358. package/dist/im/lark/grant-command.js +7 -4
  359. package/dist/im/lark/grant-command.js.map +1 -1
  360. package/dist/im/lark/md-card.d.ts +11 -0
  361. package/dist/im/lark/md-card.d.ts.map +1 -1
  362. package/dist/im/lark/md-card.js +46 -0
  363. package/dist/im/lark/md-card.js.map +1 -1
  364. package/dist/im/lark/message-parser.d.ts +23 -2
  365. package/dist/im/lark/message-parser.d.ts.map +1 -1
  366. package/dist/im/lark/message-parser.js +58 -3
  367. package/dist/im/lark/message-parser.js.map +1 -1
  368. package/dist/im/lark/overview-card.d.ts.map +1 -1
  369. package/dist/im/lark/overview-card.js +2 -1
  370. package/dist/im/lark/overview-card.js.map +1 -1
  371. package/dist/services/async-trigger-state.d.ts +6 -1
  372. package/dist/services/async-trigger-state.d.ts.map +1 -1
  373. package/dist/services/async-trigger-state.js +21 -0
  374. package/dist/services/async-trigger-state.js.map +1 -1
  375. package/dist/services/async-trigger-store.d.ts +23 -1
  376. package/dist/services/async-trigger-store.d.ts.map +1 -1
  377. package/dist/services/async-trigger-store.js +96 -13
  378. package/dist/services/async-trigger-store.js.map +1 -1
  379. package/dist/services/bridge-fallback-gate.d.ts +40 -0
  380. package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
  381. package/dist/services/bridge-fallback-gate.js +124 -24
  382. package/dist/services/bridge-fallback-gate.js.map +1 -1
  383. package/dist/services/codex-app-runner-protocol.d.ts +8 -0
  384. package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
  385. package/dist/services/codex-app-runner-protocol.js +9 -2
  386. package/dist/services/codex-app-runner-protocol.js.map +1 -1
  387. package/dist/services/codex-bridge-queue.d.ts +1 -0
  388. package/dist/services/codex-bridge-queue.d.ts.map +1 -1
  389. package/dist/services/codex-bridge-queue.js +1 -0
  390. package/dist/services/codex-bridge-queue.js.map +1 -1
  391. package/dist/services/codex-service-tier.d.ts +2 -0
  392. package/dist/services/codex-service-tier.d.ts.map +1 -1
  393. package/dist/services/codex-service-tier.js +1 -0
  394. package/dist/services/codex-service-tier.js.map +1 -1
  395. package/dist/services/codex-transcript.d.ts +27 -0
  396. package/dist/services/codex-transcript.d.ts.map +1 -1
  397. package/dist/services/codex-transcript.js +340 -2
  398. package/dist/services/codex-transcript.js.map +1 -1
  399. package/dist/services/grant-policy.d.ts +3 -0
  400. package/dist/services/grant-policy.d.ts.map +1 -1
  401. package/dist/services/grant-policy.js +5 -0
  402. package/dist/services/grant-policy.js.map +1 -1
  403. package/dist/services/grant-prefs-store.d.ts +6 -3
  404. package/dist/services/grant-prefs-store.d.ts.map +1 -1
  405. package/dist/services/grant-prefs-store.js +42 -12
  406. package/dist/services/grant-prefs-store.js.map +1 -1
  407. package/dist/services/hook-runner.d.ts +20 -1
  408. package/dist/services/hook-runner.d.ts.map +1 -1
  409. package/dist/services/hook-runner.js +17 -13
  410. package/dist/services/hook-runner.js.map +1 -1
  411. package/dist/services/idempotency-store.d.ts +134 -0
  412. package/dist/services/idempotency-store.d.ts.map +1 -0
  413. package/dist/services/idempotency-store.js +299 -0
  414. package/dist/services/idempotency-store.js.map +1 -0
  415. package/dist/services/jsonl-cursor.d.ts +7 -3
  416. package/dist/services/jsonl-cursor.d.ts.map +1 -1
  417. package/dist/services/jsonl-cursor.js +55 -31
  418. package/dist/services/jsonl-cursor.js.map +1 -1
  419. package/dist/services/open-platform-rename.d.ts.map +1 -1
  420. package/dist/services/open-platform-rename.js +1 -108
  421. package/dist/services/open-platform-rename.js.map +1 -1
  422. package/dist/services/restart-intent-store.d.ts +22 -2
  423. package/dist/services/restart-intent-store.d.ts.map +1 -1
  424. package/dist/services/restart-intent-store.js +160 -18
  425. package/dist/services/restart-intent-store.js.map +1 -1
  426. package/dist/services/sandbox-store.d.ts +22 -0
  427. package/dist/services/sandbox-store.d.ts.map +1 -1
  428. package/dist/services/sandbox-store.js +37 -8
  429. package/dist/services/sandbox-store.js.map +1 -1
  430. package/dist/services/send-policy.d.ts +41 -33
  431. package/dist/services/send-policy.d.ts.map +1 -1
  432. package/dist/services/send-policy.js +39 -40
  433. package/dist/services/send-policy.js.map +1 -1
  434. package/dist/services/session-store.d.ts +66 -0
  435. package/dist/services/session-store.d.ts.map +1 -1
  436. package/dist/services/session-store.js +403 -67
  437. package/dist/services/session-store.js.map +1 -1
  438. package/dist/services/submit-notification.d.ts +3 -0
  439. package/dist/services/submit-notification.d.ts.map +1 -0
  440. package/dist/services/submit-notification.js +15 -0
  441. package/dist/services/submit-notification.js.map +1 -0
  442. package/dist/services/traex-transcript.d.ts +25 -2
  443. package/dist/services/traex-transcript.d.ts.map +1 -1
  444. package/dist/services/traex-transcript.js +133 -1
  445. package/dist/services/traex-transcript.js.map +1 -1
  446. package/dist/services/trigger-types.d.ts +13 -1
  447. package/dist/services/trigger-types.d.ts.map +1 -1
  448. package/dist/services/trigger-types.js +39 -0
  449. package/dist/services/trigger-types.js.map +1 -1
  450. package/dist/services/voice/index.d.ts +3 -2
  451. package/dist/services/voice/index.d.ts.map +1 -1
  452. package/dist/services/voice/index.js +5 -5
  453. package/dist/services/voice/index.js.map +1 -1
  454. package/dist/services/voice/openai.d.ts +2 -1
  455. package/dist/services/voice/openai.d.ts.map +1 -1
  456. package/dist/services/voice/openai.js +2 -1
  457. package/dist/services/voice/openai.js.map +1 -1
  458. package/dist/services/voice/sami.d.ts +5 -2
  459. package/dist/services/voice/sami.d.ts.map +1 -1
  460. package/dist/services/voice/sami.js +19 -4
  461. package/dist/services/voice/sami.js.map +1 -1
  462. package/dist/setup/bots-store.d.ts.map +1 -1
  463. package/dist/setup/bots-store.js +10 -4
  464. package/dist/setup/bots-store.js.map +1 -1
  465. package/dist/setup/lark-scopes.json +2 -0
  466. package/dist/setup/open-platform-automation.d.ts +9 -1
  467. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  468. package/dist/setup/open-platform-automation.js +44 -15
  469. package/dist/setup/open-platform-automation.js.map +1 -1
  470. package/dist/setup/open-platform-visibility.d.ts +42 -0
  471. package/dist/setup/open-platform-visibility.d.ts.map +1 -0
  472. package/dist/setup/open-platform-visibility.js +133 -0
  473. package/dist/setup/open-platform-visibility.js.map +1 -0
  474. package/dist/setup/verify-permissions.d.ts.map +1 -1
  475. package/dist/setup/verify-permissions.js +6 -0
  476. package/dist/setup/verify-permissions.js.map +1 -1
  477. package/dist/skills/definitions.js +2 -2
  478. package/dist/types.d.ts +290 -13
  479. package/dist/types.d.ts.map +1 -1
  480. package/dist/utils/bot-routing.d.ts +1 -0
  481. package/dist/utils/bot-routing.d.ts.map +1 -1
  482. package/dist/utils/bot-routing.js +1 -1
  483. package/dist/utils/bot-routing.js.map +1 -1
  484. package/dist/utils/child-env.d.ts +1 -1
  485. package/dist/utils/child-env.d.ts.map +1 -1
  486. package/dist/utils/child-env.js +9 -0
  487. package/dist/utils/child-env.js.map +1 -1
  488. package/dist/utils/codex-app-control.d.ts +438 -0
  489. package/dist/utils/codex-app-control.d.ts.map +1 -0
  490. package/dist/utils/codex-app-control.js +2336 -0
  491. package/dist/utils/codex-app-control.js.map +1 -0
  492. package/dist/utils/codex-app-dispatch-ledger.d.ts +78 -0
  493. package/dist/utils/codex-app-dispatch-ledger.d.ts.map +1 -0
  494. package/dist/utils/codex-app-dispatch-ledger.js +149 -0
  495. package/dist/utils/codex-app-dispatch-ledger.js.map +1 -0
  496. package/dist/utils/codex-app-turn-dispatch.d.ts +77 -0
  497. package/dist/utils/codex-app-turn-dispatch.d.ts.map +1 -0
  498. package/dist/utils/codex-app-turn-dispatch.js +141 -0
  499. package/dist/utils/codex-app-turn-dispatch.js.map +1 -0
  500. package/dist/utils/codex-app-turn-liveness.d.ts +125 -0
  501. package/dist/utils/codex-app-turn-liveness.d.ts.map +1 -0
  502. package/dist/utils/codex-app-turn-liveness.js +301 -0
  503. package/dist/utils/codex-app-turn-liveness.js.map +1 -0
  504. package/dist/utils/idle-detector.d.ts +12 -0
  505. package/dist/utils/idle-detector.d.ts.map +1 -1
  506. package/dist/utils/idle-detector.js +19 -0
  507. package/dist/utils/idle-detector.js.map +1 -1
  508. package/dist/utils/input-gate.d.ts +87 -0
  509. package/dist/utils/input-gate.d.ts.map +1 -1
  510. package/dist/utils/input-gate.js +86 -0
  511. package/dist/utils/input-gate.js.map +1 -1
  512. package/dist/utils/lark-upload.d.ts.map +1 -1
  513. package/dist/utils/lark-upload.js +52 -1
  514. package/dist/utils/lark-upload.js.map +1 -1
  515. package/dist/utils/pending-input-queue.d.ts +15 -0
  516. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  517. package/dist/utils/pending-input-queue.js +5 -1
  518. package/dist/utils/pending-input-queue.js.map +1 -1
  519. package/dist/utils/user-token.d.ts.map +1 -1
  520. package/dist/utils/user-token.js +53 -2
  521. package/dist/utils/user-token.js.map +1 -1
  522. package/dist/worker-ipc-preload.d.ts +12 -0
  523. package/dist/worker-ipc-preload.d.ts.map +1 -0
  524. package/dist/worker-ipc-preload.js +44 -0
  525. package/dist/worker-ipc-preload.js.map +1 -0
  526. package/dist/worker.js +2604 -325
  527. package/dist/worker.js.map +1 -1
  528. package/dist/workflows/v3/session-relay-client.d.ts +1 -0
  529. package/dist/workflows/v3/session-relay-client.d.ts.map +1 -1
  530. package/dist/workflows/v3/session-relay-client.js +12 -3
  531. package/dist/workflows/v3/session-relay-client.js.map +1 -1
  532. package/package.json +1 -1
  533. package/dist/dashboard-web/chunks/bot-defaults-page-LTVOUDIS.js +0 -10
  534. package/dist/dashboard-web/chunks/chunk-DCS35UMD.js +0 -1
  535. package/dist/dashboard-web/chunks/chunk-MFQPCVHY.js +0 -51
  536. package/dist/dashboard-web/chunks/connectors-page-5KWDIMKC.js +0 -1
  537. package/dist/dashboard-web/chunks/groups-page-FHOKYXMW.js +0 -8
  538. package/dist/dashboard-web/chunks/overview-page-QYI3KBDD.js +0 -1
  539. package/dist/dashboard-web/chunks/sessions-page-WBP4N7D2.js +0 -6
@@ -18,6 +18,7 @@ import type { WorkflowDaemonMutation, WorkflowDaemonMutationResponse } from './d
18
18
  export interface WorkflowSessionRelayContext {
19
19
  sessionId: string;
20
20
  capability: string;
21
+ originChannelId?: string;
21
22
  turnId?: string;
22
23
  dispatchAttempt?: number;
23
24
  /** Routing hints only — never identity. */
@@ -1 +1 @@
1
- {"version":3,"file":"session-relay-client.d.ts","sourceRoot":"","sources":["../../../src/workflows/v3/session-relay-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAIrG,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,2BAA2B,CAAC;IAC/C,UAAU,CAAC,EAAE,OAAO,0BAA0B,CAAC;CAChD,GAAG,2BAA2B,GAAG,IAAI,CAqBrC;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,OAAO,EAAE,2BAA2B,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAkC1C"}
1
+ {"version":3,"file":"session-relay-client.d.ts","sourceRoot":"","sources":["../../../src/workflows/v3/session-relay-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,2BAA2B,EAC5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAIrG,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,2BAA2B,CAAC;IAC/C,UAAU,CAAC,EAAE,OAAO,0BAA0B,CAAC;CAChD,GAAG,2BAA2B,GAAG,IAAI,CAgCrC;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,OAAO,EAAE,2BAA2B,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAqC1C"}
@@ -38,15 +38,21 @@ export function readWorkflowSessionRelayContext(options) {
38
38
  return null;
39
39
  const readClaim = options.readClaim ?? readManagedOriginCapability;
40
40
  const relayDir = options.env.BOTMUX_SEND_RELAY?.trim();
41
- const claim = readClaim(options.dataDir, sessionId, relayDir || undefined);
41
+ const originChannelId = options.env.BOTMUX_ORIGIN_CHANNEL_ID?.trim();
42
+ const claim = readClaim(options.dataDir, sessionId, relayDir || undefined, originChannelId || undefined);
42
43
  if (!claim)
43
44
  return null;
44
45
  const portRaw = Number(options.env.BOTMUX_DAEMON_IPC_PORT);
45
- const ipcPortFallback = Number.isSafeInteger(portRaw) && portRaw > 0 ? portRaw : undefined;
46
+ // Persistent panes can retain a spawn-time daemon port across daemon
47
+ // restarts. Prefer the current worker-published port from the rotating,
48
+ // protected claim; the inherited env remains a compatibility fallback.
49
+ const ipcPortFallback = claim.ipcPort
50
+ ?? (Number.isSafeInteger(portRaw) && portRaw > 0 ? portRaw : undefined);
46
51
  const larkAppId = options.env.BOTMUX_LARK_APP_ID?.trim();
47
52
  return {
48
53
  sessionId,
49
54
  capability: claim.capability,
55
+ ...(claim.channelId ? { originChannelId: claim.channelId } : {}),
50
56
  ...(claim.turnId ? { turnId: claim.turnId } : {}),
51
57
  ...(claim.dispatchAttempt !== undefined ? { dispatchAttempt: claim.dispatchAttempt } : {}),
52
58
  ...(larkAppId ? { larkAppId } : {}),
@@ -60,7 +66,7 @@ export function readWorkflowSessionRelayContext(options) {
60
66
  */
61
67
  export async function postWorkflowSessionRunMutation(input) {
62
68
  const discovered = input.resolveIpcPort?.(input.context.larkAppId);
63
- const ipcPort = discovered ?? input.context.ipcPortFallback;
69
+ const ipcPort = input.context.ipcPortFallback ?? discovered;
64
70
  if (!ipcPort) {
65
71
  throw new WorkflowDaemonMutationTransportError('找不到目标 daemon 端口(daemon 发现目录不可见且缺少 BOTMUX_DAEMON_IPC_PORT);请确认 daemon 在线');
66
72
  }
@@ -69,6 +75,9 @@ export async function postWorkflowSessionRunMutation(input) {
69
75
  ...(input.body ?? {}),
70
76
  sessionId: input.context.sessionId,
71
77
  originCapability: input.context.capability,
78
+ ...(input.context.originChannelId
79
+ ? { originChannelId: input.context.originChannelId }
80
+ : {}),
72
81
  ...(input.context.turnId ? { originTurnId: input.context.turnId } : {}),
73
82
  ...(input.context.dispatchAttempt !== undefined
74
83
  ? { originDispatchAttempt: input.context.dispatchAttempt }
@@ -1 +1 @@
1
- {"version":3,"file":"session-relay-client.js","sourceRoot":"","sources":["../../../src/workflows/v3/session-relay-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,2BAA2B,GAC5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAY1E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAO/C;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxF,IAAI,MAAM,EAAE,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,2BAA2B,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACzD,OAAO;QACL,SAAS;QACT,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAQpD;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oCAAoC,CAC5C,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,oCAAoC,IAAI,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5G,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;QAClC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;YAC7C,CAAC,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;YAC1D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,SAAS,CAAC,oBAAoB,OAAO,GAAG,IAAI,EAAE,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,oCAAoC,CAC5C,qBAAqB,OAAO,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACpF,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"session-relay-client.js","sourceRoot":"","sources":["../../../src/workflows/v3/session-relay-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botmux",
3
- "version": "3.10.0",
3
+ "version": "3.11.0",
4
4
  "description": "Bridge between IM platforms and AI coding CLIs — one topic, one CLI session with live streaming",
5
5
  "type": "module",
6
6
  "main": "dist/index-daemon.js",
@@ -1,10 +0,0 @@
1
- import{b as Et}from"./chunk-3UE7S77S.js";import{c as U}from"./chunk-ZU3UUKAR.js";import{a as kt,b as ct,c as yt,g as Ft,h as Ut,j as jt,k as Gt,q as Ct}from"./chunk-5CJMHTT4.js";import{B as At,C as $t,a as gt,t as Mt,y as dt}from"./chunk-MFQPCVHY.js";import{a as Ot}from"./chunk-SYC6D5XU.js";import{a as re,d as Lt}from"./chunk-5THX4DI2.js";import{c as Dt}from"./chunk-7SZRL6FY.js";var s=Dt(re(),1);var Ht=[{id:"claude-code",label:"Claude"},{id:"codex",label:"Codex"},{id:"traex",label:"traex"}],bt={options:Ht,ttadkModelDefault:"glm-5.1",ttadkModelSuggestions:[]};function ht(a,t){return typeof a?.cliId=="string"&&a.cliId?a.cliId:t}function St(a){let t=null;for(let o of gt.sessions.values())o.larkAppId!==a||!o.cliId||(!t||Number(o.lastMessageAt??0)>Number(t.lastMessageAt??0))&&(t=o);return t?.cliId??""}function xt(a,t){let o=typeof a.agentSelectionKey=="string"&&a.agentSelectionKey?a.agentSelectionKey:"";return o||ht(a,t)||"claude-code"}function Nt(a,t){return a.find(o=>o.id===t)}function Wt(a,t){return a?.gateway==="ttadk"&&a.acceptsModel!==!1?t.ttadkModelSuggestions:[]}function qt(){let a=0;return{begin(){let t=++a;return{commit:()=>t===a}}}}async function Jt(){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 _t(a,t){try{let o=await fetch(`/api/bots/${encodeURIComponent(a)}/substitute-targets/resolve`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:t})}),u=await o.json().catch(()=>({}));return o.ok?{ok:!0,resolution:u?.resolution??{}}:{ok:!1,error:u?.error?`HTTP ${o.status}: ${u.error}`:`HTTP ${o.status}`}}catch(o){return{ok:!1,error:o?.message??String(o)}}}async function Vt(){try{let a=await fetch("/api/cli-options"),t=await a.json().catch(()=>({}));if(!a.ok||!Array.isArray(t?.options))return bt;let o=t.options.filter(l=>l&&typeof l.id=="string"&&typeof l.label=="string"),u=typeof t.ttadkModelDefault=="string"&&t.ttadkModelDefault.trim()?t.ttadkModelDefault.trim():bt.ttadkModelDefault,i=Array.isArray(t.ttadkModelSuggestions)?t.ttadkModelSuggestions.filter(l=>typeof l=="string"):[];return{options:o.length?o:Ht,ttadkModelDefault:u,ttadkModelSuggestions:i}}catch{return bt}}function Kt(a){if(!a)return"\u2014";let t=new Date(a);return Number.isNaN(t.getTime())?"\u2014":t.toLocaleString()}var e=Dt(Lt(),1);function Tt(a){let t=a.cliRuntime;if(!t||typeof t!="object"){let i=typeof a.cliPathOverride=="string"?a.cliPathOverride.trim():"";return{mode:i?"legacy":"official",id:"",displayName:"",executable:i,legacyPath:i,updateProvider:"auto",packageName:""}}let o=t.update?.provider,u=o==="self"||o==="npm"||o==="none"?o:"auto";return{mode:"custom",id:typeof t.id=="string"?t.id:"",displayName:typeof t.displayName=="string"?t.displayName:"",executable:typeof t.executable=="string"?t.executable:"",legacyPath:"",updateProvider:u,packageName:t.update?.provider==="npm"&&typeof t.update.packageName=="string"?t.update.packageName:""}}var mt=["common","sessions","security","cards","advanced"];function ue(a){let t=U(),o=(0,s.useRef)([]),u={common:t("botDefaults.tabCommon"),sessions:t("botDefaults.tabSessions"),security:t("botDefaults.tabSecurity"),cards:t("botDefaults.tabCards"),advanced:t("botDefaults.tabAdvanced")};function i(l){let b=(l+mt.length)%mt.length,n=mt[b];a.onChange(n),o.current[b]?.focus()}return(0,e.jsxs)("nav",{className:"bd-tab-bar","aria-label":t("botDefaults.tabNavigation"),children:[(0,e.jsx)("div",{className:"bd-tabs",role:"tablist",children:mt.map((l,b)=>(0,e.jsx)("button",{ref:n=>{o.current[b]=n},id:`bd-tab-${l}`,type:"button",role:"tab",className:`bd-tab${a.active===l?" active":""}`,"aria-selected":a.active===l,"aria-controls":`bd-panel-${l}`,tabIndex:a.active===l?0:-1,"data-bd-tab":l,onClick:()=>a.onChange(l),onKeyDown:n=>{n.key==="ArrowRight"?(n.preventDefault(),i(b+1)):n.key==="ArrowLeft"?(n.preventDefault(),i(b-1)):n.key==="Home"?(n.preventDefault(),i(0)):n.key==="End"&&(n.preventDefault(),i(mt.length-1))},children:u[l]},l))}),(0,e.jsx)("small",{className:"bd-tab-hint",children:t("botDefaults.tabHint")})]})}var de=1,Qt=14;function ft(a){let t=(0,s.useRef)(null);return(0,s.useEffect)(()=>{let o=t.current;if(!o||typeof window>"u")return;let u=n=>{for(let f of n)f.style.gridColumn="",f.style.gridRowStart="",f.style.gridRowEnd=""},i=()=>{let n=Array.from(o.children).filter(k=>k instanceof HTMLElement);if(!n.length)return;let f=o.clientWidth;if(f<=0)return;let g=(o.closest(".bd-detail")?.clientWidth??f)>=1024?2:1;if(g<2){u(n);return}let c=de+Qt,d=new Array(g).fill(0);for(let k of n){let x=Math.max(1,Math.ceil((k.getBoundingClientRect().height+Qt)/c));if(k.classList.contains("bd-tile-wide")){let h=Math.max(...d);k.style.gridColumn="1 / -1",k.style.gridRowStart=String(h+1),k.style.gridRowEnd=String(h+1+x),d.fill(h+x);continue}let y=0;for(let h=1;h<g;h++)d[h]<d[y]&&(y=h);let C=d[y];k.style.gridColumn=String(y+1),k.style.gridRowStart=String(C+1),k.style.gridRowEnd=String(C+1+x),d[y]=C+x}},l=window.requestAnimationFrame(i),b=typeof ResizeObserver<"u"?new ResizeObserver(()=>i()):null;if(b){b.observe(o);for(let n of Array.from(o.children))b.observe(n)}return window.addEventListener("resize",i),()=>{window.cancelAnimationFrame(l),b?.disconnect(),window.removeEventListener("resize",i)}}),(0,e.jsx)("div",{ref:t,className:a.className?`bd-tab-grid ${a.className}`:"bd-tab-grid",children:a.children})}function Rt(a,t=""){let o=a?` ${a.ok?"hint-ok":"hint-warn-inline"}`:"";return`oncall-status${t?` ${t}`:""}${o}`}function W(a){return(0,e.jsx)("span",{className:Rt(a.status),...a.attr??{},children:a.status?.text??""})}function ce(a){let t=typeof a.children=="string"?a.children:void 0;return(0,e.jsx)(jt,{className:"bd-info-tip",label:t,children:a.children})}function $(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)(ce,{children:a.help}):null]})}function ot(a){let t=U();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(Ct,{id:`bd-menu-${a.dataInput}`,className:["bd-field-menu",a.className].filter(Boolean).join(" "),ariaLabel:a.ariaLabel,disabled:a.disabled,label:kt(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 st(a){return(0,e.jsxs)("label",{className:"toggle-row",children:[(0,e.jsx)("input",{type:"checkbox","data-action":a.dataAction,checked:a.checked,disabled:a.disabled,onChange:t=>a.onChange(t.currentTarget.checked)}),(0,e.jsx)("span",{className:"switch","aria-hidden":"true"}),(0,e.jsx)("span",{className:"toggle-tx",children:(0,e.jsx)("strong",{children:(0,e.jsx)($,{help:a.help,children:a.title})})})]})}async function _(a,t,o){let u=await fetch(t,{method:a,headers:{"content-type":"application/json"},body:o===void 0?void 0:JSON.stringify(o)}),i=await u.json().catch(()=>({}));return{ok:u.ok&&i?.ok!==!1,status:u.status,body:i}}function H(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 se(a){let t=a.trim();return t?/^[1-9]\d*$/.test(t)?Number(t):"invalid":null}function zt(a,t){let o=a.trim();return o===""?t:/^(0|[1-9]\d*)$/.test(o)?Number(o):null}var Bt=["email","openId","userId","unionId"];function Xt(a){let t=a.split(/[\r\n,,;;]+/).map(o=>o.trim()).filter(Boolean);return[...new Set(t)]}function ut(a){return(a??[]).join(`
2
- `)}function be(a){return Bt.find(t=>a?.[t]?.trim())??"email"}function me(a){let t=a.idValue.trim();if(!t)return null;let o={...a.persisted};if(a.persisted[a.idField]!==t||a.originalIdField!=null&&a.originalIdField!==a.idField)for(let l of Bt)delete o[l];o[a.idField]=t;let i=a.name.trim();return i?o.name=i:delete o.name,o}function fe(a,t){return a==null?t("botDefaults.brandStateDefault"):a.trim()===""?t("botDefaults.brandStateOff"):t("botDefaults.brandStateCustom")}function pe(a,t){return a==null?t("botDefaults.quotaStateOff"):t("botDefaults.quotaStateOn",{count:a})}function ge(a,t){return a==null?t("botDefaults.maxLiveWorkersStateDefault"):t("botDefaults.maxLiveWorkersStateOn",{count:a})}function ye(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 he(){let a=U(),t=(0,s.useRef)(!0),o=(0,s.useRef)(qt()),[u,i]=(0,s.useState)([]),[l,b]=(0,s.useState)(bt),[n,f]=(0,s.useState)(null),[r,m]=(0,s.useState)(!0),[g,c]=(0,s.useState)(!1),[d,k]=(0,s.useState)(""),[x,y]=(0,s.useState)(null),[C,h]=(0,s.useState)(0),[,D]=(0,s.useState)(0),[N,S]=(0,s.useState)(!1),[p,j]=(0,s.useState)("common"),F=(0,s.useCallback)(async(M=!1)=>{M&&h(nt=>nt+1);let K=o.current.begin();m(!0);try{let[nt,Y]=await Promise.all([Jt(),Vt()]);if(!t.current||!K.commit())return;i(nt.bots),f(nt.error),b(Y)}finally{t.current&&K.commit()&&m(!1)}},[]);(0,s.useEffect)(()=>{t.current=!0,F(),$t().then(()=>{t.current&&D(K=>K+1)});let M=gt.onBotsChanged(()=>{t.current&&F()});return()=>{t.current=!1,M()}},[F]);let G=(0,s.useMemo)(()=>{let M=d.trim().toLowerCase();return u.filter(K=>!M||(K.botName??"").toLowerCase().includes(M)||(K.larkAppId??"").toLowerCase().includes(M))},[u,d]);(0,s.useEffect)(()=>{if(!(n||r)){if(G.length===0){x!==null&&y(null);return}(!x||!G.some(M=>M.larkAppId===x))&&y(G[0].larkAppId)}},[G,n,r,x]);let w=x?G.find(M=>M.larkAppId===x)??null:null,X=(0,s.useCallback)((M,K)=>{i(nt=>nt.map(Y=>Y.larkAppId!==M?Y:typeof K=="function"?K(Y):{...Y,...K}))},[]),V=async()=>{c(!0);try{await F(!0)}finally{t.current&&c(!1)}},q;return r?q=(0,e.jsx)(yt,{label:a("common.loading")}):n?q=(0,e.jsxs)("p",{className:"hint-warn",children:["\u65E0\u6CD5\u52A0\u8F7D bot \u5217\u8868\uFF1A",n,(0,e.jsx)("br",{}),"\u5E38\u89C1\u539F\u56E0\uFF1Adashboard / daemon \u8FDB\u7A0B\u8FD8\u5728\u8DD1\u65E7\u4EE3\u7801\uFF0C\u6267\u884C ",(0,e.jsx)("code",{children:"botmux restart"})," \u540E\u5237\u65B0\u3002"]}):G.length===0?q=(0,e.jsx)("p",{className:"empty",children:a("botDefaults.empty")}):w?q=(0,e.jsx)(De,{bot:w,cliState:l,patchBot:X,activeTab:p,onTabChange:j},`${w.larkAppId}:${C}`):q=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)(Ut,{id:"bd-refresh",label:a("botDefaults.refresh"),busy:g,disabled:g,onClick:()=>{V()}}),Mt.authed?(0,e.jsx)(Ft,{className:"page-primary-action add-bot-btn",disabled:N,onClick:()=>{S(!0),Et().finally(()=>S(!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:M=>M.preventDefault(),children:(0,e.jsx)("input",{type:"search",name:"q",placeholder:a("botDefaults.search"),value:d,onChange:M=>k(M.currentTarget.value)})}),(0,e.jsxs)("div",{className:"bd-roster-meta",children:[(0,e.jsx)("span",{children:a("botDefaults.rosterCount",{count:G.length})}),d.trim()&&G.length!==u.length?(0,e.jsx)("span",{children:a("botDefaults.rosterFiltered",{total:u.length})}):null]}),(0,e.jsx)("div",{className:"bd-roster-list",children:!n&&G.map(M=>(0,e.jsx)(ve,{bot:M,selected:M.larkAppId===x,onSelect:()=>y(M.larkAppId)},M.larkAppId))})]}),(0,e.jsx)("div",{id:"bd-list",className:"bd-detail",children:q})]})]})}function ve(a){let{bot:t}=a,o=t.botName??t.larkAppId,u=ht(t,St(t.larkAppId));return(0,e.jsxs)("div",{className:`bd-roster-item${a.selected?" on":""}`,"data-appid":t.larkAppId,role:"button",tabIndex:0,onClick:a.onSelect,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),a.onSelect())},children:[(0,e.jsx)(ct,{html:dt({name:o,larkAppId:t.larkAppId,size:"sm"})}),(0,e.jsxs)("div",{className:"bd-roster-tx",children:[(0,e.jsx)("b",{children:(0,e.jsx)(Gt,{text:o,showPopover:!1,textClassName:"bd-roster-name"})}),(0,e.jsx)("span",{children:u||t.larkAppId.slice(0,14)})]}),t.defaultOncall?.enabled?(0,e.jsx)("span",{className:"bd-roster-flag",children:"oncall"}):null]})}function De(a){let t=U(),{bot:o,cliState:u,patchBot:i}=a,l=o.botName??o.larkAppId,b=ht(o,St(o.larkAppId)),n=(0,s.useCallback)(async r=>{let m=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/card-prefs`,r);return m.ok&&i(o.larkAppId,g=>ye(g,m.body)),m},[o.larkAppId,i]);if(o.error)return(0,e.jsxs)("article",{className:"bd-card bd-profile","data-appid":o.larkAppId,children:[(0,e.jsxs)("header",{className:"bd-profile-head",children:[(0,e.jsx)(ct,{html:dt({name:l,larkAppId:o.larkAppId})}),(0,e.jsxs)("div",{className:"bd-profile-id",children:[(0,e.jsx)("strong",{children:l}),(0,e.jsx)("code",{children:o.larkAppId})]})]}),(0,e.jsxs)("p",{className:"hint-warn-inline",children:["\u67E5\u8BE2\u5931\u8D25\uFF1A",o.error]})]});let f=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)(Se,{bot:o,name:l,patchBot:i}),(0,e.jsx)("div",{className:"bd-profile-main",children:(0,e.jsx)(xe,{bot:o,cli:b,patchBot:i,meta:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("small",{className:"bd-meta-ok",children:["\u25CF ",t("botDefaults.metaOnline")]}),(f.since??0)>0?(0,e.jsxs)("small",{"data-oncall-since":!0,children:[t("botDefaults.lastEnabled"),": ",Kt(f.since??0)]}):null,(o.autoboundChatCount??0)>0?(0,e.jsx)("small",{children:t("botDefaults.autobound",{count:o.autoboundChatCount??0})}):null]})})})]}),(0,e.jsx)(ue,{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)(ft,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ne,{bot:o,sessionFallback:b,cliState:u,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Te,{bot:o,patchBot:i,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)($e,{bot:o,patchBot:i})})]})}),(0,e.jsx)("div",{id:"bd-panel-sessions",role:"tabpanel","aria-labelledby":"bd-tab-sessions",className:"bd-tab-panel",hidden:a.activeTab!=="sessions",children:(0,e.jsxs)(ft,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ge,{bot:o,patchBot:i,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ee,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ue,{bot:o,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(He,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(We,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(je,{bot:o,patchBot:i,putCardPref:n})})]})}),(0,e.jsx)("div",{id:"bd-panel-security",role:"tabpanel","aria-labelledby":"bd-tab-security",className:"bd-tab-panel",hidden:a.activeTab!=="security",children:(0,e.jsxs)(ft,{children:[o.cliId!=="riff"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ie,{bot:o,patchBot:i})}):null,o.cliId!=="riff"&&o.sandbox===!0?(0,e.jsx)("section",{className:"bd-tile bd-tile-wide",children:(0,e.jsx)(Be,{bot:o,patchBot:i})}):null,(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ze,{bot:o,patchBot:i})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(qe,{bot:o,patchBot:i})})]})}),(0,e.jsx)("div",{id:"bd-panel-cards",role:"tabpanel","aria-labelledby":"bd-tab-cards",className:"bd-tab-panel",hidden:a.activeTab!=="cards",children:(0,e.jsxs)(ft,{children:[(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Le,{bot:o,putCardPref:n})}),(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Xe,{bot:o,patchBot:i})})]})}),(0,e.jsx)("div",{id:"bd-panel-advanced",role:"tabpanel","aria-labelledby":"bd-tab-advanced",className:"bd-tab-panel",hidden:a.activeTab!=="advanced",children:(0,e.jsxs)(ft,{children:[o.cliId!=="riff"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Ae,{bot:o,patchBot:i})}):null,o.cliId==="codex-app"?(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(Fe,{bot:o,putCardPref:n})}):null,(0,e.jsx)("section",{className:"bd-tile",children:(0,e.jsx)(ke,{bot:o,patchBot:i})})]})})]})]})}function ke(a){let t=U();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)(Je,{bot:a.bot,patchBot:a.patchBot}),(0,e.jsx)(_e,{bot:a.bot,patchBot:a.patchBot})]})}var vt=512;async function Ce(a){let t=await createImageBitmap(a);try{let o=Math.min(t.width,t.height);if(!o)throw new Error("empty image");let u=document.createElement("canvas");u.width=vt,u.height=vt;let i=u.getContext("2d");if(!i)throw new Error("canvas unavailable");let l=(t.width-o)/2,b=(t.height-o)/2;return i.drawImage(t,l,b,o,o,0,0,vt,vt),u.toDataURL("image/png")}finally{t.close()}}function Se(a){let t=U(),{bot:o,name:u,patchBot:i}=a,l=(0,s.useRef)(null),[b,n]=(0,s.useState)(!1),[f,r]=(0,s.useState)(null),[m,g]=(0,s.useState)(!1),[c,d]=(0,s.useState)(!1),k=(0,s.useRef)(null);function x(h,D){let S=["no_session","session_expired","no_access","unsupported_brand"].includes(h)?t(`botDefaults.avatarWarn.${h}`):D||h;return t("botDefaults.avatarFailed",{error:S})}let y=(0,s.useCallback)(async h=>{n(!0),r({text:`\u23F3 ${t("botDefaults.avatarUploading")}`,ok:!0});try{let D=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/avatar`,{imageBase64:h});if(D.ok&&D.body.ok){let N=typeof D.body.avatarUrl=="string"?D.body.avatarUrl:"";N&&At(o.larkAppId,u,N),i(o.larkAppId,S=>({...S})),k.current=null,g(!1),r({text:`\u2713 ${t("botDefaults.avatarOkFeishu")}`,ok:!0})}else{let N=String(D.body?.error??""),S=typeof D.body?.message=="string"?D.body.message:void 0;r({text:`\u2717 ${x(N,S??H(D))}`});let p=N==="no_session"||N==="session_expired";g(p),p||(k.current=null)}}catch(D){r({text:`\u2717 ${t("botDefaults.avatarFailed",{error:L(D)})}`})}finally{n(!1)}},[o.larkAppId,u,i,t]);async function C(h){if(!h||b)return;n(!0);let D;try{D=await Ce(h)}catch{n(!1),r({text:`\u2717 ${t("botDefaults.avatarBadImage")}`});return}k.current=D,await y(D)}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:b,onClick:()=>l.current?.click(),children:[(0,e.jsx)(ct,{html:dt({name:u,larkAppId:o.larkAppId,dot:"ok"})}),(0,e.jsx)("span",{className:"bd-avatar-edit-badge","aria-hidden":"true",children:b?"\u23F3":"\u270E"})]}),(0,e.jsx)("input",{ref:l,type:"file",accept:"image/*",hidden:!0,"data-input":"botAvatarFile",onChange:h=>{let D=h.currentTarget.files?.[0];h.currentTarget.value="",C(D)}}),c?(0,e.jsx)(ne,{onClose:()=>d(!1),onSuccess:()=>{g(!1),d(!1),k.current&&y(k.current)}}):null]}),f?(0,e.jsxs)("small",{className:Rt(f,"bd-avatar-status"),"data-avatar-status":!0,children:[f.text,m?(0,e.jsx)("button",{type:"button",className:"bd-feishu-login","data-action":"feishu-login-avatar",onClick:()=>d(!0),children:t("feishuLogin.entry")}):null]}):null]})}function xe(a){let t=U(),{bot:o,cli:u,patchBot:i}=a,l=o.botName??o.larkAppId,[b,n]=(0,s.useState)(!1),[f,r]=(0,s.useState)(l),[m,g]=(0,s.useState)(!1),[c,d]=(0,s.useState)(null),[k,x]=(0,s.useState)(!1),[y,C]=(0,s.useState)(!1);(0,s.useEffect)(()=>{b||r(l)},[b,l]);function h(S){n(S),S&&(r(l),d(null),x(!1))}function D(S,p){let F=["no_session","session_expired","no_access","unsupported_brand"].includes(S)?t(`botDefaults.renameWarn.${S}`):p||S;return t("botDefaults.renameLocalOnly",{reason:F})}let N=(0,s.useCallback)(async()=>{let S=f.trim();if(!S){d({text:`\u2717 ${t("botDefaults.renameEmpty")}`});return}g(!0),d({text:`\u23F3 ${t("botDefaults.renaming")}`,ok:!0});try{let p=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/rename`,{name:S});if(p.ok&&p.body.ok){let j=typeof p.body.botName=="string"&&p.body.botName?p.body.botName:S;i(o.larkAppId,F=>({...F,botName:j,larkBotName:p.body.mode==="feishu"?S:F.larkBotName,displayName:p.body.mode==="feishu"?null:S})),h(!1),p.body.mode==="feishu"?(d({text:`\u2713 ${t("botDefaults.renameOkFeishu")}`,ok:!0}),x(!1)):(d({text:`\u26A0 ${D(String(p.body.warning??""),p.body.message)}`}),x(p.body.warning==="no_session"||p.body.warning==="session_expired"))}else d({text:`\u2717 ${t("botDefaults.renameFailed",{error:H(p)})}`})}catch(p){d({text:`\u2717 ${t("botDefaults.renameFailed",{error:L(p)})}`})}finally{g(!1)}},[o.larkAppId,f,i,t]);return(0,e.jsxs)("div",{className:"bd-profile-id",children:[b?(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:f,disabled:m,autoFocus:!0,onChange:S=>r(S.currentTarget.value),onKeyDown:S=>{S.key==="Enter"?(S.preventDefault(),N()):S.key==="Escape"&&h(!1)}}),(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-bot-name",disabled:m,onClick:()=>{N()},children:t("botDefaults.renameSave")}),(0,e.jsx)("button",{type:"button","data-action":"cancel-bot-name",disabled:m,onClick:()=>h(!1),children:t("botDefaults.renameCancel")})]}):(0,e.jsxs)("div",{className:"bd-profile-title-row","data-name-row":!0,children:[(0,e.jsxs)("div",{className:"bd-profile-title-content",children:[(0,e.jsx)("strong",{"data-bot-name":!0,children:l}),u?(0,e.jsx)("span",{className:"mate-role bd-profile-cli-tag",children:u}):null,a.meta?(0,e.jsx)("span",{className:"bd-profile-meta bd-meta",children:a.meta}):null]}),(0,e.jsx)("button",{type:"button",className:"bd-name-edit","data-action":"edit-bot-name",title:t("botDefaults.renameTitle"),"aria-label":t("botDefaults.renameTitle"),onClick:()=>h(!0),children:(0,e.jsx)("svg",{viewBox:"0 0 16 16",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,e.jsx)("path",{d:"M11.5 2.5l2 2L6 12l-2.5.5L4 10z"})})})]}),(0,e.jsx)("code",{children:o.larkAppId}),(0,e.jsx)("small",{className:Rt(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:!k,onClick:()=>C(!0),children:t("feishuLogin.entry")}),y?(0,e.jsx)(ne,{onClose:()=>C(!1),onSuccess:()=>{x(!1),C(!1),N()}}):null]})}function ne(a){let t=U(),{onClose:o,onSuccess:u}=a,i=(0,s.useRef)(null),l=(0,s.useRef)(null),[b,n]=(0,s.useState)(t("feishuLogin.starting")),[f,r]=(0,s.useState)(null),[m,g]=(0,s.useState)(!1),c=(0,s.useCallback)(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null)},[]),d=(0,s.useCallback)(y=>y?y.status==="awaiting_scan"&&y.qrDataUrl?(r(y.qrDataUrl),n(y.message||t("feishuLogin.scanHint")),g(!1),"active"):y.status==="starting"?(n(y.message||t("feishuLogin.starting")),r(null),g(!1),"active"):y.status==="success"?(c(),r(null),g(!1),n(t("feishuLogin.success")),l.current=window.setTimeout(()=>u(),900),"done"):(c(),r(null),n(t("feishuLogin.failed",{reason:y.message||y.reason||""})),g(!0),"done"):"active",[u,c,t]),k=(0,s.useCallback)(async()=>{try{let C=await(await fetch("/api/feishu-login/status")).json().catch(()=>({}));d(C.login)}catch{}},[d]),x=(0,s.useCallback)(async()=>{c(),n(t("feishuLogin.starting")),r(null),g(!1);let y="active";try{let h=await(await fetch("/api/feishu-login/start",{method:"POST"})).json().catch(()=>({}));y=d(h.login)}catch(C){n(t("feishuLogin.failed",{reason:L(C)})),g(!0);return}y==="active"&&i.current===null&&(i.current=window.setInterval(()=>{k()},1500))},[k,d,c,t]);return(0,s.useEffect)(()=>(x(),()=>{c(),l.current!==null&&window.clearTimeout(l.current)}),[x,c]),(0,e.jsx)("div",{className:"feishu-login-overlay",onClick:y=>{y.currentTarget===y.target&&o()},children:(0,e.jsxs)("div",{className:"feishu-login-modal",role:"dialog","aria-modal":"true",children:[(0,e.jsx)("button",{type:"button",className:"feishu-login-close","data-close":!0,"aria-label":t("feishuLogin.close"),onClick:o,children:"x"}),(0,e.jsx)("h3",{className:"feishu-login-title",children:t("feishuLogin.title")}),(0,e.jsx)("p",{className:"feishu-login-hint","data-hint":!0,children:b}),(0,e.jsx)("div",{className:"feishu-login-qr","data-qr":!0,children:f?(0,e.jsx)("img",{className:"qr-image",src:f,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:!m,onClick:()=>{x()},children:t("feishuLogin.retry")})})]})})}function Ne(a){let t=U(),{bot:o,cliState:u,patchBot:i}=a,l=xt(o,a.sessionFallback),b=JSON.stringify([o.cliRuntime??null,o.cliPathOverride??null]),[n,f]=(0,s.useState)(l),[r,m]=(0,s.useState)(!1),[g,c]=(0,s.useState)(typeof o.model=="string"?o.model:""),[d,k]=(0,s.useState)(()=>Tt(o)),[x,y]=(0,s.useState)(!1),[C,h]=(0,s.useState)(null),[D,N]=(0,s.useState)(null),[S,p]=(0,s.useState)(!1),[j,F]=(0,s.useState)(Zt(o)),[G,w]=(0,s.useState)(null),[X,V]=(0,s.useState)(!1);(0,s.useEffect)(()=>{f(xt(o,a.sessionFallback)),m(!1),c(typeof o.model=="string"?o.model:""),k(Tt(o)),y(!1),F(Zt(o))},[o.agentSelectionKey,o.cliId,o.larkAppId,o.model,b,o.wrapperCli,o.skillInjection,o.skillInjectionDefault,a.sessionFallback]);let q=Nt(u.options,n),M=Wt(q,u),K=q?.gateway==="ttadk"&&q.acceptsModel===!1,nt=K?t("botOnboarding.modelTtadkCocoPlaceholder"):q?.gateway==="ttadk"?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",u.ttadkModelDefault):t("botDefaults.agentModelPlaceholder");function Y(P){let z=n;f(P),m(!0),P!==z&&(P!=="codex"||z!=="codex")&&(k(Tt({cliRuntime:null,cliPathOverride:null})),y(!0),h(null));let E=Nt(u.options,P),rt=E?.gateway==="ttadk",lt=rt&&E.acceptsModel!==!1;c(rt&&!lt?"":lt?et=>et.trim()?et:u.ttadkModelDefault:et=>et.trim()===u.ttadkModelDefault?"":et)}function B(P){k(z=>({...z,mode:P})),y(!0),h(null),N(null)}function v(P){k(z=>({...z,...P})),y(!0),h(null),N(null)}async function T(){N(null),h(null);let P;if(x&&(P=null),x&&n==="codex"&&d.mode==="custom"){let z=d.id.trim(),E=d.executable.trim(),rt=d.displayName.trim(),lt=d.packageName.trim();if(!z||!E){let et=t("botDefaults.runtimeRequired");N({text:et}),h({text:et});return}if(d.updateProvider==="npm"&&!lt){let et=t("botDefaults.runtimePackageRequired");N({text:et}),h({text:et});return}P={id:z,...rt?{displayName:rt}:{},executable:E,update:d.updateProvider==="npm"?{provider:"npm",packageName:lt}:{provider:d.updateProvider}}}p(!0);try{let z={cliId:n,model:g,...x?{cliRuntime:P}:{}},E=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,z);if(E.ok&&E.body.ok){let rt=Number.isInteger(E.body.closedMismatchedSessions)&&E.body.closedMismatchedSessions>0?E.body.closedMismatchedSessions:0,lt=rt>0?t("botDefaults.agentClosedCount",{count:rt}):"";if(N(E.body.availabilityWarning?{text:`\u26A0\uFE0F ${E.body.availabilityWarning}${lt?` \xB7 ${lt}`:""}`}:{text:`\u2713 ${lt||t("botDefaults.agentSaved")}`,ok:!0}),i(o.larkAppId,{cliId:E.body.cliId,cliRuntime:E.body.cliRuntime===void 0?x?P??null:o.cliRuntime??null:E.body.cliRuntime,cliPathOverride:E.body.cliPathOverride===void 0?x?null:o.cliPathOverride??null:E.body.cliPathOverride,wrapperCli:E.body.wrapperCli??null,model:E.body.model??"",agentSelectionKey:E.body.selectionKey??n}),y(!1),P){let et=E.body.runtimeProbe;et&&typeof et.version=="string"?h({text:t("botDefaults.runtimeProbeOk",{version:et.version,provider:typeof et.updateProvider=="string"?et.updateProvider:d.updateProvider}),ok:!0}):h({text:t("botDefaults.runtimeProbeMissing")})}}else{let lt=`\u2717 ${typeof E.body?.message=="string"&&E.body.message?E.body.message:H(E)}`;N({text:lt}),n==="codex"&&d.mode==="custom"&&h({text:lt})}}catch(z){let E=`\u2717 ${L(z)}`;N({text:E}),n==="codex"&&d.mode==="custom"&&h({text:E})}finally{p(!1)}}async function I(){if(o.cliId==="riff")return!0;try{let P=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/agent`,{cliId:"riff",model:""});return P.ok&&P.body.ok?(i(o.larkAppId,{cliId:P.body.cliId,cliRuntime:P.body.cliRuntime??null,wrapperCli:P.body.wrapperCli??null,model:P.body.model??"",agentSelectionKey:P.body.selectionKey??"riff"}),!0):(N({text:`\u2717 ${H(P)}`}),!1)}catch(P){return N({text:`\u2717 ${L(P)}`}),!1}}async function R(P){F(P),w(null),V(!0);try{let z=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/skill-injection`,{skillInjection:P});z.ok&&z.body.ok?(w({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}),i(o.larkAppId,{skillInjection:z.body.skillInjection??null})):w({text:`\u2717 ${H(z)}`})}catch(z){w({text:`\u2717 ${L(z)}`})}finally{V(!1)}}let A=o.skillInjectionSupport==="dynamic"?"dynamic":o.skillInjectionSupport==="global"?"global":"none",O=n==="riff",tt=n==="codex"&&(!o.wrapperCli||r),J=tt&&d.mode!=="official",Q=[...u.options].sort((P,z)=>P.label.localeCompare(z.label,"en",{sensitivity:"base"})).map(P=>({value:P.id,label:P.available===!1&&!(P.id==="codex"&&J)?t("botDefaults.agentMissingOption",{label:P.label,command:P.command??P.id}):`${P.label}\uFF08${P.id}\uFF09`})),at=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamic")}],Z=[{value:"dynamic",label:t("botDefaults.skillInjectionDynamicUnsupported"),disabled:!0},{value:"prompt",label:t("botDefaults.skillInjectionPrompt")},{value:"global",label:t("botDefaults.skillInjectionGlobal")},{value:"off",label:t("botDefaults.skillInjectionOff")}],it=[{value:"auto",label:t("botDefaults.runtimeProviderAuto")},{value:"self",label:t("botDefaults.runtimeProviderSelf")},{value:"npm",label:t("botDefaults.runtimeProviderNpm")},{value:"none",label:t("botDefaults.runtimeProviderNone")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionAgent")}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:t("botDefaults.agentCli")}),(0,e.jsx)(ot,{dataInput:"agentCliId",ariaLabel:t("botDefaults.agentCli"),value:n,disabled:S,options:Q,searchable:!0,onChange:Y}),q?.available===!1&&!J?(0,e.jsx)("small",{className:"hint-warn",children:t("botDefaults.agentMissingHint",{command:q.command??n})}):null]})}),tt?(0,e.jsxs)("div",{className:"bd-codex-runtime","data-codex-runtime":"",children:[(0,e.jsx)("div",{className:"bd-runtime-heading",children:(0,e.jsx)($,{help:t("botDefaults.runtimeHelp"),children:t("botDefaults.runtimeTitle")})}),(0,e.jsxs)("div",{className:"bd-runtime-mode",role:"group","aria-label":t("botDefaults.runtimeTitle"),children:[(0,e.jsx)("button",{type:"button","data-action":"runtime-official","aria-pressed":d.mode==="official",disabled:S,onClick:()=>B("official"),children:t("botDefaults.runtimeOfficial")}),(0,e.jsx)("button",{type:"button","data-action":"runtime-custom","aria-pressed":d.mode==="custom",disabled:S,onClick:()=>B("custom"),children:t("botDefaults.runtimeCustom")})]}),(0,e.jsx)("input",{type:"hidden","data-input":"agentRuntimeMode",value:d.mode,readOnly:!0}),(0,e.jsx)("p",{className:"bd-runtime-note",children:t(d.mode==="official"?"botDefaults.runtimeOfficialNote":d.mode==="legacy"?"botDefaults.runtimeLegacyNote":"botDefaults.runtimeCustomNote")}),d.mode==="legacy"?(0,e.jsx)("div",{className:"bd-runtime-fields","data-runtime-legacy":"",children:(0,e.jsxs)("label",{className:"bd-runtime-wide",children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeLegacyPath")}),(0,e.jsx)("input",{type:"text",value:d.legacyPath,readOnly:!0,"aria-readonly":"true","data-input":"agentRuntimeLegacyPath"})]})}):null,d.mode==="custom"?(0,e.jsxs)("div",{className:"bd-runtime-fields",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)($,{help:t("botDefaults.runtimeIdHelp"),children:t("botDefaults.runtimeId")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeId",value:d.id,disabled:S,autoComplete:"off",onChange:P=>v({id:P.currentTarget.value})})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeDisplayName")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeDisplayName",placeholder:t("botDefaults.runtimeDisplayNamePlaceholder"),value:d.displayName,disabled:S,autoComplete:"off",onChange:P=>v({displayName:P.currentTarget.value})})]}),(0,e.jsxs)("label",{className:"bd-runtime-wide",children:[(0,e.jsx)($,{help:t("botDefaults.runtimeExecutableHelp"),children:t("botDefaults.runtimeExecutable")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimeExecutable",value:d.executable,disabled:S,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:P=>v({executable:P.currentTarget.value})})]}),(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)("span",{children:t("botDefaults.runtimeUpdateProvider")}),(0,e.jsx)(ot,{dataInput:"agentRuntimeUpdateProvider",ariaLabel:t("botDefaults.runtimeUpdateProvider"),value:d.updateProvider,disabled:S,options:it,onChange:P=>v({updateProvider:P})})]}),d.updateProvider==="npm"?(0,e.jsxs)("label",{children:[(0,e.jsx)($,{help:t("botDefaults.runtimePackageHelp"),children:t("botDefaults.runtimePackageName")}),(0,e.jsx)("input",{type:"text","data-input":"agentRuntimePackageName",value:d.packageName,disabled:S,autoCapitalize:"none",autoComplete:"off",spellCheck:!1,onChange:P=>v({packageName:P.currentTarget.value})})]}):null]}):null,(0,e.jsx)(W,{status:C,attr:{"data-runtime-status":""}})]}):null,!O&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)($,{help:t("botDefaults.agentHelp"),children:t("botDefaults.agentModel")}),(0,e.jsx)("input",{type:"text","data-input":"agentModel",list:`agent-model-suggestions-${o.larkAppId}`,placeholder:nt,value:g,disabled:S||K,onChange:P=>c(P.currentTarget.value)}),(0,e.jsx)("datalist",{id:`agent-model-suggestions-${o.larkAppId}`,children:M.map(P=>(0,e.jsx)("option",{value:P},P))})]})}),O&&(0,e.jsx)(ze,{bot:o,patchBot:i,persistCliSelection:I}),!O&&A==="dynamic"?(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.skillInjectionHelpDynamic"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(ot,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:"dynamic",disabled:!0,options:at,onChange:()=>{}})]})}):!O&&A==="global"?(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.skillInjectionHelp"),children:t("botDefaults.skillInjection")}),(0,e.jsx)(ot,{dataInput:"skillInjection",ariaLabel:t("botDefaults.skillInjection"),value:j,disabled:X,options:Z,onChange:P=>{R(P)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:G,attr:{"data-skill-injection-status":""}})})]}):null,!O&&(0,e.jsxs)("div",{className:"actions bd-section-actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-agent",disabled:S,onClick:()=>{T()},children:t("botDefaults.agentSave")}),(0,e.jsx)(W,{status:D,attr:{"data-agent-status":""}})]})]})}function Zt(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 Te(a){let t=U(),{bot:o,patchBot:u}=a,i=Yt(o),[l,b]=(0,s.useState)(i.mode),[n,f]=(0,s.useState)(i.workingDir),[r,m]=(0,s.useState)(o.defaultWorkingDirAutoWorktree===!0),[g,c]=(0,s.useState)(null),[d,k]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let C=Yt(o);b(C.mode),f(C.workingDir),m(o.defaultWorkingDirAutoWorktree===!0)},[o.defaultOncall?.enabled,o.defaultOncall?.workingDir,o.defaultWorkingDir,o.defaultWorkingDirAutoWorktree]);async function x(){c(null);let C=n.trim();if(l!=="off"&&!C){c({text:t("botDefaults.required")});return}let h=l==="default"&&r;k(!0);try{let D=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/working-dir-mode`,{mode:l,workingDir:C,autoWorktree:h});if(D.ok&&D.body.ok){let N=D.body.resolvedPath?` \u2192 ${D.body.resolvedPath}`:"";c({text:`\u2713 ${t("botDefaults.workingDirSaved")}${N}`,ok:!0}),u(o.larkAppId,{defaultOncall:D.body.defaultOncall??o.defaultOncall,defaultWorkingDir:D.body.defaultWorkingDir??null,defaultWorkingDirAutoWorktree:D.body.defaultWorkingDirAutoWorktree===!0})}else c({text:`\u2717 ${H(D)}`})}catch(D){c({text:`\u2717 ${L(D)}`})}finally{k(!1)}}let y=[{value:"off",label:t("botDefaults.workingDirModeOff")},{value:"default",label:t("botDefaults.workingDirModeDefault")},{value:"oncall",label:t("botDefaults.workingDirModeOncall")}];return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionWorkingDir")}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.workingDirModeHelp"),children:t("botDefaults.workingDirMode")}),(0,e.jsx)(ot,{dataInput:"workingDirMode",ariaLabel:t("botDefaults.workingDirMode"),value:l,disabled:d,options:y,onChange:C=>b(C)})]})}),(0,e.jsx)("div",{className:"bd-row","data-wd-dir-row":!0,hidden:l==="off",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.workingDirField")}),(0,e.jsx)("input",{type:"text","data-input":"workingDir",placeholder:"e.g. /root/iserver/botmux",value:n,disabled:d,onChange:C=>f(C.currentTarget.value)})]})}),(0,e.jsxs)("label",{className:"toggle-row","data-wd-worktree-row":!0,hidden:l!=="default",children:[(0,e.jsx)("input",{type:"checkbox","data-input":"autoWorktree",checked:r,disabled:d,onChange:C=>m(C.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)($,{help:t("botDefaults.autoWorktreeHelp"),children:t("botDefaults.autoWorktree")})})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-working-dir",disabled:d,onClick:()=>{x()},children:t("botDefaults.save")}),(0,e.jsx)(W,{status:g,attr:{"data-status":""}})]}),(0,e.jsx)(Pe,{bot:o,putCardPref:a.putCardPref})]})}function Yt(a){let t=a.defaultOncall??{enabled:!1,workingDir:""};return{mode:t.enabled?"oncall":a.defaultWorkingDir?"default":"off",workingDir:a.defaultWorkingDir||t.workingDir||""}}function Pe(a){let t=U(),{bot:o,putCardPref:u}=a,[i,l]=(0,s.useState)(o.autoStartOnGroupJoin===!0),[b,n]=(0,s.useState)(o.autoStartOnNewTopic===!0),[f,r]=(0,s.useState)(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:""),[m,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(null);(0,s.useEffect)(()=>{l(o.autoStartOnGroupJoin===!0),n(o.autoStartOnNewTopic===!0),r(typeof o.autoStartOnGroupJoinPrompt=="string"?o.autoStartOnGroupJoinPrompt:"")},[o.autoStartOnGroupJoin,o.autoStartOnGroupJoinPrompt,o.autoStartOnNewTopic]);async function k(x,y){d(y),g(null);try{let C=await u(x);g(C.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${H(C)}`})}catch(C){g({text:`\u2717 ${L(C)}`})}finally{d(null)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:t("botDefaults.sectionAutoStart")}),(0,e.jsx)(st,{checked:i,disabled:c==="join",dataAction:"toggle-auto-join",title:t("botDefaults.autoStartJoin"),help:t("botDefaults.autoStartJoinHelp"),onChange:x=>{l(x),k({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:f,onChange:x=>r(x.currentTarget.value)})]})}),(0,e.jsx)(st,{checked:b,disabled:c==="topic",dataAction:"toggle-auto-topic",title:t("botDefaults.autoStartTopic"),help:t("botDefaults.autoStartTopicHelp"),onChange:x=>{n(x),k({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:()=>{k({autoStartOnGroupJoinPrompt:f},"prompt")},children:t("botDefaults.autoStartJoinPromptSave")}),(0,e.jsx)(W,{status:m,attr:{"data-auto-start-status":""}})]})]})}function Ie(a){let t=U(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(o.sandbox===!0),[b,n]=(0,s.useState)(null),[f,r]=(0,s.useState)(!1);(0,s.useEffect)(()=>l(o.sandbox===!0),[o.sandbox]);async function m(c){l(c),n(null),r(!0);try{let d=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox`,{enabled:c});d.ok&&d.body.ok?(n({text:`\u2713 ${t("botDefaults.sandboxSaved")}`,ok:!0}),u(o.larkAppId,{sandbox:d.body.sandbox===!0})):(n({text:`\u2717 ${H(d)}`}),l(!c))}catch(d){n({text:`\u2717 ${L(d)}`}),l(!c)}finally{r(!1)}}let g=o.readIsolationSupported===!0;return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSandbox")}),(0,e.jsx)(st,{checked:i,disabled:f,dataAction:"toggle-sandbox",title:t("botDefaults.sandboxToggle"),help:t("botDefaults.sandboxHelp"),onChange:c=>{m(c)}}),(0,e.jsx)("p",{className:"bd-section-note","data-read-iso-capability":g?"yes":"no",children:g?`\uFF0B ${t("botDefaults.sandboxReadIsoOn")}`:t("botDefaults.sandboxReadIsoOff")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:b,attr:{"data-sandbox-status":""}})})]})}var te={readWrite:0,readOnly:1,deny:2};function ee(a,t,o){let u=m=>m==="~"||m.startsWith("~/")?o.replace(/\/+$/,"")+m.slice(1):m,i=m=>u(m).replace(/\/+$/,"")||"/",l=i(t),b=(m,g)=>{let c=i(m),d=i(g);return c===d||d.startsWith(c==="/"?"/":c+"/")},n=m=>i(m)==="/"?0:i(m).split("/").filter(Boolean).length,f,r=(m,g)=>{if(!b(g,l))return;let c=n(g);(!f||c>f.ruleDepth||c===f.ruleDepth&&te[m]>te[f.access])&&(f={access:m,ruleDepth:c,rule:g})};for(let m of a.readWrite)r("readWrite",m);for(let m of a.readOnly)r("readOnly",m);for(let m of a.deny)r("deny",m);return f?{access:f.access,rule:f.rule}:{access:"none"}}function le(){return{readWrite:[],readOnly:[],deny:[]}}function pt(a){return a?{readWrite:[...a.readWrite??[]],readOnly:[...a.readOnly??[]],deny:[...a.deny??[]]}:le()}function we(a,t){let o=u=>[...u].sort().join(`
3
- `);return o(a.readWrite)===o(t.readWrite)&&o(a.readOnly)===o(t.readOnly)&&o(a.deny)===o(t.deny)}function Pt(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 Re(a){let t=le();for(let o of a.split(`
5
- `)){let u=o.trim();if(!u||u.startsWith("#"))continue;let i=/^(\S+)\s+(.+)$/.exec(u);if(!i)continue;let l=i[1].toLowerCase(),b=i[2].trim();l==="rw"||l==="readwrite"||l==="rw:"?t.readWrite.push(b):l==="ro"||l==="readonly"||l==="ro:"?t.readOnly.push(b):(l==="deny"||l==="-"||l==="deny:")&&t.deny.push(b)}return t}function Be(a){let t=U(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(()=>pt(o.sandboxPaths)),[b,n]=(0,s.useState)(()=>Pt(pt(o.sandboxPaths))),[f,r]=(0,s.useState)(!1),[m,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1),[k,x]=(0,s.useState)(""),[y,C]=(0,s.useState)({}),[h,D]=(0,s.useState)(new Set),[N,S]=(0,s.useState)([]),[p,j]=(0,s.useState)("~"),F=(0,s.useMemo)(()=>pt(o.sandboxPaths),[o.sandboxPaths]);(0,s.useEffect)(()=>{l(pt(o.sandboxPaths)),n(Pt(pt(o.sandboxPaths)))},[o.sandboxPaths]);let G=!we(i,F),w=(0,s.useCallback)(async B=>{try{let v=B?`?path=${encodeURIComponent(B)}`:"",I=await(await fetch(`/api/fs/list${v}`)).json();if(!I.ok)return;B?C(R=>({...R,[B]:I.entries.map(A=>({name:A.name,path:A.path}))})):(S(I.entries.map(R=>({name:R.name,path:R.path}))),typeof I.home=="string"&&I.home.startsWith("/")&&j(I.home))}catch{}},[]);(0,s.useEffect)(()=>{!f&&N.length===0&&w("")},[f,N.length,w]);let X=(0,s.useCallback)(B=>{let v=B.replace(/\/+$/,"")||"/";if(i.readWrite.some(T=>(T.replace(/\/+$/,"")||"/")===v))return"readWrite";if(i.readOnly.some(T=>(T.replace(/\/+$/,"")||"/")===v))return"readOnly";if(i.deny.some(T=>(T.replace(/\/+$/,"")||"/")===v))return"deny"},[i]),V=(0,s.useCallback)(B=>{g(null);let v=B.replace(/\/+$/,"")||"/",T=X(B),I=T===void 0?"readWrite":T==="readWrite"?"readOnly":T==="readOnly"?"deny":void 0;l(R=>{let A=tt=>tt.filter(J=>(J.replace(/\/+$/,"")||"/")!==v),O={readWrite:A(R.readWrite),readOnly:A(R.readOnly),deny:A(R.deny)};return I&&O[I].push(B),n(Pt(O)),O})},[X]);function q(B){n(B),l(Re(B)),g(null)}async function M(){d(!0),g(null);try{let B=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/sandbox-paths`,i);B.ok&&B.body.ok?(g({text:`\u2713 ${t("botDefaults.sbxPathsSaved")}`,ok:!0}),u(o.larkAppId,{sandboxPaths:B.body.sandboxPaths??{readWrite:[],readOnly:[],deny:[]}})):g({text:`\u2717 ${H(B)}`})}catch(B){g({text:`\u2717 ${L(B)}`})}finally{d(!1)}}let K=B=>t(B==="readWrite"?"botDefaults.sbxRw":B==="readOnly"?"botDefaults.sbxRo":B==="deny"?"botDefaults.sbxDeny":"botDefaults.sbxNone");function nt(B){let{name:v,path:T,depth:I}=B,R=h.has(T),A=X(T),O=ee(i,T,p),tt=y[T];return(0,e.jsxs)("div",{className:"bd-sbx-node",children:[(0,e.jsxs)("div",{className:"bd-sbx-row",style:{paddingLeft:I*16},children:[(0,e.jsx)("span",{className:"bd-sbx-twisty",onClick:()=>{D(J=>{let Q=new Set(J);return Q.has(T)?Q.delete(T):Q.add(T),Q}),tt||w(T)},children:R?"\u25BE":"\u25B8"}),(0,e.jsx)("span",{className:"bd-sbx-name",title:T,children:v}),(0,e.jsx)("button",{type:"button",className:`bd-sbx-state bd-sbx-state-${A??"inherit"}`,"data-action":"cycle-sandbox-path","data-path":T,title:A?void 0:`${t("botDefaults.sbxInherit")}: ${K(O.access)}`,onClick:()=>V(T),children:A?K(A):`\u21B3 ${K(O.access)}`})]}),R&&(0,e.jsxs)("div",{className:"bd-sbx-kids",children:[tt?.map(J=>(0,e.jsx)(nt,{name:J.name,path:J.path,depth:I+1},J.path)),tt&&tt.length===0&&(0,e.jsx)("div",{className:"bd-sbx-empty",style:{paddingLeft:(I+1)*16+20},children:t("botDefaults.sbxNoSubdirs")})]})]})}let Y=k.trim()?ee(i,k.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:()=>r(B=>!B),children:t(f?"botDefaults.sbxPathsTreeMode":"botDefaults.sbxPathsTextMode")})}),f?(0,e.jsx)("textarea",{className:"bd-sbx-text","data-field":"sandbox-paths-text",rows:8,value:b,spellCheck:!1,placeholder:`rw ~/my-data
6
- ro ~/reference-repos
7
- deny ~/my-data/secrets`,onChange:B=>q(B.target.value)}):(0,e.jsx)("div",{className:"bd-sbx-tree","data-field":"sandbox-paths-tree",children:N.map(B=>(0,e.jsx)(nt,{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:k,onChange:B=>x(B.target.value)}),Y&&(0,e.jsxs)("span",{className:`bd-sbx-test-out bd-sbx-state-${Y.access}`,"data-test-access":Y.access,children:[K(Y.access),Y.rule?` \u2190 ${Y.rule}`:""]})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"bd-btn bd-btn-primary","data-action":"save-sandbox-paths",disabled:c||!G,onClick:()=>{M()},children:t("botDefaults.sbxPathsSave")}),(0,e.jsx)(W,{status:m,attr:{"data-sandbox-paths-status":""}})]})]})}var Me=[{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 Ae(a){let t=U(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(typeof o.backendType=="string"?o.backendType:""),[b,n]=(0,s.useState)(null),[f,r]=(0,s.useState)(!1);(0,s.useEffect)(()=>l(typeof o.backendType=="string"?o.backendType:""),[o.backendType]);let m=(0,s.useMemo)(()=>Me.map(c=>({value:c.value,label:t(c.labelKey)})),[t]);async function g(c){let d=i;l(c),n(null),r(!0);try{let k=await _("PUT",`/api/bots/${encodeURIComponent(o.larkAppId)}/backend-type`,{backendType:c});k.ok&&k.body.ok?(n({text:`\u2713 ${t("botDefaults.backendSaved")}`,ok:!0}),u(o.larkAppId,{backendType:typeof k.body.backendType=="string"?k.body.backendType:null})):(n({text:`\u2717 ${H(k)}`}),l(d))}catch(k){n({text:`\u2717 ${L(k)}`}),l(d)}finally{r(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionBackend")}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.backendHelp"),children:t("botDefaults.backendLabel")}),(0,e.jsx)(ot,{dataInput:"backendType",ariaLabel:t("botDefaults.backendLabel"),value:i,disabled:f,options:m,onChange:c=>{g(c)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:b,attr:{"data-backend-status":""}})})]})]})}function $e(a){let t=U(),{bot:o,patchBot:u}=a,[i,l]=(0,s.useState)(typeof o.teamRole=="string"),[b,n]=(0,s.useState)(typeof o.teamRole=="string"?o.teamRole:""),[f,r]=(0,s.useState)("every"),[m,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let y=!0,C=`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`;return typeof o.teamRole=="string"?(l(!0),n(o.teamRole),()=>{y=!1}):(g(null),l(!1),n(""),(async()=>{try{let h=await fetch(C),D=await h.json().catch(()=>({}));if(!y)return;if(h.ok&&D.ok){let N=D.role??"";n(N),r(D.injectMode==="once"?"once":"every"),l(!0),u(o.larkAppId,{teamRole:N})}else g({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${D.error??h.status}`})}catch(h){y&&g({text:`\u2717 ${t("botDefaults.roleLoadErr")}: ${L(h)}`})}})(),()=>{y=!1})},[o.larkAppId,o.teamRole,u,t]),(0,s.useEffect)(()=>{let y=!0;return typeof o.teamRole!="string"?()=>{y=!1}:((async()=>{try{let C=await fetch(`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`),h=await C.json().catch(()=>({}));y&&C.ok&&h.ok&&r(h.injectMode==="once"?"once":"every")}catch{}})(),()=>{y=!1})},[o.larkAppId]);async function k(y,C,h=f){if(i){g(null),d(!0);try{let D=await _("PUT",`/api/team/local-bots/${encodeURIComponent(o.larkAppId)}/role`,{role:y,injectMode:h});if(D.ok&&D.body.ok){let N=y.trim();n(N),(D.body.injectMode==="once"||D.body.injectMode==="every")&&r(D.body.injectMode),u(o.larkAppId,{teamRole:N}),g({text:`\u2713 ${t(C?"botDefaults.roleDeleted":"botDefaults.roleSaved")}`,ok:!0})}else g({text:`\u2717 ${H(D)}`})}catch(D){g({text:`\u2717 ${L(D)}`})}finally{d(!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)($,{help:t("botDefaults.roleHelp"),children:t("botDefaults.sectionRole")})}),(0,e.jsx)("textarea",{"data-input":"teamRole",rows:6,placeholder:t("botDefaults.rolePlaceholder"),disabled:!i||c,value:b,onChange:y=>n(y.currentTarget.value)}),(0,e.jsxs)("div",{className:"bd-role-inject",children:[(0,e.jsx)("span",{className:"bd-subsection-title",children:(0,e.jsx)($,{help:t("roles.injectModeHint"),children:t("roles.injectModeLabel")})}),(0,e.jsx)(Ct,{id:`bd-role-inject-${o.larkAppId}`,className:"bd-role-inject-menu",ariaLabel:t("roles.injectModeLabel"),disabled:!i||c,label:kt(x,f),value:f,options:x,onChange:y=>{let C=y==="once"?"once":"every";r(C),k(b,b.trim()==="",C)}})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-role",disabled:!i||c,onClick:()=>{k(b,b.trim()==="")},children:t("botDefaults.roleSave")}),(0,e.jsx)(W,{status:m,attr:{"data-role-status":""}})]}),(0,e.jsx)(Oe,{appId:o.larkAppId})]})}function Oe(a){let t=U(),[o,u]=(0,s.useState)({loaded:!1,loading:!0,items:[]});(0,s.useEffect)(()=>{let b=!0;return u({loaded:!1,loading:!0,items:[]}),(async()=>{try{let n=await fetch("/api/role-profiles"),f=await n.json().catch(()=>({}));if(!b)return;if(!n.ok)throw new Error(f?.error??String(n.status));let m=(Array.isArray(f.profiles)?f.profiles:[]).filter(g=>(g.botEntries??[]).some(c=>c?.larkAppId===a.appId&&c?.hasEntry)).map(g=>({profileId:String(g.profileId)}));u({loaded:!0,loading:!1,items:m})}catch(n){b&&u({loaded:!0,loading:!1,error:L(n),items:[]})}})(),()=>{b=!1}},[a.appId]);async function i(b){let n=o.items.find(f=>f.profileId===b);if(!(!n||n.loaded||n.loading)){u(f=>({...f,items:f.items.map(r=>r.profileId===b?{...r,loading:!0}:r)}));try{let f=await fetch(`/api/role-profiles/${encodeURIComponent(b)}/${encodeURIComponent(a.appId)}`),r=await f.json().catch(()=>({}));if(!f.ok)throw new Error(r?.error??String(f.status));u(m=>({...m,items:m.items.map(g=>g.profileId===b?{...g,loading:!1,loaded:!0,content:r?.hasEntry?String(r.content??""):""}:g)}))}catch(f){u(r=>({...r,items:r.items.map(m=>m.profileId===b?{...m,loading:!1,error:L(f)}:m)}))}}}let l;return o.loading?l=(0,e.jsx)(yt,{label:t("common.loading"),compact:!0}):o.error?l=(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRolesLoadFailed",{error:o.error})}):o.items.length===0?l=(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRolesEmpty")}):l=o.items.map(b=>(0,e.jsxs)("details",{className:"bd-profile-role-entry","data-profile-id":b.profileId,onToggle:n=>{n.currentTarget.open&&i(b.profileId)},children:[(0,e.jsx)("summary",{children:(0,e.jsx)("span",{className:"bd-profile-role-id",children:b.profileId})}),(0,e.jsx)("div",{className:"bd-profile-role-content","data-profile-role-body":b.profileId,children:b.loading?(0,e.jsx)(yt,{label:t("common.loading"),compact:!0}):b.error?(0,e.jsx)("p",{className:"hint-warn-inline",children:t("botDefaults.profileRoleDetailLoadFailed",{error:b.error})}):b.loaded?(0,e.jsx)("pre",{children:b.content??""}):(0,e.jsx)("p",{className:"empty",children:t("botDefaults.profileRoleClickToLoad")})})]},b.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)($,{help:t("botDefaults.profileRolesHelp"),children:t("botDefaults.profileRoles")})}),(0,e.jsx)("div",{className:"bd-profile-role-list","data-profile-role-list":!0,children:l})]})}function Le(a){let t=U(),{bot:o,putCardPref:u}=a,[i,l]=(0,s.useState)(o.usageDisplay??"streaming"),[b,n]=(0,s.useState)(o.disableStreamingCard===!0),[f,r]=(0,s.useState)(o.silentTurnReactions===!0),[m,g]=(0,s.useState)(o.writableTerminalLinkInCard===!0),[c,d]=(0,s.useState)(o.privateCard===!0),[k,x]=(0,s.useState)(null),[y,C]=(0,s.useState)(null);(0,s.useEffect)(()=>{l(o.usageDisplay??"streaming"),n(o.disableStreamingCard===!0),r(o.silentTurnReactions===!0),g(o.writableTerminalLinkInCard===!0),d(o.privateCard===!0)},[o.disableStreamingCard,o.privateCard,o.usageDisplay,o.silentTurnReactions,o.writableTerminalLinkInCard]);async function h(N,S,p){C(S),x(null);try{let j=await u(N);j.ok?x({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(p?.(),x({text:`\u2717 ${H(j)}`}))}catch(j){p?.(),x({text:`\u2717 ${L(j)}`})}finally{C(null)}}let D=[{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",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCard")}),o.usageSupported===!0&&(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.usageDisplayHelp"),children:t("botDefaults.usageDisplay")}),(0,e.jsx)(ot,{dataInput:"usageDisplay",ariaLabel:t("botDefaults.usageDisplay"),value:i,disabled:y==="usage",options:D,onChange:N=>{let S=i;l(N),h({usageDisplay:N},"usage",()=>l(S))}})]})}),(0,e.jsxs)("div",{className:"bd-toggle-grid bd-card-behavior-grid",children:[(0,e.jsx)(st,{checked:b,disabled:y==="streaming",dataAction:"toggle-disable-streaming",title:t("botDefaults.disableStreaming"),help:t("botDefaults.disableStreamingHelp"),onChange:N=>{n(N),h({disableStreamingCard:N},"streaming")}}),(0,e.jsx)(st,{checked:f,disabled:!b||y==="silent",dataAction:"toggle-silent-reactions",title:t("botDefaults.silentTurnReactions"),help:t("botDefaults.silentTurnReactionsHelp"),onChange:N=>{r(N),h({silentTurnReactions:N},"silent")}}),(0,e.jsx)(st,{checked:m,disabled:b||y==="writable",dataAction:"toggle-writable-link",title:t("botDefaults.writableLink"),help:t("botDefaults.writableLinkHelp"),onChange:N=>{g(N),h({writableTerminalLinkInCard:N},"writable")}}),(0,e.jsx)(st,{checked:c,disabled:y==="private",dataAction:"toggle-private-card",title:t("botDefaults.privateCard"),help:t("botDefaults.privateCardHelp"),onChange:N=>{d(N),h({privateCard:N},"private")}})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("small",{"data-card-pref-moot":!0,className:"hint-warn-inline",hidden:!b,children:t("botDefaults.writableLinkMoot")}),(0,e.jsx)(W,{status:k,attr:{"data-card-pref-status":""}})]})]})}function Fe(a){let t=U(),[o,u]=(0,s.useState)(a.bot.codexAppCleanInput===!0),[i,l]=(0,s.useState)(null),[b,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(a.bot.codexAppCleanInput===!0),[a.bot.codexAppCleanInput]);async function f(r){let m=o;u(r),n(!0),l(null);try{let g=await a.putCardPref({codexAppCleanInput:r});g.ok?l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}):(u(m),l({text:`\u2717 ${H(g)}`}))}catch(g){u(m),l({text:`\u2717 ${L(g)}`})}finally{n(!1)}}return(0,e.jsxs)("section",{className:"bd-section","data-codex-app-display":!0,children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCodexAppDisplay")}),(0,e.jsx)(st,{checked:o,disabled:b,dataAction:"toggle-codex-app-clean-input",title:t("botDefaults.codexAppCleanInput"),help:t("botDefaults.codexAppCleanInputHelp"),onChange:r=>{f(r)}}),(0,e.jsx)("small",{className:"bd-section-note",children:t("botDefaults.codexAppCleanInputCompat")}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:i,attr:{"data-codex-app-clean-input-status":""}})})]})}function Ue(a){let t=U(),[o,u]=(0,s.useState)(a.bot.botToBotSameDir!==!1),[i,l]=(0,s.useState)(null),[b,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(a.bot.botToBotSameDir!==!1),[a.bot.botToBotSameDir]);async function f(r){u(r),n(!0),l(null);try{let m=await a.putCardPref({botToBotSameDir:r});l(m.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${H(m)}`})}catch(m){l({text:`\u2717 ${L(m)}`})}finally{n(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionCrossBot")}),(0,e.jsx)(st,{checked:o,disabled:b,dataAction:"toggle-cross-bot-samedir",title:t("botDefaults.botToBotSameDir"),help:t("botDefaults.botToBotSameDirHelp"),onChange:r=>{f(r)}}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:i,attr:{"data-crossbot-status":""}})})]})}function je(a){let t=U(),o=wt(a.bot),[u,i]=(0,s.useState)(String(o.limit)),[l,b]=(0,s.useState)(String(o.sinceHours)),[n,f]=(0,s.useState)(a.bot.summaryMemory===!0),[r,m]=(0,s.useState)(It(a.bot)),[g,c]=(0,s.useState)(null),[d,k]=(0,s.useState)(null),[x,y]=(0,s.useState)(!1),[C,h]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let S=wt(a.bot);i(String(S.limit)),b(String(S.sinceHours)),f(a.bot.summaryMemory===!0),m(It(a.bot))},[a.bot.summaryRange?.limit,a.bot.summaryRange?.sinceHours,a.bot.summaryMemory,a.bot.summaryMemoryPath]);async function D(){c(null);let S=zt(u,50),p=zt(l,24);if(S==null||p==null){c({text:`\u2717 ${t("botDefaults.summaryNumberInvalid")}`});return}y(!0);try{let j=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/summary-range`,{limit:S,sinceHours:p});if(j.ok&&j.body.ok){let F=j.body.summaryRange??{limit:S,sinceHours:p},G=wt({...a.bot,summaryRange:F});i(String(G.limit)),b(String(G.sinceHours)),a.patchBot(a.bot.larkAppId,{summaryRange:F}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${H(j)}`})}catch(j){c({text:`\u2717 ${L(j)}`})}finally{y(!1)}}async function N(S,p=r){let j=n,F=r,G=ie(p);f(S),m(G),k(null),h(!0);try{let w=await a.putCardPref({summaryMemory:S,summaryMemoryPath:G});if(w.ok&&w.body.ok){let X=w.body.summaryMemory===!0,V=It({...a.bot,summaryMemoryPath:w.body.summaryMemoryPath});f(X),m(V),a.patchBot(a.bot.larkAppId,{summaryMemory:X,summaryMemoryPath:V}),k({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else f(j),m(F),k({text:`\u2717 ${H(w)}`})}catch(w){f(j),m(F),k({text:`\u2717 ${L(w)}`})}finally{h(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)($,{help:t("botDefaults.summaryLimitHelp"),children:t("botDefaults.sectionSummaryTrigger")})}),(0,e.jsxs)("div",{className:"bd-row bd-summary-limits",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summaryLimit")}),(0,e.jsx)("input",{type:"number",min:0,step:1,"data-input":"summaryLimit",value:u,disabled:x,onChange:S=>i(S.currentTarget.value)})]}),(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summarySinceHours")}),(0,e.jsx)("input",{type:"number",min:0,step:1,"data-input":"summarySinceHours",value:l,disabled:x,onChange:S=>b(S.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:()=>{D()},children:t("botDefaults.summarySave")}),(0,e.jsx)(W,{status:g,attr:{"data-summary-trigger-status":""}})]}),(0,e.jsx)(st,{checked:n,disabled:C,title:t("botDefaults.summaryMemory"),help:t("botDefaults.summaryMemoryHelp"),onChange:S=>{N(S)}}),(0,e.jsx)("div",{className:"bd-row bd-summary-limits",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.summaryMemoryPath")}),(0,e.jsx)("input",{type:"text","data-input":"summaryMemoryPath",value:r,disabled:C,onChange:S=>m(S.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-summary-memory-path",disabled:C,onClick:()=>{N(n,r)},children:t("botDefaults.summaryMemoryPathSave")})}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:d,attr:{"data-summary-memory-status":""}})})]})}function ie(a){return a.trim()||"summary.md"}function It(a){return ie(typeof a.summaryMemoryPath=="string"?a.summaryMemoryPath:"")}function wt(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 Ge(a){let t=U(),[o,u]=(0,s.useState)(a.bot.p2pMode==="thread"?"thread":"chat"),[i,l]=(0,s.useState)(ae(a.bot)),[b,n]=(0,s.useState)(oe(a.bot)),[f,r]=(0,s.useState)(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only"),[m,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(null),[k,x]=(0,s.useState)(null),[y,C]=(0,s.useState)(null),[h,D]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(a.bot.p2pMode==="thread"?"thread":"chat"),l(ae(a.bot)),n(oe(a.bot)),r(a.bot.docSubscribeDefaultMode==="all"?"all":"mention-only")},[a.bot.docSubscribeDefaultMode,a.bot.p2pMode,a.bot.regularGroupMentionMode,a.bot.regularGroupReplyMode]);async function N(w){let X=w==="chat"?"chat":"thread";u(X),g("p2p"),d(null);try{let V=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/p2p-mode`,{p2pMode:X});V.ok&&V.body.ok?(a.patchBot(a.bot.larkAppId,{p2pMode:V.body.p2pMode==="thread"?"thread":"chat"}),d({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})):d({text:`\u2717 ${H(V)}`})}catch(V){d({text:`\u2717 ${L(V)}`})}finally{g(null)}}async function S(w,X,V){g(w),V(null);try{let q=await a.putCardPref(X);V(q.ok?{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0}:{text:`\u2717 ${H(q)}`})}catch(q){V({text:`\u2717 ${L(q)}`})}finally{g(null)}}let p=[{value:"thread",label:t("botDefaults.p2pThread")},{value:"chat",label:t("botDefaults.p2pChat")}],j=[{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")}],F=[{value:"always",label:t("botDefaults.mentionModeAlways")},{value:"topic",label:t("botDefaults.mentionModeTopic")},{value:"never",label:t("botDefaults.mentionModeNever")},{value:"ambient",label:t("botDefaults.mentionModeAmbient")}],G=[{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)($,{help:t("botDefaults.p2pHelp"),children:t("botDefaults.p2pMode")}),(0,e.jsx)(ot,{dataInput:"p2pMode",ariaLabel:t("botDefaults.p2pMode"),value:o,disabled:m==="p2p",options:p,onChange:w=>{N(w)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:c,attr:{"data-p2p-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.regularGroupModeHelp"),children:t("botDefaults.regularGroupMode")}),(0,e.jsx)(ot,{dataInput:"regularGroupMode",ariaLabel:t("botDefaults.regularGroupMode"),value:i,disabled:m==="regular",options:j,onChange:w=>{l(w),S("regular",{regularGroupReplyMode:w},x)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:k,attr:{"data-regular-group-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.mentionModeHelp"),children:t("botDefaults.mentionMode")}),(0,e.jsx)(ot,{dataInput:"regularGroupMentionMode",ariaLabel:t("botDefaults.mentionMode"),value:b,disabled:m==="mention",options:F,onChange:w=>{n(w),S("mention",{regularGroupMentionMode:w},C)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:y,attr:{"data-mention-mode-status":""}})})]}),(0,e.jsxs)("div",{className:"bd-row",children:[(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.docSubscribeModeHelp"),children:t("botDefaults.docSubscribeMode")}),(0,e.jsx)(ot,{dataInput:"docSubscribeDefaultMode",ariaLabel:t("botDefaults.docSubscribeMode"),value:f,disabled:m==="doc",options:G,onChange:w=>{r(w),S("doc",{docSubscribeDefaultMode:w},D)}})]}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)(W,{status:h,attr:{"data-doc-subscribe-mode-status":""}})})]})]})}function Ee(a){let t=U(),o=a.bot.substituteMode??null,[u,i]=(0,s.useState)(o?.enabled===!0);function l(v){switch(v){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[b,n]=(0,s.useState)(o?.disclosure==="none"?"none":"prefix"),[f,r]=(0,s.useState)(o?.replyMode==="quote"?"quote":"thread"),[m,g]=(0,s.useState)(o?.disableControlCard!==!0),[c,d]=(0,s.useState)(()=>ut(o?.chats)),[k,x]=(0,s.useState)(()=>ut(o?.excludedChats)),[y,C]=(0,s.useState)(o?.topicGroups!==!1),[h,D]=(0,s.useState)(o?.topicActiveSessionTrigger!==!1),[N,S]=(0,s.useState)(null),[p,j]=(0,s.useState)(!1),F=(0,s.useRef)(0),G=(0,s.useRef)(!1);function w(v){let T=be(v);return{key:++F.current,idField:T,idValue:v?.[T]??"",name:v?.name??"",persisted:v?{...v}:{},originalIdField:v?T:void 0,resolution:v?.name||v?.avatarUrl?{ok:!0,name:v.name,avatarUrl:v.avatarUrl}:void 0}}let X=(0,s.useRef)(new Map);async function V(v){let T=(X.current.get(v)??0)+1;X.current.set(v,T);let I=()=>X.current.get(v)===T;M(R=>R.map(A=>A.key===v?{...A,resolving:!0}:A));try{let R=q.find(J=>J.key===v);if(!R)return;let A=R.idValue.trim();if(!A){M(J=>J.map(Q=>Q.key===v?{...Q,resolving:!1,resolution:void 0}:Q));return}let O={[R.idField]:A};R.name.trim()&&(O.name=R.name.trim());let tt=await _t(a.bot.larkAppId,O);if(!I())return;M(J=>J.map(Q=>{if(Q.key!==v)return Q;if(!tt.ok)return{...Q,resolving:!1,resolution:{ok:!1}};let at=tt.resolution;if(at?.ok===!0){if(!at.openId)return{...Q,resolving:!1,resolution:void 0};let Z={...Q.persisted};return Z.openId=at.openId,at.name&&(Z.name=at.name),at.avatarUrl&&(Z.avatarUrl=at.avatarUrl),{...Q,name:at.name??Q.name,persisted:Z,resolving:!1,resolution:{ok:!0,name:at.name,avatarUrl:at.avatarUrl}}}return{...Q,resolving:!1,resolution:{ok:!1,reason:at?.reason}}}))}catch{if(!I())return;M(R=>R.map(A=>A.key===v?{...A,resolving:!1,resolution:{ok:!1}}:A))}}let[q,M]=(0,s.useState)(()=>{let v=o?.targets??[];return v.length?v.map(T=>w(T)):[w()]});(0,s.useEffect)(()=>{if(G.current){G.current=!1;return}let v=a.bot.substituteMode??null;i(v?.enabled===!0),n(v?.disclosure==="none"?"none":"prefix"),r(v?.replyMode==="quote"?"quote":"thread"),g(v?.disableControlCard!==!0),d(ut(v?.chats)),x(ut(v?.excludedChats)),C(v?.topicGroups!==!1),D(v?.topicActiveSessionTrigger!==!1);let T=v?.targets??[];M(T.length?T.map(I=>w(I)):[w()])},[a.bot.larkAppId,a.bot.substituteMode]);async function K(v){j(!0),S(null);try{let T=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/substitute-mode`,v);if(T.ok&&T.body.ok){let I=T.body.substituteMode&&typeof T.body.substituteMode=="object"?T.body.substituteMode:null,R=Array.isArray(T.body?.resolution)?T.body.resolution:[],A=R.filter(O=>O?.ok===!1).map(O=>String(O.input??"").trim()).filter(Boolean);if(i(I?.enabled===!0),n(I?.disclosure==="none"?"none":"prefix"),r(I?.replyMode==="quote"?"quote":"thread"),g(I?.disableControlCard!==!0),d(ut(I?.chats)),x(ut(I?.excludedChats)),C(I?.topicGroups!==!1),D(I?.topicActiveSessionTrigger!==!1),R.length)G.current=!0,M(O=>{let tt=[...R];return O.map(J=>{let Q=J.idValue.trim(),at=tt.findIndex(it=>String(it.input??"").trim()===Q);if(at<0)return J;let Z=tt.splice(at,1)[0];if(Z?.ok===!0){let it={...J.persisted};return Z.openId&&(it.openId=Z.openId),J.idField==="email"&&(it.email=Q),Z.name&&(it.name=Z.name),Z.avatarUrl&&(it.avatarUrl=Z.avatarUrl),{...J,name:Z.name??J.name,persisted:it,resolution:{ok:!0,name:Z.name,avatarUrl:Z.avatarUrl}}}return{...J,resolution:{ok:!1,reason:Z?.reason}}})});else{let O=I?.targets??[];M(O.length?O.map(tt=>w(tt)):[w()])}a.patchBot(a.bot.larkAppId,{substituteMode:I}),S(A.length?{text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${A.join(", ")}`}:{text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else{let I=Array.isArray(T.body?.resolution)?T.body.resolution.filter(R=>R?.ok===!1).map(R=>String(R.input??"").trim()).filter(Boolean):[];S({text:I.length?`\u2717 ${t("botDefaults.substituteTargetsInvalid")}: ${I.join(", ")}`:`\u2717 ${H(T)}`})}}catch(T){S({text:`\u2717 ${L(T)}`})}finally{j(!1)}}function nt(){let v=[],T=!1;for(let I of q){let R=me(I);if(!R){T||=!!I.name.trim();continue}v.push(R)}if(T||u&&v.length===0){S({text:`\u2717 ${t("botDefaults.substituteTargetsInvalid")}`});return}K({enabled:u,targets:v,disclosure:b,chats:Xt(c),excludedChats:Xt(k),replyMode:f,disableControlCard:!m,topicGroups:y,topicActiveSessionTrigger:h})}let Y=[{value:"prefix",label:t("botDefaults.substituteDisclosurePrefix")},{value:"none",label:t("botDefaults.substituteDisclosureNone")}],B=[{value:"thread",label:t("botDefaults.substituteReplyModeThread")},{value:"quote",label:t("botDefaults.substituteReplyModeQuote")}];return(0,e.jsxs)("section",{className:"bd-section bd-substitute-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionSubstitute")}),(0,e.jsx)(st,{checked:u,disabled:p,dataAction:"toggle-substitute-mode",title:t("botDefaults.substituteEnabled"),help:t("botDefaults.substituteHelp"),onChange:i}),(0,e.jsx)(st,{checked:y,disabled:p,dataAction:"toggle-substitute-topic-groups",title:t("botDefaults.substituteTopicGroups"),help:t("botDefaults.substituteTopicGroupsHelp"),onChange:C}),(0,e.jsx)(st,{checked:h,disabled:p||!y,dataAction:"toggle-substitute-topic-active",title:t("botDefaults.substituteTopicActive"),help:t("botDefaults.substituteTopicActiveHelp"),onChange:D}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{children:t("botDefaults.substituteDisclosure")}),(0,e.jsx)(ot,{dataInput:"substituteDisclosure",ariaLabel:t("botDefaults.substituteDisclosure"),value:b,disabled:p,options:Y,onChange:v=>n(v)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("div",{className:"bd-field",children:[(0,e.jsx)($,{help:t("botDefaults.substituteReplyModeHelp"),children:t("botDefaults.substituteReplyMode")}),(0,e.jsx)(ot,{dataInput:"substituteReplyMode",ariaLabel:t("botDefaults.substituteReplyMode"),value:f,disabled:p,options:B,onChange:v=>r(v)})]})}),(0,e.jsx)(st,{checked:m,disabled:p,dataAction:"toggle-substitute-control-card",title:t("botDefaults.substituteControlCard"),help:t("botDefaults.substituteControlCardHelp"),onChange:g}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)($,{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:v=>d(v.currentTarget.value)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)($,{help:t("botDefaults.substituteExcludedChatsHelp"),children:t("botDefaults.substituteExcludedChats")}),(0,e.jsx)("textarea",{"data-input":"substituteExcludedChats",rows:3,placeholder:t("botDefaults.substituteExcludedChatsPlaceholder"),value:k,disabled:p,onChange:v=>x(v.currentTarget.value)})]})}),(0,e.jsxs)("div",{className:"bd-row bd-substitute-targets",children:[(0,e.jsx)($,{help:t("botDefaults.substituteTargetsHelp"),children:t("botDefaults.substituteTargets")}),(0,e.jsxs)("div",{className:"bd-substitute-target-list","data-input":"substituteTargets",children:[q.map((v,T)=>(0,e.jsxs)("div",{className:"bd-substitute-target-row",children:[(0,e.jsx)(ot,{dataInput:`substituteTargetType-${v.key}`,className:"bd-substitute-target-type",ariaLabel:`${t("botDefaults.substituteTargetType")} ${T+1}`,value:v.idField,disabled:p,options:Bt.map(I=>({value:I,label:t(`botDefaults.substituteTarget${I[0].toUpperCase()}${I.slice(1)}`)})),onChange:I=>{M(R=>R.map(A=>A.key===v.key?{...A,idField:I,idValue:A.persisted[I]??"",resolution:void 0}:A))}}),(0,e.jsx)("input",{className:"bd-substitute-target-id",type:"text","data-input":`substituteTargetId-${v.key}`,"aria-label":`${t("botDefaults.substituteTargetType")} ${T+1}`,placeholder:t("botDefaults.substituteTargetIdPlaceholder"),value:v.idValue,disabled:p,onChange:I=>{let R=I.currentTarget.value;M(A=>A.map(O=>O.key===v.key?{...O,idValue:R,resolution:void 0}:O))},onBlur:()=>{v.idValue.trim()&&V(v.key)}}),(0,e.jsx)("div",{className:"bd-substitute-target-name",children:v.resolving?(0,e.jsx)("span",{className:"bd-substitute-target-resolving",children:t("botDefaults.substituteResolving")}):v.resolution?.ok===!0&&(v.name||v.resolution.avatarUrl)?(0,e.jsxs)(e.Fragment,{children:[v.resolution.avatarUrl?(0,e.jsx)(ct,{html:dt({name:v.resolution.name,avatarUrl:v.resolution.avatarUrl,size:"sm"})}):null,(0,e.jsx)("span",{className:"bd-substitute-target-name-chip","data-chip":`substituteTargetName-${v.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${T+1}`,children:v.name})]}):v.resolution?.ok===!1?(0,e.jsx)("span",{className:"bd-substitute-target-resolution-badge",children:l(v.resolution.reason)}):(0,e.jsx)("input",{type:"text","data-input":`substituteTargetName-${v.key}`,"aria-label":`${t("botDefaults.substituteTargetName")} ${T+1}`,placeholder:t("botDefaults.substituteTargetNamePlaceholder"),value:v.name,disabled:p,onChange:I=>{let R=I.currentTarget.value;M(A=>A.map(O=>O.key===v.key?{...O,name:R}:O))}})}),(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:()=>{M(I=>{let R=I.filter(A=>A.key!==v.key);return R.length?R:[w()]})},children:(0,e.jsx)("span",{"aria-hidden":"true",children:"\xD7"})})]},v.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:()=>M(v=>[...v,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:nt,children:t("botDefaults.substituteSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-substitute-mode",disabled:p,onClick:()=>{K({enabled:!1,targets:[]})},children:t("botDefaults.substituteOff")}),(0,e.jsx)(W,{status:N,attr:{"data-substitute-status":""}})]})]})}function ae(a){return a.regularGroupReplyMode==="chat"||a.regularGroupReplyMode==="new-topic"||a.regularGroupReplyMode==="shared"?a.regularGroupReplyMode:"chat-topic"}function oe(a){return a.regularGroupMentionMode==="topic"||a.regularGroupMentionMode==="never"||a.regularGroupMentionMode==="ambient"?a.regularGroupMentionMode:"always"}function He(a){let t=U(),o=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null,u=Number.isFinite(a.bot.logicalSessionCount)?Number(a.bot.logicalSessionCount):0,i=Number.isFinite(a.bot.residentSessionCount)?Number(a.bot.residentSessionCount):0,l=Number.isFinite(a.bot.dormantSessionCount)?Number(a.bot.dormantSessionCount):0,[b,n]=(0,s.useState)(o),f=b??30,[r,m]=(0,s.useState)(o==null?"":String(o)),[g,c]=(0,s.useState)(null),[d,k]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let C=typeof a.bot.maxLiveWorkers=="number"?a.bot.maxLiveWorkers:null;n(C),m(C==null?"":String(C))},[a.bot.maxLiveWorkers]);async function x(C){c(null),k(!0);try{let h=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/max-live-workers`,{maxLiveWorkers:C});if(h.ok&&h.body.ok){let D=typeof h.body.maxLiveWorkers=="number"?h.body.maxLiveWorkers:null;n(D),m(D==null?"":String(D)),a.patchBot(a.bot.larkAppId,{maxLiveWorkers:D}),c({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else c({text:`\u2717 ${H(h)}`})}catch(h){c({text:`\u2717 ${L(h)}`})}finally{k(!1)}}function y(){let C=se(r);if(C==="invalid"){c({text:`\u2717 ${t("botDefaults.maxLiveWorkersInvalid")}`});return}x(C)}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)($,{help:t("botDefaults.maxLiveWorkersHelp"),children:t("botDefaults.maxLiveWorkers")}),(0,e.jsx)("input",{type:"number",min:1,step:1,"data-input":"maxLiveWorkers",placeholder:t("botDefaults.maxLiveWorkersPlaceholder"),value:r,disabled:d,onChange:C=>m(C.currentTarget.value)})]}),(0,e.jsx)("small",{"data-session-cap-state":!0,children:ge(b,t)}),(0,e.jsx)("small",{className:"bd-help bd-session-residency",children:t("botDefaults.maxLiveWorkersUsage",{resident:i,cap:f,dormant:l,logical:u})})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-session-cap",disabled:d,onClick:y,children:t("botDefaults.maxLiveWorkersSave")}),(0,e.jsx)("button",{type:"button","data-action":"off-session-cap",disabled:d,onClick:()=>{m(""),x(null)},children:t("botDefaults.maxLiveWorkersOff")}),(0,e.jsx)(W,{status:g,attr:{"data-session-cap-status":""}})]})]})}function We(a){let t=U(),[o,u]=(0,s.useState)(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[i,l]=(0,s.useState)(null),[b,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(typeof a.bot.startupCommands=="string"?a.bot.startupCommands:""),[a.bot.startupCommands]);async function f(){l(null),n(!0);try{let r=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/startup-commands`,{startupCommands:o});if(r.ok&&r.body.ok){let m=typeof r.body.startupCommands=="string"?r.body.startupCommands:"";u(m),a.patchBot(a.bot.larkAppId,{startupCommands:m}),l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${H(r)}`})}catch(r){l({text:`\u2717 ${L(r)}`})}finally{n(!1)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)($,{help:t("botDefaults.startupCommandsHelp"),children:t("botDefaults.sectionStartupCommands")})}),(0,e.jsx)("textarea",{"data-input":"startupCommands",rows:3,placeholder:t("botDefaults.startupCommandsPlaceholder"),value:o,disabled:b,onChange:r=>u(r.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-startup-commands",disabled:b,onClick:()=>{f()},children:t("botDefaults.startupCommandsSave")}),(0,e.jsx)(W,{status:i,attr:{"data-startup-commands-status":""}})]})]})}function qe(a){let t=U(),[o,u]=(0,s.useState)(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:""),[i,l]=(0,s.useState)(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:""),[b,n]=(0,s.useState)(null),[f,r]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(typeof a.bot.customPassthroughCommands=="string"?a.bot.customPassthroughCommands:"")},[a.bot.customPassthroughCommands]),(0,s.useEffect)(()=>{l(typeof a.bot.canTalkDaemonCommands=="string"?a.bot.canTalkDaemonCommands:"")},[a.bot.canTalkDaemonCommands]);async function m(){n(null),r("passthrough");try{let c=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/custom-passthrough`,{customPassthroughCommands:o});if(c.ok&&c.body.ok){let d=typeof c.body.customPassthroughCommands=="string"?c.body.customPassthroughCommands:"";u(d),a.patchBot(a.bot.larkAppId,{customPassthroughCommands:d}),n({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else n({text:`\u2717 ${H(c)}`})}catch(c){n({text:`\u2717 ${L(c)}`})}finally{r(null)}}async function g(){n(null),r("cantalk");try{let c=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/cantalk-daemon-commands`,{canTalkDaemonCommands:i});if(c.ok&&c.body.ok){let d=typeof c.body.canTalkDaemonCommands=="string"?c.body.canTalkDaemonCommands:"";l(d),a.patchBot(a.bot.larkAppId,{canTalkDaemonCommands:d}),n({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else n({text:`\u2717 ${H(c)}`})}catch(c){n({text:`\u2717 ${L(c)}`})}finally{r(null)}}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:(0,e.jsx)($,{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)($,{help:t("botDefaults.customPassthroughHelp"),children:t("botDefaults.customPassthrough")})}),(0,e.jsx)("textarea",{"data-input":"customPassthroughCommands",rows:2,placeholder:t("botDefaults.customPassthroughPlaceholder"),value:o,disabled:f==="passthrough",onChange:c=>u(c.currentTarget.value)}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-custom-passthrough",disabled:f==="passthrough",onClick:()=>{m()},children:t("botDefaults.customPassthroughSave")})})]}),(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)($,{help:t("botDefaults.canTalkDaemonHelp"),children:t("botDefaults.canTalkDaemon")})}),(0,e.jsx)("textarea",{"data-input":"canTalkDaemonCommands",rows:2,placeholder:t("botDefaults.canTalkDaemonPlaceholder"),value:i,disabled:f==="cantalk",onChange:c=>l(c.currentTarget.value)}),(0,e.jsx)("div",{className:"actions",children:(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-cantalk-daemon",disabled:f==="cantalk",onClick:()=>{g()},children:t("botDefaults.canTalkDaemonSave")})})]}),(0,e.jsx)(W,{status:b,attr:{"data-slash-commands-status":""}})]})}function Je(a){let t=U(),[o,u]=(0,s.useState)(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[i,l]=(0,s.useState)(null),[b,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(typeof a.bot.launchShell=="string"?a.bot.launchShell:""),[a.bot.launchShell]);async function f(){l(null),n(!0);try{let r=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/launch-shell`,{launchShell:o});if(r.ok&&r.body.ok){let m=typeof r.body.launchShell=="string"?r.body.launchShell:"";u(m),a.patchBot(a.bot.larkAppId,{launchShell:m}),l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${H(r)}`})}catch(r){l({text:`\u2717 ${L(r)}`})}finally{n(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)($,{help:t("botDefaults.launchShellHelp"),children:t("botDefaults.sectionLaunchShell")})}),(0,e.jsx)("input",{type:"text","data-input":"launchShell",placeholder:t("botDefaults.launchShellPlaceholder"),value:o,disabled:b,onChange:r=>u(r.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-launch-shell",disabled:b,onClick:()=>{f()},children:t("botDefaults.launchShellSave")}),(0,e.jsx)(W,{status:i,attr:{"data-launch-shell-status":""}})]})]})}function _e(a){let t=U(),[o,u]=(0,s.useState)(typeof a.bot.env=="string"?a.bot.env:""),[i,l]=(0,s.useState)(null),[b,n]=(0,s.useState)(!1);(0,s.useEffect)(()=>u(typeof a.bot.env=="string"?a.bot.env:""),[a.bot.env]);async function f(){l(null),n(!0);try{let r=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/env`,{env:o});if(r.ok&&r.body.ok){let m=typeof r.body.env=="string"?r.body.env:"";u(m),a.patchBot(a.bot.larkAppId,{env:m}),l({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else l({text:`\u2717 ${H(r)}`})}catch(r){l({text:`\u2717 ${L(r)}`})}finally{n(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)($,{help:t("botDefaults.envHelp"),children:t("botDefaults.sectionEnv")})}),(0,e.jsx)("textarea",{"data-input":"env",rows:5,placeholder:t("botDefaults.envPlaceholder"),value:o,disabled:b,onChange:r=>u(r.currentTarget.value)}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-env",disabled:b,onClick:()=>{f()},children:t("botDefaults.envSave")}),(0,e.jsx)(W,{status:i,attr:{"data-env-status":""}})]})]})}var Ve=["gpt-5.5","gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.4","gpt-5.4-pro"],Ke=["","low","medium","high","xhigh"],Qe=["boe","cn"];function ze(a){let t=U(),o=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{},[u,i]=(0,s.useState)(typeof o.baseUrl=="string"?o.baseUrl:""),[l,b]=(0,s.useState)(o.sandboxCluster==="cn"?"cn":"boe"),[n,f]=(0,s.useState)(typeof o.model=="string"?o.model:""),[r,m]=(0,s.useState)(typeof o.reasoningEffort=="string"?o.reasoningEffort:""),[g,c]=(0,s.useState)(typeof o.jwtEnv=="string"?o.jwtEnv:""),[d,k]=(0,s.useState)(typeof o.systemPrompt=="string"?o.systemPrompt:""),[x,y]=(0,s.useState)(Array.isArray(o.setupCommands)?o.setupCommands.join(`
8
- `):""),[C,h]=(0,s.useState)(null),[D,N]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let p=a.bot.riff&&typeof a.bot.riff=="object"?a.bot.riff:{};i(typeof p.baseUrl=="string"?p.baseUrl:""),b(p.sandboxCluster==="cn"?"cn":"boe"),f(typeof p.model=="string"?p.model:""),m(typeof p.reasoningEffort=="string"?p.reasoningEffort:""),c(typeof p.jwtEnv=="string"?p.jwtEnv:""),k(typeof p.systemPrompt=="string"?p.systemPrompt:""),y(Array.isArray(p.setupCommands)?p.setupCommands.join(`
9
- `):"")},[a.bot.riff]);async function S(){h(null),N(!0);try{let p={};u.trim()&&(p.baseUrl=u.trim()),p.sandboxCluster=l,n.trim()&&(p.model=n.trim()),r&&(p.reasoningEffort=r),g.trim()&&(p.jwtEnv=g.trim()),d.trim()&&(p.systemPrompt=d.trim()),x.trim()&&(p.setupCommands=x.split(`
10
- `).map(G=>G.trim()).filter(Boolean));let j=Object.keys(p).length?JSON.stringify(p):"",F=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/riff`,{riff:j});if(F.ok&&F.body.ok){let G=typeof F.body.riff=="string"&&F.body.riff?JSON.parse(F.body.riff):null;if(a.patchBot(a.bot.larkAppId,{riff:G}),a.persistCliSelection&&!await a.persistCliSelection()){h({text:`\u2717 ${t("botDefaults.riffCliPersistFailed")}`});return}h({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else h({text:`\u2717 ${H(F)}`})}catch(p){h({text:`\u2717 ${L(p)}`})}finally{N(!1)}}return(0,e.jsxs)("div",{className:"bd-subsection",children:[(0,e.jsx)("h4",{className:"bd-subsection-title",children:(0,e.jsx)($,{help:t("botDefaults.riffHelp"),children:t("botDefaults.sectionRiff")})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:t("botDefaults.riffBaseUrl")}),(0,e.jsx)("input",{type:"text","data-input":"riff-base-url",placeholder:t("botDefaults.riffBaseUrlPlaceholder"),value:u,disabled:D,onChange:p=>i(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)($,{help:t("botDefaults.riffSandboxClusterHelp"),children:t("botDefaults.riffSandboxCluster")})}),(0,e.jsx)(ot,{dataInput:"riff-sandbox-cluster",ariaLabel:t("botDefaults.riffSandboxCluster"),value:l,disabled:D,options:Qe.map(p=>({value:p,label:p.toUpperCase()})),onChange:p=>b(p)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)($,{help:t("botDefaults.riffModelHelp"),children:t("botDefaults.riffModel")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-model",list:`riff-model-suggestions-${a.bot.larkAppId}`,placeholder:t("botDefaults.riffModelPlaceholder"),value:n,disabled:D,onChange:p=>f(p.currentTarget.value)}),(0,e.jsx)("datalist",{id:`riff-model-suggestions-${a.bot.larkAppId}`,children:Ve.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)($,{help:t("botDefaults.riffReasoningEffortHelp"),children:t("botDefaults.riffReasoningEffort")})}),(0,e.jsx)(ot,{dataInput:"riff-reasoning-effort",ariaLabel:t("botDefaults.riffReasoningEffort"),value:r,disabled:D,options:Ke.map(p=>({value:p,label:p===""?t("botDefaults.riffReasoningEffortDefault"):p})),onChange:p=>m(p)})]})}),(0,e.jsx)("div",{className:"bd-row",children:(0,e.jsxs)("label",{children:[(0,e.jsx)("span",{children:(0,e.jsx)($,{help:t("botDefaults.riffJwtEnvHelp"),children:t("botDefaults.riffJwtEnv")})}),(0,e.jsx)("input",{type:"text","data-input":"riff-jwt-env",placeholder:t("botDefaults.riffJwtEnvPlaceholder"),value:g,disabled:D,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:d,disabled:D,onChange:p=>k(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:D,onChange:p=>y(p.currentTarget.value),rows:3})]})}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-riff",disabled:D,onClick:()=>{S()},children:t("botDefaults.riffSave")}),(0,e.jsx)(W,{status:C,attr:{"data-riff-status":""}})]})]})}function Xe(a){let t=U(),o=a.bot.brandLabel??null,[u,i]=(0,s.useState)(o),[l,b]=(0,s.useState)(o??""),[n,f]=(0,s.useState)(null),[r,m]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let c=a.bot.brandLabel??null;i(c),b(c??"")},[a.bot.brandLabel]);async function g(c){f(null),m(!0);try{let d=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/brand-label`,{brandLabel:c});if(d.ok&&d.body.ok){let k=d.body.brandLabel??null;i(k),b(k??""),a.patchBot(a.bot.larkAppId,{brandLabel:k}),f({text:"\u2713",ok:!0})}else f({text:`\u2717 ${H(d)}`})}catch(d){f({text:`\u2717 ${L(d)}`})}finally{m(!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)($,{help:t("botDefaults.brandLabelHelp"),children:t("botDefaults.brandLabel")}),(0,e.jsx)("input",{type:"text","data-input":"brandLabel",placeholder:t("botDefaults.brandLabelPlaceholder"),value:l,disabled:r,onChange:c=>b(c.currentTarget.value)})]}),(0,e.jsx)("small",{"data-brand-state":!0,children:fe(u,t)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-brand",disabled:r,onClick:()=>{g(l)},children:t("botDefaults.brandSave")}),(0,e.jsx)("button",{type:"button","data-action":"reset-brand",disabled:r,onClick:()=>{g(null)},children:t("botDefaults.brandReset")}),(0,e.jsx)(W,{status:n,attr:{"data-brand-status":""}})]})]})}function Ze(a){let t=U(),[o,u]=(0,s.useState)(a.bot.autoGrantRequestCards!==!1),[i,l]=(0,s.useState)(a.bot.restrictGrantCommands===!0),[b,n]=(0,s.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null),[f,r]=(0,s.useState)(typeof a.bot.messageQuotaDefaultLimit=="number"?String(a.bot.messageQuotaDefaultLimit):""),[m,g]=(0,s.useState)(null),[c,d]=(0,s.useState)(null);(0,s.useEffect)(()=>{u(a.bot.autoGrantRequestCards!==!1),l(a.bot.restrictGrantCommands===!0);let y=typeof a.bot.messageQuotaDefaultLimit=="number"?a.bot.messageQuotaDefaultLimit:null;n(y),r(y==null?"":String(y))},[a.bot.autoGrantRequestCards,a.bot.messageQuotaDefaultLimit,a.bot.restrictGrantCommands]);async function k(y,C){d(C),g(null);try{let h=await _("PUT",`/api/bots/${encodeURIComponent(a.bot.larkAppId)}/grant-prefs`,y);if(h.ok&&h.body.ok){let D=typeof h.body.messageQuotaDefaultLimit=="number"?h.body.messageQuotaDefaultLimit:null;u(h.body.autoGrantRequestCards!==!1),l(h.body.restrictGrantCommands===!0),n(D),"messageQuotaDefaultLimit"in y&&r(D==null?"":String(D)),a.patchBot(a.bot.larkAppId,{autoGrantRequestCards:h.body.autoGrantRequestCards!==!1,restrictGrantCommands:h.body.restrictGrantCommands===!0,messageQuotaDefaultLimit:D}),g({text:`\u2713 ${t("botDefaults.cardPrefSaved")}`,ok:!0})}else g({text:`\u2717 ${H(h)}`})}catch(h){g({text:`\u2717 ${L(h)}`})}finally{d(null)}}function x(){let y=se(f);if(y==="invalid"){g({text:`\u2717 ${t("botDefaults.quotaInvalid")}`});return}k({messageQuotaDefaultLimit:y},"quota")}return(0,e.jsxs)("section",{className:"bd-section",children:[(0,e.jsx)("h3",{className:"bd-section-title",children:t("botDefaults.sectionGrant")}),(0,e.jsxs)("div",{className:"bd-toggle-grid bd-grant-toggle-grid",children:[(0,e.jsx)(st,{checked:o,disabled:c==="autoGrant",dataAction:"toggle-auto-grant-card",title:t("botDefaults.autoGrantCard"),help:t("botDefaults.autoGrantCardHelp"),onChange:y=>{u(y),k({autoGrantRequestCards:y},"autoGrant")}}),(0,e.jsx)(st,{checked:i,disabled:c==="restrict",dataAction:"toggle-restrict-grant",title:t("botDefaults.restrictGrant"),help:t("botDefaults.restrictGrantHelp"),onChange:y=>{l(y),k({restrictGrantCommands:y},"restrict")}})]}),(0,e.jsxs)("div",{className:"bd-row bd-quota",children:[(0,e.jsxs)("label",{children:[(0,e.jsx)($,{help:t("botDefaults.quotaHelp"),children:t("botDefaults.quotaDefault")}),(0,e.jsx)("input",{type:"number",min:1,step:1,"data-input":"quotaLimit",placeholder:t("botDefaults.quotaPlaceholder"),value:f,disabled:c==="quota",onChange:y=>r(y.currentTarget.value)})]}),(0,e.jsx)("small",{"data-quota-state":!0,children:pe(b,t)})]}),(0,e.jsxs)("div",{className:"actions",children:[(0,e.jsx)("button",{type:"button",className:"primary","data-action":"save-quota",disabled:c==="quota",onClick:x,children:t("botDefaults.quotaSave")}),(0,e.jsx)(W,{status:m,attr:{"data-grant-status":""}})]})]})}function ra(a){return Ot(a,(0,e.jsx)(he,{}))}export{mt as BOT_DEFAULTS_TABS,ft as BdTabGrid,Ne as BotAgentSection,he as BotDefaultsPage,ue as BotDefaultsTabs,Le as CardBehaviorSection,Fe as CodexAppDisplaySection,me as buildSubstituteTarget,ee as effectiveAccess,ra as renderBotDefaultsPage};
@@ -1 +0,0 @@
1
- import{D as i,H as c,d as r}from"./chunk-MFQPCVHY.js";var l={chats:[],bots:[]};async function A(){try{l=await r()}catch{}}var u=new Set(["working","analyzing","active","starting"]);function m(d){let s=new Map,e=t=>{let o=s.get(t);return o||(o={botName:t,larkAppId:t,cliId:"unknown",online:!1,sessions:[],active:[],busy:[],attention:[],lastActiveAt:0},s.set(t,o)),o};for(let t of l.bots??[]){let o=e(t.larkAppId??t.botName??"-");o.online=!0,t.botName&&(o.botName=t.botName),t.botAvatarUrl&&(o.botAvatarUrl=t.botAvatarUrl),t.cliId&&(o.cliId=t.cliId)}let p=[...d].sort((t,o)=>+(t.status==="closed")-+(o.status==="closed"));for(let t of p){let o=t.larkAppId??t.botName??"-";if(t.status==="closed"&&!s.has(o))continue;let a=e(o);t.botName&&(a.botName===a.larkAppId||!a.botName)&&(a.botName=t.botName),a.sessions.push(t),t.cliId&&a.cliId==="unknown"&&(a.cliId=t.cliId),a.lastActiveAt=Math.max(a.lastActiveAt,Number(t.lastMessageAt??0)),t.status!=="closed"&&(a.active.push(t),u.has(t.status)&&a.busy.push(t),c(t)&&a.attention.push(t))}for(let t of s.values())if(t.botName===t.larkAppId){let o=i(t.larkAppId);o&&(t.botName=o)}return[...s.values()].sort((t,o)=>{let a=n=>n.attention.length?0:n.busy.length?1:n.online||n.active.length?2:3;return a(t)!==a(o)?a(t)-a(o):o.lastActiveAt-t.lastActiveAt})}export{A as a,m as b};