@sleep2agi/agent-network-dashboard 0.6.3-preview.20 → 0.6.3-preview.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/diagnostics/route-bundle-stats.json +9 -9
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +2 -2
  15. package/.next/server/app/_not-found.rsc +2 -2
  16. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/admin.html +2 -2
  24. package/.next/server/app/admin.rsc +2 -2
  25. package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
  26. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  28. package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  29. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  30. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  31. package/.next/server/app/index.html +2 -2
  32. package/.next/server/app/index.rsc +3 -3
  33. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  34. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  35. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  36. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  37. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  38. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/login.html +2 -2
  40. package/.next/server/app/login.rsc +3 -3
  41. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  42. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  43. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  44. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  45. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  46. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  47. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/logs.html +2 -2
  49. package/.next/server/app/logs.rsc +2 -2
  50. package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
  51. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  52. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  53. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  54. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  55. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  56. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/messages.html +2 -2
  58. package/.next/server/app/messages.rsc +2 -2
  59. package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
  60. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
  62. package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
  63. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  64. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  65. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app/node.html +2 -2
  67. package/.next/server/app/node.rsc +3 -3
  68. package/.next/server/app/node.segments/_full.segment.rsc +3 -3
  69. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  70. package/.next/server/app/node.segments/_index.segment.rsc +2 -2
  71. package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
  72. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +2 -2
  73. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  74. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/nodes.html +2 -2
  76. package/.next/server/app/nodes.rsc +3 -3
  77. package/.next/server/app/nodes.segments/_full.segment.rsc +3 -3
  78. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  79. package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
  80. package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
  81. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +2 -2
  82. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  83. package/.next/server/app/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/providers/page_client-reference-manifest.js +1 -1
  85. package/.next/server/app/providers.html +2 -2
  86. package/.next/server/app/providers.rsc +2 -2
  87. package/.next/server/app/providers.segments/_full.segment.rsc +2 -2
  88. package/.next/server/app/providers.segments/_head.segment.rsc +1 -1
  89. package/.next/server/app/providers.segments/_index.segment.rsc +2 -2
  90. package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
  91. package/.next/server/app/providers.segments/providers/__PAGE__.segment.rsc +1 -1
  92. package/.next/server/app/providers.segments/providers.segment.rsc +1 -1
  93. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/server-logs.html +2 -2
  95. package/.next/server/app/server-logs.rsc +2 -2
  96. package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
  97. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  98. package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
  99. package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
  100. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  101. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  102. package/.next/server/app/servers/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/servers.html +2 -2
  104. package/.next/server/app/servers.rsc +2 -2
  105. package/.next/server/app/servers.segments/_full.segment.rsc +2 -2
  106. package/.next/server/app/servers.segments/_head.segment.rsc +1 -1
  107. package/.next/server/app/servers.segments/_index.segment.rsc +2 -2
  108. package/.next/server/app/servers.segments/_tree.segment.rsc +2 -2
  109. package/.next/server/app/servers.segments/servers/__PAGE__.segment.rsc +1 -1
  110. package/.next/server/app/servers.segments/servers.segment.rsc +1 -1
  111. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/settings/networks.html +2 -2
  113. package/.next/server/app/settings/networks.rsc +2 -2
  114. package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
  115. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  116. package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
  117. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
  118. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  119. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  120. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  121. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/settings/tokens.html +2 -2
  124. package/.next/server/app/settings/tokens.rsc +2 -2
  125. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
  126. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  127. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
  128. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
  129. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  130. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  131. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  132. package/.next/server/app/settings.html +2 -2
  133. package/.next/server/app/settings.rsc +3 -3
  134. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  135. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  136. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  137. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  138. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  139. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  140. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  142. package/.next/server/app/tasks.html +2 -2
  143. package/.next/server/app/tasks.rsc +2 -2
  144. package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
  145. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  146. package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
  147. package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
  148. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  149. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  150. package/.next/server/chunks/ssr/[root-of-the-server]__091su60._.js +2 -2
  151. package/.next/server/chunks/ssr/[root-of-the-server]__091su60._.js.map +1 -1
  152. package/.next/server/chunks/ssr/[root-of-the-server]__0vc.3k7._.js +1 -1
  153. package/.next/server/chunks/ssr/[root-of-the-server]__0vc.3k7._.js.map +1 -1
  154. package/.next/server/chunks/ssr/dash-loop-wt_app_0~.1~ew._.js +1 -1
  155. package/.next/server/chunks/ssr/dash-loop-wt_app_0~.1~ew._.js.map +1 -1
  156. package/.next/server/chunks/ssr/dash-loop-wt_app_13k3-ai._.js +1 -1
  157. package/.next/server/chunks/ssr/dash-loop-wt_app_13k3-ai._.js.map +1 -1
  158. package/.next/server/middleware-build-manifest.js +3 -3
  159. package/.next/server/pages/404.html +2 -2
  160. package/.next/server/pages/500.html +1 -1
  161. package/.next/server/server-reference-manifest.js +1 -1
  162. package/.next/server/server-reference-manifest.json +1 -1
  163. package/.next/static/chunks/{13vqo73myw3fe.js → 02-g_rv~6kywl.js} +2 -2
  164. package/.next/static/chunks/{00wka73f9rki_.js → 09-3btfwxmjfe.js} +1 -1
  165. package/.next/static/chunks/{0rhjfleuyvtd8.js → 0qjbzxfgcd6_3.js} +1 -1
  166. package/.next/static/chunks/0wh6q.1qr0dmx.css +1 -0
  167. package/.next/static/chunks/{13t5k3_w2mgd4.js → 0~kjngaphakh5.js} +1 -1
  168. package/.next/trace +2 -2
  169. package/.next/trace-build +1 -1
  170. package/app/components/TaskChatPanel.tsx +90 -10
  171. package/package.json +1 -1
  172. package/.next/static/chunks/12x~60u05l-xj.css +0 -1
  173. /package/.next/static/{F09kAlh9X67Chm49jMtd_ → eAg58ZUqc0h75GPUsWy97}/_buildManifest.js +0 -0
  174. /package/.next/static/{F09kAlh9X67Chm49jMtd_ → eAg58ZUqc0h75GPUsWy97}/_clientMiddlewareManifest.js +0 -0
  175. /package/.next/static/{F09kAlh9X67Chm49jMtd_ → eAg58ZUqc0h75GPUsWy97}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,38888,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.6.3-preview.20"],38888)},71104,e=>{"use strict";var t=e.i(66239),r=e.i(91723),s=e.i(38888);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.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-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",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]})]})]})]})}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,38888,e=>{"use strict";e.s(["DASHBOARD_VERSION",0,"0.6.3-preview.21"],38888)},71104,e=>{"use strict";var t=e.i(66239),r=e.i(91723),s=e.i(38888);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.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-500 mt-1.5 leading-snug",children:"login"===e?(0,t.jsxs)(t.Fragment,{children:["Welcome back · ",(0,t.jsx)("span",{className:"text-gray-600",children:"Tasks · Mesh · Messages"})]}):(0,t.jsxs)(t.Fragment,{children:["Create your account · ",(0,t.jsx)("span",{className:"text-gray-600",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]})]})]})]})}])}]);
package/.next/trace CHANGED
@@ -1,2 +1,2 @@
1
- [{"name":"generate-buildid","duration":317,"timestamp":5788284111385,"id":4,"parentId":1,"tags":{},"startTime":1784596256358,"traceId":"ff99179654b74581"},{"name":"load-custom-routes","duration":562,"timestamp":5788284111882,"id":5,"parentId":1,"tags":{},"startTime":1784596256358,"traceId":"ff99179654b74581"},{"name":"create-dist-dir","duration":965,"timestamp":5788284112512,"id":6,"parentId":1,"tags":{},"startTime":1784596256359,"traceId":"ff99179654b74581"},{"name":"clean","duration":47053,"timestamp":5788284114235,"id":7,"parentId":1,"tags":{},"startTime":1784596256361,"traceId":"ff99179654b74581"},{"name":"discover-routes","duration":28959,"timestamp":5788284268705,"id":8,"parentId":1,"tags":{},"startTime":1784596256515,"traceId":"ff99179654b74581"},{"name":"create-root-mapping","duration":177,"timestamp":5788284297752,"id":9,"parentId":1,"tags":{},"startTime":1784596256544,"traceId":"ff99179654b74581"},{"name":"generate-route-types","duration":26882,"timestamp":5788284301768,"id":10,"parentId":1,"tags":{},"startTime":1784596256548,"traceId":"ff99179654b74581"},{"name":"public-dir-conflict-check","duration":240,"timestamp":5788284328944,"id":11,"parentId":1,"tags":{},"startTime":1784596256575,"traceId":"ff99179654b74581"},{"name":"generate-routes-manifest","duration":9221,"timestamp":5788284329637,"id":12,"parentId":1,"tags":{},"startTime":1784596256576,"traceId":"ff99179654b74581"},{"name":"run-turbopack","duration":8996895,"timestamp":5788284361787,"id":14,"parentId":1,"tags":{},"startTime":1784596256608,"traceId":"ff99179654b74581"},{"name":"turbopack-build-events","duration":100,"timestamp":5788284719557,"id":15,"parentId":1,"tags":{},"startTime":1784596256966,"traceId":"ff99179654b74581"},{"name":"run-typescript","duration":13362616,"timestamp":5788293370018,"id":16,"parentId":1,"tags":{},"startTime":1784596265616,"traceId":"ff99179654b74581"},{"name":"generate-required-server-files","duration":4058,"timestamp":5788306734396,"id":18,"parentId":1,"tags":{},"startTime":1784596278981,"traceId":"ff99179654b74581"},{"name":"check-static-error-page","duration":28193,"timestamp":5788307028417,"id":20,"parentId":19,"tags":{},"startTime":1784596279275,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":601722,"timestamp":5788307060692,"id":78,"parentId":32,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":618532,"timestamp":5788307044060,"id":32,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1784596279290,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":604147,"timestamp":5788307065194,"id":81,"parentId":35,"tags":{},"startTime":1784596279311,"traceId":"ff99179654b74581"},{"name":"check-page","duration":624886,"timestamp":5788307044542,"id":35,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":648012,"timestamp":5788307065385,"id":82,"parentId":36,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":668267,"timestamp":5788307045204,"id":36,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":669677,"timestamp":5788307065459,"id":83,"parentId":37,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":689783,"timestamp":5788307045434,"id":37,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1784596279292,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":674734,"timestamp":5788307065538,"id":84,"parentId":39,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":692529,"timestamp":5788307047824,"id":39,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1784596279294,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":679665,"timestamp":5788307065605,"id":85,"parentId":40,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":697492,"timestamp":5788307047964,"id":40,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1784596279294,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":684458,"timestamp":5788307065731,"id":86,"parentId":41,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":702113,"timestamp":5788307048152,"id":41,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1784596279294,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":692344,"timestamp":5788307065764,"id":87,"parentId":42,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":709858,"timestamp":5788307048320,"id":42,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":694057,"timestamp":5788307065783,"id":88,"parentId":43,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":711496,"timestamp":5788307048414,"id":43,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":699029,"timestamp":5788307065797,"id":89,"parentId":44,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":716375,"timestamp":5788307048513,"id":44,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":703641,"timestamp":5788307065806,"id":90,"parentId":45,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":720904,"timestamp":5788307048600,"id":45,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":712471,"timestamp":5788307065819,"id":91,"parentId":46,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":729652,"timestamp":5788307048709,"id":46,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":735951,"timestamp":5788307060244,"id":75,"parentId":22,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":762800,"timestamp":5788307033529,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1784596279280,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":756306,"timestamp":5788307065833,"id":92,"parentId":48,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":773169,"timestamp":5788307049074,"id":48,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":758351,"timestamp":5788307065856,"id":94,"parentId":51,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":774557,"timestamp":5788307049708,"id":51,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":763445,"timestamp":5788307065870,"id":95,"parentId":52,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":779530,"timestamp":5788307049844,"id":52,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":767859,"timestamp":5788307065882,"id":96,"parentId":53,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":783865,"timestamp":5788307049948,"id":53,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":772511,"timestamp":5788307065892,"id":97,"parentId":54,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":788400,"timestamp":5788307050065,"id":54,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":780208,"timestamp":5788307065906,"id":98,"parentId":55,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":795990,"timestamp":5788307050202,"id":55,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":786627,"timestamp":5788307059794,"id":74,"parentId":21,"tags":{},"startTime":1784596279306,"traceId":"ff99179654b74581"},{"name":"check-page","duration":815227,"timestamp":5788307031239,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1784596279278,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":781645,"timestamp":5788307065919,"id":99,"parentId":56,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":797329,"timestamp":5788307050293,"id":56,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":789446,"timestamp":5788307065945,"id":101,"parentId":58,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":805023,"timestamp":5788307050476,"id":58,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":794560,"timestamp":5788307065957,"id":102,"parentId":61,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":809311,"timestamp":5788307051268,"id":61,"parentId":19,"tags":{"page":"/manifest.webmanifest"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":784521,"timestamp":5788307086846,"id":103,"parentId":24,"tags":{},"startTime":1784596279333,"traceId":"ff99179654b74581"},{"name":"check-page","duration":837187,"timestamp":5788307034256,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1784596279281,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":816417,"timestamp":5788307060513,"id":77,"parentId":30,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":833647,"timestamp":5788307043382,"id":30,"parentId":19,"tags":{"page":"/api/anet/providers/probe"},"startTime":1784596279290,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":790025,"timestamp":5788307092045,"id":104,"parentId":25,"tags":{},"startTime":1784596279338,"traceId":"ff99179654b74581"},{"name":"check-page","duration":842843,"timestamp":5788307039311,"id":25,"parentId":19,"tags":{"page":"/api/anet/host-supervisors"},"startTime":1784596279286,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":784212,"timestamp":5788307101621,"id":105,"parentId":26,"tags":{},"startTime":1784596279348,"traceId":"ff99179654b74581"},{"name":"check-page","duration":846143,"timestamp":5788307039765,"id":26,"parentId":19,"tags":{"page":"/api/anet/node-config"},"startTime":1784596279286,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":792358,"timestamp":5788307110917,"id":106,"parentId":27,"tags":{},"startTime":1784596279357,"traceId":"ff99179654b74581"},{"name":"check-page","duration":862946,"timestamp":5788307040401,"id":27,"parentId":19,"tags":{"page":"/api/anet/node-create"},"startTime":1784596279287,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":787809,"timestamp":5788307129554,"id":107,"parentId":28,"tags":{},"startTime":1784596279376,"traceId":"ff99179654b74581"},{"name":"check-page","duration":876640,"timestamp":5788307040871,"id":28,"parentId":19,"tags":{"page":"/api/anet/node-lifecycle"},"startTime":1784596279287,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":784973,"timestamp":5788307140845,"id":108,"parentId":31,"tags":{},"startTime":1784596279387,"traceId":"ff99179654b74581"},{"name":"check-page","duration":882342,"timestamp":5788307043555,"id":31,"parentId":19,"tags":{"page":"/api/anet/providers"},"startTime":1784596279290,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":795665,"timestamp":5788307143467,"id":110,"parentId":47,"tags":{},"startTime":1784596279390,"traceId":"ff99179654b74581"},{"name":"check-page","duration":890436,"timestamp":5788307048803,"id":47,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":873477,"timestamp":5788307065936,"id":100,"parentId":57,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":889061,"timestamp":5788307050382,"id":57,"parentId":19,"tags":{"page":"/api/hub/upload"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":799882,"timestamp":5788307144594,"id":111,"parentId":49,"tags":{},"startTime":1784596279391,"traceId":"ff99179654b74581"},{"name":"check-page","duration":895345,"timestamp":5788307049205,"id":49,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1784596279295,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":810092,"timestamp":5788307142554,"id":109,"parentId":38,"tags":{},"startTime":1784596279389,"traceId":"ff99179654b74581"},{"name":"check-page","duration":907125,"timestamp":5788307045595,"id":38,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1784596279292,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":779390,"timestamp":5788307173498,"id":112,"parentId":23,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":919025,"timestamp":5788307033907,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1784596279280,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":900780,"timestamp":5788307060965,"id":79,"parentId":33,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":917621,"timestamp":5788307044245,"id":33,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":795075,"timestamp":5788307173590,"id":115,"parentId":62,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":917369,"timestamp":5788307051366,"id":62,"parentId":19,"tags":{"page":"/messages"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":803968,"timestamp":5788307173616,"id":117,"parentId":64,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":925810,"timestamp":5788307051840,"id":64,"parentId":19,"tags":{"page":"/nodes"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":812071,"timestamp":5788307173632,"id":118,"parentId":66,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":931871,"timestamp":5788307053901,"id":66,"parentId":19,"tags":{"page":"/providers"},"startTime":1784596279300,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":821171,"timestamp":5788307173647,"id":119,"parentId":67,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":940701,"timestamp":5788307054192,"id":67,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1784596279300,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":829612,"timestamp":5788307173660,"id":120,"parentId":68,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":948858,"timestamp":5788307054479,"id":68,"parentId":19,"tags":{"page":"/servers"},"startTime":1784596279301,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":840173,"timestamp":5788307173670,"id":121,"parentId":69,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":959282,"timestamp":5788307054640,"id":69,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1784596279301,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":846813,"timestamp":5788307173685,"id":122,"parentId":71,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":964952,"timestamp":5788307055615,"id":71,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1784596279302,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":867416,"timestamp":5788307173700,"id":123,"parentId":72,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"}]
2
- [{"name":"check-page","duration":985625,"timestamp":5788307055811,"id":72,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1784596279302,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":897898,"timestamp":5788307173710,"id":124,"parentId":73,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1015496,"timestamp":5788307056205,"id":73,"parentId":19,"tags":{"page":"/tasks"},"startTime":1784596279302,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1006000,"timestamp":5788307065846,"id":93,"parentId":50,"tags":{},"startTime":1784596279312,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1022302,"timestamp":5788307049586,"id":50,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1784596279296,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":913310,"timestamp":5788307173576,"id":114,"parentId":60,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1035892,"timestamp":5788307051089,"id":60,"parentId":19,"tags":{"page":"/logs"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":913613,"timestamp":5788307173560,"id":113,"parentId":59,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1036332,"timestamp":5788307050884,"id":59,"parentId":19,"tags":{"page":"/login"},"startTime":1784596279297,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":943245,"timestamp":5788307173726,"id":125,"parentId":65,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1064971,"timestamp":5788307052120,"id":65,"parentId":19,"tags":{"page":"/"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":950123,"timestamp":5788307173605,"id":116,"parentId":63,"tags":{},"startTime":1784596279420,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1072189,"timestamp":5788307051614,"id":63,"parentId":19,"tags":{"page":"/node"},"startTime":1784596279298,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1078625,"timestamp":5788307060386,"id":76,"parentId":29,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1095979,"timestamp":5788307043139,"id":29,"parentId":19,"tags":{"page":"/api/anet/providers/probe-results"},"startTime":1784596279289,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1145184,"timestamp":5788307061167,"id":80,"parentId":34,"tags":{},"startTime":1784596279307,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1162048,"timestamp":5788307044396,"id":34,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1784596279291,"traceId":"ff99179654b74581"},{"name":"is-page-static","duration":1044574,"timestamp":5788307177172,"id":126,"parentId":70,"tags":{},"startTime":1784596279423,"traceId":"ff99179654b74581"},{"name":"check-page","duration":1166942,"timestamp":5788307054885,"id":70,"parentId":19,"tags":{"page":"/settings"},"startTime":1784596279301,"traceId":"ff99179654b74581"},{"name":"static-check","duration":1194899,"timestamp":5788307026987,"id":19,"parentId":1,"tags":{},"startTime":1784596279273,"traceId":"ff99179654b74581"},{"name":"write-routes-manifest","duration":649,"timestamp":5788308241590,"id":128,"parentId":1,"tags":{},"startTime":1784596280488,"traceId":"ff99179654b74581"},{"name":"load-dotenv","duration":59,"timestamp":5788308257785,"id":131,"parentId":130,"tags":{},"startTime":1784596280504,"traceId":"ff99179654b74581"},{"name":"run-export-path-map","duration":903,"timestamp":5788308270639,"id":132,"parentId":130,"tags":{},"startTime":1784596280517,"traceId":"ff99179654b74581"},{"name":"next-export","duration":920872,"timestamp":5788308255929,"id":130,"parentId":1,"tags":{},"startTime":1784596280502,"traceId":"ff99179654b74581"},{"name":"move-exported-app-not-found-","duration":8278,"timestamp":5788309183196,"id":133,"parentId":129,"tags":{},"startTime":1784596281429,"traceId":"ff99179654b74581"},{"name":"move-exported-app-global-error-","duration":11660,"timestamp":5788309191652,"id":134,"parentId":129,"tags":{},"startTime":1784596281438,"traceId":"ff99179654b74581"},{"name":"static-generation","duration":973577,"timestamp":5788308247420,"id":129,"parentId":1,"tags":{},"startTime":1784596280494,"traceId":"ff99179654b74581"},{"name":"write-routes-manifest","duration":478,"timestamp":5788309221348,"id":135,"parentId":1,"tags":{},"startTime":1784596281468,"traceId":"ff99179654b74581"},{"name":"print-tree-view","duration":6261,"timestamp":5788309246705,"id":136,"parentId":1,"tags":{},"startTime":1784596281493,"traceId":"ff99179654b74581"},{"name":"write-route-bundle-stats","duration":20680,"timestamp":5788309253081,"id":137,"parentId":1,"tags":{},"startTime":1784596281499,"traceId":"ff99179654b74581"},{"name":"telemetry-flush","duration":16345,"timestamp":5788309273807,"id":138,"parentId":1,"tags":{},"startTime":1784596281520,"traceId":"ff99179654b74581"},{"name":"next-build","duration":25242491,"timestamp":5788284047719,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784596256294,"traceId":"ff99179654b74581"}]
1
+ [{"name":"generate-buildid","duration":339,"timestamp":5789591560443,"id":4,"parentId":1,"tags":{},"startTime":1784597563807,"traceId":"b251c169832d4fa7"},{"name":"load-custom-routes","duration":514,"timestamp":5789591560968,"id":5,"parentId":1,"tags":{},"startTime":1784597563807,"traceId":"b251c169832d4fa7"},{"name":"create-dist-dir","duration":959,"timestamp":5789591561549,"id":6,"parentId":1,"tags":{},"startTime":1784597563808,"traceId":"b251c169832d4fa7"},{"name":"clean","duration":43243,"timestamp":5789591563399,"id":7,"parentId":1,"tags":{},"startTime":1784597563810,"traceId":"b251c169832d4fa7"},{"name":"discover-routes","duration":11754,"timestamp":5789591710717,"id":8,"parentId":1,"tags":{},"startTime":1784597563957,"traceId":"b251c169832d4fa7"},{"name":"create-root-mapping","duration":119,"timestamp":5789591722536,"id":9,"parentId":1,"tags":{},"startTime":1784597563969,"traceId":"b251c169832d4fa7"},{"name":"generate-route-types","duration":35327,"timestamp":5789591725568,"id":10,"parentId":1,"tags":{},"startTime":1784597563972,"traceId":"b251c169832d4fa7"},{"name":"public-dir-conflict-check","duration":113,"timestamp":5789591761123,"id":11,"parentId":1,"tags":{},"startTime":1784597564007,"traceId":"b251c169832d4fa7"},{"name":"generate-routes-manifest","duration":5489,"timestamp":5789591761359,"id":12,"parentId":1,"tags":{},"startTime":1784597564008,"traceId":"b251c169832d4fa7"},{"name":"run-turbopack","duration":9852710,"timestamp":5789591773712,"id":14,"parentId":1,"tags":{},"startTime":1784597564020,"traceId":"b251c169832d4fa7"},{"name":"turbopack-build-events","duration":154,"timestamp":5789592137972,"id":15,"parentId":1,"tags":{},"startTime":1784597564384,"traceId":"b251c169832d4fa7"},{"name":"run-typescript","duration":14127474,"timestamp":5789601649359,"id":16,"parentId":1,"tags":{},"startTime":1784597573896,"traceId":"b251c169832d4fa7"},{"name":"generate-required-server-files","duration":3286,"timestamp":5789615778257,"id":18,"parentId":1,"tags":{},"startTime":1784597588025,"traceId":"b251c169832d4fa7"},{"name":"check-static-error-page","duration":19779,"timestamp":5789616025423,"id":20,"parentId":19,"tags":{},"startTime":1784597588272,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":561053,"timestamp":5789616048479,"id":75,"parentId":22,"tags":{},"startTime":1784597588295,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":581263,"timestamp":5789616028465,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1784597588275,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":671847,"timestamp":5789616048627,"id":76,"parentId":29,"tags":{},"startTime":1784597588295,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":686691,"timestamp":5789616033900,"id":29,"parentId":19,"tags":{"page":"/api/anet/providers/probe-results"},"startTime":1784597588280,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":694428,"timestamp":5789616049991,"id":82,"parentId":36,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":708959,"timestamp":5789616035551,"id":36,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1784597588282,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":739990,"timestamp":5789616050101,"id":83,"parentId":37,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":754498,"timestamp":5789616035687,"id":37,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1784597588282,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":770493,"timestamp":5789616050179,"id":84,"parentId":39,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":783226,"timestamp":5789616037541,"id":39,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":776738,"timestamp":5789616050215,"id":85,"parentId":40,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":789653,"timestamp":5789616037635,"id":40,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":783970,"timestamp":5789616050330,"id":86,"parentId":41,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":796691,"timestamp":5789616037695,"id":41,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":792376,"timestamp":5789616050362,"id":87,"parentId":42,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":805073,"timestamp":5789616037750,"id":42,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":802766,"timestamp":5789616050381,"id":88,"parentId":43,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":815445,"timestamp":5789616037801,"id":43,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":804852,"timestamp":5789616050395,"id":89,"parentId":44,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":817451,"timestamp":5789616037861,"id":44,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":810881,"timestamp":5789616050404,"id":90,"parentId":45,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":823438,"timestamp":5789616037912,"id":45,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":816292,"timestamp":5789616050416,"id":91,"parentId":46,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":828800,"timestamp":5789616037977,"id":46,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":820638,"timestamp":5789616049770,"id":81,"parentId":35,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":835287,"timestamp":5789616035184,"id":35,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1784597588281,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":828376,"timestamp":5789616050429,"id":92,"parentId":48,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":840564,"timestamp":5789616038327,"id":48,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":830139,"timestamp":5789616049425,"id":79,"parentId":33,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":844646,"timestamp":5789616034972,"id":33,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1784597588281,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":830722,"timestamp":5789616050441,"id":93,"parentId":50,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":842396,"timestamp":5789616038829,"id":50,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":834284,"timestamp":5789616050450,"id":94,"parentId":51,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":845858,"timestamp":5789616038936,"id":51,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":844339,"timestamp":5789616050482,"id":97,"parentId":54,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":855772,"timestamp":5789616039161,"id":54,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":844729,"timestamp":5789616050462,"id":95,"parentId":52,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":856211,"timestamp":5789616039019,"id":52,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":844890,"timestamp":5789616050474,"id":96,"parentId":53,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":856286,"timestamp":5789616039105,"id":53,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":846993,"timestamp":5789616050494,"id":98,"parentId":55,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":858311,"timestamp":5789616039240,"id":55,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":851358,"timestamp":5789616050529,"id":101,"parentId":58,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":862541,"timestamp":5789616039401,"id":58,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":857453,"timestamp":5789616050542,"id":102,"parentId":61,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":868212,"timestamp":5789616039875,"id":61,"parentId":19,"tags":{"page":"/manifest.webmanifest"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":851195,"timestamp":5789616063603,"id":103,"parentId":24,"tags":{},"startTime":1784597588310,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":885785,"timestamp":5789616029086,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1784597588275,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":853264,"timestamp":5789616067144,"id":104,"parentId":25,"tags":{},"startTime":1784597588313,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":888763,"timestamp":5789616031716,"id":25,"parentId":19,"tags":{"page":"/api/anet/host-supervisors"},"startTime":1784597588278,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":878453,"timestamp":5789616048852,"id":78,"parentId":32,"tags":{},"startTime":1784597588295,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":892522,"timestamp":5789616034848,"id":32,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1784597588281,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":895135,"timestamp":5789616050520,"id":100,"parentId":57,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":906685,"timestamp":5789616039346,"id":57,"parentId":19,"tags":{"page":"/api/hub/upload"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":876485,"timestamp":5789616069776,"id":105,"parentId":26,"tags":{},"startTime":1784597588316,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":914233,"timestamp":5789616032123,"id":26,"parentId":19,"tags":{"page":"/api/anet/node-config"},"startTime":1784597588278,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":895995,"timestamp":5789616050507,"id":99,"parentId":56,"tags":{},"startTime":1784597588297,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":907242,"timestamp":5789616039297,"id":56,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":856624,"timestamp":5789616103240,"id":108,"parentId":31,"tags":{},"startTime":1784597588350,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":925512,"timestamp":5789616034439,"id":31,"parentId":19,"tags":{"page":"/api/anet/providers"},"startTime":1784597588281,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":881046,"timestamp":5789616079156,"id":107,"parentId":28,"tags":{},"startTime":1784597588325,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":926850,"timestamp":5789616033394,"id":28,"parentId":19,"tags":{"page":"/api/anet/node-lifecycle"},"startTime":1784597588280,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":864617,"timestamp":5789616105524,"id":110,"parentId":47,"tags":{},"startTime":1784597588352,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":932160,"timestamp":5789616038081,"id":47,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":870685,"timestamp":5789616104605,"id":109,"parentId":38,"tags":{},"startTime":1784597588351,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":938137,"timestamp":5789616037245,"id":38,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1784597588284,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":840918,"timestamp":5789616135530,"id":111,"parentId":49,"tags":{},"startTime":1784597588382,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":938054,"timestamp":5789616038454,"id":49,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1784597588285,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":911199,"timestamp":5789616072433,"id":106,"parentId":27,"tags":{},"startTime":1784597588319,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":951165,"timestamp":5789616032557,"id":27,"parentId":19,"tags":{"page":"/api/anet/node-create"},"startTime":1784597588279,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":943962,"timestamp":5789616047998,"id":74,"parentId":21,"tags":{},"startTime":1784597588294,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":965047,"timestamp":5789616026990,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1784597588273,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":843108,"timestamp":5789616170248,"id":116,"parentId":63,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":973250,"timestamp":5789616040179,"id":63,"parentId":19,"tags":{"page":"/node"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":865273,"timestamp":5789616170160,"id":112,"parentId":23,"tags":{},"startTime":1784597588416,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1006738,"timestamp":5789616028782,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1784597588275,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":873390,"timestamp":5789616170211,"id":113,"parentId":59,"tags":{},"startTime":1784597588416,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1004006,"timestamp":5789616039672,"id":59,"parentId":19,"tags":{"page":"/login"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":873667,"timestamp":5789616170225,"id":114,"parentId":60,"tags":{},"startTime":1784597588416,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1004171,"timestamp":5789616039769,"id":60,"parentId":19,"tags":{"page":"/logs"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":875623,"timestamp":5789616170258,"id":117,"parentId":64,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1005564,"timestamp":5789616040368,"id":64,"parentId":19,"tags":{"page":"/nodes"},"startTime":1784597588287,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":876364,"timestamp":5789616170268,"id":118,"parentId":66,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1004402,"timestamp":5789616042282,"id":66,"parentId":19,"tags":{"page":"/providers"},"startTime":1784597588289,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":881499,"timestamp":5789616170280,"id":119,"parentId":67,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1009296,"timestamp":5789616042531,"id":67,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1784597588289,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":882007,"timestamp":5789616170290,"id":120,"parentId":68,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"}]
2
+ [{"name":"check-page","duration":1009802,"timestamp":5789616042781,"id":68,"parentId":19,"tags":{"page":"/servers"},"startTime":1784597588289,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":893534,"timestamp":5789616170310,"id":122,"parentId":71,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1019975,"timestamp":5789616043941,"id":71,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1784597588290,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":893763,"timestamp":5789616170329,"id":124,"parentId":73,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1019621,"timestamp":5789616044508,"id":73,"parentId":19,"tags":{"page":"/tasks"},"startTime":1784597588291,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":898306,"timestamp":5789616170300,"id":121,"parentId":69,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1025729,"timestamp":5789616042934,"id":69,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1784597588289,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":898413,"timestamp":5789616170319,"id":123,"parentId":72,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1024590,"timestamp":5789616044163,"id":72,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1784597588290,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":903925,"timestamp":5789616170339,"id":125,"parentId":65,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1033697,"timestamp":5789616040758,"id":65,"parentId":19,"tags":{"page":"/"},"startTime":1784597588287,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":1029154,"timestamp":5789616049618,"id":80,"parentId":34,"tags":{},"startTime":1784597588296,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1043751,"timestamp":5789616035091,"id":34,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1784597588281,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":858135,"timestamp":5789616220798,"id":126,"parentId":70,"tags":{},"startTime":1784597588467,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1035680,"timestamp":5789616043278,"id":70,"parentId":19,"tags":{"page":"/settings"},"startTime":1784597588290,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":941740,"timestamp":5789616170237,"id":115,"parentId":62,"tags":{},"startTime":1784597588417,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1072146,"timestamp":5789616039935,"id":62,"parentId":19,"tags":{"page":"/messages"},"startTime":1784597588286,"traceId":"b251c169832d4fa7"},{"name":"is-page-static","duration":1095678,"timestamp":5789616048743,"id":77,"parentId":30,"tags":{},"startTime":1784597588295,"traceId":"b251c169832d4fa7"},{"name":"check-page","duration":1110247,"timestamp":5789616034255,"id":30,"parentId":19,"tags":{"page":"/api/anet/providers/probe"},"startTime":1784597588281,"traceId":"b251c169832d4fa7"},{"name":"static-check","duration":1120306,"timestamp":5789616024249,"id":19,"parentId":1,"tags":{},"startTime":1784597588271,"traceId":"b251c169832d4fa7"},{"name":"write-routes-manifest","duration":597,"timestamp":5789617154363,"id":128,"parentId":1,"tags":{},"startTime":1784597589401,"traceId":"b251c169832d4fa7"},{"name":"load-dotenv","duration":52,"timestamp":5789617167506,"id":131,"parentId":130,"tags":{},"startTime":1784597589414,"traceId":"b251c169832d4fa7"},{"name":"run-export-path-map","duration":664,"timestamp":5789617170479,"id":132,"parentId":130,"tags":{},"startTime":1784597589417,"traceId":"b251c169832d4fa7"},{"name":"next-export","duration":886014,"timestamp":5789617166228,"id":130,"parentId":1,"tags":{},"startTime":1784597589413,"traceId":"b251c169832d4fa7"},{"name":"move-exported-app-not-found-","duration":767,"timestamp":5789618057975,"id":133,"parentId":129,"tags":{},"startTime":1784597590304,"traceId":"b251c169832d4fa7"},{"name":"move-exported-app-global-error-","duration":478,"timestamp":5789618058897,"id":134,"parentId":129,"tags":{},"startTime":1784597590305,"traceId":"b251c169832d4fa7"},{"name":"static-generation","duration":902272,"timestamp":5789617160198,"id":129,"parentId":1,"tags":{},"startTime":1784597589406,"traceId":"b251c169832d4fa7"},{"name":"write-routes-manifest","duration":622,"timestamp":5789618062791,"id":135,"parentId":1,"tags":{},"startTime":1784597590309,"traceId":"b251c169832d4fa7"},{"name":"print-tree-view","duration":4424,"timestamp":5789618077828,"id":136,"parentId":1,"tags":{},"startTime":1784597590324,"traceId":"b251c169832d4fa7"},{"name":"write-route-bundle-stats","duration":18533,"timestamp":5789618082293,"id":137,"parentId":1,"tags":{},"startTime":1784597590329,"traceId":"b251c169832d4fa7"},{"name":"telemetry-flush","duration":22856,"timestamp":5789618100865,"id":138,"parentId":1,"tags":{},"startTime":1784597590347,"traceId":"b251c169832d4fa7"},{"name":"next-build","duration":26636129,"timestamp":5789591487639,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784597563734,"traceId":"b251c169832d4fa7"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":8996895,"timestamp":5788284361787,"id":14,"parentId":1,"tags":{},"startTime":1784596256608,"traceId":"ff99179654b74581"},{"name":"turbopack-build-events","duration":100,"timestamp":5788284719557,"id":15,"parentId":1,"tags":{},"startTime":1784596256966,"traceId":"ff99179654b74581"},{"name":"run-typescript","duration":13362616,"timestamp":5788293370018,"id":16,"parentId":1,"tags":{},"startTime":1784596265616,"traceId":"ff99179654b74581"},{"name":"static-check","duration":1194899,"timestamp":5788307026987,"id":19,"parentId":1,"tags":{},"startTime":1784596279273,"traceId":"ff99179654b74581"},{"name":"static-generation","duration":973577,"timestamp":5788308247420,"id":129,"parentId":1,"tags":{},"startTime":1784596280494,"traceId":"ff99179654b74581"},{"name":"telemetry-flush","duration":16345,"timestamp":5788309273807,"id":138,"parentId":1,"tags":{},"startTime":1784596281520,"traceId":"ff99179654b74581"},{"name":"next-build","duration":25242491,"timestamp":5788284047719,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784596256294,"traceId":"ff99179654b74581"}]
1
+ [{"name":"run-turbopack","duration":9852710,"timestamp":5789591773712,"id":14,"parentId":1,"tags":{},"startTime":1784597564020,"traceId":"b251c169832d4fa7"},{"name":"turbopack-build-events","duration":154,"timestamp":5789592137972,"id":15,"parentId":1,"tags":{},"startTime":1784597564384,"traceId":"b251c169832d4fa7"},{"name":"run-typescript","duration":14127474,"timestamp":5789601649359,"id":16,"parentId":1,"tags":{},"startTime":1784597573896,"traceId":"b251c169832d4fa7"},{"name":"static-check","duration":1120306,"timestamp":5789616024249,"id":19,"parentId":1,"tags":{},"startTime":1784597588271,"traceId":"b251c169832d4fa7"},{"name":"static-generation","duration":902272,"timestamp":5789617160198,"id":129,"parentId":1,"tags":{},"startTime":1784597589406,"traceId":"b251c169832d4fa7"},{"name":"telemetry-flush","duration":22856,"timestamp":5789618100865,"id":138,"parentId":1,"tags":{},"startTime":1784597590347,"traceId":"b251c169832d4fa7"},{"name":"next-build","duration":26636129,"timestamp":5789591487639,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784597563734,"traceId":"b251c169832d4fa7"}]
@@ -74,6 +74,7 @@ function ChatImage({ src, alt, thumbClass, onOpen }: { src: string; alt?: string
74
74
  return (
75
75
  <button
76
76
  type="button"
77
+ data-chat-image={src}
77
78
  onClick={() => onOpen(src)}
78
79
  aria-label={alt || t('查看大图', 'View full image')}
79
80
  className={`relative block overflow-hidden ${state === 'loading' ? 'animate-pulse bg-[var(--bg-elevated)]' : ''} ${thumbClass}`}
@@ -90,8 +91,20 @@ function ChatImage({ src, alt, thumbClass, onOpen }: { src: string; alt?: string
90
91
  );
91
92
  }
92
93
 
93
- function ImageLightbox({ url, onClose, opener }: { url: string; onClose: () => void; opener: HTMLElement | null }) {
94
+ function ImageLightbox({ urls, initialIndex, onClose, opener }: { urls: string[]; initialIndex: number; onClose: () => void; opener: HTMLElement | null }) {
95
+ // R21 (多图还债): navigate all images of the LOADED conversation —
96
+ // ‹ › buttons + arrow keys, WeChat-style no-wrap ends.
97
+ const [idx, setIdx] = useState(initialIndex);
98
+ const url = urls[Math.min(idx, urls.length - 1)];
94
99
  const [loaded, setLoaded] = useState(false);
100
+ const idxRef = useRef(idx);
101
+ idxRef.current = idx;
102
+ const step = (d: number) => {
103
+ setIdx((i) => Math.max(0, Math.min(urls.length - 1, i + d)));
104
+ setLoaded(false);
105
+ };
106
+ const stepRef = useRef(step);
107
+ stepRef.current = step;
95
108
  const dialogRef = useRef<HTMLDivElement>(null);
96
109
  // onClose is recreated on every parent render (and the panel re-renders
97
110
  // every few seconds from soft refreshes) — a [onClose] dep would tear
@@ -113,6 +126,8 @@ function ImageLightbox({ url, onClose, opener }: { url: string; onClose: () => v
113
126
  // behind it (panel hosts listen for Escape too).
114
127
  const onKey = (e: KeyboardEvent) => {
115
128
  if (e.key === 'Escape') { e.stopPropagation(); onClose(); return; }
129
+ if (e.key === 'ArrowLeft') { stepRef.current(-1); return; }
130
+ if (e.key === 'ArrowRight') { stepRef.current(1); return; }
116
131
  if (e.key !== 'Tab') return;
117
132
  const items = focusables();
118
133
  if (items.length === 0) return;
@@ -147,11 +162,33 @@ function ImageLightbox({ url, onClose, opener }: { url: string; onClose: () => v
147
162
  <div ref={dialogRef} className="fixed inset-0 z-[100] flex items-center justify-center bg-black/85" onClick={onClose} role="dialog" aria-modal="true" aria-label={t('图片预览', 'Image preview')}>
148
163
  {!loaded && <div className="absolute h-6 w-6 animate-spin rounded-full border-2 border-white/30 border-t-white" />}
149
164
  <img
165
+ key={url}
150
166
  src={url}
151
167
  alt=""
152
168
  onLoad={() => setLoaded(true)}
153
169
  className={`max-h-[92vh] max-w-[92vw] rounded object-contain transition-opacity duration-150 ${loaded ? 'opacity-100' : 'opacity-0'}`}
154
170
  />
171
+ {urls.length > 1 && (
172
+ <>
173
+ <span className="absolute left-3 top-3 text-[11px] tabular-nums text-white/70">{idx + 1}/{urls.length}</span>
174
+ <button
175
+ onClick={(e) => { e.stopPropagation(); step(-1); }}
176
+ disabled={idx === 0}
177
+ aria-label={t('上一张', 'Previous image')}
178
+ className="absolute left-1 top-1/2 flex h-11 w-11 -translate-y-1/2 items-center justify-center rounded-full text-2xl text-white/80 hover:bg-white/10 disabled:opacity-25"
179
+ >
180
+
181
+ </button>
182
+ <button
183
+ onClick={(e) => { e.stopPropagation(); step(1); }}
184
+ disabled={idx === urls.length - 1}
185
+ aria-label={t('下一张', 'Next image')}
186
+ className="absolute right-1 top-1/2 flex h-11 w-11 -translate-y-1/2 items-center justify-center rounded-full text-2xl text-white/80 hover:bg-white/10 disabled:opacity-25"
187
+ >
188
+
189
+ </button>
190
+ </>
191
+ )}
155
192
  <a
156
193
  href={url}
157
194
  target="_blank"
@@ -397,6 +434,8 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
397
434
  const [historyError, setHistoryError] = useState(false);
398
435
  const [targetAlias, setTargetAlias] = useState(alias);
399
436
  const [showMentions, setShowMentions] = useState(false);
437
+ const [mentionIndex, setMentionIndex] = useState(0);
438
+ const [attachLimitHit, setAttachLimitHit] = useState(false);
400
439
  const [mentionFilter, setMentionFilter] = useState('');
401
440
  const [mentionNodes, setMentionNodes] = useState<string[]>([]);
402
441
  const messagesEndRef = useRef<HTMLDivElement>(null);
@@ -425,7 +464,8 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
425
464
  // would always look "not at bottom" because the new content itself
426
465
  // grew the distance).
427
466
  const [newBelow, setNewBelow] = useState(0);
428
- const [lightboxUrl, setLightboxUrl] = useState<string | null>(null);
467
+ const [lightbox, setLightbox] = useState<{ urls: string[]; idx: number } | null>(null);
468
+ const [errorFor, setErrorFor] = useState<string | null>(null);
429
469
  // Loop R15 (会话内搜索): client-side filter over the LOADED window —
430
470
  // honest scope (the hint says so); load earlier messages to widen it.
431
471
  const [searchOpen, setSearchOpen] = useState(false);
@@ -435,7 +475,13 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
435
475
  const lightboxOpenerRef = useRef<HTMLElement | null>(null);
436
476
  const openLightbox = useCallback((url: string) => {
437
477
  lightboxOpenerRef.current = document.activeElement as HTMLElement | null;
438
- setLightboxUrl(url);
478
+ // Collect every image of the loaded conversation in document order —
479
+ // DOM-driven so it exactly matches what's rendered (markdown +
480
+ // attachments, collapsed content included).
481
+ const nodes = Array.from(scrollRef.current?.querySelectorAll<HTMLElement>('[data-chat-image]') || []);
482
+ const urls = Array.from(new Set(nodes.map((n) => n.getAttribute('data-chat-image') || '').filter(Boolean)));
483
+ const idx = Math.max(0, urls.indexOf(url));
484
+ setLightbox({ urls: urls.length ? urls : [url], idx });
439
485
  }, []);
440
486
  const atBottomRef = useRef(true);
441
487
  const prevBubblesRef = useRef(0);
@@ -571,6 +617,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
571
617
  atBottomRef.current = true;
572
618
  prevBubblesRef.current = 0;
573
619
  setNewBelow(0);
620
+ setErrorFor(null);
574
621
  setHasOlder(true);
575
622
  loadInitial();
576
623
  // Focus textarea
@@ -886,6 +933,17 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
886
933
  };
887
934
 
888
935
  const handleKeyDown = (e: React.KeyboardEvent) => {
936
+ // R22: while the @ mention dropdown is open the keyboard drives IT —
937
+ // previously Enter SENT the half-typed "@通" as a message. ↑↓ move,
938
+ // Enter/Tab select, Escape closes (below).
939
+ if (showMentions && filteredMentions.length > 0) {
940
+ if (e.key === 'ArrowDown') { e.preventDefault(); setMentionIndex((i) => (i + 1) % filteredMentions.length); return; }
941
+ if (e.key === 'ArrowUp') { e.preventDefault(); setMentionIndex((i) => (i - 1 + filteredMentions.length) % filteredMentions.length); return; }
942
+ if (e.key === 'Enter' || e.key === 'Tab') {
943
+ if (!e.nativeEvent.isComposing) { e.preventDefault(); insertMention(filteredMentions[Math.min(mentionIndex, filteredMentions.length - 1)]); }
944
+ return;
945
+ }
946
+ }
889
947
  // Enter sends, Shift+Enter inserts newline (standard DESKTOP chat UX —
890
948
  // users habit-pressed Enter expecting send). On touch (coarse pointer)
891
949
  // Enter inserts a newline instead: phones have no Shift, and WeChat
@@ -906,6 +964,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
906
964
  const after = value.slice(lastAt + 1);
907
965
  if (!after.includes(' ') && !after.includes('\n')) {
908
966
  setMentionFilter(after.toLowerCase());
967
+ setMentionIndex(0);
909
968
  setShowMentions(true);
910
969
  return;
911
970
  }
@@ -916,6 +975,11 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
916
975
  const addImageFiles = (files: FileList | File[]) => {
917
976
  const images = Array.from(files).filter(file => file.type.startsWith('image/'));
918
977
  if (images.length === 0) return;
978
+ // R22: the 6-image cap used to truncate silently — surface it.
979
+ if (attachedFiles.length + images.length > 6) {
980
+ setAttachLimitHit(true);
981
+ setTimeout(() => setAttachLimitHit(false), 3000);
982
+ }
919
983
  setAttachedFiles(prev => [...prev, ...images].slice(0, 6));
920
984
  };
921
985
 
@@ -1134,13 +1198,16 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
1134
1198
  {/* Outgoing task — labeled with origin so peer-forwarded tasks are obvious */}
1135
1199
  <div className="flex items-center justify-end gap-1.5" data-ev={`${m.task_id}:task`}>
1136
1200
  {m.status === 'failed' && fromUser && (
1137
- <span
1201
+ <button
1202
+ type="button"
1203
+ onClick={() => setErrorFor((cur) => (cur === m.task_id ? null : m.task_id))}
1138
1204
  title={(m.result || '').replace(/^❌\s*/, '') || t('发送失败', 'Send failed')}
1139
- aria-label={t('发送失败', 'Send failed')}
1140
- className="flex h-[18px] w-[18px] shrink-0 cursor-help items-center justify-center rounded-full bg-red-500 text-[11px] font-bold leading-none text-white"
1205
+ aria-label={t('发送失败,点击查看原因', 'Send failed — tap for reason')}
1206
+ aria-expanded={errorFor === m.task_id}
1207
+ className="flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-full bg-red-500 text-[11px] font-bold leading-none text-white"
1141
1208
  >
1142
1209
  !
1143
- </span>
1210
+ </button>
1144
1211
  )}
1145
1212
  <div title={m.created_at} className={`max-w-[92%] sm:max-w-[min(85%,56ch)] bg-cyan-500/8 border border-cyan-500/15 rounded-2xl rounded-br-md px-3 py-2.5 sm:px-4 shadow-sm ${currentMatchKey === `${m.task_id}:task` ? 'ring-2 ring-yellow-400/60' : ''}`}>
1146
1213
  <div className="flex items-center gap-2 mb-1">
@@ -1175,6 +1242,14 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
1175
1242
  </div>
1176
1243
  </div>
1177
1244
 
1245
+ {m.status === 'failed' && errorFor === m.task_id && (
1246
+ <div className="flex justify-end">
1247
+ <div className="max-w-[92%] rounded-lg border border-red-500/30 bg-red-500/10 px-2.5 py-1.5 text-[11px] leading-5 text-red-300">
1248
+ {(m.result || '').replace(/^❌\s*/, '') || t('发送失败', 'Send failed')}
1249
+ </div>
1250
+ </div>
1251
+ )}
1252
+
1178
1253
  {/* Typing indicator when running */}
1179
1254
  {m.status === 'running' && !m.result && (
1180
1255
  <div className="flex justify-start">
@@ -1216,9 +1291,11 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
1216
1291
  {/* @ mention dropdown */}
1217
1292
  {showMentions && filteredMentions.length > 0 && (
1218
1293
  <div className="absolute bottom-full left-0 right-0 mb-1 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg shadow-xl shadow-black/50 overflow-hidden z-10 max-h-48 overflow-y-auto">
1219
- {filteredMentions.map(node => (
1294
+ {filteredMentions.map((node, i) => (
1220
1295
  <button key={node} onClick={() => insertMention(node)}
1221
- className="w-full flex items-center gap-2 px-3 py-2 text-xs text-left hover:bg-cyan-500/10 transition-colors">
1296
+ onMouseEnter={() => setMentionIndex(i)}
1297
+ aria-selected={i === mentionIndex}
1298
+ className={`w-full flex items-center gap-2 px-3 py-2 text-xs text-left transition-colors ${i === mentionIndex ? 'bg-cyan-500/10' : 'hover:bg-cyan-500/10'}`}>
1222
1299
  <AliasAvatar alias={node} size={16} />
1223
1300
  <span className="text-[var(--fg-muted)]">{node}</span>
1224
1301
  </button>
@@ -1270,6 +1347,9 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
1270
1347
  )}
1271
1348
  </button>
1272
1349
  </div>
1350
+ {attachLimitHit && (
1351
+ <div className="mt-1 text-[10px] text-amber-400" role="status">{t('最多同时附带 6 张图片', 'Up to 6 images at a time')}</div>
1352
+ )}
1273
1353
  {attachedFiles.length > 0 && (
1274
1354
  <div className="mt-2 flex flex-wrap gap-2">
1275
1355
  {attachedFiles.map((file, index) => (
@@ -1286,7 +1366,7 @@ export function TaskChatPanel({ alias, onClose, inline, availableNodes, active }
1286
1366
  <span>Enter to send · paste image</span>
1287
1367
  </div>
1288
1368
  </div>
1289
- {lightboxUrl && <ImageLightbox url={lightboxUrl} opener={lightboxOpenerRef.current} onClose={() => setLightboxUrl(null)} />}
1369
+ {lightbox && <ImageLightbox urls={lightbox.urls} initialIndex={lightbox.idx} opener={lightboxOpenerRef.current} onClose={() => setLightbox(null)} />}
1290
1370
  </>
1291
1371
  );
1292
1372
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.6.3-preview.20",
3
+ "version": "0.6.3-preview.21",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "main": "apps/desktop/electron/main.cjs",
6
6
  "scripts": {