botmux 3.6.0 → 3.7.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/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +7 -6
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +8 -7
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +5 -2
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +15 -6
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/fs-policy.d.ts +62 -6
- package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
- package/dist/adapters/cli/fs-policy.js +70 -7
- package/dist/adapters/cli/fs-policy.js.map +1 -1
- package/dist/bot-registry.d.ts +13 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +15 -7
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
- package/dist/cli/daemon-lifecycle-env.js +12 -0
- package/dist/cli/daemon-lifecycle-env.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +23 -7
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts +7 -5
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +37 -21
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +3 -0
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +12 -9
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +1 -0
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/initial-user-turn.d.ts +14 -0
- package/dist/core/initial-user-turn.d.ts.map +1 -0
- package/dist/core/initial-user-turn.js +65 -0
- package/dist/core/initial-user-turn.js.map +1 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +6 -0
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/per-bot-env.d.ts.map +1 -1
- package/dist/core/per-bot-env.js +10 -0
- package/dist/core/per-bot-env.js.map +1 -1
- package/dist/core/plugins/pm2.d.ts.map +1 -1
- package/dist/core/plugins/pm2.js +4 -0
- package/dist/core/plugins/pm2.js.map +1 -1
- package/dist/core/session-discovery.d.ts +23 -0
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +162 -82
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +23 -4
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/worker-pool.d.ts +2 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +27 -4
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +18 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +205 -39
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +29 -5
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/bot-payload.js +3 -3
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +5 -5
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js +1 -1
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/i18n.js +18 -18
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-VQMPUJ4Y.js → bot-defaults-page-UKA7K4JV.js} +2 -2
- package/dist/dashboard-web/chunks/{chunk-NP4JUBGS.js → chunk-3QAUJXAS.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-JMRGZQDB.js → chunk-FLGXZJTD.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-FNPGOZMX.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-SNKATZWK.js → chunk-KQB42ML5.js} +4 -4
- package/dist/dashboard-web/chunks/{connectors-page-DOY4J3ZL.js → connectors-page-A77YAB5Y.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-74TS2DIH.js → groups-page-RUZNVXQB.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-AYCO65JC.js → insights-page-RF7U7RTA.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-YKYLTSAN.js → monitor-room-7IVIS75W.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-QBIUNRBR.js → monitoring-page-5SSJRQZF.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-4PH2A26P.js → office-page-EOND3L5D.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-H73D5UT4.js → overview-page-NISBVBBJ.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-U4BTOQ7F.js → roles-page-BUMKD7Y4.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-RHRHX7R7.js → schedules-page-AVOOKLUH.js} +1 -1
- package/dist/dashboard-web/chunks/{sessions-page-VSC6AM5G.js → sessions-page-6HLSEAB7.js} +2 -2
- package/dist/dashboard-web/chunks/{settings-page-LF3RKM5P.js → settings-page-MJDZHQ4X.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-SYOIGGXH.js → skills-page-5MW54PCC.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-RMBLASTW.js → team-federation-page-2SNIMVXI.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-XJXKKJRN.js → v3-page-W6SBXXQC.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-K3YVSTHJ.js → whiteboards-page-STC54KTP.js} +1 -1
- package/dist/dashboard-web/style.css +5 -0
- package/dist/dashboard.js +2 -2
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/main/dashboard-compat.js +1 -1
- package/dist/i18n/en.js +6 -6
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.js +6 -6
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +5 -4
- 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 +40 -7
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +82 -1
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +46 -12
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/relay-target-routing.d.ts.map +1 -1
- package/dist/im/lark/relay-target-routing.js +12 -11
- package/dist/im/lark/relay-target-routing.js.map +1 -1
- package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
- package/dist/im/lark/reply-mode-command.js +4 -3
- package/dist/im/lark/reply-mode-command.js.map +1 -1
- package/dist/index-daemon.js +6 -1
- package/dist/index-daemon.js.map +1 -1
- package/dist/mir-runner.js +1 -1
- package/dist/mir-runner.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +1 -1
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +1 -1
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/card-prefs-store.js +8 -8
- package/dist/services/card-prefs-store.js.map +1 -1
- package/dist/services/chat-reply-mode-store.d.ts.map +1 -1
- package/dist/services/chat-reply-mode-store.js +16 -11
- package/dist/services/chat-reply-mode-store.js.map +1 -1
- package/dist/services/insight/types.d.ts +3 -1
- package/dist/services/insight/types.d.ts.map +1 -1
- package/dist/services/insight/types.js.map +1 -1
- package/dist/services/project-scanner.d.ts +4 -4
- package/dist/services/project-scanner.d.ts.map +1 -1
- package/dist/services/project-scanner.js +13 -5
- package/dist/services/project-scanner.js.map +1 -1
- package/dist/services/transcript-resolver.d.ts +4 -0
- package/dist/services/transcript-resolver.d.ts.map +1 -1
- package/dist/services/transcript-resolver.js +53 -5
- package/dist/services/transcript-resolver.js.map +1 -1
- package/dist/services/usage-ledger.d.ts.map +1 -1
- package/dist/services/usage-ledger.js +1 -0
- package/dist/services/usage-ledger.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts +37 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +61 -3
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/setup-args.js +1 -1
- package/dist/setup/setup-args.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/allowed-users-apply.d.ts.map +1 -1
- package/dist/utils/allowed-users-apply.js +3 -2
- package/dist/utils/allowed-users-apply.js.map +1 -1
- package/dist/utils/child-env.d.ts +31 -2
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +61 -3
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/file-lock.d.ts +10 -0
- package/dist/utils/file-lock.d.ts.map +1 -1
- package/dist/utils/file-lock.js +295 -53
- package/dist/utils/file-lock.js.map +1 -1
- package/dist/worker.js +52 -3
- package/dist/worker.js.map +1 -1
- package/dist/workflows/v3/run-envelope.d.ts +24 -24
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/chunk-P327LXOT.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as st,b as it}from"./chunks/chunk-NP4JUBGS.js";import{b as Re,d as ot,e as at,g as rt}from"./chunks/chunk-AGCPF6MT.js";import{a as Ze}from"./chunks/chunk-BD3PZGH2.js";import{a as de,b as tt,c as nt}from"./chunks/chunk-P327LXOT.js";import{i as et}from"./chunks/chunk-QFMH6ITB.js";import{C as Je,E as Xe,H as Ye,I as le,a as se,b as qe,e as ie,t as g,u as s,v as je,w as Ge}from"./chunks/chunk-SNKATZWK.js";import{a as Qt,c as en,d as Qe}from"./chunks/chunk-5THX4DI2.js";import{c as re}from"./chunks/chunk-7SZRL6FY.js";var Ut=re(en(),1),u=re(Qt(),1);var Te="botmux:close-theme-menu",tn={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"/>'},dt=[{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"}]}],lt=dt.flatMap(e=>e.options),T=!1,J=null,X=null,nn=70,on=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">${tn[e]??""}</svg>`}function an(e){return e.replace(/[&<>"]/g,n=>({"&":"&","<":"<",">":">",'"':"""})[n])}function ct(){let e=document.getElementById("theme-menu"),n=document.getElementById("theme-menu-btn"),o=document.getElementById("theme-menu-pop");if(!e||!n||!o||e.dataset.themeMenuInit==="1")return;e.dataset.themeMenuInit="1",o.innerHTML=dt.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(!T)return;let c=n.getBoundingClientRect(),f=12,p=Math.min(Math.max(o.offsetWidth||216,216),Math.max(0,window.innerWidth-f*2)),E=f+p/2,v=window.innerWidth-f-p/2,w=c.left+c.width/2,R=Math.min(Math.max(w,E),Math.max(E,v)),x=Math.max(180,window.innerHeight-c.bottom-20);o.style.setProperty("--theme-menu-pop-left",`${Math.round(R)}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),T=c,n.setAttribute("aria-expanded",String(T)),document.body.classList.toggle("theme-menu-open",T),T?(o.hidden=!1,a(),window.requestAnimationFrame(()=>e.classList.add("open"))):(e.classList.remove("open"),X=window.setTimeout(()=>{X=null,T||(o.hidden=!0)},on))},i=()=>r(!0),l=()=>{J==null&&(J=window.setTimeout(()=>r(!1),nn))},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),n.addEventListener("click",c=>{c.stopPropagation(),r(!T)}),n.addEventListener("focus",()=>{n.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=>{T&&!e.contains(c.target)&&r(!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&&r(!1)}),window.addEventListener("resize",a),window.addEventListener("scroll",a,!0),window.addEventListener(Te,()=>{T&&r(!1)}),Se()}function Se(){let e=document.getElementById("theme-menu-btn");if(!e)return;let n=lt.find(o=>o.value===g.theme)??lt[0];e.innerHTML=`<span class="tm-ic">${Me("palette")}</span><span class="tm-current">${an(s(n.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,n,o,a,r=!1){return{id:e,routePrefix:n,rerenderOnUiChange:r,load:async()=>(await o())[a]}}var rn=[{id:"plugins",routePrefix:"#/plugins",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/plugin-page-JXC5F5YV.js");return n=>e.renderPluginPage(n)}},b("workflows","#/workflows",()=>import("./chunks/v3-page-XJXKKJRN.js"),"renderV3RunsPage"),b("groups","#/groups",()=>import("./chunks/groups-page-74TS2DIH.js"),"renderGroupsPage"),b("settings","#/settings",()=>import("./chunks/settings-page-LF3RKM5P.js"),"renderSettingsPage"),b("bot-defaults","#/bot-defaults",()=>import("./chunks/bot-defaults-page-VQMPUJ4Y.js"),"renderBotDefaultsPage"),b("skills","#/skills",()=>import("./chunks/skills-page-SYOIGGXH.js"),"renderSkillsPage"),b("connectors-logs","#/connectors/logs",()=>import("./chunks/connectors-page-DOY4J3ZL.js"),"renderConnectorsLogsPage"),b("webhook-logs","#/webhook-logs",()=>import("./chunks/connectors-page-DOY4J3ZL.js"),"renderConnectorsLogsPage"),b("connectors","#/connectors",()=>import("./chunks/connectors-page-DOY4J3ZL.js"),"renderConnectorsPage"),b("team-manage","#/team/manage",()=>import("./chunks/team-federation-page-RMBLASTW.js"),"renderTeamManagePage"),b("team","#/team",()=>import("./chunks/team-federation-page-RMBLASTW.js"),"renderTeamFederationPage"),b("roles-profile","#/roles/profile",()=>import("./chunks/roles-page-U4BTOQ7F.js"),"renderRoleProfilesPage"),b("roles","#/roles",()=>import("./chunks/roles-page-U4BTOQ7F.js"),"renderRolesPage"),b("schedules","#/schedules",()=>import("./chunks/schedules-page-RHRHX7R7.js"),"renderSchedulesPage"),b("whiteboards","#/whiteboards",()=>import("./chunks/whiteboards-page-K3YVSTHJ.js"),"renderWhiteboardsPage"),b("monitoring","#/monitoring",()=>import("./chunks/monitoring-page-QBIUNRBR.js"),"renderMonitoringPage"),b("sessions","#/sessions",()=>import("./chunks/sessions-page-VSC6AM5G.js"),"renderSessionsPage"),b("monitor-room","#/monitor-room",()=>import("./chunks/monitor-room-YKYLTSAN.js"),"renderMonitorRoomPage",!0),b("office","#/office",()=>import("./chunks/office-page-4PH2A26P.js"),"renderOfficePage"),b("insights","#/insights",()=>import("./chunks/insights-page-AYCO65JC.js"),"renderInsightsPage")];function ut(e){return rn.find(n=>n.exact?e===n.routePrefix:e.startsWith(n.routePrefix))}async function pt(){let e=await import("./chunks/overview-page-H73D5UT4.js");return n=>e.renderOverviewPage(n)}function mt(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function ft(e){let n=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),n}function ht(e,n){return n===e.seq}async function bt(e,n,o,a,r={}){let i=await a();if(!ht(e,n))return!1;let l=i(o);return ht(e,n)?(e.pageDispose=typeof l=="function"?l:null,e.rerenderOnUiChange=r.rerenderOnUiChange??!0,!0):(typeof l=="function"&&l(),!1)}var sn="botmux.dashboard.stale-chunk-reload.v1:",ln=/Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|dynamically imported module/i,dn=/\b(?:https?:\/\/|\/assets\/)\S+?\.js\b/;function gt(e){return e instanceof Error?`${e.name}: ${e.message}`:String(e)}function vt(e){return ln.test(gt(e))}function cn(e,n){let r=gt(e).match(dn)?.[0]||`${n.href}|${n.hash}`;return`${sn}${r.slice(-240)}`}function un(e,n){if(!vt(e))return!1;let o=cn(e,n);try{if(n.sessionStorage.getItem(o)==="1")return!1;n.sessionStorage.setItem(o,"1")}catch{return!1}return n.reload(),!0}function yt(e,n){if(!vt(e))return!1;let o;try{o=n.getSessionStorage()}catch{return!1}return un(e,{...n,sessionStorage:o})}var pn=new Set(["auto","scroll","overlay"]),ce=28,L=3,B=6,wt=!1,Mt=null,xt=new WeakMap,P=new Map,kt=null,Et=null,Ne=0,Le=0,Y=null;function hn(e){return e.closest("dialog[open]")??document.body}function mn(e){let n=xt.get(e);if(n?.isConnected)return n;let o=document.createElement("div");return o.className="floating-scrollbar-layer",o.setAttribute("aria-hidden","true"),e.appendChild(o),xt.set(e,o),o}function fn(e){return pn.has(e)}function Oe(e,n){let o=getComputedStyle(e),a=n==="y"?o.overflowY:o.overflowX;return fn(a)?n==="y"?e.scrollHeight-e.clientHeight>1:e.scrollWidth-e.clientWidth>1:!1}function bn(e){if(!e.isConnected||e.closest("[hidden]"))return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>0&&n.right>0&&n.top<window.innerHeight&&n.left<window.innerWidth}function gn(e){return[e,...Array.from(e.querySelectorAll("*"))].filter(o=>bn(o)&&(Oe(o,"x")||Oe(o,"y")))}function ue(e){e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.track.remove()}function vn(e,n){let o=P.get(e);o||(o={},P.set(e,o));let a=o[n],r=hn(e),i=mn(r);if(a?.track.parentElement===i)return a;a&&ue(a);let l=document.createElement("div"),m=document.createElement("div");l.className=`floating-scrollbar floating-scrollbar-${n}`,m.className="floating-scrollbar-thumb",l.appendChild(m),i.appendChild(l);let d={target:e,axis:n,track:l,thumb:m,hideTimer:void 0};return o[n]=d,d}function Pe(e,n=!1){e.track.classList.add("is-visible"),e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.hideTimer=n?void 0:window.setTimeout(()=>{e.track.classList.remove("is-visible","is-active"),e.hideTimer=void 0},900)}function yn(e){let{target:n,axis:o,track:a,thumb:r}=e,i=n.getBoundingClientRect();if(o==="y"){let E=Math.max(0,i.top+L),v=Math.min(window.innerHeight,i.bottom-L),w=Math.max(0,v-E);if(w<ce||n.scrollHeight<=n.clientHeight){a.hidden=!0;return}let R=Math.max(ce,Math.round(w*n.clientHeight/n.scrollHeight)),x=Math.max(1,n.scrollHeight-n.clientHeight),K=Math.round((w-R)*n.scrollTop/x);a.hidden=!1,a.style.left=`${Math.min(window.innerWidth-B-L,Math.max(L,i.right-B-L))}px`,a.style.top=`${E}px`,a.style.width=`${B}px`,a.style.height=`${w}px`,r.style.width="100%",r.style.height=`${R}px`,r.style.transform=`translate3d(0, ${K}px, 0)`;return}let l=Math.max(0,i.left+L),m=Math.min(window.innerWidth,i.right-L),d=Math.max(0,m-l);if(d<ce||n.scrollWidth<=n.clientWidth){a.hidden=!0;return}let c=Math.max(ce,Math.round(d*n.clientWidth/n.scrollWidth)),f=Math.max(1,n.scrollWidth-n.clientWidth),p=Math.round((d-c)*n.scrollLeft/f);a.hidden=!1,a.style.left=`${l}px`,a.style.top=`${Math.min(window.innerHeight-B-L,Math.max(L,i.bottom-B-L))}px`,a.style.width=`${d}px`,a.style.height=`${B}px`,r.style.width=`${c}px`,r.style.height="100%",r.style.transform=`translate3d(${p}px, 0, 0)`}function $(){Ne||(Ne=window.requestAnimationFrame(()=>{Ne=0,xn()}))}function wn(){Le||(Le=window.setTimeout(()=>{Le=0,$()},120))}function xn(){let e=Mt;if(!e)return;let n=new Set(gn(e));for(let[o,a]of P)n.has(o)||(a.x&&ue(a.x),a.y&&ue(a.y),P.delete(o));for(let o of n){let a=o===Y;for(let r of["x","y"]){let i=P.get(o);if(!Oe(o,r)){let m=i?.[r];m&&(ue(m),delete i?.[r]);continue}let l=vn(o,r);yn(l),a&&Pe(l,!0)}}}function kn(e){if(!(e instanceof HTMLElement))return;let n=P.get(e);if(n)for(let o of Object.values(n))o&&(o.track.classList.add("is-active"),Pe(o))}function En(e){for(let n=e;n;n=n.parentElement)if(n instanceof HTMLElement&&P.has(n))return n;return null}function Rt(e){if(Y===e)return;let n=Y?P.get(Y):void 0;if(Y=e,n)for(let a of Object.values(n))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 Tt(e){wt||(wt=!0,Mt=e,document.documentElement.classList.add("floating-scrollbars-on"),kt=typeof ResizeObserver>"u"?null:new ResizeObserver($),kt?.observe(e),Et=new MutationObserver(n=>{for(let o of n){let a=o.target;if(!(a instanceof Element&&a.closest(".floating-scrollbar-layer"))){wn();return}}}),Et.observe(e,{attributes:!0,attributeFilter:["class","style","hidden","open"],childList:!0,subtree:!0}),document.addEventListener("scroll",n=>{kn(n.target),$()},!0),window.addEventListener("resize",$),window.addEventListener("hashchange",$),document.addEventListener("pointermove",n=>{Rt(En(document.elementFromPoint(n.clientX,n.clientY)))}),document.addEventListener("pointerleave",()=>Rt(null)),$())}var St=!1,U=null,pe=null,_=null;function Lt(){if(U)return U;let e=document.createElement("div");return e.className="icon-tip",e.setAttribute("role","tooltip"),e.style.display="none",document.body.appendChild(e),U=e,e}function Rn(e){let n=Lt(),o=e.getBoundingClientRect(),a=n.offsetWidth,r=n.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;n.style.left=`${Math.round(m)}px`,n.style.top=`${Math.round(d)}px`,n.dataset.placement=l?"bottom":"top"}function Z(){_&&(clearTimeout(_),_=null),pe=null,U&&(U.style.display="none",U.classList.remove("show"))}function Nt(e){let n=e.getAttribute("data-tip");if(!n)return;pe=e;let o=Lt();o.textContent=n,o.style.display="block",o.classList.remove("show"),Rn(e),requestAnimationFrame(()=>{pe===e&&o.classList.add("show")})}function Ce(e){return e instanceof Element?e.closest("[data-tip]"):null}function Ot(){St||typeof document>"u"||(St=!0,document.addEventListener("pointerover",e=>{let n=Ce(e.target);!n||n===pe||(_&&clearTimeout(_),_=setTimeout(()=>Nt(n),120))}),document.addEventListener("pointerout",e=>{let n=Ce(e.target);if(!n)return;let o=e.relatedTarget instanceof Element?e.relatedTarget:null;o&&(o===n||n.contains(o))||Z()}),document.addEventListener("focusin",e=>{let n=Ce(e.target);n&&Nt(n)}),document.addEventListener("focusout",Z),document.addEventListener("click",Z,!0),window.addEventListener("scroll",Z,!0),window.addEventListener("resize",Z))}async function Pt(e){let n=await e.json().catch(()=>null);return n&&typeof n=="object"?n:{}}function Ct(e,n){let o=n.detail??n.error;return new Error(typeof o=="string"?o:`HTTP ${e.status}`)}async function De(e,n=()=>{},o){n("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 Pt(a);if(!a.ok||r.ok===!1)throw Ct(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(n("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 Pt(l);if(!l.ok||m.ok===!1)return{...i,restarted:!1,restartError:Ct(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}}var t=re(Qe(),1),Mn=["roles","role-profiles","bot-defaults","skills","plugins","team","connectors","insights","whiteboards"],Dt=[{id:"overview",href:"#/",labelKey:"nav.overview",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"1.5",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"9.1",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"1.5",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.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,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"})},{id:"groups",href:"#/groups",labelKey:"nav.groups",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"5.6",cy:"5.8",r:"2.4"}),(0,t.jsx)("circle",{cx:"11",cy:"6.8",r:"1.9"}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsx)("path",{d:"M5.8 8l1.6 1.6 2.8-3"})]})},{id:"monitoring",href:"#/monitoring",labelKey:"nav.monitoring",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 9.2h2.3l1.3-4.8 2.5 8.4 1.8-5.1h4.1"}),(0,t.jsx)("path",{d:"M2 2.5h12v11H2z"})]})},{id:"insights",href:"#/insights",labelKey:"nav.insights",manage:!0,icon:(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("path",{d:"M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"})})},{id:"workflows",href:"#/workflows",labelKey:"nav.workflows",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"3.4",cy:"3.6",r:"1.9"}),(0,t.jsx)("circle",{cx:"3.4",cy:"12.4",r:"1.9"}),(0,t.jsx)("circle",{cx:"12.6",cy:"8",r:"1.9"}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.jsx)("path",{d:"M8 4.5V8l2.4 1.6"})]})},{id:"whiteboards",href:"#/whiteboards",labelKey:"nav.whiteboards",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})},{id:"office",href:"#/office",labelKey:"nav.office",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"3",y:"4",width:"10",height:"7",rx:"2"}),(0,t.jsx)("circle",{cx:"6",cy:"7.5",r:"1"}),(0,t.jsx)("circle",{cx:"10",cy:"7.5",r:"1"}),(0,t.jsx)("path",{d:"M8 4V2M4.5 11v2M11.5 11v2"})]})},{id:"bot-defaults",href:"#/bot-defaults",labelKey:"nav.botDefaults",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"5",width:"11",height:"8",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9",r:"1"}),(0,t.jsx)("path",{d:"M8 5V2.5M5.5 13v1.2M10.5 13v1.2"})]})},{id:"skills",href:"#/skills",labelKey:"nav.skills",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M3 2.5h10v3H3zM3 7h10v6.5H3z"}),(0,t.jsx)("path",{d:"M5.4 9.2h5.2M5.4 11.2h3.8"})]})},{id:"plugins",href:"#/plugins",label:"\u63D2\u4EF6",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M6.4 1.8h3.2v3h2.8v3.2H9.6v2.8H6.4V8H3.6V4.8h2.8z"}),(0,t.jsx)("path",{d:"M2.2 11.8h11.6v2.4H2.2z"})]})},{id:"team",href:"#/team",labelKey:"nav.team",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"}),(0,t.jsx)("rect",{x:"3.5",y:"6.5",width:"9",height:"7",rx:"2"})]})},{id:"settings",href:"#/settings",labelKey:"nav.settings",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsx)("circle",{cx:"8",cy:"8",r:"2"})]})}],ee=[],A=!0,$e=!1,_t=location.hash||"#/",F=null,te=!1,ne=null,me=null,Ft=null,fe=null,Kt=null,D=mt(),Vt="botmux.ownerAvatar.v1",Tn=new Set(["working","analyzing","active","starting"]),Ue="botmux:auth-expired";function Q(e){return(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e})}function At(e){return e.labelKey?s(e.labelKey):e.label??""}function Sn(e,n){let o=n||"#/";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 Nn(){let e=at()?Dt.filter(o=>o.id!=="workflows"):Dt;if(ee.length===0)return e;let n=e.findIndex(o=>o.id==="plugins");return n<0?[...e,...ee]:[...e.slice(0,n+1),...ee,...e.slice(n+1)]}function Ln(e){let n=[];return Sn(e,_t)&&n.push("active"),e.id==="settings"&&te&&n.push("nav-has-update"),n.length?n.join(" "):void 0}function zt(){let e=ie(new URLSearchParams(location.search).get("locale"));if(e)return e;let n=location.hash.indexOf("?");return n<0?null:ie(new URLSearchParams(location.hash.slice(n+1)).get("locale"))}function Ht(){let e=zt();return!e||e===g.locale?!1:(g.setLocale(e),!0)}function On(){let e=location.hash.indexOf("?");return e<0?null:{path:location.hash.slice(0,e)||"#/",params:new URLSearchParams(location.hash.slice(e+1))}}function Pn(){let e=On(),n=e?.params.get("open");if(!e||!n||n!=="bot-onboarding"&&n!=="create-session")return!1;e.params.delete("open");let o=e.params.toString();return history.replaceState(null,"",o?`${e.path}?${o}`:e.path),n==="bot-onboarding"?window.dispatchEvent(new Event(de)):Re(),!0}function It(){let e=ne?`v${ne}`:"";return me==="codex"?s("update.navRuntimeBadgeTitle",{version:e}):s("update.navBadgeTitle",{version:e})}function Cn(e){fe=e}function Ae(){if(fe)return fe;let e=document.getElementById("root");if(!e)throw new Error("dashboard root is not mounted");return fe=e,e}function Dn(){return(0,u.useEffect)(()=>{ct()},[]),(0,u.useEffect)(()=>{Se()}),(0,t.jsxs)("div",{className:"theme-menu",id:"theme-menu",children:[(0,t.jsx)("button",{type:"button",className:"theme-menu-btn",id:"theme-menu-btn","aria-haspopup":"listbox","aria-expanded":"false","aria-label":"Theme",children:(0,t.jsx)("span",{className:"tm-ic",children:(0,t.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,t.jsx)("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),(0,t.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,t.jsx)("div",{className:"theme-menu-pop",id:"theme-menu-pop",role:"listbox",hidden:!0})]})}function An(){let e=[...se.sessions.values()],n=e.filter(d=>d.status!=="closed"),o=n.map(d=>({s:d,reason:Ye(d)})).filter(d=>!!d.reason).sort((d,c)=>le(d.s)-le(c.s)),a=new Set(o.map(d=>String(d.s.sessionId??""))),r=n.filter(d=>Tn.has(String(d.status))&&!a.has(String(d.sessionId??""))).length,i=o[0]??null,l=it(e).filter(d=>d.online||d.active.length>0).length,m=Math.max(0,n.length-o.length-r);return{working:r,attention:o.length,idle:m,onlineBots:l,attentionNotice:i?{count:o.length,time:Ge(le(i.s)),bot:Xe(i.s),reason:i.reason}:null}}function he(e){return(0,t.jsxs)("div",{className:`topbar-status-row${e.hot?" topbar-status-row-hot":""}`,children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("b",{className:e.value>0?"status-count-on":void 0,children:e.value})]})}function Hn(e){let{attention:n,idle:o,working:a}=e.summary,r=a+n+o,i=r===0?"conic-gradient(var(--border) 0 360deg)":(()=>{let l=a/r*360,m=l+n/r*360;return`conic-gradient(var(--accent) 0 ${l}deg, var(--warning) ${l}deg ${m}deg, var(--success) ${m}deg 360deg)`})();return(0,t.jsxs)("div",{className:"topbar-status-donut-wrap","aria-hidden":"true",children:[(0,t.jsx)("div",{className:"topbar-status-donut",style:{background:i}}),(0,t.jsxs)("div",{className:"topbar-status-donut-center",children:[(0,t.jsx)("b",{children:r}),(0,t.jsx)("span",{children:s("overview.openSessions")})]})]})}function He(){window.dispatchEvent(new Event(Te))}function In(e){let{autoOpen:n=!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=n&&!i,p=a||f;return(0,u.useEffect)(()=>{n||l(!1)},[n]),(0,u.useEffect)(()=>{if(!p)return;let v=w=>{let R=w.target;R instanceof Node&&c.current?.contains(R)||(r(!1),l(!0))};return document.addEventListener("pointerdown",v),()=>document.removeEventListener("pointerdown",v)},[p]),(0,t.jsxs)("div",{ref:c,className:`topbar-status-menu${f?" topbar-status-auto-open":""}${a?" is-open":""}${m?" suppress-hover":""}`,onPointerEnter:He,onPointerLeave:()=>d(!1),onFocusCapture:He,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,t.jsx)("button",{type:"button",id:"status",className:"connection-status","aria-haspopup":"true","aria-expanded":p,onClick:()=>{if(He(),p){r(!1),l(!0),d(!0);return}d(!1),r(!0)},children:s("overview.sessionOverview")}),(0,t.jsxs)("div",{className:"topbar-status-pop",children:[o.attentionNotice?(0,t.jsxs)("a",{className:"topbar-attention-notice",href:"#/sessions",children:[(0,t.jsx)("span",{className:"topbar-attention-dot","aria-hidden":"true"}),(0,t.jsxs)("span",{className:"topbar-attention-copy",children:[(0,t.jsx)("b",{children:s("strip.pending",{count:o.attentionNotice.count})}),(0,t.jsx)("small",{children:s("strip.longestCompact",{time:o.attentionNotice.time,bot:o.attentionNotice.bot,reason:o.attentionNotice.reason})})]}),(0,t.jsx)("span",{className:"topbar-attention-action",children:s("strip.handle")})]}):null,(0,t.jsxs)("div",{className:"topbar-status-list",children:[(0,t.jsx)(he,{label:s("overview.workingSessions"),value:o.working}),(0,t.jsx)(he,{label:s("overview.idleSessions"),value:o.idle}),(0,t.jsx)(he,{label:s("overview.attention"),value:o.attention,hot:o.attention>0}),(0,t.jsx)(he,{label:s("overview.onlineBots"),value:o.onlineBots})]}),(0,t.jsx)(Hn,{summary:o})]})]})}function Bn(e){return e.open?(0,t.jsx)("div",{id:"auth-expired-overlay",className:"auth-expired-overlay",role:"presentation",onClick:n=>{n.target===n.currentTarget&&e.onClose()},children:(0,t.jsxs)("div",{className:"auth-expired-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"auth-expired-title",children:[(0,t.jsx)("h2",{id:"auth-expired-title",children:"\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548"}),(0,t.jsx)("p",{children:"\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,t.jsx)("button",{id:"auth-expired-dismiss",type:"button",className:"primary",onClick:e.onClose,children:"\u77E5\u9053\u4E86"})]})}):null}function $n(e){let n=new Date(e);if(Number.isNaN(n.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(n)}catch{return e.slice(0,10)}}async function Bt(){let e=await fetch("/__selfcheck",{cache:"no-store"}),n=await e.text();if(!e.ok||!n)throw new Error(s("update.healthCheckFailed"));return n}function Un(e){let{status:n}=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)(""),[E,v]=(0,u.useState)(!1),[w,R]=(0,u.useState)(!1),[x,K]=(0,u.useState)(!1),[V,oe]=(0,u.useState)(!1),[z,Fe]=(0,u.useState)([]),[y,ge]=(0,u.useState)(null),[C,ve]=(0,u.useState)(null),O=(0,u.useRef)(!1),W=(0,u.useRef)(null),Ke=(0,u.useRef)(null),Ve=(0,u.useRef)(null),Wt=()=>{W.current!==null&&(window.clearTimeout(W.current),W.current=null)};if((0,u.useEffect)(()=>{O.current=!1,i("idle"),m(!1),c(!1),p(""),v(!1),R(!1),K(!1),oe(!1),Fe([]),ge(null),ve(null)},[n?.current,n?.latest]),(0,u.useEffect)(()=>{n&&c(n.versionLookupOk===!1)},[n]),(0,u.useEffect)(()=>{o||v(!1)},[o]),(0,u.useEffect)(()=>()=>Wt(),[]),(0,u.useEffect)(()=>{if(!o)return;let h=M=>{Ke.current?.contains(M.target)||a(!1)},k=M=>{M.key==="Escape"&&(a(!1),Ve.current?.focus())};return document.addEventListener("pointerdown",h),document.addEventListener("keydown",k),()=>{document.removeEventListener("pointerdown",h),document.removeEventListener("keydown",k)}},[o]),!n)return null;let H=n.behind&&!!n.latest,ye=!n.latest,we=H&&n.updateSupported&&!n.localDevInstall&&n.node.ok,ze=n.updateSupported&&!n.localDevInstall&&n.node.ok,N=r==="updating"||r==="restarting",qt=n.updateCommand??"botmux update",xe=`v${n.current}`,jt=n.latest?`v${n.latest}`:"",Gt=n.localDevInstall?s("update.localDev"):n.updateSupported?n.node.ok?"":s("update.nodeWarn",{version:n.node.version,required:n.node.required}):s("update.unsupportedInstall"),We=h=>{let k=Date.now(),M=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}W.current=window.setTimeout(()=>{M()},2e3)};W.current=window.setTimeout(()=>{M()},3e3)},Jt=async()=>{if(H){if(!we){a(!1),location.hash="#/settings";return}if(!O.current){O.current=!0,ve(null),c(!1),p("");try{let h=await Bt(),k=await De(fetch,i);if(!k.restarted){O.current=!1,i("error"),p(s("update.restartFailed",{detail:k.restartError??"unknown"}));return}We(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),oe(!1);try{let k=await fetch(`/api/update/versions${h?"?refresh=1":""}`,{cache:"no-store"}),M=await k.json().catch(()=>null);if(!M||!Array.isArray(M.versions))throw new Error("Invalid rollback versions response");let q=M.versions.filter(I=>{if(!I||typeof I!="object")return!1;let G=I;return typeof G.version=="string"&&(typeof G.publishedAt=="string"||G.publishedAt===null)}).slice(0,3);Fe(q),ge(I=>q.some(G=>G.version===I)?I:null),R(!0);let j=k.ok&&M.ok===!0;return oe(!j),j}catch{return R(!0),oe(!0),!1}finally{K(!1)}},Xt=async()=>{if(!(!y||!ze||x||O.current)){O.current=!0,ve(y),c(!1),p("");try{let h=await Bt();await De(fetch,i,y),We(h)}catch(h){O.current=!1,i("error"),p(h instanceof Error?h.message:String(h))}}},Yt=async()=>{if(!(l||N)){m(!0),c(!1);try{let h=await e.onRefresh();E&&await ke(!0),c(!h)}finally{m(!1)}}},Ee=r==="updating"?C?s("update.rollbackInstalling",{version:C}):s("update.updating",{command:qt}):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"):H?we?s("update.versionUpgradePrompt",{version:jt}):Gt:n.latest?s("update.upToDate"):s("update.checkUnavailable"),Zt=we?r==="error"?s("update.topbarRetry"):r==="idle"?s("update.topbarAction"):s("update.topbarWorking"):s("update.topbarReview"),ae=r==="error"||d&&ye?{className:"is-error",symbol:"!"}:H?{className:"has-update",symbol:"\u2191"}:ye?{className:"is-unknown",symbol:"?"}:{className:"is-current",symbol:"\u2713"};return(0,t.jsxs)("div",{ref:Ke,className:`dashboard-version-control${o?" is-open":""}`,children:[(0,t.jsxs)("button",{ref:Ve,type:"button",className:`dashboard-version-chip${H?" 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,t.jsx)("span",{children:xe}),N?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):(0,t.jsx)("span",{className:`dashboard-version-state ${ae.className}`,"aria-hidden":"true",children:ae.symbol})]}),o?(0,t.jsxs)("section",{className:"dashboard-version-popover",role:"dialog","aria-modal":"false","aria-labelledby":"dashboard-version-title",children:[(0,t.jsxs)("header",{className:"dashboard-version-popover-head",children:[(0,t.jsx)("strong",{id:"dashboard-version-title",children:s("update.current")}),(0,t.jsxs)("div",{className:"dashboard-version-head-actions",children:[(0,t.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:()=>{Yt()},children:(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M13.2 5.7A5.8 5.8 0 1 0 13 10.8"}),(0,t.jsx)("path",{d:"M13.2 2.8v2.9h-2.9"})]})}),(0,t.jsx)("button",{type:"button",className:"dashboard-version-close","aria-label":s("update.topbarClose"),onClick:()=>a(!1),children:"\xD7"})]})]}),(0,t.jsxs)("div",{className:"dashboard-version-popover-body",children:[(0,t.jsxs)("div",{className:"dashboard-version-current",children:[(0,t.jsx)("strong",{children:xe}),(0,t.jsx)("span",{className:ae.className,"aria-hidden":"true",children:N?(0,t.jsx)("span",{className:"dashboard-update-spinner"}):ae.symbol})]}),(0,t.jsx)("p",{className:`dashboard-version-message${r==="error"||d?" is-error":""}`,role:r==="error"||d?"alert":"status","aria-live":"polite",children:Ee}),(0,t.jsxs)("a",{className:"dashboard-version-release-link",href:"https://github.com/deepcoldy/botmux/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:(0,t.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,t.jsx)("span",{children:s("update.changelogViewOnGitHub")})]}),(H||E)&&n.installs.multiple?(0,t.jsxs)("details",{className:"dashboard-version-installs",children:[(0,t.jsx)("summary",{children:s("update.multiInstallWarn")}),(0,t.jsx)("ul",{children:n.installs.entries.map(h=>(0,t.jsx)("li",{children:h.binPath},h.binPath))})]}):null,ze?(0,t.jsxs)("details",{className:"dashboard-version-rollback",open:E,"aria-busy":x,onToggle:h=>{let k=h.currentTarget.open;v(k),k&&!w&&!x&&ke()},children:[(0,t.jsxs)("summary",{children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,t.jsx)("path",{d:"M8 4.8V8l2.2 1.3"})]}),(0,t.jsx)("span",{children:s("update.rollbackTitle")}),(0,t.jsx)("span",{className:"dashboard-version-rollback-chevron","aria-hidden":"true",children:"\u2304"})]}),(0,t.jsxs)("div",{className:"dashboard-version-rollback-body",children:[x&&z.length===0?(0,t.jsxs)("p",{className:"dashboard-version-rollback-status",role:"status","aria-live":"polite",children:[(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}),s("update.rollbackLoading")]}):null,V?(0,t.jsxs)("p",{className:"dashboard-version-rollback-load-error",role:"alert",children:[(0,t.jsx)("span",{children:s("update.rollbackLoadFailed")}),(0,t.jsx)("button",{type:"button",disabled:x,onClick:()=>{ke(!0)},children:s("update.rollbackRetry")})]}):null,w&&!x&&!V&&z.length===0?(0,t.jsx)("p",{className:"dashboard-version-rollback-status",children:s("update.rollbackEmpty")}):null,z.length>0?(0,t.jsxs)("fieldset",{disabled:N||x||V,children:[(0,t.jsx)("legend",{children:s("update.rollbackHint")}),(0,t.jsx)("div",{className:"dashboard-version-rollback-options",children:z.map(h=>(0,t.jsxs)("label",{className:y===h.version?"is-selected":"",children:[(0,t.jsx)("input",{type:"radio",name:"dashboard-rollback-version",value:h.version,checked:y===h.version,onChange:()=>ge(h.version)}),(0,t.jsxs)("strong",{children:["v",h.version]}),h.publishedAt?(0,t.jsx)("time",{dateTime:h.publishedAt,children:$n(h.publishedAt)}):null]},h.version))})]}):null,y?(0,t.jsxs)("p",{id:"dashboard-version-rollback-risk",className:"dashboard-version-rollback-risk",role:"note",children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.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,t.jsx)("path",{d:"M8 5.5v3.6M8 11.6h.01"})]}),(0,t.jsxs)("span",{children:[s("update.rollbackRisk",{version:y})," ",(0,t.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,z.length>0?(0,t.jsxs)("button",{type:"button",className:"dashboard-version-rollback-action",disabled:!y||x||V||N,"aria-describedby":y?"dashboard-version-rollback-risk":void 0,onClick:()=>{Xt()},children:[N&&C?(0,t.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]}),H&&!E&&!C?(0,t.jsxs)("footer",{className:"dashboard-version-popover-actions",children:[(0,t.jsx)("button",{type:"button",className:"dashboard-version-secondary",onClick:()=>a(!1),children:N?s("update.topbarClose"):s("update.topbarLater")}),(0,t.jsxs)("button",{type:"button",className:"dashboard-version-primary",disabled:N,onClick:()=>{Jt()},children:[N?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,Zt]})]}):null]}):null]})}function _n(){let e=An(),[n,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(de,p),()=>window.removeEventListener(de,p)},[]),(0,u.useEffect)(()=>{let p=()=>r(!0);return window.addEventListener(Ue,p),be&&r(!0),()=>window.removeEventListener(Ue,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=()=>{be=!1,r(!1)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"aurora","aria-hidden":"true",children:[(0,t.jsx)("i",{className:"a1"}),(0,t.jsx)("i",{className:"a2"}),(0,t.jsx)("i",{className:"a3"})]}),(0,t.jsxs)("div",{className:"app-shell",children:[(0,t.jsxs)("header",{className:"topbar",children:[(0,t.jsx)("div",{className:"topbar-left",children:(0,t.jsxs)("div",{className:"topbar-brand-block",children:[(0,t.jsxs)("a",{className:"brand",href:"#/",children:[(0,t.jsx)("span",{className:"brand-mark","aria-hidden":"true",children:(0,t.jsx)("img",{className:"brand-logo-img",src:"/assets/brand-logo.png",alt:"",decoding:"sync",loading:"eager",fetchPriority:"high"})}),(0,t.jsx)("strong",{className:"brand-wordmark",children:"Botmux"}),(0,t.jsx)("span",{className:"brand-product",children:"Dashboard"})]}),(0,t.jsx)(Un,{status:Ft,onRefresh:()=>_e(!0)})]})}),(0,t.jsxs)("div",{className:"topbar-actions",children:[(0,t.jsx)(In,{summary:e,autoOpen:i}),(0,t.jsxs)("div",{className:"topbar-tool-group",children:[(0,t.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:()=>Fn(g.locale==="zh"?"en":"zh"),children:g.locale==="zh"?"CN":"EN"}),(0,t.jsx)(Dn,{}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})),(0,t.jsx)("span",{children:s("nav.docs")})]})]}),(0,t.jsxs)("span",{className:"topbar-owner",title:F?.name,"aria-label":F?.name??"Owner",children:[(0,t.jsx)("span",{className:"topbar-owner-placeholder","aria-hidden":"true",children:Q((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"6",r:"2.4"}),(0,t.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,t.jsx)("img",{className:"topbar-owner-img",src:F.avatarUrl,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:p=>{p.currentTarget.remove()}}):null]})]})]}),(0,t.jsxs)("div",{className:"chrome-body",children:[(0,t.jsxs)("aside",{className:"sidebar",children:[A?(0,t.jsxs)("div",{className:"sidebar-create-actions",children:[(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>Re(),children:[Q((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"}),(0,t.jsx)("path",{d:"M8 4.9v4.2M5.9 7h4.2"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createSession")})]}),(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>{tt()},children:[Q((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"6",width:"11",height:"7.5",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9.75",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9.75",r:"1"}),(0,t.jsx)("path",{d:"M8 6V3.8M6.3 1.9h3.4"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createBot")})]})]}):null,(0,t.jsx)("nav",{className:"sidebar-nav","aria-label":"Dashboard",children:Nn().filter(p=>A||!p.manage).map(p=>(0,t.jsxs)("a",{href:p.href,"data-route":p.id,className:[Ln(p),p.plugin?"sidebar-plugin-item":""].filter(Boolean).join(" ")||void 0,title:p.plugin?At(p):void 0,children:[Q(p.icon),(0,t.jsx)("span",{className:"sidebar-nav-label",children:At(p)}),p.id==="settings"&&te?(0,t.jsx)(et,{className:"nav-update-tip",label:It(),trigger:(0,t.jsx)("span",{className:"nav-update-dot","aria-hidden":"true"}),preventClick:!1,focusable:!1,children:It()}):null]},p.id))})]}),(0,t.jsxs)("div",{className:"workspace",children:[(0,t.jsx)("dialog",{id:"create-session-modal",className:"create-session-modal"}),(0,t.jsx)(nt,{open:n,onClose:()=>o(!1)}),(0,t.jsx)("main",{id:"root",ref:Cn})]})]})]}),(0,t.jsx)(Bn,{open:a,onClose:f})]})}function S(){Kt?.render((0,t.jsx)(_n,{}))}function Fn(e){g.setLocale(e),qn(e)}var be=!1;function Kn(){be||(be=!0,window.dispatchEvent(new Event(Ue)))}var Ie;function Vn(){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 zn=window.fetch.bind(window);window.fetch=async function(...n){let o=await zn(...n);if(o.status===401){let a=(n[1]?.method??"GET").toUpperCase();(a==="GET"||a==="HEAD")&&!$e?Kn():Vn()}return o};async function Wn(){try{let e=await fetch("/api/settings");if(e.ok){let n=await e.json();A=!!n.authed,g.authed=A,$e=!!(n.settings&&n.settings.publicReadOnly),g.publicReadOnly=$e;let o=zt()??ie(n.lang);o&&g.setLocale(o)}}catch{}}async function $t(){try{let e=await fetch("/api/plugins/dashboard");if(!e.ok)return;let n=await e.json();ee=(Array.isArray(n?.plugins)?n.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,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsx)("path",{d:"M8 13.8v1"})]})})),S()}catch{}}async function qn(e){if(A)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}async function _e(e=!1){if(!A)return!1;try{let n=await fetch(`/api/update/status${e?"?refresh=1":""}`,{cache:"no-store"});if(!n.ok)return!1;let o=await n.json();Ft=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,me="botmux",ne=String(o.latest)):a?(te=!0,me="codex",ne=String(a.latest)):(te=!1,me=null,ne=null),S(),o.versionLookupOk!==!1}catch{return!1}}function jn(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 Be(){let e=ft(D),n=location.hash||"#/";_t=n,S();let o=rt(n);if(o){window.location.replace(o);return}if(!A&&Mn.some(a=>n.startsWith("#/"+a))){jn(Ae()),D.rerenderOnUiChange=!0;return}if(n.startsWith("#/v3")){window.location.replace(`#/workflows${n.slice(4)}`);return}else if(n.startsWith("#/legacy-workflow")){window.location.replace("#/workflows");return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(n)){window.location.replace("#/workflows");return}if(n.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${n.slice(15)}`);return}try{let a=ut(n);await bt(D,e,Ae(),a?a.load:pt,{rerenderOnUiChange:a?a.rerenderOnUiChange:!1}),e===D.seq&&A&&Pn()}catch(a){if(e!==D.seq||yt(a,{href:window.location.href,hash:n,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 Gn(){try{let e=JSON.parse(window.localStorage.getItem(Vt)??"null");if(e?.avatarUrl)return{avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0}}catch{}return null}function Jn(){F=Gn(),S(),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(Vt,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}S()}}).catch(()=>{})}(async()=>{let e=ot(window.location.href);e&&window.history.replaceState(window.history.state,"",e),g.init(),Ht();let n=document.getElementById("app-root");if(!n)throw new Error("missing dashboard app root");Tt(n),Ot(),Kt=(0,Ut.createRoot)(n),S(),g.on(()=>{S(),D.rerenderOnUiChange&&Be()}),se.on(()=>{S()}),await Wn(),S(),window.addEventListener(Ze,()=>{$t()}),$t(),_e(),window.setInterval(()=>{document.hidden||_e()},30*6e4),Jn();try{await qe()}catch(o){console.error("botmux dashboard bootstrap failed",o),se.setOnline(!1)}Je().then(S),st().then(S),window.addEventListener("hashchange",()=>{Ht()||Be()}),Be()})();export{Kn as showAuthExpiredOverlay,Vn as showReadOnlyToast};
|
|
1
|
+
import{a as st,b as it}from"./chunks/chunk-3QAUJXAS.js";import{b as Re,d as ot,e as at,g as rt}from"./chunks/chunk-AGCPF6MT.js";import{a as Ze}from"./chunks/chunk-BD3PZGH2.js";import{a as de,b as tt,c as nt}from"./chunks/chunk-FNPGOZMX.js";import{i as et}from"./chunks/chunk-QFMH6ITB.js";import{C as Je,E as Xe,H as Ye,I as le,a as se,b as qe,e as ie,t as g,u as s,v as je,w as Ge}from"./chunks/chunk-KQB42ML5.js";import{a as Qt,c as en,d as Qe}from"./chunks/chunk-5THX4DI2.js";import{c as re}from"./chunks/chunk-7SZRL6FY.js";var Ut=re(en(),1),u=re(Qt(),1);var Te="botmux:close-theme-menu",tn={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"/>'},dt=[{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"}]}],lt=dt.flatMap(e=>e.options),T=!1,J=null,X=null,nn=70,on=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">${tn[e]??""}</svg>`}function an(e){return e.replace(/[&<>"]/g,n=>({"&":"&","<":"<",">":">",'"':"""})[n])}function ct(){let e=document.getElementById("theme-menu"),n=document.getElementById("theme-menu-btn"),o=document.getElementById("theme-menu-pop");if(!e||!n||!o||e.dataset.themeMenuInit==="1")return;e.dataset.themeMenuInit="1",o.innerHTML=dt.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(!T)return;let c=n.getBoundingClientRect(),f=12,p=Math.min(Math.max(o.offsetWidth||216,216),Math.max(0,window.innerWidth-f*2)),E=f+p/2,v=window.innerWidth-f-p/2,w=c.left+c.width/2,R=Math.min(Math.max(w,E),Math.max(E,v)),x=Math.max(180,window.innerHeight-c.bottom-20);o.style.setProperty("--theme-menu-pop-left",`${Math.round(R)}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),T=c,n.setAttribute("aria-expanded",String(T)),document.body.classList.toggle("theme-menu-open",T),T?(o.hidden=!1,a(),window.requestAnimationFrame(()=>e.classList.add("open"))):(e.classList.remove("open"),X=window.setTimeout(()=>{X=null,T||(o.hidden=!0)},on))},i=()=>r(!0),l=()=>{J==null&&(J=window.setTimeout(()=>r(!1),nn))},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),n.addEventListener("click",c=>{c.stopPropagation(),r(!T)}),n.addEventListener("focus",()=>{n.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=>{T&&!e.contains(c.target)&&r(!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&&r(!1)}),window.addEventListener("resize",a),window.addEventListener("scroll",a,!0),window.addEventListener(Te,()=>{T&&r(!1)}),Se()}function Se(){let e=document.getElementById("theme-menu-btn");if(!e)return;let n=lt.find(o=>o.value===g.theme)??lt[0];e.innerHTML=`<span class="tm-ic">${Me("palette")}</span><span class="tm-current">${an(s(n.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,n,o,a,r=!1){return{id:e,routePrefix:n,rerenderOnUiChange:r,load:async()=>(await o())[a]}}var rn=[{id:"plugins",routePrefix:"#/plugins",rerenderOnUiChange:!1,load:async()=>{let e=await import("./chunks/plugin-page-JXC5F5YV.js");return n=>e.renderPluginPage(n)}},b("workflows","#/workflows",()=>import("./chunks/v3-page-W6SBXXQC.js"),"renderV3RunsPage"),b("groups","#/groups",()=>import("./chunks/groups-page-RUZNVXQB.js"),"renderGroupsPage"),b("settings","#/settings",()=>import("./chunks/settings-page-MJDZHQ4X.js"),"renderSettingsPage"),b("bot-defaults","#/bot-defaults",()=>import("./chunks/bot-defaults-page-UKA7K4JV.js"),"renderBotDefaultsPage"),b("skills","#/skills",()=>import("./chunks/skills-page-5MW54PCC.js"),"renderSkillsPage"),b("connectors-logs","#/connectors/logs",()=>import("./chunks/connectors-page-A77YAB5Y.js"),"renderConnectorsLogsPage"),b("webhook-logs","#/webhook-logs",()=>import("./chunks/connectors-page-A77YAB5Y.js"),"renderConnectorsLogsPage"),b("connectors","#/connectors",()=>import("./chunks/connectors-page-A77YAB5Y.js"),"renderConnectorsPage"),b("team-manage","#/team/manage",()=>import("./chunks/team-federation-page-2SNIMVXI.js"),"renderTeamManagePage"),b("team","#/team",()=>import("./chunks/team-federation-page-2SNIMVXI.js"),"renderTeamFederationPage"),b("roles-profile","#/roles/profile",()=>import("./chunks/roles-page-BUMKD7Y4.js"),"renderRoleProfilesPage"),b("roles","#/roles",()=>import("./chunks/roles-page-BUMKD7Y4.js"),"renderRolesPage"),b("schedules","#/schedules",()=>import("./chunks/schedules-page-AVOOKLUH.js"),"renderSchedulesPage"),b("whiteboards","#/whiteboards",()=>import("./chunks/whiteboards-page-STC54KTP.js"),"renderWhiteboardsPage"),b("monitoring","#/monitoring",()=>import("./chunks/monitoring-page-5SSJRQZF.js"),"renderMonitoringPage"),b("sessions","#/sessions",()=>import("./chunks/sessions-page-6HLSEAB7.js"),"renderSessionsPage"),b("monitor-room","#/monitor-room",()=>import("./chunks/monitor-room-7IVIS75W.js"),"renderMonitorRoomPage",!0),b("office","#/office",()=>import("./chunks/office-page-EOND3L5D.js"),"renderOfficePage"),b("insights","#/insights",()=>import("./chunks/insights-page-RF7U7RTA.js"),"renderInsightsPage")];function ut(e){return rn.find(n=>n.exact?e===n.routePrefix:e.startsWith(n.routePrefix))}async function pt(){let e=await import("./chunks/overview-page-NISBVBBJ.js");return n=>e.renderOverviewPage(n)}function mt(){return{seq:0,pageDispose:null,rerenderOnUiChange:!0}}function ft(e){let n=++e.seq;return e.pageDispose&&(e.pageDispose(),e.pageDispose=null),n}function ht(e,n){return n===e.seq}async function bt(e,n,o,a,r={}){let i=await a();if(!ht(e,n))return!1;let l=i(o);return ht(e,n)?(e.pageDispose=typeof l=="function"?l:null,e.rerenderOnUiChange=r.rerenderOnUiChange??!0,!0):(typeof l=="function"&&l(),!1)}var sn="botmux.dashboard.stale-chunk-reload.v1:",ln=/Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module|dynamically imported module/i,dn=/\b(?:https?:\/\/|\/assets\/)\S+?\.js\b/;function gt(e){return e instanceof Error?`${e.name}: ${e.message}`:String(e)}function vt(e){return ln.test(gt(e))}function cn(e,n){let r=gt(e).match(dn)?.[0]||`${n.href}|${n.hash}`;return`${sn}${r.slice(-240)}`}function un(e,n){if(!vt(e))return!1;let o=cn(e,n);try{if(n.sessionStorage.getItem(o)==="1")return!1;n.sessionStorage.setItem(o,"1")}catch{return!1}return n.reload(),!0}function yt(e,n){if(!vt(e))return!1;let o;try{o=n.getSessionStorage()}catch{return!1}return un(e,{...n,sessionStorage:o})}var pn=new Set(["auto","scroll","overlay"]),ce=28,L=3,B=6,wt=!1,Mt=null,xt=new WeakMap,P=new Map,kt=null,Et=null,Ne=0,Le=0,Y=null;function hn(e){return e.closest("dialog[open]")??document.body}function mn(e){let n=xt.get(e);if(n?.isConnected)return n;let o=document.createElement("div");return o.className="floating-scrollbar-layer",o.setAttribute("aria-hidden","true"),e.appendChild(o),xt.set(e,o),o}function fn(e){return pn.has(e)}function Oe(e,n){let o=getComputedStyle(e),a=n==="y"?o.overflowY:o.overflowX;return fn(a)?n==="y"?e.scrollHeight-e.clientHeight>1:e.scrollWidth-e.clientWidth>1:!1}function bn(e){if(!e.isConnected||e.closest("[hidden]"))return!1;let n=e.getBoundingClientRect();return n.width>0&&n.height>0&&n.bottom>0&&n.right>0&&n.top<window.innerHeight&&n.left<window.innerWidth}function gn(e){return[e,...Array.from(e.querySelectorAll("*"))].filter(o=>bn(o)&&(Oe(o,"x")||Oe(o,"y")))}function ue(e){e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.track.remove()}function vn(e,n){let o=P.get(e);o||(o={},P.set(e,o));let a=o[n],r=hn(e),i=mn(r);if(a?.track.parentElement===i)return a;a&&ue(a);let l=document.createElement("div"),m=document.createElement("div");l.className=`floating-scrollbar floating-scrollbar-${n}`,m.className="floating-scrollbar-thumb",l.appendChild(m),i.appendChild(l);let d={target:e,axis:n,track:l,thumb:m,hideTimer:void 0};return o[n]=d,d}function Pe(e,n=!1){e.track.classList.add("is-visible"),e.hideTimer!==void 0&&window.clearTimeout(e.hideTimer),e.hideTimer=n?void 0:window.setTimeout(()=>{e.track.classList.remove("is-visible","is-active"),e.hideTimer=void 0},900)}function yn(e){let{target:n,axis:o,track:a,thumb:r}=e,i=n.getBoundingClientRect();if(o==="y"){let E=Math.max(0,i.top+L),v=Math.min(window.innerHeight,i.bottom-L),w=Math.max(0,v-E);if(w<ce||n.scrollHeight<=n.clientHeight){a.hidden=!0;return}let R=Math.max(ce,Math.round(w*n.clientHeight/n.scrollHeight)),x=Math.max(1,n.scrollHeight-n.clientHeight),K=Math.round((w-R)*n.scrollTop/x);a.hidden=!1,a.style.left=`${Math.min(window.innerWidth-B-L,Math.max(L,i.right-B-L))}px`,a.style.top=`${E}px`,a.style.width=`${B}px`,a.style.height=`${w}px`,r.style.width="100%",r.style.height=`${R}px`,r.style.transform=`translate3d(0, ${K}px, 0)`;return}let l=Math.max(0,i.left+L),m=Math.min(window.innerWidth,i.right-L),d=Math.max(0,m-l);if(d<ce||n.scrollWidth<=n.clientWidth){a.hidden=!0;return}let c=Math.max(ce,Math.round(d*n.clientWidth/n.scrollWidth)),f=Math.max(1,n.scrollWidth-n.clientWidth),p=Math.round((d-c)*n.scrollLeft/f);a.hidden=!1,a.style.left=`${l}px`,a.style.top=`${Math.min(window.innerHeight-B-L,Math.max(L,i.bottom-B-L))}px`,a.style.width=`${d}px`,a.style.height=`${B}px`,r.style.width=`${c}px`,r.style.height="100%",r.style.transform=`translate3d(${p}px, 0, 0)`}function $(){Ne||(Ne=window.requestAnimationFrame(()=>{Ne=0,xn()}))}function wn(){Le||(Le=window.setTimeout(()=>{Le=0,$()},120))}function xn(){let e=Mt;if(!e)return;let n=new Set(gn(e));for(let[o,a]of P)n.has(o)||(a.x&&ue(a.x),a.y&&ue(a.y),P.delete(o));for(let o of n){let a=o===Y;for(let r of["x","y"]){let i=P.get(o);if(!Oe(o,r)){let m=i?.[r];m&&(ue(m),delete i?.[r]);continue}let l=vn(o,r);yn(l),a&&Pe(l,!0)}}}function kn(e){if(!(e instanceof HTMLElement))return;let n=P.get(e);if(n)for(let o of Object.values(n))o&&(o.track.classList.add("is-active"),Pe(o))}function En(e){for(let n=e;n;n=n.parentElement)if(n instanceof HTMLElement&&P.has(n))return n;return null}function Rt(e){if(Y===e)return;let n=Y?P.get(Y):void 0;if(Y=e,n)for(let a of Object.values(n))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 Tt(e){wt||(wt=!0,Mt=e,document.documentElement.classList.add("floating-scrollbars-on"),kt=typeof ResizeObserver>"u"?null:new ResizeObserver($),kt?.observe(e),Et=new MutationObserver(n=>{for(let o of n){let a=o.target;if(!(a instanceof Element&&a.closest(".floating-scrollbar-layer"))){wn();return}}}),Et.observe(e,{attributes:!0,attributeFilter:["class","style","hidden","open"],childList:!0,subtree:!0}),document.addEventListener("scroll",n=>{kn(n.target),$()},!0),window.addEventListener("resize",$),window.addEventListener("hashchange",$),document.addEventListener("pointermove",n=>{Rt(En(document.elementFromPoint(n.clientX,n.clientY)))}),document.addEventListener("pointerleave",()=>Rt(null)),$())}var St=!1,U=null,pe=null,_=null;function Lt(){if(U)return U;let e=document.createElement("div");return e.className="icon-tip",e.setAttribute("role","tooltip"),e.style.display="none",document.body.appendChild(e),U=e,e}function Rn(e){let n=Lt(),o=e.getBoundingClientRect(),a=n.offsetWidth,r=n.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;n.style.left=`${Math.round(m)}px`,n.style.top=`${Math.round(d)}px`,n.dataset.placement=l?"bottom":"top"}function Z(){_&&(clearTimeout(_),_=null),pe=null,U&&(U.style.display="none",U.classList.remove("show"))}function Nt(e){let n=e.getAttribute("data-tip");if(!n)return;pe=e;let o=Lt();o.textContent=n,o.style.display="block",o.classList.remove("show"),Rn(e),requestAnimationFrame(()=>{pe===e&&o.classList.add("show")})}function Ce(e){return e instanceof Element?e.closest("[data-tip]"):null}function Ot(){St||typeof document>"u"||(St=!0,document.addEventListener("pointerover",e=>{let n=Ce(e.target);!n||n===pe||(_&&clearTimeout(_),_=setTimeout(()=>Nt(n),120))}),document.addEventListener("pointerout",e=>{let n=Ce(e.target);if(!n)return;let o=e.relatedTarget instanceof Element?e.relatedTarget:null;o&&(o===n||n.contains(o))||Z()}),document.addEventListener("focusin",e=>{let n=Ce(e.target);n&&Nt(n)}),document.addEventListener("focusout",Z),document.addEventListener("click",Z,!0),window.addEventListener("scroll",Z,!0),window.addEventListener("resize",Z))}async function Pt(e){let n=await e.json().catch(()=>null);return n&&typeof n=="object"?n:{}}function Ct(e,n){let o=n.detail??n.error;return new Error(typeof o=="string"?o:`HTTP ${e.status}`)}async function De(e,n=()=>{},o){n("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 Pt(a);if(!a.ok||r.ok===!1)throw Ct(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(n("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 Pt(l);if(!l.ok||m.ok===!1)return{...i,restarted:!1,restartError:Ct(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}}var t=re(Qe(),1),Mn=["roles","role-profiles","bot-defaults","skills","plugins","team","connectors","insights","whiteboards"],Dt=[{id:"overview",href:"#/",labelKey:"nav.overview",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"1.5",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"9.1",y:"1.5",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.jsx)("rect",{x:"1.5",y:"9.1",width:"5.4",height:"5.4",rx:"1.5"}),(0,t.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,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"})},{id:"groups",href:"#/groups",labelKey:"nav.groups",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"5.6",cy:"5.8",r:"2.4"}),(0,t.jsx)("circle",{cx:"11",cy:"6.8",r:"1.9"}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsx)("path",{d:"M5.8 8l1.6 1.6 2.8-3"})]})},{id:"monitoring",href:"#/monitoring",labelKey:"nav.monitoring",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 9.2h2.3l1.3-4.8 2.5 8.4 1.8-5.1h4.1"}),(0,t.jsx)("path",{d:"M2 2.5h12v11H2z"})]})},{id:"insights",href:"#/insights",labelKey:"nav.insights",manage:!0,icon:(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("path",{d:"M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"})})},{id:"workflows",href:"#/workflows",labelKey:"nav.workflows",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"3.4",cy:"3.6",r:"1.9"}),(0,t.jsx)("circle",{cx:"3.4",cy:"12.4",r:"1.9"}),(0,t.jsx)("circle",{cx:"12.6",cy:"8",r:"1.9"}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.jsx)("path",{d:"M8 4.5V8l2.4 1.6"})]})},{id:"whiteboards",href:"#/whiteboards",labelKey:"nav.whiteboards",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})},{id:"office",href:"#/office",labelKey:"nav.office",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"3",y:"4",width:"10",height:"7",rx:"2"}),(0,t.jsx)("circle",{cx:"6",cy:"7.5",r:"1"}),(0,t.jsx)("circle",{cx:"10",cy:"7.5",r:"1"}),(0,t.jsx)("path",{d:"M8 4V2M4.5 11v2M11.5 11v2"})]})},{id:"bot-defaults",href:"#/bot-defaults",labelKey:"nav.botDefaults",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"5",width:"11",height:"8",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9",r:"1"}),(0,t.jsx)("path",{d:"M8 5V2.5M5.5 13v1.2M10.5 13v1.2"})]})},{id:"skills",href:"#/skills",labelKey:"nav.skills",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M3 2.5h10v3H3zM3 7h10v6.5H3z"}),(0,t.jsx)("path",{d:"M5.4 9.2h5.2M5.4 11.2h3.8"})]})},{id:"plugins",href:"#/plugins",label:"\u63D2\u4EF6",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M6.4 1.8h3.2v3h2.8v3.2H9.6v2.8H6.4V8H3.6V4.8h2.8z"}),(0,t.jsx)("path",{d:"M2.2 11.8h11.6v2.4H2.2z"})]})},{id:"team",href:"#/team",labelKey:"nav.team",manage:!0,icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"6.2"}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"}),(0,t.jsx)("rect",{x:"3.5",y:"6.5",width:"9",height:"7",rx:"2"})]})},{id:"settings",href:"#/settings",labelKey:"nav.settings",icon:(0,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsx)("circle",{cx:"8",cy:"8",r:"2"})]})}],ee=[],A=!0,$e=!1,_t=location.hash||"#/",F=null,te=!1,ne=null,me=null,Ft=null,fe=null,Kt=null,D=mt(),Vt="botmux.ownerAvatar.v1",Tn=new Set(["working","analyzing","active","starting"]),Ue="botmux:auth-expired";function Q(e){return(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:e})}function At(e){return e.labelKey?s(e.labelKey):e.label??""}function Sn(e,n){let o=n||"#/";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 Nn(){let e=at()?Dt.filter(o=>o.id!=="workflows"):Dt;if(ee.length===0)return e;let n=e.findIndex(o=>o.id==="plugins");return n<0?[...e,...ee]:[...e.slice(0,n+1),...ee,...e.slice(n+1)]}function Ln(e){let n=[];return Sn(e,_t)&&n.push("active"),e.id==="settings"&&te&&n.push("nav-has-update"),n.length?n.join(" "):void 0}function zt(){let e=ie(new URLSearchParams(location.search).get("locale"));if(e)return e;let n=location.hash.indexOf("?");return n<0?null:ie(new URLSearchParams(location.hash.slice(n+1)).get("locale"))}function Ht(){let e=zt();return!e||e===g.locale?!1:(g.setLocale(e),!0)}function On(){let e=location.hash.indexOf("?");return e<0?null:{path:location.hash.slice(0,e)||"#/",params:new URLSearchParams(location.hash.slice(e+1))}}function Pn(){let e=On(),n=e?.params.get("open");if(!e||!n||n!=="bot-onboarding"&&n!=="create-session")return!1;e.params.delete("open");let o=e.params.toString();return history.replaceState(null,"",o?`${e.path}?${o}`:e.path),n==="bot-onboarding"?window.dispatchEvent(new Event(de)):Re(),!0}function It(){let e=ne?`v${ne}`:"";return me==="codex"?s("update.navRuntimeBadgeTitle",{version:e}):s("update.navBadgeTitle",{version:e})}function Cn(e){fe=e}function Ae(){if(fe)return fe;let e=document.getElementById("root");if(!e)throw new Error("dashboard root is not mounted");return fe=e,e}function Dn(){return(0,u.useEffect)(()=>{ct()},[]),(0,u.useEffect)(()=>{Se()}),(0,t.jsxs)("div",{className:"theme-menu",id:"theme-menu",children:[(0,t.jsx)("button",{type:"button",className:"theme-menu-btn",id:"theme-menu-btn","aria-haspopup":"listbox","aria-expanded":"false","aria-label":"Theme",children:(0,t.jsx)("span",{className:"tm-ic",children:(0,t.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,t.jsx)("circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor"}),(0,t.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,t.jsx)("div",{className:"theme-menu-pop",id:"theme-menu-pop",role:"listbox",hidden:!0})]})}function An(){let e=[...se.sessions.values()],n=e.filter(d=>d.status!=="closed"),o=n.map(d=>({s:d,reason:Ye(d)})).filter(d=>!!d.reason).sort((d,c)=>le(d.s)-le(c.s)),a=new Set(o.map(d=>String(d.s.sessionId??""))),r=n.filter(d=>Tn.has(String(d.status))&&!a.has(String(d.sessionId??""))).length,i=o[0]??null,l=it(e).filter(d=>d.online||d.active.length>0).length,m=Math.max(0,n.length-o.length-r);return{working:r,attention:o.length,idle:m,onlineBots:l,attentionNotice:i?{count:o.length,time:Ge(le(i.s)),bot:Xe(i.s),reason:i.reason}:null}}function he(e){return(0,t.jsxs)("div",{className:`topbar-status-row${e.hot?" topbar-status-row-hot":""}`,children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("b",{className:e.value>0?"status-count-on":void 0,children:e.value})]})}function Hn(e){let{attention:n,idle:o,working:a}=e.summary,r=a+n+o,i=r===0?"conic-gradient(var(--border) 0 360deg)":(()=>{let l=a/r*360,m=l+n/r*360;return`conic-gradient(var(--accent) 0 ${l}deg, var(--warning) ${l}deg ${m}deg, var(--success) ${m}deg 360deg)`})();return(0,t.jsxs)("div",{className:"topbar-status-donut-wrap","aria-hidden":"true",children:[(0,t.jsx)("div",{className:"topbar-status-donut",style:{background:i}}),(0,t.jsxs)("div",{className:"topbar-status-donut-center",children:[(0,t.jsx)("b",{children:r}),(0,t.jsx)("span",{children:s("overview.openSessions")})]})]})}function He(){window.dispatchEvent(new Event(Te))}function In(e){let{autoOpen:n=!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=n&&!i,p=a||f;return(0,u.useEffect)(()=>{n||l(!1)},[n]),(0,u.useEffect)(()=>{if(!p)return;let v=w=>{let R=w.target;R instanceof Node&&c.current?.contains(R)||(r(!1),l(!0))};return document.addEventListener("pointerdown",v),()=>document.removeEventListener("pointerdown",v)},[p]),(0,t.jsxs)("div",{ref:c,className:`topbar-status-menu${f?" topbar-status-auto-open":""}${a?" is-open":""}${m?" suppress-hover":""}`,onPointerEnter:He,onPointerLeave:()=>d(!1),onFocusCapture:He,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,t.jsx)("button",{type:"button",id:"status",className:"connection-status","aria-haspopup":"true","aria-expanded":p,onClick:()=>{if(He(),p){r(!1),l(!0),d(!0);return}d(!1),r(!0)},children:s("overview.sessionOverview")}),(0,t.jsxs)("div",{className:"topbar-status-pop",children:[o.attentionNotice?(0,t.jsxs)("a",{className:"topbar-attention-notice",href:"#/sessions",children:[(0,t.jsx)("span",{className:"topbar-attention-dot","aria-hidden":"true"}),(0,t.jsxs)("span",{className:"topbar-attention-copy",children:[(0,t.jsx)("b",{children:s("strip.pending",{count:o.attentionNotice.count})}),(0,t.jsx)("small",{children:s("strip.longestCompact",{time:o.attentionNotice.time,bot:o.attentionNotice.bot,reason:o.attentionNotice.reason})})]}),(0,t.jsx)("span",{className:"topbar-attention-action",children:s("strip.handle")})]}):null,(0,t.jsxs)("div",{className:"topbar-status-list",children:[(0,t.jsx)(he,{label:s("overview.workingSessions"),value:o.working}),(0,t.jsx)(he,{label:s("overview.idleSessions"),value:o.idle}),(0,t.jsx)(he,{label:s("overview.attention"),value:o.attention,hot:o.attention>0}),(0,t.jsx)(he,{label:s("overview.onlineBots"),value:o.onlineBots})]}),(0,t.jsx)(Hn,{summary:o})]})]})}function Bn(e){return e.open?(0,t.jsx)("div",{id:"auth-expired-overlay",className:"auth-expired-overlay",role:"presentation",onClick:n=>{n.target===n.currentTarget&&e.onClose()},children:(0,t.jsxs)("div",{className:"auth-expired-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"auth-expired-title",children:[(0,t.jsx)("h2",{id:"auth-expired-title",children:"\u8BBF\u95EE\u94FE\u63A5\u5DF2\u5931\u6548"}),(0,t.jsx)("p",{children:"\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,t.jsx)("button",{id:"auth-expired-dismiss",type:"button",className:"primary",onClick:e.onClose,children:"\u77E5\u9053\u4E86"})]})}):null}function $n(e){let n=new Date(e);if(Number.isNaN(n.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(n)}catch{return e.slice(0,10)}}async function Bt(){let e=await fetch("/__selfcheck",{cache:"no-store"}),n=await e.text();if(!e.ok||!n)throw new Error(s("update.healthCheckFailed"));return n}function Un(e){let{status:n}=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)(""),[E,v]=(0,u.useState)(!1),[w,R]=(0,u.useState)(!1),[x,K]=(0,u.useState)(!1),[V,oe]=(0,u.useState)(!1),[z,Fe]=(0,u.useState)([]),[y,ge]=(0,u.useState)(null),[C,ve]=(0,u.useState)(null),O=(0,u.useRef)(!1),W=(0,u.useRef)(null),Ke=(0,u.useRef)(null),Ve=(0,u.useRef)(null),Wt=()=>{W.current!==null&&(window.clearTimeout(W.current),W.current=null)};if((0,u.useEffect)(()=>{O.current=!1,i("idle"),m(!1),c(!1),p(""),v(!1),R(!1),K(!1),oe(!1),Fe([]),ge(null),ve(null)},[n?.current,n?.latest]),(0,u.useEffect)(()=>{n&&c(n.versionLookupOk===!1)},[n]),(0,u.useEffect)(()=>{o||v(!1)},[o]),(0,u.useEffect)(()=>()=>Wt(),[]),(0,u.useEffect)(()=>{if(!o)return;let h=M=>{Ke.current?.contains(M.target)||a(!1)},k=M=>{M.key==="Escape"&&(a(!1),Ve.current?.focus())};return document.addEventListener("pointerdown",h),document.addEventListener("keydown",k),()=>{document.removeEventListener("pointerdown",h),document.removeEventListener("keydown",k)}},[o]),!n)return null;let H=n.behind&&!!n.latest,ye=!n.latest,we=H&&n.updateSupported&&!n.localDevInstall&&n.node.ok,ze=n.updateSupported&&!n.localDevInstall&&n.node.ok,N=r==="updating"||r==="restarting",qt=n.updateCommand??"botmux update",xe=`v${n.current}`,jt=n.latest?`v${n.latest}`:"",Gt=n.localDevInstall?s("update.localDev"):n.updateSupported?n.node.ok?"":s("update.nodeWarn",{version:n.node.version,required:n.node.required}):s("update.unsupportedInstall"),We=h=>{let k=Date.now(),M=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}W.current=window.setTimeout(()=>{M()},2e3)};W.current=window.setTimeout(()=>{M()},3e3)},Jt=async()=>{if(H){if(!we){a(!1),location.hash="#/settings";return}if(!O.current){O.current=!0,ve(null),c(!1),p("");try{let h=await Bt(),k=await De(fetch,i);if(!k.restarted){O.current=!1,i("error"),p(s("update.restartFailed",{detail:k.restartError??"unknown"}));return}We(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),oe(!1);try{let k=await fetch(`/api/update/versions${h?"?refresh=1":""}`,{cache:"no-store"}),M=await k.json().catch(()=>null);if(!M||!Array.isArray(M.versions))throw new Error("Invalid rollback versions response");let q=M.versions.filter(I=>{if(!I||typeof I!="object")return!1;let G=I;return typeof G.version=="string"&&(typeof G.publishedAt=="string"||G.publishedAt===null)}).slice(0,3);Fe(q),ge(I=>q.some(G=>G.version===I)?I:null),R(!0);let j=k.ok&&M.ok===!0;return oe(!j),j}catch{return R(!0),oe(!0),!1}finally{K(!1)}},Xt=async()=>{if(!(!y||!ze||x||O.current)){O.current=!0,ve(y),c(!1),p("");try{let h=await Bt();await De(fetch,i,y),We(h)}catch(h){O.current=!1,i("error"),p(h instanceof Error?h.message:String(h))}}},Yt=async()=>{if(!(l||N)){m(!0),c(!1);try{let h=await e.onRefresh();E&&await ke(!0),c(!h)}finally{m(!1)}}},Ee=r==="updating"?C?s("update.rollbackInstalling",{version:C}):s("update.updating",{command:qt}):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"):H?we?s("update.versionUpgradePrompt",{version:jt}):Gt:n.latest?s("update.upToDate"):s("update.checkUnavailable"),Zt=we?r==="error"?s("update.topbarRetry"):r==="idle"?s("update.topbarAction"):s("update.topbarWorking"):s("update.topbarReview"),ae=r==="error"||d&&ye?{className:"is-error",symbol:"!"}:H?{className:"has-update",symbol:"\u2191"}:ye?{className:"is-unknown",symbol:"?"}:{className:"is-current",symbol:"\u2713"};return(0,t.jsxs)("div",{ref:Ke,className:`dashboard-version-control${o?" is-open":""}`,children:[(0,t.jsxs)("button",{ref:Ve,type:"button",className:`dashboard-version-chip${H?" 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,t.jsx)("span",{children:xe}),N?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):(0,t.jsx)("span",{className:`dashboard-version-state ${ae.className}`,"aria-hidden":"true",children:ae.symbol})]}),o?(0,t.jsxs)("section",{className:"dashboard-version-popover",role:"dialog","aria-modal":"false","aria-labelledby":"dashboard-version-title",children:[(0,t.jsxs)("header",{className:"dashboard-version-popover-head",children:[(0,t.jsx)("strong",{id:"dashboard-version-title",children:s("update.current")}),(0,t.jsxs)("div",{className:"dashboard-version-head-actions",children:[(0,t.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:()=>{Yt()},children:(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M13.2 5.7A5.8 5.8 0 1 0 13 10.8"}),(0,t.jsx)("path",{d:"M13.2 2.8v2.9h-2.9"})]})}),(0,t.jsx)("button",{type:"button",className:"dashboard-version-close","aria-label":s("update.topbarClose"),onClick:()=>a(!1),children:"\xD7"})]})]}),(0,t.jsxs)("div",{className:"dashboard-version-popover-body",children:[(0,t.jsxs)("div",{className:"dashboard-version-current",children:[(0,t.jsx)("strong",{children:xe}),(0,t.jsx)("span",{className:ae.className,"aria-hidden":"true",children:N?(0,t.jsx)("span",{className:"dashboard-update-spinner"}):ae.symbol})]}),(0,t.jsx)("p",{className:`dashboard-version-message${r==="error"||d?" is-error":""}`,role:r==="error"||d?"alert":"status","aria-live":"polite",children:Ee}),(0,t.jsxs)("a",{className:"dashboard-version-release-link",href:"https://github.com/deepcoldy/botmux/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:(0,t.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,t.jsx)("span",{children:s("update.changelogViewOnGitHub")})]}),(H||E)&&n.installs.multiple?(0,t.jsxs)("details",{className:"dashboard-version-installs",children:[(0,t.jsx)("summary",{children:s("update.multiInstallWarn")}),(0,t.jsx)("ul",{children:n.installs.entries.map(h=>(0,t.jsx)("li",{children:h.binPath},h.binPath))})]}):null,ze?(0,t.jsxs)("details",{className:"dashboard-version-rollback",open:E,"aria-busy":x,onToggle:h=>{let k=h.currentTarget.open;v(k),k&&!w&&!x&&ke()},children:[(0,t.jsxs)("summary",{children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"8",cy:"8",r:"5.5"}),(0,t.jsx)("path",{d:"M8 4.8V8l2.2 1.3"})]}),(0,t.jsx)("span",{children:s("update.rollbackTitle")}),(0,t.jsx)("span",{className:"dashboard-version-rollback-chevron","aria-hidden":"true",children:"\u2304"})]}),(0,t.jsxs)("div",{className:"dashboard-version-rollback-body",children:[x&&z.length===0?(0,t.jsxs)("p",{className:"dashboard-version-rollback-status",role:"status","aria-live":"polite",children:[(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}),s("update.rollbackLoading")]}):null,V?(0,t.jsxs)("p",{className:"dashboard-version-rollback-load-error",role:"alert",children:[(0,t.jsx)("span",{children:s("update.rollbackLoadFailed")}),(0,t.jsx)("button",{type:"button",disabled:x,onClick:()=>{ke(!0)},children:s("update.rollbackRetry")})]}):null,w&&!x&&!V&&z.length===0?(0,t.jsx)("p",{className:"dashboard-version-rollback-status",children:s("update.rollbackEmpty")}):null,z.length>0?(0,t.jsxs)("fieldset",{disabled:N||x||V,children:[(0,t.jsx)("legend",{children:s("update.rollbackHint")}),(0,t.jsx)("div",{className:"dashboard-version-rollback-options",children:z.map(h=>(0,t.jsxs)("label",{className:y===h.version?"is-selected":"",children:[(0,t.jsx)("input",{type:"radio",name:"dashboard-rollback-version",value:h.version,checked:y===h.version,onChange:()=>ge(h.version)}),(0,t.jsxs)("strong",{children:["v",h.version]}),h.publishedAt?(0,t.jsx)("time",{dateTime:h.publishedAt,children:$n(h.publishedAt)}):null]},h.version))})]}):null,y?(0,t.jsxs)("p",{id:"dashboard-version-rollback-risk",className:"dashboard-version-rollback-risk",role:"note",children:[(0,t.jsxs)("svg",{viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.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,t.jsx)("path",{d:"M8 5.5v3.6M8 11.6h.01"})]}),(0,t.jsxs)("span",{children:[s("update.rollbackRisk",{version:y})," ",(0,t.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,z.length>0?(0,t.jsxs)("button",{type:"button",className:"dashboard-version-rollback-action",disabled:!y||x||V||N,"aria-describedby":y?"dashboard-version-rollback-risk":void 0,onClick:()=>{Xt()},children:[N&&C?(0,t.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]}),H&&!E&&!C?(0,t.jsxs)("footer",{className:"dashboard-version-popover-actions",children:[(0,t.jsx)("button",{type:"button",className:"dashboard-version-secondary",onClick:()=>a(!1),children:N?s("update.topbarClose"):s("update.topbarLater")}),(0,t.jsxs)("button",{type:"button",className:"dashboard-version-primary",disabled:N,onClick:()=>{Jt()},children:[N?(0,t.jsx)("span",{className:"dashboard-update-spinner","aria-hidden":"true"}):null,Zt]})]}):null]}):null]})}function _n(){let e=An(),[n,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(de,p),()=>window.removeEventListener(de,p)},[]),(0,u.useEffect)(()=>{let p=()=>r(!0);return window.addEventListener(Ue,p),be&&r(!0),()=>window.removeEventListener(Ue,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=()=>{be=!1,r(!1)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"aurora","aria-hidden":"true",children:[(0,t.jsx)("i",{className:"a1"}),(0,t.jsx)("i",{className:"a2"}),(0,t.jsx)("i",{className:"a3"})]}),(0,t.jsxs)("div",{className:"app-shell",children:[(0,t.jsxs)("header",{className:"topbar",children:[(0,t.jsx)("div",{className:"topbar-left",children:(0,t.jsxs)("div",{className:"topbar-brand-block",children:[(0,t.jsxs)("a",{className:"brand",href:"#/",children:[(0,t.jsx)("span",{className:"brand-mark","aria-hidden":"true",children:(0,t.jsx)("img",{className:"brand-logo-img",src:"/assets/brand-logo.png",alt:"",decoding:"sync",loading:"eager",fetchPriority:"high"})}),(0,t.jsx)("strong",{className:"brand-wordmark",children:"Botmux"}),(0,t.jsx)("span",{className:"brand-product",children:"Dashboard"})]}),(0,t.jsx)(Un,{status:Ft,onRefresh:()=>_e(!0)})]})}),(0,t.jsxs)("div",{className:"topbar-actions",children:[(0,t.jsx)(In,{summary:e,autoOpen:i}),(0,t.jsxs)("div",{className:"topbar-tool-group",children:[(0,t.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:()=>Fn(g.locale==="zh"?"en":"zh"),children:g.locale==="zh"?"CN":"EN"}),(0,t.jsx)(Dn,{}),(0,t.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.2",y:"2.2",width:"11.6",height:"11.6",rx:"2"}),(0,t.jsx)("path",{d:"M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"})]})),(0,t.jsx)("span",{children:s("nav.docs")})]})]}),(0,t.jsxs)("span",{className:"topbar-owner",title:F?.name,"aria-label":F?.name??"Owner",children:[(0,t.jsx)("span",{className:"topbar-owner-placeholder","aria-hidden":"true",children:Q((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("circle",{cx:"8",cy:"6",r:"2.4"}),(0,t.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,t.jsx)("img",{className:"topbar-owner-img",src:F.avatarUrl,alt:"",decoding:"async",referrerPolicy:"no-referrer",onError:p=>{p.currentTarget.remove()}}):null]})]})]}),(0,t.jsxs)("div",{className:"chrome-body",children:[(0,t.jsxs)("aside",{className:"sidebar",children:[A?(0,t.jsxs)("div",{className:"sidebar-create-actions",children:[(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>Re(),children:[Q((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M2 3.5h12v7H6l-3 3v-3H2z"}),(0,t.jsx)("path",{d:"M8 4.9v4.2M5.9 7h4.2"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createSession")})]}),(0,t.jsxs)("button",{type:"button",className:"sidebar-create-btn",onClick:()=>{tt()},children:[Q((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"2.5",y:"6",width:"11",height:"7.5",rx:"2"}),(0,t.jsx)("circle",{cx:"5.8",cy:"9.75",r:"1"}),(0,t.jsx)("circle",{cx:"10.2",cy:"9.75",r:"1"}),(0,t.jsx)("path",{d:"M8 6V3.8M6.3 1.9h3.4"})]})),(0,t.jsx)("span",{className:"sidebar-nav-label",children:s("nav.createBot")})]})]}):null,(0,t.jsx)("nav",{className:"sidebar-nav","aria-label":"Dashboard",children:Nn().filter(p=>A||!p.manage).map(p=>(0,t.jsxs)("a",{href:p.href,"data-route":p.id,className:[Ln(p),p.plugin?"sidebar-plugin-item":""].filter(Boolean).join(" ")||void 0,title:p.plugin?At(p):void 0,children:[Q(p.icon),(0,t.jsx)("span",{className:"sidebar-nav-label",children:At(p)}),p.id==="settings"&&te?(0,t.jsx)(et,{className:"nav-update-tip",label:It(),trigger:(0,t.jsx)("span",{className:"nav-update-dot","aria-hidden":"true"}),preventClick:!1,focusable:!1,children:It()}):null]},p.id))})]}),(0,t.jsxs)("div",{className:"workspace",children:[(0,t.jsx)("dialog",{id:"create-session-modal",className:"create-session-modal"}),(0,t.jsx)(nt,{open:n,onClose:()=>o(!1)}),(0,t.jsx)("main",{id:"root",ref:Cn})]})]})]}),(0,t.jsx)(Bn,{open:a,onClose:f})]})}function S(){Kt?.render((0,t.jsx)(_n,{}))}function Fn(e){g.setLocale(e),qn(e)}var be=!1;function Kn(){be||(be=!0,window.dispatchEvent(new Event(Ue)))}var Ie;function Vn(){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 zn=window.fetch.bind(window);window.fetch=async function(...n){let o=await zn(...n);if(o.status===401){let a=(n[1]?.method??"GET").toUpperCase();(a==="GET"||a==="HEAD")&&!$e?Kn():Vn()}return o};async function Wn(){try{let e=await fetch("/api/settings");if(e.ok){let n=await e.json();A=!!n.authed,g.authed=A,$e=!!(n.settings&&n.settings.publicReadOnly),g.publicReadOnly=$e;let o=zt()??ie(n.lang);o&&g.setLocale(o)}}catch{}}async function $t(){try{let e=await fetch("/api/plugins/dashboard");if(!e.ok)return;let n=await e.json();ee=(Array.isArray(n?.plugins)?n.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,t.jsxs)(t.Fragment,{children:[(0,t.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,t.jsx)("path",{d:"M8 13.8v1"})]})})),S()}catch{}}async function qn(e){if(A)try{await fetch("/api/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({lang:e})})}catch{}}async function _e(e=!1){if(!A)return!1;try{let n=await fetch(`/api/update/status${e?"?refresh=1":""}`,{cache:"no-store"});if(!n.ok)return!1;let o=await n.json();Ft=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,me="botmux",ne=String(o.latest)):a?(te=!0,me="codex",ne=String(a.latest)):(te=!1,me=null,ne=null),S(),o.versionLookupOk!==!1}catch{return!1}}function jn(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 Be(){let e=ft(D),n=location.hash||"#/";_t=n,S();let o=rt(n);if(o){window.location.replace(o);return}if(!A&&Mn.some(a=>n.startsWith("#/"+a))){jn(Ae()),D.rerenderOnUiChange=!0;return}if(n.startsWith("#/v3")){window.location.replace(`#/workflows${n.slice(4)}`);return}else if(n.startsWith("#/legacy-workflow")){window.location.replace("#/workflows");return}else if(/^#\/workflows(?:\/|-)catalog(?:[/?].*)?$/.test(n)){window.location.replace("#/workflows");return}if(n.startsWith("#/role-profiles")){window.location.replace(`#/roles/profile${n.slice(15)}`);return}try{let a=ut(n);await bt(D,e,Ae(),a?a.load:pt,{rerenderOnUiChange:a?a.rerenderOnUiChange:!1}),e===D.seq&&A&&Pn()}catch(a){if(e!==D.seq||yt(a,{href:window.location.href,hash:n,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 Gn(){try{let e=JSON.parse(window.localStorage.getItem(Vt)??"null");if(e?.avatarUrl)return{avatarUrl:String(e.avatarUrl),name:e.name?String(e.name):void 0}}catch{}return null}function Jn(){F=Gn(),S(),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(Vt,JSON.stringify({avatarUrl:e.avatarUrl,name:e.name??""}))}catch{}S()}}).catch(()=>{})}(async()=>{let e=ot(window.location.href);e&&window.history.replaceState(window.history.state,"",e),g.init(),Ht();let n=document.getElementById("app-root");if(!n)throw new Error("missing dashboard app root");Tt(n),Ot(),Kt=(0,Ut.createRoot)(n),S(),g.on(()=>{S(),D.rerenderOnUiChange&&Be()}),se.on(()=>{S()}),await Wn(),S(),window.addEventListener(Ze,()=>{$t()}),$t(),_e(),window.setInterval(()=>{document.hidden||_e()},30*6e4),Jn();try{await qe()}catch(o){console.error("botmux dashboard bootstrap failed",o),se.setOnline(!1)}Je().then(S),st().then(S),window.addEventListener("hashchange",()=>{Ht()||Be()}),Be()})();export{Kn as showAuthExpiredOverlay,Vn as showReadOnlyToast};
|