@sleep2agi/agent-network-dashboard 0.4.5-preview.34 → 0.4.5-preview.35

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 (135) 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 +2 -2
  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.html +1 -1
  14. package/.next/server/app/_not-found.rsc +1 -1
  15. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  21. package/.next/server/app/admin.html +1 -1
  22. package/.next/server/app/admin.rsc +1 -1
  23. package/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  24. package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  25. package/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  26. package/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  27. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
  28. package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
  29. package/.next/server/app/index.html +1 -1
  30. package/.next/server/app/index.rsc +1 -1
  31. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  32. package/.next/server/app/index.segments/_full.segment.rsc +1 -1
  33. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  34. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  35. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  36. package/.next/server/app/login.html +1 -1
  37. package/.next/server/app/login.rsc +1 -1
  38. package/.next/server/app/login.segments/_full.segment.rsc +1 -1
  39. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/login.segments/_index.segment.rsc +1 -1
  41. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  43. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  44. package/.next/server/app/logs.html +1 -1
  45. package/.next/server/app/logs.rsc +1 -1
  46. package/.next/server/app/logs.segments/_full.segment.rsc +1 -1
  47. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/logs.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/logs.segments/_tree.segment.rsc +1 -1
  50. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
  51. package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
  52. package/.next/server/app/messages.html +1 -1
  53. package/.next/server/app/messages.rsc +1 -1
  54. package/.next/server/app/messages.segments/_full.segment.rsc +1 -1
  55. package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
  56. package/.next/server/app/messages.segments/_index.segment.rsc +1 -1
  57. package/.next/server/app/messages.segments/_tree.segment.rsc +1 -1
  58. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
  60. package/.next/server/app/node.html +1 -1
  61. package/.next/server/app/node.rsc +1 -1
  62. package/.next/server/app/node.segments/_full.segment.rsc +1 -1
  63. package/.next/server/app/node.segments/_head.segment.rsc +1 -1
  64. package/.next/server/app/node.segments/_index.segment.rsc +1 -1
  65. package/.next/server/app/node.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
  67. package/.next/server/app/node.segments/node.segment.rsc +1 -1
  68. package/.next/server/app/nodes.html +1 -1
  69. package/.next/server/app/nodes.rsc +1 -1
  70. package/.next/server/app/nodes.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/nodes.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/nodes.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
  76. package/.next/server/app/server-logs.html +1 -1
  77. package/.next/server/app/server-logs.rsc +1 -1
  78. package/.next/server/app/server-logs.segments/_full.segment.rsc +1 -1
  79. package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
  80. package/.next/server/app/server-logs.segments/_index.segment.rsc +1 -1
  81. package/.next/server/app/server-logs.segments/_tree.segment.rsc +1 -1
  82. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
  83. package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
  84. package/.next/server/app/settings/networks.html +1 -1
  85. package/.next/server/app/settings/networks.rsc +1 -1
  86. package/.next/server/app/settings/networks.segments/_full.segment.rsc +1 -1
  87. package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
  88. package/.next/server/app/settings/networks.segments/_index.segment.rsc +1 -1
  89. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +1 -1
  90. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
  91. package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
  92. package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
  93. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/settings/tokens.html +1 -1
  95. package/.next/server/app/settings/tokens.rsc +1 -1
  96. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +1 -1
  97. package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
  98. package/.next/server/app/settings/tokens.segments/_index.segment.rsc +1 -1
  99. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +1 -1
  100. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
  101. package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
  102. package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
  103. package/.next/server/app/settings.html +2 -2
  104. package/.next/server/app/settings.rsc +2 -2
  105. package/.next/server/app/settings.segments/_full.segment.rsc +2 -2
  106. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  107. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  108. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  109. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  110. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  111. package/.next/server/app/tasks.html +1 -1
  112. package/.next/server/app/tasks.rsc +1 -1
  113. package/.next/server/app/tasks.segments/_full.segment.rsc +1 -1
  114. package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
  115. package/.next/server/app/tasks.segments/_index.segment.rsc +1 -1
  116. package/.next/server/app/tasks.segments/_tree.segment.rsc +1 -1
  117. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
  118. package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
  119. package/.next/server/chunks/ssr/app_0dk5wao._.js +1 -1
  120. package/.next/server/chunks/ssr/app_0dk5wao._.js.map +1 -1
  121. package/.next/server/middleware-build-manifest.js +3 -3
  122. package/.next/server/pages/404.html +1 -1
  123. package/.next/server/pages/500.html +1 -1
  124. package/.next/server/server-reference-manifest.js +1 -1
  125. package/.next/server/server-reference-manifest.json +1 -1
  126. package/.next/static/chunks/08e85d1ggyfck.js +1 -0
  127. package/.next/trace +2 -2
  128. package/.next/trace-build +1 -1
  129. package/app/lib/version.ts +7 -0
  130. package/app/settings/page.tsx +5 -2
  131. package/package.json +1 -1
  132. package/.next/static/chunks/00-ce-5_uu76b.js +0 -1
  133. /package/.next/static/{XVBhZZt0oY0dr_1T_wvlP → SFUzqPbMZf-hTanI7rSjL}/_buildManifest.js +0 -0
  134. /package/.next/static/{XVBhZZt0oY0dr_1T_wvlP → SFUzqPbMZf-hTanI7rSjL}/_clientMiddlewareManifest.js +0 -0
  135. /package/.next/static/{XVBhZZt0oY0dr_1T_wvlP → SFUzqPbMZf-hTanI7rSjL}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":9056033,"timestamp":205643816375,"id":14,"parentId":1,"tags":{},"startTime":1778577129641,"traceId":"c0479ad730245c3c"},{"name":"turbopack-build-events","duration":79,"timestamp":205644105089,"id":15,"parentId":1,"tags":{},"startTime":1778577129930,"traceId":"c0479ad730245c3c"},{"name":"run-typescript","duration":8302962,"timestamp":205652886103,"id":16,"parentId":1,"tags":{},"startTime":1778577138711,"traceId":"c0479ad730245c3c"},{"name":"static-check","duration":869505,"timestamp":205661262724,"id":19,"parentId":1,"tags":{},"startTime":1778577147087,"traceId":"c0479ad730245c3c"},{"name":"static-generation","duration":669830,"timestamp":205662153454,"id":103,"parentId":1,"tags":{},"startTime":1778577147978,"traceId":"c0479ad730245c3c"},{"name":"telemetry-flush","duration":31845,"timestamp":205662856524,"id":112,"parentId":1,"tags":{},"startTime":1778577148681,"traceId":"c0479ad730245c3c"},{"name":"next-build","duration":19283855,"timestamp":205643604553,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778577129429,"traceId":"c0479ad730245c3c"}]
1
+ [{"name":"run-turbopack","duration":16724581,"timestamp":206473954635,"id":14,"parentId":1,"tags":{},"startTime":1778577959779,"traceId":"4137f1678382dffb"},{"name":"turbopack-build-events","duration":89,"timestamp":206474534452,"id":15,"parentId":1,"tags":{},"startTime":1778577960359,"traceId":"4137f1678382dffb"},{"name":"run-typescript","duration":9960257,"timestamp":206490693649,"id":16,"parentId":1,"tags":{},"startTime":1778577976518,"traceId":"4137f1678382dffb"},{"name":"static-check","duration":728472,"timestamp":206500758019,"id":19,"parentId":1,"tags":{},"startTime":1778577986583,"traceId":"4137f1678382dffb"},{"name":"static-generation","duration":627787,"timestamp":206501497840,"id":103,"parentId":1,"tags":{},"startTime":1778577987323,"traceId":"4137f1678382dffb"},{"name":"telemetry-flush","duration":24498,"timestamp":206502156658,"id":112,"parentId":1,"tags":{},"startTime":1778577987981,"traceId":"4137f1678382dffb"},{"name":"next-build","duration":28724045,"timestamp":206473457147,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778577959282,"traceId":"4137f1678382dffb"}]
@@ -0,0 +1,7 @@
1
+ /** Dashboard package version sourced from package.json at build time.
2
+ * Importing JSON requires `resolveJsonModule: true` in tsconfig, which
3
+ * Next sets by default. Bumping is automated by the publish flow, so this
4
+ * surfaces the real preview number in Settings → Dashboard. */
5
+ import pkg from '../../package.json' assert { type: 'json' };
6
+
7
+ export const DASHBOARD_VERSION: string = pkg.version;
@@ -3,6 +3,7 @@
3
3
  import { useState } from 'react';
4
4
  import Link from 'next/link';
5
5
  import { useAnetConfig, useHealth, useLicense } from '../lib/hooks';
6
+ import { DASHBOARD_VERSION } from '../lib/version';
6
7
 
7
8
  export default function SettingsPage() {
8
9
  const { config } = useAnetConfig();
@@ -107,7 +108,9 @@ export default function SettingsPage() {
107
108
  <div className="space-y-3 text-sm">
108
109
  <div className={rowClass}>
109
110
  <span className="text-gray-500">Version</span>
110
- <span className={`text-gray-300 ${valueClass}`}>V2.1</span>
111
+ <span className={`text-gray-300 font-mono ${valueClass}`} title="From package.json @sleep2agi/agent-network-dashboard">
112
+ {DASHBOARD_VERSION}
113
+ </span>
111
114
  </div>
112
115
  <div className={rowClass}>
113
116
  <span className="text-gray-500">Data Layer</span>
@@ -115,7 +118,7 @@ export default function SettingsPage() {
115
118
  </div>
116
119
  <div className={rowClass}>
117
120
  <span className="text-gray-500">Pages</span>
118
- <span className={`text-gray-300 ${valueClass}`}>Overview, Tasks, Nodes, Messages, Settings</span>
121
+ <span className={`text-gray-300 ${valueClass}`}>Overview, Tasks, Nodes, Messages, Networks, Audit, Server Logs, Admin, Settings</span>
119
122
  </div>
120
123
  </div>
121
124
  </section>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network-dashboard",
3
- "version": "0.4.5-preview.34",
3
+ "version": "0.4.5-preview.35",
4
4
  "description": "Agent Network Dashboard — Web UI for managing AI Agent networks",
5
5
  "scripts": {
6
6
  "dev": "next dev",
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,65822,e=>{"use strict";var s=e.i(83599),a=e.i(58963);let t=async e=>{let s=await fetch(e);if(401===s.status)throw window.location.assign("/login"),Error("unauthorized");return s.json()},r={refreshInterval:5e3,dedupingInterval:3e3};function n(e,s){if(!s)return e;let a=e.includes("?")?"&":"?";return`${e}${a}network_id=${encodeURIComponent(s)}`}e.s(["useAnetConfig",0,function(){let{data:e}=(0,s.default)("/api/anet/config",t,{refreshInterval:3e4});return{config:e||null}},"useHealth",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/health",t,r);return{health:e||null,error:a}},"useLicense",0,function(){let{data:e,error:a}=(0,s.default)("/api/hub/license",t,{refreshInterval:6e4});return{license:e?.ok?e:null,error:a}},"useMessages",0,function(e=100){let{networkId:l}=(0,a.useNetworkId)(),{data:i,error:c,isLoading:d}=(0,s.default)(n(`/api/hub/messages?limit=${e}`,l),t,r);return{messages:i?.messages||[],error:c,isLoading:d}},"useSessions",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i,isLoading:c}=(0,s.default)(n("/api/hub/status",e),t,r);return{sessions:l?.sessions||[],hint:l?._hint,error:i,isLoading:c}},"useStats",0,function(){let{networkId:e}=(0,a.useNetworkId)(),{data:l,error:i}=(0,s.default)(n("/api/hub/stats",e),t,r);return{stats:l?.ok?l:null,error:i}},"useTasks",0,function(e){let{networkId:l}=(0,a.useNetworkId)(),i=new URLSearchParams({limit:"100",...e}).toString(),{data:c,error:d,isLoading:o}=(0,s.default)(n(`/api/hub/tasks?${i}`,l),t,r);return{tasks:c?.tasks||[],count:c?.count??0,source:c?.source,error:d,isLoading:o}}])},32545,e=>{"use strict";var s=e.i(18050),a=e.i(71645),t=e.i(22016),r=e.i(65822);e.s(["default",0,function(){let{config:e}=(0,r.useAnetConfig)(),{health:n}=(0,r.useHealth)(),{license:l}=(0,r.useLicense)(),[i,c]=(0,a.useState)(""),[d,o]=(0,a.useState)(""),[x,m]=(0,a.useState)(""),[h,u]=(0,a.useState)(""),[g,p]=(0,a.useState)(""),b="flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between",N="break-all sm:max-w-[320px] sm:text-right";return(0,s.jsxs)("div",{className:"min-h-screen bg-[#0a0a1a] text-gray-100 p-4 sm:p-6 font-mono",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-white mb-3 lg:ml-0 ml-10",children:"Settings"}),(0,s.jsx)("nav",{className:"mb-8 flex flex-wrap gap-1 text-xs",children:[{href:"#connection",label:"Connection"},{href:"#account",label:"Account"},{href:"#resources",label:"Resources"}].map(e=>(0,s.jsx)("a",{href:e.href,className:"rounded-md px-2.5 py-1 text-gray-500 hover:text-cyan-300 hover:bg-cyan-500/10 transition-colors",children:e.label},e.href))}),(0,s.jsxs)("div",{className:"max-w-2xl space-y-10",children:[(0,s.jsxs)("div",{id:"connection",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Connection"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"CommHub Connection"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500 shrink-0",children:"Hub URL"}),(0,s.jsx)("span",{className:`text-cyan-300 ${N}`,children:e?.hub||"not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Config Source"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:e?.source==="file"?"Local file (~/.anet/config.json)":e?.source==="runtime-env"?"Vercel env vars":"Missing"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Auth Token"}),(0,s.jsx)("span",{className:`${e?.tokenConfigured?"text-green-400":"text-red-400"} ${N}`,children:e?.tokenConfigured?`Configured (${e.tokenPreview})`:"Not configured"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Server Auth"}),(0,s.jsx)("span",{className:`${n?.auth==="enabled"?"text-green-400":"text-yellow-400"} sm:text-right`,children:n?.auth||"--"})]}),e?.error&&(0,s.jsx)("div",{className:"border-t border-[#2a2a4a] pt-3 text-xs text-gray-600",children:e.error})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Server Info"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:n?.version||"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Sessions"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:n?.sessions??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"SSE Connections"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:n?.sse_connections??"--"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Uptime"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:n?.uptime?`${Math.floor(n.uptime/3600)}h ${Math.floor(n.uptime%3600/60)}m`:"--"})]})]})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Dashboard"}),(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Version"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:"V2.1"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Data Layer"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:"SWR (5s refresh, 3s dedup)"})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Pages"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:"Overview, Tasks, Nodes, Messages, Settings"})]})]})]})]}),(0,s.jsxs)("div",{id:"account",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Account"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsxs)("h2",{className:"text-sm font-semibold text-gray-300 mb-4 flex items-center gap-2",children:["License",l?.license&&(0,s.jsxs)("span",{className:`inline-flex items-center gap-1.5 text-[10px] font-medium px-2 py-0.5 rounded-full border ${"pro"===l.license.type?"text-green-300 bg-green-500/10 border-green-500/30":l.license.days_left<=7?"text-red-300 bg-red-500/10 border-red-500/30":"text-amber-300 bg-amber-500/10 border-amber-500/30"}`,children:[(0,s.jsx)("span",{"aria-hidden":!0,className:"w-1.5 h-1.5 rounded-full bg-current"}),l.license.type,l.license.days_left?` \xb7 ${l.license.days_left}d left`:""]})]}),l?.license?(0,s.jsxs)("div",{className:"space-y-3 text-sm",children:[l.license.days_left<=7&&(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-red-400 font-medium",children:"⚠ Expiring soon"}),(0,s.jsxs)("span",{className:"text-red-400",children:[l.license.days_left," days left"]})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Expires"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:l.license.expires_at})]}),l.limits&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Agents"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:l.limits.max_agents})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Max Networks"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:l.limits.max_networks})]}),(0,s.jsxs)("div",{className:b,children:[(0,s.jsx)("span",{className:"text-gray-500",children:"Tasks/Day"}),(0,s.jsx)("span",{className:`text-gray-300 ${N}`,children:l.limits.max_tasks_day})]})]}),(0,s.jsxs)("div",{className:"pt-3 border-t border-[#2a2a4a]",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",value:i,onChange:e=>c(e.target.value),placeholder:"anet-XXXX-XXXX-XXXX-XXXX",className:"flex-1 bg-[#0a0a15] border border-[#2a2a4a] rounded px-3 py-2 text-xs text-white placeholder-gray-600 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!i.trim())return;let e=await fetch("/api/hub/license",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:i})}),s=await e.json();o(s.ok?`Activated: ${s.type}`:`Failed: ${s.error}`),s.ok&&c(""),setTimeout(()=>o(""),5e3)},className:"px-3 py-2 bg-cyan-600 hover:bg-cyan-500 text-white text-xs rounded transition-colors",children:"Activate"})]}),d&&(0,s.jsx)("div",{className:`mt-2 text-xs ${d.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:d})]})]}):(0,s.jsx)("div",{className:"text-xs text-gray-600",children:"License info not available"})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Change Password"}),(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("input",{type:"password",value:x,onChange:e=>m(e.target.value),placeholder:"Current password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("input",{type:"password",value:h,onChange:e=>u(e.target.value),placeholder:"New password",className:"w-full bg-[#0a0a15] border border-[#2a2a4a] rounded-lg px-3 py-2 text-sm text-white placeholder-gray-600 focus:border-cyan-500/50 focus:outline-none"}),(0,s.jsx)("button",{onClick:async()=>{if(!x||!h)return;let e=sessionStorage.getItem("anet_v3_auth");if(!e)return void p("Not logged in with V3 auth");let{token:s}=JSON.parse(e),a=await fetch("/api/hub/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",token:s,current_password:x,new_password:h})}),t=await a.json();if(p(t.ok?"Password changed":`Failed: ${t.error}`),t.ok){if(t.token){let s=JSON.parse(e);sessionStorage.setItem("anet_v3_auth",JSON.stringify({...s,token:t.token}))}m(""),u("")}setTimeout(()=>p(""),5e3)},disabled:!x||!h,className:"px-4 py-2 bg-cyan-600 hover:bg-cyan-500 disabled:bg-gray-800 disabled:text-gray-600 text-white text-sm rounded-lg transition-colors",children:"Change Password"})]}),g&&(0,s.jsx)("div",{className:`mt-2 text-xs ${g.startsWith("Failed")?"text-red-400":"text-green-400"}`,children:g})]}),(0,s.jsxs)("section",{className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300 mb-4",children:"Sign out"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-3",children:"Signing out clears your dashboard session cookie. You'll return to the login page."}),(0,s.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}).catch(()=>{}),window.location.assign("/login")},className:"px-4 py-2 bg-transparent hover:bg-[#1a1a2a] text-gray-300 text-sm rounded-lg border border-[#2a2a4a] hover:border-[#3a3a5a] transition-colors",children:"Sign out"})]})]}),(0,s.jsxs)("div",{id:"resources",className:"space-y-4 scroll-mt-6",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 px-1",children:[(0,s.jsx)("div",{className:"text-[11px] uppercase tracking-[0.14em] text-gray-400 font-semibold",children:"Resources"}),(0,s.jsx)("div",{className:"flex-1 h-px bg-[#2a2a4a]"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)(t.default,{href:"/settings/tokens",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"API Tokens"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create and manage tokens for CLI access."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]}),(0,s.jsxs)(t.default,{href:"/settings/networks",className:"bg-[#111128] border border-[#2a2a4a] rounded-xl p-5 hover:border-cyan-500/30 transition-colors",children:[(0,s.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:"Networks"}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-2",children:"Create, manage, and delete agent networks."}),(0,s.jsx)("span",{className:"text-xs text-cyan-400 mt-3 inline-block",children:"Manage →"})]})]})]})]})]})}])}]);