rigscope 0.1.5 → 0.1.7
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 +4 -4
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +6 -6
- 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 +2 -2
- package/.next/server/app/administration/page.js +1 -1
- package/.next/server/app/administration/page.js.nft.json +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 +6 -6
- package/.next/server/app/administration.segments/_full.segment.rsc +6 -6
- package/.next/server/app/administration.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/administration.segments/administration/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/alerts/page.js +1 -1
- package/.next/server/app/alerts/page.js.nft.json +1 -1
- 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 +6 -6
- package/.next/server/app/alerts.segments/_full.segment.rsc +6 -6
- package/.next/server/app/alerts.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/alerts.segments/alerts/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/connections/page.js +1 -1
- package/.next/server/app/connections/page.js.nft.json +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 +6 -6
- package/.next/server/app/connections.segments/_full.segment.rsc +6 -6
- package/.next/server/app/connections.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connections.segments/connections/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/history/page.js +2 -2
- package/.next/server/app/history/page.js.nft.json +1 -1
- 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 +26 -22
- package/.next/server/app/history.segments/_full.segment.rsc +26 -22
- package/.next/server/app/history.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/history.segments/history/__PAGE__.segment.rsc +23 -20
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +6 -6
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/index.segments/_full.segment.rsc +6 -6
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/machines/[machineId]/page.js +1 -1
- package/.next/server/app/machines/[machineId]/page.js.nft.json +1 -1
- package/.next/server/app/machines/[machineId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/processes/page.js +2 -2
- package/.next/server/app/processes/page.js.nft.json +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 +21 -19
- package/.next/server/app/processes.segments/_full.segment.rsc +21 -19
- package/.next/server/app/processes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/processes.segments/processes/__PAGE__.segment.rsc +21 -19
- package/.next/server/app-paths-manifest.json +4 -4
- package/.next/server/chunks/168.js +1 -1
- package/.next/server/chunks/350.js +1 -0
- package/.next/server/chunks/751.js +1 -1
- package/.next/server/chunks/894.js +2 -2
- 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/103-976549d31902404e.js +1 -0
- package/.next/static/chunks/408-9fdba9e4e956ef08.js +1 -0
- package/.next/static/chunks/944-a7fe1d96f1d20531.js +1 -0
- package/.next/static/chunks/app/administration/page-b62f6610cda5381f.js +1 -0
- package/.next/static/chunks/app/alerts/{page-2548b2ab0c057953.js → page-3445bc100ee03d4e.js} +1 -1
- package/.next/static/chunks/app/connections/{page-07113bf16cb352e7.js → page-75abd16fc495fcbd.js} +1 -1
- package/.next/static/chunks/app/history/page-a25ba8fab7bd7cb9.js +3 -0
- package/.next/static/chunks/app/machines/[machineId]/{page-0b89e4393a137c4d.js → page-89143e71c34b542b.js} +1 -1
- package/.next/static/chunks/app/{page-c68554c93016dd13.js → page-9c9c89166eee4c92.js} +1 -1
- package/.next/static/chunks/app/processes/page-3fdebd2f98b52044.js +3 -0
- package/.next/static/css/f5d3162842dcac31.css +1 -0
- package/CHANGELOG.md +21 -0
- package/dist/collector.cjs +1 -1
- package/dist/hub.cjs +45 -15
- package/dist/ops.cjs +44 -14
- package/docs/installation.md +3 -3
- package/docs/releasing.md +12 -12
- package/package.json +1 -1
- package/.next/server/chunks/721.js +0 -1
- package/.next/static/chunks/103-13ec30dcc059b9d3.js +0 -1
- package/.next/static/chunks/157-0d36ebf66af048ac.js +0 -1
- package/.next/static/chunks/408-29f55984738967db.js +0 -1
- package/.next/static/chunks/app/administration/page-4b16b19bb6a39c36.js +0 -1
- package/.next/static/chunks/app/history/page-69ea64476ee5db85.js +0 -3
- package/.next/static/chunks/app/processes/page-b6d97d119f10e2a1.js +0 -3
- package/.next/static/css/fb3ad9534f4681e6.css +0 -1
- /package/.next/static/{oxwySrJXqXq8O6_7AzZGe → 9SHY6v87ulfunqR2e84n9}/_buildManifest.js +0 -0
- /package/.next/static/{oxwySrJXqXq8O6_7AzZGe → 9SHY6v87ulfunqR2e84n9}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var a={};a.id=693,a.ids=[693],a.modules={104:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},2902:(a,b,c)=>{"use strict";c.d(b,{AdministrationView:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call AdministrationView() from the server but AdministrationView 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/admin/administration-view.tsx","AdministrationView")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},8806:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},9479:(a,b,c)=>{"use strict";c.d(b,{AdministrationView:()=>aa});var d=c(48249),e=c(2116),f=c.n(e),g=c(67484),h=c(50132),i=c(49187),j=c(31742),k=c(93484),l=c(96970);class m extends Error{status;constructor(a,b){super(b),this.name="AdminApiError",this.status=a}}function n(){return new m(502,"The hub returned an unexpected response.")}var o=c(22091),p=c(22338),q=c(81232),r=c(75006),s=c(58910);let t="w-full min-w-0 rounded-md border border-border bg-background px-3 py-2 text-base text-foreground placeholder:text-muted-foreground aria-[invalid=true]:border-crit sm:text-sm",u="inline-flex min-h-9 items-center justify-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-accent-foreground transition-colors hover:bg-accent/90 disabled:cursor-not-allowed disabled:opacity-50",v="inline-flex min-h-9 items-center justify-center gap-1.5 rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-card-strong disabled:cursor-not-allowed disabled:opacity-50",w="inline-flex min-h-8 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-card-strong hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",x="inline-flex min-h-9 items-center justify-center gap-1.5 rounded-md border border-crit px-3 py-1.5 text-xs font-medium text-crit transition-colors hover:bg-crit-soft disabled:cursor-not-allowed disabled:opacity-50";function y({id:a,label:b,error:c,children:e}){return(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5",children:[(0,d.jsx)("label",{htmlFor:a,className:"text-xs font-medium text-foreground",children:b}),e,c?(0,d.jsx)("p",{id:`${a}-error`,className:"text-xs text-crit",children:c}):null]})}function z(a,b){if(b)return`${a}-error`}function A({children:a,tone:b="neutral"}){return(0,d.jsx)("span",{className:`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium ${{neutral:"border border-border text-muted-foreground",accent:"bg-selected text-foreground",ok:"bg-ok-soft text-foreground",warn:"bg-warn-soft text-foreground",crit:"bg-crit-soft text-foreground"}[b]}`,children:a})}function B({children:a,tone:b="info",role:c="status"}){return(0,d.jsx)("p",{role:c,className:`rounded-md px-3 py-2 text-xs ${{info:"text-muted-foreground",error:"bg-crit-soft text-foreground",success:"bg-ok-soft text-foreground",warn:"bg-warn-soft text-foreground"}[b]}`,children:a})}function C(a,b){return a instanceof m?a.message:b}function D(a){return a instanceof m&&401===a.status}function E(a){return a instanceof m&&403===a.status}function F(a){return"object"==typeof a&&null!==a&&"AbortError"===a.name}var G=c(65366);let H=(0,G.A)("ScrollText",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]),I=/^[\x21-\x7e]{1,128}$/,J=/[\u0000-\u001f\u007f]/;function K(a){let b=new Date(a);return Number.isFinite(b.getTime())?b.toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"}):"Unknown time"}function L(a){let b=a.displayName?.trim();if(b)return b;let c=a.hostname?.trim();return c||a.machineId}function M(a){let{api:b,revision:c,onSessionLost:e}=a,[f,h]=(0,g.useState)([]),[i,k]=(0,g.useState)(!0),[l,m]=(0,g.useState)(null),n=(0,g.useRef)(null),o=(0,g.useCallback)(async()=>{n.current?.abort();let a=new AbortController;n.current=a,k(!0),m(null);try{let c=await b.listAudit(50,a.signal);a.signal.aborted||h(c)}catch(b){if(a.signal.aborted||F(b))return;if(D(b))return void e();m(E(b)?"Administrator access is required to read the audit log.":C(b,"Could not load the audit log."))}finally{a.signal.aborted||k(!1)}},[b,e]);return(0,d.jsxs)(p.Z,{title:"Audit log",className:"min-w-0",action:(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>void o(),disabled:i,children:[(0,d.jsx)(j.A,{className:`h-3.5 w-3.5 ${i?"animate-spin":""}`,"aria-hidden":!0}),"Refresh"]}),children:[(0,d.jsx)("div",{className:"flex flex-wrap items-baseline justify-between gap-2",children:(0,d.jsxs)("span",{className:"tnum text-xs text-muted-foreground",children:[f.length," event",1===f.length?"":"s"]})}),l?(0,d.jsxs)("div",{className:"mt-3 flex flex-wrap items-center justify-between gap-2",children:[(0,d.jsx)(B,{tone:"error",role:"alert",children:l}),(0,d.jsx)("button",{type:"button",className:w,onClick:()=>void o(),children:"Try again"})]}):null,i&&0===f.length&&!l?(0,d.jsx)("p",{role:"status",className:"py-6 text-sm text-muted-foreground",children:"Loading audit events…"}):null,i||l||0!==f.length?null:(0,d.jsx)(p.p,{icon:H,note:"No administrative changes recorded yet."}),f.length>0?(0,d.jsx)("ol",{className:"mt-2 max-h-96 divide-y divide-border overflow-y-auto border-t border-border",children:f.map((a,b)=>(0,d.jsxs)("li",{className:"flex min-w-0 flex-wrap items-baseline gap-x-3 gap-y-1 py-2.5 text-xs",children:[(0,d.jsx)("time",{dateTime:a.at,className:"tnum shrink-0 text-muted-foreground",children:K(a.at)}),(0,d.jsx)("span",{className:"font-medium text-foreground",children:function(a){switch(a){case"user.create":return"Created user";case"user.update":return"Updated access";case"user.update-password":return"Changed password";case"user.delete":return"Deleted user";default:return a.replace(/[-_.]+/g," ")}}(a.action)}),(0,d.jsxs)("span",{className:"min-w-0 break-all text-muted-foreground",children:[a.target," ",(0,d.jsx)("span",{"aria-hidden":!0,children:"\xb7"})," by ",a.actor]})]},`${a.at}-${a.actor}-${a.action}-${a.target}-${b}`))}):null]})}let N=(0,G.A)("ShieldOff",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71",key:"1jlk70"}],["path",{d:"M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264",key:"18rp1v"}]]),O=(0,G.A)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var P=c(104),Q=c(12421);let R=(0,G.A)("ClipboardCopy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),S=[{value:3e5,label:"5 minutes"},{value:6e5,label:"10 minutes"},{value:9e5,label:"15 minutes"}];function T(a){let{api:b,csrfToken:c,sessionKey:e,machines:f,onAuditChange:h,onSessionLost:i}=a,k=(0,g.useId)(),l=a=>`${k}-${a}`,[m,n]=(0,g.useState)([]),[o,q]=(0,g.useState)(!0),[r,s]=(0,g.useState)(null),[z,G]=(0,g.useState)(""),[H,I]=(0,g.useState)(""),[J,M]=(0,g.useState)(9e5),[T,U]=(0,g.useState)(null),[V,W]=(0,g.useState)(null),[X,Y]=(0,g.useState)(!1),[Z,$]=(0,g.useState)(""),[_,aa]=(0,g.useState)(null),[ab,ac]=(0,g.useState)(!1),[ad,ae]=(0,g.useState)(null),af=(0,g.useRef)(null),ag=(0,g.useRef)(!0),ah=(0,g.useRef)(null),ai=(0,g.useRef)(null),aj=(0,g.useCallback)(async()=>{af.current?.abort();let a=new AbortController;af.current=a,q(!0),s(null);try{let c=await b.listCollectors(a.signal);a.signal.aborted||n(c)}catch(b){if(a.signal.aborted||F(b))return;if(D(b))return void i();s(E(b)?"Administrator access is required to inspect collector mappings.":C(b,"Could not load the collector registry."))}finally{a.signal.aborted||q(!1)}},[b,i]),ak=m.filter(a=>!a.revoked),al=""!==H,am=T?function(a,b="https://your-hub"){let c=new URL(b);if(!["https:","http:"].includes(c.protocol)||c.username||c.password||c.search||c.hash)throw Error("Invalid hub origin");let d=c.origin.replace(/'/g,"%27");return{command:`rigscope connect '${d}'${"replacement"===a?" --replace":""}`,note:"replacement"===a?"Paste the grant at the prompt. The old credential stays active until replacement succeeds.":"Paste the grant at the prompt, then run rigscope start."}}(T.mode,window.location.origin):null,an=async()=>{if(!X){W(null),Y(!0);try{let a=await b.createGrant({ttlMs:J,...al?{replaceMachineId:H}:{}},c);if(!ag.current)return;U({...a,mode:al?"replacement":"new"}),$(""),G("Grant created. Copy before leaving."),h()}catch(a){if(!ag.current)return;if(D(a))return void i();if(E(a))return void W(al?"You do not have access to that machine, so a replacement grant cannot be created.":"A new installation needs a hub administrator with all-machine scope. Choose an existing mapping for a replacement grant, or ask the hub owner to widen your scope.");W(C(a,"Could not create an enrollment grant."))}finally{ag.current&&Y(!1)}}},ao=async()=>{if(T)try{if(!navigator.clipboard?.writeText)throw Error("clipboard unavailable");await navigator.clipboard.writeText(T.token),$("Grant copied to the clipboard.")}catch{$("Copy failed. Select the grant field and copy it manually.")}},ap=async()=>{if(am)try{if(!navigator.clipboard?.writeText)throw Error("clipboard unavailable");await navigator.clipboard.writeText(am.command),$("Command copied.")}catch{$("Copy failed. Select the command and copy it manually.")}},aq=async()=>{if(_&&!ab){ac(!0),ae(null);try{if(await b.revokeCollector(_.collectorId,c),!ag.current)return;let a=`${_.collectorId} on ${_.machineId}`;aa(null),G(`Revoked ${a}. Its live stream was disconnected.`),h(),await aj()}catch(a){if(!ag.current)return;if(D(a))return void i();ae(E(a)?"Your account does not have access to that collector's machine.":C(a,"Could not revoke that collector."))}finally{ag.current&&ac(!1)}}},ar=a=>{let b=f.find(b=>b.machineId===a);return b?L(b):a};return(0,d.jsxs)(p.Z,{title:"Collectors",className:"min-w-0",action:(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>void aj(),disabled:o,children:[(0,d.jsx)(j.A,{className:`h-3.5 w-3.5 ${o?"animate-spin":""}`,"aria-hidden":!0}),"Refresh"]}),children:[(0,d.jsx)("p",{role:"status",className:z?"mb-3 rounded-md bg-ok-soft px-3 py-2 text-xs text-foreground":"sr-only",children:z}),r?(0,d.jsxs)("div",{className:"mb-3 flex flex-wrap items-center justify-between gap-2",children:[(0,d.jsx)(B,{tone:"error",role:"alert",children:r}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>void aj(),children:"Try again"})]}):null,(0,d.jsxs)("div",{className:"grid min-w-0 gap-6 lg:grid-cols-2",children:[(0,d.jsxs)("section",{"aria-labelledby":l("registry-heading"),className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[(0,d.jsx)("h3",{id:l("registry-heading"),className:"text-sm font-medium tracking-tight",children:"Registry"}),(0,d.jsxs)("span",{className:"tnum text-xs text-muted-foreground",children:[ak.length," active / ",m.length," total"]})]}),o&&0===m.length?(0,d.jsx)("p",{role:"status",className:"py-6 text-sm text-muted-foreground",children:"Loading collector mappings…"}):null,o||r||0!==m.length?null:(0,d.jsx)(p.p,{icon:N,note:"No collector mappings are visible."}),m.length>0?(0,d.jsx)("ul",{className:"mt-2 divide-y divide-border border-t border-border",children:m.map(a=>{let b=_?.collectorId===a.collectorId;return(0,d.jsxs)("li",{className:"min-w-0 py-3",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-start justify-between gap-x-4 gap-y-2",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"break-words text-sm font-medium",children:ar(a.machineId)}),a.revoked?(0,d.jsx)(A,{tone:"crit",children:"Revoked"}):(0,d.jsx)(A,{tone:"ok",children:"Active"})]}),(0,d.jsxs)("dl",{className:"mt-1 flex flex-col gap-0.5 text-xs text-muted-foreground",children:[(0,d.jsxs)("div",{className:"flex min-w-0 gap-1.5",children:[(0,d.jsx)("dt",{className:"shrink-0",children:"Machine"}),(0,d.jsx)("dd",{className:"tnum break-all",children:a.machineId})]}),(0,d.jsxs)("div",{className:"flex min-w-0 gap-1.5",children:[(0,d.jsx)("dt",{className:"shrink-0",children:"Collector"}),(0,d.jsx)("dd",{className:"tnum break-all",children:a.collectorId})]}),(0,d.jsxs)("div",{className:"flex min-w-0 gap-1.5",children:[(0,d.jsx)("dt",{className:"shrink-0",children:"Updated"}),(0,d.jsx)("dd",{children:K(a.updatedAt)})]})]})]}),a.revoked?null:(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>{I(a.machineId),W(null),requestAnimationFrame(()=>ai.current?.focus())},children:[(0,d.jsx)(O,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Replacement grant"]}),(0,d.jsxs)("button",{type:"button",className:w,"aria-expanded":b,onClick:()=>{ae(null),aa(b?null:a)},children:[(0,d.jsx)(N,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Revoke"]})]})]}),b?(0,d.jsxs)("div",{role:"alert",className:"mt-2 flex flex-wrap items-center gap-x-3 gap-y-2 rounded-md bg-crit-soft px-3 py-2",children:[(0,d.jsxs)("p",{className:"min-w-0 flex-1 text-xs text-foreground",children:["Revoke ",(0,d.jsx)("strong",{className:"font-medium",children:a.collectorId})," ","on ",(0,d.jsx)("strong",{className:"font-medium",children:ar(a.machineId)}),"? This disconnects the collector and invalidates its credential."]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,d.jsx)("button",{type:"button",className:x,onClick:()=>void aq(),disabled:ab,children:ab?"Revoking…":"Revoke collector"}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>aa(null),disabled:ab,children:"Cancel"})]})]}):null,b&&ad?(0,d.jsx)("p",{role:"alert",className:"mt-2 text-xs text-crit",children:ad}):null]},a.collectorId)})}):null]}),(0,d.jsxs)("section",{"aria-labelledby":l("grant-heading"),className:"flex min-w-0 flex-col gap-3 border-t border-border pt-5 lg:border-l lg:border-t-0 lg:pl-6 lg:pt-0",children:[(0,d.jsx)("div",{children:(0,d.jsx)("h3",{id:l("grant-heading"),className:"text-sm font-medium tracking-tight",children:"Add machine"})}),(0,d.jsx)(y,{id:l("target"),label:"Enrollment target",children:(0,d.jsxs)("select",{id:l("target"),value:H,onChange:a=>{I(a.target.value),W(null)},className:t,children:[(0,d.jsx)("option",{value:"",children:"New machine"}),ak.map(a=>(0,d.jsxs)("option",{value:a.machineId,children:["Replacement \xb7 ",ar(a.machineId)," \xb7 ",a.collectorId]},a.collectorId))]})}),(0,d.jsx)(y,{id:l("ttl"),label:"Grant lifetime",children:(0,d.jsx)("select",{id:l("ttl"),value:J,onChange:a=>M(Number(a.target.value)),className:t,children:S.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))})}),V?(0,d.jsx)(B,{tone:"error",role:"alert",children:V}):null,(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,d.jsxs)("button",{ref:ai,type:"button",className:u,onClick:()=>void an(),disabled:X,"aria-busy":X,children:[(0,d.jsx)(O,{className:"h-3.5 w-3.5","aria-hidden":!0}),X?"Creating…":al?"Create replacement grant":"Create connection grant"]})}),T&&am?(0,d.jsxs)("section",{"aria-labelledby":l("grant-reveal-heading"),className:"flex min-w-0 flex-col gap-3 border-t border-border pt-3",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsx)("h4",{id:l("grant-reveal-heading"),className:"text-sm font-medium",children:"Copy this grant now"}),(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>{U(null),$(""),W(null),G("Grant dismissed."),requestAnimationFrame(()=>ai.current?.focus())},"aria-label":"Dismiss enrollment grant",children:[(0,d.jsx)(P.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Dismiss"]})]}),(0,d.jsx)(B,{tone:"warn",role:"alert",children:(0,d.jsxs)("span",{className:"flex items-start gap-2",children:[(0,d.jsx)(Q.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,d.jsxs)("span",{children:["Single-use grant \xb7 expires"," ",(0,d.jsx)("time",{dateTime:T.expiresAt,children:K(T.expiresAt)}),". Copy before leaving."]})]})}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5",children:[(0,d.jsx)("label",{htmlFor:l("grant-token"),className:"text-xs font-medium",children:"One-time grant"}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap gap-1.5",children:[(0,d.jsx)("input",{ref:ah,id:l("grant-token"),readOnly:!0,autoComplete:"off",spellCheck:!1,value:T.token,onFocus:a=>a.currentTarget.select(),className:`${t} tnum min-w-0 flex-1 break-all`}),(0,d.jsxs)("button",{type:"button",className:v,onClick:()=>void ao(),children:[(0,d.jsx)(R,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Copy grant"]})]}),(0,d.jsx)("p",{className:"sr-only",role:"status",children:Z}),Z?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:Z}):null]}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"text-xs font-medium",children:"Run on the new machine"}),(0,d.jsx)("pre",{className:"mt-1.5 overflow-x-auto whitespace-pre-wrap break-all rounded-md bg-card-strong p-3 text-xs text-foreground",children:(0,d.jsx)("code",{children:am.command})}),(0,d.jsx)("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:(0,d.jsxs)("button",{type:"button",className:v,onClick:()=>void ap(),children:[(0,d.jsx)(R,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Copy command"]})}),(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:am.note})]})]}):null]})]})]})}var U=c(89313);let V=(0,G.A)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);function W(a){let{api:b,csrfToken:c,machines:e,machinesPending:f,onSessionLost:h}=a,i=(0,g.useId)(),k=a=>`${i}-${a}`,[l,m]=(0,g.useState)(""),[n,o]=(0,g.useState)(""),[q,r]=(0,g.useState)(""),[s,v]=(0,g.useState)(!1),[w,x]=(0,g.useState)({}),[A,F]=(0,g.useState)(null),[G,H]=(0,g.useState)(!1),[I,K]=(0,g.useState)(""),M=(0,g.useRef)(null),N=e.find(a=>a.machineId===l),O=async a=>{let d,e,f;if(a.preventDefault(),!N||G)return;F(null);let g=(d=n.trim(),e={},d.length>128?e.displayName="Display name must be at most 128 characters.":J.test(d)&&(e.displayName="Display name cannot contain control characters."),null!==(f=function(a){let b=a.split(",").map(a=>a.trim()).filter(a=>a.length>0),c=[],d=new Set;for(let a of b){if(a.length>64)return{tags:c,error:"Each tag must be at most 64 characters."};if(J.test(a))return{tags:c,error:"Tags cannot contain control characters."};d.has(a)||(d.add(a),c.push(a))}return c.length>32?{tags:c,error:"Use at most 32 tags."}:{tags:c,error:null}}(q)).error&&(e.tags=f.error),{displayName:0===d.length?null:d,tags:f.tags,errors:e});if(x(g.errors),g.errors.displayName)return void document.getElementById(k("name"))?.focus();if(g.errors.tags)return void document.getElementById(k("tags"))?.focus();H(!0);try{await b.saveMachineMeta(N.machineId,{displayName:g.displayName,tags:g.tags},c),o(g.displayName??""),r(g.tags.join(", ")),v(!1),K(`Saved metadata for ${L(N)}. Fleet and machine views update from the live stream.`)}catch(a){if(D(a))return void h();F(E(a)?"You do not have access to this machine, so its metadata cannot be changed.":C(a,"Could not save machine metadata."))}finally{H(!1)}};return(0,d.jsxs)(p.Z,{title:"Machine metadata",className:"min-w-0",children:[(0,d.jsx)("p",{role:"status",className:I?"mb-3 rounded-md bg-ok-soft px-3 py-2 text-xs text-foreground":"sr-only",children:I}),0===e.length?(0,d.jsx)(p.p,{icon:U.A,note:f?"Waiting for the live machine list…":"No machines are visible to your account."}):(0,d.jsxs)("form",{"aria-busy":G,className:"flex min-w-0 flex-col gap-4",onSubmit:a=>void O(a),children:[(0,d.jsx)(y,{id:k("machine"),label:"Machine",children:(0,d.jsx)("select",{id:k("machine"),value:l,onChange:a=>{var b;let c;return b=a.target.value,c=e.find(a=>a.machineId===b),void(m(b),o(c?.displayName??""),r((c?.tags??[]).join(", ")),v(!1),x({}),F(null),K(""))},className:t,children:e.map(a=>(0,d.jsx)("option",{value:a.machineId,children:L(a)},a.machineId))})}),(0,d.jsx)(y,{id:k("name"),label:"Display name",error:w.displayName,children:(0,d.jsx)("input",{id:k("name"),placeholder:N?.hostname||"Hostname",maxLength:128,value:n,onChange:a=>{o(a.target.value),v(!0)},"aria-invalid":!!w.displayName||void 0,"aria-describedby":z(k("name"),w.displayName),className:t})}),(0,d.jsx)(y,{id:k("tags"),label:"Tags (comma-separated)",error:w.tags,children:(0,d.jsx)("input",{id:k("tags"),value:q,onChange:a=>{r(a.target.value),v(!0)},"aria-invalid":!!w.tags||void 0,"aria-describedby":z(k("tags"),w.tags),className:t})}),A?(0,d.jsx)("div",{ref:M,tabIndex:-1,"aria-live":"assertive",children:(0,d.jsx)(B,{tone:"error",role:"alert",children:A})}):null,(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,d.jsx)("button",{type:"submit",className:u,disabled:G||!s,children:G?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{className:"h-3.5 w-3.5 animate-spin","aria-hidden":!0}),"Saving…"]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(V,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Save metadata"]})})})]})]})}var X=c(8806),Y=c(33947),Z=c(22685);function $(a){let{api:b,username:c,csrfToken:e,machines:f,machinesPending:i,onAuditChange:k,onSessionLost:m}=a,[n,o]=(0,g.useState)([]),[q,r]=(0,g.useState)(!0),[s,t]=(0,g.useState)(null),[y,z]=(0,g.useState)(""),[G,H]=(0,g.useState)(null),[I,J]=(0,g.useState)(null),[K,L]=(0,g.useState)(!1),[M,N]=(0,g.useState)(null),O=(0,g.useRef)(null),P=(0,g.useRef)(!0),Q=(0,g.useCallback)(async()=>{O.current?.abort();let a=new AbortController;O.current=a,r(!0),t(null);try{let c=await b.listUsers(a.signal);a.signal.aborted||o(c)}catch(b){if(a.signal.aborted||F(b))return;if(D(b))return void m();t(E(b)?"Administrator access is required. If your access just changed, sign in again.":C(b,"Could not load the browser user directory."))}finally{a.signal.aborted||r(!1)}},[b,m]),R=async()=>{if(I&&!K){L(!0),N(null);try{if(await b.deleteUser(I.username,e),!P.current)return;let a=I.username;J(null),z(`Deleted user ${a}. Any active sessions were ended.`),k(),await Q()}catch(a){if(!P.current)return;if(D(a))return void m();N(E(a)?"Your account no longer has administrative access.":C(a,"Could not delete that user."))}finally{P.current&&L(!1)}}};return(0,d.jsxs)(p.Z,{title:"Browser users",className:"min-w-0",action:(0,d.jsxs)("button",{type:"button",className:u,"aria-expanded":G?.mode==="create",onClick:()=>{J(null),N(null),H(a=>a?.mode==="create"?null:{mode:"create"})},children:[(0,d.jsx)(X.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Add user"]}),children:[(0,d.jsx)("p",{role:"status",className:y?"rounded-md bg-ok-soft px-3 py-2 text-xs text-foreground":"sr-only",children:y}),(0,d.jsx)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsxs)("span",{className:"tnum text-xs text-muted-foreground",children:[n.length,"/",50]}),(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>void Q(),disabled:q,children:[(0,d.jsx)(j.A,{className:`h-3.5 w-3.5 ${q?"animate-spin":""}`,"aria-hidden":!0}),"Refresh"]})]})}),G?(0,d.jsx)(_,{api:b,csrfToken:e,existing:"edit"===G.mode?G.user:void 0,currentUsername:c,machines:f,machinesPending:i,onCancel:()=>H(null),onSaved:a=>{H(null),z(a),k(),Q()},onSessionLost:m},"edit"===G.mode?`edit-${G.user.username}`:"create"):null,(0,d.jsxs)("div",{className:"mt-4 flex min-w-0 flex-col gap-3",children:[s?(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,d.jsx)(B,{tone:"error",role:"alert",children:s}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>void Q(),children:"Try again"})]}):null,q&&0===n.length?(0,d.jsx)("p",{role:"status",className:"py-6 text-sm text-muted-foreground",children:"Loading browser users…"}):null,q||s||0!==n.length?null:(0,d.jsx)(p.p,{icon:h.A,note:"No browser users are stored yet."}),n.length>0?(0,d.jsx)("ul",{className:"divide-y divide-border border-t border-border",children:n.map(a=>{var b;let e=a.username===c,f=I?.username===a.username;return(0,d.jsxs)("li",{className:"min-w-0 py-3",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-start justify-between gap-x-4 gap-y-2",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"break-words text-sm font-medium",children:a.username}),e?(0,d.jsx)(A,{tone:"accent",children:"You"}):null,a.admin?(0,d.jsxs)(A,{tone:"ok",children:[(0,d.jsx)(l.A,{className:"h-3 w-3","aria-hidden":!0}),"Administrator"]}):(0,d.jsx)(A,{children:"Viewer"}),a.disabled?(0,d.jsx)(A,{tone:"warn",children:"Disabled"}):null]}),(0,d.jsx)("p",{className:"mt-1 break-words text-xs text-muted-foreground",title:"*"===a.machineIds?"All machines":a.machineIds.join(", "),children:"*"===(b=a.machineIds)?"All machines":0===b.length?"No machines":1===b.length?b[0]:`${b.length} machines`})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",className:w,"aria-expanded":G?.mode==="edit"&&G.user.username===a.username,onClick:()=>{N(null),J(null),H(G?.mode==="edit"&&G.user.username===a.username?null:{mode:"edit",user:a})},children:[(0,d.jsx)(Y.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),G?.mode==="edit"&&G.user.username===a.username?"Close editor":"Edit"]}),(0,d.jsxs)("button",{type:"button",className:w,"aria-expanded":f,onClick:()=>{H(null),N(null),J(f?null:a)},children:[(0,d.jsx)(Z.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Delete"]})]})]}),f?(0,d.jsxs)("div",{role:"alert",className:"mt-2 flex flex-wrap items-center gap-x-3 gap-y-2 rounded-md bg-crit-soft px-3 py-2",children:[(0,d.jsxs)("p",{className:"min-w-0 flex-1 text-xs text-foreground",children:["Delete ",(0,d.jsx)("strong",{className:"font-medium",children:a.username}),"? Their active sessions end immediately, and this cannot be undone."]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,d.jsx)("button",{type:"button",className:x,onClick:()=>void R(),disabled:K,children:K?"Deleting…":"Delete user"}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>J(null),disabled:K,children:"Cancel"})]})]}):null,f&&M?(0,d.jsx)("p",{role:"alert",className:"mt-2 text-xs text-crit",children:M}):null]},a.username)})}):null]})]})}function _(a){let{api:b,csrfToken:c,existing:e,currentUsername:f,machines:h,machinesPending:i,onCancel:j,onSaved:k,onSessionLost:l}=a,m=(0,g.useId)(),n=a=>`${m}-${a}`,o=n("heading"),[p,q]=(0,g.useState)(e?.username??""),[r,s]=(0,g.useState)(""),[x,A]=(0,g.useState)(!!e&&"*"===e.machineIds),[F,G]=(0,g.useState)(e&&"*"!==e.machineIds?[...e.machineIds]:[]),[H,J]=(0,g.useState)(e?.admin??!1),[K,M]=(0,g.useState)(e?.disabled??!1),[N,O]=(0,g.useState)({}),[R,S]=(0,g.useState)(null),[T,U]=(0,g.useState)(!1),V=(0,g.useRef)(null);(0,g.useRef)(!1);let W=[...h].sort((a,b)=>{let c=L(a).toLocaleLowerCase(),d=L(b).toLocaleLowerCase();return c.localeCompare(d)||a.machineId.localeCompare(b.machineId)}),X=function(a,b){if("*"===a)return[];let c=new Set(b);return a.filter(a=>!c.has(a))}(F,W.map(a=>a.machineId)),Y=x?"*":F,Z=e?.username===f,$=async a=>{if(a.preventDefault(),T)return;S(null);let d={username:e?.username??p,password:r,machineIds:Y,admin:H,disabled:K},f=function(a,b){let c={};if(I.test(a.username)||(c.username="Use 1–128 printable characters without spaces."),b.existing||0!==a.password.length?a.password.length>1024&&(c.password="Password must be at most 1024 characters."):c.password="Choose a password for the new user.","*"===a.machineIds);else if(Array.isArray(a.machineIds)){let b=new Set,d=2;for(let e of a.machineIds){if(!I.test(e)){c.scope="Every machine ID must be a valid identifier.";break}if((d+=e.length+3)>8192){c.scope="Keep the explicit machine list under 8192 bytes.";break}if(b.has(e)){c.scope="Machine scope contains a duplicate ID.";break}b.add(e)}}else c.scope="Choose all machines or an explicit list of machine IDs.";let d=c.username?"username":c.password?"password":c.scope?"scope":null;return{errors:c,firstInvalid:d}}(d,{existing:void 0!==e});if(O(f.errors),null!==f.firstInvalid){let a="username"===f.firstInvalid?n("username"):"password"===f.firstInvalid?n("password"):n("scope-all");document.getElementById(a)?.focus();return}U(!0);try{await b.saveUser({username:d.username,machineIds:d.machineIds,admin:H,disabled:K,...r.length>0?{password:r}:{}},c),s(""),k(e?`Updated ${e.username}.`:`Created ${d.username}. They can sign in with the password you set.`)}catch(a){if(D(a))return void l();S(E(a)?"Your account no longer has administrative access.":C(a,"Could not save that user."))}finally{U(!1)}};return(0,d.jsxs)("form",{"aria-labelledby":o,"aria-busy":T,className:"flex min-w-0 flex-col gap-4 border-t border-border py-4",onSubmit:a=>void $(a),children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsx)("div",{children:(0,d.jsx)("h3",{id:o,tabIndex:-1,className:"text-sm font-medium tracking-tight",children:e?`Edit ${e.username}`:"Add a browser user"})}),(0,d.jsx)("button",{type:"button",className:w,onClick:j,disabled:T,children:"Close"})]}),Z?(0,d.jsx)(B,{tone:"warn",role:"status",children:(0,d.jsxs)("span",{className:"flex items-start gap-2",children:[(0,d.jsx)(Q.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,d.jsx)("span",{children:"Account changes may sign you out."})]})}):null,R?(0,d.jsx)("div",{ref:V,tabIndex:-1,"aria-live":"assertive",children:(0,d.jsx)(B,{tone:"error",role:"alert",children:R})}):null,(0,d.jsxs)("div",{className:"grid min-w-0 gap-4 sm:grid-cols-2",children:[e?(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5",children:[(0,d.jsx)("span",{className:"text-xs font-medium text-foreground",children:"Username"}),(0,d.jsx)("p",{className:"tnum break-words rounded-md border border-border bg-card-strong px-3 py-2 text-sm",children:e.username})]}):(0,d.jsx)(y,{id:n("username"),label:"Username",error:N.username,children:(0,d.jsx)("input",{id:n("username"),name:"username",autoComplete:"username",value:p,onChange:a=>q(a.target.value),"aria-invalid":!!N.username||void 0,"aria-describedby":z(n("username"),N.username),className:t})}),(0,d.jsx)(y,{id:n("password"),label:e?"New password (optional)":"Password",error:N.password,children:(0,d.jsx)("input",{id:n("password"),name:"new-password",type:"password",autoComplete:"new-password",value:r,onChange:a=>s(a.target.value),"aria-invalid":!!N.password||void 0,"aria-describedby":z(n("password"),N.password),className:t})})]}),(0,d.jsxs)("fieldset",{className:"flex min-w-0 flex-col gap-2","aria-invalid":!!N.scope||void 0,"aria-describedby":N.scope?n("scope-error"):void 0,children:[(0,d.jsx)("legend",{className:"text-xs font-medium text-foreground",children:"Machine access"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-x-5 gap-y-2",children:[(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{id:n("scope-all"),type:"radio",name:n("scope"),checked:x,onChange:()=>A(!0)}),"All machines"]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{id:n("scope-selected"),type:"radio",name:n("scope"),checked:!x,onChange:()=>A(!1)}),"Selected machines"]})]}),x?null:(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-2 border-t border-border pt-2",children:[0===W.length?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:i?"Waiting for machines…":"No machines available."}):(0,d.jsx)("div",{className:"max-h-56 overflow-y-auto pr-1",children:(0,d.jsx)("ul",{className:"flex flex-col gap-1.5",children:W.map(a=>(0,d.jsxs)("li",{className:"flex items-start gap-2",children:[(0,d.jsx)("input",{id:n(`machine-${a.machineId}`),type:"checkbox",className:"mt-0.5",checked:F.includes(a.machineId),onChange:()=>G(b=>{var c;return c=a.machineId,b.includes(c)?b.filter(a=>a!==c):[...b,c]})}),(0,d.jsxs)("label",{htmlFor:n(`machine-${a.machineId}`),className:"min-w-0 text-xs text-foreground",children:[(0,d.jsx)("span",{className:"block break-words",children:L(a)}),(0,d.jsx)("span",{className:"tnum block break-all text-muted-foreground",children:a.machineId})]})]},a.machineId))})}),X.length>0?(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Other saved machines"}),(0,d.jsx)("ul",{className:"flex flex-wrap gap-1.5",children:X.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-xs",children:[(0,d.jsx)("span",{className:"tnum break-all",children:a}),(0,d.jsx)("button",{type:"button",className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-card-strong hover:text-foreground",onClick:()=>G(b=>b.filter(b=>b!==a)),"aria-label":`Remove ${a} from the machine scope`,children:(0,d.jsx)(P.A,{className:"h-3 w-3","aria-hidden":!0})})]},a))})]}):null]}),N.scope?(0,d.jsx)("p",{id:n("scope-error"),className:"text-xs text-crit",children:N.scope}):null]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2 border-t border-border pt-3",children:[(0,d.jsxs)("label",{className:"flex items-start gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:H,onChange:a=>J(a.target.checked)}),(0,d.jsxs)("span",{children:["Administrator",(0,d.jsx)("span",{className:"block text-muted-foreground",children:"Explicit administrative access. A wildcard machine scope alone never grants it."})]})]}),(0,d.jsxs)("label",{className:"flex items-start gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:K,onChange:a=>M(a.target.checked)}),(0,d.jsxs)("span",{children:["Disabled",(0,d.jsx)("span",{className:"block text-muted-foreground",children:"Blocks sign-in and ends active sessions. The account is kept for a later re-enable."})]})]})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("button",{type:"submit",className:u,disabled:T,children:T?"Saving…":e?"Save changes":"Create user"}),(0,d.jsx)("button",{type:"button",className:v,onClick:j,disabled:T,children:"Cancel"})]})]})}function aa(){let{session:a,machines:b,phase:c,retryConnection:e}=(0,s.M)(),t=(0,g.useMemo)(()=>(function(a={}){let b=a.fetchImpl??fetch;async function c(a,d={}){let e={Accept:"application/json"};void 0!==d.body&&(e["Content-Type"]="application/json"),void 0!==d.csrfToken&&(e["X-CSRF-Token"]=d.csrfToken);let f=await b(a,{method:d.method??"GET",headers:e,body:void 0===d.body?void 0:JSON.stringify(d.body),signal:d.signal,cache:"no-store",credentials:"same-origin",redirect:"error"}),g=await f.text(),h=null;if(g.length>0)try{h=JSON.parse(g)}catch{h=null}if(!f.ok)throw new m(f.status,function(a,b){if(null!==b&&"object"==typeof b){let a=b.error;if("string"==typeof a&&a.length>0&&a.length<=256)return a}return 400===a?"The request was not valid.":401===a?"Your session ended. Sign in again.":403===a?"Administrative access is required.":404===a?"That record no longer exists.":409===a?"That change conflicts with the current directory.":413===a?"The request was too large.":503===a?"Administration is temporarily unavailable.":"The hub could not complete that request."}(f.status,h));return h}return{async listUsers(a){let b=await c("/api/admin/users",{signal:a});if(!Array.isArray(b?.users))throw n();return b.users},async saveUser(a,b,d){await c("/api/admin/users",{method:"POST",body:a,csrfToken:b,signal:d})},async deleteUser(a,b,d){await c(`/api/admin/users?username=${encodeURIComponent(a)}`,{method:"DELETE",csrfToken:b,signal:d})},async listAudit(a=50,b){let d=Number.isSafeInteger(a)?Math.min(Math.max(a,1),1e3):50,e=await c(`/api/admin/audit?limit=${d}`,{signal:b});if(!Array.isArray(e?.events))throw n();return e.events},async listCollectors(a){let b=await c("/api/admin/collectors",{signal:a});if(!Array.isArray(b?.collectors))throw n();return b.collectors},async revokeCollector(a,b,d){await c("/api/admin/collectors",{method:"POST",body:{action:"revoke",collectorId:a},csrfToken:b,signal:d})},async createGrant(a,b,d){let e=await c("/api/admin/collector-grants",{method:"POST",body:a,csrfToken:b,signal:d});if("string"!=typeof e?.token||"string"!=typeof e.expiresAt)throw n();return{token:e.token,expiresAt:e.expiresAt}},async saveMachineMeta(a,b,d,e){await c(`/api/machines/meta?machineId=${encodeURIComponent(a)}`,{method:"POST",body:b,csrfToken:d,signal:e})}}})(),[]),[w,x]=(0,g.useState)(!1),[y,z]=(0,g.useState)(0),A="signed-in"===a.kind?`${a.user.username}:${a.user.csrfToken}`:a.kind,B=(0,g.useCallback)(()=>x(!0),[]),C=(0,g.useCallback)(()=>z(a=>a+1),[]),D=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(q.$E,{}),(0,d.jsx)(r.B,{})]});if("restoring"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsx)(p.Z,{title:"Checking session",className:"mx-auto my-12 max-w-md",children:(0,d.jsx)(p.p,{icon:h.A,note:"Checking your session…"})})});if("restore-failed"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Hub unreachable",className:"mx-auto my-12 max-w-md",children:[(0,d.jsx)(p.p,{icon:i.A,note:"The hub is unreachable right now."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsxs)("button",{type:"button",className:v,onClick:e,children:[(0,d.jsx)(j.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Try again"]})})]})});if("signed-out"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"expired"===c?"Session ended":"Sign in required",className:"mx-auto my-12 max-w-md",children:[(0,d.jsx)(p.p,{icon:h.A,note:"expired"===c?"Your session ended.":"Sign in required."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/login",className:u,children:"Sign in"})})]})});if("auth-unavailable"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsx)(p.Z,{title:"Sign-in unavailable",className:"mx-auto my-12 max-w-md",children:(0,d.jsx)(p.p,{icon:k.A,note:"Browser sign-in is not configured on this hub."})})});if("expired"===c)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Session ended",className:"mx-auto my-12 max-w-md",children:[(0,d.jsx)(p.p,{icon:k.A,note:"Your session ended."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/login",className:u,children:"Sign in"})})]})});if(!0!==a.user.admin)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Administrator access required",className:"mx-auto my-12 max-w-lg",children:[(0,d.jsx)(p.p,{icon:k.A,note:`You are signed in as ${a.user.username}, but this account is not an administrator.`}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/",className:v,children:"Back to fleet"})})]})});if(w)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Session ended",className:"mx-auto my-12 max-w-lg",children:[(0,d.jsx)(p.p,{icon:k.A,note:"Your administrative session is no longer valid."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/login",className:u,children:"Sign in again"})})]})});let E=b.map(a=>({machineId:a.machineId,hostname:a.hostname,displayName:a.displayName,tags:a.tags})),F="connecting"===c||"idle"===c;return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-5",children:[(0,d.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-x-6 gap-y-3",children:(0,d.jsxs)("span",{className:"inline-flex min-w-0 max-w-full flex-wrap items-center gap-1.5 rounded-full bg-selected px-3 py-1 text-xs font-medium text-foreground",children:[(0,d.jsx)(l.A,{className:"h-3.5 w-3.5 shrink-0 text-accent","aria-hidden":!0}),(0,d.jsxs)("span",{className:"min-w-0 break-all",children:["Administrator \xb7 ",a.user.username]})]})}),(0,d.jsxs)("div",{className:"grid min-w-0 gap-5 xl:grid-cols-12",children:[(0,d.jsx)("div",{className:"min-w-0 xl:col-span-7",children:(0,d.jsx)($,{api:t,username:a.user.username,csrfToken:a.user.csrfToken,machines:E,machinesPending:F,onAuditChange:C,onSessionLost:B})}),(0,d.jsx)("div",{className:"min-w-0 xl:col-span-5",children:(0,d.jsx)(W,{api:t,csrfToken:a.user.csrfToken,machines:E,machinesPending:F,onSessionLost:B})}),(0,d.jsx)("div",{id:"collectors",className:"min-w-0 scroll-mt-6 xl:col-span-12",children:(0,d.jsx)(T,{api:t,csrfToken:a.user.csrfToken,sessionKey:A,machines:E,onAuditChange:C,onSessionLost:B})}),(0,d.jsx)("div",{className:"min-w-0 xl:col-span-12",children:(0,d.jsx)(M,{api:t,revision:y,onSessionLost:B})})]})]})})}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},22685:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},33947:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},38522:a=>{"use strict";a.exports=require("node:zlib")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},51277:(a,b,c)=>{Promise.resolve().then(c.bind(c,2902))},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75245:(a,b,c)=>{Promise.resolve().then(c.bind(c,9479))},76013:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>q,handler:()=>s,routeModule:()=>r});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,76537))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),o={children:["",{children:["administration",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,97107))),"/home/triet/Project/rigscope/src/app/administration/page.tsx"]}]},{"global-error":[n,"next/dist/client/components/builtin/global-error.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,59645)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}},[]]},{layout:[i,"/home/triet/Project/rigscope/src/app/layout.tsx"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,59645)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}},[]]}.children,p=(0,e.H)({tree:o,page:"/administration/page",pathname:"/administration",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),q=p.__next_app__,r=p.routeModule,s=p.handler},96970:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},97107:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,metadata:()=>f});var d=c(5735),e=c(2902);let f={title:"Administration"};function g(){return(0,d.jsx)(e.AdministrationView,{})}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[266,430,721,161,751],()=>b(b.s=76013));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=693,a.ids=[693],a.modules={2902:(a,b,c)=>{"use strict";c.d(b,{AdministrationView:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call AdministrationView() from the server but AdministrationView 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/admin/administration-view.tsx","AdministrationView")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},8806:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},9479:(a,b,c)=>{"use strict";c.d(b,{AdministrationView:()=>aa});var d=c(48249),e=c(2116),f=c.n(e),g=c(67484),h=c(50132),i=c(49187),j=c(31742),k=c(93484),l=c(96970);class m extends Error{status;constructor(a,b){super(b),this.name="AdminApiError",this.status=a}}function n(){return new m(502,"The hub returned an unexpected response.")}var o=c(22091),p=c(22338),q=c(81232),r=c(75006),s=c(58910);let t="w-full min-w-0 rounded-md border border-border bg-background px-3 py-2 text-base text-foreground placeholder:text-muted-foreground aria-[invalid=true]:border-crit sm:text-sm",u="inline-flex min-h-9 items-center justify-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-accent-foreground transition-colors hover:bg-accent/90 disabled:cursor-not-allowed disabled:opacity-50",v="inline-flex min-h-9 items-center justify-center gap-1.5 rounded-md border border-border px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-card-strong disabled:cursor-not-allowed disabled:opacity-50",w="inline-flex min-h-8 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-card-strong hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",x="inline-flex min-h-9 items-center justify-center gap-1.5 rounded-md border border-crit px-3 py-1.5 text-xs font-medium text-crit transition-colors hover:bg-crit-soft disabled:cursor-not-allowed disabled:opacity-50";function y({id:a,label:b,error:c,children:e}){return(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5",children:[(0,d.jsx)("label",{htmlFor:a,className:"text-xs font-medium text-foreground",children:b}),e,c?(0,d.jsx)("p",{id:`${a}-error`,className:"text-xs text-crit",children:c}):null]})}function z(a,b){if(b)return`${a}-error`}function A({children:a,tone:b="neutral"}){return(0,d.jsx)("span",{className:`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium ${{neutral:"border border-border text-muted-foreground",accent:"bg-selected text-foreground",ok:"bg-ok-soft text-foreground",warn:"bg-warn-soft text-foreground",crit:"bg-crit-soft text-foreground"}[b]}`,children:a})}function B({children:a,tone:b="info",role:c="status"}){return(0,d.jsx)("p",{role:c,className:`rounded-md px-3 py-2 text-xs ${{info:"text-muted-foreground",error:"bg-crit-soft text-foreground",success:"bg-ok-soft text-foreground",warn:"bg-warn-soft text-foreground"}[b]}`,children:a})}function C(a,b){return a instanceof m?a.message:b}function D(a){return a instanceof m&&401===a.status}function E(a){return a instanceof m&&403===a.status}function F(a){return"object"==typeof a&&null!==a&&"AbortError"===a.name}var G=c(65366);let H=(0,G.A)("ScrollText",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]),I=/^[\x21-\x7e]{1,128}$/,J=/[\u0000-\u001f\u007f]/;function K(a){let b=new Date(a);return Number.isFinite(b.getTime())?b.toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"}):"Unknown time"}function L(a){let b=a.displayName?.trim();if(b)return b;let c=a.hostname?.trim();return c||a.machineId}function M(a){let{api:b,revision:c,onSessionLost:e}=a,[f,h]=(0,g.useState)([]),[i,k]=(0,g.useState)(!0),[l,m]=(0,g.useState)(null),n=(0,g.useRef)(null),o=(0,g.useCallback)(async()=>{n.current?.abort();let a=new AbortController;n.current=a,k(!0),m(null);try{let c=await b.listAudit(50,a.signal);a.signal.aborted||h(c)}catch(b){if(a.signal.aborted||F(b))return;if(D(b))return void e();m(E(b)?"Administrator access is required to read the audit log.":C(b,"Could not load the audit log."))}finally{a.signal.aborted||k(!1)}},[b,e]);return(0,d.jsxs)(p.Z,{title:"Audit log",className:"min-w-0",action:(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>void o(),disabled:i,children:[(0,d.jsx)(j.A,{className:`h-3.5 w-3.5 ${i?"animate-spin":""}`,"aria-hidden":!0}),"Refresh"]}),children:[(0,d.jsx)("div",{className:"flex flex-wrap items-baseline justify-between gap-2",children:(0,d.jsxs)("span",{className:"tnum text-xs text-muted-foreground",children:[f.length," event",1===f.length?"":"s"]})}),l?(0,d.jsxs)("div",{className:"mt-3 flex flex-wrap items-center justify-between gap-2",children:[(0,d.jsx)(B,{tone:"error",role:"alert",children:l}),(0,d.jsx)("button",{type:"button",className:w,onClick:()=>void o(),children:"Try again"})]}):null,i&&0===f.length&&!l?(0,d.jsx)("p",{role:"status",className:"py-6 text-sm text-muted-foreground",children:"Loading audit events…"}):null,i||l||0!==f.length?null:(0,d.jsx)(p.p,{icon:H,note:"No administrative changes recorded yet."}),f.length>0?(0,d.jsx)("ol",{className:"mt-2 max-h-96 divide-y divide-border overflow-y-auto border-t border-border",children:f.map((a,b)=>(0,d.jsxs)("li",{className:"flex min-w-0 flex-wrap items-baseline gap-x-3 gap-y-1 py-2.5 text-xs",children:[(0,d.jsx)("time",{dateTime:a.at,className:"tnum shrink-0 text-muted-foreground",children:K(a.at)}),(0,d.jsx)("span",{className:"font-medium text-foreground",children:function(a){switch(a){case"user.create":return"Created user";case"user.update":return"Updated access";case"user.update-password":return"Changed password";case"user.delete":return"Deleted user";default:return a.replace(/[-_.]+/g," ")}}(a.action)}),(0,d.jsxs)("span",{className:"min-w-0 break-all text-muted-foreground",children:[a.target," ",(0,d.jsx)("span",{"aria-hidden":!0,children:"\xb7"})," by ",a.actor]})]},`${a.at}-${a.actor}-${a.action}-${a.target}-${b}`))}):null]})}let N=(0,G.A)("ShieldOff",[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71",key:"1jlk70"}],["path",{d:"M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264",key:"18rp1v"}]]),O=(0,G.A)("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var P=c(104),Q=c(12421);let R=(0,G.A)("ClipboardCopy",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]),S=[{value:3e5,label:"5 minutes"},{value:6e5,label:"10 minutes"},{value:9e5,label:"15 minutes"}];function T(a){let{api:b,csrfToken:c,sessionKey:e,machines:f,onAuditChange:h,onSessionLost:i}=a,k=(0,g.useId)(),l=a=>`${k}-${a}`,[m,n]=(0,g.useState)([]),[o,q]=(0,g.useState)(!0),[r,s]=(0,g.useState)(null),[z,G]=(0,g.useState)(""),[H,I]=(0,g.useState)(""),[J,M]=(0,g.useState)(9e5),[T,U]=(0,g.useState)(null),[V,W]=(0,g.useState)(null),[X,Y]=(0,g.useState)(!1),[Z,$]=(0,g.useState)(""),[_,aa]=(0,g.useState)(null),[ab,ac]=(0,g.useState)(!1),[ad,ae]=(0,g.useState)(null),af=(0,g.useRef)(null),ag=(0,g.useRef)(!0),ah=(0,g.useRef)(null),ai=(0,g.useRef)(null),aj=(0,g.useCallback)(async()=>{af.current?.abort();let a=new AbortController;af.current=a,q(!0),s(null);try{let c=await b.listCollectors(a.signal);a.signal.aborted||n(c)}catch(b){if(a.signal.aborted||F(b))return;if(D(b))return void i();s(E(b)?"Administrator access is required to inspect collector mappings.":C(b,"Could not load the collector registry."))}finally{a.signal.aborted||q(!1)}},[b,i]),ak=m.filter(a=>!a.revoked),al=""!==H,am=T?function(a,b="https://your-hub"){let c=new URL(b);if(!["https:","http:"].includes(c.protocol)||c.username||c.password||c.search||c.hash)throw Error("Invalid hub origin");let d=c.origin.replace(/'/g,"%27");return{command:`rigscope connect '${d}'${"replacement"===a?" --replace":""}`,note:"replacement"===a?"Paste the grant at the prompt. The old credential stays active until replacement succeeds.":"Paste the grant at the prompt, then run rigscope start."}}(T.mode,window.location.origin):null,an=async()=>{if(!X){W(null),Y(!0);try{let a=await b.createGrant({ttlMs:J,...al?{replaceMachineId:H}:{}},c);if(!ag.current)return;U({...a,mode:al?"replacement":"new"}),$(""),G("Grant created. Copy before leaving."),h()}catch(a){if(!ag.current)return;if(D(a))return void i();if(E(a))return void W(al?"You do not have access to that machine, so a replacement grant cannot be created.":"A new installation needs a hub administrator with all-machine scope. Choose an existing mapping for a replacement grant, or ask the hub owner to widen your scope.");W(C(a,"Could not create an enrollment grant."))}finally{ag.current&&Y(!1)}}},ao=async()=>{if(T)try{if(!navigator.clipboard?.writeText)throw Error("clipboard unavailable");await navigator.clipboard.writeText(T.token),$("Grant copied to the clipboard.")}catch{$("Copy failed. Select the grant field and copy it manually.")}},ap=async()=>{if(am)try{if(!navigator.clipboard?.writeText)throw Error("clipboard unavailable");await navigator.clipboard.writeText(am.command),$("Command copied.")}catch{$("Copy failed. Select the command and copy it manually.")}},aq=async()=>{if(_&&!ab){ac(!0),ae(null);try{if(await b.revokeCollector(_.collectorId,c),!ag.current)return;let a=`${_.collectorId} on ${_.machineId}`;aa(null),G(`Revoked ${a}. Its live stream was disconnected.`),h(),await aj()}catch(a){if(!ag.current)return;if(D(a))return void i();ae(E(a)?"Your account does not have access to that collector's machine.":C(a,"Could not revoke that collector."))}finally{ag.current&&ac(!1)}}},ar=a=>{let b=f.find(b=>b.machineId===a);return b?L(b):a};return(0,d.jsxs)(p.Z,{title:"Collectors",className:"min-w-0",action:(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>void aj(),disabled:o,children:[(0,d.jsx)(j.A,{className:`h-3.5 w-3.5 ${o?"animate-spin":""}`,"aria-hidden":!0}),"Refresh"]}),children:[(0,d.jsx)("p",{role:"status",className:z?"mb-3 rounded-md bg-ok-soft px-3 py-2 text-xs text-foreground":"sr-only",children:z}),r?(0,d.jsxs)("div",{className:"mb-3 flex flex-wrap items-center justify-between gap-2",children:[(0,d.jsx)(B,{tone:"error",role:"alert",children:r}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>void aj(),children:"Try again"})]}):null,(0,d.jsxs)("div",{className:"grid min-w-0 gap-6 lg:grid-cols-2",children:[(0,d.jsxs)("section",{"aria-labelledby":l("registry-heading"),className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-baseline justify-between gap-2",children:[(0,d.jsx)("h3",{id:l("registry-heading"),className:"text-sm font-medium tracking-tight",children:"Registry"}),(0,d.jsxs)("span",{className:"tnum text-xs text-muted-foreground",children:[ak.length," active / ",m.length," total"]})]}),o&&0===m.length?(0,d.jsx)("p",{role:"status",className:"py-6 text-sm text-muted-foreground",children:"Loading collector mappings…"}):null,o||r||0!==m.length?null:(0,d.jsx)(p.p,{icon:N,note:"No collector mappings are visible."}),m.length>0?(0,d.jsx)("ul",{className:"mt-2 divide-y divide-border border-t border-border",children:m.map(a=>{let b=_?.collectorId===a.collectorId;return(0,d.jsxs)("li",{className:"min-w-0 py-3",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-start justify-between gap-x-4 gap-y-2",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"break-words text-sm font-medium",children:ar(a.machineId)}),a.revoked?(0,d.jsx)(A,{tone:"crit",children:"Revoked"}):(0,d.jsx)(A,{tone:"ok",children:"Active"})]}),(0,d.jsxs)("dl",{className:"mt-1 flex flex-col gap-0.5 text-xs text-muted-foreground",children:[(0,d.jsxs)("div",{className:"flex min-w-0 gap-1.5",children:[(0,d.jsx)("dt",{className:"shrink-0",children:"Machine"}),(0,d.jsx)("dd",{className:"tnum break-all",children:a.machineId})]}),(0,d.jsxs)("div",{className:"flex min-w-0 gap-1.5",children:[(0,d.jsx)("dt",{className:"shrink-0",children:"Collector"}),(0,d.jsx)("dd",{className:"tnum break-all",children:a.collectorId})]}),(0,d.jsxs)("div",{className:"flex min-w-0 gap-1.5",children:[(0,d.jsx)("dt",{className:"shrink-0",children:"Updated"}),(0,d.jsx)("dd",{children:K(a.updatedAt)})]})]})]}),a.revoked?null:(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>{I(a.machineId),W(null),requestAnimationFrame(()=>ai.current?.focus())},children:[(0,d.jsx)(O,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Replacement grant"]}),(0,d.jsxs)("button",{type:"button",className:w,"aria-expanded":b,onClick:()=>{ae(null),aa(b?null:a)},children:[(0,d.jsx)(N,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Revoke"]})]})]}),b?(0,d.jsxs)("div",{role:"alert",className:"mt-2 flex flex-wrap items-center gap-x-3 gap-y-2 rounded-md bg-crit-soft px-3 py-2",children:[(0,d.jsxs)("p",{className:"min-w-0 flex-1 text-xs text-foreground",children:["Revoke ",(0,d.jsx)("strong",{className:"font-medium",children:a.collectorId})," ","on ",(0,d.jsx)("strong",{className:"font-medium",children:ar(a.machineId)}),"? This disconnects the collector and invalidates its credential."]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,d.jsx)("button",{type:"button",className:x,onClick:()=>void aq(),disabled:ab,children:ab?"Revoking…":"Revoke collector"}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>aa(null),disabled:ab,children:"Cancel"})]})]}):null,b&&ad?(0,d.jsx)("p",{role:"alert",className:"mt-2 text-xs text-crit",children:ad}):null]},a.collectorId)})}):null]}),(0,d.jsxs)("section",{"aria-labelledby":l("grant-heading"),className:"flex min-w-0 flex-col gap-3 border-t border-border pt-5 lg:border-l lg:border-t-0 lg:pl-6 lg:pt-0",children:[(0,d.jsx)("div",{children:(0,d.jsx)("h3",{id:l("grant-heading"),className:"text-sm font-medium tracking-tight",children:"Add machine"})}),(0,d.jsx)(y,{id:l("target"),label:"Enrollment target",children:(0,d.jsxs)("select",{id:l("target"),value:H,onChange:a=>{I(a.target.value),W(null)},className:t,children:[(0,d.jsx)("option",{value:"",children:"New machine"}),ak.map(a=>(0,d.jsxs)("option",{value:a.machineId,children:["Replacement \xb7 ",ar(a.machineId)," \xb7 ",a.collectorId]},a.collectorId))]})}),(0,d.jsx)(y,{id:l("ttl"),label:"Grant lifetime",children:(0,d.jsx)("select",{id:l("ttl"),value:J,onChange:a=>M(Number(a.target.value)),className:t,children:S.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))})}),V?(0,d.jsx)(B,{tone:"error",role:"alert",children:V}):null,(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,d.jsxs)("button",{ref:ai,type:"button",className:u,onClick:()=>void an(),disabled:X,"aria-busy":X,children:[(0,d.jsx)(O,{className:"h-3.5 w-3.5","aria-hidden":!0}),X?"Creating…":al?"Create replacement grant":"Create connection grant"]})}),T&&am?(0,d.jsxs)("section",{"aria-labelledby":l("grant-reveal-heading"),className:"flex min-w-0 flex-col gap-3 border-t border-border pt-3",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsx)("h4",{id:l("grant-reveal-heading"),className:"text-sm font-medium",children:"Copy this grant now"}),(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>{U(null),$(""),W(null),G("Grant dismissed."),requestAnimationFrame(()=>ai.current?.focus())},"aria-label":"Dismiss enrollment grant",children:[(0,d.jsx)(P.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Dismiss"]})]}),(0,d.jsx)(B,{tone:"warn",role:"alert",children:(0,d.jsxs)("span",{className:"flex items-start gap-2",children:[(0,d.jsx)(Q.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,d.jsxs)("span",{children:["Single-use grant \xb7 expires"," ",(0,d.jsx)("time",{dateTime:T.expiresAt,children:K(T.expiresAt)}),". Copy before leaving."]})]})}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5",children:[(0,d.jsx)("label",{htmlFor:l("grant-token"),className:"text-xs font-medium",children:"One-time grant"}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap gap-1.5",children:[(0,d.jsx)("input",{ref:ah,id:l("grant-token"),readOnly:!0,autoComplete:"off",spellCheck:!1,value:T.token,onFocus:a=>a.currentTarget.select(),className:`${t} tnum min-w-0 flex-1 break-all`}),(0,d.jsxs)("button",{type:"button",className:v,onClick:()=>void ao(),children:[(0,d.jsx)(R,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Copy grant"]})]}),(0,d.jsx)("p",{className:"sr-only",role:"status",children:Z}),Z?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:Z}):null]}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"text-xs font-medium",children:"Run on the new machine"}),(0,d.jsx)("pre",{className:"mt-1.5 overflow-x-auto whitespace-pre-wrap break-all rounded-md bg-card-strong p-3 text-xs text-foreground",children:(0,d.jsx)("code",{children:am.command})}),(0,d.jsx)("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:(0,d.jsxs)("button",{type:"button",className:v,onClick:()=>void ap(),children:[(0,d.jsx)(R,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Copy command"]})}),(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground",children:am.note})]})]}):null]})]})]})}var U=c(89313);let V=(0,G.A)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);function W(a){let{api:b,csrfToken:c,machines:e,machinesPending:f,onSessionLost:h}=a,i=(0,g.useId)(),k=a=>`${i}-${a}`,[l,m]=(0,g.useState)(""),[n,o]=(0,g.useState)(""),[q,r]=(0,g.useState)(""),[s,v]=(0,g.useState)(!1),[w,x]=(0,g.useState)({}),[A,F]=(0,g.useState)(null),[G,H]=(0,g.useState)(!1),[I,K]=(0,g.useState)(""),M=(0,g.useRef)(null),N=e.find(a=>a.machineId===l),O=async a=>{let d,e,f;if(a.preventDefault(),!N||G)return;F(null);let g=(d=n.trim(),e={},d.length>128?e.displayName="Display name must be at most 128 characters.":J.test(d)&&(e.displayName="Display name cannot contain control characters."),null!==(f=function(a){let b=a.split(",").map(a=>a.trim()).filter(a=>a.length>0),c=[],d=new Set;for(let a of b){if(a.length>64)return{tags:c,error:"Each tag must be at most 64 characters."};if(J.test(a))return{tags:c,error:"Tags cannot contain control characters."};d.has(a)||(d.add(a),c.push(a))}return c.length>32?{tags:c,error:"Use at most 32 tags."}:{tags:c,error:null}}(q)).error&&(e.tags=f.error),{displayName:0===d.length?null:d,tags:f.tags,errors:e});if(x(g.errors),g.errors.displayName)return void document.getElementById(k("name"))?.focus();if(g.errors.tags)return void document.getElementById(k("tags"))?.focus();H(!0);try{await b.saveMachineMeta(N.machineId,{displayName:g.displayName,tags:g.tags},c),o(g.displayName??""),r(g.tags.join(", ")),v(!1),K(`Saved metadata for ${L(N)}. Fleet and machine views update from the live stream.`)}catch(a){if(D(a))return void h();F(E(a)?"You do not have access to this machine, so its metadata cannot be changed.":C(a,"Could not save machine metadata."))}finally{H(!1)}};return(0,d.jsxs)(p.Z,{title:"Machine metadata",className:"min-w-0",children:[(0,d.jsx)("p",{role:"status",className:I?"mb-3 rounded-md bg-ok-soft px-3 py-2 text-xs text-foreground":"sr-only",children:I}),0===e.length?(0,d.jsx)(p.p,{icon:U.A,note:f?"Waiting for the live machine list…":"No machines are visible to your account."}):(0,d.jsxs)("form",{"aria-busy":G,className:"flex min-w-0 flex-col gap-4",onSubmit:a=>void O(a),children:[(0,d.jsx)(y,{id:k("machine"),label:"Machine",children:(0,d.jsx)("select",{id:k("machine"),value:l,onChange:a=>{var b;let c;return b=a.target.value,c=e.find(a=>a.machineId===b),void(m(b),o(c?.displayName??""),r((c?.tags??[]).join(", ")),v(!1),x({}),F(null),K(""))},className:t,children:e.map(a=>(0,d.jsx)("option",{value:a.machineId,children:L(a)},a.machineId))})}),(0,d.jsx)(y,{id:k("name"),label:"Display name",error:w.displayName,children:(0,d.jsx)("input",{id:k("name"),placeholder:N?.hostname||"Hostname",maxLength:128,value:n,onChange:a=>{o(a.target.value),v(!0)},"aria-invalid":!!w.displayName||void 0,"aria-describedby":z(k("name"),w.displayName),className:t})}),(0,d.jsx)(y,{id:k("tags"),label:"Tags (comma-separated)",error:w.tags,children:(0,d.jsx)("input",{id:k("tags"),value:q,onChange:a=>{r(a.target.value),v(!0)},"aria-invalid":!!w.tags||void 0,"aria-describedby":z(k("tags"),w.tags),className:t})}),A?(0,d.jsx)("div",{ref:M,tabIndex:-1,"aria-live":"assertive",children:(0,d.jsx)(B,{tone:"error",role:"alert",children:A})}):null,(0,d.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:(0,d.jsx)("button",{type:"submit",className:u,disabled:G||!s,children:G?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.A,{className:"h-3.5 w-3.5 animate-spin","aria-hidden":!0}),"Saving…"]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(V,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Save metadata"]})})})]})]})}var X=c(8806),Y=c(33947),Z=c(22685);function $(a){let{api:b,username:c,csrfToken:e,machines:f,machinesPending:i,onAuditChange:k,onSessionLost:m}=a,[n,o]=(0,g.useState)([]),[q,r]=(0,g.useState)(!0),[s,t]=(0,g.useState)(null),[y,z]=(0,g.useState)(""),[G,H]=(0,g.useState)(null),[I,J]=(0,g.useState)(null),[K,L]=(0,g.useState)(!1),[M,N]=(0,g.useState)(null),O=(0,g.useRef)(null),P=(0,g.useRef)(!0),Q=(0,g.useCallback)(async()=>{O.current?.abort();let a=new AbortController;O.current=a,r(!0),t(null);try{let c=await b.listUsers(a.signal);a.signal.aborted||o(c)}catch(b){if(a.signal.aborted||F(b))return;if(D(b))return void m();t(E(b)?"Administrator access is required. If your access just changed, sign in again.":C(b,"Could not load the browser user directory."))}finally{a.signal.aborted||r(!1)}},[b,m]),R=async()=>{if(I&&!K){L(!0),N(null);try{if(await b.deleteUser(I.username,e),!P.current)return;let a=I.username;J(null),z(`Deleted user ${a}. Any active sessions were ended.`),k(),await Q()}catch(a){if(!P.current)return;if(D(a))return void m();N(E(a)?"Your account no longer has administrative access.":C(a,"Could not delete that user."))}finally{P.current&&L(!1)}}};return(0,d.jsxs)(p.Z,{title:"Browser users",className:"min-w-0",action:(0,d.jsxs)("button",{type:"button",className:u,"aria-expanded":G?.mode==="create",onClick:()=>{J(null),N(null),H(a=>a?.mode==="create"?null:{mode:"create"})},children:[(0,d.jsx)(X.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Add user"]}),children:[(0,d.jsx)("p",{role:"status",className:y?"rounded-md bg-ok-soft px-3 py-2 text-xs text-foreground":"sr-only",children:y}),(0,d.jsx)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsxs)("span",{className:"tnum text-xs text-muted-foreground",children:[n.length,"/",50]}),(0,d.jsxs)("button",{type:"button",className:w,onClick:()=>void Q(),disabled:q,children:[(0,d.jsx)(j.A,{className:`h-3.5 w-3.5 ${q?"animate-spin":""}`,"aria-hidden":!0}),"Refresh"]})]})}),G?(0,d.jsx)(_,{api:b,csrfToken:e,existing:"edit"===G.mode?G.user:void 0,currentUsername:c,machines:f,machinesPending:i,onCancel:()=>H(null),onSaved:a=>{H(null),z(a),k(),Q()},onSessionLost:m},"edit"===G.mode?`edit-${G.user.username}`:"create"):null,(0,d.jsxs)("div",{className:"mt-4 flex min-w-0 flex-col gap-3",children:[s?(0,d.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,d.jsx)(B,{tone:"error",role:"alert",children:s}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>void Q(),children:"Try again"})]}):null,q&&0===n.length?(0,d.jsx)("p",{role:"status",className:"py-6 text-sm text-muted-foreground",children:"Loading browser users…"}):null,q||s||0!==n.length?null:(0,d.jsx)(p.p,{icon:h.A,note:"No browser users are stored yet."}),n.length>0?(0,d.jsx)("ul",{className:"divide-y divide-border border-t border-border",children:n.map(a=>{var b;let e=a.username===c,f=I?.username===a.username;return(0,d.jsxs)("li",{className:"min-w-0 py-3",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-start justify-between gap-x-4 gap-y-2",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"break-words text-sm font-medium",children:a.username}),e?(0,d.jsx)(A,{tone:"accent",children:"You"}):null,a.admin?(0,d.jsxs)(A,{tone:"ok",children:[(0,d.jsx)(l.A,{className:"h-3 w-3","aria-hidden":!0}),"Administrator"]}):(0,d.jsx)(A,{children:"Viewer"}),a.disabled?(0,d.jsx)(A,{tone:"warn",children:"Disabled"}):null]}),(0,d.jsx)("p",{className:"mt-1 break-words text-xs text-muted-foreground",title:"*"===a.machineIds?"All machines":a.machineIds.join(", "),children:"*"===(b=a.machineIds)?"All machines":0===b.length?"No machines":1===b.length?b[0]:`${b.length} machines`})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",className:w,"aria-expanded":G?.mode==="edit"&&G.user.username===a.username,onClick:()=>{N(null),J(null),H(G?.mode==="edit"&&G.user.username===a.username?null:{mode:"edit",user:a})},children:[(0,d.jsx)(Y.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),G?.mode==="edit"&&G.user.username===a.username?"Close editor":"Edit"]}),(0,d.jsxs)("button",{type:"button",className:w,"aria-expanded":f,onClick:()=>{H(null),N(null),J(f?null:a)},children:[(0,d.jsx)(Z.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Delete"]})]})]}),f?(0,d.jsxs)("div",{role:"alert",className:"mt-2 flex flex-wrap items-center gap-x-3 gap-y-2 rounded-md bg-crit-soft px-3 py-2",children:[(0,d.jsxs)("p",{className:"min-w-0 flex-1 text-xs text-foreground",children:["Delete ",(0,d.jsx)("strong",{className:"font-medium",children:a.username}),"? Their active sessions end immediately, and this cannot be undone."]}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,d.jsx)("button",{type:"button",className:x,onClick:()=>void R(),disabled:K,children:K?"Deleting…":"Delete user"}),(0,d.jsx)("button",{type:"button",className:v,onClick:()=>J(null),disabled:K,children:"Cancel"})]})]}):null,f&&M?(0,d.jsx)("p",{role:"alert",className:"mt-2 text-xs text-crit",children:M}):null]},a.username)})}):null]})]})}function _(a){let{api:b,csrfToken:c,existing:e,currentUsername:f,machines:h,machinesPending:i,onCancel:j,onSaved:k,onSessionLost:l}=a,m=(0,g.useId)(),n=a=>`${m}-${a}`,o=n("heading"),[p,q]=(0,g.useState)(e?.username??""),[r,s]=(0,g.useState)(""),[x,A]=(0,g.useState)(!!e&&"*"===e.machineIds),[F,G]=(0,g.useState)(e&&"*"!==e.machineIds?[...e.machineIds]:[]),[H,J]=(0,g.useState)(e?.admin??!1),[K,M]=(0,g.useState)(e?.disabled??!1),[N,O]=(0,g.useState)({}),[R,S]=(0,g.useState)(null),[T,U]=(0,g.useState)(!1),V=(0,g.useRef)(null);(0,g.useRef)(!1);let W=[...h].sort((a,b)=>{let c=L(a).toLocaleLowerCase(),d=L(b).toLocaleLowerCase();return c.localeCompare(d)||a.machineId.localeCompare(b.machineId)}),X=function(a,b){if("*"===a)return[];let c=new Set(b);return a.filter(a=>!c.has(a))}(F,W.map(a=>a.machineId)),Y=x?"*":F,Z=e?.username===f,$=async a=>{if(a.preventDefault(),T)return;S(null);let d={username:e?.username??p,password:r,machineIds:Y,admin:H,disabled:K},f=function(a,b){let c={};if(I.test(a.username)||(c.username="Use 1–128 printable characters without spaces."),b.existing||0!==a.password.length?a.password.length>1024&&(c.password="Password must be at most 1024 characters."):c.password="Choose a password for the new user.","*"===a.machineIds);else if(Array.isArray(a.machineIds)){let b=new Set,d=2;for(let e of a.machineIds){if(!I.test(e)){c.scope="Every machine ID must be a valid identifier.";break}if((d+=e.length+3)>8192){c.scope="Keep the explicit machine list under 8192 bytes.";break}if(b.has(e)){c.scope="Machine scope contains a duplicate ID.";break}b.add(e)}}else c.scope="Choose all machines or an explicit list of machine IDs.";let d=c.username?"username":c.password?"password":c.scope?"scope":null;return{errors:c,firstInvalid:d}}(d,{existing:void 0!==e});if(O(f.errors),null!==f.firstInvalid){let a="username"===f.firstInvalid?n("username"):"password"===f.firstInvalid?n("password"):n("scope-all");document.getElementById(a)?.focus();return}U(!0);try{await b.saveUser({username:d.username,machineIds:d.machineIds,admin:H,disabled:K,...r.length>0?{password:r}:{}},c),s(""),k(e?`Updated ${e.username}.`:`Created ${d.username}. They can sign in with the password you set.`)}catch(a){if(D(a))return void l();S(E(a)?"Your account no longer has administrative access.":C(a,"Could not save that user."))}finally{U(!1)}};return(0,d.jsxs)("form",{"aria-labelledby":o,"aria-busy":T,className:"flex min-w-0 flex-col gap-4 border-t border-border py-4",onSubmit:a=>void $(a),children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-2",children:[(0,d.jsx)("div",{children:(0,d.jsx)("h3",{id:o,tabIndex:-1,className:"text-sm font-medium tracking-tight",children:e?`Edit ${e.username}`:"Add a browser user"})}),(0,d.jsx)("button",{type:"button",className:w,onClick:j,disabled:T,children:"Close"})]}),Z?(0,d.jsx)(B,{tone:"warn",role:"status",children:(0,d.jsxs)("span",{className:"flex items-start gap-2",children:[(0,d.jsx)(Q.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,d.jsx)("span",{children:"Account changes may sign you out."})]})}):null,R?(0,d.jsx)("div",{ref:V,tabIndex:-1,"aria-live":"assertive",children:(0,d.jsx)(B,{tone:"error",role:"alert",children:R})}):null,(0,d.jsxs)("div",{className:"grid min-w-0 gap-4 sm:grid-cols-2",children:[e?(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5",children:[(0,d.jsx)("span",{className:"text-xs font-medium text-foreground",children:"Username"}),(0,d.jsx)("p",{className:"tnum break-words rounded-md border border-border bg-card-strong px-3 py-2 text-sm",children:e.username})]}):(0,d.jsx)(y,{id:n("username"),label:"Username",error:N.username,children:(0,d.jsx)("input",{id:n("username"),name:"username",autoComplete:"username",value:p,onChange:a=>q(a.target.value),"aria-invalid":!!N.username||void 0,"aria-describedby":z(n("username"),N.username),className:t})}),(0,d.jsx)(y,{id:n("password"),label:e?"New password (optional)":"Password",error:N.password,children:(0,d.jsx)("input",{id:n("password"),name:"new-password",type:"password",autoComplete:"new-password",value:r,onChange:a=>s(a.target.value),"aria-invalid":!!N.password||void 0,"aria-describedby":z(n("password"),N.password),className:t})})]}),(0,d.jsxs)("fieldset",{className:"flex min-w-0 flex-col gap-2","aria-invalid":!!N.scope||void 0,"aria-describedby":N.scope?n("scope-error"):void 0,children:[(0,d.jsx)("legend",{className:"text-xs font-medium text-foreground",children:"Machine access"}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-x-5 gap-y-2",children:[(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{id:n("scope-all"),type:"radio",name:n("scope"),checked:x,onChange:()=>A(!0)}),"All machines"]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{id:n("scope-selected"),type:"radio",name:n("scope"),checked:!x,onChange:()=>A(!1)}),"Selected machines"]})]}),x?null:(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-2 border-t border-border pt-2",children:[0===W.length?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:i?"Waiting for machines…":"No machines available."}):(0,d.jsx)("div",{className:"max-h-56 overflow-y-auto pr-1",children:(0,d.jsx)("ul",{className:"flex flex-col gap-1.5",children:W.map(a=>(0,d.jsxs)("li",{className:"flex items-start gap-2",children:[(0,d.jsx)("input",{id:n(`machine-${a.machineId}`),type:"checkbox",className:"mt-0.5",checked:F.includes(a.machineId),onChange:()=>G(b=>{var c;return c=a.machineId,b.includes(c)?b.filter(a=>a!==c):[...b,c]})}),(0,d.jsxs)("label",{htmlFor:n(`machine-${a.machineId}`),className:"min-w-0 text-xs text-foreground",children:[(0,d.jsx)("span",{className:"block break-words",children:L(a)}),(0,d.jsx)("span",{className:"tnum block break-all text-muted-foreground",children:a.machineId})]})]},a.machineId))})}),X.length>0?(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Other saved machines"}),(0,d.jsx)("ul",{className:"flex flex-wrap gap-1.5",children:X.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-xs",children:[(0,d.jsx)("span",{className:"tnum break-all",children:a}),(0,d.jsx)("button",{type:"button",className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-card-strong hover:text-foreground",onClick:()=>G(b=>b.filter(b=>b!==a)),"aria-label":`Remove ${a} from the machine scope`,children:(0,d.jsx)(P.A,{className:"h-3 w-3","aria-hidden":!0})})]},a))})]}):null]}),N.scope?(0,d.jsx)("p",{id:n("scope-error"),className:"text-xs text-crit",children:N.scope}):null]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2 border-t border-border pt-3",children:[(0,d.jsxs)("label",{className:"flex items-start gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:H,onChange:a=>J(a.target.checked)}),(0,d.jsxs)("span",{children:["Administrator",(0,d.jsx)("span",{className:"block text-muted-foreground",children:"Explicit administrative access. A wildcard machine scope alone never grants it."})]})]}),(0,d.jsxs)("label",{className:"flex items-start gap-2 text-xs text-foreground",children:[(0,d.jsx)("input",{type:"checkbox",className:"mt-0.5",checked:K,onChange:a=>M(a.target.checked)}),(0,d.jsxs)("span",{children:["Disabled",(0,d.jsx)("span",{className:"block text-muted-foreground",children:"Blocks sign-in and ends active sessions. The account is kept for a later re-enable."})]})]})]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("button",{type:"submit",className:u,disabled:T,children:T?"Saving…":e?"Save changes":"Create user"}),(0,d.jsx)("button",{type:"button",className:v,onClick:j,disabled:T,children:"Cancel"})]})]})}function aa(){let{session:a,machines:b,phase:c,retryConnection:e}=(0,s.M)(),t=(0,g.useMemo)(()=>(function(a={}){let b=a.fetchImpl??fetch;async function c(a,d={}){let e={Accept:"application/json"};void 0!==d.body&&(e["Content-Type"]="application/json"),void 0!==d.csrfToken&&(e["X-CSRF-Token"]=d.csrfToken);let f=await b(a,{method:d.method??"GET",headers:e,body:void 0===d.body?void 0:JSON.stringify(d.body),signal:d.signal,cache:"no-store",credentials:"same-origin",redirect:"error"}),g=await f.text(),h=null;if(g.length>0)try{h=JSON.parse(g)}catch{h=null}if(!f.ok)throw new m(f.status,function(a,b){if(null!==b&&"object"==typeof b){let a=b.error;if("string"==typeof a&&a.length>0&&a.length<=256)return a}return 400===a?"The request was not valid.":401===a?"Your session ended. Sign in again.":403===a?"Administrative access is required.":404===a?"That record no longer exists.":409===a?"That change conflicts with the current directory.":413===a?"The request was too large.":503===a?"Administration is temporarily unavailable.":"The hub could not complete that request."}(f.status,h));return h}return{async listUsers(a){let b=await c("/api/admin/users",{signal:a});if(!Array.isArray(b?.users))throw n();return b.users},async saveUser(a,b,d){await c("/api/admin/users",{method:"POST",body:a,csrfToken:b,signal:d})},async deleteUser(a,b,d){await c(`/api/admin/users?username=${encodeURIComponent(a)}`,{method:"DELETE",csrfToken:b,signal:d})},async listAudit(a=50,b){let d=Number.isSafeInteger(a)?Math.min(Math.max(a,1),1e3):50,e=await c(`/api/admin/audit?limit=${d}`,{signal:b});if(!Array.isArray(e?.events))throw n();return e.events},async listCollectors(a){let b=await c("/api/admin/collectors",{signal:a});if(!Array.isArray(b?.collectors))throw n();return b.collectors},async revokeCollector(a,b,d){await c("/api/admin/collectors",{method:"POST",body:{action:"revoke",collectorId:a},csrfToken:b,signal:d})},async createGrant(a,b,d){let e=await c("/api/admin/collector-grants",{method:"POST",body:a,csrfToken:b,signal:d});if("string"!=typeof e?.token||"string"!=typeof e.expiresAt)throw n();return{token:e.token,expiresAt:e.expiresAt}},async saveMachineMeta(a,b,d,e){await c(`/api/machines/meta?machineId=${encodeURIComponent(a)}`,{method:"POST",body:b,csrfToken:d,signal:e})}}})(),[]),[w,x]=(0,g.useState)(!1),[y,z]=(0,g.useState)(0),A="signed-in"===a.kind?`${a.user.username}:${a.user.csrfToken}`:a.kind,B=(0,g.useCallback)(()=>x(!0),[]),C=(0,g.useCallback)(()=>z(a=>a+1),[]),D=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(q.$E,{}),(0,d.jsx)(r.B,{})]});if("restoring"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsx)(p.Z,{title:"Checking session",className:"mx-auto my-12 max-w-md",children:(0,d.jsx)(p.p,{icon:h.A,note:"Checking your session…"})})});if("restore-failed"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Hub unreachable",className:"mx-auto my-12 max-w-md",children:[(0,d.jsx)(p.p,{icon:i.A,note:"The hub is unreachable right now."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsxs)("button",{type:"button",className:v,onClick:e,children:[(0,d.jsx)(j.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Try again"]})})]})});if("signed-out"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"expired"===c?"Session ended":"Sign in required",className:"mx-auto my-12 max-w-md",children:[(0,d.jsx)(p.p,{icon:h.A,note:"expired"===c?"Your session ended.":"Sign in required."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/login",className:u,children:"Sign in"})})]})});if("auth-unavailable"===a.kind)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsx)(p.Z,{title:"Sign-in unavailable",className:"mx-auto my-12 max-w-md",children:(0,d.jsx)(p.p,{icon:k.A,note:"Browser sign-in is not configured on this hub."})})});if("expired"===c)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Session ended",className:"mx-auto my-12 max-w-md",children:[(0,d.jsx)(p.p,{icon:k.A,note:"Your session ended."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/login",className:u,children:"Sign in"})})]})});if(!0!==a.user.admin)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Administrator access required",className:"mx-auto my-12 max-w-lg",children:[(0,d.jsx)(p.p,{icon:k.A,note:`You are signed in as ${a.user.username}, but this account is not an administrator.`}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/",className:v,children:"Back to fleet"})})]})});if(w)return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)(p.Z,{title:"Session ended",className:"mx-auto my-12 max-w-lg",children:[(0,d.jsx)(p.p,{icon:k.A,note:"Your administrative session is no longer valid."}),(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(f(),{href:"/login",className:u,children:"Sign in again"})})]})});let E=b.map(a=>({machineId:a.machineId,hostname:a.hostname,displayName:a.displayName,tags:a.tags})),F="connecting"===c||"idle"===c;return(0,d.jsx)(o.G,{title:"Administration",headerRight:D,children:(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-5",children:[(0,d.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-x-6 gap-y-3",children:(0,d.jsxs)("span",{className:"inline-flex min-w-0 max-w-full flex-wrap items-center gap-1.5 rounded-full bg-selected px-3 py-1 text-xs font-medium text-foreground",children:[(0,d.jsx)(l.A,{className:"h-3.5 w-3.5 shrink-0 text-accent","aria-hidden":!0}),(0,d.jsxs)("span",{className:"min-w-0 break-all",children:["Administrator \xb7 ",a.user.username]})]})}),(0,d.jsxs)("div",{className:"grid min-w-0 gap-5 xl:grid-cols-12",children:[(0,d.jsx)("div",{className:"min-w-0 xl:col-span-7",children:(0,d.jsx)($,{api:t,username:a.user.username,csrfToken:a.user.csrfToken,machines:E,machinesPending:F,onAuditChange:C,onSessionLost:B})}),(0,d.jsx)("div",{className:"min-w-0 xl:col-span-5",children:(0,d.jsx)(W,{api:t,csrfToken:a.user.csrfToken,machines:E,machinesPending:F,onSessionLost:B})}),(0,d.jsx)("div",{id:"collectors",className:"min-w-0 scroll-mt-6 xl:col-span-12",children:(0,d.jsx)(T,{api:t,csrfToken:a.user.csrfToken,sessionKey:A,machines:E,onAuditChange:C,onSessionLost:B})}),(0,d.jsx)("div",{className:"min-w-0 xl:col-span-12",children:(0,d.jsx)(M,{api:t,revision:y,onSessionLost:B})})]})]})})}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},22685:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},33947:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},38522:a=>{"use strict";a.exports=require("node:zlib")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},46060:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external.js")},51277:(a,b,c)=>{Promise.resolve().then(c.bind(c,2902))},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75245:(a,b,c)=>{Promise.resolve().then(c.bind(c,9479))},76013:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>q,handler:()=>s,routeModule:()=>r});var d=c(21635),e=c(86315),f=c(1020),g=c(61287),h={};for(let a in g)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(h[a]=()=>g[a]);c.d(b,h);let i=(0,d.p)(()=>Promise.resolve().then(c.bind(c,76537))),j=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),k=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,55091,23))),l=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,45270,23))),m=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,28193,23))),n=(0,d.p)(()=>Promise.resolve().then(c.t.bind(c,95547,23))),o={children:["",{children:["administration",{children:["__PAGE__",{},{page:[(0,d.p)(()=>Promise.resolve().then(c.bind(c,97107))),"/home/triet/Project/rigscope/src/app/administration/page.tsx"]}]},{"global-error":[n,"next/dist/client/components/builtin/global-error.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,59645)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}},[]]},{layout:[i,"/home/triet/Project/rigscope/src/app/layout.tsx"],"global-error":[j,"next/dist/client/components/builtin/global-error.js"],"not-found":[k,"next/dist/client/components/builtin/not-found.js"],forbidden:[l,"next/dist/client/components/builtin/forbidden.js"],unauthorized:[m,"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await (0,d.p)(()=>Promise.resolve().then(c.bind(c,59645)))()).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}},[]]}.children,p=(0,e.H)({tree:o,page:"/administration/page",pathname:"/administration",require:c,loadChunk:()=>Promise.resolve(),interopDefault:f.T}),q=p.__next_app__,r=p.routeModule,s=p.handler},96970:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(65366).A)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},97107:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,metadata:()=>f});var d=c(5735),e=c(2902);let f={title:"Administration"};function g(){return(0,d.jsx)(e.AdministrationView,{})}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[266,430,350,161,751],()=>b(b.s=76013));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/@swc/helpers/esm/_interop_require_default.js","../../../../node_modules/@swc/helpers/package.json","../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../node_modules/next/dist/client/lib/console.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/fast-jwt/index.js","../../../../node_modules/next/dist/compiled/fast-jwt/package.json","../../../../node_modules/next/dist/compiled/hash.js/sha256/256.js","../../../../node_modules/next/dist/compiled/hash.js/sha256/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../node_modules/next/dist/compiled/ws/index.js","../../../../node_modules/next/dist/compiled/ws/package.json","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/picocolors.js","../../../../node_modules/next/dist/lib/scheduler.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/segment-config/ensure-static.js","../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../node_modules/next/dist/server/app-render/sync-io-messages.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../node_modules/next/dist/server/lib/app-dir-module.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../node_modules/next/dist/server/lib/route-cache-key.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../node_modules/next/dist/server/node-environment.js","../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../node_modules/next/dist/server/normalizers/built/app/app-pathname-normalizer.js","../../../../node_modules/next/dist/server/normalizers/normalizers.js","../../../../node_modules/next/dist/server/normalizers/underscore-normalizer.js","../../../../node_modules/next/dist/server/normalizers/wrap-normalizer-fn.js","../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../node_modules/next/dist/server/require-hook.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/route-kind.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/page-path/normalize-page-path.js","../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/index.js","../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js","../../../../node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js","../../../../node_modules/next/dist/shared/lib/router/utils/sorted-routes.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/dist/shared/lib/utils.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/161.js","../../chunks/266.js","../../chunks/
|
|
1
|
+
{"version":1,"files":["../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/@swc/helpers/esm/_interop_require_default.js","../../../../node_modules/@swc/helpers/package.json","../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../node_modules/next/dist/client/lib/console.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/fast-jwt/index.js","../../../../node_modules/next/dist/compiled/fast-jwt/package.json","../../../../node_modules/next/dist/compiled/hash.js/sha256/256.js","../../../../node_modules/next/dist/compiled/hash.js/sha256/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../node_modules/next/dist/compiled/ws/index.js","../../../../node_modules/next/dist/compiled/ws/package.json","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/picocolors.js","../../../../node_modules/next/dist/lib/scheduler.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/segment-config/ensure-static.js","../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../node_modules/next/dist/server/app-render/sync-io-messages.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../node_modules/next/dist/server/lib/app-dir-module.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../node_modules/next/dist/server/lib/route-cache-key.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../node_modules/next/dist/server/node-environment.js","../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../node_modules/next/dist/server/normalizers/built/app/app-pathname-normalizer.js","../../../../node_modules/next/dist/server/normalizers/normalizers.js","../../../../node_modules/next/dist/server/normalizers/underscore-normalizer.js","../../../../node_modules/next/dist/server/normalizers/wrap-normalizer-fn.js","../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../node_modules/next/dist/server/require-hook.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/route-kind.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/page-path/normalize-page-path.js","../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/index.js","../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js","../../../../node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js","../../../../node_modules/next/dist/shared/lib/router/utils/sorted-routes.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/dist/shared/lib/utils.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/161.js","../../chunks/266.js","../../chunks/350.js","../../chunks/430.js","../../chunks/751.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/administration/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"1461":{"*":{"id":"86673","name":"*","chunks":[],"async":false}},"1721":{"*":{"id":"40015","name":"*","chunks":[],"async":false}},"2394":{"*":{"id":"76670","name":"*","chunks":[],"async":false}},"2701":{"*":{"id":"7867","name":"*","chunks":[],"async":false}},"2737":{"*":{"id":"4833","name":"*","chunks":[],"async":false}},"2939":{"*":{"id":"81328","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"5000":{"*":{"id":"93022","name":"*","chunks":[],"async":false}},"5773":{"*":{"id":"71793","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"7044":{"*":{"id":"9479","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"7281":{"*":{"id":"81931","name":"*","chunks":[],"async":false}},"7339":{"*":{"id":"30847","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"8887":{"*":{"id":"85909","name":"*","chunks":[],"async":false}},"9939":{"*":{"id":"58910","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/triet/Project/rigscope/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/app/globals.css":{"id":1743,"name":"*","chunks":["939","static/chunks/939-514e554087419c71.js","177","static/chunks/app/layout-4feff677c4071745.js"],"async":false},"/home/triet/Project/rigscope/src/components/theme-provider.tsx":{"id":2737,"name":"*","chunks":["939","static/chunks/939-514e554087419c71.js","177","static/chunks/app/layout-4feff677c4071745.js"],"async":false},"/home/triet/Project/rigscope/src/live/live-provider.tsx":{"id":9939,"name":"*","chunks":["939","static/chunks/939-514e554087419c71.js","177","static/chunks/app/layout-4feff677c4071745.js"],"async":false},"/home/triet/Project/rigscope/src/components/admin/administration-view.tsx":{"id":7044,"name":"*","chunks":["
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/administration/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"1461":{"*":{"id":"86673","name":"*","chunks":[],"async":false}},"1721":{"*":{"id":"40015","name":"*","chunks":[],"async":false}},"2394":{"*":{"id":"76670","name":"*","chunks":[],"async":false}},"2701":{"*":{"id":"7867","name":"*","chunks":[],"async":false}},"2737":{"*":{"id":"4833","name":"*","chunks":[],"async":false}},"2939":{"*":{"id":"81328","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"5000":{"*":{"id":"93022","name":"*","chunks":[],"async":false}},"5773":{"*":{"id":"71793","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"7044":{"*":{"id":"9479","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"7281":{"*":{"id":"81931","name":"*","chunks":[],"async":false}},"7339":{"*":{"id":"30847","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"8887":{"*":{"id":"85909","name":"*","chunks":[],"async":false}},"9904":{"*":{"id":"85378","name":"*","chunks":[],"async":false}},"9939":{"*":{"id":"58910","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/triet/Project/rigscope/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/app/globals.css":{"id":1743,"name":"*","chunks":["939","static/chunks/939-514e554087419c71.js","177","static/chunks/app/layout-4feff677c4071745.js"],"async":false},"/home/triet/Project/rigscope/src/components/theme-provider.tsx":{"id":2737,"name":"*","chunks":["939","static/chunks/939-514e554087419c71.js","177","static/chunks/app/layout-4feff677c4071745.js"],"async":false},"/home/triet/Project/rigscope/src/live/live-provider.tsx":{"id":9939,"name":"*","chunks":["939","static/chunks/939-514e554087419c71.js","177","static/chunks/app/layout-4feff677c4071745.js"],"async":false},"/home/triet/Project/rigscope/src/components/admin/administration-view.tsx":{"id":7044,"name":"*","chunks":["944","static/chunks/944-a7fe1d96f1d20531.js","939","static/chunks/939-514e554087419c71.js","103","static/chunks/103-976549d31902404e.js","693","static/chunks/app/administration/page-b62f6610cda5381f.js"],"async":false},"/home/triet/Project/rigscope/src/components/history/history-view.tsx":{"id":2939,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/live/machine-navigation.tsx":{"id":1721,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/shell/mobile-navigation.tsx":{"id":9904,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/shell/sidebar.tsx":{"id":2701,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/theme-toggle.tsx":{"id":2394,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/resources/connections-panels.tsx":{"id":5773,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/alerts/alerts-view.tsx":{"id":1461,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/live/login-view.tsx":{"id":5000,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/live/fleet-view.tsx":{"id":7281,"name":"*","chunks":["944","static/chunks/944-a7fe1d96f1d20531.js","939","static/chunks/939-514e554087419c71.js","103","static/chunks/103-976549d31902404e.js","130","static/chunks/130-e940915010276f88.js","974","static/chunks/app/page-9c9c89166eee4c92.js"],"async":false},"/home/triet/Project/rigscope/src/components/processes/processes-view.tsx":{"id":7339,"name":"*","chunks":[],"async":false},"/home/triet/Project/rigscope/src/components/live/machine-view.tsx":{"id":8887,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/triet/Project/rigscope/src/":[],"/home/triet/Project/rigscope/src/app/layout":[{"inlined":false,"path":"static/css/f5d3162842dcac31.css"}],"/home/triet/Project/rigscope/src/app/page":[],"/home/triet/Project/rigscope/src/app/administration/page":[]},"rscModuleMapping":{"484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"1461":{"*":{"id":"29953","name":"*","chunks":[],"async":false}},"1721":{"*":{"id":"28565","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"2394":{"*":{"id":"46568","name":"*","chunks":[],"async":false}},"2701":{"*":{"id":"50369","name":"*","chunks":[],"async":false}},"2737":{"*":{"id":"65223","name":"*","chunks":[],"async":false}},"2939":{"*":{"id":"79173","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"5000":{"*":{"id":"52604","name":"*","chunks":[],"async":false}},"5773":{"*":{"id":"37147","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"7044":{"*":{"id":"2902","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"7281":{"*":{"id":"22993","name":"*","chunks":[],"async":false}},"7339":{"*":{"id":"89893","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"8887":{"*":{"id":"73132","name":"*","chunks":[],"async":false}},"9904":{"*":{"id":"64792","name":"*","chunks":[],"async":false}},"9939":{"*":{"id":"89604","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
|
|
@@ -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/fb3ad9534f4681e6.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/157-0d36ebf66af048ac.js" async=""></script><script src="/_next/static/chunks/103-13ec30dcc059b9d3.js" async=""></script><script src="/_next/static/chunks/app/administration/page-4b16b19bb6a39c36.js" async=""></script><title>Administration — 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 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><aside class="flex w-14 shrink-0 flex-col border-r border-border bg-background md: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-9 min-w-0 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="hidden md: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-9 min-w-0 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="hidden md:inline">Alerts</span></a><a title="Connections" aria-label="Connections" class="flex min-h-9 min-w-0 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="hidden md:inline">Connections</span></a></div></nav><footer class="hidden shrink-0 border-t border-border p-3 md:block"><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 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"><h1 class="truncate text-lg font-semibold tracking-tight">Administration</h1><div class="flex items-center gap-3"><div class="flex min-w-0 items-center gap-3"><div role="status" aria-label="Live feed status: Checking session…" class="flex min-w-0 items-center gap-2"><span class="inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/50" aria-hidden="true"></span><span class="tnum truncate text-xs text-muted-foreground">Checking session…</span></div></div><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 mx-auto my-12 max-w-md"><div class="flex shrink-0 items-center justify-between gap-4"><h2 class="text-sm font-medium tracking-tight">Checking session</h2></div><div class="mt-4 flex min-h-0 flex-1 flex-col"><div class="flex flex-1 flex-col items-center justify-center gap-2.5 rounded-lg border border-dashed border-border px-6 py-10 text-center"><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-user-round h-5 w-5 text-muted-foreground" aria-hidden="true"><circle cx="12" cy="8" r="5"></circle><path d="M20 21a8 8 0 0 0-16 0"></path></svg><p class="text-sm text-muted-foreground">Checking your session…</p></div></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:\"static/chunks/157-0d36ebf66af048ac.js\"\nc:\"static/chunks/103-13ec30dcc059b9d3.js\"\nd:\"static/chunks/app/administration/page-4b16b19bb6a39c36.js\"\ne:\"AdministrationView\"\nf:I[7044,[\"157\",\"$b\",\"939\",\"$2\",\"103\",\"$c\",\"693\",\"$d\"],\"$e\"]\n10:I[484,[],\"OutletBoundary\"]\n11:\"$Sreact.suspense\"\n13:\"ViewportBoundary\"\n14:I[484,[],\"$13\"]\n16:\"MetadataBoundary\"\n17:I[484,[],\"$16\"]\n19:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/fb3ad9534f4681e6.css\",\"style\"]\n9:X\na:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$Lf\",null,{}],null,[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@12\"}]}]]}],\"p\":false,\"v\":null}}]]\n8:[[\"children\",{\"s\":\"administration\",\"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\":[\"\",\"administration\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/fb3ad9534f4681e6.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,[\"$\",\"$L14\",null,{\"children\":\"$L15\"}],[\"$\",\"$L17\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$19\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"oxwySrJXqXq8O6_7AzZGe\"}\n"])</script><script>self.__next_f.push([1,"9:C\n15:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1a:I[6869,[],\"IconMark\"]\n12:null\n18:[[\"$\",\"title\",\"0\",{\"children\":\"Administration — 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\"}],[\"$\",\"$L1a\",\"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/f5d3162842dcac31.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/administration/page-b62f6610cda5381f.js" async=""></script><title>Administration — 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 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">Administration</h1></div><div class="flex items-center gap-3"><div class="flex min-w-0 items-center gap-3"><div role="status" aria-label="Live feed status: Checking session…" class="flex min-w-0 items-center gap-2"><span class="inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/50" aria-hidden="true"></span><span class="tnum truncate text-xs text-muted-foreground">Checking session…</span></div></div><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 mx-auto my-12 max-w-md"><div class="flex shrink-0 items-center justify-between gap-4"><h2 class="text-sm font-medium tracking-tight">Checking session</h2></div><div class="mt-4 flex min-h-0 flex-1 flex-col"><div class="flex flex-1 flex-col items-center justify-center gap-2.5 rounded-lg border border-dashed border-border px-6 py-10 text-center"><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-user-round h-5 w-5 text-muted-foreground" aria-hidden="true"><circle cx="12" cy="8" r="5"></circle><path d="M20 21a8 8 0 0 0-16 0"></path></svg><p class="text-sm text-muted-foreground">Checking your session…</p></div></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:\"static/chunks/944-a7fe1d96f1d20531.js\"\nc:\"static/chunks/103-976549d31902404e.js\"\nd:\"static/chunks/app/administration/page-b62f6610cda5381f.js\"\ne:\"AdministrationView\"\nf:I[7044,[\"944\",\"$b\",\"939\",\"$2\",\"103\",\"$c\",\"693\",\"$d\"],\"$e\"]\n10:I[484,[],\"OutletBoundary\"]\n11:\"$Sreact.suspense\"\n13:\"ViewportBoundary\"\n14:I[484,[],\"$13\"]\n16:\"MetadataBoundary\"\n17:I[484,[],\"$16\"]\n19:I[7123,[],\"default\",1]\n:HL[\"/_next/static/css/f5d3162842dcac31.css\",\"style\"]\n9:X\na:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$Lf\",null,{}],null,[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@12\"}]}]]}],\"p\":false,\"v\":null}}]]\n8:[[\"children\",{\"s\":\"administration\",\"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\":[\"\",\"administration\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f5d3162842dcac31.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,[\"$\",\"$L14\",null,{\"children\":\"$L15\"}],[\"$\",\"$L17\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$19\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"9SHY6v87ulfunqR2e84n9\"}\n"])</script><script>self.__next_f.push([1,"9:C\n15:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1a:I[6869,[],\"IconMark\"]\n12:null\n18:[[\"$\",\"title\",\"0\",{\"children\":\"Administration — 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\"}],[\"$\",\"$L1a\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
5:I[9939,["939","$2","177","$3"],"LiveProvider"]
|
|
6
6
|
6:I[7121,[],""]
|
|
7
7
|
7:I[4581,[],""]
|
|
8
|
-
b:"static/chunks/
|
|
9
|
-
c:"static/chunks/103-
|
|
10
|
-
d:"static/chunks/app/administration/page-
|
|
8
|
+
b:"static/chunks/944-a7fe1d96f1d20531.js"
|
|
9
|
+
c:"static/chunks/103-976549d31902404e.js"
|
|
10
|
+
d:"static/chunks/app/administration/page-b62f6610cda5381f.js"
|
|
11
11
|
e:"AdministrationView"
|
|
12
|
-
f:I[7044,["
|
|
12
|
+
f:I[7044,["944","$b","939","$2","103","$c","693","$d"],"$e"]
|
|
13
13
|
10:I[484,[],"OutletBoundary"]
|
|
14
14
|
11:"$Sreact.suspense"
|
|
15
15
|
13:"ViewportBoundary"
|
|
@@ -17,11 +17,11 @@ f:I[7044,["157","$b","939","$2","103","$c","693","$d"],"$e"]
|
|
|
17
17
|
16:"MetadataBoundary"
|
|
18
18
|
17:I[484,[],"$16"]
|
|
19
19
|
19:I[7123,[],"default",1]
|
|
20
|
-
:HL["/_next/static/css/
|
|
20
|
+
:HL["/_next/static/css/f5d3162842dcac31.css","style"]
|
|
21
21
|
9:X
|
|
22
22
|
a:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$Lf",null,{}],null,["$","$L10",null,{"children":["$","$11",null,{"name":"Next.MetadataOutlet","children":"$@12"}]}]]}],"p":false,"v":null}}]]
|
|
23
23
|
8:[["children",{"s":"administration","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"}]]
|
|
24
|
-
0:{"P":null,"c":["","administration"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/
|
|
24
|
+
0:{"P":null,"c":["","administration"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f5d3162842dcac31.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,["$","$L14",null,{"children":"$L15"}],["$","$L17",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$11",null,{"name":"Next.Metadata","children":"$L18"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$19",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"9SHY6v87ulfunqR2e84n9"}
|
|
25
25
|
9:C
|
|
26
26
|
15:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
27
27
|
1a:I[6869,[],"IconMark"]
|