@sleep2agi/agent-network-dashboard 0.6.3-preview.43 → 0.6.3-preview.45
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/.next/BUILD_COMMIT +1 -0
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +78 -78
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +12 -12
- package/.next/server/app/_not-found.segments/_full.segment.rsc +12 -12
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +7 -7
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +14 -14
- package/.next/server/app/admin.segments/_full.segment.rsc +14 -14
- package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
- package/.next/server/app/admin.segments/_index.segment.rsc +7 -7
- package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/admin.segments/admin.segment.rsc +3 -3
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +14 -14
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +7 -7
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +14 -14
- package/.next/server/app/login.segments/_full.segment.rsc +14 -14
- package/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/.next/server/app/login.segments/_index.segment.rsc +7 -7
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/login.segments/login.segment.rsc +3 -3
- package/.next/server/app/logs/page.js.nft.json +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +14 -14
- package/.next/server/app/logs.segments/_full.segment.rsc +14 -14
- package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/logs.segments/_index.segment.rsc +7 -7
- package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/logs.segments/logs.segment.rsc +3 -3
- package/.next/server/app/messages/page.js.nft.json +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +14 -14
- package/.next/server/app/messages.segments/_full.segment.rsc +14 -14
- package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
- package/.next/server/app/messages.segments/_index.segment.rsc +7 -7
- package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/messages.segments/messages.segment.rsc +3 -3
- package/.next/server/app/node/page.js.nft.json +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +14 -14
- package/.next/server/app/node.segments/_full.segment.rsc +14 -14
- package/.next/server/app/node.segments/_head.segment.rsc +4 -4
- package/.next/server/app/node.segments/_index.segment.rsc +7 -7
- package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/node.segments/node.segment.rsc +3 -3
- package/.next/server/app/nodes/page.js.nft.json +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +14 -14
- package/.next/server/app/nodes.segments/_full.segment.rsc +14 -14
- package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/_index.segment.rsc +7 -7
- package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/nodes.segment.rsc +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/providers/page.js.nft.json +1 -1
- package/.next/server/app/providers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/providers.html +2 -2
- package/.next/server/app/providers.rsc +14 -14
- package/.next/server/app/providers.segments/_full.segment.rsc +14 -14
- package/.next/server/app/providers.segments/_head.segment.rsc +4 -4
- package/.next/server/app/providers.segments/_index.segment.rsc +7 -7
- package/.next/server/app/providers.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/providers.segments/providers/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/providers.segments/providers.segment.rsc +3 -3
- package/.next/server/app/server-logs/page.js.nft.json +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +14 -14
- package/.next/server/app/server-logs.segments/_full.segment.rsc +14 -14
- package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/_index.segment.rsc +7 -7
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +3 -3
- package/.next/server/app/servers/page.js.nft.json +1 -1
- package/.next/server/app/servers/page_client-reference-manifest.js +1 -1
- package/.next/server/app/servers.html +2 -2
- package/.next/server/app/servers.rsc +14 -14
- package/.next/server/app/servers.segments/_full.segment.rsc +14 -14
- package/.next/server/app/servers.segments/_head.segment.rsc +4 -4
- package/.next/server/app/servers.segments/_index.segment.rsc +7 -7
- package/.next/server/app/servers.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/servers.segments/servers/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/servers.segments/servers.segment.rsc +3 -3
- package/.next/server/app/settings/networks/page.js.nft.json +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +14 -14
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +7 -7
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +3 -3
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page.js.nft.json +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +14 -14
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +7 -7
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +3 -3
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +3 -3
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +14 -14
- package/.next/server/app/settings.segments/_full.segment.rsc +14 -14
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +7 -7
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page.js.nft.json +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +14 -14
- package/.next/server/app/tasks.segments/_full.segment.rsc +14 -14
- package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/_index.segment.rsc +7 -7
- package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/tasks.segment.rsc +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0jns048._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0jns048._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0va6h-y._.js +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0va6h-y._.js.map +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__056tw5g._.js → [root-of-the-server]__0z0lvdf._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0z0lvdf._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__13svd64._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__13svd64._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_0f4savf._.js +3 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_0f4savf._.js.map +1 -1
- package/.next/server/chunks/ssr/{dash-492_agent-network-dashboard_app_12yiaen._.js → dash-492_agent-network-dashboard_app_07foku.._.js} +2 -2
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_07foku.._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0fv9~x1._.js +1 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0fv9~x1._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0jey2is._.js +3 -0
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0jey2is._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0tbukk6._.js +3 -0
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0tbukk6._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_10nv4wt._.js +3 -0
- package/.next/server/chunks/ssr/{dash-492_agent-network-dashboard_app_02~ml1y._.js.map → dash-492_agent-network-dashboard_app_10nv4wt._.js.map} +1 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_components_07gcm8v._.js +3 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_components_07gcm8v._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/0.t9q6b8-tp7o.js +1 -0
- package/.next/static/chunks/{07hmiozabjis~.js → 00.lep~gx75xc.js} +1 -1
- package/.next/static/chunks/0casvy.vqveum.js +7 -0
- package/.next/static/chunks/0e3gktr80d3im.js +2 -0
- package/.next/static/chunks/0gv~xarphwy7~.js +1 -0
- package/.next/static/chunks/0jgo1j.i.wd5q.js +7 -0
- package/.next/static/chunks/0k_3kdj.1c2m5.js +1 -0
- package/.next/static/chunks/0uj3h67aerffm.js +1 -0
- package/.next/static/chunks/0~rml5aiu3yw7.js +7 -0
- package/.next/static/chunks/0~v0m8f1.aob5.js +4 -0
- package/.next/static/chunks/16._eot2r-z1r.js +1 -0
- package/.next/static/chunks/16kecv_vyjyyv.js +1 -0
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/ChatPopover.tsx +9 -2
- package/app/components/HealthBanner.tsx +21 -2
- package/app/components/Sidebar.tsx +21 -2
- package/app/components/StatsBar.tsx +32 -14
- package/app/components/TaskChatPanel.tsx +11 -3
- package/app/components/TopoGraph.tsx +25 -11
- package/app/lib/presence.ts +98 -0
- package/app/page.tsx +23 -14
- package/package.json +1 -1
- package/tests/e2e-515-presence-predicate.spec.ts +75 -0
- package/tests/e2e-515-presence.spec.ts +148 -0
- package/tests/e2e-53-blind-vs-empty.spec.ts +262 -0
- package/tests/e2e-53-presence-status.spec.ts +52 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__056tw5g._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__06g2-qq._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__06g2-qq._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0qv41lg._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0qv41lg._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_02~ml1y._.js +0 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_04nejob._.js +0 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_04nejob._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0kehfih._.js +0 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0kehfih._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0vvr81v._.js +0 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0vvr81v._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0~9qq2o._.js +0 -3
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_0~9qq2o._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-492_agent-network-dashboard_app_12yiaen._.js.map +0 -1
- package/.next/static/chunks/00kg.oomong9m.js +0 -1
- package/.next/static/chunks/02a6-zbyr.zoy.js +0 -2
- package/.next/static/chunks/06ww0tn_jfcfd.js +0 -1
- package/.next/static/chunks/0_90al8hntttb.js +0 -1
- package/.next/static/chunks/0idb.71vziyhz.js +0 -7
- package/.next/static/chunks/0qw7i_y5i75.q.js +0 -1
- package/.next/static/chunks/0szzm0ma-335n.js +0 -4
- package/.next/static/chunks/0xxfl.bqy.bd4.js +0 -7
- package/.next/static/chunks/0yscbgm2a_d1u.js +0 -1
- package/.next/static/chunks/0zj956.f-k1jj.js +0 -7
- package/.next/static/chunks/17ns4oqzib99e.js +0 -1
- /package/.next/static/{BXw6vds1QR_zb-M-KgpT7 → EEoQxe-lggOsAx0h8hIFx}/_buildManifest.js +0 -0
- /package/.next/static/{BXw6vds1QR_zb-M-KgpT7 → EEoQxe-lggOsAx0h8hIFx}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{BXw6vds1QR_zb-M-KgpT7 → EEoQxe-lggOsAx0h8hIFx}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,65151,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-gray-500/10 text-gray-300 border-gray-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-gray-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-gray-400",acked:"bg-gray-300",running:"bg-green-500",replied:"bg-gray-400",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-gray-600",expired:"bg-gray-600"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-gray-500/10 text-gray-300 border-gray-500/20",acked:"bg-gray-500/10 text-gray-300 border-gray-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-gray-500/10 text-gray-300 border-gray-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-gray-500/10 text-gray-500 border-gray-500/20",expired:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#9ca3af",acked:"#9ca3af",running:"#4ade80",replied:"#9ca3af",closed:"#6b7280",failed:"#f87171",cancelled:"#6b7280",expired:"#6b7280"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},16657,e=>{"use strict";var t=e.i(77535);e.s(["previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return(0,t.relativeAgo)(e)??"--"}])},31595,10418,e=>{"use strict";var t=e.i(26387),a=e.i(51071);let r="anet_avatars_v1",s="anet-avatars-updated",n=null,l=[],i=!1;function o(){try{let e=JSON.parse(window.localStorage.getItem(r)||"{}");return e&&"object"==typeof e?e:{}}catch{return{}}}function d(e){return e&&(o()[e]||n?.[e]||function(e){if(!l.length)return"";let t=5381;for(let a=0;a<e.length;a++)t=(t<<5)+t+e.charCodeAt(a)>>>0;return l[t%l.length]}(e))||""}let c=0;function u(e){i||(i=!0,fetch("/avatars/manifest.json",{cache:"no-cache"}).then(e=>e.ok?e.json():null).then(e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){let t={};for(let[a,r]of Object.entries(e))!a.startsWith("_")&&"string"==typeof r&&r.startsWith("/")&&(t[a]=r);let a=e._pool;l=Array.isArray(a)?a.filter(e=>"string"==typeof e&&e.startsWith("/")):[],n=t,window.dispatchEvent(new Event(s))}}).catch(()=>{}));let t=()=>{c++,e()};return window.addEventListener(s,t),window.addEventListener("storage",t),()=>{window.removeEventListener(s,t),window.removeEventListener("storage",t)}}function x(e){return(0,a.useSyncExternalStore)(u,()=>d(e),()=>"")}e.s(["getAvatarUrl",0,d,"setAvatarUrl",0,function(e,t){if(e)try{let a=o();t.trim()?a[e]=t.trim():delete a[e],window.localStorage.setItem(r,JSON.stringify(a)),window.dispatchEvent(new Event(s))}catch{}},"useAvatarUrl",0,x,"useAvatarsVersion",0,function(){return(0,a.useSyncExternalStore)(u,()=>c,()=>0)}],10418);let h=[180,200,220,270,300,330,30,90];function g(e){let t=0;for(let a=0;a<e.length;a++)t=31*t+e.charCodeAt(a)>>>0;let a=h[t%h.length];return{bg:`hsl(${a} 55% 22%)`,ring:`hsl(${a} 60% 45%)`,text:`hsl(${a} 80% 78%)`}}function b(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:s=""}){let n=x(e),[l,i]=(0,a.useState)("loading"),[o,d]=(0,a.useState)(n);if(n!==o&&(d(n),i("loading")),n&&"error"!==l)return(0,t.jsx)("span",{className:`anet-alias-avatar relative inline-flex shrink-0 overflow-hidden rounded-full border border-[var(--border)] ${"loading"===l?"animate-pulse bg-[var(--bg-elevated)]":""} ${s}`,style:{width:r,height:r},title:e,"aria-hidden":!0,children:(0,t.jsx)("img",{src:n,alt:"",loading:"lazy",onLoad:()=>i("ready"),onError:()=>i("error"),className:`h-full w-full rounded-full object-cover transition-opacity duration-150 ${"ready"===l?"opacity-100":"opacity-0"}`})});if(/\bgrok\b|grok-build|grok测试员|grok-demo/i.test(e))return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border border-emerald-500/45 bg-emerald-950/70 shrink-0 ${s}`,style:{width:r,height:r,backgroundImage:"url(/vendors/grok.svg)",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"68% 68%"},title:e,"aria-hidden":!0});let c=g(e),u=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${s}`,style:{width:r,height:r,fontSize:u,backgroundColor:c.bg,borderColor:c.ring,color:c.text},title:e,"aria-hidden":!0,children:b(e)})},"aliasAvatarColors",0,g,"aliasInitial",0,b],31595)},35361,e=>{"use strict";var t=e.i(97940),a=e.i(1065);let r=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},s={refreshInterval:5e3,dedupingInterval:3e3};function n(e,t){if(!t)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",r,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,t.default)("/api/hub/health",r,s);return{health:e||null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:o,isLoading:d}=(0,t.default)(n(`/api/hub/messages?limit=${e}`,l),r,{...s,keepPreviousData:!0});return{messages:i?.messages||[],error:o,isLoading:d}},"useNodeLifecycle",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,mutate:o}=(0,t.default)(n("/api/hub/nodes",e),r,s),d={},c={},u={};for(let e of l?.nodes??[])e.alias&&"string"==typeof e.lifecycle_state&&(d[e.alias]=e.lifecycle_state),e.alias&&"string"==typeof e.node_id&&(c[e.alias]=e.node_id),e.alias&&(u[e.alias]={display_name:"string"==typeof e.display_name?e.display_name:null,team:"string"==typeof e.team?e.team:null,tags:Array.isArray(e.tags)?e.tags:[],attrs_revision:"number"==typeof e.attrs_revision?e.attrs_revision:0});return{lifecycleByAlias:d,nodeIdByAlias:c,attrsByAlias:u,error:i,refreshNodes:o}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:o}=(0,t.default)(n("/api/hub/status",e),r,s);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,t.default)(n("/api/hub/stats",e),r,s);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:d,isLoading:c}=(0,t.default)(n(`/api/hub/tasks?${i}`,l),r,s);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:d,isLoading:c}}])},50632,e=>{"use strict";var t=e.i(26387),a=e.i(51071);let r=new Set(["png","jpg","jpeg","gif","webp","mp4","webm","mov"]),s=new Set(["image/png","image/jpeg","image/gif","image/webp"]),n=new Set(["video/mp4","video/webm"]),l=/^[A-Za-z0-9_-]{8,64}$/;async function i(e){let t=await fetch(`/api/hub/files/${encodeURIComponent(e)}`,{credentials:"include"});if(!t.ok)throw Error(`HTTP ${t.status}`);let a=t.headers.get("x-verified-type"),r=a&&(s.has(a)||n.has(a))?a:null,l=await t.blob(),i=r?new Blob([l],{type:r}):l;return{blobUrl:URL.createObjectURL(i),verifiedType:r,blob:i}}function o(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}function d({fileId:e,name:r,size:n,onNotInlineable:l}){let o="number"==typeof n&&n<=5242880,[c,u]=(0,a.useState)(null),[x,h]=(0,a.useState)(!1),[g,b]=(0,a.useState)(!1),m=(0,a.useRef)(l);m.current=l;let p=(0,a.useCallback)(async()=>{if(!x&&!c){h(!0);try{let{blobUrl:t,verifiedType:a}=await i(e);if(!a||!s.has(a)){URL.revokeObjectURL(t),m.current();return}u(t)}catch{b(!0)}finally{h(!1)}}},[e,x,c]);return((0,a.useEffect)(()=>{o&&p()},[o,p]),(0,a.useEffect)(()=>{if(c)return()=>URL.revokeObjectURL(c)},[c]),g)?(0,t.jsx)("div",{className:"mt-2 rounded-lg border border-amber-500/20 bg-amber-500/5 px-3 py-2 text-sm text-amber-200",children:"图片加载失败 · 请点击下方下载按钮查看"}):c?(0,t.jsx)("div",{className:"mt-2 overflow-hidden rounded-lg border border-white/10 bg-black/20",children:(0,t.jsx)("img",{src:c,alt:r,className:"block max-h-[50vh] w-auto max-w-full cursor-zoom-in object-contain",onClick:()=>window.open(c,"_blank","noopener")})}):(0,t.jsxs)("button",{type:"button",onClick:p,disabled:x,className:"mt-2 flex w-full items-center gap-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-3 py-2 text-left text-sm text-cyan-100 transition hover:border-cyan-400/40 hover:bg-cyan-500/10 disabled:cursor-wait disabled:opacity-60",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-lg",children:"🖼️"}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:r}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:x?"加载中…":"点击查看"})]})}function c({fileId:e,name:r,onNotInlineable:s}){let[l,o]=(0,a.useState)(null),[d,u]=(0,a.useState)(!1),[x,h]=(0,a.useState)(!1),g=(0,a.useRef)(s);g.current=s;let b=(0,a.useCallback)(async()=>{if(!d&&!l){u(!0);try{let{blobUrl:t,verifiedType:a}=await i(e);if(!a||!n.has(a)){URL.revokeObjectURL(t),g.current();return}o(t)}catch{h(!0)}finally{u(!1)}}},[e,d,l]);return((0,a.useEffect)(()=>{if(l)return()=>URL.revokeObjectURL(l)},[l]),x)?(0,t.jsx)("div",{className:"mt-2 rounded-lg border border-amber-500/20 bg-amber-500/5 px-3 py-2 text-sm text-amber-200",children:"视频加载失败 · 请点击下方下载按钮查看"}):l?(0,t.jsx)("div",{className:"mt-2 overflow-hidden rounded-lg border border-white/10 bg-black/20",children:(0,t.jsx)("video",{src:l,controls:!0,autoPlay:!0,className:"block max-h-[50vh] w-full",children:"您的浏览器不支持内联视频播放,请下载后查看。"})}):(0,t.jsxs)("button",{type:"button",onClick:b,disabled:d,className:"mt-2 flex w-full items-center gap-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-3 py-2 text-left text-sm text-cyan-100 transition hover:border-cyan-400/40 hover:bg-cyan-500/10 disabled:cursor-wait disabled:opacity-60",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-lg",children:"🎬"}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:r}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:d?"加载中…":"▶ 播放"})]})}e.s(["AttachmentBlock",0,function({attachment:e}){var i,u;let x,h,[g,b]=(0,a.useState)(!1),[m,p]=(0,a.useState)(null),[f,y]=(0,a.useState)(!1),v=function(e){if("string"!=typeof e||0===e.length)return"file";let t=e.replace(/[/\\]/g,"_").replace(/[\r\n\t\0]/g,"_");for(;t.startsWith(".");)t=t.slice(1);return t.length>200&&(t=t.slice(0,200)),t||"file"}(e.name),w="string"!=typeof(i=e.mime)?"":i.replace(/[^a-zA-Z0-9./+-]/g,"").slice(0,100),j="number"!=typeof(u=e.size)||!Number.isFinite(u)||u<0?"":u<1024?`${u} B`:u<1048576?`${(u/1024).toFixed(1)} KB`:u<0x40000000?`${(u/1024/1024).toFixed(1)} MB`:`${(u/1024/1024/1024).toFixed(2)} GB`,S=(x=(w||"").toLowerCase(),h=(v.split(".").pop()||"").toLowerCase(),x.startsWith("image/")?"🖼️":x.startsWith("video/")?"🎬":x.startsWith("audio/")?"🎵":x.includes("pdf")||"pdf"===h?"📄":["ppt","pptx"].includes(h)?"📊":["doc","docx"].includes(h)?"📝":["xls","xlsx","csv"].includes(h)?"📈":["zip","tar","gz","rar","7z"].includes(h)?"📦":"📎"),N="string"==typeof e.file_id&&l.test(e.file_id),k=N&&!f&&function(e,t){if(s.has(t)||n.has(t))return!0;let a=o(e);return""!==a&&r.has(a)}(v,w),_=o(v),C=k?n.has(w)||["mp4","webm","mov"].includes(_)?"video":"image":null;async function A(){if(!N||!e.file_id)return;p(null),b(!0);let t=null;try{let a=await fetch(`/api/hub/files/${encodeURIComponent(e.file_id)}`,{credentials:"include"});if(!a.ok)throw Error(`HTTP ${a.status}`);let r=await a.blob();t=URL.createObjectURL(r);let s=document.createElement("a");s.href=t,s.download=v,s.rel="noopener",document.body.appendChild(s),s.click(),document.body.removeChild(s)}catch(e){p(e instanceof Error?e.message:String(e))}finally{t&&URL.revokeObjectURL(t),b(!1)}}return N?(0,t.jsxs)("div",{className:"mt-2 flex flex-col",children:["image"===C&&e.file_id&&(0,t.jsx)(d,{fileId:e.file_id,name:v,size:"number"==typeof e.size?e.size:void 0,onNotInlineable:()=>y(!0)}),"video"===C&&e.file_id&&(0,t.jsx)(c,{fileId:e.file_id,name:v,onNotInlineable:()=>y(!0)}),(0,t.jsxs)("button",{type:"button",onClick:A,disabled:g,className:"flex w-full items-center gap-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-3 py-2 text-left text-sm text-cyan-100 transition hover:border-cyan-400/40 hover:bg-cyan-500/10 disabled:cursor-wait disabled:opacity-60 mt-2 first:mt-0",title:`Download ${v}`,children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-lg",children:S}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:v}),j&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-400",children:j}),w&&(0,t.jsx)("span",{className:"shrink-0 rounded bg-white/5 px-1.5 py-0.5 text-[10px] text-neutral-400",children:w}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:g?"下载中…":m?`⚠ ${m}`:"↓ 下载"})]})]}):(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2 rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm text-neutral-300",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:S}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:v}),j&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-500",children:j}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-500",title:"Attachment has no file_id — single-host path only. Ask the sender to re-upload.",children:"(host-local)"})]})},"extractAttachments",0,function(e){if(!e||"object"!=typeof e)return[];let t=e.meta;if(!t&&"string"==typeof e.meta_json&&e.meta_json.length>0)try{t=JSON.parse(e.meta_json)}catch{return[]}if(!t||"object"!=typeof t)return[];let a=t.attachments;return Array.isArray(a)?a.filter(e=>!!e&&"object"==typeof e).map(e=>({file_id:"string"==typeof e.file_id?e.file_id:void 0,path:"string"==typeof e.path?e.path:void 0,name:"string"==typeof e.name?e.name:void 0,mime:"string"==typeof e.mime?e.mime:void 0,size:"number"==typeof e.size?e.size:void 0,type:"string"==typeof e.type?e.type:void 0})):[]}])},61371,37360,e=>{"use strict";var t=e.i(51071);let a=null,r=!1,s=new Set,n=new Map;function l(e){return s.add(e),()=>void s.delete(e)}e.s(["pinyinMatch",0,function(t,l){let i=l.trim().toLowerCase();if(!i||t.toLowerCase().includes(i))return!0;if(a||r||(r=!0,e.A(32567).then(e=>{a=t=>[e.pinyin(t,{toneType:"none",type:"array"}).join("").toLowerCase(),e.pinyin(t,{pattern:"first",toneType:"none",type:"array"}).join("").toLowerCase()],s.forEach(e=>e())}).catch(()=>{r=!1})),!a)return!1;let o=n.get(t);return o||(o=a(t),n.set(t,o)),o[0].includes(i)||o[1].includes(i)},"usePinyinReady",0,function(){return(0,t.useSyncExternalStore)(l,()=>!!a,()=>!1)}],61371),e.s(["t",0,function(e,t){return"u">typeof navigator&&(navigator.language||"").toLowerCase().startsWith("zh")?e:t}],37360)},71477,e=>{"use strict";var t=e.i(26387),a=e.i(51071),r=e.i(18943),s=e.i(41065),n=e.i(34844),l=e.i(16657),i=e.i(31595),o=e.i(65151),d=e.i(93950);function c({tmuxName:e}){let[r,s]=(0,a.useState)(""),[n,l]=(0,a.useState)(!1),[i,o]=(0,a.useState)(!1),d=async()=>{l(!0);try{let t=await fetch(`/api/hub/tmux?name=${encodeURIComponent(e)}`),a=await t.json();s(a.output||a.error||"No output")}catch{s("Failed to fetch")}l(!1)};return(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("h2",{className:"text-sm font-semibold text-gray-300",children:["Terminal (",e,")"]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{onClick:d,disabled:n,className:"text-xs text-cyan-400 hover:text-cyan-300 disabled:text-gray-600",children:n?"Loading...":"Capture"}),r&&(0,t.jsx)("button",{onClick:()=>o(!i),className:"text-xs text-gray-500 hover:text-gray-300",children:i?"Collapse":"Expand"})]})]}),r&&(0,t.jsx)("pre",{className:`text-[11px] text-green-300 bg-[#060607] rounded-lg px-3 py-2 border border-[#1c1c1f] overflow-x-auto whitespace-pre font-mono ${i?"max-h-96":"max-h-32"} overflow-y-auto`,children:r}),!r&&(0,t.jsx)("p",{className:"text-xs text-gray-600",children:"Click Capture to view terminal output"})]})}function u(){let e=(0,r.useSearchParams)().get("alias")||"",[n,l]=(0,a.useState)(null),[d,c]=(0,a.useState)([]),[u,h]=(0,a.useState)(0),[g,b]=(0,a.useState)(""),[m,p]=(0,a.useState)(""),[f,y]=(0,a.useState)(!1),v=(0,a.useCallback)(async()=>{if(e)try{let t=await fetch(`/api/hub/session?alias=${encodeURIComponent(e)}`),a=await t.json();a.session&&l(a.session),a.inbox&&c(a.inbox),h(a.sse||0),b("")}catch(e){b(e instanceof Error?e.message:"fetch failed")}},[e]);(0,a.useEffect)(()=>{v();let e=setInterval(v,5e3);return()=>clearInterval(e)},[v]);let[w,j]=(0,a.useState)(""),S=async()=>{if(m.trim()&&e){y(!0),j("");try{let t=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:e,task:m,...n?.network_id?{network_id:n.network_id}:{}})}),a=await t.json();a.ok?(p(""),setTimeout(v,2e3)):j(a.error||"Send failed")}catch(e){j(e instanceof Error?e.message:"Send failed")}y(!1)}};if(!e)return(0,t.jsx)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-6 flex items-center justify-center",children:(0,t.jsxs)("p",{className:"text-gray-500",children:["No alias specified. ",(0,t.jsx)(s.default,{href:"/",className:"text-blue-400 hover:underline",children:"Back to dashboard"})]})});let N=o.SESSION_STATUS_TEXT_CLASS[n?.status||""]||o.SESSION_STATUS_TEXT_CLASS.offline;return(0,t.jsxs)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 mb-6 lg:ml-0 ml-10",children:[(0,t.jsx)(s.default,{href:"/nodes",className:"text-gray-500 hover:text-gray-300 text-sm shrink-0",children:"← Nodes"}),(0,t.jsx)(i.AliasAvatar,{alias:e,size:32}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("h1",{className:"text-xl sm:text-2xl font-bold text-white truncate",children:e}),(0,t.jsx)("span",{className:`inline-block w-1.5 h-1.5 rounded-full shrink-0 ${u>0?n?.status==="working"?"bg-green-500 animate-pulse":"bg-emerald-400":"bg-gray-500"}`}),(0,t.jsx)("span",{className:`text-[10px] uppercase tracking-wide font-semibold ${N}`,children:n?.status||"unknown"})]}),n?.agent&&(0,t.jsxs)("div",{className:"text-xs text-gray-500 truncate",children:[n.agent,n.server?(0,t.jsxs)(t.Fragment,{children:[" ",(0,t.jsx)("span",{className:"text-gray-700 mx-1",children:"·"})," ",n.server]}):null]})]})]}),g&&(0,t.jsx)("div",{className:"bg-red-900/20 border border-red-800/40 text-red-300 px-4 py-2 rounded-lg mb-6 text-sm",children:g}),(0,t.jsx)(x,{alias:e,session:n,sse:u,sendMsg:m,setSendMsg:p,sending:f,sendTask:S,sendError:w})]})}function x({alias:e,session:r,sse:s,sendMsg:l,setSendMsg:i,sending:o,sendTask:u,sendError:h}){let[b,m]=(0,a.useState)("chat"),{hasUnread:p}=(0,d.useChatUnread)(),[f,y]=(0,a.useState)([]),[v,w]=(0,a.useState)(!1),j=p(e);return(0,a.useEffect)(()=>{"events"!==b||v||fetch("/api/hub/task-events?limit=50").then(e=>e.json()).then(e=>{y(e.events||[]),w(!0)}).catch(()=>w(!0))},[b,v]),(0,t.jsxs)("div",{className:"bg-[#111113] border border-[#26262b] rounded-xl overflow-hidden h-[calc(100vh-140px)] flex flex-col",children:[(0,t.jsx)("div",{className:"flex border-b border-[#26262b] bg-[#0e0e10] shrink-0",children:[{id:"chat",label:"Chat",icon:"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"},{id:"events",label:"Events",icon:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2v6h6 M16 13H8 M16 17H8 M10 9H8"},{id:"info",label:"Info",icon:"M12 21a9 9 0 100-18 9 9 0 000 18z M12 8h.01 M11 12h1v4h1"}].map(e=>(0,t.jsxs)("button",{onClick:()=>m(e.id),className:`flex items-center gap-2 px-5 py-3 text-sm font-medium border-b-2 transition-colors ${b===e.id?"border-cyan-400 text-cyan-300":"border-transparent text-gray-500 hover:text-gray-300"}`,children:[(0,t.jsx)("svg",{className:"w-4 h-4 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:e.icon})}),(0,t.jsxs)("span",{className:"relative inline-flex items-center gap-2",children:[e.label,"chat"===e.id&&j&&"chat"!==b&&(0,t.jsx)("span",{className:"inline-block h-2.5 w-2.5 rounded-full bg-red-500","aria-label":"Unread chat messages"})]})]},e.id))}),(0,t.jsxs)("div",{className:"flex-1 overflow-hidden",children:["chat"===b&&(0,t.jsx)(n.TaskChatPanel,{alias:e,onClose:()=>{},inline:!0}),"events"===b&&(0,t.jsx)(g,{events:f,loading:!v}),"info"===b&&(0,t.jsxs)("div",{className:"p-4 overflow-y-auto h-full space-y-4 max-w-2xl",children:[(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-3",children:"Node Info"}),(0,t.jsx)("div",{className:"space-y-2 text-xs",children:[{label:"Node ID",value:r?.node_id,alwaysShow:!0},{label:"Session ID",value:r?.session_id,alwaysShow:!0},{label:"Resume ID",value:r?.resume_id,alwaysShow:!0},{label:"Alias",value:r?.alias,alwaysShow:!0},{label:"Agent",value:r?.agent,alwaysShow:!0},{label:"Model",value:r?.model,alwaysShow:!0},{label:"Version",value:r?.version},{label:"Server",value:r?.server,alwaysShow:!0},{label:"Hostname",value:r?.hostname,alwaysShow:!0},{label:"IP",value:r?.ip,alwaysShow:!0},{label:"Project",value:r?.project_dir},{label:"Config",value:r?.config_path,alwaysShow:!0},{label:"Channels",value:r?.channels?.length?Array.isArray(r.channels)?r.channels.join(", "):r.channels:null,alwaysShow:!0},{label:"Tmux",value:r?.tmux_name},{label:"SSE",value:s>0?`Connected (${s})`:"Disconnected",alwaysShow:!0},{label:"Progress",value:r?.progress?`${r.progress}%`:null},{label:"Score",value:r?.score},{label:"Last Seen",value:r?.last_seen_at,alwaysShow:!0},{label:"Registered",value:r?.registered_at,alwaysShow:!0},{label:"Updated",value:r?.updated_at,alwaysShow:!0}].map(({label:e,value:a,alwaysShow:r})=>a||r?(0,t.jsxs)("div",{className:"flex justify-between gap-3",children:[(0,t.jsx)("span",{className:"text-gray-500 shrink-0",children:e}),(0,t.jsx)("span",{className:"text-gray-300 truncate max-w-[200px]",title:a?String(a):"--",children:a?String(a):"--"})]},e):null)})]}),r?.task&&(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-2",children:"Current Task"}),(0,t.jsx)("p",{className:"text-xs text-gray-400 whitespace-pre-wrap",children:r.task})]}),r?.output&&(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-2",children:"Last Output"}),(0,t.jsx)("p",{className:"text-xs text-gray-400 whitespace-pre-wrap max-h-48 overflow-y-auto",children:r.output})]}),(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-2",children:"Send Task"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"text",value:l,onChange:e=>i(e.target.value),onKeyDown:e=>"Enter"===e.key&&u(),placeholder:`Send task to ${e}...`,className:"flex-1 bg-[#0e0e10] border border-[#26262b] rounded px-3 py-2 text-base sm:text-xs text-white placeholder-gray-600 focus:border-blue-500 focus:outline-none"}),(0,t.jsx)("button",{onClick:u,disabled:o||!l.trim(),className:"inline-flex min-h-[44px] items-center justify-center px-4 py-2 bg-blue-600 hover:bg-blue-500 disabled:bg-gray-700 text-white text-xs rounded transition-colors",children:o?"...":"Send"})]}),h&&(0,t.jsx)("div",{className:"mt-2 text-xs text-red-400",children:h})]}),r?.tmux_name&&(0,t.jsx)(c,{tmuxName:r.tmux_name})]})]})]})}let h={delivered:{dot:"bg-blue-400",line:"bg-blue-500/30",path:"M12 5v14 M5 12l7 7 7-7"},acked:{dot:"bg-yellow-400",line:"bg-yellow-500/30",path:"M20 6 9 17l-5-5"},running:{dot:"bg-green-400",line:"bg-green-500/30",path:"M13 2L4 14h6l-1 8 10-12h-6l1-8z"},replied:{dot:"bg-purple-400",line:"bg-purple-500/30",path:"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"},failed:{dot:"bg-red-400",line:"bg-red-500/30",path:"M18 6 6 18 M6 6l12 12"},created:{dot:"bg-gray-400",line:"bg-gray-500/30",path:"M12 5v14 M5 12h14"}};function g({events:e,loading:a}){if(a)return(0,t.jsx)("div",{className:"flex justify-center py-8",children:(0,t.jsx)("div",{className:"w-5 h-5 border-2 border-cyan-500/30 border-t-cyan-500 rounded-full animate-spin"})});if(0===e.length)return(0,t.jsx)("div",{className:"text-center py-12 text-gray-600 text-xs",children:"No task events yet"});let r=new Map;return e.forEach(e=>{let t=e.task_id||`ungrouped-${e.id}`,a=r.get(t)||[];a.push(e),r.set(t,a)}),(0,t.jsx)("div",{className:"p-4 overflow-y-auto h-full space-y-4",children:[...r.entries()].map(([e,a])=>(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4",children:[(0,t.jsxs)("div",{className:"text-[10px] text-gray-600 mb-3 truncate",children:["Task: ",e.slice(0,20),"..."]}),(0,t.jsxs)("div",{className:"relative pl-6",children:[(0,t.jsx)("div",{className:"absolute left-[9px] top-2 bottom-2 w-0.5 bg-[#1c1c1f]"}),a.map((e,a)=>{let r=h[e.to_status]||h.created;return(0,t.jsxs)("div",{className:"relative pb-4 last:pb-0",children:[(0,t.jsx)("div",{className:`absolute -left-6 top-0.5 w-[18px] h-[18px] rounded-full ${r.dot} flex items-center justify-center z-10 border-2 border-[#161618]`,children:(0,t.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"#0e0e10",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:(0,t.jsx)("path",{d:r.path})})}),(0,t.jsxs)("div",{className:"ml-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:`text-xs font-medium ${"failed"===e.to_status?"text-red-400":"replied"===e.to_status?"text-purple-400":"text-gray-300"}`,children:e.event_type}),e.from_status&&(0,t.jsxs)("span",{className:"text-[10px] text-gray-600",children:[e.from_status," → ",e.to_status]}),(0,t.jsx)("span",{className:"text-[10px] text-gray-600 ml-auto",children:(0,l.timeAgo)(e.created_at)})]}),e.detail&&(0,t.jsxs)("div",{className:"text-[11px] text-gray-500 mt-0.5 truncate",children:[e.detail.slice(0,50),e.detail.length>50?"...":""]})]})]},e.id)})]})]},e))})}e.s(["default",0,function(){return(0,t.jsx)(a.Suspense,{fallback:(0,t.jsx)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:(0,t.jsx)("div",{className:"lg:ml-0 ml-10 text-gray-500 text-sm",children:"Loading…"})}),children:(0,t.jsx)(u,{})})}])},32567,e=>{e.v(t=>Promise.all(["static/chunks/0z5k85v30uigc.js"].map(t=>e.l(t))).then(()=>t(51952)))}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,81526,(e,t,r)=>{"use strict";var n=e.r(51071),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=n.useState,u=n.useEffect,a=n.useLayoutEffect,l=n.useDebugValue;function s(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!o(e,r)}catch(e){return!0}}var c="u"<typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),n=i({inst:{value:r,getSnapshot:t}}),o=n[0].inst,c=n[1];return a(function(){o.value=r,o.getSnapshot=t,s(o)&&c({inst:o})},[e,r,t]),u(function(){return s(o)&&c({inst:o}),e(function(){s(o)&&c({inst:o})})},[e]),l(r),r};r.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:c},86096,(e,t,r)=>{"use strict";t.exports=e.r(81526)},97940,73989,e=>{"use strict";var t=e.i(51071),r=e.i(86096);e.s(["ERROR_REVALIDATE_EVENT",0,3,"FOCUS_EVENT",0,0,"MUTATE_EVENT",0,2,"RECONNECT_EVENT",0,1],76896);var n=Object.prototype.hasOwnProperty;let o=new WeakMap,i=()=>{},u=i(),a=Object,l=e=>e===u,s=(e,t)=>({...e,...t}),c={},f={},d="undefined",p=typeof window!=d,g=typeof document!=d,h=p&&"Deno"in window,y=(e,t)=>{let r=o.get(e);return[()=>!l(t)&&e.get(t)||c,n=>{if(!l(t)){let o=e.get(t);t in f||(f[t]=o),r[5](t,s(o,n),o||c)}},r[6],()=>!l(t)&&t in f?f[t]:!l(t)&&e.get(t)||c]},v=!0,[m,b]=p&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[i,i],E={initFocus:e=>(g&&document.addEventListener("visibilitychange",e),m("focus",e),()=>{g&&document.removeEventListener("visibilitychange",e),b("focus",e)}),initReconnect:e=>{let t=()=>{v=!0,e()},r=()=>{v=!1};return m("online",t),m("offline",r),()=>{b("online",t),b("offline",r)}}},w=!t.default.useId,_=!p||h,O=_?t.useEffect:t.useLayoutEffect,S="u">typeof navigator&&navigator.connection,T=!_&&S&&(["slow-2g","2g"].includes(S.effectiveType)||S.saveData),R=new WeakMap,P=(e,t)=>e===`[object ${t}]`,C=0,j=e=>{let t,r,n=typeof e,o=a.prototype.toString.call(e),i=P(o,"Date"),u=P(o,"RegExp"),s=P(o,"Object");if(a(e)!==e||i||u)t=i?e.toJSON():"symbol"==n?e.toString():"string"==n?JSON.stringify(e):""+e;else{if(t=R.get(e))return t;if(t=++C+"~",R.set(e,t),Array.isArray(e)){for(r=0,t="@";r<e.length;r++)t+=j(e[r])+",";R.set(e,t)}if(s){t="#";let n=a.keys(e).sort();for(;!l(r=n.pop());)l(e[r])||(t+=r+":"+j(e[r])+",");R.set(e,t)}}return t},k=e=>{if("function"==typeof e)try{e=e()}catch(t){e=""}let t=e;return[e="string"==typeof e?e:(Array.isArray(e)?e.length:e)?j(e):"",t]},L=0,N=()=>++L;async function M(...e){let[t,r,n,i]=e,a=s({populateCache:!0,throwOnError:!0},"boolean"==typeof i?{revalidate:i}:i||{}),c=a.populateCache,f=a.rollbackOnError,d=a.optimisticData,p=a.throwOnError;if("function"==typeof r){let e=[];for(let n of t.keys())!/^\$(inf|sub)\$/.test(n)&&r(t.get(n)._k)&&e.push(n);return Promise.all(e.map(g))}return g(r);async function g(r){let i,[s]=k(r);if(!s)return;let[g,h]=y(t,s),[v,m,b,E]=o.get(t),w=()=>{let e=v[s];return("function"==typeof a.revalidate?a.revalidate(g().data,r):!1!==a.revalidate)&&(delete b[s],delete E[s],e&&e[0])?e[0](2).then(()=>g().data):g().data};if(e.length<3)return w();let _=n,O=!1,S=N();m[s]=[S,0];let T=!l(d),R=g(),P=R.data,C=R._c,j=l(C)?P:C;if(T&&h({data:d="function"==typeof d?d(j,P):d,_c:j}),"function"==typeof _)try{_=_(j)}catch(e){i=e,O=!0}if(_&&"function"==typeof _.then){let e;if(_=await _.catch(e=>{i=e,O=!0}),S!==m[s][0]){if(O)throw i;return _}O&&T&&(e=i,"function"==typeof f?f(e):!1!==f)&&(c=!0,h({data:j,_c:u}))}if(c&&!O&&("function"==typeof c?h({data:c(_,j),error:u,_c:u}):h({data:_,error:u,_c:u})),m[s][1]=N(),Promise.resolve(w()).then(()=>{h({_c:u})}),O){if(p)throw i;return}return _}}let D=(e,t)=>{for(let r in e)e[r][0]&&e[r][0](t)},A=(e,t)=>{if(!o.has(e)){let r=s(E,t),n=Object.create(null),a=M.bind(u,e),l=i,c=Object.create(null),f=(e,t)=>{let r=c[e]||[];return c[e]=r,r.push(t),()=>r.splice(r.indexOf(t),1)},d=(t,r,n)=>{e.set(t,r);let o=c[t];if(o)for(let e of o)e(r,n)},p=()=>{if(!o.has(e)&&(o.set(e,[n,Object.create(null),Object.create(null),Object.create(null),a,d,f]),!_)){let t=r.initFocus(setTimeout.bind(u,D.bind(u,n,0))),i=r.initReconnect(setTimeout.bind(u,D.bind(u,n,1)));l=()=>{t&&t(),i&&i(),o.delete(e)}}};return p(),[e,a,p,l]}return[e,o.get(e)[4]]},[I,x]=A(new Map),$=s({onLoadingSlow:i,onSuccess:i,onError:i,onErrorRetry:(e,t,r,n,o)=>{let i=r.errorRetryCount,u=o.retryCount,a=~~((Math.random()+.5)*(1<<(u<8?u:8)))*r.errorRetryInterval;(l(i)||!(u>i))&&setTimeout(n,a,o)},onDiscarded:i,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:T?1e4:5e3,focusThrottleInterval:5e3,dedupingInterval:2e3,loadingTimeout:T?5e3:3e3,compare:function e(t,r){var o,i;if(t===r)return!0;if(t&&r&&(o=t.constructor)===r.constructor){if(o===Date)return t.getTime()===r.getTime();if(o===RegExp)return t.toString()===r.toString();if(o===Array){if((i=t.length)===r.length)for(;i--&&e(t[i],r[i]););return -1===i}if(!o||"object"==typeof t){for(o in i=0,t)if(n.call(t,o)&&++i&&!n.call(r,o)||!(o in r)||!e(t[o],r[o]))return!1;return Object.keys(r).length===i}}return t!=t&&r!=r},isPaused:()=>!1,cache:I,mutate:x,fallback:{}},{isOnline:()=>v,isVisible:()=>{let e=g&&document.visibilityState;return l(e)||"hidden"!==e}}),V=(e,t)=>{let r=s(e,t);if(t){let{use:n,fallback:o}=e,{use:i,fallback:u}=t;n&&i&&(r.use=n.concat(i)),o&&u&&(r.fallback=s(o,u))}return r},F=(0,t.createContext)({});var U=e.i(76896);let W=p&&window.__SWR_DEVTOOLS_USE__,B=W?window.__SWR_DEVTOOLS_USE__:[],z=()=>{let e=(0,t.useContext)(F);return(0,t.useMemo)(()=>s($,e),[e])},K=B.concat(e=>(t,r,n)=>{let i=r&&((...e)=>{let[n]=k(t),[,,,i]=o.get(I);if(n.startsWith("$inf$"))return r(...e);let u=i[n];return l(u)?r(...e):(delete i[n],u)});return e(t,i,n)}),q=e=>function(...t){let r,n=z(),[o,i,u]="function"==typeof(r=t)[1]?[r[0],r[1],r[2]||{}]:[r[0],null,(null===r[1]?r[2]:r[1])||{}],a=V(n,u),l=e,{use:s}=a,c=(s||[]).concat(K);for(let e=c.length;e--;)l=c[e](l);return l(o,i||a.fetcher||null,a)},Y=(e,t,r)=>{let n=t[e]||(t[e]=[]);return n.push(r),()=>{let e=n.indexOf(r);e>=0&&(n[e]=n[n.length-1],n.pop())}};W&&(window.__SWR_DEVTOOLS_REACT__=t.default),e.s(["subscribeCallback",0,Y,"useSWRConfig",0,z,"withArgs",0,q],73989);let J=()=>{},Q=J(),X=(new WeakMap,t.default.use||(e=>{switch(e.status){case"pending":throw e;case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e}})),Z={dedupe:!0},H=Promise.resolve(u),G=()=>i;a.defineProperty(e=>{let{value:r}=e,n=(0,t.useContext)(F),o="function"==typeof r,i=(0,t.useMemo)(()=>o?r(n):r,[o,n,r]),a=(0,t.useMemo)(()=>o?i:V(n,i),[o,n,i]),l=i&&i.provider,c=(0,t.useRef)(u);l&&!c.current&&(c.current=A(l(a.cache||I),i));let f=c.current;return f&&(a.cache=f[0],a.mutate=f[1]),O(()=>{if(f)return f[2]&&f[2](),f[3]},[]),(0,t.createElement)(F.Provider,s(e,{value:a}))},"defaultValue",{value:$});let ee=q((e,n,i)=>{let{cache:a,compare:c,suspense:f,fallbackData:g,revalidateOnMount:h,revalidateIfStale:v,refreshInterval:m,refreshWhenHidden:b,refreshWhenOffline:E,keepPreviousData:S,strictServerPrefetchWarning:T}=i,[R,P,C,j]=o.get(a),[L,D]=k(e),A=(0,t.useRef)(!1),I=(0,t.useRef)(!1),x=(0,t.useRef)(L),$=(0,t.useRef)(n),V=(0,t.useRef)(i),F=()=>V.current.isVisible()&&V.current.isOnline(),[W,B,z,K]=y(a,L),q=(0,t.useRef)({}).current,J=l(g)?l(i.fallback)?u:i.fallback[L]:g,Q=(e,t)=>{for(let r in q)if("data"===r){if(!c(e[r],t[r])&&(!l(e[r])||!c(el,t[r])))return!1}else if(t[r]!==e[r])return!1;return!0},ee=!A.current,et=(0,t.useMemo)(()=>{let e=W(),t=K(),r=e=>{let t=s(e);return(delete t._k,(()=>{if(!L||!n||V.current.isPaused())return!1;if(ee&&!l(h))return h;let e=l(J)?t.data:J;return l(e)||v})())?{isValidating:!0,isLoading:!0,...t}:t},o=r(e),i=e===t?o:r(t),u=o;return[()=>{let e=r(W());return Q(e,u)?(u.data=e.data,u.isLoading=e.isLoading,u.isValidating=e.isValidating,u.error=e.error,u):(u=e,e)},()=>i]},[a,L]),er=(0,r.useSyncExternalStore)((0,t.useCallback)(e=>z(L,(t,r)=>{Q(r,t)||e()}),[a,L]),et[0],et[1]),en=R[L]&&R[L].length>0,eo=er.data,ei=l(eo)?J&&"function"==typeof J.then?X(J):J:eo,eu=er.error,ea=(0,t.useRef)(ei),el=S?l(eo)?l(ea.current)?ei:ea.current:eo:ei,es=L&&l(ei),ec=(0,t.useRef)(null);_||(0,r.useSyncExternalStore)(G,()=>(ec.current=!1,ec),()=>(ec.current=!0,ec));let ef=ec.current;T&&ef&&!f&&es&&console.warn(`Missing pre-initiated data for serialized key "${L}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);let ed=!(!L||!n||V.current.isPaused())&&(!en||!!l(eu))&&(ee&&!l(h)?h:f?!l(ei)&&v:l(ei)||v),ep=ee&&ed,eg=l(er.isValidating)?ep:er.isValidating,eh=l(er.isLoading)?ep:er.isLoading,ey=(0,t.useCallback)(async e=>{let t,r,n=$.current;if(!L||!n||I.current||V.current.isPaused())return!1;let o=!0,a=e||{},s=!C[L]||!a.dedupe,f=()=>w?!I.current&&L===x.current&&A.current:L===x.current,d={isValidating:!1,isLoading:!1},p=()=>{B(d)},g=()=>{let e=C[L];e&&e[1]===r&&delete C[L]},h={isValidating:!0};l(W().data)&&(h.isLoading=!0);try{if(s&&(B(h),i.loadingTimeout&&l(W().data)&&setTimeout(()=>{o&&f()&&V.current.onLoadingSlow(L,i)},i.loadingTimeout),C[L]=[n(D),N()]),[t,r]=C[L],t=await t,s&&setTimeout(g,i.dedupingInterval),!C[L]||C[L][1]!==r)return s&&f()&&V.current.onDiscarded(L),!1;d.error=u;let e=P[L];if(!l(e)&&(r<=e[0]||r<=e[1]||0===e[1]))return p(),s&&f()&&V.current.onDiscarded(L),!1;let a=W().data;d.data=c(a,t)?a:t,s&&f()&&V.current.onSuccess(t,L,i)}catch(r){g();let e=V.current,{shouldRetryOnError:t}=e;!e.isPaused()&&(d.error=r,s&&f())&&(e.onError(r,L,e),(!0===t||"function"==typeof t&&t(r))&&(!V.current.revalidateOnFocus||!V.current.revalidateOnReconnect||F())&&e.onErrorRetry(r,L,e,e=>{let t=R[L];t&&t[0]&&t[0](U.ERROR_REVALIDATE_EVENT,e)},{retryCount:(a.retryCount||0)+1,dedupe:!0}))}return o=!1,p(),!0},[L,a]),ev=(0,t.useCallback)((...e)=>M(a,x.current,...e),[]);if(O(()=>{$.current=n,V.current=i,l(eo)||(ea.current=eo)}),O(()=>{if(!L)return;let e=ey.bind(u,Z),t=0;V.current.revalidateOnFocus&&(t=Date.now()+V.current.focusThrottleInterval);let r=Y(L,R,(r,n={})=>{if(r==U.FOCUS_EVENT){let r=Date.now();V.current.revalidateOnFocus&&r>t&&F()&&(t=r+V.current.focusThrottleInterval,e())}else if(r==U.RECONNECT_EVENT)V.current.revalidateOnReconnect&&F()&&e();else if(r==U.MUTATE_EVENT)return ey();else if(r==U.ERROR_REVALIDATE_EVENT)return ey(n)});if(I.current=!1,x.current=L,A.current=!0,B({_k:D}),ed&&!C[L])if(l(ei)||_)e();else p&&typeof window.requestAnimationFrame!=d?window.requestAnimationFrame(e):setTimeout(e,1);return()=>{I.current=!0,r()}},[L]),O(()=>{let e;function t(){let t="function"==typeof m?m(W().data):m;t&&-1!==e&&(e=setTimeout(r,t))}function r(){!W().error&&(b||V.current.isVisible())&&(E||V.current.isOnline())?ey(Z).then(t):t()}return t(),()=>{e&&(clearTimeout(e),e=-1)}},[m,b,E,L]),(0,t.useDebugValue)(el),f){if(!w&&_&&es)throw Error("Fallback data is required when using Suspense in SSR.");es&&($.current=n,V.current=i,I.current=!1);let e=j[L];if(X(!l(e)&&es?ev(e):H),!l(eu)&&es)throw eu;let t=es?ey(Z):H;!l(el)&&es&&(t.status="fulfilled",t.value=!0),X(t)}return{mutate:ev,get data(){return q.data=!0,el},get error(){return q.error=!0,eu},get isValidating(){return q.isValidating=!0,eg},get isLoading(){return q.isLoading=!0,eh}}});e.s(["default",0,ee],97940)},99686,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return i},urlQueryToSearchParams:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function i(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function u(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function a(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,u(e));else t.set(r,u(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},79805,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return v},MiddlewareNotFoundError:function(){return w},MissingStaticPage:function(){return E},NormalizeError:function(){return m},PageNotFoundError:function(){return b},SP:function(){return h},ST:function(){return y},WEB_VITALS:function(){return i},execOnce:function(){return u},getDisplayName:function(){return f},getLocationOrigin:function(){return s},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return d},loadGetInitialProps:function(){return g},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return _}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=["CLS","FCP","FID","INP","LCP","TTFB"];function u(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let a=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>a.test(e);function s(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=s();return e.substring(t.length)}function f(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function d(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function g(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await g(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&d(r))return n;if(!n)throw Object.defineProperty(Error(`"${f(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let h="u">typeof performance,y=h&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class v extends Error{}class m extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class E extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class w extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function _(e){return JSON.stringify({message:e.message,stack:e.stack})}},83975,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},46649,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return a},formatWithValidation:function(){return s},urlObjectKeys:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=e.r(41640)._(e.r(99686)),u=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",a=e.hash||"",l=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(s+=":"+e.port)),l&&"object"==typeof l&&(l=String(i.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||u.test(n))&&!1!==s?(s="//"+(s||""),o&&"/"!==o[0]&&(o="/"+o)):s||(s=""),a&&"#"!==a[0]&&(a="#"+a),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${s}${o}${c}${a}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function s(e){return a(e)}},47989,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(51071);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=i(e,n)),t&&(o.current=i(t,n))},[e,t])}function i(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},56391,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return i}});let n=e.r(79805),o=e.r(13352);function i(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},57031,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},41065,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return v},useLinkStatus:function(){return b}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i=e.r(41640),u=e.r(26387),a=i._(e.r(51071)),l=e.r(46649),s=e.r(7823),c=e.r(47989),f=e.r(79805),d=e.r(50643);e.r(83975);let p=e.r(43446),g=e.r(29118),h=e.r(56391),y=e.r(72389);function v(t){var r,n;let o,i,v,[b,E]=(0,a.useOptimistic)(g.IDLE_LINK_STATUS),w=(0,a.useRef)(null),{href:_,as:O,children:S,prefetch:T=null,passHref:R,replace:P,shallow:C,scroll:j,onClick:k,onMouseEnter:L,onTouchStart:N,legacyBehavior:M=!1,onNavigate:D,transitionTypes:A,ref:I,unstable_dynamicOnHover:x,...$}=t;o=S,M&&("string"==typeof o||"number"==typeof o)&&(o=(0,u.jsx)("a",{children:o}));let V=a.default.useContext(s.AppRouterContext),F=!1!==T,U=!1!==T?null===(n=T)||"auto"===n?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,W="string"==typeof(r=O||_)?r:(0,l.formatUrl)(r);if(M){if(o?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});i=a.default.Children.only(o)}let B=M?i&&"object"==typeof i&&i.ref:I,z=a.default.useCallback(e=>(null!==V&&(w.current=(0,g.mountLinkInstance)(e,W,V,U,F,E)),()=>{w.current&&((0,g.unmountLinkForCurrentNavigation)(w.current),w.current=null),(0,g.unmountPrefetchableInstance)(e)}),[F,W,V,U,E]),K={ref:(0,c.useMergedRef)(z,B),onClick(t){M||"function"!=typeof k||k(t),M&&i.props&&"function"==typeof i.props.onClick&&i.props.onClick(t),!V||t.defaultPrevented||function(t,r,n,o,i,u,l){if("u">typeof window){let s,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((s=t.currentTarget.getAttribute("target"))&&"_self"!==s||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,h.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),u){let e=!1;if(u({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:f}=e.r(35949);a.default.startTransition(()=>{f(r,o?"replace":"push",!1===i?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,n.current,l)})}}(t,W,w,P,j,D,A)},onMouseEnter(e){M||"function"!=typeof L||L(e),M&&i.props&&"function"==typeof i.props.onMouseEnter&&i.props.onMouseEnter(e),V&&F&&(0,g.onNavigationIntent)(e.currentTarget,!0===x)},onTouchStart:function(e){M||"function"!=typeof N||N(e),M&&i.props&&"function"==typeof i.props.onTouchStart&&i.props.onTouchStart(e),V&&F&&(0,g.onNavigationIntent)(e.currentTarget,!0===x)}};return(0,f.isAbsoluteUrl)(W)?K.href=W:M&&!R&&("a"!==i.type||"href"in i.props)||(K.href=(0,d.addBasePath)(W)),v=M?a.default.cloneElement(i,K):(0,u.jsx)("a",{...$,...K,children:o}),(0,u.jsx)(m.Provider,{value:b,children:v})}e.r(57031);let m=(0,a.createContext)(g.IDLE_LINK_STATUS),b=()=>(0,a.useContext)(m);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77535,e=>{"use strict";function t(e){if(!e)return null;let t=Date.parse(e.includes("T")?e:e.replace(" ","T")+"Z");return Number.isFinite(t)?t:null}e.s(["formatWeChatTime",0,function(e){let r=t(e);if(null===r)return"";let n=new Date(r),o=new Date,i="u">typeof navigator&&(navigator.language||"").toLowerCase().startsWith("zh"),u=`${String(n.getHours()).padStart(2,"0")}:${String(n.getMinutes()).padStart(2,"0")}`,a=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),l=Math.round((a(o)-a(n))/864e5);if(0===l)return u;if(1===l)return i?`昨天 ${u}`:`Yesterday ${u}`;if(l>1&&l<7){let e=new Intl.DateTimeFormat(i?"zh-CN":void 0,{weekday:i?"long":"short"}).format(n);return`${e} ${u}`}let s=new Intl.DateTimeFormat(i?"zh-CN":void 0,{month:i?"long":"short",day:"numeric",...n.getFullYear()!==o.getFullYear()?{year:"numeric"}:{}}).format(n);return`${s} ${u}`},"parseHubTime",0,t,"relativeAgo",0,function(e){let r=t(e);if(null===r)return null;let n=Math.floor((Date.now()-r)/1e3);return n<0?"just now":n<60?`${n}s ago`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:`${Math.floor(n/86400)}d ago`}])},1065,e=>{"use strict";var t=e.i(26387),r=e.i(51071);let n=(0,r.createContext)({networkId:"",setNetworkId:()=>{}});e.s(["NetworkProvider",0,function({children:e}){let[o,i]=(0,r.useState)("");return(0,r.useEffect)(()=>{let e=sessionStorage.getItem("anet_network_id");e&&i(e)},[]),(0,t.jsx)(n.Provider,{value:{networkId:o,setNetworkId:e=>{i(e),sessionStorage.setItem("anet_network_id",e)}},children:e})},"useNetworkId",0,function(){return(0,r.useContext)(n)}])}]);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16657,e=>{"use strict";var t=e.i(77535);e.s(["previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return(0,t.relativeAgo)(e)??"--"}])},31595,10418,e=>{"use strict";var t=e.i(26387),s=e.i(51071);let r="anet_avatars_v1",a="anet-avatars-updated",n=null,i=[],l=!1;function o(){try{let e=JSON.parse(window.localStorage.getItem(r)||"{}");return e&&"object"==typeof e?e:{}}catch{return{}}}function c(e){return e&&(o()[e]||n?.[e]||function(e){if(!i.length)return"";let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s)>>>0;return i[t%i.length]}(e))||""}let d=0;function x(e){l||(l=!0,fetch("/avatars/manifest.json",{cache:"no-cache"}).then(e=>e.ok?e.json():null).then(e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){let t={};for(let[s,r]of Object.entries(e))!s.startsWith("_")&&"string"==typeof r&&r.startsWith("/")&&(t[s]=r);let s=e._pool;i=Array.isArray(s)?s.filter(e=>"string"==typeof e&&e.startsWith("/")):[],n=t,window.dispatchEvent(new Event(a))}}).catch(()=>{}));let t=()=>{d++,e()};return window.addEventListener(a,t),window.addEventListener("storage",t),()=>{window.removeEventListener(a,t),window.removeEventListener("storage",t)}}function u(e){return(0,s.useSyncExternalStore)(x,()=>c(e),()=>"")}e.s(["getAvatarUrl",0,c,"setAvatarUrl",0,function(e,t){if(e)try{let s=o();t.trim()?s[e]=t.trim():delete s[e],window.localStorage.setItem(r,JSON.stringify(s)),window.dispatchEvent(new Event(a))}catch{}},"useAvatarUrl",0,u,"useAvatarsVersion",0,function(){return(0,s.useSyncExternalStore)(x,()=>d,()=>0)}],10418);let h=[180,200,220,270,300,330,30,90];function m(e){let t=0;for(let s=0;s<e.length;s++)t=31*t+e.charCodeAt(s)>>>0;let s=h[t%h.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function p(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:r=28,className:a=""}){let n=u(e),[i,l]=(0,s.useState)("loading"),[o,c]=(0,s.useState)(n);if(n!==o&&(c(n),l("loading")),n&&"error"!==i)return(0,t.jsx)("span",{className:`anet-alias-avatar relative inline-flex shrink-0 overflow-hidden rounded-full border border-[var(--border)] ${"loading"===i?"animate-pulse bg-[var(--bg-elevated)]":""} ${a}`,style:{width:r,height:r},title:e,"aria-hidden":!0,children:(0,t.jsx)("img",{src:n,alt:"",loading:"lazy",onLoad:()=>l("ready"),onError:()=>l("error"),className:`h-full w-full rounded-full object-cover transition-opacity duration-150 ${"ready"===i?"opacity-100":"opacity-0"}`})});if(/\bgrok\b|grok-build|grok测试员|grok-demo/i.test(e))return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border border-emerald-500/45 bg-emerald-950/70 shrink-0 ${a}`,style:{width:r,height:r,backgroundImage:"url(/vendors/grok.svg)",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"68% 68%"},title:e,"aria-hidden":!0});let d=m(e),x=Math.max(9,Math.round(.42*r));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${a}`,style:{width:r,height:r,fontSize:x,backgroundColor:d.bg,borderColor:d.ring,color:d.text},title:e,"aria-hidden":!0,children:p(e)})},"aliasAvatarColors",0,m,"aliasInitial",0,p],31595)},2786,e=>{"use strict";var t=e.i(26387),s=e.i(51071),r=e.i(41065);let a={nodes:{title:"No agents in this network",sub:"Agent sessions will appear here once they connect to the CommHub."},tasks:{title:"No tasks yet",sub:"Tasks will appear here when agents send them via CommHub."},messages:{title:"No messages",sub:"Messages between agents will appear here."},logs:{title:"No audit logs",sub:"Events will appear here when users register, login, or perform actions."},tokens:{title:"No API tokens",sub:"Create one to authenticate CLI tools and external integrations."},networks:{title:"No networks found",sub:"Create one or sign in with V3 auth to see your networks."},generic:{title:"Nothing here yet",sub:"Data will appear here once available."}};function n({variant:e,size:s}){let r={width:s,height:s},a={fill:"none",stroke:"currentColor",strokeWidth:1.25,strokeLinecap:"round",strokeLinejoin:"round"};switch(e){case"nodes":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("circle",{cx:"32",cy:"14",r:"4"}),(0,t.jsx)("circle",{cx:"14",cy:"44",r:"4"}),(0,t.jsx)("circle",{cx:"50",cy:"44",r:"4"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"14",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"32",y1:"18",x2:"50",y2:"40",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("line",{x1:"18",y1:"44",x2:"46",y2:"44",strokeDasharray:"3 3",opacity:"0.6"})]})});case"tasks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("rect",{x:"14",y:"14",width:"36",height:"6",rx:"1.5"}),(0,t.jsx)("rect",{x:"14",y:"26",width:"36",height:"6",rx:"1.5",opacity:"0.6"}),(0,t.jsx)("rect",{x:"14",y:"38",width:"36",height:"6",rx:"1.5",opacity:"0.35"})]})});case"messages":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("path",{d:"M14 18 h36 a3 3 0 0 1 3 3 v18 a3 3 0 0 1 -3 3 h-18 l-8 6 v-6 h-10 a3 3 0 0 1 -3 -3 v-18 a3 3 0 0 1 3 -3 z"}),(0,t.jsx)("line",{x1:"22",y1:"28",x2:"42",y2:"28",opacity:"0.5"}),(0,t.jsx)("line",{x1:"22",y1:"34",x2:"36",y2:"34",opacity:"0.5"})]})});case"logs":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("path",{d:"M18 12 h22 l8 8 v32 a2 2 0 0 1 -2 2 h-28 a2 2 0 0 1 -2 -2 v-38 a2 2 0 0 1 2 -2 z"}),(0,t.jsx)("path",{d:"M40 12 v8 h8",opacity:"0.6"}),(0,t.jsx)("line",{x1:"24",y1:"32",x2:"40",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"24",y1:"38",x2:"40",y2:"38",opacity:"0.4"}),(0,t.jsx)("line",{x1:"24",y1:"44",x2:"34",y2:"44",opacity:"0.25"})]})});case"tokens":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("circle",{cx:"22",cy:"32",r:"8"}),(0,t.jsx)("line",{x1:"30",y1:"32",x2:"54",y2:"32"}),(0,t.jsx)("line",{x1:"44",y1:"32",x2:"44",y2:"38"}),(0,t.jsx)("line",{x1:"50",y1:"32",x2:"50",y2:"40"})]})});case"networks":return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"18"}),(0,t.jsx)("ellipse",{cx:"32",cy:"32",rx:"18",ry:"9",opacity:"0.55"}),(0,t.jsx)("line",{x1:"14",y1:"32",x2:"50",y2:"32",opacity:"0.55"}),(0,t.jsx)("line",{x1:"32",y1:"14",x2:"32",y2:"50",opacity:"0.55"})]})});default:return(0,t.jsx)("svg",{viewBox:"0 0 64 64",...r,children:(0,t.jsxs)("g",{...a,children:[(0,t.jsx)("circle",{cx:"32",cy:"32",r:"14",strokeDasharray:"3 3",opacity:"0.6"}),(0,t.jsx)("circle",{cx:"32",cy:"32",r:"3"})]})})}}function i({variant:e="generic",title:s,sub:l,cta:o,compact:c=!1}){let d=a[e],x=s??d.title,u=l??d.sub;return(0,t.jsxs)("div",{className:`text-center ${c?"py-8":"py-16"} px-4`,role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)(n,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),u&&(0,t.jsx)("p",{className:`text-gray-500 ${c?"text-xs mt-1.5":"text-sm mt-2"} max-w-md mx-auto leading-relaxed`,children:u}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(r.default,{href:o.href,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]}):(0,t.jsxs)("button",{onClick:o.onClick,className:"inline-flex items-center gap-1.5 text-sm font-medium text-cyan-400 hover:text-cyan-300",children:[o.label,(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})}function l({children:e}){return(0,t.jsx)("div",{className:"max-w-2xl mx-auto rounded-xl border border-[#26262b] bg-[#161618] shadow-lg shadow-black/20",children:e})}function o({cmd:e}){let[r,a]=(0,s.useState)(!1),n=async()=>{try{await navigator.clipboard.writeText(e),a(!0),setTimeout(()=>a(!1),1800)}catch{}};return(0,t.jsxs)("div",{className:"anet-empty-cmd flex items-start sm:items-center gap-2 bg-[#0e0e10] border border-[#26262b] rounded-lg pl-4 pr-1.5 py-1.5 text-xs sm:text-sm",children:[(0,t.jsx)("code",{className:"text-cyan-300 font-mono select-all min-w-0 break-all sm:break-normal",children:e}),(0,t.jsx)("button",{type:"button",onClick:n,"aria-label":r?"Copied":"Copy command",className:"shrink-0 rounded-md px-2 py-1.5 text-[11px] text-gray-500 hover:text-gray-200 hover:bg-[#1c1c1f] transition-colors",children:r?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-400",children:[(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M20 6 9 17l-5-5"})}),"Copied"]}):(0,t.jsxs)("span",{className:"flex items-center gap-1",children:[(0,t.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),(0,t.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]})}e.s(["EmptyState",0,i,"NodesEmptyState",0,function({hint:e,taskHistoryCount:s=0}){return e?.global_count?(0,t.jsx)(l,{children:(0,t.jsx)(i,{variant:"nodes",title:"No agents in this network",sub:`Server has ${e.global_count} nodes globally, but none are registered to the current network. Switch network or contact admin.`})}):s>0?(0,t.jsx)(l,{children:(0,t.jsx)(i,{variant:"nodes",title:"No agents online",sub:`Every agent in this network is currently offline. ${s.toLocaleString()} task${1===s?"":"s"} in history — they may have finished their work or disconnected.`,cta:{label:"View task history",href:"/tasks"}})}):(0,t.jsx)(l,{children:(0,t.jsxs)("div",{className:"text-center py-16 px-4",role:"status",children:[(0,t.jsx)("div",{className:"anet-empty-glyph inline-flex items-center justify-center mb-4 text-gray-500","aria-hidden":!0,children:(0,t.jsx)("svg",{viewBox:"0 0 64 64",width:56,height:56,children:(0,t.jsxs)("g",{stroke:"currentColor",strokeWidth:"1.5",fill:"none",children:[(0,t.jsx)("rect",{x:"10",y:"20",width:"44",height:"28",rx:"2"}),(0,t.jsx)("rect",{x:"20",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"32",y:"32",width:"6",height:"8",opacity:"0.5"}),(0,t.jsx)("rect",{x:"44",y:"32",width:"4",height:"8",opacity:"0.5"}),(0,t.jsx)("line",{x1:"10",y1:"26",x2:"54",y2:"26",opacity:"0.4"}),(0,t.jsx)("circle",{cx:"14",cy:"23",r:"0.8",fill:"currentColor"})]})})}),(0,t.jsx)("h3",{className:"font-medium text-gray-300 text-base",children:"Spin up your first agent"}),(0,t.jsx)("p",{className:"text-gray-500 text-sm mt-2 max-w-md mx-auto leading-relaxed",children:"Run this in a fresh terminal to register an agent with this CommHub:"}),(0,t.jsx)("div",{className:"mt-4 inline-block",children:(0,t.jsx)(o,{cmd:"npx --yes @sleep2agi/agent-network init"})}),(0,t.jsx)("p",{className:"text-gray-600 text-xs mt-3 max-w-md mx-auto",children:"Once the agent connects, it appears here automatically within a few seconds — no refresh needed."}),(0,t.jsx)("div",{className:"mt-3",children:(0,t.jsxs)("a",{href:"https://anet.sh",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-500 hover:text-cyan-300",children:["Full quickstart guide",(0,t.jsx)("span",{"aria-hidden":!0,children:"→"})]})})]})})}])},35361,e=>{"use strict";var t=e.i(97940),s=e.i(1065);let r=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},a={refreshInterval:5e3,dedupingInterval:3e3};function n(e,t){if(!t)return e;let s=e.includes("?")?"&":"?";return`${e}${s}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",r,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:s}=(0,t.default)("/api/hub/health",r,a);return{health:e||null,error:s}},"useMessages",0,function(e=100){let{networkId:i}=(0,s.useNetworkId)(),{data:l,error:o,isLoading:c}=(0,t.default)(n(`/api/hub/messages?limit=${e}`,i),r,{...a,keepPreviousData:!0});return{messages:l?.messages||[],error:o,isLoading:c}},"useNodeLifecycle",0,function(){let{networkId:e}=(0,s.useNetworkId)(),{data:i,error:l,mutate:o}=(0,t.default)(n("/api/hub/nodes",e),r,a),c={},d={},x={};for(let e of i?.nodes??[])e.alias&&"string"==typeof e.lifecycle_state&&(c[e.alias]=e.lifecycle_state),e.alias&&"string"==typeof e.node_id&&(d[e.alias]=e.node_id),e.alias&&(x[e.alias]={display_name:"string"==typeof e.display_name?e.display_name:null,team:"string"==typeof e.team?e.team:null,tags:Array.isArray(e.tags)?e.tags:[],attrs_revision:"number"==typeof e.attrs_revision?e.attrs_revision:0});return{lifecycleByAlias:c,nodeIdByAlias:d,attrsByAlias:x,error:l,refreshNodes:o}},"useSessions",0,function(){let{networkId:e}=(0,s.useNetworkId)(),{data:i,error:l,isLoading:o}=(0,t.default)(n("/api/hub/status",e),r,a);return{sessions:i?.sessions||[],hint:i?._hint,error:l,isLoading:o}},"useStats",0,function(){let{networkId:e}=(0,s.useNetworkId)(),{data:i,error:l}=(0,t.default)(n("/api/hub/stats",e),r,a);return{stats:i?.ok?i:null,error:l}},"useTasks",0,function(e){let{networkId:i}=(0,s.useNetworkId)(),l=new URLSearchParams({limit:"100",...e}).toString(),{data:o,error:c,isLoading:d}=(0,t.default)(n(`/api/hub/tasks?${l}`,i),r,a);return{tasks:o?.tasks||[],count:o?.count??0,source:o?.source,error:c,isLoading:d}}])},61371,37360,e=>{"use strict";var t=e.i(51071);let s=null,r=!1,a=new Set,n=new Map;function i(e){return a.add(e),()=>void a.delete(e)}e.s(["pinyinMatch",0,function(t,i){let l=i.trim().toLowerCase();if(!l||t.toLowerCase().includes(l))return!0;if(s||r||(r=!0,e.A(32567).then(e=>{s=t=>[e.pinyin(t,{toneType:"none",type:"array"}).join("").toLowerCase(),e.pinyin(t,{pattern:"first",toneType:"none",type:"array"}).join("").toLowerCase()],a.forEach(e=>e())}).catch(()=>{r=!1})),!s)return!1;let o=n.get(t);return o||(o=s(t),n.set(t,o)),o[0].includes(l)||o[1].includes(l)},"usePinyinReady",0,function(){return(0,t.useSyncExternalStore)(i,()=>!!s,()=>!1)}],61371),e.s(["t",0,function(e,t){return"u">typeof navigator&&(navigator.language||"").toLowerCase().startsWith("zh")?e:t}],37360)},50632,e=>{"use strict";var t=e.i(26387),s=e.i(51071);let r=new Set(["png","jpg","jpeg","gif","webp","mp4","webm","mov"]),a=new Set(["image/png","image/jpeg","image/gif","image/webp"]),n=new Set(["video/mp4","video/webm"]),i=/^[A-Za-z0-9_-]{8,64}$/;async function l(e){let t=await fetch(`/api/hub/files/${encodeURIComponent(e)}`,{credentials:"include"});if(!t.ok)throw Error(`HTTP ${t.status}`);let s=t.headers.get("x-verified-type"),r=s&&(a.has(s)||n.has(s))?s:null,i=await t.blob(),l=r?new Blob([i],{type:r}):i;return{blobUrl:URL.createObjectURL(l),verifiedType:r,blob:l}}function o(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}function c({fileId:e,name:r,size:n,onNotInlineable:i}){let o="number"==typeof n&&n<=5242880,[d,x]=(0,s.useState)(null),[u,h]=(0,s.useState)(!1),[m,p]=(0,s.useState)(!1),g=(0,s.useRef)(i);g.current=i;let y=(0,s.useCallback)(async()=>{if(!u&&!d){h(!0);try{let{blobUrl:t,verifiedType:s}=await l(e);if(!s||!a.has(s)){URL.revokeObjectURL(t),g.current();return}x(t)}catch{p(!0)}finally{h(!1)}}},[e,u,d]);return((0,s.useEffect)(()=>{o&&y()},[o,y]),(0,s.useEffect)(()=>{if(d)return()=>URL.revokeObjectURL(d)},[d]),m)?(0,t.jsx)("div",{className:"mt-2 rounded-lg border border-amber-500/20 bg-amber-500/5 px-3 py-2 text-sm text-amber-200",children:"图片加载失败 · 请点击下方下载按钮查看"}):d?(0,t.jsx)("div",{className:"mt-2 overflow-hidden rounded-lg border border-white/10 bg-black/20",children:(0,t.jsx)("img",{src:d,alt:r,className:"block max-h-[50vh] w-auto max-w-full cursor-zoom-in object-contain",onClick:()=>window.open(d,"_blank","noopener")})}):(0,t.jsxs)("button",{type:"button",onClick:y,disabled:u,className:"mt-2 flex w-full items-center gap-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-3 py-2 text-left text-sm text-cyan-100 transition hover:border-cyan-400/40 hover:bg-cyan-500/10 disabled:cursor-wait disabled:opacity-60",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-lg",children:"🖼️"}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:r}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:u?"加载中…":"点击查看"})]})}function d({fileId:e,name:r,onNotInlineable:a}){let[i,o]=(0,s.useState)(null),[c,x]=(0,s.useState)(!1),[u,h]=(0,s.useState)(!1),m=(0,s.useRef)(a);m.current=a;let p=(0,s.useCallback)(async()=>{if(!c&&!i){x(!0);try{let{blobUrl:t,verifiedType:s}=await l(e);if(!s||!n.has(s)){URL.revokeObjectURL(t),m.current();return}o(t)}catch{h(!0)}finally{x(!1)}}},[e,c,i]);return((0,s.useEffect)(()=>{if(i)return()=>URL.revokeObjectURL(i)},[i]),u)?(0,t.jsx)("div",{className:"mt-2 rounded-lg border border-amber-500/20 bg-amber-500/5 px-3 py-2 text-sm text-amber-200",children:"视频加载失败 · 请点击下方下载按钮查看"}):i?(0,t.jsx)("div",{className:"mt-2 overflow-hidden rounded-lg border border-white/10 bg-black/20",children:(0,t.jsx)("video",{src:i,controls:!0,autoPlay:!0,className:"block max-h-[50vh] w-full",children:"您的浏览器不支持内联视频播放,请下载后查看。"})}):(0,t.jsxs)("button",{type:"button",onClick:p,disabled:c,className:"mt-2 flex w-full items-center gap-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-3 py-2 text-left text-sm text-cyan-100 transition hover:border-cyan-400/40 hover:bg-cyan-500/10 disabled:cursor-wait disabled:opacity-60",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-lg",children:"🎬"}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:r}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:c?"加载中…":"▶ 播放"})]})}e.s(["AttachmentBlock",0,function({attachment:e}){var l,x;let u,h,[m,p]=(0,s.useState)(!1),[g,y]=(0,s.useState)(null),[b,f]=(0,s.useState)(!1),j=function(e){if("string"!=typeof e||0===e.length)return"file";let t=e.replace(/[/\\]/g,"_").replace(/[\r\n\t\0]/g,"_");for(;t.startsWith(".");)t=t.slice(1);return t.length>200&&(t=t.slice(0,200)),t||"file"}(e.name),v="string"!=typeof(l=e.mime)?"":l.replace(/[^a-zA-Z0-9./+-]/g,"").slice(0,100),w="number"!=typeof(x=e.size)||!Number.isFinite(x)||x<0?"":x<1024?`${x} B`:x<1048576?`${(x/1024).toFixed(1)} KB`:x<0x40000000?`${(x/1024/1024).toFixed(1)} MB`:`${(x/1024/1024/1024).toFixed(2)} GB`,k=(u=(v||"").toLowerCase(),h=(j.split(".").pop()||"").toLowerCase(),u.startsWith("image/")?"🖼️":u.startsWith("video/")?"🎬":u.startsWith("audio/")?"🎵":u.includes("pdf")||"pdf"===h?"📄":["ppt","pptx"].includes(h)?"📊":["doc","docx"].includes(h)?"📝":["xls","xlsx","csv"].includes(h)?"📈":["zip","tar","gz","rar","7z"].includes(h)?"📦":"📎"),N="string"==typeof e.file_id&&i.test(e.file_id),C=N&&!b&&function(e,t){if(a.has(t)||n.has(t))return!0;let s=o(e);return""!==s&&r.has(s)}(j,v),_=o(j),$=C?n.has(v)||["mp4","webm","mov"].includes(_)?"video":"image":null;async function S(){if(!N||!e.file_id)return;y(null),p(!0);let t=null;try{let s=await fetch(`/api/hub/files/${encodeURIComponent(e.file_id)}`,{credentials:"include"});if(!s.ok)throw Error(`HTTP ${s.status}`);let r=await s.blob();t=URL.createObjectURL(r);let a=document.createElement("a");a.href=t,a.download=j,a.rel="noopener",document.body.appendChild(a),a.click(),document.body.removeChild(a)}catch(e){y(e instanceof Error?e.message:String(e))}finally{t&&URL.revokeObjectURL(t),p(!1)}}return N?(0,t.jsxs)("div",{className:"mt-2 flex flex-col",children:["image"===$&&e.file_id&&(0,t.jsx)(c,{fileId:e.file_id,name:j,size:"number"==typeof e.size?e.size:void 0,onNotInlineable:()=>f(!0)}),"video"===$&&e.file_id&&(0,t.jsx)(d,{fileId:e.file_id,name:j,onNotInlineable:()=>f(!0)}),(0,t.jsxs)("button",{type:"button",onClick:S,disabled:m,className:"flex w-full items-center gap-2 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-3 py-2 text-left text-sm text-cyan-100 transition hover:border-cyan-400/40 hover:bg-cyan-500/10 disabled:cursor-wait disabled:opacity-60 mt-2 first:mt-0",title:`Download ${j}`,children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"text-lg",children:k}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:j}),w&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-400",children:w}),v&&(0,t.jsx)("span",{className:"shrink-0 rounded bg-white/5 px-1.5 py-0.5 text-[10px] text-neutral-400",children:v}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:m?"下载中…":g?`⚠ ${g}`:"↓ 下载"})]})]}):(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2 rounded-lg border border-white/10 bg-white/5 px-3 py-2 text-sm text-neutral-300",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:k}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:j}),w&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-500",children:w}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-500",title:"Attachment has no file_id — single-host path only. Ask the sender to re-upload.",children:"(host-local)"})]})},"extractAttachments",0,function(e){if(!e||"object"!=typeof e)return[];let t=e.meta;if(!t&&"string"==typeof e.meta_json&&e.meta_json.length>0)try{t=JSON.parse(e.meta_json)}catch{return[]}if(!t||"object"!=typeof t)return[];let s=t.attachments;return Array.isArray(s)?s.filter(e=>!!e&&"object"==typeof e).map(e=>({file_id:"string"==typeof e.file_id?e.file_id:void 0,path:"string"==typeof e.path?e.path:void 0,name:"string"==typeof e.name?e.name:void 0,mime:"string"==typeof e.mime?e.mime:void 0,size:"number"==typeof e.size?e.size:void 0,type:"string"==typeof e.type?e.type:void 0})):[]}])},33941,e=>{"use strict";var t=e.i(26387),s=e.i(51071);e.s(["useCollapsibleSearch",0,function(e){let{value:r}=e,[a,n]=(0,s.useState)(!1),i=(0,s.useRef)(e);i.current=e;let l=(0,s.useRef)(a);l.current=a;let o=(0,s.useCallback)(()=>{i.current.onChange(""),n(!1)},[]),[c]=(0,s.useState)(()=>({Button:()=>{let{value:e,label:s="Search",enabled:r=!0}=i.current,a=l.current;if(!r)return(0,t.jsx)(t.Fragment,{});let o=a||e;return(0,t.jsxs)("button",{type:"button",onClick:()=>n(e=>!e),"aria-label":a?`Close ${s.toLowerCase()}`:`Open ${s.toLowerCase()}`,"aria-pressed":a,title:a?`Close ${s.toLowerCase()}`:s,className:`relative shrink-0 inline-flex items-center justify-center rounded-full border w-9 h-9 transition-colors ${o?"border-cyan-500/40 bg-cyan-500/10 text-cyan-300":"border-[#26262b] bg-[#161618] text-gray-400 hover:text-gray-200 hover:border-[#3a3a41]"}`,children:[(0,t.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),e&&!a&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -top-0.5 -right-0.5 w-2 h-2 rounded-full bg-cyan-400 ring-2 ring-[#0b0b0d]"})]})},Row:()=>{let{value:e,onChange:s,placeholder:r="Search…",enabled:a=!0}=i.current,n=l.current;return a&&(n||e)?(0,t.jsxs)("div",{className:"mb-3 sm:mb-4 flex items-center gap-2",children:[(0,t.jsx)("input",{type:"text",value:e,onChange:e=>s(e.target.value),onKeyDown:e=>{"Escape"===e.key&&o()},placeholder:r,autoFocus:n,className:"flex-1 bg-[#161618] border border-[#26262b] rounded-lg px-3 py-2 text-base sm:text-sm text-white placeholder-gray-600 focus:border-cyan-500/40 focus:outline-none"}),(0,t.jsx)("button",{type:"button",onClick:o,className:"shrink-0 text-xs text-gray-500 hover:text-gray-300 px-2 py-2","aria-label":"Clear and close search",children:"Cancel"})]}):null}}));return{Button:c.Button,Row:c.Row,value:r,reset:o}}])},86211,e=>{"use strict";var t=e.i(26387),s=e.i(51071),r=e.i(35361),a=e.i(16657),n=e.i(77535),i=e.i(2786),l=e.i(31595),o=e.i(33941),c=e.i(61371),d=e.i(37360),x=e.i(50632);let u={task:"bg-green-500/10 text-green-300 border-green-500/20",message:"bg-blue-500/10 text-blue-300 border-blue-500/20",broadcast:"bg-purple-500/10 text-purple-300 border-purple-500/20",reply:"bg-cyan-500/10 text-cyan-300 border-cyan-500/20"};function h(e){return e?new Date(e.replace(" ","T")+"Z").getTime():0}function m(e){return"broadcast"===e.type?"broadcast":"dashboard"===(e.from_alias||"").toLowerCase()?"outgoing":"incoming"}function p(e,s){let r=e||"--",a=s.trim();if(!a||a.startsWith("from:"))return r;let n=r.toLowerCase().indexOf(a.toLowerCase());return n<0?r:(0,t.jsxs)(t.Fragment,{children:[r.slice(0,n),(0,t.jsx)("mark",{className:"bg-yellow-500/30 text-yellow-200 rounded px-0.5",children:r.slice(n,n+a.length)}),r.slice(n+a.length)]})}e.s(["default",0,function(){let[e,g]=(0,s.useState)(30),{messages:y,isLoading:b}=(0,r.useMessages)(e),f=y.length>=e,j=b&&y.length>0,[v,w]=(0,s.useState)(""),[k,N]=(0,s.useState)(""),C=(0,c.usePinyinReady)(),[_,$]=(0,s.useState)(!1),[S,L]=(0,s.useState)("timeline"),A=(0,s.useRef)(null),R=(0,s.useRef)(!1);(0,s.useEffect)(()=>{R.current||0===y.length||(R.current=!0,A.current?.scrollIntoView())},[y.length]);let E=(0,o.useCollapsibleSearch)({value:k,onChange:N,placeholder:(0,d.t)("搜 别名(支持拼音)/内容,或 from:别名…","Search from/to (pinyin ok)/content, or from:alias…"),label:"Search messages",enabled:y.length>0}),U=(0,s.useMemo)(()=>{let e=new Set;return y.forEach(t=>{let s=t.from_alias?.trim();s&&"dashboard"!==s.toLowerCase()&&e.add(s)}),[...e].slice(0,8)},[y]),I=(0,s.useMemo)(()=>{let e=k.trim().toLowerCase(),t=e.startsWith("from:")?e.slice(5).trim():"";return[...y].filter(s=>(!v||s.type===v)&&(t?(0,c.pinyinMatch)(s.from_alias||"",t):!e||(0,c.pinyinMatch)(s.from_alias||"",e)||(0,c.pinyinMatch)(s.to_alias||"",e)||(s.content||"").toLowerCase().includes(e))).sort((e,t)=>h(e.created_at)-h(t.created_at))},[v,y,k,C]),z=(0,s.useMemo)(()=>{let e=new Map;return I.forEach(t=>{let s=t.from_alias||"?",r=t.to_alias||"?",a=[s,r].sort().join("↔"),n=e.get(a)||{participants:[s,r].sort(),messages:[],lastTime:0};n.messages.push(t),n.lastTime=Math.max(n.lastTime,h(t.created_at)),e.set(a,n)}),[...e.values()].sort((e,t)=>t.lastTime-e.lastTime)},[I]);return(0,t.jsxs)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-4 mb-4 sm:mb-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0 flex-1",children:[(0,t.jsx)("h1",{className:"text-2xl font-bold text-white lg:ml-0 ml-10",children:"Messages"}),(0,t.jsx)("span",{className:"text-xs bg-blue-900/30 text-blue-400 px-2 py-0.5 rounded-full border border-blue-800/30 tabular-nums shrink-0",title:I.length<y.length?`Showing ${I.length} of ${y.length} messages`:void 0,children:I.length<y.length?`${I.length} / ${y.length}`:y.length}),I.length>0&&(0,t.jsx)("button",{onClick:()=>{let e=I.map(e=>`**${e.from_alias||"?"}** → ${e.to_alias||"?"} (${e.type||"?"}) — ${e.created_at||""}
|
|
2
|
-
|
|
3
|
-
${e.content||"--"}
|
|
4
|
-
|
|
5
|
-
---`).join("\n\n"),t=new Blob([`# Messages Export
|
|
6
|
-
|
|
7
|
-
${e}`],{type:"text/markdown"}),s=URL.createObjectURL(t),r=document.createElement("a");r.href=s,r.download=`messages-${new Date().toISOString().slice(0,10)}.md`,r.click(),URL.revokeObjectURL(s)},className:"text-xs text-gray-500 hover:text-gray-300 border border-gray-700/50 px-2.5 py-1 rounded-lg transition-colors shrink-0",children:"Export MD"})]}),(0,t.jsx)(E.Button,{})]}),(0,t.jsx)(E.Row,{}),y.length>0&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-3 mb-3",children:[(0,t.jsxs)("select",{value:v,onChange:e=>w(e.target.value),className:"bg-[#161618] border border-[#26262b] rounded-lg px-3 py-2 text-base sm:text-sm text-white focus:border-blue-500/50 focus:outline-none",children:[(0,t.jsx)("option",{value:"",children:"All types"}),(0,t.jsx)("option",{value:"task",children:"task"}),(0,t.jsx)("option",{value:"message",children:"message"}),(0,t.jsx)("option",{value:"broadcast",children:"broadcast"}),(0,t.jsx)("option",{value:"reply",children:"reply"})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#26262b] bg-[#161618] p-0.5",children:["timeline","grouped"].map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>L(e),className:`rounded-md px-2.5 py-1.5 text-xs transition-colors ${S===e?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"timeline"===e?"Timeline":"Grouped"},e))}),(0,t.jsx)("button",{onClick:()=>$(!_),className:`text-xs px-3 py-2 rounded-lg border transition-colors ${_?"bg-yellow-500/10 text-yellow-300 border-yellow-500/20":"text-gray-500 border-gray-700/50 hover:text-gray-300"}`,children:_?"Debug ON":"Debug"})]}),U.length>0&&(0,t.jsxs)("div",{className:"mb-4 sm:mb-6 flex gap-2 overflow-x-auto whitespace-nowrap pb-1 scrollbar-thin sm:flex-wrap sm:overflow-visible sm:whitespace-normal sm:pb-0",children:[U.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>N(`from:${e}`),className:`shrink-0 rounded-full border px-3 py-1 text-xs transition-colors ${k===`from:${e}`?"border-cyan-500/30 bg-cyan-500/10 text-cyan-300":"border-[#26262b] bg-[#161618] text-gray-400 hover:text-gray-200"}`,children:["from:",e]},e)),k.startsWith("from:")&&(0,t.jsx)("button",{type:"button",onClick:()=>N(""),className:"shrink-0 rounded-full border border-gray-700 px-3 py-1 text-xs text-gray-500 hover:text-gray-200",children:"Clear"})]}),y.length>0&&f&&(0,t.jsx)("div",{className:"mb-3 flex justify-center",children:(0,t.jsx)("button",{type:"button",onClick:()=>g(e=>e+30),disabled:j,className:"rounded-full border border-[#26262b] bg-[#161618] px-4 py-1.5 text-xs text-gray-400 transition-colors hover:text-gray-200 disabled:opacity-50",children:j?"Loading…":"↑ Load earlier messages"})}),b&&0===y.length?(0,t.jsx)("div",{className:"animate-pulse space-y-3",children:[1,2,3,4,5].map(e=>(0,t.jsx)("div",{className:"h-20 rounded-2xl bg-gray-800/20"},e))}):0===I.length?(0,t.jsx)(i.EmptyState,{variant:"messages"}):"grouped"===S?(0,t.jsx)("div",{className:"space-y-4",children:z.map((e,s)=>(0,t.jsxs)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl overflow-hidden",children:[(0,t.jsxs)("div",{className:"px-4 py-2.5 border-b border-[#26262b] flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(l.AliasAvatar,{alias:e.participants[0],size:16}),(0,t.jsx)("span",{className:"text-sm text-gray-200 font-medium",children:e.participants[0]}),(0,t.jsx)("span",{className:"text-gray-600 text-xs",children:"↔"}),(0,t.jsx)(l.AliasAvatar,{alias:e.participants[1],size:16}),(0,t.jsx)("span",{className:"text-sm text-gray-200 font-medium",children:e.participants[1]})]}),(0,t.jsxs)("span",{className:"text-[10px] text-gray-600",children:[e.messages.length," messages"]})]}),(0,t.jsx)("div",{className:"px-4 py-2 space-y-2 max-h-64 overflow-y-auto",children:e.messages.map(e=>(0,t.jsxs)("div",{className:"flex items-start gap-2 text-xs py-1",children:[e.from_alias&&(0,t.jsx)(l.AliasAvatar,{alias:e.from_alias,size:14}),(0,t.jsx)("span",{className:"shrink-0 font-medium text-gray-200",children:e.from_alias}),(0,t.jsx)("span",{className:"text-gray-400 flex-1 truncate",title:e.content||"",children:(0,a.previewContent)(e.content).slice(0,120)}),(0,t.jsx)("span",{className:"text-[9px] text-gray-600 shrink-0",children:(0,a.timeAgo)(e.created_at||"")})]},e.id))})]},s))}):(0,t.jsxs)("div",{className:"space-y-1",children:[I.map((e,s)=>{var r;let i=I[s-1],o=!!i&&h(e.created_at)-h(i.created_at)>3e5,c=m(e),d=!!i&&!o&&m(i)===c&&(i.from_alias||"")===(e.from_alias||"")&&(i.to_alias||"")===(e.to_alias||""),g=e.from_alias||"?";return(0,t.jsxs)("div",{children:[o&&(0,t.jsxs)("div",{className:"my-2 sm:my-4 flex items-center gap-3",children:[(0,t.jsx)("div",{className:"h-px flex-1 bg-[#26262b]"}),(0,t.jsx)("div",{className:"text-[11px] text-gray-600",children:(r=e.created_at,(0,n.formatWeChatTime)(r)||"Time gap")}),(0,t.jsx)("div",{className:"h-px flex-1 bg-[#26262b]"})]}),"broadcast"===c?(0,t.jsx)("div",{className:d?"mt-0.5 sm:mt-1":"mt-2 sm:mt-3",children:(0,t.jsxs)("div",{className:"rounded-2xl border border-purple-500/20 bg-purple-500/10 px-3 py-2 sm:px-4 sm:py-3 shadow-sm w-full",children:[(0,t.jsxs)("div",{className:"mb-1 sm:mb-2 flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${u[e.type||""]||"bg-gray-500/10 text-gray-400 border-gray-500/20"}`,children:e.type||"unknown"}),(0,t.jsx)("span",{className:"text-sm font-medium text-purple-200",children:g}),e.to_alias&&(0,t.jsxs)("span",{className:"text-xs text-purple-200/80",children:["to ",e.to_alias]}),"high"===e.priority&&(0,t.jsx)("span",{className:"text-xs text-red-400",children:"HIGH"}),(0,t.jsx)("span",{className:"ml-auto text-xs text-gray-500",children:e.created_at?(0,a.timeAgo)(e.created_at):"--"})]}),(0,t.jsx)("div",{className:"whitespace-pre-wrap break-words [overflow-wrap:anywhere] text-sm leading-snug sm:leading-relaxed text-gray-200",children:p(e.content,k)}),(0,x.extractAttachments)(e).map((s,r)=>(0,t.jsx)(x.AttachmentBlock,{attachment:s},`att-b-${e.id}-${s.file_id??r}`))]})}):(0,t.jsxs)("div",{className:`${d?"mt-0.5 sm:mt-1":"mt-2 sm:mt-3"} flex gap-2 ${"outgoing"===c?"flex-row-reverse":"flex-row"}`,children:[(0,t.jsx)("div",{className:"w-8 shrink-0 pt-1",children:!d&&(0,t.jsx)(l.AliasAvatar,{alias:g,size:32})}),(0,t.jsxs)("div",{className:`min-w-0 max-w-3xl rounded-2xl border px-3 py-2 sm:px-4 sm:py-3 shadow-sm ${"outgoing"===c?"border-green-500/20 bg-green-500/10":"border-blue-500/20 bg-blue-500/10"}`,children:[!d&&(0,t.jsxs)("div",{className:"mb-1 sm:mb-2 flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-md border ${u[e.type||""]||"bg-gray-500/10 text-gray-400 border-gray-500/20"}`,children:e.type||"unknown"}),(0,t.jsx)("span",{className:`text-sm font-medium ${"outgoing"===c?"text-green-300":"text-blue-300"}`,children:g}),(0,t.jsx)("span",{className:"text-xs text-gray-600",children:"→"}),(0,t.jsx)("span",{className:"text-sm text-gray-300",children:e.to_alias||"--"}),"high"===e.priority&&(0,t.jsx)("span",{className:"text-xs text-red-400",children:"HIGH"}),(0,t.jsx)("span",{className:"ml-auto text-xs text-gray-500",children:e.created_at?(0,a.timeAgo)(e.created_at):"--"})]}),(0,t.jsx)("div",{className:"whitespace-pre-wrap break-words [overflow-wrap:anywhere] text-sm leading-snug sm:leading-relaxed text-gray-200",children:p(e.content,k)}),(0,x.extractAttachments)(e).map((s,r)=>(0,t.jsx)(x.AttachmentBlock,{attachment:s},`att-msg-${e.id}-${s.file_id??r}`)),d&&(0,t.jsx)("div",{className:"mt-1 text-[10px] text-gray-600 text-right",children:e.created_at?(0,a.timeAgo)(e.created_at):""}),_&&(0,t.jsxs)("div",{className:"mt-3 border-t border-white/10 pt-3 text-xs text-gray-500 space-y-1",children:[(0,t.jsxs)("div",{children:["ID: ",e.id]}),e.task_id&&(0,t.jsxs)("div",{children:["Task ID: ",e.task_id]}),(0,t.jsxs)("div",{children:["Created: ",e.created_at]})]})]})]})]},e.id)}),(0,t.jsx)("div",{ref:A})]})]})}])},32567,e=>{e.v(t=>Promise.all(["static/chunks/0z5k85v30uigc.js"].map(t=>e.l(t))).then(()=>t(51952)))}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,65151,e=>{"use strict";e.s(["SESSION_STATUS_CHIP_CLASS",0,{working:"bg-green-500/10 text-green-300 border-green-500/20",idle:"bg-gray-500/10 text-gray-300 border-gray-500/20",blocked:"bg-yellow-500/10 text-yellow-300 border-yellow-500/20",error:"bg-red-500/10 text-red-300 border-red-500/20",offline:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"SESSION_STATUS_TEXT_CLASS",0,{working:"text-green-400",idle:"text-gray-400",blocked:"text-yellow-400",error:"text-red-400",offline:"text-gray-500"},"STATUS_BAR_CLASS",0,{created:"bg-gray-500",delivered:"bg-gray-400",acked:"bg-gray-300",running:"bg-green-500",replied:"bg-gray-400",closed:"bg-gray-600",failed:"bg-red-500",cancelled:"bg-gray-600",expired:"bg-gray-600"},"STATUS_CHIP_CLASS",0,{created:"bg-gray-500/10 text-gray-400 border-gray-500/20",delivered:"bg-gray-500/10 text-gray-300 border-gray-500/20",acked:"bg-gray-500/10 text-gray-300 border-gray-500/20",running:"bg-green-500/10 text-green-300 border-green-500/20",replied:"bg-gray-500/10 text-gray-300 border-gray-500/20",closed:"bg-gray-500/10 text-gray-500 border-gray-500/20",failed:"bg-red-500/10 text-red-300 border-red-500/20",cancelled:"bg-gray-500/10 text-gray-500 border-gray-500/20",expired:"bg-gray-500/10 text-gray-500 border-gray-500/20"},"STATUS_DOT_HEX",0,{created:"#9ca3af",delivered:"#9ca3af",acked:"#9ca3af",running:"#4ade80",replied:"#9ca3af",closed:"#6b7280",failed:"#f87171",cancelled:"#6b7280",expired:"#6b7280"},"TASK_STATUSES",0,["created","delivered","acked","running","replied","closed","failed","cancelled","expired"]])},16657,e=>{"use strict";var t=e.i(77535);e.s(["previewContent",0,function(e){return e&&e.replace(/!\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\s+/g," ").trim()||"--"},"timeAgo",0,function(e){return(0,t.relativeAgo)(e)??"--"}])},31595,10418,e=>{"use strict";var t=e.i(26387),s=e.i(51071);let a="anet_avatars_v1",r="anet-avatars-updated",l=null,n=[],i=!1;function d(){try{let e=JSON.parse(window.localStorage.getItem(a)||"{}");return e&&"object"==typeof e?e:{}}catch{return{}}}function o(e){return e&&(d()[e]||l?.[e]||function(e){if(!n.length)return"";let t=5381;for(let s=0;s<e.length;s++)t=(t<<5)+t+e.charCodeAt(s)>>>0;return n[t%n.length]}(e))||""}let c=0;function x(e){i||(i=!0,fetch("/avatars/manifest.json",{cache:"no-cache"}).then(e=>e.ok?e.json():null).then(e=>{if(e&&"object"==typeof e&&!Array.isArray(e)){let t={};for(let[s,a]of Object.entries(e))!s.startsWith("_")&&"string"==typeof a&&a.startsWith("/")&&(t[s]=a);let s=e._pool;n=Array.isArray(s)?s.filter(e=>"string"==typeof e&&e.startsWith("/")):[],l=t,window.dispatchEvent(new Event(r))}}).catch(()=>{}));let t=()=>{c++,e()};return window.addEventListener(r,t),window.addEventListener("storage",t),()=>{window.removeEventListener(r,t),window.removeEventListener("storage",t)}}function g(e){return(0,s.useSyncExternalStore)(x,()=>o(e),()=>"")}e.s(["getAvatarUrl",0,o,"setAvatarUrl",0,function(e,t){if(e)try{let s=d();t.trim()?s[e]=t.trim():delete s[e],window.localStorage.setItem(a,JSON.stringify(s)),window.dispatchEvent(new Event(r))}catch{}},"useAvatarUrl",0,g,"useAvatarsVersion",0,function(){return(0,s.useSyncExternalStore)(x,()=>c,()=>0)}],10418);let u=[180,200,220,270,300,330,30,90];function h(e){let t=0;for(let s=0;s<e.length;s++)t=31*t+e.charCodeAt(s)>>>0;let s=u[t%u.length];return{bg:`hsl(${s} 55% 22%)`,ring:`hsl(${s} 60% 45%)`,text:`hsl(${s} 80% 78%)`}}function m(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:a=28,className:r=""}){let l=g(e),[n,i]=(0,s.useState)("loading"),[d,o]=(0,s.useState)(l);if(l!==d&&(o(l),i("loading")),l&&"error"!==n)return(0,t.jsx)("span",{className:`anet-alias-avatar relative inline-flex shrink-0 overflow-hidden rounded-full border border-[var(--border)] ${"loading"===n?"animate-pulse bg-[var(--bg-elevated)]":""} ${r}`,style:{width:a,height:a},title:e,"aria-hidden":!0,children:(0,t.jsx)("img",{src:l,alt:"",loading:"lazy",onLoad:()=>i("ready"),onError:()=>i("error"),className:`h-full w-full rounded-full object-cover transition-opacity duration-150 ${"ready"===n?"opacity-100":"opacity-0"}`})});if(/\bgrok\b|grok-build|grok测试员|grok-demo/i.test(e))return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border border-emerald-500/45 bg-emerald-950/70 shrink-0 ${r}`,style:{width:a,height:a,backgroundImage:"url(/vendors/grok.svg)",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"68% 68%"},title:e,"aria-hidden":!0});let c=h(e),x=Math.max(9,Math.round(.42*a));return(0,t.jsx)("span",{className:`anet-alias-avatar inline-flex items-center justify-center rounded-full border shrink-0 font-semibold ${r}`,style:{width:a,height:a,fontSize:x,backgroundColor:c.bg,borderColor:c.ring,color:c.text},title:e,"aria-hidden":!0,children:m(e)})},"aliasAvatarColors",0,h,"aliasInitial",0,m],31595)},35361,e=>{"use strict";var t=e.i(97940),s=e.i(1065);let a=async e=>{let t=await fetch(e);if(401===t.status)throw window.location.assign("/login"),Error("unauthorized");return t.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function l(e,t){if(!t)return e;let s=e.includes("?")?"&":"?";return`${e}${s}network_id=${encodeURIComponent(t)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,t.default)("/api/anet/config",a,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:s}=(0,t.default)("/api/hub/health",a,r);return{health:e||null,error:s}},"useMessages",0,function(e=100){let{networkId:n}=(0,s.useNetworkId)(),{data:i,error:d,isLoading:o}=(0,t.default)(l(`/api/hub/messages?limit=${e}`,n),a,{...r,keepPreviousData:!0});return{messages:i?.messages||[],error:d,isLoading:o}},"useNodeLifecycle",0,function(){let{networkId:e}=(0,s.useNetworkId)(),{data:n,error:i,mutate:d}=(0,t.default)(l("/api/hub/nodes",e),a,r),o={},c={},x={};for(let e of n?.nodes??[])e.alias&&"string"==typeof e.lifecycle_state&&(o[e.alias]=e.lifecycle_state),e.alias&&"string"==typeof e.node_id&&(c[e.alias]=e.node_id),e.alias&&(x[e.alias]={display_name:"string"==typeof e.display_name?e.display_name:null,team:"string"==typeof e.team?e.team:null,tags:Array.isArray(e.tags)?e.tags:[],attrs_revision:"number"==typeof e.attrs_revision?e.attrs_revision:0});return{lifecycleByAlias:o,nodeIdByAlias:c,attrsByAlias:x,error:i,refreshNodes:d}},"useSessions",0,function(){let{networkId:e}=(0,s.useNetworkId)(),{data:n,error:i,isLoading:d}=(0,t.default)(l("/api/hub/status",e),a,r);return{sessions:n?.sessions||[],hint:n?._hint,error:i,isLoading:d}},"useStats",0,function(){let{networkId:e}=(0,s.useNetworkId)(),{data:n,error:i}=(0,t.default)(l("/api/hub/stats",e),a,r);return{stats:n?.ok?n:null,error:i}},"useTasks",0,function(e){let{networkId:n}=(0,s.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:d,error:o,isLoading:c}=(0,t.default)(l(`/api/hub/tasks?${i}`,n),a,r);return{tasks:d?.tasks||[],count:d?.count??0,source:d?.source,error:o,isLoading:c}}])},50904,e=>{"use strict";var t=e.i(26387),s=e.i(51071),a=e.i(41065),r=e.i(35361),l=e.i(16657),n=e.i(31595),i=e.i(65151);e.s(["default",0,function(){let e,{sessions:d}=(0,r.useSessions)(),{health:o}=(0,r.useHealth)(),{stats:c}=(0,r.useStats)(),x=o?.sse_sessions||{},g=e=>(e.network_id?x[`${e.network_id}:${e.alias}`]:void 0)??x[e.alias],[u,h]=(0,s.useState)(""),[m,b]=(0,s.useState)(""),[f,p]=(0,s.useState)(""),[y,v]=(0,s.useState)(""),[j,N]=(0,s.useState)(""),[S,w]=(0,s.useState)(""),[k,_]=(0,s.useState)(""),[A,T]=(0,s.useState)(""),C=async()=>{if(u.trim()&&m.trim()){try{let e=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"register",username:u,password:m})}),t=await e.json();p(t.ok?`Created: ${t.user.username} (${t.user.user_id})`:`Failed: ${t.error}`),t.ok&&(h(""),b(""))}catch{p("Failed")}setTimeout(()=>p(""),8e3)}},$=async()=>{if(y.trim()){try{let e=await fetch("/api/hub/broadcast",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:y})}),t=await e.json();N(t.ok?`Sent to ${t.recipients} nodes`:`Failed: ${t.error}`),t.ok&&v("")}catch{N("Failed")}setTimeout(()=>N(""),5e3)}},O=async()=>{if(S&&k.trim()){try{let e=await fetch("/api/hub/send",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({alias:S,task:k,...d.find(e=>e.alias===S)?.network_id?{network_id:d.find(e=>e.alias===S)?.network_id}:{}})}),t=await e.json();T(t.ok?"Task sent":`Failed: ${t.error}`),t.ok&&_("")}catch{T("Failed")}setTimeout(()=>T(""),5e3)}},E=d.filter(e=>g(e)),I=d.filter(e=>!g(e));return(0,t.jsxs)("div",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 p-4 sm:p-6",children:[(0,t.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Admin"}),(0,t.jsx)("nav",{className:"mb-4 sm:mb-8 flex flex-wrap gap-2 text-xs",children:[{href:"#status",label:"Status"},{href:"#actions",label:"Actions"},{href:"#users",label:"Users"}].map(e=>(0,t.jsx)("a",{href:e.href,className:"inline-flex min-h-[44px] items-center rounded-md border border-[#26262b] bg-[#0e0e10]/60 px-3 py-2 text-gray-400 hover:border-cyan-500/50 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,t.jsxs)("div",{className:"max-w-6xl space-y-10",children:[(0,t.jsxs)("div",{id:"status",className:"space-y-4 scroll-mt-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Status"}),(0,t.jsx)("div",{className:"flex-1 h-px bg-[#26262b]"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,t.jsxs)("section",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-4 sm:p-5",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-3 sm:mb-4",children:"Server Overview"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-2xl sm:text-3xl font-bold text-green-400 tabular-nums",children:E.length}),(0,t.jsx)("div",{className:"text-xs text-gray-500",children:"Online"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-2xl sm:text-3xl font-bold text-gray-500 tabular-nums",children:I.length}),(0,t.jsx)("div",{className:"text-xs text-gray-500",children:"Offline"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-2xl sm:text-3xl font-bold text-cyan-400 tabular-nums",children:o?.sse_connections??"--"}),(0,t.jsxs)("div",{className:"text-xs text-gray-500",children:["SSE Streams ",(0,t.jsx)("span",{className:"text-gray-600",children:"· server"})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-2xl sm:text-3xl font-bold text-white tabular-nums",children:c?.tasks?.total??"--"}),(0,t.jsx)("div",{className:"text-xs text-gray-500",children:"Total Tasks"})]})]}),c?.tasks?.by_status&&c.tasks.by_status.length>0&&(e=Object.fromEntries(c.tasks.by_status.map(e=>[e.status,e.count])),(0,t.jsxs)("div",{className:"mt-4 flex items-center justify-between border-t border-[#26262b] pt-3 text-xs",children:[(0,t.jsxs)("div",{className:"text-gray-400 tabular-nums",children:[(0,t.jsxs)("span",{className:e.running?"text-green-400":"text-gray-500",children:[e.running||0," running"]}),(0,t.jsx)("span",{className:"text-gray-600",children:" · "}),(0,t.jsxs)("span",{className:e.failed?"text-red-400":"text-gray-500",children:[e.failed||0," failed"]})]}),(0,t.jsx)(a.default,{href:"/tasks",prefetch:!1,className:"text-cyan-400 hover:text-cyan-300",children:"View all →"})]}))]}),(0,t.jsxs)("section",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-5",children:[(0,t.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:["Online Sessions ",(0,t.jsxs)("span",{className:"text-gray-600",children:["(",E.length,")"]})]}),(0,t.jsx)("div",{className:"space-y-2 max-h-80 overflow-y-auto",children:0===E.length?(0,t.jsx)("div",{className:"text-xs text-gray-600 text-center py-4",children:"No online sessions"}):E.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-3 bg-[#0e0e10] rounded-lg px-3 py-2 border border-[#1c1c1f]",children:[(0,t.jsx)(n.AliasAvatar,{alias:e.alias,size:20}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-sm text-white font-medium truncate",children:e.alias}),(0,t.jsxs)("div",{className:"text-xs text-gray-500 truncate",children:[e.agent||"--",e.task?` \xb7 ${e.task}`:""]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded border ${i.SESSION_STATUS_CHIP_CLASS[e.status]||i.SESSION_STATUS_CHIP_CLASS.idle}`,children:e.status}),(0,t.jsx)("span",{className:"text-[10px] text-gray-600",children:(0,l.timeAgo)(e.updated_at)})]})]},e.alias))})]})]})]}),(0,t.jsxs)("div",{id:"actions",className:"space-y-4 scroll-mt-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Actions"}),(0,t.jsx)("div",{className:"flex-1 h-px bg-[#26262b]"})]}),0===d.length?(0,t.jsx)("div",{className:"bg-[#161618] border border-[#26262b] rounded-xl px-5 py-4 text-sm text-gray-500",children:"Broadcast and Send Task become available after the first agent registers."}):(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,t.jsxs)("section",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-5",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Broadcast"}),(0,t.jsx)("textarea",{value:y,onChange:e=>v(e.target.value),placeholder:"Message to all online nodes...",rows:3,className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,t.jsxs)("div",{className:"flex justify-between items-center mt-3",children:[(0,t.jsxs)("span",{className:"text-xs text-gray-600",children:[y.length,"/500"]}),(0,t.jsx)("button",{onClick:$,disabled:!y.trim(),className:"px-4 py-2 bg-purple-600 hover:bg-purple-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Broadcast"})]}),j&&(0,t.jsx)("div",{className:`mt-2 text-xs ${j.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:j})]}),(0,t.jsxs)("section",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-5",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Send Task"}),(0,t.jsxs)("select",{value:S,onChange:e=>w(e.target.value),className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-3 py-2 text-base sm:text-sm text-white focus:border-cyan-500/50 focus:outline-none mb-3",children:[(0,t.jsx)("option",{value:"",children:"Select target node..."}),E.map(e=>(0,t.jsxs)("option",{value:e.alias,children:[e.alias," (",e.status,")"]},e.alias)),(0,t.jsx)("optgroup",{label:"Offline",children:I.map(e=>(0,t.jsxs)("option",{value:e.alias,children:[e.alias," (offline)"]},e.alias))})]}),(0,t.jsx)("textarea",{value:k,onChange:e=>_(e.target.value),placeholder:"Task content...",rows:3,className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none resize-none"}),(0,t.jsx)("div",{className:"flex justify-end mt-3",children:(0,t.jsx)("button",{onClick:O,disabled:!S||!k.trim(),className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Send Task"})}),A&&(0,t.jsx)("div",{className:`mt-2 text-xs ${A.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:A})]})]})]}),(0,t.jsxs)("div",{id:"users",className:"space-y-4 scroll-mt-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,t.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Users"}),(0,t.jsx)("div",{className:"flex-1 h-px bg-[#26262b]"})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:(0,t.jsxs)("section",{className:"bg-[#161618] border border-[#26262b] rounded-xl p-5",children:[(0,t.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Register User (V3)"}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)("input",{type:"text",value:u,onChange:e=>h(e.target.value),placeholder:"Username",className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,t.jsx)("input",{type:"password",value:m,onChange:e=>b(e.target.value),placeholder:"Password",className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,t.jsx)("button",{onClick:C,disabled:!u.trim()||!m.trim(),className:"w-full px-4 py-2 bg-green-600 hover:bg-green-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Register"})]}),f&&(0,t.jsx)("div",{className:`mt-2 text-xs ${f.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:f})]})})]})]})]})}])}]);
|