rigscope 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +2 -2
- package/.next/build-manifest.json +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/administration/page_client-reference-manifest.js +1 -1
- package/.next/server/app/administration.html +1 -1
- package/.next/server/app/administration.rsc +2 -2
- package/.next/server/app/administration.segments/_full.segment.rsc +2 -2
- package/.next/server/app/administration.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/administration.segments/administration/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/alerts/page_client-reference-manifest.js +1 -1
- package/.next/server/app/alerts.html +1 -1
- package/.next/server/app/alerts.rsc +2 -2
- package/.next/server/app/alerts.segments/_full.segment.rsc +2 -2
- package/.next/server/app/alerts.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/alerts.segments/alerts/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/connections/page.js +1 -1
- package/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connections.html +1 -1
- package/.next/server/app/connections.rsc +3 -3
- package/.next/server/app/connections.segments/_full.segment.rsc +3 -3
- package/.next/server/app/connections.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/history/page_client-reference-manifest.js +1 -1
- package/.next/server/app/history.html +1 -1
- package/.next/server/app/history.rsc +2 -2
- package/.next/server/app/history.segments/_full.segment.rsc +2 -2
- package/.next/server/app/history.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/history.segments/history/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +1 -1
- package/.next/server/app/login.rsc +2 -2
- package/.next/server/app/login.segments/_full.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/machines/[machineId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/processes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/processes.html +1 -1
- package/.next/server/app/processes.rsc +2 -2
- package/.next/server/app/processes.segments/_full.segment.rsc +2 -2
- package/.next/server/app/processes.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/processes.segments/processes/__PAGE__.segment.rsc +2 -2
- package/.next/server/app-paths-manifest.json +2 -2
- package/.next/server/chunks/161.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/939-92930fde48061e20.js +1 -0
- package/.next/static/chunks/app/connections/page-7d18b901f2338f20.js +1 -0
- package/ARCHITECTURE.md +18 -6
- package/CHANGELOG.md +35 -0
- package/dist/cli.cjs +762 -509
- package/dist/collector.cjs +581 -115
- package/dist/hub.cjs +7 -3
- package/dist/system.cjs +1257 -363
- package/docs/configuration.md +1 -0
- package/docs/installation.md +9 -3
- package/docs/monitoring.md +6 -3
- package/docs/operations.md +40 -13
- package/docs/system-installation.md +11 -4
- package/docs/telemetry-storage.md +80 -9
- package/package.json +1 -1
- package/packaging/collector.env.example +6 -0
- package/packaging/system/rigscope-collector.service.example +3 -0
- package/.next/static/chunks/939-514e554087419c71.js +0 -1
- package/.next/static/chunks/app/connections/page-75abd16fc495fcbd.js +0 -1
- /package/.next/static/{Jlbibe2_iFCljUO4-BUK7 → JbaLjudQSxrMUD_VHPrnD}/_buildManifest.js +0 -0
- /package/.next/static/{Jlbibe2_iFCljUO4-BUK7 → JbaLjudQSxrMUD_VHPrnD}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/2abef6d49c1c2970.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-c7408084347438ae.js" async=""></script><script src="/_next/static/chunks/794-ceeb732a1a81bc27.js" async=""></script><script src="/_next/static/chunks/main-app-f92328c8950d2e53.js" async=""></script><script src="/_next/static/chunks/939-514e554087419c71.js" async=""></script><script src="/_next/static/chunks/app/layout-4feff677c4071745.js" async=""></script><script src="/_next/static/chunks/944-a7fe1d96f1d20531.js" async=""></script><script src="/_next/static/chunks/103-976549d31902404e.js" async=""></script><script src="/_next/static/chunks/app/processes/page-3fdebd2f98b52044.js" async=""></script><title>Processes — Rigscope</title><meta name="description" content="Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."/><link rel="icon" href="/icon.svg?3b3fa3229e2d0d7a" type="image/svg+xml" sizes="any"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark",null,["light","dark"],null,true,true)</script><!--$!--><template data-dgst=""></template><div class="relative flex h-dvh overflow-hidden bg-background text-foreground"><a href="#main-content" class="sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent">Skip to content</a><div class="hidden md:flex"><aside class="flex shrink-0 flex-col border-r border-border bg-background w-56"><a aria-label="Rigscope" class="flex h-14 shrink-0 items-center gap-2.5 border-b border-border px-3 md:px-5" href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="h-5 w-5 shrink-0 text-accent"><path d="M8 3H4v18h4M16 3h4v18h-4"></path><path d="m8 15 4-6 4 3M8 8h.01M16 17h.01"></path></svg><span class="hidden text-sm font-semibold tracking-tight text-foreground md:inline">Rigscope</span></a><nav aria-label="Primary" class="flex min-h-0 flex-1 flex-col overflow-y-auto p-2 md:p-3"><a title="Fleet" aria-label="Fleet" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server h-4 w-4 shrink-0" aria-hidden="true"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="inline">Fleet</span></a><div class="flex shrink-0 flex-col gap-1 border-t border-border pt-3"><a title="Alerts" aria-label="Alerts" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/alerts"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell h-4 w-4 shrink-0" aria-hidden="true"><path d="M10.268 21a2 2 0 0 0 3.464 0"></path><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"></path></svg><span class="inline">Alerts</span></a><a title="Connections" aria-label="Connections" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/connections"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cable h-4 w-4 shrink-0" aria-hidden="true"><path d="M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1"></path><path d="M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9"></path><path d="M21 21v-2h-4"></path><path d="M3 5h4V3"></path><path d="M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3"></path></svg><span class="inline">Connections</span></a></div></nav><footer class="shrink-0 border-t border-border p-3"><div class="flex items-center gap-2 px-3 text-xs"><span class="inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/50" aria-hidden="true"></span><span class="truncate" role="status" aria-label="Live feed status: Checking session…">Checking session…</span></div></footer></aside></div><div class="flex min-w-0 flex-1 flex-col"><header class="flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6"><div class="flex min-w-0 items-center gap-2"><button type="button" aria-label="Open navigation" aria-haspopup="dialog" class="flex h-11 w-11 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-card-strong md:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button><dialog aria-label="Navigation" class="fixed inset-y-0 left-0 m-0 h-dvh max-h-none w-[min(20rem,90vw)] max-w-none border-r border-border bg-background p-0 text-foreground backdrop:bg-black/50"><div class="flex h-full flex-col"><button type="button" aria-label="Close navigation" autofocus="" class="absolute right-2 top-1.5 z-10 flex h-11 w-11 items-center justify-center rounded-md hover:bg-card-strong"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x h-5 w-5" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button><div class="flex min-h-0 flex-1"><aside class="flex shrink-0 flex-col border-r border-border bg-background w-full"><a aria-label="Rigscope" class="flex h-14 shrink-0 items-center gap-2.5 border-b border-border px-3 md:px-5" href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="h-5 w-5 shrink-0 text-accent"><path d="M8 3H4v18h4M16 3h4v18h-4"></path><path d="m8 15 4-6 4 3M8 8h.01M16 17h.01"></path></svg><span class="hidden text-sm font-semibold tracking-tight text-foreground md:inline">Rigscope</span></a><nav aria-label="Primary" class="flex min-h-0 flex-1 flex-col overflow-y-auto p-2 md:p-3"><a title="Fleet" aria-label="Fleet" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server h-4 w-4 shrink-0" aria-hidden="true"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="inline">Fleet</span></a><div class="flex shrink-0 flex-col gap-1 border-t border-border pt-3"><a title="Alerts" aria-label="Alerts" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/alerts"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell h-4 w-4 shrink-0" aria-hidden="true"><path d="M10.268 21a2 2 0 0 0 3.464 0"></path><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"></path></svg><span class="inline">Alerts</span></a><a title="Connections" aria-label="Connections" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/connections"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cable h-4 w-4 shrink-0" aria-hidden="true"><path d="M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1"></path><path d="M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9"></path><path d="M21 21v-2h-4"></path><path d="M3 5h4V3"></path><path d="M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3"></path></svg><span class="inline">Connections</span></a></div></nav><footer class="shrink-0 border-t border-border p-3"><div class="flex items-center gap-2 px-3 text-xs"><span class="inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/50" aria-hidden="true"></span><span class="truncate" role="status" aria-label="Live feed status: Checking session…">Checking session…</span></div></footer></aside></div></div></dialog><h1 class="truncate text-lg font-semibold tracking-tight">Processes</h1></div><div class="flex items-center gap-3"><button type="button" aria-label="Toggle theme" class="flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-selected hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun h-4.5 w-4.5 dark:hidden"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon hidden h-4.5 w-4.5 dark:block"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></div></header><main id="main-content" tabindex="-1" class="relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto"><div class="mx-auto flex w-full min-w-0 max-w-[1500px] flex-col"><section class="flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2"><div class="flex shrink-0 items-center justify-between gap-4"><h2 class="text-sm font-medium tracking-tight">Process detail</h2></div><div class="mt-4 flex min-h-0 flex-1 flex-col"><p role="status" class="py-10 text-center text-sm text-muted-foreground">Loading the process view…</p></div></section></div></main></div></div><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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:\"static/chunks/939-514e554087419c71.js\"\n3:\"static/chunks/app/layout-4feff677c4071745.js\"\n4:I[2737,[\"939\",\"$2\",\"177\",\"$3\"],\"ThemeProvider\"]\n5:I[9939,[\"939\",\"$2\",\"177\",\"$3\"],\"LiveProvider\"]\n6:I[7121,[],\"\"]\n7:I[4581,[],\"\"]\nb:\"$Sreact.suspense\"\nc:\"static/chunks/944-a7fe1d96f1d20531.js\"\nd:\"static/chunks/103-976549d31902404e.js\"\ne:\"static/chunks/app/processes/page-3fdebd2f98b52044.js\"\nf:I[2701,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"Sidebar\"]\n10:\"MobileNavigation\"\n11:I[9904,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"$10\"]\n12:I[2394,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"ThemeToggle\"]\n13:I[7339,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"ProcessesView\"]\n14:I[484,[],\"OutletBoundary\"]\n16:\"ViewportBoundary\"\n17:I[484,[],\"$16\"]\n19:\"MetadataBoundary\"\n1a:I[484,[],\"$19\"]\n1c:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/2abef6d49c1c2970.css\",\"style\"]\n9:X\n"])</script><script>self.__next_f.push([1,"a:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$b\",null,{\"fallback\":[\"$\",\"div\",null,{\"className\":\"relative flex h-dvh overflow-hidden bg-background text-foreground\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#main-content\",\"className\":\"sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent\",\"children\":\"Skip to content\"}],[\"$\",\"div\",null,{\"className\":\"hidden md:flex\",\"children\":[\"$\",\"$Lf\",null,{\"machineId\":\"$undefined\",\"machineView\":\"$undefined\"}]}],[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-1 flex-col\",\"children\":[[\"$\",\"header\",null,{\"className\":\"flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-w-0 items-center gap-2\",\"children\":[[\"$\",\"$L11\",null,{\"machineId\":\"$undefined\",\"machineView\":\"$undefined\"}],[\"$\",\"h1\",null,{\"className\":\"truncate text-lg font-semibold tracking-tight\",\"children\":\"Processes\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[null,[\"$\",\"$L12\",null,{}]]}]]}],[\"$\",\"main\",null,{\"id\":\"main-content\",\"tabIndex\":-1,\"className\":\"relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex w-full min-w-0 max-w-[1500px] flex-col\",\"children\":[\"$\",\"section\",null,{\"className\":\"flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex shrink-0 items-center justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-sm font-medium tracking-tight\",\"children\":\"Process detail\"}],null]}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex min-h-0 flex-1 flex-col\",\"children\":[\"$\",\"p\",null,{\"role\":\"status\",\"className\":\"py-10 text-center text-sm text-muted-foreground\",\"children\":\"Loading the process view…\"}]}]]}]}]}]]}]]}],\"children\":[\"$\",\"$L13\",null,{}]}],null,[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@15\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"8:[[\"children\",{\"s\":\"processes\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$9\"},\"c\":\"$Qa\"}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"processes\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2abef6d49c1c2970.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L4\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":true,\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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\"}]}]}]}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q8\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],[\"$\",\"$L1a\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1b\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1c\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"Jlbibe2_iFCljUO4-BUK7\"}\n"])</script><script>self.__next_f.push([1,"9:C\n18:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1d:I[6869,[],\"IconMark\"]\n15:null\n1b:[[\"$\",\"title\",\"0\",{\"children\":\"Processes — Rigscope\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3b3fa3229e2d0d7a\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L1d\",\"3\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/2abef6d49c1c2970.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-c7408084347438ae.js" async=""></script><script src="/_next/static/chunks/794-ceeb732a1a81bc27.js" async=""></script><script src="/_next/static/chunks/main-app-f92328c8950d2e53.js" async=""></script><script src="/_next/static/chunks/939-92930fde48061e20.js" async=""></script><script src="/_next/static/chunks/app/layout-4feff677c4071745.js" async=""></script><script src="/_next/static/chunks/944-a7fe1d96f1d20531.js" async=""></script><script src="/_next/static/chunks/103-976549d31902404e.js" async=""></script><script src="/_next/static/chunks/app/processes/page-3fdebd2f98b52044.js" async=""></script><title>Processes — Rigscope</title><meta name="description" content="Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."/><link rel="icon" href="/icon.svg?3b3fa3229e2d0d7a" type="image/svg+xml" sizes="any"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark",null,["light","dark"],null,true,true)</script><!--$!--><template data-dgst=""></template><div class="relative flex h-dvh overflow-hidden bg-background text-foreground"><a href="#main-content" class="sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent">Skip to content</a><div class="hidden md:flex"><aside class="flex shrink-0 flex-col border-r border-border bg-background w-56"><a aria-label="Rigscope" class="flex h-14 shrink-0 items-center gap-2.5 border-b border-border px-3 md:px-5" href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="h-5 w-5 shrink-0 text-accent"><path d="M8 3H4v18h4M16 3h4v18h-4"></path><path d="m8 15 4-6 4 3M8 8h.01M16 17h.01"></path></svg><span class="hidden text-sm font-semibold tracking-tight text-foreground md:inline">Rigscope</span></a><nav aria-label="Primary" class="flex min-h-0 flex-1 flex-col overflow-y-auto p-2 md:p-3"><a title="Fleet" aria-label="Fleet" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server h-4 w-4 shrink-0" aria-hidden="true"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="inline">Fleet</span></a><div class="flex shrink-0 flex-col gap-1 border-t border-border pt-3"><a title="Alerts" aria-label="Alerts" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/alerts"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell h-4 w-4 shrink-0" aria-hidden="true"><path d="M10.268 21a2 2 0 0 0 3.464 0"></path><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"></path></svg><span class="inline">Alerts</span></a><a title="Connections" aria-label="Connections" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/connections"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cable h-4 w-4 shrink-0" aria-hidden="true"><path d="M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1"></path><path d="M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9"></path><path d="M21 21v-2h-4"></path><path d="M3 5h4V3"></path><path d="M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3"></path></svg><span class="inline">Connections</span></a></div></nav><footer class="shrink-0 border-t border-border p-3"><div class="flex items-center gap-2 px-3 text-xs"><span class="inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/50" aria-hidden="true"></span><span class="truncate" role="status" aria-label="Live feed status: Checking session…">Checking session…</span></div></footer></aside></div><div class="flex min-w-0 flex-1 flex-col"><header class="flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6"><div class="flex min-w-0 items-center gap-2"><button type="button" aria-label="Open navigation" aria-haspopup="dialog" class="flex h-11 w-11 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-card-strong md:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button><dialog aria-label="Navigation" class="fixed inset-y-0 left-0 m-0 h-dvh max-h-none w-[min(20rem,90vw)] max-w-none border-r border-border bg-background p-0 text-foreground backdrop:bg-black/50"><div class="flex h-full flex-col"><button type="button" aria-label="Close navigation" autofocus="" class="absolute right-2 top-1.5 z-10 flex h-11 w-11 items-center justify-center rounded-md hover:bg-card-strong"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x h-5 w-5" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button><div class="flex min-h-0 flex-1"><aside class="flex shrink-0 flex-col border-r border-border bg-background w-full"><a aria-label="Rigscope" class="flex h-14 shrink-0 items-center gap-2.5 border-b border-border px-3 md:px-5" href="/"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false" class="h-5 w-5 shrink-0 text-accent"><path d="M8 3H4v18h4M16 3h4v18h-4"></path><path d="m8 15 4-6 4 3M8 8h.01M16 17h.01"></path></svg><span class="hidden text-sm font-semibold tracking-tight text-foreground md:inline">Rigscope</span></a><nav aria-label="Primary" class="flex min-h-0 flex-1 flex-col overflow-y-auto p-2 md:p-3"><a title="Fleet" aria-label="Fleet" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-server h-4 w-4 shrink-0" aria-hidden="true"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="inline">Fleet</span></a><div class="flex shrink-0 flex-col gap-1 border-t border-border pt-3"><a title="Alerts" aria-label="Alerts" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/alerts"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell h-4 w-4 shrink-0" aria-hidden="true"><path d="M10.268 21a2 2 0 0 0 3.464 0"></path><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"></path></svg><span class="inline">Alerts</span></a><a title="Connections" aria-label="Connections" class="flex min-h-11 min-w-0 md:min-h-9 items-center gap-3 rounded-md border px-2 text-sm transition-colors md:px-3 border-transparent text-muted-foreground hover:bg-card-strong hover:text-foreground" href="/connections"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cable h-4 w-4 shrink-0" aria-hidden="true"><path d="M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1"></path><path d="M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9"></path><path d="M21 21v-2h-4"></path><path d="M3 5h4V3"></path><path d="M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3"></path></svg><span class="inline">Connections</span></a></div></nav><footer class="shrink-0 border-t border-border p-3"><div class="flex items-center gap-2 px-3 text-xs"><span class="inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/50" aria-hidden="true"></span><span class="truncate" role="status" aria-label="Live feed status: Checking session…">Checking session…</span></div></footer></aside></div></div></dialog><h1 class="truncate text-lg font-semibold tracking-tight">Processes</h1></div><div class="flex items-center gap-3"><button type="button" aria-label="Toggle theme" class="flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-selected hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun h-4.5 w-4.5 dark:hidden"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon hidden h-4.5 w-4.5 dark:block"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></div></header><main id="main-content" tabindex="-1" class="relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto"><div class="mx-auto flex w-full min-w-0 max-w-[1500px] flex-col"><section class="flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2"><div class="flex shrink-0 items-center justify-between gap-4"><h2 class="text-sm font-medium tracking-tight">Process detail</h2></div><div class="mt-4 flex min-h-0 flex-1 flex-col"><p role="status" class="py-10 text-center text-sm text-muted-foreground">Loading the process view…</p></div></section></div></main></div></div><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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:\"static/chunks/939-92930fde48061e20.js\"\n3:\"static/chunks/app/layout-4feff677c4071745.js\"\n4:I[2737,[\"939\",\"$2\",\"177\",\"$3\"],\"ThemeProvider\"]\n5:I[9939,[\"939\",\"$2\",\"177\",\"$3\"],\"LiveProvider\"]\n6:I[7121,[],\"\"]\n7:I[4581,[],\"\"]\nb:\"$Sreact.suspense\"\nc:\"static/chunks/944-a7fe1d96f1d20531.js\"\nd:\"static/chunks/103-976549d31902404e.js\"\ne:\"static/chunks/app/processes/page-3fdebd2f98b52044.js\"\nf:I[2701,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"Sidebar\"]\n10:\"MobileNavigation\"\n11:I[9904,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"$10\"]\n12:I[2394,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"ThemeToggle\"]\n13:I[7339,[\"944\",\"$c\",\"939\",\"$2\",\"103\",\"$d\",\"952\",\"$e\"],\"ProcessesView\"]\n14:I[484,[],\"OutletBoundary\"]\n16:\"ViewportBoundary\"\n17:I[484,[],\"$16\"]\n19:\"MetadataBoundary\"\n1a:I[484,[],\"$19\"]\n1c:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/2abef6d49c1c2970.css\",\"style\"]\n9:X\n"])</script><script>self.__next_f.push([1,"a:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$b\",null,{\"fallback\":[\"$\",\"div\",null,{\"className\":\"relative flex h-dvh overflow-hidden bg-background text-foreground\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#main-content\",\"className\":\"sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent\",\"children\":\"Skip to content\"}],[\"$\",\"div\",null,{\"className\":\"hidden md:flex\",\"children\":[\"$\",\"$Lf\",null,{\"machineId\":\"$undefined\",\"machineView\":\"$undefined\"}]}],[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-1 flex-col\",\"children\":[[\"$\",\"header\",null,{\"className\":\"flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-w-0 items-center gap-2\",\"children\":[[\"$\",\"$L11\",null,{\"machineId\":\"$undefined\",\"machineView\":\"$undefined\"}],[\"$\",\"h1\",null,{\"className\":\"truncate text-lg font-semibold tracking-tight\",\"children\":\"Processes\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[null,[\"$\",\"$L12\",null,{}]]}]]}],[\"$\",\"main\",null,{\"id\":\"main-content\",\"tabIndex\":-1,\"className\":\"relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto flex w-full min-w-0 max-w-[1500px] flex-col\",\"children\":[\"$\",\"section\",null,{\"className\":\"flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex shrink-0 items-center justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-sm font-medium tracking-tight\",\"children\":\"Process detail\"}],null]}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex min-h-0 flex-1 flex-col\",\"children\":[\"$\",\"p\",null,{\"role\":\"status\",\"className\":\"py-10 text-center text-sm text-muted-foreground\",\"children\":\"Loading the process view…\"}]}]]}]}]}]]}]]}],\"children\":[\"$\",\"$L13\",null,{}]}],null,[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@15\"}]}]]}],\"p\":false,\"v\":null}}]]\n"])</script><script>self.__next_f.push([1,"8:[[\"children\",{\"s\":\"processes\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$9\"},\"c\":\"$Qa\"}]]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"processes\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2abef6d49c1c2970.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L4\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":true,\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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\"}]}]}]}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q8\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],[\"$\",\"$L1a\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1b\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1c\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JbaLjudQSxrMUD_VHPrnD\"}\n"])</script><script>self.__next_f.push([1,"9:C\n18:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1d:I[6869,[],\"IconMark\"]\n15:null\n1b:[[\"$\",\"title\",\"0\",{\"children\":\"Processes — Rigscope\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3b3fa3229e2d0d7a\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L1d\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:"static/chunks/939-
|
|
2
|
+
2:"static/chunks/939-92930fde48061e20.js"
|
|
3
3
|
3:"static/chunks/app/layout-4feff677c4071745.js"
|
|
4
4
|
4:I[2737,["939","$2","177","$3"],"ThemeProvider"]
|
|
5
5
|
5:I[9939,["939","$2","177","$3"],"LiveProvider"]
|
|
@@ -24,7 +24,7 @@ f:I[2701,["944","$c","939","$2","103","$d","952","$e"],"Sidebar"]
|
|
|
24
24
|
9:X
|
|
25
25
|
a:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$b",null,{"fallback":["$","div",null,{"className":"relative flex h-dvh overflow-hidden bg-background text-foreground","children":[["$","a",null,{"href":"#main-content","className":"sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent","children":"Skip to content"}],["$","div",null,{"className":"hidden md:flex","children":["$","$Lf",null,{"machineId":"$undefined","machineView":"$undefined"}]}],["$","div",null,{"className":"flex min-w-0 flex-1 flex-col","children":[["$","header",null,{"className":"flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6","children":[["$","div",null,{"className":"flex min-w-0 items-center gap-2","children":[["$","$L11",null,{"machineId":"$undefined","machineView":"$undefined"}],["$","h1",null,{"className":"truncate text-lg font-semibold tracking-tight","children":"Processes"}]]}],["$","div",null,{"className":"flex items-center gap-3","children":[null,["$","$L12",null,{}]]}]]}],["$","main",null,{"id":"main-content","tabIndex":-1,"className":"relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto","children":["$","div",null,{"className":"mx-auto flex w-full min-w-0 max-w-[1500px] flex-col","children":["$","section",null,{"className":"flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2","children":[["$","div",null,{"className":"flex shrink-0 items-center justify-between gap-4","children":[["$","h2",null,{"className":"text-sm font-medium tracking-tight","children":"Process detail"}],null]}],["$","div",null,{"className":"mt-4 flex min-h-0 flex-1 flex-col","children":["$","p",null,{"role":"status","className":"py-10 text-center text-sm text-muted-foreground","children":"Loading the process view…"}]}]]}]}]}]]}]]}],"children":["$","$L13",null,{}]}],null,["$","$L14",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@15"}]}]]}],"p":false,"v":null}}]]
|
|
26
26
|
8:[["children",{"s":"processes","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$9"},"c":"$Qa"}]]
|
|
27
|
-
0:{"P":null,"c":["","processes"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2abef6d49c1c2970.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L4",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"children":["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",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"}]}]}]}]}]]}],"p":false,"v":null},"c":"$Q8"},"h":{"r":["$","$1","h",{"children":[null,["$","$L17",null,{"children":"$L18"}],["$","$L1a",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$b",null,{"name":"Next.Metadata","children":"$L1b"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1c",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
27
|
+
0:{"P":null,"c":["","processes"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2abef6d49c1c2970.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L4",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"children":["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",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"}]}]}]}]}]]}],"p":false,"v":null},"c":"$Q8"},"h":{"r":["$","$1","h",{"children":[null,["$","$L17",null,{"children":"$L18"}],["$","$L1a",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$b",null,{"name":"Next.Metadata","children":"$L1b"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1c",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"JbaLjudQSxrMUD_VHPrnD"}
|
|
28
28
|
9:C
|
|
29
29
|
18:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
30
30
|
1d:I[6869,[],"IconMark"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:"static/chunks/939-
|
|
2
|
+
2:"static/chunks/939-92930fde48061e20.js"
|
|
3
3
|
3:"static/chunks/app/layout-4feff677c4071745.js"
|
|
4
4
|
4:I[2737,["939","$2","177","$3"],"ThemeProvider"]
|
|
5
5
|
5:I[9939,["939","$2","177","$3"],"LiveProvider"]
|
|
@@ -24,7 +24,7 @@ f:I[2701,["944","$c","939","$2","103","$d","952","$e"],"Sidebar"]
|
|
|
24
24
|
9:X
|
|
25
25
|
a:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$b",null,{"fallback":["$","div",null,{"className":"relative flex h-dvh overflow-hidden bg-background text-foreground","children":[["$","a",null,{"href":"#main-content","className":"sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent","children":"Skip to content"}],["$","div",null,{"className":"hidden md:flex","children":["$","$Lf",null,{"machineId":"$undefined","machineView":"$undefined"}]}],["$","div",null,{"className":"flex min-w-0 flex-1 flex-col","children":[["$","header",null,{"className":"flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6","children":[["$","div",null,{"className":"flex min-w-0 items-center gap-2","children":[["$","$L11",null,{"machineId":"$undefined","machineView":"$undefined"}],["$","h1",null,{"className":"truncate text-lg font-semibold tracking-tight","children":"Processes"}]]}],["$","div",null,{"className":"flex items-center gap-3","children":[null,["$","$L12",null,{}]]}]]}],["$","main",null,{"id":"main-content","tabIndex":-1,"className":"relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto","children":["$","div",null,{"className":"mx-auto flex w-full min-w-0 max-w-[1500px] flex-col","children":["$","section",null,{"className":"flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2","children":[["$","div",null,{"className":"flex shrink-0 items-center justify-between gap-4","children":[["$","h2",null,{"className":"text-sm font-medium tracking-tight","children":"Process detail"}],null]}],["$","div",null,{"className":"mt-4 flex min-h-0 flex-1 flex-col","children":["$","p",null,{"role":"status","className":"py-10 text-center text-sm text-muted-foreground","children":"Loading the process view…"}]}]]}]}]}]]}]]}],"children":["$","$L13",null,{}]}],null,["$","$L14",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@15"}]}]]}],"p":false,"v":null}}]]
|
|
26
26
|
8:[["children",{"s":"processes","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$9"},"c":"$Qa"}]]
|
|
27
|
-
0:{"P":null,"c":["","processes"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2abef6d49c1c2970.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L4",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"children":["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",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"}]}]}]}]}]]}],"p":false,"v":null},"c":"$Q8"},"h":{"r":["$","$1","h",{"children":[null,["$","$L17",null,{"children":"$L18"}],["$","$L1a",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$b",null,{"name":"Next.Metadata","children":"$L1b"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1c",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
27
|
+
0:{"P":null,"c":["","processes"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2abef6d49c1c2970.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L4",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"children":["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",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"}]}]}]}]}]]}],"p":false,"v":null},"c":"$Q8"},"h":{"r":["$","$1","h",{"children":[null,["$","$L17",null,{"children":"$L18"}],["$","$L1a",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$b",null,{"name":"Next.Metadata","children":"$L1b"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1c",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"JbaLjudQSxrMUD_VHPrnD"}
|
|
28
28
|
9:C
|
|
29
29
|
18:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
30
30
|
1d:I[6869,[],"IconMark"]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
:HL["/_next/static/css/2abef6d49c1c2970.css","style"]
|
|
2
2
|
2:[["children",{"s":"__PAGE__","h":160}]]
|
|
3
3
|
1:[["children",{"s":"processes","h":96,"c":"$Q2"}]]
|
|
4
|
-
0:{"b":"
|
|
4
|
+
0:{"b":"JbaLjudQSxrMUD_VHPrnD","t":{"t":{"s":"","h":80,"c":"$Q1"}}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:"static/chunks/939-
|
|
2
|
+
2:"static/chunks/939-92930fde48061e20.js"
|
|
3
3
|
3:"static/chunks/app/layout-4feff677c4071745.js"
|
|
4
4
|
4:I[2737,["939","$2","177","$3"],"ThemeProvider"]
|
|
5
5
|
5:I[9939,["939","$2","177","$3"],"LiveProvider"]
|
|
@@ -26,7 +26,7 @@ c:X
|
|
|
26
26
|
c:C
|
|
27
27
|
d:[["children",{"s":"__PAGE__","h":160,"d":{"r":["$","$1","c",{"children":[["$","$e",null,{"fallback":["$","div",null,{"className":"relative flex h-dvh overflow-hidden bg-background text-foreground","children":[["$","a",null,{"href":"#main-content","className":"sr-only z-50 rounded-md bg-card px-4 py-2 text-foreground focus:not-sr-only focus:absolute focus:start-2 focus:top-2 focus:outline-2 focus:outline-accent","children":"Skip to content"}],["$","div",null,{"className":"hidden md:flex","children":["$","$L12",null,{}]}],["$","div",null,{"className":"flex min-w-0 flex-1 flex-col","children":[["$","header",null,{"className":"flex min-h-14 shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2 md:px-6","children":[["$","div",null,{"className":"flex min-w-0 items-center gap-2","children":[["$","$L14",null,{}],["$","h1",null,{"className":"truncate text-lg font-semibold tracking-tight","children":"Processes"}]]}],["$","div",null,{"className":"flex items-center gap-3","children":[null,["$","$L15",null,{}]]}]]}],["$","main",null,{"id":"main-content","tabIndex":-1,"className":"relative min-h-0 min-w-0 flex-1 overflow-x-hidden overscroll-contain p-4 outline-offset-[-2px] md:p-6 overflow-y-auto","children":["$","div",null,{"className":"mx-auto flex w-full min-w-0 max-w-[1500px] flex-col","children":["$","section",null,{"className":"flex min-w-0 flex-col rounded-xl border border-border bg-card p-5 mt-2","children":[["$","div",null,{"className":"flex shrink-0 items-center justify-between gap-4","children":[["$","h2",null,{"className":"text-sm font-medium tracking-tight","children":"Process detail"}],null]}],["$","div",null,{"className":"mt-4 flex min-h-0 flex-1 flex-col","children":["$","p",null,{"role":"status","className":"py-10 text-center text-sm text-muted-foreground","children":"Loading the process view…"}]}]]}]}]}]]}]]}],"children":["$","$L16",null,{}]}],null,["$","$L17",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@18"}]}]]}],"p":"$@19","v":null,"s":"$9"}}]]
|
|
28
28
|
a:[["children",{"s":"processes","h":96,"d":{"r":["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","template":["$","$L7",null,{}]}]]}],"p":"$@b","v":"$c","s":"$9"},"c":"$Qd"}]]
|
|
29
|
-
0:{"t":{"t":{"s":"","h":80,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2abef6d49c1c2970.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L4",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"children":["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","template":["$","$L7",null,{}],"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."}]}]]}]}]],[]]}]}]}]}]}]]}],"p":"$@8","v":null,"s":"$9"},"c":"$Qa"},"h":{"r":["$","$1","h",{"children":[null,["$","$L1b",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","$L1d",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$e",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Processes — Rigscope"}],["$","meta","1",{"name":"description","content":"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."}],["$","link","2",{"rel":"icon","href":"/icon.svg?3b3fa3229e2d0d7a","type":"image/svg+xml","sizes":"any"}],["$","$L1e","3",{}]]}]}],null]}],null]}],"p":"$@1f","v":null,"s":"$9"}},"a":"$@20","u":"$@21","b":"
|
|
29
|
+
0:{"t":{"t":{"s":"","h":80,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/2abef6d49c1c2970.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L4",null,{"attribute":"class","defaultTheme":"dark","enableSystem":true,"children":["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","template":["$","$L7",null,{}],"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."}]}]]}]}]],[]]}]}]}]}]}]]}],"p":"$@8","v":null,"s":"$9"},"c":"$Qa"},"h":{"r":["$","$1","h",{"children":[null,["$","$L1b",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","$L1d",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$e",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Processes — Rigscope"}],["$","meta","1",{"name":"description","content":"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."}],["$","link","2",{"rel":"icon","href":"/icon.svg?3b3fa3229e2d0d7a","type":"image/svg+xml","sizes":"any"}],["$","$L1e","3",{}]]}]}],null]}],null]}],"p":"$@1f","v":null,"s":"$9"}},"a":"$@20","u":"$@21","b":"JbaLjudQSxrMUD_VHPrnD"}
|
|
30
30
|
18:null
|
|
31
31
|
9:300
|
|
32
32
|
21:true
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"/_not-found/page": "app/_not-found/page.js",
|
|
3
3
|
"/_global-error/page": "app/_global-error/page.js",
|
|
4
4
|
"/icon.svg/route": "app/icon.svg/route.js",
|
|
5
|
-
"/administration/page": "app/administration/page.js",
|
|
6
5
|
"/alerts/page": "app/alerts/page.js",
|
|
6
|
+
"/administration/page": "app/administration/page.js",
|
|
7
7
|
"/connections/page": "app/connections/page.js",
|
|
8
8
|
"/login/page": "app/login/page.js",
|
|
9
|
-
"/page": "app/page.js",
|
|
10
9
|
"/history/page": "app/history/page.js",
|
|
10
|
+
"/page": "app/page.js",
|
|
11
11
|
"/machines/[machineId]/page": "app/machines/[machineId]/page.js",
|
|
12
12
|
"/processes/page": "app/processes/page.js"
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=161,exports.ids=[161],exports.modules={4833:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249),e=c(8696);function f({children:a,...b}){return(0,d.jsx)(e.N,{...b,children:a})}},7909:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23))},21061:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23))},21585:(a,b,c)=>{Promise.resolve().then(c.bind(c,65223)),Promise.resolve().then(c.bind(c,89604))},22127:(a,b,c)=>{"use strict";c.d(b,{mq:()=>e,vz:()=>d,yY:()=>f});let d=15e3,e=9e4,f=180},25982:(a,b,c)=>{"use strict";c.d(b,{U8:()=>d,Q_:()=>j,FZ:()=>F});let d=1024,e=Date.parse("2000-01-01T00:00:00Z"),f=Date.parse("2200-01-01T00:00:00Z"),g=["metrics","inventory","processes"],h=["cpu","memory","swap","gpus","disks","network"],i=["outbox-age","outbox-bytes","disk-budget","write-failure","rejected"];function j(a){let b=t(a,"collector message");switch(b.type){case"hello":{u(b,["type","collectorId","runId","bootId","hostname","capabilities","expectedIntervalMs"],"hello");let a=w(b.capabilities,"hello.capabilities",1,g.length).map(a=>x(a,g,"hello.capabilities"));if(new Set(a).size!==a.length||!a.includes("metrics"))throw Error("invalid hello: capabilities must be unique and include metrics");return{type:"hello",collectorId:z(b.collectorId,"collectorId"),runId:z(b.runId,"runId"),bootId:y(b.bootId,"bootId",0,128),hostname:y(b.hostname,"hostname",0,255),capabilities:a,expectedIntervalMs:B(b.expectedIntervalMs,"expectedIntervalMs",100,72e5)}}case"samples":{u(b,["type","mode","records"],"samples");let a=x(b.mode,["live","replay"],"samples.mode"),c=w(b.records,"samples.records",1,32).map((a,b)=>k(a,`records[${b}]`)),d=new Set;for(let a of c){let b=`${a.runId}\0${a.sequence}`;if(d.has(b))throw Error("invalid samples: duplicate record in batch");d.add(b)}return{type:"samples",mode:a,records:c}}case"inventory":return u(b,["type","capturedAt","inventory"],"inventory"),{type:"inventory",capturedAt:D(b.capturedAt,"capturedAt"),inventory:l(b.inventory)};case"status":return u(b,["type","capturedAt","delivery","failures"],"status"),{type:"status",capturedAt:D(b.capturedAt,"capturedAt"),delivery:function(a){let b=t(a,"delivery");if(u(b,["pendingRecords","pendingBytes","oldestPendingCapturedAt","inFlightRecords","droppedRecords","replaying","lastAckAt"],"delivery"),"boolean"!=typeof b.replaying)throw Error("invalid delivery: replaying");let c=(a,b)=>B(a,b,0,Number.MAX_SAFE_INTEGER);return{pendingRecords:c(b.pendingRecords,"pendingRecords"),pendingBytes:c(b.pendingBytes,"pendingBytes"),oldestPendingCapturedAt:r(b.oldestPendingCapturedAt,a=>D(a,"oldestPendingCapturedAt")),inFlightRecords:c(b.inFlightRecords,"inFlightRecords"),droppedRecords:c(b.droppedRecords,"droppedRecords"),replaying:b.replaying,lastAckAt:r(b.lastAckAt,a=>D(a,"lastAckAt"))}}(b.delivery),failures:w(b.failures,"failures",0,32).map(a=>{let b=t(a,"failure");return u(b,["metric","resourceId","reason"],"failure"),{metric:y(b.metric,"metric",1,64),resourceId:null===b.resourceId?null:A(b.resourceId),reason:y(b.reason,"reason",0,256)}})};case"detail.result":return u(b,["type","subscriptionId","capturedAt","snapshot"],"detail.result"),{type:"detail.result",subscriptionId:z(b.subscriptionId,"subscriptionId"),capturedAt:D(b.capturedAt,"capturedAt"),snapshot:function(a){let b=t(a,"process snapshot");if(u(b,["totalProcesses","truncated","inaccessible","processes"],"process snapshot"),"boolean"!=typeof b.truncated)throw Error("invalid process snapshot: truncated");let c=(a,b,c)=>r(a,a=>C(a,b,0,c));return{totalProcesses:B(b.totalProcesses,"totalProcesses",0,1e7),truncated:b.truncated,inaccessible:B(b.inaccessible,"inaccessible",0,1e7),processes:w(b.processes,"processes",0,6e3).map(a=>{let b=t(a,"process");u(b,["pid","ppid","startTicks","name","user","state","cpuPercent","memoryRssBytes","gpuMemoryBytes","ioReadBytesPerSec","ioWriteBytesPerSec","threads","unit"],"process",["command"]);let e={pid:B(b.pid,"pid",0,0x80000000),ppid:B(b.ppid,"ppid",0,0x80000000),startTicks:B(b.startTicks,"startTicks",0,Number.MAX_SAFE_INTEGER),name:y(b.name,"name",0,256),user:r(b.user,a=>y(a,"user",0,64)),state:y(b.state,"state",0,16),cpuPercent:c(b.cpuPercent,"cpuPercent",100*d),memoryRssBytes:r(b.memoryRssBytes,a=>B(a,"memoryRssBytes",0,Number.MAX_SAFE_INTEGER)),gpuMemoryBytes:r(b.gpuMemoryBytes,a=>B(a,"gpuMemoryBytes",0,Number.MAX_SAFE_INTEGER)),ioReadBytesPerSec:c(b.ioReadBytesPerSec,"ioReadBytesPerSec",1e13),ioWriteBytesPerSec:c(b.ioWriteBytesPerSec,"ioWriteBytesPerSec",1e13),threads:r(b.threads,a=>B(a,"threads",0,1e7)),unit:r(b.unit,a=>y(a,"unit",1,256))};return v(b,"command")&&(e.command=y(b.command,"command",0,4096)),e})}}(b.snapshot)};case"detail.ended":return u(b,["type","subscriptionId","reason"],"detail.ended"),{type:"detail.ended",subscriptionId:z(b.subscriptionId,"subscriptionId"),reason:x(b.reason,["expired","cancelled","withheld","unsupported","busy","failed"],"detail.ended.reason")};default:throw Error(`invalid collector message: unsupported type ${E(b.type)}`)}}function k(a,b="record"){let c=t(a,b);u(c,["collectorId","runId","bootId","sequence","capturedAt","kind","payload"],b);let e={collectorId:z(c.collectorId,"collectorId"),runId:z(c.runId,"runId"),bootId:y(c.bootId,"bootId",0,128),sequence:B(c.sequence,"sequence",0,Number.MAX_SAFE_INTEGER),capturedAt:D(c.capturedAt,"capturedAt")};if("metrics"===c.kind){let a;return{...e,kind:"metrics",payload:(u(a=t(c.payload,"metrics payload"),[...h],"metrics payload"),{cpu:o(a.cpu,"cpu",a=>{u(a,["status","usagePercent","perCore"],"cpu",["temperatureC","powerWatts","iowaitPercent","pressureSomePercent"]);let b={status:"ok",usagePercent:C(a.usagePercent,"usagePercent",0,100),perCore:w(a.perCore,"perCore",0,d).map(a=>null===a?null:C(a,"perCore",0,100))},c=s(a,"temperatureC",a=>C(a,"temperatureC",-50,200));void 0!==c&&(b.temperatureC=c);let e=s(a,"powerWatts",a=>C(a,"powerWatts",0,1e4));void 0!==e&&(b.powerWatts=e);let f=s(a,"iowaitPercent",a=>C(a,"iowaitPercent",0,100));void 0!==f&&(b.iowaitPercent=f);let g=s(a,"pressureSomePercent",a=>C(a,"pressureSomePercent",0,100));return void 0!==g&&(b.pressureSomePercent=g),b}),memory:o(a.memory,"memory",n),swap:o(a.swap,"swap",m),gpus:o(a.gpus,"gpus",a=>(u(a,["status","devices"],"gpus"),{status:"ok",devices:q(w(a.devices,"gpus.devices",0,16).map(a=>p(a,"gpu",(a,b)=>{u(a,["id","status","utilizationPercent","memoryUsedBytes","memoryTotalBytes","temperatureC","powerWatts"],"gpu");let c=r(a.memoryUsedBytes,a=>B(a,"memoryUsedBytes",0,Number.MAX_SAFE_INTEGER)),d=r(a.memoryTotalBytes,a=>B(a,"memoryTotalBytes",0,Number.MAX_SAFE_INTEGER));if(null!==c&&null!==d&&c>d)throw Error("invalid gpu: memoryUsedBytes exceeds total");return{id:b,status:"ok",utilizationPercent:r(a.utilizationPercent,a=>C(a,"utilizationPercent",0,100)),memoryUsedBytes:c,memoryTotalBytes:d,temperatureC:r(a.temperatureC,a=>C(a,"temperatureC",-50,200)),powerWatts:r(a.powerWatts,a=>C(a,"powerWatts",0,1e4))}})))})),disks:o(a.disks,"disks",a=>{u(a,["status","filesystems","devices"],"disks",["pressureSomePercent","pressureFullPercent"]);let b={status:"ok",filesystems:q(w(a.filesystems,"filesystems",0,64).map(a=>p(a,"filesystem",(a,b)=>{u(a,["id","status","usedBytes","totalBytes"],"filesystem",["inodesUsed","inodesTotal"]);let c=m({status:"ok",usedBytes:a.usedBytes,totalBytes:a.totalBytes}),d={id:b,status:"ok",usedBytes:c.usedBytes,totalBytes:c.totalBytes},e=s(a,"inodesUsed",a=>B(a,"inodesUsed",0,Number.MAX_SAFE_INTEGER));void 0!==e&&(d.inodesUsed=e);let f=s(a,"inodesTotal",a=>B(a,"inodesTotal",0,Number.MAX_SAFE_INTEGER));if(void 0!==f&&(d.inodesTotal=f),null!=e&&null!=f&&e>f)throw Error("invalid filesystem: inodesUsed exceeds inodesTotal");return d}))),devices:q(w(a.devices,"disk devices",0,64).map(a=>p(a,"disk",(a,b)=>{u(a,["id","status","readBytesPerSec","writeBytesPerSec"],"disk",["readLatencyMs","writeLatencyMs","ioUtilizationPercent"]);let c={id:b,status:"ok",readBytesPerSec:C(a.readBytesPerSec,"readBytesPerSec",0,1e13),writeBytesPerSec:C(a.writeBytesPerSec,"writeBytesPerSec",0,1e13)},d=s(a,"readLatencyMs",a=>C(a,"readLatencyMs",0,864e5));void 0!==d&&(c.readLatencyMs=d);let e=s(a,"writeLatencyMs",a=>C(a,"writeLatencyMs",0,864e5));void 0!==e&&(c.writeLatencyMs=e);let f=s(a,"ioUtilizationPercent",a=>C(a,"ioUtilizationPercent",0,100));return void 0!==f&&(c.ioUtilizationPercent=f),c})))},c=s(a,"pressureSomePercent",a=>C(a,"pressureSomePercent",0,100));void 0!==c&&(b.pressureSomePercent=c);let d=s(a,"pressureFullPercent",a=>C(a,"pressureFullPercent",0,100));return void 0!==d&&(b.pressureFullPercent=d),b}),network:o(a.network,"network",a=>(u(a,["status","interfaces"],"network"),{status:"ok",interfaces:q(w(a.interfaces,"interfaces",0,64).map(a=>p(a,"interface",(a,b)=>(u(a,["id","status","rxBytesPerSec","txBytesPerSec"],"interface"),{id:b,status:"ok",rxBytesPerSec:C(a.rxBytesPerSec,"rxBytesPerSec",0,1e13),txBytesPerSec:C(a.txBytesPerSec,"txBytesPerSec",0,1e13)}))))}))})}}if("gap"===c.kind){let a=t(c.payload,`${b}.payload`);u(a,["fromCapturedAt","toCapturedAt","droppedRecords","reason"],"gap payload");let d=D(a.fromCapturedAt,"fromCapturedAt"),f=D(a.toCapturedAt,"toCapturedAt");if(Date.parse(d)>Date.parse(f))throw Error("invalid gap: fromCapturedAt after toCapturedAt");return{...e,kind:"gap",payload:{fromCapturedAt:d,toCapturedAt:f,droppedRecords:B(a.droppedRecords,"droppedRecords",1,Number.MAX_SAFE_INTEGER),reason:x(a.reason,i,"gap.reason")}}}throw Error(`invalid ${b}: unsupported kind ${E(c.kind)}`)}function l(a){let b=t(a,"inventory");u(b,["os","cpu","memory","gpus","filesystems","disks","network","capabilities"],"inventory");let c=t(b.os,"inventory.os");u(c,["platform","release","distro","arch"],"inventory.os");let e=t(b.cpu,"inventory.cpu");u(e,["model","logicalCores"],"inventory.cpu");let f=t(b.memory,"inventory.memory");u(f,["totalBytes","swapTotalBytes"],"inventory.memory");let g=t(b.capabilities,"inventory.capabilities"),i=[...h,"processes"];u(g,[...i],"inventory.capabilities");let j={};for(let a of i){let b=t(g[a],`capability ${a}`);u(b,["status"],`capability ${a}`,["reason"]);let c={status:x(b.status,["supported","unsupported","withheld"],`capability ${a}`)};v(b,"reason")&&(c.reason=y(b.reason,"reason",0,256)),j[a]=c}let k=(a,b)=>r(a,a=>B(a,b,0,Number.MAX_SAFE_INTEGER));return{os:{platform:y(c.platform,"platform",0,64),release:y(c.release,"release",0,256),distro:r(c.distro,a=>y(a,"distro",0,256)),arch:y(c.arch,"arch",0,64)},cpu:{model:r(e.model,a=>y(a,"model",0,256)),logicalCores:B(e.logicalCores,"logicalCores",0,d)},memory:{totalBytes:k(f.totalBytes,"totalBytes"),swapTotalBytes:k(f.swapTotalBytes,"swapTotalBytes")},gpus:q(w(b.gpus,"inventory.gpus",0,16).map(a=>{let b=t(a,"gpu inventory");u(b,["id","name","vendor","pciBusId","telemetry","memoryTotalBytes"],"gpu inventory",["reason"]);let c={id:A(b.id),name:y(b.name,"name",0,256),vendor:x(b.vendor,["nvidia","amd","intel","aspeed","other"],"vendor"),pciBusId:r(b.pciBusId,a=>y(a,"pciBusId",1,64)),telemetry:x(b.telemetry,["supported","unsupported"],"telemetry"),memoryTotalBytes:k(b.memoryTotalBytes,"memoryTotalBytes")};return v(b,"reason")&&(c.reason=y(b.reason,"reason",0,256)),c})),filesystems:q(w(b.filesystems,"inventory.filesystems",0,64).map(a=>{let b=t(a,"filesystem inventory");return u(b,["id","mountPoint","device","fsType","totalBytes"],"filesystem inventory"),{id:A(b.id),mountPoint:y(b.mountPoint,"mountPoint",1,256),device:y(b.device,"device",0,256),fsType:y(b.fsType,"fsType",0,64),totalBytes:k(b.totalBytes,"totalBytes")}})),disks:q(w(b.disks,"inventory.disks",0,64).map(a=>{let b=t(a,"disk inventory");if(u(b,["id","name","model","rotational","sizeBytes"],"disk inventory"),null!==b.rotational&&"boolean"!=typeof b.rotational)throw Error("invalid disk inventory: rotational");return{id:A(b.id),name:y(b.name,"name",1,64),model:r(b.model,a=>y(a,"model",0,256)),rotational:b.rotational,sizeBytes:k(b.sizeBytes,"sizeBytes")}})),network:q(w(b.network,"inventory.network",0,64).map(a=>{let b=t(a,"interface inventory");if(u(b,["id","name","mac","addresses","virtual","state","speedMbps"],"interface inventory"),"boolean"!=typeof b.virtual)throw Error("invalid interface inventory: virtual");return{id:A(b.id),name:y(b.name,"name",1,64),mac:r(b.mac,a=>y(a,"mac",1,64)),addresses:w(b.addresses,"addresses",0,32).map(a=>{let b=t(a,"address");u(b,["family","address","prefix"],"address");let c=x(b.family,["ipv4","ipv6"],"family");return{family:c,address:y(b.address,"address",2,64),prefix:B(b.prefix,"prefix",0,"ipv4"===c?32:128)}}),virtual:b.virtual,state:x(b.state,["up","down","unknown"],"state"),speedMbps:r(b.speedMbps,a=>B(a,"speedMbps",0,1e7))}})),capabilities:j}}function m(a){u(a,["status","usedBytes","totalBytes"],"usage");let b=B(a.totalBytes,"totalBytes",0,Number.MAX_SAFE_INTEGER),c=B(a.usedBytes,"usedBytes",0,Number.MAX_SAFE_INTEGER);if(c>b)throw Error("invalid usage: usedBytes exceeds totalBytes");return{status:"ok",usedBytes:c,totalBytes:b}}function n(a){u(a,["status","usedBytes","totalBytes"],"memory",["pressureSomePercent","pressureFullPercent"]);let b=B(a.totalBytes,"totalBytes",0,Number.MAX_SAFE_INTEGER),c=B(a.usedBytes,"usedBytes",0,Number.MAX_SAFE_INTEGER);if(c>b)throw Error("invalid memory: usedBytes exceeds totalBytes");let d={status:"ok",usedBytes:c,totalBytes:b},e=s(a,"pressureSomePercent",a=>C(a,"pressureSomePercent",0,100));void 0!==e&&(d.pressureSomePercent=e);let f=s(a,"pressureFullPercent",a=>C(a,"pressureFullPercent",0,100));return void 0!==f&&(d.pressureFullPercent=f),d}function o(a,b,c){let d=t(a,b);if("ok"===d.status)return c(d);if("unavailable"===d.status)return u(d,["status","reason"],b),{status:"unavailable",reason:y(d.reason,"reason",0,256)};throw Error(`invalid ${b}: unsupported status ${E(d.status)}`)}function p(a,b,c){let d=t(a,b),e=A(d.id);if("ok"===d.status)return c(d,e);if("unavailable"===d.status)return u(d,["id","status","reason"],b),{id:e,status:"unavailable",reason:y(d.reason,"reason",0,256)};throw Error(`invalid ${b}: unsupported status ${E(d.status)}`)}function q(a){let b=new Set;for(let c of a){if(b.has(c.id))throw Error(`invalid resource list: duplicate id ${E(c.id)}`);b.add(c.id)}return a}function r(a,b){return null===a?null:b(a)}function s(a,b,c){if(v(a,b))return r(a[b],c)}function t(a,b){if(null===a||"object"!=typeof a||Array.isArray(a))throw Error(`invalid ${b}: expected object, got ${E(a)}`);return a}function u(a,b,c,d=[]){let e=new Set([...b,...d]);for(let b of Object.keys(a))if(!e.has(b))throw Error(`invalid ${c}: unexpected field "${b}"`);for(let d of b)if(void 0===a[d])throw Error(`invalid ${c}: missing field "${d}"`);for(let b of d)if(v(a,b)&&void 0===a[b])throw Error(`invalid ${c}: ${b} must not be undefined`)}function v(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function w(a,b,c,d){if(!Array.isArray(a))throw Error(`invalid ${b}: expected array`);if(a.length<c||a.length>d)throw Error(`invalid ${b}: length ${a.length} outside ${c}..${d}`);return a}function x(a,b,c){if("string"!=typeof a||!b.includes(a))throw Error(`invalid ${c}: unexpected value ${E(a)}`);return a}function y(a,b,c,d){if("string"!=typeof a)throw Error(`invalid ${b}: expected string, got ${E(a)}`);if(a.length<c||a.length>d)throw Error(`invalid ${b}: length ${a.length} outside ${c}..${d}`);return a}function z(a,b){return y(a,b,1,128)}function A(a){return y(a,"resource id",1,256)}function B(a,b,c,d){if("number"!=typeof a||!Number.isSafeInteger(a))throw Error(`invalid ${b}: expected safe integer, got ${E(a)}`);if(a<c||a>d)throw Error(`invalid ${b}: ${a} outside ${c}..${d}`);return a}function C(a,b,c,d){if("number"!=typeof a||!Number.isFinite(a))throw Error(`invalid ${b}: expected finite number, got ${E(a)}`);if(a<c||a>d)throw Error(`invalid ${b}: ${a} outside ${c}..${d}`);return a}function D(a,b){let c=y(a,b,1,64),d=Date.parse(c);if(!Number.isFinite(d)||d<e||d>f)throw Error(`invalid ${b}: not a parseable timestamp`);return c}function E(a){try{let b=JSON.stringify(a);if("string"==typeof b)return b.length<=80?b:`${b.slice(0,77)}...`}catch{}return String(a)}function F(a){let b=J(a,"hub snapshot");K(b,["hubRunId","machines"],"hub snapshot");let c=M(b.hubRunId,"hubRunId","hub snapshot");if(!Array.isArray(b.machines))throw Error("invalid snapshot machines");let d=new Set;return{hubRunId:c,machines:b.machines.map(a=>{let b=J(a,"machine");K(b,["machineId","collectorId","hostname","connected","lastReceivedAt"],"machine",["expectedIntervalMs","metrics","inventory","delivery","displayName","tags"]);let c=M(b.machineId,"machineId","machine");if(d.has(c))throw Error("duplicate snapshot machine");d.add(c);let e=M(b.collectorId,"collectorId","machine"),f=N(b.hostname,"hostname","machine",0,G);if("boolean"!=typeof b.connected)throw Error("invalid machine connection state");let g=null===b.lastReceivedAt?null:O(b.lastReceivedAt,"lastReceivedAt","machine"),h={},i=L(b,"expectedIntervalMs")?function(a,b,c){if(null===a)return null;if(void 0===a)throw Error(`invalid ${c}: ${b} must not be undefined`);var d=a,e=b,f=c;if("number"!=typeof d||!Number.isSafeInteger(d))throw Error(`invalid ${f}: ${e} must be a safe integer, got ${P(d)}`);if(d<100||d>72e5)throw Error(`invalid ${f}: ${e} ${d} outside ${100}..${72e5}`);return d}(b.expectedIntervalMs,"expectedIntervalMs","machine"):void 0;if(L(b,"metrics")){let{receivedAt:a,...c}=J(b.metrics,"received metrics"),d=k(c);if("metrics"!==d.kind||d.collectorId!==e)throw Error("conflicting machine metrics");if(h.metrics={...d,receivedAt:O(a,"receivedAt","metrics")},h.metrics.receivedAt!==g)throw Error("conflicting metrics receipt time")}if(L(b,"inventory")&&(h.inventory=l(b.inventory)),L(b,"delivery")){let a=j(b.delivery);if("status"!==a.type)throw Error("invalid delivery status");h.delivery=a}if(L(b,"displayName")&&(h.displayName=null===b.displayName?null:N(b.displayName,"displayName","machine",0,128)),L(b,"tags")){if(!Array.isArray(b.tags)||b.tags.length>32)throw Error("invalid machine tags");h.tags=b.tags.map(a=>N(a,"tag","machine",1,64))}return{machineId:c,collectorId:e,hostname:f,connected:b.connected,lastReceivedAt:g,...void 0===i?{}:{expectedIntervalMs:i},...h}})}}let G=255,H=Date.parse("2000-01-01T00:00:00Z"),I=Date.parse("2200-01-01T00:00:00Z");function J(a,b){if(null===a||"object"!=typeof a||Array.isArray(a))throw Error(`invalid ${b}: expected object, got ${P(a)}`);return a}function K(a,b,c,d=[]){let e=new Set([...b,...d]);for(let b of Object.keys(a))if(!e.has(b))throw Error(`invalid ${c}: unexpected field "${b}"`);for(let d of b)if(void 0===a[d])throw Error(`invalid ${c}: missing field "${d}"`);for(let b of d)if(L(a,b)&&void 0===a[b])throw Error(`invalid ${c}: ${b} must not be undefined`)}function L(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function M(a,b,c){return N(a,b,c,1,128)}function N(a,b,c,d,e){if("string"!=typeof a)throw Error(`invalid ${c}: ${b} must be a string, got ${P(a)}`);if(a.length<d||a.length>e)throw Error(`invalid ${c}: ${b} length ${a.length} outside ${d}..${e}`);return a}function O(a,b,c){let d=N(a,b,c,1,64),e=Date.parse(d);if(!Number.isFinite(e)||e<H||e>I)throw Error(`invalid ${c}: ${b} is not a parseable timestamp`);return d}function P(a){try{let b=JSON.stringify(a);if("string"==typeof b)return b.length<=80?b:`${b.slice(0,77)}...`}catch{}return String(a)}},41756:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23)),Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},55324:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23)),Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},58910:(a,b,c)=>{"use strict";c.d(b,{LiveProvider:()=>s,M:()=>r});var d=c(48249),e=c(67484);async function f(a){try{let b=await a.json();if(b&&"object"==typeof b&&"error"in b){let a=b.error;if("string"==typeof a)return a}}catch{}return a.statusText||null}function g(a){if(!a||"object"!=typeof a)return null;let b=a.username,c=a.csrfToken;if("string"!=typeof b||0===b.length||"string"!=typeof c||0===c.length)return null;let d=a.admin;return void 0!==d&&"boolean"!=typeof d?null:{username:b,csrfToken:c,...!0===d?{admin:!0}:{}}}async function h(){try{let a=await fetch("/api/auth/session",{cache:"no-store",signal:AbortSignal.timeout(5e3),headers:{Accept:"application/json"}});if(a.ok){try{let b=g(await a.json());if(b)return{kind:"signed-in",user:b}}catch{}return{kind:"error",detail:"unexpected session response"}}if(401===a.status)return{kind:"signed-out"};if(503===a.status)return{kind:"auth-unavailable",detail:await f(a)};return{kind:"error",detail:`unexpected status ${a.status}`}}catch{return{kind:"unreachable"}}}async function i(a,b){try{let c=await fetch("/api/auth/login",{method:"POST",cache:"no-store",signal:AbortSignal.timeout(5e3),headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({username:a,password:b})});if(c.ok){try{let a=g(await c.json());if(a)return{kind:"signed-in",user:a}}catch{}return{kind:"error",detail:"unexpected sign-in response"}}if(401===c.status)return{kind:"invalid-credentials",detail:await f(c)};if(429===c.status)return{kind:"error",detail:"too many attempts — wait a moment and try again"};if(503===c.status)return{kind:"auth-unavailable",detail:await f(c)};return{kind:"error",detail:`unexpected status ${c.status}`}}catch{return{kind:"unreachable"}}}async function j(a){try{let b=await fetch("/api/auth/logout",{method:"POST",cache:"no-store",signal:AbortSignal.timeout(5e3),headers:{"X-CSRF-Token":a,Accept:"application/json"}});if(b.ok||401===b.status)return"ok";return b.status,{kind:"error",detail:`unexpected status ${b.status}`}}catch{return"unreachable"}}async function k(a=5e3){let b=new AbortController,c=setTimeout(()=>b.abort(),a);try{let a=await fetch("/api/live",{cache:"no-store",signal:b.signal,headers:{Accept:"text/event-stream"}});if(200===a.status)return{kind:"ok"};if(401===a.status)return{kind:"unauthorized"};if(403===a.status)return{kind:"forbidden"};return{kind:"error",detail:`unexpected status ${a.status}`}}catch{return{kind:"unreachable"}}finally{clearTimeout(c);try{b.abort()}catch{}}}var l=c(25982);let m=["snapshot","update","reset"];class n{source=null;lastId=null;get lastEventId(){return this.lastId}get isOpen(){return null!==this.source&&2!==this.source.readyState}start(a,b){this.close();let c=new EventSource(a);this.source=c;let d=a=>d=>{if(this.source!==c||null===this.source)return;let e=d.lastEventId;"string"==typeof e&&e.length>0&&(this.lastId=e);try{b.onSnapshot((0,l.FZ)(JSON.parse(d.data)),a,e??"")}catch{this.close(),b.onError()}};for(let a of m)c.addEventListener(a,d(a));c.onerror=()=>{this.source===c&&(this.close(),b.onError())}}close(){this.source?.close(),this.source=null}}var o=c(65666);let p=[1e3,2e3,4e3,8e3,15e3],q=(0,e.createContext)(null);function r(){let a=(0,e.useContext)(q);if(!a)throw Error("useLive must be used inside <LiveProvider>");return a}function s({children:a}){let[b,c]=(0,e.useState)({kind:"restoring"}),[f,g]=(0,e.useState)("idle"),[l,m]=(0,e.useState)(null),[r,t]=(0,e.useState)([]),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(new Map),E=(0,e.useRef)(!0),F=(0,e.useRef)(0),G=(0,e.useRef)(null),H=(0,e.useRef)(null),I=(0,e.useRef)(0),J=(0,e.useRef)(b),K=(0,e.useRef)(0),L=(0,e.useRef)(!1),M=(0,e.useRef)(!1),N=a=>{J.current=a,c(a)},O=()=>{null!==H.current&&(clearTimeout(H.current),H.current=null)},P=()=>{K.current+=1,F.current+=1,G.current?.close(),G.current=null,O()},Q=()=>{L.current=!1,t([]),D(new Map),m(null),x(null),z(null),v(null)},R=a=>{let b=J.current;("signed-in"!==b.kind||b.user.csrfToken!==a.csrfToken)&&Q(),N({kind:"signed-in",user:a})},S=()=>{if("signed-in"!==J.current.kind)return;P(),g(L.current?"reconnecting":"connecting");let a=new n;G.current=a,a.start("/api/live",{onSnapshot:(b,c,d)=>{E.current&&G.current===a&&(I.current=0,L.current=!0,m(b.hubRunId),t(b.machines),v(Date.now()),x(d||null),z(c),D(a=>(0,o.g)(a,b)),g("live"))},onError:()=>{E.current&&G.current===a&&T()}})},T=async()=>{P();let a=K.current;g("reconnecting");let b=await h();if(!E.current||a!==K.current)return;if("signed-in"===b.kind)R(b.user);else if("signed-out"===b.kind){N({kind:"signed-out"}),Q(),g("expired");return}else if("auth-unavailable"===b.kind){N({kind:"auth-unavailable",detail:b.detail}),Q(),g("idle");return}let c=Math.min(I.current+1,p.length+1);if(I.current=c,c>p.length){g("disconnected"),V();return}g("reconnecting"),H.current=setTimeout(()=>{U()},p[c-1])},U=async()=>{if(!E.current||M.current)return;P();let a=K.current,b=await k();if(E.current&&a===K.current){if("forbidden"===b.kind){Q(),g("no-permission");return}if("unauthorized"===b.kind){let b=await h();if(!E.current||a!==K.current)return;if("signed-in"===b.kind){R(b.user),S();return}if("signed-out"===b.kind){N({kind:"signed-out"}),Q(),g("expired");return}if("auth-unavailable"===b.kind){N({kind:"auth-unavailable",detail:b.detail}),Q(),g("idle");return}}S()}},V=()=>{O(),H.current=setTimeout(()=>{W()},3e4)},W=async()=>{if(!E.current||M.current)return;P();let a=K.current,b=await h();if(E.current&&a===K.current){if("signed-in"===b.kind){R(b.user),S();return}if("signed-out"===b.kind){N({kind:"signed-out"}),Q(),g("expired");return}if("auth-unavailable"===b.kind){N({kind:"auth-unavailable",detail:b.detail}),Q(),g("idle");return}V()}},X=async a=>{let b=K.current,c=await h();if(E.current&&F.current===a&&b===K.current){if("signed-in"===c.kind){R(c.user),I.current=0,S();return}if("signed-out"===c.kind){N({kind:"signed-out"}),g("idle");return}if("auth-unavailable"===c.kind){N({kind:"auth-unavailable",detail:c.detail}),g("idle");return}N({kind:"restore-failed",detail:"error"===c.kind?c.detail:null}),g("idle")}},Y=async(a,b)=>{P();let c=K.current,d=await i(a,b);return E.current&&c===K.current?("signed-in"===d.kind&&E.current&&(R(d.user),B(null),I.current=0,S()),d):{kind:"error",detail:"Session request superseded. Try again."}},Z=async()=>{let a=J.current;if("signed-in"!==a.kind||M.current)return;M.current=!0,P();let b=K.current;Q(),g("idle");let c=await j(a.user.csrfToken);if(M.current=!1,!E.current||b!==K.current)return;if("ok"===c){N({kind:"signed-out"}),Q(),g("idle"),B("Signed out.");return}let d=await h();if(E.current&&b===K.current){if("signed-in"===d.kind){R(d.user),B("Sign out failed — try again."),S();return}if("signed-out"===d.kind){N({kind:"signed-out"}),Q(),g("idle"),B(null);return}if("auth-unavailable"===d.kind){N({kind:"auth-unavailable",detail:d.detail}),g("idle");return}N({kind:"restore-failed",detail:"error"===d.kind?d.detail:null}),g("idle")}};return(0,d.jsx)(q.Provider,{value:{session:b,phase:f,hubRunId:l,machines:r,lastReceivedLocalMs:u,lastEventId:w,lastEventKind:y,notice:A,history:C,login:Y,signOut:Z,retryConnection:()=>{if(E.current&&!M.current){if("signed-in"===J.current.kind){I.current=0,U();return}F.current+=1,X(F.current)}},dismissNotice:()=>B(null)},children:a})}},59645:(a,b,c)=>{"use strict";function d(){return[{type:"image/svg+xml",sizes:"any",url:"/icon.svg?3b3fa3229e2d0d7a"}]}c.r(b),c.d(b,{default:()=>d})},61135:()=>{},65223:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/triet/Project/rigscope/src/components/theme-provider.tsx","ThemeProvider")},65666:(a,b,c)=>{"use strict";c.d(b,{K:()=>h,g:()=>f});var d=c(22127),e=c(93224);function f(a,b){let c=new Map;for(let f of b.machines){let g=f.metrics;if(!g)continue;let h=`${b.hubRunId}\0${g.collectorId}\0${g.runId}\0${g.sequence}`,i=a.get(f.machineId)??[],j=i.at(-1);if(j?.sampleId===h){c.set(f.machineId,i);continue}let k=h.slice(0,h.lastIndexOf("\0")+1),l=j?.sampleId.startsWith(k)?i:[],m=g.payload.memory;c.set(f.machineId,[...l,{sampleId:h,receivedAtLocal:Date.parse(g.receivedAt),cpuPercent:"ok"===g.payload.cpu.status?g.payload.cpu.usagePercent:null,memoryPercent:"ok"===m.status&&m.totalBytes>0?100*m.usedBytes/m.totalBytes:null,gapThresholdMs:(0,e.Cj)(f.expectedIntervalMs)}].slice(-d.yY))}return c}function g(a){return"number"==typeof a.gapThresholdMs&&Number.isFinite(a.gapThresholdMs)&&a.gapThresholdMs>0?a.gapThresholdMs:d.vz}function h(a,b=600,c=140){let e;if(a.length<2)return null;let f=a[0].receivedAtLocal,i=Math.max(1e3,a.at(-1).receivedAtLocal-f),j="";for(let h of a){if(null===h.cpuPercent){e=void 0;continue}let a=4+(h.receivedAtLocal-f)/i*(b-8),k=c-4-h.cpuPercent/100*(c-8),l=e?Math.min(g(e),g(h)):d.vz,m=e&&h.receivedAtLocal>=e.receivedAtLocal&&h.receivedAtLocal-e.receivedAtLocal<l;j+=`${m?"L":"M"}${a.toFixed(2)},${k.toFixed(2)} `,e=h}return j.trim()||null}},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,metadata:()=>g});var d=c(5735),e=c(65223),f=c(89604);c(61135);let g={title:{template:"%s — Rigscope",default:"Rigscope"},description:"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."};function h({children:a}){return(0,d.jsx)("html",{lang:"en",suppressHydrationWarning:!0,children:(0,d.jsx)("body",{children:(0,d.jsx)(e.ThemeProvider,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:(0,d.jsx)(f.LiveProvider,{children:a})})})})}},78335:()=>{},86737:(a,b,c)=>{Promise.resolve().then(c.bind(c,4833)),Promise.resolve().then(c.bind(c,58910))},89604:(a,b,c)=>{"use strict";c.d(b,{LiveProvider:()=>e});var d=c(77943);(0,d.registerClientReference)(function(){throw Error("Attempted to call useLive() from the server but useLive is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/triet/Project/rigscope/src/live/live-provider.tsx","useLive");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call LiveProvider() from the server but LiveProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/triet/Project/rigscope/src/live/live-provider.tsx","LiveProvider")},93224:(a,b,c)=>{"use strict";c.d(b,{$:()=>f,A4:()=>k,Cj:()=>e,F2:()=>n,L_:()=>m,fv:()=>l,l9:()=>i,nV:()=>j,vj:()=>g,z3:()=>h});var d=c(22127);function e(a){return null==a||"number"!=typeof a||!Number.isFinite(a)||a<=0?d.vz:Math.max(d.vz,3*a)}function f(a){if(null==a||!Number.isFinite(a)||a<0)return"—";if(a<6e4){let b=a/1e3;return Number.isInteger(b)?`${b} s`:`${b.toFixed(1)} s`}if(a<36e5){let b=a/6e4;return Number.isInteger(b)?`${b} min`:`${b.toFixed(1)} min`}let b=a/36e5;return Number.isInteger(b)?`${b} h`:`${b.toFixed(1)} h`}function g(a,b,c=e(a.expectedIntervalMs)){return function(a,b,c=d.vz){if(null===a)return"unknown";let e=Date.parse(a);return Number.isFinite(e)?b-e>=c?"stale":"live":"unknown"}(a.lastReceivedAt,b,c)}function h(a){if(null==a||!Number.isFinite(a)||a<0)return"—";let b=["B","KiB","MiB","GiB","TiB"],c=a,d=0;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return 0===d?`${Math.round(c)} B`:`${c.toFixed(1)} ${b[d]}`}function i(a){return null!=a&&Number.isFinite(a)?`${a.toFixed(1)}%`:"—"}function j(a){if(null===a||!Number.isFinite(a))return"—";let b=Math.round(Math.max(0,a)/1e3);if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60){let a=b%60;return 0===a?`${c}m ago`:`${c}m ${a}s ago`}let d=Math.floor(c/60);if(d<24){let a=c%60;return 0===a?`${d}h ago`:`${d}h ${a}m ago`}let e=Math.floor(d/24),f=d%24;return 0===f?`${e}d ago`:`${e}d ${f}h ago`}function k(a,b){if(null===a)return null;let c=Date.parse(a);return Number.isFinite(c)?b-c:null}function l(a){switch(a){case"ok":return"Live";case"degraded":return"Degraded";case"stale":return"Stale";case"disconnected":return"Disconnected";case"unseen":return"No sample yet"}}function m(a,b=d.mq){let c=a.metrics;if(!c)return{kind:"unknown"};let e=Date.parse(c.capturedAt),f=Date.parse(c.receivedAt);if(!Number.isFinite(e)||!Number.isFinite(f))return{kind:"unknown"};let g=e-f;return g>b?{kind:"ahead",skewMs:g}:g<-b?{kind:"behind",skewMs:-g}:{kind:"none"}}function n(a,b,c=e(a.expectedIntervalMs)){return{freshness:g(a,b,c),attention:function(a,b,c=e(a.expectedIntervalMs)){var d;let f=g(a,b,c);return a.metrics&&"unknown"!==f?"stale"===f?"stale":(d=a.metrics)&&("unavailable"===d.payload.cpu.status||"unavailable"===d.payload.memory.status)?"degraded":a.connected?"ok":"disconnected":"unseen"}(a,b,c),connection:a.connected?"connected":"disconnected",skew:m(a),thresholdMs:c}}},96487:()=>{}};
|
|
1
|
+
exports.id=161,exports.ids=[161],exports.modules={4833:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249),e=c(8696);function f({children:a,...b}){return(0,d.jsx)(e.N,{...b,children:a})}},7909:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23))},21061:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23))},21585:(a,b,c)=>{Promise.resolve().then(c.bind(c,65223)),Promise.resolve().then(c.bind(c,89604))},22127:(a,b,c)=>{"use strict";c.d(b,{mq:()=>e,vz:()=>d,yY:()=>f});let d=15e3,e=9e4,f=180},25982:(a,b,c)=>{"use strict";c.d(b,{U8:()=>d,Q_:()=>j,FZ:()=>F});let d=1024,e=Date.parse("2000-01-01T00:00:00Z"),f=Date.parse("2200-01-01T00:00:00Z"),g=["metrics","inventory","processes"],h=["cpu","memory","swap","gpus","disks","network"],i=["outbox-age","outbox-bytes","disk-budget","write-failure","rejected"];function j(a){let b=t(a,"collector message");switch(b.type){case"hello":{u(b,["type","collectorId","runId","bootId","hostname","capabilities","expectedIntervalMs"],"hello");let a=w(b.capabilities,"hello.capabilities",1,g.length).map(a=>x(a,g,"hello.capabilities"));if(new Set(a).size!==a.length||!a.includes("metrics"))throw Error("invalid hello: capabilities must be unique and include metrics");return{type:"hello",collectorId:z(b.collectorId,"collectorId"),runId:z(b.runId,"runId"),bootId:y(b.bootId,"bootId",0,128),hostname:y(b.hostname,"hostname",0,255),capabilities:a,expectedIntervalMs:B(b.expectedIntervalMs,"expectedIntervalMs",100,72e5)}}case"samples":{u(b,["type","mode","records"],"samples");let a=x(b.mode,["live","replay"],"samples.mode"),c=w(b.records,"samples.records",1,32).map((a,b)=>k(a,`records[${b}]`)),d=new Set;for(let a of c){let b=`${a.runId}\0${a.sequence}`;if(d.has(b))throw Error("invalid samples: duplicate record in batch");d.add(b)}return{type:"samples",mode:a,records:c}}case"inventory":return u(b,["type","capturedAt","inventory"],"inventory"),{type:"inventory",capturedAt:D(b.capturedAt,"capturedAt"),inventory:l(b.inventory)};case"status":return u(b,["type","capturedAt","delivery","failures"],"status"),{type:"status",capturedAt:D(b.capturedAt,"capturedAt"),delivery:function(a){let b=t(a,"delivery");if(u(b,["pendingRecords","pendingBytes","oldestPendingCapturedAt","inFlightRecords","droppedRecords","replaying","lastAckAt"],"delivery",["queueMode"]),"boolean"!=typeof b.replaying)throw Error("invalid delivery: replaying");if(void 0!==b.queueMode&&"memory"!==b.queueMode&&"durable"!==b.queueMode)throw Error(`invalid delivery: unexpected queueMode ${E(b.queueMode)}`);let c=(a,b)=>B(a,b,0,Number.MAX_SAFE_INTEGER);return{pendingRecords:c(b.pendingRecords,"pendingRecords"),pendingBytes:c(b.pendingBytes,"pendingBytes"),oldestPendingCapturedAt:r(b.oldestPendingCapturedAt,a=>D(a,"oldestPendingCapturedAt")),inFlightRecords:c(b.inFlightRecords,"inFlightRecords"),droppedRecords:c(b.droppedRecords,"droppedRecords"),replaying:b.replaying,lastAckAt:r(b.lastAckAt,a=>D(a,"lastAckAt")),...void 0===b.queueMode?{}:{queueMode:b.queueMode}}}(b.delivery),failures:w(b.failures,"failures",0,32).map(a=>{let b=t(a,"failure");return u(b,["metric","resourceId","reason"],"failure"),{metric:y(b.metric,"metric",1,64),resourceId:null===b.resourceId?null:A(b.resourceId),reason:y(b.reason,"reason",0,256)}})};case"detail.result":return u(b,["type","subscriptionId","capturedAt","snapshot"],"detail.result"),{type:"detail.result",subscriptionId:z(b.subscriptionId,"subscriptionId"),capturedAt:D(b.capturedAt,"capturedAt"),snapshot:function(a){let b=t(a,"process snapshot");if(u(b,["totalProcesses","truncated","inaccessible","processes"],"process snapshot"),"boolean"!=typeof b.truncated)throw Error("invalid process snapshot: truncated");let c=(a,b,c)=>r(a,a=>C(a,b,0,c));return{totalProcesses:B(b.totalProcesses,"totalProcesses",0,1e7),truncated:b.truncated,inaccessible:B(b.inaccessible,"inaccessible",0,1e7),processes:w(b.processes,"processes",0,6e3).map(a=>{let b=t(a,"process");u(b,["pid","ppid","startTicks","name","user","state","cpuPercent","memoryRssBytes","gpuMemoryBytes","ioReadBytesPerSec","ioWriteBytesPerSec","threads","unit"],"process",["command"]);let e={pid:B(b.pid,"pid",0,0x80000000),ppid:B(b.ppid,"ppid",0,0x80000000),startTicks:B(b.startTicks,"startTicks",0,Number.MAX_SAFE_INTEGER),name:y(b.name,"name",0,256),user:r(b.user,a=>y(a,"user",0,64)),state:y(b.state,"state",0,16),cpuPercent:c(b.cpuPercent,"cpuPercent",100*d),memoryRssBytes:r(b.memoryRssBytes,a=>B(a,"memoryRssBytes",0,Number.MAX_SAFE_INTEGER)),gpuMemoryBytes:r(b.gpuMemoryBytes,a=>B(a,"gpuMemoryBytes",0,Number.MAX_SAFE_INTEGER)),ioReadBytesPerSec:c(b.ioReadBytesPerSec,"ioReadBytesPerSec",1e13),ioWriteBytesPerSec:c(b.ioWriteBytesPerSec,"ioWriteBytesPerSec",1e13),threads:r(b.threads,a=>B(a,"threads",0,1e7)),unit:r(b.unit,a=>y(a,"unit",1,256))};return v(b,"command")&&(e.command=y(b.command,"command",0,4096)),e})}}(b.snapshot)};case"detail.ended":return u(b,["type","subscriptionId","reason"],"detail.ended"),{type:"detail.ended",subscriptionId:z(b.subscriptionId,"subscriptionId"),reason:x(b.reason,["expired","cancelled","withheld","unsupported","busy","failed"],"detail.ended.reason")};default:throw Error(`invalid collector message: unsupported type ${E(b.type)}`)}}function k(a,b="record"){let c=t(a,b);u(c,["collectorId","runId","bootId","sequence","capturedAt","kind","payload"],b);let e={collectorId:z(c.collectorId,"collectorId"),runId:z(c.runId,"runId"),bootId:y(c.bootId,"bootId",0,128),sequence:B(c.sequence,"sequence",0,Number.MAX_SAFE_INTEGER),capturedAt:D(c.capturedAt,"capturedAt")};if("metrics"===c.kind){let a;return{...e,kind:"metrics",payload:(u(a=t(c.payload,"metrics payload"),[...h],"metrics payload"),{cpu:o(a.cpu,"cpu",a=>{u(a,["status","usagePercent","perCore"],"cpu",["temperatureC","powerWatts","iowaitPercent","pressureSomePercent"]);let b={status:"ok",usagePercent:C(a.usagePercent,"usagePercent",0,100),perCore:w(a.perCore,"perCore",0,d).map(a=>null===a?null:C(a,"perCore",0,100))},c=s(a,"temperatureC",a=>C(a,"temperatureC",-50,200));void 0!==c&&(b.temperatureC=c);let e=s(a,"powerWatts",a=>C(a,"powerWatts",0,1e4));void 0!==e&&(b.powerWatts=e);let f=s(a,"iowaitPercent",a=>C(a,"iowaitPercent",0,100));void 0!==f&&(b.iowaitPercent=f);let g=s(a,"pressureSomePercent",a=>C(a,"pressureSomePercent",0,100));return void 0!==g&&(b.pressureSomePercent=g),b}),memory:o(a.memory,"memory",n),swap:o(a.swap,"swap",m),gpus:o(a.gpus,"gpus",a=>(u(a,["status","devices"],"gpus"),{status:"ok",devices:q(w(a.devices,"gpus.devices",0,16).map(a=>p(a,"gpu",(a,b)=>{u(a,["id","status","utilizationPercent","memoryUsedBytes","memoryTotalBytes","temperatureC","powerWatts"],"gpu");let c=r(a.memoryUsedBytes,a=>B(a,"memoryUsedBytes",0,Number.MAX_SAFE_INTEGER)),d=r(a.memoryTotalBytes,a=>B(a,"memoryTotalBytes",0,Number.MAX_SAFE_INTEGER));if(null!==c&&null!==d&&c>d)throw Error("invalid gpu: memoryUsedBytes exceeds total");return{id:b,status:"ok",utilizationPercent:r(a.utilizationPercent,a=>C(a,"utilizationPercent",0,100)),memoryUsedBytes:c,memoryTotalBytes:d,temperatureC:r(a.temperatureC,a=>C(a,"temperatureC",-50,200)),powerWatts:r(a.powerWatts,a=>C(a,"powerWatts",0,1e4))}})))})),disks:o(a.disks,"disks",a=>{u(a,["status","filesystems","devices"],"disks",["pressureSomePercent","pressureFullPercent"]);let b={status:"ok",filesystems:q(w(a.filesystems,"filesystems",0,64).map(a=>p(a,"filesystem",(a,b)=>{u(a,["id","status","usedBytes","totalBytes"],"filesystem",["inodesUsed","inodesTotal"]);let c=m({status:"ok",usedBytes:a.usedBytes,totalBytes:a.totalBytes}),d={id:b,status:"ok",usedBytes:c.usedBytes,totalBytes:c.totalBytes},e=s(a,"inodesUsed",a=>B(a,"inodesUsed",0,Number.MAX_SAFE_INTEGER));void 0!==e&&(d.inodesUsed=e);let f=s(a,"inodesTotal",a=>B(a,"inodesTotal",0,Number.MAX_SAFE_INTEGER));if(void 0!==f&&(d.inodesTotal=f),null!=e&&null!=f&&e>f)throw Error("invalid filesystem: inodesUsed exceeds inodesTotal");return d}))),devices:q(w(a.devices,"disk devices",0,64).map(a=>p(a,"disk",(a,b)=>{u(a,["id","status","readBytesPerSec","writeBytesPerSec"],"disk",["readLatencyMs","writeLatencyMs","ioUtilizationPercent"]);let c={id:b,status:"ok",readBytesPerSec:C(a.readBytesPerSec,"readBytesPerSec",0,1e13),writeBytesPerSec:C(a.writeBytesPerSec,"writeBytesPerSec",0,1e13)},d=s(a,"readLatencyMs",a=>C(a,"readLatencyMs",0,864e5));void 0!==d&&(c.readLatencyMs=d);let e=s(a,"writeLatencyMs",a=>C(a,"writeLatencyMs",0,864e5));void 0!==e&&(c.writeLatencyMs=e);let f=s(a,"ioUtilizationPercent",a=>C(a,"ioUtilizationPercent",0,100));return void 0!==f&&(c.ioUtilizationPercent=f),c})))},c=s(a,"pressureSomePercent",a=>C(a,"pressureSomePercent",0,100));void 0!==c&&(b.pressureSomePercent=c);let d=s(a,"pressureFullPercent",a=>C(a,"pressureFullPercent",0,100));return void 0!==d&&(b.pressureFullPercent=d),b}),network:o(a.network,"network",a=>(u(a,["status","interfaces"],"network"),{status:"ok",interfaces:q(w(a.interfaces,"interfaces",0,64).map(a=>p(a,"interface",(a,b)=>(u(a,["id","status","rxBytesPerSec","txBytesPerSec"],"interface"),{id:b,status:"ok",rxBytesPerSec:C(a.rxBytesPerSec,"rxBytesPerSec",0,1e13),txBytesPerSec:C(a.txBytesPerSec,"txBytesPerSec",0,1e13)}))))}))})}}if("gap"===c.kind){let a=t(c.payload,`${b}.payload`);u(a,["fromCapturedAt","toCapturedAt","droppedRecords","reason"],"gap payload");let d=D(a.fromCapturedAt,"fromCapturedAt"),f=D(a.toCapturedAt,"toCapturedAt");if(Date.parse(d)>Date.parse(f))throw Error("invalid gap: fromCapturedAt after toCapturedAt");return{...e,kind:"gap",payload:{fromCapturedAt:d,toCapturedAt:f,droppedRecords:B(a.droppedRecords,"droppedRecords",1,Number.MAX_SAFE_INTEGER),reason:x(a.reason,i,"gap.reason")}}}throw Error(`invalid ${b}: unsupported kind ${E(c.kind)}`)}function l(a){let b=t(a,"inventory");u(b,["os","cpu","memory","gpus","filesystems","disks","network","capabilities"],"inventory");let c=t(b.os,"inventory.os");u(c,["platform","release","distro","arch"],"inventory.os");let e=t(b.cpu,"inventory.cpu");u(e,["model","logicalCores"],"inventory.cpu");let f=t(b.memory,"inventory.memory");u(f,["totalBytes","swapTotalBytes"],"inventory.memory");let g=t(b.capabilities,"inventory.capabilities"),i=[...h,"processes"];u(g,[...i],"inventory.capabilities");let j={};for(let a of i){let b=t(g[a],`capability ${a}`);u(b,["status"],`capability ${a}`,["reason"]);let c={status:x(b.status,["supported","unsupported","withheld"],`capability ${a}`)};v(b,"reason")&&(c.reason=y(b.reason,"reason",0,256)),j[a]=c}let k=(a,b)=>r(a,a=>B(a,b,0,Number.MAX_SAFE_INTEGER));return{os:{platform:y(c.platform,"platform",0,64),release:y(c.release,"release",0,256),distro:r(c.distro,a=>y(a,"distro",0,256)),arch:y(c.arch,"arch",0,64)},cpu:{model:r(e.model,a=>y(a,"model",0,256)),logicalCores:B(e.logicalCores,"logicalCores",0,d)},memory:{totalBytes:k(f.totalBytes,"totalBytes"),swapTotalBytes:k(f.swapTotalBytes,"swapTotalBytes")},gpus:q(w(b.gpus,"inventory.gpus",0,16).map(a=>{let b=t(a,"gpu inventory");u(b,["id","name","vendor","pciBusId","telemetry","memoryTotalBytes"],"gpu inventory",["reason"]);let c={id:A(b.id),name:y(b.name,"name",0,256),vendor:x(b.vendor,["nvidia","amd","intel","aspeed","other"],"vendor"),pciBusId:r(b.pciBusId,a=>y(a,"pciBusId",1,64)),telemetry:x(b.telemetry,["supported","unsupported"],"telemetry"),memoryTotalBytes:k(b.memoryTotalBytes,"memoryTotalBytes")};return v(b,"reason")&&(c.reason=y(b.reason,"reason",0,256)),c})),filesystems:q(w(b.filesystems,"inventory.filesystems",0,64).map(a=>{let b=t(a,"filesystem inventory");return u(b,["id","mountPoint","device","fsType","totalBytes"],"filesystem inventory"),{id:A(b.id),mountPoint:y(b.mountPoint,"mountPoint",1,256),device:y(b.device,"device",0,256),fsType:y(b.fsType,"fsType",0,64),totalBytes:k(b.totalBytes,"totalBytes")}})),disks:q(w(b.disks,"inventory.disks",0,64).map(a=>{let b=t(a,"disk inventory");if(u(b,["id","name","model","rotational","sizeBytes"],"disk inventory"),null!==b.rotational&&"boolean"!=typeof b.rotational)throw Error("invalid disk inventory: rotational");return{id:A(b.id),name:y(b.name,"name",1,64),model:r(b.model,a=>y(a,"model",0,256)),rotational:b.rotational,sizeBytes:k(b.sizeBytes,"sizeBytes")}})),network:q(w(b.network,"inventory.network",0,64).map(a=>{let b=t(a,"interface inventory");if(u(b,["id","name","mac","addresses","virtual","state","speedMbps"],"interface inventory"),"boolean"!=typeof b.virtual)throw Error("invalid interface inventory: virtual");return{id:A(b.id),name:y(b.name,"name",1,64),mac:r(b.mac,a=>y(a,"mac",1,64)),addresses:w(b.addresses,"addresses",0,32).map(a=>{let b=t(a,"address");u(b,["family","address","prefix"],"address");let c=x(b.family,["ipv4","ipv6"],"family");return{family:c,address:y(b.address,"address",2,64),prefix:B(b.prefix,"prefix",0,"ipv4"===c?32:128)}}),virtual:b.virtual,state:x(b.state,["up","down","unknown"],"state"),speedMbps:r(b.speedMbps,a=>B(a,"speedMbps",0,1e7))}})),capabilities:j}}function m(a){u(a,["status","usedBytes","totalBytes"],"usage");let b=B(a.totalBytes,"totalBytes",0,Number.MAX_SAFE_INTEGER),c=B(a.usedBytes,"usedBytes",0,Number.MAX_SAFE_INTEGER);if(c>b)throw Error("invalid usage: usedBytes exceeds totalBytes");return{status:"ok",usedBytes:c,totalBytes:b}}function n(a){u(a,["status","usedBytes","totalBytes"],"memory",["pressureSomePercent","pressureFullPercent"]);let b=B(a.totalBytes,"totalBytes",0,Number.MAX_SAFE_INTEGER),c=B(a.usedBytes,"usedBytes",0,Number.MAX_SAFE_INTEGER);if(c>b)throw Error("invalid memory: usedBytes exceeds totalBytes");let d={status:"ok",usedBytes:c,totalBytes:b},e=s(a,"pressureSomePercent",a=>C(a,"pressureSomePercent",0,100));void 0!==e&&(d.pressureSomePercent=e);let f=s(a,"pressureFullPercent",a=>C(a,"pressureFullPercent",0,100));return void 0!==f&&(d.pressureFullPercent=f),d}function o(a,b,c){let d=t(a,b);if("ok"===d.status)return c(d);if("unavailable"===d.status)return u(d,["status","reason"],b),{status:"unavailable",reason:y(d.reason,"reason",0,256)};throw Error(`invalid ${b}: unsupported status ${E(d.status)}`)}function p(a,b,c){let d=t(a,b),e=A(d.id);if("ok"===d.status)return c(d,e);if("unavailable"===d.status)return u(d,["id","status","reason"],b),{id:e,status:"unavailable",reason:y(d.reason,"reason",0,256)};throw Error(`invalid ${b}: unsupported status ${E(d.status)}`)}function q(a){let b=new Set;for(let c of a){if(b.has(c.id))throw Error(`invalid resource list: duplicate id ${E(c.id)}`);b.add(c.id)}return a}function r(a,b){return null===a?null:b(a)}function s(a,b,c){if(v(a,b))return r(a[b],c)}function t(a,b){if(null===a||"object"!=typeof a||Array.isArray(a))throw Error(`invalid ${b}: expected object, got ${E(a)}`);return a}function u(a,b,c,d=[]){let e=new Set([...b,...d]);for(let b of Object.keys(a))if(!e.has(b))throw Error(`invalid ${c}: unexpected field "${b}"`);for(let d of b)if(void 0===a[d])throw Error(`invalid ${c}: missing field "${d}"`);for(let b of d)if(v(a,b)&&void 0===a[b])throw Error(`invalid ${c}: ${b} must not be undefined`)}function v(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function w(a,b,c,d){if(!Array.isArray(a))throw Error(`invalid ${b}: expected array`);if(a.length<c||a.length>d)throw Error(`invalid ${b}: length ${a.length} outside ${c}..${d}`);return a}function x(a,b,c){if("string"!=typeof a||!b.includes(a))throw Error(`invalid ${c}: unexpected value ${E(a)}`);return a}function y(a,b,c,d){if("string"!=typeof a)throw Error(`invalid ${b}: expected string, got ${E(a)}`);if(a.length<c||a.length>d)throw Error(`invalid ${b}: length ${a.length} outside ${c}..${d}`);return a}function z(a,b){return y(a,b,1,128)}function A(a){return y(a,"resource id",1,256)}function B(a,b,c,d){if("number"!=typeof a||!Number.isSafeInteger(a))throw Error(`invalid ${b}: expected safe integer, got ${E(a)}`);if(a<c||a>d)throw Error(`invalid ${b}: ${a} outside ${c}..${d}`);return a}function C(a,b,c,d){if("number"!=typeof a||!Number.isFinite(a))throw Error(`invalid ${b}: expected finite number, got ${E(a)}`);if(a<c||a>d)throw Error(`invalid ${b}: ${a} outside ${c}..${d}`);return a}function D(a,b){let c=y(a,b,1,64),d=Date.parse(c);if(!Number.isFinite(d)||d<e||d>f)throw Error(`invalid ${b}: not a parseable timestamp`);return c}function E(a){try{let b=JSON.stringify(a);if("string"==typeof b)return b.length<=80?b:`${b.slice(0,77)}...`}catch{}return String(a)}function F(a){let b=J(a,"hub snapshot");K(b,["hubRunId","machines"],"hub snapshot");let c=M(b.hubRunId,"hubRunId","hub snapshot");if(!Array.isArray(b.machines))throw Error("invalid snapshot machines");let d=new Set;return{hubRunId:c,machines:b.machines.map(a=>{let b=J(a,"machine");K(b,["machineId","collectorId","hostname","connected","lastReceivedAt"],"machine",["expectedIntervalMs","metrics","inventory","delivery","displayName","tags"]);let c=M(b.machineId,"machineId","machine");if(d.has(c))throw Error("duplicate snapshot machine");d.add(c);let e=M(b.collectorId,"collectorId","machine"),f=N(b.hostname,"hostname","machine",0,G);if("boolean"!=typeof b.connected)throw Error("invalid machine connection state");let g=null===b.lastReceivedAt?null:O(b.lastReceivedAt,"lastReceivedAt","machine"),h={},i=L(b,"expectedIntervalMs")?function(a,b,c){if(null===a)return null;if(void 0===a)throw Error(`invalid ${c}: ${b} must not be undefined`);var d=a,e=b,f=c;if("number"!=typeof d||!Number.isSafeInteger(d))throw Error(`invalid ${f}: ${e} must be a safe integer, got ${P(d)}`);if(d<100||d>72e5)throw Error(`invalid ${f}: ${e} ${d} outside ${100}..${72e5}`);return d}(b.expectedIntervalMs,"expectedIntervalMs","machine"):void 0;if(L(b,"metrics")){let{receivedAt:a,...c}=J(b.metrics,"received metrics"),d=k(c);if("metrics"!==d.kind||d.collectorId!==e)throw Error("conflicting machine metrics");if(h.metrics={...d,receivedAt:O(a,"receivedAt","metrics")},h.metrics.receivedAt!==g)throw Error("conflicting metrics receipt time")}if(L(b,"inventory")&&(h.inventory=l(b.inventory)),L(b,"delivery")){let a=j(b.delivery);if("status"!==a.type)throw Error("invalid delivery status");h.delivery=a}if(L(b,"displayName")&&(h.displayName=null===b.displayName?null:N(b.displayName,"displayName","machine",0,128)),L(b,"tags")){if(!Array.isArray(b.tags)||b.tags.length>32)throw Error("invalid machine tags");h.tags=b.tags.map(a=>N(a,"tag","machine",1,64))}return{machineId:c,collectorId:e,hostname:f,connected:b.connected,lastReceivedAt:g,...void 0===i?{}:{expectedIntervalMs:i},...h}})}}let G=255,H=Date.parse("2000-01-01T00:00:00Z"),I=Date.parse("2200-01-01T00:00:00Z");function J(a,b){if(null===a||"object"!=typeof a||Array.isArray(a))throw Error(`invalid ${b}: expected object, got ${P(a)}`);return a}function K(a,b,c,d=[]){let e=new Set([...b,...d]);for(let b of Object.keys(a))if(!e.has(b))throw Error(`invalid ${c}: unexpected field "${b}"`);for(let d of b)if(void 0===a[d])throw Error(`invalid ${c}: missing field "${d}"`);for(let b of d)if(L(a,b)&&void 0===a[b])throw Error(`invalid ${c}: ${b} must not be undefined`)}function L(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function M(a,b,c){return N(a,b,c,1,128)}function N(a,b,c,d,e){if("string"!=typeof a)throw Error(`invalid ${c}: ${b} must be a string, got ${P(a)}`);if(a.length<d||a.length>e)throw Error(`invalid ${c}: ${b} length ${a.length} outside ${d}..${e}`);return a}function O(a,b,c){let d=N(a,b,c,1,64),e=Date.parse(d);if(!Number.isFinite(e)||e<H||e>I)throw Error(`invalid ${c}: ${b} is not a parseable timestamp`);return d}function P(a){try{let b=JSON.stringify(a);if("string"==typeof b)return b.length<=80?b:`${b.slice(0,77)}...`}catch{}return String(a)}},41756:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23)),Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},55324:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23)),Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},58910:(a,b,c)=>{"use strict";c.d(b,{LiveProvider:()=>s,M:()=>r});var d=c(48249),e=c(67484);async function f(a){try{let b=await a.json();if(b&&"object"==typeof b&&"error"in b){let a=b.error;if("string"==typeof a)return a}}catch{}return a.statusText||null}function g(a){if(!a||"object"!=typeof a)return null;let b=a.username,c=a.csrfToken;if("string"!=typeof b||0===b.length||"string"!=typeof c||0===c.length)return null;let d=a.admin;return void 0!==d&&"boolean"!=typeof d?null:{username:b,csrfToken:c,...!0===d?{admin:!0}:{}}}async function h(){try{let a=await fetch("/api/auth/session",{cache:"no-store",signal:AbortSignal.timeout(5e3),headers:{Accept:"application/json"}});if(a.ok){try{let b=g(await a.json());if(b)return{kind:"signed-in",user:b}}catch{}return{kind:"error",detail:"unexpected session response"}}if(401===a.status)return{kind:"signed-out"};if(503===a.status)return{kind:"auth-unavailable",detail:await f(a)};return{kind:"error",detail:`unexpected status ${a.status}`}}catch{return{kind:"unreachable"}}}async function i(a,b){try{let c=await fetch("/api/auth/login",{method:"POST",cache:"no-store",signal:AbortSignal.timeout(5e3),headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({username:a,password:b})});if(c.ok){try{let a=g(await c.json());if(a)return{kind:"signed-in",user:a}}catch{}return{kind:"error",detail:"unexpected sign-in response"}}if(401===c.status)return{kind:"invalid-credentials",detail:await f(c)};if(429===c.status)return{kind:"error",detail:"too many attempts — wait a moment and try again"};if(503===c.status)return{kind:"auth-unavailable",detail:await f(c)};return{kind:"error",detail:`unexpected status ${c.status}`}}catch{return{kind:"unreachable"}}}async function j(a){try{let b=await fetch("/api/auth/logout",{method:"POST",cache:"no-store",signal:AbortSignal.timeout(5e3),headers:{"X-CSRF-Token":a,Accept:"application/json"}});if(b.ok||401===b.status)return"ok";return b.status,{kind:"error",detail:`unexpected status ${b.status}`}}catch{return"unreachable"}}async function k(a=5e3){let b=new AbortController,c=setTimeout(()=>b.abort(),a);try{let a=await fetch("/api/live",{cache:"no-store",signal:b.signal,headers:{Accept:"text/event-stream"}});if(200===a.status)return{kind:"ok"};if(401===a.status)return{kind:"unauthorized"};if(403===a.status)return{kind:"forbidden"};return{kind:"error",detail:`unexpected status ${a.status}`}}catch{return{kind:"unreachable"}}finally{clearTimeout(c);try{b.abort()}catch{}}}var l=c(25982);let m=["snapshot","update","reset"];class n{source=null;lastId=null;get lastEventId(){return this.lastId}get isOpen(){return null!==this.source&&2!==this.source.readyState}start(a,b){this.close();let c=new EventSource(a);this.source=c;let d=a=>d=>{if(this.source!==c||null===this.source)return;let e=d.lastEventId;"string"==typeof e&&e.length>0&&(this.lastId=e);try{b.onSnapshot((0,l.FZ)(JSON.parse(d.data)),a,e??"")}catch{this.close(),b.onError()}};for(let a of m)c.addEventListener(a,d(a));c.onerror=()=>{this.source===c&&(this.close(),b.onError())}}close(){this.source?.close(),this.source=null}}var o=c(65666);let p=[1e3,2e3,4e3,8e3,15e3],q=(0,e.createContext)(null);function r(){let a=(0,e.useContext)(q);if(!a)throw Error("useLive must be used inside <LiveProvider>");return a}function s({children:a}){let[b,c]=(0,e.useState)({kind:"restoring"}),[f,g]=(0,e.useState)("idle"),[l,m]=(0,e.useState)(null),[r,t]=(0,e.useState)([]),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(new Map),E=(0,e.useRef)(!0),F=(0,e.useRef)(0),G=(0,e.useRef)(null),H=(0,e.useRef)(null),I=(0,e.useRef)(0),J=(0,e.useRef)(b),K=(0,e.useRef)(0),L=(0,e.useRef)(!1),M=(0,e.useRef)(!1),N=a=>{J.current=a,c(a)},O=()=>{null!==H.current&&(clearTimeout(H.current),H.current=null)},P=()=>{K.current+=1,F.current+=1,G.current?.close(),G.current=null,O()},Q=()=>{L.current=!1,t([]),D(new Map),m(null),x(null),z(null),v(null)},R=a=>{let b=J.current;("signed-in"!==b.kind||b.user.csrfToken!==a.csrfToken)&&Q(),N({kind:"signed-in",user:a})},S=()=>{if("signed-in"!==J.current.kind)return;P(),g(L.current?"reconnecting":"connecting");let a=new n;G.current=a,a.start("/api/live",{onSnapshot:(b,c,d)=>{E.current&&G.current===a&&(I.current=0,L.current=!0,m(b.hubRunId),t(b.machines),v(Date.now()),x(d||null),z(c),D(a=>(0,o.g)(a,b)),g("live"))},onError:()=>{E.current&&G.current===a&&T()}})},T=async()=>{P();let a=K.current;g("reconnecting");let b=await h();if(!E.current||a!==K.current)return;if("signed-in"===b.kind)R(b.user);else if("signed-out"===b.kind){N({kind:"signed-out"}),Q(),g("expired");return}else if("auth-unavailable"===b.kind){N({kind:"auth-unavailable",detail:b.detail}),Q(),g("idle");return}let c=Math.min(I.current+1,p.length+1);if(I.current=c,c>p.length){g("disconnected"),V();return}g("reconnecting"),H.current=setTimeout(()=>{U()},p[c-1])},U=async()=>{if(!E.current||M.current)return;P();let a=K.current,b=await k();if(E.current&&a===K.current){if("forbidden"===b.kind){Q(),g("no-permission");return}if("unauthorized"===b.kind){let b=await h();if(!E.current||a!==K.current)return;if("signed-in"===b.kind){R(b.user),S();return}if("signed-out"===b.kind){N({kind:"signed-out"}),Q(),g("expired");return}if("auth-unavailable"===b.kind){N({kind:"auth-unavailable",detail:b.detail}),Q(),g("idle");return}}S()}},V=()=>{O(),H.current=setTimeout(()=>{W()},3e4)},W=async()=>{if(!E.current||M.current)return;P();let a=K.current,b=await h();if(E.current&&a===K.current){if("signed-in"===b.kind){R(b.user),S();return}if("signed-out"===b.kind){N({kind:"signed-out"}),Q(),g("expired");return}if("auth-unavailable"===b.kind){N({kind:"auth-unavailable",detail:b.detail}),Q(),g("idle");return}V()}},X=async a=>{let b=K.current,c=await h();if(E.current&&F.current===a&&b===K.current){if("signed-in"===c.kind){R(c.user),I.current=0,S();return}if("signed-out"===c.kind){N({kind:"signed-out"}),g("idle");return}if("auth-unavailable"===c.kind){N({kind:"auth-unavailable",detail:c.detail}),g("idle");return}N({kind:"restore-failed",detail:"error"===c.kind?c.detail:null}),g("idle")}},Y=async(a,b)=>{P();let c=K.current,d=await i(a,b);return E.current&&c===K.current?("signed-in"===d.kind&&E.current&&(R(d.user),B(null),I.current=0,S()),d):{kind:"error",detail:"Session request superseded. Try again."}},Z=async()=>{let a=J.current;if("signed-in"!==a.kind||M.current)return;M.current=!0,P();let b=K.current;Q(),g("idle");let c=await j(a.user.csrfToken);if(M.current=!1,!E.current||b!==K.current)return;if("ok"===c){N({kind:"signed-out"}),Q(),g("idle"),B("Signed out.");return}let d=await h();if(E.current&&b===K.current){if("signed-in"===d.kind){R(d.user),B("Sign out failed — try again."),S();return}if("signed-out"===d.kind){N({kind:"signed-out"}),Q(),g("idle"),B(null);return}if("auth-unavailable"===d.kind){N({kind:"auth-unavailable",detail:d.detail}),g("idle");return}N({kind:"restore-failed",detail:"error"===d.kind?d.detail:null}),g("idle")}};return(0,d.jsx)(q.Provider,{value:{session:b,phase:f,hubRunId:l,machines:r,lastReceivedLocalMs:u,lastEventId:w,lastEventKind:y,notice:A,history:C,login:Y,signOut:Z,retryConnection:()=>{if(E.current&&!M.current){if("signed-in"===J.current.kind){I.current=0,U();return}F.current+=1,X(F.current)}},dismissNotice:()=>B(null)},children:a})}},59645:(a,b,c)=>{"use strict";function d(){return[{type:"image/svg+xml",sizes:"any",url:"/icon.svg?3b3fa3229e2d0d7a"}]}c.r(b),c.d(b,{default:()=>d})},61135:()=>{},65223:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/triet/Project/rigscope/src/components/theme-provider.tsx","ThemeProvider")},65666:(a,b,c)=>{"use strict";c.d(b,{K:()=>h,g:()=>f});var d=c(22127),e=c(93224);function f(a,b){let c=new Map;for(let f of b.machines){let g=f.metrics;if(!g)continue;let h=`${b.hubRunId}\0${g.collectorId}\0${g.runId}\0${g.sequence}`,i=a.get(f.machineId)??[],j=i.at(-1);if(j?.sampleId===h){c.set(f.machineId,i);continue}let k=h.slice(0,h.lastIndexOf("\0")+1),l=j?.sampleId.startsWith(k)?i:[],m=g.payload.memory;c.set(f.machineId,[...l,{sampleId:h,receivedAtLocal:Date.parse(g.receivedAt),cpuPercent:"ok"===g.payload.cpu.status?g.payload.cpu.usagePercent:null,memoryPercent:"ok"===m.status&&m.totalBytes>0?100*m.usedBytes/m.totalBytes:null,gapThresholdMs:(0,e.Cj)(f.expectedIntervalMs)}].slice(-d.yY))}return c}function g(a){return"number"==typeof a.gapThresholdMs&&Number.isFinite(a.gapThresholdMs)&&a.gapThresholdMs>0?a.gapThresholdMs:d.vz}function h(a,b=600,c=140){let e;if(a.length<2)return null;let f=a[0].receivedAtLocal,i=Math.max(1e3,a.at(-1).receivedAtLocal-f),j="";for(let h of a){if(null===h.cpuPercent){e=void 0;continue}let a=4+(h.receivedAtLocal-f)/i*(b-8),k=c-4-h.cpuPercent/100*(c-8),l=e?Math.min(g(e),g(h)):d.vz,m=e&&h.receivedAtLocal>=e.receivedAtLocal&&h.receivedAtLocal-e.receivedAtLocal<l;j+=`${m?"L":"M"}${a.toFixed(2)},${k.toFixed(2)} `,e=h}return j.trim()||null}},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,metadata:()=>g});var d=c(5735),e=c(65223),f=c(89604);c(61135);let g={title:{template:"%s — Rigscope",default:"Rigscope"},description:"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."};function h({children:a}){return(0,d.jsx)("html",{lang:"en",suppressHydrationWarning:!0,children:(0,d.jsx)("body",{children:(0,d.jsx)(e.ThemeProvider,{attribute:"class",defaultTheme:"dark",enableSystem:!0,children:(0,d.jsx)(f.LiveProvider,{children:a})})})})}},78335:()=>{},86737:(a,b,c)=>{Promise.resolve().then(c.bind(c,4833)),Promise.resolve().then(c.bind(c,58910))},89604:(a,b,c)=>{"use strict";c.d(b,{LiveProvider:()=>e});var d=c(77943);(0,d.registerClientReference)(function(){throw Error("Attempted to call useLive() from the server but useLive is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/triet/Project/rigscope/src/live/live-provider.tsx","useLive");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call LiveProvider() from the server but LiveProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/triet/Project/rigscope/src/live/live-provider.tsx","LiveProvider")},93224:(a,b,c)=>{"use strict";c.d(b,{$:()=>f,A4:()=>k,Cj:()=>e,F2:()=>n,L_:()=>m,fv:()=>l,l9:()=>i,nV:()=>j,vj:()=>g,z3:()=>h});var d=c(22127);function e(a){return null==a||"number"!=typeof a||!Number.isFinite(a)||a<=0?d.vz:Math.max(d.vz,3*a)}function f(a){if(null==a||!Number.isFinite(a)||a<0)return"—";if(a<6e4){let b=a/1e3;return Number.isInteger(b)?`${b} s`:`${b.toFixed(1)} s`}if(a<36e5){let b=a/6e4;return Number.isInteger(b)?`${b} min`:`${b.toFixed(1)} min`}let b=a/36e5;return Number.isInteger(b)?`${b} h`:`${b.toFixed(1)} h`}function g(a,b,c=e(a.expectedIntervalMs)){return function(a,b,c=d.vz){if(null===a)return"unknown";let e=Date.parse(a);return Number.isFinite(e)?b-e>=c?"stale":"live":"unknown"}(a.lastReceivedAt,b,c)}function h(a){if(null==a||!Number.isFinite(a)||a<0)return"—";let b=["B","KiB","MiB","GiB","TiB"],c=a,d=0;for(;c>=1024&&d<b.length-1;)c/=1024,d+=1;return 0===d?`${Math.round(c)} B`:`${c.toFixed(1)} ${b[d]}`}function i(a){return null!=a&&Number.isFinite(a)?`${a.toFixed(1)}%`:"—"}function j(a){if(null===a||!Number.isFinite(a))return"—";let b=Math.round(Math.max(0,a)/1e3);if(b<60)return`${b}s ago`;let c=Math.floor(b/60);if(c<60){let a=b%60;return 0===a?`${c}m ago`:`${c}m ${a}s ago`}let d=Math.floor(c/60);if(d<24){let a=c%60;return 0===a?`${d}h ago`:`${d}h ${a}m ago`}let e=Math.floor(d/24),f=d%24;return 0===f?`${e}d ago`:`${e}d ${f}h ago`}function k(a,b){if(null===a)return null;let c=Date.parse(a);return Number.isFinite(c)?b-c:null}function l(a){switch(a){case"ok":return"Live";case"degraded":return"Degraded";case"stale":return"Stale";case"disconnected":return"Disconnected";case"unseen":return"No sample yet"}}function m(a,b=d.mq){let c=a.metrics;if(!c)return{kind:"unknown"};let e=Date.parse(c.capturedAt),f=Date.parse(c.receivedAt);if(!Number.isFinite(e)||!Number.isFinite(f))return{kind:"unknown"};let g=e-f;return g>b?{kind:"ahead",skewMs:g}:g<-b?{kind:"behind",skewMs:-g}:{kind:"none"}}function n(a,b,c=e(a.expectedIntervalMs)){return{freshness:g(a,b,c),attention:function(a,b,c=e(a.expectedIntervalMs)){var d;let f=g(a,b,c);return a.metrics&&"unknown"!==f?"stale"===f?"stale":(d=a.metrics)&&("unavailable"===d.payload.cpu.status||"unavailable"===d.payload.memory.status)?"degraded":a.connected?"ok":"disconnected":"unseen"}(a,b,c),connection:a.connected?"connected":"disconnected",skew:m(a),thresholdMs:c}}},96487:()=>{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/JbaLjudQSxrMUD_VHPrnD/_buildManifest.js","static/JbaLjudQSxrMUD_VHPrnD/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-9ca43f4ce1bb8938.js","static/chunks/4bd1b696-c7408084347438ae.js","static/chunks/794-ceeb732a1a81bc27.js","static/chunks/main-app-f92328c8950d2e53.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/2abef6d49c1c2970.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-c7408084347438ae.js" async=""></script><script src="/_next/static/chunks/794-ceeb732a1a81bc27.js" async=""></script><script src="/_next/static/chunks/main-app-f92328c8950d2e53.js" async=""></script><script src="/_next/static/chunks/939-
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/2abef6d49c1c2970.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-c7408084347438ae.js" async=""></script><script src="/_next/static/chunks/794-ceeb732a1a81bc27.js" async=""></script><script src="/_next/static/chunks/main-app-f92328c8950d2e53.js" async=""></script><script src="/_next/static/chunks/939-92930fde48061e20.js" async=""></script><script src="/_next/static/chunks/app/layout-4feff677c4071745.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Rigscope</title><meta name="description" content="Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub."/><link rel="icon" href="/icon.svg?3b3fa3229e2d0d7a" type="image/svg+xml" sizes="any"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark",null,["light","dark"],null,true,true)</script><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><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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:\"static/chunks/939-92930fde48061e20.js\"\n3:\"static/chunks/app/layout-4feff677c4071745.js\"\n4:I[2737,[\"939\",\"$2\",\"177\",\"$3\"],\"ThemeProvider\"]\n5:I[9939,[\"939\",\"$2\",\"177\",\"$3\"],\"LiveProvider\"]\n6:I[7121,[],\"\"]\n7:I[4581,[],\"\"]\nb:I[484,[],\"OutletBoundary\"]\nc:\"$Sreact.suspense\"\ne:\"ViewportBoundary\"\nf:I[484,[],\"$e\"]\n11:\"MetadataBoundary\"\n12:I[484,[],\"$11\"]\n14:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/2abef6d49c1c2970.css\",\"style\"]\n9:X\na:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"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.\"}]}]]}]}]],null,[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@d\"}]}]]}],\"p\":false,\"v\":null}}]]\n8:[[\"children\",{\"s\":\"_not-found\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$9\"},\"c\":\"$Qa\"}]]\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2abef6d49c1c2970.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L4\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":true,\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],\"p\":false,\"v\":null},\"c\":\"$Q8\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L13\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JbaLjudQSxrMUD_VHPrnD\"}\n"])</script><script>self.__next_f.push([1,"9:C\n10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"15:I[6869,[],\"IconMark\"]\nd:null\n13:[[\"$\",\"title\",\"0\",{\"children\":\"Rigscope\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Self-hosted remote system monitor — a live fleet of collectors behind one authenticated hub.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?3b3fa3229e2d0d7a\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L15\",\"3\",{}]]\n"])</script></body></html>
|