omnigateway 0.12.0 → 0.12.2

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/bin/omni.js CHANGED
@@ -37474,7 +37474,7 @@ function createServiceDeps(input2) {
37474
37474
  }
37475
37475
 
37476
37476
  // apps/cli/src/version.ts
37477
- var VERSION = "0.12.0";
37477
+ var VERSION = "0.12.2";
37478
37478
 
37479
37479
  // apps/cli/src/commands/service.ts
37480
37480
  function gatewayArgv(root) {
package/gateway.js CHANGED
@@ -56081,8 +56081,16 @@ function readCookie(request2, name) {
56081
56081
  }
56082
56082
  return null;
56083
56083
  }
56084
- function sessionCookie(request2, token, maxAge) {
56085
- const secure = new URL(request2.url).protocol === "https:" ? ["Secure"] : [];
56084
+ function forwardedProto(request2) {
56085
+ const header = request2.headers.get("x-forwarded-proto");
56086
+ if (header === null)
56087
+ return null;
56088
+ return header.split(",")[0]?.trim().toLowerCase() ?? null;
56089
+ }
56090
+ function sessionCookie(request2, baseUrl, token, maxAge) {
56091
+ const configured2 = URL.canParse(baseUrl) ? new URL(baseUrl).protocol === "https:" : false;
56092
+ const https = configured2 || forwardedProto(request2) === "https" || new URL(request2.url).protocol === "https:";
56093
+ const secure = https ? ["Secure"] : [];
56086
56094
  return [
56087
56095
  `${ADMIN_COOKIE}=${token}`,
56088
56096
  "Path=/",
@@ -56409,7 +56417,7 @@ function adminRoutes(deps) {
56409
56417
  if (token === null)
56410
56418
  throw new GatewayError("INTERNAL", "could not create admin session");
56411
56419
  logger2.info("admin setup completed");
56412
- set2.headers["set-cookie"] = sessionCookie(request2, token, Math.floor(deps.sessionTtlMs / 1000));
56420
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, token, Math.floor(deps.sessionTtlMs / 1000));
56413
56421
  return { ok: true };
56414
56422
  }).post("/api/login", async ({ request: request2, set: set2 }) => {
56415
56423
  const body2 = await readJsonRecord(request2);
@@ -56421,13 +56429,13 @@ function adminRoutes(deps) {
56421
56429
  throw new GatewayError("AUTH", "invalid password");
56422
56430
  }
56423
56431
  logger2.info("admin login succeeded");
56424
- set2.headers["set-cookie"] = sessionCookie(request2, token, Math.floor(deps.sessionTtlMs / 1000));
56432
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, token, Math.floor(deps.sessionTtlMs / 1000));
56425
56433
  return { ok: true };
56426
56434
  }).post("/api/logout", async ({ request: request2, set: set2 }) => {
56427
56435
  const token = readCookie(request2, ADMIN_COOKIE);
56428
56436
  if (token !== null)
56429
56437
  await deps.admin.logout(token);
56430
- set2.headers["set-cookie"] = sessionCookie(request2, "", 0);
56438
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, "", 0);
56431
56439
  return { ok: true };
56432
56440
  }).get("/api/credentials", async ({ request: request2 }) => {
56433
56441
  await requireReader(request2, deps.admin);
@@ -56692,13 +56700,13 @@ function clientRoutes(deps) {
56692
56700
  throw new GatewayError("AUTH", "invalid api key");
56693
56701
  }
56694
56702
  logger2.info("client login succeeded");
56695
- set2.headers["set-cookie"] = sessionCookie(request2, token, Math.floor(deps.sessionTtlMs / 1000));
56703
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, token, Math.floor(deps.sessionTtlMs / 1000));
56696
56704
  return { ok: true };
56697
56705
  }).post("/api/client/logout", async ({ request: request2, set: set2 }) => {
56698
56706
  const token = readCookie(request2, ADMIN_COOKIE);
56699
56707
  if (token !== null)
56700
56708
  await deps.admin.logout(token);
56701
- set2.headers["set-cookie"] = sessionCookie(request2, "", 0);
56709
+ set2.headers["set-cookie"] = sessionCookie(request2, deps.baseUrl, "", 0);
56702
56710
  return { ok: true };
56703
56711
  }).get("/api/client/summary", async ({ request: request2 }) => {
56704
56712
  const apiKeyId = await requireClient(request2, deps.admin);
@@ -62294,7 +62302,7 @@ function createRing(limits = DEFAULT_RING_LIMITS) {
62294
62302
  }
62295
62303
 
62296
62304
  // apps/gateway/src/version.ts
62297
- var VERSION = "0.12.0";
62305
+ var VERSION = "0.12.2";
62298
62306
 
62299
62307
  // apps/gateway/src/app.ts
62300
62308
  var ADMIN_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
@@ -62458,6 +62466,7 @@ function createApp(deps) {
62458
62466
  store: deps.store,
62459
62467
  admin,
62460
62468
  sessionTtlMs: ADMIN_SESSION_TTL_MS,
62469
+ baseUrl: deps.baseUrl,
62461
62470
  ...deps.dayOffsetMinutes === undefined ? {} : { dayOffsetMinutes: deps.dayOffsetMinutes },
62462
62471
  now,
62463
62472
  logger: logger2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnigateway",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "description": "Self-hosted AI gateway with Anthropic- and OpenAI-compatible APIs, an admin console, and a CLI",
5
5
  "license": "MIT",
6
6
  "author": "Harismawan <mail@harismawan.com>",
@@ -80,7 +80,7 @@ import{A as e,Ct as t,L as n,M as r,Mt as i,N as a,P as o,f as s,j as c,mt as l,
80
80
  `,Wr=L(me)`
81
81
  flex: 1;
82
82
  min-width: 260px;
83
- `,Gr=[{id:`all`,label:`All requests`,filters:{}},{id:`failed`,label:`Failed only`,filters:{failed:`true`}},{id:`pending`,label:`Still running`,filters:{state:`pending`}},{id:`done`,label:`Completed`,filters:{state:`done`}}],Kr=e=>e.failed===`true`?`failed`:e.state??`all`,qr=[{prefix:`model`,field:`model`},{prefix:`resolved`,field:`resolvedModel`},{prefix:`requested`,field:`requestedModel`},{prefix:`error`,field:`errorCode`}],Jr=[`model`,`resolvedModel`,`requestedModel`,`errorCode`];function Yr(e){let t={};for(let n of e.trim().split(/\s+/)){if(n===``)continue;let e=n.indexOf(`:`),r=e===-1?void 0:qr.find(t=>t.prefix===n.slice(0,e).toLowerCase());if(r===void 0){t.model=n;continue}let i=n.slice(e+1);i!==``&&(t[r.field]=i)}return t}function Xr(e){let t=[];return e.model!==void 0&&t.push(e.model),e.resolvedModel!==void 0&&t.push(`resolved:${e.resolvedModel}`),e.requestedModel!==void 0&&t.push(`requested:${e.requestedModel}`),e.errorCode!==void 0&&t.push(`error:${e.errorCode}`),t.join(` `)}var Zr=(e,t)=>Jr.every(n=>e[n]===t[n]),Qr=Object.fromEntries(Jr.map(e=>[e,void 0]));function $r({filters:e,patch:n}){let r=l(),i=t();return I(xe,{children:[I(Ur,{"aria-label":`Account`,value:e.credentialId??``,onChange:e=>n({credentialId:e.target.value||void 0}),children:[F(`option`,{value:``,children:`Any account`}),(r.data??[]).map(e=>F(`option`,{value:e.id,children:e.label},e.id))]}),I(Ur,{"aria-label":`Gateway key`,value:e.apiKeyId??``,onChange:e=>n({apiKeyId:e.target.value||void 0}),children:[F(`option`,{value:``,children:`Any key`}),(i.data??[]).map(e=>F(`option`,{value:e.id,children:e.label},e.id))]})]})}function ei(e,t){let n={...e,...t};for(let e of Object.keys(n))n[e]===void 0&&delete n[e];return n}function ti({filters:e,onChange:t,operator:n=!1}){let r=i(),a=n=>t(ei(e,n)),[o,s]=be(()=>Xr(e)),c=ye(null),l=ye(a);l.current=a;let u=()=>{c.current!==null&&clearTimeout(c.current),c.current=null};_e(()=>()=>clearTimeout(c.current??void 0),[]);let d=Xr(e);return c.current===null&&!Zr(Yr(o),e)&&o!==d&&s(d),I(Hr,{children:[F(Wr,{"aria-label":`Models and error codes`,placeholder:`Search anything`,value:o,onChange:e=>{let t=e.target.value;s(t),u(),c.current=setTimeout(()=>{c.current=null,l.current({...Qr,...Yr(t)})},500)}}),F(Vr,{since:e.since,until:e.until,onChange:e=>a(e)}),F(Ur,{"aria-label":`Show which requests`,value:Kr(e),onChange:e=>{let t=Gr.find(t=>t.id===e.target.value)??Gr[0];a({state:void 0,failed:void 0,...t.filters})},children:Gr.map(e=>F(`option`,{value:e.id,children:e.label},e.id))}),I(Ur,{"aria-label":`Provider`,value:e.provider??``,onChange:e=>a({provider:e.target.value||void 0}),children:[F(`option`,{value:``,children:`Any provider`}),(r.data??[]).map(e=>F(`option`,{value:e.id,children:e.label},e.id))]}),n?F($r,{filters:e,patch:a}):null,F(h,{type:`button`,onClick:()=>{u(),s(``),t({})},children:`Clear filters`})]})}function ni(e){let[t,n]=be(Date.now);return _e(()=>{if(!e)return;n(Date.now());let t=window.setInterval(()=>n(Date.now()),1e3);return()=>window.clearInterval(t)},[e]),t}function ri({log:e}){return F(M,{$align:`right`,$mono:!0,...f(e)?{"aria-label":`processing`}:{title:se(e)},children:f(e)?F(ce,{}):F(oe,{tokens:e})})}function ii({rows:t,now:i,names:c,onOpen:l}){return I(ge,{children:[F(`thead`,{children:I(`tr`,{children:[F(N,{}),F(N,{$align:`right`,children:`Time`}),F(N,{children:`Requested`}),F(N,{children:`Routed to`}),c===void 0?null:I(xe,{children:[F(N,{children:`Account`}),F(N,{children:`Key`})]}),F(N,{$align:`right`,children:`Try`}),F(N,{$align:`right`,children:`TTFT`}),F(N,{$align:`right`,children:`Total`}),F(N,{$align:`right`,children:`Tokens`}),F(N,{$align:`right`,children:`Cost`}),F(N,{children:`Outcome`})]})}),F(`tbody`,{children:t.map(t=>I(he,{$selectable:!0,onClick:()=>l(t),children:[F(M,{children:F(d,{state:u(t),label:s(t)})}),F(M,{$align:`right`,$mono:!0,title:r(t.at),children:e(t.at)}),F(M,{$mono:!0,children:F(b,{style:{display:`block`,maxWidth:`20ch`},children:t.requestedModel||`—`})}),F(M,{children:t.resolvedProvider===null?F(_,{children:f(t)?`routing…`:`not routed`}):I(v,{$gap:1,children:[F(de,{provider:t.resolvedProvider}),F(y,{$dim:!0,children:t.resolvedModel??`—`})]})}),c===void 0?null:I(xe,{children:[F(M,{children:F(b,{style:{display:`block`,maxWidth:`18ch`},children:t.credentialId==null?`—`:c.accounts.get(t.credentialId)??p(t.credentialId)})}),F(M,{children:F(b,{style:{display:`block`,maxWidth:`16ch`},title:t.apiKeyId??void 0,children:t.apiKeyId==null?`—`:c.keys.get(t.apiKeyId)??p(t.apiKeyId)})})]}),F(M,{$align:`right`,$mono:!0,children:f(t)?`—`:t.attempts}),F(M,{$align:`right`,$mono:!0,children:f(t)?`—`:o(t.ttftMs)}),F(M,{$align:`right`,$mono:!0,children:f(t)?a(Math.max(0,i-t.at)):o(t.durationMs)}),F(ri,{log:t}),F(M,{$align:`right`,$mono:!0,children:f(t)?`—`:n(t.costUsd)}),F(M,{children:f(t)?F(fe,{$tone:`accent`,children:`live`}):t.errorCode===null?F(fe,{$tone:`ok`,children:t.status}):F(fe,{$tone:`down`,children:t.errorCode})})]},t.id))})]})}var ai=L.dl`
83
+ `,Gr=[{id:`all`,label:`All requests`,filters:{}},{id:`failed`,label:`Failed only`,filters:{failed:`true`}},{id:`pending`,label:`Still running`,filters:{state:`pending`}},{id:`done`,label:`Completed`,filters:{state:`done`}}],Kr=e=>e.failed===`true`?`failed`:e.state??`all`,qr=[{prefix:`model`,field:`model`},{prefix:`resolved`,field:`resolvedModel`},{prefix:`requested`,field:`requestedModel`},{prefix:`error`,field:`errorCode`}],Jr=[`model`,`resolvedModel`,`requestedModel`,`errorCode`];function Yr(e){let t={};for(let n of e.trim().split(/\s+/)){if(n===``)continue;let e=n.indexOf(`:`),r=e===-1?void 0:qr.find(t=>t.prefix===n.slice(0,e).toLowerCase());if(r===void 0){t.model=n;continue}let i=n.slice(e+1);i!==``&&(t[r.field]=i)}return t}function Xr(e){let t=[];return e.model!==void 0&&t.push(e.model),e.resolvedModel!==void 0&&t.push(`resolved:${e.resolvedModel}`),e.requestedModel!==void 0&&t.push(`requested:${e.requestedModel}`),e.errorCode!==void 0&&t.push(`error:${e.errorCode}`),t.join(` `)}var Zr=(e,t)=>Jr.every(n=>e[n]===t[n]),Qr=Object.fromEntries(Jr.map(e=>[e,void 0]));function $r({filters:e,patch:n}){let r=l(),a=t(),o=i();return I(xe,{children:[I(Ur,{"aria-label":`Provider`,value:e.provider??``,onChange:e=>n({provider:e.target.value||void 0}),children:[F(`option`,{value:``,children:`Any provider`}),(o.data??[]).map(e=>F(`option`,{value:e.id,children:e.label},e.id))]}),I(Ur,{"aria-label":`Account`,value:e.credentialId??``,onChange:e=>n({credentialId:e.target.value||void 0}),children:[F(`option`,{value:``,children:`Any account`}),(r.data??[]).map(e=>F(`option`,{value:e.id,children:e.label},e.id))]}),I(Ur,{"aria-label":`Gateway key`,value:e.apiKeyId??``,onChange:e=>n({apiKeyId:e.target.value||void 0}),children:[F(`option`,{value:``,children:`Any key`}),(a.data??[]).map(e=>F(`option`,{value:e.id,children:e.label},e.id))]})]})}function ei(e,t){let n={...e,...t};for(let e of Object.keys(n))n[e]===void 0&&delete n[e];return n}function ti({filters:e,onChange:t,operator:n=!1}){let r=n=>t(ei(e,n)),[i,a]=be(()=>Xr(e)),o=ye(null),s=ye(r);s.current=r;let c=()=>{o.current!==null&&clearTimeout(o.current),o.current=null};_e(()=>()=>clearTimeout(o.current??void 0),[]);let l=Xr(e);return o.current===null&&!Zr(Yr(i),e)&&i!==l&&a(l),I(Hr,{children:[F(Wr,{"aria-label":`Models and error codes`,placeholder:`Search anything`,value:i,onChange:e=>{let t=e.target.value;a(t),c(),o.current=setTimeout(()=>{o.current=null,s.current({...Qr,...Yr(t)})},500)}}),F(Vr,{since:e.since,until:e.until,onChange:e=>r(e)}),F(Ur,{"aria-label":`Show which requests`,value:Kr(e),onChange:e=>{let t=Gr.find(t=>t.id===e.target.value)??Gr[0];r({state:void 0,failed:void 0,...t.filters})},children:Gr.map(e=>F(`option`,{value:e.id,children:e.label},e.id))}),n?F($r,{filters:e,patch:r}):null,F(h,{type:`button`,onClick:()=>{c(),a(``),t({})},children:`Clear filters`})]})}function ni(e){let[t,n]=be(Date.now);return _e(()=>{if(!e)return;n(Date.now());let t=window.setInterval(()=>n(Date.now()),1e3);return()=>window.clearInterval(t)},[e]),t}function ri({log:e}){return F(M,{$align:`right`,$mono:!0,...f(e)?{"aria-label":`processing`}:{title:se(e)},children:f(e)?F(ce,{}):F(oe,{tokens:e})})}function ii({rows:t,now:i,names:c,onOpen:l}){return I(ge,{children:[F(`thead`,{children:I(`tr`,{children:[F(N,{}),F(N,{$align:`right`,children:`Time`}),F(N,{children:`Requested`}),F(N,{children:`Routed to`}),c===void 0?null:I(xe,{children:[F(N,{children:`Account`}),F(N,{children:`Key`})]}),F(N,{$align:`right`,children:`Try`}),F(N,{$align:`right`,children:`TTFT`}),F(N,{$align:`right`,children:`Total`}),F(N,{$align:`right`,children:`Tokens`}),F(N,{$align:`right`,children:`Cost`}),F(N,{children:`Outcome`})]})}),F(`tbody`,{children:t.map(t=>I(he,{$selectable:!0,onClick:()=>l(t),children:[F(M,{children:F(d,{state:u(t),label:s(t)})}),F(M,{$align:`right`,$mono:!0,title:r(t.at),children:e(t.at)}),F(M,{$mono:!0,children:F(b,{style:{display:`block`,maxWidth:`20ch`},children:t.requestedModel||`—`})}),F(M,{children:t.resolvedProvider===null?F(_,{children:f(t)?`routing…`:`not routed`}):I(v,{$gap:1,children:[F(de,{provider:t.resolvedProvider}),F(y,{$dim:!0,children:t.resolvedModel??`—`})]})}),c===void 0?null:I(xe,{children:[F(M,{children:F(b,{style:{display:`block`,maxWidth:`18ch`},children:t.credentialId==null?`—`:c.accounts.get(t.credentialId)??p(t.credentialId)})}),F(M,{children:F(b,{style:{display:`block`,maxWidth:`16ch`},title:t.apiKeyId??void 0,children:t.apiKeyId==null?`—`:c.keys.get(t.apiKeyId)??p(t.apiKeyId)})})]}),F(M,{$align:`right`,$mono:!0,children:f(t)?`—`:t.attempts}),F(M,{$align:`right`,$mono:!0,children:f(t)?`—`:o(t.ttftMs)}),F(M,{$align:`right`,$mono:!0,children:f(t)?a(Math.max(0,i-t.at)):o(t.durationMs)}),F(ri,{log:t}),F(M,{$align:`right`,$mono:!0,children:f(t)?`—`:n(t.costUsd)}),F(M,{children:f(t)?F(fe,{$tone:`accent`,children:`live`}):t.errorCode===null?F(fe,{$tone:`ok`,children:t.status}):F(fe,{$tone:`down`,children:t.errorCode})})]},t.id))})]})}var ai=L.dl`
84
84
  display: grid;
85
85
  grid-template-columns: minmax(120px, auto) minmax(0, 1fr);
86
86
  gap: 6px ${({theme:e})=>e.space(3)};
@@ -1,4 +1,4 @@
1
- import{At as e,B as t,j as n,lt as r}from"./Lamp-DkvXKB-B.js";import{a as i,b as a,i as o,r as s,t as c,y as ee}from"./Panel-CWmOTDAP.js";import{D as l,t as u}from"./Rack-CEuCdVXc.js";import{a as d,c as f,o as p,s as m}from"./index-89mqAVmK.js";import{i as h}from"./Field-BYBri2NV.js";import{useQueryClient as g}from"@tanstack/react-query";import{useLayoutEffect as te,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";var C={debug:10,info:20,warn:30,error:40};function w(e){return typeof e==`string`&&e in C}function T(e,t){return!w(t)||e.level===null||C[e.level]>=C[t]}function E(e){if(typeof e!=`object`||!e)return null;let{raw:t,at:n,level:r,msg:i}=e;return typeof t!=`string`||n!==null&&typeof n!=`number`||r!==null&&!w(r)||i!==null&&typeof i!=`string`?null:{raw:t,at:n,level:r,msg:i}}function D(e){if(typeof e!=`object`||!e)return null;let{lines:t}=e;if(!Array.isArray(t))return null;let n=[];for(let e of t){let t=E(e);if(t===null)return null;n.push(t)}return n}var O=[100,200,500],ne=[{value:``,label:`All levels`},{value:`debug`,label:`Debug and above`},{value:`info`,label:`Info and above`},{value:`warn`,label:`Warnings and errors`},{value:`error`,label:`Errors only`}],re=S(a)`
1
+ import{At as e,B as t,j as n,lt as r}from"./Lamp-DkvXKB-B.js";import{a as i,b as a,i as o,r as s,t as c,y as ee}from"./Panel-CWmOTDAP.js";import{D as l,t as u}from"./Rack-CEuCdVXc.js";import{a as d,c as f,o as p,s as m}from"./index-BT7ewgKS.js";import{i as h}from"./Field-BYBri2NV.js";import{useQueryClient as g}from"@tanstack/react-query";import{useLayoutEffect as te,useMemo as _,useRef as v,useState as y}from"react";import{jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";var C={debug:10,info:20,warn:30,error:40};function w(e){return typeof e==`string`&&e in C}function T(e,t){return!w(t)||e.level===null||C[e.level]>=C[t]}function E(e){if(typeof e!=`object`||!e)return null;let{raw:t,at:n,level:r,msg:i}=e;return typeof t!=`string`||n!==null&&typeof n!=`number`||r!==null&&!w(r)||i!==null&&typeof i!=`string`?null:{raw:t,at:n,level:r,msg:i}}function D(e){if(typeof e!=`object`||!e)return null;let{lines:t}=e;if(!Array.isArray(t))return null;let n=[];for(let e of t){let t=E(e);if(t===null)return null;n.push(t)}return n}var O=[100,200,500],ne=[{value:``,label:`All levels`},{value:`debug`,label:`Debug and above`},{value:`info`,label:`Info and above`},{value:`warn`,label:`Warnings and errors`},{value:`error`,label:`Errors only`}],re=S(a)`
2
2
  gap: ${({theme:e})=>e.space(2)};
3
3
  flex-wrap: wrap;
4
4
  `,k=S(h)`
@@ -1,4 +1,4 @@
1
- import{Ct as e,Ft as t,K as n,Tt as r,V as i,W as a,Y as o,Zt as s,j as c,l,mt as u,u as d}from"./Lamp-DkvXKB-B.js";import{C as f,D as p,_ as m,a as h,b as g,i as _,r as v,t as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as S,i as C,t as w}from"./Rack-CEuCdVXc.js";import{a as T,i as E,n as D,r as O,t as k}from"./RequestTable-CSQGt9W_.js";import{t as A}from"./Chip-D4qvhu1D.js";import{i as j}from"./Field-BYBri2NV.js";import{useMemo as M,useState as N}from"react";import{Fragment as P,jsx as F,jsxs as I}from"react/jsx-runtime";import L from"styled-components";var R={none:{legend:`Not captured`,message:`Body capture was not running for this request. It needs OMNI_BODY_LOGGING_ALLOWED in the environment and the body logging setting turned on, and the calling key must not have opted out.`},missing:{legend:`Captured, then lost`,message:`This request was captured, but its artifact is no longer on disk. Retention or the row cap has since pruned it, or something removed the file underneath the gateway.`},corrupt:{legend:`Captured, but unreadable`,message:`This request was captured and the artifact is still on disk, but it failed its checksum or would not decrypt. Changing OMNI_ENCRYPTION_KEY invalidates every artifact written under the old one.`}},z=new Intl.NumberFormat(`en-US`),B=L.p`
1
+ import{Ct as e,Ft as t,K as n,Tt as r,V as i,W as a,Y as o,Zt as s,j as c,l,mt as u,u as d}from"./Lamp-DkvXKB-B.js";import{C as f,D as p,_ as m,a as h,b as g,i as _,r as v,t as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as S,i as C,t as w}from"./Rack-CEuCdVXc.js";import{a as T,i as E,n as D,r as O,t as k}from"./RequestTable-D8L6iVJV.js";import{t as A}from"./Chip-D4qvhu1D.js";import{i as j}from"./Field-BYBri2NV.js";import{useMemo as M,useState as N}from"react";import{Fragment as P,jsx as F,jsxs as I}from"react/jsx-runtime";import L from"styled-components";var R={none:{legend:`Not captured`,message:`Body capture was not running for this request. It needs OMNI_BODY_LOGGING_ALLOWED in the environment and the body logging setting turned on, and the calling key must not have opted out.`},missing:{legend:`Captured, then lost`,message:`This request was captured, but its artifact is no longer on disk. Retention or the row cap has since pruned it, or something removed the file underneath the gateway.`},corrupt:{legend:`Captured, but unreadable`,message:`This request was captured and the artifact is still on disk, but it failed its checksum or would not decrypt. Changing OMNI_ENCRYPTION_KEY invalidates every artifact written under the old one.`}},z=new Intl.NumberFormat(`en-US`),B=L.p`
2
2
  font-size: 12px;
3
3
  color: ${({theme:e})=>e.color.inkDim};
4
4
  max-width: 62ch;
@@ -1,4 +1,4 @@
1
- import{jt as e}from"./Lamp-DkvXKB-B.js";import{t}from"./preload-helper-BPaHpbO_.js";import{C as n,a as r,c as i,d as a,f as o,i as s,l as c,r as l,t as u}from"./Panel-CWmOTDAP.js";import{t as d}from"./Rack-CEuCdVXc.js";import{t as f}from"./index-89mqAVmK.js";import{Component as p,Suspense as m,createContext as h,lazy as g,useContext as _,useMemo as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";import{pluginApiPath as C}from"@omnigateway/dashboard-sdk";var w=new Map;function T(e){let t=w.get(e);if(t!==void 0)return t;let n={get:(t,n)=>c(C(e,t),n),post:(t,n)=>a(C(e,t),n),put:(t,n)=>o(C(e,t),n),del:t=>i(C(e,t))};return w.set(e,n),n}var E=h(e=>t(()=>import(e),[]));E.Provider;function D(){return _(E)}function O(e,t){let n=e?.default;if(n==null)throw Error(`plugin ${t} has no default export from definePluginUI`);if(typeof n.mount!=`function`)throw Error(`plugin ${t} exported a default without a mount function`);return n}function k(e,t,n){return g(async()=>{let r=O(await n(t),e);return{default:()=>r.mount({pluginId:e,api:T(e)})}})}var A=S.p`
1
+ import{jt as e}from"./Lamp-DkvXKB-B.js";import{t}from"./preload-helper-BPaHpbO_.js";import{C as n,a as r,c as i,d as a,f as o,i as s,l as c,r as l,t as u}from"./Panel-CWmOTDAP.js";import{t as d}from"./Rack-CEuCdVXc.js";import{t as f}from"./index-BT7ewgKS.js";import{Component as p,Suspense as m,createContext as h,lazy as g,useContext as _,useMemo as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";import{pluginApiPath as C}from"@omnigateway/dashboard-sdk";var w=new Map;function T(e){let t=w.get(e);if(t!==void 0)return t;let n={get:(t,n)=>c(C(e,t),n),post:(t,n)=>a(C(e,t),n),put:(t,n)=>o(C(e,t),n),del:t=>i(C(e,t))};return w.set(e,n),n}var E=h(e=>t(()=>import(e),[]));E.Provider;function D(){return _(E)}function O(e,t){let n=e?.default;if(n==null)throw Error(`plugin ${t} has no default export from definePluginUI`);if(typeof n.mount!=`function`)throw Error(`plugin ${t} exported a default without a mount function`);return n}function k(e,t,n){return g(async()=>{let r=O(await n(t),e);return{default:()=>r.mount({pluginId:e,api:T(e)})}})}var A=S.p`
2
2
  font-size: 13px;
3
3
  color: ${({theme:e})=>e.color.down};
4
4
  `,j=S.p`
@@ -34,7 +34,7 @@ import{Gt as e,J as t,Kt as n,Vt as r,X as i,Xt as a,Z as o,kt as s}from"./Lamp-
34
34
  display: grid;
35
35
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
36
36
  gap: ${({theme:e})=>e.space(2)};
37
- `,oe=[{key:`defaultModel`,label:`Default model`,required:!0},{key:`fableModel`,label:`Fable model`,required:!1},{key:`opusModel`,label:`Opus model`,required:!1},{key:`sonnetModel`,label:`Sonnet model`,required:!1},{key:`haikuModel`,label:`Haiku model`,required:!1}];function V(){let[e,n]=O(`claude`),[r,i]=O(()=>({claude:{},opencode:{}})),a=s(),o=r[e],u=typeof o.defaultModel==`string`&&o.defaultModel!==``?o:void 0,d=t(e,u),m=z.find(t=>t.id===e);return k(v,{legend:`Agent setup`,children:A(c,{children:[k(p,{children:z.map(t=>k(l,{type:`button`,$variant:t.id===e?`primary`:`ghost`,onClick:()=>n(t.id),children:t.label},t.id))}),A(B,{children:[m?.where,`. The key is a placeholder — paste your own over it. Or run`,` `,A(y,{children:[`omni setup `,e]}),` to write these files directly.`]}),(a.data?.length??0)>0?k(ae,{children:oe.map(t=>k(w,{label:t.label,children:n=>A(S,{...n,value:o[t.key]??``,onChange:n=>i(r=>({...r,[e]:{...r[e],[t.key]:n.target.value||void 0}})),children:[k(`option`,{value:``,children:t.required?`Choose a pool`:`Not mapped`}),a.data?.map(e=>k(`option`,{value:e.id,children:e.id},e.id))]})},t.key))}):null,a.isLoading?k(f,{rows:2}):d.isError?k(g,{error:d.error,onRetry:()=>void d.refetch()}):d.isLoading?k(f,{rows:4}):(a.data?.length??0)===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):u===void 0?A(B,{children:[`Choose a default model to generate `,m?.label,` settings.`]}):d.data===void 0||d.data.length===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):d.data.map(e=>A(`div`,{children:[k(ie,{children:e.path}),k(re,{as:`pre`,children:e.contents.trimEnd()})]},e.path)),d.isError?k(B,{children:_(d.error)}):null]})})}var H={off:`Off`,lite:`Lite — names the lazier option`,full:`Full — the ladder enforced`,ultra:`Ultra — challenges the requirement`},U=[{id:`tier`,label:`Tier`,blurb:`Prefers a lower tier.`},{id:`health`,label:`Health`,blurb:`Penalises recent failures and an open breaker.`},{id:`quota`,label:`Quota`,blurb:`Prefers accounts ahead of their window's burn rate.`},{id:`cost`,label:`Cost`,blurb:`Prefers the cheaper candidate.`},{id:`latency`,label:`Latency`,blurb:`Prefers the faster observed first token.`},{id:`load`,label:`Load`,blurb:`Prefers accounts with fewer requests in flight.`}],W=[{id:`maxAttempts`,label:`Attempts per request`,hint:`Candidates dispatch may try. 1 disables failover.`,unit:`attempts`,step:1,min:1},{id:`requestDeadlineMs`,label:`Request deadline`,hint:`Across all attempts. 0 disables only OmniGateway's deadline.`,unit:`ms`,step:1e3,min:0},{id:`breakerThreshold`,label:`Breaker threshold`,hint:`Consecutive failures before an account and model leaves rotation.`,unit:`failures`,step:1,min:1},{id:`breakerCooldownMs`,label:`Breaker cooldown`,hint:`Wait before a tripped account is probed. Doubles per extra failure.`,unit:`ms`,step:1e3,min:1},{id:`logRetentionDays`,label:`Log retention`,hint:`How long request rows are kept before pruning.`,unit:`days`,step:1,min:1},{id:`quotaPollIntervalMs`,label:`Quota poll interval`,hint:`How often a provider is asked for remaining quota. 0 disables. Needs a restart.`,unit:`ms`,step:6e4,min:0}],G=j.div`
37
+ `,oe=[{key:`defaultModel`,label:`Default model`,required:!0},{key:`fableModel`,label:`Fable model`,required:!1},{key:`opusModel`,label:`Opus model`,required:!1},{key:`sonnetModel`,label:`Sonnet model`,required:!1},{key:`haikuModel`,label:`Haiku model`,required:!1}];function V(){let[e,n]=O(`claude`),[r,i]=O(()=>({claude:{},opencode:{}})),a=s(),o=r[e],u=typeof o.defaultModel==`string`&&o.defaultModel!==``?o:void 0,d=t(e,u),m=z.find(t=>t.id===e);return k(v,{legend:`Agent setup`,children:A(c,{children:[k(p,{children:z.map(t=>k(l,{type:`button`,$variant:t.id===e?`primary`:`ghost`,onClick:()=>n(t.id),children:t.label},t.id))}),A(B,{children:[m?.where,`. The key is a placeholder — paste your own over it. Or run`,` `,A(y,{children:[`omni setup `,e]}),` to write these files directly.`]}),e===`claude`?A(B,{children:[`Claude Code cannot read a window from this gateway, so it assumes 200k for a pool id it does not recognise and auto-compacts there. For a pool whose models hold 1M, append`,` `,k(y,{children:`[1m]`}),` to the model name — `,k(y,{children:`--model 'pool[1m]'`}),` — which lifts it per invocation. The suffix is stripped before the request is sent, so the pool id arrives unchanged.`]}):null,(a.data?.length??0)>0?k(ae,{children:oe.map(t=>k(w,{label:t.label,children:n=>A(S,{...n,value:o[t.key]??``,onChange:n=>i(r=>({...r,[e]:{...r[e],[t.key]:n.target.value||void 0}})),children:[k(`option`,{value:``,children:t.required?`Choose a pool`:`Not mapped`}),a.data?.map(e=>k(`option`,{value:e.id,children:e.id},e.id))]})},t.key))}):null,a.isLoading?k(f,{rows:2}):d.isError?k(g,{error:d.error,onRetry:()=>void d.refetch()}):d.isLoading?k(f,{rows:4}):(a.data?.length??0)===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):u===void 0?A(B,{children:[`Choose a default model to generate `,m?.label,` settings.`]}):d.data===void 0||d.data.length===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):d.data.map(e=>A(`div`,{children:[k(ie,{children:e.path}),k(re,{as:`pre`,children:e.contents.trimEnd()})]},e.path)),d.isError?k(B,{children:_(d.error)}):null]})})}var H={off:`Off`,lite:`Lite — names the lazier option`,full:`Full — the ladder enforced`,ultra:`Ultra — challenges the requirement`},U=[{id:`tier`,label:`Tier`,blurb:`Prefers a lower tier.`},{id:`health`,label:`Health`,blurb:`Penalises recent failures and an open breaker.`},{id:`quota`,label:`Quota`,blurb:`Prefers accounts ahead of their window's burn rate.`},{id:`cost`,label:`Cost`,blurb:`Prefers the cheaper candidate.`},{id:`latency`,label:`Latency`,blurb:`Prefers the faster observed first token.`},{id:`load`,label:`Load`,blurb:`Prefers accounts with fewer requests in flight.`}],W=[{id:`maxAttempts`,label:`Attempts per request`,hint:`Candidates dispatch may try. 1 disables failover.`,unit:`attempts`,step:1,min:1},{id:`requestDeadlineMs`,label:`Request deadline`,hint:`Across all attempts. 0 disables only OmniGateway's deadline.`,unit:`ms`,step:1e3,min:0},{id:`breakerThreshold`,label:`Breaker threshold`,hint:`Consecutive failures before an account and model leaves rotation.`,unit:`failures`,step:1,min:1},{id:`breakerCooldownMs`,label:`Breaker cooldown`,hint:`Wait before a tripped account is probed. Doubles per extra failure.`,unit:`ms`,step:1e3,min:1},{id:`logRetentionDays`,label:`Log retention`,hint:`How long request rows are kept before pruning.`,unit:`days`,step:1,min:1},{id:`quotaPollIntervalMs`,label:`Quota poll interval`,hint:`How often a provider is asked for remaining quota. 0 disables. Needs a restart.`,unit:`ms`,step:6e4,min:0}],G=j.div`
38
38
  display: grid;
39
39
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
40
40
  gap: ${({theme:e})=>e.space(3)};
@@ -1,4 +1,4 @@
1
- import{_ as e,i as t,y as n}from"./shared-Dtkw6SE0.js";import{$ as r,F as i,I as a,K as o,L as s,V as ee,W as te,Zt as ne,at as re,et as ie,g as c,it as ae,j as l,l as oe,nt as u,ot as d,r as f,rt as se,tt as p,u as ce}from"./Lamp-DkvXKB-B.js";import{C as m,D as h,O as g,_,a as le,b as v,i as ue,t as de,v as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as fe,i as pe,t as me,x as S}from"./Rack-CEuCdVXc.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./RequestTable-CSQGt9W_.js";import{t as C}from"./chevron-down-Bs0tSOyA.js";import{t as w}from"./chevron-right-DSaI1kFo.js";import{i as T,r as E}from"./index-89mqAVmK.js";import{i as be}from"./Field-BYBri2NV.js";import{t as D}from"./Meter-stpt3vQu.js";import{i as O,n as k,r as A,t as j}from"./Table-CVDZ69Zx.js";import{n as xe,r as M}from"./WindowChart-BeGPsccS.js";import{i as N,n as P,r as Se,t as Ce}from"./SummaryDeck-7ivuca39.js";import{Fragment as we,useMemo as F,useState as I}from"react";import{Fragment as Te,jsx as L,jsxs as R}from"react/jsx-runtime";import z from"styled-components";var B=z.div`
1
+ import{_ as e,i as t,y as n}from"./shared-Dtkw6SE0.js";import{$ as r,F as i,I as a,K as o,L as s,V as ee,W as te,Zt as ne,at as re,et as ie,g as c,it as ae,j as l,l as oe,nt as u,ot as d,r as f,rt as se,tt as p,u as ce}from"./Lamp-DkvXKB-B.js";import{C as m,D as h,O as g,_,a as le,b as v,i as ue,t as de,v as y,x as b,y as x}from"./Panel-CWmOTDAP.js";import{D as fe,i as pe,t as me,x as S}from"./Rack-CEuCdVXc.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./RequestTable-D8L6iVJV.js";import{t as C}from"./chevron-down-Bs0tSOyA.js";import{t as w}from"./chevron-right-DSaI1kFo.js";import{i as T,r as E}from"./index-BT7ewgKS.js";import{i as be}from"./Field-BYBri2NV.js";import{t as D}from"./Meter-stpt3vQu.js";import{i as O,n as k,r as A,t as j}from"./Table-CVDZ69Zx.js";import{n as xe,r as M}from"./WindowChart-BeGPsccS.js";import{i as N,n as P,r as Se,t as Ce}from"./SummaryDeck-7ivuca39.js";import{Fragment as we,useMemo as F,useState as I}from"react";import{Fragment as Te,jsx as L,jsxs as R}from"react/jsx-runtime";import z from"styled-components";var B=z.div`
2
2
  display: grid;
3
3
  grid-template-areas:
4
4
  "chassis"
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_app-Drf03PWk.js","assets/Panel-CWmOTDAP.js","assets/client-BZ_ev12J.js","assets/shared-Dtkw6SE0.js","assets/Lamp-DkvXKB-B.js","assets/Rack-CEuCdVXc.js","assets/RequestTable-CSQGt9W_.js","assets/TokenBreakdown-D1Wtza1y.js","assets/chevron-right-DSaI1kFo.js","assets/dist-D03q-60i.js","assets/Chip-D4qvhu1D.js","assets/Field-BYBri2NV.js","assets/Table-CVDZ69Zx.js","assets/chevron-down-Bs0tSOyA.js","assets/Meter-stpt3vQu.js","assets/WindowChart-BeGPsccS.js","assets/SummaryDeck-7ivuca39.js","assets/Readout-BTh732hP.js","assets/login-75MYwRdC.js","assets/reasons-Du1OBWAM.js","assets/_app.index-DigYfob3.js","assets/_app.accounts-W1USUo2Q.js","assets/CopyValue-SnsT2LML.js","assets/plus-BCfjC6nk.js","assets/trash-D4QWzEK_.js","assets/Toggle-t82IhqEt.js","assets/_app.console-BvIGqIe7.js","assets/_app.database-CtFJLcfE.js","assets/_app.keys-B1fRMyU-.js","assets/_app.logs-D73Qcx9S.js","assets/_app.models-Dpl1O2RE.js","assets/_app.settings-tRLrVJoq.js","assets/_app.usage-D2qlcEp4.js","assets/_app.plugins._pluginId-BNrRTn9l.js","assets/preload-helper-BPaHpbO_.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_app-Drf03PWk.js","assets/Panel-CWmOTDAP.js","assets/client-B5gCdtC1.js","assets/shared-Dtkw6SE0.js","assets/Lamp-DkvXKB-B.js","assets/Rack-CEuCdVXc.js","assets/RequestTable-D8L6iVJV.js","assets/TokenBreakdown-D1Wtza1y.js","assets/chevron-right-DSaI1kFo.js","assets/dist-D03q-60i.js","assets/Chip-D4qvhu1D.js","assets/Field-BYBri2NV.js","assets/Table-CVDZ69Zx.js","assets/chevron-down-Bs0tSOyA.js","assets/Meter-stpt3vQu.js","assets/WindowChart-BeGPsccS.js","assets/SummaryDeck-7ivuca39.js","assets/Readout-BTh732hP.js","assets/login-Sbmi96aa.js","assets/reasons-Du1OBWAM.js","assets/_app.index-DigYfob3.js","assets/_app.accounts-W1USUo2Q.js","assets/CopyValue-SnsT2LML.js","assets/plus-BCfjC6nk.js","assets/trash-D4QWzEK_.js","assets/Toggle-t82IhqEt.js","assets/_app.console-DM6ygS6a.js","assets/_app.database-CtFJLcfE.js","assets/_app.keys-B1fRMyU-.js","assets/_app.logs-BKjcBK68.js","assets/_app.models-Dpl1O2RE.js","assets/_app.settings-C3GzeJ4q.js","assets/_app.usage-D2qlcEp4.js","assets/_app.plugins._pluginId-C7oxa5Wf.js","assets/preload-helper-BPaHpbO_.js"])))=>i.map(i=>d[i]);
2
2
  import{Cn as e,Dn as t,En as n,H as r,In as i,K as a,Mn as o,Mt as s,Nn as c,On as l,Pn as u,Sn as d,Tn as f,W as p,_n as m,an as h,cn as g,fn as _,gn as v,hn as y,jn as b,kn as x,ln as S,mn as C,on as w,pn as T,rn as E,sn as ee,un as te,vn as ne,wn as re,xn as ie,yn as ae}from"./Lamp-DkvXKB-B.js";import{a as oe,c as se,i as ce,n as D,o as le,r as O,s as ue,t as k}from"./preload-helper-BPaHpbO_.js";import{A as de,C as fe,D as pe,_ as me,a as he,k as A,l as ge,s as _e,t as ve}from"./Panel-CWmOTDAP.js";import{C as ye,E as be,T as xe,n as Se}from"./Rack-CEuCdVXc.js";import{MutationCache as Ce,QueryCache as we,QueryClient as Te,QueryClientProvider as Ee,useQueryClient as De}from"@tanstack/react-query";import*as j from"react";import{StrictMode as Oe,createContext as ke,use as Ae,useEffect as M,useRef as je,useState as Me,useSyncExternalStore as Ne}from"react";import{Fragment as Pe,jsx as N,jsxs as P}from"react/jsx-runtime";import{createRoot as Fe}from"react-dom/client";import Ie from"styled-components";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function F(e){return e?.isNotFound===!0}function Le(){try{return sessionStorage}catch{return}}var Re=`tsr-scroll-restoration-v1_3`,ze=Le();function Be(){try{return JSON.parse(ze?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function Ve(){try{ze?.setItem(Re,JSON.stringify(I))}catch{}}var I=Be(),He=`data-scroll-restoration-id`,Ue=e=>e.state.__TSR_key||e.href;function We(e){let t=e.getAttribute(He);if(t)return`[${He}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var Ge=!1,Ke=`window`;function qe(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function Je(e){let t=new Set;for(let n of e){if(n===Ke)continue;let e=qe(n);e&&t.add(e)}return t}function Ye(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||Ue,a=new Set,o=e=>{let t=I[e]||={};for(let e of a)e===document?t[Ke]={scrollX,scrollY}:e.isConnected&&(t[We(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,Ge=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{Ge||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),Ve()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=I[d];if(e){let t=I[u];for(let n in e){if(n===Ke){if(s)continue}else{let e=qe(n);if(!e||s&&o&&(l??=Je(o),l.has(e)))continue}t||=I[u]={},t[n]??=e[n]}}}Ge=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=Je(o));let t=e&&i&&c,s=r.restoring?I[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===Ke){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=qe(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{Ge=!1}}))}function Xe(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Ze(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Qe(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Ze(r):Array.isArray(t)?t.push(Ze(r)):n[e]=[t,Ze(r)]}return n}var $e=/^(?:\s|["[{\d-]|fa|nu|tr)/,et=nt(JSON.parse),tt=rt(JSON.stringify,JSON.parse);function nt(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Qe(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!$e.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function rt(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!$e.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=Xe(e,r);return t?`?${t}`:``}}function it(e){return{input:({url:t})=>{for(let n of e)t=ot(n,t);return t},output:({url:t})=>{for(let n=e.length-1;n>=0;n--)t=st(e[n],t);return t}}}function at(e){let t=te(e.basepath),n=`/${t}`,r=e.caseSensitive?n:n.toLowerCase(),i=`${r}/`;return{input:({url:t})=>{let a=e.caseSensitive?t.pathname:t.pathname.toLowerCase();return a===r?t.pathname=`/`:a.startsWith(i)&&(t.pathname=t.pathname.slice(n.length)),t},output:({url:e})=>(e.pathname=g([`/`,t,e.pathname]),e)}}function ot(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function st(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function ct(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),f=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function p(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let m={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:f,getMatchStore:p,setMatches:h};function h(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{d(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=p(t.routeId);e.get()!==t&&e.set(t)}})}return m}var L=`__TSR_index`,lt=`popstate`,ut=`beforeunload`,dt=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function ft(e){let t=dt.exec(e);return t?`/`+e.slice(t[0].length):e}function pt(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>`
3
3
  \r`.includes(e)?``:encodeURIComponent(e))),ft(e)}function mt(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=_t(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[L];i=ht(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[L];i=ht(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[L]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function ht(e,t){t||={};let n=vt();return{...t,key:n,__TSR_key:n,[L]:e}}function gt(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>pt(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>_t(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=vt();t.history.replaceState({[L]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=_t(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[L]-l.state[L],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=mt({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(ut,x,{capture:!0}),t.removeEventListener(lt,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(ut,x,{capture:!0}),t.addEventListener(lt,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function _t(e,t){let n=pt(e),r=n.indexOf(`#`),i=n.indexOf(`?`),a=vt();return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t||{[L]:0,key:a,__TSR_key:a}}}function vt(){return(Math.random()+1).toString(36).substring(7)}function yt(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function bt(e){return e.pathname+e.search+e.hash}function xt(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function St(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Ct({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function wt(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function Tt(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Et=class{constructor(r,i){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.routeBranchCache=new WeakMap,this.lightweightCache=new WeakMap,this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options,n=this.basepath??t?.basepath??`/`,r=this.basepath===void 0,i=t?.rewrite;if(this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=w(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:gt()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`,this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;this.resolvePathCache=ae(1e3),e=this.buildRouteTree(),this.setRoutes(e)}if(!this.stores&&this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=ct(this.latestLocation,e),Ye(this)}let a=this.options.basepath??`/`,o=this.options.rewrite;if(r||n!==a||i!==o){this.basepath=a;let e=[],t=te(a);t&&t!==`/`&&e.push(at({basepath:a})),o&&e.push(o),this.rewrite=e.length===0?void 0:e.length===1?e[0]:it(e),this.history&&this.updateLatestLocation(),this.stores&&this.stores.location.set(this.latestLocation)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=ne(this.routeTree,this.options.caseSensitive,(e,t)=>{e.init({originalIndex:t})});return this.options.routeMasks&&m(this.options.routeMasks,e.processedTree),e},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(t,n)=>{let r=({pathname:t,search:r,hash:i,href:a,state:s})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(t)){let a=this.options.parseSearch(r),c=this.options.stringifySearch(a);return{href:t+c+i,publicHref:t+c+i,pathname:e(t),external:!1,searchStr:c,search:o(n?.search,a),hash:e(i.slice(1)),state:u(n?.state,s)}}let c=new URL(a,this.origin),l=ot(this.rewrite,c),d=this.options.parseSearch(l.search),f=this.options.stringifySearch(d);return l.search=f,{href:l.href.replace(l.origin,``),publicHref:a,pathname:e(ft(l.pathname)),external:!!this.rewrite&&yt(l,this.origin),searchStr:f,search:o(n?.search,d),hash:e(l.hash.slice(1)),state:u(n?.state,s)}},i=r(t),{__tempLocation:a,__tempKey:s}=i.state;if(a&&(!s||s===this.tempLocationKey)){let e=r(a);return e.state.key=i.state.key,e.state.__TSR_key=i.state.__TSR_key,delete e.state.__tempLocation,{...e,maskedLocation:i}}return i},this.resolvePathWithBase=(e,t)=>S({base:e,to:t,trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=y(_(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=t=>{let r=(r={})=>{if(r.href){let e=_t(r.href,{});r={...r,to:ot(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let i=r._fromLocation||this._pendingLocation||this.latestLocation,a=this.matchRoutesLightweight(i),s=r.unsafeRelative===`path`?i.pathname:r.from??a[1],c=a[2],d=a[3],p=this.resolvePathWithBase(s,r.to?`${r.to}`:`.`),m=Nt(r.params,d),h=this.routesByPath[_(p)],g;if(h)g=this.getRouteBranch(h);else if(p.includes(`$`))g=[];else{let[e,t,n]=this.getMatchedRoutes(p);g=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(g=[...g,this.options.notFoundRoute])}if(g.length&&l(m))for(let e of g){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){m===d&&(m=Object.assign(Object.create(null),m));try{Object.assign(m,t(m))}catch{}}}let v=t.leaveParams?p:e(ft(ee({path:p,params:m,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath)),y=c;if(t._includeValidateSearch&&this.options.search?.strict){let e={};g.forEach(t=>{if(t.options.validateSearch)try{Object.assign(e,At(t.options.validateSearch,{...e,...y}))}catch{}}),y=e}y=jt(y,r,g,t._includeValidateSearch),y=o(c,y);let b=this.options.stringifySearch(y),x=r.hash===!0?i.hash:r.hash?n(r.hash,i.hash):void 0,S=x?`#${x}`:``,C=r.state===!0?i.state:r.state?n(r.state,i.state):{};r.state&&(C=u(i.state,C));let w=`${v}${b}${S}`,T,E,te=!1;if(this.rewrite){let e=new URL(w,this.origin),t=e.origin,n=st(this.rewrite,e);T=bt(e),yt(n,t)?(E=n.href,te=!0):E=ft(bt(n))}else T=f(w),E=T;return{publicHref:E,href:T,pathname:v,search:y,searchStr:b,state:C,hash:x??``,external:te,unmaskOnReload:r.unmaskOnReload}},i=r(t);if(t.mask)i.maskedLocation=r({from:t.from,...t.mask});else if(this.options.routeMasks){let e=C(i.pathname,this.processedTree);if(e){let n=Object.assign(Object.create(null),e.rawParams),{from:a,params:o,...s}=e.route,c=Nt(o,n);i.maskedLocation=r({from:t.from,...s,params:c})}}return i},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return Dt(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=_(this.latestLocation.href)===_(n.href)&&re(Ct(n.state),Ct(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state.__hashScrollIntoViewOptions=a??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:n,href:r,publicHref:i,...a})=>{let o=r?t(r):void 0;if(o||n){if(e!==void 0||!r){let t=this.buildLocation({to:e,...a}),n=t.maskedLocation??t;r??=n.publicHref,i??=n.publicHref}let t=!o&&i?i:r;return Dt(this,t,a)}return this.buildAndCommitLocation({...a,href:r,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await pn(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(St(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set([...t,...this._cache.values(),...[...r?.values()??[]].flat(),...this._tx?.[3]??[]].filter(e=>!n||n(e)).map(e=>e.id)),a=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),a.push(e));let o=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&xt(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(o);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of a)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let n=e.options,r=e.headers.get(`Location`)||n.href;if(!r){let e=this.buildLocation(n);r=(e.maskedLocation??e).publicHref||`/`}let i;if(c.test(r)||(i=t(r))&&!this.protocolAllowlist.has(i))throw Error(`Redirect blocked: unsafe protocol`);if(i===`http:`||i===`https:`){let e=new URL(r);e.pathname.startsWith(`//`)?r=e.href:yt(e,this.origin)||(r=bt(e),i=void 0)}return i&&(n.reloadDocument=!0),n.href=r,e.headers.set(`Location`,r),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=R,this.preloadRoute=e=>mn(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?this.resolvePathWithBase(e.from||``,e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=v(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!re(o.rawParams,e.params,{partial:!0})?!1:t?.includeSearch??!0?re(a.search,r.search,{partial:!0})?o.rawParams:!1:o.rawParams},this.getStoreConfig=i,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...r,caseSensitive:r.caseSensitive??!1,notFoundMode:r.notFoundMode??`fuzzy`,stringifySearch:r.stringifySearch??tt,parseSearch:r.parseSearch??et,protocolAllowlist:r.protocolAllowlist??ie}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes({routesById:e,routesByPath:t,processedTree:n}){this.routesById=e,this.routesByPath=t,this.processedTree=n;let r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)}getRouteBranch(e){let t=this.routeBranchCache.get(e);return t||(t=T(e),this.routeBranchCache.set(e,t)),t}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,s=!1;(i?i.path!==`/`&&r[`**`]:_(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:s=!0);let c=s?Mt(this.options.notFoundMode,a):void 0,l=Array(a.length),d=this._committed,f=(e,t)=>{let n=d[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?d.find(t=>t.routeId===e.id):void 0},p;for(let n=0;n<a.length;n++){let i=a[n],s=l[n-1],d,m,h;{let n=s?.search??e.search,r=s?._strictSearch??void 0;try{let e=At(i.options.validateSearch,{...n})??void 0;d={...n,...e},m={...r,...e}}catch(e){let r=e;if(e instanceof Ot||(r=new Ot(e.message,{cause:e})),t?.throwOnError)throw r;d=n,m={},h=r}}let g=``,_=``;try{g=i.options.loaderDeps?.({search:d})??``,_=g&&JSON.stringify(g)||``}catch(e){if(t?.throwOnError)throw e;h??=e}let{interpolatedPath:v,usedParams:y}=ee({path:i.fullPath,params:r,decoder:this.pathParamsDecoder,server:this.isServer}),b=i.id+v+_,x=f(i,n),S=this._cache.get(b)??(x?.id===b?x:void 0);p=S?._strictParams??Object.assign(y,p);let C;if(!S)try{Pt(i,p)}catch(e){if(C=F(e)||le(e)?e:new kt(e.message,{cause:e}),t?.throwOnError)throw C}let w=x?`stay`:`enter`,T;if(S)T={...S,cause:w,search:o(x?x.search:S.search,d),_strictSearch:m,searchError:h};else{let e=xt(i)?`pending`:`success`;T={id:b,ssr:i.options.ssr,index:n,routeId:i.id,params:x?.params??p,_strictParams:p,pathname:v,updatedAt:Date.now(),search:x?o(x.search,d):d,_strictSearch:m,searchError:h,status:e,isFetching:!1,error:void 0,paramsError:C,context:{},abortController:t?._controller??new AbortController,cause:w,loaderDeps:x?u(x.loaderDeps,g):g,invalid:!1,preload:!1,staticData:i.options.staticData||{},fullPath:i.fullPath}}let E=c===i.id;T._notFound&&!E&&(T.error=void 0),T._notFound=E,l[n]=T}for(let e=0;e<l.length;e++){let n=l[e];n.params=n.cause===`stay`?o(n.params,p):p,t?._controller&&(n.context={})}return l}matchRoutesLightweight(e){let t=b(this.stores.ids.get()),n=t?this.stores.byRoute.get(t).get():void 0,r=n?.id,i=this.lightweightCache.get(e);if(i&&i[0]===r)return i[1];let[a,o]=this.getMatchedRoutes(e.pathname),s=b(a),c={...e.search};for(let e of a)try{Object.assign(c,At(e.options.validateSearch,c))}catch{}let l=n&&n.routeId===s.id&&n.pathname===e.pathname,u;if(l)u=n.params;else{let e=Object.assign(Object.create(null),o);for(let t of a)try{Pt(t,e)}catch{}u=e}let d=[a,s.fullPath,c,u];return this.lightweightCache.set(e,[r,d]),d}};async function Dt(e,t,{replace:n,ignoreBlocker:r}){if(!x(t,e.protocolAllowlist)){if(!r){let t=e.history._getBlockers();for(let r of t)if(r?.blockerFn&&await r.blockerFn({currentLocation:e.history.location,nextLocation:e.history.location,action:n?`REPLACE`:`PUSH`}))return}e.history._ignoreNextBeforeUnload?.(t),n?window.location.replace(t):window.location.href=t}}var Ot=class extends Error{},kt=class extends Error{};function At(e,t){if(e==null)return{};if(`~standard`in e){let n=e[`~standard`].validate(t);if(n instanceof Promise)throw new Ot(`Async validation not supported`);if(n.issues)throw new Ot(JSON.stringify(n.issues,void 0,2),{cause:n});return n.value}return`parse`in e?e.parse(t):typeof e==`function`?e(t):{}}function jt(e,t,r,i){let a=[];for(let e of r){let t=e.options;`search`in t?t.search?.middlewares&&a.push(...t.search.middlewares):(t.preSearchFilters||t.postSearchFilters)&&a.push(({search:e,next:n})=>{let r=n(t.preSearchFilters?t.preSearchFilters.reduce((e,t)=>t(e),e):e);return t.postSearchFilters?t.postSearchFilters.reduce((e,t)=>t(e),r):r});let n=t.validateSearch;i&&n&&a.push(({search:e,next:t,meta:r})=>{let i=t(e);try{let e=At(n,i);if(r&&e)for(let t in e)t in i||(r.defaulted||=new Map).set(t,e[t]);return{...i,...e}}catch{}return i})}let o=(e,r,i)=>{if(e>=a.length){if(!t.search)return{};if(t.search===!0)return r;let e=n(t.search,r);return i&&(i.explicit=e),e}return a[e]({search:r,next:(t,n)=>{if(n){let n=i||{};return{search:o(e+1,t,n),meta:n}}return o(e+1,t,i)},meta:i})};return o(0,e)}function Mt(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return se}function Nt(e,t){if(e===!1||e===null)return Object.create(null);if((e??!0)===!0)return t;let r=Object.assign(Object.create(null),t);return Object.assign(r,n(e,r))}function Pt(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Ft(e,t){return e.options[t]?.preload?.()}function It(e,t){let n=Ft(e,`component`),r=Ft(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function R(e,t,n){let r=()=>t===!1?void 0:t?Ft(e,t):It(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Lt(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t<e.length?e.slice(0,t):e}var z=0,B=1,Rt=2,V=3,H=[4];function zt(e){return typeof e[0]==`number`}function U(e,t){return t.aborted?Promise.race([Promise.reject(t),e]):new Promise((n,r)=>{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function W(e,t){return e.routesById[t.routeId]}function G(e,t,n){return le(e)?[V,e]:F(e)?(e.routeId||=n,[Rt,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[B,e]):[z,e]}function Bt(e,t){let n=G(t,!0,e.id);if(n[0]!==B)return n;try{e.options.onError?.(n[1])}catch(t){n=G(t,!0,e.id)}return n}function K(e,t,n,r,i){return i[0].signal.aborted?H:$t(e,t,n,Bt(n,r),i)}async function Vt(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;i<r;i++){let r=s[i],u=W(e,r);r.abortController=n[0];let d=s[i-1]?.context??e.options.context??{},f={params:r.params,location:o,navigate:t=>e.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return q(e,r),[i,K(e,t,u,a,n)]}if(c.aborted)return[i,H];let p=r.paramsError??r.searchError;if(p!==void 0)return q(e,r),[i,K(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{Wt(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?U(a,c):a);if(c.aborted)return[i,H];let s=$t(e,t,u,G(o,!1,u.id),n);if(s[0]!==z)return q(e,r),[i,s];r.context={...r.context,...o}}catch(a){return q(e,r),[i,K(e,t,u,a,n)]}finally{r.status=h,Wt(e,r,!1,n[0])}}i()}function Ht(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function q(e,t){let n=t._flight;t._flight=void 0,Ht(e,t,n)?.abort()}function J(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=Ht(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function Ut(e){for(let t of e){let e=t._flight;e&&e[2]++}}function Wt(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function Gt(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function Kt(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return H;if(!i)return[z,void 0];let l=n._flight;Wt(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(Gt(e,t,n,r,s,a,!!o[3]))).then(e=>G(e,!1,r.id),e=>G(e,!0,r.id)).then(t=>(t[0]!==z&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===B&&l[2]?Bt(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],$t(e,t,r,await U(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return q(e,n),H}finally{Wt(e,n,!1,s)}}function qt(e,t,n){t[0]!==V&&(e.status=`success`,e.error=void 0,t[0]===z?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function Jt(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&q(e,r)}function Yt(e,t){return t[0]===B||t[0]===Rt?{...e,status:t[0]===B?`error`:`notFound`,error:t[1],_flight:void 0}:e}function Xt(e,t,n,r,i,a,o){let s=t[1][n],c=W(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(Gt(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=H)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,q(e,s),p=K(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,Ht(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?Kt(e,t,s,c,g,i,a).then(t=>(qt(s,t,l),t[0]===z&&(m&&!a[0].signal.aborted&&Jt(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[z,s.loaderData]),T=(async()=>{try{let e=R(c,void 0,C);e&&await U(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,K(e,t,c,r,a)]}let r=await w;x&&r[0]===z&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>Yt(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let ee=Kt(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,qt(E,e,!1),e));return(t[2]??=[]).push([n,ee,T,E]),ee.then(e=>Yt(E,e))}async function Zt(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=W(e,t[n]);try{let e=R(i,!1);e&&await U(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function Y(e,t){t[2]&&=(J(e,t[2].map(e=>e[3])),void 0)}async function Qt(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=V)throw[a,t];!i&&t[0]!==z&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===V)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function $t(e,t,n,r,i,a){for(;r[0]===V;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[V,t]:[V,t,a]}return[V,o,n]}catch(e){r=a?[B,e]:Bt(n,e),a=!0}}return r}async function en(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Rt?Zt(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=V)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==z&&t[0]<V&&!(`loaderData`in o[e[0]])){s=[e[0],t],d=s[2]=await u(s);break}}}for(let e of n){if(e[0]>=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=V){let n=s[1];if(n[0]!==V||n[1].options.reloadDocument||n[2])return Y(e,t),n;c=!0,s=[0,[B,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===B?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=W(e,u);try{await U(i?Promise.resolve().then(()=>R(m,l===B?`errorComponent`:`notFoundComponent`)):Promise.all([R(m),R(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return Y(e,t),H}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),Y(e,t),J(e,o),p()):u.status=`success`}return t}async function tn(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;t<i;t++){let r=a[t],i=W(e,r).options;if(i.head||i.scripts)try{let t={ssr:e.options.ssr,matches:a,match:r,params:r.params,loaderData:r.loaderData},[o,s]=await U(Promise.all([i.head?.(t),i.scripts?.(t)]),n);r.meta=o?.meta,r.links=o?.links,r.headScripts=o?.scripts,r.styles=o?.styles,r.scripts=s}catch(e){if(e===n&&n.aborted)break;console.error(e)}if(r.status!==`success`||r._notFound)break}return t}async function nn(e,t,n,r){let i=[t,n],a=r[0].signal,o;try{let t=e.stores.matches.get(),s=n.findIndex(e=>e._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await Zt(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l<c&&l!==s;){let e=n[l],i=r[2][l],a=t[l];if(i?.id!==e.id||i.status!==`success`||e.preload||a?.id!==e.id||a.status!==`success`||(l++,i._notFound||a._notFound))break}let u=[],d=r[6]??0,f=d?Promise.resolve(n[d-1]):void 0,p=()=>{for(let t=d;t<c&&!a.aborted;t++)f=Xt(e,i,t,u,f,r,l)},m=await Vt(e,i,r,c,p,l);if(m){if(r[4]=!0,c=m[0],m[1][0]===Rt){let t=await Zt(e,n,m,a);m[2]=t,c=Math.min(c,t+1)}else m[1][0]>=V&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=en(e,i,u,r[0],Qt(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=Qt(i[2],void 0,void 0,h.then(e=>zt(e)?0:Lt(n).length,()=>0))),o=await h}catch(t){if(Y(e,i),t===a&&a.aborted)return H;throw t}return zt(o)?o:tn(e,o,a,r[6]===n.length?r[6]:0)}function rn(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a<n.length;a++){let o=n[a],s=o.status===`success`&&!o._notFound,c=r[a]?.id===o.id&&r[a]?.status===`pending`;if(s&&!c)continue;let l=W(e,o),u=s||o.invalid?0:l.options.pendingMs??e.options.defaultPendingMs,d=l.options.pendingComponent??e.options.defaultPendingComponent;if(!d||typeof u!=`number`||u===1/0){i&&(i[0]=t,i[2]=0,i[4]=!0);return}let f=l.options.pendingMinMs??e.options.defaultPendingMinMs??0,p=!1;if(i?.[1]===o.id?(p=i[0]!==t,i[0]=t):(clearTimeout(i?.[3]),e._pending=i=void 0),i||(e._pending=i=[t,o.id,c?Date.now()+f:t[4]+u,void 0,c||void 0,d]),i[4]&&!p&&i[5]===d)return;if(i[5]=d,!i[4]){clearTimeout(i[3]);let n=i[2]-Date.now();if(n>0){i[3]=setTimeout(()=>rn(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function an(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function on(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Lt(t[3]).some(e=>e.id===n[1]))return;let i;try{await U(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function sn(e,t){e._committed=t,e.stores.setMatches(t)}function cn(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Lt(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e<n.length;e++){let t=n[e];(e<s||t.status===`success`)&&r.add(t.id)}for(let n of[...i,...o.values()]){if(n.status!==`success`||r.has(n.id))continue;let i=W(e,n);!i.options.loader||t-n.updatedAt>=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=wt(n);sn(e,n),J(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),Tt(e,i,n,a,l,t)}async function ln(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function un(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function dn(e,t,n,r,i){let a=n.map(e=>({...e}));Ut(a);for(let t of r)q(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await en(e,o,r,t[0],i)}catch(t){throw J(e,a),t}if(zt(s)){J(e,a),s[0]===V&&e._tx===t&&e._committed===n&&await un(e,t,s);return}if(await tn(e,s,t[0].signal),e._tx!==t||e._committed!==n){J(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),q(e,n))}sn(e,a),J(e,n,a)}async function fn(e,t,n,r,i,a){let o=await nn(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(zt(o)){let n=o[0]===V&&e._tx===t;if((!n||o[1].options.reloadDocument)&&an(e,t),J(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){an(e,t);return}await un(e,t,o);return}let s=o[1];if(e._tx===t&&await on(e,t),e._tx!==t){an(e,t),J(e,s),Y(e,o);return}let c=t[2],l=St(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await on(e,t),e._tx!==t){an(e,t),J(e,s),Y(e,o);return}let n=await e.startTransition(()=>{an(e,t),cn(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){Y(e,o);return}u?.length&&dn(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function pn(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=St(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await ln(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});Ut(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){J(e,m),await ln(e,n);return}e._preflight=void 0;let g,_=()=>fn(e,y,f,()=>rn(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>ln(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&Wt(e,t,!1)}n[0].abort(),J(e,n[3],y[3],!0)}if(e._tx!==y){J(e,y[3]),y[3]=[],g?.(),await ln(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&rn(e,y),g?.(_()),await y[5]}async function mn(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),Ut(a),o=(e._preloads??=new Map).set(i,a),s=await nn(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),J(e,a)),i.abort()}if(!zt(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){F(e)||console.error(e);return}}}var hn=class extends j.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?j.createElement(this.props.errorComponent??gn,{error:e[0],reset:this.reset}):this.props.children}};function gn({error:e}){let[t,n]=j.useState(!1);return P(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[P(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[N(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),N(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),N(`div`,{style:{height:`.25rem`}}),t?N(`div`,{children:N(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?N(`code`,{children:e.message}):null})}):null]})}var X=(e=>(e[e.None=0]=`None`,e[e.Mutable=1]=`Mutable`,e[e.Watching=2]=`Watching`,e[e.RecursedCheck=4]=`RecursedCheck`,e[e.Recursed=8]=`Recursed`,e[e.Dirty=16]=`Dirty`,e[e.Pending=32]=`Pending`,e))(X||{});function _n({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function vn(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var yn=[],bn=0,{link:xn,unlink:Sn,propagate:Cn,checkDirty:wn,shallowPropagate:Tn}=_n({update(e){return e._update()},notify(e){yn[Dn++]=e,e.flags&=~X.Watching},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=X.Mutable|X.Dirty,An(e))}}),En=0,Dn=0,Z,On=0;function kn(e){try{++On,e()}finally{--On||jn()}}function An(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Sn(n,e)}function jn(){if(!(On>0)){for(;En<Dn;){let e=yn[En];yn[En++]=void 0,e.notify()}En=0,Dn=0}}function Mn(e,t){let n=typeof e==`function`,r=e,i={_snapshot:n?void 0:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:n?X.None:X.Mutable,get(){return Z!==void 0&&xn(i,Z,bn),i._snapshot},subscribe(e){let t=vn(e),n={current:!1},r=Nn(()=>{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Z,o=t?.compare??Object.is;if(n)Z=i,++bn,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=X.Mutable|X.RecursedCheck);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Z=a,n&&(i.flags&=~X.RecursedCheck),An(i)}}};return n?(i.flags=X.Mutable|X.Dirty,i.get=function(){let e=i.flags;if(e&X.Dirty||e&X.Pending&&wn(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Tn(e)}}else e&X.Pending&&(i.flags=e&~X.Pending);return Z!==void 0&&xn(i,Z,bn),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Cn(e),Tn(e),jn())}},i}function Nn(e){let t=()=>{let t=Z;Z=n,++bn,n.depsTail=void 0,n.flags=X.Watching|X.RecursedCheck;try{return e()}finally{Z=t,n.flags&=~X.RecursedCheck,An(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:X.Watching|X.RecursedCheck,notify(){let e=this.flags;e&X.Dirty||e&X.Pending&&wn(this.deps,this)?t():this.flags=X.Watching},stop(){this.flags=X.None,this.depsTail=void 0,An(this)}};return t(),n}function Pn(e){let t=A(),n=`not-found-${E(t.stores.location,e=>e.pathname)}-${E(t.stores.status,e=>e)}`;return N(hn,{getResetKey:()=>n,onCatch:(t,n)=>{if(F(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(F(t))return e.fallback?.(t);throw t},children:e.children})}function Fn(){return N(`p`,{children:`Not Found`})}function Q(e){return N(Pe,{children:e.children})}function In(e,t,n){return t.options.notFoundComponent?N(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?N(e.options.defaultNotFoundComponent,{...n}):N(Fn,{})}function Ln(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?N(n,{}):null}var Rn=(e,t)=>e[0]===t[0]&&e[1]===t[1],zn=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Bn=j.memo(function({routeId:e}){let t=A();return N(Vn,{router:t,match:E(t.stores.getMatchStore(e),e=>e)})});function Vn({router:e,match:t}){let n=e.routesById[t.routeId],r=Ln(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=zn(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?j.Suspense:Q,l=i?hn:Q,u=o?Pn:Q;return P(n.isRoot?n.options.shellComponent??Q:Q,{children:[N(oe.Provider,{value:t.routeId,children:N(c,{fallback:r,children:N(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(F(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:N(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return j.createElement(o,e)},children:s?N(h,{fallback:r,children:N(Hn,{match:t})}):N(Hn,{match:t})})})})}),null]})}var Hn=j.memo(function({match:e}){let t=A(),n=e.routeId,r=t.routesById[n],i=j.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=j.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?N(e,{},i):N(Un,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!zn(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Ln(t,r)}if(e.status===`notFound`)return In(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Un=j.memo(function(){let e=A(),t=j.useContext(oe),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=E(a,e=>[!!e._notFound,e.error],Rn),i=E(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return In(e,e.routesById[t],r);if(!i)return null;let a=N(Bn,{routeId:i});return t===`__root__`?N(j.Suspense,{fallback:Ln(e),children:a}):a});function Wn(e,t){let n=e[1];e.length=0,n?.(t)}function Gn({t:e}){let t=A(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Wn(n,!1),n.push(i,a),e(t),j.startTransition(r)}),i(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(_(r.publicHref)!==_(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...St(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function Kn(){let e=A(),t=e.routesById[se],n=Ln(e,t),r=e.ssr?Q:j.Suspense,i=P(Pe,{children:[N(Gn,{t:j.useState()[1]}),N(r,{fallback:n,children:N(qn,{})})]});return e.options.InnerWrap?N(e.options.InnerWrap,{children:i}):i}function qn(){let e=A(),t=e._rendered,n=E(e.stores.matches,e=>t[0]??e),r=n[0],a=r?.routeId;i(()=>{t[0]===n&&Wn(t,!0)},[t,n]);let o=a?N(Bn,{routeId:a}):null;return N(oe.Provider,{value:a,children:e.options.disableGlobalCatchBoundary?o:N(hn,{getResetKey:()=>r,onCatch:void 0,children:o})})}var Jn=e=>({createMutableStore:Mn,createReadonlyStore:Mn,batch:kn}),Yn=e=>new Xn(e),Xn=class extends Et{constructor(e){super(e,Jn)}};function Zn({router:e,children:t,...n}){l(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=N(de.Provider,{value:e,children:t});return e.options.Wrap?N(e.options.Wrap,{children:r}):r}function Qn({router:e,...t}){return N(Zn,{router:e,...t,children:N(Kn,{})})}var $n=Ie.div`
4
4
  display: flex;
@@ -11,4 +11,4 @@ import{Cn as e,Dn as t,En as n,H as r,In as i,K as a,Mn as o,Mt as s,Nn as c,On
11
11
  font-size: 13px;
12
12
  color: ${({theme:e})=>e.color.inkDim};
13
13
  max-width: 48ch;
14
- `,tr=ce()({component:Un,notFoundComponent:()=>N($n,{children:P(fe,{$gap:3,style:{alignItems:`center`},children:[N(me,{children:`Not found`}),N(er,{children:`This console has no screen at that address.`}),N(pe,{as:`a`,href:`/`,$variant:`primary`,$size:`sm`,children:`Back to the rack`})]})})}),nr=`stream:console`,rr={"res:usage":{predicate:e=>e.queryKey[0]===`usage`||e.queryKey[0]===`client`&&(e.queryKey[1]===`usage`||e.queryKey[1]===`summary`)},"res:logs":{predicate:e=>e.queryKey[0]===`logs`&&e.queryKey[1]!==`body`||e.queryKey[0]===`client`&&e.queryKey[1]===`logs`||(e.queryKey[0]===`logPages`||e.queryKey[0]===`client`&&e.queryKey[1]===`logPages`)&&p(e.state.data)},"res:credentials":{queryKey:a.credentials},"res:keys":{queryKey:a.keys},"res:settings":{queryKey:a.settings},"res:models":{queryKey:a.models},"res:quota":{predicate:e=>e.queryKey[0]===`quota-history`||e.queryKey[0]===`credentials`&&e.queryKey[1]===`health`},[nr]:{queryKey:[`console`]}},ir=Object.keys(rr),ar=ir.filter(e=>e.startsWith(`res:`)),or=ir.filter(e=>e.startsWith(`stream:`));function sr(e,t){if(t===`res:*`){lr(e);return}let n=rr[t];n!==void 0&&e.invalidateQueries(n)}function cr(e){for(let t of ir)sr(e,t)}function lr(e){e.invalidateQueries()}var ur=4401,dr=500,fr=3e4,pr=new Set([...ar,...or]),mr=3,hr=6e4,gr=(e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)};function _r(){let{protocol:e,host:t}=window.location;return`${e===`https:`?`wss:`:`ws:`}//${t}/api/stream`}function vr(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=t,{type:r,topic:i,seq:a}=n;return typeof r!=`string`||i!==void 0&&typeof i!=`string`||a!==void 0&&typeof a!=`number`?null:{type:r,...typeof i==`string`?{topic:i}:{},...typeof a==`number`?{seq:a}:{},...`payload`in n?{payload:n.payload}:{}}}function yr(e){let t=new Set,n=new Set,r=new Map,i=new Map,a=new Map,o=e=>a.has(e)||pr.has(e),s=[],c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=0,h=null,g={status:`poll`,pushed:()=>!1};function _(){let e=p?`offline`:u&&!f?`push`:`poll`,r=e===`push`;g={status:e,pushed:e=>r&&n.has(e)};for(let e of t)e()}function v(e){c?.send(JSON.stringify(e))}function y(e,t){let n=i.get(e);if(n===void 0||n.size===0)return!1;for(let e of[...n])e(t);return!0}function b(){for(let e of ar)v({type:`subscribe`,topic:e});for(let e of or){let t=r.get(e);v(t===void 0?{type:`subscribe`,topic:e}:{type:`subscribe`,topic:e,sinceSeq:t})}for(let e of a.keys())v({type:`subscribe`,topic:e})}function x(){u=!0,m=0,n.clear(),d&&cr(e.client),d=!0,b(),_()}function S(t){let i=vr(t.data);if(i===null)return;let{topic:a}=i;if(i.type===`ack`){a!==void 0&&o(a)&&(n.add(a),y(a,{kind:`open`}),_());return}if(i.type===`error`){a!==void 0&&(n.delete(a)&&_(),y(a,{kind:`refused`}));return}if(a!==void 0){if(i.type===`gap`){i.seq!==void 0&&r.set(a,i.seq),y(a,{kind:`gap`}),sr(e.client,a);return}if(i.type===`event`){if(a===`res:*`){lr(e.client);return}if(i.seq!==void 0){let t=r.get(a);if(r.set(a,i.seq),t!==void 0&&i.seq>t+1){y(a,{kind:`gap`}),sr(e.client,a);return}}i.payload!==void 0&&y(a,{kind:`frame`,payload:i.payload})||sr(e.client,a)}}}function C(t){let r=u;u=!1,c=null,n.clear();for(let e of[...i.keys()])y(e,{kind:`closed`});if(l){if(t.code===ur){p=!0,l=!1,_(),lr(e.client);return}if(!r)f=!0;else{let t=e.now();s=[...s.filter(e=>e>t-hr),t],s.length>=mr&&(f=!0)}_(),w()}}function w(){let t=Math.min(fr,dr*2**m);m+=1,h=e.timer(()=>{h=null,l&&T()},t)}function T(){let t=new WebSocket(e.url());c=t,t.addEventListener(`open`,x),t.addEventListener(`message`,S),t.addEventListener(`close`,C)}function E(e,t){let n=i.get(e)??new Set;return i.set(e,n),n.add(t),()=>{n.delete(t),n.size===0&&i.delete(e)}}return{subscribe(e){return t.add(e),()=>{t.delete(e)}},snapshot:()=>g,hold(e,t){let r=E(e,t),i=(a.get(e)??0)+1;a.set(e,i),i===1&&u&&v({type:`subscribe`,topic:e}),n.has(e)&&t({kind:`open`});let o=!1;return()=>{if(o)return;o=!0,r();let t=(a.get(e)??1)-1;if(t>0){a.set(e,t);return}a.delete(e),n.delete(e)&&_(),u&&v({type:`unsubscribe`,topic:e})}},publish(e,t){return!u||!n.has(e)?!1:(v({type:`send`,topic:e,payload:t}),!0)},onStream:E,start(){return l=!0,T(),()=>{l=!1,h?.(),h=null;let e=c;c=null,u=!1,e?.close()}}}}var br=ke(null),xr=ke(null),Sr=ke(null),Cr={status:`poll`,pushed:()=>!1};function wr({children:e,enabled:t=!0,timer:n=gr,now:r=Date.now,url:i=_r}){let a=De(),[o]=Me(()=>yr({client:a,timer:n,now:r,url:i})),[s]=Me(()=>({subscribe:(e,t)=>o.hold(e,e=>{if(e.kind===`gap`){t({kind:`closed`});return}t(e)}),send:o.publish}));M(()=>{if(t)return o.start()},[o,t]);let c=Ne(o.subscribe,o.snapshot,o.snapshot);return N(br,{value:c,children:N(xr,{value:o.onStream,children:N(Sr,{value:s,children:e})})})}function Tr(){return Ae(br)??Cr}function Er(e,t){let n=Ae(xr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null)return n(e,e=>r.current(e))},[n,e])}function Dr(e,t){let n=Ae(Sr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null&&e!==null)return n.subscribe(e,e=>r.current(e))},[n,e])}function Or({children:e}){let t=Tr(),n=Ae(Sr);return N(be,{connection:t,...n===null?{}:{channels:n},children:e})}async function kr(e){return e.queryClient.ensureQueryData({queryKey:a.status,queryFn:()=>ge(`/api/status`),revalidateIfStale:!0})}function Ar(e){let t=e.principal;return e.authenticated!==!0||t==null?`/login`:t.kind===`client`?`/client`:t.kind===`admin`||t.kind===`viewer`?`/`:`/login`}function jr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/`)throw ue({to:n})}function Mr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/client`)throw ue({to:n})}var Nr=O(`/_app`)({beforeLoad:async({context:e,location:t})=>{jr(await kr(e),t.href),await e.queryClient.ensureQueryData(r)},pendingComponent:Pr,pendingMs:200,errorComponent:D(()=>k(()=>import(`./_app-Drf03PWk.js`),__vite__mapDeps([0,1])),`errorComponent`),component:Fr});function Pr(){return N(ve,{legend:`Console`,children:N(he,{rows:6})})}function Fr(){let e=s().data??[];return N(wr,{children:P(Or,{children:[N(xe,{$providers:e}),N(Se,{children:N(Un,{})})]})})}var Ir=O(`/client`)({beforeLoad:async({context:e,location:t})=>{Mr(await kr(e),t.href)},component:D(()=>k(()=>import(`./client-BZ_ev12J.js`),__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17])),`component`)}),Lr=O(`/login`)({validateSearch:e=>({...typeof e.next==`string`?{next:e.next}:{},...typeof e.reason==`string`?{reason:e.reason}:{}}),component:D(()=>k(()=>import(`./login-75MYwRdC.js`),__vite__mapDeps([18,4,1,11,19])),`component`)}),Rr=O(`/_app/`)({component:D(()=>k(()=>import(`./_app.index-DigYfob3.js`),__vite__mapDeps([20,4,1,5,7,10,14,12,17])),`component`)}),zr=O(`/_app/accounts`)({component:D(()=>k(()=>import(`./_app.accounts-W1USUo2Q.js`),__vite__mapDeps([21,4,1,5,22,13,8,23,24,25,9,10,11,14,12,15,3])),`component`)}),Br=O(`/_app/console`)({component:D(()=>k(()=>import(`./_app.console-BvIGqIe7.js`),__vite__mapDeps([26,4,1,5,11])),`component`)}),Vr=O(`/_app/database`)({component:D(()=>k(()=>import(`./_app.database-CtFJLcfE.js`),__vite__mapDeps([27,4,1,5,24,11,14,12,17,19])),`component`)}),Hr=O(`/_app/keys`)({component:D(()=>k(()=>import(`./_app.keys-B1fRMyU-.js`),__vite__mapDeps([28,4,1,5,22,13,8,23,25,9,10,11,14,12])),`component`)}),Ur=O(`/_app/logs`)({component:D(()=>k(()=>import(`./_app.logs-D73Qcx9S.js`),__vite__mapDeps([29,4,1,5,6,7,8,9,10,11,12])),`component`)}),Wr=O(`/_app/models`)({component:D(()=>k(()=>import(`./_app.models-Dpl1O2RE.js`),__vite__mapDeps([30,4,1,5,23,24,25,9,10,11,14])),`component`)}),Gr=O(`/_app/settings`)({component:D(()=>k(()=>import(`./_app.settings-tRLrVJoq.js`),__vite__mapDeps([31,4,1,5,25,9,11,14,19])),`component`)}),Kr=O(`/_app/usage`)({component:D(()=>k(()=>import(`./_app.usage-D2qlcEp4.js`),__vite__mapDeps([32,3,4,1,5,12,16,17])),`component`)}),qr=O(`/_app/plugins/$pluginId`)({component:D(()=>k(()=>import(`./_app.plugins._pluginId-BNrRTn9l.js`),__vite__mapDeps([33,4,1,34,5])),`component`)}),$=Nr.update({id:`/_app`,getParentRoute:()=>tr}),Jr=Ir.update({id:`/client`,path:`/client`,getParentRoute:()=>tr}),Yr=Lr.update({id:`/login`,path:`/login`,getParentRoute:()=>tr}),Xr=Rr.update({id:`/`,path:`/`,getParentRoute:()=>$}),Zr={AppAccountsRoute:zr.update({id:`/accounts`,path:`/accounts`,getParentRoute:()=>$}),AppConsoleRoute:Br.update({id:`/console`,path:`/console`,getParentRoute:()=>$}),AppDatabaseRoute:Vr.update({id:`/database`,path:`/database`,getParentRoute:()=>$}),AppKeysRoute:Hr.update({id:`/keys`,path:`/keys`,getParentRoute:()=>$}),AppLogsRoute:Ur.update({id:`/logs`,path:`/logs`,getParentRoute:()=>$}),AppModelsRoute:Wr.update({id:`/models`,path:`/models`,getParentRoute:()=>$}),AppSettingsRoute:Gr.update({id:`/settings`,path:`/settings`,getParentRoute:()=>$}),AppUsageRoute:Kr.update({id:`/usage`,path:`/usage`,getParentRoute:()=>$}),AppIndexRoute:Xr,AppPluginsPluginIdRoute:qr.update({id:`/plugins/$pluginId`,path:`/plugins/$pluginId`,getParentRoute:()=>$})},Qr={AppRoute:$._addFileChildren(Zr),ClientRoute:Jr,LoginRoute:Yr},$r=tr._addFileChildren(Qr)._addFileTypes();function ei(e){return{isLoginRoute:()=>e().state.location.pathname===`/login`,onUnauthenticated:()=>void e().navigate({to:`/login`,search:{next:e().state.location.href}})}}function ti(e){let t=t=>{t instanceof _e&&t.isUnauthenticated&&(e.isLoginRoute()||e.onUnauthenticated())};return new Te({queryCache:new we({onError:t}),mutationCache:new Ce({onError:t}),defaultOptions:{queries:{retry:(e,t)=>t instanceof _e&&t.isUnauthenticated?!1:e<2,staleTime:5e3,refetchOnWindowFocus:!0},mutations:{retry:!1}}})}var ni,ri=ti(ei(()=>ni));ni=Yn({routeTree:$r,context:{queryClient:ri}});var ii=document.getElementById(`root`);if(ii===null)throw Error(`#root is missing from index.html`);Fe(ii).render(N(Oe,{children:N(ye,{children:N(Ee,{client:ri,children:N(Qn,{router:ni})})})}));export{Dr as a,sr as c,Or as i,Lr as n,Er as o,wr as r,nr as s,qr as t};
14
+ `,tr=ce()({component:Un,notFoundComponent:()=>N($n,{children:P(fe,{$gap:3,style:{alignItems:`center`},children:[N(me,{children:`Not found`}),N(er,{children:`This console has no screen at that address.`}),N(pe,{as:`a`,href:`/`,$variant:`primary`,$size:`sm`,children:`Back to the rack`})]})})}),nr=`stream:console`,rr={"res:usage":{predicate:e=>e.queryKey[0]===`usage`||e.queryKey[0]===`client`&&(e.queryKey[1]===`usage`||e.queryKey[1]===`summary`)},"res:logs":{predicate:e=>e.queryKey[0]===`logs`&&e.queryKey[1]!==`body`||e.queryKey[0]===`client`&&e.queryKey[1]===`logs`||(e.queryKey[0]===`logPages`||e.queryKey[0]===`client`&&e.queryKey[1]===`logPages`)&&p(e.state.data)},"res:credentials":{queryKey:a.credentials},"res:keys":{queryKey:a.keys},"res:settings":{queryKey:a.settings},"res:models":{queryKey:a.models},"res:quota":{predicate:e=>e.queryKey[0]===`quota-history`||e.queryKey[0]===`credentials`&&e.queryKey[1]===`health`},[nr]:{queryKey:[`console`]}},ir=Object.keys(rr),ar=ir.filter(e=>e.startsWith(`res:`)),or=ir.filter(e=>e.startsWith(`stream:`));function sr(e,t){if(t===`res:*`){lr(e);return}let n=rr[t];n!==void 0&&e.invalidateQueries(n)}function cr(e){for(let t of ir)sr(e,t)}function lr(e){e.invalidateQueries()}var ur=4401,dr=500,fr=3e4,pr=new Set([...ar,...or]),mr=3,hr=6e4,gr=(e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)};function _r(){let{protocol:e,host:t}=window.location;return`${e===`https:`?`wss:`:`ws:`}//${t}/api/stream`}function vr(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=t,{type:r,topic:i,seq:a}=n;return typeof r!=`string`||i!==void 0&&typeof i!=`string`||a!==void 0&&typeof a!=`number`?null:{type:r,...typeof i==`string`?{topic:i}:{},...typeof a==`number`?{seq:a}:{},...`payload`in n?{payload:n.payload}:{}}}function yr(e){let t=new Set,n=new Set,r=new Map,i=new Map,a=new Map,o=e=>a.has(e)||pr.has(e),s=[],c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=0,h=null,g={status:`poll`,pushed:()=>!1};function _(){let e=p?`offline`:u&&!f?`push`:`poll`,r=e===`push`;g={status:e,pushed:e=>r&&n.has(e)};for(let e of t)e()}function v(e){c?.send(JSON.stringify(e))}function y(e,t){let n=i.get(e);if(n===void 0||n.size===0)return!1;for(let e of[...n])e(t);return!0}function b(){for(let e of ar)v({type:`subscribe`,topic:e});for(let e of or){let t=r.get(e);v(t===void 0?{type:`subscribe`,topic:e}:{type:`subscribe`,topic:e,sinceSeq:t})}for(let e of a.keys())v({type:`subscribe`,topic:e})}function x(){u=!0,m=0,n.clear(),d&&cr(e.client),d=!0,b(),_()}function S(t){let i=vr(t.data);if(i===null)return;let{topic:a}=i;if(i.type===`ack`){a!==void 0&&o(a)&&(n.add(a),y(a,{kind:`open`}),_());return}if(i.type===`error`){a!==void 0&&(n.delete(a)&&_(),y(a,{kind:`refused`}));return}if(a!==void 0){if(i.type===`gap`){i.seq!==void 0&&r.set(a,i.seq),y(a,{kind:`gap`}),sr(e.client,a);return}if(i.type===`event`){if(a===`res:*`){lr(e.client);return}if(i.seq!==void 0){let t=r.get(a);if(r.set(a,i.seq),t!==void 0&&i.seq>t+1){y(a,{kind:`gap`}),sr(e.client,a);return}}i.payload!==void 0&&y(a,{kind:`frame`,payload:i.payload})||sr(e.client,a)}}}function C(t){let r=u;u=!1,c=null,n.clear();for(let e of[...i.keys()])y(e,{kind:`closed`});if(l){if(t.code===ur){p=!0,l=!1,_(),lr(e.client);return}if(!r)f=!0;else{let t=e.now();s=[...s.filter(e=>e>t-hr),t],s.length>=mr&&(f=!0)}_(),w()}}function w(){let t=Math.min(fr,dr*2**m);m+=1,h=e.timer(()=>{h=null,l&&T()},t)}function T(){let t=new WebSocket(e.url());c=t,t.addEventListener(`open`,x),t.addEventListener(`message`,S),t.addEventListener(`close`,C)}function E(e,t){let n=i.get(e)??new Set;return i.set(e,n),n.add(t),()=>{n.delete(t),n.size===0&&i.delete(e)}}return{subscribe(e){return t.add(e),()=>{t.delete(e)}},snapshot:()=>g,hold(e,t){let r=E(e,t),i=(a.get(e)??0)+1;a.set(e,i),i===1&&u&&v({type:`subscribe`,topic:e}),n.has(e)&&t({kind:`open`});let o=!1;return()=>{if(o)return;o=!0,r();let t=(a.get(e)??1)-1;if(t>0){a.set(e,t);return}a.delete(e),n.delete(e)&&_(),u&&v({type:`unsubscribe`,topic:e})}},publish(e,t){return!u||!n.has(e)?!1:(v({type:`send`,topic:e,payload:t}),!0)},onStream:E,start(){return l=!0,T(),()=>{l=!1,h?.(),h=null;let e=c;c=null,u=!1,e?.close()}}}}var br=ke(null),xr=ke(null),Sr=ke(null),Cr={status:`poll`,pushed:()=>!1};function wr({children:e,enabled:t=!0,timer:n=gr,now:r=Date.now,url:i=_r}){let a=De(),[o]=Me(()=>yr({client:a,timer:n,now:r,url:i})),[s]=Me(()=>({subscribe:(e,t)=>o.hold(e,e=>{if(e.kind===`gap`){t({kind:`closed`});return}t(e)}),send:o.publish}));M(()=>{if(t)return o.start()},[o,t]);let c=Ne(o.subscribe,o.snapshot,o.snapshot);return N(br,{value:c,children:N(xr,{value:o.onStream,children:N(Sr,{value:s,children:e})})})}function Tr(){return Ae(br)??Cr}function Er(e,t){let n=Ae(xr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null)return n(e,e=>r.current(e))},[n,e])}function Dr(e,t){let n=Ae(Sr),r=je(t);M(()=>{r.current=t}),M(()=>{if(n!==null&&e!==null)return n.subscribe(e,e=>r.current(e))},[n,e])}function Or({children:e}){let t=Tr(),n=Ae(Sr);return N(be,{connection:t,...n===null?{}:{channels:n},children:e})}async function kr(e){return e.queryClient.ensureQueryData({queryKey:a.status,queryFn:()=>ge(`/api/status`),revalidateIfStale:!0})}function Ar(e){let t=e.principal;return e.authenticated!==!0||t==null?`/login`:t.kind===`client`?`/client`:t.kind===`admin`||t.kind===`viewer`?`/`:`/login`}function jr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/`)throw ue({to:n})}function Mr(e,t){let n=Ar(e);if(n===`/login`)throw ue({to:`/login`,search:{next:t}});if(n!==`/client`)throw ue({to:n})}var Nr=O(`/_app`)({beforeLoad:async({context:e,location:t})=>{jr(await kr(e),t.href),await e.queryClient.ensureQueryData(r)},pendingComponent:Pr,pendingMs:200,errorComponent:D(()=>k(()=>import(`./_app-Drf03PWk.js`),__vite__mapDeps([0,1])),`errorComponent`),component:Fr});function Pr(){return N(ve,{legend:`Console`,children:N(he,{rows:6})})}function Fr(){let e=s().data??[];return N(wr,{children:P(Or,{children:[N(xe,{$providers:e}),N(Se,{children:N(Un,{})})]})})}var Ir=O(`/client`)({beforeLoad:async({context:e,location:t})=>{Mr(await kr(e),t.href)},component:D(()=>k(()=>import(`./client-B5gCdtC1.js`),__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17])),`component`)}),Lr=O(`/login`)({validateSearch:e=>({...typeof e.next==`string`?{next:e.next}:{},...typeof e.reason==`string`?{reason:e.reason}:{}}),component:D(()=>k(()=>import(`./login-Sbmi96aa.js`),__vite__mapDeps([18,4,1,11,19])),`component`)}),Rr=O(`/_app/`)({component:D(()=>k(()=>import(`./_app.index-DigYfob3.js`),__vite__mapDeps([20,4,1,5,7,10,14,12,17])),`component`)}),zr=O(`/_app/accounts`)({component:D(()=>k(()=>import(`./_app.accounts-W1USUo2Q.js`),__vite__mapDeps([21,4,1,5,22,13,8,23,24,25,9,10,11,14,12,15,3])),`component`)}),Br=O(`/_app/console`)({component:D(()=>k(()=>import(`./_app.console-DM6ygS6a.js`),__vite__mapDeps([26,4,1,5,11])),`component`)}),Vr=O(`/_app/database`)({component:D(()=>k(()=>import(`./_app.database-CtFJLcfE.js`),__vite__mapDeps([27,4,1,5,24,11,14,12,17,19])),`component`)}),Hr=O(`/_app/keys`)({component:D(()=>k(()=>import(`./_app.keys-B1fRMyU-.js`),__vite__mapDeps([28,4,1,5,22,13,8,23,25,9,10,11,14,12])),`component`)}),Ur=O(`/_app/logs`)({component:D(()=>k(()=>import(`./_app.logs-BKjcBK68.js`),__vite__mapDeps([29,4,1,5,6,7,8,9,10,11,12])),`component`)}),Wr=O(`/_app/models`)({component:D(()=>k(()=>import(`./_app.models-Dpl1O2RE.js`),__vite__mapDeps([30,4,1,5,23,24,25,9,10,11,14])),`component`)}),Gr=O(`/_app/settings`)({component:D(()=>k(()=>import(`./_app.settings-C3GzeJ4q.js`),__vite__mapDeps([31,4,1,5,25,9,11,14,19])),`component`)}),Kr=O(`/_app/usage`)({component:D(()=>k(()=>import(`./_app.usage-D2qlcEp4.js`),__vite__mapDeps([32,3,4,1,5,12,16,17])),`component`)}),qr=O(`/_app/plugins/$pluginId`)({component:D(()=>k(()=>import(`./_app.plugins._pluginId-C7oxa5Wf.js`),__vite__mapDeps([33,4,1,34,5])),`component`)}),$=Nr.update({id:`/_app`,getParentRoute:()=>tr}),Jr=Ir.update({id:`/client`,path:`/client`,getParentRoute:()=>tr}),Yr=Lr.update({id:`/login`,path:`/login`,getParentRoute:()=>tr}),Xr=Rr.update({id:`/`,path:`/`,getParentRoute:()=>$}),Zr={AppAccountsRoute:zr.update({id:`/accounts`,path:`/accounts`,getParentRoute:()=>$}),AppConsoleRoute:Br.update({id:`/console`,path:`/console`,getParentRoute:()=>$}),AppDatabaseRoute:Vr.update({id:`/database`,path:`/database`,getParentRoute:()=>$}),AppKeysRoute:Hr.update({id:`/keys`,path:`/keys`,getParentRoute:()=>$}),AppLogsRoute:Ur.update({id:`/logs`,path:`/logs`,getParentRoute:()=>$}),AppModelsRoute:Wr.update({id:`/models`,path:`/models`,getParentRoute:()=>$}),AppSettingsRoute:Gr.update({id:`/settings`,path:`/settings`,getParentRoute:()=>$}),AppUsageRoute:Kr.update({id:`/usage`,path:`/usage`,getParentRoute:()=>$}),AppIndexRoute:Xr,AppPluginsPluginIdRoute:qr.update({id:`/plugins/$pluginId`,path:`/plugins/$pluginId`,getParentRoute:()=>$})},Qr={AppRoute:$._addFileChildren(Zr),ClientRoute:Jr,LoginRoute:Yr},$r=tr._addFileChildren(Qr)._addFileTypes();function ei(e){return{isLoginRoute:()=>e().state.location.pathname===`/login`,onUnauthenticated:()=>void e().navigate({to:`/login`,search:{next:e().state.location.href}})}}function ti(e){let t=t=>{t instanceof _e&&t.isUnauthenticated&&(e.isLoginRoute()||e.onUnauthenticated())};return new Te({queryCache:new we({onError:t}),mutationCache:new Ce({onError:t}),defaultOptions:{queries:{retry:(e,t)=>t instanceof _e&&t.isUnauthenticated?!1:e<2,staleTime:5e3,refetchOnWindowFocus:!0},mutations:{retry:!1}}})}var ni,ri=ti(ei(()=>ni));ni=Yn({routeTree:$r,context:{queryClient:ri}});var ii=document.getElementById(`root`);if(ii===null)throw Error(`#root is missing from index.html`);Fe(ii).render(N(Oe,{children:N(ye,{children:N(Ee,{client:ri,children:N(Qn,{router:ni})})})}));export{Dr as a,sr as c,Or as i,Lr as n,Er as o,wr as r,nr as s,qr as t};
@@ -1,4 +1,4 @@
1
- import{Et as e,Xt as t,nn as n,qt as r,t as i}from"./Lamp-DkvXKB-B.js";import{C as a,D as o,E as s,_ as c,b as l,n as u,o as d}from"./Panel-CWmOTDAP.js";import{n as f}from"./index-89mqAVmK.js";import{n as p,t as m}from"./Field-BYBri2NV.js";import{t as h}from"./reasons-Du1OBWAM.js";import{useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import y from"styled-components";var b=y.div`
1
+ import{Et as e,Xt as t,nn as n,qt as r,t as i}from"./Lamp-DkvXKB-B.js";import{C as a,D as o,E as s,_ as c,b as l,n as u,o as d}from"./Panel-CWmOTDAP.js";import{n as f}from"./index-BT7ewgKS.js";import{n as p,t as m}from"./Field-BYBri2NV.js";import{t as h}from"./reasons-Du1OBWAM.js";import{useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import y from"styled-components";var b=y.div`
2
2
  display: flex;
3
3
  align-items: center;
4
4
  justify-content: center;
package/public/index.html CHANGED
@@ -9,7 +9,7 @@
9
9
  <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
10
10
  <title>OmniGateway — One endpoint in front of the AI accounts you already pay for.</title>
11
11
  <script type="importmap">{"imports":{"react":"/shared/react.js","react/jsx-runtime":"/shared/jsx-runtime.js","react-dom":"/shared/react-dom.js","react-dom/client":"/shared/react-dom-client.js","styled-components":"/shared/styled-components.js","@tanstack/react-query":"/shared/react-query.js","@omnigateway/dashboard-sdk":"/shared/dashboard-sdk.js"}}</script>
12
- <script type="module" crossorigin src="/assets/index-89mqAVmK.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-BT7ewgKS.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/Panel-CWmOTDAP.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/Lamp-DkvXKB-B.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-BPaHpbO_.js">