sparkrun-ui 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/bin/sparkrun-ui.mjs +2 -2
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/build-manifest.json +3 -3
- package/dist/.next/prerender-manifest.json +3 -3
- package/dist/.next/server/app/_global-error.html +1 -1
- package/dist/.next/server/app/_global-error.rsc +1 -1
- package/dist/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/.next/server/app/_not-found/page.js +1 -1
- package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +27 -26
- package/dist/.next/server/app/_not-found.segments/_full.segment.rsc +27 -26
- package/dist/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/dist/.next/server/app/_not-found.segments/_index.segment.rsc +11 -10
- package/dist/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/dist/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/dist/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/.next/server/app/benchmarks/[id]/page.js +1 -1
- package/dist/.next/server/app/benchmarks/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/benchmarks/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/benchmarks/new/page.js +2 -2
- package/dist/.next/server/app/benchmarks/new/page.js.nft.json +1 -1
- package/dist/.next/server/app/benchmarks/new/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/benchmarks/page.js +1 -1
- package/dist/.next/server/app/benchmarks/page.js.nft.json +1 -1
- package/dist/.next/server/app/benchmarks/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/chat/page.js +1 -1
- package/dist/.next/server/app/chat/page.js.nft.json +1 -1
- package/dist/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/dashboard/page.js +3 -3
- package/dist/.next/server/app/dashboard/page.js.nft.json +1 -1
- package/dist/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/index.html +1 -1
- package/dist/.next/server/app/index.rsc +25 -24
- package/dist/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/.next/server/app/index.segments/_full.segment.rsc +25 -24
- package/dist/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/dist/.next/server/app/index.segments/_index.segment.rsc +11 -10
- package/dist/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/.next/server/app/launch/page.js +1 -1
- package/dist/.next/server/app/launch/page.js.nft.json +1 -1
- package/dist/.next/server/app/launch/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/logs/[clusterId]/page.js +1 -1
- package/dist/.next/server/app/logs/[clusterId]/page.js.nft.json +1 -1
- package/dist/.next/server/app/logs/[clusterId]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/monitor/page.js +1 -1
- package/dist/.next/server/app/monitor/page.js.nft.json +1 -1
- package/dist/.next/server/app/monitor/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/page.js +1 -1
- package/dist/.next/server/app/page.js.nft.json +1 -1
- package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/recipes/page.js +2 -2
- package/dist/.next/server/app/recipes/page.js.nft.json +1 -1
- package/dist/.next/server/app/recipes/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/rpc/[[...rest]]/route.js.nft.json +1 -1
- package/dist/.next/server/chunks/node_modules__pnpm_0jzojku._.js +1 -1
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__021wpp6._.js +1 -1
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__030qcl1._.js +1 -1
- package/dist/.next/server/chunks/ssr/{[root-of-the-server]__0vyn26k._.js → [root-of-the-server]__03ntmap._.js} +2 -2
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__03qy0wk._.js +3 -0
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__08pj2hz._.js +1 -1
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__0a.-f32._.js +3 -0
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__0e7p6k4._.js +3 -0
- package/dist/.next/server/chunks/ssr/_0-wjfxk._.js +2 -2
- package/dist/.next/server/chunks/ssr/{_1341f_q._.js → _00my5cc._.js} +2 -2
- package/dist/.next/server/chunks/ssr/_05yc_-h._.js +3 -0
- package/dist/.next/server/chunks/ssr/{_0gz2jj3._.js → _090s43z._.js} +2 -2
- package/dist/.next/server/chunks/ssr/_097ibiz._.js +1 -1
- package/dist/.next/server/chunks/ssr/_0f.jwi.._.js +1 -1
- package/dist/.next/server/chunks/ssr/{_0ipzzmg._.js → _0fog1hx._.js} +2 -2
- package/dist/.next/server/chunks/ssr/_0g_f5t-._.js +3 -0
- package/dist/.next/server/chunks/ssr/{_0e~uzop._.js → _0gfn7bd._.js} +2 -2
- package/dist/.next/server/chunks/ssr/_0gqh-f9._.js +3 -0
- package/dist/.next/server/chunks/ssr/_0khf6ok._.js +1 -1
- package/dist/.next/server/chunks/ssr/{_0tmtgyr._.js → _0mckw1o._.js} +2 -2
- package/dist/.next/server/chunks/ssr/_0ofxfmv._.js +3 -0
- package/dist/.next/server/chunks/ssr/{app_components_launch_YamlEditor_tsx_0z4.3rh._.js → _13bxdgf._.js} +2 -2
- package/dist/.next/server/chunks/ssr/app_components_dashboard_DashboardLive_tsx_10_yvzp._.js +3 -0
- package/dist/.next/server/chunks/ssr/app_components_recipes_RecipesBrowser_tsx_0n9.1su._.js +1 -1
- package/dist/.next/server/middleware-build-manifest.js +3 -3
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.js +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/012fi5-4mhf_v.js +1 -0
- package/dist/.next/static/chunks/{0x_jizj5dqgej.js → 01_yfq-8lqzmt.js} +1 -1
- package/dist/.next/static/chunks/01f1zms1lqrcy.js +3 -0
- package/dist/.next/static/chunks/{00jg.s70z.j1c.js → 042zcq.ivk.2-.js} +1 -1
- package/dist/.next/static/chunks/{03-vdshfe25se.js → 099u.s_dit6xq.js} +1 -1
- package/dist/.next/static/chunks/0d~_2-hs97pb7.js +1 -0
- package/dist/.next/static/chunks/0gl6b7fo9x~2f.js +1 -0
- package/dist/.next/static/chunks/0n3-kh874-tfi.js +1 -0
- package/dist/.next/static/chunks/{0ju0bvrzyg9dg.js → 0oed4uv5d6zmw.js} +1 -1
- package/dist/.next/static/chunks/0sbgc78goj4w..css +3 -0
- package/dist/.next/static/chunks/0t7xi-nb9qq.3.js +1 -0
- package/dist/.next/static/chunks/0txak0~fepoq-.js +1 -0
- package/dist/.next/static/chunks/0~vr4yy0oyt_9.js +1 -0
- package/dist/.next/static/chunks/14n0juh5a1k9l.js +1 -0
- package/dist/.next/static/chunks/{15hgxc0kqs~~c.js → 17sje3fs9cg7z.js} +12 -12
- package/dist/package.json +3 -3
- package/package.json +3 -3
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__037oli.._.js +0 -3
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__0nnr~eq._.js +0 -3
- package/dist/.next/server/chunks/ssr/[root-of-the-server]__0yxok2p._.js +0 -3
- package/dist/.next/server/chunks/ssr/_023_eyi._.js +0 -3
- package/dist/.next/server/chunks/ssr/_0bx~mk0._.js +0 -3
- package/dist/.next/server/chunks/ssr/_0wsg55s._.js +0 -3
- package/dist/.next/static/chunks/06p4ryy69hlx0.js +0 -1
- package/dist/.next/static/chunks/078_hq0asokwv.js +0 -1
- package/dist/.next/static/chunks/08jevk~tl13fz.js +0 -1
- package/dist/.next/static/chunks/093uee.ipdzn_.css +0 -3
- package/dist/.next/static/chunks/0993.7t31zdad.js +0 -3
- package/dist/.next/static/chunks/0x4ezu8r2b-ga.js +0 -1
- package/dist/.next/static/chunks/0~keq1f3_2ge-.js +0 -1
- /package/dist/.next/static/{K7dVTTbWGsVpPXwtNCeQZ → _xj5uS9JHudQNHtZFvZwb}/_buildManifest.js +0 -0
- /package/dist/.next/static/{K7dVTTbWGsVpPXwtNCeQZ → _xj5uS9JHudQNHtZFvZwb}/_clientMiddlewareManifest.js +0 -0
- /package/dist/.next/static/{K7dVTTbWGsVpPXwtNCeQZ → _xj5uS9JHudQNHtZFvZwb}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[10558,a=>{"use strict";var b=a.i(57096),c=a.i(84668),d=a.i(71148),e=a.i(36134),f=a.i(25273),g=a.i(37942),h=a.i(49043),i=a.i(66917),j=a.i(28536),k=a.i(72558),l=a.i(22496),m=a.i(35179),n=a.i(77487),o=a.i(65062),p=a.i(76760),q=a.i(48398);function r({workload:a,recipe:e}){let[h,m]=(0,c.useState)(!1),[t,u]=(0,c.useState)(!1),[v,w]=(0,c.useTransition)(),x=(0,q.useWorkloadHealth)(a.cluster_id),y=a.meta.model||a.meta.recipe||a.cluster_id,z=function(a){if(!a)return null;let b=a.match(/^Up\s+(.+?)(?:\s*\([^)]*\))?\s*$/);return b?.[1]??null}(a.status),A=e?.registeredName??a.meta.recipe;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(g.Card,{children:[(0,b.jsx)(g.CardHeader,{children:(0,b.jsx)(g.CardTitle,{className:"text-sm font-semibold",children:y})}),(0,b.jsxs)(g.CardBody,{className:"flex flex-col gap-3 text-sm",children:[(0,b.jsxs)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs",children:[e&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Recipe"}),(0,b.jsx)("dd",{children:A?(0,b.jsx)("button",{type:"button",onClick:()=>u(!0),className:"cursor-pointer font-medium text-sky-600 hover:underline dark:text-sky-400",children:e.label}):(0,b.jsx)("span",{className:"font-medium text-zinc-700 dark:text-zinc-300",children:e.label})})]}),a.meta.port&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Port"}),(0,b.jsx)("dd",{className:"font-mono text-zinc-700 dark:text-zinc-300",children:a.meta.port})]}),a.host&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Host"}),(0,b.jsx)("dd",{className:"font-mono text-zinc-700 dark:text-zinc-300",children:a.host})]}),z&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Uptime"}),(0,b.jsx)("dd",{className:"text-zinc-700 dark:text-zinc-300",children:z})]}),(0,b.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Status"}),(0,b.jsx)("dd",{children:(0,b.jsx)(s,{health:x,containerStatus:a.status})})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[a.host&&a.meta.port&&(0,b.jsx)(d.default,{href:`/chat?clusterId=${encodeURIComponent(a.cluster_id)}`,children:(0,b.jsxs)(i.Button,{variant:"ghost",size:"sm",children:[(0,b.jsx)(j.MessageSquare,{size:14}),"Chat"]})}),(0,b.jsx)(d.default,{href:`/logs/${a.cluster_id}`,children:(0,b.jsxs)(i.Button,{variant:"ghost",size:"sm",children:[(0,b.jsx)(l.ScrollText,{size:14}),"Logs"]})}),(0,b.jsxs)(i.Button,{variant:"danger",size:"sm",onClick:()=>m(!0),disabled:v,children:[(0,b.jsx)(k.Square,{size:14}),v?"Stopping…":"Stop"]})]})]})]}),(0,b.jsx)(n.AlertDialog,{open:h,onOpenChange:m,title:"Stop this workload?",description:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"block font-mono",children:y}),(0,b.jsxs)("span",{className:"mt-2 block",children:["The container will be terminated on ",a.host??"the target host","."]})]}),confirmLabel:"Stop",destructive:!0,onConfirm:()=>{w(async()=>{try{await f.rpc.workloads.stop({clusterId:a.cluster_id}),o.toast.success("Stop requested",`${y} is shutting down`)}catch(b){let a=b instanceof Error?b.message:"Unknown error";o.toast.error("Stop failed",a)}})}}),e&&A&&(0,b.jsx)(p.RecipeShowDialog,{name:A,title:e.label,open:t,onOpenChange:a=>!a&&u(!1),showLaunch:!1})]})}function s({health:a,containerStatus:c}){return a.ready?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500"}),(0,b.jsx)("span",{className:"text-zinc-700 dark:text-zinc-300",children:"Ready"})]}):"loading"===a.state?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)(m.Loader2,{size:10,className:"animate-spin text-zinc-400"}),(0,b.jsx)("span",{className:"text-zinc-500 capitalize dark:text-zinc-400",children:c??"Checking…"})]}):"starting"===a.state?(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)(m.Loader2,{size:10,className:"animate-spin text-amber-500"}),(0,b.jsx)("span",{className:"text-amber-700 dark:text-amber-300",children:"Starting…"})]}):(0,b.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-500"}),(0,b.jsx)("span",{className:"text-red-700 dark:text-red-300",title:a.reason??void 0,children:"Unreachable"})]})}var t=a.i(38756);let u=(0,a.i(64588).default)("memory-stick",[["path",{d:"M12 12v-2",key:"fwoke6"}],["path",{d:"M12 18v-2",key:"qj6yno"}],["path",{d:"M16 12v-2",key:"heuere"}],["path",{d:"M16 18v-2",key:"s1ct0w"}],["path",{d:"M2 11h1.5",key:"15p63e"}],["path",{d:"M20 18v-2",key:"12ehxp"}],["path",{d:"M20.5 11H22",key:"khsy7a"}],["path",{d:"M4 18v-2",key:"1c3oqr"}],["path",{d:"M8 12v-2",key:"1mwtfd"}],["path",{d:"M8 18v-2",key:"qcmpov"}],["rect",{x:"2",y:"6",width:"20",height:"10",rx:"2",key:"1qcswk"}]]);var v=a.i(61430),w=a.i(4733),x=a.i(56352);function y(a){if(!a)return 0;let b=parseFloat(a);return Number.isFinite(b)?b:0}function z(a){if(!a)return{hostCount:0,cpuAvg:0,gpuAvg:0,memUsedGb:0,memTotalGb:0,gpuMemUsedGb:0,gpuMemTotalGb:0,powerW:0,cpuTempC:0,gpuTempC:0,jobsTotal:0};let b=Object.values(a.hosts),c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;for(let a of b)c+=y(a.cpu_usage_pct),d+=y(a.gpu_util_pct),e+=y(a.mem_used_mb),f+=y(a.mem_total_mb),g+=y(a.gpu_mem_used_mb),h+=y(a.gpu_mem_total_mb),i+=y(a.gpu_power_w),j+=y(a.cpu_temp_c),k+=y(a.gpu_temp_c),l+=y(a.sparkrun_jobs);let m=b.length||1;return{hostCount:b.length,cpuAvg:c/m,gpuAvg:d/m,memUsedGb:e/1024,memTotalGb:f/1024,gpuMemUsedGb:g/1024,gpuMemTotalGb:h/1024,powerW:i,cpuTempC:j/m,gpuTempC:k/m,jobsTotal:l}}function A(){let[a,d]=(0,c.useState)(null),[e,h]=(0,c.useState)({cpu:[],gpu:[]}),[i,j]=(0,c.useState)(!1);(0,c.useEffect)(()=>{let a=new AbortController,b=!1;return(async()=>{try{let c=await f.rpc.monitor.stream({intervalSec:2},{signal:a.signal});for await(let a of(j(!0),c)){if(b)break;d(a);let c=z(a);h(a=>({cpu:B(a.cpu,c.cpuAvg),gpu:B(a.gpu,c.gpuAvg)}))}}catch(a){b||a instanceof DOMException&&"AbortError"===a.name||console.error("[monitor.stream]",a)}finally{b||j(!1)}})(),()=>{b=!0,a.abort()}},[]);let k=z(a),l=k.memTotalGb?k.memUsedGb/k.memTotalGb*100:0,m=k.gpuMemTotalGb?k.gpuMemUsedGb/k.gpuMemTotalGb*100:0;return(0,b.jsx)(g.Card,{children:(0,b.jsxs)(g.CardBody,{className:"p-5",children:[(0,b.jsxs)("div",{className:"mb-4 flex items-baseline justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(v.Server,{size:14,className:"text-zinc-500"}),(0,b.jsx)("span",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"Cluster overview"}),(0,b.jsxs)("span",{className:"text-xs text-zinc-500",children:["· ",k.hostCount||"—"," host",1===k.hostCount?"":"s"," · ",k.jobsTotal," job",1===k.jobsTotal?"":"s"]})]}),(0,b.jsx)("span",{className:"inline-flex h-2 w-2 rounded-full "+(i?"animate-pulse bg-emerald-500":"bg-zinc-300"),title:i?"live":"reconnecting"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 lg:grid-cols-5",children:[(0,b.jsx)(F,{icon:(0,b.jsx)(t.Cpu,{size:14}),tone:"sky",label:"CPU",value:`${k.cpuAvg.toFixed(1)}%`,sub:`avg across ${k.hostCount||0}`,pct:k.cpuAvg,spark:e.cpu}),(0,b.jsx)(F,{icon:(0,b.jsx)(x.Zap,{size:14}),tone:"purple",label:"GPU",value:`${k.gpuAvg.toFixed(0)}%`,sub:`avg across ${k.hostCount||0}`,pct:k.gpuAvg,spark:e.gpu}),(0,b.jsx)(F,{icon:(0,b.jsx)(u,{size:14}),tone:"green",label:"Memory",value:`${k.memUsedGb.toFixed(0)} / ${k.memTotalGb.toFixed(0)} GB`,sub:`${l.toFixed(0)}% used`,pct:l}),(0,b.jsx)(F,{icon:(0,b.jsx)(x.Zap,{size:14}),tone:"amber",label:"Power",value:`${k.powerW.toFixed(1)} W`,sub:k.gpuMemTotalGb?`GPU mem ${k.gpuMemUsedGb.toFixed(0)}/${k.gpuMemTotalGb.toFixed(0)} GB`:"total GPU draw",pct:m}),(0,b.jsx)(F,{icon:(0,b.jsx)(w.Thermometer,{size:14}),tone:"red",label:"Temps",value:k.cpuTempC||k.gpuTempC?`${k.gpuTempC.toFixed(0)}\xb0C / ${k.cpuTempC.toFixed(0)}\xb0C`:"—",sub:"GPU / CPU avg",pct:k.gpuTempC>0?Math.min(100,k.gpuTempC/100*100):0})]})]})})}function B(a,b){let c=a.concat(b);return c.length>40?c.slice(-40):c}let C={sky:"bg-sky-500 dark:bg-sky-400",purple:"bg-purple-500 dark:bg-purple-400",green:"bg-emerald-500 dark:bg-emerald-400",amber:"bg-amber-500 dark:bg-amber-400",red:"bg-red-500 dark:bg-red-400"},D={sky:"stroke-sky-500 dark:stroke-sky-400",purple:"stroke-purple-500 dark:stroke-purple-400",green:"stroke-emerald-500 dark:stroke-emerald-400",amber:"stroke-amber-500 dark:stroke-amber-400"},E={sky:"text-sky-600 dark:text-sky-400",purple:"text-purple-600 dark:text-purple-400",green:"text-emerald-600 dark:text-emerald-400",amber:"text-amber-600 dark:text-amber-400",red:"text-red-600 dark:text-red-400"};function F({icon:a,label:c,value:d,sub:e,pct:f,tone:g,spark:h}){let i=Math.max(0,Math.min(100,f));return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:`flex items-center gap-1.5 text-xs font-medium ${E[g]}`,children:[a,c]}),h&&h.length>2&&(0,b.jsx)(G,{values:h,className:D[g]})]}),(0,b.jsx)("div",{className:"font-mono text-xl font-semibold text-zinc-900 dark:text-zinc-100",children:d}),(0,b.jsx)("div",{className:"h-1.5 overflow-hidden rounded bg-zinc-100 dark:bg-zinc-800",children:(0,b.jsx)("div",{className:`${C[g]} h-full transition-all duration-300`,style:{width:`${i}%`}})}),(0,b.jsx)("div",{className:"text-[11px] text-zinc-500 dark:text-zinc-400",children:e})]})}function G({values:a,className:c}){let d=Math.max(100,...a),e=56/Math.max(1,a.length-1),f=a.map((a,b)=>`${0===b?"M":"L"} ${b*e} ${16-a/d*16}`).join(" ");return(0,b.jsx)("svg",{width:56,height:16,viewBox:"0 0 56 16",className:"flex-shrink-0",children:(0,b.jsx)("path",{d:f,fill:"none",strokeWidth:1.25,className:c})})}a.s(["DashboardLive",0,function({initial:a,recipeByCluster:j}){let[k,l]=(0,c.useState)(a),[m,n]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{let a=new AbortController,b=!1;return(async()=>{try{for await(let c of(await f.rpc.status.stream({intervalMs:3e3},{signal:a.signal}))){if(b)break;l(c),n(!0)}}catch(a){b||n(!1),a instanceof DOMException&&"AbortError"===a.name||console.error("[status.stream]",a)}})(),()=>{b=!0,a.abort()}},[]),(0,b.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,b.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,b.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Dashboard"}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsxs)(h.Badge,{tone:"sky",children:[k.host_count," host",1===k.host_count?"":"s"]}),(0,b.jsxs)(h.Badge,{tone:"green",children:[k.total_containers," running"]}),(0,b.jsx)(h.Badge,{tone:m?"neutral":"amber",children:m?"live":"reconnecting…"})]})]}),(0,b.jsx)(A,{}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsx)("h2",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"Workloads"}),0===k.solo_entries.length?(0,b.jsx)(g.Card,{children:(0,b.jsxs)(g.CardBody,{className:"flex flex-col items-center gap-4 py-12 text-center",children:[(0,b.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-sky-50 text-sky-600 dark:bg-sky-950 dark:text-sky-400",children:(0,b.jsx)(e.Rocket,{size:22})}),(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsx)("h3",{className:"text-base font-semibold text-zinc-900 dark:text-zinc-100",children:"No workloads running"}),(0,b.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:"Launch a recipe to start an inference workload on your cluster."})]}),(0,b.jsx)(d.default,{href:"/launch",children:(0,b.jsxs)(i.Button,{variant:"primary",children:[(0,b.jsx)(e.Rocket,{size:14}),"Launch a recipe"]})})]})}):(0,b.jsx)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:k.solo_entries.map(a=>(0,b.jsx)(r,{workload:a,recipe:j.get(a.cluster_id)},a.cluster_id))})]})]})}],10558)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=app_components_dashboard_DashboardLive_tsx_10_yvzp._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[74827,a=>{"use strict";var b,c=a.i(57096),d=a.i(84668),e=a.i(71148),f=a.i(36134);let g=(0,a.i(64588).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var h=a.i(40255),i=a.i(37942),j=a.i(49043),k=a.i(66917),l=a.i(54625),m=a.i(58499),n=a.i(55418),o=a.i(35179);a.s([],13968),a.i(13968);var p=a.i(77085),q=a.i(36512),r=a.i(64887),s=a.i(39052),t=a.i(70180),u=a.i(6609),v=a.i(95067);let w=d.createContext(void 0);function x(a){let b=d.useContext(w);if(void 0===b&&!a)throw Error((0,v.default)(50));return b}var y=a.i(5821),z=a.i(27340),A=a.i(93464),B=a.i(13990),C=a.i(9530),D=a.i(38465),E=a.i(36486),F=a.i(17924),G=a.i(95133);function H(a,b,c,d){return{left:a,top:b,right:c,bottom:d,x:a,y:b,width:c-a,height:d-b}}function I(a){let b,c=[],d=1/0,e=1/0,f=-1/0,g=-1/0;for(let h of Array.from(a).sort((a,b)=>a.top-b.top)){if(d=Math.min(d,h.left),e=Math.min(e,h.top),f=Math.max(f,h.right),g=Math.max(g,h.bottom),!b||h.top-b.top>b.height/2)c.push({left:h.left,top:h.top,right:h.right,bottom:h.bottom,width:h.width,height:h.height});else{let a=c[c.length-1];a.left=Math.min(a.left,h.left),a.right=Math.max(a.right,h.right),a.bottom=Math.max(a.bottom,h.bottom),a.width=a.right-a.left,a.height=a.bottom-a.top}b=h}return{lines:c,fallback:H(d,e,f,g)}}function J(a,b,c){return a.findIndex(a=>b>a.left-2&&b<a.right+2&&c>a.top-2&&c<a.bottom+2)}function K(a){return H(a.left,a.top,a.right,a.bottom)}function L(a,b,c,d){let e=function(a,b,c){let{lines:d}=I(a.getClientRects());if(d.length<2)return;let e=J(d,b,c);return{x:b,y:c,lineIndex:-1===e?void 0:e,element:a}}(b,c,d);return a.current=e,e}let M={...D.popupStoreSelectors,instantType:(0,B.createSelector)(a=>a.instantType),hasViewport:(0,B.createSelector)(a=>a.hasViewport)};class N extends C.ReactStore{constructor(a,b,c=!1){const e=new E.PopupTriggerMap,f={...(0,D.createInitialPopupStoreState)(),instantType:void 0,hasViewport:!1,...a};f.floatingRootContext=(0,D.createPopupFloatingRootContext)(e,b,c),super(f,{popupRef:d.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:e,closeDelayRef:{current:300},inlineRectCoordsRef:{current:void 0}},M)}setOpen=(a,b)=>{let c=b.reason,d=c===z.REASONS.triggerHover,e=a&&c===z.REASONS.triggerFocus,f=!a&&(c===z.REASONS.triggerPress||c===z.REASONS.escapeKey);if(b.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(a,b),b.isCanceled)return;let g=b.event;a&&d&&b.trigger&&"clientX"in g&&"clientY"in g&&this.context.inlineRectCoordsRef.current?.element!==b.trigger&&L(this.context.inlineRectCoordsRef,b.trigger,g.clientX,g.clientY),this.state.floatingRootContext.dispatchOpenChange(a,b);let h=()=>{let d={open:a};e?d.instantType="focus":f?d.instantType="dismiss":c===z.REASONS.triggerHover&&(d.instantType=void 0),(0,F.setOpenTriggerState)(d,a,b.trigger),this.update(d)};d?A.flushSync(h):h()};static useStore(a,b){return(0,F.usePopupStore)(a,(a,c)=>new N(b,a,c)).store}}var O=a.i(71463);function P(a){let{open:b,defaultOpen:e=!1,onOpenChange:f,onOpenChangeComplete:g,actionsRef:h,handle:i,triggerId:j,defaultTriggerId:k=null,children:l}=a,m=N.useStore(i?.store,{open:e,openProp:b,activeTriggerId:k,triggerIdProp:j});(0,s.useOnFirstRender)(()=>{void 0===b&&!1===m.state.open&&!0===e&&m.update({open:!0,activeTriggerId:k})}),m.useControlledProp("openProp",b),m.useControlledProp("triggerIdProp",j),m.useContextCallback("onOpenChange",f),m.useContextCallback("onOpenChangeComplete",g);let n=m.useState("open"),o=m.useState("activeTriggerId"),p=m.useState("mounted"),q=m.useState("payload");(0,F.useImplicitActiveTrigger)(m);let{forceUnmount:t}=(0,F.useOpenStateTransitions)(n,m,()=>{m.context.inlineRectCoordsRef.current=void 0});(0,r.useIsoLayoutEffect)(()=>{n&&null==o&&m.set("payload",void 0)},[m,o,n]);let u=d.useCallback(()=>{m.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.imperativeAction))},[m]);d.useImperativeHandle(h,()=>({unmount:t,close:u}),[t,u]);let v=n||p;return(0,c.jsxs)(w.Provider,{value:m,children:[v&&(0,c.jsx)(Q,{store:m}),"function"==typeof l?l({payload:q}):l]})}function Q({store:a}){let b=a.useState("floatingRootContext"),c=(0,t.useDismiss)(b),e=c.reference??q.EMPTY_OBJECT,f=c.trigger??q.EMPTY_OBJECT,g=d.useMemo(()=>(0,O.mergeProps)(F.FOCUSABLE_POPUP_PROPS,c.floating),[c.floating]);return(0,F.usePopupInteractionProps)(a,{activeTriggerProps:e,inactiveTriggerProps:f,popupProps:g}),null}let R=(0,p.fastComponent)(function(a){return x(!0)?(0,c.jsx)(P,{...a}):(0,c.jsx)(u.FloatingTree,{children:(0,c.jsx)(P,{...a})})}),S=d.createContext(void 0);var T=a.i(16975);let U=d.forwardRef(function(a,b){let{keepMounted:d=!1,...e}=a;return x().useState("mounted")||d?(0,c.jsx)(S.Provider,{value:d,children:(0,c.jsx)(T.FloatingPortalLite,{ref:b,...e})}):null});var V=a.i(4903),W=a.i(32645),X=a.i(14394),Y=a.i(96920),Z=a.i(3071),$=a.i(72061);let _=.1*.1;function aa(a,b,c,d,e,f){return d>=b!=f>=b&&a<=(e-c)*(b-d)/(f-d)+c}function ab(a,b,c,d,e,f,g,h,i,j){let k=!1;return aa(a,b,c,d,e,f)&&(k=!k),aa(a,b,e,f,g,h)&&(k=!k),aa(a,b,g,h,i,j)&&(k=!k),aa(a,b,i,j,c,d)&&(k=!k),k}function ac(a,b,c,d,e,f){let g=Math.min(c,e),h=Math.max(c,e),i=Math.min(d,f),j=Math.max(d,f);return a>=g&&a<=h&&b>=i&&b<=j}var ad=a.i(75078),ae=a.i(99721),af=a.i(42161),ag=a.i(66659),ah=a.i(10842),ai=a.i(76655);let aj=ae.isMac&&ae.isSafari;var ak=a.i(57723),al=a.i(71979),am=a.i(49639),an=a.i(92852),ao=a.i(57189);class ap{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new Y.Timeout,this.restTimeout=new Y.Timeout,this.handleCloseOptions=void 0}static create(){return new ap}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose}let aq=new WeakMap;function ar(a){if(!a.performedPointerEventsMutation)return;let b=a.pointerEventsScopeElement;b&&aq.get(b)===a&&(a.pointerEventsScopeElement?.style.removeProperty("pointer-events"),a.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),a.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),aq.delete(b)),a.performedPointerEventsMutation=!1,a.pointerEventsScopeElement=null,a.pointerEventsReferenceElement=null,a.pointerEventsFloatingElement=null}function as(a,b){let{scopeElement:c,referenceElement:d,floatingElement:e}=b,f=aq.get(c);f&&f!==a&&ar(f),ar(a),a.performedPointerEventsMutation=!0,a.pointerEventsScopeElement=c,a.pointerEventsReferenceElement=d,a.pointerEventsFloatingElement=e,aq.set(c,a),c.style.pointerEvents="none",d.style.pointerEvents="auto",e.style.pointerEvents="auto"}function at(a){let b=a.context.dataRef.current,c=(0,ao.useRefWithInit)(()=>b.hoverInteractionState??ap.create()).current;return b.hoverInteractionState||(b.hoverInteractionState=c),(0,an.useOnMount)(b.hoverInteractionState.disposeEffect),b.hoverInteractionState}function au(a,b,c){let d=null==c||(0,am.isMouseLikePointerType)(c)?"function"==typeof a?a():a:0;return"number"==typeof d?d:d?.[b]}function av(a){return"function"==typeof a?a():a}function aw(a,b){return b||"click"===a||"mousedown"===a}var ax=ai;let ay={current:null},az=(0,p.fastComponentRef)(function(a,b){let{render:c,className:e,delay:f,closeDelay:g,id:h,payload:i,handle:j,style:k,...l}=a,m=x(!0),n=j?.store??m;if(!n)throw Error((0,v.default)(89));let o=(0,X.useBaseUiId)(h),p=n.useState("isTriggerActive",o),q=n.useState("isOpenedByTrigger",o),s=n.useState("floatingRootContext"),t=n.context.inlineRectCoordsRef,w=d.useRef(null),B=f??600,C=g??300,{registerTrigger:D,isMountedByThisTrigger:E}=(0,F.useTriggerDataForwarding)(o,w,n,{payload:i});(0,r.useIsoLayoutEffect)(()=>{E&&(n.context.closeDelayRef.current=C)},[n,E,C]);let H=function(a,b={}){let{enabled:c=!0,delay:e=0,handleClose:f=null,mouseOnly:g=!1,restMs:h=0,move:i=!0,triggerElementRef:j=ay,externalTree:k,isActiveTrigger:l=!0,getHandleCloseContext:m,isClosing:n,shouldOpen:o}=b,p="rootStore"in a?a.rootStore:a,{dataRef:q,events:r}=p.context,s=(0,u.useFloatingTree)(k),t=at(p),v=d.useRef(!1),w=(0,al.useValueAsRef)(f),x=(0,al.useValueAsRef)(e),B=(0,al.useValueAsRef)(h),C=(0,al.useValueAsRef)(c),D=(0,al.useValueAsRef)(o),E=(0,al.useValueAsRef)(n),F=(0,ak.useStableCallback)(()=>aw(q.current.openEvent?.type,t.interactedInside)),H=(0,ak.useStableCallback)(()=>D.current?.()!==!1),I=(0,ak.useStableCallback)((a,b,c)=>{let d=p.context.triggerElements;return d.hasElement(b)?!a||!(0,Z.contains)(a,b):!!(0,G.isElement)(c)&&d.hasMatchingElement(a=>(0,Z.contains)(a,c))&&(!a||!(0,Z.contains)(a,c))}),J=(0,ak.useStableCallback)(()=>{t.handler&&((0,ag.ownerDocument)(p.select("domReferenceElement")).removeEventListener("mousemove",t.handler),t.handler=void 0)}),K=(0,ak.useStableCallback)(()=>{ar(t)});return l&&(t.handleCloseOptions=w.current?.__options),d.useEffect(()=>J,[J]),d.useEffect(()=>{if(c)return r.on("openchange",a),()=>{r.off("openchange",a)};function a(a){a.open?v.current=!1:(v.current=a.reason===z.REASONS.triggerHover,J(),t.openChangeTimeout.clear(),t.restTimeout.clear(),t.blockMouseMove=!0,t.restTimeoutPending=!1)}},[c,r,t,J]),d.useEffect(()=>{if(!c)return;function a(b,c=!0){let d=au(x.current,"close",t.pointerType);d?t.openChangeTimeout.start(d,()=>{p.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,b)),s?.events.emit("floating.closed",b)}):c&&(t.openChangeTimeout.clear(),p.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,b)),s?.events.emit("floating.closed",b))}let b=j.current??(l?p.select("domReferenceElement"):null);if((0,G.isElement)(b))return i?(0,af.mergeCleanups)((0,ad.addEventListener)(b,"mousemove",d,{once:!0}),(0,ad.addEventListener)(b,"mouseenter",d),(0,ad.addEventListener)(b,"mouseleave",e)):(0,af.mergeCleanups)((0,ad.addEventListener)(b,"mouseenter",d),(0,ad.addEventListener)(b,"mouseleave",e));function d(a){if(t.openChangeTimeout.clear(),t.blockMouseMove=!1,g&&!(0,am.isMouseLikePointerType)(t.pointerType))return;let b=av(B.current),c=au(x.current,"open",t.pointerType),d=(0,Z.getTarget)(a),e=a.currentTarget??null,f=p.select("domReferenceElement"),h=e;if((0,G.isElement)(d)&&!p.context.triggerElements.hasElement(d)){for(let a of p.context.triggerElements.elements())if((0,Z.contains)(a,d)){h=a;break}}(0,G.isElement)(e)&&(0,G.isElement)(f)&&!p.context.triggerElements.hasElement(e)&&(0,Z.contains)(e,f)&&(h=f);let i=null!=h&&I(f,h,d),j=p.select("open"),k=E.current?.()??"ending"===p.select("transitionStatus"),l=!j&&k&&v.current,m=!i&&(0,G.isElement)(h)&&(0,G.isElement)(f)&&(0,Z.contains)(f,h)&&l,n=b>0&&!c,o=!j||i;if(i&&(j||l)||m){H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,a,h));return}!n&&(c?t.openChangeTimeout.start(c,()=>{o&&H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,a,h))}):o&&H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,a,h)))}function e(b){if(F())return void K();J();let c=p.select("domReferenceElement"),d=(0,ag.ownerDocument)(c);t.restTimeout.clear(),t.restTimeoutPending=!1;let e=q.current.floatingContext??m?.();if(!(0,ax.isTargetInsideEnabledTrigger)(b.relatedTarget,p.context.triggerElements)){if(w.current&&e){p.select("open")||t.openChangeTimeout.clear();let c=j.current;t.handler=w.current({...e,tree:s,x:b.clientX,y:b.clientY,onClose(){K(),J(),C.current&&!F()&&c===p.select("domReferenceElement")&&a(b,!0)}}),d.addEventListener("mousemove",t.handler),t.handler(b);return}"touch"===t.pointerType&&(0,Z.contains)(p.select("floatingElement"),b.relatedTarget)||a(b)}}},[J,K,q,x,p,c,w,t,l,I,F,g,i,B,j,s,C,m,E,H]),d.useMemo(()=>{if(c)return{onPointerDown:a,onPointerEnter:a,onMouseMove(a){let{nativeEvent:b}=a,c=a.currentTarget,d=p.select("domReferenceElement"),e=p.select("open"),f=I(d,c,a.target);if(g&&!(0,am.isMouseLikePointerType)(t.pointerType))return;if(e&&f&&t.handleCloseOptions?.blockPointerEvents){let a=p.select("floatingElement");if(a){let b=t.handleCloseOptions?.getScope?.()??c.ownerDocument.body;as(t,{scopeElement:b,referenceElement:c,floatingElement:a})}}let h=av(B.current);function i(){if(t.restTimeoutPending=!1,F())return;let a=p.select("open");!t.blockMouseMove&&(!a||f)&&H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,b,c))}(!e||f)&&0!==h&&(!f&&t.restTimeoutPending&&a.movementX**2+a.movementY**2<2||(t.restTimeout.clear(),"touch"===t.pointerType?A.flushSync(()=>{i()}):f&&e?i():(t.restTimeoutPending=!0,t.restTimeout.start(h,i))))}};function a(a){t.pointerType=a.pointerType}},[c,t,F,I,g,p,B,H])}(s,{mouseOnly:!0,move:!1,handleClose:function(a={}){let{blockPointerEvents:b=!1}=a,c=new Y.Timeout,d=({x:a,y:b,placement:d,elements:e,onClose:f,nodeId:g,tree:h})=>{let i=d?.split("-")[0],j=!1,k=null,l=null,m="u">typeof performance?performance.now():0;return function(d){c.clear();let n=e.domReference,o=e.floating;if(!n||!o||null==i||null==a||null==b)return;let{clientX:p,clientY:q}=d,r=(0,Z.getTarget)(d),s="mouseleave"===d.type,t=(0,Z.contains)(o,r),u=(0,Z.contains)(n,r);if(t&&(j=!0,!s))return;if(u&&(j=!1,!s)){j=!0;return}if(s&&(0,G.isElement)(d.relatedTarget)&&(0,Z.contains)(o,d.relatedTarget))return;function v(){return!!(h&&(0,$.getNodeChildren)(h.nodesRef.current,g).length>0)}function w(){v()||(c.clear(),f())}if(v())return;let x=n.getBoundingClientRect(),y=o.getBoundingClientRect(),z=a>y.right-y.width/2,A=b>y.bottom-y.height/2,B=y.width>x.width,C=y.height>x.height,D=(B?x:y).left,E=(B?x:y).right,F=(C?x:y).top,H=(C?x:y).bottom;if("top"===i&&b>=x.bottom-1||"bottom"===i&&b<=x.top+1||"left"===i&&a>=x.right-1||"right"===i&&a<=x.left+1)return void w();let I=!1;switch(i){case"top":I=ac(p,q,D,x.top+1,E,y.bottom-1);break;case"bottom":I=ac(p,q,D,y.top+1,E,x.bottom-1);break;case"left":I=ac(p,q,y.right-1,H,x.left+1,F);break;case"right":I=ac(p,q,x.right-1,H,y.left+1,F)}if(I)return;if(j&&(!(p>=x.x)||!(p<=x.x+x.width)||!(q>=x.y)||!(q<=x.y+x.height))||!s&&function(a,b){let c=performance.now(),d=c-m;if(null===k||null===l||0===d)return k=a,l=b,m=c,!1;let e=a-k,f=b-l;return k=a,l=b,m=c,e*e+f*f<d*d*_}(p,q))return void w();let J=!1;switch(i){case"top":{let c=B?.25:2,d=b+.5+1,e=z||B?y.bottom-.5:y.top,f=z?B?y.bottom-.5:y.top:y.bottom-.5;J=ab(p,q,B||z?a+c:a-c,d,B?a-c:z?a+c:a-c,d,y.left,e,y.right,f);break}case"bottom":{let c=B?.25:2,d=b-.5,e=z||B?y.top+.5:y.bottom,f=z?B?y.top+.5:y.bottom:y.top+.5;J=ab(p,q,B||z?a+c:a-c,d,B?a-c:z?a+c:a-c,d,y.left,e,y.right,f);break}case"left":{let c=C?.25:2,d=a+.5+1,e=A||C?y.right-.5:y.left,f=A?C?y.right-.5:y.left:y.right-.5;J=ab(p,q,e,y.top,f,y.bottom,d,C||A?b+c:b-c,d,C?b-c:A?b+c:b-c);break}case"right":{let c=C?.25:2,d=a-.5,e=A||C?y.left+.5:y.right,f=A?C?y.left+.5:y.right:y.left+.5;J=ab(p,q,d,C||A?b+c:b-c,d,C?b-c:A?b+c:b-c,e,y.top,f,y.bottom)}}J?j||c.start(40,w):w()}};return d.__options={...a,blockPointerEvents:b},d}(),delay:()=>({open:B,close:C}),triggerElementRef:w,isActiveTrigger:p,isClosing:()=>"ending"===n.select("transitionStatus")}),I=function(a,b={}){let{enabled:c=!0,delay:e}=b,f="rootStore"in a?a.rootStore:a,{events:g,dataRef:h}=f.context,i=d.useRef(!1),j=d.useRef(null),k=d.useRef(!0),l=(0,Y.useTimeout)();d.useEffect(()=>{let a=f.select("domReferenceElement");if(!c)return;let b=(0,G.getWindow)(a);return(0,af.mergeCleanups)((0,ad.addEventListener)(b,"blur",function(){let a=f.select("domReferenceElement");!f.select("open")&&(0,G.isHTMLElement)(a)&&a===(0,Z.activeElement)((0,ag.ownerDocument)(a))&&(i.current=!0)}),aj&&(0,ad.addEventListener)(b,"keydown",function(){k.current=!0},!0),aj&&(0,ad.addEventListener)(b,"pointerdown",function(){k.current=!1},!0))},[f,c]),d.useEffect(()=>{if(c)return g.on("openchange",a),()=>{g.off("openchange",a)};function a(a){if(a.reason===z.REASONS.triggerPress||a.reason===z.REASONS.escapeKey){let a=f.select("domReferenceElement");(0,G.isElement)(a)&&(j.current=a,i.current=!0)}}},[g,c,f]);let m=d.useMemo(()=>{function a(){i.current=!1,j.current=null}return{onMouseLeave(){a()},onFocus(b){let c=b.currentTarget;if(i.current){if(j.current===c)return;a()}let d=(0,Z.getTarget)(b.nativeEvent);if((0,G.isElement)(d)){if(aj&&!b.relatedTarget){if(!k.current&&!(0,ai.isTypeableElement)(d))return}else if(!(0,ai.matchesFocusVisible)(d))return}let g=(0,ai.isTargetInsideEnabledTrigger)(b.relatedTarget,f.context.triggerElements),{nativeEvent:h,currentTarget:m}=b,n="function"==typeof e?e():e;f.select("open")&&g||0===n||void 0===n?f.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerFocus,h,m)):l.start(n,()=>{i.current||f.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerFocus,h,m))})},onBlur(b){a();let c=b.relatedTarget,d=b.nativeEvent,e=(0,G.isElement)(c)&&c.hasAttribute((0,ah.createAttribute)("focus-guard"))&&"outside"===c.getAttribute("data-type");l.start(0,()=>{let a=f.select("domReferenceElement"),b=(0,Z.activeElement)((0,ag.ownerDocument)(a));if(!c&&b===a||(0,Z.contains)(h.current.floatingContext?.refs.floating.current,b)||(0,Z.contains)(a,b)||e)return;let g=c??b;(0,ai.isTargetInsideEnabledTrigger)(g,f.context.triggerElements)||f.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerFocus,d))})}}},[h,e,f,l]);return d.useMemo(()=>c?{reference:m,trigger:m}:{},[c,m])}(s,{delay:B}),J=n.useState("triggerProps",E),K=function(a,b){function c(b){L(a,b.currentTarget,b.clientX,b.clientY)}return{onFocus(){a.current=void 0},onMouseEnter:c,onMouseMove:function(a){b||c(a)}}}(t,q);return(0,W.useRenderElement)("a",a,{state:{open:q},ref:[b,D,w],props:[H,I.reference,J,K,{id:o},l],stateAttributesMapping:V.triggerOpenStateMapping})}),aA=d.createContext(void 0);function aB(){let a=d.useContext(aA);if(void 0===a)throw Error((0,v.default)(49));return a}var aC=a.i(66492),aD=a.i(72647),aE=a.i(96054),aF=a.i(52210);let aG=d.forwardRef(function(a,b){let{render:e,className:f,anchor:g,positionMethod:h="absolute",side:i="bottom",align:j="center",sideOffset:k=0,alignOffset:l=0,collisionBoundary:m="clipping-ancestors",collisionPadding:n=5,arrowPadding:o=5,sticky:p=!1,disableAnchorTracking:q=!1,collisionAvoidance:s=aD.POPUP_COLLISION_AVOIDANCE,style:t,...w}=a,y=x(),z=function(){let a=d.useContext(S);if(void 0===a)throw Error((0,v.default)(48));return a}(),A=(0,u.useFloatingNodeId)(),B=y.useState("open"),C=y.useState("mounted"),D=y.useState("floatingRootContext"),E=y.useState("instantType"),F=y.useState("transitionStatus"),L=y.useState("hasViewport"),M=y.context.inlineRectCoordsRef,N=(0,aC.useAnchorPositioning)({anchor:g,floatingRootContext:D,positionMethod:h,mounted:C,side:i,sideOffset:k,align:j,alignOffset:l,arrowPadding:o,collisionBoundary:m,collisionPadding:n,sticky:p,disableAnchorTracking:q,keepMounted:z,nodeId:A,collisionAvoidance:s,adaptiveOrigin:L?aE.adaptiveOrigin:void 0,inline:{name:"inline",async fn(a){let b=a.elements.reference;if("function"!=typeof b?.getClientRects)return{};let c="contextElement"in b&&b.contextElement?b.contextElement:(0,G.isElement)(b)?b:void 0,d=M.current,e=d?.element===b||d?.element===c?d:void 0,f=function(a,b,c){let{lines:d,fallback:e}=I(a.getClientRects());if(d.length<2)return null;let f=c?.x,g=c?.y,h=b[0];if(c?.lineIndex!=null&&d[c.lineIndex])return K(d[c.lineIndex]);if(null!=f&&null!=g){let a=J(d,f,g);if(-1!==a)return K(d[a])}if(2===d.length&&d[0].left>d[1].right&&null!=f&&null!=g)return e;if("t"===h||"b"===h){let a=d[0],b=d[d.length-1],c="t"===h?a:b;return H(c.left,a.top,c.right,b.bottom)}let i="l"===h,j=d[0].left,k=d[0].right,l=i?1/0:-1/0,m=d[0],n=d[0];for(let a of d){j=Math.min(j,a.left),k=Math.max(k,a.right);let b=i?a.left:a.right;i&&b<l||!i&&b>l?(l=b,m=a,n=a):b===l&&(n=a)}return H(j,m.top,k,n.bottom)}(b,a.placement,e);if(!f||"function"!=typeof a.platform.getElementRects)return{};let g=await a.platform.getElementRects({reference:{contextElement:c,getBoundingClientRect:()=>f},floating:a.elements.floating,strategy:a.strategy});return a.rects.reference.x===g.reference.x&&a.rects.reference.y===g.reference.y&&a.rects.reference.width===g.reference.width&&a.rects.reference.height===g.reference.height?{}:{reset:{rects:g}}}}}),O=N.update;(0,r.useIsoLayoutEffect)(()=>{B&&C&&O()},[B,C,O]);let P={open:B,side:N.side,align:N.align,anchorHidden:N.anchorHidden,instant:E},Q=(0,aF.usePositioner)(a,P,{styles:N.positionerStyles,transitionStatus:F,props:w,refs:[b,y.useStateSetter("positionerElement")],hidden:!C,inert:!B});return(0,c.jsx)(aA.Provider,{value:N,children:(0,c.jsx)(u.FloatingNode,{id:A,children:Q})})});var aH=a.i(79498),aI=a.i(50974),aJ=a.i(35317),ax=ai;let aK={...V.popupStateMapping,...aH.transitionStatusMapping},aL=d.forwardRef(function(a,b){let{className:c,render:e,style:f,...g}=a,h=x(),{side:i,align:j}=aB(),k=h.useState("open"),l=h.useState("instantType"),m=h.useState("transitionStatus"),n=h.useState("popupProps"),o=h.useState("floatingRootContext");return(0,aI.useOpenChangeComplete)({open:k,ref:h.context.popupRef,onComplete(){k&&h.context.onOpenChangeComplete?.(!0)}}),!function(a,b={}){let{enabled:c=!0,closeDelay:e=0,nodeId:f}=b,g="rootStore"in a?a.rootStore:a,h=g.useState("open"),i=g.useState("floatingElement"),j=g.useState("domReferenceElement"),{dataRef:k}=g.context,l=(0,u.useFloatingTree)(),m=(0,u.useFloatingParentNodeId)(),n=at(g),o=(0,Y.useTimeout)(),p=(0,ak.useStableCallback)(()=>aw(k.current.openEvent?.type,n.interactedInside)),q=(0,ak.useStableCallback)(()=>{var a;return a=k.current.openEvent?.type,a?.includes("mouse")&&"mousedown"!==a}),s=(0,ak.useStableCallback)(()=>{ar(n)});(0,r.useIsoLayoutEffect)(()=>{h||(n.pointerType=void 0,n.restTimeoutPending=!1,n.interactedInside=!1,s())},[h,n,s]),d.useEffect(()=>s,[s]),(0,r.useIsoLayoutEffect)(()=>{if(c&&h&&n.handleCloseOptions?.blockPointerEvents&&q()&&(0,G.isElement)(j)&&i){let a=(0,ag.ownerDocument)(i),b=l?.nodesRef.current.find(a=>a.id===m)?.context?.elements.floating;b&&(b.style.pointerEvents="");let c=n.pointerEventsScopeElement!==i?n.pointerEventsScopeElement:null,d=b!==i?b:null,e=n.handleCloseOptions?.getScope?.()??c??d??j.closest("[data-rootownerid]")??a.body;return as(n,{scopeElement:e,referenceElement:j,floatingElement:i}),()=>{s()}}},[c,h,j,i,n,q,l,m,s]),d.useEffect(()=>{if(c)return(0,af.mergeCleanups)(i&&(0,ad.addEventListener)(i,"mouseenter",function(){n.openChangeTimeout.clear(),o.clear(),l?.events.off("floating.closed",b),s()}),i&&(0,ad.addEventListener)(i,"mouseleave",function(c){if(a()&&l)return void l.events.on("floating.closed",b);if((0,ax.isTargetInsideEnabledTrigger)(c.relatedTarget,g.context.triggerElements))return;let d=k.current.floatingContext?.nodeId??f,h=c.relatedTarget;if(!(l&&d&&(0,G.isElement)(h)&&(0,$.getNodeChildren)(l.nodesRef.current,d,!1).some(a=>(0,Z.contains)(a.context?.elements.floating,h)))){let a,b;if(n.handler)return void n.handler(c);s(),p()||(a=au(e,"close",n.pointerType),b=()=>{g.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,c)),l?.events.emit("floating.closed",c)},a?n.openChangeTimeout.start(a,b):(n.openChangeTimeout.clear(),b()))}}),i&&(0,ad.addEventListener)(i,"pointerdown",function(a){let b=(0,Z.getTarget)(a);if(!(0,ai.isInteractiveElement)(b)){n.interactedInside=!1;return}n.interactedInside=b?.closest("[aria-haspopup]")!=null},!0),()=>{l?.events.off("floating.closed",b)});function a(){return!!(l&&m&&(0,$.getNodeChildren)(l.nodesRef.current,m).length>0)}function b(c){!l||!m||a()||o.start(0,()=>{l.events.off("floating.closed",b),g.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,c)),l.events.emit("floating.closed",c)})}},[c,i,g,k,e,f,p,s,n,l,m,o])}(o,{closeDelay:(0,ak.useStableCallback)(()=>h.context.closeDelayRef.current)}),(0,W.useRenderElement)("div",a,{state:{open:k,side:i,align:j,instant:l,transitionStatus:m},ref:[b,h.context.popupRef,h.useStateSetter("popupElement")],props:[n,(0,aJ.getDisabledMountTransitionStyles)(m),g],stateAttributesMapping:aK})}),aM=d.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=x(),{arrowRef:h,side:i,align:j,arrowUncentered:k,arrowStyles:l}=aB(),m=g.useState("open");return(0,W.useRenderElement)("div",a,{state:{open:m,side:i,align:j,uncentered:k},ref:[h,b],props:[{style:l,"aria-hidden":!0},f],stateAttributesMapping:V.popupStateMapping})}),aN={...V.popupStateMapping,...aH.transitionStatusMapping},aO=d.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=x(),h=g.useState("open"),i=g.useState("mounted"),j=g.useState("transitionStatus");return(0,W.useRenderElement)("div",a,{state:{open:h,transitionStatus:j},ref:[b],props:[{role:"presentation",hidden:!i,style:{pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none"}},f],stateAttributesMapping:aN})}),aP=((b={}).popupWidth="--popup-width",b.popupHeight="--popup-height",b);var aQ=a.i(41134),aR=a.i(7988),aS=a.i(13292),aT=a.i(92501),aU=a.i(27464);let aV=()=>!0;function aW(a,b,c){let d=a.style.getPropertyValue(b);return a.style.setProperty(b,c),()=>{a.style.setProperty(b,d)}}function aX(a,b){let c=[];for(let[d,e]of Object.entries(b))c.push(aW(a,d,e));return c.length?()=>{c.forEach(a=>a())}:q.NOOP}function aY(a,b){let c="auto"===b?"auto":`${b.width}px`,d="auto"===b?"auto":`${b.height}px`;a.style.setProperty("--popup-width",c),a.style.setProperty("--popup-height",d)}function aZ(a,b){let c="max-content"===b?"max-content":`${b.width}px`,d="max-content"===b?"max-content":`${b.height}px`;a.style.setProperty("--positioner-width",c),a.style.setProperty("--positioner-height",d)}var a$=a.i(53507);let a_={activationDirection:a=>a?{"data-activation-direction":a}:null},a0=d.forwardRef(function(a,b){let{render:e,className:f,style:g,children:h,...i}=a,j=x(),k=aB(),l=j.useState("instantType"),{children:m,state:n}=function(a){let b,{store:e,side:f,cssVars:g,children:h}=a,i=(0,a$.useDirection)(),j=e.useState("activeTriggerElement"),k=e.useState("activeTriggerId"),l=e.useState("open"),m=e.useState("payload"),n=e.useState("mounted"),o=e.useState("popupElement"),p=e.useState("positionerElement"),s=(0,aS.usePreviousValue)(l?j:null),t=function(a,b){let[c,e]=d.useState(0),f=d.useRef(a),g=d.useRef(b),h=d.useRef(!1);return(0,r.useIsoLayoutEffect)(()=>{let c=f.current,d=b!==g.current;a!==c?(e(a=>a+1),h.current=!d):h.current&&d&&(e(a=>a+1),h.current=!1),f.current=a,g.current=b},[a,b]),`${a??"current"}-${c}`}(k,m),u=d.useRef(null),[v,w]=d.useState(null),[x,y]=d.useState(null),z=d.useRef(null),B=d.useRef(null),C=(0,aT.useAnimationsFinished)(z,!0,!1),D=(0,aR.useAnimationFrame)(),[E,F]=d.useState(null),[G,H]=d.useState(!1);(0,r.useIsoLayoutEffect)(()=>(e.set("hasViewport",!0),()=>{e.set("hasViewport",!1)}),[e]);let I=(0,ak.useStableCallback)(()=>{z.current?.style.setProperty("animation","none"),z.current?.style.setProperty("transition","none"),B.current?.style.setProperty("display","none")}),J=(0,ak.useStableCallback)(a=>{z.current?.style.removeProperty("animation"),z.current?.style.removeProperty("transition"),B.current?.style.removeProperty("display"),a&&F(a)}),K=d.useRef(null);(0,r.useIsoLayoutEffect)(()=>{var a,b;let c,d,e,f;j&&s&&j!==s&&K.current!==j&&u.current&&(w(u.current),H(!0),y((a=s,b=j,c=a.getBoundingClientRect(),d=b.getBoundingClientRect(),e={x:c.left+c.width/2,y:c.top+c.height/2},{horizontal:(f={x:d.left+d.width/2,y:d.top+d.height/2}).x-e.x,vertical:f.y-e.y})),D.request(()=>{A.flushSync(()=>{H(!1)}),C(()=>{w(null),F(null),u.current=null})}),K.current=j)},[j,s,v,C,D]),(0,r.useIsoLayoutEffect)(()=>{let a=z.current;if(!a)return;let b=(0,ag.ownerDocument)(a).createElement("div");for(let c of Array.from(a.childNodes))b.appendChild(c.cloneNode(!0));u.current=b});let L=null!=v;return b=L?(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)("div",{"data-previous":!0,inert:(0,aQ.inertValue)(!0),ref:B,style:{...E?{[g.popupWidth]:`${E.width}px`,[g.popupHeight]:`${E.height}px`}:null,position:"absolute"},"data-ending-style":G?void 0:""},"previous"),(0,c.jsx)("div",{"data-current":!0,ref:z,"data-starting-style":G?"":void 0,children:h},t)]}):(0,c.jsx)("div",{"data-current":!0,ref:z,children:h},t),(0,r.useIsoLayoutEffect)(()=>{let a=B.current;a&&v&&a.replaceChildren(...Array.from(v.childNodes))},[v]),!function(a){let{popupElement:b,positionerElement:c,content:e,mounted:f,enabled:g=aV,onMeasureLayout:h,onMeasureLayoutComplete:i,side:j,direction:k}=a,l=(0,aT.useAnimationsFinished)(b,!0,!1),m=(0,aR.useAnimationFrame)(),n=d.useRef(null),o=d.useRef(null),p=d.useRef(!0),s=d.useRef(q.NOOP),t=(0,ak.useStableCallback)(h),u=(0,ak.useStableCallback)(i),v=d.useMemo(()=>{let a="top"===j,b="left"===j;return"rtl"===k?(a=a||"inline-end"===j,b=b||"inline-end"===j):(a=a||"inline-start"===j,b=b||"inline-start"===j),a?{position:"absolute",["top"===j?"bottom":"top"]:"0",[b?"right":"left"]:"0"}:q.EMPTY_OBJECT},[j,k]);(0,r.useIsoLayoutEffect)(()=>{if(!f||!g()||"function"!=typeof ResizeObserver){s.current=q.NOOP,p.current=!0,n.current=null,o.current=null;return}if(!b||!c)return;s.current=aX(b,v);let a=new ResizeObserver(a=>{let b=a[0];b&&(o.current={width:Math.ceil(b.borderBoxSize[0].inlineSize),height:Math.ceil(b.borderBoxSize[0].blockSize)})});a.observe(b),aY(b,"auto");let d=aW(b,"position","static"),e=aW(b,"transform","none"),h=aW(b,"scale","1"),i=aX(c,{"--available-width":"max-content","--available-height":"max-content"});function j(){d(),e(),i(),h()}if(t?.(),p.current||null===n.current){aZ(c,"max-content");let d=(0,aU.getCssDimensions)(b);return n.current=d,aZ(c,d),j(),u?.(null,d),p.current=!1,()=>{a.disconnect(),s.current(),s.current=q.NOOP}}aY(b,"auto"),aZ(c,"max-content");let k=n.current??o.current,r=(0,aU.getCssDimensions)(b);if(n.current=r,!k)return aZ(c,r),j(),u?.(null,r),()=>{a.disconnect(),m.cancel(),s.current(),s.current=q.NOOP};aY(b,k),j(),u?.(k,r),aZ(c,r);let w=new AbortController;return m.request(()=>{aY(b,r),l(()=>{b.style.setProperty("--popup-width","auto"),b.style.setProperty("--popup-height","auto")},w.signal)}),()=>{a.disconnect(),w.abort(),m.cancel(),s.current(),s.current=q.NOOP}},[e,b,c,l,m,g,f,t,u,v])}({popupElement:o,positionerElement:p,mounted:n,content:m,onMeasureLayout:I,onMeasureLayoutComplete:J,side:f,direction:i}),{children:b,state:{activationDirection:function(a){if(a){var b,c;return`${(b=a.horizontal)>5?"right":b<-5?"left":""} ${(c=a.vertical)>5?"down":c<-5?"up":""}`}}(x),transitioning:L}}}({store:j,side:k.side,cssVars:aP,children:h}),o={activationDirection:n.activationDirection,transitioning:n.transitioning,instant:l};return(0,W.useRenderElement)("div",a,{state:o,ref:b,props:[i,{children:m}],stateAttributesMapping:a_})});class a1{constructor(){this.store=new N}open(a){let b=a?this.store.context.triggerElements.getById(a):void 0;if(a&&!b)throw Error((0,v.default)(88,a));this.store.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.imperativeAction,void 0,b))}close(){this.store.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}}a.s(["Arrow",0,aM,"Backdrop",0,aO,"Handle",0,a1,"Popup",0,aL,"Portal",0,U,"Positioner",0,aG,"Root",0,R,"Trigger",0,az,"Viewport",0,a0,"createHandle",0,function(){return new a1}],91815);var a2=a.i(91815),a2=a2,a3=a.i(69767);function a4({trigger:a,children:b,side:d="right",align:e="start",className:f,onOpenChange:g}){return(0,c.jsxs)(a2.Root,{onOpenChange:a=>g?.(a),children:[(0,c.jsx)(a2.Trigger,{render:(0,c.jsx)("span",{className:"inline-block"}),delay:250,closeDelay:150,children:a}),(0,c.jsx)(a2.Portal,{children:(0,c.jsx)(a2.Positioner,{side:d,align:e,sideOffset:8,children:(0,c.jsx)(a2.Popup,{className:(0,a3.cn)("z-50 rounded-md border border-zinc-200 bg-white shadow-lg dark:border-zinc-800 dark:bg-zinc-900 transition-all duration-100 data-[ending-style]:opacity-0 data-[ending-style]:scale-[0.97] data-[starting-style]:opacity-0 data-[starting-style]:scale-[0.97]",f),children:b})})})]})}var a5=a.i(25273);let a6=new Map;function a7({name:a,children:b}){var e,f;let[g,h]=(0,d.useState)(()=>{let b=a6.get(a);return!b||"then"in b?null:b}),[i,k]=(0,d.useState)(!1),l=(0,d.useRef)(!0);(0,d.useEffect)(()=>(l.current=!0,()=>{l.current=!1}),[]);let m=(0,d.useCallback)(async()=>{let b=a6.get(a);if(b&&!("then"in b))return void h(b);k(!0);try{let c=b??a5.rpc.recipes.info({name:a});b||a6.set(a,c);let d=await c;a6.set(a,d),l.current&&h(d)}catch{a6.delete(a)}finally{l.current&&k(!1)}},[a]);return(0,c.jsx)(a4,{side:"right",align:"start",className:"w-[340px] max-w-[90vw] p-0",onOpenChange:a=>{a&&!g&&m()},trigger:b,children:(0,c.jsxs)("div",{className:"flex flex-col gap-3 p-3",children:[(0,c.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,c.jsx)("span",{className:"font-mono text-xs text-zinc-900 dark:text-zinc-100",children:a}),g?.description?(0,c.jsx)("span",{className:"text-xs text-zinc-600 dark:text-zinc-400",children:g.description}):g&&!i?(0,c.jsx)("span",{className:"text-xs text-zinc-400 italic",children:"No description"}):null]}),i&&!g&&(0,c.jsxs)("div",{className:"flex items-center gap-2 text-xs text-zinc-500",children:[(0,c.jsx)(o.Loader2,{size:12,className:"animate-spin"})," loading…"]}),g?.vram&&(0,c.jsxs)("div",{className:"flex flex-col gap-2 rounded border border-zinc-200 p-2 dark:border-zinc-800",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between text-xs font-medium text-zinc-700 dark:text-zinc-300",children:[(0,c.jsx)("span",{children:"VRAM estimation"}),null!=g.vram.fits_dgx_spark&&(0,c.jsx)(j.Badge,{tone:g.vram.fits_dgx_spark?"green":"red",children:g.vram.fits_dgx_spark?"fits DGX Spark":"won't fit"})]}),(0,c.jsxs)("dl",{className:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px]",children:[(0,c.jsx)(a8,{label:"Model dtype",value:g.vram.model_dtype}),(0,c.jsx)(a8,{label:"Params",value:null==(e=g.vram.model_params)?null:e>=1e9?`${(e/1e9).toFixed(1)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e.toLocaleString()}),(0,c.jsx)(a8,{label:"Architecture",value:(f=g.vram).num_layers?`${f.num_layers}L \xb7 ${f.num_kv_heads}KV \xb7 d=${f.head_dim}`:null}),(0,c.jsx)(a8,{label:"TP",value:g.vram.tensor_parallel}),(0,c.jsx)(a8,{label:"Weights",value:a9(g.vram.model_weights_gb)}),(0,c.jsx)(a8,{label:"KV cache",value:a9(g.vram.kv_cache_total_gb)}),(0,c.jsx)(a8,{label:"Max model len",value:ba(g.vram.max_model_len)}),(0,c.jsx)(a8,{label:"Per-GPU total",value:a9(g.vram.total_per_gpu_gb),bold:!0})]})]}),g?.vram&&(0,c.jsxs)("div",{className:"flex flex-col gap-2 rounded border border-zinc-200 p-2 dark:border-zinc-800",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-zinc-700 dark:text-zinc-300",children:"GPU memory budget"}),(0,c.jsxs)("dl",{className:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px]",children:[(0,c.jsx)(a8,{label:"gpu_memory_utilization",value:null!=g.vram.gpu_memory_utilization?`${(100*g.vram.gpu_memory_utilization).toFixed(0)}%`:null}),(0,c.jsx)(a8,{label:"Usable",value:a9(g.vram.usable_gpu_memory_gb)}),(0,c.jsx)(a8,{label:"Available KV",value:a9(g.vram.available_kv_gb)}),(0,c.jsx)(a8,{label:"Max context",value:ba(g.vram.max_context_tokens)}),(0,c.jsx)(a8,{label:"Context multiplier",value:null!=g.vram.context_multiplier?`${g.vram.context_multiplier.toFixed(1)}x`:null})]})]}),g?.vramError&&(0,c.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",children:g.vramError})]})})}function a8({label:a,value:b,bold:d}){return null==b||""===b?null:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:a}),(0,c.jsx)("dd",{className:"text-right font-mono "+(d?"font-semibold text-zinc-900 dark:text-zinc-100":"text-zinc-700 dark:text-zinc-300"),children:b})]})}function a9(a){return null==a?null:`${a.toFixed(2)} GB`}function ba(a){return null==a?null:a.toLocaleString()}var bb=a.i(76760);a.s(["RecipesBrowser",0,function({recipes:a,runningRecipes:b}){let o=(0,d.useMemo)(()=>new Set(b),[b]),p=(0,d.useMemo)(()=>a.filter(a=>o.has(a.name)).length,[a,o]),[q,r]=(0,d.useState)(()=>"all"),[s,t]=(0,d.useState)(()=>""),[u,v]=(0,d.useState)(()=>!1);(0,d.useEffect)(()=>{localStorage.setItem("recipes-registry",q)},[q]),(0,d.useEffect)(()=>{localStorage.setItem("recipes-search",s)},[s]),(0,d.useEffect)(()=>{localStorage.setItem("recipes-running-only",String(u))},[u]);let[w,x]=(0,d.useState)(null),y=(0,d.useMemo)(()=>{let b=new Set;for(let c of a)b.add(c.registry);return Array.from(b).sort()},[a]),z=(0,d.useMemo)(()=>{let b=s.trim().toLowerCase();return a.filter(a=>(!u||!!o.has(a.name))&&("all"===q||a.registry===q)&&(!b||`${a.name} ${a.model} ${a.description??""} ${a.runtime}`.toLowerCase().includes(b)))},[a,q,s,u,o]),A=(0,d.useMemo)(()=>{let a=new Map;for(let b of z){let c=a.get(b.registry)??[];c.push(b),a.set(b.registry,c)}return Array.from(a.entries()).sort(([a],[b])=>a.localeCompare(b))},[z]),B=[{value:"all",label:"All registries",description:`${a.length} recipes`},...y.map(b=>({value:b,label:`@${b}`,description:`${a.filter(a=>a.registry===b).length} recipes`}))],C="all"!==q||""!==s||u;return(0,c.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,c.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,c.jsxs)("div",{className:"flex items-baseline gap-3",children:[(0,c.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Recipes"}),(0,c.jsxs)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:[z.length," of ",a.length]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-lg border border-zinc-200 bg-zinc-50 p-2 dark:border-zinc-800 dark:bg-zinc-900/40",children:[(0,c.jsxs)("div",{className:"relative min-w-[12rem] flex-1",children:[(0,c.jsx)(g,{size:14,className:"pointer-events-none absolute top-1/2 left-2.5 -translate-y-1/2 text-zinc-400"}),(0,c.jsx)(n.Input,{value:s,onChange:a=>t(a.target.value),placeholder:"Search by name, model, runtime…",className:"bg-white pl-8 dark:bg-zinc-900"})]}),(0,c.jsx)("div",{className:"w-44",children:(0,c.jsx)(l.Select,{value:q,onValueChange:r,options:B,placeholder:"Registry"})}),(0,c.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1 text-xs text-zinc-600 select-none hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:[(0,c.jsx)(m.Switch,{checked:u,onCheckedChange:v}),"Running",p>0&&(0,c.jsxs)("span",{className:"text-zinc-400",children:["(",p,")"]})]}),C&&(0,c.jsxs)(k.Button,{variant:"ghost",size:"sm",onClick:()=>{r("all"),t(""),v(!1)},children:[(0,c.jsx)(h.X,{size:14}),"Clear"]})]})]}),w&&(0,c.jsx)(bb.RecipeShowDialog,{name:w,open:!0,onOpenChange:a=>!a&&x(null),running:o.has(w)}),0===A.length?(0,c.jsx)(i.Card,{children:(0,c.jsx)(i.CardBody,{className:"text-sm text-zinc-500 dark:text-zinc-400",children:"No recipes match these filters."})}):A.map(([a,b])=>(0,c.jsxs)("section",{className:"flex flex-col gap-3",children:[(0,c.jsxs)("h2",{className:"font-mono text-sm font-medium text-zinc-700 dark:text-zinc-300",children:["@",a,(0,c.jsxs)("span",{className:"ml-2 text-xs text-zinc-500 dark:text-zinc-500",children:["(",b.length,")"]})]}),(0,c.jsx)(i.Card,{children:(0,c.jsx)(i.CardBody,{className:"p-0",children:(0,c.jsxs)("table",{className:"w-full text-sm",children:[(0,c.jsx)("thead",{className:"border-b border-zinc-200 bg-zinc-50 text-left text-xs font-medium tracking-wider text-zinc-500 uppercase dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-400",children:(0,c.jsxs)("tr",{children:[(0,c.jsx)("th",{className:"px-4 py-2",children:"Name"}),(0,c.jsx)("th",{className:"px-4 py-2",children:"Model"}),(0,c.jsx)("th",{className:"px-4 py-2",children:"Nodes"}),(0,c.jsx)("th",{className:"px-4 py-2"})]})}),(0,c.jsx)("tbody",{className:"divide-y divide-zinc-200 dark:divide-zinc-800",children:b.map(a=>(0,c.jsxs)("tr",{className:"hover:bg-zinc-50 dark:hover:bg-zinc-950",children:[(0,c.jsx)("td",{className:"px-4 py-2 font-mono text-xs",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(a7,{name:a.name,children:(0,c.jsx)("button",{type:"button",onClick:()=>x(a.name),className:"cursor-pointer underline decoration-zinc-400 decoration-dotted underline-offset-2 hover:text-sky-600 dark:hover:text-sky-400",children:a.file})}),o.has(a.name)&&(0,c.jsx)(j.Badge,{tone:"green",children:"running"})]})}),(0,c.jsx)("td",{className:"px-4 py-2 font-mono text-xs text-zinc-600 dark:text-zinc-400",children:(0,c.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,c.jsx)("span",{children:a.model}),(0,c.jsx)("span",{children:(0,c.jsx)(j.Badge,{tone:"sky",children:a.runtime})})]})}),(0,c.jsx)("td",{className:"px-4 py-2 text-xs text-zinc-600 dark:text-zinc-400",children:(0,c.jsxs)("span",{title:"Minimum number of DGX Spark nodes required to run this recipe",className:"cursor-help underline decoration-zinc-400 decoration-dotted underline-offset-2",children:[a.min_nodes,a.tp&&""!==a.tp&&` \xb7 tp=${a.tp}`]})}),(0,c.jsx)("td",{className:"px-4 py-2 text-right",children:o.has(a.name)?(0,c.jsxs)(k.Button,{size:"sm",variant:"success",disabled:!0,children:[(0,c.jsx)(f.Rocket,{size:12}),"Running"]}):(0,c.jsx)(e.default,{href:`/launch?recipe=${encodeURIComponent(a.name)}`,children:(0,c.jsxs)(k.Button,{size:"sm",variant:"success",children:[(0,c.jsx)(f.Rocket,{size:12}),"Launch"]})})})]},a.name))})]})})})]},a))]})}],74827)}];
|
|
1
|
+
module.exports=[74827,a=>{"use strict";var b,c=a.i(57096),d=a.i(84668),e=a.i(71148),f=a.i(36134),g=a.i(52155),h=a.i(40255),i=a.i(37942),j=a.i(49043),k=a.i(66917),l=a.i(54625),m=a.i(58499),n=a.i(55418),o=a.i(35179);a.s([],13968),a.i(13968);var p=a.i(77085),q=a.i(36512),r=a.i(64887),s=a.i(39052),t=a.i(70180),u=a.i(6609),v=a.i(95067);let w=d.createContext(void 0);function x(a){let b=d.useContext(w);if(void 0===b&&!a)throw Error((0,v.default)(50));return b}var y=a.i(5821),z=a.i(27340),A=a.i(93464),B=a.i(13990),C=a.i(9530),D=a.i(38465),E=a.i(36486),F=a.i(17924),G=a.i(95133);function H(a,b,c,d){return{left:a,top:b,right:c,bottom:d,x:a,y:b,width:c-a,height:d-b}}function I(a){let b,c=[],d=1/0,e=1/0,f=-1/0,g=-1/0;for(let h of Array.from(a).sort((a,b)=>a.top-b.top)){if(d=Math.min(d,h.left),e=Math.min(e,h.top),f=Math.max(f,h.right),g=Math.max(g,h.bottom),!b||h.top-b.top>b.height/2)c.push({left:h.left,top:h.top,right:h.right,bottom:h.bottom,width:h.width,height:h.height});else{let a=c[c.length-1];a.left=Math.min(a.left,h.left),a.right=Math.max(a.right,h.right),a.bottom=Math.max(a.bottom,h.bottom),a.width=a.right-a.left,a.height=a.bottom-a.top}b=h}return{lines:c,fallback:H(d,e,f,g)}}function J(a,b,c){return a.findIndex(a=>b>a.left-2&&b<a.right+2&&c>a.top-2&&c<a.bottom+2)}function K(a){return H(a.left,a.top,a.right,a.bottom)}function L(a,b,c,d){let e=function(a,b,c){let{lines:d}=I(a.getClientRects());if(d.length<2)return;let e=J(d,b,c);return{x:b,y:c,lineIndex:-1===e?void 0:e,element:a}}(b,c,d);return a.current=e,e}let M={...D.popupStoreSelectors,instantType:(0,B.createSelector)(a=>a.instantType),hasViewport:(0,B.createSelector)(a=>a.hasViewport)};class N extends C.ReactStore{constructor(a,b,c=!1){const e=new E.PopupTriggerMap,f={...(0,D.createInitialPopupStoreState)(),instantType:void 0,hasViewport:!1,...a};f.floatingRootContext=(0,D.createPopupFloatingRootContext)(e,b,c),super(f,{popupRef:d.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:e,closeDelayRef:{current:300},inlineRectCoordsRef:{current:void 0}},M)}setOpen=(a,b)=>{let c=b.reason,d=c===z.REASONS.triggerHover,e=a&&c===z.REASONS.triggerFocus,f=!a&&(c===z.REASONS.triggerPress||c===z.REASONS.escapeKey);if(b.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},this.context.onOpenChange?.(a,b),b.isCanceled)return;let g=b.event;a&&d&&b.trigger&&"clientX"in g&&"clientY"in g&&this.context.inlineRectCoordsRef.current?.element!==b.trigger&&L(this.context.inlineRectCoordsRef,b.trigger,g.clientX,g.clientY),this.state.floatingRootContext.dispatchOpenChange(a,b);let h=()=>{let d={open:a};e?d.instantType="focus":f?d.instantType="dismiss":c===z.REASONS.triggerHover&&(d.instantType=void 0),(0,F.setOpenTriggerState)(d,a,b.trigger),this.update(d)};d?A.flushSync(h):h()};static useStore(a,b){return(0,F.usePopupStore)(a,(a,c)=>new N(b,a,c)).store}}var O=a.i(71463);function P(a){let{open:b,defaultOpen:e=!1,onOpenChange:f,onOpenChangeComplete:g,actionsRef:h,handle:i,triggerId:j,defaultTriggerId:k=null,children:l}=a,m=N.useStore(i?.store,{open:e,openProp:b,activeTriggerId:k,triggerIdProp:j});(0,s.useOnFirstRender)(()=>{void 0===b&&!1===m.state.open&&!0===e&&m.update({open:!0,activeTriggerId:k})}),m.useControlledProp("openProp",b),m.useControlledProp("triggerIdProp",j),m.useContextCallback("onOpenChange",f),m.useContextCallback("onOpenChangeComplete",g);let n=m.useState("open"),o=m.useState("activeTriggerId"),p=m.useState("mounted"),q=m.useState("payload");(0,F.useImplicitActiveTrigger)(m);let{forceUnmount:t}=(0,F.useOpenStateTransitions)(n,m,()=>{m.context.inlineRectCoordsRef.current=void 0});(0,r.useIsoLayoutEffect)(()=>{n&&null==o&&m.set("payload",void 0)},[m,o,n]);let u=d.useCallback(()=>{m.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.imperativeAction))},[m]);d.useImperativeHandle(h,()=>({unmount:t,close:u}),[t,u]);let v=n||p;return(0,c.jsxs)(w.Provider,{value:m,children:[v&&(0,c.jsx)(Q,{store:m}),"function"==typeof l?l({payload:q}):l]})}function Q({store:a}){let b=a.useState("floatingRootContext"),c=(0,t.useDismiss)(b),e=c.reference??q.EMPTY_OBJECT,f=c.trigger??q.EMPTY_OBJECT,g=d.useMemo(()=>(0,O.mergeProps)(F.FOCUSABLE_POPUP_PROPS,c.floating),[c.floating]);return(0,F.usePopupInteractionProps)(a,{activeTriggerProps:e,inactiveTriggerProps:f,popupProps:g}),null}let R=(0,p.fastComponent)(function(a){return x(!0)?(0,c.jsx)(P,{...a}):(0,c.jsx)(u.FloatingTree,{children:(0,c.jsx)(P,{...a})})}),S=d.createContext(void 0);var T=a.i(16975);let U=d.forwardRef(function(a,b){let{keepMounted:d=!1,...e}=a;return x().useState("mounted")||d?(0,c.jsx)(S.Provider,{value:d,children:(0,c.jsx)(T.FloatingPortalLite,{ref:b,...e})}):null});var V=a.i(4903),W=a.i(32645),X=a.i(14394),Y=a.i(96920),Z=a.i(3071),$=a.i(72061);let _=.1*.1;function aa(a,b,c,d,e,f){return d>=b!=f>=b&&a<=(e-c)*(b-d)/(f-d)+c}function ab(a,b,c,d,e,f,g,h,i,j){let k=!1;return aa(a,b,c,d,e,f)&&(k=!k),aa(a,b,e,f,g,h)&&(k=!k),aa(a,b,g,h,i,j)&&(k=!k),aa(a,b,i,j,c,d)&&(k=!k),k}function ac(a,b,c,d,e,f){let g=Math.min(c,e),h=Math.max(c,e),i=Math.min(d,f),j=Math.max(d,f);return a>=g&&a<=h&&b>=i&&b<=j}var ad=a.i(75078),ae=a.i(99721),af=a.i(42161),ag=a.i(66659),ah=a.i(10842),ai=a.i(76655);let aj=ae.isMac&&ae.isSafari;var ak=a.i(57723),al=a.i(71979),am=a.i(49639),an=a.i(92852),ao=a.i(57189);class ap{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new Y.Timeout,this.restTimeout=new Y.Timeout,this.handleCloseOptions=void 0}static create(){return new ap}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose}let aq=new WeakMap;function ar(a){if(!a.performedPointerEventsMutation)return;let b=a.pointerEventsScopeElement;b&&aq.get(b)===a&&(a.pointerEventsScopeElement?.style.removeProperty("pointer-events"),a.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),a.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),aq.delete(b)),a.performedPointerEventsMutation=!1,a.pointerEventsScopeElement=null,a.pointerEventsReferenceElement=null,a.pointerEventsFloatingElement=null}function as(a,b){let{scopeElement:c,referenceElement:d,floatingElement:e}=b,f=aq.get(c);f&&f!==a&&ar(f),ar(a),a.performedPointerEventsMutation=!0,a.pointerEventsScopeElement=c,a.pointerEventsReferenceElement=d,a.pointerEventsFloatingElement=e,aq.set(c,a),c.style.pointerEvents="none",d.style.pointerEvents="auto",e.style.pointerEvents="auto"}function at(a){let b=a.context.dataRef.current,c=(0,ao.useRefWithInit)(()=>b.hoverInteractionState??ap.create()).current;return b.hoverInteractionState||(b.hoverInteractionState=c),(0,an.useOnMount)(b.hoverInteractionState.disposeEffect),b.hoverInteractionState}function au(a,b,c){let d=null==c||(0,am.isMouseLikePointerType)(c)?"function"==typeof a?a():a:0;return"number"==typeof d?d:d?.[b]}function av(a){return"function"==typeof a?a():a}function aw(a,b){return b||"click"===a||"mousedown"===a}var ax=ai;let ay={current:null},az=(0,p.fastComponentRef)(function(a,b){let{render:c,className:e,delay:f,closeDelay:g,id:h,payload:i,handle:j,style:k,...l}=a,m=x(!0),n=j?.store??m;if(!n)throw Error((0,v.default)(89));let o=(0,X.useBaseUiId)(h),p=n.useState("isTriggerActive",o),q=n.useState("isOpenedByTrigger",o),s=n.useState("floatingRootContext"),t=n.context.inlineRectCoordsRef,w=d.useRef(null),B=f??600,C=g??300,{registerTrigger:D,isMountedByThisTrigger:E}=(0,F.useTriggerDataForwarding)(o,w,n,{payload:i});(0,r.useIsoLayoutEffect)(()=>{E&&(n.context.closeDelayRef.current=C)},[n,E,C]);let H=function(a,b={}){let{enabled:c=!0,delay:e=0,handleClose:f=null,mouseOnly:g=!1,restMs:h=0,move:i=!0,triggerElementRef:j=ay,externalTree:k,isActiveTrigger:l=!0,getHandleCloseContext:m,isClosing:n,shouldOpen:o}=b,p="rootStore"in a?a.rootStore:a,{dataRef:q,events:r}=p.context,s=(0,u.useFloatingTree)(k),t=at(p),v=d.useRef(!1),w=(0,al.useValueAsRef)(f),x=(0,al.useValueAsRef)(e),B=(0,al.useValueAsRef)(h),C=(0,al.useValueAsRef)(c),D=(0,al.useValueAsRef)(o),E=(0,al.useValueAsRef)(n),F=(0,ak.useStableCallback)(()=>aw(q.current.openEvent?.type,t.interactedInside)),H=(0,ak.useStableCallback)(()=>D.current?.()!==!1),I=(0,ak.useStableCallback)((a,b,c)=>{let d=p.context.triggerElements;return d.hasElement(b)?!a||!(0,Z.contains)(a,b):!!(0,G.isElement)(c)&&d.hasMatchingElement(a=>(0,Z.contains)(a,c))&&(!a||!(0,Z.contains)(a,c))}),J=(0,ak.useStableCallback)(()=>{t.handler&&((0,ag.ownerDocument)(p.select("domReferenceElement")).removeEventListener("mousemove",t.handler),t.handler=void 0)}),K=(0,ak.useStableCallback)(()=>{ar(t)});return l&&(t.handleCloseOptions=w.current?.__options),d.useEffect(()=>J,[J]),d.useEffect(()=>{if(c)return r.on("openchange",a),()=>{r.off("openchange",a)};function a(a){a.open?v.current=!1:(v.current=a.reason===z.REASONS.triggerHover,J(),t.openChangeTimeout.clear(),t.restTimeout.clear(),t.blockMouseMove=!0,t.restTimeoutPending=!1)}},[c,r,t,J]),d.useEffect(()=>{if(!c)return;function a(b,c=!0){let d=au(x.current,"close",t.pointerType);d?t.openChangeTimeout.start(d,()=>{p.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,b)),s?.events.emit("floating.closed",b)}):c&&(t.openChangeTimeout.clear(),p.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,b)),s?.events.emit("floating.closed",b))}let b=j.current??(l?p.select("domReferenceElement"):null);if((0,G.isElement)(b))return i?(0,af.mergeCleanups)((0,ad.addEventListener)(b,"mousemove",d,{once:!0}),(0,ad.addEventListener)(b,"mouseenter",d),(0,ad.addEventListener)(b,"mouseleave",e)):(0,af.mergeCleanups)((0,ad.addEventListener)(b,"mouseenter",d),(0,ad.addEventListener)(b,"mouseleave",e));function d(a){if(t.openChangeTimeout.clear(),t.blockMouseMove=!1,g&&!(0,am.isMouseLikePointerType)(t.pointerType))return;let b=av(B.current),c=au(x.current,"open",t.pointerType),d=(0,Z.getTarget)(a),e=a.currentTarget??null,f=p.select("domReferenceElement"),h=e;if((0,G.isElement)(d)&&!p.context.triggerElements.hasElement(d)){for(let a of p.context.triggerElements.elements())if((0,Z.contains)(a,d)){h=a;break}}(0,G.isElement)(e)&&(0,G.isElement)(f)&&!p.context.triggerElements.hasElement(e)&&(0,Z.contains)(e,f)&&(h=f);let i=null!=h&&I(f,h,d),j=p.select("open"),k=E.current?.()??"ending"===p.select("transitionStatus"),l=!j&&k&&v.current,m=!i&&(0,G.isElement)(h)&&(0,G.isElement)(f)&&(0,Z.contains)(f,h)&&l,n=b>0&&!c,o=!j||i;if(i&&(j||l)||m){H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,a,h));return}!n&&(c?t.openChangeTimeout.start(c,()=>{o&&H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,a,h))}):o&&H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,a,h)))}function e(b){if(F())return void K();J();let c=p.select("domReferenceElement"),d=(0,ag.ownerDocument)(c);t.restTimeout.clear(),t.restTimeoutPending=!1;let e=q.current.floatingContext??m?.();if(!(0,ax.isTargetInsideEnabledTrigger)(b.relatedTarget,p.context.triggerElements)){if(w.current&&e){p.select("open")||t.openChangeTimeout.clear();let c=j.current;t.handler=w.current({...e,tree:s,x:b.clientX,y:b.clientY,onClose(){K(),J(),C.current&&!F()&&c===p.select("domReferenceElement")&&a(b,!0)}}),d.addEventListener("mousemove",t.handler),t.handler(b);return}"touch"===t.pointerType&&(0,Z.contains)(p.select("floatingElement"),b.relatedTarget)||a(b)}}},[J,K,q,x,p,c,w,t,l,I,F,g,i,B,j,s,C,m,E,H]),d.useMemo(()=>{if(c)return{onPointerDown:a,onPointerEnter:a,onMouseMove(a){let{nativeEvent:b}=a,c=a.currentTarget,d=p.select("domReferenceElement"),e=p.select("open"),f=I(d,c,a.target);if(g&&!(0,am.isMouseLikePointerType)(t.pointerType))return;if(e&&f&&t.handleCloseOptions?.blockPointerEvents){let a=p.select("floatingElement");if(a){let b=t.handleCloseOptions?.getScope?.()??c.ownerDocument.body;as(t,{scopeElement:b,referenceElement:c,floatingElement:a})}}let h=av(B.current);function i(){if(t.restTimeoutPending=!1,F())return;let a=p.select("open");!t.blockMouseMove&&(!a||f)&&H()&&p.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,b,c))}(!e||f)&&0!==h&&(!f&&t.restTimeoutPending&&a.movementX**2+a.movementY**2<2||(t.restTimeout.clear(),"touch"===t.pointerType?A.flushSync(()=>{i()}):f&&e?i():(t.restTimeoutPending=!0,t.restTimeout.start(h,i))))}};function a(a){t.pointerType=a.pointerType}},[c,t,F,I,g,p,B,H])}(s,{mouseOnly:!0,move:!1,handleClose:function(a={}){let{blockPointerEvents:b=!1}=a,c=new Y.Timeout,d=({x:a,y:b,placement:d,elements:e,onClose:f,nodeId:g,tree:h})=>{let i=d?.split("-")[0],j=!1,k=null,l=null,m="u">typeof performance?performance.now():0;return function(d){c.clear();let n=e.domReference,o=e.floating;if(!n||!o||null==i||null==a||null==b)return;let{clientX:p,clientY:q}=d,r=(0,Z.getTarget)(d),s="mouseleave"===d.type,t=(0,Z.contains)(o,r),u=(0,Z.contains)(n,r);if(t&&(j=!0,!s))return;if(u&&(j=!1,!s)){j=!0;return}if(s&&(0,G.isElement)(d.relatedTarget)&&(0,Z.contains)(o,d.relatedTarget))return;function v(){return!!(h&&(0,$.getNodeChildren)(h.nodesRef.current,g).length>0)}function w(){v()||(c.clear(),f())}if(v())return;let x=n.getBoundingClientRect(),y=o.getBoundingClientRect(),z=a>y.right-y.width/2,A=b>y.bottom-y.height/2,B=y.width>x.width,C=y.height>x.height,D=(B?x:y).left,E=(B?x:y).right,F=(C?x:y).top,H=(C?x:y).bottom;if("top"===i&&b>=x.bottom-1||"bottom"===i&&b<=x.top+1||"left"===i&&a>=x.right-1||"right"===i&&a<=x.left+1)return void w();let I=!1;switch(i){case"top":I=ac(p,q,D,x.top+1,E,y.bottom-1);break;case"bottom":I=ac(p,q,D,y.top+1,E,x.bottom-1);break;case"left":I=ac(p,q,y.right-1,H,x.left+1,F);break;case"right":I=ac(p,q,x.right-1,H,y.left+1,F)}if(I)return;if(j&&(!(p>=x.x)||!(p<=x.x+x.width)||!(q>=x.y)||!(q<=x.y+x.height))||!s&&function(a,b){let c=performance.now(),d=c-m;if(null===k||null===l||0===d)return k=a,l=b,m=c,!1;let e=a-k,f=b-l;return k=a,l=b,m=c,e*e+f*f<d*d*_}(p,q))return void w();let J=!1;switch(i){case"top":{let c=B?.25:2,d=b+.5+1,e=z||B?y.bottom-.5:y.top,f=z?B?y.bottom-.5:y.top:y.bottom-.5;J=ab(p,q,B||z?a+c:a-c,d,B?a-c:z?a+c:a-c,d,y.left,e,y.right,f);break}case"bottom":{let c=B?.25:2,d=b-.5,e=z||B?y.top+.5:y.bottom,f=z?B?y.top+.5:y.bottom:y.top+.5;J=ab(p,q,B||z?a+c:a-c,d,B?a-c:z?a+c:a-c,d,y.left,e,y.right,f);break}case"left":{let c=C?.25:2,d=a+.5+1,e=A||C?y.right-.5:y.left,f=A?C?y.right-.5:y.left:y.right-.5;J=ab(p,q,e,y.top,f,y.bottom,d,C||A?b+c:b-c,d,C?b-c:A?b+c:b-c);break}case"right":{let c=C?.25:2,d=a-.5,e=A||C?y.left+.5:y.right,f=A?C?y.left+.5:y.right:y.left+.5;J=ab(p,q,d,C||A?b+c:b-c,d,C?b-c:A?b+c:b-c,e,y.top,f,y.bottom)}}J?j||c.start(40,w):w()}};return d.__options={...a,blockPointerEvents:b},d}(),delay:()=>({open:B,close:C}),triggerElementRef:w,isActiveTrigger:p,isClosing:()=>"ending"===n.select("transitionStatus")}),I=function(a,b={}){let{enabled:c=!0,delay:e}=b,f="rootStore"in a?a.rootStore:a,{events:g,dataRef:h}=f.context,i=d.useRef(!1),j=d.useRef(null),k=d.useRef(!0),l=(0,Y.useTimeout)();d.useEffect(()=>{let a=f.select("domReferenceElement");if(!c)return;let b=(0,G.getWindow)(a);return(0,af.mergeCleanups)((0,ad.addEventListener)(b,"blur",function(){let a=f.select("domReferenceElement");!f.select("open")&&(0,G.isHTMLElement)(a)&&a===(0,Z.activeElement)((0,ag.ownerDocument)(a))&&(i.current=!0)}),aj&&(0,ad.addEventListener)(b,"keydown",function(){k.current=!0},!0),aj&&(0,ad.addEventListener)(b,"pointerdown",function(){k.current=!1},!0))},[f,c]),d.useEffect(()=>{if(c)return g.on("openchange",a),()=>{g.off("openchange",a)};function a(a){if(a.reason===z.REASONS.triggerPress||a.reason===z.REASONS.escapeKey){let a=f.select("domReferenceElement");(0,G.isElement)(a)&&(j.current=a,i.current=!0)}}},[g,c,f]);let m=d.useMemo(()=>{function a(){i.current=!1,j.current=null}return{onMouseLeave(){a()},onFocus(b){let c=b.currentTarget;if(i.current){if(j.current===c)return;a()}let d=(0,Z.getTarget)(b.nativeEvent);if((0,G.isElement)(d)){if(aj&&!b.relatedTarget){if(!k.current&&!(0,ai.isTypeableElement)(d))return}else if(!(0,ai.matchesFocusVisible)(d))return}let g=(0,ai.isTargetInsideEnabledTrigger)(b.relatedTarget,f.context.triggerElements),{nativeEvent:h,currentTarget:m}=b,n="function"==typeof e?e():e;f.select("open")&&g||0===n||void 0===n?f.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerFocus,h,m)):l.start(n,()=>{i.current||f.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.triggerFocus,h,m))})},onBlur(b){a();let c=b.relatedTarget,d=b.nativeEvent,e=(0,G.isElement)(c)&&c.hasAttribute((0,ah.createAttribute)("focus-guard"))&&"outside"===c.getAttribute("data-type");l.start(0,()=>{let a=f.select("domReferenceElement"),b=(0,Z.activeElement)((0,ag.ownerDocument)(a));if(!c&&b===a||(0,Z.contains)(h.current.floatingContext?.refs.floating.current,b)||(0,Z.contains)(a,b)||e)return;let g=c??b;(0,ai.isTargetInsideEnabledTrigger)(g,f.context.triggerElements)||f.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerFocus,d))})}}},[h,e,f,l]);return d.useMemo(()=>c?{reference:m,trigger:m}:{},[c,m])}(s,{delay:B}),J=n.useState("triggerProps",E),K=function(a,b){function c(b){L(a,b.currentTarget,b.clientX,b.clientY)}return{onFocus(){a.current=void 0},onMouseEnter:c,onMouseMove:function(a){b||c(a)}}}(t,q);return(0,W.useRenderElement)("a",a,{state:{open:q},ref:[b,D,w],props:[H,I.reference,J,K,{id:o},l],stateAttributesMapping:V.triggerOpenStateMapping})}),aA=d.createContext(void 0);function aB(){let a=d.useContext(aA);if(void 0===a)throw Error((0,v.default)(49));return a}var aC=a.i(66492),aD=a.i(72647),aE=a.i(96054),aF=a.i(52210);let aG=d.forwardRef(function(a,b){let{render:e,className:f,anchor:g,positionMethod:h="absolute",side:i="bottom",align:j="center",sideOffset:k=0,alignOffset:l=0,collisionBoundary:m="clipping-ancestors",collisionPadding:n=5,arrowPadding:o=5,sticky:p=!1,disableAnchorTracking:q=!1,collisionAvoidance:s=aD.POPUP_COLLISION_AVOIDANCE,style:t,...w}=a,y=x(),z=function(){let a=d.useContext(S);if(void 0===a)throw Error((0,v.default)(48));return a}(),A=(0,u.useFloatingNodeId)(),B=y.useState("open"),C=y.useState("mounted"),D=y.useState("floatingRootContext"),E=y.useState("instantType"),F=y.useState("transitionStatus"),L=y.useState("hasViewport"),M=y.context.inlineRectCoordsRef,N=(0,aC.useAnchorPositioning)({anchor:g,floatingRootContext:D,positionMethod:h,mounted:C,side:i,sideOffset:k,align:j,alignOffset:l,arrowPadding:o,collisionBoundary:m,collisionPadding:n,sticky:p,disableAnchorTracking:q,keepMounted:z,nodeId:A,collisionAvoidance:s,adaptiveOrigin:L?aE.adaptiveOrigin:void 0,inline:{name:"inline",async fn(a){let b=a.elements.reference;if("function"!=typeof b?.getClientRects)return{};let c="contextElement"in b&&b.contextElement?b.contextElement:(0,G.isElement)(b)?b:void 0,d=M.current,e=d?.element===b||d?.element===c?d:void 0,f=function(a,b,c){let{lines:d,fallback:e}=I(a.getClientRects());if(d.length<2)return null;let f=c?.x,g=c?.y,h=b[0];if(c?.lineIndex!=null&&d[c.lineIndex])return K(d[c.lineIndex]);if(null!=f&&null!=g){let a=J(d,f,g);if(-1!==a)return K(d[a])}if(2===d.length&&d[0].left>d[1].right&&null!=f&&null!=g)return e;if("t"===h||"b"===h){let a=d[0],b=d[d.length-1],c="t"===h?a:b;return H(c.left,a.top,c.right,b.bottom)}let i="l"===h,j=d[0].left,k=d[0].right,l=i?1/0:-1/0,m=d[0],n=d[0];for(let a of d){j=Math.min(j,a.left),k=Math.max(k,a.right);let b=i?a.left:a.right;i&&b<l||!i&&b>l?(l=b,m=a,n=a):b===l&&(n=a)}return H(j,m.top,k,n.bottom)}(b,a.placement,e);if(!f||"function"!=typeof a.platform.getElementRects)return{};let g=await a.platform.getElementRects({reference:{contextElement:c,getBoundingClientRect:()=>f},floating:a.elements.floating,strategy:a.strategy});return a.rects.reference.x===g.reference.x&&a.rects.reference.y===g.reference.y&&a.rects.reference.width===g.reference.width&&a.rects.reference.height===g.reference.height?{}:{reset:{rects:g}}}}}),O=N.update;(0,r.useIsoLayoutEffect)(()=>{B&&C&&O()},[B,C,O]);let P={open:B,side:N.side,align:N.align,anchorHidden:N.anchorHidden,instant:E},Q=(0,aF.usePositioner)(a,P,{styles:N.positionerStyles,transitionStatus:F,props:w,refs:[b,y.useStateSetter("positionerElement")],hidden:!C,inert:!B});return(0,c.jsx)(aA.Provider,{value:N,children:(0,c.jsx)(u.FloatingNode,{id:A,children:Q})})});var aH=a.i(79498),aI=a.i(50974),aJ=a.i(35317),ax=ai;let aK={...V.popupStateMapping,...aH.transitionStatusMapping},aL=d.forwardRef(function(a,b){let{className:c,render:e,style:f,...g}=a,h=x(),{side:i,align:j}=aB(),k=h.useState("open"),l=h.useState("instantType"),m=h.useState("transitionStatus"),n=h.useState("popupProps"),o=h.useState("floatingRootContext");return(0,aI.useOpenChangeComplete)({open:k,ref:h.context.popupRef,onComplete(){k&&h.context.onOpenChangeComplete?.(!0)}}),!function(a,b={}){let{enabled:c=!0,closeDelay:e=0,nodeId:f}=b,g="rootStore"in a?a.rootStore:a,h=g.useState("open"),i=g.useState("floatingElement"),j=g.useState("domReferenceElement"),{dataRef:k}=g.context,l=(0,u.useFloatingTree)(),m=(0,u.useFloatingParentNodeId)(),n=at(g),o=(0,Y.useTimeout)(),p=(0,ak.useStableCallback)(()=>aw(k.current.openEvent?.type,n.interactedInside)),q=(0,ak.useStableCallback)(()=>{var a;return a=k.current.openEvent?.type,a?.includes("mouse")&&"mousedown"!==a}),s=(0,ak.useStableCallback)(()=>{ar(n)});(0,r.useIsoLayoutEffect)(()=>{h||(n.pointerType=void 0,n.restTimeoutPending=!1,n.interactedInside=!1,s())},[h,n,s]),d.useEffect(()=>s,[s]),(0,r.useIsoLayoutEffect)(()=>{if(c&&h&&n.handleCloseOptions?.blockPointerEvents&&q()&&(0,G.isElement)(j)&&i){let a=(0,ag.ownerDocument)(i),b=l?.nodesRef.current.find(a=>a.id===m)?.context?.elements.floating;b&&(b.style.pointerEvents="");let c=n.pointerEventsScopeElement!==i?n.pointerEventsScopeElement:null,d=b!==i?b:null,e=n.handleCloseOptions?.getScope?.()??c??d??j.closest("[data-rootownerid]")??a.body;return as(n,{scopeElement:e,referenceElement:j,floatingElement:i}),()=>{s()}}},[c,h,j,i,n,q,l,m,s]),d.useEffect(()=>{if(c)return(0,af.mergeCleanups)(i&&(0,ad.addEventListener)(i,"mouseenter",function(){n.openChangeTimeout.clear(),o.clear(),l?.events.off("floating.closed",b),s()}),i&&(0,ad.addEventListener)(i,"mouseleave",function(c){if(a()&&l)return void l.events.on("floating.closed",b);if((0,ax.isTargetInsideEnabledTrigger)(c.relatedTarget,g.context.triggerElements))return;let d=k.current.floatingContext?.nodeId??f,h=c.relatedTarget;if(!(l&&d&&(0,G.isElement)(h)&&(0,$.getNodeChildren)(l.nodesRef.current,d,!1).some(a=>(0,Z.contains)(a.context?.elements.floating,h)))){let a,b;if(n.handler)return void n.handler(c);s(),p()||(a=au(e,"close",n.pointerType),b=()=>{g.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,c)),l?.events.emit("floating.closed",c)},a?n.openChangeTimeout.start(a,b):(n.openChangeTimeout.clear(),b()))}}),i&&(0,ad.addEventListener)(i,"pointerdown",function(a){let b=(0,Z.getTarget)(a);if(!(0,ai.isInteractiveElement)(b)){n.interactedInside=!1;return}n.interactedInside=b?.closest("[aria-haspopup]")!=null},!0),()=>{l?.events.off("floating.closed",b)});function a(){return!!(l&&m&&(0,$.getNodeChildren)(l.nodesRef.current,m).length>0)}function b(c){!l||!m||a()||o.start(0,()=>{l.events.off("floating.closed",b),g.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.triggerHover,c)),l.events.emit("floating.closed",c)})}},[c,i,g,k,e,f,p,s,n,l,m,o])}(o,{closeDelay:(0,ak.useStableCallback)(()=>h.context.closeDelayRef.current)}),(0,W.useRenderElement)("div",a,{state:{open:k,side:i,align:j,instant:l,transitionStatus:m},ref:[b,h.context.popupRef,h.useStateSetter("popupElement")],props:[n,(0,aJ.getDisabledMountTransitionStyles)(m),g],stateAttributesMapping:aK})}),aM=d.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=x(),{arrowRef:h,side:i,align:j,arrowUncentered:k,arrowStyles:l}=aB(),m=g.useState("open");return(0,W.useRenderElement)("div",a,{state:{open:m,side:i,align:j,uncentered:k},ref:[h,b],props:[{style:l,"aria-hidden":!0},f],stateAttributesMapping:V.popupStateMapping})}),aN={...V.popupStateMapping,...aH.transitionStatusMapping},aO=d.forwardRef(function(a,b){let{render:c,className:d,style:e,...f}=a,g=x(),h=g.useState("open"),i=g.useState("mounted"),j=g.useState("transitionStatus");return(0,W.useRenderElement)("div",a,{state:{open:h,transitionStatus:j},ref:[b],props:[{role:"presentation",hidden:!i,style:{pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none"}},f],stateAttributesMapping:aN})}),aP=((b={}).popupWidth="--popup-width",b.popupHeight="--popup-height",b);var aQ=a.i(41134),aR=a.i(7988),aS=a.i(13292),aT=a.i(92501),aU=a.i(27464);let aV=()=>!0;function aW(a,b,c){let d=a.style.getPropertyValue(b);return a.style.setProperty(b,c),()=>{a.style.setProperty(b,d)}}function aX(a,b){let c=[];for(let[d,e]of Object.entries(b))c.push(aW(a,d,e));return c.length?()=>{c.forEach(a=>a())}:q.NOOP}function aY(a,b){let c="auto"===b?"auto":`${b.width}px`,d="auto"===b?"auto":`${b.height}px`;a.style.setProperty("--popup-width",c),a.style.setProperty("--popup-height",d)}function aZ(a,b){let c="max-content"===b?"max-content":`${b.width}px`,d="max-content"===b?"max-content":`${b.height}px`;a.style.setProperty("--positioner-width",c),a.style.setProperty("--positioner-height",d)}var a$=a.i(53507);let a_={activationDirection:a=>a?{"data-activation-direction":a}:null},a0=d.forwardRef(function(a,b){let{render:e,className:f,style:g,children:h,...i}=a,j=x(),k=aB(),l=j.useState("instantType"),{children:m,state:n}=function(a){let b,{store:e,side:f,cssVars:g,children:h}=a,i=(0,a$.useDirection)(),j=e.useState("activeTriggerElement"),k=e.useState("activeTriggerId"),l=e.useState("open"),m=e.useState("payload"),n=e.useState("mounted"),o=e.useState("popupElement"),p=e.useState("positionerElement"),s=(0,aS.usePreviousValue)(l?j:null),t=function(a,b){let[c,e]=d.useState(0),f=d.useRef(a),g=d.useRef(b),h=d.useRef(!1);return(0,r.useIsoLayoutEffect)(()=>{let c=f.current,d=b!==g.current;a!==c?(e(a=>a+1),h.current=!d):h.current&&d&&(e(a=>a+1),h.current=!1),f.current=a,g.current=b},[a,b]),`${a??"current"}-${c}`}(k,m),u=d.useRef(null),[v,w]=d.useState(null),[x,y]=d.useState(null),z=d.useRef(null),B=d.useRef(null),C=(0,aT.useAnimationsFinished)(z,!0,!1),D=(0,aR.useAnimationFrame)(),[E,F]=d.useState(null),[G,H]=d.useState(!1);(0,r.useIsoLayoutEffect)(()=>(e.set("hasViewport",!0),()=>{e.set("hasViewport",!1)}),[e]);let I=(0,ak.useStableCallback)(()=>{z.current?.style.setProperty("animation","none"),z.current?.style.setProperty("transition","none"),B.current?.style.setProperty("display","none")}),J=(0,ak.useStableCallback)(a=>{z.current?.style.removeProperty("animation"),z.current?.style.removeProperty("transition"),B.current?.style.removeProperty("display"),a&&F(a)}),K=d.useRef(null);(0,r.useIsoLayoutEffect)(()=>{var a,b;let c,d,e,f;j&&s&&j!==s&&K.current!==j&&u.current&&(w(u.current),H(!0),y((a=s,b=j,c=a.getBoundingClientRect(),d=b.getBoundingClientRect(),e={x:c.left+c.width/2,y:c.top+c.height/2},{horizontal:(f={x:d.left+d.width/2,y:d.top+d.height/2}).x-e.x,vertical:f.y-e.y})),D.request(()=>{A.flushSync(()=>{H(!1)}),C(()=>{w(null),F(null),u.current=null})}),K.current=j)},[j,s,v,C,D]),(0,r.useIsoLayoutEffect)(()=>{let a=z.current;if(!a)return;let b=(0,ag.ownerDocument)(a).createElement("div");for(let c of Array.from(a.childNodes))b.appendChild(c.cloneNode(!0));u.current=b});let L=null!=v;return b=L?(0,c.jsxs)(d.Fragment,{children:[(0,c.jsx)("div",{"data-previous":!0,inert:(0,aQ.inertValue)(!0),ref:B,style:{...E?{[g.popupWidth]:`${E.width}px`,[g.popupHeight]:`${E.height}px`}:null,position:"absolute"},"data-ending-style":G?void 0:""},"previous"),(0,c.jsx)("div",{"data-current":!0,ref:z,"data-starting-style":G?"":void 0,children:h},t)]}):(0,c.jsx)("div",{"data-current":!0,ref:z,children:h},t),(0,r.useIsoLayoutEffect)(()=>{let a=B.current;a&&v&&a.replaceChildren(...Array.from(v.childNodes))},[v]),!function(a){let{popupElement:b,positionerElement:c,content:e,mounted:f,enabled:g=aV,onMeasureLayout:h,onMeasureLayoutComplete:i,side:j,direction:k}=a,l=(0,aT.useAnimationsFinished)(b,!0,!1),m=(0,aR.useAnimationFrame)(),n=d.useRef(null),o=d.useRef(null),p=d.useRef(!0),s=d.useRef(q.NOOP),t=(0,ak.useStableCallback)(h),u=(0,ak.useStableCallback)(i),v=d.useMemo(()=>{let a="top"===j,b="left"===j;return"rtl"===k?(a=a||"inline-end"===j,b=b||"inline-end"===j):(a=a||"inline-start"===j,b=b||"inline-start"===j),a?{position:"absolute",["top"===j?"bottom":"top"]:"0",[b?"right":"left"]:"0"}:q.EMPTY_OBJECT},[j,k]);(0,r.useIsoLayoutEffect)(()=>{if(!f||!g()||"function"!=typeof ResizeObserver){s.current=q.NOOP,p.current=!0,n.current=null,o.current=null;return}if(!b||!c)return;s.current=aX(b,v);let a=new ResizeObserver(a=>{let b=a[0];b&&(o.current={width:Math.ceil(b.borderBoxSize[0].inlineSize),height:Math.ceil(b.borderBoxSize[0].blockSize)})});a.observe(b),aY(b,"auto");let d=aW(b,"position","static"),e=aW(b,"transform","none"),h=aW(b,"scale","1"),i=aX(c,{"--available-width":"max-content","--available-height":"max-content"});function j(){d(),e(),i(),h()}if(t?.(),p.current||null===n.current){aZ(c,"max-content");let d=(0,aU.getCssDimensions)(b);return n.current=d,aZ(c,d),j(),u?.(null,d),p.current=!1,()=>{a.disconnect(),s.current(),s.current=q.NOOP}}aY(b,"auto"),aZ(c,"max-content");let k=n.current??o.current,r=(0,aU.getCssDimensions)(b);if(n.current=r,!k)return aZ(c,r),j(),u?.(null,r),()=>{a.disconnect(),m.cancel(),s.current(),s.current=q.NOOP};aY(b,k),j(),u?.(k,r),aZ(c,r);let w=new AbortController;return m.request(()=>{aY(b,r),l(()=>{b.style.setProperty("--popup-width","auto"),b.style.setProperty("--popup-height","auto")},w.signal)}),()=>{a.disconnect(),w.abort(),m.cancel(),s.current(),s.current=q.NOOP}},[e,b,c,l,m,g,f,t,u,v])}({popupElement:o,positionerElement:p,mounted:n,content:m,onMeasureLayout:I,onMeasureLayoutComplete:J,side:f,direction:i}),{children:b,state:{activationDirection:function(a){if(a){var b,c;return`${(b=a.horizontal)>5?"right":b<-5?"left":""} ${(c=a.vertical)>5?"down":c<-5?"up":""}`}}(x),transitioning:L}}}({store:j,side:k.side,cssVars:aP,children:h}),o={activationDirection:n.activationDirection,transitioning:n.transitioning,instant:l};return(0,W.useRenderElement)("div",a,{state:o,ref:b,props:[i,{children:m}],stateAttributesMapping:a_})});class a1{constructor(){this.store=new N}open(a){let b=a?this.store.context.triggerElements.getById(a):void 0;if(a&&!b)throw Error((0,v.default)(88,a));this.store.setOpen(!0,(0,y.createChangeEventDetails)(z.REASONS.imperativeAction,void 0,b))}close(){this.store.setOpen(!1,(0,y.createChangeEventDetails)(z.REASONS.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}}a.s(["Arrow",0,aM,"Backdrop",0,aO,"Handle",0,a1,"Popup",0,aL,"Portal",0,U,"Positioner",0,aG,"Root",0,R,"Trigger",0,az,"Viewport",0,a0,"createHandle",0,function(){return new a1}],91815);var a2=a.i(91815),a2=a2,a3=a.i(69767);function a4({trigger:a,children:b,side:d="right",align:e="start",className:f,onOpenChange:g}){return(0,c.jsxs)(a2.Root,{onOpenChange:a=>g?.(a),children:[(0,c.jsx)(a2.Trigger,{render:(0,c.jsx)("span",{className:"inline-block"}),delay:250,closeDelay:150,children:a}),(0,c.jsx)(a2.Portal,{children:(0,c.jsx)(a2.Positioner,{side:d,align:e,sideOffset:8,children:(0,c.jsx)(a2.Popup,{className:(0,a3.cn)("z-50 rounded-md border border-zinc-200 bg-white shadow-lg dark:border-zinc-800 dark:bg-zinc-900 transition-all duration-100 data-[ending-style]:opacity-0 data-[ending-style]:scale-[0.97] data-[starting-style]:opacity-0 data-[starting-style]:scale-[0.97]",f),children:b})})})]})}var a5=a.i(25273);let a6=new Map;function a7({name:a,children:b}){var e,f;let[g,h]=(0,d.useState)(()=>{let b=a6.get(a);return!b||"then"in b?null:b}),[i,k]=(0,d.useState)(!1),l=(0,d.useRef)(!0);(0,d.useEffect)(()=>(l.current=!0,()=>{l.current=!1}),[]);let m=(0,d.useCallback)(async()=>{let b=a6.get(a);if(b&&!("then"in b))return void h(b);k(!0);try{let c=b??a5.rpc.recipes.info({name:a});b||a6.set(a,c);let d=await c;a6.set(a,d),l.current&&h(d)}catch{a6.delete(a)}finally{l.current&&k(!1)}},[a]);return(0,c.jsx)(a4,{side:"right",align:"start",className:"w-[340px] max-w-[90vw] p-0",onOpenChange:a=>{a&&!g&&m()},trigger:b,children:(0,c.jsxs)("div",{className:"flex flex-col gap-3 p-3",children:[(0,c.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,c.jsx)("span",{className:"font-mono text-xs text-zinc-900 dark:text-zinc-100",children:a}),g?.description?(0,c.jsx)("span",{className:"text-xs text-zinc-600 dark:text-zinc-400",children:g.description}):g&&!i?(0,c.jsx)("span",{className:"text-xs text-zinc-400 italic",children:"No description"}):null]}),i&&!g&&(0,c.jsxs)("div",{className:"flex items-center gap-2 text-xs text-zinc-500",children:[(0,c.jsx)(o.Loader2,{size:12,className:"animate-spin"})," loading…"]}),g?.vram&&(0,c.jsxs)("div",{className:"flex flex-col gap-2 rounded border border-zinc-200 p-2 dark:border-zinc-800",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between text-xs font-medium text-zinc-700 dark:text-zinc-300",children:[(0,c.jsx)("span",{children:"VRAM estimation"}),null!=g.vram.fits_dgx_spark&&(0,c.jsx)(j.Badge,{tone:g.vram.fits_dgx_spark?"green":"red",children:g.vram.fits_dgx_spark?"fits DGX Spark":"won't fit"})]}),(0,c.jsxs)("dl",{className:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px]",children:[(0,c.jsx)(a8,{label:"Model dtype",value:g.vram.model_dtype}),(0,c.jsx)(a8,{label:"Params",value:null==(e=g.vram.model_params)?null:e>=1e9?`${(e/1e9).toFixed(1)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e.toLocaleString()}),(0,c.jsx)(a8,{label:"Architecture",value:(f=g.vram).num_layers?`${f.num_layers}L \xb7 ${f.num_kv_heads}KV \xb7 d=${f.head_dim}`:null}),(0,c.jsx)(a8,{label:"TP",value:g.vram.tensor_parallel}),(0,c.jsx)(a8,{label:"Weights",value:a9(g.vram.model_weights_gb)}),(0,c.jsx)(a8,{label:"KV cache",value:a9(g.vram.kv_cache_total_gb)}),(0,c.jsx)(a8,{label:"Max model len",value:ba(g.vram.max_model_len)}),(0,c.jsx)(a8,{label:"Per-GPU total",value:a9(g.vram.total_per_gpu_gb),bold:!0})]})]}),g?.vram&&(0,c.jsxs)("div",{className:"flex flex-col gap-2 rounded border border-zinc-200 p-2 dark:border-zinc-800",children:[(0,c.jsx)("div",{className:"text-xs font-medium text-zinc-700 dark:text-zinc-300",children:"GPU memory budget"}),(0,c.jsxs)("dl",{className:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px]",children:[(0,c.jsx)(a8,{label:"gpu_memory_utilization",value:null!=g.vram.gpu_memory_utilization?`${(100*g.vram.gpu_memory_utilization).toFixed(0)}%`:null}),(0,c.jsx)(a8,{label:"Usable",value:a9(g.vram.usable_gpu_memory_gb)}),(0,c.jsx)(a8,{label:"Available KV",value:a9(g.vram.available_kv_gb)}),(0,c.jsx)(a8,{label:"Max context",value:ba(g.vram.max_context_tokens)}),(0,c.jsx)(a8,{label:"Context multiplier",value:null!=g.vram.context_multiplier?`${g.vram.context_multiplier.toFixed(1)}x`:null})]})]}),g?.vramError&&(0,c.jsx)("p",{className:"text-xs text-red-600 dark:text-red-400",children:g.vramError})]})})}function a8({label:a,value:b,bold:d}){return null==b||""===b?null:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:a}),(0,c.jsx)("dd",{className:"text-right font-mono "+(d?"font-semibold text-zinc-900 dark:text-zinc-100":"text-zinc-700 dark:text-zinc-300"),children:b})]})}function a9(a){return null==a?null:`${a.toFixed(2)} GB`}function ba(a){return null==a?null:a.toLocaleString()}var bb=a.i(76760),bc=a.i(5600),bd=a.i(77487);function be(){let[a,b]=(0,d.useState)(!1),[e,f]=(0,d.useState)([]),[g,h]=(0,d.useState)(!1),[i,j]=(0,d.useState)(!1),l=(0,d.useRef)(null),m=(0,d.useRef)(null);(0,d.useEffect)(()=>{l.current?.scrollIntoView({behavior:"smooth"})},[e]);let n=(0,d.useCallback)(async()=>{b(!0),h(!0),f([]),j(!1);let a=new AbortController;m.current=a;try{for await(let b of(await a5.rpc.update.stream(void 0,{signal:a.signal}))){if(b.done){j(!0),h(!1);break}b.line&&f(a=>[...a,b.line])}}catch(a){if(a instanceof DOMException&&"AbortError"===a.name)return;f(b=>[...b,`Error: ${a.message}`]),j(!0),h(!1)}},[]),o=(0,d.useCallback)(a=>{!a&&g&&(m.current?.abort(),h(!1)),b(a)},[g]);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(k.Button,{variant:"secondary",onClick:n,disabled:g,children:[(0,c.jsx)(bc.RefreshCw,{size:14,className:g?"animate-spin":""}),g?"Updating…":"Update"]}),(0,c.jsx)(bd.Dialog,{open:a,onOpenChange:o,children:(0,c.jsxs)(bd.Dialog.Content,{title:"Sparkrun Update",size:"lg",children:[(0,c.jsx)(bd.Dialog.Body,{children:(0,c.jsxs)("div",{className:"h-80 overflow-auto rounded-lg bg-zinc-950 p-4 font-mono text-xs text-green-400",children:[0===e.length&&g&&(0,c.jsx)("div",{className:"animate-pulse",children:"Starting update…"}),e.map((a,b)=>(0,c.jsx)("div",{className:"whitespace-pre-wrap",children:a},b)),g&&e.length>0&&(0,c.jsx)("div",{className:"animate-pulse text-green-600",children:"…"}),(0,c.jsx)("div",{ref:l})]})}),(0,c.jsx)(bd.Dialog.Footer,{children:(0,c.jsx)(bd.Dialog.Close,{render:(0,c.jsx)(k.Button,{variant:i?"primary":"ghost",disabled:g,children:"Close"})})})]})})]})}a.s(["RecipesBrowser",0,function({recipes:a,runningRecipes:b}){let o=(0,d.useMemo)(()=>new Set(b),[b]),p=(0,d.useMemo)(()=>a.filter(a=>o.has(a.name)).length,[a,o]),[q,r]=(0,d.useState)(()=>"all"),[s,t]=(0,d.useState)(()=>""),[u,v]=(0,d.useState)(()=>!1);(0,d.useEffect)(()=>{localStorage.setItem("recipes-registry",q)},[q]),(0,d.useEffect)(()=>{localStorage.setItem("recipes-search",s)},[s]),(0,d.useEffect)(()=>{localStorage.setItem("recipes-running-only",String(u))},[u]);let[w,x]=(0,d.useState)(null),y=(0,d.useMemo)(()=>{let b=new Set;for(let c of a)b.add(c.registry);return Array.from(b).sort()},[a]),z=(0,d.useMemo)(()=>{let b=s.trim().toLowerCase();return a.filter(a=>(!u||!!o.has(a.name))&&("all"===q||a.registry===q)&&(!b||`${a.name} ${a.model} ${a.description??""} ${a.runtime}`.toLowerCase().includes(b)))},[a,q,s,u,o]),A=(0,d.useMemo)(()=>{let a=new Map;for(let b of z){let c=a.get(b.registry)??[];c.push(b),a.set(b.registry,c)}return Array.from(a.entries()).sort(([a],[b])=>a.localeCompare(b))},[z]),B=[{value:"all",label:"All registries",description:`${a.length} recipes`},...y.map(b=>({value:b,label:`@${b}`,description:`${a.filter(a=>a.registry===b).length} recipes`}))],C="all"!==q||""!==s||u;return(0,c.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,c.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,c.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,c.jsxs)("div",{className:"flex items-baseline gap-3",children:[(0,c.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Recipes"}),(0,c.jsxs)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:[z.length," of ",a.length]})]}),(0,c.jsx)(be,{})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 rounded-lg border border-zinc-200 bg-zinc-50 p-2 dark:border-zinc-800 dark:bg-zinc-900/40",children:[(0,c.jsxs)("div",{className:"relative min-w-[12rem] flex-1",children:[(0,c.jsx)(g.Search,{size:14,className:"pointer-events-none absolute top-1/2 left-2.5 -translate-y-1/2 text-zinc-400"}),(0,c.jsx)(n.Input,{value:s,onChange:a=>t(a.target.value),placeholder:"Search by name, model, runtime…",className:"bg-white pl-8 dark:bg-zinc-900"})]}),(0,c.jsx)("div",{className:"w-44",children:(0,c.jsx)(l.Select,{value:q,onValueChange:r,options:B,placeholder:"Registry"})}),(0,c.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1 text-xs text-zinc-600 select-none hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800",children:[(0,c.jsx)(m.Switch,{checked:u,onCheckedChange:v}),"Running",p>0&&(0,c.jsxs)("span",{className:"text-zinc-400",children:["(",p,")"]})]}),C&&(0,c.jsxs)(k.Button,{variant:"ghost",size:"sm",onClick:()=>{r("all"),t(""),v(!1)},children:[(0,c.jsx)(h.X,{size:14}),"Clear"]})]})]}),w&&(0,c.jsx)(bb.RecipeShowDialog,{name:w,open:!0,onOpenChange:a=>!a&&x(null),running:o.has(w)}),0===A.length?(0,c.jsx)(i.Card,{children:(0,c.jsx)(i.CardBody,{className:"text-sm text-zinc-500 dark:text-zinc-400",children:"No recipes match these filters."})}):A.map(([a,b])=>(0,c.jsxs)("section",{className:"flex flex-col gap-3",children:[(0,c.jsxs)("h2",{className:"font-mono text-sm font-medium text-zinc-700 dark:text-zinc-300",children:["@",a,(0,c.jsxs)("span",{className:"ml-2 text-xs text-zinc-500 dark:text-zinc-500",children:["(",b.length,")"]})]}),(0,c.jsx)(i.Card,{children:(0,c.jsx)(i.CardBody,{className:"p-0",children:(0,c.jsxs)("table",{className:"w-full text-sm",children:[(0,c.jsx)("thead",{className:"border-b border-zinc-200 bg-zinc-50 text-left text-xs font-medium tracking-wider text-zinc-500 uppercase dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-400",children:(0,c.jsxs)("tr",{children:[(0,c.jsx)("th",{className:"px-4 py-2",children:"Name"}),(0,c.jsx)("th",{className:"px-4 py-2",children:"Model"}),(0,c.jsx)("th",{className:"px-4 py-2",children:"Nodes"}),(0,c.jsx)("th",{className:"px-4 py-2"})]})}),(0,c.jsx)("tbody",{className:"divide-y divide-zinc-200 dark:divide-zinc-800",children:b.map(a=>(0,c.jsxs)("tr",{className:"hover:bg-zinc-50 dark:hover:bg-zinc-950",children:[(0,c.jsx)("td",{className:"px-4 py-2 font-mono text-xs",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(a7,{name:a.name,children:(0,c.jsx)("button",{type:"button",onClick:()=>x(a.name),className:"cursor-pointer underline decoration-zinc-400 decoration-dotted underline-offset-2 hover:text-sky-600 dark:hover:text-sky-400",children:a.file})}),o.has(a.name)&&(0,c.jsx)(j.Badge,{tone:"green",children:"running"})]})}),(0,c.jsx)("td",{className:"px-4 py-2 font-mono text-xs text-zinc-600 dark:text-zinc-400",children:(0,c.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,c.jsx)("span",{children:a.model}),(0,c.jsx)("span",{children:(0,c.jsx)(j.Badge,{tone:"sky",children:a.runtime})})]})}),(0,c.jsx)("td",{className:"px-4 py-2 text-xs text-zinc-600 dark:text-zinc-400",children:(0,c.jsxs)("span",{title:"Minimum number of DGX Spark nodes required to run this recipe",className:"cursor-help underline decoration-zinc-400 decoration-dotted underline-offset-2",children:[a.min_nodes,a.tp&&""!==a.tp&&` \xb7 tp=${a.tp}`]})}),(0,c.jsx)("td",{className:"px-4 py-2 text-right",children:o.has(a.name)?(0,c.jsxs)(k.Button,{size:"sm",variant:"success",disabled:!0,children:[(0,c.jsx)(f.Rocket,{size:12}),"Running"]}):(0,c.jsx)(e.default,{href:`/launch?recipe=${encodeURIComponent(a.name)}`,children:(0,c.jsxs)(k.Button,{size:"sm",variant:"success",children:[(0,c.jsx)(f.Rocket,{size:12}),"Launch"]})})})]},a.name))})]})})})]},a))]})}],74827)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=app_components_recipes_RecipesBrowser_tsx_0n9.1su._.js.map
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/_xj5uS9JHudQNHtZFvZwb/_buildManifest.js",
|
|
11
|
+
"static/_xj5uS9JHudQNHtZFvZwb/_ssgManifest.js",
|
|
12
|
+
"static/_xj5uS9JHudQNHtZFvZwb/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/03q757hpt3301.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/093uee.ipdzn_.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/03q757hpt3301.js"/><script src="/_next/static/chunks/0o0far65u959f.js" async=""></script><script src="/_next/static/chunks/0gwjk38kzji83.js" async=""></script><script src="/_next/static/chunks/12mz0_._155bq.js" async=""></script><script src="/_next/static/chunks/173qvra~fczs6.js" async=""></script><script src="/_next/static/chunks/turbopack-01vtk6cqgo2n6.js" async=""></script><script src="/_next/static/chunks/05j~t092g6cly.js" async=""></script><script src="/_next/static/chunks/0993.7t31zdad.js" async=""></script><script src="/_next/static/chunks/0k1wfm6d8.rv0.js" async=""></script><script src="/_next/static/chunks/0-3wtr85ap-rp.js" async=""></script><script src="/_next/static/chunks/0kvzvlk316~8k.js" async=""></script><title>404: This page could not be found.</title><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#0ea5e9" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#0b1220" media="(prefers-color-scheme: dark)"/><title>sparkrun</title><meta name="description" content="Web UI for sparkrun — launch and monitor inference workloads on DGX Spark"/><meta name="application-name" content="sparkrun"/><meta property="og:title" content="sparkrun"/><meta property="og:description" content="Web UI for sparkrun — launch and monitor inference workloads on DGX Spark"/><meta property="og:image" content="http://localhost:3000/logo.svg"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="sparkrun"/><meta name="twitter:description" content="Web UI for sparkrun — launch and monitor inference workloads on DGX Spark"/><meta name="twitter:image" content="http://localhost:3000/logo.svg"/><link rel="icon" href="/icon.svg?icon.113mx9lzchuti.svg" sizes="any" type="image/svg+xml"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="min-h-full"><div hidden=""><!--$--><!--/$--></div><div id="root-isolation" class="flex min-h-screen flex-col"><header class="sticky top-0 z-10 border-b border-zinc-200 bg-white/80 backdrop-blur dark:border-zinc-800 dark:bg-zinc-950/80"><div class="mx-auto flex h-14 max-w-7xl items-center justify-between px-6"><div class="flex items-center gap-4"><a class="flex items-center gap-2 text-sm font-semibold text-zinc-900 dark:text-zinc-100" href="/"><img alt="" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" src="/logo.svg"/>sparkrun</a></div><nav class="flex items-center gap-1"><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/dashboard"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity" aria-hidden="true"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg>Dashboard</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/recipes"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-text" aria-hidden="true"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20"></path><path d="M8 11h8"></path><path d="M8 7h6"></path></svg>Recipes</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/launch"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rocket" aria-hidden="true"><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"></path><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09"></path><path d="M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z"></path><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05"></path></svg>Launch</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/benchmarks"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gauge" aria-hidden="true"><path d="m12 14 4-4"></path><path d="M3.34 19a10 10 0 1 1 17.32 0"></path></svg>Benchmarks</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/monitor"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-line" aria-hidden="true"><path d="M3 3v16a2 2 0 0 0 2 2h16"></path><path d="m19 9-5 5-4-4-3 3"></path></svg>Monitor</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg>Chat</a></nav></div></header><main class="mx-auto w-full max-w-7xl flex-1 px-6 py-8"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><footer class="mt-12 border-t border-zinc-200 dark:border-zinc-800"><div class="mx-auto flex max-w-7xl flex-col items-center justify-between gap-3 px-6 py-6 text-sm sm:flex-row"><div class="flex items-center gap-2 text-zinc-500 dark:text-zinc-400"><img alt="" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" style="color:transparent" src="/logo.svg"/><span><span class="font-medium text-zinc-700 dark:text-zinc-300">sparkrun-ui</span> · web UI for<!-- --> <a target="_blank" rel="noreferrer" class="underline decoration-zinc-400 decoration-dotted underline-offset-2 hover:text-sky-600 dark:hover:text-sky-400" href="https://github.com/mcampa/sparkrun">sparkrun</a></span></div><a target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 rounded-md px-2 py-1 text-zinc-600 transition-colors hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" aria-label="View source on GitHub" href="https://github.com/mcampa/sparkrun-ui"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-1.96c-3.2.7-3.87-1.54-3.87-1.54-.52-1.32-1.28-1.67-1.28-1.67-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.03 1.76 2.69 1.25 3.34.96.1-.74.4-1.25.73-1.54-2.55-.29-5.24-1.27-5.24-5.66 0-1.25.45-2.27 1.18-3.07-.12-.29-.51-1.46.11-3.04 0 0 .96-.31 3.15 1.18A11 11 0 0 1 12 6.8c.97 0 1.95.13 2.86.38 2.18-1.49 3.14-1.18 3.14-1.18.63 1.58.23 2.75.11 3.04.74.8 1.18 1.82 1.18 3.07 0 4.4-2.7 5.37-5.26 5.65.41.35.77 1.05.77 2.11v3.13c0 .31.21.68.8.56C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z"></path></svg><span>GitHub</span></a></div></footer></div><script src="/_next/static/chunks/03q757hpt3301.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[84538,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"ToastProvider\"]\n3:I[55367,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"\"]\n4:I[83540,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"Image\"]\n5:I[92250,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"HeaderStats\"]\n6:I[54858,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"Nav\"]\n7:I[12224,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"default\"]\n8:I[67689,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"default\"]\nf:I[77663,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/093uee.ipdzn_.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/093uee.ipdzn_.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/05j~t092g6cly.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0993.7t31zdad.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/0kvzvlk316~8k.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable h-full antialiased\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"id\":\"root-isolation\",\"className\":\"flex min-h-screen flex-col\",\"children\":[[\"$\",\"header\",null,{\"className\":\"sticky top-0 z-10 border-b border-zinc-200 bg-white/80 backdrop-blur dark:border-zinc-800 dark:bg-zinc-950/80\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex h-14 max-w-7xl items-center justify-between px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-4\",\"children\":[[\"$\",\"$L3\",null,{\"href\":\"/\",\"className\":\"flex items-center gap-2 text-sm font-semibold text-zinc-900 dark:text-zinc-100\",\"children\":[[\"$\",\"$L4\",null,{\"src\":\"/logo.svg\",\"alt\":\"\",\"width\":20,\"height\":20,\"priority\":true}],\"sparkrun\"]}],[\"$\",\"$L5\",null,{}]]}],[\"$\",\"$L6\",null,{}]]}]}],[\"$\",\"main\",null,{\"className\":\"mx-auto w-full max-w-7xl flex-1 px-6 py-8\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"footer\",null,{\"className\":\"mt-12 border-t border-zinc-200 dark:border-zinc-800\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex max-w-7xl flex-col items-center justify-between gap-3 px-6 py-6 text-sm sm:flex-row\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 text-zinc-500 dark:text-zinc-400\",\"children\":[[\"$\",\"$L4\",null,{\"src\":\"/logo.svg\",\"alt\":\"\",\"width\":16,\"height\":16}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"font-medium text-zinc-700 dark:text-zinc-300\",\"children\":\"sparkrun-ui\"}],\" · web UI for\",\" \",[\"$\",\"$L3\",null,{\"href\":\"https://github.com/mcampa/sparkrun\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"underline decoration-zinc-400 decoration-dotted underline-offset-2 hover:text-sky-600 dark:hover:text-sky-400\",\"children\":\"sparkrun\"}]]}]]}],[\"$\",\"$L3\",null,{\"href\":\"https://github.com/mcampa/sparkrun-ui\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"inline-flex items-center gap-2 rounded-md px-2 py-1 text-zinc-600 transition-colors hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100\",\"aria-label\":\"View source on GitHub\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":\"$L9\"}],\"$La\"]}]]}]}]]}]}]}]}]]}],{\"children\":[\"$Lb\",{\"children\":[\"$Lc\",{},null,false,null]},null,false,\"$@d\"]},null,false,null],\"$Le\",false]],\"m\":\"$undefined\",\"G\":[\"$f\",[\"$L10\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"K7dVTTbWGsVpPXwtNCeQZ\"}\n"])</script><script>self.__next_f.push([1,"11:I[76779,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"OutletBoundary\"]\n12:\"$Sreact.suspense\"\n15:I[76779,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"ViewportBoundary\"]\n17:I[76779,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"MetadataBoundary\"]\n9:[\"$\",\"path\",null,{\"d\":\"M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-1.96c-3.2.7-3.87-1.54-3.87-1.54-.52-1.32-1.28-1.67-1.28-1.67-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.03 1.76 2.69 1.25 3.34.96.1-.74.4-1.25.73-1.54-2.55-.29-5.24-1.27-5.24-5.66 0-1.25.45-2.27 1.18-3.07-.12-.29-.51-1.46.11-3.04 0 0 .96-.31 3.15 1.18A11 11 0 0 1 12 6.8c.97 0 1.95.13 2.86.38 2.18-1.49 3.14-1.18 3.14-1.18.63 1.58.23 2.75.11 3.04.74.8 1.18 1.82 1.18 3.07 0 4.4-2.7 5.37-5.26 5.65.41.35.77 1.05.77 2.11v3.13c0 .31.21.68.8.56C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z\"}]\na:[\"$\",\"span\",null,{\"children\":\"GitHub\"}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"c:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$12\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@13\"}]}]]}]\n"])</script><script>self.__next_f.push([1,"14:[]\nd:\"$W14\"\ne:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L15\",null,{\"children\":\"$L16\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L17\",null,{\"children\":[\"$\",\"$12\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n10:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/093uee.ipdzn_.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"16:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0ea5e9\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#0b1220\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n"])</script><script>self.__next_f.push([1,"19:I[6726,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/0993.7t31zdad.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"IconMark\"]\n13:null\n18:[[\"$\",\"title\",\"0\",{\"children\":\"sparkrun\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Web UI for sparkrun — launch and monitor inference workloads on DGX Spark\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"sparkrun\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"sparkrun\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Web UI for sparkrun — launch and monitor inference workloads on DGX Spark\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image\",\"content\":\"http://localhost:3000/logo.svg\"}],[\"$\",\"meta\",\"6\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"7\",{\"name\":\"twitter:title\",\"content\":\"sparkrun\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:description\",\"content\":\"Web UI for sparkrun — launch and monitor inference workloads on DGX Spark\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:image\",\"content\":\"http://localhost:3000/logo.svg\"}],[\"$\",\"link\",\"10\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.113mx9lzchuti.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L19\",\"11\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/0sbgc78goj4w..css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/03q757hpt3301.js"/><script src="/_next/static/chunks/0o0far65u959f.js" async=""></script><script src="/_next/static/chunks/0gwjk38kzji83.js" async=""></script><script src="/_next/static/chunks/12mz0_._155bq.js" async=""></script><script src="/_next/static/chunks/173qvra~fczs6.js" async=""></script><script src="/_next/static/chunks/turbopack-01vtk6cqgo2n6.js" async=""></script><script src="/_next/static/chunks/05j~t092g6cly.js" async=""></script><script src="/_next/static/chunks/01f1zms1lqrcy.js" async=""></script><script src="/_next/static/chunks/0k1wfm6d8.rv0.js" async=""></script><script src="/_next/static/chunks/0-3wtr85ap-rp.js" async=""></script><script src="/_next/static/chunks/0kvzvlk316~8k.js" async=""></script><title>404: This page could not be found.</title><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#0ea5e9" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#0b1220" media="(prefers-color-scheme: dark)"/><title>sparkrun</title><meta name="description" content="Web UI for sparkrun — launch and monitor inference workloads on DGX Spark"/><meta name="application-name" content="sparkrun"/><meta property="og:title" content="sparkrun"/><meta property="og:description" content="Web UI for sparkrun — launch and monitor inference workloads on DGX Spark"/><meta property="og:image" content="http://localhost:5678/logo.svg"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="sparkrun"/><meta name="twitter:description" content="Web UI for sparkrun — launch and monitor inference workloads on DGX Spark"/><meta name="twitter:image" content="http://localhost:5678/logo.svg"/><link rel="icon" href="/icon.svg?icon.113mx9lzchuti.svg" sizes="any" type="image/svg+xml"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="min-h-full"><div hidden=""><!--$--><!--/$--></div><div id="root-isolation" class="flex min-h-screen flex-col"><canvas class="pointer-events-none fixed inset-0 -z-10" aria-hidden="true"></canvas><header class="sticky top-0 z-10 border-b border-zinc-200 bg-white/80 backdrop-blur dark:border-zinc-800 dark:bg-zinc-950/80"><div class="mx-auto flex h-14 max-w-7xl items-center justify-between px-6"><div class="flex items-center gap-4"><a class="flex items-center gap-2 text-sm font-semibold text-zinc-900 dark:text-zinc-100" href="/"><img alt="" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" src="/logo.svg"/>sparkrun</a></div><nav class="flex items-center gap-1"><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/dashboard"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity" aria-hidden="true"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg>Dashboard</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/recipes"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-text" aria-hidden="true"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20"></path><path d="M8 11h8"></path><path d="M8 7h6"></path></svg>Recipes</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/launch"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rocket" aria-hidden="true"><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"></path><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09"></path><path d="M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z"></path><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05"></path></svg>Launch</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/benchmarks"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gauge" aria-hidden="true"><path d="m12 14 4-4"></path><path d="M3.34 19a10 10 0 1 1 17.32 0"></path></svg>Benchmarks</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/monitor"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-line" aria-hidden="true"><path d="M3 3v16a2 2 0 0 0 2 2h16"></path><path d="m19 9-5 5-4-4-3 3"></path></svg>Monitor</a><a class="inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg>Chat</a></nav></div></header><main class="mx-auto w-full max-w-7xl flex-1 px-6 py-8"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><footer class="mt-12 border-t border-zinc-200 bg-white/80 backdrop-blur dark:border-zinc-800 dark:bg-zinc-950/80"><div class="mx-auto flex max-w-7xl flex-col items-center justify-between gap-3 px-6 py-6 text-sm sm:flex-row"><div class="flex items-center gap-2 text-zinc-500 dark:text-zinc-400"><img alt="" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" style="color:transparent" src="/logo.svg"/><span><span class="font-medium text-zinc-700 dark:text-zinc-300">sparkrun-ui</span> · web UI for<!-- --> <a target="_blank" rel="noreferrer" class="underline decoration-zinc-400 decoration-dotted underline-offset-2 hover:text-sky-600 dark:hover:text-sky-400" href="https://github.com/mcampa/sparkrun">sparkrun</a></span></div><a target="_blank" rel="noreferrer" class="inline-flex items-center gap-2 rounded-md px-2 py-1 text-zinc-600 transition-colors hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100" aria-label="View source on GitHub" href="https://github.com/mcampa/sparkrun-ui"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-1.96c-3.2.7-3.87-1.54-3.87-1.54-.52-1.32-1.28-1.67-1.28-1.67-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.03 1.76 2.69 1.25 3.34.96.1-.74.4-1.25.73-1.54-2.55-.29-5.24-1.27-5.24-5.66 0-1.25.45-2.27 1.18-3.07-.12-.29-.51-1.46.11-3.04 0 0 .96-.31 3.15 1.18A11 11 0 0 1 12 6.8c.97 0 1.95.13 2.86.38 2.18-1.49 3.14-1.18 3.14-1.18.63 1.58.23 2.75.11 3.04.74.8 1.18 1.82 1.18 3.07 0 4.4-2.7 5.37-5.26 5.65.41.35.77 1.05.77 2.11v3.13c0 .31.21.68.8.56C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z"></path></svg><span>GitHub</span></a></div></footer></div><script src="/_next/static/chunks/03q757hpt3301.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[84538,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"ToastProvider\"]\n3:I[1842,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"AnimatedBackground\"]\n4:I[55367,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"\"]\n5:I[83540,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"Image\"]\n6:I[92250,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"HeaderStats\"]\n7:I[54858,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"Nav\"]\n8:I[12224,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"default\"]\n9:I[67689,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"default\"]\n10:I[77663,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0sbgc78goj4w..css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0sbgc78goj4w..css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/05j~t092g6cly.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/01f1zms1lqrcy.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/0kvzvlk316~8k.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable h-full antialiased\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"div\",null,{\"id\":\"root-isolation\",\"className\":\"flex min-h-screen flex-col\",\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"header\",null,{\"className\":\"sticky top-0 z-10 border-b border-zinc-200 bg-white/80 backdrop-blur dark:border-zinc-800 dark:bg-zinc-950/80\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex h-14 max-w-7xl items-center justify-between px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-4\",\"children\":[[\"$\",\"$L4\",null,{\"href\":\"/\",\"className\":\"flex items-center gap-2 text-sm font-semibold text-zinc-900 dark:text-zinc-100\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/logo.svg\",\"alt\":\"\",\"width\":20,\"height\":20,\"priority\":true}],\"sparkrun\"]}],[\"$\",\"$L6\",null,{}]]}],[\"$\",\"$L7\",null,{}]]}]}],[\"$\",\"main\",null,{\"className\":\"mx-auto w-full max-w-7xl flex-1 px-6 py-8\",\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"footer\",null,{\"className\":\"mt-12 border-t border-zinc-200 bg-white/80 backdrop-blur dark:border-zinc-800 dark:bg-zinc-950/80\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex max-w-7xl flex-col items-center justify-between gap-3 px-6 py-6 text-sm sm:flex-row\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2 text-zinc-500 dark:text-zinc-400\",\"children\":[[\"$\",\"$L5\",null,{\"src\":\"/logo.svg\",\"alt\":\"\",\"width\":16,\"height\":16}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"font-medium text-zinc-700 dark:text-zinc-300\",\"children\":\"sparkrun-ui\"}],\" · web UI for\",\" \",[\"$\",\"$L4\",null,{\"href\":\"https://github.com/mcampa/sparkrun\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"underline decoration-zinc-400 decoration-dotted underline-offset-2 hover:text-sky-600 dark:hover:text-sky-400\",\"children\":\"sparkrun\"}]]}]]}],[\"$\",\"$L4\",null,{\"href\":\"https://github.com/mcampa/sparkrun-ui\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"inline-flex items-center gap-2 rounded-md px-2 py-1 text-zinc-600 transition-colors hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-100\",\"aria-label\":\"View source on GitHub\",\"children\":[\"$La\",\"$Lb\"]}]]}]}]]}]}]}]}]]}],{\"children\":[\"$Lc\",{\"children\":[\"$Ld\",{},null,false,null]},null,false,\"$@e\"]},null,false,null],\"$Lf\",false]],\"m\":\"$undefined\",\"G\":[\"$10\",[\"$L11\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"_xj5uS9JHudQNHtZFvZwb\"}\n"])</script><script>self.__next_f.push([1,"12:I[76779,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"OutletBoundary\"]\n13:\"$Sreact.suspense\"\n16:I[76779,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"ViewportBoundary\"]\n18:I[76779,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"MetadataBoundary\"]\na:[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-1.96c-3.2.7-3.87-1.54-3.87-1.54-.52-1.32-1.28-1.67-1.28-1.67-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.03 1.76 2.69 1.25 3.34.96.1-.74.4-1.25.73-1.54-2.55-.29-5.24-1.27-5.24-5.66 0-1.25.45-2.27 1.18-3.07-.12-.29-.51-1.46.11-3.04 0 0 .96-.31 3.15 1.18A11 11 0 0 1 12 6.8c.97 0 1.95.13 2.86.38 2.18-1.49 3.14-1.18 3.14-1.18.63 1.58.23 2.75.11 3.04.74.8 1.18 1.82 1.18 3.07 0 4.4-2.7 5.37-5.26 5.65.41.35.77 1.05.77 2.11v3.13c0 .31.21.68.8.56C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z\"}]}]\nb:[\"$\",\"span\",null,{\"children\":\"GitHub\"}]\nc:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"d:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:2:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$13\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@14\"}]}]]}]\n"])</script><script>self.__next_f.push([1,"15:[]\ne:\"$W15\"\nf:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L16\",null,{\"children\":\"$L17\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L18\",null,{\"children\":[\"$\",\"$13\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L19\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n11:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0sbgc78goj4w..css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"17:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0ea5e9\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#0b1220\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n"])</script><script>self.__next_f.push([1,"1a:I[6726,[\"/_next/static/chunks/05j~t092g6cly.js\",\"/_next/static/chunks/01f1zms1lqrcy.js\",\"/_next/static/chunks/0k1wfm6d8.rv0.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\",\"/_next/static/chunks/0kvzvlk316~8k.js\"],\"IconMark\"]\n14:null\n19:[[\"$\",\"title\",\"0\",{\"children\":\"sparkrun\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Web UI for sparkrun — launch and monitor inference workloads on DGX Spark\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"sparkrun\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"sparkrun\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Web UI for sparkrun — launch and monitor inference workloads on DGX Spark\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image\",\"content\":\"http://localhost:5678/logo.svg\"}],[\"$\",\"meta\",\"6\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"7\",{\"name\":\"twitter:title\",\"content\":\"sparkrun\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:description\",\"content\":\"Web UI for sparkrun — launch and monitor inference workloads on DGX Spark\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:image\",\"content\":\"http://localhost:5678/logo.svg\"}],[\"$\",\"link\",\"10\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.113mx9lzchuti.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L1a\",\"11\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/03q757hpt3301.js"/><script src="/_next/static/chunks/0o0far65u959f.js" async=""></script><script src="/_next/static/chunks/0gwjk38kzji83.js" async=""></script><script src="/_next/static/chunks/12mz0_._155bq.js" async=""></script><script src="/_next/static/chunks/173qvra~fczs6.js" async=""></script><script src="/_next/static/chunks/turbopack-01vtk6cqgo2n6.js" async=""></script><script src="/_next/static/chunks/06k6o5~7u5tj3.js" async=""></script><script src="/_next/static/chunks/0-3wtr85ap-rp.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/03q757hpt3301.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[12224,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"default\"]\n3:I[67689,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"default\"]\n4:I[76779,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76779,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"ViewportBoundary\"]\na:I[76779,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"MetadataBoundary\"]\nc:I[77663,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/03q757hpt3301.js"/><script src="/_next/static/chunks/0o0far65u959f.js" async=""></script><script src="/_next/static/chunks/0gwjk38kzji83.js" async=""></script><script src="/_next/static/chunks/12mz0_._155bq.js" async=""></script><script src="/_next/static/chunks/173qvra~fczs6.js" async=""></script><script src="/_next/static/chunks/turbopack-01vtk6cqgo2n6.js" async=""></script><script src="/_next/static/chunks/06k6o5~7u5tj3.js" async=""></script><script src="/_next/static/chunks/0-3wtr85ap-rp.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/03q757hpt3301.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[12224,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"default\"]\n3:I[67689,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"default\"]\n4:I[76779,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76779,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"ViewportBoundary\"]\na:I[76779,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"MetadataBoundary\"]\nc:I[77663,[\"/_next/static/chunks/06k6o5~7u5tj3.js\",\"/_next/static/chunks/0-3wtr85ap-rp.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"_xj5uS9JHudQNHtZFvZwb\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"FMfwCiMLdIERj5JxP0Nks6SCFDe57+7PQ+BNXZypxMQ=\"\n}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2265,e=>{"use strict";var t=e.i(76350),s=e.i(33209);e.s(["Card",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,s.cn)("rounded-lg border border-zinc-200 bg-white shadow-sm dark:border-zinc-800 dark:bg-zinc-900",e),...a})},"CardBody",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,s.cn)("px-5 py-4",e),...a})},"CardDescription",0,function({className:e,...a}){return(0,t.jsx)("p",{className:(0,s.cn)("text-sm text-zinc-500 dark:text-zinc-400",e),...a})},"CardFooter",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,s.cn)("flex items-center justify-end gap-2 border-t border-zinc-200 px-5 py-3 dark:border-zinc-800",e),...a})},"CardHeader",0,function({className:e,...a}){return(0,t.jsx)("div",{className:(0,s.cn)("flex flex-col gap-1 border-b border-zinc-200 px-5 py-4 dark:border-zinc-800",e),...a})},"CardTitle",0,function({className:e,...a}){return(0,t.jsx)("h3",{className:(0,s.cn)("text-base font-semibold text-zinc-900 dark:text-zinc-100",e),...a})}])},69393,e=>{"use strict";var t=e.i(76350),s=e.i(33209);let a={neutral:"bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300",sky:"bg-sky-100 text-sky-700 dark:bg-sky-950 dark:text-sky-300",green:"bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-300",amber:"bg-amber-100 text-amber-700 dark:bg-amber-950 dark:text-amber-300",red:"bg-red-100 text-red-700 dark:bg-red-950 dark:text-red-300",purple:"bg-purple-100 text-purple-700 dark:bg-purple-950 dark:text-purple-300"};e.s(["Badge",0,function({tone:e="neutral",className:r,...n}){return(0,t.jsx)("span",{className:(0,s.cn)("inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs font-medium",a[e],r),...n})}])},16556,84368,e=>{"use strict";var t=e.i(28469);e.s(["useBaseUiId",0,function(e){return(0,t.useId)(e,"base-ui")}],16556);var s=e.i(73576),a=e.i(59183),r=e.i(22978);e.s(["useValueChanged",0,function(e,t){let n=s.useRef(e),i=(0,r.useStableCallback)(t);(0,a.useIsoLayoutEffect)(()=>{n.current!==e&&i(n.current)},[e,i]),(0,a.useIsoLayoutEffect)(()=>{n.current=e},[e])}],84368)},81807,e=>{"use strict";let t=(0,e.i(6927).default)("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]);e.s(["ScrollText",0,t],81807)},14779,38540,e=>{"use strict";var t=e.i(6927);let s=(0,t.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);e.s(["Cpu",0,s],14779);let a=(0,t.default)("server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);e.s(["Server",0,a],38540)},44501,30650,e=>{"use strict";let t=(0,e.i(6927).default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",0,t],44501);var s=e.i(73576),a=e.i(21432);e.s(["useWorkloadHealth",0,function(e){let[t,r]=(0,s.useState)(null),[n,i]=(0,s.useState)(e);return e!==n&&(i(e),r(null)),(0,s.useEffect)(()=>{if(!e)return;let t=!1,s=new AbortController,n=async()=>{try{let n=await a.rpc.workloads.health({clusterId:e},{signal:s.signal});t||r(n)}catch{}};n();let i=setInterval(n,5e3);return()=>{t=!0,s.abort(),clearInterval(i)}},[e]),t??{ready:!1,state:"loading"}}],30650)},66399,e=>{"use strict";var t=e.i(76350),s=e.i(73576),a=e.i(55367),r=e.i(84339),n=e.i(64477),i=e.i(82088),l=e.i(83079),c=e.i(69393),d=e.i(31307),o=e.i(21432);let x=new Map;e.s(["RecipeShowDialog",0,function({name:e,title:u,open:m,onOpenChange:p,running:h=!1,showLaunch:g=!0}){let[k,b]=(0,s.useState)(()=>x.get(e)??null),[j,f]=(0,s.useState)(null),[y,v]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{if(!m)return;let t=x.get(e);if(t)return void b(t);let s=!1;return v(!0),f(null),o.rpc.recipes.show({name:e}).then(t=>{s||(x.set(e,t.text),b(t.text))}).catch(e=>{s||f(e instanceof Error?e.message:String(e))}).finally(()=>{s||v(!1)}),()=>{s=!0}},[m,e]),(0,t.jsx)(i.Dialog,{open:m,onOpenChange:p,children:(0,t.jsxs)(i.Dialog.Content,{title:u??e,size:"xl",description:"sparkrun recipe show",children:[(0,t.jsx)(i.Dialog.Body,{children:y&&!k?(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-zinc-500",children:[(0,t.jsx)(r.Loader2,{size:14,className:"animate-spin"})," loading…"]}):j?(0,t.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:j}):k?(0,t.jsx)(d.YamlEditor,{value:k,readOnly:!0,className:"max-h-[60vh]"}):null}),(0,t.jsxs)(i.Dialog.Footer,{children:[(0,t.jsx)(i.Dialog.Close,{render:(0,t.jsx)(l.Button,{variant:"ghost",type:"button",children:"Close"})}),h?(0,t.jsx)(c.Badge,{tone:"green",children:"already running"}):g?(0,t.jsx)(a.default,{href:`/launch?recipe=${encodeURIComponent(e)}`,children:(0,t.jsxs)(l.Button,{variant:"primary",children:[(0,t.jsx)(n.Rocket,{size:14}),"Launch"]})}):null]})]})})}])},60632,e=>{"use strict";var t=e.i(76350),s=e.i(73576),a=e.i(55367),r=e.i(64477),n=e.i(21432),i=e.i(2265),l=e.i(69393),c=e.i(83079),d=e.i(4403),o=e.i(44501),x=e.i(81807),u=e.i(84339),m=e.i(82088),p=e.i(84538),h=e.i(66399),g=e.i(30650);function k({workload:e,recipe:r}){let[l,u]=(0,s.useState)(!1),[j,f]=(0,s.useState)(!1),[y,v]=(0,s.useTransition)(),z=(0,g.useWorkloadHealth)(e.cluster_id),N=e.meta.model||e.meta.recipe||e.cluster_id,w=function(e){if(!e)return null;let t=e.match(/^Up\s+(.+?)(?:\s*\([^)]*\))?\s*$/);return t?.[1]??null}(e.status),C=r?.registeredName??e.meta.recipe;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.Card,{children:[(0,t.jsx)(i.CardHeader,{children:(0,t.jsx)(i.CardTitle,{className:"text-sm font-semibold",children:N})}),(0,t.jsxs)(i.CardBody,{className:"flex flex-col gap-3 text-sm",children:[(0,t.jsxs)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs",children:[r&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Recipe"}),(0,t.jsx)("dd",{children:C?(0,t.jsx)("button",{type:"button",onClick:()=>f(!0),className:"cursor-pointer font-medium text-sky-600 hover:underline dark:text-sky-400",children:r.label}):(0,t.jsx)("span",{className:"font-medium text-zinc-700 dark:text-zinc-300",children:r.label})})]}),e.meta.port&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Port"}),(0,t.jsx)("dd",{className:"font-mono text-zinc-700 dark:text-zinc-300",children:e.meta.port})]}),e.host&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Host"}),(0,t.jsx)("dd",{className:"font-mono text-zinc-700 dark:text-zinc-300",children:e.host})]}),w&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Uptime"}),(0,t.jsx)("dd",{className:"text-zinc-700 dark:text-zinc-300",children:w})]}),(0,t.jsx)("dt",{className:"text-zinc-500 dark:text-zinc-400",children:"Status"}),(0,t.jsx)("dd",{children:(0,t.jsx)(b,{health:z,containerStatus:e.status})})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[e.host&&e.meta.port&&(0,t.jsx)(a.default,{href:`/chat?clusterId=${encodeURIComponent(e.cluster_id)}`,children:(0,t.jsxs)(c.Button,{variant:"ghost",size:"sm",children:[(0,t.jsx)(d.MessageSquare,{size:14}),"Chat"]})}),(0,t.jsx)(a.default,{href:`/logs/${e.cluster_id}`,children:(0,t.jsxs)(c.Button,{variant:"ghost",size:"sm",children:[(0,t.jsx)(x.ScrollText,{size:14}),"Logs"]})}),(0,t.jsxs)(c.Button,{variant:"danger",size:"sm",onClick:()=>u(!0),disabled:y,children:[(0,t.jsx)(o.Square,{size:14}),y?"Stopping…":"Stop"]})]})]})]}),(0,t.jsx)(m.AlertDialog,{open:l,onOpenChange:u,title:"Stop this workload?",description:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"block font-mono",children:N}),(0,t.jsxs)("span",{className:"mt-2 block",children:["The container will be terminated on ",e.host??"the target host","."]})]}),confirmLabel:"Stop",destructive:!0,onConfirm:()=>{v(async()=>{try{await n.rpc.workloads.stop({clusterId:e.cluster_id}),p.toast.success("Stop requested",`${N} is shutting down`)}catch(t){let e=t instanceof Error?t.message:"Unknown error";p.toast.error("Stop failed",e)}})}}),r&&C&&(0,t.jsx)(h.RecipeShowDialog,{name:C,title:r.label,open:j,onOpenChange:e=>!e&&f(!1),showLaunch:!1})]})}function b({health:e,containerStatus:s}){return e.ready?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-emerald-500"}),(0,t.jsx)("span",{className:"text-zinc-700 dark:text-zinc-300",children:"Ready"})]}):"loading"===e.state?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Loader2,{size:10,className:"animate-spin text-zinc-400"}),(0,t.jsx)("span",{className:"text-zinc-500 capitalize dark:text-zinc-400",children:s??"Checking…"})]}):"starting"===e.state?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)(u.Loader2,{size:10,className:"animate-spin text-amber-500"}),(0,t.jsx)("span",{className:"text-amber-700 dark:text-amber-300",children:"Starting…"})]}):(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-red-500"}),(0,t.jsx)("span",{className:"text-red-700 dark:text-red-300",title:e.reason??void 0,children:"Unreachable"})]})}var j=e.i(14779);let f=(0,e.i(6927).default)("memory-stick",[["path",{d:"M12 12v-2",key:"fwoke6"}],["path",{d:"M12 18v-2",key:"qj6yno"}],["path",{d:"M16 12v-2",key:"heuere"}],["path",{d:"M16 18v-2",key:"s1ct0w"}],["path",{d:"M2 11h1.5",key:"15p63e"}],["path",{d:"M20 18v-2",key:"12ehxp"}],["path",{d:"M20.5 11H22",key:"khsy7a"}],["path",{d:"M4 18v-2",key:"1c3oqr"}],["path",{d:"M8 12v-2",key:"1mwtfd"}],["path",{d:"M8 18v-2",key:"qcmpov"}],["rect",{x:"2",y:"6",width:"20",height:"10",rx:"2",key:"1qcswk"}]]);var y=e.i(38540),v=e.i(74799),z=e.i(98638);function N(e){if(!e)return 0;let t=parseFloat(e);return Number.isFinite(t)?t:0}function w(e){if(!e)return{hostCount:0,cpuAvg:0,gpuAvg:0,memUsedGb:0,memTotalGb:0,gpuMemUsedGb:0,gpuMemTotalGb:0,powerW:0,cpuTempC:0,gpuTempC:0,jobsTotal:0};let t=Object.values(e.hosts),s=0,a=0,r=0,n=0,i=0,l=0,c=0,d=0,o=0,x=0;for(let e of t)s+=N(e.cpu_usage_pct),a+=N(e.gpu_util_pct),r+=N(e.mem_used_mb),n+=N(e.mem_total_mb),i+=N(e.gpu_mem_used_mb),l+=N(e.gpu_mem_total_mb),c+=N(e.gpu_power_w),d+=N(e.cpu_temp_c),o+=N(e.gpu_temp_c),x+=N(e.sparkrun_jobs);let u=t.length||1;return{hostCount:t.length,cpuAvg:s/u,gpuAvg:a/u,memUsedGb:r/1024,memTotalGb:n/1024,gpuMemUsedGb:i/1024,gpuMemTotalGb:l/1024,powerW:c,cpuTempC:d/u,gpuTempC:o/u,jobsTotal:x}}function C(){let[e,a]=(0,s.useState)(null),[r,l]=(0,s.useState)({cpu:[],gpu:[]}),[c,d]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=new AbortController,t=!1;return(async()=>{try{let s=await n.rpc.monitor.stream({intervalSec:2},{signal:e.signal});for await(let e of(d(!0),s)){if(t)break;a(e);let s=w(e);l(e=>({cpu:M(e.cpu,s.cpuAvg),gpu:M(e.gpu,s.gpuAvg)}))}}catch(e){t||e instanceof DOMException&&"AbortError"===e.name||console.error("[monitor.stream]",e)}finally{t||d(!1)}})(),()=>{t=!0,e.abort()}},[]);let o=w(e),x=o.memTotalGb?o.memUsedGb/o.memTotalGb*100:0,u=o.gpuMemTotalGb?o.gpuMemUsedGb/o.gpuMemTotalGb*100:0;return(0,t.jsx)(i.Card,{children:(0,t.jsxs)(i.CardBody,{className:"p-5",children:[(0,t.jsxs)("div",{className:"mb-4 flex items-baseline justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(y.Server,{size:14,className:"text-zinc-500"}),(0,t.jsx)("span",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"Cluster overview"}),(0,t.jsxs)("span",{className:"text-xs text-zinc-500",children:["· ",o.hostCount||"—"," host",1===o.hostCount?"":"s"," · ",o.jobsTotal," job",1===o.jobsTotal?"":"s"]})]}),(0,t.jsx)("span",{className:"inline-flex h-2 w-2 rounded-full "+(c?"animate-pulse bg-emerald-500":"bg-zinc-300"),title:c?"live":"reconnecting"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3 lg:grid-cols-5",children:[(0,t.jsx)(G,{icon:(0,t.jsx)(j.Cpu,{size:14}),tone:"sky",label:"CPU",value:`${o.cpuAvg.toFixed(1)}%`,sub:`avg across ${o.hostCount||0}`,pct:o.cpuAvg,spark:r.cpu}),(0,t.jsx)(G,{icon:(0,t.jsx)(z.Zap,{size:14}),tone:"purple",label:"GPU",value:`${o.gpuAvg.toFixed(0)}%`,sub:`avg across ${o.hostCount||0}`,pct:o.gpuAvg,spark:r.gpu}),(0,t.jsx)(G,{icon:(0,t.jsx)(f,{size:14}),tone:"green",label:"Memory",value:`${o.memUsedGb.toFixed(0)} / ${o.memTotalGb.toFixed(0)} GB`,sub:`${x.toFixed(0)}% used`,pct:x}),(0,t.jsx)(G,{icon:(0,t.jsx)(z.Zap,{size:14}),tone:"amber",label:"Power",value:`${o.powerW.toFixed(1)} W`,sub:o.gpuMemTotalGb?`GPU mem ${o.gpuMemUsedGb.toFixed(0)}/${o.gpuMemTotalGb.toFixed(0)} GB`:"total GPU draw",pct:u}),(0,t.jsx)(G,{icon:(0,t.jsx)(v.Thermometer,{size:14}),tone:"red",label:"Temps",value:o.cpuTempC||o.gpuTempC?`${o.gpuTempC.toFixed(0)}\xb0C / ${o.cpuTempC.toFixed(0)}\xb0C`:"—",sub:"GPU / CPU avg",pct:o.gpuTempC>0?Math.min(100,o.gpuTempC/100*100):0})]})]})})}function M(e,t){let s=e.concat(t);return s.length>40?s.slice(-40):s}let T={sky:"bg-sky-500 dark:bg-sky-400",purple:"bg-purple-500 dark:bg-purple-400",green:"bg-emerald-500 dark:bg-emerald-400",amber:"bg-amber-500 dark:bg-amber-400",red:"bg-red-500 dark:bg-red-400"},S={sky:"stroke-sky-500 dark:stroke-sky-400",purple:"stroke-purple-500 dark:stroke-purple-400",green:"stroke-emerald-500 dark:stroke-emerald-400",amber:"stroke-amber-500 dark:stroke-amber-400"},_={sky:"text-sky-600 dark:text-sky-400",purple:"text-purple-600 dark:text-purple-400",green:"text-emerald-600 dark:text-emerald-400",amber:"text-amber-600 dark:text-amber-400",red:"text-red-600 dark:text-red-400"};function G({icon:e,label:s,value:a,sub:r,pct:n,tone:i,spark:l}){let c=Math.max(0,Math.min(100,n));return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:`flex items-center gap-1.5 text-xs font-medium ${_[i]}`,children:[e,s]}),l&&l.length>2&&(0,t.jsx)(U,{values:l,className:S[i]})]}),(0,t.jsx)("div",{className:"font-mono text-xl font-semibold text-zinc-900 dark:text-zinc-100",children:a}),(0,t.jsx)("div",{className:"h-1.5 overflow-hidden rounded bg-zinc-100 dark:bg-zinc-800",children:(0,t.jsx)("div",{className:`${T[i]} h-full transition-all duration-300`,style:{width:`${c}%`}})}),(0,t.jsx)("div",{className:"text-[11px] text-zinc-500 dark:text-zinc-400",children:r})]})}function U({values:e,className:s}){let a=Math.max(100,...e),r=56/Math.max(1,e.length-1),n=e.map((e,t)=>`${0===t?"M":"L"} ${t*r} ${16-e/a*16}`).join(" ");return(0,t.jsx)("svg",{width:56,height:16,viewBox:"0 0 56 16",className:"flex-shrink-0",children:(0,t.jsx)("path",{d:n,fill:"none",strokeWidth:1.25,className:s})})}e.s(["DashboardLive",0,function({initial:e,recipeByCluster:d}){let[o,x]=(0,s.useState)(e),[u,m]=(0,s.useState)(!0);return(0,s.useEffect)(()=>{let e=new AbortController,t=!1;return(async()=>{try{for await(let s of(await n.rpc.status.stream({intervalMs:3e3},{signal:e.signal}))){if(t)break;x(s),m(!0)}}catch(e){t||m(!1),e instanceof DOMException&&"AbortError"===e.name||console.error("[status.stream]",e)}})(),()=>{t=!0,e.abort()}},[]),(0,t.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,t.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Dashboard"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,t.jsxs)(l.Badge,{tone:"sky",children:[o.host_count," host",1===o.host_count?"":"s"]}),(0,t.jsxs)(l.Badge,{tone:"green",children:[o.total_containers," running"]}),(0,t.jsx)(l.Badge,{tone:u?"neutral":"amber",children:u?"live":"reconnecting…"})]})]}),(0,t.jsx)(C,{}),(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsx)("h2",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-300",children:"Workloads"}),0===o.solo_entries.length?(0,t.jsx)(i.Card,{children:(0,t.jsxs)(i.CardBody,{className:"flex flex-col items-center gap-4 py-12 text-center",children:[(0,t.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-full bg-sky-50 text-sky-600 dark:bg-sky-950 dark:text-sky-400",children:(0,t.jsx)(r.Rocket,{size:22})}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("h3",{className:"text-base font-semibold text-zinc-900 dark:text-zinc-100",children:"No workloads running"}),(0,t.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:"Launch a recipe to start an inference workload on your cluster."})]}),(0,t.jsx)(a.default,{href:"/launch",children:(0,t.jsxs)(c.Button,{variant:"primary",children:[(0,t.jsx)(r.Rocket,{size:14}),"Launch a recipe"]})})]})}):(0,t.jsx)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:o.solo_entries.map(e=>(0,t.jsx)(k,{workload:e,recipe:d.get(e.cluster_id)},e.cluster_id))})]})]})}],60632)}]);
|