cartethyia 2.4.5 → 2.4.6

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 (303) hide show
  1. package/.env.example +4 -1
  2. package/README.md +18 -0
  3. package/dist/dashboard/assets/AccountCooldown-ChpdzxRH.js.gz +0 -0
  4. package/dist/dashboard/assets/{BannedPage-DUrXpp-X.js → BannedPage-QhvbJB9o.js} +1 -1
  5. package/dist/dashboard/assets/BannedPage-QhvbJB9o.js.gz +0 -0
  6. package/dist/dashboard/assets/{CliToolDetailPage-BzGevuql.js → CliToolDetailPage-Bcy150Jo.js} +1 -1
  7. package/dist/dashboard/assets/CliToolDetailPage-Bcy150Jo.js.gz +0 -0
  8. package/dist/dashboard/assets/{CliToolsPage-BaRM_7We.js → CliToolsPage-DyNXefph.js} +1 -1
  9. package/dist/dashboard/assets/CliToolsPage-DyNXefph.js.gz +0 -0
  10. package/dist/dashboard/assets/CombosPage-Cak0ljnO.js +1 -0
  11. package/dist/dashboard/assets/CombosPage-Cak0ljnO.js.gz +0 -0
  12. package/dist/dashboard/assets/ConsoleLogPage-CATpAEOz.js +1 -0
  13. package/dist/dashboard/assets/ConsoleLogPage-CATpAEOz.js.gz +0 -0
  14. package/dist/dashboard/assets/{CustomizationPage-DqUGcoH0.js → CustomizationPage-D6jEU7nL.js} +1 -1
  15. package/dist/dashboard/assets/CustomizationPage-D6jEU7nL.js.gz +0 -0
  16. package/dist/dashboard/assets/HealthEventsModal-CZkpn0a7.js +1 -0
  17. package/dist/dashboard/assets/HealthEventsModal-CZkpn0a7.js.gz +0 -0
  18. package/dist/dashboard/assets/{LoginPage-DbhTGfhb.js → LoginPage-BJlMVN4U.js} +1 -1
  19. package/dist/dashboard/assets/LoginPage-BJlMVN4U.js.gz +0 -0
  20. package/dist/dashboard/assets/ModelPicker-Br3CXEau.js +1 -0
  21. package/dist/dashboard/assets/ModelPicker-Br3CXEau.js.gz +0 -0
  22. package/dist/dashboard/assets/{OverviewPage-C3NIzsDx.js → OverviewPage-CQxXbo2g.js} +1 -1
  23. package/dist/dashboard/assets/OverviewPage-CQxXbo2g.js.gz +0 -0
  24. package/dist/dashboard/assets/ProviderDetailPage--0RBNh99.js +3 -0
  25. package/dist/dashboard/assets/ProviderDetailPage--0RBNh99.js.gz +0 -0
  26. package/dist/dashboard/assets/ProviderIcon-paOCq8I0.js.gz +0 -0
  27. package/dist/dashboard/assets/ProvidersPage-1M-C3mbu.js +1 -0
  28. package/dist/dashboard/assets/ProvidersPage-1M-C3mbu.js.gz +0 -0
  29. package/dist/dashboard/assets/ProxyPage-CXiumA53.js +7 -0
  30. package/dist/dashboard/assets/ProxyPage-CXiumA53.js.gz +0 -0
  31. package/dist/dashboard/assets/QuotaPage-BGDIfIYP.js +1 -0
  32. package/dist/dashboard/assets/QuotaPage-BGDIfIYP.js.gz +0 -0
  33. package/dist/dashboard/assets/{SettingsPage-YxRml8AT.js → SettingsPage-BHW4Zt06.js} +1 -1
  34. package/dist/dashboard/assets/SettingsPage-BHW4Zt06.js.gz +0 -0
  35. package/dist/dashboard/assets/SetupPage-VOYC_lIa.js +1 -0
  36. package/dist/dashboard/assets/SetupPage-VOYC_lIa.js.gz +0 -0
  37. package/dist/dashboard/assets/SortableList-DpOTnGuH.js +1 -0
  38. package/dist/dashboard/assets/SortableList-DpOTnGuH.js.gz +0 -0
  39. package/dist/dashboard/assets/StudioPage-BNIDLiU6.js +31 -0
  40. package/dist/dashboard/assets/StudioPage-BNIDLiU6.js.gz +0 -0
  41. package/dist/dashboard/assets/ToolIcon-K1ckcDKg.js.gz +0 -0
  42. package/dist/dashboard/assets/{UsagePage-Djes-Epy.js → UsagePage-BAFaSDQV.js} +14 -14
  43. package/dist/dashboard/assets/UsagePage-BAFaSDQV.js.gz +0 -0
  44. package/dist/dashboard/assets/api-keys-BETfaMYZ.js +1 -0
  45. package/dist/dashboard/assets/api-keys-BETfaMYZ.js.gz +0 -0
  46. package/dist/dashboard/assets/app-BLCvGdzb.css +2 -0
  47. package/dist/dashboard/assets/app-BLCvGdzb.css.gz +0 -0
  48. package/dist/dashboard/assets/{app-BDJWMThu.js → app-Cjq7nrwu.js} +3 -3
  49. package/dist/dashboard/assets/app-Cjq7nrwu.js.gz +0 -0
  50. package/dist/dashboard/assets/arrow-left-CpBxkoxI.js.gz +0 -0
  51. package/dist/dashboard/assets/arrow-right-Dl5yKnp8.js.gz +0 -0
  52. package/dist/dashboard/assets/{assert-Bwh6DJTK.js → assert-7J6_LVD3.js} +1 -1
  53. package/dist/dashboard/assets/assert-7J6_LVD3.js.gz +0 -0
  54. package/dist/dashboard/assets/backup-file-gdKIlg8U.js.gz +0 -0
  55. package/dist/dashboard/assets/{badge-BwmwEOgA.js → badge-BTyGk_DL.js} +1 -1
  56. package/dist/dashboard/assets/badge-BTyGk_DL.js.gz +0 -0
  57. package/dist/dashboard/assets/{banner-BKBfKTqn.js → banner-bujTWYM4.js} +1 -1
  58. package/dist/dashboard/assets/banner-bujTWYM4.js.gz +0 -0
  59. package/dist/dashboard/assets/brain-Cwed_72z.js.gz +0 -0
  60. package/dist/dashboard/assets/{card-BTdbRFFg.js → card-B0Bnx5CA.js} +1 -1
  61. package/dist/dashboard/assets/card-B0Bnx5CA.js.gz +0 -0
  62. package/dist/dashboard/assets/check-D69FzdvC.js.gz +0 -0
  63. package/dist/dashboard/assets/chevron-right-BXIy5l3h.js.gz +0 -0
  64. package/dist/dashboard/assets/circle-alert-CntYHV5v.js.gz +0 -0
  65. package/dist/dashboard/assets/circle-check-BU3v_mFW.js.gz +0 -0
  66. package/dist/dashboard/assets/cli-tools-DE2ug812.js +1 -0
  67. package/dist/dashboard/assets/cli-tools-DE2ug812.js.gz +0 -0
  68. package/dist/dashboard/assets/clipboard-button-R_rArH8S.js +1 -0
  69. package/dist/dashboard/assets/clipboard-button-R_rArH8S.js.gz +0 -0
  70. package/dist/dashboard/assets/cog-CdWhsajs.js.gz +0 -0
  71. package/dist/dashboard/assets/copy-ngmQ9zcZ.js.gz +0 -0
  72. package/dist/dashboard/assets/{dialog-iocKA3jr.js → dialog-BWIP_EvW.js} +1 -1
  73. package/dist/dashboard/assets/dialog-BWIP_EvW.js.gz +0 -0
  74. package/dist/dashboard/assets/dialog-actions-B1axpEg7.js.gz +0 -0
  75. package/dist/dashboard/assets/download-A0SW9OCW.js.gz +0 -0
  76. package/dist/dashboard/assets/download-dRFo5_Wu.js.gz +0 -0
  77. package/dist/dashboard/assets/{drawer-CDKOTZdY.js → drawer-BKcgVugF.js} +1 -1
  78. package/dist/dashboard/assets/drawer-BKcgVugF.js.gz +0 -0
  79. package/dist/dashboard/assets/entry-7dpgvpJ3.js +4 -0
  80. package/dist/dashboard/assets/entry-7dpgvpJ3.js.gz +0 -0
  81. package/dist/dashboard/assets/entry-CcWkGR4a.js +1 -0
  82. package/dist/dashboard/assets/entry-CcWkGR4a.js.gz +0 -0
  83. package/dist/dashboard/assets/entry-kTiTFrvh.js +1 -0
  84. package/dist/dashboard/assets/entry-kTiTFrvh.js.gz +0 -0
  85. package/dist/dashboard/assets/eye-C_hawfH4.js.gz +0 -0
  86. package/dist/dashboard/assets/eye-off-Bk5g2luF.js.gz +0 -0
  87. package/dist/dashboard/assets/fingerprint-pattern-BWuHtbW4.js.gz +0 -0
  88. package/dist/dashboard/assets/gauge-BbIMy7MB.js.gz +0 -0
  89. package/dist/dashboard/assets/github-badge-Booc5mNe.js +1 -0
  90. package/dist/dashboard/assets/github-badge-Booc5mNe.js.gz +0 -0
  91. package/dist/dashboard/assets/image-BPaouViG.js.gz +0 -0
  92. package/dist/dashboard/assets/{index-C4hXfAMs.js → index-D70pChfn.js} +2 -2
  93. package/dist/dashboard/assets/index-D70pChfn.js.gz +0 -0
  94. package/dist/dashboard/assets/{inline-DCejSLlA.js → inline-D1TCqM2D.js} +1 -1
  95. package/dist/dashboard/assets/inline-D1TCqM2D.js.gz +0 -0
  96. package/dist/dashboard/assets/{input-Bn4_kNav.js → input-B9oyU93y.js} +1 -1
  97. package/dist/dashboard/assets/input-B9oyU93y.js.gz +0 -0
  98. package/dist/dashboard/assets/jsx-runtime-CXUMngI_.js.gz +0 -0
  99. package/dist/dashboard/assets/key-round-UkavsGxp.js.gz +0 -0
  100. package/dist/dashboard/assets/layers-2-glBbjl.js.gz +0 -0
  101. package/dist/dashboard/assets/{layout-Bv-NxqZ5.js → layout-BArzXirQ.js} +1 -1
  102. package/dist/dashboard/assets/layout-BArzXirQ.js.gz +0 -0
  103. package/dist/dashboard/assets/{list-row-BLA0sldD.js → list-row-BVZzaoHF.js} +1 -1
  104. package/dist/dashboard/assets/list-row-BVZzaoHF.js.gz +0 -0
  105. package/dist/dashboard/assets/{live-YlifPYox.js → live-EmuIayqp.js} +1 -1
  106. package/dist/dashboard/assets/live-EmuIayqp.js.gz +0 -0
  107. package/dist/dashboard/assets/log-in-BmRjy60c.js.gz +0 -0
  108. package/dist/dashboard/assets/message-circle-CCxGwRvv.js.gz +0 -0
  109. package/dist/dashboard/assets/{model-bans-CVvHZ-qz.js → model-bans-CSPQ9xB0.js} +1 -1
  110. package/dist/dashboard/assets/model-bans-CSPQ9xB0.js.gz +0 -0
  111. package/dist/dashboard/assets/mutation-BkoLM5Ba.js +1 -0
  112. package/dist/dashboard/assets/mutation-BkoLM5Ba.js.gz +0 -0
  113. package/dist/dashboard/assets/numbers-CFL4_Dqc.js.gz +0 -0
  114. package/dist/dashboard/assets/pencil-768ysRAr.js.gz +0 -0
  115. package/dist/dashboard/assets/plus-DIdX_g-x.js.gz +0 -0
  116. package/dist/dashboard/assets/power-off-Yjw9GMJh.js +1 -0
  117. package/dist/dashboard/assets/power-off-Yjw9GMJh.js.gz +0 -0
  118. package/dist/dashboard/assets/privacy-mode-GM8bej85.js +1 -0
  119. package/dist/dashboard/assets/privacy-mode-GM8bej85.js.gz +0 -0
  120. package/dist/dashboard/assets/providers/agentrouter.svg.gz +0 -0
  121. package/dist/dashboard/assets/providers/aihubmix.svg.gz +0 -0
  122. package/dist/dashboard/assets/providers/alibaba-coding-plan.svg.gz +0 -0
  123. package/dist/dashboard/assets/providers/alibaba.svg.gz +0 -0
  124. package/dist/dashboard/assets/providers/antigravity.svg.gz +0 -0
  125. package/dist/dashboard/assets/providers/bai.svg.gz +0 -0
  126. package/dist/dashboard/assets/providers/blackbox.svg.gz +0 -0
  127. package/dist/dashboard/assets/providers/claude-code.svg.gz +0 -0
  128. package/dist/dashboard/assets/providers/exa.svg.gz +0 -0
  129. package/dist/dashboard/assets/providers/gmi-cloud.svg.gz +0 -0
  130. package/dist/dashboard/assets/providers/inferhub.svg.gz +0 -0
  131. package/dist/dashboard/assets/providers/muse.svg.gz +0 -0
  132. package/dist/dashboard/assets/providers/nous-research.svg.gz +0 -0
  133. package/dist/dashboard/assets/providers/openai-light.svg.gz +0 -0
  134. package/dist/dashboard/assets/providers/parallel.svg.gz +0 -0
  135. package/dist/dashboard/assets/providers/tokenharbor.svg.gz +0 -0
  136. package/dist/dashboard/assets/providers/zai-coding-plan.svg.gz +0 -0
  137. package/dist/dashboard/assets/{query-keys-ROf-g1Wi.js → query-keys-D7wX2vM5.js} +1 -1
  138. package/dist/dashboard/assets/query-keys-D7wX2vM5.js.gz +0 -0
  139. package/dist/dashboard/assets/quota-DZGyp0N5.js.gz +0 -0
  140. package/dist/dashboard/assets/refresh-cw-BqJFk4sU.js.gz +0 -0
  141. package/dist/dashboard/assets/rotate-ccw-CufcqITi.js.gz +0 -0
  142. package/dist/dashboard/assets/route-CNSNj9Zm.js.gz +0 -0
  143. package/dist/dashboard/assets/{routing-jntw9-Ui.js → routing-BExgxxBU.js} +1 -1
  144. package/dist/dashboard/assets/routing-BExgxxBU.js.gz +0 -0
  145. package/dist/dashboard/assets/scaling-nWE4Cx8f.js.gz +0 -0
  146. package/dist/dashboard/assets/search-JOKus9rb.js.gz +0 -0
  147. package/dist/dashboard/assets/{select-CGUuTQmj.js → select-C9mMoEpJ.js} +1 -1
  148. package/dist/dashboard/assets/select-C9mMoEpJ.js.gz +0 -0
  149. package/dist/dashboard/assets/settings-C4_Gn_wq.js +1 -0
  150. package/dist/dashboard/assets/settings-C4_Gn_wq.js.gz +0 -0
  151. package/dist/dashboard/assets/shield-check-DVS0Foqh.js.gz +0 -0
  152. package/dist/dashboard/assets/sliders-horizontal-ClG7dBeJ.js.gz +0 -0
  153. package/dist/dashboard/assets/sparkles-BRaRUxAU.js.gz +0 -0
  154. package/dist/dashboard/assets/{stack-C1kTcOmP.js → stack-Ca5HxI5i.js} +1 -1
  155. package/dist/dashboard/assets/stack-Ca5HxI5i.js.gz +0 -0
  156. package/dist/dashboard/assets/{state-DHKdg-pm.js → state-CzUPfLXo.js} +1 -1
  157. package/dist/dashboard/assets/state-CzUPfLXo.js.gz +0 -0
  158. package/dist/dashboard/assets/stream-retry-5QnVuSSo.js.gz +0 -0
  159. package/dist/dashboard/assets/{switch-DIDeAiz9.js → switch-DOUIky_i.js} +1 -1
  160. package/dist/dashboard/assets/switch-DOUIky_i.js.gz +0 -0
  161. package/dist/dashboard/assets/terminal-Bd4ee8TA.js +1 -0
  162. package/dist/dashboard/assets/terminal-Bd4ee8TA.js.gz +0 -0
  163. package/dist/dashboard/assets/toast-C76WrMhc.js +2 -0
  164. package/dist/dashboard/assets/toast-C76WrMhc.js.gz +0 -0
  165. package/dist/dashboard/assets/tokens-DDxMbSRL.js.gz +0 -0
  166. package/dist/dashboard/assets/trash-Cppn5c3R.js.gz +0 -0
  167. package/dist/dashboard/assets/use-clipboard-B0Sy03fE.js.gz +0 -0
  168. package/dist/dashboard/assets/use-presence-BSZEBx7U.js.gz +0 -0
  169. package/dist/dashboard/assets/use-reduced-motion-C4B0R6Sz.js.gz +0 -0
  170. package/dist/dashboard/assets/use-timeout-BwcBBRrT.js.gz +0 -0
  171. package/dist/dashboard/assets/{useMutation-DVmwOKU-.js → useMutation-D87FZwH0.js} +1 -1
  172. package/dist/dashboard/assets/useMutation-D87FZwH0.js.gz +0 -0
  173. package/dist/dashboard/assets/wrench-B6E1oEuY.js.gz +0 -0
  174. package/dist/dashboard/index.html +1 -1
  175. package/dist/dashboard/index.html.gz +0 -0
  176. package/dist/dashboard/precompressed-assets.json +123 -0
  177. package/migrations/full-postgres/0013_add_providers_tenant_id_index.sql +22 -0
  178. package/migrations/full-postgres/0014_add_provider_accounts_tenant_id_index.sql +21 -0
  179. package/migrations/lite-sqlite3/0000_baseline.sql +4 -2
  180. package/migrations/lite-sqlite3/0013_add_providers_tenant_id_index.sql +4 -0
  181. package/migrations/lite-sqlite3/0014_add_provider_accounts_tenant_id_index.sql +4 -0
  182. package/package.json +25 -30
  183. package/scripts/cli/{carte-launcher.cjs → bin/carte.cjs} +8 -8
  184. package/scripts/cli/{cli-launcher.cjs → bin/cartethyia.cjs} +167 -134
  185. package/scripts/cli/command/admin.ts +65 -0
  186. package/scripts/cli/command/console-menu.ts +227 -0
  187. package/scripts/cli/{doctor.ts → command/doctor.ts} +257 -258
  188. package/scripts/cli/{setup.ts → command/setup.ts} +8 -12
  189. package/scripts/cli/command/start.ts +13 -0
  190. package/scripts/cli/command/tray.ts +165 -0
  191. package/scripts/cli/command/update.ts +23 -0
  192. package/scripts/cli/{runtime-state.ts → gateway/drain-token.ts} +78 -78
  193. package/scripts/cli/gateway/spawn.ts +101 -0
  194. package/scripts/cli/gateway/stop.ts +51 -0
  195. package/scripts/cli/main.ts +94 -0
  196. package/scripts/cli/support/bun.ts +27 -0
  197. package/scripts/cli/support/env.ts +99 -0
  198. package/scripts/cli/support/platform.ts +64 -0
  199. package/scripts/cli/support/services.ts +88 -0
  200. package/scripts/cli/support/startup-signal.ts +23 -0
  201. package/scripts/cli/{version.ts → support/version.ts} +1 -1
  202. package/scripts/cli/tray/hidden-window.vbs +28 -0
  203. package/scripts/cli/{tray.ts → tray/index.ts} +3 -3
  204. package/scripts/cli/{tray.ps1 → tray/windows.ps1} +107 -98
  205. package/scripts/cli/ui/background.ts +49 -0
  206. package/src/boot/app.ts +3 -1
  207. package/src/boot/dependencies.ts +36 -13
  208. package/src/config/providers.ts +27 -1
  209. package/src/config/spec.ts +11 -0
  210. package/src/console/backup/routes.ts +8 -0
  211. package/src/console/cli-tools/contracts.ts +6 -6
  212. package/src/console/console-router.ts +5 -3
  213. package/src/console/dashboard-assets.ts +81 -11
  214. package/src/console/observability/contracts.ts +54 -22
  215. package/src/console/observability/routes.ts +31 -6
  216. package/src/console/observability/store.ts +68 -28
  217. package/src/console/providers/catalog/public-model-store.ts +91 -60
  218. package/src/console/providers/catalog/store.ts +5 -1
  219. package/src/console/quota/account-quota-tenant.ts +9 -6
  220. package/src/console/response-compression.ts +69 -2
  221. package/src/console/routing/pools/probe-verdict.ts +72 -0
  222. package/src/console/share/share-router.ts +7 -4
  223. package/src/console/share/share-stats.ts +12 -5
  224. package/src/console/shared/read-through-cache.ts +133 -7
  225. package/src/console/updates/repository-updates.ts +39 -34
  226. package/src/network/outbound-fetch.ts +113 -25
  227. package/src/network/tls/bun-client-hello.ts +112 -0
  228. package/src/observability/event-log.ts +29 -8
  229. package/src/observability/metrics.ts +40 -13
  230. package/src/observability/runtime-metrics.ts +7 -0
  231. package/src/persistence/schema.ts +40 -2
  232. package/src/protocol/response/codex.ts +9 -75
  233. package/src/protocol/tool-identity.ts +43 -9
  234. package/src/providers/authentication/jwt-validator.ts +130 -187
  235. package/src/providers/authentication/oauth-flow-store.ts +16 -9
  236. package/src/providers/default-registry.ts +4 -0
  237. package/src/providers/discovery/catalog/catalog-format.ts +20 -0
  238. package/src/providers/discovery/models-dev-catalog.ts +39 -22
  239. package/src/providers/discovery/probe-wire.ts +29 -5
  240. package/src/providers/integrations/buddy/buddy-catalog-shared.ts +3 -2
  241. package/src/providers/integrations/buddy/buddy-cli-headers.ts +88 -0
  242. package/src/providers/integrations/buddy/buddy-conversation-headers.ts +4 -0
  243. package/src/providers/integrations/buddy/buddy-discovery-shared.ts +33 -1
  244. package/src/providers/integrations/buddy/buddy-identity.ts +46 -0
  245. package/src/providers/integrations/buddy/buddy-oauth-shared.ts +37 -1
  246. package/src/providers/integrations/buddy/buddy-usage-store.ts +40 -5
  247. package/src/providers/integrations/buddy/codebuddy/provider.ts +2 -2
  248. package/src/providers/integrations/buddy/codebuddy/shared.ts +106 -73
  249. package/src/providers/integrations/buddy/workbuddy/cn-provider.ts +5 -2
  250. package/src/providers/integrations/buddy/workbuddy/quota.ts +172 -159
  251. package/src/providers/integrations/buddy/workbuddy/shared.ts +200 -171
  252. package/src/providers/integrations/codex/codex.ts +5 -8
  253. package/src/providers/integrations/factory/factory-oauth.ts +7 -11
  254. package/src/providers/integrations/opencode/opencode-go-quota.ts +130 -0
  255. package/src/providers/integrations/opencode/provider.ts +42 -3
  256. package/src/providers/integrations/qoder/qoder-oauth.ts +3 -9
  257. package/src/providers/integrations/shared/install-id.ts +29 -2
  258. package/src/providers/operations/client-versions.ts +11 -1
  259. package/src/providers/operations/model-catalog-cache.ts +18 -3
  260. package/src/providers/operations/provider-catalog-service.ts +76 -0
  261. package/src/transport/dispatch/attempt-finalize.ts +7 -1
  262. package/src/transport/dispatch/attempt-loop.ts +9 -7
  263. package/src/transport/dispatch/empty-stream.ts +17 -26
  264. package/src/transport/failure-policy.ts +20 -0
  265. package/src/transport/routing/route-catalog.ts +42 -3
  266. package/src/transport/surface/chat/encode.ts +18 -31
  267. package/src/transport/surface/messages/stream.ts +3 -2
  268. package/src/transport/translation/tool-repair.ts +37 -16
  269. package/src/workers/account-identity-sweep.ts +14 -12
  270. package/src/workers/daily-checkin.ts +62 -0
  271. package/src/workers/quota-refresh-sweep.ts +27 -2
  272. package/dist/dashboard/assets/CombosPage-B7ETkfVH.js +0 -1
  273. package/dist/dashboard/assets/ConsoleLogPage-AisQzCI1.js +0 -1
  274. package/dist/dashboard/assets/HealthEventsModal-BNflDm_f.js +0 -1
  275. package/dist/dashboard/assets/ModelPicker-CAiPR5Vd.js +0 -1
  276. package/dist/dashboard/assets/ProviderDetailPage-BK8i5B5X.js +0 -3
  277. package/dist/dashboard/assets/ProvidersPage-CvCVgm1e.js +0 -1
  278. package/dist/dashboard/assets/ProxyPage-DjabkuzP.js +0 -7
  279. package/dist/dashboard/assets/QuotaPage-Dxe0B0iu.js +0 -1
  280. package/dist/dashboard/assets/SetupPage-BaD4P_jW.js +0 -1
  281. package/dist/dashboard/assets/SortableList-Bol1ASmI.js +0 -1
  282. package/dist/dashboard/assets/StudioPage-CLP4le3U.js +0 -31
  283. package/dist/dashboard/assets/api-keys-CjIGQhe7.js +0 -1
  284. package/dist/dashboard/assets/app-Cjgo4-Lf.css +0 -2
  285. package/dist/dashboard/assets/cli-tools-DccaOfhX.js +0 -1
  286. package/dist/dashboard/assets/clipboard-button-DQmMikNQ.js +0 -1
  287. package/dist/dashboard/assets/entry-Cpi0rph1.js +0 -4
  288. package/dist/dashboard/assets/entry-Dm3PpDCO.js +0 -1
  289. package/dist/dashboard/assets/entry-keNDZ_Wz.js +0 -1
  290. package/dist/dashboard/assets/github-badge-BuAJr8oU.js +0 -1
  291. package/dist/dashboard/assets/mutation-BIizFZav.js +0 -1
  292. package/dist/dashboard/assets/privacy-mode-CQjbZ3xk.js +0 -1
  293. package/dist/dashboard/assets/settings-BAS6QbmJ.js +0 -1
  294. package/dist/dashboard/assets/terminal-C9mZ4Ugm.js +0 -1
  295. package/dist/dashboard/assets/toast-DKAdP2mo.js +0 -2
  296. package/scripts/cli/cli.ts +0 -771
  297. package/scripts/operations/probe-egress.ts +0 -335
  298. package/scripts/operations/restart.ts +0 -120
  299. package/scripts/shared/env.ts +0 -269
  300. /package/{tray-assets → scripts/cli/tray/assets}/cartethyia.ico +0 -0
  301. /package/{tray-assets → scripts/cli/tray/assets}/cartethyia.png +0 -0
  302. /package/scripts/cli/{menu.ts → ui/prompt.ts} +0 -0
  303. /package/scripts/cli/{wordmark.ts → ui/wordmark.ts} +0 -0
@@ -1 +1 @@
1
- import{o as e,r as t,t as n}from"./jsx-runtime-CXUMngI_.js";import{A as r,D as i,F as a,M as o,P as s,_ as c,b as l,f as u,j as d,k as f,l as p,v as m,w as h,y as g}from"./query-keys-ROf-g1Wi.js";var _=e(t(),1),v=n(),y=_.createContext(void 0),b=e=>{let t=_.useContext(y);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},x=({client:e,children:t})=>(_.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,v.jsx)(y.Provider,{value:e,children:t})),S=class extends g{#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=new Set;constructor(e,t){super(),this.options=t,this.#e=e,this.#o=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),w(this.#t,this.options)?this.#m():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return T(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return T(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof r(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!d(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let i=this.hasListeners();i&&E(this.#t,n,this.options,t)&&this.#m(),this.updateResult(),i&&(this.#t!==n||r(this.options.enabled,this.#t)!==r(t.enabled,this.#t)||r(this.options.staleTime,this.#t)!==r(t.staleTime,this.#t))&&this.#g();let a=this.#_();i&&(this.#t!==n||r(this.options.enabled,this.#t)!==r(t.enabled,this.#t)||a!==this.#f)&&this.#v(a)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return d(this.getCurrentResult(),n)||(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),Reflect.get(e,n))})}trackProp(e){this.#p.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t),r=()=>{},i,a=new Promise(e=>{i=e,r=this.#e.getQueryCache().subscribe(i=>{i.type===`updated`&&i.query.queryHash===n.queryHash&&n.state.data!==void 0&&(r(),e(this.createResult(n,t)))})});return Promise.race([n.fetch().then(()=>{let e=this.createResult(n,t);return i?.(e),e}).finally(()=>{r()}),a])}fetch(e){return this.#m({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#m(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(i)),t}#h(e){return!l()&&r(this.options.enabled,this.#t)!==!1&&h(e)}#g(){this.#b();let e=r(this.options.staleTime,this.#t);if(this.#r.isStale||!this.#h(e))return;let t=s(this.#r.dataUpdatedAt,e)+1;this.#u=a.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#f=e,this.#f!==0&&this.#h(this.#f)&&(this.#d=a.setInterval(()=>{(this.options.refetchIntervalInBackground||m.isFocused())&&this.#m()},this.#f))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#u!==void 0&&(a.clearTimeout(this.#u),this.#u=void 0)}#x(){this.#d!==void 0&&(a.clearInterval(this.#d),this.#d=void 0)}createResult(e,t){let n=this.#t,i=this.options,a=this.#r,o=this.#i,s=this.#a,c=e===n?this.#n:e.state,{state:l}=e,d={...l},p=!1,m;if(t._optimisticResults){let r=this.hasListeners(),a=!r&&w(e,t),o=r&&E(e,n,t,i);(a||o)&&(d={...d,...u(l.data,e.options)}),t._optimisticResults===`isRestoring`&&(d.fetchStatus=`idle`)}let{error:h,errorUpdatedAt:g,status:_}=d;m=d.data;let v=!1;if(t.placeholderData!==void 0&&m===void 0&&_===`pending`){let e;a?.isPlaceholderData&&t.placeholderData===s?.placeholderData?(e=a.data,v=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#l?.state.data,this.#l):t.placeholderData,e!==void 0&&(_=`success`,m=f(a?.data,e,t),p=!0)}if(t.select&&m!==void 0&&!v){if(a&&m===o?.data&&t.select===this.#s)m=this.#c;else try{this.#s=t.select,m=t.select(m),m=f(a?.data,m,t),this.#c=m,this.#o=null}catch(e){this.#o=e}}else m===void 0&&(this.#o=null);this.#o&&(h=this.#o,m=this.#c,g=Date.now(),_=`error`,p=!1);let y=d.fetchStatus===`fetching`,b=_===`pending`,x=_===`error`,S=b&&y,C=m!==void 0;return{status:_,fetchStatus:d.fetchStatus,isPending:b,isSuccess:_===`success`,isError:x,isInitialLoading:S,isLoading:S,data:m,dataUpdatedAt:d.dataUpdatedAt,error:h,errorUpdatedAt:g,failureCount:d.fetchFailureCount,failureReason:d.fetchFailureReason,errorUpdateCount:d.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:d.dataUpdateCount>c.dataUpdateCount||d.errorUpdateCount>c.errorUpdateCount,isFetching:y,isRefetching:y&&!b,isLoadingError:x&&!C,isPaused:d.fetchStatus===`paused`,isPlaceholderData:p,isRefetchError:x&&C,isStale:D(e,t),refetch:this.refetch,isEnabled:r(t.enabled,e)!==!1}}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);if(this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#l=this.#t),d(t,e))return;this.#r=t;let n=(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#p.size)return!0;let r=new Set(n??this.#p);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})();c.batch(()=>{n&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}};function C(e,t){return r(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||r(t.retryOnMount,e)!==!1)}function w(e,t){return C(e,t)||e.state.data!==void 0&&T(e,t,t.refetchOnMount)}function T(e,t,n){if(r(t.enabled,e)!==!1&&r(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&D(e,t)}return!1}function E(e,t,n,i){return(e!==t||r(i.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&D(e,n)}function D(e,t){return r(t.enabled,e)!==!1&&e.isStaleByTime(r(t.staleTime,e))}var O=_.createContext(!1),k=()=>_.useContext(O);O.Provider;function A(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var j=_.createContext(A()),M=()=>_.useContext(j),N=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?o(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||r)&&(t.isReset()||(e.retryOnMount=!1))},ee=e=>{_.useEffect(()=>{e.clearReset()},[e])},te=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||o(n,[e.error,r])),P=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},F=(e,t)=>e?.suspense&&t.isPending,I=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function L(e,t,n){let r=k(),a=M(),o=b(n),s=o.defaultQueryOptions(e),l=o.getQueryCache().get(s.queryHash),u=e.subscribed!==!1;s._optimisticResults=r?`isRestoring`:u?`optimistic`:void 0,P(s),N(s,a,l),ee(a);let[d]=_.useState(()=>new t(o,s)),f=d.getOptimisticResult(s),p=!r&&u;if(_.useSyncExternalStore(_.useCallback(e=>{let t=p?d.subscribe(c.batchCalls(e)):i;return d.updateResult(),t},[d,p]),()=>d.getCurrentResult(),()=>d.getCurrentResult()),_.useEffect(()=>{d.setOptions(s)},[s,d]),F(s,f))throw I(s,d,a);if(te({result:f,errorResetBoundary:a,throwOnError:s.throwOnError,query:l,suspense:s.suspense}))throw f.error;return s.notifyOnChangeProps?f:d.trackResult(f)}function R(e,t){return L(e,S,t)}var z=[`model`,`provider`,`key`,`client`,`client_ip`],B=[{id:`9router`,label:`Compatible AI router`,signals:[{field:`x-msh-platform`,equals:`9router`,description:`Platform fingerprint header`},{field:`x-client-type`,equals:`9router`,description:`Client-type fingerprint header`},{field:`user-agent`,pattern:/(^|[^a-z0-9])9router([^a-z0-9]|$)/i,description:`User-Agent fingerprint`},{field:`x-omniroute-peer-trace`,description:`Peer-trace fingerprint header`},{field:`x-omniroute-fallback-hint`,description:`Fallback-hint fingerprint header`},{field:`user-agent`,equals:`mozilla/5.0 (compatible; openai compatible)`,description:`Rewritten OpenAI-compatible User-Agent`},{field:`user-agent`,pattern:/^node(?:\/[\w.+-]+)?$/i,description:`Node's default User-Agent, sent bare by this router`}]}],V={omniroute:`9router`};function H(e){let t=e.trim().toLowerCase();return B.some(e=>e.id===t)?t:V[t]}Object.freeze(B.map(e=>e.id));var U=[`cloudflare`,`vercel`,`deno`];function W(e){return typeof e==`number`&&Number.isFinite(e)}function G(e){return{status:500,code:`invalid_response`,message:e}}function K(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function q(e){if(e===null)return null;if(!p(e)||typeof e.tag_name!=`string`||typeof e.html_url!=`string`)throw G(`Invalid release response`);return{tag_name:e.tag_name,html_url:e.html_url}}function J(e){if(!p(e)||![`healthy`,`degraded`,`unhealthy`].includes(e.status)||![`uptime_seconds`,`memory_bytes`,`memory_heap_bytes`,`memory_external_bytes`,`memory_percent`,`cpu_percent`,`request_count`,`error_count`,`latency_avg_ms`,`latency_p95_ms`,`latency_p99_ms`].every(t=>W(e[t]))||typeof e.database_healthy!=`boolean`||typeof e.redis_healthy!=`boolean`||typeof e.redis_configured!=`boolean`||typeof e.database_in_process!=`boolean`)throw G(`Invalid system health response`);return e}function Y(e){return e===void 0||W(e)}function X(e){if(!p(e)||typeof e.period!=`string`||!p(e.totals))throw G(`Invalid usage summary response`);let t=e.totals;if(![`requests`,`inputTokens`,`cachedTokens`,`outputTokens`,`errors`,`cancelled`,`truncated`,`avgResolveMs`,`avgDurationMs`,`latencyP50Ms`,`latencyP95Ms`,`latencyP99Ms`,`latencySampleCount`,`resolveSampleCount`,`estimatedCostUsd`,`cacheHitRate`].every(e=>W(t[e]))||typeof t.partial!=`boolean`)throw G(`Invalid usage summary response`);if(!Array.isArray(t.statusCounts)||!t.statusCounts.every(e=>p(e)&&W(e.status)&&W(e.count)))throw G(`Invalid usage status counts`);return e}function Z(e){if(!p(e)||!Array.isArray(e.buckets))throw G(`Invalid usage chart response`);for(let t of e.buckets)if(!p(t)||typeof t.t!=`string`||![`requests`,`input`,`cached`,`output`].every(e=>W(t[e])))throw G(`Invalid usage chart response`);return e}function ne(e){if(!p(e)||!Array.isArray(e.rows)||!z.includes(String(e.dimension)))throw G(`Invalid usage breakdown response`);for(let t of e.rows)if(!p(t)||typeof t.name!=`string`||![`requests`,`input`,`output`,`cached`,`total`,`errors`].every(e=>W(t[e]))||!(t.costUsd===null||W(t.costUsd))||t.label!==void 0&&typeof t.label!=`string`)throw G(`Invalid usage breakdown response`);return e}function Q(e){if(!p(e)||typeof e.requestId!=`string`||typeof e.startedAt!=`string`||typeof e.status!=`string`||e.mode!==`stream`&&e.mode!==`non_stream`||e.accountId!==void 0&&typeof e.accountId!=`string`)throw G(`Invalid usage request response`);for(let t of[`endpoint`,`apiKeyId`,`userAgent`,`clientName`,`clientIp`])if(e[t]!==void 0&&typeof e[t]!=`string`)throw G(`Invalid usage request response`);for(let t of[`durationMs`,`inputTokens`,`outputTokens`,`cachedTokens`,`reasoningTokens`,`totalTokens`,`ttfbMs`,`tokensPerSec`,`estimatedCost`,`creditUsed`,`resolveMs`])if(!Y(e[t]))throw G(`Invalid usage request response`)}function re(e){if(!p(e)||!Array.isArray(e.items))throw G(`Invalid usage requests response`);for(let t of e.items)Q(t);return e}function ie(e){if(!p(e)||(Q(e),e.payloads!==void 0&&e.payloads!==null&&!p(e.payloads)))throw G(`Invalid usage request response`);if(e.payloadSignals!==void 0){if(!p(e.payloadSignals))throw G(`Invalid usage request response`);for(let t of[`toolCalls`,`images`,`attachments`]){let n=e.payloadSignals[t];if(typeof n!=`number`||!Number.isInteger(n)||n<0)throw G(`Invalid usage request response`)}}return e}function ae(e){if(!p(e)||!Array.isArray(e.entries))throw G(`Invalid audit response`);let t=e.entries.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.createdAt!=`string`||typeof e.actor!=`string`||typeof e.action!=`string`||typeof e.target!=`string`)throw G(`Invalid audit response`);return e});return typeof e.nextCursor==`string`?{entries:t,nextCursor:e.nextCursor}:{entries:t}}function oe(e){if(!Array.isArray(e))throw G(`Invalid provider response`);return e.map(e=>{if(!p(e)||typeof e.providerId!=`string`||typeof e.displayName!=`string`||typeof e.enabled!=`boolean`||typeof e.isBuiltIn!=`boolean`)throw G(`Invalid provider response`);let t=e.serviceKinds===void 0?[`llm`]:K(e.serviceKinds)&&e.serviceKinds.length>0?e.serviceKinds:void 0;if(t===void 0||t.includes(`all`))throw G(`Invalid provider service kinds`);return{...e,serviceKinds:t}})}function $(e){if(!Array.isArray(e))throw G(`Invalid model response`);return e.map(e=>{if(!p(e)||typeof e.modelId!=`string`||typeof e.route!=`string`||typeof e.provider!=`string`)throw G(`Invalid model response`);return e})}function se(e){if(!Array.isArray(e))throw G(`Invalid model alias response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.tenantId!=`string`||typeof e.alias!=`string`||typeof e.targetModel!=`string`||typeof e.createdAt!=`string`||typeof e.updatedAt!=`string`)throw G(`Invalid model alias response`);return e})}function ce(e){if(!Array.isArray(e))throw G(`Invalid model combo response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.tenantId!=`string`||typeof e.name!=`string`||!K(e.members)||typeof e.strategy!=`string`||typeof e.createdAt!=`string`||typeof e.updatedAt!=`string`)throw G(`Invalid model combo response`);return e})}function le(e){if(!p(e)||typeof e.providerId!=`string`||typeof e.strategy!=`string`||typeof e.rotateCount!=`number`||e.rotateCount<1||e.rotateCount>1e3||typeof e.enabled!=`boolean`||e.maxInflight!==null&&typeof e.maxInflight!=`number`||e.maxInflightPerProxy!==null&&e.maxInflightPerProxy!==void 0&&typeof e.maxInflightPerProxy!=`number`||e.usageFloor!==null&&e.usageFloor!==void 0&&typeof e.usageFloor!=`number`||e.usageFloorUnit!==void 0&&e.usageFloorUnit!==`credit`&&e.usageFloorUnit!==`percent`||typeof e.skipProxy!=`boolean`||typeof e.userAgent!=`string`||e.userAgent.length>4096)throw G(`Invalid provider routing response`);return e}function ue(e){if(!p(e)||!Array.isArray(e.bans))throw G(`Invalid model ban response`);return e.bans.map(e=>{if(!p(e)||typeof e.ip!=`string`||e.reason!==`repeated_invalid_model_requests`||!W(e.expiresAt))throw G(`Invalid model ban response`);return e})}function de(e){if(!Array.isArray(e))throw G(`Invalid API key response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||!K(e.scopes)||typeof e.createdAt!=`string`)throw G(`Invalid API key response`);return e})}function fe(e){if(!Array.isArray(e))throw G(`Invalid network pools response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.kind!=`string`||typeof e.endpoint!=`string`||![`active`,`cooldown`,`disabled`].includes(e.status))throw G(`Invalid network pool response`);return e})}function pe(e){return e.signal}export{x as C,R as S,pe as _,ue as a,H as b,fe as c,J as d,ne as f,X as g,re as h,se as i,le as l,ie as m,ae as n,ce as o,Z as p,q as r,$ as s,de as t,oe as u,U as v,b as w,z as x,B as y};
1
+ import{o as e,r as t,t as n}from"./jsx-runtime-CXUMngI_.js";import{A as r,F as i,I as a,M as o,N as s,O as c,T as l,b as u,j as d,p as f,u as p,v as m,x as h,y as g}from"./query-keys-D7wX2vM5.js";var _=e(t(),1),v=n(),y=_.createContext(void 0),b=e=>{let t=_.useContext(y);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},x=({client:e,children:t})=>(_.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,v.jsx)(y.Provider,{value:e,children:t})),S=class extends u{#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=new Set;constructor(e,t){super(),this.options=t,this.#e=e,this.#o=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),w(this.#t,this.options)?this.#m():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return T(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return T(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof d(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!o(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&E(this.#t,n,this.options,t)&&this.#m(),this.updateResult(),r&&(this.#t!==n||d(this.options.enabled,this.#t)!==d(t.enabled,this.#t)||d(this.options.staleTime,this.#t)!==d(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||d(this.options.enabled,this.#t)!==d(t.enabled,this.#t)||i!==this.#f)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return o(this.getCurrentResult(),n)||(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),Reflect.get(e,n))})}trackProp(e){this.#p.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t),r=()=>{},i,a=new Promise(e=>{i=e,r=this.#e.getQueryCache().subscribe(i=>{i.type===`updated`&&i.query.queryHash===n.queryHash&&n.state.data!==void 0&&(r(),e(this.createResult(n,t)))})});return Promise.race([n.fetch().then(()=>{let e=this.createResult(n,t);return i?.(e),e}).finally(()=>{r()}),a])}fetch(e){return this.#m({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#m(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(c)),t}#h(e){return!h()&&d(this.options.enabled,this.#t)!==!1&&l(e)}#g(){this.#b();let e=d(this.options.staleTime,this.#t);if(this.#r.isStale||!this.#h(e))return;let t=i(this.#r.dataUpdatedAt,e)+1;this.#u=a.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#f=e,this.#f!==0&&this.#h(this.#f)&&(this.#d=a.setInterval(()=>{(this.options.refetchIntervalInBackground||g.isFocused())&&this.#m()},this.#f))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#u!==void 0&&(a.clearTimeout(this.#u),this.#u=void 0)}#x(){this.#d!==void 0&&(a.clearInterval(this.#d),this.#d=void 0)}createResult(e,t){let n=this.#t,i=this.options,a=this.#r,o=this.#i,s=this.#a,c=e===n?this.#n:e.state,{state:l}=e,u={...l},p=!1,m;if(t._optimisticResults){let r=this.hasListeners(),a=!r&&w(e,t),o=r&&E(e,n,t,i);(a||o)&&(u={...u,...f(l.data,e.options)}),t._optimisticResults===`isRestoring`&&(u.fetchStatus=`idle`)}let{error:h,errorUpdatedAt:g,status:_}=u;m=u.data;let v=!1;if(t.placeholderData!==void 0&&m===void 0&&_===`pending`){let e;a?.isPlaceholderData&&t.placeholderData===s?.placeholderData?(e=a.data,v=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#l?.state.data,this.#l):t.placeholderData,e!==void 0&&(_=`success`,m=r(a?.data,e,t),p=!0)}if(t.select&&m!==void 0&&!v){if(a&&m===o?.data&&t.select===this.#s)m=this.#c;else try{this.#s=t.select,m=t.select(m),m=r(a?.data,m,t),this.#c=m,this.#o=null}catch(e){this.#o=e}}else m===void 0&&(this.#o=null);this.#o&&(h=this.#o,m=this.#c,g=Date.now(),_=`error`,p=!1);let y=u.fetchStatus===`fetching`,b=_===`pending`,x=_===`error`,S=b&&y,C=m!==void 0;return{status:_,fetchStatus:u.fetchStatus,isPending:b,isSuccess:_===`success`,isError:x,isInitialLoading:S,isLoading:S,data:m,dataUpdatedAt:u.dataUpdatedAt,error:h,errorUpdatedAt:g,failureCount:u.fetchFailureCount,failureReason:u.fetchFailureReason,errorUpdateCount:u.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:u.dataUpdateCount>c.dataUpdateCount||u.errorUpdateCount>c.errorUpdateCount,isFetching:y,isRefetching:y&&!b,isLoadingError:x&&!C,isPaused:u.fetchStatus===`paused`,isPlaceholderData:p,isRefetchError:x&&C,isStale:D(e,t),refetch:this.refetch,isEnabled:d(t.enabled,e)!==!1}}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);if(this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#l=this.#t),o(t,e))return;this.#r=t;let n=(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#p.size)return!0;let r=new Set(n??this.#p);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})();m.batch(()=>{n&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}};function C(e,t){return d(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||d(t.retryOnMount,e)!==!1)}function w(e,t){return C(e,t)||e.state.data!==void 0&&T(e,t,t.refetchOnMount)}function T(e,t,n){if(d(t.enabled,e)!==!1&&d(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&D(e,t)}return!1}function E(e,t,n,r){return(e!==t||d(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&D(e,n)}function D(e,t){return d(t.enabled,e)!==!1&&e.isStaleByTime(d(t.staleTime,e))}var O=_.createContext(!1),k=()=>_.useContext(O);O.Provider;function A(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var j=_.createContext(A()),M=()=>_.useContext(j),N=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?s(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||r)&&(t.isReset()||(e.retryOnMount=!1))},ee=e=>{_.useEffect(()=>{e.clearReset()},[e])},te=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||s(n,[e.error,r])),P=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},F=(e,t)=>e?.suspense&&t.isPending,I=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function L(e,t,n){let r=k(),i=M(),a=b(n),o=a.defaultQueryOptions(e),s=a.getQueryCache().get(o.queryHash),l=e.subscribed!==!1;o._optimisticResults=r?`isRestoring`:l?`optimistic`:void 0,P(o),N(o,i,s),ee(i);let[u]=_.useState(()=>new t(a,o)),d=u.getOptimisticResult(o),f=!r&&l;if(_.useSyncExternalStore(_.useCallback(e=>{let t=f?u.subscribe(m.batchCalls(e)):c;return u.updateResult(),t},[u,f]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),_.useEffect(()=>{u.setOptions(o)},[o,u]),F(o,d))throw I(o,u,i);if(te({result:d,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw d.error;return o.notifyOnChangeProps?d:u.trackResult(d)}function R(e,t){return L(e,S,t)}var z=[`model`,`provider`,`key`,`client`,`client_ip`],B=[{id:`9router`,label:`Compatible AI router`,signals:[{field:`x-msh-platform`,equals:`9router`,description:`Platform fingerprint header`},{field:`x-client-type`,equals:`9router`,description:`Client-type fingerprint header`},{field:`user-agent`,pattern:/(^|[^a-z0-9])9router([^a-z0-9]|$)/i,description:`User-Agent fingerprint`},{field:`x-omniroute-peer-trace`,description:`Peer-trace fingerprint header`},{field:`x-omniroute-fallback-hint`,description:`Fallback-hint fingerprint header`},{field:`user-agent`,equals:`mozilla/5.0 (compatible; openai compatible)`,description:`Rewritten OpenAI-compatible User-Agent`},{field:`user-agent`,pattern:/^node(?:\/[\w.+-]+)?$/i,description:`Node's default User-Agent, sent bare by this router`}]}],V={omniroute:`9router`};function H(e){let t=e.trim().toLowerCase();return B.some(e=>e.id===t)?t:V[t]}Object.freeze(B.map(e=>e.id));var U=[`cloudflare`,`vercel`,`deno`];function W(e){return typeof e==`number`&&Number.isFinite(e)}function G(e){return{status:500,code:`invalid_response`,message:e}}function K(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}function q(e){if(e===null)return null;if(!p(e)||typeof e.tag_name!=`string`||typeof e.html_url!=`string`)throw G(`Invalid release response`);return{tag_name:e.tag_name,html_url:e.html_url}}function J(e){if(!p(e)||![`healthy`,`degraded`,`unhealthy`].includes(e.status)||![`uptime_seconds`,`memory_bytes`,`memory_heap_bytes`,`memory_external_bytes`,`memory_percent`,`cpu_percent`,`request_count`,`error_count`,`latency_avg_ms`,`latency_p95_ms`,`latency_p99_ms`].every(t=>W(e[t]))||typeof e.database_healthy!=`boolean`||typeof e.redis_healthy!=`boolean`||typeof e.redis_configured!=`boolean`||typeof e.database_in_process!=`boolean`)throw G(`Invalid system health response`);return e}function Y(e){return e===void 0||W(e)}function X(e){if(!p(e)||typeof e.period!=`string`||!p(e.totals))throw G(`Invalid usage summary response`);let t=e.totals;if(![`requests`,`inputTokens`,`cachedTokens`,`outputTokens`,`errors`,`cancelled`,`truncated`,`avgResolveMs`,`avgDurationMs`,`latencyP50Ms`,`latencyP95Ms`,`latencyP99Ms`,`latencySampleCount`,`resolveSampleCount`,`estimatedCostUsd`,`cacheHitRate`].every(e=>W(t[e]))||typeof t.partial!=`boolean`)throw G(`Invalid usage summary response`);if(!Array.isArray(t.statusCounts)||!t.statusCounts.every(e=>p(e)&&W(e.status)&&W(e.count)))throw G(`Invalid usage status counts`);return e}function Z(e){if(!p(e)||!Array.isArray(e.buckets))throw G(`Invalid usage chart response`);for(let t of e.buckets)if(!p(t)||typeof t.t!=`string`||![`requests`,`input`,`cached`,`output`].every(e=>W(t[e])))throw G(`Invalid usage chart response`);return e}function ne(e){if(!p(e)||!Array.isArray(e.rows)||!z.includes(String(e.dimension)))throw G(`Invalid usage breakdown response`);for(let t of e.rows)if(!p(t)||typeof t.name!=`string`||![`requests`,`input`,`output`,`cached`,`total`,`errors`].every(e=>W(t[e]))||!(t.costUsd===null||W(t.costUsd))||t.label!==void 0&&typeof t.label!=`string`)throw G(`Invalid usage breakdown response`);return e}function Q(e){if(!p(e)||typeof e.requestId!=`string`||typeof e.startedAt!=`string`||typeof e.status!=`string`||e.mode!==`stream`&&e.mode!==`non_stream`||e.accountId!==void 0&&typeof e.accountId!=`string`)throw G(`Invalid usage request response`);for(let t of[`endpoint`,`apiKeyId`,`userAgent`,`clientName`,`clientIp`])if(e[t]!==void 0&&typeof e[t]!=`string`)throw G(`Invalid usage request response`);for(let t of[`durationMs`,`inputTokens`,`outputTokens`,`cachedTokens`,`reasoningTokens`,`totalTokens`,`ttfbMs`,`tokensPerSec`,`estimatedCost`,`creditUsed`,`resolveMs`])if(!Y(e[t]))throw G(`Invalid usage request response`)}function re(e){if(!p(e)||!Array.isArray(e.items))throw G(`Invalid usage requests response`);for(let t of e.items)Q(t);return e}function ie(e){if(!p(e)||(Q(e),e.payloads!==void 0&&e.payloads!==null&&!p(e.payloads)))throw G(`Invalid usage request response`);if(e.payloadSignals!==void 0){if(!p(e.payloadSignals))throw G(`Invalid usage request response`);for(let t of[`toolCalls`,`images`,`attachments`]){let n=e.payloadSignals[t];if(typeof n!=`number`||!Number.isInteger(n)||n<0)throw G(`Invalid usage request response`)}}return e}function ae(e){if(!p(e)||!Array.isArray(e.entries))throw G(`Invalid audit response`);let t=e.entries.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.createdAt!=`string`||typeof e.actor!=`string`||typeof e.action!=`string`||typeof e.target!=`string`)throw G(`Invalid audit response`);return e});return typeof e.nextCursor==`string`?{entries:t,nextCursor:e.nextCursor}:{entries:t}}function oe(e){if(!Array.isArray(e))throw G(`Invalid provider response`);return e.map(e=>{if(!p(e)||typeof e.providerId!=`string`||typeof e.displayName!=`string`||typeof e.enabled!=`boolean`||typeof e.isBuiltIn!=`boolean`)throw G(`Invalid provider response`);let t=e.serviceKinds===void 0?[`llm`]:K(e.serviceKinds)&&e.serviceKinds.length>0?e.serviceKinds:void 0;if(t===void 0||t.includes(`all`))throw G(`Invalid provider service kinds`);return{...e,serviceKinds:t}})}function $(e){if(!Array.isArray(e))throw G(`Invalid model response`);return e.map(e=>{if(!p(e)||typeof e.modelId!=`string`||typeof e.route!=`string`||typeof e.provider!=`string`)throw G(`Invalid model response`);return e})}function se(e){if(!Array.isArray(e))throw G(`Invalid model alias response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.tenantId!=`string`||typeof e.alias!=`string`||typeof e.targetModel!=`string`||typeof e.createdAt!=`string`||typeof e.updatedAt!=`string`)throw G(`Invalid model alias response`);return e})}function ce(e){if(!Array.isArray(e))throw G(`Invalid model combo response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.tenantId!=`string`||typeof e.name!=`string`||!K(e.members)||typeof e.strategy!=`string`||typeof e.createdAt!=`string`||typeof e.updatedAt!=`string`)throw G(`Invalid model combo response`);return e})}function le(e){if(!p(e)||typeof e.providerId!=`string`||typeof e.strategy!=`string`||typeof e.rotateCount!=`number`||e.rotateCount<1||e.rotateCount>1e3||typeof e.enabled!=`boolean`||e.maxInflight!==null&&typeof e.maxInflight!=`number`||e.maxInflightPerProxy!==null&&e.maxInflightPerProxy!==void 0&&typeof e.maxInflightPerProxy!=`number`||e.usageFloor!==null&&e.usageFloor!==void 0&&typeof e.usageFloor!=`number`||e.usageFloorUnit!==void 0&&e.usageFloorUnit!==`credit`&&e.usageFloorUnit!==`percent`||typeof e.skipProxy!=`boolean`||typeof e.userAgent!=`string`||e.userAgent.length>4096)throw G(`Invalid provider routing response`);return e}function ue(e){if(!p(e)||!Array.isArray(e.bans))throw G(`Invalid model ban response`);return e.bans.map(e=>{if(!p(e)||typeof e.ip!=`string`||e.reason!==`repeated_invalid_model_requests`||!W(e.expiresAt))throw G(`Invalid model ban response`);return e})}function de(e){if(!Array.isArray(e))throw G(`Invalid API key response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||!K(e.scopes)||typeof e.createdAt!=`string`)throw G(`Invalid API key response`);return e})}function fe(e){if(!Array.isArray(e))throw G(`Invalid network pools response`);return e.map(e=>{if(!p(e)||typeof e.id!=`string`||typeof e.kind!=`string`||typeof e.endpoint!=`string`||![`active`,`cooldown`,`disabled`].includes(e.status))throw G(`Invalid network pool response`);return e})}function pe(e){return e.signal}export{x as C,R as S,pe as _,ue as a,H as b,fe as c,J as d,ne as f,X as g,re as h,se as i,le as l,ie as m,ae as n,ce as o,Z as p,q as r,$ as s,de as t,oe as u,U as v,b as w,z as x,B as y};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CXUMngI_.js";import{i as t}from"./toast-DKAdP2mo.js";var n=e(),r={default:`badge-default bg-hover text-text-secondary border border-inner-border`,ok:`badge-ok bg-green-soft text-green`,active:`badge-active bg-green-soft text-green`,err:`badge-err bg-red-soft text-red`,disabled:`badge-disabled bg-red-soft text-red`,warn:`badge-warn bg-orange-soft text-orange`,cooldown:`badge-warn bg-orange-soft text-orange`,info:`badge-info bg-teal-soft text-teal`,accent:`badge-accent bg-accent-soft text-accent`,purple:`badge-accent bg-accent-soft text-accent`,teal:`badge-info bg-teal-soft text-teal`,green:`badge-ok bg-green-soft text-green`,blue:`badge-info bg-status-info-soft text-status-info`,orange:`badge-warn bg-orange-soft text-orange`};function i({tone:e=`default`,dot:i=!1,className:a=``,children:o,...s}){return(0,n.jsxs)(`span`,{className:t(`badge inline-flex items-center gap-2.5 rounded-chip px-4.5 py-1.5 text-badge font-semibold whitespace-nowrap`,r[e],a),...s,children:[i?(0,n.jsx)(`span`,{className:`status-indicator-dot bg-current`,"aria-hidden":`true`}):null,o]})}export{i as t};
1
+ import{t as e}from"./jsx-runtime-CXUMngI_.js";import{a as t}from"./toast-C76WrMhc.js";var n=e(),r={default:`badge-default bg-hover text-text-secondary border border-inner-border`,ok:`badge-ok bg-green-soft text-green`,active:`badge-active bg-green-soft text-green`,err:`badge-err bg-red-soft text-red`,disabled:`badge-disabled bg-red-soft text-red`,warn:`badge-warn bg-orange-soft text-orange`,cooldown:`badge-warn bg-orange-soft text-orange`,info:`badge-info bg-teal-soft text-teal`,accent:`badge-accent bg-accent-soft text-accent`,purple:`badge-accent bg-accent-soft text-accent`,teal:`badge-info bg-teal-soft text-teal`,green:`badge-ok bg-green-soft text-green`,blue:`badge-info bg-status-info-soft text-status-info`,orange:`badge-warn bg-orange-soft text-orange`};function i({tone:e=`default`,dot:i=!1,className:a=``,children:o,...s}){return(0,n.jsxs)(`span`,{className:t(`badge inline-flex items-center gap-2.5 rounded-chip px-4.5 py-1.5 text-badge font-semibold whitespace-nowrap`,r[e],a),...s,children:[i?(0,n.jsx)(`span`,{className:`status-indicator-dot bg-current`,"aria-hidden":`true`}):null,o]})}export{i as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CXUMngI_.js";import{i as t}from"./toast-DKAdP2mo.js";var n=e();function r({tone:e,surface:r=`page`,live:i=`none`,className:a,children:o}){return(0,n.jsx)(`div`,{role:i===`none`?void 0:i,"aria-live":i===`status`?`polite`:void 0,"data-tone":e,"data-surface":r,className:t(`banner rounded-control border px-5 py-4 text-caption`,a),children:o})}export{r as t};
1
+ import{t as e}from"./jsx-runtime-CXUMngI_.js";import{a as t}from"./toast-C76WrMhc.js";var n=e();function r({tone:e,surface:r=`page`,live:i=`none`,className:a,children:o}){return(0,n.jsx)(`div`,{role:i===`none`?void 0:i,"aria-live":i===`status`?`polite`:void 0,"data-tone":e,"data-surface":r,className:t(`banner rounded-control border px-5 py-4 text-caption`,a),children:o})}export{r as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CXUMngI_.js";import{i as t}from"./toast-DKAdP2mo.js";var n=e(),r={solid:`card-solid bg-surface-1`,glass:`card-glass bg-glass-bg`,muted:`card-muted bg-surface-2`},i={none:`card-elevation-none shadow-none`,card:`card-elevation-card shadow-card`,popout:`card-elevation-popout shadow-popout`};function a({glass:e=!1,surface:t=`solid`}){return e?r.glass:r[t]}function o({className:e=``,glass:r,density:o,surface:s,interactive:c=!1,depth:l,elevation:u,children:d,...f}){return(0,n.jsx)(`div`,{className:t(`border border-inner-border rounded-card leading-normal`,a({glass:r,surface:s}),`shadow-card`,o===`compact`&&`card-compact leading-[1.35]`,c&&`transition-[transform,border-color,box-shadow] duration-150 ease-spring hover:-translate-y-0.5 hover:shadow-card`,u!==void 0&&i[u],e),"data-depth":l,...f,children:d})}function s({title:e,subtitle:r,subtitleAddon:i,icon:a,leading:o,action:s,className:c=``}){return(0,n.jsxs)(`div`,{className:t(`card-header-bar`,c),children:[(0,n.jsxs)(`div`,{className:`card-header-left`,children:[o?(0,n.jsx)(`div`,{className:`card-header-leading`,children:o}):null,a?(0,n.jsx)(`div`,{className:`card-header-icon`,children:a}):null,(0,n.jsxs)(`div`,{className:`card-header-titles`,children:[(0,n.jsx)(`h2`,{className:`card-header-title`,children:e}),r||i?(0,n.jsxs)(`div`,{className:`card-header-subtitle-row`,children:[r?(0,n.jsx)(`p`,{className:`card-header-subtitle`,children:r}):null,i]}):null]})]}),s?(0,n.jsx)(`div`,{className:`card-header-action`,children:s}):null]})}function c({className:e=``,children:r,...i}){return(0,n.jsx)(`div`,{className:t(`card-body-content`,e),...i,children:r})}export{c as n,s as r,o as t};
1
+ import{t as e}from"./jsx-runtime-CXUMngI_.js";import{a as t}from"./toast-C76WrMhc.js";var n=e(),r={solid:`card-solid bg-surface-1`,glass:`card-glass bg-glass-bg`,muted:`card-muted bg-surface-2`},i={none:`card-elevation-none shadow-none`,card:`card-elevation-card shadow-card`,popout:`card-elevation-popout shadow-popout`};function a({glass:e=!1,surface:t=`solid`}){return e?r.glass:r[t]}function o({className:e=``,glass:r,density:o,surface:s,interactive:c=!1,depth:l,elevation:u,children:d,...f}){return(0,n.jsx)(`div`,{className:t(`border border-inner-border rounded-card leading-normal`,a({glass:r,surface:s}),`shadow-card`,o===`compact`&&`card-compact leading-[1.35]`,c&&`transition-[transform,border-color,box-shadow] duration-150 ease-spring hover:-translate-y-0.5 hover:shadow-card`,u!==void 0&&i[u],e),"data-depth":l,...f,children:d})}function s({title:e,subtitle:r,subtitleAddon:i,icon:a,leading:o,action:s,className:c=``}){return(0,n.jsxs)(`div`,{className:t(`card-header-bar`,c),children:[(0,n.jsxs)(`div`,{className:`card-header-left`,children:[o?(0,n.jsx)(`div`,{className:`card-header-leading`,children:o}):null,a?(0,n.jsx)(`div`,{className:`card-header-icon`,children:a}):null,(0,n.jsxs)(`div`,{className:`card-header-titles`,children:[(0,n.jsx)(`h2`,{className:`card-header-title`,children:e}),r||i?(0,n.jsxs)(`div`,{className:`card-header-subtitle-row`,children:[r?(0,n.jsx)(`p`,{className:`card-header-subtitle`,children:r}):null,i]}):null]})]}),s?(0,n.jsx)(`div`,{className:`card-header-action`,children:s}):null]})}function c({className:e=``,children:r,...i}){return(0,n.jsx)(`div`,{className:t(`card-body-content`,e),...i,children:r})}export{c as n,s as r,o as t};
@@ -0,0 +1 @@
1
+ import{S as e,_ as t,w as n}from"./assert-7J6_LVD3.js";import{i as r,n as i,o as a,t as o}from"./query-keys-D7wX2vM5.js";import{t as s}from"./useMutation-D87FZwH0.js";function c(){return e({queryKey:o.cliTools.registry,queryFn:e=>a(`/cli-tools/registry`,{signal:t(e)}),...r,staleTime:i.effectivelyImmutable})}function l(){return e({queryKey:o.cliTools.statuses,queryFn:e=>a(`/cli-tools/all-statuses`,{signal:t(e)}),...r})}function u(n,i){return e({queryKey:o.cliTools.mappings(n,i),queryFn:e=>a(`/cli-tools/${encodeURIComponent(n)}/mappings?keyId=${encodeURIComponent(i)}`,{signal:t(e)}),enabled:n.length>0&&i.length>0,...r})}function d(){let e=n();return s({mutationFn:({toolId:e,keyId:t,input:n})=>a(`/cli-tools/${encodeURIComponent(e)}/mappings`,{method:`POST`,body:JSON.stringify({...n,keyId:t})}),onSuccess:async(t,{toolId:n,keyId:r})=>{await e.invalidateQueries({queryKey:o.cliTools.mappings(n,r)})}})}function f(){let e=n();return s({mutationFn:({toolId:e,keyId:t})=>a(`/cli-tools/${encodeURIComponent(e)}/mappings/reset`,{method:`POST`,body:JSON.stringify({keyId:t})}),onSuccess:async(t,{toolId:n,keyId:r})=>{await e.invalidateQueries({queryKey:o.cliTools.mappings(n,r)})}})}function p(){let e=n();return s({mutationFn:({toolId:e,keyId:t,input:n})=>a(`/cli-tools/${encodeURIComponent(e)}/download`,{method:`POST`,body:JSON.stringify({...n,models:n.modelIds,keyId:t})}),onSuccess:async(t,{toolId:n,keyId:r})=>{await Promise.all([e.invalidateQueries({queryKey:o.cliTools.statuses}),e.invalidateQueries({queryKey:o.cliTools.mappings(n,r)})])}})}export{c as a,u as i,f as n,l as o,d as r,p as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./jsx-runtime-CXUMngI_.js";import{t as n}from"./check-D69FzdvC.js";import{r,t as i}from"./toast-C76WrMhc.js";import{t as a}from"./copy-ngmQ9zcZ.js";import{t as o}from"./use-clipboard-B0Sy03fE.js";var s=e(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),c=e(`sticky-note`,[[`path`,{d:`M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z`,key:`1dfntj`}],[`path`,{d:`M15 3v5a1 1 0 0 0 1 1h5`,key:`6s6qgf`}]]),l=t();function u({value:e,label:t=`Copy`,copiedLabel:s=`Copied`,unavailableMessage:c=`Clipboard unavailable on this origin`,...u}){let{copied:d,copy:f}=o(),p=async()=>{await f(e)||i.error(c)};return(0,l.jsx)(r,{...u,icon:d?(0,l.jsx)(n,{size:13}):(0,l.jsx)(a,{size:13}),onClick:()=>void p(),children:d?s:t})}export{c as n,s as r,u as t};
@@ -1 +1 @@
1
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,c as a,o}from"./app-BDJWMThu.js";import{i as s}from"./toast-DKAdP2mo.js";import{n as c,t as l}from"./use-presence-BSZEBx7U.js";var u=e(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),d=t(n(),1),f=t(a(),1),p=r(),m=`traffic-light grid size-7 cursor-pointer place-items-center rounded-pill border-none p-0 transition-transform duration-(--dur-micro) ease-standard hover:scale-112 focus-visible:outline-2 focus-visible:outline-current focus-visible:outline-offset-2`,h={sm:420,md:640,lg:880,xl:960};function g({open:e,onClose:t,title:n,description:r,children:a,width:g=520,size:_,footer:v}){let y=(0,d.useRef)(null),b=(0,d.useId)(),x=(0,d.useId)(),{mounted:S,closing:C}=l(e),[w,T]=(0,d.useState)(!1),[E,D]=(0,d.useState)(!1);return i({open:e,mounted:S,panelRef:y,onClose:t}),(0,d.useEffect)(()=>{S&&window.dispatchEvent(new CustomEvent(`cartethyia:overlay-open`))},[S]),(0,d.useEffect)(()=>{e&&(T(!1),D(!1))},[e]),S?(0,f.createPortal)((0,p.jsx)(`div`,{className:s(`dialog-overlay scroll-region fixed inset-0 z-drawer box-border flex items-center justify-center overflow-y-auto bg-overlay p-8 backdrop-blur-dialog max-small:p-6`,C&&`closing pointer-events-none`),onClick:e=>{e.target===e.currentTarget&&t()},role:`presentation`,children:(0,p.jsxs)(`div`,{ref:y,tabIndex:-1,className:s(`dialog-panel modal-window m-auto box-border flex flex-col overflow-hidden rounded-sidebar border border-border-strong bg-surface-1 shadow-window`,C&&`closing`,E&&`expanded`),style:E?void 0:{"--dialog-width":`${_===void 0?g:h[_]}px`},role:`dialog`,"aria-modal":`true`,"aria-labelledby":b,"aria-describedby":r?x:void 0,onKeyDown:e=>{if(e.key!==`Enter`||e.shiftKey||e.nativeEvent.isComposing||e.target instanceof HTMLTextAreaElement)return;let t=e.currentTarget.querySelector(`.modal-footer .btn-primary, .modal-footer .btn-danger`);t instanceof HTMLButtonElement&&!t.disabled&&(e.preventDefault(),t.click())},children:[(0,p.jsxs)(`div`,{className:`modal-header flex items-center justify-between gap-6 border-b border-inner-border px-9 py-7`,children:[(0,p.jsxs)(`div`,{className:`window-traffic-lights flex shrink-0 items-center gap-4`,role:`group`,"aria-label":`Window controls`,children:[(0,p.jsx)(`button`,{type:`button`,className:s(m,`traffic-light-close bg-window-close text-window-close-ink`),onClick:t,"aria-label":`Close dialog`,title:`Close`,children:(0,p.jsx)(o,{size:9,strokeWidth:2.5,"aria-hidden":`true`})}),(0,p.jsx)(`button`,{type:`button`,className:s(m,`traffic-light-minimize bg-window-minimize text-window-minimize-ink`),onClick:()=>T(e=>!e),"aria-label":w?`Restore dialog`:`Minimize dialog`,title:w?`Restore`:`Minimize`,children:(0,p.jsx)(u,{size:9,strokeWidth:2.5,"aria-hidden":`true`})}),(0,p.jsx)(`button`,{type:`button`,className:s(m,`traffic-light-expand bg-window-expand text-window-expand-ink`),onClick:()=>{D(e=>!e),T(!1)},"aria-label":E?`Restore dialog size`:`Expand dialog`,title:E?`Restore`:`Expand`,children:(0,p.jsx)(c,{size:8,strokeWidth:2.5,"aria-hidden":`true`})})]}),(0,p.jsx)(`h3`,{id:b,className:`modal-title min-w-0 flex-1 overflow-hidden text-center text-lead font-bold text-text-primary text-ellipsis whitespace-nowrap`,children:n}),(0,p.jsx)(`span`,{className:`window-traffic-lights-spacer w-29 shrink-0`,"aria-hidden":`true`})]}),w?null:(0,p.jsx)(`div`,{className:`modal-body scroll-region min-h-0 flex-auto overflow-y-auto px-9 py-8`,children:a}),w||v===void 0?null:(0,p.jsx)(`div`,{className:`modal-footer flex shrink-0 items-center justify-end gap-4 border-t border-inner-border px-9 py-6`,children:v}),r?(0,p.jsx)(`p`,{id:x,className:`sr-only`,children:r}):null]})}),document.body):null}export{u as n,g as t};
1
+ import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{o as i}from"./app-Cjq7nrwu.js";import{a,n as o,p as s}from"./toast-C76WrMhc.js";import{n as c,t as l}from"./use-presence-BSZEBx7U.js";var u=e(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),d=t(n(),1),f=t(i(),1),p=r(),m=`traffic-light grid size-7 cursor-pointer place-items-center rounded-pill border-none p-0 transition-transform duration-(--dur-micro) ease-standard hover:scale-112 focus-visible:outline-2 focus-visible:outline-current focus-visible:outline-offset-2`,h={sm:420,md:640,lg:880,xl:960};function g({open:e,onClose:t,title:n,description:r,children:i,width:g=520,size:_,footer:v}){let y=(0,d.useRef)(null),b=(0,d.useId)(),x=(0,d.useId)(),{mounted:S,closing:C}=l(e),[w,T]=(0,d.useState)(!1),[E,D]=(0,d.useState)(!1);return o({open:e,mounted:S,panelRef:y,onClose:t}),(0,d.useEffect)(()=>{S&&window.dispatchEvent(new CustomEvent(`cartethyia:overlay-open`))},[S]),(0,d.useEffect)(()=>{e&&(T(!1),D(!1))},[e]),S?(0,f.createPortal)((0,p.jsx)(`div`,{className:a(`dialog-overlay scroll-region fixed inset-0 z-drawer box-border flex items-center justify-center overflow-y-auto bg-overlay p-8 backdrop-blur-dialog max-small:p-6`,C&&`closing pointer-events-none`),onClick:e=>{e.target===e.currentTarget&&t()},role:`presentation`,children:(0,p.jsxs)(`div`,{ref:y,tabIndex:-1,className:a(`dialog-panel modal-window m-auto box-border flex flex-col overflow-hidden rounded-sidebar border border-border-strong bg-surface-1 shadow-window`,C&&`closing`,E&&`expanded`),style:E?void 0:{"--dialog-width":`${_===void 0?g:h[_]}px`},role:`dialog`,"aria-modal":`true`,"aria-labelledby":b,"aria-describedby":r?x:void 0,onKeyDown:e=>{if(e.key!==`Enter`||e.shiftKey||e.nativeEvent.isComposing||e.target instanceof HTMLTextAreaElement)return;let t=e.currentTarget.querySelector(`.modal-footer .btn-primary, .modal-footer .btn-danger`);t instanceof HTMLButtonElement&&!t.disabled&&(e.preventDefault(),t.click())},children:[(0,p.jsxs)(`div`,{className:`modal-header flex items-center justify-between gap-6 border-b border-inner-border px-9 py-7`,children:[(0,p.jsxs)(`div`,{className:`window-traffic-lights flex shrink-0 items-center gap-4`,role:`group`,"aria-label":`Window controls`,children:[(0,p.jsx)(`button`,{type:`button`,className:a(m,`traffic-light-close bg-window-close text-window-close-ink`),onClick:t,"aria-label":`Close dialog`,title:`Close`,children:(0,p.jsx)(s,{size:9,strokeWidth:2.5,"aria-hidden":`true`})}),(0,p.jsx)(`button`,{type:`button`,className:a(m,`traffic-light-minimize bg-window-minimize text-window-minimize-ink`),onClick:()=>T(e=>!e),"aria-label":w?`Restore dialog`:`Minimize dialog`,title:w?`Restore`:`Minimize`,children:(0,p.jsx)(u,{size:9,strokeWidth:2.5,"aria-hidden":`true`})}),(0,p.jsx)(`button`,{type:`button`,className:a(m,`traffic-light-expand bg-window-expand text-window-expand-ink`),onClick:()=>{D(e=>!e),T(!1)},"aria-label":E?`Restore dialog size`:`Expand dialog`,title:E?`Restore`:`Expand`,children:(0,p.jsx)(c,{size:8,strokeWidth:2.5,"aria-hidden":`true`})})]}),(0,p.jsx)(`h3`,{id:b,className:`modal-title min-w-0 flex-1 overflow-hidden text-center text-lead font-bold text-text-primary text-ellipsis whitespace-nowrap`,children:n}),(0,p.jsx)(`span`,{className:`window-traffic-lights-spacer w-29 shrink-0`,"aria-hidden":`true`})]}),w?null:(0,p.jsx)(`div`,{className:`modal-body scroll-region min-h-0 flex-auto overflow-y-auto px-9 py-8`,children:i}),w||v===void 0?null:(0,p.jsx)(`div`,{className:`modal-footer flex shrink-0 items-center justify-end gap-4 border-t border-inner-border px-9 py-6`,children:v}),r?(0,p.jsx)(`p`,{id:x,className:`sr-only`,children:r}):null]})}),document.body):null}export{u as n,g as t};
@@ -1 +1 @@
1
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,c as a,o}from"./app-BDJWMThu.js";import{i as s}from"./toast-DKAdP2mo.js";import{t as c}from"./use-presence-BSZEBx7U.js";var l=e(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),u=e(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),d=e(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),f=t(a(),1),p=t(n(),1),m=r();function h({open:e,onClose:t,title:n,children:r}){let a=(0,p.useRef)(null),{mounted:l,closing:u}=c(e,220);return i({open:e,mounted:l,panelRef:a,onClose:t}),(0,p.useEffect)(()=>{l&&window.dispatchEvent(new CustomEvent(`cartethyia:overlay-open`))},[l]),l?(0,f.createPortal)((0,m.jsxs)(`div`,{className:s(`drawer-overlay fixed inset-0 z-drawer bg-overlay`,u&&`closing pointer-events-none`),"data-state":u?`closing`:`open`,children:[(0,m.jsx)(`button`,{type:`button`,"aria-label":`Close drawer`,className:`drawer-backdrop absolute inset-0 h-full w-full border-none bg-transparent p-0 cursor-default`,onClick:t}),(0,m.jsxs)(`aside`,{ref:a,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`dashboard-drawer-title`,tabIndex:-1,"data-state":u?`closing`:`open`,className:s(`drawer-panel absolute inset-y-4 right-4 left-auto box-border flex w-224 max-w-[calc(100vw-var(--spacing)*8)] min-w-0 flex-col overscroll-contain rounded-card border border-border-strong bg-surface-1 shadow-window`,`max-small:inset-0 max-small:h-dvh max-small:max-h-dvh max-small:w-screen max-small:max-w-full max-small:rounded-none max-small:border-none`,u&&`closing`),children:[(0,m.jsxs)(`div`,{className:`drawer-header flex min-w-0 items-center justify-between gap-6 px-8 pt-7 pb-5`,children:[(0,m.jsx)(`h2`,{id:`dashboard-drawer-title`,className:`drawer-title min-w-0 flex-1 truncate text-lead font-bold text-text-primary`,children:n}),(0,m.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Close drawer`,className:`drawer-close grid shrink-0 cursor-pointer place-items-center rounded-control border-none bg-transparent p-3 text-text-tertiary hover:bg-hover hover:text-text-primary`,children:(0,m.jsx)(o,{size:16})})]}),(0,m.jsx)(`div`,{className:`drawer-body scroll-region min-h-0 min-w-0 flex-1 overflow-x-hidden overflow-y-auto px-8 pb-8`,children:r})]})]}),document.body):null}export{l as i,d as n,u as r,h as t};
1
+ import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{o as i}from"./app-Cjq7nrwu.js";import{a,n as o,p as s}from"./toast-C76WrMhc.js";import{t as c}from"./use-presence-BSZEBx7U.js";var l=e(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),u=e(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),d=e(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),f=t(i(),1),p=t(n(),1),m=r();function h({open:e,onClose:t,title:n,children:r}){let i=(0,p.useRef)(null),{mounted:l,closing:u}=c(e,220);return o({open:e,mounted:l,panelRef:i,onClose:t}),(0,p.useEffect)(()=>{l&&window.dispatchEvent(new CustomEvent(`cartethyia:overlay-open`))},[l]),l?(0,f.createPortal)((0,m.jsxs)(`div`,{className:a(`drawer-overlay fixed inset-0 z-drawer bg-overlay`,u&&`closing pointer-events-none`),"data-state":u?`closing`:`open`,children:[(0,m.jsx)(`button`,{type:`button`,"aria-label":`Close drawer`,className:`drawer-backdrop absolute inset-0 h-full w-full border-none bg-transparent p-0 cursor-default`,onClick:t}),(0,m.jsxs)(`aside`,{ref:i,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`dashboard-drawer-title`,tabIndex:-1,"data-state":u?`closing`:`open`,className:a(`drawer-panel absolute inset-y-4 right-4 left-auto box-border flex w-224 max-w-[calc(100vw-var(--spacing)*8)] min-w-0 flex-col overscroll-contain rounded-card border border-border-strong bg-surface-1 shadow-window`,`max-small:inset-0 max-small:h-dvh max-small:max-h-dvh max-small:w-screen max-small:max-w-full max-small:rounded-none max-small:border-none`,u&&`closing`),children:[(0,m.jsxs)(`div`,{className:`drawer-header flex min-w-0 items-center justify-between gap-6 px-8 pt-7 pb-5`,children:[(0,m.jsx)(`h2`,{id:`dashboard-drawer-title`,className:`drawer-title min-w-0 flex-1 truncate text-lead font-bold text-text-primary`,children:n}),(0,m.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Close drawer`,className:`drawer-close grid shrink-0 cursor-pointer place-items-center rounded-control border-none bg-transparent p-3 text-text-tertiary hover:bg-hover hover:text-text-primary`,children:(0,m.jsx)(s,{size:16})})]}),(0,m.jsx)(`div`,{className:`drawer-body scroll-region min-h-0 min-w-0 flex-1 overflow-x-hidden overflow-y-auto px-8 pb-8`,children:r})]})]}),document.body):null}export{l as i,d as n,u as r,h as t};
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-BJlMVN4U.js","assets/jsx-runtime-CXUMngI_.js","assets/toast-C76WrMhc.js","assets/app-Cjq7nrwu.js","assets/app-BLCvGdzb.css","assets/log-in-BmRjy60c.js","assets/query-keys-D7wX2vM5.js","assets/input-B9oyU93y.js","assets/eye-off-Bk5g2luF.js","assets/eye-C_hawfH4.js","assets/SetupPage-VOYC_lIa.js","assets/layout-BArzXirQ.js","assets/backup-file-gdKIlg8U.js","assets/BannedPage-QhvbJB9o.js","assets/OverviewPage-CQxXbo2g.js","assets/model-bans-CSPQ9xB0.js","assets/assert-7J6_LVD3.js","assets/useMutation-D87FZwH0.js","assets/mutation-BkoLM5Ba.js","assets/fingerprint-pattern-BWuHtbW4.js","assets/check-D69FzdvC.js","assets/select-C9mMoEpJ.js","assets/chevron-right-BXIy5l3h.js","assets/SortableList-DpOTnGuH.js","assets/stack-Ca5HxI5i.js","assets/copy-ngmQ9zcZ.js","assets/download-A0SW9OCW.js","assets/gauge-BbIMy7MB.js","assets/state-CzUPfLXo.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-R_rArH8S.js","assets/use-clipboard-B0Sy03fE.js","assets/dialog-BWIP_EvW.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-C4_Gn_wq.js","assets/sparkles-BRaRUxAU.js","assets/trash-Cppn5c3R.js","assets/card-B0Bnx5CA.js","assets/download-dRFo5_Wu.js","assets/tokens-DDxMbSRL.js","assets/badge-BTyGk_DL.js","assets/ModelPicker-Br3CXEau.js","assets/ProviderIcon-paOCq8I0.js","assets/switch-DOUIky_i.js","assets/inline-D1TCqM2D.js","assets/api-keys-BETfaMYZ.js","assets/cli-tools-DE2ug812.js","assets/quota-DZGyp0N5.js","assets/UsagePage-BAFaSDQV.js","assets/terminal-Bd4ee8TA.js","assets/drawer-BKcgVugF.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/numbers-CFL4_Dqc.js","assets/use-timeout-BwcBBRrT.js","assets/banner-bujTWYM4.js","assets/live-EmuIayqp.js","assets/stream-retry-5QnVuSSo.js","assets/ProviderDetailPage--0RBNh99.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-BVZzaoHF.js","assets/routing-BExgxxBU.js","assets/HealthEventsModal-CZkpn0a7.js","assets/privacy-mode-GM8bej85.js","assets/AccountCooldown-ChpdzxRH.js","assets/ProvidersPage-1M-C3mbu.js","assets/dialog-actions-B1axpEg7.js","assets/CombosPage-Cak0ljnO.js","assets/arrow-right-Dl5yKnp8.js","assets/QuotaPage-BGDIfIYP.js","assets/sliders-horizontal-ClG7dBeJ.js","assets/ProxyPage-CXiumA53.js","assets/SettingsPage-BHW4Zt06.js","assets/CliToolsPage-DyNXefph.js","assets/ToolIcon-K1ckcDKg.js","assets/CliToolDetailPage-Bcy150Jo.js","assets/ConsoleLogPage-CATpAEOz.js","assets/CustomizationPage-D6jEU7nL.js","assets/StudioPage-BNIDLiU6.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-D70pChfn.js";import{a,o,r as s,t as c}from"./app-Cjq7nrwu.js";import{n as l,r as u,t as d}from"./terminal-Bd4ee8TA.js";import{_ as f,c as p,d as m,g as h,h as g,l as _,m as v,p as y,r as b,s as ee,t as x,u as te,v as ne,y as re}from"./toast-C76WrMhc.js";import{t as ie}from"./dialog-BWIP_EvW.js";import{C as ae,S,_ as C,c as oe,d as se,f as ce,g as le,h as ue,m as de,n as fe,p as pe,r as me,s as he,t as ge,u as _e,w}from"./assert-7J6_LVD3.js";import{C as ve,D as ye,E as be,O as T,P as xe,S as Se,_ as Ce,a as E,b as we,c as Te,d as Ee,f as De,g as Oe,i as D,j as ke,k as Ae,l as O,o as k,r as je,t as A,v as j,w as Me,y as Ne}from"./query-keys-D7wX2vM5.js";import{t as Pe}from"./mutation-BkoLM5Ba.js";import{t as M}from"./useMutation-D87FZwH0.js";import{t as Fe}from"./dialog-actions-B1axpEg7.js";var Ie=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`}]]),Le=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`}]]),Re=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`}]]),ze=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`}]]),Be=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`}]]),Ve=e(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),He=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`}]]),Ue=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`}]]),We=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`}]]),Ge=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`}]]),Ke=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`}]]),qe=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`}]]),Je=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`}]]),Ye=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 Xe(e){let t;if(e.then(e=>(t=e,e),T)?.catch?.(T),t!==void 0)return{data:t}}function Ze(e){return{mutationKey:e.options.mutationKey,state:e.state,...e.options.scope&&{scope:e.options.scope},...e.meta&&{meta:e.meta}}}function Qe(e,t,n){let r=e.promise?.then(t).catch(e=>n?.(e)===!1?Promise.reject(e):Promise.reject(Error(`redacted`)));return r?.catch(T),r}function $e(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:Qe(e,t,n)},...e.meta&&{meta:e.meta},...e.queryType&&{queryType:e.queryType}}}function et(e){return e.state.isPaused}function tt(e){return e.state.status===`success`}function nt(e,t={}){let n=t.shouldDehydrateMutation??e.getDefaultOptions().dehydrate?.shouldDehydrateMutation??et,r=e.getMutationCache().getAll().flatMap(e=>n(e)?[Ze(e)]:[]),i=t.shouldDehydrateQuery??e.getDefaultOptions().dehydrate?.shouldDehydrateQuery??tt,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)?[$e(e,o,a)]:[])}}function rt(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?Xe(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(T)})}var it=class extends we{#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 Pe({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=at(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=at(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=at(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=at(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){j.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=>be(t,e))}findAll(e={}){return this.getAll().filter(t=>be(e,t))}notify(e){j.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return j.batch(()=>Promise.all(e.map(e=>e.continue().catch(T))))}};function at(e){return e.options.scope?.id}var ot=class extends we{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??Me(r,t),a=this.get(i);return a||(a=new De({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(){j.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=>ye(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>ye(e,t)):t}notify(e){j.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){j.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){j.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},st=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new ot,this.#t=e.mutationCache||new it,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Ne.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=Ce.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(ke(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=Se(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return j.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;j.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return j.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=j.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(T).catch(T)}invalidateQueries(e,t={}){return j.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=j.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(T)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(T)}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(ke(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(ke(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(T).catch(T)}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(T).catch(T)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return Ce.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(ve(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{Ae(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(ve(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{Ae(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||=Me(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===xe&&(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()}},N=t(n(),1),ct=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,lt=/^[\\/]{2}/;function ut(e,t){return t+e.replace(/\\/g,`/`)}var dt=`popstate`;function ft(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function pt(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return gt(``,{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:I(t)}return vt(t,n,null,e)}function P(e,t){if(e===!1||e==null)throw Error(t)}function F(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function mt(){return Math.random().toString(36).substring(2,10)}function ht(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 gt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?_t(t):t,state:n,key:t&&t.key||r||mt(),mask:i}}function I({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 _t(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 vt(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=ft(e)?e:gt(h.location,e,t);n&&n(r,e),l=u()+1;let d=ht(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=ft(e)?e:gt(h.location,e,t);n&&n(r,e),l=u();let i=ht(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 yt(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(dt,d),c=e,()=>{i.removeEventListener(dt,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 yt(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),P(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:I(t);return i=i.replace(/ $/,`%20`),!n&&lt.test(i)&&(i=r+i),new URL(i,r)}function bt(e,t,n=`/`){return xt(e,t,n,!1)}function xt(e,t,n,r,i){let a=L((typeof t==`string`?_t(t):t).pathname||`/`,n);if(a==null)return null;let o=i??St(e),s=null,c=zt(a);for(let e=0;s==null&&e<o.length;++e)s=Ft(o[e],c,r);return s}function St(e){let t=Ct(e);return Tt(t),t}function Ct(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;P(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=R([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(P(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Ct(e.children,t,u,l,o)),(e.path!=null||e.index)&&t.push({path:l,score:Nt(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Rt(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 wt(e.path))a(e,t,!0,n)}),t}function wt(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=wt(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 Tt(e){e.sort((e,t)=>e.score===t.score?Pt(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Et=/^:[\w-]+$/,Dt=3,Ot=2,kt=1,At=10,jt=-2,Mt=e=>e===`*`;function Nt(e,t){let n=e.split(`/`),r=n.length;return n.some(Mt)&&(r+=jt),t&&(r+=Ot),n.filter(e=>!Mt(e)).reduce((e,t)=>e+(Et.test(t)?Dt:t===``?kt:At),r)}function Pt(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 Ft(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?Lt(u,l,s.matcher,s.compiledParams):It(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=It({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:R([a,d.pathname]),pathnameBase:qt(R([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=R([a,d.pathnameBase]))}return o}function It(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Rt(e.path,e.caseSensitive,e.end);return Lt(e,t,n,r)}function Lt(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=z(a,1),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=z(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 Rt(e,t=!1,n=!0){F(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 zt(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return F(!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 L(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 Bt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?_t(e):e,a;return n?(n=Kt(n),a=n.startsWith(`/`)||n.startsWith(`\\`)?Vt(n.substring(1),`/`):Vt(n,t)):a=t,{pathname:a,search:Jt(r),hash:Yt(i)}}function Vt(e,t){let n=z(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Ht(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 Ut(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Wt(e){let t=Ut(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function Gt(e,t,n,r=!1){let i;typeof e==`string`?i=_t(e):(i={...e},P(!i.pathname||!i.pathname.includes(`?`),Ht(`?`,`pathname`,`search`,i)),P(!i.pathname||!i.pathname.includes(`#`),Ht(`#`,`pathname`,`hash`,i)),P(!i.search||!i.search.includes(`#`),Ht(`#`,`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=Bt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var Kt=e=>e.replace(/[\\/]{2,}/g,`/`),R=e=>Kt(e.join(`/`));function z(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 qt=e=>z(e).replace(/^\/*/,`/`),Jt=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Yt=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Xt=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 Zt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Qt(e){return R(e.map(e=>e.route.path).filter(Boolean))||`/`}var $t=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function en(e,t){let n=e;if(typeof n!=`string`||!ct.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if($t)try{let e=new URL(window.location.href),r=lt.test(n)?new URL(ut(n,e.protocol)):new URL(n),a=L(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{F(!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 tn=new URL(`http://localhost`);function nn(e){if(e.createURL)return e.createURL(`/`);try{return new URL(e.createHref(`/`),tn)}catch{return tn}}function rn(e,t){return e.origin===t.origin&&(e.origin!==`null`||e.protocol===t.protocol&&e.host===t.host)}function an(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 on(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&&!rn(i,n),s=!rn(a,n);if(r===`reject`){if(o||s)throw Error(`External navigation is not allowed`)}else if(s&&(i==null||!an(e,i)||!rn(i,a)))throw Error(`External navigation is not allowed`)}var sn=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(sn);var cn=[`GET`,...sn];new Set(cn);var ln=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function un(e){try{return ln.includes(new URL(e).protocol)}catch{return!1}}var dn=N.createContext(null);dn.displayName=`DataRouter`;var fn=N.createContext(null);fn.displayName=`DataRouterState`;var pn=N.createContext(!1);function mn(){return N.useContext(pn)}var hn=N.createContext({isTransitioning:!1});hn.displayName=`ViewTransition`;var gn=N.createContext(new Map);gn.displayName=`Fetchers`;var _n=N.createContext(null);_n.displayName=`Await`;var B=N.createContext(null);B.displayName=`Navigation`;var vn=N.createContext(null);vn.displayName=`Location`;var V=N.createContext({outlet:null,matches:[],isDataRoute:!1});V.displayName=`Route`;var yn=N.createContext(null);yn.displayName=`RouteError`;var bn=`REACT_ROUTER_ERROR`,xn=`REDIRECT`,Sn=`ROUTE_ERROR_RESPONSE`;function Cn(e){if(e.startsWith(`${bn}:${xn}:{`))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 wn(e){if(e.startsWith(`${bn}:${Sn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new Xt(t.status,t.statusText,t.data)}catch{}}function Tn(e,{relative:t}={}){P(En(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=N.useContext(B),{hash:i,pathname:a,search:o}=jn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:R([n,a])),r.createHref({pathname:s,search:o,hash:i})}function En(){return N.useContext(vn)!=null}function H(){return P(En(),`useLocation() may be used only in the context of a <Router> component.`),N.useContext(vn).location}var Dn=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function On(e){N.useContext(B).static||N.useLayoutEffect(e)}function U(){let{isDataRoute:e}=N.useContext(V);return e?Jn():kn()}function kn(){P(En(),`useNavigate() may be used only in the context of a <Router> component.`);let e=N.useContext(dn),{basename:t,navigator:n}=N.useContext(B),{matches:r}=N.useContext(V),{pathname:i}=H(),a=JSON.stringify(Wt(r)),o=N.useRef(!1);return On(()=>{o.current=!0}),N.useCallback((r,s={})=>{if(F(o.current,Dn),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=Gt(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:R([t,c.pathname])),on(typeof r==`string`?r:I(r),n.createHref(c),nn(n),`reject`),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}N.createContext(null);function An(){let{matches:e}=N.useContext(V);return e[e.length-1]?.params??{}}function jn(e,{relative:t}={}){let{matches:n}=N.useContext(V),{pathname:r}=H(),i=JSON.stringify(Wt(n));return N.useMemo(()=>Gt(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Mn(e,t){return Nn(e,t)}function Nn(e,t,n){P(En(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=N.useContext(B),{matches:i}=N.useContext(V),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||``;Xn(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
+
4
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=H(),d;if(t){let e=typeof t==`string`?_t(t):t;P(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})):bt(e,{pathname:p});F(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),F(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=Bn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:R([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:R([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?N.createElement(vn.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Pn(){let e=qn(),t=Zt(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=N.createElement(N.Fragment,null,N.createElement(`p`,null,`💿 Hey developer 👋`),N.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,N.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,N.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),N.createElement(N.Fragment,null,N.createElement(`h2`,null,`Unexpected Application Error!`),N.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?N.createElement(`pre`,{style:i},n):null,o)}var Fn=N.createElement(Pn,null),In=class extends N.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=wn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:N.createElement(V.Provider,{value:this.props.routeContext},N.createElement(yn.Provider,{value:e,children:this.props.component}));return this.context?N.createElement(Rn,{error:e},t):t}};In.contextType=pn;var Ln=new WeakMap;function Rn({children:e,error:t}){let{basename:n,navigator:r}=N.useContext(B);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Cn(t.digest);if(e){let i=Ln.get(t);if(i)throw i;let a=en(e.location,n),o=a.absoluteURL||a.to;if(on(e.location,o,nn(r),`allow-explicit`),un(o))throw Error(`Invalid redirect location`);if($t&&!Ln.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 Ln.set(t,n),n}}return N.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function zn({routeContext:e,match:t,children:n}){let r=N.useContext(dn);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),N.createElement(V.Provider,{value:e},n)}function Bn(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);P(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:Qt(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||Fn,o&&(s<0&&c===0?(Xn(`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?N.createElement(n.route.Component,null):n.route.element?n.route.element:e,N.createElement(zn,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?N.createElement(In,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Vn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Hn(e){let t=N.useContext(dn);return P(t,Vn(e)),t}function Un(e){let t=N.useContext(fn);return P(t,Vn(e)),t}function Wn(e){let t=N.useContext(V);return P(t,Vn(e)),t}function Gn(e){let t=Wn(e),n=t.matches[t.matches.length-1];return P(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Kn(){return Gn(`useRouteId`)}function qn(){let e=N.useContext(yn),t=Un(`useRouteError`),n=Gn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Jn(){let{router:e}=Hn(`useNavigate`),t=Gn(`useNavigate`),n=N.useRef(!1);return On(()=>{n.current=!0}),N.useCallback(async(r,i={})=>{F(n.current,Dn),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Yn={};function Xn(e,t,n){!t&&!Yn[e]&&(Yn[e]=!0,F(!1,n))}N.memo(Zn);function Zn({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Nn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Qn({to:e,replace:t,state:n,relative:r}){P(En(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i,navigator:a}=N.useContext(B);F(!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}=N.useContext(V),{pathname:s}=H(),c=U(),l=Gt(e,Wt(o),s,r===`path`);on(typeof e==`string`?e:I(e),a.createHref(l),nn(a),`reject`);let u=JSON.stringify(l);return N.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function W(e){P(!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 $n({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){P(!En(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=N.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=_t(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=N.useMemo(()=>{let e=L(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 F(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:N.createElement(B.Provider,{value:c},N.createElement(vn.Provider,{children:t,value:h}))}function er({children:e,location:t}){return Mn(tr(e),t)}N.Component;function tr(e,t=[]){let n=[];return N.Children.forEach(e,(e,r)=>{if(!N.isValidElement(e))return;let i=[...t,r];if(e.type===N.Fragment){n.push.apply(n,tr(e.props.children,i));return}P(e.type===W,`[${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>`),P(!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=tr(e.props.children,i)),n.push(a)}),n}var nr=`get`,rr=`application/x-www-form-urlencoded`;function ir(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function ar(e){return ir(e)&&e.tagName.toLowerCase()===`button`}function or(e){return ir(e)&&e.tagName.toLowerCase()===`form`}function sr(e){return ir(e)&&e.tagName.toLowerCase()===`input`}function cr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function lr(e,t){return e.button===0&&(!t||t===`_self`)&&!cr(e)}function ur(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 dr(e,t){let n=ur(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var fr=null;function pr(){if(fr===null)try{new FormData(document.createElement(`form`),0),fr=!1}catch{fr=!0}return fr}var mr=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function hr(e){return e!=null&&!mr.has(e)?(F(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${rr}"`),null):e}function gr(e,t){let n,r,i,a,o;if(or(e)){let o=e.getAttribute(`action`);r=o?L(o,t):null,n=e.getAttribute(`method`)||nr,i=hr(e.getAttribute(`enctype`))||rr,a=new FormData(e)}else if(ar(e)||sr(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?L(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||nr,i=hr(e.getAttribute(`formenctype`))||hr(o.getAttribute(`enctype`))||rr,a=new FormData(o,e),!pr()){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(ir(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=nr,r=null,i=rr,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 _r(e,t){if(e===!1||e==null)throw Error(t)}function vr(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&&L(i.pathname,t)===`/`?`${z(t)}/_root.${r}`:`${z(i.pathname)}.${r}`,i}async function yr(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 br(e){return e!=null&&typeof e.page==`string`}function xr(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 Sr(e,t,n){return Dr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await yr(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(xr).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Cr(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 wr(e,t,{includeHydrateFallback:n}={}){return Tr(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 Tr(e){return[...new Set(e)]}function Er(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Dr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!br(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Er(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Or(){let e=N.useContext(dn);return _r(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function kr(){let e=N.useContext(fn);return _r(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Ar=N.createContext(void 0);Ar.displayName=`FrameworkContext`;function jr(){let e=N.useContext(Ar);return _r(e,`You must render this element inside a <HydratedRouter> element`),e}function Mr(e,t){let n=N.useContext(Ar),[r,i]=N.useState(!1),[a,o]=N.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=N.useRef(null);N.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]),N.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:Nr(s,p),onBlur:Nr(c,m),onMouseEnter:Nr(l,p),onMouseLeave:Nr(u,m),onTouchStart:Nr(d,p)}]:[a,f,{}]:[!1,f,{}]}function Nr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Pr({page:e,...t}){let n=mn(),{nonce:r}=jr(),{router:i}=Or(),a=N.useMemo(()=>bt(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?N.createElement(Ir,{page:e,matches:a,...t}):N.createElement(Lr,{page:e,matches:a,...t})):null}function Fr(e){let{manifest:t,routeModules:n}=jr(),[r,i]=N.useState([]);return N.useEffect(()=>{let r=!1;return Sr(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Ir({page:e,matches:t,...n}){let r=H(),{future:i}=jr(),{basename:a}=Or(),o=N.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=vr(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 N.createElement(N.Fragment,null,o.map(e=>N.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Lr({page:e,matches:t,...n}){let r=H(),{future:i,manifest:a,routeModules:o}=jr(),{basename:s}=Or(),{loaderData:c,matches:l}=kr(),u=N.useMemo(()=>Cr(e,t,l,a,r,`data`),[e,t,l,a,r]),d=N.useMemo(()=>Cr(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=N.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=vr(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=N.useMemo(()=>wr(d,a),[d,a]),m=Fr(d);return N.createElement(N.Fragment,null,f.map(e=>N.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>N.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>N.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Rr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}N.Component;var zr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{zr&&(window.__reactRouterVersion=`7.18.3`)}catch{}function Br({basename:e,children:t,useTransitions:n,window:r}){let i=N.useRef();i.current??=pt({window:r,v5Compat:!0});let a=i.current,[o,s]=N.useState({action:a.action,location:a.location}),c=N.useCallback(e=>{n===!1?s(e):N.startTransition(()=>s(e))},[n]);return N.useLayoutEffect(()=>a.listen(c),[a,c]),N.createElement($n,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var Vr=N.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:_}=N.useContext(B),v=typeof l==`string`&&ct.test(l),y=en(l,h);l=y.to;let b=Tn(l,{relative:r}),ee=H(),x=null;if(o){let e=Gt(o,[],ee.mask?ee.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:R([h,e.pathname])),x=g.createHref(e)}let[te,ne,re]=Mr(n,p),ie=Kr(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function ae(t){e&&e(t),t.defaultPrevented||ie(t)}let S=!(y.isExternal||i),C=N.createElement(`a`,{...p,...re,href:(S?x:void 0)||y.absoluteURL||b,onClick:S?ae:e,ref:Rr(m,ne),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return te&&!v?N.createElement(N.Fragment,null,C,N.createElement(Pr,{page:b})):C});Vr.displayName=`Link`;var Hr=N.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=jn(a,{relative:c.relative}),d=H(),f=N.useContext(fn),{navigator:p,basename:m}=N.useContext(B),h=f!=null&&Qr(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=L(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,ee=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),x={isActive:b,isPending:ee,isTransitioning:h},te=b?e:void 0,ne;ne=typeof n==`function`?n(x):[n,b?`active`:null,ee?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let re=typeof i==`function`?i(x):i;return N.createElement(Vr,{...c,"aria-current":te,className:ne,ref:l,style:re,to:a,viewTransition:o},typeof s==`function`?s(x):s)});Hr.displayName=`NavLink`;var Ur=N.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=nr,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=N.useContext(B),g=Xr(),_=Zr(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&ct.test(s);return N.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?N.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});Ur.displayName=`Form`;function Wr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Gr(e){let t=N.useContext(dn);return P(t,Wr(e)),t}function Kr(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=U(),d=H(),f=jn(e,{relative:o});return N.useCallback(p=>{if(lr(p,t)){p.preventDefault();let t=n===void 0?I(d)===I(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?N.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function qr(e){F(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=N.useRef(ur(e)),n=N.useRef(!1),r=H(),i=N.useMemo(()=>dr(r.search,n.current?null:t.current),[r.search]),a=U();return[i,N.useCallback((e,t)=>{let r=ur(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var Jr=0,Yr=()=>`__${String(++Jr)}__`;function Xr(){let{router:e}=Gr(`useSubmit`),{basename:t}=N.useContext(B),n=Kn(),r=e.fetch,i=e.navigate;return N.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=gr(e,t);if(a.navigate===!1){let e=a.fetcherKey||Yr();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 Zr(e,{relative:t}={}){let{basename:n}=N.useContext(B),r=N.useContext(V);P(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...jn(e||`.`,{relative:t})},o=H();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:R([n,a.pathname])),I(a)}function Qr(e,{relative:t}={}){let n=N.useContext(hn);P(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Gr(`useViewTransitionState`),i=jn(e,{relative:t});if(!n.isTransitioning)return!1;let a=L(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=L(n.nextLocation.pathname,r)||n.nextLocation.pathname;return It(i.pathname,o)!=null||It(i.pathname,a)!=null}var $r=t(o(),1),ei=a(),ti=`cartethyia.customization`,G=`media`,ni=`background`,ri=1,ii=`/console-backgrounds.jpg`;function ai(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(ti,ri);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(G)||e.createObjectStore(G)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the media database.`)),e}function oi(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 si(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 ci(){let e=await ai();try{let t=await oi(e.transaction(G,`readonly`).objectStore(G).get(ni));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 li(e,t){let n=await ai();try{let r=n.transaction(G,`readwrite`);r.objectStore(G).put({blob:e,kind:t},ni),await si(r,`Could not store the background.`)}finally{n.close()}}async function ui(){let e=await ai();try{let t=e.transaction(G,`readwrite`);t.objectStore(G).delete(ni),await si(t,`Could not remove the background.`)}finally{e.close()}}var di=2560,fi=.85;async function pi(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,di/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 gi(i)??e):e}finally{t.close()}}var mi=4294967296,hi=268435456;function gi(e){let{promise:t,resolve:n}=Promise.withResolvers();return e.toBlob(e=>n(e),`image/webp`,fi),t}function _i(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:null}var vi=[`none`,`frosted`,`vibrancy`,`heavy`],K={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},yi=`cartethyia.customization`,bi=`cartethyia-customization-change`,xi=[`cards`,`chrome`];function Si(e){return typeof e==`string`&&vi.includes(e)}function q(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 Ci(e){let t=typeof e==`object`&&e&&!Array.isArray(e)?e:{};return{backgroundSet:t.backgroundSet===!0,backgroundRevision:q(t.backgroundRevision,0,2**53-1,0),backgroundEnabled:typeof t.backgroundEnabled==`boolean`?t.backgroundEnabled:K.backgroundEnabled,backgroundOpacity:q(t.backgroundOpacity,0,100,K.backgroundOpacity),backgroundScale:q(t.backgroundScale,100,180,K.backgroundScale),backgroundX:q(t.backgroundX,-100,100,K.backgroundX),backgroundY:q(t.backgroundY,-100,100,K.backgroundY),backgroundBlur:q(t.backgroundBlur,0,100,K.backgroundBlur),blurCards:Si(t.blurCards)?t.blurCards:K.blurCards,blurChrome:Si(t.blurChrome)?t.blurChrome:K.blurChrome,blurCardsAmount:q(t.blurCardsAmount,0,100,K.blurCardsAmount),blurChromeAmount:q(t.blurChromeAmount,0,100,K.blurChromeAmount),blurCardsDepth:q(t.blurCardsDepth,0,100,K.blurCardsDepth),blurChromeDepth:q(t.blurChromeDepth,0,100,K.blurChromeDepth),blurCardsEnabled:t.blurCardsEnabled!==!1,blurChromeEnabled:t.blurChromeEnabled!==!1,emptyOutline:t.emptyOutline===!0}}var J=null;function wi(){if(J)return J;if(typeof window>`u`)return K;try{J=Ci(JSON.parse(window.localStorage.getItem(yi)??`null`))}catch{J={...K}}return J}function Ti(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 Ei(e){try{window.localStorage.setItem(yi,JSON.stringify(e))}catch{}}function Di(e){let t=Ci({...wi(),...e});return J=t,typeof window<`u`&&(Ei(t),Ti(t),window.dispatchEvent(new CustomEvent(bi))),t}function Oi(){let[e,t]=(0,N.useState)(wi);return(0,N.useEffect)(()=>{let e=()=>t(wi());return window.addEventListener(bi,e),window.addEventListener(`storage`,e),()=>{window.removeEventListener(bi,e),window.removeEventListener(`storage`,e)}},[]),[e,e=>t(Di(e))]}var ki=xi,Y=r(),Ai=`(max-width: 767px)`,ji=`(prefers-reduced-motion: reduce)`;function Mi(e){let[t,n]=(0,N.useState)(()=>typeof window<`u`&&window.matchMedia(e).matches);return(0,N.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function Ni(){let[e,t]=(0,N.useState)(()=>typeof document>`u`||!document.hidden);return(0,N.useEffect)(()=>{let e=()=>t(!document.hidden);return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Pi(){let[e]=Oi(),[t,n]=(0,N.useState)(null),r=Mi(Ai),i=Mi(ji),a=Ni();(0,N.useEffect)(()=>{if(!e.backgroundSet){n(e=>(e&&URL.revokeObjectURL(e.url),{blob:new Blob,kind:`image`,url:ii}));return}let t=!1,r=null;return ci().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,N.useRef)(null),s=t?.kind===`video`&&!r&&!i&&a;return(0,N.useEffect)(()=>{let e=o.current;if(e){if(s){e.play().catch(()=>{});return}e.pause()}},[s]),!t||!e.backgroundEnabled?null:(0,Y.jsx)(`div`,{className:`custom-background`,"data-kind":t.kind,"data-playing":s?`true`:`false`,"aria-hidden":`true`,children:t.kind===`video`?(0,Y.jsx)(`video`,{ref:o,className:`custom-background-media`,src:t.url,autoPlay:s,loop:!0,muted:!0,playsInline:!0,preload:r?`metadata`:`auto`}):(0,Y.jsx)(`img`,{className:`custom-background-media`,src:t.url,alt:``})})}function Fi({open:e,onClose:t,onConfirm:n,title:r,message:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,danger:s}){let[c,l]=(0,N.useState)(null),[u,d]=(0,N.useState)(!1);return(0,N.useEffect)(()=>{e&&(l(null),d(!1))},[e]),(0,Y.jsx)(ie,{open:e,onClose:t,title:r,description:i,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,Y.jsx)(`p`,{className:`text-body text-text-secondary leading-normal`,children:i}),c?(0,Y.jsx)(`p`,{role:`alert`,className:`text-caption text-red`,children:c}):null,(0,Y.jsxs)(Fe,{children:[(0,Y.jsx)(b,{variant:`secondary`,size:`sm`,onClick:t,disabled:u,children:o}),(0,Y.jsx)(b,{variant:s?`danger`:`primary`,size:`sm`,onClick:()=>{u||(l(null),d(!0),Promise.resolve().then(()=>n()).then(()=>t()).catch(e=>{l(O(e,`Action failed. Please try again.`)),d(!1)}))},disabled:u,children:u?`Working…`:a})]})]})})}var Ii=`cartethyia.query-cache`,X=`client`,Li=`default`,Ri=1;function zi(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(Ii,Ri);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(X)||e.createObjectStore(X)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the query cache.`)),e}function Bi(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 Vi(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}function Hi(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 Ui(e){try{let t=await zi();try{let n=t.transaction(X,`readwrite`);n.objectStore(X).put({version:1,state:e},Li),await Vi(n,`Could not store the query cache.`)}finally{t.close()}}catch{}}async function Wi(){try{let e=await zi();try{let t=await Bi(e.transaction(X,`readonly`).objectStore(X).get(Li));return Hi(t)?t.state:void 0}finally{e.close()}}catch{return}}async function Gi(){try{let e=await zi();try{let t=e.transaction(X,`readwrite`);t.objectStore(X).delete(Li),await Vi(t,`Could not remove the query cache.`)}finally{e.close()}}catch{}}var Z=new st({defaultOptions:{queries:D,mutations:je}});function Ki(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 qi(){let e=await Wi();e!==void 0&&rt(Z,e)}function Ji(){Gi()}function Yi(){let e,t=Z.getQueryCache().subscribe(t=>{t.type===`updated`&&(t.action.type===`success`||t.action.type===`error`)&&e===void 0&&(e=setTimeout(()=>{e=void 0,Ui(nt(Z,{shouldDehydrateQuery:Ki}))},2e3))});return()=>{e!==void 0&&clearTimeout(e),t()}}function Xi(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 Zi(e,t){if(e===void 0||t===void 0)return!1;let n=Xi(e),r=Xi(t);return n===null||r===null?t.trim()!==e.trim():Qi(r,n)>0}function Qi(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 $i=5e3,ea=new WeakMap,ta={"/":[{queryKey:A.settings.runtime,read:e=>k(`/settings/runtime`,{signal:e})},{queryKey:A.apiKeys.all,read:e=>k(`/api-keys`,{signal:e}).then(ge)}],"/providers":[{queryKey:A.providers.all,read:e=>k(`/providers`,{signal:e}).then(_e)}],"/proxy":[{queryKey:A.network.pools,read:e=>k(`/network/pools`,{signal:e}).then(oe)}]};function na(e,t){let n=ta[t];if(n===void 0)return Promise.resolve();let r=Date.now(),i=ea.get(e);if(i!==void 0){if(i>r)return Promise.resolve();ea.delete(e)}return Promise.allSettled(n.map(t=>e.fetchQuery({queryKey:t.queryKey,queryFn:e=>t.read(C(e)),...D}))).then(t=>{if(t.some(e=>e.status===`rejected`&&!Oe(e.reason))){ea.set(e,Date.now()+$i);return}ea.delete(e)})}function ra(){return S({queryKey:A.session.current,queryFn:()=>Te(),staleTime:6e4,gcTime:3e5,retry:!1,refetchOnWindowFocus:!1})}function ia(){return S({queryKey:A.system.health,queryFn:e=>k(`/system/health`,{signal:C(e)}).then(se),...D,refetchInterval:E.status})}function aa(){return S({queryKey:A.releases.githubLatest,queryFn:e=>k(`/updates/release`,{signal:C(e)}).then(me),...D,staleTime:18e5,refetchInterval:18e5,retry:!1})}function oa(e){return S({queryKey:A.usageAnalytics.summary(e),queryFn:t=>k(`/system/usage/summary?period=${encodeURIComponent(e)}`,{signal:C(t)}).then(le),...D,refetchInterval:E.status})}function sa(e){return S({queryKey:A.usageAnalytics.chart(e),queryFn:t=>k(`/system/usage/chart?period=${encodeURIComponent(e)}`,{signal:C(t)}).then(pe),...D,refetchInterval:E.status})}function ca(e,t){return S({queryKey:A.usageAnalytics.by(e,t),queryFn:n=>k(`/system/usage/by-${t}?period=${encodeURIComponent(e)}`,{signal:C(n)}).then(ce),...D,refetchInterval:E.status})}function la(e,t=50,n){let r=n==null?``:`&httpStatus=${encodeURIComponent(String(n))}`;return S({queryKey:A.usageAnalytics.requests(e,t,n),queryFn:n=>k(`/system/usage/requests?period=${encodeURIComponent(e)}&limit=${encodeURIComponent(String(t))}${r}`,{signal:C(n)}).then(ue),...D,placeholderData:e=>e,refetchInterval:E.live})}function ua(e){return S({queryKey:A.usageAnalytics.requestDetail(e??`_`),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Request is required`};return k(`/system/usage/requests/${encodeURIComponent(e)}`,{signal:C(t)}).then(de)},enabled:e!==null,...D})}function da(e){return S({queryKey:A.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 k(`/audit${r}`,{signal:C(t)}).then(fe)},...D})}function fa(){return S({queryKey:A.providers.all,queryFn:e=>k(`/providers`,{signal:C(e)}).then(_e),...D,gcTime:6e5,refetchInterval:E.catalog})}function pa(e){return S({queryKey:A.providers.models(e),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Provider is required`};return k(`/providers/${encodeURIComponent(e)}/models`,{signal:C(t)}).then(he)},...D,staleTime:3e5,gcTime:6e5,enabled:!!e})}function ma(){let e=w();return M({mutationFn:({providerId:e,modelIds:t,wireFamily:n,metadata:r})=>k(`/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:A.providers.models(n.providerId)}),x.success(`Models registered`,`${n.modelIds.length} model(s) added to ${n.providerId}`)},onError:e=>{x.error(`Failed to register models`,O(e))}})}function ha(){let e=w();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/models/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Da(e,r.providerId)}})}function ga(){return M({mutationFn:e=>k(`/providers/connection-test`,{method:`POST`,body:JSON.stringify(e)})})}function _a(){let e=w();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await Da(e,r.providerId)}})}function va(){let e=w();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:A.providers.models(n.providerId)})}})}function ya(){let e=w();return M({mutationFn:({providerId:e,modelId:t,route:n,metadata:r})=>k(`/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:A.providers.models(n.providerId)}),x.success(`Model updated`,`${n.modelId} limits and capabilities saved`)},onError:e=>{x.error(`Failed to update model`,O(e))}})}function ba(){let e=w();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/models`,{method:`DELETE`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:A.providers.models(n.providerId)})}})}function xa(e){return S({queryKey:A.providers.accounts(e),queryFn:t=>k(`/providers/${encodeURIComponent(e??``)}/accounts`,{signal:C(t)}),enabled:!!e,...D,staleTime:3e4,gcTime:6e5})}function Sa(){let e=w();return M({mutationFn:({providerId:e,request:t})=>k(`/providers/${encodeURIComponent(e)}/accounts`,{method:`POST`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.all})])}})}function Ca(){let e=w();return M({mutationFn:({providerId:e,accounts:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/batch`,{method:`POST`,body:JSON.stringify({accounts:t})}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.all})])}})}function wa(){let e=w();return M({mutationFn:({providerId:e,accountId:t,request:n})=>k(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}`,{method:`PATCH`,body:JSON.stringify(n)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.all})])}})}function Ta(e,t){return S({queryKey:A.providers.healthEvents(e,t),queryFn:n=>k(`/providers/${encodeURIComponent(e??``)}/accounts/${encodeURIComponent(t??``)}/health-events`,{signal:C(n)}),enabled:!!e&&!!t,...D,refetchInterval:E.status})}async function Ea(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 Da(e,t){await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(t)}),Ea(e,t),e.invalidateQueries({queryKey:A.providers.all})])}function Oa(){let e=w();return M({mutationFn:({providerId:e,accountId:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/recover`,{method:`POST`,body:`{}`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.healthEvents(n.providerId,n.accountId)}),e.invalidateQueries({queryKey:A.providers.all})]),x.success(`Account recovered`)},onError:e=>{x.error(`Could not recover the account.`,O(e))}})}function ka(){return M({mutationFn:({providerId:e,accountIds:t})=>k(`/providers/${encodeURIComponent(e)}/accounts/export`,{method:`POST`,body:JSON.stringify({accountIds:t})})})}function Aa(){return M({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>k(`/providers/${encodeURIComponent(e)}/oauth/authorize`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function ja(){let e=w();return M({mutationFn:({providerId:e,code:t,state:n})=>k(`/providers/${encodeURIComponent(e)}/oauth/callback?${new URLSearchParams({code:t,state:n}).toString()}`),onSuccess:async(t,n)=>{await Da(e,n.providerId)}})}function Ma(){return M({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>k(`/providers/${encodeURIComponent(e)}/oauth/device/start`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function Na(){let e=w();return M({mutationFn:({providerId:e,credential:t,fields:n,accountLabel:r})=>k(`/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 Da(e,n.providerId),await e.invalidateQueries({queryKey:A.quota.all})}})}function Pa(){let e=w();return M({mutationFn:({providerId:e,deviceAuthId:t})=>k(`/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:A.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:A.providers.healthEvents(n.providerId,t.accountId)}),e.invalidateQueries({queryKey:A.quota.all}),Da(e,n.providerId)])}})}function Fa(){let e=w();return M({mutationFn:e=>k(`/providers`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async t=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.modelRouting.all})]),x.success(`Provider created`,t.label??t.providerId)},onError:e=>{x.error(`Failed to create provider`,O(e))}})}function Ia(){let e=w();return M({mutationFn:({providerId:e,enabled:t})=>k(`/providers/platform/global/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.providers.detail(n)})])}})}function La(e={}){let t=w();return M({mutationFn:e=>k(`/providers/${encodeURIComponent(e)}/models/sync`,{method:`POST`,body:`{}`}),onSuccess:async(n,r)=>{await t.invalidateQueries({queryKey:A.providers.models(r)}),e.silent||x.success(`Models fetched`,n.synced>0?`${n.synced} new model${n.synced===1?``:`s`} added`:`No new models found`)},onError:t=>{e.silent||x.error(`Failed to fetch models`,O(t))}})}function Ra(){let e=w();return M({mutationFn:e=>k(`/providers/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:A.providers.all}),e.invalidateQueries({queryKey:A.quota.all}),e.invalidateQueries({queryKey:A.modelRouting.all})]),x.success(`Provider deleted`,n)},onError:e=>{x.error(`Failed to delete provider`,O(e))}})}var za={name:`cartethyia`,version:`2.4.6`,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/binary/start.ts`,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`,"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,Ba=`v${za.replace(/\.0$/,``)} (Zhezhi)`,Va=[{label:`Main`,items:[{label:`Overview`,path:`/`,icon:Re},{label:`Usage`,path:`/usage`,icon:u},{label:`Providers`,path:`/providers`,icon:Ke},{label:`Model Lab`,path:`/model-lab`,icon:ne}]},{label:`Control`,items:[{label:`Combos & Routes`,path:`/combos`,icon:Le},{label:`Quota Management`,path:`/quota`,icon:Je},{label:`Proxy & Requests`,path:`/proxy`,icon:l},{label:`CLI Tools`,path:`/cli-tools`,icon:d}]},{label:`System`,items:[{label:`Customization`,path:`/customization`,icon:Ue},{label:`Console Log`,path:`/console-log`,icon:Ge},{label:`Settings`,path:`/settings`,icon:qe}]}],Ha={"/":{title:`Overview`,sub:`Gateway health, capacity, and live metrics`,icon:Re},"/usage":{title:`Usage & Metrics`,sub:`Token economics, requests, and cost breakdown`,icon:u},"/providers":{title:`Provider Catalog`,sub:`Upstream credentials, models, and latency`,icon:Ke},"/combos":{title:`Combos & Routing`,sub:`Failover policies, model aliases, and weighted routes`,icon:Le},"/quota":{title:`Quota Management`,sub:`Rate limits, leases, and tenant quotas`,icon:Je},"/proxy":{title:`Proxy & Requests`,sub:`Network pools, SOCKS5/HTTP egress, and dispatch`,icon:l},"/customization":{title:`Customization`,sub:`Background, transparency, and blur`,icon:Ue},"/model-lab":{title:`Model Lab`,sub:`Chat a routed model without leaving the console`,icon:ne},"/console-log":{title:`Console Log`,sub:`Live server logs and audit trail`,icon:Ge},"/cli-tools":{title:`CLI Tools`,sub:`Claude Code CLI, OpenCode, and local developer tool integrations`,icon:d},"/settings":{title:`Settings`,sub:`Account security, runtime preferences, and state recovery`,icon:qe}},Ua={title:`Console`,sub:`Cartethyia AI Gateway Administration`,icon:Re};function Wa(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:Ke}}let r=/^\/cli-tools\/([^/]+)\/?$/.exec(e);return r?.[1]?{title:`CLI Tool`,sub:`${r[1]} — mappings, endpoints, and downloadable config`,icon:d}:Ha[e]??Ua}function Ga(){try{return ia()}catch{return{data:void 0,isError:!1,isFetching:!1,isPending:!1}}}function Ka(){let[e,t]=(0,N.useState)(()=>_()),n=p(e);return(0,N.useEffect)(()=>{let e=()=>t(_());return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),(0,N.useEffect)(()=>{ee(e)},[e]),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{let e=n?`light`:`dark`;t(e),te(e)},"aria-label":`Toggle theme`,"aria-pressed":n,className:`topbar-icon-button`,title:n?`Switch to light mode`:`Switch to dark mode`,children:(0,Y.jsx)(`span`,{className:`grid place-items-center`,children:n?(0,Y.jsx)(v,{size:17}):(0,Y.jsx)(g,{size:17})},n?`sun`:`moon`)})}var qa=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),Ja=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`,timeZone:`UTC`});function Ya(e){if(!Number.isFinite(e)||e<0)return`Unavailable`;let t=Math.floor(e);if(t<60)return`${t}s`;let n=Math.floor(t/60),r=n%60,i=Math.floor(n/60),a=i%24,o=Math.floor(i/24);return o>0?`${o}d ${a}h ${r}m`:i>0?`${i}h ${r}m`:`${n}m`}function Xa(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 Q({icon:e,label:t,value:n,detail:r,title:i}){return(0,Y.jsxs)(`div`,{className:`min-w-0 rounded-control border border-inner-border bg-surface-2 p-3`,title:i,children:[(0,Y.jsxs)(`dt`,{className:`flex items-center gap-2 text-micro font-medium text-text-tertiary`,children:[(0,Y.jsx)(e,{size:13,strokeWidth:1.8,className:`shrink-0`,"aria-hidden":`true`}),(0,Y.jsx)(`span`,{children:t})]}),(0,Y.jsx)(`dd`,{className:`mt-1 truncate font-mono text-caption font-semibold tabular-nums text-text-primary`,children:n}),r?(0,Y.jsx)(`dd`,{className:`mt-1 text-micro text-text-secondary`,children:r}):null]})}function Za({health:e}){let[t,n]=(0,N.useState)(!1),[r,i]=(0,N.useState)(()=>new Date),a=(0,N.useRef)(null),o=(0,N.useRef)(null);(0,N.useEffect)(()=>{if(!t)return;i(new Date);let e=window.setInterval(()=>i(new Date),1e3);return()=>window.clearInterval(e)},[t]),(0,N.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.target;o.current&&!o.current.contains(t)&&a.current&&!a.current.contains(t)&&n(!1)},r=e=>{e.key===`Escape`&&n(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,r),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,r)}},[t]);let s=e?e.status===`healthy`?`All systems operational`:e.status===`degraded`?`Gateway degraded`:`Gateway unhealthy`:`System health unavailable`,c=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.`,l=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,u=e?Number.isFinite(e.cpu_cores)&&e.cpu_cores>0?`1-min load · ${e.cpu_cores} cores`:`Normalized 1-min load`:void 0;return(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(`button`,{ref:a,type:`button`,className:`topbar-icon-button`,"aria-label":`Notifications`,"aria-expanded":t,"aria-haspopup":`dialog`,onClick:()=>n(e=>!e),children:(0,Y.jsx)(Ie,{size:17})}),t?(0,$r.createPortal)((0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{"aria-hidden":`true`,className:`fixed inset-0 z-floating bg-overlay backdrop-blur-dialog`,onClick:()=>n(!1)}),(0,Y.jsxs)(`div`,{ref:o,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,Y.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 font-bold text-body-lg`,children:[(0,Y.jsx)(`span`,{className:`w-13 h-13 rounded-pill bg-accent-soft text-accent grid place-items-center`,children:(0,Y.jsx)(Ie,{size:13})}),(0,Y.jsx)(`span`,{children:`Notifications`})]}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":`Close notifications`,onClick:()=>n(!1),className:`cursor-pointer border-none bg-transparent p-2 text-caption text-text-tertiary`,children:(0,Y.jsx)(y,{size:14})})]}),(0,Y.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 flex flex-col gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,Y.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,Y.jsx)(Ke,{size:16,"aria-hidden":`true`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`font-semibold text-caption`,children:s}),(0,Y.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:c})]})]}),(0,Y.jsxs)(`dl`,{"aria-label":`Runtime metrics`,className:`grid grid-cols-2 gap-2`,children:[(0,Y.jsx)(Q,{icon:re,label:`Local time`,value:qa.format(r)}),(0,Y.jsx)(Q,{icon:f,label:`UTC`,value:Ja.format(r)}),(0,Y.jsx)(Q,{icon:Ye,label:`Uptime`,value:e?Ya(e.uptime_seconds):`Unavailable`,detail:e&&Number.isFinite(e.uptime_seconds)&&e.uptime_seconds>=0?`Gateway process running`:void 0}),(0,Y.jsx)(Q,{icon:Be,label:`Process RSS`,value:e?Xa(e.memory_bytes):`Unavailable`,detail:l,title:`Process resident set size; percentage is share of system RAM.`}),(0,Y.jsx)(Q,{icon:Le,label:`CPU load`,value:e&&Number.isFinite(e.cpu_percent)?`${e.cpu_percent.toFixed(1)}%`:`Unavailable`,detail:u,title:`One-minute load average normalized by the number of CPU cores.`}),(0,Y.jsx)(Q,{icon:He,label:`Runtime`,value:e?.platform?.trim()||`Unavailable`,detail:e?.platform?.trim()?`Gateway host platform`:void 0,title:e?.platform?.trim()||`Runtime platform unavailable`})]}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,Y.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,Y.jsx)(We,{size:16,"aria-hidden":`true`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`font-semibold text-caption`,children:Ba}),(0,Y.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`High-performance AI Gateway & Protocol Orchestrator.`})]})]})]})]})]}),document.body):null]})}function Qa({group:e,pathname:t,onIntent:n}){return(0,Y.jsxs)(`div`,{className:`nav-group-section`,children:[(0,Y.jsx)(`p`,{className:`nav-group-title`,children:e.label}),(0,Y.jsx)($a,{items:e.items,pathname:t,onIntent:n})]})}function $a({items:e,pathname:t,onIntent:n}){let r=(0,N.useRef)(null),[i,a]=(0,N.useState)({top:0,height:0,opacity:0});return(0,N.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,Y.jsxs)(`div`,{ref:r,className:`nav-items-container`,children:[(0,Y.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=>{let r=e.path===`/`?t===`/`:t===e.path||t.startsWith(`${e.path}/`);return(0,Y.jsxs)(Hr,{to:e.path,end:e.path===`/`,"data-active":r?`true`:void 0,className:`nav-link-item ${r?`active`:``}`,onMouseEnter:()=>n(e.path),onFocus:()=>n(e.path),children:[(0,Y.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,Y.jsx)(`span`,{children:e.label}),e.badge?(0,Y.jsx)(`span`,{className:`nav-link-badge`,children:e.badge}):null]},e.path)})]})}function eo({user:e,children:t}){let n=U(),r=H(),[i,a]=(0,N.useState)(!1),[o,l]=(0,N.useState)(!1),[u,d]=(0,N.useState)(!1),f=Ga(),p=aa(),m=f.data?.version??za,h=p.data?.tag_name?.replace(/^v/,``),g=Zi(m,h),_=fa(),v=e=>{na(Z,e)};(0,N.useEffect)(()=>{a(!1)},[r.pathname]),(0,N.useEffect)(()=>{let e=()=>a(!1);return window.addEventListener(`cartethyia:overlay-open`,e),()=>window.removeEventListener(`cartethyia:overlay-open`,e)},[]),(0,N.useLayoutEffect)(()=>{window.scrollTo(0,0)},[r.pathname]);let y=async()=>{l(!0);try{await k(`/auth/logout`,{method:`POST`})}finally{Z.clear(),Ji(),n(`/login`,{replace:!0})}};(0,N.useEffect)(()=>(document.documentElement.dataset.glassEnabled=`true`,Ti(wi()),()=>{delete document.documentElement.dataset.glassEnabled}),[]);let b=Wa(r.pathname,_.data??[]);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`app-bg`,"aria-hidden":`true`}),(0,Y.jsx)(`div`,{className:`app-shell-frame`,children:(0,Y.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,Y.jsxs)(`aside`,{className:`glass app-sidebar ${i?`is-open`:``}`,"aria-label":`Dashboard navigation`,children:[(0,Y.jsxs)(`div`,{className:`brand-header`,children:[(0,Y.jsx)(`div`,{"aria-hidden":`true`,className:`brand-icon overflow-hidden p-0`,children:(0,Y.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,Y.jsxs)(`div`,{className:`brand-meta`,children:[(0,Y.jsx)(`div`,{className:`brand-name`,children:(0,Y.jsx)(`span`,{children:`Cartethyia`})}),(0,Y.jsxs)(`div`,{className:`brand-version-badge`,children:[(0,Y.jsx)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,className:`brand-version-link`,children:Ba}),g?(0,Y.jsxs)(`a`,{href:p.data?.html_url??c,target:`_blank`,rel:`noreferrer`,className:`brand-update-badge`,title:h===void 0?`A newer Cartethyia release is available on GitHub`:`Update available on GitHub: v${h}`,children:[(0,Y.jsx)(We,{size:9,className:`shrink-0`,"aria-hidden":`true`}),h===void 0?`update`:`Update v${h}`]}):null]})]})]}),(0,Y.jsx)(`nav`,{className:`flex-1 overflow-y-auto py-2 px-0`,children:Va.map(e=>(0,Y.jsx)(Qa,{group:e,pathname:r.pathname,onIntent:v},e.label))}),(0,Y.jsx)(`div`,{className:`sidebar-user-card`,children:(0,Y.jsxs)(`div`,{className:`user-card-content`,children:[(0,Y.jsx)(`div`,{className:`user-avatar`,"aria-hidden":`true`,children:(e.displayName??e.email).slice(0,2).toUpperCase()}),(0,Y.jsxs)(`div`,{className:`user-info`,children:[(0,Y.jsx)(`p`,{className:`user-name`,children:e.displayName||`Admin`}),(0,Y.jsx)(`p`,{className:`user-role`,children:e.email})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>d(!0),disabled:o,"aria-label":`Sign out`,title:`Sign out`,className:`topbar-icon-button w-15 h-15 rounded-inset`,children:(0,Y.jsx)(ze,{size:14})})]})})]}),(0,Y.jsxs)(`div`,{className:`app-main-column`,children:[(0,Y.jsx)(Pi,{}),(0,Y.jsxs)(`header`,{className:`glass app-topbar`,children:[(0,Y.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,className:`topbar-menu-btn`,onClick:()=>a(!0),children:(0,Y.jsx)(Ve,{size:18})}),(0,Y.jsxs)(`div`,{className:`topbar-meta`,children:[(0,Y.jsxs)(`h1`,{className:`topbar-title`,children:[(0,Y.jsx)(b.icon,{className:`topbar-title-icon`,size:16,"aria-hidden":`true`}),b.title]}),(0,Y.jsx)(`p`,{className:`topbar-subtitle`,children:b.sub})]}),(0,Y.jsxs)(`div`,{className:`topbar-actions`,children:[(0,Y.jsx)(Ka,{}),(0,Y.jsx)(Za,{health:f.data})]})]}),(0,Y.jsx)(`main`,{className:`route-enter w-full min-w-0`,children:t})]})]})}),(0,Y.jsx)(Fi,{open:u,onClose:()=>d(!1),onConfirm:y,title:`Sign out?`,message:`You will need to sign in again to open the console.`,confirmLabel:`Sign out`,danger:!0})]})}var to=class extends N.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,Y.jsx)(`main`,{className:`auth-viewport`,children:(0,Y.jsxs)(`div`,{className:`card-solid auth-window border border-red-soft`,children:[(0,Y.jsxs)(`div`,{className:`auth-header`,children:[(0,Y.jsx)(`h1`,{className:`auth-title`,children:`Console view failed`}),(0,Y.jsx)(`p`,{className:`auth-desc`,children:`This view could not be rendered.`})]}),(0,Y.jsxs)(`div`,{className:`rounded-panel border border-inner-border bg-surface-2 p-7 leading-normal text-caption text-text-secondary`,children:[(0,Y.jsx)(`strong`,{className:`block text-text-primary mb-2`,children:`Rendering error`}),(0,Y.jsx)(`span`,{className:`select-text break-words`,children:this.state.error.message})]}),(0,Y.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`})]})})}},no=3e5;function ro(e){return`cartethyia:lazy-retry:${e}`}function io(e,t){if(e===null)return!0;let n=Number(e);return!Number.isFinite(n)||t-n>no}function ao(){try{return typeof sessionStorage>`u`?void 0:sessionStorage}catch{return}}function $(e,t,n={}){let r=n.storage??ao(),i=n.reload??(()=>{window.location.reload()}),a=n.now??(()=>Date.now()),o=ro(t);return(0,N.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(io(t,a())){try{r?.setItem(o,String(a()))}catch{}return i(),new Promise(()=>{})}throw e}})}function oo(){return(0,Y.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,Y.jsx)(h,{size:22,className:`animate-spin`,"aria-hidden":`true`}),(0,Y.jsx)(`p`,{className:`text-caption`,children:`Loading console…`})]})}var so=$(()=>i(()=>import(`./LoginPage-BJlMVN4U.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),`login`),co=$(()=>i(()=>import(`./SetupPage-VOYC_lIa.js`),__vite__mapDeps([10,1,2,3,4,6,7,8,9,11,12])),`setup`),lo=$(()=>i(()=>import(`./BannedPage-QhvbJB9o.js`),__vite__mapDeps([13,1])),`banned`),uo=$(()=>i(()=>import(`./OverviewPage-CQxXbo2g.js`),__vite__mapDeps([14,1,15,16,6,17,18,19,20,21,3,4,2,22,23,24,25,26,8,9,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,7,47,48,49,50,51,52,11,53])),`overview`),fo=$(()=>i(()=>import(`./UsagePage-BAFaSDQV.js`),__vite__mapDeps([54,1,55,56,3,4,2,33,15,16,6,17,18,20,21,57,58,25,26,8,9,59,28,5,37,60,61,62,43,44,45,63,24,50,11,64,65,66,67])),`usage`),po=$(()=>i(()=>import(`./ProviderDetailPage--0RBNh99.js`),__vite__mapDeps([68,1,55,69,70,19,20,21,3,4,2,71,57,58,25,26,8,9,27,59,28,29,72,32,33,34,35,73,36,74,38,42,61,16,6,43,44,45,63,46,7,48,49,24,50,53,75,76,17,18,77,11,78,79,64,65])),`provider-detail`),mo=$(()=>i(()=>import(`./ProvidersPage-1M-C3mbu.js`),__vite__mapDeps([80,1,21,3,4,20,2,8,9,28,32,33,35,42,6,81,43,46,7,48,49,24,50,75,78,79])),`providers`),ho=$(()=>i(()=>import(`./CombosPage-Cak0ljnO.js`),__vite__mapDeps([82,1,83,21,3,4,20,2,23,24,25,28,72,32,33,34,35,37,38,42,6,81,43,31,7,8,9,47,16,45,46,48,50,75,76,17,18,64])),`combos`),go=$(()=>i(()=>import(`./QuotaPage-BGDIfIYP.js`),__vite__mapDeps([84,1,55,20,21,3,4,2,22,8,28,32,33,36,74,85,42,6,43,46,48,49,24,50,11,53,77,16,17,18])),`quota`),_o=$(()=>i(()=>import(`./ProxyPage-CXiumA53.js`),__vite__mapDeps([86,1,55,21,3,4,20,2,26,8,9,27,28,32,33,34,35,73,74,39,42,16,6,17,18,43,44,63,46,7,49,24,50,11,78,66,67])),`proxy`),vo=$(()=>i(()=>import(`./SettingsPage-BHW4Zt06.js`),__vite__mapDeps([87,1,21,3,4,20,2,26,9,28,32,33,40,16,6,17,18,42,43,44,7,8,49,24,65,12])),`settings`),yo=$(()=>i(()=>import(`./CliToolsPage-DyNXefph.js`),__vite__mapDeps([88,1,55,28,2,3,4,43,46,24,50,52,16,6,17,18,89,11])),`cli-tools`),bo=$(()=>i(()=>import(`./CliToolDetailPage-Bcy150Jo.js`),__vite__mapDeps([90,1,69,21,3,4,20,2,57,26,28,37,38,6,43,44,46,7,8,9,47,32,33,16,45,48,49,24,50,51,17,18,52,89])),`cli-tool-detail`),xo=$(()=>i(()=>import(`./ConsoleLogPage-CATpAEOz.js`),__vite__mapDeps([91,1,2,3,4,28,36,38,39,42,6,43,63,67,46,7,8,9,11])),`console-log`),So=$(()=>i(()=>import(`./CustomizationPage-D6jEU7nL.js`),__vite__mapDeps([92,1,2,3,4,59,72,74,43,49,24,50])),`customization`),Co=$(()=>i(()=>import(`./StudioPage-BNIDLiU6.js`),__vite__mapDeps([93,1,56,3,4,2,33,70,20,21,71,25,26,27,94,32,34,74,85,61,43,7,8,9,47,37,38,16,6,45,46,48,51,17,18])),`studio`);function wo(){let e=U(),t=H();return(0,N.useEffect)(()=>(Ee(n=>{if(Z.clear(),Ji(),n===`banned`){e(`/banned`,{replace:!0});return}e(`/login?returnTo=${encodeURIComponent(t.pathname)}`,{replace:!0})}),()=>Ee(void 0)),[e,t.pathname]),null}function To(){let e=H();return(0,Y.jsx)(to,{resetKey:`${e.pathname}${e.search}`,children:(0,Y.jsx)(N.Suspense,{fallback:(0,Y.jsx)(oo,{}),children:(0,Y.jsxs)(er,{children:[(0,Y.jsx)(W,{path:`/login`,element:(0,Y.jsx)(so,{})}),(0,Y.jsx)(W,{path:`/setup`,element:(0,Y.jsx)(co,{})}),(0,Y.jsx)(W,{path:`/banned`,element:(0,Y.jsx)(lo,{})}),(0,Y.jsx)(W,{path:`/*`,element:(0,Y.jsx)(Eo,{})})]})})})}function Eo(){let[e,t]=(0,N.useState)({kind:`loading`}),n=H(),r=U(),[i]=(0,N.useState)(()=>n.pathname);return(0,N.useEffect)(()=>{let e=new AbortController;return Z.fetchQuery({queryKey:A.session.current,queryFn:()=>Te(),staleTime:6e4}).then(n=>{if(!e.signal.aborted){if(n){Z.setQueryData(A.session.current,n),t({kind:`ready`,user:n}),n.isFirstBoot&&i!==`/setup`&&r(`/setup`,{replace:!0});return}Z.removeQueries({queryKey:A.session.current}),k(`/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,Y.jsx)(Qn,{to:`/banned`,replace:!0}):e.kind===`unauthenticated`?(0,Y.jsx)(Qn,{to:e.needsSetup?`/setup`:`/login?returnTo=${encodeURIComponent(n.pathname)}`,replace:!0}):(0,Y.jsx)(eo,{user:e.user,children:(0,Y.jsx)(to,{resetKey:n.pathname,children:(0,Y.jsxs)(er,{children:[(0,Y.jsx)(W,{path:`/`,element:(0,Y.jsx)(uo,{})}),(0,Y.jsx)(W,{path:`/usage`,element:(0,Y.jsx)(fo,{})}),(0,Y.jsx)(W,{path:`/providers`,element:(0,Y.jsx)(mo,{})}),(0,Y.jsx)(W,{path:`/providers/:providerId`,element:(0,Y.jsx)(po,{})}),(0,Y.jsx)(W,{path:`/combos`,element:(0,Y.jsx)(ho,{})}),(0,Y.jsx)(W,{path:`/quota`,element:(0,Y.jsx)(go,{})}),(0,Y.jsx)(W,{path:`/proxy`,element:(0,Y.jsx)(_o,{})}),(0,Y.jsx)(W,{path:`/console-log`,element:(0,Y.jsx)(xo,{})}),(0,Y.jsx)(W,{path:`/customization`,element:(0,Y.jsx)(So,{})}),(0,Y.jsx)(W,{path:`/model-lab`,element:(0,Y.jsx)(Co,{})}),(0,Y.jsx)(W,{path:`/cli-tools`,element:(0,Y.jsx)(yo,{})}),(0,Y.jsx)(W,{path:`/cli-tools/:toolId`,element:(0,Y.jsx)(bo,{})}),(0,Y.jsx)(W,{path:`/settings`,element:(0,Y.jsx)(vo,{})}),(0,Y.jsx)(W,{path:`*`,element:(0,Y.jsx)(Qn,{to:`/`,replace:!0})})]})})})}function Do(){return(0,Y.jsx)(ae,{client:Z,children:(0,Y.jsxs)(Br,{basename:`/console`,children:[(0,Y.jsx)(wo,{}),(0,Y.jsx)(To,{}),(0,Y.jsx)(m,{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 Oo(e){document.title=`Cartethyia Console`,qi().finally(()=>{Yi(),(0,ei.createRoot)(e).render((0,Y.jsx)(N.StrictMode,{children:(0,Y.jsx)(Do,{})}))})}export{Je as $,sa as A,mi as B,ga as C,da as D,wa as E,Fi as F,ci as G,ii as H,ki as I,Vr as J,pi as K,K as L,la as M,oa as N,ra as O,Z as P,Ye as Q,Di as R,La as S,ya as T,ui as U,hi as V,_i as W,An as X,U as Y,qr as Z,Oa as _,Sa as a,Aa as b,ba as c,Pa as d,Ke as et,_a as f,fa as g,pa as h,Fa as i,ua as j,ca as k,ka as l,xa as m,Oo as mountConsole,Ta as n,Re as nt,Ca as o,ha as p,li as q,ja as r,Ra as s,za as t,Ge as tt,Na as u,ma as v,Ia as w,Ma as x,va as y,Oi as z};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,r as a}from"./app-Cjq7nrwu.js";import{n as o,r as s,t as c}from"./terminal-Bd4ee8TA.js";import{t as l}from"./arrow-right-Dl5yKnp8.js";import{n as u,t as d}from"./github-badge-Booc5mNe.js";import{t as f}from"./log-in-BmRjy60c.js";import{t as p}from"./message-circle-CCxGwRvv.js";import{t as m}from"./shield-check-DVS0Foqh.js";import{t as h}from"./sparkles-BRaRUxAU.js";import{t as g}from"./use-reduced-motion-C4B0R6Sz.js";var _=e(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),v=i(),y=t(n(),1),b=r(),x=`/`,S=`/console`,C={night:{"--story-accent":`var(--color-story-night)`},core:{"--story-accent":`var(--color-story-core)`},blossom:{"--story-accent":`var(--color-story-blossom)`},voices:{"--story-accent":`var(--color-story-voices)`},red:{"--story-accent":`var(--color-story-red)`},denial:{"--story-accent":`var(--color-story-denial)`},shore:{"--story-accent":`var(--color-story-shore)`}},w=e=>`${x}assets/story/${e}`,T=e=>e.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),E=e=>{let t=D[e+1];return t===void 0?`Back to ${D[0]?.label??`the beginning`}`:`Go to ${T(t.location)}`},D=[{id:`blessed-maiden`,number:`01`,label:`The Blessed Maiden`,location:`THE FIRST CROSSING`,theme:`night`,title:`A single signal enters the unknown.`,description:`Every client begins with one request and a question: where should it go? Cartethyia gives that signal a reliable gateway — self-hosted, authenticated, and ready for the crossing.`,image:w(`fleurdelys_plus.webp`),imageAlt:`The Blessed Maiden beneath a luminous blue sky`,signals:[{label:`The first crossing`,value:`OPEN`,icon:`network`},{label:`The chosen vessel`,value:`YOURS`,icon:`shield`},{label:`The gate`,value:`ALIGNED`,icon:`sparkles`}]},{id:`resonant-core`,number:`02`,label:`The Resonant Core`,location:`THE ROUTING SANCTUM`,theme:`core`,title:`The route becomes the power.`,description:`One surface can speak to many providers. Cartethyia translates protocols, balances targets, and keeps each request moving through the right vessel — even when the first path goes quiet.`,image:w(`cartethyia-god.webp`),imageAlt:`Cartethyia surrounded by a celestial blue routing field`,signals:[{label:`The many voices`,value:`30+`,icon:`network`},{label:`The bridge`,value:`ALIGNED`,icon:`terminal`},{label:`The fallback`,value:`AWARE`,icon:`activity`}]},{id:`pink-blossom`,number:`03`,label:`The Pink Blossom Calm`,location:`THE QUIET CONTROL`,theme:`blossom`,title:`Behind every powerful system, there is a quiet place to govern.`,description:`Observe the flow, tune the balance, and let the models answer. Provider accounts, credentials, usage, and health stay in one calm console built for the person operating the route.`,image:w(`jinhsi-blossom.webp`),imageAlt:`Jinhsi beneath soft pink blossoms`,signals:[{label:`The quiet engine`,value:`AWAKE`,icon:`activity`},{label:`The studio`,value:`READY`,icon:`sparkles`},{label:`The balance`,value:`HELD`,icon:`shield`}]},{id:`many-voices`,number:`04`,label:`The Many Voices`,location:`THE LIVING NETWORK`,theme:`voices`,title:`Every route carries a living world.`,description:`Providers, clients, and models bring different voices to the crossing. Cartethyia gives them one dependable gateway without silencing what makes each path unique.`,image:w(`wuthering-waves-hiyuki-aemeath-hiyuki-rover.webp`),imageAlt:`A bright celebration of characters and connected voices`,signals:[{label:`The many voices`,value:`CONNECTED`,icon:`network`},{label:`The shared world`,value:`OPEN`,icon:`sparkles`},{label:`The crossing`,value:`ALIGNED`,icon:`terminal`}]},{id:`red-thread`,number:`05`,label:`The Red Thread`,location:`THE FRACTURED PATH`,theme:`red`,title:`A beautiful signal can still be dangerous.`,description:`Every powerful route attracts pressure. Cartethyia watches the boundary, rejects hostile paths, and keeps a single failure from tearing through the whole network.`,image:w(`phrolova-a.webp`),imageAlt:`A figure surrounded by dark red threads and fractured signals`,signals:[{label:`The threat`,value:`SEEN`,icon:`activity`},{label:`The boundary`,value:`HELD`,icon:`shield`},{label:`The fallback`,value:`READY`,icon:`network`}]},{id:`request-denial`,number:`06`,label:`The Gate of Discernment`,location:`THE GATE OF DISCERNMENT`,theme:`denial`,title:`Not every signal should pass.`,description:`Every game needs a gatekeeper. Cartethyia verifies intent, protects the route, and denies the requests that would fracture the system.`,image:w(`requestdeniawokkjpg.webp`),imageAlt:`A radiant gatekeeper surrounded by cascading signals`,signals:[{label:`The verdict`,value:`CLEAR`,icon:`shield`},{label:`The boundary`,value:`GUARDED`,icon:`network`},{label:`The route`,value:`TRUSTED`,icon:`sparkles`}]},{id:`shorekeeper`,number:`07`,label:`The Open Shore`,location:`THE SHOREKEEPER`,theme:`shore`,title:`The gateway is yours to shape.`,description:`Find your way back to the source, share your route, and join the people building a dependable gateway across a changing AI landscape.`,image:w(`Shorekeeper.webp`),imageAlt:`Shorekeeper watching over a luminous open shore`,signals:[{label:`The source`,value:`OPEN`,icon:`terminal`},{label:`The shore`,value:`AWAITS`,icon:`network`},{label:`The next step`,value:`YOURS`,icon:`sparkles`}]}],O={activity:s,network:o,shield:m,sparkles:h,terminal:c};function k({signal:e}){let t=O[e.icon];return(0,b.jsxs)(`div`,{className:`landing-signal-tile`,children:[(0,b.jsx)(`span`,{className:`landing-signal-icon`,children:(0,b.jsx)(t,{size:12,"aria-hidden":!0})}),(0,b.jsxs)(`div`,{className:`landing-signal-copy`,children:[(0,b.jsx)(`div`,{className:`landing-signal-label`,children:e.label}),(0,b.jsx)(`div`,{className:`landing-signal-value`,children:e.value})]})]})}function A(){let e=g(),t=e?`auto`:`smooth`,[n,r]=(0,y.useState)(0),[i,o]=(0,y.useState)(()=>new Set([0])),[s,m]=(0,y.useState)(!1),[h,v]=(0,y.useState)(!1);(0,y.useEffect)(()=>{let e=()=>v(window.scrollY>24);return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[]);let w=(0,y.useRef)([]);(0,y.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let e=new IntersectionObserver(e=>{let t=e.filter(e=>e.isIntersecting).sort((e,t)=>t.intersectionRatio-e.intersectionRatio)[0];if(t){let e=Number(t.target.dataset.chapterIndex);r(e),o(t=>t.has(e)?t:new Set([...t,e]))}},{threshold:[.35,.6,.85]});w.current.forEach(t=>{t&&e.observe(t)});let i=e=>{if(!e.target?.matches(`input, textarea, select, [contenteditable="true"]`)){if(e.key===`ArrowDown`||e.key===`ArrowRight`||e.key===`PageDown`){e.preventDefault();let r=Math.min(D.length-1,n+1);w.current[r]?.scrollIntoView({behavior:t,block:`start`})}else if(e.key===`ArrowUp`||e.key===`ArrowLeft`||e.key===`PageUp`){e.preventDefault();let r=Math.max(0,n-1);w.current[r]?.scrollIntoView({behavior:t,block:`start`})}}};return window.addEventListener(`keydown`,i),()=>{e.disconnect(),window.removeEventListener(`keydown`,i)}},[n,t]);let T=e=>{w.current[e]?.scrollIntoView({behavior:t,block:`start`})},A=D[n]?.theme??`night`,j=(t,n=``)=>i.has(t)?e?``:`animate-story-reveal-up ${n}`.trim():`opacity-0`;return(0,b.jsxs)(`div`,{className:`relative min-h-screen overflow-x-clip bg-story-deep font-sans text-story-ink`,id:`top`,style:C[A],children:[(0,b.jsx)(`header`,{className:`landing-header`,"data-scrolled":h,children:(0,b.jsxs)(`div`,{className:`landing-header-inner`,"data-scrolled":h,children:[(0,b.jsxs)(`a`,{className:`landing-header-brand`,href:`#top`,onClick:e=>{e.preventDefault(),T(0)},children:[(0,b.jsx)(`span`,{className:`flex size-9 items-center justify-center rounded-xl border border-story-white/25 bg-story-white p-0.5`,children:(0,b.jsx)(`img`,{className:`size-full rounded-lg object-cover`,src:`${x}assets/brand/favicon.jpg`,alt:``})}),(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`strong`,{className:`block font-heading text-lead leading-none`,children:`Cartethyia`}),(0,b.jsx)(`small`,{className:`mt-1 block font-mono text-micro font-medium leading-none tracking-code text-story-white/50`,children:`AI PROXY ROUTER`})]})]}),(0,b.jsxs)(`nav`,{className:`landing-header-desktop-nav`,"aria-label":`Primary navigation`,children:[(0,b.jsxs)(`button`,{type:`button`,onClick:()=>T(0),children:[(0,b.jsx)(u,{size:14,"aria-hidden":!0}),`Home`]}),(0,b.jsxs)(`a`,{href:S,children:[(0,b.jsx)(c,{size:14,"aria-hidden":!0}),`Console`]}),(0,b.jsxs)(`a`,{href:a,target:`_blank`,rel:`noreferrer`,children:[(0,b.jsx)(p,{size:14,"aria-hidden":!0}),`Community`]})]}),(0,b.jsxs)(`div`,{className:`landing-header-actions`,children:[(0,b.jsx)(d,{className:`landing-header-github`}),(0,b.jsxs)(`button`,{type:`button`,"aria-label":s?`Show story`:`Show all`,"aria-pressed":s,onClick:()=>m(e=>!e),className:`landing-header-control landing-header-show-all${s?` is-active`:``}`,children:[(0,b.jsx)(`span`,{className:`size-3.5 shrink-0 rounded-full bg-current`,"aria-hidden":!0}),s?`Story`:`All view`]}),(0,b.jsxs)(`a`,{className:`landing-header-control landing-header-console`,href:S,children:[`Enter console`,(0,b.jsx)(f,{size:14,"aria-hidden":!0})]})]})]})}),s?(0,b.jsx)(`main`,{className:`px-12 pb-17.5 pt-44 max-compact:px-8`,children:(0,b.jsxs)(`div`,{className:`mx-auto w-full max-w-640`,children:[(0,b.jsxs)(`div`,{className:`mb-10.5 flex flex-wrap items-end justify-between gap-5.25`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-code text-story-white/50`,children:`All chapters · 7 stories`}),(0,b.jsx)(`h2`,{className:`mt-3.5 font-serif text-hero font-normal leading-none tracking-tight text-story-white`,children:`Everything at a glance`}),(0,b.jsx)(`p`,{className:`mt-3.5 max-w-60ch text-body leading-5 text-story-white/65`,children:`Hover a card to lift it — click to jump to its story. All 7 visuals, captions and signals visible without scrolling forever.`})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-3.5 text-badge text-story-white/50`,children:[(0,b.jsx)(`span`,{className:`h-3 w-3 rounded-full bg-story-success shadow-glow-success`,"aria-hidden":!0}),` Stylish overview`]})]}),(0,b.jsx)(`div`,{className:`grid gap-7 sm:grid-cols-2 lg:grid-cols-3`,children:D.map((e,t)=>(0,b.jsxs)(`article`,{onClick:()=>{m(!1),requestAnimationFrame(()=>T(t))},className:`group relative flex cursor-pointer flex-col overflow-hidden rounded-hero border bg-story-surface text-left transition hover:-translate-y-1 hover:shadow-window focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-story-white/30`,style:C[e.theme],tabIndex:0,role:`button`,"aria-label":`Open ${e.label}`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),m(!1),requestAnimationFrame(()=>T(t)))},children:[(0,b.jsxs)(`div`,{className:`relative h-95 overflow-hidden`,children:[(0,b.jsx)(`img`,{src:e.image,alt:e.imageAlt,className:`h-full w-full object-cover transition duration-500 group-hover:scale-104`,loading:`lazy`,decoding:`async`}),(0,b.jsx)(`div`,{className:`absolute inset-0 bg-gradient-to-t from-story-deep/85 via-story-deep/10 to-transparent`}),(0,b.jsxs)(`div`,{className:`absolute left-3 top-3 flex items-center gap-3`,children:[(0,b.jsx)(`span`,{className:`rounded-chip bg-story-white px-3 py-1 font-mono text-micro font-bold tracking-label text-story-deep`,children:e.number}),(0,b.jsx)(`span`,{className:`rounded-chip border border-story-white/20 bg-story-black/25 px-3.5 py-1 text-micro font-bold uppercase tracking-label text-story-white backdrop-blur`,children:e.theme})]}),(0,b.jsxs)(`div`,{className:`absolute bottom-2 left-3 right-3 flex items-center justify-between text-micro font-bold uppercase tracking-label text-story-white/75`,children:[(0,b.jsx)(`span`,{className:`truncate`,children:e.location}),(0,b.jsx)(_,{size:13,"aria-hidden":!0,className:`opacity-60 group-hover:opacity-100`})]})]}),(0,b.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3.5 p-7`,children:[(0,b.jsx)(`h3`,{className:`font-serif text-title font-normal leading-tight tracking-tight text-story-white`,children:e.title}),(0,b.jsx)(`p`,{className:`line-clamp-2 text-caption leading-5 text-story-white/65`,children:e.description}),(0,b.jsx)(`div`,{className:`mt-1.75 flex flex-wrap gap-3`,children:e.signals.map(t=>{let n=O[t.icon];return(0,b.jsxs)(`span`,{className:`inline-flex items-center gap-1.75 rounded-chip border border-story-white/10 bg-story-white/6 px-3.5 py-1.75 text-micro font-semibold uppercase tracking-label text-story-white/75`,children:[(0,b.jsx)(n,{size:12,"aria-hidden":!0,className:`text-story-accent`}),t.label,(0,b.jsx)(`strong`,{className:`font-bold text-story-white`,children:t.value})]},`${e.id}-${t.label}`)})})]})]},e.id))})]})}):(0,b.jsx)(`main`,{className:`relative z-1`,children:D.map((e,t)=>(0,b.jsxs)(`article`,{id:`chapter-${t}`,"data-chapter-index":t,ref:e=>{w.current[t]=e},className:`relative flex min-h-screen items-center overflow-hidden bg-story-deep bg-[linear-gradient(to_right,color-mix(in_srgb,var(--story-accent)_2.4%,transparent)_1px,transparent_1px),linear-gradient(to_bottom,color-mix(in_srgb,var(--story-accent)_2.4%,transparent)_1px,transparent_1px)] bg-[length:44px_100%,100%_40px] py-16 max-medium:min-h-0 max-medium:py-36 max-compact:py-52 max-compact:pb-16`,style:C[e.theme],"aria-labelledby":`chapter-title-${t}`,children:[(0,b.jsx)(`div`,{className:`absolute inset-0 z-0 scale-108 bg-cover bg-center mix-blend-screen`,style:{backgroundImage:`url(${e.image})`,filter:`blur(27px) saturate(1.14)`,opacity:.24},"aria-hidden":!0}),(0,b.jsxs)(`div`,{className:`landing-story-shell relative z-1 mx-auto`,children:[(0,b.jsxs)(`figure`,{className:`landing-story-visual relative row-start-1 min-w-0 w-full self-center overflow-hidden border border-story-white/20 bg-[#090d16] shadow-popout after:absolute after:inset-0 after:bg-gradient-to-b after:from-story-deep/4 after:via-story-deep/30 after:to-story-deep/60 after:content-[''] ${t%2==0?`col-start-1`:`col-start-2`}`,children:[(0,b.jsx)(`img`,{className:`block size-full object-cover object-center`,src:e.image,alt:e.imageAlt,loading:t===0?`eager`:`lazy`,fetchPriority:t===0?`high`:`low`,decoding:`async`}),(0,b.jsxs)(`figcaption`,{className:`absolute inset-x-4 bottom-4 z-1 flex justify-between font-mono text-micro font-medium leading-none tracking-label text-story-white/70 uppercase`,children:[e.location,` `,(0,b.jsx)(`span`,{className:`text-story-accent`,children:e.number})]})]}),(0,b.jsxs)(`div`,{className:`min-w-0 ${t%2==0?`col-start-2 row-start-1`:`col-start-1 row-start-1`}`,children:[(0,b.jsx)(`h1`,{className:`mt-6 max-w-12ch font-head text-story-hero font-normal leading-[0.98] tracking-[-0.045em] text-balance max-compact:max-w-13ch max-compact:text-story-hero-compact ${j(t,`delay-100`)}`,id:`chapter-title-${t}`,children:e.title}),(0,b.jsx)(`p`,{className:`landing-story-description mt-10 max-h-none max-w-[545px] text-lead leading-14 text-story-white/70 max-compact:max-w-full max-compact:text-body max-compact:leading-6 ${j(t,`delay-150`)}`,children:e.description}),(0,b.jsx)(`div`,{className:`landing-signal-grid ${j(t,`delay-200`)}`,children:e.signals.map(t=>(0,b.jsx)(k,{signal:t},`${e.id}-${t.label}`))}),(0,b.jsx)(`div`,{className:`mt-7 flex flex-wrap gap-3.5 max-compact:mt-5 ${j(t,`delay-300`)}`,children:(0,b.jsxs)(`button`,{className:`inline-flex h-22 items-center gap-2 rounded-control border border-story-white/25 bg-story-white/8 px-4.5 text-body font-bold text-story-white transition-transform active:scale-97 hover:bg-story-white/18 max-compact:h-21 max-compact:px-3.5 max-compact:text-badge`,type:`button`,onClick:()=>T(t===D.length-1?0:t+1),children:[E(t),(0,b.jsx)(l,{size:15,"aria-hidden":!0})]})})]})]})]},e.id))})]})}function j(e){document.title=`Cartethyia — The One-Stop AI Proxy Router`,(0,v.createRoot)(e).render((0,b.jsx)(y.StrictMode,{children:(0,b.jsx)(A,{})}))}export{j as mountLanding};