@sleep2agi/agent-network-dashboard 0.6.3-preview.50 → 0.6.3-preview.52
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 -1
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +50 -50
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- 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 +13 -13
- package/.next/server/app/_not-found.segments/_full.segment.rsc +13 -13
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
- 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 +2 -2
- 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 +15 -15
- package/.next/server/app/admin.segments/_full.segment.rsc +15 -15
- package/.next/server/app/admin.segments/_head.segment.rsc +4 -4
- package/.next/server/app/admin.segments/_index.segment.rsc +8 -8
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +8 -8
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/login.segments/_full.segment.rsc +15 -15
- package/.next/server/app/login.segments/_head.segment.rsc +4 -4
- package/.next/server/app/login.segments/_index.segment.rsc +8 -8
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/logs.segments/_full.segment.rsc +15 -15
- package/.next/server/app/logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/logs.segments/_index.segment.rsc +8 -8
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/messages.segments/_full.segment.rsc +15 -15
- package/.next/server/app/messages.segments/_head.segment.rsc +4 -4
- package/.next/server/app/messages.segments/_index.segment.rsc +8 -8
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/node.segments/_full.segment.rsc +15 -15
- package/.next/server/app/node.segments/_head.segment.rsc +4 -4
- package/.next/server/app/node.segments/_index.segment.rsc +8 -8
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- 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/[alias]/page.js.nft.json +1 -1
- package/.next/server/app/nodes/[alias]/page_client-reference-manifest.js +1 -1
- 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 +15 -15
- package/.next/server/app/nodes.segments/_full.segment.rsc +15 -15
- package/.next/server/app/nodes.segments/_head.segment.rsc +4 -4
- package/.next/server/app/nodes.segments/_index.segment.rsc +8 -8
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/providers.segments/_full.segment.rsc +15 -15
- package/.next/server/app/providers.segments/_head.segment.rsc +4 -4
- package/.next/server/app/providers.segments/_index.segment.rsc +8 -8
- package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/server-logs.segments/_full.segment.rsc +15 -15
- package/.next/server/app/server-logs.segments/_head.segment.rsc +4 -4
- package/.next/server/app/server-logs.segments/_index.segment.rsc +8 -8
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/servers.segments/_full.segment.rsc +15 -15
- package/.next/server/app/servers.segments/_head.segment.rsc +4 -4
- package/.next/server/app/servers.segments/_index.segment.rsc +8 -8
- package/.next/server/app/servers.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/settings.segments/_full.segment.rsc +15 -15
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- 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 +15 -15
- package/.next/server/app/tasks.segments/_full.segment.rsc +15 -15
- package/.next/server/app/tasks.segments/_head.segment.rsc +4 -4
- package/.next/server/app/tasks.segments/_index.segment.rsc +8 -8
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- 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/{0ld5_next_dist_00v047f._.js → 0ld5_next_dist_04cce2g._.js} +2 -2
- package/.next/server/chunks/ssr/0ld5_next_dist_04cce2g._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__06w5i08._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__06w5i08._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0dcez4x._.js +11 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0dcez4x._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__0jgqpfv._.js → [root-of-the-server]__0gyqilt._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0gyqilt._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0j-def.._.js +11 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0j-def.._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__11wln8.._.js → [root-of-the-server]__0oavw6j._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0oavw6j._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0rct4.k._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0rct4.k._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__00n84ca._.js → [root-of-the-server]__0x9nh~a._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0x9nh~a._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_0q55dv1._.js +0 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_0q55dv1._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_13184u1._.js +0 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_13184u1._.js.map +1 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_app_05u4_h~._.js +2 -2
- package/.next/server/chunks/ssr/dash-stageb-wt_app_05u4_h~._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_0qn7hvc._.js +1 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_0qn7hvc._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_0ss0pj-._.js +1 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_0ss0pj-._.js.map +1 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_nodes_NodesView_tsx_0patjj7._.js +2 -2
- package/.next/server/chunks/ssr/dash-stageb-wt_app_nodes_NodesView_tsx_0patjj7._.js.map +1 -1
- package/.next/server/chunks/ssr/{dash-stageb-wt_0hzfl6x._.js → dash-stageb-wt_app_page_tsx_0iyrtvj._.js} +3 -3
- package/.next/server/chunks/ssr/dash-stageb-wt_app_page_tsx_0iyrtvj._.js.map +1 -0
- 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/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/0-ot~88nectgp.js +2 -0
- package/.next/static/chunks/00adqh_rd04uf.js +9 -0
- package/.next/static/chunks/051p0pw4z~6ag.js +1 -0
- package/.next/static/chunks/0aaakzcw7tey0.js +0 -0
- package/.next/static/chunks/{0hm52b0y~k0~z.js → 0lf8e-h91s10h.js} +1 -1
- package/.next/static/chunks/0njt8wek.9aq6.js +1 -0
- package/.next/static/chunks/0ohx4jpm9~61..js +1 -0
- package/.next/static/chunks/0pg4pce.q5ne_.js +9 -0
- package/.next/static/chunks/0u5y.gmi~jkw6.js +1 -0
- package/.next/static/chunks/0wf03_efeii.w.css +1 -0
- package/.next/static/chunks/0ws0p1n62l~ub.js +1 -0
- package/.next/static/chunks/0zljk8~2jqw93.js +4 -0
- package/.next/static/chunks/{06q7-vhy~1-y3.js → 0~rx9_~1wupcp.js} +2 -2
- package/.next/static/chunks/{0ep78sq90x_yc.js → 14x094g58kg61.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/ChatPane.tsx +133 -17
- package/app/components/NodeList.tsx +208 -46
- package/app/components/NodeListContextMenu.tsx +187 -0
- package/app/components/NodeSettingsPanel.tsx +29 -3
- package/app/components/TaskChatPanel.tsx +156 -31
- package/app/messages/page.tsx +22 -22
- package/app/nodes/NodesView.tsx +110 -11
- package/package.json +1 -1
- package/tests/e2e-9-nodes-team-tag-filter.spec.ts +17 -7
- package/tests/e2e-batch-list-actions.spec.ts +234 -0
- package/tests/e2e-messages-spec-visual-align.spec.ts +244 -0
- package/tests/e2e-pin-mute-attr-always-present.spec.ts +171 -0
- package/tests/e2e-stage-a-node-list.spec.ts +18 -7
- package/tests/e2e-stage-b-chat-pane.spec.ts +177 -10
- package/tests/e2e-status-labels.spec.ts +218 -0
- package/.next/server/chunks/ssr/0ld5_next_dist_00v047f._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__00n84ca._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0idij1k._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0idij1k._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0jgqpfv._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0w7k~3f._.js +0 -9
- package/.next/server/chunks/ssr/[root-of-the-server]__0w7k~3f._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__11wln8.._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_0hzfl6x._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_06.7qt9._.js +0 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_app_06.7qt9._.js.map +0 -1
- package/.next/server/chunks/ssr/dash-stageb-wt_app_0y~m8-6._.js +0 -0
- package/.next/server/chunks/ssr/dash-stageb-wt_app_0y~m8-6._.js.map +0 -1
- package/.next/static/chunks/02.5_nifak.uu.js +0 -1
- package/.next/static/chunks/03hzj129k~odb.js +0 -1
- package/.next/static/chunks/0cey4i.y0a8~j.js +0 -1
- package/.next/static/chunks/0mhaf6lrw5nn..css +0 -1
- package/.next/static/chunks/0s293geid.j7e.js +0 -4
- package/.next/static/chunks/0zj_navpyhltx.js +0 -2
- package/.next/static/chunks/11zz15q37~bz5.js +0 -7
- package/.next/static/chunks/14y4x3de1lbug.js +0 -1
- package/.next/static/chunks/15ka68xi.w-i-.js +0 -1
- package/.next/static/chunks/17qkc714xy04..js +0 -1
- /package/.next/static/{vc_aJHtYwefsVcl2_f14Z → RiXBfeE2zY5tzXRmF7kBD}/_buildManifest.js +0 -0
- /package/.next/static/{vc_aJHtYwefsVcl2_f14Z → RiXBfeE2zY5tzXRmF7kBD}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{vc_aJHtYwefsVcl2_f14Z → RiXBfeE2zY5tzXRmF7kBD}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,22752,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.6.3-preview.
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,22752,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.6.3-preview.52"],22752)},10536,e=>{"use strict";var t=e.i(90724),r=e.i(87854),s=e.i(22752);e.s(["default",0,function(){let[e,a]=(0,r.useState)("login"),[n,o]=(0,r.useState)(""),[i,l]=(0,r.useState)(""),[c,d]=(0,r.useState)(!1),[x,m]=(0,r.useState)(""),[g,h]=(0,r.useState)(!1),u=async t=>{t.preventDefault(),h(!0),m("");try{let t=await fetch("/api/auth/v3",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,username:n,password:i})}),r=await t.json();if(r.ok){r.token&&sessionStorage.setItem("anet_v3_auth",JSON.stringify({user:r.user,token:r.token,networks:r.networks||[],currentNetwork:r.network_id||r.networks?.[0]?.network_id||""})),window.location.assign("/");return}m(r.error||"Login failed")}catch{m("Connection failed")}h(!1)};return(0,t.jsxs)("main",{className:"min-h-screen bg-[#0b0b0d] text-gray-100 flex items-center justify-center relative overflow-hidden px-4 py-10 sm:py-16",children:[(0,t.jsx)("div",{className:"absolute inset-0 pointer-events-none anet-login-bg","aria-hidden":!0}),(0,t.jsx)("div",{className:"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-[460px] h-[460px] rounded-full bg-cyan-500/[0.045] blur-[110px] pointer-events-none","aria-hidden":!0}),(0,t.jsxs)("div",{className:"relative w-full max-w-sm",children:[(0,t.jsxs)("div",{className:"text-center mb-7",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 mb-4 rounded-2xl bg-[#161618] border border-[#26262b] anet-login-mark",children:(0,t.jsxs)("svg",{className:"w-9 h-9",viewBox:"0 0 32 32","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"16",cy:"16",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"1.5",opacity:"0.25",className:"text-cyan-400 anet-login-mark-ring"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"10",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"16",y1:"10",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("line",{x1:"10",y1:"20",x2:"22",y2:"20",stroke:"currentColor",strokeWidth:"1",opacity:"0.5",className:"text-cyan-400 anet-login-mark-edge"}),(0,t.jsx)("circle",{cx:"16",cy:"10",r:"3",fill:"currentColor",className:"text-cyan-400 anet-login-mark-node-a"}),(0,t.jsx)("circle",{cx:"10",cy:"20",r:"3",fill:"currentColor",className:"text-green-400 anet-login-mark-node-b"}),(0,t.jsx)("circle",{cx:"22",cy:"20",r:"3",fill:"currentColor",className:"text-violet-400 anet-login-mark-node-c"})]})}),(0,t.jsx)("h1",{className:"text-[22px] sm:text-2xl font-semibold text-white tracking-tight",children:"Agent Network"}),(0,t.jsx)("p",{className:"text-[13px] text-gray-400 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-500",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-500",children:"Free preview · no credit card"})]})})]}),(0,t.jsx)("div",{className:"flex rounded-lg border border-[#26262b] bg-[#161618] p-1 mb-4",children:["login","register"].map(r=>(0,t.jsx)("button",{type:"button",onClick:()=>{a(r),m("")},className:`flex-1 rounded-md px-3 py-2 text-sm transition-colors ${e===r?"bg-cyan-500/10 text-cyan-300":"text-gray-500 hover:text-gray-200"}`,children:"login"===r?"Sign in":"Register"},r))}),(0,t.jsxs)("form",{onSubmit:u,className:"border border-[#26262b] bg-[#161618]/80 backdrop-blur-sm rounded-xl p-6 shadow-2xl shadow-black/30",children:[(0,t.jsx)("label",{htmlFor:"username",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Username"}),(0,t.jsx)("input",{id:"username",type:"text",value:n,onChange:e=>o(e.target.value),autoFocus:!0,placeholder:"Enter username",className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-4 py-3 text-base sm:text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all mb-4"}),(0,t.jsx)("label",{htmlFor:"password",className:"block text-xs text-gray-500 mb-2 uppercase tracking-wider",children:"Password"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("input",{id:"password",type:c?"text":"password",value:i,onChange:e=>l(e.target.value),placeholder:"Enter password",className:"w-full bg-[#0e0e10] border border-[#26262b] rounded-lg px-4 pr-11 py-3 text-base sm:text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:ring-1 focus:ring-cyan-500/20 focus:outline-none transition-all"}),(0,t.jsx)("button",{type:"button",onClick:()=>d(e=>!e),tabIndex:-1,"aria-label":c?"Hide password":"Show password",className:"absolute inset-y-0 right-0 flex items-center justify-center min-w-[44px] px-3 text-gray-600 hover:text-gray-300 transition-colors",children:c?(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),(0,t.jsx)("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})})]}),x&&(0,t.jsx)("div",{className:"mt-3 text-sm text-red-300 bg-red-500/5 border border-red-500/10 rounded-lg px-3 py-2",children:x}),(0,t.jsxs)("button",{type:"submit",disabled:g||!i||!n.trim(),className:"mt-5 w-full flex items-center justify-center gap-2 px-4 py-3 bg-gradient-to-r from-cyan-600 to-blue-600 hover:from-cyan-500 hover:to-blue-500 disabled:from-gray-800 disabled:to-gray-800 disabled:text-gray-600 text-white text-sm font-medium rounded-lg transition-all shadow-lg shadow-cyan-500/10 hover:shadow-cyan-500/20 disabled:shadow-none",children:[g&&(0,t.jsxs)("svg",{"aria-hidden":!0,className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",opacity:"0.25"}),(0,t.jsx)("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"})]}),(0,t.jsx)("span",{children:g?"login"===e?"Signing in…":"Registering…":"login"===e?"Sign in":"Create account"})]})]}),(0,t.jsxs)("p",{className:"text-center text-[11px] text-gray-700 mt-6",children:["Sleep2AGI · Apache-2.0 · ",(0,t.jsx)("a",{href:"https://anet.sh",className:"hover:text-gray-500 transition-colors",children:"anet.sh"}),(0,t.jsx)("span",{className:"mx-1 text-gray-800",children:"·"}),(0,t.jsxs)("span",{className:"font-mono",title:"@sleep2agi/agent-network-dashboard",children:["v",s.DASHBOARD_VERSION]})]})]})]})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,25371,e=>{"use strict";var t=e.i(87854);let s="anet_chat_pin_v1",r="anet-chat-pin-updated";function n(){try{let e=JSON.parse(window.localStorage.getItem(s)||"[]");return new Set(Array.isArray(e)?e:[])}catch{return new Set}}function a(e){return!!e&&n().has(e)}let i=0;function l(e){let t=()=>{i++,e()};return window.addEventListener(r,t),window.addEventListener("storage",t),()=>{window.removeEventListener(r,t),window.removeEventListener("storage",t)}}e.s(["isPinned",0,a,"togglePin",0,function(e){if(e)try{let t=n();t.has(e)?t.delete(e):t.add(e),window.localStorage.setItem(s,JSON.stringify([...t])),window.dispatchEvent(new Event(r))}catch{}},"usePinVersion",0,function(){return(0,t.useSyncExternalStore)(l,()=>i,()=>0)},"usePinned",0,function(e){return(0,t.useSyncExternalStore)(l,()=>!!e&&a(e),()=>!1)}])},57655,(e,t,s)=>{},82546,(e,t,s)=>{var r=e.i(68854);e.r(57655);var n=e.r(87854),a=n&&"object"==typeof n&&"default"in n?n:{default:n},i=void 0!==r.default&&r.default.env&&!0,l=function(e){return"[object String]"===Object.prototype.toString.call(e)},o=function(){function e(e){var t=void 0===e?{}:e,s=t.name,r=void 0===s?"stylesheet":s,n=t.optimizeForSpeed,a=void 0===n?i:n;d(l(r),"`name` must be a string"),this._name=r,this._deletedRulePlaceholder="#"+r+"-deleted-rule____{}",d("boolean"==typeof a,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=a,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var o="u">typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=o?o.getAttribute("content"):null}var t,s=e.prototype;return s.setOptimizeForSpeed=function(e){d("boolean"==typeof e,"`setOptimizeForSpeed` accepts a boolean"),d(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=e,this.inject()},s.isOptimizeForSpeed=function(){return this._optimizeForSpeed},s.inject=function(){var e=this;if(d(!this._injected,"sheet already injected"),this._injected=!0,"u">typeof window&&this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(i||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(t,s){return"number"==typeof s?e._serverSheet.cssRules[s]={cssText:t}:e._serverSheet.cssRules.push({cssText:t}),s},deleteRule:function(t){e._serverSheet.cssRules[t]=null}}},s.getSheetForTag=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]},s.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},s.insertRule=function(e,t){if(d(l(e),"`insertRule` accepts only strings"),"u"<typeof window)return"number"!=typeof t&&(t=this._serverSheet.cssRules.length),this._serverSheet.insertRule(e,t),this._rulesCount++;if(this._optimizeForSpeed){var s=this.getSheet();"number"!=typeof t&&(t=s.cssRules.length);try{s.insertRule(e,t)}catch(t){return i||console.warn("StyleSheet: illegal rule: \n\n"+e+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var r=this._tags[t];this._tags.push(this.makeStyleTag(this._name,e,r))}return this._rulesCount++},s.replaceRule=function(e,t){if(this._optimizeForSpeed||"u"<typeof window){var s="u">typeof window?this.getSheet():this._serverSheet;if(t.trim()||(t=this._deletedRulePlaceholder),!s.cssRules[e])return e;s.deleteRule(e);try{s.insertRule(t,e)}catch(r){i||console.warn("StyleSheet: illegal rule: \n\n"+t+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),s.insertRule(this._deletedRulePlaceholder,e)}}else{var r=this._tags[e];d(r,"old rule at index `"+e+"` not found"),r.textContent=t}return e},s.deleteRule=function(e){if("u"<typeof window)return void this._serverSheet.deleteRule(e);if(this._optimizeForSpeed)this.replaceRule(e,"");else{var t=this._tags[e];d(t,"rule at index `"+e+"` not found"),t.parentNode.removeChild(t),this._tags[e]=null}},s.flush=function(){this._injected=!1,this._rulesCount=0,"u">typeof window?(this._tags.forEach(function(e){return e&&e.parentNode.removeChild(e)}),this._tags=[]):this._serverSheet.cssRules=[]},s.cssRules=function(){var e=this;return"u"<typeof window?this._serverSheet.cssRules:this._tags.reduce(function(t,s){return s?t=t.concat(Array.prototype.map.call(e.getSheetForTag(s).cssRules,function(t){return t.cssText===e._deletedRulePlaceholder?null:t})):t.push(null),t},[])},s.makeStyleTag=function(e,t,s){t&&d(l(t),"makeStyleTag accepts only strings as second parameter");var r=document.createElement("style");this._nonce&&r.setAttribute("nonce",this._nonce),r.type="text/css",r.setAttribute("data-"+e,""),t&&r.appendChild(document.createTextNode(t));var n=document.head||document.getElementsByTagName("head")[0];return s?n.insertBefore(r,s):n.appendChild(r),r},t=[{key:"length",get:function(){return this._rulesCount}}],function(e,t){for(var s=0;s<t.length;s++){var r=t[s];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(e.prototype,t),e}();function d(e,t){if(!e)throw Error("StyleSheet: "+t+".")}var c=function(e){for(var t=5381,s=e.length;s;)t=33*t^e.charCodeAt(--s);return t>>>0},u={};function x(e,t){if(!t)return"jsx-"+e;var s=String(t),r=e+s;return u[r]||(u[r]="jsx-"+c(e+"-"+s)),u[r]}function m(e,t){"u"<typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var s=e+t;return u[s]||(u[s]=t.replace(/__jsx-style-dynamic-selector/g,e)),u[s]}var h=function(){function e(e){var t=void 0===e?{}:e,s=t.styleSheet,r=void 0===s?null:s,n=t.optimizeForSpeed,a=void 0!==n&&n;this._sheet=r||new o({name:"styled-jsx",optimizeForSpeed:a}),this._sheet.inject(),r&&"boolean"==typeof a&&(this._sheet.setOptimizeForSpeed(a),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var t=e.prototype;return t.add=function(e){var t=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(e.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),"u">typeof window&&!this._fromServer&&(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(e,t){return e[t]=0,e},{}));var s=this.getIdAndRules(e),r=s.styleId,n=s.rules;if(r in this._instancesCounts){this._instancesCounts[r]+=1;return}var a=n.map(function(e){return t._sheet.insertRule(e)}).filter(function(e){return -1!==e});this._indices[r]=a,this._instancesCounts[r]=1},t.remove=function(e){var t=this,s=this.getIdAndRules(e).styleId;if(function(e,t){if(!e)throw Error("StyleSheetRegistry: "+t+".")}(s in this._instancesCounts,"styleId: `"+s+"` not found"),this._instancesCounts[s]-=1,this._instancesCounts[s]<1){var r=this._fromServer&&this._fromServer[s];r?(r.parentNode.removeChild(r),delete this._fromServer[s]):(this._indices[s].forEach(function(e){return t._sheet.deleteRule(e)}),delete this._indices[s]),delete this._instancesCounts[s]}},t.update=function(e,t){this.add(t),this.remove(e)},t.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},t.cssRules=function(){var e=this,t=this._fromServer?Object.keys(this._fromServer).map(function(t){return[t,e._fromServer[t]]}):[],s=this._sheet.cssRules();return t.concat(Object.keys(this._indices).map(function(t){return[t,e._indices[t].map(function(e){return s[e].cssText}).join(e._optimizeForSpeed?"":"\n")]}).filter(function(e){return!!e[1]}))},t.styles=function(e){var t,s;return t=this.cssRules(),void 0===(s=e)&&(s={}),t.map(function(e){var t=e[0],r=e[1];return a.default.createElement("style",{id:"__"+t,key:"__"+t,nonce:s.nonce?s.nonce:void 0,dangerouslySetInnerHTML:{__html:r}})})},t.getIdAndRules=function(e){var t=e.children,s=e.dynamic,r=e.id;if(s){var n=x(r,s);return{styleId:n,rules:Array.isArray(t)?t.map(function(e){return m(n,e)}):[m(n,t)]}}return{styleId:x(r),rules:Array.isArray(t)?t:[t]}},t.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(e,t){return e[t.id.slice(2)]=t,e},{})},e}(),p=n.createContext(null);function f(){return new h}function b(){return n.useContext(p)}p.displayName="StyleSheetContext";var y=a.default.useInsertionEffect||a.default.useLayoutEffect,g="u">typeof window?f():void 0;function j(e){var t=g||b();return t&&("u"<typeof window?t.add(e):y(function(){return t.add(e),function(){t.remove(e)}},[e.id,String(e.dynamic)])),null}j.dynamic=function(e){return e.map(function(e){return x(e[0],e[1])}).join(" ")},s.StyleRegistry=function(e){var t=e.registry,s=e.children,r=n.useContext(p),i=n.useState(function(){return r||t||f()})[0];return a.default.createElement(p.Provider,{value:i},s)},s.createStyleRegistry=f,s.style=j,s.useStyleRegistry=b},54183,(e,t,s)=>{t.exports=e.r(82546).style},576,e=>{"use strict";var t=e.i(90724),s=e.i(87854),r=e.i(35644);function n(e){return e.trim().replace(/[-]+/g," ").toLowerCase()}function a({alias:e,nodeId:r,snapshot:i,onClose:l,onSaved:o}){let[d,c]=(0,s.useState)(i.display_name??""),[u,x]=(0,s.useState)(i.team??""),[m,h]=(0,s.useState)(i.tags),[p,f]=(0,s.useState)(""),[b,y]=(0,s.useState)(!1),[g,j]=(0,s.useState)(null),[v,w]=(0,s.useState)(null),[_,k]=(0,s.useState)(null),[N,S]=(0,s.useState)(null),[C,R]=(0,s.useState)(i.attrs_revision),$=(0,s.useRef)(null),E=(0,s.useRef)(!1);(0,s.useEffect)(()=>{R(i.attrs_revision),E.current||(c(i.display_name??""),x(i.team??""),h(i.tags))},[i.attrs_revision,i.display_name,i.team,i.tags]),(0,s.useEffect)(()=>{let e=e=>{"Escape"===e.key&&(e.stopPropagation(),l())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[l]);let T=()=>{E.current=!0},z=()=>{let e=p.trim();if(!e)return;if(e.length>64)return void j("标签不能超过 64 字符");if(m.length>=16)return void j("最多 16 个标签");if(m.includes(e))return void f("");let t=n(e),s=m.find(e=>n(e)===t);s?S(`「${e}」和已有的「${s}」可能会被服务端当作同一个(保存时告诉你结果)`):S(null),h([...m,e]),f(""),j(null),T()},F=async()=>{if(b)return;j(null),w(null),k(null),S(null),y(!0);let e=function(e){let t=[];for(let s of e){if("string"!=typeof s)continue;let e=s.trim();if(0!==e.length&&!(e.length>64)&&(t.push(e),t.length>=16))break}return t}(m);try{let t={base_attrs_revision:C,display_name:d.trim().length>0?d.trim():null,team:u.trim().length>0?u.trim():null,tags:e},s=await fetch(`/api/hub/nodes/${encodeURIComponent(r)}/attrs`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await s.json().catch(()=>({ok:!1,message:`HTTP ${s.status}`}));if(409===s.status){let e="number"==typeof a.current_attrs_revision?a.current_attrs_revision:null;w(e),j(a.message||"编辑冲突");return}if(!s.ok||!a.ok)return void j(a.message||`保存失败 (HTTP ${s.status})`);let i=Array.isArray(a.tags)?a.tags:[],m=function(e,t){let s=new Set(t.map(e=>n(e))),r=[],a=new Map;for(let r of e){let e=n(r);if(!s.has(e))continue;let i=t.find(t=>n(t)===e);if(i&&i!==r){let e=a.get(i)??[];r!==i&&e.push(r),e.length>0&&a.set(i,e)}}for(let[e,t]of a)t.length>0&&r.push(`「${t.join("」、「")}」已合并到「${e}」`);let i=new Set(e.map(e=>n(e))),l=e.filter(e=>{let t=n(e);return!s.has(t)&&i.has(t)});return l.length>0&&r.push(`「${l.join("」、「")}」被清理(含控制字符或格式不合规)`),r}(e,i);h(i),("string"==typeof a.display_name||null===a.display_name)&&c(a.display_name??""),("string"==typeof a.team||null===a.team)&&x(a.team??""),"number"==typeof a.attrs_revision&&R(a.attrs_revision),E.current=!1,o(),m.length>0?k(m):l()}catch(e){j(e instanceof Error?e.message:String(e))}finally{y(!1)}};return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:l,children:(0,t.jsxs)("div",{ref:$,role:"dialog","aria-label":`编辑节点 ${e} 属性`,"aria-modal":"true",className:"w-full max-w-md rounded-lg border border-[#26262b] bg-[#161618] p-4 shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h2",{className:"text-base font-semibold text-white",children:"编辑属性"}),(0,t.jsxs)("p",{className:"mt-0.5 truncate text-xs text-gray-500",children:["节点:",(0,t.jsx)("span",{className:"text-gray-300",children:e}),(0,t.jsx)("span",{className:"mx-1.5 text-gray-700",children:"·"}),"修订版本:",(0,t.jsx)("span",{className:"text-gray-300",children:C})]})]}),(0,t.jsx)("button",{type:"button",onClick:l,"aria-label":"关闭",className:"shrink-0 rounded-md p-1 text-gray-500 hover:bg-white/5 hover:text-white",children:"×"})]}),(0,t.jsxs)("div",{className:"mt-4 space-y-4",children:[(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs text-gray-400",children:"显示名 · display_name"}),(0,t.jsx)("input",{type:"text",value:d,onChange:e=>{c(e.target.value),T(),j(null)},maxLength:120,placeholder:"留空以清除",className:"mt-1 w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/40 focus:outline-none"}),(0,t.jsxs)("span",{className:"mt-1 block text-[10px] text-gray-500",children:["仅用于显示,不影响别人 @ 你的路由名(alias 保持 ",(0,t.jsx)("code",{className:"text-gray-400",children:e}),")"]})]}),(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-xs text-gray-400",children:"团队 · team"}),(0,t.jsx)("input",{type:"text",value:u,onChange:e=>{x(e.target.value),T(),j(null)},maxLength:120,placeholder:"如:Comm / 商务组 / Bots",className:"mt-1 w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/40 focus:outline-none"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("span",{className:"text-xs text-gray-400",children:["标签 · tags(最多 ",16," 个)"]}),(0,t.jsx)("div",{className:"mt-1 flex flex-wrap gap-1.5",children:m.map(e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-cyan-500/20 bg-cyan-500/5 px-2 py-0.5 text-xs text-cyan-100",children:[e,(0,t.jsx)("button",{type:"button",onClick:()=>{h(m.filter(t=>t!==e)),T()},"aria-label":`移除 ${e}`,className:"text-cyan-400/70 hover:text-red-300",children:"×"})]},e))}),(0,t.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,t.jsx)("input",{type:"text",value:p,onChange:e=>f(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),z())},maxLength:64,placeholder:"新标签(回车添加)",className:"flex-1 rounded-md border border-[#26262b] bg-[#0e0e10] px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/40 focus:outline-none",disabled:m.length>=16}),(0,t.jsx)("button",{type:"button",onClick:z,disabled:!p.trim()||m.length>=16,className:"rounded-md border border-cyan-500/30 bg-cyan-500/10 px-3 py-2 text-xs text-cyan-100 hover:bg-cyan-500/20 disabled:cursor-not-allowed disabled:opacity-40",children:"添加"})]}),N&&(0,t.jsx)("div",{className:"mt-1 text-[10px] text-amber-300/80",role:"status",children:N})]})]}),_&&_.length>0&&(0,t.jsxs)("div",{className:"mt-3 rounded-md border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-xs text-amber-100",children:[(0,t.jsx)("div",{className:"mb-1 font-semibold",children:"已保存 — 服务端做了这些整理:"}),(0,t.jsx)("ul",{className:"list-disc space-y-0.5 pl-4",children:_.map((e,s)=>(0,t.jsx)("li",{children:e},s))}),(0,t.jsx)("div",{className:"mt-1 text-[10px] text-amber-200/60",children:"以上是服务端的实存结果,已同步到此表单"})]}),g&&(0,t.jsxs)("div",{className:"mt-3 rounded-md border border-red-700/40 bg-red-900/20 px-3 py-2 text-xs text-red-200",children:[g,null!==v&&(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-red-300/70",children:["最新版本:",v]}),(0,t.jsx)("button",{type:"button",onClick:()=>{E.current=!1,o(),w(null),j(null)},className:"ml-auto rounded border border-red-500/40 bg-red-500/10 px-2 py-0.5 text-red-100 hover:bg-red-500/20",children:"重新加载最新值"})]})]}),(0,t.jsxs)("div",{className:"mt-4 flex items-center justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:l,disabled:b,className:"rounded-md border border-[#26262b] bg-[#0e0e10] px-3 py-2 text-sm text-gray-300 hover:bg-white/5 disabled:opacity-50",children:"取消"}),(0,t.jsx)("button",{type:"button",onClick:F,disabled:b,className:"rounded-md bg-cyan-600 px-3 py-2 text-sm text-white hover:bg-cyan-500 disabled:cursor-wait disabled:opacity-50",children:b?"保存中…":"保存"})]})]})})}function i(){let{data:e}=(0,r.default)("/api/anet/node-lifecycle",e=>fetch(e).then(e=>e.json()),{revalidateOnFocus:!1,dedupingInterval:6e4,shouldRetryOnError:!1});return e?.ok&&e.tools?e.tools:null}async function l(e,t){try{let s=await fetch("/api/anet/node-lifecycle",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,...t})});return{...await s.json().catch(()=>({})),httpStatus:s.status}}catch(e){return{ok:!1,error:"network_error",message:e instanceof Error?e.message:String(e),httpStatus:0}}}function o({alias:e,nodeId:r,networkId:n,onClose:a,onCompleted:i}){let[d,c]=(0,s.useState)(!1),[u,x]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null);(0,s.useEffect)(()=>{let e=e=>{"Escape"!==e.key||d||a()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[a,d]);let p=m&&"number"==typeof m.in_flight_count?m.in_flight_count:0,f=async()=>{c(!0),h(null);let e=await l("stop",{node_id:r,...n?{network_id:n}:{},...u?{force:!0}:{}});(c(!1),e.ok)?i():h(e)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-black/50",onClick:d?void 0:a,"aria-hidden":!0}),(0,t.jsxs)("div",{role:"dialog","aria-label":`停止节点 ${e}`,className:"fixed left-1/2 top-1/2 z-50 w-[min(92vw,420px)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-[#26262b] bg-[#161618] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[#26262b] px-4 py-3",children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-white",children:"停止节点"}),(0,t.jsx)("button",{onClick:d?void 0:a,"aria-label":"关闭",className:"text-gray-500 hover:text-white",children:"×"})]}),(0,t.jsxs)("div",{className:"space-y-3 px-4 py-4",children:[(0,t.jsxs)("div",{className:"text-sm text-gray-300",children:["将停止 ",(0,t.jsx)("span",{className:"font-mono text-cyan-300",children:e})," 子进程(SIGTERM,~10s 内)。配置目录保留,可通过「启动」恢复。"]}),m&&!1===m.ok&&(0,t.jsxs)("div",{className:"rounded-md border border-red-700/40 bg-red-900/20 px-3 py-2 text-xs text-red-200",children:[(0,t.jsx)("div",{className:"font-semibold",children:m.error}),m.message?(0,t.jsx)("div",{className:"mt-0.5 text-red-300/80",children:m.message}):null,"number"==typeof m.in_flight_count&&(0,t.jsxs)("div",{className:"mt-0.5 text-red-300/80",children:["当前 in-flight 任务: ",m.in_flight_count]}),m.hint?(0,t.jsx)("div",{className:"mt-1 text-red-300/60",children:m.hint}):null]}),(p>0||u)&&(0,t.jsxs)("label",{className:"flex items-start gap-2 rounded-md border border-amber-700/40 bg-amber-900/10 px-3 py-2 text-xs text-amber-200",children:[(0,t.jsx)("input",{type:"checkbox",checked:u,onChange:e=>x(e.target.checked),className:"mt-0.5"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("span",{className:"font-semibold text-amber-300",children:"强制停止"}),p>0?`(会丢弃 ${p} 条待处理任务)`:"(覆盖 in-flight 拒绝;hub 会写 audit 行)"]})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[#26262b] px-4 py-3",children:[(0,t.jsx)("button",{type:"button",disabled:d,onClick:a,className:"rounded-md px-3 py-1.5 text-sm text-gray-400 hover:text-gray-200 disabled:opacity-50",children:"取消"}),(0,t.jsx)("button",{type:"button",disabled:d||p>0&&!u,onClick:f,className:"rounded-md bg-cyan-600 px-4 py-1.5 text-sm font-medium text-white hover:bg-cyan-500 disabled:cursor-not-allowed disabled:opacity-50",children:d?"停止中…":"确认停止"})]})]})]})}function d({alias:e,nodeId:r,networkId:n,onClose:a,onCompleted:i}){let[o,c]=(0,s.useState)(!1),[u,x]=(0,s.useState)(""),[m,h]=(0,s.useState)(!1),[p,f]=(0,s.useState)(!1),[b,y]=(0,s.useState)(null);(0,s.useEffect)(()=>{let e=e=>{"Escape"!==e.key||o||a()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[a,o]);let g=b&&"number"==typeof b.in_flight_count?b.in_flight_count:0,j=u===e,v=async()=>{if(!j)return;c(!0),y(null);let e=await l("delete",{node_id:r,confirm_alias:u,...n?{network_id:n}:{},...m?{force:!0}:{},...p?{delete_config:!1}:{}});(c(!1),e.ok)?i():y(e)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-black/50",onClick:o?void 0:a,"aria-hidden":!0}),(0,t.jsxs)("div",{role:"dialog","aria-label":`删除节点 ${e}`,className:"fixed left-1/2 top-1/2 z-50 w-[min(94vw,480px)] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-red-700/40 bg-[#161618] shadow-2xl",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-[#26262b] px-4 py-3",children:[(0,t.jsx)("div",{className:"text-sm font-semibold text-red-300",children:"删除节点"}),(0,t.jsx)("button",{onClick:o?void 0:a,"aria-label":"关闭",className:"text-gray-500 hover:text-white",children:"×"})]}),(0,t.jsxs)("div",{className:"space-y-3 px-4 py-4 text-sm text-gray-300",children:[(0,t.jsx)("div",{children:"这将:"}),(0,t.jsxs)("ul",{className:"list-inside list-disc space-y-1 pl-2 text-xs text-gray-400",children:[(0,t.jsxs)("li",{children:["停止 ",(0,t.jsx)("span",{className:"font-mono text-cyan-300",children:e})," 子进程(SIGTERM ~10s)"]}),(0,t.jsx)("li",{children:"从 hub 注销该节点"}),(0,t.jsx)("li",{children:"撤销该节点的 ntok"}),!p&&(0,t.jsxs)("li",{children:["配置文件备份到 ",(0,t.jsxs)("code",{className:"text-amber-300",children:["~/.anet/deleted/<ts>-",e,"/"]}),"(30 天后自动清除)"]}),p&&(0,t.jsx)("li",{className:"text-amber-300",children:"配置文件保留原地(不备份不清理 — 你勾选了「保留配置」)"})]}),b&&!1===b.ok&&(0,t.jsxs)("div",{className:"rounded-md border border-red-700/40 bg-red-900/20 px-3 py-2 text-xs text-red-200",children:[(0,t.jsx)("div",{className:"font-semibold",children:b.error}),b.message?(0,t.jsx)("div",{className:"mt-0.5 text-red-300/80",children:b.message}):null,"number"==typeof b.in_flight_count&&(0,t.jsxs)("div",{className:"mt-0.5 text-red-300/80",children:["当前 in-flight 任务: ",b.in_flight_count]}),b.hint?(0,t.jsx)("div",{className:"mt-1 text-red-300/60",children:b.hint}):null]}),(g>0||m)&&(0,t.jsxs)("label",{className:"flex items-start gap-2 rounded-md border border-amber-700/40 bg-amber-900/10 px-3 py-2 text-xs text-amber-200",children:[(0,t.jsx)("input",{type:"checkbox",checked:m,onChange:e=>h(e.target.checked),className:"mt-0.5"}),(0,t.jsxs)("span",{children:[(0,t.jsx)("span",{className:"font-semibold text-amber-300",children:"强制删除"}),g>0?`(会丢弃 ${g} 条待处理任务)`:"(覆盖 in-flight 拒绝)"]})]}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-xs text-gray-400",children:[(0,t.jsx)("input",{type:"checkbox",checked:p,onChange:e=>f(e.target.checked)}),"保留配置目录(不备份;高级用法)"]}),(0,t.jsxs)("label",{className:"block space-y-1",children:[(0,t.jsxs)("span",{className:"text-xs text-gray-400",children:["输入节点名字 ",(0,t.jsx)("span",{className:"font-mono text-cyan-300",children:e})," 确认"]}),(0,t.jsx)("input",{autoFocus:!0,value:u,onChange:e=>x(e.target.value),placeholder:e,className:"w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-3 py-2 text-sm text-gray-200 focus:border-red-500 focus:outline-none",autoCapitalize:"none",autoCorrect:"off",spellCheck:!1}),u&&!j&&(0,t.jsx)("span",{className:"text-[11px] text-red-400",children:"名字不匹配(区分大小写)"})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[#26262b] px-4 py-3",children:[(0,t.jsx)("button",{type:"button",disabled:o,onClick:a,className:"rounded-md px-3 py-1.5 text-sm text-gray-400 hover:text-gray-200 disabled:opacity-50",children:"取消"}),(0,t.jsx)("button",{type:"button",disabled:o||!j||g>0&&!m,onClick:v,className:"rounded-md bg-red-600 px-4 py-1.5 text-sm font-medium text-white hover:bg-red-500 disabled:cursor-not-allowed disabled:opacity-50",children:o?"删除中…":`删除 ${e}`})]})]})]})}e.s(["NodeLifecycleMenu",0,function({nodeId:e,alias:r,lifecycleState:n,networkId:c,onCompleted:u,attrsSnapshot:x}){let m=i(),[h,p]=(0,s.useState)(!1),[f,b]=(0,s.useState)(!1),[y,g]=(0,s.useState)(!1),[j,v]=(0,s.useState)(!1),[w,_]=(0,s.useState)(!1),[k,N]=(0,s.useState)(null),S=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(!h)return;let e=e=>{S.current&&!S.current.contains(e.target)&&p(!1)},t=e=>{"Escape"===e.key&&p(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[h]);let C=(0,s.useCallback)(async()=>{p(!1),N(null),_(!0);let t=await l("restart",{node_id:e,...c?{network_id:c}:{}});(_(!1),t.ok)?u?.():N(t)},[e,c,u]),R="string"==typeof n&&n.length>0?n:"active",$=[];return"stopping"===R||"deleting"===R?$.push({label:"stopping"===R?"停止中…":"删除中…",key:"loading",disabled:!0,onClick:()=>{}}):"active"===R?($.push({label:w?"重启中…":"重启节点",key:"restart",disabled:w,onClick:C}),x&&$.push({label:"编辑属性",key:"edit-attrs",onClick:()=>{p(!1),v(!0)}}),(null===m||m.stop)&&$.push({label:"停止节点",key:"stop",onClick:()=>{p(!1),b(!0)}}),(null===m||m.delete)&&$.push({label:"删除节点",key:"delete",danger:!0,onClick:()=>{p(!1),g(!0)}})):"stopped"===R||"stop_failed"===R?($.push({label:w?"启动中…":"启动节点",key:"restart",disabled:w,onClick:C}),x&&$.push({label:"编辑属性",key:"edit-attrs",onClick:()=>{p(!1),v(!0)}}),$.push({label:"删除节点",key:"delete",danger:!0,onClick:()=>{p(!1),g(!0)}})):$.push({label:`状态 ${R} (不识别)`,key:"unknown",disabled:!0,onClick:()=>{}}),(0,t.jsxs)("div",{ref:S,className:"relative inline-block",onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("button",{type:"button","aria-label":`节点 ${r} 生命周期操作`,"aria-haspopup":"menu","aria-expanded":h,onClick:()=>p(e=>!e),className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-gray-400 hover:bg-white/5 hover:text-white focus:outline-none focus:ring-1 focus:ring-cyan-500/50",children:(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,children:[(0,t.jsx)("circle",{cx:"12",cy:"5",r:"1.6"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"1.6"}),(0,t.jsx)("circle",{cx:"12",cy:"19",r:"1.6"})]})}),h&&(0,t.jsx)("div",{role:"menu",className:"absolute right-0 z-40 mt-1 w-44 overflow-hidden rounded-md border border-[#26262b] bg-[#161618] shadow-xl",children:$.map(e=>(0,t.jsx)("button",{type:"button",role:"menuitem",disabled:e.disabled,onClick:e.onClick,className:`block w-full px-3 py-2 text-left text-sm transition-colors ${e.disabled?"text-gray-600 cursor-not-allowed":e.danger?"text-red-300 hover:bg-red-900/20":"text-gray-200 hover:bg-white/5"}`,children:e.label},e.key))}),k&&!1===k.ok&&!f&&!y&&(0,t.jsx)("div",{className:"absolute right-0 z-40 mt-1 w-72 rounded-md border border-red-700/40 bg-red-900/20 px-3 py-2 text-xs text-red-200",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"font-semibold",children:k.error||"error"}),k.message?(0,t.jsx)("div",{className:"mt-0.5 text-red-300/80",children:k.message}):null,"number"==typeof k.in_flight_count&&(0,t.jsxs)("div",{className:"mt-0.5 text-red-300/80",children:["in-flight: ",k.in_flight_count]}),k.hint?(0,t.jsx)("div",{className:"mt-1 text-red-300/60",children:k.hint}):null]}),(0,t.jsx)("button",{type:"button",onClick:()=>N(null),className:"shrink-0 text-red-400 hover:text-red-200","aria-label":"关闭",children:"×"})]})}),f&&(0,t.jsx)(o,{alias:r,nodeId:e,networkId:c,onClose:()=>b(!1),onCompleted:()=>{b(!1),u?.()}}),y&&(0,t.jsx)(d,{alias:r,nodeId:e,networkId:c,onClose:()=>g(!1),onCompleted:()=>{g(!1),u?.()}}),j&&x&&(0,t.jsx)(a,{alias:r,nodeId:e,snapshot:x,onClose:()=>v(!1),onSaved:()=>{u?.()}})]})},"useLifecycleCaps",0,i],576)},58895,e=>{"use strict";var t=e.i(90724),s=e.i(54183),r=e.i(87854),n=e.i(57835),a=e.i(97879),i=e.i(56827),l=e.i(25371),o=e.i(576);let d={"claude-agent-sdk":["deepseek-v4-pro","MiniMax-M3","MiniMax-M2.7","claude-sonnet-4-6","claude-opus-4-x","intern","mimo"],"claude-code-cli":["(由 CLI 管理)"],"codex-sdk":["gpt-5.5"],"grok-build-acp":["grok-build"]},c=["auto","default","bypassPermissions"],u=[{key:"telegram",label:"Telegram",fields:[{label:"Bot Token",value:"••••••••••••"},{label:"允许的 chat id (allowFrom)",value:"—"},{label:"状态目录",value:"~/.anet/channels/telegram"}]},{key:"feishu",label:"飞书 Feishu",fields:[{label:"App ID",value:"cli_••••••"},{label:"App Secret",value:"••••••••••••"},{label:"允许的 open_id (allowFrom)",value:"—"},{label:"允许的群 chat_id (allowChats)",value:"—"},{label:"群触发策略",value:"mention"}]},{key:"wechat",label:"WeChat",roadmap:!0,fields:[]}],x={permissionMode:"default",dangerouslySkipPermissions:!1,maxTurns:"",budget:"",timeout:""};async function m(e,t,s){let r=new AbortController,n=setTimeout(()=>r.abort(),s);try{let s=await fetch(e,{...t,signal:r.signal}),n=await s.json().catch(()=>({}));return{res:s,data:n}}finally{clearTimeout(n)}}function h(e){return e?new Set((Array.isArray(e)?e:String(e).split(/[,\s]+/)).map(e=>e.trim().toLowerCase()).filter(Boolean)):new Set}function p(e){return null==e||""===e?"":String(e)}function f({children:e}){return(0,t.jsx)("h3",{className:"text-[11px] font-medium uppercase tracking-wide text-gray-500 mb-2",children:e})}function b({alias:e}){let s=(0,i.useMuted)(e),r=(0,l.usePinned)(e);return(0,t.jsxs)("section",{children:[(0,t.jsx)(f,{children:"聊天"}),(0,t.jsxs)("button",{type:"button",role:"switch","aria-checked":r,onClick:()=>(0,l.togglePin)(e),className:"mb-2 flex w-full items-center justify-between rounded-lg border border-[#26262b] bg-[#161618] px-3 py-2.5",children:[(0,t.jsx)("span",{className:"text-[12px] text-gray-300",children:"置顶会话"}),(0,t.jsx)("span",{className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${r?"bg-cyan-600":"bg-[#2a2a30]"}`,children:(0,t.jsx)("span",{className:"inline-block h-4 w-4 rounded-full bg-white transition-transform",style:{transform:r?"translateX(18px)":"translateX(2px)"}})})]}),(0,t.jsxs)("button",{type:"button",role:"switch","aria-checked":s,onClick:()=>(0,i.toggleMute)(e),className:"flex w-full items-center justify-between rounded-lg border border-[#26262b] bg-[#161618] px-3 py-2.5",children:[(0,t.jsx)("span",{className:"text-[12px] text-gray-300",children:"消息免打扰"}),(0,t.jsx)("span",{className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${s?"bg-cyan-600":"bg-[#2a2a30]"}`,children:(0,t.jsx)("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${s?"translate-x-4.5":"translate-x-0.5"}`,style:{transform:s?"translateX(18px)":"translateX(2px)"}})})]}),(0,t.jsx)("p",{className:"mt-1.5 text-[10px] text-gray-600",children:"置顶=列表最前;静音=未读只显红点、不计入全局数字(均存本浏览器)"})]})}function y({alias:e}){let s=(0,a.useAvatarUrl)(e),[i,l]=(0,r.useState)(s);(0,r.useEffect)(()=>{l(s)},[s]);let o=i.trim()!==s;return(0,t.jsxs)("section",{children:[(0,t.jsx)(f,{children:"头像"}),(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)(n.AliasAvatar,{alias:e,size:44}),(0,t.jsxs)("div",{className:"flex-1 space-y-1.5",children:[(0,t.jsx)("input",{type:"url",value:i,onChange:e=>l(e.target.value),placeholder:"图片 URL(留空恢复默认)",className:"w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-2.5 py-1.5 text-[12px] text-gray-200 focus:border-cyan-600 focus:outline-none"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("button",{type:"button",disabled:!o,onClick:()=>(0,a.setAvatarUrl)(e,i),className:"rounded-md border border-cyan-600/40 bg-cyan-600/15 px-2.5 py-1 text-[11px] text-cyan-300 hover:bg-cyan-600/25 disabled:opacity-40",children:"保存"}),s&&(0,t.jsx)("button",{type:"button",onClick:()=>{(0,a.setAvatarUrl)(e,""),l("")},className:"rounded-md border border-[#26262b] px-2.5 py-1 text-[11px] text-gray-400 hover:text-gray-200",children:"恢复默认"}),(0,t.jsx)("span",{className:"text-[10px] text-gray-600",children:"存本浏览器;跨设备同步待 hub 支持"})]})]})]})]})}function g({label:e,value:s}){return(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3 px-3 py-1.5 text-[12px]",children:[(0,t.jsx)("span",{className:"text-gray-500 shrink-0",children:e}),(0,t.jsx)("span",{className:"text-gray-300 truncate font-mono text-[11px]",title:s,children:s})]})}function j({label:e,value:s}){return(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-[11px] text-gray-500",children:e}),(0,t.jsx)("input",{type:"text",disabled:!0,readOnly:!0,value:s??"",placeholder:"未配置",className:"mt-0.5 w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-2.5 py-1.5 text-[12px] text-gray-300 cursor-not-allowed disabled:opacity-100"})]})}function v({label:e,checked:s,onChange:r,disabled:n}){return(0,t.jsxs)("button",{type:"button",role:"switch","aria-checked":s,disabled:n,onClick:()=>r(!s),className:`flex w-full items-center justify-between rounded-lg border border-[#26262b] bg-[#161618] px-3 py-2 text-sm text-gray-300 transition-colors ${n?"cursor-not-allowed opacity-60":"hover:bg-[#1c1c1f]"}`,children:[(0,t.jsx)("span",{className:"text-left pr-3",children:e}),(0,t.jsx)("span",{className:`relative inline-block h-5 w-9 shrink-0 rounded-full transition-colors ${s?"bg-cyan-600":"bg-[#2a2a30]"}`,children:(0,t.jsx)("span",{className:`absolute top-0.5 h-4 w-4 rounded-full bg-white transition-all ${s?"left-[18px]":"left-0.5"}`})})]})}function w({label:e,value:s,options:r,onChange:n}){return(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-[11px] text-gray-500",children:e}),(0,t.jsx)("select",{value:s,onChange:e=>n(e.target.value),className:"mt-0.5 w-full appearance-none rounded-md border border-[#26262b] bg-[#161618] px-2.5 py-1.5 text-[12px] text-gray-200 hover:border-[#3a3a42] focus:border-cyan-600 focus:outline-none",children:r.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]})}function _({label:e,value:s,onChange:r,placeholder:n}){return(0,t.jsxs)("label",{className:"block",children:[(0,t.jsx)("span",{className:"text-[11px] text-gray-500",children:e}),(0,t.jsx)("input",{type:"number",inputMode:"numeric",value:s,placeholder:n??"默认",onChange:e=>r(e.target.value),className:"mt-0.5 w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-2.5 py-1.5 text-[12px] text-gray-200 focus:border-cyan-600 focus:outline-none"})]})}e.s(["NodeSettingsPanel",0,function({session:e,onClose:a,positioning:i="fixed"}){let l,k,N,S,C,R=e.runtime||"—",$=e.model||e.agent||"",E=/minimax-m3|claude/i.test($),T=Array.from(new Set([$,...d[R]||[]].filter(Boolean))),z=e.node_id||e.alias,[F,A]=(0,r.useState)($),[P,M]=(0,r.useState)(x),[L,O]=(0,r.useState)(()=>h(e.channels)),[I,B]=(0,r.useState)(!1),[U,H]=(0,r.useState)(!0),J=(0,r.useRef)(null),D=(0,r.useRef)($),W=(0,r.useRef)(x),q=(0,r.useRef)(h(e.channels)),[X,K]=(0,r.useState)(!0),[G,V]=(0,r.useState)(!1),[Q,Y]=(0,r.useState)("idle"),[Z,ee]=(0,r.useState)(""),[et,es]=(0,r.useState)(!1),[er,en]=(0,r.useState)(!1),[ea,ei]=(0,r.useState)(null),el=(0,o.useLifecycleCaps)(),[eo,ed]=(0,r.useState)(""),[ec,eu]=(0,r.useState)(null),ex=(0,r.useRef)([]),em=(0,r.useCallback)(()=>{ex.current.forEach(clearTimeout),ex.current=[]},[]),eh=(0,r.useCallback)((e,t)=>{ex.current.push(setTimeout(t,e))},[]),ep=(0,r.useRef)(!0);(0,r.useEffect)(()=>(ep.current=!0,()=>{ep.current=!1,em()}),[em]);let ef=(0,r.useRef)(0),eb=(0,r.useRef)(!1),ey=(0,r.useCallback)(e=>ep.current&&e===ef.current,[]),eg=(0,r.useCallback)((e,t)=>{ey(e)&&!eb.current&&(eb.current=!0,t())},[ey]),ej=(0,r.useCallback)((e,t)=>{M(s=>({...s,[e]:t})),B(!0)},[]),ev=(0,r.useCallback)(e=>{O(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s}),B(!0)},[]),ew=(0,r.useCallback)(e=>{let t=e?.model?String(e.model):$,s=e?.flags&&"object"==typeof e.flags?e.flags:{},r={permissionMode:"string"==typeof s.permissionMode&&c.includes(s.permissionMode)?s.permissionMode:x.permissionMode,dangerouslySkipPermissions:!!s.dangerouslySkipPermissions,maxTurns:p(s.maxTurns),budget:p(s.budget),timeout:p(s.timeout)};if(A(t),D.current=t,M(r),W.current=r,Array.isArray(e?.channels)){let t=new Set(e.channels.filter(e=>"string"==typeof e).map(e=>e.trim().toLowerCase()));O(t),q.current=t}"number"==typeof e?.config_revision&&(J.current=e.config_revision),"boolean"==typeof e?.config_update_capable&&K(e.config_update_capable),B(!1)},[$]);(0,r.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch(`/api/anet/node-config?node_id=${encodeURIComponent(z)}`,{cache:"no-store"}),s=await t.json().catch(()=>({}));if(e||!ep.current)return;(s?.ok===!1||s?.mock||"number"!=typeof s?.config_revision)&&V(!0),ew(s)}catch{!e&&ep.current&&V(!0)}finally{!e&&ep.current&&H(!1)}})(),()=>{e=!0}},[z,ew]);let e_=(0,r.useCallback)(e=>{eg(e,()=>{Y("applied"),ee("配置已生效"),eh(4e3,()=>{ey(e)&&Y(e=>"applied"===e?"idle":e)})})},[eh,ey,eg]),ek=(0,r.useCallback)(e=>{eg(e,()=>{Y("timeout"),ee("未在 30s 内确认生效,请稍后在节点详情核对")})},[eg]);async function eN(){if(!er&&window.confirm(`重启节点「${e.alias}」?当前会话会中断,节点将以现有配置重新启动。`)){en(!0),ei({tone:"info",text:"重启指令下发中…"});try{let t=await fetch("/api/anet/node-lifecycle",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({node_id:z,action:"restart",...e.network_id?{network_id:e.network_id}:{}})}),s=await t.json().catch(()=>({}));if(!ep.current)return;t.ok&&s?.ok?ei({tone:"ok",text:"重启已下发,节点正在重启生效中…"}):s?.unconfirmed?ei({tone:"warn",text:`后端工具未上线:${s?.error||"restart_node 不可用"}`}):ei({tone:"err",text:s?.error?`重启失败:${s.error}`:"重启失败"})}catch(e){ep.current&&ei({tone:"err",text:`重启失败:${e instanceof Error?e.message:"网络错误"}`})}finally{ep.current&&en(!1)}}}let eS="absolute"===i;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{onClick:a,"aria-hidden":!0,className:"jsx-13fd43da022ce02a "+((eS?"absolute inset-0 bg-black/40 z-40":"fixed inset-0 bg-black/40 z-40")||"")}),(0,t.jsxs)("div",{role:"dialog","aria-label":`${e.alias} 节点设置`,className:"jsx-13fd43da022ce02a "+((eS?"absolute top-0 right-0 h-full w-full sm:w-[360px] max-w-[360px] bg-[#0f0f11] border-l border-[#26262b] z-50 flex flex-col animate-slide-in":"fixed top-0 right-0 h-[100dvh] w-full sm:w-[440px] bg-[#0f0f11] border-l border-[#26262b] z-50 flex flex-col shadow-2xl shadow-black/60 animate-slide-in")||""),children:[(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a flex items-center gap-2.5 px-4 py-3 border-b border-[#26262b]",children:[(0,t.jsx)(n.AliasAvatar,{alias:e.alias,size:26}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a min-w-0 flex-1",children:[(0,t.jsx)("div",{title:e.alias,className:"jsx-13fd43da022ce02a text-sm font-semibold text-white truncate",children:e.alias}),(0,t.jsx)("div",{className:"jsx-13fd43da022ce02a text-[11px] text-gray-500",children:"节点设置"})]}),(0,t.jsx)("button",{onClick:a,"aria-label":"关闭设置",className:"jsx-13fd43da022ce02a inline-flex h-9 w-9 items-center justify-center text-gray-500 hover:text-white rounded-md hover:bg-white/5",children:(0,t.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,className:"jsx-13fd43da022ce02a w-4 h-4",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12",className:"jsx-13fd43da022ce02a"})})})]}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a flex-1 overflow-y-auto px-4 py-4 space-y-5",children:[(0,t.jsxs)("section",{className:"jsx-13fd43da022ce02a",children:[(0,t.jsx)(f,{children:"基础信息"}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a rounded-lg border border-[#26262b] bg-[#161618] divide-y divide-[#1c1c1f]",children:[(0,t.jsx)(g,{label:"别名",value:e.alias}),(0,t.jsx)(g,{label:"node_id",value:e.node_id||"—"}),(0,t.jsx)(g,{label:"所属 network",value:e.network_id||"—"}),(0,t.jsx)(g,{label:"当前 session",value:e.session_id||"—"}),(0,t.jsx)(g,{label:"在线状态",value:e.status||"—"})]})]}),(0,t.jsx)(y,{alias:e.alias}),(0,t.jsx)(b,{alias:e.alias}),(0,t.jsxs)("section",{className:"jsx-13fd43da022ce02a",children:[(0,t.jsx)(f,{children:"Runtime · 模型"}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a space-y-2.5",children:[(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a",children:[(0,t.jsx)("span",{className:"jsx-13fd43da022ce02a text-[11px] text-gray-500",children:"Runtime(只读)"}),(0,t.jsx)("div",{className:"jsx-13fd43da022ce02a mt-0.5 rounded-md border border-[#26262b] bg-[#0e0e10] px-2.5 py-1.5 text-[12px] text-gray-400 font-mono",children:R})]}),T.length>1?(0,t.jsx)(w,{label:"模型 / Preset",value:F,options:T,onChange:e=>{A(e),B(!0)}}):(0,t.jsxs)("label",{className:"jsx-13fd43da022ce02a block",children:[(0,t.jsx)("span",{className:"jsx-13fd43da022ce02a text-[11px] text-gray-500",children:"模型 / Preset"}),(0,t.jsx)("input",{type:"text",value:F,onChange:e=>{A(e.target.value),B(!0)},placeholder:"未配置",className:"jsx-13fd43da022ce02a mt-0.5 w-full rounded-md border border-[#26262b] bg-[#0e0e10] px-2.5 py-1.5 text-[12px] text-gray-200 focus:border-cyan-600 focus:outline-none"})]}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a flex items-center gap-2 text-[11px] text-gray-500",children:[(0,t.jsx)("span",{className:"jsx-13fd43da022ce02a",children:"图片能力 (imageCapable)"}),(0,t.jsxs)("span",{className:`jsx-13fd43da022ce02a px-1.5 py-0.5 rounded ${E?"bg-green-900/30 text-green-300":"bg-[#2a2a30] text-gray-400"}`,children:[E?"支持":"不支持"," · 只读"]})]})]})]}),(0,t.jsxs)("section",{className:"jsx-13fd43da022ce02a",children:[(0,t.jsx)(f,{children:"运行模式 · flags"}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a space-y-2",children:[(0,t.jsx)(w,{label:"权限模式 permissionMode",value:P.permissionMode,options:c,onChange:e=>ej("permissionMode",e)}),(0,t.jsx)(v,{label:"跳过权限确认 dangerouslySkipPermissions",checked:P.dangerouslySkipPermissions,onChange:e=>ej("dangerouslySkipPermissions",e)}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a grid grid-cols-3 gap-2 pt-0.5",children:[(0,t.jsx)(_,{label:"maxTurns",value:P.maxTurns,onChange:e=>ej("maxTurns",e)}),(0,t.jsx)(_,{label:"budget",value:P.budget,onChange:e=>ej("budget",e)}),(0,t.jsx)(_,{label:"timeout(s)",value:P.timeout,onChange:e=>ej("timeout",e)})]})]})]}),(0,t.jsxs)("section",{className:"jsx-13fd43da022ce02a",children:[(l="saving"===Q||"applying"===Q,k=U||l||!I||G,N="saving"===Q?"保存中…":"applying"===Q?"应用中…":U?"加载中…":G?"配置不可读":I?"保存设置":"无改动",(0,t.jsxs)("button",{type:"button",onClick:function(){em();let t=++ef.current;eb.current=!1,eu(null);let s=function(){let e={};F!==D.current&&(e.model=F);let t=W.current,s={};for(let e of(P.permissionMode!==t.permissionMode&&(s.permissionMode=P.permissionMode),P.dangerouslySkipPermissions!==t.dangerouslySkipPermissions&&(s.dangerouslySkipPermissions=P.dangerouslySkipPermissions),["maxTurns","budget","timeout"])){let r=P[e].trim();r!==t[e].trim()&&""!==r&&(s[e]=Number(r))}Object.keys(s).length>0&&(e.flags=s);let r=q.current,n=Array.from(L).sort(),a=Array.from(r).sort();return(n.length!==a.length||n.some((e,t)=>e!==a[t]))&&(e.channels=n),e}();if(void 0===s.model&&!s.flags&&!s.channels){Y("idle"),ee(""),B(!1);return}let r=J.current;if("number"!=typeof r){eb.current=!0,Y("error"),ee("无法读取节点配置版本,Hub 可能不可达");return}Y("saving"),ee(""),es(!1);let n=e=>{eh(1500,async()=>{if(!ey(t)||eb.current)return;let s=null;try{let{data:e}=await m(`/api/anet/node-config?node_id=${encodeURIComponent(z)}`,{cache:"no-store"},8e3);"number"==typeof e?.config_revision&&(s=e)}catch{}if(ey(t)&&!eb.current){if(s&&s.config_revision>r){ew(s),e_(t);return}if(Date.now()-e>=3e4)return void ek(t);n(e)}})};(async()=>{let a={};try{let n=await m("/api/anet/node-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({node_id:z,base_revision:r,...e.network_id?{network_id:e.network_id}:{},...s})},8e3);if(!ey(t))return;if(a=n.data,!n.res.ok||a?.ok===!1){if(eb.current=!0,Y("error"),ee(function(e){let t=String(e?.error||"");switch(t){case"revision_conflict":return"他人已修改该节点,已为你刷新最新值,请重试";case"insufficient_role_for_security_flag":return`需要 admin 权限才能修改 ${e?.field||"该安全项"}`;case"invalid_patch":return`字段非法:${e?.field||""}${e?.reason?` (${e.reason})`:""}`;case"update_in_flight":{let t=Math.max(1,Math.ceil((6e4-("number"==typeof e?.age_ms?e.age_ms:0))/1e3));return`上一次改动正在生效,约 ${t}s 后可再改`}case"cross_network_node":return"无权限:该节点不在你的 network";case"node_not_found":return"节点不存在";case"empty_patch":return"无改动";case"hub_unreachable":return"Hub 不可达,请稍后重试";default:return t?`保存失败:${t}`:"保存失败"}}(a)),a?.error==="revision_conflict")try{let e=await fetch(`/api/anet/node-config?node_id=${encodeURIComponent(z)}`,{cache:"no-store"}),t=await e.json().catch(()=>({}));ep.current&&"number"==typeof t?.config_revision&&ew(t)}catch{}return}}catch(e){if(!ey(t))return;eb.current=!0,Y("error"),ee(e instanceof DOMException&&"AbortError"===e.name?"保存超时,请重试":e instanceof Error?`保存失败:${e.message}`:"保存失败");return}B(!1),eu("string"==typeof a.apply_mode?a.apply_mode:null),Y("applying"),eh(3e4,()=>ek(t)),n(Date.now())})()},disabled:k,className:`jsx-13fd43da022ce02a flex w-full items-center justify-center gap-2 rounded-lg px-3 py-2.5 text-sm font-medium transition-colors ${k?"bg-[#1c1c1f] text-gray-600 cursor-not-allowed":"bg-cyan-600 text-white hover:bg-cyan-500"}`,children:[l&&(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":!0,className:"jsx-13fd43da022ce02a h-4 w-4 animate-spin",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4",className:"jsx-13fd43da022ce02a opacity-25"}),(0,t.jsx)("path",{fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z",className:"jsx-13fd43da022ce02a opacity-90"})]}),N]})),"idle"!==Q&&(S=({saving:{tone:"border-[#26262b] bg-[#161618] text-gray-300",icon:"·",text:"正在提交配置…"},applying:{tone:"border-cyan-800/50 bg-cyan-900/15 text-cyan-300",icon:"↻",text:"hot"===ec?"已下发,正在热应用…":"restart"===ec||"restart_only"===ec?"已下发,节点重启生效中…":"已下发,正在应用…"},applied:{tone:"border-green-800/50 bg-green-900/15 text-green-300",icon:"✓",text:Z||"配置已生效"},rejected:{tone:"border-red-800/50 bg-red-900/15 text-red-300",icon:"✗",text:Z||"应用被拒绝"},timeout:{tone:"border-amber-700/50 bg-amber-900/15 text-amber-300",icon:"⚠",text:Z||"应用超时未确认"},error:{tone:"border-red-800/50 bg-red-900/15 text-red-300",icon:"✗",text:Z||"保存失败"}})[Q],(0,t.jsxs)("div",{role:"status","aria-live":"polite",className:`jsx-13fd43da022ce02a mt-2 flex items-start gap-2 rounded-lg border px-3 py-2 text-[12px] ${S.tone}`,children:[(0,t.jsx)("span",{"aria-hidden":!0,className:`jsx-13fd43da022ce02a shrink-0 leading-5 ${"applying"===Q?"inline-block animate-spin":""}`,children:S.icon}),(0,t.jsx)("span",{className:"jsx-13fd43da022ce02a",children:S.text})]})),G&&(0,t.jsx)("p",{className:"jsx-13fd43da022ce02a mt-1 text-[10px] text-amber-300/80",children:"无法读取该节点的配置快照(Hub 不可达或节点离线),暂不能保存。"}),!G&&!X&&(0,t.jsx)("p",{className:"jsx-13fd43da022ce02a mt-1 text-[10px] text-gray-600",children:"该节点未在 W1 supervisor 下运行,重启类改动可能不生效。"})]}),(0,t.jsxs)("section",{className:"jsx-13fd43da022ce02a",children:[(0,t.jsx)(f,{children:"接入 Channel"}),(0,t.jsx)("div",{className:"jsx-13fd43da022ce02a space-y-2",children:u.map(e=>{let s=L.has(e.key),r=!e.roadmap&&!U;return(0,t.jsxs)("div",{className:`jsx-13fd43da022ce02a rounded-lg border border-[#26262b] bg-[#161618] ${e.roadmap?"opacity-50":""}`,children:[(0,t.jsxs)("label",{className:`jsx-13fd43da022ce02a flex items-center justify-between px-3 py-2 text-sm text-gray-300 ${r?"cursor-pointer hover:bg-[#1a1a1d]":"cursor-not-allowed"}`,children:[(0,t.jsxs)("span",{className:"jsx-13fd43da022ce02a flex items-center gap-2",children:[e.label,e.roadmap&&(0,t.jsx)("span",{className:"jsx-13fd43da022ce02a text-[10px] px-1.5 py-0.5 rounded bg-[#2a2a30] text-gray-400",children:"即将支持"})]}),(0,t.jsx)("input",{type:"checkbox",checked:!e.roadmap&&s,onChange:r?()=>ev(e.key):void 0,disabled:!r,"aria-label":`${r?"启用/关闭":"(暂不可切换)"} ${e.label}`,className:`jsx-13fd43da022ce02a h-4 w-4 accent-cyan-500 ${r?"":"cursor-not-allowed"}`})]}),!e.roadmap&&s&&e.fields.length>0&&(0,t.jsx)("div",{className:"jsx-13fd43da022ce02a px-3 pb-3 pt-1 space-y-2 border-t border-[#1c1c1f]",children:e.fields.map(e=>(0,t.jsx)(j,{label:e.label,value:e.value},e.label))})]},e.key)})}),(0,t.jsx)("p",{className:"jsx-13fd43da022ce02a mt-2 text-[11px] text-gray-600",children:"勾选启用/关闭该 Channel;per-channel 的 token / secret / allowFrom 仍保存在节点本地 config.json,不在此处编辑。"})]}),(0,t.jsxs)("section",{className:"jsx-13fd43da022ce02a",children:[(0,t.jsx)(f,{children:"节点操作"}),(0,t.jsxs)("button",{type:"button",onClick:eN,disabled:er,className:`jsx-13fd43da022ce02a flex w-full items-center justify-center gap-2 rounded-lg border px-3 py-2.5 text-[13px] font-medium transition-colors ${er?"border-[#26262b] bg-[#1c1c1f] text-gray-600 cursor-not-allowed":"border-amber-700/50 bg-amber-900/15 text-amber-300 hover:bg-amber-900/25"}`,children:[er&&(0,t.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":!0,className:"jsx-13fd43da022ce02a h-4 w-4 animate-spin",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4",className:"jsx-13fd43da022ce02a opacity-25"}),(0,t.jsx)("path",{fill:"currentColor",d:"M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z",className:"jsx-13fd43da022ce02a opacity-90"})]}),"重启节点"]}),ea&&(C="ok"===ea.tone?"border-green-800/50 bg-green-900/15 text-green-300":"warn"===ea.tone?"border-amber-700/50 bg-amber-900/15 text-amber-300":"err"===ea.tone?"border-red-800/50 bg-red-900/15 text-red-300":"border-[#26262b] bg-[#161618] text-gray-300",(0,t.jsx)("div",{role:"status","aria-live":"polite",className:`jsx-13fd43da022ce02a mt-2 rounded-lg border px-3 py-2 text-[12px] ${C}`,children:ea.text})),el?.rename&&(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a mt-3",children:[(0,t.jsx)("span",{className:"jsx-13fd43da022ce02a text-[11px] text-gray-500",children:"重命名节点(RFC-010,全网别名同步更新)"}),(0,t.jsxs)("div",{className:"jsx-13fd43da022ce02a mt-1 flex gap-2",children:[(0,t.jsx)("input",{type:"text",value:eo,onChange:e=>ed(e.target.value),placeholder:e.alias,disabled:er,className:"jsx-13fd43da022ce02a min-w-0 flex-1 rounded-md border border-[#26262b] bg-[#0e0e10] px-2.5 py-1.5 text-[12px] text-gray-200 placeholder:text-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,t.jsx)("button",{type:"button",disabled:er||!eo.trim()||eo.trim()===e.alias,onClick:async()=>{let t=eo.trim();if(t&&t!==e.alias){en(!0),ei({tone:"info",text:`重命名中 → ${t}…`});try{let s=await fetch("/api/anet/node-lifecycle",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({node_id:z,action:"rename",new_name:t,...e.network_id?{network_id:e.network_id}:{}})}),r=await s.json().catch(()=>({}));s.ok&&r?.ok!==!1?(ei({tone:"ok",text:`已重命名为「${t}」— 各界面将随 node.renamed 事件自动更新`}),ed("")):ei({tone:"err",text:r?.unconfirmed?"当前 hub 尚未支持重命名(工具未部署)":`重命名失败:${r?.error||s.status}`})}catch(e){ei({tone:"err",text:`重命名失败:${e instanceof Error?e.message:String(e)}`})}finally{en(!1)}}},className:"jsx-13fd43da022ce02a shrink-0 rounded-md border border-cyan-700/50 bg-cyan-900/20 px-3 py-1.5 text-[12px] text-cyan-300 transition-colors hover:bg-cyan-900/35 disabled:cursor-not-allowed disabled:border-[#26262b] disabled:bg-[#1c1c1f] disabled:text-gray-600",children:"重命名"})]})]}),(0,t.jsxs)("p",{className:"jsx-13fd43da022ce02a mt-2 text-[11px] text-gray-600",children:["停止 / 删除请在节点列表的 ⋮ 菜单操作",el?.rename?"":";重命名功能即将在此提供","。"]})]})]})]}),(0,t.jsx)(s.default,{id:"13fd43da022ce02a",children:"@keyframes node-settings-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.animate-slide-in{animation:.2s ease-out node-settings-slide-in}"})]})}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,91342,e=>{"use strict";var t=e.i(25599);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)??"--"}])},57835,97879,e=>{"use strict";var t=e.i(90724),r=e.i(87854);let n="anet_avatars_v1",a="anet-avatars-updated",s=null,i=[],l=!1;function o(){try{let e=JSON.parse(window.localStorage.getItem(n)||"{}");return e&&"object"==typeof e?e:{}}catch{return{}}}function c(e){return e&&(o()[e]||s?.[e]||function(e){if(!i.length)return"";let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r)>>>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[r,n]of Object.entries(e))!r.startsWith("_")&&"string"==typeof n&&n.startsWith("/")&&(t[r]=n);let r=e._pool;i=Array.isArray(r)?r.filter(e=>"string"==typeof e&&e.startsWith("/")):[],s=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 h(e){return(0,r.useSyncExternalStore)(x,()=>c(e),()=>"")}e.s(["getAvatarUrl",0,c,"setAvatarUrl",0,function(e,t){if(e)try{let r=o();t.trim()?r[e]=t.trim():delete r[e],window.localStorage.setItem(n,JSON.stringify(r)),window.dispatchEvent(new Event(a))}catch{}},"useAvatarUrl",0,h,"useAvatarsVersion",0,function(){return(0,r.useSyncExternalStore)(x,()=>d,()=>0)}],97879);let u=[180,200,220,270,300,330,30,90];function g(e){let t=0;for(let r=0;r<e.length;r++)t=31*t+e.charCodeAt(r)>>>0;let r=u[t%u.length];return{bg:`hsl(${r} 55% 22%)`,ring:`hsl(${r} 60% 45%)`,text:`hsl(${r} 80% 78%)`}}function y(e){return e?(e.trim().match(/[\p{L}\p{N}]/u)?.[0]||e.trim()[0]||"·").toUpperCase():"·"}e.s(["AliasAvatar",0,function({alias:e,size:n=28,className:a=""}){let s=h(e),[i,l]=(0,r.useState)("loading"),[o,c]=(0,r.useState)(s);if(s!==o&&(c(s),l("loading")),s&&"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:n,height:n},title:e,"aria-hidden":!0,children:(0,t.jsx)("img",{src:s,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:n,height:n,backgroundImage:"url(/vendors/grok.svg)",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"68% 68%"},title:e,"aria-hidden":!0});let d=g(e),x=Math.max(9,Math.round(.42*n));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:n,height:n,fontSize:x,backgroundColor:d.bg,borderColor:d.ring,color:d.text},title:e,"aria-hidden":!0,children:y(e)})},"aliasAvatarColors",0,g,"aliasInitial",0,y],57835)},3068,e=>{"use strict";var t=e.i(90724),r=e.i(87854),n=e.i(60449);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 s({variant:e,size:r}){let n={width:r,height:r},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",...n,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",...n,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",...n,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",...n,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",...n,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",...n,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",...n,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:r,sub:l,cta:o,compact:c=!1}){let d=a[e],x=r??d.title,h=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)(s,{variant:e,size:c?40:56})}),(0,t.jsx)("h3",{className:`font-medium text-gray-300 ${c?"text-sm":"text-base"}`,children:x}),h&&(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:h}),o&&(0,t.jsx)("div",{className:"mt-4",children:o.href?(0,t.jsxs)(n.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[n,a]=(0,r.useState)(!1),s=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:s,"aria-label":n?"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:n?(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:r=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.`})}):r>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. ${r.toLocaleString()} task${1===r?"":"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:"→"})]})})]})})}])},90991,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"]])},99825,519,e=>{"use strict";var t=e.i(87854);let r=null,n=!1,a=new Set,s=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(r||n||(n=!0,e.A(83927).then(e=>{r=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(()=>{n=!1})),!r)return!1;let o=s.get(t);return o||(o=r(t),s.set(t,o)),o[0].includes(l)||o[1].includes(l)},"usePinyinReady",0,function(){return(0,t.useSyncExternalStore)(i,()=>!!r,()=>!1)}],99825),e.s(["t",0,function(e,t){return"u">typeof navigator&&(navigator.language||"").toLowerCase().startsWith("zh")?e:t}],519)},45840,e=>{"use strict";var t=e.i(90724),r=e.i(87854);let n=new Set(["png","jpg","jpeg","gif","webp","mp4","webm","mov"]),a=new Set(["image/png","image/jpeg","image/gif","image/webp"]),s=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 r=t.headers.get("x-verified-type"),n=r&&(a.has(r)||s.has(r))?r:null,i=await t.blob(),l=n?new Blob([i],{type:n}):i;return{blobUrl:URL.createObjectURL(l),verifiedType:n,blob:l}}function o(e){let t=e.lastIndexOf(".");return t>=0?e.slice(t+1).toLowerCase():""}function c({fileId:e,name:n,size:s,onNotInlineable:i}){let o="number"==typeof s&&s<=5242880,[d,x]=(0,r.useState)(null),[h,u]=(0,r.useState)(!1),[g,y]=(0,r.useState)(!1),m=(0,r.useRef)(i);m.current=i;let p=(0,r.useCallback)(async()=>{if(!h&&!d){u(!0);try{let{blobUrl:t,verifiedType:r}=await l(e);if(!r||!a.has(r)){URL.revokeObjectURL(t),m.current();return}x(t)}catch{y(!0)}finally{u(!1)}}},[e,h,d]);return((0,r.useEffect)(()=>{o&&p()},[o,p]),(0,r.useEffect)(()=>{if(d)return()=>URL.revokeObjectURL(d)},[d]),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:"图片加载失败 · 请点击下方下载按钮查看"}):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:n,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:p,disabled:h,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:n}),(0,t.jsx)("span",{className:"shrink-0 text-xs text-cyan-300",children:h?"加载中…":"点击查看"})]})}function d({fileId:e,name:n,onNotInlineable:a}){let[i,o]=(0,r.useState)(null),[c,x]=(0,r.useState)(!1),[h,u]=(0,r.useState)(!1),g=(0,r.useRef)(a);g.current=a;let y=(0,r.useCallback)(async()=>{if(!c&&!i){x(!0);try{let{blobUrl:t,verifiedType:r}=await l(e);if(!r||!s.has(r)){URL.revokeObjectURL(t),g.current();return}o(t)}catch{u(!0)}finally{x(!1)}}},[e,c,i]);return((0,r.useEffect)(()=>{if(i)return()=>URL.revokeObjectURL(i)},[i]),h)?(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:y,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:n}),(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 h,u,[g,y]=(0,r.useState)(!1),[m,p]=(0,r.useState)(null),[b,f]=(0,r.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),w="string"!=typeof(l=e.mime)?"":l.replace(/[^a-zA-Z0-9./+-]/g,"").slice(0,100),v="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=(h=(w||"").toLowerCase(),u=(j.split(".").pop()||"").toLowerCase(),h.startsWith("image/")?"🖼️":h.startsWith("video/")?"🎬":h.startsWith("audio/")?"🎵":h.includes("pdf")||"pdf"===u?"📄":["ppt","pptx"].includes(u)?"📊":["doc","docx"].includes(u)?"📝":["xls","xlsx","csv"].includes(u)?"📈":["zip","tar","gz","rar","7z"].includes(u)?"📦":"📎"),N="string"==typeof e.file_id&&i.test(e.file_id),S=N&&!b&&function(e,t){if(a.has(t)||s.has(t))return!0;let r=o(e);return""!==r&&n.has(r)}(j,w),C=o(j),L=S?s.has(w)||["mp4","webm","mov"].includes(C)?"video":"image":null;async function A(){if(!N||!e.file_id)return;p(null),y(!0);let t=null;try{let r=await fetch(`/api/hub/files/${encodeURIComponent(e.file_id)}`,{credentials:"include"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=await r.blob();t=URL.createObjectURL(n);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){p(e instanceof Error?e.message:String(e))}finally{t&&URL.revokeObjectURL(t),y(!1)}}return N?(0,t.jsxs)("div",{className:"mt-2 flex flex-col",children:["image"===L&&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"===L&&e.file_id&&(0,t.jsx)(d,{fileId:e.file_id,name:j,onNotInlineable:()=>f(!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 ${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}),v&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-400",children:v}),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:k}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:j}),v&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-neutral-500",children:v}),(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 r=t.attachments;return Array.isArray(r)?r.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})):[]}])},54258,e=>{"use strict";var t=e.i(90724),r=e.i(87854);e.s(["useCollapsibleSearch",0,function(e){let{value:n}=e,[a,s]=(0,r.useState)(!1),i=(0,r.useRef)(e);i.current=e;let l=(0,r.useRef)(a);l.current=a;let o=(0,r.useCallback)(()=>{i.current.onChange(""),s(!1)},[]),[c]=(0,r.useState)(()=>({Button:()=>{let{value:e,label:r="Search",enabled:n=!0}=i.current,a=l.current;if(!n)return(0,t.jsx)(t.Fragment,{});let o=a||e;return(0,t.jsxs)("button",{type:"button",onClick:()=>s(e=>!e),"aria-label":a?`Close ${r.toLowerCase()}`:`Open ${r.toLowerCase()}`,"aria-pressed":a,title:a?`Close ${r.toLowerCase()}`:r,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:r,placeholder:n="Search…",enabled:a=!0}=i.current,s=l.current;return a&&(s||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=>r(e.target.value),onKeyDown:e=>{"Escape"===e.key&&o()},placeholder:n,autoFocus:s,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:n,reset:o}}])},1734,e=>{"use strict";var t=e.i(90724),r=e.i(35599);e.s(["default",0,function(){return(0,t.jsx)(r.NodesView,{})}])},83927,e=>{e.v(t=>Promise.all(["static/chunks/0u848pnoyh8zz.js"].map(t=>e.l(t))).then(()=>t(46496)))}]);
|