botmux 3.9.2 → 3.10.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.
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +6 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/opencode.d.ts.map +1 -1
- package/dist/adapters/cli/opencode.js +7 -1
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/reasonix.d.ts +35 -0
- package/dist/adapters/cli/reasonix.d.ts.map +1 -0
- package/dist/adapters/cli/reasonix.js +236 -0
- package/dist/adapters/cli/reasonix.js.map +1 -0
- package/dist/adapters/cli/registry.d.ts +2 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +4 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +5 -1
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +168 -62
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts +18 -4
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +234 -26
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +1 -0
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +27 -3
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dispatch.d.ts +54 -24
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +81 -27
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/input-turn-dedupe.d.ts +20 -0
- package/dist/core/input-turn-dedupe.d.ts.map +1 -0
- package/dist/core/input-turn-dedupe.js +57 -0
- package/dist/core/input-turn-dedupe.js.map +1 -0
- package/dist/core/local-terminal-opener.d.ts.map +1 -1
- package/dist/core/local-terminal-opener.js +10 -1
- package/dist/core/local-terminal-opener.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +1 -1
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/core/plugins/pm2.d.ts.map +1 -1
- package/dist/core/plugins/pm2.js +7 -1
- package/dist/core/plugins/pm2.js.map +1 -1
- package/dist/core/resource-monitor/attribution.d.ts.map +1 -1
- package/dist/core/resource-monitor/attribution.js +17 -1
- package/dist/core/resource-monitor/attribution.js.map +1 -1
- package/dist/core/resource-monitor/darwin.d.ts +145 -0
- package/dist/core/resource-monitor/darwin.d.ts.map +1 -0
- package/dist/core/resource-monitor/darwin.js +360 -0
- package/dist/core/resource-monitor/darwin.js.map +1 -0
- package/dist/core/resource-monitor/procfs.d.ts.map +1 -1
- package/dist/core/resource-monitor/procfs.js +6 -0
- package/dist/core/resource-monitor/procfs.js.map +1 -1
- package/dist/core/resource-monitor/types.d.ts +1 -1
- package/dist/core/resource-monitor/types.d.ts.map +1 -1
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +5 -2
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +3 -0
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts +3 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +46 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-marker.d.ts +1 -8
- package/dist/core/session-marker.d.ts.map +1 -1
- package/dist/core/session-marker.js +2 -50
- package/dist/core/session-marker.js.map +1 -1
- package/dist/core/types.d.ts +3 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +17 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +292 -9
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +27 -12
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/daemon-internal-api.d.ts.map +1 -1
- package/dist/dashboard/daemon-internal-api.js +11 -2
- package/dist/dashboard/daemon-internal-api.js.map +1 -1
- package/dist/dashboard/groups-action-helpers.d.ts +2 -0
- package/dist/dashboard/groups-action-helpers.d.ts.map +1 -1
- package/dist/dashboard/groups-action-helpers.js +9 -0
- package/dist/dashboard/groups-action-helpers.js.map +1 -1
- package/dist/dashboard/groups-matrix-snapshot.d.ts +56 -0
- package/dist/dashboard/groups-matrix-snapshot.d.ts.map +1 -0
- package/dist/dashboard/groups-matrix-snapshot.js +127 -0
- package/dist/dashboard/groups-matrix-snapshot.js.map +1 -0
- package/dist/dashboard/resource-monitor-service.d.ts.map +1 -1
- package/dist/dashboard/resource-monitor-service.js +18 -2
- package/dist/dashboard/resource-monitor-service.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +45 -4
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/groups-api.js +1 -1
- package/dist/dashboard/web/groups-api.js.map +1 -1
- package/dist/dashboard/web/i18n.js +10 -10
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/roles-page.d.ts.map +1 -1
- package/dist/dashboard/web/roles-page.js +26 -11
- package/dist/dashboard/web/roles-page.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-BHTQEWCH.js → bot-defaults-page-LTVOUDIS.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-KLZCQAHF.js → chunk-3UE7S77S.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-W77TPKZH.js → chunk-DCS35UMD.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-E3HZZXK5.js → chunk-MFQPCVHY.js} +4 -4
- package/dist/dashboard-web/chunks/{chunk-EZH56JCI.js → chunk-ZU3UUKAR.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-BP255CAX.js → connectors-page-5KWDIMKC.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-CDHVXBUT.js → groups-page-FHOKYXMW.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-57BFE6GT.js → insights-page-T2ZX2RWL.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-UTOYGQVF.js → monitor-room-YNVBAGR6.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-WTHYAIUM.js → monitoring-page-LHM55YWN.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-JSMIB353.js → office-page-ATXVP7PW.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-3VDBOH7L.js → overview-page-QYI3KBDD.js} +1 -1
- package/dist/dashboard-web/chunks/roles-page-56VWM6CD.js +1 -0
- package/dist/dashboard-web/chunks/{schedules-page-HHN736H6.js → schedules-page-S5K6U4EO.js} +1 -1
- package/dist/dashboard-web/chunks/{sessions-page-EIWOZD7A.js → sessions-page-WBP4N7D2.js} +1 -1
- package/dist/dashboard-web/chunks/{settings-page-2IUT5LS4.js → settings-page-QUZDQARR.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-JKFKMUEM.js → skills-page-IFY7AEND.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-Q2PXC3UY.js → team-federation-page-C7FJQPFZ.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-EBQCD4AO.js → v3-page-2LMF3WWR.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-QZRMVNZN.js → whiteboards-page-3XC6QRMY.js} +1 -1
- package/dist/dashboard-web/style.css +2 -4
- package/dist/dashboard.js +65 -9
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +33 -7
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +31 -7
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +7 -0
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +56 -0
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +42 -19
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +10 -0
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +79 -0
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +14 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +171 -15
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/lark-hosts.d.ts +5 -0
- package/dist/im/lark/lark-hosts.d.ts.map +1 -1
- package/dist/im/lark/lark-hosts.js +10 -0
- package/dist/im/lark/lark-hosts.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +24 -7
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/pm2-graceful-exit.d.ts +28 -0
- package/dist/pm2-graceful-exit.d.ts.map +1 -0
- package/dist/pm2-graceful-exit.js +39 -0
- package/dist/pm2-graceful-exit.js.map +1 -0
- package/dist/services/bridge-fallback-gate.d.ts +9 -2
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +31 -19
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/message-listener-store.d.ts +18 -0
- package/dist/services/message-listener-store.d.ts.map +1 -1
- package/dist/services/message-listener-store.js +35 -10
- package/dist/services/message-listener-store.js.map +1 -1
- package/dist/services/message-listener.d.ts +17 -0
- package/dist/services/message-listener.d.ts.map +1 -1
- package/dist/services/message-listener.js +26 -0
- package/dist/services/message-listener.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +2 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/lark-scopes.json +1 -0
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +8 -0
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +1 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +13 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/file-lock.d.ts.map +1 -1
- package/dist/utils/file-lock.js +1 -1
- package/dist/utils/file-lock.js.map +1 -1
- package/dist/utils/global-install.d.ts.map +1 -1
- package/dist/utils/global-install.js +56 -10
- package/dist/utils/global-install.js.map +1 -1
- package/dist/utils/idle-detector.d.ts +4 -0
- package/dist/utils/idle-detector.d.ts.map +1 -1
- package/dist/utils/idle-detector.js +25 -0
- package/dist/utils/idle-detector.js.map +1 -1
- package/dist/utils/process-identity.d.ts +7 -0
- package/dist/utils/process-identity.d.ts.map +1 -0
- package/dist/utils/process-identity.js +62 -0
- package/dist/utils/process-identity.js.map +1 -0
- package/dist/worker.js +123 -9
- package/dist/worker.js.map +1 -1
- package/dist/workflows/events/payloads.d.ts +10 -10
- package/dist/workflows/events/schema.d.ts +28 -28
- package/dist/workflows/hostExecutors/registry.d.ts +2 -7
- package/dist/workflows/hostExecutors/registry.d.ts.map +1 -1
- package/dist/workflows/hostExecutors/registry.js.map +1 -1
- package/dist/workflows/shared/provider-reconciler.d.ts +1 -30
- package/dist/workflows/shared/provider-reconciler.d.ts.map +1 -1
- package/dist/workflows/shared/provider-reconciler.js.map +1 -1
- package/dist/workflows/v3/artifact-contract.d.ts +41 -0
- package/dist/workflows/v3/artifact-contract.d.ts.map +1 -0
- package/dist/workflows/v3/artifact-contract.js +20 -0
- package/dist/workflows/v3/artifact-contract.js.map +1 -0
- package/dist/workflows/v3/botmux-attempt-lease.d.ts +7 -0
- package/dist/workflows/v3/botmux-attempt-lease.d.ts.map +1 -0
- package/dist/workflows/v3/botmux-attempt-lease.js +189 -0
- package/dist/workflows/v3/botmux-attempt-lease.js.map +1 -0
- package/dist/workflows/v3/botmux-host-policy.d.ts +7 -0
- package/dist/workflows/v3/botmux-host-policy.d.ts.map +1 -0
- package/dist/workflows/v3/botmux-host-policy.js +34 -0
- package/dist/workflows/v3/botmux-host-policy.js.map +1 -0
- package/dist/workflows/v3/cli-run.d.ts +1 -1
- package/dist/workflows/v3/cli-run.d.ts.map +1 -1
- package/dist/workflows/v3/cli-run.js +1 -1
- package/dist/workflows/v3/cli-run.js.map +1 -1
- package/dist/workflows/v3/contract.d.ts +8 -89
- package/dist/workflows/v3/contract.d.ts.map +1 -1
- package/dist/workflows/v3/contract.js +2 -8
- package/dist/workflows/v3/contract.js.map +1 -1
- package/dist/workflows/v3/core-control.d.ts +16 -0
- package/dist/workflows/v3/core-control.d.ts.map +1 -0
- package/dist/workflows/v3/core-control.js +60 -0
- package/dist/workflows/v3/core-control.js.map +1 -0
- package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
- package/dist/workflows/v3/daemon-run.js +2 -1
- package/dist/workflows/v3/daemon-run.js.map +1 -1
- package/dist/workflows/v3/dag-loader.d.ts +5 -0
- package/dist/workflows/v3/dag-loader.d.ts.map +1 -0
- package/dist/workflows/v3/dag-loader.js +22 -0
- package/dist/workflows/v3/dag-loader.js.map +1 -0
- package/dist/workflows/v3/dag.d.ts +2 -6
- package/dist/workflows/v3/dag.d.ts.map +1 -1
- package/dist/workflows/v3/dag.js +2 -24
- package/dist/workflows/v3/dag.js.map +1 -1
- package/dist/workflows/v3/ephemeral-pool.d.ts.map +1 -1
- package/dist/workflows/v3/ephemeral-pool.js +22 -12
- package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
- package/dist/workflows/v3/event-contract.d.ts +273 -0
- package/dist/workflows/v3/event-contract.d.ts.map +1 -0
- package/dist/workflows/v3/event-contract.js +8 -0
- package/dist/workflows/v3/event-contract.js.map +1 -0
- package/dist/workflows/v3/gate-policy.d.ts +12 -0
- package/dist/workflows/v3/gate-policy.d.ts.map +1 -0
- package/dist/workflows/v3/gate-policy.js +20 -0
- package/dist/workflows/v3/gate-policy.js.map +1 -0
- package/dist/workflows/v3/gate-wait-store.d.ts +99 -0
- package/dist/workflows/v3/gate-wait-store.d.ts.map +1 -0
- package/dist/workflows/v3/gate-wait-store.js +263 -0
- package/dist/workflows/v3/gate-wait-store.js.map +1 -0
- package/dist/workflows/v3/host.js +1 -1
- package/dist/workflows/v3/host.js.map +1 -1
- package/dist/workflows/v3/human-gate.d.ts +4 -99
- package/dist/workflows/v3/human-gate.d.ts.map +1 -1
- package/dist/workflows/v3/human-gate.js +4 -275
- package/dist/workflows/v3/human-gate.js.map +1 -1
- package/dist/workflows/v3/in-process-attempt-lease.d.ts +10 -0
- package/dist/workflows/v3/in-process-attempt-lease.d.ts.map +1 -0
- package/dist/workflows/v3/in-process-attempt-lease.js +47 -0
- package/dist/workflows/v3/in-process-attempt-lease.js.map +1 -0
- package/dist/workflows/v3/journal.d.ts +2 -275
- package/dist/workflows/v3/journal.d.ts.map +1 -1
- package/dist/workflows/v3/journal.js.map +1 -1
- package/dist/workflows/v3/library-service.js +1 -1
- package/dist/workflows/v3/library-service.js.map +1 -1
- package/dist/workflows/v3/orchestrator.d.ts +1 -2
- package/dist/workflows/v3/orchestrator.d.ts.map +1 -1
- package/dist/workflows/v3/orchestrator.js.map +1 -1
- package/dist/workflows/v3/portable-artifact-snapshot.d.ts +15 -0
- package/dist/workflows/v3/portable-artifact-snapshot.d.ts.map +1 -0
- package/dist/workflows/v3/portable-artifact-snapshot.js +76 -0
- package/dist/workflows/v3/portable-artifact-snapshot.js.map +1 -0
- package/dist/workflows/v3/portable-final-outputs.d.ts +37 -0
- package/dist/workflows/v3/portable-final-outputs.d.ts.map +1 -0
- package/dist/workflows/v3/portable-final-outputs.js +137 -0
- package/dist/workflows/v3/portable-final-outputs.js.map +1 -0
- package/dist/workflows/v3/portable-run-snapshot.d.ts +14 -0
- package/dist/workflows/v3/portable-run-snapshot.d.ts.map +1 -0
- package/dist/workflows/v3/portable-run-snapshot.js +176 -0
- package/dist/workflows/v3/portable-run-snapshot.js.map +1 -0
- package/dist/workflows/v3/portable-runtime.d.ts +83 -0
- package/dist/workflows/v3/portable-runtime.d.ts.map +1 -0
- package/dist/workflows/v3/portable-runtime.js +135 -0
- package/dist/workflows/v3/portable-runtime.js.map +1 -0
- package/dist/workflows/v3/runtime-host-contract.d.ts +182 -0
- package/dist/workflows/v3/runtime-host-contract.d.ts.map +1 -0
- package/dist/workflows/v3/runtime-host-contract.js +9 -0
- package/dist/workflows/v3/runtime-host-contract.js.map +1 -0
- package/dist/workflows/v3/runtime.d.ts +12 -226
- package/dist/workflows/v3/runtime.d.ts.map +1 -1
- package/dist/workflows/v3/runtime.js +14 -3173
- package/dist/workflows/v3/runtime.js.map +1 -1
- package/dist/workflows/v3/shared-node-runtime.d.ts +203 -0
- package/dist/workflows/v3/shared-node-runtime.d.ts.map +1 -0
- package/dist/workflows/v3/shared-node-runtime.js +2978 -0
- package/dist/workflows/v3/shared-node-runtime.js.map +1 -0
- package/dist/workflows/v3/shared-runtime.d.ts +17 -0
- package/dist/workflows/v3/shared-runtime.d.ts.map +1 -0
- package/dist/workflows/v3/shared-runtime.js +12 -0
- package/dist/workflows/v3/shared-runtime.js.map +1 -0
- package/package.json +4 -1
- package/dist/dashboard-web/chunks/roles-page-LHVAU2BI.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as dt,b as ct}from"./chunks/chunk-W77TPKZH.js";import{b as Re,d as st,e as it,g as lt}from"./chunks/chunk-AGCPF6MT.js";import{a as et}from"./chunks/chunk-BD3PZGH2.js";import{a as ce,b as at,c as rt}from"./chunks/chunk-KLZCQAHF.js";import{i as nt,j as ot}from"./chunks/chunk-5CJMHTT4.js";import{C as Ye,E as Ze,H as Qe,I as de,a as ie,b as Ge,e as le,t as g,u as s,v as Je,w as Xe}from"./chunks/chunk-E3HZZXK5.js";import{a as nn,c as on,d as tt}from"./chunks/chunk-5THX4DI2.js";import{c as se}from"./chunks/chunk-7SZRL6FY.js";var Kt=se(on(),1),u=se(nn(),1);var Te="botmux:close-theme-menu",an={palette:'<circle cx="13.5" cy="6.5" r=".5" fill="currentColor"/><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"/><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"/><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"/><path d="M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>',moon:'<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/>',cpu:'<path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/>',zap:'<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>',chevron:'<path d="m6 9 6 6 6-6"/>'},pt=[{labelKey:"theme.base",options:[{value:"system",labelKey:"status.system",icon:"monitor"},{value:"light",labelKey:"status.light",icon:"sun"},{value:"dark",labelKey:"status.dark",icon:"moon"}]},{labelKey:"theme.skins",options:[{value:"cyber",labelKey:"skin.cyber",icon:"cpu"},{value:"fallout",labelKey:"skin.fallout",icon:"zap"}]}],ut=pt.flatMap(e=>e.options),L=!1,J=null,X=null,rn=70,sn=120;function Me(e){return`<svg class="tm-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${an[e]??""}</svg>`}function ln(e){return e.replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""})[t])}function ht(){let e=document.getElementById("theme-menu"),t=document.getElementById("theme-menu-btn"),o=document.getElementById("theme-menu-pop");if(!e||!t||!o||e.dataset.themeMenuInit==="1")return;e.dataset.themeMenuInit="1",o.innerHTML=pt.map(c=>`<div class="tm-group" data-label-key="${c.labelKey}"></div>`+c.options.map(f=>`<button type="button" class="tm-item" role="option" data-value="${f.value}"><span class="tm-ic">${Me(f.icon)}</span><span class="tm-label" data-label-key="${f.labelKey}"></span></button>`).join("")).join("");let a=()=>{if(!L)return;let c=t.getBoundingClientRect(),f=12,p=Math.min(Math.max(o.offsetWidth||216,216),Math.max(0,window.innerWidth-f*2)),R=f+p/2,v=window.innerWidth-f-p/2,w=c.left+c.width/2,M=Math.min(Math.max(w,R),Math.max(R,v)),x=Math.max(180,window.innerHeight-c.bottom-20);o.style.setProperty("--theme-menu-pop-left",`${Math.round(M)}px`),o.style.setProperty("--theme-menu-pop-top",`${Math.round(c.bottom+8)}px`),o.style.setProperty("--theme-menu-pop-max-height",`${Math.round(x)}px`)},r=c=>{J!=null&&(window.clearTimeout(J),J=null),X!=null&&(window.clearTimeout(X),X=null),L=c,t.setAttribute("aria-expanded",String(L)),document.body.classList.toggle("theme-menu-open",L),L?(o.hidden=!1,a(),window.requestAnimationFrame(()=>e.classList.add("open"))):(e.classList.remove("open"),X=window.setTimeout(()=>{X=null,L||(o.hidden=!0)},sn))},i=()=>r(!0),l=()=>{J==null&&(J=window.setTimeout(()=>r(!1),rn))},m=c=>{c.pointerType!=="touch"&&i()},d=c=>{c.pointerType!=="touch"&&l()};e.addEventListener("pointerenter",m),e.addEventListener("pointerleave",d),o.addEventListener("pointerenter",m),o.addEventListener("pointerleave",d),t.addEventListener("click",c=>{c.stopPropagation(),r(!L)}),t.addEventListener("focus",()=>{t.matches(":focus-visible")&&i()}),e.addEventListener("focusout",c=>{let f=c.relatedTarget;(!(f instanceof Node)||!e.contains(f))&&l()}),o.addEventListener("click",c=>{let f=c.target.closest(".tm-item");f&&(g.setTheme(f.dataset.value??"system"),r(!1))}),document.addEventListener("click",c=>{L&&!e.contains(c.target)&&r(!1)}),document.addEventListener("pointermove",c=>{if(!L||c.pointerType==="touch")return;let f=c.target;f instanceof Node&&e.contains(f)||l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&L&&r(!1)}),window.addEventListener("resize",a),window.addEventListener("scroll",a,!0),window.addEventListener(Te,()=>{L&&r(!1)}),Le()}function Le(){let e=document.getElementById("theme-menu-btn");if(!e)return;let t=ut.find(o=>o.value===g.theme)??ut[0];e.innerHTML=`<span class="tm-ic">${Me("palette")}</span><span class="tm-current">${ln(s(t.labelKey))}</span><span class="tm-chev">${Me("chevron")}</span>`,document.querySelectorAll("#theme-menu-pop [data-label-key]").forEach(o=>{o.textContent=s(o.dataset.labelKey??"")}),document.querySelectorAll("#theme-menu-pop .tm-item").forEach(o=>{o.classList.toggle("active",o.dataset.value===g.theme)})}function b(e,t,o,a,r=!1){return{id:e,routePrefix:t,rerenderOnUiChange:r,load:async()=>(await o())[a]}}var dn=[{id:"plugins",routePrefix:"#/plugins",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/plugin-page-VEGTCEAS.js");return t=>e.renderPluginPage(t)}},b("workflows","#/workflows",()=>import("./chunks/v3-page-EBQCD4AO.js"),"renderV3RunsPage"),b("groups","#/groups",()=>import("./chunks/groups-page-CDHVXBUT.js"),"renderGroupsPage"),b("settings","#/settings",()=>import("./chunks/settings-page-2IUT5LS4.js"),"renderSettingsPage"),b("bot-defaults","#/bot-defaults",()=>import("./chunks/bot-defaults-page-BHTQEWCH.js"),"renderBotDefaultsPage"),b("skills","#/skills",()=>import("./chunks/skills-page-JKFKMUEM.js"),"renderSkillsPage"),b("connectors-logs","#/connectors/logs",()=>import("./chunks/connectors-page-BP255CAX.js"),"renderConnectorsLogsPage"),b("webhook-logs","#/webhook-logs",()=>import("./chunks/connectors-page-BP255CAX.js"),"renderConnectorsLogsPage"),b("connectors","#/connectors",()=>import("./chunks/connectors-page-BP255CAX.js"),"renderConnectorsPage"),b("team-manage","#/team/manage",()=>import("./chunks/team-federation-page-Q2PXC3UY.js"),"renderTeamManagePage"),b("team","#/team",()=>import("./chunks/team-federation-page-Q2PXC3UY.js"),"renderTeamFederationPage"),b("roles-profile","#/roles/profile",()=>import("./chunks/roles-page-LHVAU2BI.js"),"renderRoleProfilesPage"),b("roles","#/roles",()=>import("./chunks/roles-page-LHVAU2BI.js"),"renderRolesPage"),b("schedules","#/schedules",()=>import("./chunks/schedules-page-HHN736H6.js"),"renderSchedulesPage"),b("whiteboards","#/whiteboards",()=>import("./chunks/whiteboards-page-QZRMVNZN.js"),"renderWhiteboardsPage"),b("monitoring","#/monitoring",()=>import("./chunks/monitoring-page-WTHYAIUM.js"),"renderMonitoringPage"),b("sessions","#/sessions",()=>import("./chunks/sessions-page-EIWOZD7A.js"),"renderSessionsPage"),b("monitor-room","#/monitor-room",()=>import("./chunks/monitor-room-UTOYGQVF.js"),"renderMonitorRoomPage",!0),b("office","#/office",()=>import("./chunks/office-page-JSMIB353.js"),"renderOfficePage"),b("insights","#/insights",()=>import("./chunks/insights-page-57BFE6GT.js"),"renderInsightsPage")];function mt(e){return dn.find(t=>t.exact?e===t.routePrefix:e.startsWith(t.routePrefix))}async function ft(){let e=await import("./chunks/overview-page-3VDBOH7L.js");return t=>e.renderOverviewPage(t)}function gt(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function vt(e){let t=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),t}function bt(e,t){return t===e.seq}async function yt(e,t,o,a,r={}){let i=await a();if(!bt(e,t))return!1;let l=i(o);return bt(e,t)?(e.pageDispose=typeof l=="function"?l:null,e.rerenderOnUiChange=r.rerenderOnUiChange??!0,!0):(typeof l=="function"&&l(),!1)}var cn="botmux.dashboard.stale-chunk-reload.v1:",un=/Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|dynamically imported module/i,pn=/\b(?:https?:\/\/|\/assets\/)\S+?\.js\b/;function wt(e){return e instanceof Error?`${e.name}: ${e.message}`:String(e)}function xt(e){return un.test(wt(e))}function hn(e,t){let r=wt(e).match(pn)?.[0]||`${t.href}|${t.hash}`;return`${cn}${r.slice(-240)}`}function mn(e,t){if(!xt(e))return!1;let o=hn(e,t);try{if(t.sessionStorage.getItem(o)==="1")return!1;t.sessionStorage.setItem(o,"1")}catch{return!1}return t.reload(),!0}function kt(e,t){if(!xt(e))return!1;let o;try{o=t.getSessionStorage()}catch{return!1}return mn(e,{...t,sessionStorage:o})}var fn=new Set(["auto","scroll","overlay"]),ue=28,S=3,I=6,Et=!1,Nt=null,Rt=new WeakMap,P=new Map,Mt=null,Tt=null,Ne=0,Se=0,Y=null;function bn(e){return e.closest("dialog[open]")??document.body}function gn(e){let t=Rt.get(e);if(t?.isConnected)return t;let o=document.createElement("div");return o.className="floating-scrollbar-layer",o.setAttribute("aria-hidden","true"),e.appendChild(o),Rt.set(e,o),o}function vn(e){return fn.has(e)}function Oe(e,t){let o=getComputedStyle(e),a=t==="y"?o.overflowY:o.overflowX;return vn(a)?t==="y"?e.scrollHeight-e.clientHeight>1:e.scrollWidth-e.clientWidth>1:!1}function yn(e){if(!e.isConnected||e.closest("[hidden]"))return!1;let t=e.getBoundingClientRect();return t.width>0&&t.height>0&&t.bottom>0&&t.right>0&&t.top<window.innerHeight&&t.left<window.innerWidth}function wn(e){return[e,...Array.from(e.querySelectorAll("*"))].filter(o=>yn(o)&&(Oe(o,"x")||Oe(o,"y")))}function pe(e){e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.track.remove()}function xn(e,t){let o=P.get(e);o||(o={},P.set(e,o));let a=o[t],r=bn(e),i=gn(r);if(a?.track.parentElement===i)return a;a&&pe(a);let l=document.createElement("div"),m=document.createElement("div");l.className=`floating-scrollbar floating-scrollbar-${t}`,m.className="floating-scrollbar-thumb",l.appendChild(m),i.appendChild(l);let d={target:e,axis:t,track:l,thumb:m,hideTimer:void 0};return o[t]=d,d}function Pe(e,t=!1){e.track.classList.add("is-visible"),e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.hideTimer=t?void 0:window.setTimeout(()=>{e.track.classList.remove("is-visible","is-active"),e.hideTimer=void 0},900)}function kn(e){let{target:t,axis:o,track:a,thumb:r}=e,i=t.getBoundingClientRect();if(o==="y"){let R=Math.max(0,i.top+S),v=Math.min(window.innerHeight,i.bottom-S),w=Math.max(0,v-R);if(w<ue||t.scrollHeight<=t.clientHeight){a.hidden=!0;return}let M=Math.max(ue,Math.round(w*t.clientHeight/t.scrollHeight)),x=Math.max(1,t.scrollHeight-t.clientHeight),K=Math.round((w-M)*t.scrollTop/x);a.hidden=!1,a.style.left=`${Math.min(window.innerWidth-I-S,Math.max(S,i.right-I-S))}px`,a.style.top=`${R}px`,a.style.width=`${I}px`,a.style.height=`${w}px`,r.style.width="100%",r.style.height=`${M}px`,r.style.transform=`translate3d(0, ${K}px, 0)`;return}let l=Math.max(0,i.left+S),m=Math.min(window.innerWidth,i.right-S),d=Math.max(0,m-l);if(d<ue||t.scrollWidth<=t.clientWidth){a.hidden=!0;return}let c=Math.max(ue,Math.round(d*t.clientWidth/t.scrollWidth)),f=Math.max(1,t.scrollWidth-t.clientWidth),p=Math.round((d-c)*t.scrollLeft/f);a.hidden=!1,a.style.left=`${l}px`,a.style.top=`${Math.min(window.innerHeight-I-S,Math.max(S,i.bottom-I-S))}px`,a.style.width=`${d}px`,a.style.height=`${I}px`,r.style.width=`${c}px`,r.style.height="100%",r.style.transform=`translate3d(${p}px, 0, 0)`}function U(){Ne||(Ne=window.requestAnimationFrame(()=>{Ne=0,Rn()}))}function En(){Se||(Se=window.setTimeout(()=>{Se=0,U()},120))}function Rn(){let e=Nt;if(!e)return;let t=new Set(wn(e));for(let[o,a]of P)t.has(o)||(a.x&&pe(a.x),a.y&&pe(a.y),P.delete(o));for(let o of t){let a=o===Y;for(let r of["x","y"]){let i=P.get(o);if(!Oe(o,r)){let m=i?.[r];m&&(pe(m),delete i?.[r]);continue}let l=xn(o,r);kn(l),a&&Pe(l,!0)}}}function Mn(e){if(!(e instanceof HTMLElement))return;let t=P.get(e);if(t)for(let o of Object.values(t))o&&(o.track.classList.add("is-active"),Pe(o))}function Tn(e){for(let t=e;t;t=t.parentElement)if(t instanceof HTMLElement&&P.has(t))return t;return null}function Lt(e){if(Y===e)return;let t=Y?P.get(Y):void 0;if(Y=e,t)for(let a of Object.values(t))a?.track.classList.remove("is-visible");let o=e?P.get(e):void 0;if(o)for(let a of Object.values(o))a&&Pe(a,!0)}function St(e){Et||(Et=!0,Nt=e,document.documentElement.classList.add("floating-scrollbars-on"),Mt=typeof ResizeObserver>"u"?null:new ResizeObserver(U),Mt?.observe(e),Tt=new MutationObserver(t=>{for(let o of t){let a=o.target;if(!(a instanceof Element&&a.closest(".floating-scrollbar-layer"))){En();return}}}),Tt.observe(e,{attributes:!0,attributeFilter:["class","style","hidden","open"],childList:!0,subtree:!0}),document.addEventListener("scroll",t=>{Mn(t.target),U()},!0),window.addEventListener("resize",U),window.addEventListener("hashchange",U),document.addEventListener("pointermove",t=>{Lt(Tn(document.elementFromPoint(t.clientX,t.clientY)))}),document.addEventListener("pointerleave",()=>Lt(null)),U())}var Ot=!1,$=null,he=null,_=null;function Ct(){if($)return $;let e=document.createElement("div");return e.className="icon-tip",e.setAttribute("role","tooltip"),e.style.display="none",document.body.appendChild(e),$=e,e}function Ln(e){let t=Ct(),o=nt(e,document.body);return t.parentNode!==o&&o.appendChild(t),t}function Nn(e){let t=Ct(),o=e.getBoundingClientRect(),a=t.offsetWidth,r=t.offsetHeight,i=8,l=o.top<r+i+4,m=o.left+o.width/2-a/2;m=Math.min(Math.max(m,6),window.innerWidth-a-6);let d=l?o.bottom+i:o.top-r-i;t.style.left=`${Math.round(m)}px`,t.style.top=`${Math.round(d)}px`,t.dataset.placement=l?"bottom":"top"}function Z(){_&&(clearTimeout(_),_=null),he=null,$&&($.style.display="none",$.classList.remove("show"))}function Pt(e){let t=e.getAttribute("data-tip");if(!t)return;he=e;let o=Ln(e);o.textContent=t,o.style.display="block",o.classList.remove("show"),Nn(e),requestAnimationFrame(()=>{he===e&&o.classList.add("show")})}function Ce(e){return e instanceof Element?e.closest("[data-tip]"):null}function Dt(){Ot||typeof document>"u"||(Ot=!0,document.addEventListener("pointerover",e=>{let t=Ce(e.target);!t||t===he||(_&&clearTimeout(_),_=setTimeout(()=>Pt(t),120))}),document.addEventListener("pointerout",e=>{let t=Ce(e.target);if(!t)return;let o=e.relatedTarget instanceof Element?e.relatedTarget:null;o&&(o===t||t.contains(o))||Z()}),document.addEventListener("focusin",e=>{let t=Ce(e.target);t&&Pt(t)}),document.addEventListener("focusout",Z),document.addEventListener("click",Z,!0),window.addEventListener("scroll",Z,!0),window.addEventListener("resize",Z))}async function Ht(e){let t=await e.json().catch(()=>null);return t&&typeof t=="object"?t:{}}function At(e,t){let o=t.detail??t.error;return new Error(typeof o=="string"?o:`HTTP ${e.status}`)}async function De(e,t=()=>{},o){t("updating");let a=await e(o?"/api/update/rollback":"/api/update/run",o?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({version:o})}:{method:"POST"}),r=await Ht(a);if(!a.ok||r.ok===!1)throw At(a,r);if(r.ok!==!0||typeof r.oldVersion!="string"||typeof r.newVersion!="string"||typeof r.changed!="boolean")throw new Error("Invalid update response");if(o&&(r.newVersion!==o||r.changed!==!0))throw new Error("Invalid rollback response");let i={oldVersion:r.oldVersion,newVersion:r.newVersion,changed:r.changed,restarted:!1};if(t("restarting"),o)return{...i,restarted:!0};let l=await e("/api/update/restart",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({update:{oldVersion:i.oldVersion,newVersion:i.newVersion}})}),m=await Ht(l);if(!l.ok||m.ok===!1)return{...i,restarted:!1,restartError:At(l,m).message};if(m.ok!==!0)throw new Error("Invalid restart response");return m.alreadyScheduled===!0?{...i,restarted:!0,alreadyScheduled:!0}:{...i,restarted:!0}}function He(e,t){if(e)try{let o=new URL(e);if(!["http:","https:"].includes(o.protocol)||o.username||o.password)return;let a=t.startsWith("#/")&&t.length<=4096&&!/[\u0000-\u001f\u007f]/.test(t)?t:"#/";return o.searchParams.set("next",`/${a}`),o.toString()}catch{return}}var n=se(tt(),1),Sn=["roles","role-profiles","bot-defaults","skills","plugins","team","connectors","insights","whiteboards"],Bt=[{id:"overview",href:"#/",labelKey:"nav.overview",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"1.5",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,n.jsx)("rect",{x:"9.1",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,n.jsx)("rect",{x:"1.5",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"}),(0,n.jsx)("rect",{x:"9.1",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"})]})},{id:"sessions",href:"#/sessions",labelKey:"nav.sessions",icon:(0,n.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"})},{id:"groups",href:"#/groups",labelKey:"nav.groups",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"5.6",cy:"5.8",r:"2.4"}),(0,n.jsx)("circle",{cx:"11",cy:"6.8",r:"1.9"}),(0,n.jsx)("path",{d:"M1.8 13.2c.5-2.4 2-3.6 3.8-3.6s3.3 1.2 3.8 3.6M9.8 12.6c.4-1.7 1.5-2.6 2.8-2.6 1 0 1.9.5 2.4 1.6"})]})},{id:"roles",href:"#/roles",labelKey:"nav.roles",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M8 1.8l5.2 2v3.4c0 3.4-2.2 5.9-5.2 7-3-1.1-5.2-3.6-5.2-7V3.8z"}),(0,n.jsx)("path",{d:"M5.8 8l1.6 1.6 2.8-3"})]})},{id:"monitoring",href:"#/monitoring",labelKey:"nav.monitoring",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M2 9.2h2.3l1.3-4.8 2.5 8.4 1.8-5.1h4.1"}),(0,n.jsx)("path",{d:"M2 2.5h12v11H2z"})]})},{id:"insights",href:"#/insights",labelKey:"nav.insights",manage:!0,icon:(0,n.jsx)(n.Fragment,{children:(0,n.jsx)("path",{d:"M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"})})},{id:"workflows",href:"#/workflows",labelKey:"nav.workflows",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"3.4",cy:"3.6",r:"1.9"}),(0,n.jsx)("circle",{cx:"3.4",cy:"12.4",r:"1.9"}),(0,n.jsx)("circle",{cx:"12.6",cy:"8",r:"1.9"}),(0,n.jsx)("path",{d:"M5.2 4.4l5.6 2.8M5.2 11.6l5.6-2.8"})]})},{id:"schedules",href:"#/schedules",labelKey:"nav.schedules",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,n.jsx)("path",{d:"M8 4.5V8l2.4 1.6"})]})},{id:"whiteboards",href:"#/whiteboards",labelKey:"nav.whiteboards",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,n.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})},{id:"office",href:"#/office",labelKey:"nav.office",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"3",y:"4",width:"10",height:"7",rx:"2"}),(0,n.jsx)("circle",{cx:"6",cy:"7.5",r:"1"}),(0,n.jsx)("circle",{cx:"10",cy:"7.5",r:"1"}),(0,n.jsx)("path",{d:"M8 4V2M4.5 11v2M11.5 11v2"})]})},{id:"bot-defaults",href:"#/bot-defaults",labelKey:"nav.botDefaults",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.5",y:"5",width:"11",height:"8",rx:"2"}),(0,n.jsx)("circle",{cx:"5.8",cy:"9",r:"1"}),(0,n.jsx)("circle",{cx:"10.2",cy:"9",r:"1"}),(0,n.jsx)("path",{d:"M8 5V2.5M5.5 13v1.2M10.5 13v1.2"})]})},{id:"skills",href:"#/skills",labelKey:"nav.skills",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M3 2.5h10v3H3zM3 7h10v6.5H3z"}),(0,n.jsx)("path",{d:"M5.4 9.2h5.2M5.4 11.2h3.8"})]})},{id:"plugins",href:"#/plugins",label:"\u63D2\u4EF6",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M6.4 1.8h3.2v3h2.8v3.2H9.6v2.8H6.4V8H3.6V4.8h2.8z"}),(0,n.jsx)("path",{d:"M2.2 11.8h11.6v2.4H2.2z"})]})},{id:"team",href:"#/team",labelKey:"nav.team",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,n.jsx)("path",{d:"M1.8 8h12.4M8 1.8c-2 1.8-2 10.6 0 12.4 2-1.8 2-10.6 0-12.4z"})]})},{id:"connectors",href:"#/connectors",labelKey:"nav.connectors",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"}),(0,n.jsx)("rect",{x:"3.5",y:"6.5",width:"9",height:"7",rx:"2"})]})},{id:"settings",href:"#/settings",labelKey:"nav.settings",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M8 1.75 9.35 2.05 10 3.28l1.38.3 1.04-.96.96.96-.96 1.04.3 1.38 1.23.65L14.25 8l-.3 1.35-1.23.65-.3 1.38.96 1.04-.96.96-1.04-.96-1.38.3-.65 1.23L8 14.25l-1.35-.3L6 12.72l-1.38-.3-1.04.96-.96-.96.96-1.04-.3-1.38-1.23-.65L1.75 8l.3-1.35 1.23-.65.3-1.38-.96-1.04.96-.96 1.04.96 1.38-.3.65-1.23z"}),(0,n.jsx)("circle",{cx:"8",cy:"8",r:"2"})]})}],ee=[],H=!0,$e=!1,Vt=location.hash||"#/",F=null,te=!1,ne=null,fe=null,Wt=null,be=null,zt=null,D=gt(),qt="botmux.ownerAvatar.v1",On=new Set(["working","analyzing","active","starting"]),_e="botmux:auth-expired",Fe;function Q(e){return(0,n.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e})}function It(e){return e.labelKey?s(e.labelKey):e.label??""}function Pn(e,t){let o=t||"#/";return e.id==="plugins"&&ee.some(a=>a.href===o||o.startsWith(`${a.href}?`)||o.startsWith(`${a.href}/`))?!1:e.id==="sessions"&&(o==="#/monitor-room"||o.startsWith("#/monitor-room?")||o.startsWith("#/monitor-room/"))||e.id==="connectors"&&(o==="#/webhook-logs"||o.startsWith("#/webhook-logs?")||o.startsWith("#/webhook-logs/"))?!0:e.href===o||e.href!=="#/"&&(o.startsWith(`${e.href}?`)||o.startsWith(`${e.href}/`))}function Cn(){let e=it()?Bt.filter(o=>o.id!=="workflows"):Bt;if(ee.length===0)return e;let t=e.findIndex(o=>o.id==="plugins");return t<0?[...e,...ee]:[...e.slice(0,t+1),...ee,...e.slice(t+1)]}function Dn(e){let t=[];return Pn(e,Vt)&&t.push("active"),e.id==="settings"&&te&&t.push("nav-has-update"),t.length?t.join(" "):void 0}function jt(){let e=le(new URLSearchParams(location.search).get("locale"));if(e)return e;let t=location.hash.indexOf("?");return t<0?null:le(new URLSearchParams(location.hash.slice(t+1)).get("locale"))}function Ut(){let e=jt();return!e||e===g.locale?!1:(g.setLocale(e),!0)}function Hn(){let e=location.hash.indexOf("?");return e<0?null:{path:location.hash.slice(0,e)||"#/",params:new URLSearchParams(location.hash.slice(e+1))}}function An(){let e=Hn(),t=e?.params.get("open");if(!e||!t||t!=="bot-onboarding"&&t!=="create-session")return!1;e.params.delete("open");let o=e.params.toString();return history.replaceState(null,"",o?`${e.path}?${o}`:e.path),t==="bot-onboarding"?window.dispatchEvent(new Event(ce)):Re(),!0}function $t(){let e=ne?`v${ne}`:"";return fe==="runtime"?s("update.navRuntimeBadgeTitle",{version:e}):s("update.navBadgeTitle",{version:e})}function Bn(e){be=e}function Ae(){if(be)return be;let e=document.getElementById("root");if(!e)throw new Error("dashboard root is not mounted");return be=e,e}function In(){return(0,u.useEffect)(()=>{ht()},[]),(0,u.useEffect)(()=>{Le()}),(0,n.jsxs)("div",{className:"theme-menu",id:"theme-menu",children:[(0,n.jsx)("button",{type:"button",className:"theme-menu-btn",id:"theme-menu-btn","aria-haspopup":"listbox","aria-expanded":"false","aria-label":"Theme",children:(0,n.jsx)("span",{className:"tm-ic",children:(0,n.jsxs)("svg",{className:"tm-svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),(0,n.jsx)("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),(0,n.jsx)("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}),(0,n.jsx)("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),(0,n.jsx)("path",{d:"M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"})]})})}),(0,n.jsx)("div",{className:"theme-menu-pop",id:"theme-menu-pop",role:"listbox",hidden:!0})]})}function Un(){let e=[...ie.sessions.values()],t=e.filter(d=>d.status!=="closed"),o=t.map(d=>({s:d,reason:Qe(d)})).filter(d=>!!d.reason).sort((d,c)=>de(d.s)-de(c.s)),a=new Set(o.map(d=>String(d.s.sessionId??""))),r=t.filter(d=>On.has(String(d.status))&&!a.has(String(d.sessionId??""))).length,i=o[0]??null,l=ct(e).filter(d=>d.online||d.active.length>0).length,m=Math.max(0,t.length-o.length-r);return{working:r,attention:o.length,idle:m,onlineBots:l,attentionNotice:i?{count:o.length,time:Xe(de(i.s)),bot:Ze(i.s),reason:i.reason}:null}}function me(e){return(0,n.jsxs)("div",{className:`topbar-status-row${e.hot?" topbar-status-row-hot":""}`,children:[(0,n.jsx)("span",{children:e.label}),(0,n.jsx)("b",{className:e.value>0?"status-count-on":void 0,children:e.value})]})}function $n(e){let{attention:t,idle:o,working:a}=e.summary,r=a+t+o,i=r===0?"conic-gradient(var(--border) 0 360deg)":(()=>{let l=a/r*360,m=l+t/r*360;return`conic-gradient(var(--accent) 0 ${l}deg, var(--warning) ${l}deg ${m}deg, var(--success) ${m}deg 360deg)`})();return(0,n.jsxs)("div",{className:"topbar-status-donut-wrap","aria-hidden":"true",children:[(0,n.jsx)("div",{className:"topbar-status-donut",style:{background:i}}),(0,n.jsxs)("div",{className:"topbar-status-donut-center",children:[(0,n.jsx)("b",{children:r}),(0,n.jsx)("span",{children:s("overview.openSessions")})]})]})}function Be(){window.dispatchEvent(new Event(Te))}function _n(e){let{autoOpen:t=!1,summary:o}=e,[a,r]=(0,u.useState)(!1),[i,l]=(0,u.useState)(!1),[m,d]=(0,u.useState)(!1),c=(0,u.useRef)(null),f=t&&!i,p=a||f;return(0,u.useEffect)(()=>{t||l(!1)},[t]),(0,u.useEffect)(()=>{if(!p)return;let v=w=>{let M=w.target;M instanceof Node&&c.current?.contains(M)||(r(!1),l(!0))};return document.addEventListener("pointerdown",v),()=>document.removeEventListener("pointerdown",v)},[p]),(0,n.jsxs)("div",{ref:c,className:`topbar-status-menu${f?" topbar-status-auto-open":""}${a?" is-open":""}${m?" suppress-hover":""}`,onPointerEnter:Be,onPointerLeave:()=>d(!1),onFocusCapture:Be,onBlur:v=>{let w=v.relatedTarget;(!(w instanceof Node)||!v.currentTarget.contains(w))&&r(!1)},onKeyDown:v=>{v.key==="Escape"&&(r(!1),l(!0),d(!0),v.currentTarget.querySelector("#status")?.focus())},children:[(0,n.jsx)("button",{type:"button",id:"status",className:"connection-status","aria-haspopup":"true","aria-expanded":p,onClick:()=>{if(Be(),p){r(!1),l(!0),d(!0);return}d(!1),r(!0)},children:s("overview.sessionOverview")}),(0,n.jsxs)("div",{className:"topbar-status-pop",children:[o.attentionNotice?(0,n.jsxs)("a",{className:"topbar-attention-notice",href:"#/sessions",children:[(0,n.jsx)("span",{className:"topbar-attention-dot","aria-hidden":"true"}),(0,n.jsxs)("span",{className:"topbar-attention-copy",children:[(0,n.jsx)("b",{children:s("strip.pending",{count:o.attentionNotice.count})}),(0,n.jsx)("small",{children:s("strip.longestCompact",{time:o.attentionNotice.time,bot:o.attentionNotice.bot,reason:o.attentionNotice.reason})})]}),(0,n.jsx)("span",{className:"topbar-attention-action",children:s("strip.handle")})]}):null,(0,n.jsxs)("div",{className:"topbar-status-list",children:[(0,n.jsx)(me,{label:s("overview.workingSessions"),value:o.working}),(0,n.jsx)(me,{label:s("overview.idleSessions"),value:o.idle}),(0,n.jsx)(me,{label:s("overview.attention"),value:o.attention,hot:o.attention>0}),(0,n.jsx)(me,{label:s("overview.onlineBots"),value:o.onlineBots})]}),(0,n.jsx)($n,{summary:o})]})]})}function Fn(e){if(!e.open)return null;let t=!!e.loginUrl;return(0,n.jsx)("div",{id:"auth-expired-overlay",className:"auth-expired-overlay",role:"presentation",onClick:o=>{o.target===o.currentTarget&&e.onClose()},children:(0,n.jsxs)("div",{className:"auth-expired-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"auth-expired-title",children:[(0,n.jsx)("h2",{id:"auth-expired-title",children:t?"\u767B\u5F55 Dashboard":"\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548"}),(0,n.jsx)("p",{children:t?"\u5F53\u524D\u6D4F\u89C8\u5668\u5C1A\u672A\u767B\u5F55\u3002\u70B9\u51FB\u540E\u5C06\u901A\u8FC7 Botmux \u5E73\u53F0\u6821\u9A8C\u673A\u5668 owner \u6743\u9650\uFF0C\u5E76\u8FD4\u56DE\u5F53\u524D\u9875\u9762\uFF1B\u65E0\u6743\u9650\u8D26\u53F7\u4ECD\u4F1A\u88AB\u62D2\u7EDD\u3002":"\u5F53\u524D\u94FE\u63A5/\u8BBF\u95EE\u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u6700\u65B0\u6388\u6743\u94FE\u63A5\u91CD\u65B0\u8FDB\u5165\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09\u3002"}),(0,n.jsxs)("div",{className:"auth-expired-actions",children:[e.loginUrl?(0,n.jsx)("a",{id:"dashboard-one-click-login",className:"auth-login-link primary",href:e.loginUrl,target:"_top",rel:"noopener",children:"\u4E00\u952E\u767B\u5F55"}):null,(0,n.jsx)("button",{id:"auth-expired-dismiss",type:"button",className:t?"secondary":"primary",onClick:e.onClose,children:t?"\u6682\u4E0D\u767B\u5F55":"\u77E5\u9053\u4E86"})]})]})})}function Kn(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e.slice(0,10);try{return new Intl.DateTimeFormat(g.locale==="zh"?"zh-CN":"en-US",{year:"numeric",month:"numeric",day:"numeric"}).format(t)}catch{return e.slice(0,10)}}async function _t(){let e=await fetch("/__selfcheck",{cache:"no-store"}),t=await e.text();if(!e.ok||!t)throw new Error(s("update.healthCheckFailed"));return t}function Vn(e){let{status:t}=e,[o,a]=(0,u.useState)(!1),[r,i]=(0,u.useState)("idle"),[l,m]=(0,u.useState)(!1),[d,c]=(0,u.useState)(!1),[f,p]=(0,u.useState)(""),[R,v]=(0,u.useState)(!1),[w,M]=(0,u.useState)(!1),[x,K]=(0,u.useState)(!1),[V,ae]=(0,u.useState)(!1),[W,Ve]=(0,u.useState)([]),[y,ge]=(0,u.useState)(null),[C,ve]=(0,u.useState)(null),O=(0,u.useRef)(!1),z=(0,u.useRef)(null),We=(0,u.useRef)(null),ze=(0,u.useRef)(null),Gt=()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)};if((0,u.useEffect)(()=>{O.current=!1,i("idle"),m(!1),c(!1),p(""),v(!1),M(!1),K(!1),ae(!1),Ve([]),ge(null),ve(null)},[t?.current,t?.latest]),(0,u.useEffect)(()=>{t&&c(t.versionLookupOk===!1)},[t]),(0,u.useEffect)(()=>{o||v(!1)},[o]),(0,u.useEffect)(()=>()=>Gt(),[]),(0,u.useEffect)(()=>{if(!o)return;let h=T=>{We.current?.contains(T.target)||a(!1)},k=T=>{T.key==="Escape"&&(a(!1),ze.current?.focus())};return document.addEventListener("pointerdown",h),document.addEventListener("keydown",k),()=>{document.removeEventListener("pointerdown",h),document.removeEventListener("keydown",k)}},[o]),!t)return null;let A=t.behind&&!!t.latest,ye=!t.latest,we=A&&t.updateSupported&&!t.localDevInstall&&t.node.ok,qe=t.updateSupported&&!t.localDevInstall&&t.node.ok,N=r==="updating"||r==="restarting",Jt=t.updateCommand??"botmux update",xe=`v${t.current}`,Xt=t.latest?`v${t.latest}`:"",Yt=t.localDevInstall?s("update.localDev"):t.updateSupported?t.node.ok?"":s("update.nodeWarn",{version:t.node.version,required:t.node.required}):s("update.unsupportedInstall"),je=h=>{let k=Date.now(),T=async()=>{try{let q=await fetch("/__selfcheck",{cache:"no-store"}),j=await q.text();if(q.ok&&j&&j!==h){location.reload();return}}catch{}if(Date.now()-k>9e4){O.current=!1,i("error"),p(s("update.restartSlow"));return}z.current=window.setTimeout(()=>{T()},2e3)};z.current=window.setTimeout(()=>{T()},3e3)},Zt=async()=>{if(A){if(!we){a(!1),location.hash="#/settings";return}if(!O.current){O.current=!0,ve(null),c(!1),p("");try{let h=await _t(),k=await De(fetch,i);if(!k.restarted){O.current=!1,i("error"),p(s("update.restartFailed",{detail:k.restartError??"unknown"}));return}je(h)}catch(h){O.current=!1,i("error"),p(h instanceof Error?h.message:String(h))}}}},ke=async(h=!1)=>{if(x)return!V;K(!0),ae(!1);try{let k=await fetch(`/api/update/versions${h?"?refresh=1":""}`,{cache:"no-store"}),T=await k.json().catch(()=>null);if(!T||!Array.isArray(T.versions))throw new Error("Invalid rollback versions response");let q=T.versions.filter(B=>{if(!B||typeof B!="object")return!1;let G=B;return typeof G.version=="string"&&(typeof G.publishedAt=="string"||G.publishedAt===null)}).slice(0,3);Ve(q),ge(B=>q.some(G=>G.version===B)?B:null),M(!0);let j=k.ok&&T.ok===!0;return ae(!j),j}catch{return M(!0),ae(!0),!1}finally{K(!1)}},Qt=async()=>{if(!(!y||!qe||x||O.current)){O.current=!0,ve(y),c(!1),p("");try{let h=await _t();await De(fetch,i,y),je(h)}catch(h){O.current=!1,i("error"),p(h instanceof Error?h.message:String(h))}}},en=async()=>{if(!(l||N)){m(!0),c(!1);try{let h=await e.onRefresh();R&&await ke(!0),c(!h)}finally{m(!1)}}},Ee=r==="updating"?C?s("update.rollbackInstalling",{version:C}):s("update.updating",{command:Jt}):r==="restarting"?C?s("update.rollbackRestarting",{version:C}):s("update.restarting"):r==="error"?C?s("update.rollbackFailed",{detail:f}):s("update.updateFailed",{detail:f}):d?s("update.topbarRefreshFailed"):A?we?s("update.versionUpgradePrompt",{version:Xt}):Yt:t.latest?s("update.upToDate"):s("update.checkUnavailable"),tn=we?r==="error"?s("update.topbarRetry"):r==="idle"?s("update.topbarAction"):s("update.topbarWorking"):s("update.topbarReview"),re=r==="error"||d&&ye?{className:"is-error",symbol:"!"}:A?{className:"has-update",symbol:"\u2191"}:ye?{className:"is-unknown",symbol:"?"}:{className:"is-current",symbol:"\u2713"};return(0,n.jsxs)("div",{ref:We,className:`dashboard-version-control${o?" is-open":""}`,children:[(0,n.jsxs)("button",{ref:ze,type:"button",className:`dashboard-version-chip${A?" has-update":""}${ye?" is-unknown":""}${r==="error"?" is-error":""}`,"aria-haspopup":"dialog","aria-expanded":o,"aria-label":`${xe}. ${Ee}`,title:Ee,onClick:()=>a(h=>!h),children:[(0,n.jsx)("span",{children:xe}),N?(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):(0,n.jsx)("span",{className:`dashboard-version-state ${re.className}`,"aria-hidden":"true",children:re.symbol})]}),o?(0,n.jsxs)("section",{className:"dashboard-version-popover",role:"dialog","aria-modal":"false","aria-labelledby":"dashboard-version-title",children:[(0,n.jsxs)("header",{className:"dashboard-version-popover-head",children:[(0,n.jsx)("strong",{id:"dashboard-version-title",children:s("update.current")}),(0,n.jsxs)("div",{className:"dashboard-version-head-actions",children:[(0,n.jsx)("button",{type:"button",className:`dashboard-version-refresh${l?" is-refreshing":""}`,"aria-label":s(l?"update.topbarRefreshing":"update.topbarRefresh"),title:s(l?"update.topbarRefreshing":"update.topbarRefresh"),disabled:l||x||N,onClick:()=>{en()},children:(0,n.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M13.2 5.7A5.8 5.8 0 1 0 13 10.8"}),(0,n.jsx)("path",{d:"M13.2 2.8v2.9h-2.9"})]})}),(0,n.jsx)("button",{type:"button",className:"dashboard-version-close","aria-label":s("update.topbarClose"),onClick:()=>a(!1),children:"\xD7"})]})]}),(0,n.jsxs)("div",{className:"dashboard-version-popover-body",children:[(0,n.jsxs)("div",{className:"dashboard-version-current",children:[(0,n.jsx)("strong",{children:xe}),(0,n.jsx)("span",{className:re.className,"aria-hidden":"true",children:N?(0,n.jsx)("span",{className:"dashboard-update-spinner"}):re.symbol})]}),(0,n.jsx)("p",{className:`dashboard-version-message${r==="error"||d?" is-error":""}`,role:r==="error"||d?"alert":"status","aria-live":"polite",children:Ee}),(0,n.jsxs)("a",{className:"dashboard-version-release-link",href:"https://github.com/deepcoldy/botmux/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,n.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M8 1.5a6.5 6.5 0 0 0-2.1 12.65c.33.06.45-.14.45-.32v-1.26c-1.84.4-2.23-.78-2.23-.78-.3-.76-.73-.96-.73-.96-.6-.41.05-.4.05-.4.66.05 1 .68 1 .68.59 1 1.54.72 1.92.55.06-.42.23-.72.42-.88-1.47-.17-3.02-.74-3.02-3.28 0-.72.26-1.32.68-1.78-.07-.17-.3-.84.07-1.75 0 0 .56-.18 1.79.68A6.2 6.2 0 0 1 8 4.63a6.2 6.2 0 0 1 1.71.22c1.23-.86 1.79-.68 1.79-.68.37.91.14 1.58.07 1.75.42.46.68 1.06.68 1.78 0 2.55-1.55 3.11-3.03 3.28.24.21.45.61.45 1.23v1.62c0 .18.12.38.46.32A6.5 6.5 0 0 0 8 1.5Z"})}),(0,n.jsx)("span",{children:s("update.changelogViewOnGitHub")})]}),(A||R)&&t.installs.multiple?(0,n.jsxs)("details",{className:"dashboard-version-installs",children:[(0,n.jsx)("summary",{children:s("update.multiInstallWarn")}),(0,n.jsx)("ul",{children:t.installs.entries.map(h=>(0,n.jsx)("li",{children:h.binPath},h.binPath))})]}):null,qe?(0,n.jsxs)("details",{className:"dashboard-version-rollback",open:R,"aria-busy":x,onToggle:h=>{let k=h.currentTarget.open;v(k),k&&!w&&!x&&ke()},children:[(0,n.jsxs)("summary",{children:[(0,n.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,n.jsx)("path",{d:"M8 4.8V8l2.2 1.3"})]}),(0,n.jsx)("span",{children:s("update.rollbackTitle")}),(0,n.jsx)("span",{className:"dashboard-version-rollback-chevron","aria-hidden":"true",children:"\u2304"})]}),(0,n.jsxs)("div",{className:"dashboard-version-rollback-body",children:[x&&W.length===0?(0,n.jsxs)("p",{className:"dashboard-version-rollback-status",role:"status","aria-live":"polite",children:[(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}),s("update.rollbackLoading")]}):null,V?(0,n.jsxs)("p",{className:"dashboard-version-rollback-load-error",role:"alert",children:[(0,n.jsx)("span",{children:s("update.rollbackLoadFailed")}),(0,n.jsx)("button",{type:"button",disabled:x,onClick:()=>{ke(!0)},children:s("update.rollbackRetry")})]}):null,w&&!x&&!V&&W.length===0?(0,n.jsx)("p",{className:"dashboard-version-rollback-status",children:s("update.rollbackEmpty")}):null,W.length>0?(0,n.jsxs)("fieldset",{disabled:N||x||V,children:[(0,n.jsx)("legend",{children:s("update.rollbackHint")}),(0,n.jsx)("div",{className:"dashboard-version-rollback-options",children:W.map(h=>(0,n.jsxs)("label",{className:y===h.version?"is-selected":"",children:[(0,n.jsx)("input",{type:"radio",name:"dashboard-rollback-version",value:h.version,checked:y===h.version,onChange:()=>ge(h.version)}),(0,n.jsxs)("strong",{children:["v",h.version]}),h.publishedAt?(0,n.jsx)("time",{dateTime:h.publishedAt,children:Kn(h.publishedAt)}):null]},h.version))})]}):null,y?(0,n.jsxs)("p",{id:"dashboard-version-rollback-risk",className:"dashboard-version-rollback-risk",role:"note",children:[(0,n.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M7.1 2.3 1.8 12a1 1 0 0 0 .9 1.5h10.6a1 1 0 0 0 .9-1.5L8.9 2.3a1 1 0 0 0-1.8 0Z"}),(0,n.jsx)("path",{d:"M8 5.5v3.6M8 11.6h.01"})]}),(0,n.jsxs)("span",{children:[s("update.rollbackRisk",{version:y})," ",(0,n.jsx)("a",{href:`https://github.com/deepcoldy/botmux/releases/tag/v${encodeURIComponent(y)}`,target:"_blank",rel:"noopener noreferrer","aria-label":s("update.rollbackReleaseNotesA11y",{version:y}),children:s("update.rollbackReleaseNotes",{version:y})})]})]}):null,W.length>0?(0,n.jsxs)("button",{type:"button",className:"dashboard-version-rollback-action",disabled:!y||x||V||N,"aria-describedby":y?"dashboard-version-rollback-risk":void 0,onClick:()=>{Qt()},children:[N&&C?(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,y?r==="error"&&C===y?s("update.rollbackRetry"):s("update.rollbackAction",{version:y}):s("update.rollbackSelect")]}):null]})]}):null]}),A&&!R&&!C?(0,n.jsxs)("footer",{className:"dashboard-version-popover-actions",children:[(0,n.jsx)("button",{type:"button",className:"dashboard-version-secondary",onClick:()=>a(!1),children:N?s("update.topbarClose"):s("update.topbarLater")}),(0,n.jsxs)("button",{type:"button",className:"dashboard-version-primary",disabled:N,onClick:()=>{Zt()},children:[N?(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,tn]})]}):null]}):null]})}function Wn(){let e=Un(),[t,o]=(0,u.useState)(!1),[a,r]=(0,u.useState)(!1),[i,l]=(0,u.useState)(!1),m=(0,u.useRef)(e.attention),d=(0,u.useRef)(null),c=()=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null)};(0,u.useEffect)(()=>{let p=()=>o(!0);return window.addEventListener(ce,p),()=>window.removeEventListener(ce,p)},[]),(0,u.useEffect)(()=>{let p=()=>r(!0);return window.addEventListener(_e,p),oe&&r(!0),()=>window.removeEventListener(_e,p)},[]),(0,u.useEffect)(()=>()=>c(),[]),(0,u.useEffect)(()=>{let p=m.current;if(m.current=e.attention,e.attention===0){c(),l(!1);return}p!==0||document.body.classList.contains("theme-menu-open")||(l(!0),c(),d.current=window.setTimeout(()=>{d.current=null,l(!1)},4e3))},[e.attention]);let f=()=>{oe=!1,r(!1)};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"aurora","aria-hidden":"true",children:[(0,n.jsx)("i",{className:"a1"}),(0,n.jsx)("i",{className:"a2"}),(0,n.jsx)("i",{className:"a3"})]}),(0,n.jsxs)("div",{className:"app-shell",children:[(0,n.jsxs)("header",{className:"topbar",children:[(0,n.jsx)("div",{className:"topbar-left",children:(0,n.jsxs)("div",{className:"topbar-brand-block",children:[(0,n.jsxs)("a",{className:"brand",href:"#/",children:[(0,n.jsx)("span",{className:"brand-mark","aria-hidden":"true",children:(0,n.jsx)("img",{className:"brand-logo-img",src:"/assets/brand-logo.png",alt:"",decoding:"sync",loading:"eager",fetchPriority:"high"})}),(0,n.jsx)("strong",{className:"brand-wordmark",children:"Botmux"}),(0,n.jsx)("span",{className:"brand-product",children:"Dashboard"})]}),(0,n.jsx)(Vn,{status:Wt,onRefresh:()=>Ke(!0)})]})}),(0,n.jsxs)("div",{className:"topbar-actions",children:[(0,n.jsx)(_n,{summary:e,autoOpen:i}),(0,n.jsxs)("div",{className:"topbar-tool-group",children:[(0,n.jsx)("button",{type:"button",className:"topbar-locale-toggle","aria-label":g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",title:g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",onClick:()=>zn(g.locale==="zh"?"en":"zh"),children:g.locale==="zh"?"CN":"EN"}),(0,n.jsx)(In,{}),(0,n.jsxs)("a",{className:"topbar-docs-link",href:"https://bytedance.aiforce.cloud/app/app_4k9smq6rdxher/",target:"_blank",rel:"noopener noreferrer",title:s("nav.docs"),"aria-label":s("nav.docs"),children:[Q((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,n.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})),(0,n.jsx)("span",{children:s("nav.docs")})]})]}),(0,n.jsxs)("span",{className:"topbar-owner",title:F?.name,"aria-label":F?.name??"Owner",children:[(0,n.jsx)("span",{className:"topbar-owner-placeholder","aria-hidden":"true",children:Q((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"8",cy:"6",r:"2.4"}),(0,n.jsx)("path",{d:"M3.7 13c.7-2.5 2.2-3.7 4.3-3.7s3.6 1.2 4.3 3.7"})]}))}),F?.avatarUrl?(0,n.jsx)("img",{className:"topbar-owner-img",src:F.avatarUrl,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:p=>{p.currentTarget.remove()}}):null]})]})]}),(0,n.jsxs)("div",{className:"chrome-body",children:[(0,n.jsxs)("aside",{className:"sidebar",children:[H?(0,n.jsxs)("div",{className:"sidebar-create-actions",children:[(0,n.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>Re(),children:[Q((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"}),(0,n.jsx)("path",{d:"M8 4.9v4.2M5.9 7h4.2"})]})),(0,n.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createSession")})]}),(0,n.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>{at()},children:[Q((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.5",y:"6",width:"11",height:"7.5",rx:"2"}),(0,n.jsx)("circle",{cx:"5.8",cy:"9.75",r:"1"}),(0,n.jsx)("circle",{cx:"10.2",cy:"9.75",r:"1"}),(0,n.jsx)("path",{d:"M8 6V3.8M6.3 1.9h3.4"})]})),(0,n.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createBot")})]})]}):null,(0,n.jsx)("nav",{className:"sidebar-nav","aria-label":"Dashboard",children:Cn().filter(p=>H||!p.manage).map(p=>(0,n.jsxs)("a",{href:p.href,"data-route":p.id,className:[Dn(p),p.plugin?"sidebar-plugin-item":""].filter(Boolean).join(" ")||void 0,title:p.plugin?It(p):void 0,children:[Q(p.icon),(0,n.jsx)("span",{className:"sidebar-nav-label",children:It(p)}),p.id==="settings"&&te?(0,n.jsx)(ot,{className:"nav-update-tip",label:$t(),trigger:(0,n.jsx)("span",{className:"nav-update-dot","aria-hidden":"true"}),preventClick:!1,focusable:!1,children:$t()}):null]},p.id))})]}),(0,n.jsxs)("div",{className:"workspace",children:[(0,n.jsx)("dialog",{id:"create-session-modal",className:"create-session-modal"}),(0,n.jsx)(rt,{open:t,onClose:()=>o(!1)}),(0,n.jsx)("main",{id:"root",ref:Bn})]})]})]}),(0,n.jsx)(Fn,{open:a,loginUrl:He(Fe,location.hash),onClose:f})]})}function E(){zt?.render((0,n.jsx)(Wn,{}))}function zn(e){g.setLocale(e),Xn(e)}var oe=!1;function qn(e){let t=!!He(e,location.hash),o=t&&Fe!==e;t&&(Fe=e),oe&&o&&E(),!oe&&(oe=!0,window.dispatchEvent(new Event(_e)))}var Ie;function jn(){let e=document.getElementById("readonly-toast");e||(e=document.createElement("div"),e.id="readonly-toast",e.style.cssText="position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;border-radius:var(--radius-lg);font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)",document.body.appendChild(e)),e.textContent="\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u6B64\u64CD\u4F5C\u9700\u8981\u6388\u6743\u94FE\u63A5\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09",e.style.display="block",Ie&&window.clearTimeout(Ie),Ie=window.setTimeout(()=>{e.style.display="none"},4e3)}var Gn=window.fetch.bind(window);window.fetch=async function(...t){let o=await Gn(...t);if(o.status===401){let a=o.headers.get("x-botmux-login-url")??void 0,r=(t[1]?.method??"GET").toUpperCase();a||(r==="GET"||r==="HEAD")&&!$e?qn(a):jn()}return o};async function Jn(){try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();H=!!t.authed,g.authed=H,$e=!!(t.settings&&t.settings.publicReadOnly),g.publicReadOnly=$e;let o=jt()??le(t.lang);o&&g.setLocale(o)}}catch{}}async function Ft(){try{let e=await fetch("/api/plugins/dashboard");if(!e.ok)return;let t=await e.json();ee=(Array.isArray(t?.plugins)?t.plugins:[]).filter(a=>a.pinned===!0&&typeof a.route=="string").map(a=>({id:`plugin:${a.pluginId}:${a.id}`,href:a.route,label:a.displayName||a.pluginId,manage:!0,plugin:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M5.2 2.2h5.6v3.1l1.7 1.7-1.4 1.4-1-1v6.4H5.9V7.4l-1 1L3.5 7l1.7-1.7z"}),(0,n.jsx)("path",{d:"M8 13.8v1"})]})})),E()}catch{}}async function Xn(e){if(H)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}async function Ke(e=!1){if(!H)return!1;try{let t=await fetch(`/api/update/status${e?"?refresh=1":""}`,{cache:"no-store"});if(!t.ok)return!1;let o=await t.json();Wt=o;let a=Array.isArray(o.cliUpdates)?o.cliUpdates.find(r=>r?.updateAvailable===!0&&r?.latest):null;return o.behind===!0&&o.latest?(te=!0,fe="botmux",ne=String(o.latest)):a?(te=!0,fe="runtime",ne=String(a.latest)):(te=!1,fe=null,ne=null),E(),o.versionLookupOk!==!1}catch{return!1}}function Yn(e){e.innerHTML='<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)"><h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">\u6B64\u9875\u9700\u8981\u6388\u6743\u94FE\u63A5</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">\u4F60\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u7BA1\u7406\u9875\uFF08\u7FA4\u89D2\u8272 / Profiles / Bot \u914D\u7F6E / \u56E2\u961F / Webhook\uFF09\u9700\u8981\u6388\u6743\u94FE\u63A5\u3002\u8FD0\u884C <code>botmux dashboard</code> \u83B7\u53D6\u6700\u65B0\u94FE\u63A5\u540E\u5373\u53EF\u7BA1\u7406\u3002</p><a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-lg);text-decoration:none;font-size:14px">\u8FD4\u56DE\u603B\u89C8</a></section>'}async function Ue(){let e=vt(D),t=location.hash||"#/";Vt=t,E();let o=lt(t);if(o){window.location.replace(o);return}if(!H&&Sn.some(a=>t.startsWith("#/"+a))){Yn(Ae()),D.rerenderOnUiChange=!0;return}if(t.startsWith("#/v3")){window.location.replace(`#/workflows${t.slice(4)}`);return}else if(t.startsWith("#/legacy-workflow")){window.location.replace("#/workflows");return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(t)){window.location.replace("#/workflows");return}if(t.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${t.slice(15)}`);return}try{let a=mt(t);await yt(D,e,Ae(),a?a.load:ft,{rerenderOnUiChange:a?a.rerenderOnUiChange:!1}),e===D.seq&&H&&An()}catch(a){if(e!==D.seq||kt(a,{href:window.location.href,hash:t,getSessionStorage:()=>window.sessionStorage,reload:()=>window.location.reload()}))return;Ae().innerHTML=`<section class="page"><div class="empty">Dashboard route failed: ${Je(String(a))}</div></section>`,D.pageDispose=null,D.rerenderOnUiChange=!0}}function Zn(){try{let e=JSON.parse(window.localStorage.getItem(qt)??"null");if(e?.avatarUrl)return{avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0}}catch{}return null}function Qn(){F=Zn(),E(),fetch("/api/owner-profile").then(e=>e.ok?e.json():null).then(e=>{if(!(!e?.ok||!e.avatarUrl)){F={avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0};try{window.localStorage.setItem(qt,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}E()}}).catch(()=>{})}(async()=>{let e=st(window.location.href);e&&window.history.replaceState(window.history.state,"",e),g.init(),Ut();let t=document.getElementById("app-root");if(!t)throw new Error("missing dashboard app root");St(t),Dt(),zt=(0,Kt.createRoot)(t),E(),g.on(()=>{E(),D.rerenderOnUiChange&&Ue()}),ie.on(()=>{E()}),await Jn(),E(),window.addEventListener(et,()=>{Ft()}),Ft(),Ke(),window.setInterval(()=>{document.hidden||Ke()},30*6e4),Qn();try{await Ge()}catch(o){console.error("botmux dashboard bootstrap failed",o),ie.setOnline(!1)}Ye().then(E),dt().then(E),window.addEventListener("hashchange",()=>{Ut()||Ue()}),Ue()})();export{qn as showAuthExpiredOverlay,jn as showReadOnlyToast};
|
|
1
|
+
import{a as pt,b as ht}from"./chunks/chunk-DCS35UMD.js";import{b as Te,d as dt,e as ct,g as ut}from"./chunks/chunk-AGCPF6MT.js";import{a as ot}from"./chunks/chunk-BD3PZGH2.js";import{a as ue,b as it,c as lt}from"./chunks/chunk-3UE7S77S.js";import{i as at,j as st}from"./chunks/chunk-5CJMHTT4.js";import{C as et,E as tt,H as nt,I as ce,a as le,b as Ye,e as de,t as g,u as s,v as Ze,w as Qe}from"./chunks/chunk-MFQPCVHY.js";import{a as sn,b as ln,c as dn,d as rt}from"./chunks/chunk-5THX4DI2.js";import{c as X}from"./chunks/chunk-7SZRL6FY.js";var zt=X(ln(),1),qt=X(dn(),1),p=X(sn(),1);var Ne="botmux:close-theme-menu",cn={palette:'<circle cx="13.5" cy="6.5" r=".5" fill="currentColor"/><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"/><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"/><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"/><path d="M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',sun:'<circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/>',moon:'<path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/>',cpu:'<path d="M12 20v2"/><path d="M12 2v2"/><path d="M17 20v2"/><path d="M17 2v2"/><path d="M2 12h2"/><path d="M2 17h2"/><path d="M2 7h2"/><path d="M20 12h2"/><path d="M20 17h2"/><path d="M20 7h2"/><path d="M7 20v2"/><path d="M7 2v2"/><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="8" y="8" width="8" height="8" rx="1"/>',zap:'<path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"/>',chevron:'<path d="m6 9 6 6 6-6"/>'},ft=[{labelKey:"theme.base",options:[{value:"system",labelKey:"status.system",icon:"monitor"},{value:"light",labelKey:"status.light",icon:"sun"},{value:"dark",labelKey:"status.dark",icon:"moon"}]},{labelKey:"theme.skins",options:[{value:"cyber",labelKey:"skin.cyber",icon:"cpu"},{value:"fallout",labelKey:"skin.fallout",icon:"zap"}]}],mt=ft.flatMap(e=>e.options),T=!1,Y=null,Z=null,un=70,pn=120;function Se(e){return`<svg class="tm-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${cn[e]??""}</svg>`}function hn(e){return e.replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""})[t])}function bt(){let e=document.getElementById("theme-menu"),t=document.getElementById("theme-menu-btn"),o=document.getElementById("theme-menu-pop");if(!e||!t||!o||e.dataset.themeMenuInit==="1")return;e.dataset.themeMenuInit="1",o.innerHTML=ft.map(c=>`<div class="tm-group" data-label-key="${c.labelKey}"></div>`+c.options.map(f=>`<button type="button" class="tm-item" role="option" data-value="${f.value}"><span class="tm-ic">${Se(f.icon)}</span><span class="tm-label" data-label-key="${f.labelKey}"></span></button>`).join("")).join("");let r=()=>{if(!T)return;let c=t.getBoundingClientRect(),f=12,h=Math.min(Math.max(o.offsetWidth||216,216),Math.max(0,window.innerWidth-f*2)),M=f+h/2,y=window.innerWidth-f-h/2,x=c.left+c.width/2,L=Math.min(Math.max(x,M),Math.max(M,y)),k=Math.max(180,window.innerHeight-c.bottom-20);o.style.setProperty("--theme-menu-pop-left",`${Math.round(L)}px`),o.style.setProperty("--theme-menu-pop-top",`${Math.round(c.bottom+8)}px`),o.style.setProperty("--theme-menu-pop-max-height",`${Math.round(k)}px`)},a=c=>{Y!=null&&(window.clearTimeout(Y),Y=null),Z!=null&&(window.clearTimeout(Z),Z=null),T=c,t.setAttribute("aria-expanded",String(T)),document.body.classList.toggle("theme-menu-open",T),T?(o.hidden=!1,r(),window.requestAnimationFrame(()=>e.classList.add("open"))):(e.classList.remove("open"),Z=window.setTimeout(()=>{Z=null,T||(o.hidden=!0)},pn))},i=()=>a(!0),l=()=>{Y==null&&(Y=window.setTimeout(()=>a(!1),un))},m=c=>{c.pointerType!=="touch"&&i()},d=c=>{c.pointerType!=="touch"&&l()};e.addEventListener("pointerenter",m),e.addEventListener("pointerleave",d),o.addEventListener("pointerenter",m),o.addEventListener("pointerleave",d),t.addEventListener("click",c=>{c.stopPropagation(),a(!T)}),t.addEventListener("focus",()=>{t.matches(":focus-visible")&&i()}),e.addEventListener("focusout",c=>{let f=c.relatedTarget;(!(f instanceof Node)||!e.contains(f))&&l()}),o.addEventListener("click",c=>{let f=c.target.closest(".tm-item");f&&(g.setTheme(f.dataset.value??"system"),a(!1))}),document.addEventListener("click",c=>{T&&!e.contains(c.target)&&a(!1)}),document.addEventListener("pointermove",c=>{if(!T||c.pointerType==="touch")return;let f=c.target;f instanceof Node&&e.contains(f)||l()}),document.addEventListener("keydown",c=>{c.key==="Escape"&&T&&a(!1)}),window.addEventListener("resize",r),window.addEventListener("scroll",r,!0),window.addEventListener(Ne,()=>{T&&a(!1)}),Pe()}function Pe(){let e=document.getElementById("theme-menu-btn");if(!e)return;let t=mt.find(o=>o.value===g.theme)??mt[0];e.innerHTML=`<span class="tm-ic">${Se("palette")}</span><span class="tm-current">${hn(s(t.labelKey))}</span><span class="tm-chev">${Se("chevron")}</span>`,document.querySelectorAll("#theme-menu-pop [data-label-key]").forEach(o=>{o.textContent=s(o.dataset.labelKey??"")}),document.querySelectorAll("#theme-menu-pop .tm-item").forEach(o=>{o.classList.toggle("active",o.dataset.value===g.theme)})}function b(e,t,o,r,a=!1){return{id:e,routePrefix:t,rerenderOnUiChange:a,load:async()=>(await o())[r]}}var mn=[{id:"plugins",routePrefix:"#/plugins",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/plugin-page-VEGTCEAS.js");return t=>e.renderPluginPage(t)}},b("workflows","#/workflows",()=>import("./chunks/v3-page-2LMF3WWR.js"),"renderV3RunsPage"),b("groups","#/groups",()=>import("./chunks/groups-page-FHOKYXMW.js"),"renderGroupsPage"),b("settings","#/settings",()=>import("./chunks/settings-page-QUZDQARR.js"),"renderSettingsPage"),b("bot-defaults","#/bot-defaults",()=>import("./chunks/bot-defaults-page-LTVOUDIS.js"),"renderBotDefaultsPage"),b("skills","#/skills",()=>import("./chunks/skills-page-IFY7AEND.js"),"renderSkillsPage"),b("connectors-logs","#/connectors/logs",()=>import("./chunks/connectors-page-5KWDIMKC.js"),"renderConnectorsLogsPage"),b("webhook-logs","#/webhook-logs",()=>import("./chunks/connectors-page-5KWDIMKC.js"),"renderConnectorsLogsPage"),b("connectors","#/connectors",()=>import("./chunks/connectors-page-5KWDIMKC.js"),"renderConnectorsPage"),b("team-manage","#/team/manage",()=>import("./chunks/team-federation-page-C7FJQPFZ.js"),"renderTeamManagePage"),b("team","#/team",()=>import("./chunks/team-federation-page-C7FJQPFZ.js"),"renderTeamFederationPage"),b("roles-profile","#/roles/profile",()=>import("./chunks/roles-page-56VWM6CD.js"),"renderRoleProfilesPage"),b("roles","#/roles",()=>import("./chunks/roles-page-56VWM6CD.js"),"renderRolesPage"),b("schedules","#/schedules",()=>import("./chunks/schedules-page-S5K6U4EO.js"),"renderSchedulesPage"),b("whiteboards","#/whiteboards",()=>import("./chunks/whiteboards-page-3XC6QRMY.js"),"renderWhiteboardsPage"),b("monitoring","#/monitoring",()=>import("./chunks/monitoring-page-LHM55YWN.js"),"renderMonitoringPage"),b("sessions","#/sessions",()=>import("./chunks/sessions-page-WBP4N7D2.js"),"renderSessionsPage"),b("monitor-room","#/monitor-room",()=>import("./chunks/monitor-room-YNVBAGR6.js"),"renderMonitorRoomPage",!0),b("office","#/office",()=>import("./chunks/office-page-ATXVP7PW.js"),"renderOfficePage"),b("insights","#/insights",()=>import("./chunks/insights-page-T2ZX2RWL.js"),"renderInsightsPage")];function gt(e){return mn.find(t=>t.exact?e===t.routePrefix:e.startsWith(t.routePrefix))}async function vt(){let e=await import("./chunks/overview-page-QYI3KBDD.js");return t=>e.renderOverviewPage(t)}function wt(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function xt(e){let t=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),t}function yt(e,t){return t===e.seq}async function kt(e,t,o,r,a={}){let i=await r();if(!yt(e,t))return!1;let l=i(o);return yt(e,t)?(e.pageDispose=typeof l=="function"?l:null,e.rerenderOnUiChange=a.rerenderOnUiChange??!0,!0):(typeof l=="function"&&l(),!1)}var fn="botmux.dashboard.stale-chunk-reload.v1:",bn=/Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|dynamically imported module/i,gn=/\b(?:https?:\/\/|\/assets\/)\S+?\.js\b/;function Et(e){return e instanceof Error?`${e.name}: ${e.message}`:String(e)}function Rt(e){return bn.test(Et(e))}function vn(e,t){let a=Et(e).match(gn)?.[0]||`${t.href}|${t.hash}`;return`${fn}${a.slice(-240)}`}function yn(e,t){if(!Rt(e))return!1;let o=vn(e,t);try{if(t.sessionStorage.getItem(o)==="1")return!1;t.sessionStorage.setItem(o,"1")}catch{return!1}return t.reload(),!0}function Mt(e,t){if(!Rt(e))return!1;let o;try{o=t.getSessionStorage()}catch{return!1}return yn(e,{...t,sessionStorage:o})}var wn=new Set(["auto","scroll","overlay"]),pe=28,P=3,$=6,Lt=!1,Ot=null,Tt=new WeakMap,C=new Map,St=null,Nt=null,Oe=0,Ce=0,Q=null;function xn(e){return e.closest("dialog[open]")??document.body}function kn(e){let t=Tt.get(e);if(t?.isConnected)return t;let o=document.createElement("div");return o.className="floating-scrollbar-layer",o.setAttribute("aria-hidden","true"),e.appendChild(o),Tt.set(e,o),o}function En(e){return wn.has(e)}function He(e,t){let o=getComputedStyle(e),r=t==="y"?o.overflowY:o.overflowX;return En(r)?t==="y"?e.scrollHeight-e.clientHeight>1:e.scrollWidth-e.clientWidth>1:!1}function Rn(e){if(!e.isConnected||e.closest("[hidden]"))return!1;let t=e.getBoundingClientRect();return t.width>0&&t.height>0&&t.bottom>0&&t.right>0&&t.top<window.innerHeight&&t.left<window.innerWidth}function Mn(e){return[e,...Array.from(e.querySelectorAll("*"))].filter(o=>Rn(o)&&(He(o,"x")||He(o,"y")))}function he(e){e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.track.remove()}function Ln(e,t){let o=C.get(e);o||(o={},C.set(e,o));let r=o[t],a=xn(e),i=kn(a);if(r?.track.parentElement===i)return r;r&&he(r);let l=document.createElement("div"),m=document.createElement("div");l.className=`floating-scrollbar floating-scrollbar-${t}`,m.className="floating-scrollbar-thumb",l.appendChild(m),i.appendChild(l);let d={target:e,axis:t,track:l,thumb:m,hideTimer:void 0};return o[t]=d,d}function De(e,t=!1){e.track.classList.add("is-visible"),e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.hideTimer=t?void 0:window.setTimeout(()=>{e.track.classList.remove("is-visible","is-active"),e.hideTimer=void 0},900)}function Tn(e){let{target:t,axis:o,track:r,thumb:a}=e,i=t.getBoundingClientRect();if(o==="y"){let M=Math.max(0,i.top+P),y=Math.min(window.innerHeight,i.bottom-P),x=Math.max(0,y-M);if(x<pe||t.scrollHeight<=t.clientHeight){r.hidden=!0;return}let L=Math.max(pe,Math.round(x*t.clientHeight/t.scrollHeight)),k=Math.max(1,t.scrollHeight-t.clientHeight),V=Math.round((x-L)*t.scrollTop/k);r.hidden=!1,r.style.left=`${Math.min(window.innerWidth-$-P,Math.max(P,i.right-$-P))}px`,r.style.top=`${M}px`,r.style.width=`${$}px`,r.style.height=`${x}px`,a.style.width="100%",a.style.height=`${L}px`,a.style.transform=`translate3d(0, ${V}px, 0)`;return}let l=Math.max(0,i.left+P),m=Math.min(window.innerWidth,i.right-P),d=Math.max(0,m-l);if(d<pe||t.scrollWidth<=t.clientWidth){r.hidden=!0;return}let c=Math.max(pe,Math.round(d*t.clientWidth/t.scrollWidth)),f=Math.max(1,t.scrollWidth-t.clientWidth),h=Math.round((d-c)*t.scrollLeft/f);r.hidden=!1,r.style.left=`${l}px`,r.style.top=`${Math.min(window.innerHeight-$-P,Math.max(P,i.bottom-$-P))}px`,r.style.width=`${d}px`,r.style.height=`${$}px`,a.style.width=`${c}px`,a.style.height="100%",a.style.transform=`translate3d(${h}px, 0, 0)`}function F(){Oe||(Oe=window.requestAnimationFrame(()=>{Oe=0,Nn()}))}function Sn(){Ce||(Ce=window.setTimeout(()=>{Ce=0,F()},120))}function Nn(){let e=Ot;if(!e)return;let t=new Set(Mn(e));for(let[o,r]of C)t.has(o)||(r.x&&he(r.x),r.y&&he(r.y),C.delete(o));for(let o of t){let r=o===Q;for(let a of["x","y"]){let i=C.get(o);if(!He(o,a)){let m=i?.[a];m&&(he(m),delete i?.[a]);continue}let l=Ln(o,a);Tn(l),r&&De(l,!0)}}}function Pn(e){if(!(e instanceof HTMLElement))return;let t=C.get(e);if(t)for(let o of Object.values(t))o&&(o.track.classList.add("is-active"),De(o))}function On(e){for(let t=e;t;t=t.parentElement)if(t instanceof HTMLElement&&C.has(t))return t;return null}function Pt(e){if(Q===e)return;let t=Q?C.get(Q):void 0;if(Q=e,t)for(let r of Object.values(t))r?.track.classList.remove("is-visible");let o=e?C.get(e):void 0;if(o)for(let r of Object.values(o))r&&De(r,!0)}function Ct(e){Lt||(Lt=!0,Ot=e,document.documentElement.classList.add("floating-scrollbars-on"),St=typeof ResizeObserver>"u"?null:new ResizeObserver(F),St?.observe(e),Nt=new MutationObserver(t=>{for(let o of t){let r=o.target;if(!(r instanceof Element&&r.closest(".floating-scrollbar-layer"))){Sn();return}}}),Nt.observe(e,{attributes:!0,attributeFilter:["class","style","hidden","open"],childList:!0,subtree:!0}),document.addEventListener("scroll",t=>{Pn(t.target),F()},!0),window.addEventListener("resize",F),window.addEventListener("hashchange",F),document.addEventListener("pointermove",t=>{Pt(On(document.elementFromPoint(t.clientX,t.clientY)))}),document.addEventListener("pointerleave",()=>Pt(null)),F())}var Ht=!1,_=null,me=null,W=null;function At(){if(_)return _;let e=document.createElement("div");return e.className="icon-tip",e.setAttribute("role","tooltip"),e.style.display="none",document.body.appendChild(e),_=e,e}function Cn(e){let t=At(),o=at(e,document.body);return t.parentNode!==o&&o.appendChild(t),t}function Hn(e){let t=At(),o=e.getBoundingClientRect(),r=t.offsetWidth,a=t.offsetHeight,i=8,l=o.top<a+i+4,m=o.left+o.width/2-r/2;m=Math.min(Math.max(m,6),window.innerWidth-r-6);let d=l?o.bottom+i:o.top-a-i;t.style.left=`${Math.round(m)}px`,t.style.top=`${Math.round(d)}px`,t.dataset.placement=l?"bottom":"top"}function ee(){W&&(clearTimeout(W),W=null),me=null,_&&(_.style.display="none",_.classList.remove("show"))}function Dt(e){let t=e.getAttribute("data-tip");if(!t)return;me=e;let o=Cn(e);o.textContent=t,o.style.display="block",o.classList.remove("show"),Hn(e),requestAnimationFrame(()=>{me===e&&o.classList.add("show")})}function Ae(e){return e instanceof Element?e.closest("[data-tip]"):null}function Bt(){Ht||typeof document>"u"||(Ht=!0,document.addEventListener("pointerover",e=>{let t=Ae(e.target);!t||t===me||(W&&clearTimeout(W),W=setTimeout(()=>Dt(t),120))}),document.addEventListener("pointerout",e=>{let t=Ae(e.target);if(!t)return;let o=e.relatedTarget instanceof Element?e.relatedTarget:null;o&&(o===t||t.contains(o))||ee()}),document.addEventListener("focusin",e=>{let t=Ae(e.target);t&&Dt(t)}),document.addEventListener("focusout",ee),document.addEventListener("click",ee,!0),window.addEventListener("scroll",ee,!0),window.addEventListener("resize",ee))}async function It(e){let t=await e.json().catch(()=>null);return t&&typeof t=="object"?t:{}}function Ut(e,t){let o=t.detail??t.error;return new Error(typeof o=="string"?o:`HTTP ${e.status}`)}async function Be(e,t=()=>{},o){t("updating");let r=await e(o?"/api/update/rollback":"/api/update/run",o?{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({version:o})}:{method:"POST"}),a=await It(r);if(!r.ok||a.ok===!1)throw Ut(r,a);if(a.ok!==!0||typeof a.oldVersion!="string"||typeof a.newVersion!="string"||typeof a.changed!="boolean")throw new Error("Invalid update response");if(o&&(a.newVersion!==o||a.changed!==!0))throw new Error("Invalid rollback response");let i={oldVersion:a.oldVersion,newVersion:a.newVersion,changed:a.changed,restarted:!1};if(t("restarting"),o)return{...i,restarted:!0};let l=await e("/api/update/restart",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({update:{oldVersion:i.oldVersion,newVersion:i.newVersion}})}),m=await It(l);if(!l.ok||m.ok===!1)return{...i,restarted:!1,restartError:Ut(l,m).message};if(m.ok!==!0)throw new Error("Invalid restart response");return m.alreadyScheduled===!0?{...i,restarted:!0,alreadyScheduled:!0}:{...i,restarted:!0}}function Ie(e,t){if(e)try{let o=new URL(e);if(!["http:","https:"].includes(o.protocol)||o.username||o.password)return;let r=t.startsWith("#/")&&t.length<=4096&&!/[\u0000-\u001f\u007f]/.test(t)?t:"#/";return o.searchParams.set("next",`/${r}`),o.toString()}catch{return}}var n=X(rt(),1),Dn=["roles","role-profiles","bot-defaults","skills","plugins","team","connectors","insights","whiteboards"],$t=[{id:"overview",href:"#/",labelKey:"nav.overview",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"1.5",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,n.jsx)("rect",{x:"9.1",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,n.jsx)("rect",{x:"1.5",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"}),(0,n.jsx)("rect",{x:"9.1",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"})]})},{id:"sessions",href:"#/sessions",labelKey:"nav.sessions",icon:(0,n.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"})},{id:"groups",href:"#/groups",labelKey:"nav.groups",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"5.6",cy:"5.8",r:"2.4"}),(0,n.jsx)("circle",{cx:"11",cy:"6.8",r:"1.9"}),(0,n.jsx)("path",{d:"M1.8 13.2c.5-2.4 2-3.6 3.8-3.6s3.3 1.2 3.8 3.6M9.8 12.6c.4-1.7 1.5-2.6 2.8-2.6 1 0 1.9.5 2.4 1.6"})]})},{id:"roles",href:"#/roles",labelKey:"nav.roles",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M8 1.8l5.2 2v3.4c0 3.4-2.2 5.9-5.2 7-3-1.1-5.2-3.6-5.2-7V3.8z"}),(0,n.jsx)("path",{d:"M5.8 8l1.6 1.6 2.8-3"})]})},{id:"monitoring",href:"#/monitoring",labelKey:"nav.monitoring",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M2 9.2h2.3l1.3-4.8 2.5 8.4 1.8-5.1h4.1"}),(0,n.jsx)("path",{d:"M2 2.5h12v11H2z"})]})},{id:"insights",href:"#/insights",labelKey:"nav.insights",manage:!0,icon:(0,n.jsx)(n.Fragment,{children:(0,n.jsx)("path",{d:"M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"})})},{id:"workflows",href:"#/workflows",labelKey:"nav.workflows",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"3.4",cy:"3.6",r:"1.9"}),(0,n.jsx)("circle",{cx:"3.4",cy:"12.4",r:"1.9"}),(0,n.jsx)("circle",{cx:"12.6",cy:"8",r:"1.9"}),(0,n.jsx)("path",{d:"M5.2 4.4l5.6 2.8M5.2 11.6l5.6-2.8"})]})},{id:"schedules",href:"#/schedules",labelKey:"nav.schedules",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,n.jsx)("path",{d:"M8 4.5V8l2.4 1.6"})]})},{id:"whiteboards",href:"#/whiteboards",labelKey:"nav.whiteboards",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,n.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})},{id:"office",href:"#/office",labelKey:"nav.office",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"3",y:"4",width:"10",height:"7",rx:"2"}),(0,n.jsx)("circle",{cx:"6",cy:"7.5",r:"1"}),(0,n.jsx)("circle",{cx:"10",cy:"7.5",r:"1"}),(0,n.jsx)("path",{d:"M8 4V2M4.5 11v2M11.5 11v2"})]})},{id:"bot-defaults",href:"#/bot-defaults",labelKey:"nav.botDefaults",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.5",y:"5",width:"11",height:"8",rx:"2"}),(0,n.jsx)("circle",{cx:"5.8",cy:"9",r:"1"}),(0,n.jsx)("circle",{cx:"10.2",cy:"9",r:"1"}),(0,n.jsx)("path",{d:"M8 5V2.5M5.5 13v1.2M10.5 13v1.2"})]})},{id:"skills",href:"#/skills",labelKey:"nav.skills",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M3 2.5h10v3H3zM3 7h10v6.5H3z"}),(0,n.jsx)("path",{d:"M5.4 9.2h5.2M5.4 11.2h3.8"})]})},{id:"plugins",href:"#/plugins",label:"\u63D2\u4EF6",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M6.4 1.8h3.2v3h2.8v3.2H9.6v2.8H6.4V8H3.6V4.8h2.8z"}),(0,n.jsx)("path",{d:"M2.2 11.8h11.6v2.4H2.2z"})]})},{id:"team",href:"#/team",labelKey:"nav.team",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,n.jsx)("path",{d:"M1.8 8h12.4M8 1.8c-2 1.8-2 10.6 0 12.4 2-1.8 2-10.6 0-12.4z"})]})},{id:"connectors",href:"#/connectors",labelKey:"nav.connectors",manage:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"}),(0,n.jsx)("rect",{x:"3.5",y:"6.5",width:"9",height:"7",rx:"2"})]})},{id:"settings",href:"#/settings",labelKey:"nav.settings",icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M8 1.75 9.35 2.05 10 3.28l1.38.3 1.04-.96.96.96-.96 1.04.3 1.38 1.23.65L14.25 8l-.3 1.35-1.23.65-.3 1.38.96 1.04-.96.96-1.04-.96-1.38.3-.65 1.23L8 14.25l-1.35-.3L6 12.72l-1.38-.3-1.04.96-.96-.96.96-1.04-.3-1.38-1.23-.65L1.75 8l.3-1.35 1.23-.65.3-1.38-.96-1.04.96-.96 1.04.96 1.38-.3.65-1.23z"}),(0,n.jsx)("circle",{cx:"8",cy:"8",r:"2"})]})}],ne=[],A=!0,We=!1,jt=location.hash||"#/",K=null,oe=!1,re=null,be=null,Gt=null,ge=null,Jt=null,D=wt(),Xt="botmux.ownerAvatar.v1",An=new Set(["working","analyzing","active","starting"]),Ke="botmux:auth-expired",Ve;function te(e){return(0,n.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e})}function Ft(e){return e.labelKey?s(e.labelKey):e.label??""}function Bn(e,t){let o=t||"#/";return e.id==="plugins"&&ne.some(r=>r.href===o||o.startsWith(`${r.href}?`)||o.startsWith(`${r.href}/`))?!1:e.id==="sessions"&&(o==="#/monitor-room"||o.startsWith("#/monitor-room?")||o.startsWith("#/monitor-room/"))||e.id==="connectors"&&(o==="#/webhook-logs"||o.startsWith("#/webhook-logs?")||o.startsWith("#/webhook-logs/"))?!0:e.href===o||e.href!=="#/"&&(o.startsWith(`${e.href}?`)||o.startsWith(`${e.href}/`))}function In(){let e=ct()?$t.filter(o=>o.id!=="workflows"):$t;if(ne.length===0)return e;let t=e.findIndex(o=>o.id==="plugins");return t<0?[...e,...ne]:[...e.slice(0,t+1),...ne,...e.slice(t+1)]}function Un(e){let t=[];return Bn(e,jt)&&t.push("active"),e.id==="settings"&&oe&&t.push("nav-has-update"),t.length?t.join(" "):void 0}function Yt(){let e=de(new URLSearchParams(location.search).get("locale"));if(e)return e;let t=location.hash.indexOf("?");return t<0?null:de(new URLSearchParams(location.hash.slice(t+1)).get("locale"))}function _t(){let e=Yt();return!e||e===g.locale?!1:(g.setLocale(e),!0)}function $n(){let e=location.hash.indexOf("?");return e<0?null:{path:location.hash.slice(0,e)||"#/",params:new URLSearchParams(location.hash.slice(e+1))}}function Fn(){let e=$n(),t=e?.params.get("open");if(!e||!t||t!=="bot-onboarding"&&t!=="create-session")return!1;e.params.delete("open");let o=e.params.toString();return history.replaceState(null,"",o?`${e.path}?${o}`:e.path),t==="bot-onboarding"?window.dispatchEvent(new Event(ue)):Te(),!0}function Wt(){let e=re?`v${re}`:"";return be==="runtime"?s("update.navRuntimeBadgeTitle",{version:e}):s("update.navBadgeTitle",{version:e})}function _n(e){ge=e}function Ue(){if(ge)return ge;let e=document.getElementById("root");if(!e)throw new Error("dashboard root is not mounted");return ge=e,e}function Wn(){return(0,p.useEffect)(()=>{bt()},[]),(0,p.useEffect)(()=>{Pe()}),(0,n.jsxs)("div",{className:"theme-menu",id:"theme-menu",children:[(0,n.jsx)("button",{type:"button",className:"theme-menu-btn",id:"theme-menu-btn","aria-haspopup":"listbox","aria-expanded":"false","aria-label":"Theme",children:(0,n.jsx)("span",{className:"tm-ic",children:(0,n.jsxs)("svg",{className:"tm-svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),(0,n.jsx)("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),(0,n.jsx)("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}),(0,n.jsx)("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),(0,n.jsx)("path",{d:"M12 2a10 10 0 0 0 0 20h1.7a2.3 2.3 0 0 0 1.6-4c-.5-.5-.2-1.3.5-1.3H17a5 5 0 0 0 5-5 9.7 9.7 0 0 0-10-9.7z"})]})})}),(0,n.jsx)("div",{className:"theme-menu-pop",id:"theme-menu-pop",role:"listbox",hidden:!0})]})}function Kn(){let e=[...le.sessions.values()],t=e.filter(d=>d.status!=="closed"),o=t.map(d=>({s:d,reason:nt(d)})).filter(d=>!!d.reason).sort((d,c)=>ce(d.s)-ce(c.s)),r=new Set(o.map(d=>String(d.s.sessionId??""))),a=t.filter(d=>An.has(String(d.status))&&!r.has(String(d.sessionId??""))).length,i=o[0]??null,l=ht(e).filter(d=>d.online||d.active.length>0).length,m=Math.max(0,t.length-o.length-a);return{working:a,attention:o.length,idle:m,onlineBots:l,attentionNotice:i?{count:o.length,time:Qe(ce(i.s)),bot:tt(i.s),reason:i.reason}:null}}function fe(e){return(0,n.jsxs)("div",{className:`topbar-status-row${e.hot?" topbar-status-row-hot":""}`,children:[(0,n.jsx)("span",{children:e.label}),(0,n.jsx)("b",{className:e.value>0?"status-count-on":void 0,children:e.value})]})}function Vn(e){let{attention:t,idle:o,working:r}=e.summary,a=r+t+o,i=a===0?"conic-gradient(var(--border) 0 360deg)":(()=>{let l=r/a*360,m=l+t/a*360;return`conic-gradient(var(--accent) 0 ${l}deg, var(--warning) ${l}deg ${m}deg, var(--success) ${m}deg 360deg)`})();return(0,n.jsxs)("div",{className:"topbar-status-donut-wrap","aria-hidden":"true",children:[(0,n.jsx)("div",{className:"topbar-status-donut",style:{background:i}}),(0,n.jsxs)("div",{className:"topbar-status-donut-center",children:[(0,n.jsx)("b",{children:a}),(0,n.jsx)("span",{children:s("overview.openSessions")})]})]})}function $e(){window.dispatchEvent(new Event(Ne))}function zn(e){let{autoOpen:t=!1,summary:o}=e,[r,a]=(0,p.useState)(!1),[i,l]=(0,p.useState)(!1),[m,d]=(0,p.useState)(!1),c=(0,p.useRef)(null),f=t&&!i,h=r||f;return(0,p.useEffect)(()=>{t||l(!1)},[t]),(0,p.useEffect)(()=>{if(!h)return;let y=x=>{let L=x.target;L instanceof Node&&c.current?.contains(L)||(a(!1),l(!0))};return document.addEventListener("pointerdown",y),()=>document.removeEventListener("pointerdown",y)},[h]),(0,n.jsxs)("div",{ref:c,className:`topbar-status-menu${f?" topbar-status-auto-open":""}${r?" is-open":""}${m?" suppress-hover":""}`,onPointerEnter:$e,onPointerLeave:()=>d(!1),onFocusCapture:$e,onBlur:y=>{let x=y.relatedTarget;(!(x instanceof Node)||!y.currentTarget.contains(x))&&a(!1)},onKeyDown:y=>{y.key==="Escape"&&(a(!1),l(!0),d(!0),y.currentTarget.querySelector("#status")?.focus())},children:[(0,n.jsx)("button",{type:"button",id:"status",className:"connection-status","aria-haspopup":"true","aria-expanded":h,onClick:()=>{if($e(),h){a(!1),l(!0),d(!0);return}d(!1),a(!0)},children:s("overview.sessionOverview")}),(0,n.jsxs)("div",{className:"topbar-status-pop",children:[o.attentionNotice?(0,n.jsxs)("a",{className:"topbar-attention-notice",href:"#/sessions",children:[(0,n.jsx)("span",{className:"topbar-attention-dot","aria-hidden":"true"}),(0,n.jsxs)("span",{className:"topbar-attention-copy",children:[(0,n.jsx)("b",{children:s("strip.pending",{count:o.attentionNotice.count})}),(0,n.jsx)("small",{children:s("strip.longestCompact",{time:o.attentionNotice.time,bot:o.attentionNotice.bot,reason:o.attentionNotice.reason})})]}),(0,n.jsx)("span",{className:"topbar-attention-action",children:s("strip.handle")})]}):null,(0,n.jsxs)("div",{className:"topbar-status-list",children:[(0,n.jsx)(fe,{label:s("overview.workingSessions"),value:o.working}),(0,n.jsx)(fe,{label:s("overview.idleSessions"),value:o.idle}),(0,n.jsx)(fe,{label:s("overview.attention"),value:o.attention,hot:o.attention>0}),(0,n.jsx)(fe,{label:s("overview.onlineBots"),value:o.onlineBots})]}),(0,n.jsx)(Vn,{summary:o})]})]})}function qn(e){if(!e.open)return null;let t=!!e.loginUrl;return(0,n.jsx)("div",{id:"auth-expired-overlay",className:"auth-expired-overlay",role:"presentation",onClick:o=>{o.target===o.currentTarget&&e.onClose()},children:(0,n.jsxs)("div",{className:"auth-expired-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"auth-expired-title",children:[(0,n.jsx)("h2",{id:"auth-expired-title",children:t?"\u767B\u5F55 Dashboard":"\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548"}),(0,n.jsx)("p",{children:t?"\u5F53\u524D\u6D4F\u89C8\u5668\u5C1A\u672A\u767B\u5F55\u3002\u70B9\u51FB\u540E\u5C06\u901A\u8FC7 Botmux \u5E73\u53F0\u6821\u9A8C\u673A\u5668 owner \u6743\u9650\uFF0C\u5E76\u8FD4\u56DE\u5F53\u524D\u9875\u9762\uFF1B\u65E0\u6743\u9650\u8D26\u53F7\u4ECD\u4F1A\u88AB\u62D2\u7EDD\u3002":"\u5F53\u524D\u94FE\u63A5/\u8BBF\u95EE\u5DF2\u5931\u6548\uFF0C\u8BF7\u4F7F\u7528\u6700\u65B0\u6388\u6743\u94FE\u63A5\u91CD\u65B0\u8FDB\u5165\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09\u3002"}),(0,n.jsxs)("div",{className:"auth-expired-actions",children:[e.loginUrl?(0,n.jsx)("a",{id:"dashboard-one-click-login",className:"auth-login-link primary",href:e.loginUrl,target:"_top",rel:"noopener",children:"\u4E00\u952E\u767B\u5F55"}):null,(0,n.jsx)("button",{id:"auth-expired-dismiss",type:"button",className:t?"secondary":"primary",onClick:e.onClose,children:t?"\u6682\u4E0D\u767B\u5F55":"\u77E5\u9053\u4E86"})]})]})})}function jn(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e.slice(0,10);try{return new Intl.DateTimeFormat(g.locale==="zh"?"zh-CN":"en-US",{year:"numeric",month:"numeric",day:"numeric"}).format(t)}catch{return e.slice(0,10)}}async function Kt(){let e=await fetch("/__selfcheck",{cache:"no-store"}),t=await e.text();if(!e.ok||!t)throw new Error(s("update.healthCheckFailed"));return t}function Gn(e){let{status:t}=e,[o,r]=(0,p.useState)(!1),[a,i]=(0,p.useState)("idle"),[l,m]=(0,p.useState)(!1),[d,c]=(0,p.useState)(!1),[f,h]=(0,p.useState)(""),[M,y]=(0,p.useState)(!1),[x,L]=(0,p.useState)(!1),[k,V]=(0,p.useState)(!1),[z,se]=(0,p.useState)(!1),[q,qe]=(0,p.useState)([]),[w,ve]=(0,p.useState)(null),[H,ye]=(0,p.useState)(null),O=(0,p.useRef)(!1),j=(0,p.useRef)(null),je=(0,p.useRef)(null),we=(0,p.useRef)(null),xe=(0,p.useRef)(null),[G,Ge]=(0,p.useState)(null),Zt=()=>{j.current!==null&&(window.clearTimeout(j.current),j.current=null)};if((0,p.useEffect)(()=>{O.current=!1,i("idle"),m(!1),c(!1),h(""),y(!1),L(!1),V(!1),se(!1),qe([]),ve(null),ye(null)},[t?.current,t?.latest]),(0,p.useEffect)(()=>{t&&c(t.versionLookupOk===!1)},[t]),(0,p.useEffect)(()=>{o||y(!1)},[o]),(0,p.useEffect)(()=>{if(!o||!G)return;let u=window.requestAnimationFrame(()=>{xe.current?.querySelector('button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')?.focus()});return()=>window.cancelAnimationFrame(u)},[o,G!==null]),(0,p.useEffect)(()=>{if(!o){Ge(null);return}let u=()=>{let v=we.current;if(!v)return;let E=v.getBoundingClientRect(),N=Math.min(340,Math.max(0,window.innerWidth-32)),I=Math.max(16,Math.min(E.left,window.innerWidth-N-16));Ge({top:E.bottom+8,left:I})};return u(),window.addEventListener("resize",u),document.addEventListener("scroll",u,!0),()=>{window.removeEventListener("resize",u),document.removeEventListener("scroll",u,!0)}},[o]),(0,p.useEffect)(()=>()=>Zt(),[]),(0,p.useEffect)(()=>{if(!o)return;let u=E=>{let N=E.target;je.current?.contains(N)||xe.current?.contains(N)||r(!1)},v=E=>{E.key==="Escape"&&(r(!1),we.current?.focus())};return document.addEventListener("pointerdown",u),document.addEventListener("keydown",v),()=>{document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",v)}},[o]),!t)return null;let B=t.behind&&!!t.latest,ke=!t.latest,Ee=B&&t.updateSupported&&!t.localDevInstall&&t.node.ok,Je=t.updateSupported&&!t.localDevInstall&&t.node.ok,S=a==="updating"||a==="restarting",Qt=t.updateCommand??"botmux update",Re=`v${t.current}`,en=t.latest?`v${t.latest}`:"",tn=t.localDevInstall?s("update.localDev"):t.updateSupported?t.node.ok?"":s("update.nodeWarn",{version:t.node.version,required:t.node.required}):s("update.unsupportedInstall"),Xe=u=>{let v=Date.now(),E=async()=>{try{let N=await fetch("/__selfcheck",{cache:"no-store"}),I=await N.text();if(N.ok&&I&&I!==u){location.reload();return}}catch{}if(Date.now()-v>9e4){O.current=!1,i("error"),h(s("update.restartSlow"));return}j.current=window.setTimeout(()=>{E()},2e3)};j.current=window.setTimeout(()=>{E()},3e3)},nn=async()=>{if(B){if(!Ee){r(!1),location.hash="#/settings";return}if(!O.current){O.current=!0,ye(null),c(!1),h("");try{let u=await Kt(),v=await Be(fetch,i);if(!v.restarted){O.current=!1,i("error"),h(s("update.restartFailed",{detail:v.restartError??"unknown"}));return}Xe(u)}catch(u){O.current=!1,i("error"),h(u instanceof Error?u.message:String(u))}}}},Me=async(u=!1)=>{if(k)return!z;V(!0),se(!1);try{let v=await fetch(`/api/update/versions${u?"?refresh=1":""}`,{cache:"no-store"}),E=await v.json().catch(()=>null);if(!E||!Array.isArray(E.versions))throw new Error("Invalid rollback versions response");let N=E.versions.filter(U=>{if(!U||typeof U!="object")return!1;let J=U;return typeof J.version=="string"&&(typeof J.publishedAt=="string"||J.publishedAt===null)}).slice(0,3);qe(N),ve(U=>N.some(J=>J.version===U)?U:null),L(!0);let I=v.ok&&E.ok===!0;return se(!I),I}catch{return L(!0),se(!0),!1}finally{V(!1)}},on=async()=>{if(!(!w||!Je||k||O.current)){O.current=!0,ye(w),c(!1),h("");try{let u=await Kt();await Be(fetch,i,w),Xe(u)}catch(u){O.current=!1,i("error"),h(u instanceof Error?u.message:String(u))}}},rn=async()=>{if(!(l||S)){m(!0),c(!1);try{let u=await e.onRefresh();M&&await Me(!0),c(!u)}finally{m(!1)}}},Le=a==="updating"?H?s("update.rollbackInstalling",{version:H}):s("update.updating",{command:Qt}):a==="restarting"?H?s("update.rollbackRestarting",{version:H}):s("update.restarting"):a==="error"?H?s("update.rollbackFailed",{detail:f}):s("update.updateFailed",{detail:f}):d?s("update.topbarRefreshFailed"):B?Ee?s("update.versionUpgradePrompt",{version:en}):tn:t.latest?s("update.upToDate"):s("update.checkUnavailable"),an=Ee?a==="error"?s("update.topbarRetry"):a==="idle"?s("update.topbarAction"):s("update.topbarWorking"):s("update.topbarReview"),ie=a==="error"||d&&ke?{className:"is-error",symbol:"!"}:B?{className:"has-update",symbol:"\u2191"}:ke?{className:"is-unknown",symbol:"?"}:{className:"is-current",symbol:"\u2713"};return(0,n.jsxs)("div",{ref:je,className:`dashboard-version-control${o?" is-open":""}`,children:[(0,n.jsxs)("button",{ref:we,type:"button",className:`dashboard-version-chip${B?" has-update":""}${ke?" is-unknown":""}${a==="error"?" is-error":""}`,"aria-haspopup":"dialog","aria-expanded":o,"aria-label":`${Re}. ${Le}`,title:Le,onClick:()=>r(u=>!u),children:[(0,n.jsx)("span",{children:Re}),S?(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):(0,n.jsx)("span",{className:`dashboard-version-state ${ie.className}`,"aria-hidden":"true",children:ie.symbol})]}),o&&G&&typeof document<"u"?(0,zt.createPortal)((0,n.jsxs)("section",{ref:xe,className:"dashboard-version-popover",role:"dialog","aria-modal":"false","aria-labelledby":"dashboard-version-title",style:{top:G.top,left:G.left},children:[(0,n.jsxs)("header",{className:"dashboard-version-popover-head",children:[(0,n.jsx)("strong",{id:"dashboard-version-title",children:s("update.current")}),(0,n.jsxs)("div",{className:"dashboard-version-head-actions",children:[(0,n.jsx)("button",{type:"button",className:`dashboard-version-refresh${l?" is-refreshing":""}`,"aria-label":s(l?"update.topbarRefreshing":"update.topbarRefresh"),title:s(l?"update.topbarRefreshing":"update.topbarRefresh"),disabled:l||k||S,onClick:()=>{rn()},children:(0,n.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M13.2 5.7A5.8 5.8 0 1 0 13 10.8"}),(0,n.jsx)("path",{d:"M13.2 2.8v2.9h-2.9"})]})}),(0,n.jsx)("button",{type:"button",className:"dashboard-version-close","aria-label":s("update.topbarClose"),onClick:()=>r(!1),children:"\xD7"})]})]}),(0,n.jsxs)("div",{className:"dashboard-version-popover-body",children:[(0,n.jsxs)("div",{className:"dashboard-version-current",children:[(0,n.jsx)("strong",{children:Re}),(0,n.jsx)("span",{className:ie.className,"aria-hidden":"true",children:S?(0,n.jsx)("span",{className:"dashboard-update-spinner"}):ie.symbol})]}),(0,n.jsx)("p",{className:`dashboard-version-message${a==="error"||d?" is-error":""}`,role:a==="error"||d?"alert":"status","aria-live":"polite",children:Le}),(0,n.jsxs)("a",{className:"dashboard-version-release-link",href:"https://github.com/deepcoldy/botmux/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,n.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:(0,n.jsx)("path",{d:"M8 1.5a6.5 6.5 0 0 0-2.1 12.65c.33.06.45-.14.45-.32v-1.26c-1.84.4-2.23-.78-2.23-.78-.3-.76-.73-.96-.73-.96-.6-.41.05-.4.05-.4.66.05 1 .68 1 .68.59 1 1.54.72 1.92.55.06-.42.23-.72.42-.88-1.47-.17-3.02-.74-3.02-3.28 0-.72.26-1.32.68-1.78-.07-.17-.3-.84.07-1.75 0 0 .56-.18 1.79.68A6.2 6.2 0 0 1 8 4.63a6.2 6.2 0 0 1 1.71.22c1.23-.86 1.79-.68 1.79-.68.37.91.14 1.58.07 1.75.42.46.68 1.06.68 1.78 0 2.55-1.55 3.11-3.03 3.28.24.21.45.61.45 1.23v1.62c0 .18.12.38.46.32A6.5 6.5 0 0 0 8 1.5Z"})}),(0,n.jsx)("span",{children:s("update.changelogViewOnGitHub")})]}),(B||M)&&t.installs.multiple?(0,n.jsxs)("details",{className:"dashboard-version-installs",children:[(0,n.jsx)("summary",{children:s("update.multiInstallWarn")}),(0,n.jsx)("ul",{children:t.installs.entries.map(u=>(0,n.jsx)("li",{children:u.binPath},u.binPath))})]}):null,Je?(0,n.jsxs)("details",{className:"dashboard-version-rollback",open:M,"aria-busy":k,onToggle:u=>{let v=u.currentTarget.open;y(v),v&&!x&&!k&&Me()},children:[(0,n.jsxs)("summary",{children:[(0,n.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,n.jsx)("path",{d:"M8 4.8V8l2.2 1.3"})]}),(0,n.jsx)("span",{children:s("update.rollbackTitle")}),(0,n.jsx)("span",{className:"dashboard-version-rollback-chevron","aria-hidden":"true",children:"\u2304"})]}),(0,n.jsxs)("div",{className:"dashboard-version-rollback-body",children:[k&&q.length===0?(0,n.jsxs)("p",{className:"dashboard-version-rollback-status",role:"status","aria-live":"polite",children:[(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}),s("update.rollbackLoading")]}):null,z?(0,n.jsxs)("p",{className:"dashboard-version-rollback-load-error",role:"alert",children:[(0,n.jsx)("span",{children:s("update.rollbackLoadFailed")}),(0,n.jsx)("button",{type:"button",disabled:k,onClick:()=>{Me(!0)},children:s("update.rollbackRetry")})]}):null,x&&!k&&!z&&q.length===0?(0,n.jsx)("p",{className:"dashboard-version-rollback-status",children:s("update.rollbackEmpty")}):null,q.length>0?(0,n.jsxs)("fieldset",{disabled:S||k||z,children:[(0,n.jsx)("legend",{children:s("update.rollbackHint")}),(0,n.jsx)("div",{className:"dashboard-version-rollback-options",children:q.map(u=>(0,n.jsxs)("label",{className:w===u.version?"is-selected":"",children:[(0,n.jsx)("input",{type:"radio",name:"dashboard-rollback-version",value:u.version,checked:w===u.version,onChange:()=>ve(u.version)}),(0,n.jsxs)("strong",{children:["v",u.version]}),u.publishedAt?(0,n.jsx)("time",{dateTime:u.publishedAt,children:jn(u.publishedAt)}):null]},u.version))})]}):null,w?(0,n.jsxs)("p",{id:"dashboard-version-rollback-risk",className:"dashboard-version-rollback-risk",role:"note",children:[(0,n.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M7.1 2.3 1.8 12a1 1 0 0 0 .9 1.5h10.6a1 1 0 0 0 .9-1.5L8.9 2.3a1 1 0 0 0-1.8 0Z"}),(0,n.jsx)("path",{d:"M8 5.5v3.6M8 11.6h.01"})]}),(0,n.jsxs)("span",{children:[s("update.rollbackRisk",{version:w})," ",(0,n.jsx)("a",{href:`https://github.com/deepcoldy/botmux/releases/tag/v${encodeURIComponent(w)}`,target:"_blank",rel:"noopener noreferrer","aria-label":s("update.rollbackReleaseNotesA11y",{version:w}),children:s("update.rollbackReleaseNotes",{version:w})})]})]}):null,q.length>0?(0,n.jsxs)("button",{type:"button",className:"dashboard-version-rollback-action",disabled:!w||k||z||S,"aria-describedby":w?"dashboard-version-rollback-risk":void 0,onClick:()=>{on()},children:[S&&H?(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,w?a==="error"&&H===w?s("update.rollbackRetry"):s("update.rollbackAction",{version:w}):s("update.rollbackSelect")]}):null]})]}):null]}),B&&!M&&!H?(0,n.jsxs)("footer",{className:"dashboard-version-popover-actions",children:[(0,n.jsx)("button",{type:"button",className:"dashboard-version-secondary",onClick:()=>r(!1),children:S?s("update.topbarClose"):s("update.topbarLater")}),(0,n.jsxs)("button",{type:"button",className:"dashboard-version-primary",disabled:S,onClick:()=>{nn()},children:[S?(0,n.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,an]})]}):null]}),document.body):null]})}function Jn(){let e=Kn(),[t,o]=(0,p.useState)(!1),[r,a]=(0,p.useState)(!1),[i,l]=(0,p.useState)(!1),m=(0,p.useRef)(e.attention),d=(0,p.useRef)(null),c=()=>{d.current!==null&&(window.clearTimeout(d.current),d.current=null)};(0,p.useEffect)(()=>{let h=()=>o(!0);return window.addEventListener(ue,h),()=>window.removeEventListener(ue,h)},[]),(0,p.useEffect)(()=>{let h=()=>a(!0);return window.addEventListener(Ke,h),ae&&a(!0),()=>window.removeEventListener(Ke,h)},[]),(0,p.useEffect)(()=>()=>c(),[]),(0,p.useEffect)(()=>{let h=m.current;if(m.current=e.attention,e.attention===0){c(),l(!1);return}h!==0||document.body.classList.contains("theme-menu-open")||(l(!0),c(),d.current=window.setTimeout(()=>{d.current=null,l(!1)},4e3))},[e.attention]);let f=()=>{ae=!1,a(!1)};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"aurora","aria-hidden":"true",children:[(0,n.jsx)("i",{className:"a1"}),(0,n.jsx)("i",{className:"a2"}),(0,n.jsx)("i",{className:"a3"})]}),(0,n.jsxs)("div",{className:"app-shell",children:[(0,n.jsxs)("header",{className:"topbar",children:[(0,n.jsx)("div",{className:"topbar-left",children:(0,n.jsxs)("div",{className:"topbar-brand-block",children:[(0,n.jsxs)("a",{className:"brand",href:"#/",children:[(0,n.jsx)("span",{className:"brand-mark","aria-hidden":"true",children:(0,n.jsx)("img",{className:"brand-logo-img",src:"/assets/brand-logo.png",alt:"",decoding:"sync",loading:"eager",fetchPriority:"high"})}),(0,n.jsx)("strong",{className:"brand-wordmark",children:"Botmux"}),(0,n.jsx)("span",{className:"brand-product",children:"Dashboard"})]}),(0,n.jsx)(Gn,{status:Gt,onRefresh:()=>ze(!0)})]})}),(0,n.jsxs)("div",{className:"topbar-actions",children:[(0,n.jsx)(zn,{summary:e,autoOpen:i}),(0,n.jsxs)("div",{className:"topbar-tool-group",children:[(0,n.jsx)("button",{type:"button",className:"topbar-locale-toggle","aria-label":g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",title:g.locale==="zh"?"Switch to English":"\u5207\u6362\u5230\u4E2D\u6587",onClick:()=>Xn(g.locale==="zh"?"en":"zh"),children:g.locale==="zh"?"CN":"EN"}),(0,n.jsx)(Wn,{}),(0,n.jsxs)("a",{className:"topbar-docs-link",href:"https://bytedance.aiforce.cloud/app/app_4k9smq6rdxher/",target:"_blank",rel:"noopener noreferrer",title:s("nav.docs"),"aria-label":s("nav.docs"),children:[te((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,n.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})),(0,n.jsx)("span",{children:s("nav.docs")})]})]}),(0,n.jsxs)("span",{className:"topbar-owner",title:K?.name,"aria-label":K?.name??"Owner",children:[(0,n.jsx)("span",{className:"topbar-owner-placeholder","aria-hidden":"true",children:te((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:"8",cy:"6",r:"2.4"}),(0,n.jsx)("path",{d:"M3.7 13c.7-2.5 2.2-3.7 4.3-3.7s3.6 1.2 4.3 3.7"})]}))}),K?.avatarUrl?(0,n.jsx)("img",{className:"topbar-owner-img",src:K.avatarUrl,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:h=>{h.currentTarget.remove()}}):null]})]})]}),(0,n.jsxs)("div",{className:"chrome-body",children:[(0,n.jsxs)("aside",{className:"sidebar",children:[A?(0,n.jsxs)("div",{className:"sidebar-create-actions",children:[(0,n.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>Te(),children:[te((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"}),(0,n.jsx)("path",{d:"M8 4.9v4.2M5.9 7h4.2"})]})),(0,n.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createSession")})]}),(0,n.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>{it()},children:[te((0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("rect",{x:"2.5",y:"6",width:"11",height:"7.5",rx:"2"}),(0,n.jsx)("circle",{cx:"5.8",cy:"9.75",r:"1"}),(0,n.jsx)("circle",{cx:"10.2",cy:"9.75",r:"1"}),(0,n.jsx)("path",{d:"M8 6V3.8M6.3 1.9h3.4"})]})),(0,n.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createBot")})]})]}):null,(0,n.jsx)("nav",{className:"sidebar-nav","aria-label":"Dashboard",children:In().filter(h=>A||!h.manage).map(h=>(0,n.jsxs)("a",{href:h.href,"data-route":h.id,className:[Un(h),h.plugin?"sidebar-plugin-item":""].filter(Boolean).join(" ")||void 0,title:h.plugin?Ft(h):void 0,children:[te(h.icon),(0,n.jsx)("span",{className:"sidebar-nav-label",children:Ft(h)}),h.id==="settings"&&oe?(0,n.jsx)(st,{className:"nav-update-tip",label:Wt(),trigger:(0,n.jsx)("span",{className:"nav-update-dot","aria-hidden":"true"}),preventClick:!1,focusable:!1,children:Wt()}):null]},h.id))})]}),(0,n.jsxs)("div",{className:"workspace",children:[(0,n.jsx)("dialog",{id:"create-session-modal",className:"create-session-modal"}),(0,n.jsx)(lt,{open:t,onClose:()=>o(!1)}),(0,n.jsx)("main",{id:"root",ref:_n})]})]})]}),(0,n.jsx)(qn,{open:r,loginUrl:Ie(Ve,location.hash),onClose:f})]})}function R(){Jt?.render((0,n.jsx)(Jn,{}))}function Xn(e){g.setLocale(e),to(e)}var ae=!1;function Yn(e){let t=!!Ie(e,location.hash),o=t&&Ve!==e;t&&(Ve=e),ae&&o&&R(),!ae&&(ae=!0,window.dispatchEvent(new Event(Ke)))}var Fe;function Zn(){let e=document.getElementById("readonly-toast");e||(e=document.createElement("div"),e.id="readonly-toast",e.style.cssText="position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:9999;background:var(--fg,#1f2329);color:var(--bg,#fff);padding:10px 18px;border-radius:var(--radius-lg);font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25)",document.body.appendChild(e)),e.textContent="\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u6B64\u64CD\u4F5C\u9700\u8981\u6388\u6743\u94FE\u63A5\uFF08\u8FD0\u884C botmux dashboard \u83B7\u53D6\uFF09",e.style.display="block",Fe&&window.clearTimeout(Fe),Fe=window.setTimeout(()=>{e.style.display="none"},4e3)}var Qn=window.fetch.bind(window);window.fetch=async function(...t){let o=await Qn(...t);if(o.status===401){let r=o.headers.get("x-botmux-login-url")??void 0,a=(t[1]?.method??"GET").toUpperCase();r||(a==="GET"||a==="HEAD")&&!We?Yn(r):Zn()}return o};async function eo(){try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();A=!!t.authed,g.authed=A,We=!!(t.settings&&t.settings.publicReadOnly),g.publicReadOnly=We;let o=Yt()??de(t.lang);o&&g.setLocale(o)}}catch{}}async function Vt(){try{let e=await fetch("/api/plugins/dashboard");if(!e.ok)return;let t=await e.json();ne=(Array.isArray(t?.plugins)?t.plugins:[]).filter(r=>r.pinned===!0&&typeof r.route=="string").map(r=>({id:`plugin:${r.pluginId}:${r.id}`,href:r.route,label:r.displayName||r.pluginId,manage:!0,plugin:!0,icon:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("path",{d:"M5.2 2.2h5.6v3.1l1.7 1.7-1.4 1.4-1-1v6.4H5.9V7.4l-1 1L3.5 7l1.7-1.7z"}),(0,n.jsx)("path",{d:"M8 13.8v1"})]})})),R()}catch{}}async function to(e){if(A)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}async function ze(e=!1){if(!A)return!1;try{let t=await fetch(`/api/update/status${e?"?refresh=1":""}`,{cache:"no-store"});if(!t.ok)return!1;let o=await t.json();Gt=o;let r=Array.isArray(o.cliUpdates)?o.cliUpdates.find(a=>a?.updateAvailable===!0&&a?.latest):null;return o.behind===!0&&o.latest?(oe=!0,be="botmux",re=String(o.latest)):r?(oe=!0,be="runtime",re=String(r.latest)):(oe=!1,be=null,re=null),R(),o.versionLookupOk!==!1}catch{return!1}}function no(e){e.innerHTML='<section class="auth-required" style="max-width:520px;margin:64px auto;text-align:center;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 36px;box-shadow:0 8px 28px rgba(0,0,0,.12)"><h2 style="margin:0 0 12px;font-size:20px;color:var(--fg)">\u6B64\u9875\u9700\u8981\u6388\u6743\u94FE\u63A5</h2><p style="margin:0 0 24px;line-height:1.7;color:var(--muted);font-size:14px">\u4F60\u5F53\u524D\u662F\u53EA\u8BFB\u8BBF\u95EE\uFF0C\u7BA1\u7406\u9875\uFF08\u7FA4\u89D2\u8272 / Profiles / Bot \u914D\u7F6E / \u56E2\u961F / Webhook\uFF09\u9700\u8981\u6388\u6743\u94FE\u63A5\u3002\u8FD0\u884C <code>botmux dashboard</code> \u83B7\u53D6\u6700\u65B0\u94FE\u63A5\u540E\u5373\u53EF\u7BA1\u7406\u3002</p><a href="#/" style="display:inline-block;padding:8px 22px;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-lg);text-decoration:none;font-size:14px">\u8FD4\u56DE\u603B\u89C8</a></section>'}async function _e(){let e=xt(D),t=location.hash||"#/";jt=t,R();let o=ut(t);if(o){window.location.replace(o);return}if(!A&&Dn.some(r=>t.startsWith("#/"+r))){no(Ue()),D.rerenderOnUiChange=!0;return}if(t.startsWith("#/v3")){window.location.replace(`#/workflows${t.slice(4)}`);return}else if(t.startsWith("#/legacy-workflow")){window.location.replace("#/workflows");return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(t)){window.location.replace("#/workflows");return}if(t.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${t.slice(15)}`);return}try{let r=gt(t);await kt(D,e,Ue(),r?r.load:vt,{rerenderOnUiChange:r?r.rerenderOnUiChange:!1}),e===D.seq&&A&&Fn()}catch(r){if(e!==D.seq||Mt(r,{href:window.location.href,hash:t,getSessionStorage:()=>window.sessionStorage,reload:()=>window.location.reload()}))return;Ue().innerHTML=`<section class="page"><div class="empty">Dashboard route failed: ${Ze(String(r))}</div></section>`,D.pageDispose=null,D.rerenderOnUiChange=!0}}function oo(){try{let e=JSON.parse(window.localStorage.getItem(Xt)??"null");if(e?.avatarUrl)return{avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0}}catch{}return null}function ro(){K=oo(),R(),fetch("/api/owner-profile").then(e=>e.ok?e.json():null).then(e=>{if(!(!e?.ok||!e.avatarUrl)){K={avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0};try{window.localStorage.setItem(Xt,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}R()}}).catch(()=>{})}(async()=>{let e=dt(window.location.href);e&&window.history.replaceState(window.history.state,"",e),g.init(),_t();let t=document.getElementById("app-root");if(!t)throw new Error("missing dashboard app root");Ct(t),Bt(),Jt=(0,qt.createRoot)(t),R(),g.on(()=>{R(),D.rerenderOnUiChange&&_e()}),le.on(()=>{R()}),await eo(),R(),window.addEventListener(ot,()=>{Vt()}),Vt(),ze(),window.setInterval(()=>{document.hidden||ze()},30*6e4),ro();try{await Ye()}catch(o){console.error("botmux dashboard bootstrap failed",o),le.setOnline(!1)}et().then(R),pt().then(R),window.addEventListener("hashchange",()=>{_t()||_e()}),_e()})();export{Yn as showAuthExpiredOverlay,Zn as showReadOnlyToast};
|
package/dist/dashboard-web/chunks/{bot-defaults-page-BHTQEWCH.js → bot-defaults-page-LTVOUDIS.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as Et}from"./chunk-
|
|
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
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
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
4
|
`)}function Re(a){let t=le();for(let o of a.split(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{q as T}from"./chunk-5CJMHTT4.js";import{u as t}from"./chunk-E3HZZXK5.js";import{a as Z,d as B}from"./chunk-5THX4DI2.js";import{c as E}from"./chunk-7SZRL6FY.js";var r=E(Z(),1);var e=E(B(),1),nn="botmux:open-bot-onboarding",L={id:"claude-code",label:"Claude"},G="glm-5.1";function x(){return{options:[L],ttadkModelDefault:G,ttadkModelSuggestions:[],suggestedAppName:"botmux-0",webSession:{status:"checking"}}}function Q(){return{appName:"",cliId:L.id,dirMode:"fixed",workingDir:"~",model:""}}function en(n,o){return n||o==="checking"}function q(n){return n instanceof Error?n.message:String(n)}function X(n){return n.status==="completed"||n.status==="failed"||n.status==="needs_owner"}function N(n){return n==="login_failed"||n==="invalid_session"||n==="identity_unavailable"||n==="session_changed"}function tn(n){return n.status==="waiting_for_scan"?n.registrationMode==="compat"?t("botOnboarding.waitingCompat"):t("botOnboarding.waiting",{name:n.appName??""}):n.status==="verifying"?t("botOnboarding.verifying"):n.status==="configuring_permissions"?n.permissionStatusMsg?`${t("botOnboarding.configuringPermissions")} ${n.permissionStatusMsg}`:t("botOnboarding.configuringPermissions"):n.status==="waiting_for_platform_scan"?t("botOnboarding.platformScanHint"):n.status==="needs_owner"?t("botOnboarding.needsOwnerTitle"):n.status==="completed"?t("botOnboarding.completed",{name:n.appName??t("botOnboarding.botFallback")}):n.status==="failed"?n.appId?t("botOnboarding.partialFailureTitle"):n.error==="qr_expired"?t("botOnboarding.qrExpiredTitle"):N(n.error)?t("botOnboarding.authIncompleteTitle"):t("botOnboarding.createFailedTitle"):t("botOnboarding.starting")}async function on(){try{let n=await fetch("/api/cli-options"),o=await n.json();if(n.ok&&Array.isArray(o?.options)){let a=typeof o.ttadkModelDefault=="string"&&o.ttadkModelDefault.trim()?o.ttadkModelDefault.trim():G,l=Array.isArray(o.ttadkModelSuggestions)?o.ttadkModelSuggestions.filter(f=>typeof f=="string"):[],d=typeof o.suggestedAppName=="string"&&o.suggestedAppName.trim()?o.suggestedAppName.trim():"botmux-0",b=o?.webSession?.identity,c=o?.webSession?.status==="ready"&&typeof b?.userId=="string"&&typeof b?.userName=="string"&&typeof b?.tenantId=="string"&&typeof b?.tenantName=="string"?{status:"ready",source:typeof o.webSession.source=="string"?o.webSession.source:"botmux_cache",identity:{userId:b.userId,userName:b.userName,...typeof b.email=="string"?{email:b.email}:{},tenantId:b.tenantId,tenantName:b.tenantName}}:{status:"scan_required",...typeof o?.webSession?.reason=="string"?{reason:o.webSession.reason}:{}};return{options:o.options,ttadkModelDefault:a,ttadkModelSuggestions:l,suggestedAppName:d,webSession:c}}}catch{}return{...x(),webSession:{status:"scan_required"}}}function K(n,o,a){let l=a.options.find(f=>f.id===o),d=l?.gateway==="ttadk",b=d&&l?.acceptsModel!==!1,c=n.model;return d&&!b?c="":b&&!c.trim()?c=a.ttadkModelDefault:!b&&c.trim()===a.ttadkModelDefault&&(c=""),{...n,cliId:o,model:c}}function an(n,o){let a=o.options.some(l=>l.id===n.cliId)?n.cliId:o.options[0]?.id??L.id;return K({...n},a,o)}async function gn(){window.dispatchEvent(new Event(nn))}function rn(n){let{job:o}=n;if(o.status!=="completed"&&o.status!=="needs_owner"||!o.permission)return null;let a=o.permission;if(a.ok){let d=[t("botOnboarding.permissionOk",{count:a.scopeCount??0})];return a.skippedScopeCount&&a.skippedScopeCount>0&&d.push(t("botOnboarding.permissionSkipped",{count:a.skippedScopeCount})),a.versionId&&d.push(t("botOnboarding.permissionVersion",{version:a.versionId})),(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-ok",children:d.join(" ")}),a.scopeWarning?(0,e.jsx)("p",{className:"hint-warn",children:a.scopeWarning}):null]})}let l=o.remainingSteps??[];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("p",{className:"hint-warn",children:[t("botOnboarding.permissionManual"),a.message?`\uFF08${a.message}\uFF09`:""]}),l.length?(0,e.jsx)("ol",{className:"onboarding-steps",children:l.map(d=>(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:d.url,target:"_blank",rel:"noopener",children:d.title})},`${d.title}:${d.url}`))}):null]})}function sn(n){let{job:o}=n;return o.appId?(0,e.jsxs)("p",{className:"onboarding-meta",children:[(0,e.jsx)("b",{children:"App ID:"})," ",(0,e.jsx)("code",{children:o.appId}),o.appName?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.appNameLabel"),":"]})," ",(0,e.jsx)("code",{children:o.appName})]}):null,o.cliId?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsx)("b",{children:"CLI:"})," ",(0,e.jsx)("code",{children:o.cliId})]}):null,o.workingDir?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.metaDir"),":"]})," ",(0,e.jsx)("code",{children:o.workingDir})]}):null]}):null}function W(n){return(0,e.jsxs)("div",{className:"qr-card",children:[(0,e.jsx)("img",{className:"qr-image",src:n.dataUrl,alt:n.alt}),n.link?(0,e.jsx)("a",{className:"onboarding-link",href:n.link,target:"_blank",rel:"noopener",children:t("botOnboarding.openLink")}):null]})}function z(n,o){return n.find(a=>a.value===o)?.label??o}function ln(n){let{job:o,ownerError:a}=n.view;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:`onboarding-status status-${o.status}`,children:tn(o)}),o.status==="waiting_for_scan"&&o.qrDataUrl?(0,e.jsx)(W,{dataUrl:o.qrDataUrl,alt:t("botOnboarding.qrAlt"),link:o.qrUrl}):null,o.status==="waiting_for_platform_scan"&&o.platformQrDataUrl?(0,e.jsx)(W,{dataUrl:o.platformQrDataUrl,alt:t("botOnboarding.platformQrAlt")}):null,(0,e.jsx)(sn,{job:o}),(0,e.jsx)(rn,{job:o}),o.status==="needs_owner"?(0,e.jsxs)("form",{className:"onboarding-form",id:"ob-owner-form",onSubmit:l=>{l.preventDefault(),n.onSubmitOwner(o,n.ownerInput,n.ownerIdInput)},children:[(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerLabel")}),(0,e.jsx)("input",{id:"ob-owner",type:"text",inputMode:"email",placeholder:t("botOnboarding.ownerPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerInput,onChange:l=>n.onOwnerInputChange(l.currentTarget.value)})]}),(0,e.jsx)("p",{className:"hint-warn",children:t("botOnboarding.needsOwnerDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.ownerUseId")}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerIdLabel")}),(0,e.jsx)("input",{id:"ob-owner-id",type:"text",placeholder:t("botOnboarding.ownerIdPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerIdInput,onChange:l=>n.onOwnerIdInputChange(l.currentTarget.value)})]})]}),a?(0,e.jsx)("p",{className:"form-error",children:a}):null,(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",children:t("botOnboarding.ownerSubmit")})})]}):null,o.status==="completed"?(0,e.jsx)("p",{className:"hint-ok",children:o.liveStarted?t("botOnboarding.liveOk"):t("botOnboarding.restartHint")}):null,o.status==="failed"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-warn",children:o.appId?t("botOnboarding.partialFailureDescription"):o.error==="qr_expired"?t("botOnboarding.qrExpiredDescription"):N(o.error)?t("botOnboarding.authIncompleteDescription"):t("botOnboarding.createFailedDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.technicalDetails")}),(0,e.jsx)("code",{children:o.message??o.error??"unknown"})]}),(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")}),o.appId?null:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("button",{type:"button",onClick:()=>n.onRetry("compat"),children:t("botOnboarding.compatibilityMode")}),(0,e.jsx)("button",{type:"button",className:"primary onboarding-submit",onClick:()=>n.onRetry("web"),children:o.error==="qr_expired"?t("botOnboarding.generateQr"):N(o.error)?t("botOnboarding.scanAgain"):t("botOnboarding.retry")})]})]})]}):null,o.status==="completed"?(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")})}):null]})}function dn(n){let o=n.cliState.options.find(s=>s.id===n.form.cliId),a=o?.gateway==="ttadk"&&o.acceptsModel!==!1,l=o?.gateway==="ttadk"&&o.acceptsModel===!1,d=a?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",n.cliState.ttadkModelDefault):t("botOnboarding.modelPlaceholder"),b=n.form.dirMode==="card"?t("botOnboarding.dirLabelCard"):t("botOnboarding.dirLabelFixed"),c=n.form.dirMode==="card"?t("botOnboarding.dirPlaceholderCard"):t("botOnboarding.dirPlaceholderFixed"),f=[...n.cliState.options].sort((s,p)=>s.label.localeCompare(p.label,"en",{sensitivity:"base"})).map(s=>({value:s.id,label:s.available===!1?t("botOnboarding.cliMissingOption",{label:s.label,command:s.command??s.id}):s.label})),S=[{value:"fixed",label:t("botOnboarding.dirModeFixed")},{value:"card",label:t("botOnboarding.dirModeCard")}];return(0,e.jsxs)("form",{id:"onboarding-form",className:"onboarding-form",onSubmit:n.onSubmit,children:[(0,e.jsx)("div",{className:"onboarding-session","aria-live":"polite",children:n.sessionMode==="checking"?(0,e.jsx)("p",{children:t("botOnboarding.sessionChecking")}):n.cliState.webSession.status==="ready"?n.sessionMode==="reuse"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionReady",{user:n.cliState.webSession.identity.userName,tenant:n.cliState.webSession.identity.tenantName})}),n.cliState.webSession.identity.email?(0,e.jsx)("small",{children:n.cliState.webSession.identity.email}):null]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("qr"),children:t("botOnboarding.switchAccount")})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionSwitching")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionSwitchingHint")})]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("reuse"),children:t("botOnboarding.reuseCurrentAccount")})]}):(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionScanRequired")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionScanRequiredHint")})]})}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.appNameLabel")}),(0,e.jsx)("input",{id:"ob-app-name",type:"text",maxLength:64,value:n.form.appName,placeholder:t("botOnboarding.appNamePlaceholder"),autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,appName:s.currentTarget.value})}),(0,e.jsx)("small",{className:"onboarding-field-hint",children:t("botOnboarding.appNameHint",{name:n.cliState.suggestedAppName})})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.cliLabel")}),(0,e.jsx)(T,{id:"ob-cli",className:"onboarding-menu",ariaLabel:t("botOnboarding.cliLabel"),label:z(f,n.form.cliId),value:n.form.cliId,options:f,searchable:!0,searchPlaceholder:t("common.dropdownSearch"),searchEmptyLabel:t("common.dropdownSearchEmpty"),onChange:s=>{n.onFormChange(K(n.form,s,n.cliState))}}),o?.available===!1?(0,e.jsx)("small",{className:"hint-warn",children:t("botOnboarding.cliMissingHint",{command:o.command??n.form.cliId})}):(0,e.jsx)("small",{className:"onboarding-field-hint",children:n.form.cliId})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.dirModeLabel")}),(0,e.jsx)(T,{id:"ob-dir-mode",className:"onboarding-menu",ariaLabel:t("botOnboarding.dirModeLabel"),label:z(S,n.form.dirMode),value:n.form.dirMode,options:S,onChange:s=>n.onFormChange({...n.form,dirMode:s})})]}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:b}),(0,e.jsx)("input",{id:"ob-dir",type:"text",value:n.form.workingDir,placeholder:c,autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,workingDir:s.currentTarget.value})})]}),l?null:(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.modelLabel")}),(0,e.jsx)("input",{id:"ob-model",type:"text",list:a?"ob-model-suggestions":void 0,placeholder:d,autoComplete:"off",spellCheck:!1,value:n.form.model,onChange:s=>n.onFormChange({...n.form,model:s.currentTarget.value})}),a?(0,e.jsx)("datalist",{id:"ob-model-suggestions",children:n.cliState.ttadkModelSuggestions.map(s=>(0,e.jsx)("option",{value:s},s))}):null]}),n.error?(0,e.jsx)("p",{className:"form-error",children:n.error}):null,(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",id:"ob-cancel",disabled:n.submitting,onClick:n.onClose,children:t("botOnboarding.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",disabled:en(n.submitting,n.sessionMode),children:n.submitting?t("botOnboarding.starting"):n.sessionMode==="reuse"?t("botOnboarding.confirmReuse"):t("botOnboarding.startScan")})]})]})}function un(n){let o=(0,r.useRef)(null),a=(0,r.useRef)(null),l=(0,r.useRef)(0),[d,b]=(0,r.useState)(()=>x()),[c,f]=(0,r.useState)(()=>Q()),[S,s]=(0,r.useState)("checking"),[p,w]=(0,r.useState)({kind:"form"}),[P,I]=(0,r.useState)(!1),[R,M]=(0,r.useState)(""),[A,_]=(0,r.useState)(""),g=(0,r.useCallback)(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]),v=(0,r.useCallback)(()=>{g(),n.onClose()},[n,g]),y=(0,r.useCallback)(i=>{w({kind:"job",job:i}),i.status==="needs_owner"&&(M(i.suggestedOwner??""),_("")),X(i)&&g()},[g]),J=(0,r.useCallback)(async i=>{let m=await fetch(`/api/bot-onboarding/${encodeURIComponent(i)}`),u=await m.json();if(!m.ok||!u?.job)throw new Error(u?.error??`http_${m.status}`);y(u.job)},[y]),j=(0,r.useCallback)(i=>{g(),a.current=window.setInterval(()=>{J(i).catch(m=>{g(),w({kind:"job",job:{id:i,status:"failed",message:q(m)}})})},1200)},[J,g]),U=(0,r.useCallback)(()=>{g();let i=l.current+1;l.current=i;let m=x();b(m),f(Q()),s("checking"),w({kind:"form"}),I(!1),M(""),_(""),on().then(u=>{l.current===i&&(b(u),f(k=>an(k,u)),s(u.webSession.status==="ready"?"reuse":"qr"))})},[g]);(0,r.useEffect)(()=>{if(n.open){U();return}g(),l.current+=1},[n.open,U,g]),(0,r.useEffect)(()=>{let i=o.current;if(i)if(n.open&&!i.open)try{i.showModal()}catch{}else!n.open&&i.open&&i.close()},[n.open]),(0,r.useEffect)(()=>()=>g(),[g]);let C=(0,r.useCallback)(async(i,m)=>{g(),I(!0),w({kind:"job",job:{id:"",status:"starting"}});try{let u=m??(S==="reuse"?"reuse":"qr"),k=i==="web"&&u==="reuse"&&d.webSession.status==="ready"?{userId:d.webSession.identity.userId,tenantId:d.webSession.identity.tenantId}:void 0,h=await fetch("/api/bot-onboarding/start",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({appName:i==="web"&&c.appName.trim()||void 0,registrationMode:i,...i==="web"?{sessionMode:u,expectedIdentity:k}:{},cliId:c.cliId,workingDir:c.workingDir.trim(),dirMode:c.dirMode,model:c.model.trim()||void 0})}),O=await h.json();if(h.status===400){w({kind:"form",error:O?.message??O?.error??"invalid_input"});return}if(!h.ok||!O?.job?.id)throw new Error(O?.error??`http_${h.status}`);let F=O.job;y(F),X(F)||j(F.id)}catch(u){w({kind:"job",job:{id:"",status:"failed",message:q(u)}})}finally{I(!1)}},[y,d.webSession,c,S,j,g]),H=(0,r.useCallback)(i=>{i.preventDefault(),C("web")},[C]),$=(0,r.useCallback)(i=>{if(i==="compat"&&!window.confirm(t("botOnboarding.compatibilityConfirm")))return;let m=i==="web"&&p.kind==="job"&&N(p.job.error);m&&s("qr"),C(i,m?"qr":void 0)},[C,p]),V=(0,r.useCallback)(async(i,m,u)=>{let k=[m.trim(),u.trim()].filter(Boolean).join(",");if(!k){w({kind:"job",job:i,ownerError:t("botOnboarding.ownerEmpty")});return}try{let h=await fetch(`/api/bot-onboarding/${encodeURIComponent(i.id)}/owner`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:k})}),O=await h.json();if(!h.ok){w({kind:"job",job:i,ownerError:O?.message??O?.error??t("botOnboarding.ownerInvalid")});return}O?.job&&y(O.job)}catch(h){w({kind:"job",job:i,ownerError:q(h)})}},[y]),Y=(0,r.useMemo)(()=>p.kind==="form"?(0,e.jsx)(dn,{cliState:d,form:c,sessionMode:S,error:p.error,submitting:P,onFormChange:f,onSessionModeChange:s,onSubmit:H,onClose:v}):(0,e.jsx)(ln,{view:p,ownerInput:R,ownerIdInput:A,onOwnerInputChange:M,onOwnerIdInputChange:_,onSubmitOwner:V,onRetry:$,onClose:v}),[d,v,c,A,R,$,S,H,V,P,p]),D=p.kind==="form"||p.kind==="job"&&(p.job.status==="completed"||p.job.status==="failed");return(0,e.jsx)("dialog",{className:"onboarding-dialog",ref:o,onCancel:i=>{D||i.preventDefault()},onClose:()=>{D&&v()},onClick:i=>{D&&i.target===i.currentTarget&&v()},children:(0,e.jsxs)("article",{className:"onboarding-card",children:[(0,e.jsxs)("header",{className:"onboarding-header",children:[(0,e.jsx)("h3",{children:t("botOnboarding.title")}),(0,e.jsx)("p",{children:t("botOnboarding.intro")})]}),Y]})})}export{nn as a,gn as b,un as c};
|
|
1
|
+
import{q as T}from"./chunk-5CJMHTT4.js";import{u as t}from"./chunk-MFQPCVHY.js";import{a as Z,d as B}from"./chunk-5THX4DI2.js";import{c as E}from"./chunk-7SZRL6FY.js";var r=E(Z(),1);var e=E(B(),1),nn="botmux:open-bot-onboarding",L={id:"claude-code",label:"Claude"},G="glm-5.1";function x(){return{options:[L],ttadkModelDefault:G,ttadkModelSuggestions:[],suggestedAppName:"botmux-0",webSession:{status:"checking"}}}function Q(){return{appName:"",cliId:L.id,dirMode:"fixed",workingDir:"~",model:""}}function en(n,o){return n||o==="checking"}function q(n){return n instanceof Error?n.message:String(n)}function X(n){return n.status==="completed"||n.status==="failed"||n.status==="needs_owner"}function N(n){return n==="login_failed"||n==="invalid_session"||n==="identity_unavailable"||n==="session_changed"}function tn(n){return n.status==="waiting_for_scan"?n.registrationMode==="compat"?t("botOnboarding.waitingCompat"):t("botOnboarding.waiting",{name:n.appName??""}):n.status==="verifying"?t("botOnboarding.verifying"):n.status==="configuring_permissions"?n.permissionStatusMsg?`${t("botOnboarding.configuringPermissions")} ${n.permissionStatusMsg}`:t("botOnboarding.configuringPermissions"):n.status==="waiting_for_platform_scan"?t("botOnboarding.platformScanHint"):n.status==="needs_owner"?t("botOnboarding.needsOwnerTitle"):n.status==="completed"?t("botOnboarding.completed",{name:n.appName??t("botOnboarding.botFallback")}):n.status==="failed"?n.appId?t("botOnboarding.partialFailureTitle"):n.error==="qr_expired"?t("botOnboarding.qrExpiredTitle"):N(n.error)?t("botOnboarding.authIncompleteTitle"):t("botOnboarding.createFailedTitle"):t("botOnboarding.starting")}async function on(){try{let n=await fetch("/api/cli-options"),o=await n.json();if(n.ok&&Array.isArray(o?.options)){let a=typeof o.ttadkModelDefault=="string"&&o.ttadkModelDefault.trim()?o.ttadkModelDefault.trim():G,l=Array.isArray(o.ttadkModelSuggestions)?o.ttadkModelSuggestions.filter(f=>typeof f=="string"):[],d=typeof o.suggestedAppName=="string"&&o.suggestedAppName.trim()?o.suggestedAppName.trim():"botmux-0",b=o?.webSession?.identity,c=o?.webSession?.status==="ready"&&typeof b?.userId=="string"&&typeof b?.userName=="string"&&typeof b?.tenantId=="string"&&typeof b?.tenantName=="string"?{status:"ready",source:typeof o.webSession.source=="string"?o.webSession.source:"botmux_cache",identity:{userId:b.userId,userName:b.userName,...typeof b.email=="string"?{email:b.email}:{},tenantId:b.tenantId,tenantName:b.tenantName}}:{status:"scan_required",...typeof o?.webSession?.reason=="string"?{reason:o.webSession.reason}:{}};return{options:o.options,ttadkModelDefault:a,ttadkModelSuggestions:l,suggestedAppName:d,webSession:c}}}catch{}return{...x(),webSession:{status:"scan_required"}}}function K(n,o,a){let l=a.options.find(f=>f.id===o),d=l?.gateway==="ttadk",b=d&&l?.acceptsModel!==!1,c=n.model;return d&&!b?c="":b&&!c.trim()?c=a.ttadkModelDefault:!b&&c.trim()===a.ttadkModelDefault&&(c=""),{...n,cliId:o,model:c}}function an(n,o){let a=o.options.some(l=>l.id===n.cliId)?n.cliId:o.options[0]?.id??L.id;return K({...n},a,o)}async function gn(){window.dispatchEvent(new Event(nn))}function rn(n){let{job:o}=n;if(o.status!=="completed"&&o.status!=="needs_owner"||!o.permission)return null;let a=o.permission;if(a.ok){let d=[t("botOnboarding.permissionOk",{count:a.scopeCount??0})];return a.skippedScopeCount&&a.skippedScopeCount>0&&d.push(t("botOnboarding.permissionSkipped",{count:a.skippedScopeCount})),a.versionId&&d.push(t("botOnboarding.permissionVersion",{version:a.versionId})),(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-ok",children:d.join(" ")}),a.scopeWarning?(0,e.jsx)("p",{className:"hint-warn",children:a.scopeWarning}):null]})}let l=o.remainingSteps??[];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("p",{className:"hint-warn",children:[t("botOnboarding.permissionManual"),a.message?`\uFF08${a.message}\uFF09`:""]}),l.length?(0,e.jsx)("ol",{className:"onboarding-steps",children:l.map(d=>(0,e.jsx)("li",{children:(0,e.jsx)("a",{href:d.url,target:"_blank",rel:"noopener",children:d.title})},`${d.title}:${d.url}`))}):null]})}function sn(n){let{job:o}=n;return o.appId?(0,e.jsxs)("p",{className:"onboarding-meta",children:[(0,e.jsx)("b",{children:"App ID:"})," ",(0,e.jsx)("code",{children:o.appId}),o.appName?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.appNameLabel"),":"]})," ",(0,e.jsx)("code",{children:o.appName})]}):null,o.cliId?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsx)("b",{children:"CLI:"})," ",(0,e.jsx)("code",{children:o.cliId})]}):null,o.workingDir?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("span",{children:" / "}),(0,e.jsxs)("b",{children:[t("botOnboarding.metaDir"),":"]})," ",(0,e.jsx)("code",{children:o.workingDir})]}):null]}):null}function W(n){return(0,e.jsxs)("div",{className:"qr-card",children:[(0,e.jsx)("img",{className:"qr-image",src:n.dataUrl,alt:n.alt}),n.link?(0,e.jsx)("a",{className:"onboarding-link",href:n.link,target:"_blank",rel:"noopener",children:t("botOnboarding.openLink")}):null]})}function z(n,o){return n.find(a=>a.value===o)?.label??o}function ln(n){let{job:o,ownerError:a}=n.view;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:`onboarding-status status-${o.status}`,children:tn(o)}),o.status==="waiting_for_scan"&&o.qrDataUrl?(0,e.jsx)(W,{dataUrl:o.qrDataUrl,alt:t("botOnboarding.qrAlt"),link:o.qrUrl}):null,o.status==="waiting_for_platform_scan"&&o.platformQrDataUrl?(0,e.jsx)(W,{dataUrl:o.platformQrDataUrl,alt:t("botOnboarding.platformQrAlt")}):null,(0,e.jsx)(sn,{job:o}),(0,e.jsx)(rn,{job:o}),o.status==="needs_owner"?(0,e.jsxs)("form",{className:"onboarding-form",id:"ob-owner-form",onSubmit:l=>{l.preventDefault(),n.onSubmitOwner(o,n.ownerInput,n.ownerIdInput)},children:[(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerLabel")}),(0,e.jsx)("input",{id:"ob-owner",type:"text",inputMode:"email",placeholder:t("botOnboarding.ownerPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerInput,onChange:l=>n.onOwnerInputChange(l.currentTarget.value)})]}),(0,e.jsx)("p",{className:"hint-warn",children:t("botOnboarding.needsOwnerDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.ownerUseId")}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.ownerIdLabel")}),(0,e.jsx)("input",{id:"ob-owner-id",type:"text",placeholder:t("botOnboarding.ownerIdPlaceholder"),autoComplete:"off",spellCheck:!1,value:n.ownerIdInput,onChange:l=>n.onOwnerIdInputChange(l.currentTarget.value)})]})]}),a?(0,e.jsx)("p",{className:"form-error",children:a}):null,(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",children:t("botOnboarding.ownerSubmit")})})]}):null,o.status==="completed"?(0,e.jsx)("p",{className:"hint-ok",children:o.liveStarted?t("botOnboarding.liveOk"):t("botOnboarding.restartHint")}):null,o.status==="failed"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("p",{className:"hint-warn",children:o.appId?t("botOnboarding.partialFailureDescription"):o.error==="qr_expired"?t("botOnboarding.qrExpiredDescription"):N(o.error)?t("botOnboarding.authIncompleteDescription"):t("botOnboarding.createFailedDescription")}),(0,e.jsxs)("details",{className:"onboarding-technical",children:[(0,e.jsx)("summary",{children:t("botOnboarding.technicalDetails")}),(0,e.jsx)("code",{children:o.message??o.error??"unknown"})]}),(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")}),o.appId?null:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("button",{type:"button",onClick:()=>n.onRetry("compat"),children:t("botOnboarding.compatibilityMode")}),(0,e.jsx)("button",{type:"button",className:"primary onboarding-submit",onClick:()=>n.onRetry("web"),children:o.error==="qr_expired"?t("botOnboarding.generateQr"):N(o.error)?t("botOnboarding.scanAgain"):t("botOnboarding.retry")})]})]})]}):null,o.status==="completed"?(0,e.jsx)("div",{className:"actions onboarding-actions",children:(0,e.jsx)("button",{type:"button",onClick:n.onClose,children:t("botOnboarding.close")})}):null]})}function dn(n){let o=n.cliState.options.find(s=>s.id===n.form.cliId),a=o?.gateway==="ttadk"&&o.acceptsModel!==!1,l=o?.gateway==="ttadk"&&o.acceptsModel===!1,d=a?t("botOnboarding.modelTtadkPlaceholder").replace("{model}",n.cliState.ttadkModelDefault):t("botOnboarding.modelPlaceholder"),b=n.form.dirMode==="card"?t("botOnboarding.dirLabelCard"):t("botOnboarding.dirLabelFixed"),c=n.form.dirMode==="card"?t("botOnboarding.dirPlaceholderCard"):t("botOnboarding.dirPlaceholderFixed"),f=[...n.cliState.options].sort((s,p)=>s.label.localeCompare(p.label,"en",{sensitivity:"base"})).map(s=>({value:s.id,label:s.available===!1?t("botOnboarding.cliMissingOption",{label:s.label,command:s.command??s.id}):s.label})),S=[{value:"fixed",label:t("botOnboarding.dirModeFixed")},{value:"card",label:t("botOnboarding.dirModeCard")}];return(0,e.jsxs)("form",{id:"onboarding-form",className:"onboarding-form",onSubmit:n.onSubmit,children:[(0,e.jsx)("div",{className:"onboarding-session","aria-live":"polite",children:n.sessionMode==="checking"?(0,e.jsx)("p",{children:t("botOnboarding.sessionChecking")}):n.cliState.webSession.status==="ready"?n.sessionMode==="reuse"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionReady",{user:n.cliState.webSession.identity.userName,tenant:n.cliState.webSession.identity.tenantName})}),n.cliState.webSession.identity.email?(0,e.jsx)("small",{children:n.cliState.webSession.identity.email}):null]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("qr"),children:t("botOnboarding.switchAccount")})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionSwitching")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionSwitchingHint")})]}),(0,e.jsx)("button",{type:"button",className:"onboarding-session-action",onClick:()=>n.onSessionModeChange("reuse"),children:t("botOnboarding.reuseCurrentAccount")})]}):(0,e.jsxs)("div",{children:[(0,e.jsx)("strong",{children:t("botOnboarding.sessionScanRequired")}),(0,e.jsx)("small",{children:t("botOnboarding.sessionScanRequiredHint")})]})}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.appNameLabel")}),(0,e.jsx)("input",{id:"ob-app-name",type:"text",maxLength:64,value:n.form.appName,placeholder:t("botOnboarding.appNamePlaceholder"),autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,appName:s.currentTarget.value})}),(0,e.jsx)("small",{className:"onboarding-field-hint",children:t("botOnboarding.appNameHint",{name:n.cliState.suggestedAppName})})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.cliLabel")}),(0,e.jsx)(T,{id:"ob-cli",className:"onboarding-menu",ariaLabel:t("botOnboarding.cliLabel"),label:z(f,n.form.cliId),value:n.form.cliId,options:f,searchable:!0,searchPlaceholder:t("common.dropdownSearch"),searchEmptyLabel:t("common.dropdownSearchEmpty"),onChange:s=>{n.onFormChange(K(n.form,s,n.cliState))}}),o?.available===!1?(0,e.jsx)("small",{className:"hint-warn",children:t("botOnboarding.cliMissingHint",{command:o.command??n.form.cliId})}):(0,e.jsx)("small",{className:"onboarding-field-hint",children:n.form.cliId})]}),(0,e.jsxs)("div",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.dirModeLabel")}),(0,e.jsx)(T,{id:"ob-dir-mode",className:"onboarding-menu",ariaLabel:t("botOnboarding.dirModeLabel"),label:z(S,n.form.dirMode),value:n.form.dirMode,options:S,onChange:s=>n.onFormChange({...n.form,dirMode:s})})]}),(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:b}),(0,e.jsx)("input",{id:"ob-dir",type:"text",value:n.form.workingDir,placeholder:c,autoComplete:"off",spellCheck:!1,onChange:s=>n.onFormChange({...n.form,workingDir:s.currentTarget.value})})]}),l?null:(0,e.jsxs)("label",{className:"onboarding-field",children:[(0,e.jsx)("span",{children:t("botOnboarding.modelLabel")}),(0,e.jsx)("input",{id:"ob-model",type:"text",list:a?"ob-model-suggestions":void 0,placeholder:d,autoComplete:"off",spellCheck:!1,value:n.form.model,onChange:s=>n.onFormChange({...n.form,model:s.currentTarget.value})}),a?(0,e.jsx)("datalist",{id:"ob-model-suggestions",children:n.cliState.ttadkModelSuggestions.map(s=>(0,e.jsx)("option",{value:s},s))}):null]}),n.error?(0,e.jsx)("p",{className:"form-error",children:n.error}):null,(0,e.jsxs)("div",{className:"actions onboarding-actions",children:[(0,e.jsx)("button",{type:"button",id:"ob-cancel",disabled:n.submitting,onClick:n.onClose,children:t("botOnboarding.cancel")}),(0,e.jsx)("button",{type:"submit",className:"primary onboarding-submit",disabled:en(n.submitting,n.sessionMode),children:n.submitting?t("botOnboarding.starting"):n.sessionMode==="reuse"?t("botOnboarding.confirmReuse"):t("botOnboarding.startScan")})]})]})}function un(n){let o=(0,r.useRef)(null),a=(0,r.useRef)(null),l=(0,r.useRef)(0),[d,b]=(0,r.useState)(()=>x()),[c,f]=(0,r.useState)(()=>Q()),[S,s]=(0,r.useState)("checking"),[p,w]=(0,r.useState)({kind:"form"}),[P,I]=(0,r.useState)(!1),[R,M]=(0,r.useState)(""),[A,_]=(0,r.useState)(""),g=(0,r.useCallback)(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]),v=(0,r.useCallback)(()=>{g(),n.onClose()},[n,g]),y=(0,r.useCallback)(i=>{w({kind:"job",job:i}),i.status==="needs_owner"&&(M(i.suggestedOwner??""),_("")),X(i)&&g()},[g]),J=(0,r.useCallback)(async i=>{let m=await fetch(`/api/bot-onboarding/${encodeURIComponent(i)}`),u=await m.json();if(!m.ok||!u?.job)throw new Error(u?.error??`http_${m.status}`);y(u.job)},[y]),j=(0,r.useCallback)(i=>{g(),a.current=window.setInterval(()=>{J(i).catch(m=>{g(),w({kind:"job",job:{id:i,status:"failed",message:q(m)}})})},1200)},[J,g]),U=(0,r.useCallback)(()=>{g();let i=l.current+1;l.current=i;let m=x();b(m),f(Q()),s("checking"),w({kind:"form"}),I(!1),M(""),_(""),on().then(u=>{l.current===i&&(b(u),f(k=>an(k,u)),s(u.webSession.status==="ready"?"reuse":"qr"))})},[g]);(0,r.useEffect)(()=>{if(n.open){U();return}g(),l.current+=1},[n.open,U,g]),(0,r.useEffect)(()=>{let i=o.current;if(i)if(n.open&&!i.open)try{i.showModal()}catch{}else!n.open&&i.open&&i.close()},[n.open]),(0,r.useEffect)(()=>()=>g(),[g]);let C=(0,r.useCallback)(async(i,m)=>{g(),I(!0),w({kind:"job",job:{id:"",status:"starting"}});try{let u=m??(S==="reuse"?"reuse":"qr"),k=i==="web"&&u==="reuse"&&d.webSession.status==="ready"?{userId:d.webSession.identity.userId,tenantId:d.webSession.identity.tenantId}:void 0,h=await fetch("/api/bot-onboarding/start",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({appName:i==="web"&&c.appName.trim()||void 0,registrationMode:i,...i==="web"?{sessionMode:u,expectedIdentity:k}:{},cliId:c.cliId,workingDir:c.workingDir.trim(),dirMode:c.dirMode,model:c.model.trim()||void 0})}),O=await h.json();if(h.status===400){w({kind:"form",error:O?.message??O?.error??"invalid_input"});return}if(!h.ok||!O?.job?.id)throw new Error(O?.error??`http_${h.status}`);let F=O.job;y(F),X(F)||j(F.id)}catch(u){w({kind:"job",job:{id:"",status:"failed",message:q(u)}})}finally{I(!1)}},[y,d.webSession,c,S,j,g]),H=(0,r.useCallback)(i=>{i.preventDefault(),C("web")},[C]),$=(0,r.useCallback)(i=>{if(i==="compat"&&!window.confirm(t("botOnboarding.compatibilityConfirm")))return;let m=i==="web"&&p.kind==="job"&&N(p.job.error);m&&s("qr"),C(i,m?"qr":void 0)},[C,p]),V=(0,r.useCallback)(async(i,m,u)=>{let k=[m.trim(),u.trim()].filter(Boolean).join(",");if(!k){w({kind:"job",job:i,ownerError:t("botOnboarding.ownerEmpty")});return}try{let h=await fetch(`/api/bot-onboarding/${encodeURIComponent(i.id)}/owner`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({owner:k})}),O=await h.json();if(!h.ok){w({kind:"job",job:i,ownerError:O?.message??O?.error??t("botOnboarding.ownerInvalid")});return}O?.job&&y(O.job)}catch(h){w({kind:"job",job:i,ownerError:q(h)})}},[y]),Y=(0,r.useMemo)(()=>p.kind==="form"?(0,e.jsx)(dn,{cliState:d,form:c,sessionMode:S,error:p.error,submitting:P,onFormChange:f,onSessionModeChange:s,onSubmit:H,onClose:v}):(0,e.jsx)(ln,{view:p,ownerInput:R,ownerIdInput:A,onOwnerInputChange:M,onOwnerIdInputChange:_,onSubmitOwner:V,onRetry:$,onClose:v}),[d,v,c,A,R,$,S,H,V,P,p]),D=p.kind==="form"||p.kind==="job"&&(p.job.status==="completed"||p.job.status==="failed");return(0,e.jsx)("dialog",{className:"onboarding-dialog",ref:o,onCancel:i=>{D||i.preventDefault()},onClose:()=>{D&&v()},onClick:i=>{D&&i.target===i.currentTarget&&v()},children:(0,e.jsxs)("article",{className:"onboarding-card",children:[(0,e.jsxs)("header",{className:"onboarding-header",children:[(0,e.jsx)("h3",{children:t("botOnboarding.title")}),(0,e.jsx)("p",{children:t("botOnboarding.intro")})]}),Y]})})}export{nn as a,gn as b,un as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as i,H as c,d as r}from"./chunk-
|
|
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};
|