cartethyia 2.5.2 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/dashboard/assets/{BannedPage-MsQaeQTs.js → BannedPage-hfCzi-Ux.js} +1 -1
  2. package/dist/dashboard/assets/BannedPage-hfCzi-Ux.js.gz +0 -0
  3. package/dist/dashboard/assets/{CliToolDetailPage-BO9nKg9w.js → CliToolDetailPage-DLGqYEwI.js} +1 -1
  4. package/dist/dashboard/assets/CliToolDetailPage-DLGqYEwI.js.gz +0 -0
  5. package/dist/dashboard/assets/{CliToolsPage-DfWHTJ7v.js → CliToolsPage-DEDyKBlC.js} +1 -1
  6. package/dist/dashboard/assets/CliToolsPage-DEDyKBlC.js.gz +0 -0
  7. package/dist/dashboard/assets/{CombosPage-BrCBQDAc.js → CombosPage-CfuYiQ8Z.js} +1 -1
  8. package/dist/dashboard/assets/CombosPage-CfuYiQ8Z.js.gz +0 -0
  9. package/dist/dashboard/assets/{ConsoleLogPage-C6Uh33er.js → ConsoleLogPage-bsLuZmYH.js} +1 -1
  10. package/dist/dashboard/assets/ConsoleLogPage-bsLuZmYH.js.gz +0 -0
  11. package/dist/dashboard/assets/{CustomizationPage-8aS9hyJu.js → CustomizationPage-_UWhwziJ.js} +1 -1
  12. package/dist/dashboard/assets/CustomizationPage-_UWhwziJ.js.gz +0 -0
  13. package/dist/dashboard/assets/{HealthEventsModal-qomXThxX.js → HealthEventsModal-Cjfc5WFS.js} +1 -1
  14. package/dist/dashboard/assets/HealthEventsModal-Cjfc5WFS.js.gz +0 -0
  15. package/dist/dashboard/assets/{LoginPage-C8hKyXBe.js → LoginPage-DDVIfZGW.js} +1 -1
  16. package/dist/dashboard/assets/LoginPage-DDVIfZGW.js.gz +0 -0
  17. package/dist/dashboard/assets/{OverviewPage-C-ExCy1V.js → OverviewPage-B53YYMng.js} +1 -1
  18. package/dist/dashboard/assets/OverviewPage-B53YYMng.js.gz +0 -0
  19. package/dist/dashboard/assets/ProviderDetailPage-B0KaAQf0.js +3 -0
  20. package/dist/dashboard/assets/ProviderDetailPage-B0KaAQf0.js.gz +0 -0
  21. package/dist/dashboard/assets/{ProvidersPage-BS9IEpvv.js → ProvidersPage-Dx31DgIO.js} +1 -1
  22. package/dist/dashboard/assets/ProvidersPage-Dx31DgIO.js.gz +0 -0
  23. package/dist/dashboard/assets/{ProxyPage-Rn_qXScb.js → ProxyPage-BpnR4kXT.js} +1 -1
  24. package/dist/dashboard/assets/ProxyPage-BpnR4kXT.js.gz +0 -0
  25. package/dist/dashboard/assets/{QuotaPage-BihkgQSq.js → QuotaPage-BpOQCnun.js} +1 -1
  26. package/dist/dashboard/assets/QuotaPage-BpOQCnun.js.gz +0 -0
  27. package/dist/dashboard/assets/SettingsPage-DV1eo2J_.js +1 -0
  28. package/dist/dashboard/assets/SettingsPage-DV1eo2J_.js.gz +0 -0
  29. package/dist/dashboard/assets/{SetupPage-CXjUlfqr.js → SetupPage-D6pmQ86L.js} +1 -1
  30. package/dist/dashboard/assets/SetupPage-D6pmQ86L.js.gz +0 -0
  31. package/dist/dashboard/assets/{SortableList-C-_oD3F2.js → SortableList-DWvKiuSl.js} +1 -1
  32. package/dist/dashboard/assets/SortableList-DWvKiuSl.js.gz +0 -0
  33. package/dist/dashboard/assets/{StudioPage-u9IxmYOI.js → StudioPage-CmkUrgdj.js} +1 -1
  34. package/dist/dashboard/assets/StudioPage-CmkUrgdj.js.gz +0 -0
  35. package/dist/dashboard/assets/{UsagePage-BEVLVrwP.js → UsagePage-B47uOydr.js} +1 -1
  36. package/dist/dashboard/assets/UsagePage-B47uOydr.js.gz +0 -0
  37. package/dist/dashboard/assets/{entry-Dj9AR0gY.js → entry-CkryrIea.js} +3 -3
  38. package/dist/dashboard/assets/entry-CkryrIea.js.gz +0 -0
  39. package/dist/dashboard/assets/{index-DCBtROoK.js → index-BydyKaDz.js} +2 -2
  40. package/dist/dashboard/assets/index-BydyKaDz.js.gz +0 -0
  41. package/dist/dashboard/assets/{select-DsX5QT8K.js → select-BO6h8yNv.js} +1 -1
  42. package/dist/dashboard/assets/select-BO6h8yNv.js.gz +0 -0
  43. package/dist/dashboard/index.html +1 -1
  44. package/dist/dashboard/index.html.gz +0 -0
  45. package/dist/dashboard/precompressed-assets.json +21 -21
  46. package/package.json +1 -1
  47. package/scripts/cli/command/console-menu.ts +248 -246
  48. package/scripts/cli/command/tray.ts +208 -204
  49. package/src/config/spec.ts +26 -2
  50. package/src/console/backup/routes.ts +52 -1
  51. package/src/console/backup/service.ts +60 -4
  52. package/src/console/share/share-router.ts +6 -9
  53. package/src/observability/payload-capture.ts +366 -344
  54. package/src/observability/payload-store.ts +12 -2
  55. package/src/observability/telemetry-status.ts +28 -16
  56. package/src/persistence/stores/api-key-store.ts +6 -0
  57. package/src/persistence/stores/share-store.ts +583 -556
  58. package/src/persistence/stores/telemetry-store.ts +1 -1
  59. package/src/protocol/response/gemini.ts +18 -4
  60. package/src/providers/integrations/antigravity/antigravity-quota.ts +11 -3
  61. package/src/providers/integrations/buddy/buddy-catalog-shared.ts +4 -4
  62. package/src/providers/integrations/buddy/workbuddy/shared.ts +201 -200
  63. package/src/providers/integrations/cline/cline-quota.ts +8 -11
  64. package/src/providers/integrations/opencode/provider.ts +532 -532
  65. package/src/providers/integrations/tokenharbor.ts +2 -2
  66. package/src/providers/integrations/trae/trae-catalog.ts +5 -3
  67. package/src/providers/operations/account-health-service.ts +23 -0
  68. package/src/providers/operations/client-versions.ts +9 -2
  69. package/src/providers/provider-metadata.ts +7 -1
  70. package/src/transport/dispatch/attempt-finalize.ts +46 -5
  71. package/src/transport/dispatch/proxy-request.ts +9 -0
  72. package/src/transport/dispatch/streaming/stream.ts +16 -2
  73. package/src/transport/routing/route-catalog.ts +806 -799
  74. package/dist/dashboard/assets/BannedPage-MsQaeQTs.js.gz +0 -0
  75. package/dist/dashboard/assets/CliToolDetailPage-BO9nKg9w.js.gz +0 -0
  76. package/dist/dashboard/assets/CliToolsPage-DfWHTJ7v.js.gz +0 -0
  77. package/dist/dashboard/assets/CombosPage-BrCBQDAc.js.gz +0 -0
  78. package/dist/dashboard/assets/ConsoleLogPage-C6Uh33er.js.gz +0 -0
  79. package/dist/dashboard/assets/CustomizationPage-8aS9hyJu.js.gz +0 -0
  80. package/dist/dashboard/assets/HealthEventsModal-qomXThxX.js.gz +0 -0
  81. package/dist/dashboard/assets/LoginPage-C8hKyXBe.js.gz +0 -0
  82. package/dist/dashboard/assets/OverviewPage-C-ExCy1V.js.gz +0 -0
  83. package/dist/dashboard/assets/ProviderDetailPage-tr811uaF.js +0 -3
  84. package/dist/dashboard/assets/ProviderDetailPage-tr811uaF.js.gz +0 -0
  85. package/dist/dashboard/assets/ProvidersPage-BS9IEpvv.js.gz +0 -0
  86. package/dist/dashboard/assets/ProxyPage-Rn_qXScb.js.gz +0 -0
  87. package/dist/dashboard/assets/QuotaPage-BihkgQSq.js.gz +0 -0
  88. package/dist/dashboard/assets/SettingsPage-DhiEjm6T.js +0 -1
  89. package/dist/dashboard/assets/SettingsPage-DhiEjm6T.js.gz +0 -0
  90. package/dist/dashboard/assets/SetupPage-CXjUlfqr.js.gz +0 -0
  91. package/dist/dashboard/assets/SortableList-C-_oD3F2.js.gz +0 -0
  92. package/dist/dashboard/assets/StudioPage-u9IxmYOI.js.gz +0 -0
  93. package/dist/dashboard/assets/UsagePage-BEVLVrwP.js.gz +0 -0
  94. package/dist/dashboard/assets/entry-Dj9AR0gY.js.gz +0 -0
  95. package/dist/dashboard/assets/index-DCBtROoK.js.gz +0 -0
  96. package/dist/dashboard/assets/select-DsX5QT8K.js.gz +0 -0
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-C8hKyXBe.js","assets/jsx-runtime-CXUMngI_.js","assets/numbers-Bs4LOOuf.js","assets/app-CafWtVXA.js","assets/app-DxivpfYG.css","assets/log-in-BmRjy60c.js","assets/query-keys-D7wX2vM5.js","assets/input-BG41et9G.js","assets/eye-off-Bk5g2luF.js","assets/eye-C_hawfH4.js","assets/SetupPage-CXjUlfqr.js","assets/layout-C8mer_Ak.js","assets/backup-file-gdKIlg8U.js","assets/BannedPage-MsQaeQTs.js","assets/OverviewPage-C-ExCy1V.js","assets/model-bans-DeVLDA7I.js","assets/assert-NHwYq95t.js","assets/useMutation-w4u4CVue.js","assets/mutation-BkoLM5Ba.js","assets/fingerprint-pattern-BWuHtbW4.js","assets/chevron-right-BXIy5l3h.js","assets/SortableList-C-_oD3F2.js","assets/stack-DwLmjUFK.js","assets/download-A0SW9OCW.js","assets/gauge-BbIMy7MB.js","assets/state-DYdQmdAl.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-NreUx6c8.js","assets/use-clipboard-B0Sy03fE.js","assets/dialog-BtpsJU98.js","assets/use-presence-BSZEBx7U.js","assets/pencil-768ysRAr.js","assets/plus-DIdX_g-x.js","assets/refresh-cw-BqJFk4sU.js","assets/route-CNSNj9Zm.js","assets/search-JOKus9rb.js","assets/shield-check-DVS0Foqh.js","assets/settings-mpmXTgUa.js","assets/sparkles-BRaRUxAU.js","assets/trash-Cppn5c3R.js","assets/card--AtFedAq.js","assets/download-dRFo5_Wu.js","assets/tokens-DDxMbSRL.js","assets/badge-6uzDDvqs.js","assets/select-DsX5QT8K.js","assets/ModelPicker-CWkTUtpX.js","assets/ProviderIcon-CmfzxpVM.js","assets/switch-CidSfbG7.js","assets/inline-BcNGF8Gr.js","assets/api-keys-uNywYlfv.js","assets/cli-tools-B3e7dx3N.js","assets/quota-DZGyp0N5.js","assets/UsagePage-BEVLVrwP.js","assets/terminal-Bd4ee8TA.js","assets/drawer-WwwtzihF.js","assets/circle-check-BU3v_mFW.js","assets/cog-CdWhsajs.js","assets/image-BPaouViG.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/use-reduced-motion-C4B0R6Sz.js","assets/privacy-mode-GM8bej85.js","assets/use-timeout-BwcBBRrT.js","assets/banner-4_WNg2WZ.js","assets/live-BJGYRBnR.js","assets/stream-retry-5QnVuSSo.js","assets/ProviderDetailPage-tr811uaF.js","assets/arrow-left-CpBxkoxI.js","assets/brain-Cwed_72z.js","assets/circle-alert-CntYHV5v.js","assets/layers-2-glBbjl.js","assets/power-off-Yjw9GMJh.js","assets/rotate-ccw-CufcqITi.js","assets/list-row-Gh_W4OR_.js","assets/routing-CcusqXA7.js","assets/HealthEventsModal-qomXThxX.js","assets/AccountCooldown-Bjo92Qat.js","assets/ProvidersPage-BS9IEpvv.js","assets/dialog-actions-B1axpEg7.js","assets/CombosPage-BrCBQDAc.js","assets/arrow-right-Dl5yKnp8.js","assets/QuotaPage-BihkgQSq.js","assets/ProxyPage-Rn_qXScb.js","assets/SettingsPage-DhiEjm6T.js","assets/CliToolsPage-DfWHTJ7v.js","assets/ToolIcon-K1ckcDKg.js","assets/CliToolDetailPage-BO9nKg9w.js","assets/ConsoleLogPage-C6Uh33er.js","assets/CustomizationPage-8aS9hyJu.js","assets/StudioPage-u9IxmYOI.js","assets/message-circle-CCxGwRvv.js"])))=>i.map(i=>d[i]);
2
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{t as i}from"./index-DCBtROoK.js";import{a,c as o,i as s,r as c,s as l,t as u}from"./app-CafWtVXA.js";import{n as d,r as f,t as p}from"./terminal-Bd4ee8TA.js";import{C as m,D as h,E as g,O as _,S as v,T as y,_ as b,b as x,d as S,g as ee,h as te,l as C,m as ne,o as re,p as ie,s as w,w as ae,x as oe,y as se}from"./numbers-Bs4LOOuf.js";import{t as ce}from"./dialog-BtpsJU98.js";import{C as T,T as E,_ as le,c as ue,d as de,f as fe,g as pe,h as me,l as he,m as ge,n as _e,p as ve,r as ye,s as be,t as xe,v as D,w as Se}from"./assert-NHwYq95t.js";import{C as Ce,D as we,E as Te,O,P as Ee,S as De,_ as Oe,a as k,b as ke,c as Ae,d as je,f as Me,g as Ne,i as A,j as Pe,k as Fe,l as j,o as M,r as Ie,t as N,v as P,w as Le,y as Re}from"./query-keys-D7wX2vM5.js";import{t as ze}from"./mutation-BkoLM5Ba.js";import{t as F}from"./useMutation-w4u4CVue.js";import{t as Be}from"./dialog-actions-B1axpEg7.js";var Ve=e(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),He=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),Ue=e(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),We=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),Ge=e(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Ke=e(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),qe=e(`memory-stick`,[[`path`,{d:`M12 12v-2`,key:`fwoke6`}],[`path`,{d:`M12 18v-2`,key:`qj6yno`}],[`path`,{d:`M16 12v-2`,key:`heuere`}],[`path`,{d:`M16 18v-2`,key:`s1ct0w`}],[`path`,{d:`M2 11h1.5`,key:`15p63e`}],[`path`,{d:`M20 18v-2`,key:`12ehxp`}],[`path`,{d:`M20.5 11H22`,key:`khsy7a`}],[`path`,{d:`M4 18v-2`,key:`1c3oqr`}],[`path`,{d:`M8 12v-2`,key:`1mwtfd`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`rect`,{x:`2`,y:`6`,width:`20`,height:`10`,rx:`2`,key:`1qcswk`}]]),Je=e(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Ye=e(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Xe=e(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Ze=e(`palette`,[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]),Qe=e(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),$e=e(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),et=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),tt=e(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),nt=e(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),rt=e(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]);function it(e){let t;if(e.then(e=>(t=e,e),O)?.catch?.(O),t!==void 0)return{data:t}}function at(e){return{mutationKey:e.options.mutationKey,state:e.state,...e.options.scope&&{scope:e.options.scope},...e.meta&&{meta:e.meta}}}function ot(e,t,n){let r=e.promise?.then(t).catch(e=>n?.(e)===!1?Promise.reject(e):Promise.reject(Error(`redacted`)));return r?.catch(O),r}function st(e,t,n){return{dehydratedAt:Date.now(),state:{...e.state,...e.state.data!==void 0&&{data:t?t(e.state.data):e.state.data}},queryKey:e.queryKey,queryHash:e.queryHash,...e.state.status===`pending`&&{promise:ot(e,t,n)},...e.meta&&{meta:e.meta},...e.queryType&&{queryType:e.queryType}}}function ct(e){return e.state.isPaused}function lt(e){return e.state.status===`success`}function ut(e,t={}){let n=t.shouldDehydrateMutation??e.getDefaultOptions().dehydrate?.shouldDehydrateMutation??ct,r=e.getMutationCache().getAll().flatMap(e=>n(e)?[at(e)]:[]),i=t.shouldDehydrateQuery??e.getDefaultOptions().dehydrate?.shouldDehydrateQuery??lt,a=t.shouldRedactErrors??e.getDefaultOptions().dehydrate?.shouldRedactErrors,o=t.serializeData??e.getDefaultOptions().dehydrate?.serializeData;return{mutations:r,queries:e.getQueryCache().getAll().flatMap(e=>i(e)?[st(e,o,a)]:[])}}function dt(e,t,n){let r=e.getMutationCache(),i=e.getQueryCache(),a=n?.defaultOptions?.deserializeData??e.getDefaultOptions().hydrate?.deserializeData;t.mutations?.forEach(({state:t,...i})=>{r.build(e,{...e.getDefaultOptions().hydrate?.mutations,...n?.defaultOptions?.mutations,...i},t)}),t.queries?.forEach(({queryKey:t,state:r,queryHash:o,meta:s,promise:c,dehydratedAt:l,queryType:u})=>{let d=c?it(c):void 0,f=r.data===void 0?d?.data:r.data,p=f===void 0?f:a?a(f):f,m=i.get(o),h=m?.state.status===`pending`,g=m?.state.fetchStatus===`fetching`;if(m){let e=d&&l!==void 0&&l>m.state.dataUpdatedAt;if(r.dataUpdatedAt>m.state.dataUpdatedAt||e){let{fetchStatus:e,...t}=r;m.setState({...t,data:p,...r.status===`pending`&&p!==void 0&&{status:`success`,dataUpdatedAt:l??Date.now(),...!g&&{fetchStatus:`idle`}}})}}else m=i.build(e,{...e.getDefaultOptions().hydrate?.queries,...n?.defaultOptions?.queries,queryKey:t,queryHash:o,meta:s,_type:u},{...r,data:p,fetchStatus:`idle`,status:r.status===`pending`&&p!==void 0?`success`:r.status,...r.status===`pending`&&p!==void 0&&{dataUpdatedAt:l??Date.now()}});c&&!d&&!h&&!g&&(l===void 0||l>m.state.dataUpdatedAt)&&m.fetch(void 0,{initialPromise:Promise.resolve(c).then(a)}).catch(O)})}var ft=class extends ke{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new ze({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=pt(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=pt(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=pt(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=pt(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){P.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Te(t,e))}findAll(e={}){return this.getAll().filter(t=>Te(e,t))}notify(e){P.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return P.batch(()=>Promise.all(e.map(e=>e.continue().catch(O))))}};function pt(e){return e.options.scope?.id}var mt=class extends ke{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??Le(r,t),a=this.get(i);return a||(a=new Me({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){P.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>we(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>we(e,t)):t}notify(e){P.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){P.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){P.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},ht=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new mt,this.#t=e.mutationCache||new ft,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Re.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=Oe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Pe(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=De(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return P.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;P.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return P.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=P.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(O).catch(O)}invalidateQueries(e,t={}){return P.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=P.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(O)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(O)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(Pe(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(Pe(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(O).catch(O)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(O).catch(O)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return Oe.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(Ce(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{Fe(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(Ce(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{Fe(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=Le(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Ee&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},I=t(n(),1),gt=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,_t=/^[\\/]{2}/;function vt(e,t){return t+e.replace(/\\/g,`/`)}var yt=`popstate`;function bt(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function xt(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return wt(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:z(t)}return Et(t,n,null,e)}function L(e,t){if(e===!1||e==null)throw Error(t)}function R(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function St(){return Math.random().toString(36).substring(2,10)}function Ct(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function wt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Tt(t):t,state:n,key:t&&t.key||r||St(),mask:i}}function z({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Tt(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Et(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=bt(e)?e:wt(h.location,e,t);n&&n(r,e),l=u()+1;let d=Ct(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=bt(e)?e:wt(h.location,e,t);n&&n(r,e),l=u();let i=Ct(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return Dt(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(yt,d),c=e,()=>{i.removeEventListener(yt,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function Dt(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),L(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:z(t);return i=i.replace(/ $/,`%20`),!n&&_t.test(i)&&(i=r+i),new URL(i,r)}function Ot(e,t,n=`/`){return kt(e,t,n,!1)}function kt(e,t,n,r,i){let a=B((typeof t==`string`?Tt(t):t).pathname||`/`,n);if(a==null)return null;let o=i??At(e),s=null,c=qt(a);for(let e=0;s==null&&e<o.length;++e)s=Ut(o[e],c,r);return s}function At(e){let t=jt(e);return Nt(t),t}function jt(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;L(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=V([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(L(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),jt(e.children,t,u,l,o)),(e.path!=null||e.index)&&t.push({path:l,score:Vt(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Kt(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Mt(e.path))a(e,t,!0,n)}),t}function Mt(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Mt(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Nt(e){e.sort((e,t)=>e.score===t.score?Ht(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Pt=/^:[\w-]+$/,Ft=3,It=2,Lt=1,Rt=10,zt=-2,Bt=e=>e===`*`;function Vt(e,t){let n=e.split(`/`),r=n.length;return n.some(Bt)&&(r+=zt),t&&(r+=It),n.filter(e=>!Bt(e)).reduce((e,t)=>e+(Pt.test(t)?Ft:t===``?Lt:Rt),r)}function Ht(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Ut(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?Gt(u,l,s.matcher,s.compiledParams):Wt(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=Wt({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:V([a,d.pathname]),pathnameBase:nn(V([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=V([a,d.pathnameBase]))}return o}function Wt(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Kt(e.path,e.caseSensitive,e.end);return Gt(e,t,n,r)}function Gt(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=tn(a,1),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=tn(a.slice(0,a.length-e.length),1)}let i=s[r];return e[t]=n&&!i?void 0:(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Kt(e,t=!1,n=!0){R(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function qt(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return R(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function B(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Jt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Tt(e):e,a;return n?(n=en(n),a=n.startsWith(`/`)||n.startsWith(`\\`)?Yt(n.substring(1),`/`):Yt(n,t)):a=t,{pathname:a,search:rn(r),hash:an(i)}}function Yt(e,t){let n=tn(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Xt(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Zt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Qt(e){let t=Zt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function $t(e,t,n,r=!1){let i;typeof e==`string`?i=Tt(e):(i={...e},L(!i.pathname||!i.pathname.includes(`?`),Xt(`?`,`pathname`,`search`,i)),L(!i.pathname||!i.pathname.includes(`#`),Xt(`#`,`pathname`,`hash`,i)),L(!i.search||!i.search.includes(`#`),Xt(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Jt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var en=e=>e.replace(/[\\/]{2,}/g,`/`),V=e=>en(e.join(`/`));function tn(e,t=0){let n=e.length;for(;n>t&&e.charCodeAt(n-1)===47;)n--;return n===e.length?e:e.slice(0,n)}var nn=e=>tn(e).replace(/^\/*/,`/`),rn=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,an=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,on=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function sn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function cn(e){return V(e.map(e=>e.route.path).filter(Boolean))||`/`}var ln=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function un(e,t){let n=e;if(typeof n!=`string`||!gt.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(ln)try{let e=new URL(window.location.href),r=_t.test(n)?new URL(vt(n,e.protocol)):new URL(n),a=B(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{R(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var dn=new URL(`http://localhost`);function fn(e){if(e.createURL)return e.createURL(`/`);try{return new URL(e.createHref(`/`),dn)}catch{return dn}}function pn(e,t){return e.origin===t.origin&&(e.origin!==`null`||e.protocol===t.protocol&&e.host===t.host)}function mn(e,t){if(e.startsWith(`//`))return!0;let n=t.protocol.toLowerCase();return e.toLowerCase().startsWith(n)?t.host===``||e.slice(n.length).startsWith(`//`):!1}function hn(e,t,n,r){let i=null;try{i=e==null?null:new URL(e,n)}catch{}let a=new URL(t,n),o=i!=null&&!pn(i,n),s=!pn(a,n);if(r===`reject`){if(o||s)throw Error(`External navigation is not allowed`)}else if(s&&(i==null||!mn(e,i)||!pn(i,a)))throw Error(`External navigation is not allowed`)}var gn=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(gn);var _n=[`GET`,...gn];new Set(_n);var vn=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function yn(e){try{return vn.includes(new URL(e).protocol)}catch{return!1}}var bn=I.createContext(null);bn.displayName=`DataRouter`;var xn=I.createContext(null);xn.displayName=`DataRouterState`;var Sn=I.createContext(!1);function Cn(){return I.useContext(Sn)}var wn=I.createContext({isTransitioning:!1});wn.displayName=`ViewTransition`;var Tn=I.createContext(new Map);Tn.displayName=`Fetchers`;var En=I.createContext(null);En.displayName=`Await`;var H=I.createContext(null);H.displayName=`Navigation`;var Dn=I.createContext(null);Dn.displayName=`Location`;var U=I.createContext({outlet:null,matches:[],isDataRoute:!1});U.displayName=`Route`;var On=I.createContext(null);On.displayName=`RouteError`;var kn=`REACT_ROUTER_ERROR`,An=`REDIRECT`,jn=`ROUTE_ERROR_RESPONSE`;function Mn(e){if(e.startsWith(`${kn}:${An}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Nn(e){if(e.startsWith(`${kn}:${jn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new on(t.status,t.statusText,t.data)}catch{}}function Pn(e,{relative:t}={}){L(Fn(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=I.useContext(H),{hash:i,pathname:a,search:o}=Bn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:V([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Fn(){return I.useContext(Dn)!=null}function W(){return L(Fn(),`useLocation() may be used only in the context of a <Router> component.`),I.useContext(Dn).location}var In=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Ln(e){I.useContext(H).static||I.useLayoutEffect(e)}function G(){let{isDataRoute:e}=I.useContext(U);return e?rr():Rn()}function Rn(){L(Fn(),`useNavigate() may be used only in the context of a <Router> component.`);let e=I.useContext(bn),{basename:t,navigator:n}=I.useContext(H),{matches:r}=I.useContext(U),{pathname:i}=W(),a=JSON.stringify(Qt(r)),o=I.useRef(!1);return Ln(()=>{o.current=!0}),I.useCallback((r,s={})=>{if(R(o.current,In),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=$t(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:V([t,c.pathname])),hn(typeof r==`string`?r:z(r),n.createHref(c),fn(n),`reject`),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}I.createContext(null);function zn(){let{matches:e}=I.useContext(U);return e[e.length-1]?.params??{}}function Bn(e,{relative:t}={}){let{matches:n}=I.useContext(U),{pathname:r}=W(),i=JSON.stringify(Qt(n));return I.useMemo(()=>$t(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Vn(e,t){return Hn(e,t)}function Hn(e,t,n){L(Fn(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=I.useContext(H),{matches:i}=I.useContext(U),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;ar(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-DDVIfZGW.js","assets/jsx-runtime-CXUMngI_.js","assets/numbers-Bs4LOOuf.js","assets/app-CafWtVXA.js","assets/app-DxivpfYG.css","assets/log-in-BmRjy60c.js","assets/query-keys-D7wX2vM5.js","assets/input-BG41et9G.js","assets/eye-off-Bk5g2luF.js","assets/eye-C_hawfH4.js","assets/SetupPage-D6pmQ86L.js","assets/layout-C8mer_Ak.js","assets/backup-file-gdKIlg8U.js","assets/BannedPage-hfCzi-Ux.js","assets/OverviewPage-B53YYMng.js","assets/model-bans-DeVLDA7I.js","assets/assert-NHwYq95t.js","assets/useMutation-w4u4CVue.js","assets/mutation-BkoLM5Ba.js","assets/fingerprint-pattern-BWuHtbW4.js","assets/chevron-right-BXIy5l3h.js","assets/SortableList-DWvKiuSl.js","assets/stack-DwLmjUFK.js","assets/download-A0SW9OCW.js","assets/gauge-BbIMy7MB.js","assets/state-DYdQmdAl.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-NreUx6c8.js","assets/use-clipboard-B0Sy03fE.js","assets/dialog-BtpsJU98.js","assets/use-presence-BSZEBx7U.js","assets/pencil-768ysRAr.js","assets/plus-DIdX_g-x.js","assets/refresh-cw-BqJFk4sU.js","assets/route-CNSNj9Zm.js","assets/search-JOKus9rb.js","assets/shield-check-DVS0Foqh.js","assets/settings-mpmXTgUa.js","assets/sparkles-BRaRUxAU.js","assets/trash-Cppn5c3R.js","assets/card--AtFedAq.js","assets/download-dRFo5_Wu.js","assets/tokens-DDxMbSRL.js","assets/badge-6uzDDvqs.js","assets/select-BO6h8yNv.js","assets/ModelPicker-CWkTUtpX.js","assets/ProviderIcon-CmfzxpVM.js","assets/switch-CidSfbG7.js","assets/inline-BcNGF8Gr.js","assets/api-keys-uNywYlfv.js","assets/cli-tools-B3e7dx3N.js","assets/quota-DZGyp0N5.js","assets/UsagePage-B47uOydr.js","assets/terminal-Bd4ee8TA.js","assets/drawer-WwwtzihF.js","assets/circle-check-BU3v_mFW.js","assets/cog-CdWhsajs.js","assets/image-BPaouViG.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/use-reduced-motion-C4B0R6Sz.js","assets/privacy-mode-GM8bej85.js","assets/use-timeout-BwcBBRrT.js","assets/banner-4_WNg2WZ.js","assets/live-BJGYRBnR.js","assets/stream-retry-5QnVuSSo.js","assets/ProviderDetailPage-B0KaAQf0.js","assets/arrow-left-CpBxkoxI.js","assets/brain-Cwed_72z.js","assets/circle-alert-CntYHV5v.js","assets/layers-2-glBbjl.js","assets/power-off-Yjw9GMJh.js","assets/rotate-ccw-CufcqITi.js","assets/list-row-Gh_W4OR_.js","assets/routing-CcusqXA7.js","assets/HealthEventsModal-Cjfc5WFS.js","assets/AccountCooldown-Bjo92Qat.js","assets/ProvidersPage-Dx31DgIO.js","assets/dialog-actions-B1axpEg7.js","assets/CombosPage-CfuYiQ8Z.js","assets/arrow-right-Dl5yKnp8.js","assets/QuotaPage-BpOQCnun.js","assets/ProxyPage-BpnR4kXT.js","assets/SettingsPage-DV1eo2J_.js","assets/CliToolsPage-DEDyKBlC.js","assets/ToolIcon-K1ckcDKg.js","assets/CliToolDetailPage-DLGqYEwI.js","assets/ConsoleLogPage-bsLuZmYH.js","assets/CustomizationPage-_UWhwziJ.js","assets/StudioPage-CmkUrgdj.js","assets/message-circle-CCxGwRvv.js"])))=>i.map(i=>d[i]);
2
+ import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{t as i}from"./index-BydyKaDz.js";import{a,c as o,i as s,r as c,s as l,t as u}from"./app-CafWtVXA.js";import{n as d,r as f,t as p}from"./terminal-Bd4ee8TA.js";import{C as m,D as h,E as g,O as _,S as v,T as y,_ as b,b as x,d as S,g as ee,h as te,l as C,m as ne,o as re,p as ie,s as w,w as ae,x as oe,y as se}from"./numbers-Bs4LOOuf.js";import{t as ce}from"./dialog-BtpsJU98.js";import{C as T,T as E,_ as le,c as ue,d as de,f as fe,g as pe,h as me,l as he,m as ge,n as _e,p as ve,r as ye,s as be,t as xe,v as D,w as Se}from"./assert-NHwYq95t.js";import{C as Ce,D as we,E as Te,O,P as Ee,S as De,_ as Oe,a as k,b as ke,c as Ae,d as je,f as Me,g as Ne,i as A,j as Pe,k as Fe,l as j,o as M,r as Ie,t as N,v as P,w as Le,y as Re}from"./query-keys-D7wX2vM5.js";import{t as ze}from"./mutation-BkoLM5Ba.js";import{t as F}from"./useMutation-w4u4CVue.js";import{t as Be}from"./dialog-actions-B1axpEg7.js";var Ve=e(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),He=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),Ue=e(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),We=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),Ge=e(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Ke=e(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),qe=e(`memory-stick`,[[`path`,{d:`M12 12v-2`,key:`fwoke6`}],[`path`,{d:`M12 18v-2`,key:`qj6yno`}],[`path`,{d:`M16 12v-2`,key:`heuere`}],[`path`,{d:`M16 18v-2`,key:`s1ct0w`}],[`path`,{d:`M2 11h1.5`,key:`15p63e`}],[`path`,{d:`M20 18v-2`,key:`12ehxp`}],[`path`,{d:`M20.5 11H22`,key:`khsy7a`}],[`path`,{d:`M4 18v-2`,key:`1c3oqr`}],[`path`,{d:`M8 12v-2`,key:`1mwtfd`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`rect`,{x:`2`,y:`6`,width:`20`,height:`10`,rx:`2`,key:`1qcswk`}]]),Je=e(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Ye=e(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Xe=e(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Ze=e(`palette`,[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]),Qe=e(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),$e=e(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),et=e(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),tt=e(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),nt=e(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),rt=e(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]);function it(e){let t;if(e.then(e=>(t=e,e),O)?.catch?.(O),t!==void 0)return{data:t}}function at(e){return{mutationKey:e.options.mutationKey,state:e.state,...e.options.scope&&{scope:e.options.scope},...e.meta&&{meta:e.meta}}}function ot(e,t,n){let r=e.promise?.then(t).catch(e=>n?.(e)===!1?Promise.reject(e):Promise.reject(Error(`redacted`)));return r?.catch(O),r}function st(e,t,n){return{dehydratedAt:Date.now(),state:{...e.state,...e.state.data!==void 0&&{data:t?t(e.state.data):e.state.data}},queryKey:e.queryKey,queryHash:e.queryHash,...e.state.status===`pending`&&{promise:ot(e,t,n)},...e.meta&&{meta:e.meta},...e.queryType&&{queryType:e.queryType}}}function ct(e){return e.state.isPaused}function lt(e){return e.state.status===`success`}function ut(e,t={}){let n=t.shouldDehydrateMutation??e.getDefaultOptions().dehydrate?.shouldDehydrateMutation??ct,r=e.getMutationCache().getAll().flatMap(e=>n(e)?[at(e)]:[]),i=t.shouldDehydrateQuery??e.getDefaultOptions().dehydrate?.shouldDehydrateQuery??lt,a=t.shouldRedactErrors??e.getDefaultOptions().dehydrate?.shouldRedactErrors,o=t.serializeData??e.getDefaultOptions().dehydrate?.serializeData;return{mutations:r,queries:e.getQueryCache().getAll().flatMap(e=>i(e)?[st(e,o,a)]:[])}}function dt(e,t,n){let r=e.getMutationCache(),i=e.getQueryCache(),a=n?.defaultOptions?.deserializeData??e.getDefaultOptions().hydrate?.deserializeData;t.mutations?.forEach(({state:t,...i})=>{r.build(e,{...e.getDefaultOptions().hydrate?.mutations,...n?.defaultOptions?.mutations,...i},t)}),t.queries?.forEach(({queryKey:t,state:r,queryHash:o,meta:s,promise:c,dehydratedAt:l,queryType:u})=>{let d=c?it(c):void 0,f=r.data===void 0?d?.data:r.data,p=f===void 0?f:a?a(f):f,m=i.get(o),h=m?.state.status===`pending`,g=m?.state.fetchStatus===`fetching`;if(m){let e=d&&l!==void 0&&l>m.state.dataUpdatedAt;if(r.dataUpdatedAt>m.state.dataUpdatedAt||e){let{fetchStatus:e,...t}=r;m.setState({...t,data:p,...r.status===`pending`&&p!==void 0&&{status:`success`,dataUpdatedAt:l??Date.now(),...!g&&{fetchStatus:`idle`}}})}}else m=i.build(e,{...e.getDefaultOptions().hydrate?.queries,...n?.defaultOptions?.queries,queryKey:t,queryHash:o,meta:s,_type:u},{...r,data:p,fetchStatus:`idle`,status:r.status===`pending`&&p!==void 0?`success`:r.status,...r.status===`pending`&&p!==void 0&&{dataUpdatedAt:l??Date.now()}});c&&!d&&!h&&!g&&(l===void 0||l>m.state.dataUpdatedAt)&&m.fetch(void 0,{initialPromise:Promise.resolve(c).then(a)}).catch(O)})}var ft=class extends ke{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new ze({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=pt(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=pt(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=pt(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=pt(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){P.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Te(t,e))}findAll(e={}){return this.getAll().filter(t=>Te(e,t))}notify(e){P.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return P.batch(()=>Promise.all(e.map(e=>e.continue().catch(O))))}};function pt(e){return e.options.scope?.id}var mt=class extends ke{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??Le(r,t),a=this.get(i);return a||(a=new Me({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){P.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>we(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>we(e,t)):t}notify(e){P.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){P.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){P.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},ht=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new mt,this.#t=e.mutationCache||new ft,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Re.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=Oe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Pe(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=De(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return P.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;P.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return P.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=P.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(O).catch(O)}invalidateQueries(e,t={}){return P.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=P.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(O)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(O)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(Pe(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(Pe(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(O).catch(O)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(O).catch(O)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return Oe.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(Ce(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{Fe(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(Ce(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{Fe(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=Le(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Ee&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},I=t(n(),1),gt=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,_t=/^[\\/]{2}/;function vt(e,t){return t+e.replace(/\\/g,`/`)}var yt=`popstate`;function bt(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function xt(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return wt(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:z(t)}return Et(t,n,null,e)}function L(e,t){if(e===!1||e==null)throw Error(t)}function R(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function St(){return Math.random().toString(36).substring(2,10)}function Ct(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function wt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Tt(t):t,state:n,key:t&&t.key||r||St(),mask:i}}function z({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Tt(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Et(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=bt(e)?e:wt(h.location,e,t);n&&n(r,e),l=u()+1;let d=Ct(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=bt(e)?e:wt(h.location,e,t);n&&n(r,e),l=u();let i=Ct(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return Dt(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(yt,d),c=e,()=>{i.removeEventListener(yt,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function Dt(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),L(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:z(t);return i=i.replace(/ $/,`%20`),!n&&_t.test(i)&&(i=r+i),new URL(i,r)}function Ot(e,t,n=`/`){return kt(e,t,n,!1)}function kt(e,t,n,r,i){let a=B((typeof t==`string`?Tt(t):t).pathname||`/`,n);if(a==null)return null;let o=i??At(e),s=null,c=qt(a);for(let e=0;s==null&&e<o.length;++e)s=Ut(o[e],c,r);return s}function At(e){let t=jt(e);return Nt(t),t}function jt(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;L(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=V([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(L(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),jt(e.children,t,u,l,o)),(e.path!=null||e.index)&&t.push({path:l,score:Vt(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Kt(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Mt(e.path))a(e,t,!0,n)}),t}function Mt(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Mt(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Nt(e){e.sort((e,t)=>e.score===t.score?Ht(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Pt=/^:[\w-]+$/,Ft=3,It=2,Lt=1,Rt=10,zt=-2,Bt=e=>e===`*`;function Vt(e,t){let n=e.split(`/`),r=n.length;return n.some(Bt)&&(r+=zt),t&&(r+=It),n.filter(e=>!Bt(e)).reduce((e,t)=>e+(Pt.test(t)?Ft:t===``?Lt:Rt),r)}function Ht(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Ut(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?Gt(u,l,s.matcher,s.compiledParams):Wt(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=Wt({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:V([a,d.pathname]),pathnameBase:nn(V([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=V([a,d.pathnameBase]))}return o}function Wt(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Kt(e.path,e.caseSensitive,e.end);return Gt(e,t,n,r)}function Gt(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=tn(a,1),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=tn(a.slice(0,a.length-e.length),1)}let i=s[r];return e[t]=n&&!i?void 0:(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Kt(e,t=!1,n=!0){R(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function qt(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return R(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function B(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Jt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Tt(e):e,a;return n?(n=en(n),a=n.startsWith(`/`)||n.startsWith(`\\`)?Yt(n.substring(1),`/`):Yt(n,t)):a=t,{pathname:a,search:rn(r),hash:an(i)}}function Yt(e,t){let n=tn(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Xt(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Zt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Qt(e){let t=Zt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function $t(e,t,n,r=!1){let i;typeof e==`string`?i=Tt(e):(i={...e},L(!i.pathname||!i.pathname.includes(`?`),Xt(`?`,`pathname`,`search`,i)),L(!i.pathname||!i.pathname.includes(`#`),Xt(`#`,`pathname`,`hash`,i)),L(!i.search||!i.search.includes(`#`),Xt(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Jt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var en=e=>e.replace(/[\\/]{2,}/g,`/`),V=e=>en(e.join(`/`));function tn(e,t=0){let n=e.length;for(;n>t&&e.charCodeAt(n-1)===47;)n--;return n===e.length?e:e.slice(0,n)}var nn=e=>tn(e).replace(/^\/*/,`/`),rn=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,an=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,on=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function sn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function cn(e){return V(e.map(e=>e.route.path).filter(Boolean))||`/`}var ln=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function un(e,t){let n=e;if(typeof n!=`string`||!gt.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(ln)try{let e=new URL(window.location.href),r=_t.test(n)?new URL(vt(n,e.protocol)):new URL(n),a=B(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{R(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var dn=new URL(`http://localhost`);function fn(e){if(e.createURL)return e.createURL(`/`);try{return new URL(e.createHref(`/`),dn)}catch{return dn}}function pn(e,t){return e.origin===t.origin&&(e.origin!==`null`||e.protocol===t.protocol&&e.host===t.host)}function mn(e,t){if(e.startsWith(`//`))return!0;let n=t.protocol.toLowerCase();return e.toLowerCase().startsWith(n)?t.host===``||e.slice(n.length).startsWith(`//`):!1}function hn(e,t,n,r){let i=null;try{i=e==null?null:new URL(e,n)}catch{}let a=new URL(t,n),o=i!=null&&!pn(i,n),s=!pn(a,n);if(r===`reject`){if(o||s)throw Error(`External navigation is not allowed`)}else if(s&&(i==null||!mn(e,i)||!pn(i,a)))throw Error(`External navigation is not allowed`)}var gn=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(gn);var _n=[`GET`,...gn];new Set(_n);var vn=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function yn(e){try{return vn.includes(new URL(e).protocol)}catch{return!1}}var bn=I.createContext(null);bn.displayName=`DataRouter`;var xn=I.createContext(null);xn.displayName=`DataRouterState`;var Sn=I.createContext(!1);function Cn(){return I.useContext(Sn)}var wn=I.createContext({isTransitioning:!1});wn.displayName=`ViewTransition`;var Tn=I.createContext(new Map);Tn.displayName=`Fetchers`;var En=I.createContext(null);En.displayName=`Await`;var H=I.createContext(null);H.displayName=`Navigation`;var Dn=I.createContext(null);Dn.displayName=`Location`;var U=I.createContext({outlet:null,matches:[],isDataRoute:!1});U.displayName=`Route`;var On=I.createContext(null);On.displayName=`RouteError`;var kn=`REACT_ROUTER_ERROR`,An=`REDIRECT`,jn=`ROUTE_ERROR_RESPONSE`;function Mn(e){if(e.startsWith(`${kn}:${An}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Nn(e){if(e.startsWith(`${kn}:${jn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new on(t.status,t.statusText,t.data)}catch{}}function Pn(e,{relative:t}={}){L(Fn(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=I.useContext(H),{hash:i,pathname:a,search:o}=Bn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:V([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Fn(){return I.useContext(Dn)!=null}function W(){return L(Fn(),`useLocation() may be used only in the context of a <Router> component.`),I.useContext(Dn).location}var In=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Ln(e){I.useContext(H).static||I.useLayoutEffect(e)}function G(){let{isDataRoute:e}=I.useContext(U);return e?rr():Rn()}function Rn(){L(Fn(),`useNavigate() may be used only in the context of a <Router> component.`);let e=I.useContext(bn),{basename:t,navigator:n}=I.useContext(H),{matches:r}=I.useContext(U),{pathname:i}=W(),a=JSON.stringify(Qt(r)),o=I.useRef(!1);return Ln(()=>{o.current=!0}),I.useCallback((r,s={})=>{if(R(o.current,In),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=$t(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:V([t,c.pathname])),hn(typeof r==`string`?r:z(r),n.createHref(c),fn(n),`reject`),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}I.createContext(null);function zn(){let{matches:e}=I.useContext(U);return e[e.length-1]?.params??{}}function Bn(e,{relative:t}={}){let{matches:n}=I.useContext(U),{pathname:r}=W(),i=JSON.stringify(Qt(n));return I.useMemo(()=>$t(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Vn(e,t){return Hn(e,t)}function Hn(e,t,n){L(Fn(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=I.useContext(H),{matches:i}=I.useContext(U),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;ar(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
3
3
 
4
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=W(),d;if(t){let e=typeof t==`string`?Tt(t):t;L(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Ot(e,{pathname:p});R(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),R(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Yn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:V([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:V([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?I.createElement(Dn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Un(){let e=nr(),t=sn(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=I.createElement(I.Fragment,null,I.createElement(`p`,null,`💿 Hey developer 👋`),I.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,I.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,I.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),I.createElement(I.Fragment,null,I.createElement(`h2`,null,`Unexpected Application Error!`),I.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?I.createElement(`pre`,{style:i},n):null,o)}var Wn=I.createElement(Un,null),Gn=class extends I.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Nn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:I.createElement(U.Provider,{value:this.props.routeContext},I.createElement(On.Provider,{value:e,children:this.props.component}));return this.context?I.createElement(qn,{error:e},t):t}};Gn.contextType=Sn;var Kn=new WeakMap;function qn({children:e,error:t}){let{basename:n,navigator:r}=I.useContext(H);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Mn(t.digest);if(e){let i=Kn.get(t);if(i)throw i;let a=un(e.location,n),o=a.absoluteURL||a.to;if(hn(e.location,o,fn(r),`allow-explicit`),yn(o))throw Error(`Invalid redirect location`);if(ln&&!Kn.get(t)){if(a.isExternal||e.reloadDocument)window.location.href=o;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Kn.set(t,n),n}}return I.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function Jn({routeContext:e,match:t,children:n}){let r=I.useContext(bn);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),I.createElement(U.Provider,{value:e},n)}function Yn(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);L(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:cn(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||Wn,o&&(s<0&&c===0?(ar(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?I.createElement(n.route.Component,null):n.route.element?n.route.element:e,I.createElement(Jn,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?I.createElement(Gn,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Xn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Zn(e){let t=I.useContext(bn);return L(t,Xn(e)),t}function Qn(e){let t=I.useContext(xn);return L(t,Xn(e)),t}function $n(e){let t=I.useContext(U);return L(t,Xn(e)),t}function er(e){let t=$n(e),n=t.matches[t.matches.length-1];return L(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function tr(){return er(`useRouteId`)}function nr(){let e=I.useContext(On),t=Qn(`useRouteError`),n=er(`useRouteError`);return e===void 0?t.errors?.[n]:e}function rr(){let{router:e}=Zn(`useNavigate`),t=er(`useNavigate`),n=I.useRef(!1);return Ln(()=>{n.current=!0}),I.useCallback(async(r,i={})=>{R(n.current,In),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var ir={};function ar(e,t,n){!t&&!ir[e]&&(ir[e]=!0,R(!1,n))}I.memo(or);function or({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Hn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function sr({to:e,replace:t,state:n,relative:r}){L(Fn(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i,navigator:a}=I.useContext(H);R(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=I.useContext(U),{pathname:s}=W(),c=G(),l=$t(e,Qt(o),s,r===`path`);hn(typeof e==`string`?e:z(e),a.createHref(l),fn(a),`reject`);let u=JSON.stringify(l);return I.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function K(e){L(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function cr({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){L(!Fn(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=I.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Tt(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=I.useMemo(()=>{let e=B(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return R(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:I.createElement(H.Provider,{value:c},I.createElement(Dn.Provider,{children:t,value:h}))}function lr({children:e,location:t}){return Vn(ur(e),t)}I.Component;function ur(e,t=[]){let n=[];return I.Children.forEach(e,(e,r)=>{if(!I.isValidElement(e))return;let i=[...t,r];if(e.type===I.Fragment){n.push.apply(n,ur(e.props.children,i));return}L(e.type===K,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),L(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=ur(e.props.children,i)),n.push(a)}),n}var dr=`get`,fr=`application/x-www-form-urlencoded`;function pr(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function mr(e){return pr(e)&&e.tagName.toLowerCase()===`button`}function hr(e){return pr(e)&&e.tagName.toLowerCase()===`form`}function gr(e){return pr(e)&&e.tagName.toLowerCase()===`input`}function _r(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function vr(e,t){return e.button===0&&(!t||t===`_self`)&&!_r(e)}function yr(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function br(e,t){let n=yr(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var xr=null;function Sr(){if(xr===null)try{new FormData(document.createElement(`form`),0),xr=!1}catch{xr=!0}return xr}var Cr=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function wr(e){return e!=null&&!Cr.has(e)?(R(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${fr}"`),null):e}function Tr(e,t){let n,r,i,a,o;if(hr(e)){let o=e.getAttribute(`action`);r=o?B(o,t):null,n=e.getAttribute(`method`)||dr,i=wr(e.getAttribute(`enctype`))||fr,a=new FormData(e)}else if(mr(e)||gr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?B(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||dr,i=wr(e.getAttribute(`formenctype`))||wr(o.getAttribute(`enctype`))||fr,a=new FormData(o,e),!Sr()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(pr(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=dr,r=null,i=fr,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Er(e,t){if(e===!1||e==null)throw Error(t)}function Dr(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return i.pathname=n?i.pathname.endsWith(`/`)?`${i.pathname}_.${r}`:`${i.pathname}.${r}`:i.pathname===`/`?`_root.${r}`:t&&B(i.pathname,t)===`/`?`${tn(t)}/_root.${r}`:`${tn(i.pathname)}.${r}`,i}async function Or(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function kr(e){return e!=null&&typeof e.page==`string`}function Ar(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function jr(e,t,n){return Ir((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Or(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Ar).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Mr(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Nr(e,t,{includeHydrateFallback:n}={}){return Pr(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Pr(e){return[...new Set(e)]}function Fr(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Ir(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!kr(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Fr(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Lr(){let e=I.useContext(bn);return Er(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Rr(){let e=I.useContext(xn);return Er(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var zr=I.createContext(void 0);zr.displayName=`FrameworkContext`;function Br(){let e=I.useContext(zr);return Er(e,`You must render this element inside a <HydratedRouter> element`),e}function Vr(e,t){let n=I.useContext(zr),[r,i]=I.useState(!1),[a,o]=I.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=I.useRef(null);I.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),I.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Hr(s,p),onBlur:Hr(c,m),onMouseEnter:Hr(l,p),onMouseLeave:Hr(u,m),onTouchStart:Hr(d,p)}]:[a,f,{}]:[!1,f,{}]}function Hr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Ur({page:e,...t}){let n=Cn(),{nonce:r}=Br(),{router:i}=Lr(),a=I.useMemo(()=>Ot(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?I.createElement(Gr,{page:e,matches:a,...t}):I.createElement(Kr,{page:e,matches:a,...t})):null}function Wr(e){let{manifest:t,routeModules:n}=Br(),[r,i]=I.useState([]);return I.useEffect(()=>{let r=!1;return jr(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Gr({page:e,matches:t,...n}){let r=W(),{future:i}=Br(),{basename:a}=Lr(),o=I.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Dr(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]);return I.createElement(I.Fragment,null,o.map(e=>I.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Kr({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:o}=Br(),{basename:s}=Lr(),{loaderData:c,matches:l}=Rr(),u=I.useMemo(()=>Mr(e,t,l,a,r,`data`),[e,t,l,a,r]),d=I.useMemo(()=>Mr(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=I.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];t&&t.hasLoader&&(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Dr(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=I.useMemo(()=>Nr(d,a),[d,a]),m=Wr(d);return I.createElement(I.Fragment,null,f.map(e=>I.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>I.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>I.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function qr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}I.Component;var Jr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Jr&&(window.__reactRouterVersion=`7.18.3`)}catch{}function Yr({basename:e,children:t,useTransitions:n,window:r}){let i=I.useRef();i.current??=xt({window:r,v5Compat:!0});let a=i.current,[o,s]=I.useState({action:a.action,location:a.location}),c=I.useCallback(e=>{n===!1?s(e):I.startTransition(()=>s(e))},[n]);return I.useLayoutEffect(()=>a.listen(c),[a,c]),I.createElement(cr,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var Xr=I.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,useTransitions:_}=I.useContext(H),v=typeof l==`string`&&gt.test(l),y=un(l,h);l=y.to;let b=Pn(l,{relative:r}),x=W(),S=null;if(o){let e=$t(o,[],x.mask?x.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:V([h,e.pathname])),S=g.createHref(e)}let[ee,te,C]=Vr(n,p),ne=ti(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function re(t){e&&e(t),t.defaultPrevented||ne(t)}let ie=!(y.isExternal||i),w=I.createElement(`a`,{...p,...C,href:(ie?S:void 0)||y.absoluteURL||b,onClick:ie?re:e,ref:qr(m,te),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return ee&&!v?I.createElement(I.Fragment,null,w,I.createElement(Ur,{page:b})):w});Xr.displayName=`Link`;var Zr=I.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Bn(a,{relative:c.relative}),d=W(),f=I.useContext(xn),{navigator:p,basename:m}=I.useContext(H),h=f!=null&&si(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=B(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},ee=b?e:void 0,te;te=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let C=typeof i==`function`?i(S):i;return I.createElement(Xr,{...c,"aria-current":ee,className:te,ref:l,style:C,to:a,viewTransition:o},typeof s==`function`?s(S):s)});Zr.displayName=`NavLink`;var Qr=I.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=dr,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=I.useContext(H),g=ai(),_=oi(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&gt.test(s);return I.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?I.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});Qr.displayName=`Form`;function $r(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ei(e){let t=I.useContext(bn);return L(t,$r(e)),t}function ti(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=G(),d=W(),f=Bn(e,{relative:o});return I.useCallback(p=>{if(vr(p,t)){p.preventDefault();let t=n===void 0?z(d)===z(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?I.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function ni(e){R(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=I.useRef(yr(e)),n=I.useRef(!1),r=W(),i=I.useMemo(()=>br(r.search,n.current?null:t.current),[r.search]),a=G();return[i,I.useCallback((e,t)=>{let r=yr(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var ri=0,ii=()=>`__${String(++ri)}__`;function ai(){let{router:e}=ei(`useSubmit`),{basename:t}=I.useContext(H),n=tr(),r=e.fetch,i=e.navigate;return I.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Tr(e,t);if(a.navigate===!1){let e=a.fetcherKey||ii();await r(e,n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync})}else await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function oi(e,{relative:t}={}){let{basename:n}=I.useContext(H),r=I.useContext(U);L(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Bn(e||`.`,{relative:t})},o=W();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:V([n,a.pathname])),z(a)}function si(e,{relative:t}={}){let n=I.useContext(wn);L(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=ei(`useViewTransitionState`),i=Bn(e,{relative:t});if(!n.isTransitioning)return!1;let a=B(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=B(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Wt(i.pathname,o)!=null||Wt(i.pathname,a)!=null}var ci=t(o(),1),li=l(),ui=`cartethyia.customization`,q=`media`,di=`background`,fi=1,pi=`/console-backgrounds.jpg`;function mi(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(ui,fi);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(q)||e.createObjectStore(q)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the media database.`)),e}function hi(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??Error(`The media database rejected the request.`)),t}function gi(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}async function _i(){let e=await mi();try{let t=await hi(e.transaction(q,`readonly`).objectStore(q).get(di));if(!t||!t.blob)return null;let n=t;return{blob:n.blob,kind:n.kind,url:URL.createObjectURL(n.blob)}}finally{e.close()}}async function vi(e,t){let n=await mi();try{let r=n.transaction(q,`readwrite`);r.objectStore(q).put({blob:e,kind:t},di),await gi(r,`Could not store the background.`)}finally{n.close()}}async function yi(){let e=await mi();try{let t=e.transaction(q,`readwrite`);t.objectStore(q).delete(di),await gi(t,`Could not remove the background.`)}finally{e.close()}}var bi=2560,xi=.85;async function Si(e){let t=await createImageBitmap(e).catch(()=>null);if(!t)return e;try{let n=Math.max(t.width,t.height),r=Math.min(1,bi/n),i=document.createElement(`canvas`);i.width=Math.max(1,Math.round(t.width*r)),i.height=Math.max(1,Math.round(t.height*r));let a=i.getContext(`2d`);return a?(a.drawImage(t,0,0,i.width,i.height),await Ti(i)??e):e}finally{t.close()}}var Ci=4294967296,wi=268435456;function Ti(e){let{promise:t,resolve:n}=Promise.withResolvers();return e.toBlob(e=>n(e),`image/webp`,xi),t}function Ei(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:null}var Di=[`none`,`frosted`,`vibrancy`,`heavy`],J={backgroundSet:!1,backgroundEnabled:!0,backgroundRevision:0,backgroundOpacity:20,backgroundScale:100,backgroundX:0,backgroundY:0,backgroundBlur:5,blurCards:`frosted`,blurChrome:`frosted`,blurCardsAmount:45,blurCardsDepth:20,blurChromeAmount:25,blurChromeDepth:10,blurCardsEnabled:!0,blurChromeEnabled:!0,emptyOutline:!1},Oi=`cartethyia.customization`,ki=`cartethyia-customization-change`,Ai=[`cards`,`chrome`];function ji(e){return typeof e==`string`&&Di.includes(e)}function Y(e,t,n,r){let i=typeof e==`number`?e:Number(e);return Number.isFinite(i)?Math.min(n,Math.max(t,i)):r}function Mi(e){let t=typeof e==`object`&&e&&!Array.isArray(e)?e:{};return{backgroundSet:t.backgroundSet===!0,backgroundRevision:Y(t.backgroundRevision,0,2**53-1,0),backgroundEnabled:typeof t.backgroundEnabled==`boolean`?t.backgroundEnabled:J.backgroundEnabled,backgroundOpacity:Y(t.backgroundOpacity,0,100,J.backgroundOpacity),backgroundScale:Y(t.backgroundScale,100,180,J.backgroundScale),backgroundX:Y(t.backgroundX,-100,100,J.backgroundX),backgroundY:Y(t.backgroundY,-100,100,J.backgroundY),backgroundBlur:Y(t.backgroundBlur,0,100,J.backgroundBlur),blurCards:ji(t.blurCards)?t.blurCards:J.blurCards,blurChrome:ji(t.blurChrome)?t.blurChrome:J.blurChrome,blurCardsAmount:Y(t.blurCardsAmount,0,100,J.blurCardsAmount),blurChromeAmount:Y(t.blurChromeAmount,0,100,J.blurChromeAmount),blurCardsDepth:Y(t.blurCardsDepth,0,100,J.blurCardsDepth),blurChromeDepth:Y(t.blurChromeDepth,0,100,J.blurChromeDepth),blurCardsEnabled:t.blurCardsEnabled!==!1,blurChromeEnabled:t.blurChromeEnabled!==!1,emptyOutline:t.emptyOutline===!0}}var Ni=null;function Pi(){if(Ni)return Ni;if(typeof window>`u`)return J;try{Ni=Mi(JSON.parse(window.localStorage.getItem(Oi)??`null`))}catch{Ni={...J}}return Ni}function Fi(e){if(typeof document>`u`)return;let t=document.documentElement;t.dataset.blurCards=e.blurCards,t.dataset.blurChrome=e.blurChrome,t.style.setProperty(`--blur-cards`,`${e.blurCardsAmount}`),t.style.setProperty(`--blur-chrome`,`${e.blurChromeAmount}`),t.style.setProperty(`--blur-cards-depth`,`${e.blurCardsDepth}`),t.style.setProperty(`--blur-chrome-depth`,`${e.blurChromeDepth}`),t.dataset.blurCardsOn=e.blurCardsEnabled?`true`:`false`,t.dataset.blurChromeOn=e.blurChromeEnabled?`true`:`false`,t.dataset.emptyOutline=e.emptyOutline?`true`:`false`,t.dataset.bgActive=e.backgroundEnabled?`true`:`false`,t.style.setProperty(`--bg-opacity`,(e.backgroundOpacity/100).toFixed(2)),t.style.setProperty(`--bg-scale`,(e.backgroundScale/100).toFixed(2)),t.style.setProperty(`--bg-x`,`${e.backgroundX}%`),t.style.setProperty(`--bg-y`,`${e.backgroundY}%`),t.style.setProperty(`--bg-blur`,`${Math.round(e.backgroundBlur*.4)}px`)}function Ii(e){try{window.localStorage.setItem(Oi,JSON.stringify(e))}catch{}}function Li(e){let t=Mi({...Pi(),...e});return Ni=t,typeof window<`u`&&(Ii(t),Fi(t),window.dispatchEvent(new CustomEvent(ki))),t}function Ri(){let[e,t]=(0,I.useState)(Pi);return(0,I.useEffect)(()=>{let e=()=>t(Pi());return window.addEventListener(ki,e),window.addEventListener(`storage`,e),()=>{window.removeEventListener(ki,e),window.removeEventListener(`storage`,e)}},[]),[e,e=>t(Li(e))]}var zi=Ai,X=r(),Bi=`(max-width: 767px)`,Vi=`(prefers-reduced-motion: reduce)`;function Hi(e){let[t,n]=(0,I.useState)(()=>typeof window<`u`&&window.matchMedia(e).matches);return(0,I.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function Ui(){let[e,t]=(0,I.useState)(()=>typeof document>`u`||!document.hidden);return(0,I.useEffect)(()=>{let e=()=>t(!document.hidden);return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Wi(){let[e]=Ri(),[t,n]=(0,I.useState)(null),r=Hi(Bi),i=Hi(Vi),a=Ui();(0,I.useEffect)(()=>{if(!e.backgroundSet){n(e=>(e&&URL.revokeObjectURL(e.url),{blob:new Blob,kind:`image`,url:pi}));return}let t=!1,r=null;return _i().then(e=>{if(t){e&&URL.revokeObjectURL(e.url);return}r=e,n(e)}).catch(()=>{t||n(null)}),()=>{t=!0,r&&URL.revokeObjectURL(r.url)}},[e.backgroundSet,e.backgroundRevision]);let o=(0,I.useRef)(null),s=t?.kind===`video`&&!r&&!i&&a;return(0,I.useEffect)(()=>{let e=o.current;if(e){if(s){e.play().catch(()=>{});return}e.pause()}},[s]),!t||!e.backgroundEnabled?null:(0,X.jsx)(`div`,{className:`custom-background`,"data-kind":t.kind,"data-playing":s?`true`:`false`,"aria-hidden":`true`,children:t.kind===`video`?(0,X.jsx)(`video`,{ref:o,className:`custom-background-media`,src:t.url,autoPlay:s,loop:!0,muted:!0,playsInline:!0,preload:r?`metadata`:`auto`}):(0,X.jsx)(`img`,{className:`custom-background-media`,src:t.url,alt:``})})}function Gi({open:e,onClose:t,onConfirm:n,title:r,message:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,danger:s}){let[c,l]=(0,I.useState)(null),[u,d]=(0,I.useState)(!1);return(0,I.useEffect)(()=>{e&&(l(null),d(!1))},[e]),(0,X.jsx)(ce,{open:e,onClose:t,title:r,description:i,children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,X.jsx)(`p`,{className:`text-body text-text-secondary leading-normal`,children:i}),c?(0,X.jsx)(`p`,{role:`alert`,className:`text-caption text-red`,children:c}):null,(0,X.jsxs)(Be,{children:[(0,X.jsx)(C,{variant:`secondary`,size:`sm`,onClick:t,disabled:u,children:o}),(0,X.jsx)(C,{variant:s?`danger`:`primary`,size:`sm`,onClick:()=>{u||(l(null),d(!0),Promise.resolve().then(()=>n()).then(()=>t()).catch(e=>{l(j(e,`Action failed. Please try again.`)),d(!1)}))},disabled:u,children:u?`Working…`:a})]})]})})}var Ki={plain:`code-chip-plain`,muted:`code-chip-muted text-text-secondary bg-surface-muted border border-inner-border px-4 py-1 rounded-chip`,accent:`code-chip-accent text-accent bg-accent-soft px-4 py-1.5 rounded-chip font-bold`};function qi({value:e,tone:t=`muted`,action:n,className:r=``,children:i,...a}){return(0,X.jsxs)(`span`,{className:S(`code-chip inline-flex items-center gap-3 min-w-0 max-w-full font-mono text-caption tabular-nums`,Ki[t],r),...a,children:[(0,X.jsx)(`code`,{className:`code-chip-value min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`,title:a.title??e,children:e}),n?(0,X.jsx)(`span`,{className:`code-chip-action inline-flex shrink-0`,children:n}):null,i]})}var Ji=`cartethyia:update-dismissed`;function Yi(){try{return window.localStorage.getItem(Ji)}catch{return null}}function Xi(e){try{window.localStorage.setItem(Ji,e)}catch{}}function Zi(){let[e,t]=(0,I.useState)(!1);return{copied:e,copy:e=>{navigator.clipboard?.writeText(e),t(!0),window.setTimeout(()=>t(!1),1500)}}}function Qi({open:e,onClose:t,currentVersion:n,latestVersion:r,releaseUrl:i,onDismissVersion:o}){let{copied:c,copy:l}=Zi(),d=r??`the latest release`;return(0,X.jsx)(ce,{open:e,onClose:t,title:`Update available`,description:`Cartethyia ${d} is available; this install runs ${n}.`,size:`md`,footer:(0,X.jsxs)(Be,{children:[o===void 0?(0,X.jsx)(C,{variant:`ghost`,onClick:t,children:`Later`}):(0,X.jsxs)(C,{variant:`ghost`,onClick:()=>{o?.(),t()},children:[`Don’t show for v`,d]}),(0,X.jsxs)(C,{onClick:()=>l(a),children:[c?(0,X.jsx)(_,{size:14,"aria-hidden":`true`}):(0,X.jsx)(g,{size:14,"aria-hidden":`true`}),c?`Copied`:`Copy update command`]})]}),children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-6`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid size-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(Xe,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsxs)(`p`,{className:`font-semibold text-caption`,children:[n,` → `,d]}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`Stop the gateway, run the command, then start again.`})]})]}),(0,X.jsxs)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`p`,{className:`text-badge text-text-tertiary`,children:`Run this in a terminal`}),(0,X.jsxs)(`div`,{className:`mt-3 flex items-center gap-4 min-w-0`,children:[(0,X.jsx)(qi,{value:a,tone:`muted`,title:a,className:`min-w-0 flex-1 truncate`}),(0,X.jsx)(C,{variant:`ghost`,size:`sm`,className:`shrink-0`,onClick:()=>l(a),"aria-label":`Copy the update command`,children:c?(0,X.jsx)(_,{size:14,"aria-hidden":`true`}):(0,X.jsx)(g,{size:14,"aria-hidden":`true`})})]})]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-6 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 shrink-0 text-text-secondary`,children:(0,X.jsx)(x,{size:14,"aria-hidden":`true`})}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary min-w-0`,children:`npm cannot replace the package while Cartethyia is running from it, so this cannot update itself the way a single-binary tool can. That is why the console gives you the command instead of a button that installs.`})]}),(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,X.jsxs)(`a`,{href:i??u,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 text-badge text-accent hover:underline`,children:[(0,X.jsx)(We,{size:12,"aria-hidden":`true`}),`What’s new on GitHub`]}),(0,X.jsxs)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 text-badge text-accent hover:underline`,children:[(0,X.jsx)(We,{size:12,"aria-hidden":`true`}),`Package on npm`]})]})]})})}var $i=`cartethyia.query-cache`,Z=`client`,ea=`default`,ta=1;function na(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open($i,ta);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Z)||e.createObjectStore(Z)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the query cache.`)),e}function ra(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??Error(`The query cache rejected the request.`)),t}function ia(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}function aa(e){if(typeof e!=`object`||!e||!(`version`in e)||!(`state`in e))return!1;let{version:t,state:n}=e;return t===1&&typeof n==`object`&&!!n}async function oa(e){try{let t=await na();try{let n=t.transaction(Z,`readwrite`);n.objectStore(Z).put({version:1,state:e},ea),await ia(n,`Could not store the query cache.`)}finally{t.close()}}catch{}}async function sa(){try{let e=await na();try{let t=await ra(e.transaction(Z,`readonly`).objectStore(Z).get(ea));return aa(t)?t.state:void 0}finally{e.close()}}catch{return}}async function ca(){try{let e=await na();try{let t=e.transaction(Z,`readwrite`);t.objectStore(Z).delete(ea),await ia(t,`Could not remove the query cache.`)}finally{e.close()}}catch{}}var Q=new ht({defaultOptions:{queries:A,mutations:Ie}});function la(e){let[t,n,r]=e.queryKey;return t===`console`?n===`session`?!0:n===`providers`?r===void 0||e.queryKey[3]===`models`:n===`settings`?r===`runtime`:n===`cli-tools`&&r===`registry`:!1}async function ua(){let e=await sa();e!==void 0&&dt(Q,e)}function da(){ca()}function fa(){let e,t=Q.getQueryCache().subscribe(t=>{t.type===`updated`&&(t.action.type===`success`||t.action.type===`error`)&&e===void 0&&(e=setTimeout(()=>{e=void 0,oa(ut(Q,{shouldDehydrateQuery:la}))},2e3))});return()=>{e!==void 0&&clearTimeout(e),t()}}function pa(e){let[t,n]=(e.trim().replace(/^v/i,``).split(`+`,1)[0]??``).split(`-`,2);if(t===void 0||!/^\d+\.\d+\.\d+$/.test(t))return null;let r=t.split(`.`).map(Number);if(r.length!==3||r.some(e=>!Number.isSafeInteger(e)||e<0))return null;let i=n===void 0||n.length===0?[]:n.split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e);return i.some(e=>typeof e==`number`&&(!Number.isSafeInteger(e)||e<0))?null:{core:[r[0]??0,r[1]??0,r[2]??0],prerelease:i}}function ma(e,t){if(e===void 0||t===void 0)return!1;let n=pa(e),r=pa(t);return n===null||r===null?t.trim()!==e.trim():ha(r,n)>0}function ha(e,t){for(let n=0;n<e.core.length;n+=1){let r=e.core[n]??0,i=t.core[n]??0;if(r!==i)return r>i?1:-1}if(e.prerelease.length===0&&t.prerelease.length>0)return 1;if(e.prerelease.length>0&&t.prerelease.length===0)return-1;for(let n=0;n<Math.max(e.prerelease.length,t.prerelease.length);n+=1){let r=e.prerelease[n],i=t.prerelease[n];if(r===void 0)return-1;if(i===void 0)return 1;if(r!==i)return typeof r==`number`&&typeof i==`string`?-1:typeof r==`string`&&typeof i==`number`||r>i?1:-1}return 0}var ga=5e3,_a=new WeakMap,va={"/":[{queryKey:N.settings.runtime,read:e=>M(`/settings/runtime`,{signal:e})},{queryKey:N.apiKeys.all,read:e=>M(`/api-keys`,{signal:e}).then(xe)}],"/providers":[{queryKey:N.providers.all,read:e=>M(`/providers`,{signal:e}).then(de)}],"/proxy":[{queryKey:N.network.pools,read:e=>M(`/network/pools`,{signal:e}).then(ue)}]};function ya(e,t){let n=va[t];if(n===void 0)return Promise.resolve();let r=Date.now(),i=_a.get(e);if(i!==void 0){if(i>r)return Promise.resolve();_a.delete(e)}return Promise.allSettled(n.map(t=>e.fetchQuery({queryKey:t.queryKey,queryFn:e=>t.read(D(e)),...A}))).then(t=>{if(t.some(e=>e.status===`rejected`&&!Ne(e.reason))){_a.set(e,Date.now()+ga);return}_a.delete(e)})}var ba=3e3,xa=20;function Sa(e){if(typeof e!=`object`||!e)return;let t=e;if(!(typeof t.id!=`string`||typeof t.title!=`string`||typeof t.message!=`string`||typeof t.createdAt!=`string`||t.kind!==`memory-high`&&t.kind!==`memory-growth`&&t.kind!==`update-available`||t.level!==`warning`&&t.level!==`info`))return{id:t.id,kind:t.kind,title:t.title,message:t.message,createdAt:t.createdAt,level:t.level,...t.href===`https://github.com/risunCodex/Cartethyia/releases`?{href:t.href}:{}}}function Ca(){let[e,t]=(0,I.useState)([]);return(0,I.useEffect)(()=>{let e=!0,n,r,i=()=>{e&&(n=new EventSource(`/console/api/notifications/stream`),n.addEventListener(`notification`,n=>{let r;try{r=JSON.parse(n.data)}catch{return}let i=Sa(r);i&&e&&t(e=>[i,...e.filter(e=>e.id!==i.id)].slice(0,xa))}),n.onerror=()=>{n?.close(),n=void 0,e&&r===void 0&&(r=setTimeout(()=>{r=void 0,i()},ba))})};return i(),()=>{e=!1,n?.close(),clearTimeout(r)}},[]),e}function wa(){return T({queryKey:N.session.current,queryFn:()=>Ae(),staleTime:6e4,gcTime:3e5,retry:!1,refetchOnWindowFocus:!1})}function Ta(){return T({queryKey:N.system.health,queryFn:e=>M(`/system/health`,{signal:D(e)}).then(fe),...A,refetchInterval:k.status})}function Ea(){return T({queryKey:N.releases.githubLatest,queryFn:e=>M(`/updates/release`,{signal:D(e)}).then(ye),...A,staleTime:18e5,refetchInterval:18e5,retry:!1})}function Da(e){return T({queryKey:N.usageAnalytics.summary(e),queryFn:t=>M(`/system/usage/summary?period=${encodeURIComponent(e)}`,{signal:D(t)}).then(le),...A,refetchInterval:k.status})}function Oa(e){return T({queryKey:N.usageAnalytics.chart(e),queryFn:t=>M(`/system/usage/chart?period=${encodeURIComponent(e)}`,{signal:D(t)}).then(ge),...A,refetchInterval:k.status})}function ka(e,t){return T({queryKey:N.usageAnalytics.by(e,t),queryFn:n=>M(`/system/usage/by-${t}?period=${encodeURIComponent(e)}`,{signal:D(n)}).then(ve),...A,refetchInterval:k.status})}function Aa(e,t=50,n){let r=n==null?``:`&httpStatus=${encodeURIComponent(String(n))}`;return T({queryKey:N.usageAnalytics.requests(e,t,n),queryFn:n=>M(`/system/usage/requests?period=${encodeURIComponent(e)}&limit=${encodeURIComponent(String(t))}${r}`,{signal:D(n)}).then(pe),...A,placeholderData:e=>e,refetchInterval:k.live})}function ja(e){return T({queryKey:N.usageAnalytics.requestDetail(e??`_`),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Request is required`};return M(`/system/usage/requests/${encodeURIComponent(e)}`,{signal:D(t)}).then(me)},enabled:e!==null,...A})}function Ma(e){return T({queryKey:N.audit.list(e??{}),queryFn:t=>{let n=new URLSearchParams;e?.action&&n.set(`action`,e.action),e?.actor&&n.set(`actor`,e.actor),e?.cursor&&n.set(`cursor`,e.cursor),e?.limit&&n.set(`limit`,String(e.limit));let r=n.toString()?`?${n.toString()}`:``;return M(`/audit${r}`,{signal:D(t)}).then(_e)},...A})}function Na(){return T({queryKey:N.providers.all,queryFn:e=>M(`/providers`,{signal:D(e)}).then(de),...A,gcTime:6e5,refetchInterval:k.catalog})}function Pa(e){return T({queryKey:N.providers.detail(e??``),queryFn:t=>M(`/providers/${encodeURIComponent(e??``)}`,{signal:D(t)}).then(he),enabled:!!e,...A})}function Fa(e){return T({queryKey:N.providers.models(e),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Provider is required`};return M(`/providers/${encodeURIComponent(e)}/models`,{signal:D(t)}).then(be)},...A,staleTime:3e5,gcTime:6e5,enabled:!!e})}function Ia(){let e=E();return F({mutationFn:({providerId:e,modelIds:t,wireFamily:n,metadata:r})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`POST`,body:JSON.stringify({modelIds:t,...n?{wireFamily:n}:{},...r?{metadata:r}:{}})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)}),w.success(`Models registered`,`${n.modelIds.length} model(s) added to ${n.providerId}`)},onError:e=>{w.error(`Failed to register models`,j(e))}})}function La(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Ya(e,r.providerId)}})}function Ra(){return F({mutationFn:e=>M(`/providers/connection-test`,{method:`POST`,body:JSON.stringify(e)})})}function za(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Ya(e,r.providerId)}})}function Ba(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)})}})}function Va(){let e=E();return F({mutationFn:({providerId:e,modelId:t,route:n,metadata:r})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify({modelId:t,route:n,enabled:!0,metadata:r})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)}),w.success(`Model updated`,`${n.modelId} limits and capabilities saved`)},onError:e=>{w.error(`Failed to update model`,j(e))}})}function Ha(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`DELETE`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)})}})}function Ua(e){return T({queryKey:N.providers.accounts(e),queryFn:t=>M(`/providers/${encodeURIComponent(e??``)}/accounts`,{signal:D(t)}),enabled:!!e,...A,staleTime:3e4,gcTime:6e5})}function Wa(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/accounts`,{method:`POST`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function Ga(){let e=E();return F({mutationFn:({providerId:e,accounts:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/batch`,{method:`POST`,body:JSON.stringify({accounts:t})}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function Ka(){let e=E();return F({mutationFn:({providerId:e,accountId:t,request:n})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}`,{method:`PATCH`,body:JSON.stringify(n)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function qa(e,t){return T({queryKey:N.providers.healthEvents(e,t),queryFn:n=>M(`/providers/${encodeURIComponent(e??``)}/accounts/${encodeURIComponent(t??``)}/health-events`,{signal:D(n)}),enabled:!!e&&!!t,...A,refetchInterval:k.status})}async function Ja(e,t){await e.invalidateQueries({predicate:e=>{let n=e.queryKey;return n[0]===`console`&&n[1]===`providers`&&n[2]===t&&n[3]===`accounts`&&n[5]===`health-events`}})}async function Ya(e,t){await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(t)}),Ja(e,t),e.invalidateQueries({queryKey:N.providers.all})])}function Xa(){let e=E();return F({mutationFn:({providerId:e,accountId:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/recover`,{method:`POST`,body:`{}`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,n.accountId)}),e.invalidateQueries({queryKey:N.providers.all})]),w.success(`Account recovered`)},onError:e=>{w.error(`Could not recover the account.`,j(e))}})}function Za(){return F({mutationFn:({providerId:e,accountIds:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/export`,{method:`POST`,body:JSON.stringify({accountIds:t})})})}function Qa(){return F({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/authorize`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function $a(){let e=E();return F({mutationFn:({providerId:e,code:t,state:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/callback?${new URLSearchParams({code:t,state:n}).toString()}`),onSuccess:async(t,n)=>{await Ya(e,n.providerId)}})}function eo(){return F({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/device/start`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function to(){let e=E();return F({mutationFn:({providerId:e,credential:t,fields:n,accountLabel:r})=>M(`/providers/${encodeURIComponent(e)}/oauth/import`,{method:`POST`,body:JSON.stringify({credential:t,...n&&Object.keys(n).length>0?{fields:n}:{},...r?{accountLabel:r}:{}})}),onSuccess:async(t,n)=>{await Ya(e,n.providerId),await e.invalidateQueries({queryKey:N.quota.all})}})}function no(){let e=E();return F({mutationFn:({providerId:e,deviceAuthId:t})=>M(`/providers/${encodeURIComponent(e)}/oauth/device/poll`,{method:`POST`,body:JSON.stringify({deviceAuthId:t})}),onSuccess:async(t,n)=>{t.status===`complete`&&await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,t.accountId)}),e.invalidateQueries({queryKey:N.quota.all}),Ya(e,n.providerId)])}})}function ro(){let e=E();return F({mutationFn:e=>M(`/providers`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async t=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.modelRouting.all})]),w.success(`Provider created`,t.label??t.providerId)},onError:e=>{w.error(`Failed to create provider`,j(e))}})}function io(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.providers.detail(n)})]),w.success(`Provider updated`,n)},onError:e=>{w.error(`Failed to update provider`,j(e))}})}function ao(){let e=E();return F({mutationFn:({providerId:e,enabled:t})=>M(`/providers/platform/global/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.providers.detail(n)})])}})}function oo(e={}){let t=E();return F({mutationFn:e=>M(`/providers/${encodeURIComponent(e)}/models/sync`,{method:`POST`,body:`{}`}),onSuccess:async(n,r)=>{await t.invalidateQueries({queryKey:N.providers.models(r)}),e.silent||w.success(`Models fetched`,n.synced>0?`${n.synced} new model${n.synced===1?``:`s`} added`:`No new models found`)},onError:t=>{e.silent||w.error(`Failed to fetch models`,j(t))}})}function so(){let e=E();return F({mutationFn:e=>M(`/providers/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.quota.all}),e.invalidateQueries({queryKey:N.modelRouting.all})]),w.success(`Provider deleted`,n)},onError:e=>{w.error(`Failed to delete provider`,j(e))}})}var co={name:`cartethyia`,version:`2.5.2`,description:`A powerful, self-hosted reverse proxy for OpenAI- and Anthropic-compatible AI clients, powered by native Bun and Elysia. It serves both protocols from a single server, routes every model across any configured provider, and translates requests and responses in real time — streaming and prompt caching included. Underneath it runs a full delivery engine: per-account health tracking, quota and cooldown enforcement, automatic failover across pools and providers, usage accounting, and telemetry. Point OpenCode, Cline, Claude Code, Codex, or any compatible client at Cartethyia and it keeps its native protocol while the gateway absorbs every provider-specific difference behind it. Runs on embedded SQLite or external PostgreSQL with optional Redis coordination, ships as a global CLI with a system-tray console, and needs only Bun 1.4+ alongside Node.js/npm.`,license:`GPL-3.0-only`,type:`module`,packageManager:`bun@1.4.0`,repository:{type:`git`,url:`git+https://github.com/risunCodex/Cartethyia.git`},homepage:`https://github.com/risunCodex/Cartethyia#readme`,bugs:{url:`https://github.com/risunCodex/Cartethyia/issues`},keywords:[`ai`,`gateway`,`llm`,`bun`,`self-hosted`],bin:{cartethyia:`scripts/cli/bin/cartethyia.cjs`,carte:`scripts/cli/bin/carte.cjs`},files:[`scripts/cli/`,`src/`,`migrations/`,`dist/dashboard/`,`.env.example`,`README.md`],workspaces:[`dashboard`],engines:{bun:`>=1.4.0`},scripts:{dev:`bun run dev:stack`,"dev:watch":`bun run scripts/dev/supervisor.ts`,test:`bun run scripts/ci/run.ts`,build:`bun run scripts/binary/build.ts`,prepack:`bun run dashboard:build`,setup:`bun run scripts/cli/command/setup.ts`,start:`bun run scripts/cli/main.ts start`,doctor:`bun run scripts/cli/command/doctor.ts`,"probe:egress":`bun run scripts/operations/probe-egress.ts`,restart:`bun run scripts/binary/restart.ts`,"build:aot":`bun run scripts/binary/aot.ts`,"dev:stack":`concurrently -n BACKEND,DASHBOARD -c cyan,magenta --kill-others-on-fail "bun run dev:backend" "bun run dashboard:dev"`,typecheck:`tsc --noEmit`,"test:watch":`bun run scripts/ci/run.ts --watch`,"test-db:up":`docker compose -f docker-compose.test.yml up -d --wait postgres-test`,"dev:backend":`bun run --hot src/main.ts`,"dev:console-auth":`bun run scripts/qa/console-session.ts`,"dev:visual-baseline":`bun run scripts/qa/visual-baseline.ts`,"build:binary":`bun run scripts/binary/compile.ts`,"test:backend":`bun run scripts/ci/run.ts --scope backend`,"test-db:down":`docker compose -f docker-compose.test.yml down`,"dashboard:dev":`bun run --cwd dashboard dev`,"test-db:check":`bun run scripts/ci/db-check.ts`,"dashboard:test":`bun run scripts/ci/run.ts --scope dashboard`,"test-db:reset":`docker compose -f docker-compose.test.yml down -v && docker compose -f docker-compose.test.yml up -d --wait postgres-test`,"dashboard:build":`bun run --cwd dashboard build`,"dashboard:typecheck":`bun run --cwd dashboard typecheck`,"check:migrations":`bun run scripts/ci/check-migrations.ts`},dependencies:{"drizzle-orm":`0.45.2`,elysia:`^2.0.0-beta.16`,enquirer:`^2.4.1`,ioredis:`6.0.0`,jose:`^6.2.12`,jsonrepair:`^3.15.0`,pg:`8.23.0`,pino:`^10.3.1`,"pino-pretty":`^13.1.3`,protobufjs:`^7.6.5`,"socks-proxy-agent":`^10.1.0`,systray2:`2.1.4`,typebox:`1.3.27`,ws:`8.22.0`},devDependencies:{"@types/pg":`8.11.10`,"@types/ws":`8.18.1`,"bun-types":`1.4.0`,concurrently:`^10.0.5`,"drizzle-kit":`^0.31.11`,typescript:`5.9.2`}}.version,lo=`v${co.replace(/\.0$/,``)} (Jinhsi)`,uo=[{label:`Main`,items:[{label:`Overview`,path:`/`,icon:Ge},{label:`Usage`,path:`/usage`,icon:f},{label:`Providers`,path:`/providers`,icon:et},{label:`Model Lab`,path:`/model-lab`,icon:y}]},{label:`Control`,items:[{label:`Combos & Routes`,path:`/combos`,icon:Ue},{label:`Quota Management`,path:`/quota`,icon:nt},{label:`Proxy & Requests`,path:`/proxy`,icon:d},{label:`CLI Tools`,path:`/cli-tools`,icon:p}]},{label:`Tools`,items:[{label:`Coming soon`,path:`#tools-coming-soon-1`,icon:ae,disabled:!0},{label:`Coming soon`,path:`#tools-coming-soon-2`,icon:ae,children:Array.from({length:5},(e,t)=>({label:`Coming soon ${t+1}`,path:`#tools-coming-soon-${t+3}`,icon:ae,disabled:!0}))}]},{label:`System`,items:[{label:`Customization`,path:`/customization`,icon:Ze},{label:`Console Log`,path:`/console-log`,icon:$e},{label:`Settings`,path:`/settings`,icon:tt}]}],fo={"/":{title:`Overview`,sub:`Gateway health, capacity, and live metrics`,icon:Ge},"/usage":{title:`Usage & Metrics`,sub:`Token economics, requests, and cost breakdown`,icon:f},"/providers":{title:`Provider Catalog`,sub:`Upstream credentials, models, and latency`,icon:et},"/combos":{title:`Combos & Routing`,sub:`Failover policies, model aliases, and weighted routes`,icon:Ue},"/quota":{title:`Quota Management`,sub:`Rate limits, leases, and tenant quotas`,icon:nt},"/proxy":{title:`Proxy & Requests`,sub:`Network pools, SOCKS5/HTTP egress, and dispatch`,icon:d},"/customization":{title:`Customization`,sub:`Background, transparency, and blur`,icon:Ze},"/model-lab":{title:`Model Lab`,sub:`Chat a routed model without leaving the console`,icon:y},"/console-log":{title:`Console Log`,sub:`Live server logs and audit trail`,icon:$e},"/cli-tools":{title:`CLI Tools`,sub:`Claude Code CLI, OpenCode, and local developer tool integrations`,icon:p},"/settings":{title:`Settings`,sub:`Account security, runtime preferences, and state recovery`,icon:tt}},po={title:`Console`,sub:`Cartethyia AI Gateway Administration`,icon:Ge};function mo(e,t){let n=/^\/providers\/([^/]+)\/?$/.exec(e);if(n?.[1]){let e=t.find(e=>e.providerId===n[1]);return{title:e?.label||e?.displayName||n[1],sub:`Routing, accounts, models, and health`,icon:et}}let r=/^\/cli-tools\/([^/]+)\/?$/.exec(e);return r?.[1]?{title:`CLI Tool`,sub:`${r[1]} — mappings, endpoints, and downloadable config`,icon:p}:fo[e]??po}function ho(){try{return Ta()}catch{return{data:void 0,isError:!1,isFetching:!1,isPending:!1}}}function go(){let[e,t]=(0,I.useState)(()=>te()),n=ne(e);return(0,I.useEffect)(()=>{let e=()=>t(te());return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),(0,I.useEffect)(()=>{ie(e)},[e]),(0,X.jsx)(`button`,{type:`button`,onClick:()=>{let e=n?`light`:`dark`;t(e),ee(e)},"aria-label":`Toggle theme`,"aria-pressed":n,className:`topbar-icon-button`,title:n?`Switch to light mode`:`Switch to dark mode`,children:(0,X.jsx)(`span`,{className:`grid place-items-center`,children:n?(0,X.jsx)(oe,{size:17}):(0,X.jsx)(v,{size:17})},n?`sun`:`moon`)})}var _o=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),vo=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`,timeZone:`UTC`});function yo(e){if(!Number.isFinite(e)||e<0)return`Unavailable`;let t=e>=1024**3?{divisor:1024**3,label:`GiB`}:{divisor:1024**2,label:`MiB`};return`${(e/t.divisor).toFixed(1)} ${t.label}`}function bo({icon:e,label:t,value:n,detail:r,title:i}){return(0,X.jsxs)(`div`,{className:`min-w-0 rounded-control border border-inner-border bg-surface-2 p-3`,title:i,children:[(0,X.jsxs)(`dt`,{className:`flex items-center gap-2 text-micro font-medium text-text-tertiary`,children:[(0,X.jsx)(e,{size:13,strokeWidth:1.8,className:`shrink-0`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{children:t})]}),(0,X.jsx)(`dd`,{className:`mt-1 truncate font-mono text-caption font-semibold tabular-nums text-text-primary`,children:n}),r?(0,X.jsx)(`dd`,{className:`mt-1 text-micro text-text-secondary`,children:r}):null]})}function xo({health:e,onOpenUpdate:t}){let[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(()=>new Date),o=(0,I.useRef)(null),s=(0,I.useRef)(null),c=Ca();(0,I.useEffect)(()=>{if(!n)return;a(new Date);let e=window.setInterval(()=>a(new Date),1e3);return()=>window.clearInterval(e)},[n]),(0,I.useEffect)(()=>{if(!n)return;let e=e=>{let t=e.target;s.current&&!s.current.contains(t)&&o.current&&!o.current.contains(t)&&r(!1)},t=e=>{e.key===`Escape`&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[n]);let l=e?e.status===`healthy`?`All systems operational`:e.status===`degraded`?`Gateway degraded`:`Gateway unhealthy`:`System health unavailable`,u=e?e.status===`healthy`?`Postgres & Redis admission connected.`:e.status===`degraded`?`Check connection logs.`:`Gateway is reporting an unhealthy status.`:`Live gateway metrics are not available.`,d=e&&[Number.isFinite(e.memory_percent)?`${e.memory_percent.toFixed(1)}% of system RAM`:void 0,e.database_in_process?`In-process DB included`:void 0].filter(Boolean).join(` · `)||void 0,f=e?.cpu_percent??void 0,p=f!==void 0&&Number.isFinite(f),m=e?p?Number.isFinite(e.cpu_cores)&&e.cpu_cores>0?`1-min load · ${e.cpu_cores} cores`:`Normalized 1-min load`:`Not reported on this platform`:void 0;return(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsxs)(`button`,{ref:o,type:`button`,className:`topbar-icon-button`,"aria-label":`Notifications`,"aria-expanded":n,"aria-haspopup":`dialog`,onClick:()=>r(e=>!e),children:[(0,X.jsx)(Ve,{size:17}),c.length>0?(0,X.jsx)(`span`,{"aria-label":`${c.length} notifications`,className:`absolute right-1.5 top-1.5 size-2 rounded-full bg-accent`}):null]}),n?(0,ci.createPortal)((0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{"aria-hidden":`true`,className:`fixed inset-0 z-floating bg-overlay backdrop-blur-dialog`,onClick:()=>r(!1)}),(0,X.jsxs)(`div`,{ref:s,role:`dialog`,"aria-label":`Notifications`,className:`app-topbar-popover popout-enter glass rounded-sidebar border border-inner-border bg-popover-bg p-5 shadow-popout z-popover`,children:[(0,X.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-3 font-bold text-body-lg`,children:[(0,X.jsx)(`span`,{className:`w-13 h-13 rounded-pill bg-accent-soft text-accent grid place-items-center`,children:(0,X.jsx)(Ve,{size:13})}),(0,X.jsx)(`span`,{children:`Notifications`})]}),(0,X.jsx)(`button`,{type:`button`,"aria-label":`Close notifications`,onClick:()=>r(!1),className:`cursor-pointer border-none bg-transparent p-2 text-caption text-text-tertiary`,children:(0,X.jsx)(se,{size:14})})]}),(0,X.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 flex flex-col gap-3`,children:[c.length>0?(0,X.jsx)(`section`,{"aria-label":`Notifications`,className:`flex flex-col gap-2`,children:c.map(e=>(0,X.jsxs)(`article`,{className:`flex items-start gap-3 rounded-card border p-4 ${e.level===`warning`?`border-orange-soft bg-orange-soft`:`border-accent/25 bg-accent-soft`}`,children:[(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block text-caption font-semibold text-text-primary`,children:e.title}),(0,X.jsx)(`span`,{className:`mt-1 block text-badge text-text-secondary`,children:e.message})]}),e.href?e.kind===`update-available`?(0,X.jsx)(`button`,{type:`button`,className:`shrink-0 text-badge font-semibold text-accent`,onClick:t,children:`Update`}):(0,X.jsx)(`a`,{className:`shrink-0 text-badge font-semibold text-accent`,href:e.href,target:`_blank`,rel:`noreferrer`,children:`Open`}):null]},e.id))}):(0,X.jsx)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4 text-badge text-text-secondary`,children:`No active memory or update alerts.`}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid w-12 h-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(et,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`font-semibold text-caption`,children:l}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:u})]})]}),(0,X.jsxs)(`dl`,{"aria-label":`Runtime metrics`,className:`grid grid-cols-2 gap-2`,children:[(0,X.jsx)(bo,{icon:h,label:`Local time`,value:_o.format(i)}),(0,X.jsx)(bo,{icon:ae,label:`UTC`,value:vo.format(i)}),(0,X.jsx)(bo,{icon:rt,label:`Uptime`,value:e?re(e.uptime_seconds):`Unavailable`,detail:e&&Number.isFinite(e.uptime_seconds)&&e.uptime_seconds>=0?`Gateway process running`:void 0}),(0,X.jsx)(bo,{icon:qe,label:`Process RSS`,value:e?yo(e.memory_bytes):`Unavailable`,detail:d,title:`Process resident set size; percentage is share of system RAM.`}),(0,X.jsx)(bo,{icon:Ue,label:`CPU load`,value:p&&f!==void 0?`${f.toFixed(1)}%`:`Unavailable`,detail:m,title:`One-minute load average normalized by the number of CPU cores.`}),(0,X.jsx)(bo,{icon:Ye,label:`Runtime`,value:e?.platform?.trim()||`Unavailable`,detail:e?.platform?.trim()?`Gateway host platform`:void 0,title:e?.platform?.trim()||`Runtime platform unavailable`})]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid w-12 h-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(Qe,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`font-semibold text-caption`,children:lo}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`High-performance AI Gateway & Protocol Orchestrator.`})]})]})]})]})]}),document.body):null]})}function So({group:e,pathname:t,onIntent:n}){return(0,X.jsxs)(`div`,{className:`nav-group-section`,children:[(0,X.jsx)(`p`,{className:`nav-group-title`,children:e.label}),(0,X.jsx)(Co,{items:e.items,pathname:t,onIntent:n})]})}function Co({items:e,pathname:t,onIntent:n}){let r=(0,I.useRef)(null),[i,a]=(0,I.useState)({top:0,height:0,opacity:0}),[o,s]=(0,I.useState)(()=>new Set);return(0,I.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let t=e.querySelector(`[data-active="true"]`);if(!t){a(e=>({...e,opacity:0}));return}let n=e.getBoundingClientRect(),i=t.getBoundingClientRect();a({top:i.top-n.top,height:i.height,opacity:1})},[t,e]),(0,X.jsxs)(`div`,{ref:r,className:`nav-items-container`,children:[(0,X.jsx)(`div`,{className:`sidebar-active-indicator`,style:{transform:`translateY(${i.top}px)`,height:`${i.height}px`,opacity:i.opacity},"aria-hidden":`true`}),e.map(e=>{if(e.children!==void 0){let t=o.has(e.path??e.label);return(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full`,"aria-expanded":t,onClick:()=>s(t=>{let n=new Set(t),r=e.path??e.label;return n.has(r)?n.delete(r):n.add(r),n}),children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(He,{size:14,className:`ml-auto shrink-0 transition-transform ${t?`rotate-180`:``}`,"aria-hidden":`true`})]}),t?(0,X.jsx)(`div`,{className:`ml-6 border-l border-inner-border pl-2`,children:e.children.map(e=>(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,title:`Coming soon`,children:[(0,X.jsx)(e.icon,{size:15,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label))}):null]},e.path??e.label)}if(e.disabled)return(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,"aria-label":`${e.label} — unavailable`,title:`Coming soon`,children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label);if(e.path===void 0)return null;let r=e.path,i=r===`/`?t===`/`:t===r||t.startsWith(`${r}/`);return(0,X.jsxs)(Zr,{to:r,end:r===`/`,"data-active":i?`true`:void 0,className:`nav-link-item ${i?`active`:``}`,onMouseEnter:()=>n(r),onFocus:()=>n(r),children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),e.badge?(0,X.jsx)(`span`,{className:`nav-link-badge`,children:e.badge}):null]},r)})]})}function wo({user:e,children:t}){let n=G(),r=W(),[i,a]=(0,I.useState)(!1),[o,s]=(0,I.useState)(!1),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(!1),p=ho(),m=Ea(),h=p.data?.version??co,g=m.data?.tag_name?.replace(/^v/,``),_=ma(h,g),v=Na(),y=(0,I.useRef)(null);(0,I.useEffect)(()=>{_&&g!==void 0&&Yi()!==g&&y.current!==g&&(y.current=g,f(!0))},[_,g]);let b=e=>{ya(Q,e)};(0,I.useEffect)(()=>{a(!1)},[r.pathname]),(0,I.useEffect)(()=>{let e=()=>a(!1);return window.addEventListener(`cartethyia:overlay-open`,e),()=>window.removeEventListener(`cartethyia:overlay-open`,e)},[]),(0,I.useLayoutEffect)(()=>{window.scrollTo(0,0)},[r.pathname]);let x=async()=>{s(!0);try{await M(`/auth/logout`,{method:`POST`})}finally{Q.clear(),da(),n(`/login`,{replace:!0})}};(0,I.useEffect)(()=>(document.documentElement.dataset.glassEnabled=`true`,Fi(Pi()),()=>{delete document.documentElement.dataset.glassEnabled}),[]);let S=mo(r.pathname,v.data??[]);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`app-bg`,"aria-hidden":`true`}),(0,X.jsx)(`div`,{className:`app-shell-frame`,children:(0,X.jsxs)(`div`,{className:`app-shell-root`,"data-drawer":i?`open`:void 0,"data-page-scroll":r.pathname===`/console-log`?`contained`:void 0,onClick:e=>{i&&e.target.closest(`.app-main-column`)&&a(!1)},children:[(0,X.jsxs)(`aside`,{className:`glass app-sidebar ${i?`is-open`:``}`,"aria-label":`Dashboard navigation`,children:[(0,X.jsxs)(`div`,{className:`brand-header`,children:[(0,X.jsx)(`div`,{"aria-hidden":`true`,className:`brand-icon overflow-hidden p-0`,children:(0,X.jsx)(`img`,{src:`/assets/brand/sidebar_ico.jpg`,alt:`Cartethyia`,onError:e=>{e.currentTarget.onerror=null,e.currentTarget.src=`/assets/brand/sidebar_ico.jpg`},className:`w-full h-full object-cover block`})}),(0,X.jsxs)(`div`,{className:`brand-meta`,children:[(0,X.jsx)(`div`,{className:`brand-name`,children:(0,X.jsx)(`span`,{children:`Cartethyia`})}),(0,X.jsxs)(`div`,{className:`brand-version-badge`,children:[(0,X.jsx)(`a`,{href:c,target:`_blank`,rel:`noreferrer`,className:`brand-version-link`,children:lo}),_?(0,X.jsxs)(`button`,{type:`button`,onClick:()=>f(!0),className:`brand-update-badge`,title:g===void 0?`A newer Cartethyia release is available`:`Update available: v${g} — how to install it`,children:[(0,X.jsx)(Qe,{size:9,className:`shrink-0`,"aria-hidden":`true`}),g===void 0?`update`:`Update v${g}`]}):null]})]})]}),(0,X.jsx)(`nav`,{className:`flex-1 overflow-y-auto py-2 px-0`,children:uo.map(e=>(0,X.jsx)(So,{group:e,pathname:r.pathname,onIntent:b},e.label))}),(0,X.jsx)(`div`,{className:`sidebar-user-card`,children:(0,X.jsxs)(`div`,{className:`user-card-content`,children:[(0,X.jsx)(`div`,{className:`user-avatar`,"aria-hidden":`true`,children:(e.displayName??e.email).slice(0,2).toUpperCase()}),(0,X.jsxs)(`div`,{className:`user-info`,children:[(0,X.jsx)(`p`,{className:`user-name`,children:e.displayName||`Admin`}),(0,X.jsx)(`p`,{className:`user-role`,children:e.email})]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>u(!0),disabled:o,"aria-label":`Sign out`,title:`Sign out`,className:`topbar-icon-button w-15 h-15 rounded-inset`,children:(0,X.jsx)(Ke,{size:14})})]})})]}),(0,X.jsxs)(`div`,{className:`app-main-column`,children:[(0,X.jsx)(Wi,{}),(0,X.jsxs)(`header`,{className:`glass app-topbar`,children:[(0,X.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,className:`topbar-menu-btn`,onClick:()=>a(!0),children:(0,X.jsx)(Je,{size:18})}),(0,X.jsxs)(`div`,{className:`topbar-meta`,children:[(0,X.jsxs)(`h1`,{className:`topbar-title`,children:[(0,X.jsx)(S.icon,{className:`topbar-title-icon`,size:16,"aria-hidden":`true`}),S.title]}),(0,X.jsx)(`p`,{className:`topbar-subtitle`,children:S.sub})]}),(0,X.jsxs)(`div`,{className:`topbar-actions`,children:[(0,X.jsx)(go,{}),(0,X.jsx)(xo,{health:p.data,onOpenUpdate:()=>f(!0)})]})]}),(0,X.jsx)(`main`,{className:`route-enter w-full min-w-0`,children:t})]})]})}),(0,X.jsx)(Gi,{open:l,onClose:()=>u(!1),onConfirm:x,title:`Sign out?`,message:`You will need to sign in again to open the console.`,confirmLabel:`Sign out`,danger:!0}),(0,X.jsx)(Qi,{open:d,onClose:()=>f(!1),currentVersion:h,...g===void 0?{}:{latestVersion:g},...m.data?.html_url===void 0?{}:{releaseUrl:m.data.html_url},...g===void 0?{}:{onDismissVersion:()=>Xi(g)}})]})}var To=class extends I.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[console] route render failed:`,e,t.componentStack)}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error!==null&&this.setState({error:null})}render(){return this.state.error===null?this.props.children:(0,X.jsx)(`main`,{className:`auth-viewport`,children:(0,X.jsxs)(`div`,{className:`card-solid auth-window border border-red-soft`,children:[(0,X.jsxs)(`div`,{className:`auth-header`,children:[(0,X.jsx)(`h1`,{className:`auth-title`,children:`Console view failed`}),(0,X.jsx)(`p`,{className:`auth-desc`,children:`This view could not be rendered.`})]}),(0,X.jsxs)(`div`,{className:`rounded-panel border border-inner-border bg-surface-2 p-7 leading-normal text-caption text-text-secondary`,children:[(0,X.jsx)(`strong`,{className:`block text-text-primary mb-2`,children:`Rendering error`}),(0,X.jsx)(`span`,{className:`select-text break-words`,children:this.state.error.message})]}),(0,X.jsx)(`button`,{type:`button`,className:`btn btn-primary inline-flex w-full items-center justify-center rounded-control bg-accent font-semibold text-accent-foreground mt-3 h-20 text-caption`,onClick:()=>window.location.reload(),children:`Reload console`})]})})}},Eo=3e5;function Do(e){return`cartethyia:lazy-retry:${e}`}function Oo(e,t){if(e===null)return!0;let n=Number(e);return!Number.isFinite(n)||t-n>Eo}function ko(){try{return typeof sessionStorage>`u`?void 0:sessionStorage}catch{return}}function $(e,t,n={}){let r=n.storage??ko(),i=n.reload??(()=>{window.location.reload()}),a=n.now??(()=>Date.now()),o=Do(t);return(0,I.lazy)(async()=>{try{let t=await e();try{r?.removeItem(o)}catch{}return t}catch(e){let t=null;try{t=r?.getItem(o)??null}catch{t=null}if(Oo(t,a())){try{r?.setItem(o,String(a()))}catch{}return i(),new Promise(()=>{})}throw e}})}function Ao(){return(0,X.jsxs)(`div`,{role:`status`,"aria-label":`Loading console`,className:`min-h-dvh flex flex-col items-center justify-center gap-6 text-text-tertiary`,children:[(0,X.jsx)(m,{size:22,className:`animate-spin`,"aria-hidden":`true`}),(0,X.jsx)(`p`,{className:`text-caption`,children:`Loading console…`})]})}var jo=$(()=>i(()=>import(`./LoginPage-C8hKyXBe.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),`login`),Mo=$(()=>i(()=>import(`./SetupPage-CXjUlfqr.js`),__vite__mapDeps([10,1,2,3,4,6,7,8,9,11,12])),`setup`),No=$(()=>i(()=>import(`./BannedPage-MsQaeQTs.js`),__vite__mapDeps([13,1])),`banned`),Po=$(()=>i(()=>import(`./OverviewPage-C-ExCy1V.js`),__vite__mapDeps([14,1,15,16,6,17,18,19,2,3,4,20,21,22,23,8,9,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,7,44,45,46,47,48,49,50,11,51])),`overview`),Fo=$(()=>i(()=>import(`./UsagePage-BEVLVrwP.js`),__vite__mapDeps([52,1,53,54,3,4,2,30,15,16,6,17,18,55,56,23,8,9,57,25,5,34,58,59,60,40,41,42,44,22,48,11,61,62,63,64,65])),`usage`),Io=$(()=>i(()=>import(`./ProviderDetailPage-tr811uaF.js`),__vite__mapDeps([66,1,53,67,68,19,2,3,4,69,55,56,23,8,9,24,57,25,26,70,29,30,31,32,71,33,72,35,39,59,16,6,40,41,42,43,7,44,46,47,22,48,51,73,74,17,18,75,11,61,76,62,63])),`provider-detail`),Lo=$(()=>i(()=>import(`./ProvidersPage-BS9IEpvv.js`),__vite__mapDeps([77,1,2,3,4,8,9,25,29,30,32,39,6,78,40,43,7,44,46,47,22,48,73,61,76])),`providers`),Ro=$(()=>i(()=>import(`./CombosPage-BrCBQDAc.js`),__vite__mapDeps([79,1,80,2,3,4,21,22,25,70,29,30,31,32,34,35,39,6,78,40,28,7,8,9,44,45,16,42,43,46,48,73,74,17,18,62])),`combos`),zo=$(()=>i(()=>import(`./QuotaPage-BihkgQSq.js`),__vite__mapDeps([81,1,53,2,3,4,20,8,25,29,30,33,72,39,6,40,43,44,46,47,22,48,11,51,75,16,17,18])),`quota`),Bo=$(()=>i(()=>import(`./ProxyPage-Rn_qXScb.js`),__vite__mapDeps([82,1,53,2,3,4,23,8,9,24,25,29,30,31,32,71,72,36,39,16,6,17,18,40,41,43,7,44,47,22,48,11,61,64,65])),`proxy`),Vo=$(()=>i(()=>import(`./SettingsPage-DhiEjm6T.js`),__vite__mapDeps([83,1,2,3,4,23,9,25,29,30,37,16,6,17,18,39,40,41,7,8,44,47,22,63,12])),`settings`),Ho=$(()=>i(()=>import(`./CliToolsPage-DfWHTJ7v.js`),__vite__mapDeps([84,1,53,25,2,3,4,40,43,22,48,50,16,6,17,18,85,11])),`cli-tools`),Uo=$(()=>i(()=>import(`./CliToolDetailPage-BO9nKg9w.js`),__vite__mapDeps([86,1,67,2,3,4,55,23,25,34,35,6,40,41,43,7,8,9,44,45,29,30,16,42,46,47,22,48,49,17,18,50,85])),`cli-tool-detail`),Wo=$(()=>i(()=>import(`./ConsoleLogPage-C6Uh33er.js`),__vite__mapDeps([87,1,2,3,4,25,33,35,36,39,6,40,65,43,7,8,9,11])),`console-log`),Go=$(()=>i(()=>import(`./CustomizationPage-8aS9hyJu.js`),__vite__mapDeps([88,1,2,3,4,57,70,72,40,47,22,48])),`customization`),Ko=$(()=>i(()=>import(`./StudioPage-u9IxmYOI.js`),__vite__mapDeps([89,1,54,3,4,2,30,68,69,23,24,90,29,31,72,59,40,7,8,9,44,45,34,35,16,6,42,43,46,49,17,18])),`studio`);function qo(){let e=G(),t=W();return(0,I.useEffect)(()=>(je(n=>{if(Q.clear(),da(),n===`banned`){e(`/banned`,{replace:!0});return}e(`/login?returnTo=${encodeURIComponent(t.pathname)}`,{replace:!0})}),()=>je(void 0)),[e,t.pathname]),null}function Jo(){let e=W();return(0,X.jsx)(To,{resetKey:`${e.pathname}${e.search}`,children:(0,X.jsx)(I.Suspense,{fallback:(0,X.jsx)(Ao,{}),children:(0,X.jsxs)(lr,{children:[(0,X.jsx)(K,{path:`/login`,element:(0,X.jsx)(jo,{})}),(0,X.jsx)(K,{path:`/setup`,element:(0,X.jsx)(Mo,{})}),(0,X.jsx)(K,{path:`/banned`,element:(0,X.jsx)(No,{})}),(0,X.jsx)(K,{path:`/*`,element:(0,X.jsx)(Yo,{})})]})})})}function Yo(){let[e,t]=(0,I.useState)({kind:`loading`}),n=W(),r=G(),[i]=(0,I.useState)(()=>n.pathname);return(0,I.useEffect)(()=>{let e=new AbortController;return Q.fetchQuery({queryKey:N.session.current,queryFn:()=>Ae(),staleTime:6e4}).then(n=>{if(!e.signal.aborted){if(n){Q.setQueryData(N.session.current,n),t({kind:`ready`,user:n}),n.isFirstBoot&&i!==`/setup`&&r(`/setup`,{replace:!0});return}Q.removeQueries({queryKey:N.session.current}),M(`/auth/first-boot`,{signal:e.signal}).then(n=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:n.requires_setup})}).catch(()=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:!1})})}}).catch(n=>{e.signal.aborted||(typeof n==`object`&&n&&`status`in n&&n.status===403?t({kind:`blocked`}):t({kind:`unauthenticated`,needsSetup:!1}))}),()=>e.abort()},[i,r]),e.kind===`loading`?null:e.kind===`blocked`?(0,X.jsx)(sr,{to:`/banned`,replace:!0}):e.kind===`unauthenticated`?(0,X.jsx)(sr,{to:e.needsSetup?`/setup`:`/login?returnTo=${encodeURIComponent(n.pathname)}`,replace:!0}):(0,X.jsx)(wo,{user:e.user,children:(0,X.jsx)(To,{resetKey:n.pathname,children:(0,X.jsxs)(lr,{children:[(0,X.jsx)(K,{path:`/`,element:(0,X.jsx)(Po,{})}),(0,X.jsx)(K,{path:`/usage`,element:(0,X.jsx)(Fo,{})}),(0,X.jsx)(K,{path:`/providers`,element:(0,X.jsx)(Lo,{})}),(0,X.jsx)(K,{path:`/providers/:providerId`,element:(0,X.jsx)(Io,{})}),(0,X.jsx)(K,{path:`/combos`,element:(0,X.jsx)(Ro,{})}),(0,X.jsx)(K,{path:`/quota`,element:(0,X.jsx)(zo,{})}),(0,X.jsx)(K,{path:`/proxy`,element:(0,X.jsx)(Bo,{})}),(0,X.jsx)(K,{path:`/console-log`,element:(0,X.jsx)(Wo,{})}),(0,X.jsx)(K,{path:`/customization`,element:(0,X.jsx)(Go,{})}),(0,X.jsx)(K,{path:`/model-lab`,element:(0,X.jsx)(Ko,{})}),(0,X.jsx)(K,{path:`/cli-tools`,element:(0,X.jsx)(Ho,{})}),(0,X.jsx)(K,{path:`/cli-tools/:toolId`,element:(0,X.jsx)(Uo,{})}),(0,X.jsx)(K,{path:`/settings`,element:(0,X.jsx)(Vo,{})}),(0,X.jsx)(K,{path:`*`,element:(0,X.jsx)(sr,{to:`/`,replace:!0})})]})})})}function Xo(){return(0,X.jsx)(Se,{client:Q,children:(0,X.jsxs)(Yr,{basename:`/console`,children:[(0,X.jsx)(qo,{}),(0,X.jsx)(Jo,{}),(0,X.jsx)(b,{position:`top-right`,offset:{top:`6rem`,right:`1rem`},mobileOffset:{top:`6rem`,left:`1rem`,right:`1rem`},visibleToasts:2,richColors:!0,duration:5e3,toastOptions:{className:`toast-surface select-text`,descriptionClassName:`select-text`,classNames:{title:`select-text`},style:{background:`var(--glass-bg-2)`,border:`1px solid var(--glass-border-2)`,color:`var(--text-primary)`,fontSize:`12.5px`,userSelect:`text`},actionButtonStyle:{background:`var(--accent)`,color:`var(--accent-foreground)`},cancelButtonStyle:{background:`var(--surface-muted)`,color:`var(--text-primary)`}}})]})})}function Zo(e){document.title=`Cartethyia Console`,ua().finally(()=>{fa(),(0,li.createRoot)(e).render((0,X.jsx)(I.StrictMode,{children:(0,X.jsx)(Xo,{})}))})}export{zn as $,wa as A,J as B,oo as C,io as D,Va as E,Da as F,pi as G,Ri as H,Q as I,_i as J,yi as K,qi as L,Oa as M,ja as N,Ka as O,Aa as P,G as Q,Gi as R,eo as S,ao as T,Ci as U,Li as V,wi as W,vi as X,Si as Y,Xr as Z,Na as _,Wa as a,Ge as at,Ba as b,Ha as c,no as d,ni as et,za as f,Fa as g,Pa as h,ro as i,$e as it,ka as j,Ma as k,Za as l,Ua as m,Zo as mountConsole,qa as n,nt,Ga as o,We as ot,La as p,Ei as q,$a as r,et as rt,so as s,He as st,co as t,rt as tt,to as u,Xa as v,Ra as w,Qa as x,Ia as y,zi as z};
4
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=W(),d;if(t){let e=typeof t==`string`?Tt(t):t;L(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Ot(e,{pathname:p});R(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),R(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Yn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:V([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:V([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?I.createElement(Dn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Un(){let e=nr(),t=sn(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=I.createElement(I.Fragment,null,I.createElement(`p`,null,`💿 Hey developer 👋`),I.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,I.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,I.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),I.createElement(I.Fragment,null,I.createElement(`h2`,null,`Unexpected Application Error!`),I.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?I.createElement(`pre`,{style:i},n):null,o)}var Wn=I.createElement(Un,null),Gn=class extends I.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Nn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:I.createElement(U.Provider,{value:this.props.routeContext},I.createElement(On.Provider,{value:e,children:this.props.component}));return this.context?I.createElement(qn,{error:e},t):t}};Gn.contextType=Sn;var Kn=new WeakMap;function qn({children:e,error:t}){let{basename:n,navigator:r}=I.useContext(H);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Mn(t.digest);if(e){let i=Kn.get(t);if(i)throw i;let a=un(e.location,n),o=a.absoluteURL||a.to;if(hn(e.location,o,fn(r),`allow-explicit`),yn(o))throw Error(`Invalid redirect location`);if(ln&&!Kn.get(t)){if(a.isExternal||e.reloadDocument)window.location.href=o;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw Kn.set(t,n),n}}return I.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function Jn({routeContext:e,match:t,children:n}){let r=I.useContext(bn);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),I.createElement(U.Provider,{value:e},n)}function Yn(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);L(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:cn(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||Wn,o&&(s<0&&c===0?(ar(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?I.createElement(n.route.Component,null):n.route.element?n.route.element:e,I.createElement(Jn,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?I.createElement(Gn,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Xn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Zn(e){let t=I.useContext(bn);return L(t,Xn(e)),t}function Qn(e){let t=I.useContext(xn);return L(t,Xn(e)),t}function $n(e){let t=I.useContext(U);return L(t,Xn(e)),t}function er(e){let t=$n(e),n=t.matches[t.matches.length-1];return L(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function tr(){return er(`useRouteId`)}function nr(){let e=I.useContext(On),t=Qn(`useRouteError`),n=er(`useRouteError`);return e===void 0?t.errors?.[n]:e}function rr(){let{router:e}=Zn(`useNavigate`),t=er(`useNavigate`),n=I.useRef(!1);return Ln(()=>{n.current=!0}),I.useCallback(async(r,i={})=>{R(n.current,In),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var ir={};function ar(e,t,n){!t&&!ir[e]&&(ir[e]=!0,R(!1,n))}I.memo(or);function or({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Hn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function sr({to:e,replace:t,state:n,relative:r}){L(Fn(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i,navigator:a}=I.useContext(H);R(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=I.useContext(U),{pathname:s}=W(),c=G(),l=$t(e,Qt(o),s,r===`path`);hn(typeof e==`string`?e:z(e),a.createHref(l),fn(a),`reject`);let u=JSON.stringify(l);return I.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function K(e){L(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function cr({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){L(!Fn(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=I.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Tt(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=I.useMemo(()=>{let e=B(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return R(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:I.createElement(H.Provider,{value:c},I.createElement(Dn.Provider,{children:t,value:h}))}function lr({children:e,location:t}){return Vn(ur(e),t)}I.Component;function ur(e,t=[]){let n=[];return I.Children.forEach(e,(e,r)=>{if(!I.isValidElement(e))return;let i=[...t,r];if(e.type===I.Fragment){n.push.apply(n,ur(e.props.children,i));return}L(e.type===K,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),L(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=ur(e.props.children,i)),n.push(a)}),n}var dr=`get`,fr=`application/x-www-form-urlencoded`;function pr(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function mr(e){return pr(e)&&e.tagName.toLowerCase()===`button`}function hr(e){return pr(e)&&e.tagName.toLowerCase()===`form`}function gr(e){return pr(e)&&e.tagName.toLowerCase()===`input`}function _r(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function vr(e,t){return e.button===0&&(!t||t===`_self`)&&!_r(e)}function yr(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function br(e,t){let n=yr(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var xr=null;function Sr(){if(xr===null)try{new FormData(document.createElement(`form`),0),xr=!1}catch{xr=!0}return xr}var Cr=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function wr(e){return e!=null&&!Cr.has(e)?(R(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${fr}"`),null):e}function Tr(e,t){let n,r,i,a,o;if(hr(e)){let o=e.getAttribute(`action`);r=o?B(o,t):null,n=e.getAttribute(`method`)||dr,i=wr(e.getAttribute(`enctype`))||fr,a=new FormData(e)}else if(mr(e)||gr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?B(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||dr,i=wr(e.getAttribute(`formenctype`))||wr(o.getAttribute(`enctype`))||fr,a=new FormData(o,e),!Sr()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(pr(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=dr,r=null,i=fr,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Er(e,t){if(e===!1||e==null)throw Error(t)}function Dr(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return i.pathname=n?i.pathname.endsWith(`/`)?`${i.pathname}_.${r}`:`${i.pathname}.${r}`:i.pathname===`/`?`_root.${r}`:t&&B(i.pathname,t)===`/`?`${tn(t)}/_root.${r}`:`${tn(i.pathname)}.${r}`,i}async function Or(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function kr(e){return e!=null&&typeof e.page==`string`}function Ar(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function jr(e,t,n){return Ir((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Or(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Ar).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Mr(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Nr(e,t,{includeHydrateFallback:n}={}){return Pr(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Pr(e){return[...new Set(e)]}function Fr(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Ir(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!kr(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Fr(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Lr(){let e=I.useContext(bn);return Er(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Rr(){let e=I.useContext(xn);return Er(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var zr=I.createContext(void 0);zr.displayName=`FrameworkContext`;function Br(){let e=I.useContext(zr);return Er(e,`You must render this element inside a <HydratedRouter> element`),e}function Vr(e,t){let n=I.useContext(zr),[r,i]=I.useState(!1),[a,o]=I.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=I.useRef(null);I.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),I.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Hr(s,p),onBlur:Hr(c,m),onMouseEnter:Hr(l,p),onMouseLeave:Hr(u,m),onTouchStart:Hr(d,p)}]:[a,f,{}]:[!1,f,{}]}function Hr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Ur({page:e,...t}){let n=Cn(),{nonce:r}=Br(),{router:i}=Lr(),a=I.useMemo(()=>Ot(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?I.createElement(Gr,{page:e,matches:a,...t}):I.createElement(Kr,{page:e,matches:a,...t})):null}function Wr(e){let{manifest:t,routeModules:n}=Br(),[r,i]=I.useState([]);return I.useEffect(()=>{let r=!1;return jr(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Gr({page:e,matches:t,...n}){let r=W(),{future:i}=Br(),{basename:a}=Lr(),o=I.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Dr(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]);return I.createElement(I.Fragment,null,o.map(e=>I.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Kr({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:o}=Br(),{basename:s}=Lr(),{loaderData:c,matches:l}=Rr(),u=I.useMemo(()=>Mr(e,t,l,a,r,`data`),[e,t,l,a,r]),d=I.useMemo(()=>Mr(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=I.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];t&&t.hasLoader&&(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Dr(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=I.useMemo(()=>Nr(d,a),[d,a]),m=Wr(d);return I.createElement(I.Fragment,null,f.map(e=>I.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>I.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>I.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function qr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}I.Component;var Jr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Jr&&(window.__reactRouterVersion=`7.18.3`)}catch{}function Yr({basename:e,children:t,useTransitions:n,window:r}){let i=I.useRef();i.current??=xt({window:r,v5Compat:!0});let a=i.current,[o,s]=I.useState({action:a.action,location:a.location}),c=I.useCallback(e=>{n===!1?s(e):I.startTransition(()=>s(e))},[n]);return I.useLayoutEffect(()=>a.listen(c),[a,c]),I.createElement(cr,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var Xr=I.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,useTransitions:_}=I.useContext(H),v=typeof l==`string`&&gt.test(l),y=un(l,h);l=y.to;let b=Pn(l,{relative:r}),x=W(),S=null;if(o){let e=$t(o,[],x.mask?x.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:V([h,e.pathname])),S=g.createHref(e)}let[ee,te,C]=Vr(n,p),ne=ti(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function re(t){e&&e(t),t.defaultPrevented||ne(t)}let ie=!(y.isExternal||i),w=I.createElement(`a`,{...p,...C,href:(ie?S:void 0)||y.absoluteURL||b,onClick:ie?re:e,ref:qr(m,te),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return ee&&!v?I.createElement(I.Fragment,null,w,I.createElement(Ur,{page:b})):w});Xr.displayName=`Link`;var Zr=I.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Bn(a,{relative:c.relative}),d=W(),f=I.useContext(xn),{navigator:p,basename:m}=I.useContext(H),h=f!=null&&si(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=B(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},ee=b?e:void 0,te;te=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let C=typeof i==`function`?i(S):i;return I.createElement(Xr,{...c,"aria-current":ee,className:te,ref:l,style:C,to:a,viewTransition:o},typeof s==`function`?s(S):s)});Zr.displayName=`NavLink`;var Qr=I.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=dr,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=I.useContext(H),g=ai(),_=oi(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&gt.test(s);return I.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?I.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});Qr.displayName=`Form`;function $r(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ei(e){let t=I.useContext(bn);return L(t,$r(e)),t}function ti(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=G(),d=W(),f=Bn(e,{relative:o});return I.useCallback(p=>{if(vr(p,t)){p.preventDefault();let t=n===void 0?z(d)===z(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?I.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function ni(e){R(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=I.useRef(yr(e)),n=I.useRef(!1),r=W(),i=I.useMemo(()=>br(r.search,n.current?null:t.current),[r.search]),a=G();return[i,I.useCallback((e,t)=>{let r=yr(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var ri=0,ii=()=>`__${String(++ri)}__`;function ai(){let{router:e}=ei(`useSubmit`),{basename:t}=I.useContext(H),n=tr(),r=e.fetch,i=e.navigate;return I.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Tr(e,t);if(a.navigate===!1){let e=a.fetcherKey||ii();await r(e,n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync})}else await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function oi(e,{relative:t}={}){let{basename:n}=I.useContext(H),r=I.useContext(U);L(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Bn(e||`.`,{relative:t})},o=W();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:V([n,a.pathname])),z(a)}function si(e,{relative:t}={}){let n=I.useContext(wn);L(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=ei(`useViewTransitionState`),i=Bn(e,{relative:t});if(!n.isTransitioning)return!1;let a=B(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=B(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Wt(i.pathname,o)!=null||Wt(i.pathname,a)!=null}var ci=t(o(),1),li=l(),ui=`cartethyia.customization`,q=`media`,di=`background`,fi=1,pi=`/console-backgrounds.jpg`;function mi(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(ui,fi);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(q)||e.createObjectStore(q)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the media database.`)),e}function hi(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??Error(`The media database rejected the request.`)),t}function gi(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}async function _i(){let e=await mi();try{let t=await hi(e.transaction(q,`readonly`).objectStore(q).get(di));if(!t||!t.blob)return null;let n=t;return{blob:n.blob,kind:n.kind,url:URL.createObjectURL(n.blob)}}finally{e.close()}}async function vi(e,t){let n=await mi();try{let r=n.transaction(q,`readwrite`);r.objectStore(q).put({blob:e,kind:t},di),await gi(r,`Could not store the background.`)}finally{n.close()}}async function yi(){let e=await mi();try{let t=e.transaction(q,`readwrite`);t.objectStore(q).delete(di),await gi(t,`Could not remove the background.`)}finally{e.close()}}var bi=2560,xi=.85;async function Si(e){let t=await createImageBitmap(e).catch(()=>null);if(!t)return e;try{let n=Math.max(t.width,t.height),r=Math.min(1,bi/n),i=document.createElement(`canvas`);i.width=Math.max(1,Math.round(t.width*r)),i.height=Math.max(1,Math.round(t.height*r));let a=i.getContext(`2d`);return a?(a.drawImage(t,0,0,i.width,i.height),await Ti(i)??e):e}finally{t.close()}}var Ci=4294967296,wi=268435456;function Ti(e){let{promise:t,resolve:n}=Promise.withResolvers();return e.toBlob(e=>n(e),`image/webp`,xi),t}function Ei(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:null}var Di=[`none`,`frosted`,`vibrancy`,`heavy`],J={backgroundSet:!1,backgroundEnabled:!0,backgroundRevision:0,backgroundOpacity:20,backgroundScale:100,backgroundX:0,backgroundY:0,backgroundBlur:5,blurCards:`frosted`,blurChrome:`frosted`,blurCardsAmount:45,blurCardsDepth:20,blurChromeAmount:25,blurChromeDepth:10,blurCardsEnabled:!0,blurChromeEnabled:!0,emptyOutline:!1},Oi=`cartethyia.customization`,ki=`cartethyia-customization-change`,Ai=[`cards`,`chrome`];function ji(e){return typeof e==`string`&&Di.includes(e)}function Y(e,t,n,r){let i=typeof e==`number`?e:Number(e);return Number.isFinite(i)?Math.min(n,Math.max(t,i)):r}function Mi(e){let t=typeof e==`object`&&e&&!Array.isArray(e)?e:{};return{backgroundSet:t.backgroundSet===!0,backgroundRevision:Y(t.backgroundRevision,0,2**53-1,0),backgroundEnabled:typeof t.backgroundEnabled==`boolean`?t.backgroundEnabled:J.backgroundEnabled,backgroundOpacity:Y(t.backgroundOpacity,0,100,J.backgroundOpacity),backgroundScale:Y(t.backgroundScale,100,180,J.backgroundScale),backgroundX:Y(t.backgroundX,-100,100,J.backgroundX),backgroundY:Y(t.backgroundY,-100,100,J.backgroundY),backgroundBlur:Y(t.backgroundBlur,0,100,J.backgroundBlur),blurCards:ji(t.blurCards)?t.blurCards:J.blurCards,blurChrome:ji(t.blurChrome)?t.blurChrome:J.blurChrome,blurCardsAmount:Y(t.blurCardsAmount,0,100,J.blurCardsAmount),blurChromeAmount:Y(t.blurChromeAmount,0,100,J.blurChromeAmount),blurCardsDepth:Y(t.blurCardsDepth,0,100,J.blurCardsDepth),blurChromeDepth:Y(t.blurChromeDepth,0,100,J.blurChromeDepth),blurCardsEnabled:t.blurCardsEnabled!==!1,blurChromeEnabled:t.blurChromeEnabled!==!1,emptyOutline:t.emptyOutline===!0}}var Ni=null;function Pi(){if(Ni)return Ni;if(typeof window>`u`)return J;try{Ni=Mi(JSON.parse(window.localStorage.getItem(Oi)??`null`))}catch{Ni={...J}}return Ni}function Fi(e){if(typeof document>`u`)return;let t=document.documentElement;t.dataset.blurCards=e.blurCards,t.dataset.blurChrome=e.blurChrome,t.style.setProperty(`--blur-cards`,`${e.blurCardsAmount}`),t.style.setProperty(`--blur-chrome`,`${e.blurChromeAmount}`),t.style.setProperty(`--blur-cards-depth`,`${e.blurCardsDepth}`),t.style.setProperty(`--blur-chrome-depth`,`${e.blurChromeDepth}`),t.dataset.blurCardsOn=e.blurCardsEnabled?`true`:`false`,t.dataset.blurChromeOn=e.blurChromeEnabled?`true`:`false`,t.dataset.emptyOutline=e.emptyOutline?`true`:`false`,t.dataset.bgActive=e.backgroundEnabled?`true`:`false`,t.style.setProperty(`--bg-opacity`,(e.backgroundOpacity/100).toFixed(2)),t.style.setProperty(`--bg-scale`,(e.backgroundScale/100).toFixed(2)),t.style.setProperty(`--bg-x`,`${e.backgroundX}%`),t.style.setProperty(`--bg-y`,`${e.backgroundY}%`),t.style.setProperty(`--bg-blur`,`${Math.round(e.backgroundBlur*.4)}px`)}function Ii(e){try{window.localStorage.setItem(Oi,JSON.stringify(e))}catch{}}function Li(e){let t=Mi({...Pi(),...e});return Ni=t,typeof window<`u`&&(Ii(t),Fi(t),window.dispatchEvent(new CustomEvent(ki))),t}function Ri(){let[e,t]=(0,I.useState)(Pi);return(0,I.useEffect)(()=>{let e=()=>t(Pi());return window.addEventListener(ki,e),window.addEventListener(`storage`,e),()=>{window.removeEventListener(ki,e),window.removeEventListener(`storage`,e)}},[]),[e,e=>t(Li(e))]}var zi=Ai,X=r(),Bi=`(max-width: 767px)`,Vi=`(prefers-reduced-motion: reduce)`;function Hi(e){let[t,n]=(0,I.useState)(()=>typeof window<`u`&&window.matchMedia(e).matches);return(0,I.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function Ui(){let[e,t]=(0,I.useState)(()=>typeof document>`u`||!document.hidden);return(0,I.useEffect)(()=>{let e=()=>t(!document.hidden);return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Wi(){let[e]=Ri(),[t,n]=(0,I.useState)(null),r=Hi(Bi),i=Hi(Vi),a=Ui();(0,I.useEffect)(()=>{if(!e.backgroundSet){n(e=>(e&&URL.revokeObjectURL(e.url),{blob:new Blob,kind:`image`,url:pi}));return}let t=!1,r=null;return _i().then(e=>{if(t){e&&URL.revokeObjectURL(e.url);return}r=e,n(e)}).catch(()=>{t||n(null)}),()=>{t=!0,r&&URL.revokeObjectURL(r.url)}},[e.backgroundSet,e.backgroundRevision]);let o=(0,I.useRef)(null),s=t?.kind===`video`&&!r&&!i&&a;return(0,I.useEffect)(()=>{let e=o.current;if(e){if(s){e.play().catch(()=>{});return}e.pause()}},[s]),!t||!e.backgroundEnabled?null:(0,X.jsx)(`div`,{className:`custom-background`,"data-kind":t.kind,"data-playing":s?`true`:`false`,"aria-hidden":`true`,children:t.kind===`video`?(0,X.jsx)(`video`,{ref:o,className:`custom-background-media`,src:t.url,autoPlay:s,loop:!0,muted:!0,playsInline:!0,preload:r?`metadata`:`auto`}):(0,X.jsx)(`img`,{className:`custom-background-media`,src:t.url,alt:``})})}function Gi({open:e,onClose:t,onConfirm:n,title:r,message:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,danger:s}){let[c,l]=(0,I.useState)(null),[u,d]=(0,I.useState)(!1);return(0,I.useEffect)(()=>{e&&(l(null),d(!1))},[e]),(0,X.jsx)(ce,{open:e,onClose:t,title:r,description:i,children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,X.jsx)(`p`,{className:`text-body text-text-secondary leading-normal`,children:i}),c?(0,X.jsx)(`p`,{role:`alert`,className:`text-caption text-red`,children:c}):null,(0,X.jsxs)(Be,{children:[(0,X.jsx)(C,{variant:`secondary`,size:`sm`,onClick:t,disabled:u,children:o}),(0,X.jsx)(C,{variant:s?`danger`:`primary`,size:`sm`,onClick:()=>{u||(l(null),d(!0),Promise.resolve().then(()=>n()).then(()=>t()).catch(e=>{l(j(e,`Action failed. Please try again.`)),d(!1)}))},disabled:u,children:u?`Working…`:a})]})]})})}var Ki={plain:`code-chip-plain`,muted:`code-chip-muted text-text-secondary bg-surface-muted border border-inner-border px-4 py-1 rounded-chip`,accent:`code-chip-accent text-accent bg-accent-soft px-4 py-1.5 rounded-chip font-bold`};function qi({value:e,tone:t=`muted`,action:n,className:r=``,children:i,...a}){return(0,X.jsxs)(`span`,{className:S(`code-chip inline-flex items-center gap-3 min-w-0 max-w-full font-mono text-caption tabular-nums`,Ki[t],r),...a,children:[(0,X.jsx)(`code`,{className:`code-chip-value min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`,title:a.title??e,children:e}),n?(0,X.jsx)(`span`,{className:`code-chip-action inline-flex shrink-0`,children:n}):null,i]})}var Ji=`cartethyia:update-dismissed`;function Yi(){try{return window.localStorage.getItem(Ji)}catch{return null}}function Xi(e){try{window.localStorage.setItem(Ji,e)}catch{}}function Zi(){let[e,t]=(0,I.useState)(!1);return{copied:e,copy:e=>{navigator.clipboard?.writeText(e),t(!0),window.setTimeout(()=>t(!1),1500)}}}function Qi({open:e,onClose:t,currentVersion:n,latestVersion:r,releaseUrl:i,onDismissVersion:o}){let{copied:c,copy:l}=Zi(),d=r??`the latest release`;return(0,X.jsx)(ce,{open:e,onClose:t,title:`Update available`,description:`Cartethyia ${d} is available; this install runs ${n}.`,size:`md`,footer:(0,X.jsxs)(Be,{children:[o===void 0?(0,X.jsx)(C,{variant:`ghost`,onClick:t,children:`Later`}):(0,X.jsxs)(C,{variant:`ghost`,onClick:()=>{o?.(),t()},children:[`Don’t show for v`,d]}),(0,X.jsxs)(C,{onClick:()=>l(a),children:[c?(0,X.jsx)(_,{size:14,"aria-hidden":`true`}):(0,X.jsx)(g,{size:14,"aria-hidden":`true`}),c?`Copied`:`Copy update command`]})]}),children:(0,X.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,X.jsxs)(`div`,{className:`flex items-start gap-6`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid size-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(Xe,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsxs)(`p`,{className:`font-semibold text-caption`,children:[n,` → `,d]}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`Stop the gateway, run the command, then start again.`})]})]}),(0,X.jsxs)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`p`,{className:`text-badge text-text-tertiary`,children:`Run this in a terminal`}),(0,X.jsxs)(`div`,{className:`mt-3 flex items-center gap-4 min-w-0`,children:[(0,X.jsx)(qi,{value:a,tone:`muted`,title:a,className:`min-w-0 flex-1 truncate`}),(0,X.jsx)(C,{variant:`ghost`,size:`sm`,className:`shrink-0`,onClick:()=>l(a),"aria-label":`Copy the update command`,children:c?(0,X.jsx)(_,{size:14,"aria-hidden":`true`}):(0,X.jsx)(g,{size:14,"aria-hidden":`true`})})]})]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-6 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 shrink-0 text-text-secondary`,children:(0,X.jsx)(x,{size:14,"aria-hidden":`true`})}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary min-w-0`,children:`npm cannot replace the package while Cartethyia is running from it, so this cannot update itself the way a single-binary tool can. That is why the console gives you the command instead of a button that installs.`})]}),(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,X.jsxs)(`a`,{href:i??u,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 text-badge text-accent hover:underline`,children:[(0,X.jsx)(We,{size:12,"aria-hidden":`true`}),`What’s new on GitHub`]}),(0,X.jsxs)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 text-badge text-accent hover:underline`,children:[(0,X.jsx)(We,{size:12,"aria-hidden":`true`}),`Package on npm`]})]})]})})}var $i=`cartethyia.query-cache`,Z=`client`,ea=`default`,ta=1;function na(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open($i,ta);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Z)||e.createObjectStore(Z)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the query cache.`)),e}function ra(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e.onsuccess=()=>n(e.result),e.onerror=()=>r(e.error??Error(`The query cache rejected the request.`)),t}function ia(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}function aa(e){if(typeof e!=`object`||!e||!(`version`in e)||!(`state`in e))return!1;let{version:t,state:n}=e;return t===1&&typeof n==`object`&&!!n}async function oa(e){try{let t=await na();try{let n=t.transaction(Z,`readwrite`);n.objectStore(Z).put({version:1,state:e},ea),await ia(n,`Could not store the query cache.`)}finally{t.close()}}catch{}}async function sa(){try{let e=await na();try{let t=await ra(e.transaction(Z,`readonly`).objectStore(Z).get(ea));return aa(t)?t.state:void 0}finally{e.close()}}catch{return}}async function ca(){try{let e=await na();try{let t=e.transaction(Z,`readwrite`);t.objectStore(Z).delete(ea),await ia(t,`Could not remove the query cache.`)}finally{e.close()}}catch{}}var Q=new ht({defaultOptions:{queries:A,mutations:Ie}});function la(e){let[t,n,r]=e.queryKey;return t===`console`?n===`session`?!0:n===`providers`?r===void 0||e.queryKey[3]===`models`:n===`settings`?r===`runtime`:n===`cli-tools`&&r===`registry`:!1}async function ua(){let e=await sa();e!==void 0&&dt(Q,e)}function da(){ca()}function fa(){let e,t=Q.getQueryCache().subscribe(t=>{t.type===`updated`&&(t.action.type===`success`||t.action.type===`error`)&&e===void 0&&(e=setTimeout(()=>{e=void 0,oa(ut(Q,{shouldDehydrateQuery:la}))},2e3))});return()=>{e!==void 0&&clearTimeout(e),t()}}function pa(e){let[t,n]=(e.trim().replace(/^v/i,``).split(`+`,1)[0]??``).split(`-`,2);if(t===void 0||!/^\d+\.\d+\.\d+$/.test(t))return null;let r=t.split(`.`).map(Number);if(r.length!==3||r.some(e=>!Number.isSafeInteger(e)||e<0))return null;let i=n===void 0||n.length===0?[]:n.split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e);return i.some(e=>typeof e==`number`&&(!Number.isSafeInteger(e)||e<0))?null:{core:[r[0]??0,r[1]??0,r[2]??0],prerelease:i}}function ma(e,t){if(e===void 0||t===void 0)return!1;let n=pa(e),r=pa(t);return n===null||r===null?t.trim()!==e.trim():ha(r,n)>0}function ha(e,t){for(let n=0;n<e.core.length;n+=1){let r=e.core[n]??0,i=t.core[n]??0;if(r!==i)return r>i?1:-1}if(e.prerelease.length===0&&t.prerelease.length>0)return 1;if(e.prerelease.length>0&&t.prerelease.length===0)return-1;for(let n=0;n<Math.max(e.prerelease.length,t.prerelease.length);n+=1){let r=e.prerelease[n],i=t.prerelease[n];if(r===void 0)return-1;if(i===void 0)return 1;if(r!==i)return typeof r==`number`&&typeof i==`string`?-1:typeof r==`string`&&typeof i==`number`||r>i?1:-1}return 0}var ga=5e3,_a=new WeakMap,va={"/":[{queryKey:N.settings.runtime,read:e=>M(`/settings/runtime`,{signal:e})},{queryKey:N.apiKeys.all,read:e=>M(`/api-keys`,{signal:e}).then(xe)}],"/providers":[{queryKey:N.providers.all,read:e=>M(`/providers`,{signal:e}).then(de)}],"/proxy":[{queryKey:N.network.pools,read:e=>M(`/network/pools`,{signal:e}).then(ue)}]};function ya(e,t){let n=va[t];if(n===void 0)return Promise.resolve();let r=Date.now(),i=_a.get(e);if(i!==void 0){if(i>r)return Promise.resolve();_a.delete(e)}return Promise.allSettled(n.map(t=>e.fetchQuery({queryKey:t.queryKey,queryFn:e=>t.read(D(e)),...A}))).then(t=>{if(t.some(e=>e.status===`rejected`&&!Ne(e.reason))){_a.set(e,Date.now()+ga);return}_a.delete(e)})}var ba=3e3,xa=20;function Sa(e){if(typeof e!=`object`||!e)return;let t=e;if(!(typeof t.id!=`string`||typeof t.title!=`string`||typeof t.message!=`string`||typeof t.createdAt!=`string`||t.kind!==`memory-high`&&t.kind!==`memory-growth`&&t.kind!==`update-available`||t.level!==`warning`&&t.level!==`info`))return{id:t.id,kind:t.kind,title:t.title,message:t.message,createdAt:t.createdAt,level:t.level,...t.href===`https://github.com/risunCodex/Cartethyia/releases`?{href:t.href}:{}}}function Ca(){let[e,t]=(0,I.useState)([]);return(0,I.useEffect)(()=>{let e=!0,n,r,i=()=>{e&&(n=new EventSource(`/console/api/notifications/stream`),n.addEventListener(`notification`,n=>{let r;try{r=JSON.parse(n.data)}catch{return}let i=Sa(r);i&&e&&t(e=>[i,...e.filter(e=>e.id!==i.id)].slice(0,xa))}),n.onerror=()=>{n?.close(),n=void 0,e&&r===void 0&&(r=setTimeout(()=>{r=void 0,i()},ba))})};return i(),()=>{e=!1,n?.close(),clearTimeout(r)}},[]),e}function wa(){return T({queryKey:N.session.current,queryFn:()=>Ae(),staleTime:6e4,gcTime:3e5,retry:!1,refetchOnWindowFocus:!1})}function Ta(){return T({queryKey:N.system.health,queryFn:e=>M(`/system/health`,{signal:D(e)}).then(fe),...A,refetchInterval:k.status})}function Ea(){return T({queryKey:N.releases.githubLatest,queryFn:e=>M(`/updates/release`,{signal:D(e)}).then(ye),...A,staleTime:18e5,refetchInterval:18e5,retry:!1})}function Da(e){return T({queryKey:N.usageAnalytics.summary(e),queryFn:t=>M(`/system/usage/summary?period=${encodeURIComponent(e)}`,{signal:D(t)}).then(le),...A,refetchInterval:k.status})}function Oa(e){return T({queryKey:N.usageAnalytics.chart(e),queryFn:t=>M(`/system/usage/chart?period=${encodeURIComponent(e)}`,{signal:D(t)}).then(ge),...A,refetchInterval:k.status})}function ka(e,t){return T({queryKey:N.usageAnalytics.by(e,t),queryFn:n=>M(`/system/usage/by-${t}?period=${encodeURIComponent(e)}`,{signal:D(n)}).then(ve),...A,refetchInterval:k.status})}function Aa(e,t=50,n){let r=n==null?``:`&httpStatus=${encodeURIComponent(String(n))}`;return T({queryKey:N.usageAnalytics.requests(e,t,n),queryFn:n=>M(`/system/usage/requests?period=${encodeURIComponent(e)}&limit=${encodeURIComponent(String(t))}${r}`,{signal:D(n)}).then(pe),...A,placeholderData:e=>e,refetchInterval:k.live})}function ja(e){return T({queryKey:N.usageAnalytics.requestDetail(e??`_`),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Request is required`};return M(`/system/usage/requests/${encodeURIComponent(e)}`,{signal:D(t)}).then(me)},enabled:e!==null,...A})}function Ma(e){return T({queryKey:N.audit.list(e??{}),queryFn:t=>{let n=new URLSearchParams;e?.action&&n.set(`action`,e.action),e?.actor&&n.set(`actor`,e.actor),e?.cursor&&n.set(`cursor`,e.cursor),e?.limit&&n.set(`limit`,String(e.limit));let r=n.toString()?`?${n.toString()}`:``;return M(`/audit${r}`,{signal:D(t)}).then(_e)},...A})}function Na(){return T({queryKey:N.providers.all,queryFn:e=>M(`/providers`,{signal:D(e)}).then(de),...A,gcTime:6e5,refetchInterval:k.catalog})}function Pa(e){return T({queryKey:N.providers.detail(e??``),queryFn:t=>M(`/providers/${encodeURIComponent(e??``)}`,{signal:D(t)}).then(he),enabled:!!e,...A})}function Fa(e){return T({queryKey:N.providers.models(e),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Provider is required`};return M(`/providers/${encodeURIComponent(e)}/models`,{signal:D(t)}).then(be)},...A,staleTime:3e5,gcTime:6e5,enabled:!!e})}function Ia(){let e=E();return F({mutationFn:({providerId:e,modelIds:t,wireFamily:n,metadata:r})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`POST`,body:JSON.stringify({modelIds:t,...n?{wireFamily:n}:{},...r?{metadata:r}:{}})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)}),w.success(`Models registered`,`${n.modelIds.length} model(s) added to ${n.providerId}`)},onError:e=>{w.error(`Failed to register models`,j(e))}})}function La(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Ya(e,r.providerId)}})}function Ra(){return F({mutationFn:e=>M(`/providers/connection-test`,{method:`POST`,body:JSON.stringify(e)})})}function za(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Ya(e,r.providerId)}})}function Ba(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)})}})}function Va(){let e=E();return F({mutationFn:({providerId:e,modelId:t,route:n,metadata:r})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify({modelId:t,route:n,enabled:!0,metadata:r})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)}),w.success(`Model updated`,`${n.modelId} limits and capabilities saved`)},onError:e=>{w.error(`Failed to update model`,j(e))}})}function Ha(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`DELETE`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)})}})}function Ua(e){return T({queryKey:N.providers.accounts(e),queryFn:t=>M(`/providers/${encodeURIComponent(e??``)}/accounts`,{signal:D(t)}),enabled:!!e,...A,staleTime:3e4,gcTime:6e5})}function Wa(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/accounts`,{method:`POST`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function Ga(){let e=E();return F({mutationFn:({providerId:e,accounts:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/batch`,{method:`POST`,body:JSON.stringify({accounts:t})}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function Ka(){let e=E();return F({mutationFn:({providerId:e,accountId:t,request:n})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}`,{method:`PATCH`,body:JSON.stringify(n)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function qa(e,t){return T({queryKey:N.providers.healthEvents(e,t),queryFn:n=>M(`/providers/${encodeURIComponent(e??``)}/accounts/${encodeURIComponent(t??``)}/health-events`,{signal:D(n)}),enabled:!!e&&!!t,...A,refetchInterval:k.status})}async function Ja(e,t){await e.invalidateQueries({predicate:e=>{let n=e.queryKey;return n[0]===`console`&&n[1]===`providers`&&n[2]===t&&n[3]===`accounts`&&n[5]===`health-events`}})}async function Ya(e,t){await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(t)}),Ja(e,t),e.invalidateQueries({queryKey:N.providers.all})])}function Xa(){let e=E();return F({mutationFn:({providerId:e,accountId:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/recover`,{method:`POST`,body:`{}`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,n.accountId)}),e.invalidateQueries({queryKey:N.providers.all})]),w.success(`Account recovered`)},onError:e=>{w.error(`Could not recover the account.`,j(e))}})}function Za(){return F({mutationFn:({providerId:e,accountIds:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/export`,{method:`POST`,body:JSON.stringify({accountIds:t})})})}function Qa(){return F({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/authorize`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function $a(){let e=E();return F({mutationFn:({providerId:e,code:t,state:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/callback?${new URLSearchParams({code:t,state:n}).toString()}`),onSuccess:async(t,n)=>{await Ya(e,n.providerId)}})}function eo(){return F({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/device/start`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function to(){let e=E();return F({mutationFn:({providerId:e,credential:t,fields:n,accountLabel:r})=>M(`/providers/${encodeURIComponent(e)}/oauth/import`,{method:`POST`,body:JSON.stringify({credential:t,...n&&Object.keys(n).length>0?{fields:n}:{},...r?{accountLabel:r}:{}})}),onSuccess:async(t,n)=>{await Ya(e,n.providerId),await e.invalidateQueries({queryKey:N.quota.all})}})}function no(){let e=E();return F({mutationFn:({providerId:e,deviceAuthId:t})=>M(`/providers/${encodeURIComponent(e)}/oauth/device/poll`,{method:`POST`,body:JSON.stringify({deviceAuthId:t})}),onSuccess:async(t,n)=>{t.status===`complete`&&await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,t.accountId)}),e.invalidateQueries({queryKey:N.quota.all}),Ya(e,n.providerId)])}})}function ro(){let e=E();return F({mutationFn:e=>M(`/providers`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async t=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.modelRouting.all})]),w.success(`Provider created`,t.label??t.providerId)},onError:e=>{w.error(`Failed to create provider`,j(e))}})}function io(){let e=E();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.providers.detail(n)})]),w.success(`Provider updated`,n)},onError:e=>{w.error(`Failed to update provider`,j(e))}})}function ao(){let e=E();return F({mutationFn:({providerId:e,enabled:t})=>M(`/providers/platform/global/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.providers.detail(n)})])}})}function oo(e={}){let t=E();return F({mutationFn:e=>M(`/providers/${encodeURIComponent(e)}/models/sync`,{method:`POST`,body:`{}`}),onSuccess:async(n,r)=>{await t.invalidateQueries({queryKey:N.providers.models(r)}),e.silent||w.success(`Models fetched`,n.synced>0?`${n.synced} new model${n.synced===1?``:`s`} added`:`No new models found`)},onError:t=>{e.silent||w.error(`Failed to fetch models`,j(t))}})}function so(){let e=E();return F({mutationFn:e=>M(`/providers/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.quota.all}),e.invalidateQueries({queryKey:N.modelRouting.all})]),w.success(`Provider deleted`,n)},onError:e=>{w.error(`Failed to delete provider`,j(e))}})}var co={name:`cartethyia`,version:`2.5.3`,description:`A powerful, self-hosted reverse proxy for OpenAI- and Anthropic-compatible AI clients, powered by native Bun and Elysia. It serves both protocols from a single server, routes every model across any configured provider, and translates requests and responses in real time — streaming and prompt caching included. Underneath it runs a full delivery engine: per-account health tracking, quota and cooldown enforcement, automatic failover across pools and providers, usage accounting, and telemetry. Point OpenCode, Cline, Claude Code, Codex, or any compatible client at Cartethyia and it keeps its native protocol while the gateway absorbs every provider-specific difference behind it. Runs on embedded SQLite or external PostgreSQL with optional Redis coordination, ships as a global CLI with a system-tray console, and needs only Bun 1.4+ alongside Node.js/npm.`,license:`GPL-3.0-only`,type:`module`,packageManager:`bun@1.4.0`,repository:{type:`git`,url:`git+https://github.com/risunCodex/Cartethyia.git`},homepage:`https://github.com/risunCodex/Cartethyia#readme`,bugs:{url:`https://github.com/risunCodex/Cartethyia/issues`},keywords:[`ai`,`gateway`,`llm`,`bun`,`self-hosted`],bin:{cartethyia:`scripts/cli/bin/cartethyia.cjs`,carte:`scripts/cli/bin/carte.cjs`},files:[`scripts/cli/`,`src/`,`migrations/`,`dist/dashboard/`,`.env.example`,`README.md`],workspaces:[`dashboard`],engines:{bun:`>=1.4.0`},scripts:{dev:`bun run dev:stack`,"dev:watch":`bun run scripts/dev/supervisor.ts`,test:`bun run scripts/ci/run.ts`,build:`bun run scripts/binary/build.ts`,prepack:`bun run dashboard:build`,setup:`bun run scripts/cli/command/setup.ts`,start:`bun run scripts/cli/main.ts start`,doctor:`bun run scripts/cli/command/doctor.ts`,"probe:egress":`bun run scripts/operations/probe-egress.ts`,restart:`bun run scripts/binary/restart.ts`,"build:aot":`bun run scripts/binary/aot.ts`,"dev:stack":`concurrently -n BACKEND,DASHBOARD -c cyan,magenta --kill-others-on-fail "bun run dev:backend" "bun run dashboard:dev"`,typecheck:`tsc --noEmit`,"test:watch":`bun run scripts/ci/run.ts --watch`,"test-db:up":`docker compose -f docker-compose.test.yml up -d --wait postgres-test`,"dev:backend":`bun run --hot src/main.ts`,"dev:console-auth":`bun run scripts/qa/console-session.ts`,"dev:visual-baseline":`bun run scripts/qa/visual-baseline.ts`,"build:binary":`bun run scripts/binary/compile.ts`,"test:backend":`bun run scripts/ci/run.ts --scope backend`,"test-db:down":`docker compose -f docker-compose.test.yml down`,"dashboard:dev":`bun run --cwd dashboard dev`,"test-db:check":`bun run scripts/ci/db-check.ts`,"dashboard:test":`bun run scripts/ci/run.ts --scope dashboard`,"test-db:reset":`docker compose -f docker-compose.test.yml down -v && docker compose -f docker-compose.test.yml up -d --wait postgres-test`,"dashboard:build":`bun run --cwd dashboard build`,"dashboard:typecheck":`bun run --cwd dashboard typecheck`,"check:migrations":`bun run scripts/ci/check-migrations.ts`},dependencies:{"drizzle-orm":`0.45.2`,elysia:`^2.0.0-beta.16`,enquirer:`^2.4.1`,ioredis:`6.0.0`,jose:`^6.2.12`,jsonrepair:`^3.15.0`,pg:`8.23.0`,pino:`^10.3.1`,"pino-pretty":`^13.1.3`,protobufjs:`^7.6.5`,"socks-proxy-agent":`^10.1.0`,systray2:`2.1.4`,typebox:`1.3.27`,ws:`8.22.0`},devDependencies:{"@types/pg":`8.11.10`,"@types/ws":`8.18.1`,"bun-types":`1.4.0`,concurrently:`^10.0.5`,"drizzle-kit":`^0.31.11`,typescript:`5.9.2`}}.version,lo=`v${co.replace(/\.0$/,``)} (Jinhsi)`,uo=[{label:`Main`,items:[{label:`Overview`,path:`/`,icon:Ge},{label:`Usage`,path:`/usage`,icon:f},{label:`Providers`,path:`/providers`,icon:et},{label:`Model Lab`,path:`/model-lab`,icon:y}]},{label:`Control`,items:[{label:`Combos & Routes`,path:`/combos`,icon:Ue},{label:`Quota Management`,path:`/quota`,icon:nt},{label:`Proxy & Requests`,path:`/proxy`,icon:d},{label:`CLI Tools`,path:`/cli-tools`,icon:p}]},{label:`Tools`,items:[{label:`Coming soon`,path:`#tools-coming-soon-1`,icon:ae,disabled:!0},{label:`Coming soon`,path:`#tools-coming-soon-2`,icon:ae,children:Array.from({length:5},(e,t)=>({label:`Coming soon ${t+1}`,path:`#tools-coming-soon-${t+3}`,icon:ae,disabled:!0}))}]},{label:`System`,items:[{label:`Customization`,path:`/customization`,icon:Ze},{label:`Console Log`,path:`/console-log`,icon:$e},{label:`Settings`,path:`/settings`,icon:tt}]}],fo={"/":{title:`Overview`,sub:`Gateway health, capacity, and live metrics`,icon:Ge},"/usage":{title:`Usage & Metrics`,sub:`Token economics, requests, and cost breakdown`,icon:f},"/providers":{title:`Provider Catalog`,sub:`Upstream credentials, models, and latency`,icon:et},"/combos":{title:`Combos & Routing`,sub:`Failover policies, model aliases, and weighted routes`,icon:Ue},"/quota":{title:`Quota Management`,sub:`Rate limits, leases, and tenant quotas`,icon:nt},"/proxy":{title:`Proxy & Requests`,sub:`Network pools, SOCKS5/HTTP egress, and dispatch`,icon:d},"/customization":{title:`Customization`,sub:`Background, transparency, and blur`,icon:Ze},"/model-lab":{title:`Model Lab`,sub:`Chat a routed model without leaving the console`,icon:y},"/console-log":{title:`Console Log`,sub:`Live server logs and audit trail`,icon:$e},"/cli-tools":{title:`CLI Tools`,sub:`Claude Code CLI, OpenCode, and local developer tool integrations`,icon:p},"/settings":{title:`Settings`,sub:`Account security, runtime preferences, and state recovery`,icon:tt}},po={title:`Console`,sub:`Cartethyia AI Gateway Administration`,icon:Ge};function mo(e,t){let n=/^\/providers\/([^/]+)\/?$/.exec(e);if(n?.[1]){let e=t.find(e=>e.providerId===n[1]);return{title:e?.label||e?.displayName||n[1],sub:`Routing, accounts, models, and health`,icon:et}}let r=/^\/cli-tools\/([^/]+)\/?$/.exec(e);return r?.[1]?{title:`CLI Tool`,sub:`${r[1]} — mappings, endpoints, and downloadable config`,icon:p}:fo[e]??po}function ho(){try{return Ta()}catch{return{data:void 0,isError:!1,isFetching:!1,isPending:!1}}}function go(){let[e,t]=(0,I.useState)(()=>te()),n=ne(e);return(0,I.useEffect)(()=>{let e=()=>t(te());return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),(0,I.useEffect)(()=>{ie(e)},[e]),(0,X.jsx)(`button`,{type:`button`,onClick:()=>{let e=n?`light`:`dark`;t(e),ee(e)},"aria-label":`Toggle theme`,"aria-pressed":n,className:`topbar-icon-button`,title:n?`Switch to light mode`:`Switch to dark mode`,children:(0,X.jsx)(`span`,{className:`grid place-items-center`,children:n?(0,X.jsx)(oe,{size:17}):(0,X.jsx)(v,{size:17})},n?`sun`:`moon`)})}var _o=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),vo=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`,timeZone:`UTC`});function yo(e){if(!Number.isFinite(e)||e<0)return`Unavailable`;let t=e>=1024**3?{divisor:1024**3,label:`GiB`}:{divisor:1024**2,label:`MiB`};return`${(e/t.divisor).toFixed(1)} ${t.label}`}function bo({icon:e,label:t,value:n,detail:r,title:i}){return(0,X.jsxs)(`div`,{className:`min-w-0 rounded-control border border-inner-border bg-surface-2 p-3`,title:i,children:[(0,X.jsxs)(`dt`,{className:`flex items-center gap-2 text-micro font-medium text-text-tertiary`,children:[(0,X.jsx)(e,{size:13,strokeWidth:1.8,className:`shrink-0`,"aria-hidden":`true`}),(0,X.jsx)(`span`,{children:t})]}),(0,X.jsx)(`dd`,{className:`mt-1 truncate font-mono text-caption font-semibold tabular-nums text-text-primary`,children:n}),r?(0,X.jsx)(`dd`,{className:`mt-1 text-micro text-text-secondary`,children:r}):null]})}function xo({health:e,onOpenUpdate:t}){let[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(()=>new Date),o=(0,I.useRef)(null),s=(0,I.useRef)(null),c=Ca();(0,I.useEffect)(()=>{if(!n)return;a(new Date);let e=window.setInterval(()=>a(new Date),1e3);return()=>window.clearInterval(e)},[n]),(0,I.useEffect)(()=>{if(!n)return;let e=e=>{let t=e.target;s.current&&!s.current.contains(t)&&o.current&&!o.current.contains(t)&&r(!1)},t=e=>{e.key===`Escape`&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[n]);let l=e?e.status===`healthy`?`All systems operational`:e.status===`degraded`?`Gateway degraded`:`Gateway unhealthy`:`System health unavailable`,u=e?e.status===`healthy`?`Postgres & Redis admission connected.`:e.status===`degraded`?`Check connection logs.`:`Gateway is reporting an unhealthy status.`:`Live gateway metrics are not available.`,d=e&&[Number.isFinite(e.memory_percent)?`${e.memory_percent.toFixed(1)}% of system RAM`:void 0,e.database_in_process?`In-process DB included`:void 0].filter(Boolean).join(` · `)||void 0,f=e?.cpu_percent??void 0,p=f!==void 0&&Number.isFinite(f),m=e?p?Number.isFinite(e.cpu_cores)&&e.cpu_cores>0?`1-min load · ${e.cpu_cores} cores`:`Normalized 1-min load`:`Not reported on this platform`:void 0;return(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsxs)(`button`,{ref:o,type:`button`,className:`topbar-icon-button`,"aria-label":`Notifications`,"aria-expanded":n,"aria-haspopup":`dialog`,onClick:()=>r(e=>!e),children:[(0,X.jsx)(Ve,{size:17}),c.length>0?(0,X.jsx)(`span`,{"aria-label":`${c.length} notifications`,className:`absolute right-1.5 top-1.5 size-2 rounded-full bg-accent`}):null]}),n?(0,ci.createPortal)((0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{"aria-hidden":`true`,className:`fixed inset-0 z-floating bg-overlay backdrop-blur-dialog`,onClick:()=>r(!1)}),(0,X.jsxs)(`div`,{ref:s,role:`dialog`,"aria-label":`Notifications`,className:`app-topbar-popover popout-enter glass rounded-sidebar border border-inner-border bg-popover-bg p-5 shadow-popout z-popover`,children:[(0,X.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-3 font-bold text-body-lg`,children:[(0,X.jsx)(`span`,{className:`w-13 h-13 rounded-pill bg-accent-soft text-accent grid place-items-center`,children:(0,X.jsx)(Ve,{size:13})}),(0,X.jsx)(`span`,{children:`Notifications`})]}),(0,X.jsx)(`button`,{type:`button`,"aria-label":`Close notifications`,onClick:()=>r(!1),className:`cursor-pointer border-none bg-transparent p-2 text-caption text-text-tertiary`,children:(0,X.jsx)(se,{size:14})})]}),(0,X.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 flex flex-col gap-3`,children:[c.length>0?(0,X.jsx)(`section`,{"aria-label":`Notifications`,className:`flex flex-col gap-2`,children:c.map(e=>(0,X.jsxs)(`article`,{className:`flex items-start gap-3 rounded-card border p-4 ${e.level===`warning`?`border-orange-soft bg-orange-soft`:`border-accent/25 bg-accent-soft`}`,children:[(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block text-caption font-semibold text-text-primary`,children:e.title}),(0,X.jsx)(`span`,{className:`mt-1 block text-badge text-text-secondary`,children:e.message})]}),e.href?e.kind===`update-available`?(0,X.jsx)(`button`,{type:`button`,className:`shrink-0 text-badge font-semibold text-accent`,onClick:t,children:`Update`}):(0,X.jsx)(`a`,{className:`shrink-0 text-badge font-semibold text-accent`,href:e.href,target:`_blank`,rel:`noreferrer`,children:`Open`}):null]},e.id))}):(0,X.jsx)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4 text-badge text-text-secondary`,children:`No active memory or update alerts.`}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid w-12 h-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(et,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`font-semibold text-caption`,children:l}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:u})]})]}),(0,X.jsxs)(`dl`,{"aria-label":`Runtime metrics`,className:`grid grid-cols-2 gap-2`,children:[(0,X.jsx)(bo,{icon:h,label:`Local time`,value:_o.format(i)}),(0,X.jsx)(bo,{icon:ae,label:`UTC`,value:vo.format(i)}),(0,X.jsx)(bo,{icon:rt,label:`Uptime`,value:e?re(e.uptime_seconds):`Unavailable`,detail:e&&Number.isFinite(e.uptime_seconds)&&e.uptime_seconds>=0?`Gateway process running`:void 0}),(0,X.jsx)(bo,{icon:qe,label:`Process RSS`,value:e?yo(e.memory_bytes):`Unavailable`,detail:d,title:`Process resident set size; percentage is share of system RAM.`}),(0,X.jsx)(bo,{icon:Ue,label:`CPU load`,value:p&&f!==void 0?`${f.toFixed(1)}%`:`Unavailable`,detail:m,title:`One-minute load average normalized by the number of CPU cores.`}),(0,X.jsx)(bo,{icon:Ye,label:`Runtime`,value:e?.platform?.trim()||`Unavailable`,detail:e?.platform?.trim()?`Gateway host platform`:void 0,title:e?.platform?.trim()||`Runtime platform unavailable`})]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,X.jsx)(`span`,{className:`mt-0.5 grid w-12 h-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,X.jsx)(Qe,{size:16,"aria-hidden":`true`})}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`font-semibold text-caption`,children:lo}),(0,X.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`High-performance AI Gateway & Protocol Orchestrator.`})]})]})]})]})]}),document.body):null]})}function So({group:e,pathname:t,onIntent:n}){return(0,X.jsxs)(`div`,{className:`nav-group-section`,children:[(0,X.jsx)(`p`,{className:`nav-group-title`,children:e.label}),(0,X.jsx)(Co,{items:e.items,pathname:t,onIntent:n})]})}function Co({items:e,pathname:t,onIntent:n}){let r=(0,I.useRef)(null),[i,a]=(0,I.useState)({top:0,height:0,opacity:0}),[o,s]=(0,I.useState)(()=>new Set);return(0,I.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let t=e.querySelector(`[data-active="true"]`);if(!t){a(e=>({...e,opacity:0}));return}let n=e.getBoundingClientRect(),i=t.getBoundingClientRect();a({top:i.top-n.top,height:i.height,opacity:1})},[t,e]),(0,X.jsxs)(`div`,{ref:r,className:`nav-items-container`,children:[(0,X.jsx)(`div`,{className:`sidebar-active-indicator`,style:{transform:`translateY(${i.top}px)`,height:`${i.height}px`,opacity:i.opacity},"aria-hidden":`true`}),e.map(e=>{if(e.children!==void 0){let t=o.has(e.path??e.label);return(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full`,"aria-expanded":t,onClick:()=>s(t=>{let n=new Set(t),r=e.path??e.label;return n.has(r)?n.delete(r):n.add(r),n}),children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(He,{size:14,className:`ml-auto shrink-0 transition-transform ${t?`rotate-180`:``}`,"aria-hidden":`true`})]}),t?(0,X.jsx)(`div`,{className:`ml-6 border-l border-inner-border pl-2`,children:e.children.map(e=>(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,title:`Coming soon`,children:[(0,X.jsx)(e.icon,{size:15,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label))}):null]},e.path??e.label)}if(e.disabled)return(0,X.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,"aria-label":`${e.label} — unavailable`,title:`Coming soon`,children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),(0,X.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label);if(e.path===void 0)return null;let r=e.path,i=r===`/`?t===`/`:t===r||t.startsWith(`${r}/`);return(0,X.jsxs)(Zr,{to:r,end:r===`/`,"data-active":i?`true`:void 0,className:`nav-link-item ${i?`active`:``}`,onMouseEnter:()=>n(r),onFocus:()=>n(r),children:[(0,X.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,X.jsx)(`span`,{children:e.label}),e.badge?(0,X.jsx)(`span`,{className:`nav-link-badge`,children:e.badge}):null]},r)})]})}function wo({user:e,children:t}){let n=G(),r=W(),[i,a]=(0,I.useState)(!1),[o,s]=(0,I.useState)(!1),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(!1),p=ho(),m=Ea(),h=p.data?.version??co,g=m.data?.tag_name?.replace(/^v/,``),_=ma(h,g),v=Na(),y=(0,I.useRef)(null);(0,I.useEffect)(()=>{_&&g!==void 0&&Yi()!==g&&y.current!==g&&(y.current=g,f(!0))},[_,g]);let b=e=>{ya(Q,e)};(0,I.useEffect)(()=>{a(!1)},[r.pathname]),(0,I.useEffect)(()=>{let e=()=>a(!1);return window.addEventListener(`cartethyia:overlay-open`,e),()=>window.removeEventListener(`cartethyia:overlay-open`,e)},[]),(0,I.useLayoutEffect)(()=>{window.scrollTo(0,0)},[r.pathname]);let x=async()=>{s(!0);try{await M(`/auth/logout`,{method:`POST`})}finally{Q.clear(),da(),n(`/login`,{replace:!0})}};(0,I.useEffect)(()=>(document.documentElement.dataset.glassEnabled=`true`,Fi(Pi()),()=>{delete document.documentElement.dataset.glassEnabled}),[]);let S=mo(r.pathname,v.data??[]);return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`app-bg`,"aria-hidden":`true`}),(0,X.jsx)(`div`,{className:`app-shell-frame`,children:(0,X.jsxs)(`div`,{className:`app-shell-root`,"data-drawer":i?`open`:void 0,"data-page-scroll":r.pathname===`/console-log`?`contained`:void 0,onClick:e=>{i&&e.target.closest(`.app-main-column`)&&a(!1)},children:[(0,X.jsxs)(`aside`,{className:`glass app-sidebar ${i?`is-open`:``}`,"aria-label":`Dashboard navigation`,children:[(0,X.jsxs)(`div`,{className:`brand-header`,children:[(0,X.jsx)(`div`,{"aria-hidden":`true`,className:`brand-icon overflow-hidden p-0`,children:(0,X.jsx)(`img`,{src:`/assets/brand/sidebar_ico.jpg`,alt:`Cartethyia`,onError:e=>{e.currentTarget.onerror=null,e.currentTarget.src=`/assets/brand/sidebar_ico.jpg`},className:`w-full h-full object-cover block`})}),(0,X.jsxs)(`div`,{className:`brand-meta`,children:[(0,X.jsx)(`div`,{className:`brand-name`,children:(0,X.jsx)(`span`,{children:`Cartethyia`})}),(0,X.jsxs)(`div`,{className:`brand-version-badge`,children:[(0,X.jsx)(`a`,{href:c,target:`_blank`,rel:`noreferrer`,className:`brand-version-link`,children:lo}),_?(0,X.jsxs)(`button`,{type:`button`,onClick:()=>f(!0),className:`brand-update-badge`,title:g===void 0?`A newer Cartethyia release is available`:`Update available: v${g} — how to install it`,children:[(0,X.jsx)(Qe,{size:9,className:`shrink-0`,"aria-hidden":`true`}),g===void 0?`update`:`Update v${g}`]}):null]})]})]}),(0,X.jsx)(`nav`,{className:`flex-1 overflow-y-auto py-2 px-0`,children:uo.map(e=>(0,X.jsx)(So,{group:e,pathname:r.pathname,onIntent:b},e.label))}),(0,X.jsx)(`div`,{className:`sidebar-user-card`,children:(0,X.jsxs)(`div`,{className:`user-card-content`,children:[(0,X.jsx)(`div`,{className:`user-avatar`,"aria-hidden":`true`,children:(e.displayName??e.email).slice(0,2).toUpperCase()}),(0,X.jsxs)(`div`,{className:`user-info`,children:[(0,X.jsx)(`p`,{className:`user-name`,children:e.displayName||`Admin`}),(0,X.jsx)(`p`,{className:`user-role`,children:e.email})]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>u(!0),disabled:o,"aria-label":`Sign out`,title:`Sign out`,className:`topbar-icon-button w-15 h-15 rounded-inset`,children:(0,X.jsx)(Ke,{size:14})})]})})]}),(0,X.jsxs)(`div`,{className:`app-main-column`,children:[(0,X.jsx)(Wi,{}),(0,X.jsxs)(`header`,{className:`glass app-topbar`,children:[(0,X.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,className:`topbar-menu-btn`,onClick:()=>a(!0),children:(0,X.jsx)(Je,{size:18})}),(0,X.jsxs)(`div`,{className:`topbar-meta`,children:[(0,X.jsxs)(`h1`,{className:`topbar-title`,children:[(0,X.jsx)(S.icon,{className:`topbar-title-icon`,size:16,"aria-hidden":`true`}),S.title]}),(0,X.jsx)(`p`,{className:`topbar-subtitle`,children:S.sub})]}),(0,X.jsxs)(`div`,{className:`topbar-actions`,children:[(0,X.jsx)(go,{}),(0,X.jsx)(xo,{health:p.data,onOpenUpdate:()=>f(!0)})]})]}),(0,X.jsx)(`main`,{className:`route-enter w-full min-w-0`,children:t})]})]})}),(0,X.jsx)(Gi,{open:l,onClose:()=>u(!1),onConfirm:x,title:`Sign out?`,message:`You will need to sign in again to open the console.`,confirmLabel:`Sign out`,danger:!0}),(0,X.jsx)(Qi,{open:d,onClose:()=>f(!1),currentVersion:h,...g===void 0?{}:{latestVersion:g},...m.data?.html_url===void 0?{}:{releaseUrl:m.data.html_url},...g===void 0?{}:{onDismissVersion:()=>Xi(g)}})]})}var To=class extends I.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[console] route render failed:`,e,t.componentStack)}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error!==null&&this.setState({error:null})}render(){return this.state.error===null?this.props.children:(0,X.jsx)(`main`,{className:`auth-viewport`,children:(0,X.jsxs)(`div`,{className:`card-solid auth-window border border-red-soft`,children:[(0,X.jsxs)(`div`,{className:`auth-header`,children:[(0,X.jsx)(`h1`,{className:`auth-title`,children:`Console view failed`}),(0,X.jsx)(`p`,{className:`auth-desc`,children:`This view could not be rendered.`})]}),(0,X.jsxs)(`div`,{className:`rounded-panel border border-inner-border bg-surface-2 p-7 leading-normal text-caption text-text-secondary`,children:[(0,X.jsx)(`strong`,{className:`block text-text-primary mb-2`,children:`Rendering error`}),(0,X.jsx)(`span`,{className:`select-text break-words`,children:this.state.error.message})]}),(0,X.jsx)(`button`,{type:`button`,className:`btn btn-primary inline-flex w-full items-center justify-center rounded-control bg-accent font-semibold text-accent-foreground mt-3 h-20 text-caption`,onClick:()=>window.location.reload(),children:`Reload console`})]})})}},Eo=3e5;function Do(e){return`cartethyia:lazy-retry:${e}`}function Oo(e,t){if(e===null)return!0;let n=Number(e);return!Number.isFinite(n)||t-n>Eo}function ko(){try{return typeof sessionStorage>`u`?void 0:sessionStorage}catch{return}}function $(e,t,n={}){let r=n.storage??ko(),i=n.reload??(()=>{window.location.reload()}),a=n.now??(()=>Date.now()),o=Do(t);return(0,I.lazy)(async()=>{try{let t=await e();try{r?.removeItem(o)}catch{}return t}catch(e){let t=null;try{t=r?.getItem(o)??null}catch{t=null}if(Oo(t,a())){try{r?.setItem(o,String(a()))}catch{}return i(),new Promise(()=>{})}throw e}})}function Ao(){return(0,X.jsxs)(`div`,{role:`status`,"aria-label":`Loading console`,className:`min-h-dvh flex flex-col items-center justify-center gap-6 text-text-tertiary`,children:[(0,X.jsx)(m,{size:22,className:`animate-spin`,"aria-hidden":`true`}),(0,X.jsx)(`p`,{className:`text-caption`,children:`Loading console…`})]})}var jo=$(()=>i(()=>import(`./LoginPage-DDVIfZGW.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),`login`),Mo=$(()=>i(()=>import(`./SetupPage-D6pmQ86L.js`),__vite__mapDeps([10,1,2,3,4,6,7,8,9,11,12])),`setup`),No=$(()=>i(()=>import(`./BannedPage-hfCzi-Ux.js`),__vite__mapDeps([13,1])),`banned`),Po=$(()=>i(()=>import(`./OverviewPage-B53YYMng.js`),__vite__mapDeps([14,1,15,16,6,17,18,19,2,3,4,20,21,22,23,8,9,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,7,44,45,46,47,48,49,50,11,51])),`overview`),Fo=$(()=>i(()=>import(`./UsagePage-B47uOydr.js`),__vite__mapDeps([52,1,53,54,3,4,2,30,15,16,6,17,18,55,56,23,8,9,57,25,5,34,58,59,60,40,41,42,44,22,48,11,61,62,63,64,65])),`usage`),Io=$(()=>i(()=>import(`./ProviderDetailPage-B0KaAQf0.js`),__vite__mapDeps([66,1,53,67,68,19,2,3,4,69,55,56,23,8,9,24,57,25,26,70,29,30,31,32,71,33,72,35,39,59,16,6,40,41,42,43,7,44,46,47,22,48,51,73,74,17,18,75,11,61,76,62,63])),`provider-detail`),Lo=$(()=>i(()=>import(`./ProvidersPage-Dx31DgIO.js`),__vite__mapDeps([77,1,2,3,4,8,9,25,29,30,32,39,6,78,40,43,7,44,46,47,22,48,73,61,76])),`providers`),Ro=$(()=>i(()=>import(`./CombosPage-CfuYiQ8Z.js`),__vite__mapDeps([79,1,80,2,3,4,21,22,25,70,29,30,31,32,34,35,39,6,78,40,28,7,8,9,44,45,16,42,43,46,48,73,74,17,18,62])),`combos`),zo=$(()=>i(()=>import(`./QuotaPage-BpOQCnun.js`),__vite__mapDeps([81,1,53,2,3,4,20,8,25,29,30,33,72,39,6,40,43,44,46,47,22,48,11,51,75,16,17,18])),`quota`),Bo=$(()=>i(()=>import(`./ProxyPage-BpnR4kXT.js`),__vite__mapDeps([82,1,53,2,3,4,23,8,9,24,25,29,30,31,32,71,72,36,39,16,6,17,18,40,41,43,7,44,47,22,48,11,61,64,65])),`proxy`),Vo=$(()=>i(()=>import(`./SettingsPage-DV1eo2J_.js`),__vite__mapDeps([83,1,2,3,4,23,9,25,29,30,37,16,6,17,18,39,40,41,7,8,44,47,22,63,12])),`settings`),Ho=$(()=>i(()=>import(`./CliToolsPage-DEDyKBlC.js`),__vite__mapDeps([84,1,53,25,2,3,4,40,43,22,48,50,16,6,17,18,85,11])),`cli-tools`),Uo=$(()=>i(()=>import(`./CliToolDetailPage-DLGqYEwI.js`),__vite__mapDeps([86,1,67,2,3,4,55,23,25,34,35,6,40,41,43,7,8,9,44,45,29,30,16,42,46,47,22,48,49,17,18,50,85])),`cli-tool-detail`),Wo=$(()=>i(()=>import(`./ConsoleLogPage-bsLuZmYH.js`),__vite__mapDeps([87,1,2,3,4,25,33,35,36,39,6,40,65,43,7,8,9,11])),`console-log`),Go=$(()=>i(()=>import(`./CustomizationPage-_UWhwziJ.js`),__vite__mapDeps([88,1,2,3,4,57,70,72,40,47,22,48])),`customization`),Ko=$(()=>i(()=>import(`./StudioPage-CmkUrgdj.js`),__vite__mapDeps([89,1,54,3,4,2,30,68,69,23,24,90,29,31,72,59,40,7,8,9,44,45,34,35,16,6,42,43,46,49,17,18])),`studio`);function qo(){let e=G(),t=W();return(0,I.useEffect)(()=>(je(n=>{if(Q.clear(),da(),n===`banned`){e(`/banned`,{replace:!0});return}e(`/login?returnTo=${encodeURIComponent(t.pathname)}`,{replace:!0})}),()=>je(void 0)),[e,t.pathname]),null}function Jo(){let e=W();return(0,X.jsx)(To,{resetKey:`${e.pathname}${e.search}`,children:(0,X.jsx)(I.Suspense,{fallback:(0,X.jsx)(Ao,{}),children:(0,X.jsxs)(lr,{children:[(0,X.jsx)(K,{path:`/login`,element:(0,X.jsx)(jo,{})}),(0,X.jsx)(K,{path:`/setup`,element:(0,X.jsx)(Mo,{})}),(0,X.jsx)(K,{path:`/banned`,element:(0,X.jsx)(No,{})}),(0,X.jsx)(K,{path:`/*`,element:(0,X.jsx)(Yo,{})})]})})})}function Yo(){let[e,t]=(0,I.useState)({kind:`loading`}),n=W(),r=G(),[i]=(0,I.useState)(()=>n.pathname);return(0,I.useEffect)(()=>{let e=new AbortController;return Q.fetchQuery({queryKey:N.session.current,queryFn:()=>Ae(),staleTime:6e4}).then(n=>{if(!e.signal.aborted){if(n){Q.setQueryData(N.session.current,n),t({kind:`ready`,user:n}),n.isFirstBoot&&i!==`/setup`&&r(`/setup`,{replace:!0});return}Q.removeQueries({queryKey:N.session.current}),M(`/auth/first-boot`,{signal:e.signal}).then(n=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:n.requires_setup})}).catch(()=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:!1})})}}).catch(n=>{e.signal.aborted||(typeof n==`object`&&n&&`status`in n&&n.status===403?t({kind:`blocked`}):t({kind:`unauthenticated`,needsSetup:!1}))}),()=>e.abort()},[i,r]),e.kind===`loading`?null:e.kind===`blocked`?(0,X.jsx)(sr,{to:`/banned`,replace:!0}):e.kind===`unauthenticated`?(0,X.jsx)(sr,{to:e.needsSetup?`/setup`:`/login?returnTo=${encodeURIComponent(n.pathname)}`,replace:!0}):(0,X.jsx)(wo,{user:e.user,children:(0,X.jsx)(To,{resetKey:n.pathname,children:(0,X.jsxs)(lr,{children:[(0,X.jsx)(K,{path:`/`,element:(0,X.jsx)(Po,{})}),(0,X.jsx)(K,{path:`/usage`,element:(0,X.jsx)(Fo,{})}),(0,X.jsx)(K,{path:`/providers`,element:(0,X.jsx)(Lo,{})}),(0,X.jsx)(K,{path:`/providers/:providerId`,element:(0,X.jsx)(Io,{})}),(0,X.jsx)(K,{path:`/combos`,element:(0,X.jsx)(Ro,{})}),(0,X.jsx)(K,{path:`/quota`,element:(0,X.jsx)(zo,{})}),(0,X.jsx)(K,{path:`/proxy`,element:(0,X.jsx)(Bo,{})}),(0,X.jsx)(K,{path:`/console-log`,element:(0,X.jsx)(Wo,{})}),(0,X.jsx)(K,{path:`/customization`,element:(0,X.jsx)(Go,{})}),(0,X.jsx)(K,{path:`/model-lab`,element:(0,X.jsx)(Ko,{})}),(0,X.jsx)(K,{path:`/cli-tools`,element:(0,X.jsx)(Ho,{})}),(0,X.jsx)(K,{path:`/cli-tools/:toolId`,element:(0,X.jsx)(Uo,{})}),(0,X.jsx)(K,{path:`/settings`,element:(0,X.jsx)(Vo,{})}),(0,X.jsx)(K,{path:`*`,element:(0,X.jsx)(sr,{to:`/`,replace:!0})})]})})})}function Xo(){return(0,X.jsx)(Se,{client:Q,children:(0,X.jsxs)(Yr,{basename:`/console`,children:[(0,X.jsx)(qo,{}),(0,X.jsx)(Jo,{}),(0,X.jsx)(b,{position:`top-right`,offset:{top:`6rem`,right:`1rem`},mobileOffset:{top:`6rem`,left:`1rem`,right:`1rem`},visibleToasts:2,richColors:!0,duration:5e3,toastOptions:{className:`toast-surface select-text`,descriptionClassName:`select-text`,classNames:{title:`select-text`},style:{background:`var(--glass-bg-2)`,border:`1px solid var(--glass-border-2)`,color:`var(--text-primary)`,fontSize:`12.5px`,userSelect:`text`},actionButtonStyle:{background:`var(--accent)`,color:`var(--accent-foreground)`},cancelButtonStyle:{background:`var(--surface-muted)`,color:`var(--text-primary)`}}})]})})}function Zo(e){document.title=`Cartethyia Console`,ua().finally(()=>{fa(),(0,li.createRoot)(e).render((0,X.jsx)(I.StrictMode,{children:(0,X.jsx)(Xo,{})}))})}export{zn as $,wa as A,J as B,oo as C,io as D,Va as E,Da as F,pi as G,Ri as H,Q as I,_i as J,yi as K,qi as L,Oa as M,ja as N,Ka as O,Aa as P,G as Q,Gi as R,eo as S,ao as T,Ci as U,Li as V,wi as W,vi as X,Si as Y,Xr as Z,Na as _,Wa as a,Ge as at,Ba as b,Ha as c,no as d,ni as et,za as f,Fa as g,Pa as h,ro as i,$e as it,ka as j,Ma as k,Za as l,Ua as m,Zo as mountConsole,qa as n,nt,Ga as o,We as ot,La as p,Ei as q,$a as r,et as rt,so as s,He as st,co as t,rt as tt,to as u,Xa as v,Ra as w,Qa as x,Ia as y,zi as z};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/entry-Dj9AR0gY.js","assets/jsx-runtime-CXUMngI_.js","assets/app-CafWtVXA.js","assets/app-DxivpfYG.css","assets/terminal-Bd4ee8TA.js","assets/numbers-Bs4LOOuf.js","assets/dialog-BtpsJU98.js","assets/use-presence-BSZEBx7U.js","assets/assert-NHwYq95t.js","assets/query-keys-D7wX2vM5.js","assets/mutation-BkoLM5Ba.js","assets/useMutation-w4u4CVue.js","assets/dialog-actions-B1axpEg7.js","assets/entry-TJIye_jT.js","assets/brain-Cwed_72z.js","assets/chevron-right-BXIy5l3h.js","assets/circle-check-BU3v_mFW.js","assets/eye-C_hawfH4.js","assets/github-badge-D_eM3IgG.js","assets/state-DYdQmdAl.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-NreUx6c8.js","assets/use-clipboard-B0Sy03fE.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/card--AtFedAq.js","assets/download-dRFo5_Wu.js","assets/tokens-DDxMbSRL.js","assets/stream-retry-5QnVuSSo.js","assets/entry-jy9_4-Ke.js","assets/arrow-right-Dl5yKnp8.js","assets/log-in-BmRjy60c.js","assets/message-circle-CCxGwRvv.js","assets/shield-check-DVS0Foqh.js","assets/sparkles-BRaRUxAU.js","assets/use-reduced-motion-C4B0R6Sz.js"])))=>i.map(i=>d[i]);
2
- (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 e(e){return e===`/share`||e.startsWith(`/share/`)?`share`:e===`/console`||e.startsWith(`/console/`)?`console`:`landing`}var t=`modulepreload`,n=function(e){return`/`+e},r={},i=function(e,i,a){let o=Promise.resolve();if(i&&i.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}o=l(i.map(i=>{if(i=n(i,a),i=u(i),i in r)return;r[i]=!0;let o=i.endsWith(`.css`);for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.href===i&&(!o||n.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:t,o||(s.as=`script`),s.crossOrigin=``,s.href=i,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,t)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})},a=document.getElementById(`root`);if(a===null)throw Error(`Dashboard root element is missing`);var o=e(window.location.pathname);o===`console`?i(async()=>{let{mountConsole:e}=await import(`./entry-Dj9AR0gY.js`);return{mountConsole:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(({mountConsole:e})=>e(a)):o===`share`?i(()=>import(`./entry-TJIye_jT.js`).then(()=>void 0),__vite__mapDeps([13,1,2,3,14,5,15,16,17,18,19,20,21,22,23,24,25,26,27,28])):i(async()=>{let{mountLanding:e}=await import(`./entry-jy9_4-Ke.js`);return{mountLanding:e}},__vite__mapDeps([29,1,2,3,4,30,18,31,32,33,34,35])).then(({mountLanding:e})=>e(a));export{i as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/entry-CkryrIea.js","assets/jsx-runtime-CXUMngI_.js","assets/app-CafWtVXA.js","assets/app-DxivpfYG.css","assets/terminal-Bd4ee8TA.js","assets/numbers-Bs4LOOuf.js","assets/dialog-BtpsJU98.js","assets/use-presence-BSZEBx7U.js","assets/assert-NHwYq95t.js","assets/query-keys-D7wX2vM5.js","assets/mutation-BkoLM5Ba.js","assets/useMutation-w4u4CVue.js","assets/dialog-actions-B1axpEg7.js","assets/entry-TJIye_jT.js","assets/brain-Cwed_72z.js","assets/chevron-right-BXIy5l3h.js","assets/circle-check-BU3v_mFW.js","assets/eye-C_hawfH4.js","assets/github-badge-D_eM3IgG.js","assets/state-DYdQmdAl.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-NreUx6c8.js","assets/use-clipboard-B0Sy03fE.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/card--AtFedAq.js","assets/download-dRFo5_Wu.js","assets/tokens-DDxMbSRL.js","assets/stream-retry-5QnVuSSo.js","assets/entry-jy9_4-Ke.js","assets/arrow-right-Dl5yKnp8.js","assets/log-in-BmRjy60c.js","assets/message-circle-CCxGwRvv.js","assets/shield-check-DVS0Foqh.js","assets/sparkles-BRaRUxAU.js","assets/use-reduced-motion-C4B0R6Sz.js"])))=>i.map(i=>d[i]);
2
+ (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 e(e){return e===`/share`||e.startsWith(`/share/`)?`share`:e===`/console`||e.startsWith(`/console/`)?`console`:`landing`}var t=`modulepreload`,n=function(e){return`/`+e},r={},i=function(e,i,a){let o=Promise.resolve();if(i&&i.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}o=l(i.map(i=>{if(i=n(i,a),i=u(i),i in r)return;r[i]=!0;let o=i.endsWith(`.css`);for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.href===i&&(!o||n.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:t,o||(s.as=`script`),s.crossOrigin=``,s.href=i,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,t)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})},a=document.getElementById(`root`);if(a===null)throw Error(`Dashboard root element is missing`);var o=e(window.location.pathname);o===`console`?i(async()=>{let{mountConsole:e}=await import(`./entry-CkryrIea.js`);return{mountConsole:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(({mountConsole:e})=>e(a)):o===`share`?i(()=>import(`./entry-TJIye_jT.js`).then(()=>void 0),__vite__mapDeps([13,1,2,3,14,5,15,16,17,18,19,20,21,22,23,24,25,26,27,28])):i(async()=>{let{mountLanding:e}=await import(`./entry-jy9_4-Ke.js`);return{mountLanding:e}},__vite__mapDeps([29,1,2,3,4,30,18,31,32,33,34,35])).then(({mountLanding:e})=>e(a));export{i as t};