cartethyia 2.7.3 → 2.7.5

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 (625) hide show
  1. package/.env.example +2 -0
  2. package/README.md +17 -5
  3. package/dist/dashboard/assets/{BannedPage-2TJD37Hb.js → BannedPage-Cj15GsMp.js} +1 -1
  4. package/dist/dashboard/assets/BannedPage-Cj15GsMp.js.gz +0 -0
  5. package/dist/dashboard/assets/ClaimGiftsButton-D83pBJ6J.js +1 -0
  6. package/dist/dashboard/assets/ClaimGiftsButton-D83pBJ6J.js.gz +0 -0
  7. package/dist/dashboard/assets/{CliToolDetailPage-xefJNRmJ.js → CliToolDetailPage-DZKmVuJN.js} +1 -1
  8. package/dist/dashboard/assets/CliToolDetailPage-DZKmVuJN.js.gz +0 -0
  9. package/dist/dashboard/assets/{CliToolsPage-Rj9iHQ3F.js → CliToolsPage-BIccZmeL.js} +1 -1
  10. package/dist/dashboard/assets/CliToolsPage-BIccZmeL.js.gz +0 -0
  11. package/dist/dashboard/assets/CombosPage-DEEKkYD-.js +1 -0
  12. package/dist/dashboard/assets/CombosPage-DEEKkYD-.js.gz +0 -0
  13. package/dist/dashboard/assets/ConsoleLogPage-D5rol2j2.js +1 -0
  14. package/dist/dashboard/assets/ConsoleLogPage-D5rol2j2.js.gz +0 -0
  15. package/dist/dashboard/assets/CustomizationPage-BKj_r0rp.js +1 -0
  16. package/dist/dashboard/assets/CustomizationPage-BKj_r0rp.js.gz +0 -0
  17. package/dist/dashboard/assets/InjectSystemPromptPanel-B5nZvmf0.js +656 -0
  18. package/dist/dashboard/assets/InjectSystemPromptPanel-B5nZvmf0.js.gz +0 -0
  19. package/dist/dashboard/assets/{LoginPage-C4w7vea-.js → LoginPage-DkXb6dx-.js} +1 -1
  20. package/dist/dashboard/assets/LoginPage-DkXb6dx-.js.gz +0 -0
  21. package/dist/dashboard/assets/{ModelPicker-BtPcAfot.js → ModelPicker-DnQPSIA8.js} +1 -1
  22. package/dist/dashboard/assets/ModelPicker-DnQPSIA8.js.gz +0 -0
  23. package/dist/dashboard/assets/OverviewPage-Ci2wQKUz.js +1 -0
  24. package/dist/dashboard/assets/OverviewPage-Ci2wQKUz.js.gz +0 -0
  25. package/dist/dashboard/assets/ProviderDetailPage-odlgYrOg.js +5 -0
  26. package/dist/dashboard/assets/ProviderDetailPage-odlgYrOg.js.gz +0 -0
  27. package/dist/dashboard/assets/ProviderIcon-EfeloBn4.js +1 -0
  28. package/dist/dashboard/assets/ProviderIcon-EfeloBn4.js.gz +0 -0
  29. package/dist/dashboard/assets/ProvidersPage-CqFBQEB8.js +1 -0
  30. package/dist/dashboard/assets/ProvidersPage-CqFBQEB8.js.gz +0 -0
  31. package/dist/dashboard/assets/ProxyPage-5SnUSy3j.js +9 -0
  32. package/dist/dashboard/assets/ProxyPage-5SnUSy3j.js.gz +0 -0
  33. package/dist/dashboard/assets/QuotaPage-CmnMDzhP.js +1 -0
  34. package/dist/dashboard/assets/QuotaPage-CmnMDzhP.js.gz +0 -0
  35. package/dist/dashboard/assets/SettingsPage-BJtRZ4qD.js +1 -0
  36. package/dist/dashboard/assets/SettingsPage-BJtRZ4qD.js.gz +0 -0
  37. package/dist/dashboard/assets/{SetupPage-BQS0Rx_u.js → SetupPage-WTa0sktC.js} +1 -1
  38. package/dist/dashboard/assets/SetupPage-WTa0sktC.js.gz +0 -0
  39. package/dist/dashboard/assets/{StudioPage-TP7voAQ0.js → StudioPage-BfAb5-o_.js} +3 -3
  40. package/dist/dashboard/assets/StudioPage-BfAb5-o_.js.gz +0 -0
  41. package/dist/dashboard/assets/UsagePage-BNzeZ2Vk.js +56 -0
  42. package/dist/dashboard/assets/UsagePage-BNzeZ2Vk.js.gz +0 -0
  43. package/dist/dashboard/assets/api-keys-l29JROPv.js +1 -0
  44. package/dist/dashboard/assets/api-keys-l29JROPv.js.gz +0 -0
  45. package/dist/dashboard/assets/app--PJWq8_C.css +2 -0
  46. package/dist/dashboard/assets/app--PJWq8_C.css.gz +0 -0
  47. package/dist/dashboard/assets/{assert-C0YYuZJ4.js → assert-C0K-c4eo.js} +1 -1
  48. package/dist/dashboard/assets/assert-C0K-c4eo.js.gz +0 -0
  49. package/dist/dashboard/assets/{badge-B_DMpMJN.js → badge-DfbhQU4k.js} +1 -1
  50. package/dist/dashboard/assets/badge-DfbhQU4k.js.gz +0 -0
  51. package/dist/dashboard/assets/{banner-DMrMPmth.js → banner-BllT4LcF.js} +1 -1
  52. package/dist/dashboard/assets/banner-BllT4LcF.js.gz +0 -0
  53. package/dist/dashboard/assets/brand/login_register.jpg +0 -0
  54. package/dist/dashboard/assets/brand/login_register_initial.jpg +0 -0
  55. package/dist/dashboard/assets/brand/og_bansos.jpg +0 -0
  56. package/dist/dashboard/assets/brand/og_image.jpg +0 -0
  57. package/dist/dashboard/assets/{card-Be5Uzamx.js → card-CtkX66Wd.js} +1 -1
  58. package/dist/dashboard/assets/card-CtkX66Wd.js.gz +0 -0
  59. package/dist/dashboard/assets/chevron-left-Bf6CaTSJ.js +1 -0
  60. package/dist/dashboard/assets/chevron-left-Bf6CaTSJ.js.gz +0 -0
  61. package/dist/dashboard/assets/{cli-tools-muFRphDu.js → cli-tools-CQXVMn4P.js} +1 -1
  62. package/dist/dashboard/assets/cli-tools-CQXVMn4P.js.gz +0 -0
  63. package/dist/dashboard/assets/{clipboard-button-DOfrVmsi.js → clipboard-button-BQqBQd2n.js} +1 -1
  64. package/dist/dashboard/assets/clipboard-button-BQqBQd2n.js.gz +0 -0
  65. package/dist/dashboard/assets/{dialog-C9omdjQt.js → dialog-BEK7KP0H.js} +1 -1
  66. package/dist/dashboard/assets/dialog-BEK7KP0H.js.gz +0 -0
  67. package/dist/dashboard/assets/{drawer-Bm8WKaGY.js → drawer-BrTEZ8zu.js} +1 -1
  68. package/dist/dashboard/assets/drawer-BrTEZ8zu.js.gz +0 -0
  69. package/dist/dashboard/assets/entry-CHWxbS56.js +1 -0
  70. package/dist/dashboard/assets/entry-CHWxbS56.js.gz +0 -0
  71. package/dist/dashboard/assets/{entry-q5HwZ8nN.js → entry-EBHJ3DrE.js} +1 -1
  72. package/dist/dashboard/assets/entry-EBHJ3DrE.js.gz +0 -0
  73. package/dist/dashboard/assets/entry-LCS85hiq.js +4 -0
  74. package/dist/dashboard/assets/entry-LCS85hiq.js.gz +0 -0
  75. package/dist/dashboard/assets/{formatters-BTScrQpe.js → formatters-BAACA727.js} +1 -1
  76. package/dist/dashboard/assets/formatters-BAACA727.js.gz +0 -0
  77. package/dist/dashboard/assets/{github-badge-Orjuzemr.js → github-badge-YSCE4UC2.js} +1 -1
  78. package/dist/dashboard/assets/github-badge-YSCE4UC2.js.gz +0 -0
  79. package/dist/dashboard/assets/{index-cPrX5vn6.js → index-FQlj0HUT.js} +2 -2
  80. package/dist/dashboard/assets/index-FQlj0HUT.js.gz +0 -0
  81. package/dist/dashboard/assets/{inline-Dvux8w-0.js → inline-C4gU5iOL.js} +1 -1
  82. package/dist/dashboard/assets/inline-C4gU5iOL.js.gz +0 -0
  83. package/dist/dashboard/assets/{input-CU1Rgf3p.js → input-BHHX_Tmm.js} +1 -1
  84. package/dist/dashboard/assets/input-BHHX_Tmm.js.gz +0 -0
  85. package/dist/dashboard/assets/{layout-C_7A6H55.js → layout-CajrYUnD.js} +1 -1
  86. package/dist/dashboard/assets/{layout-C_7A6H55.js.gz → layout-CajrYUnD.js.gz} +0 -0
  87. package/dist/dashboard/assets/{list-row-CzFvogbj.js → list-row-Bx2I7XUe.js} +1 -1
  88. package/dist/dashboard/assets/list-row-Bx2I7XUe.js.gz +0 -0
  89. package/dist/dashboard/assets/live-DNNqRbj2.js +1 -0
  90. package/dist/dashboard/assets/live-DNNqRbj2.js.gz +0 -0
  91. package/dist/dashboard/assets/minimize-2-BTmMTK4o.js +1 -0
  92. package/dist/dashboard/assets/minimize-2-BTmMTK4o.js.gz +0 -0
  93. package/dist/dashboard/assets/{mutation-JJGQm8TD.js → mutation-Rr0TIvcj.js} +1 -1
  94. package/dist/dashboard/assets/mutation-Rr0TIvcj.js.gz +0 -0
  95. package/dist/dashboard/assets/network-C5UBACrJ.js +1 -0
  96. package/dist/dashboard/assets/network-C5UBACrJ.js.gz +0 -0
  97. package/dist/dashboard/assets/numbers-CUWAZK4J.js +2 -0
  98. package/dist/dashboard/assets/numbers-CUWAZK4J.js.gz +0 -0
  99. package/dist/dashboard/assets/pagination-Xsi9Qx04.js +1 -0
  100. package/dist/dashboard/assets/pagination-Xsi9Qx04.js.gz +0 -0
  101. package/dist/dashboard/assets/{query-keys-CLaNz8Xz.js → query-keys-BloKtaXJ.js} +1 -1
  102. package/dist/dashboard/assets/query-keys-BloKtaXJ.js.gz +0 -0
  103. package/dist/dashboard/assets/quota-DvQbD_sr.js +1 -0
  104. package/dist/dashboard/assets/quota-DvQbD_sr.js.gz +0 -0
  105. package/dist/dashboard/assets/{routing-BEH32QOC.js → routing-in0f_IfK.js} +1 -1
  106. package/dist/dashboard/assets/routing-in0f_IfK.js.gz +0 -0
  107. package/dist/dashboard/assets/{select-B3iTetHN.js → select-BLULNqTp.js} +2 -2
  108. package/dist/dashboard/assets/select-BLULNqTp.js.gz +0 -0
  109. package/dist/dashboard/assets/settings-CcGczj6I.js +1 -0
  110. package/dist/dashboard/assets/settings-CcGczj6I.js.gz +0 -0
  111. package/dist/dashboard/assets/shield-BMQNxORh.js +1 -0
  112. package/dist/dashboard/assets/shield-BMQNxORh.js.gz +0 -0
  113. package/dist/dashboard/assets/{stack-KrOrm7JZ.js → stack-D2lIR0tg.js} +1 -1
  114. package/dist/dashboard/assets/stack-D2lIR0tg.js.gz +0 -0
  115. package/dist/dashboard/assets/{state-DLS7IDMy.js → state-DTARjfiW.js} +1 -1
  116. package/dist/dashboard/assets/state-DTARjfiW.js.gz +0 -0
  117. package/dist/dashboard/assets/{switch-42ItvbAs.js → switch-c0oPSnqW.js} +1 -1
  118. package/dist/dashboard/assets/switch-c0oPSnqW.js.gz +0 -0
  119. package/dist/dashboard/assets/{useMutation-Dmnfh1Ue.js → useMutation-m8WGNPrz.js} +1 -1
  120. package/dist/dashboard/assets/useMutation-m8WGNPrz.js.gz +0 -0
  121. package/dist/dashboard/console-backgrounds.jpg +0 -0
  122. package/dist/dashboard/console-backgrounds_initial.jpg +0 -0
  123. package/dist/dashboard/index.html +2 -2
  124. package/dist/dashboard/index.html.gz +0 -0
  125. package/dist/dashboard/precompressed-assets.json +59 -57
  126. package/migrations/full-postgres/0027_qoder_identity_genuine_seed.sql +9 -10
  127. package/migrations/full-postgres/0032_add_provider_pool_accounts.sql +53 -0
  128. package/migrations/full-postgres/0033_add_api_key_ban.sql +9 -0
  129. package/migrations/full-postgres/0034_add_api_key_ban_until.sql +7 -0
  130. package/migrations/full-postgres/0035_align_pool_account_status_enum.sql +21 -0
  131. package/migrations/full-postgres/0036_system_prompt_presets_refs.sql +10 -0
  132. package/migrations/full-postgres/0037_share_concurrency_scope.sql +3 -0
  133. package/migrations/full-postgres/0038_add_accounts_quota_snapshot.sql +7 -0
  134. package/migrations/full-postgres/0039_add_telemetry_provider_model_indexes.sql +13 -0
  135. package/migrations/full-postgres/0040_add_models_dialect.sql +3 -0
  136. package/migrations/full-postgres/0041_add_daily_checkin_ledger_account_fk.sql +7 -0
  137. package/migrations/lite-sqlite3/0027_qoder_identity_genuine_seed.sql +9 -10
  138. package/migrations/lite-sqlite3/0032_add_provider_pool_accounts.sql +44 -0
  139. package/migrations/lite-sqlite3/0033_add_api_key_ban.sql +8 -0
  140. package/migrations/lite-sqlite3/0034_add_api_key_ban_until.sql +5 -0
  141. package/migrations/lite-sqlite3/0035_align_pool_account_status_enum.sql +6 -0
  142. package/migrations/lite-sqlite3/0036_system_prompt_presets_refs.sql +14 -0
  143. package/migrations/lite-sqlite3/0037_share_concurrency_scope.sql +3 -0
  144. package/migrations/lite-sqlite3/0038_add_accounts_quota_snapshot.sql +4 -0
  145. package/migrations/lite-sqlite3/0039_add_telemetry_provider_model_indexes.sql +6 -0
  146. package/migrations/lite-sqlite3/0040_add_models_dialect.sql +3 -0
  147. package/migrations/lite-sqlite3/0041_add_daily_checkin_ledger_account_fk.sql +26 -0
  148. package/package.json +4 -5
  149. package/scripts/cli/update.ts +15 -41
  150. package/src/boot/app.ts +67 -10
  151. package/src/boot/dependencies.ts +786 -732
  152. package/src/boot/lifecycle.ts +11 -12
  153. package/src/config/cooldowns.ts +34 -55
  154. package/src/config/network.ts +8 -4
  155. package/src/config/package-paths.ts +1 -1
  156. package/src/config/providers.ts +13 -14
  157. package/src/config/resources.ts +0 -5
  158. package/src/config/runtime.ts +2 -5
  159. package/src/config/spec.ts +26 -6
  160. package/src/console/api-keys/ban-constants.ts +38 -0
  161. package/src/console/api-keys/contracts.ts +92 -31
  162. package/src/console/api-keys/routes.ts +131 -6
  163. package/src/console/audit/routes.ts +3 -3
  164. package/src/console/auth/access.ts +4 -4
  165. package/src/console/auth/account-reset.ts +5 -5
  166. package/src/console/auth/audit-recorder.ts +1 -1
  167. package/src/console/auth/lockout.ts +7 -3
  168. package/src/console/auth/row-coercion.ts +57 -12
  169. package/src/console/auth/session-resolver.ts +1 -1
  170. package/src/console/auth/session-service.ts +8 -2
  171. package/src/console/auth/session.ts +40 -34
  172. package/src/console/auth/setup-service.ts +4 -3
  173. package/src/console/auth/user-store.ts +1 -1
  174. package/src/console/backup/9router-map.ts +0 -3
  175. package/src/console/backup/contracts.ts +11 -9
  176. package/src/console/backup/export-endpoint.ts +11 -12
  177. package/src/console/backup/nine-router.ts +1 -7
  178. package/src/console/backup/routes.ts +32 -36
  179. package/src/console/backup/service.ts +468 -468
  180. package/src/console/backup/store.ts +47 -29
  181. package/src/console/backup/validate.ts +11 -1
  182. package/src/console/cli-tools/contracts.ts +7 -7
  183. package/src/console/cli-tools/injectors/cline.ts +110 -110
  184. package/src/console/cli-tools/injectors/codex.ts +181 -181
  185. package/src/console/cli-tools/injectors/copilot.ts +108 -108
  186. package/src/console/cli-tools/injectors/driver.ts +247 -247
  187. package/src/console/cli-tools/injectors/jcode.ts +115 -115
  188. package/src/console/cli-tools/injectors/openclaw.ts +161 -161
  189. package/src/console/cli-tools/injectors/opencode.ts +153 -153
  190. package/src/console/cli-tools/routes.ts +4 -4
  191. package/src/console/cli-tools/service.ts +1 -1
  192. package/src/console/cli-tools/store.ts +2 -2
  193. package/src/console/console-router-guards.ts +2 -2
  194. package/src/console/console-router.ts +36 -4
  195. package/src/console/dashboard-assets.ts +9 -9
  196. package/src/console/data-management/routes.ts +3 -3
  197. package/src/console/domain-registration.ts +18 -4
  198. package/src/console/inferhub/client.ts +0 -7
  199. package/src/console/inferhub/key-store.ts +1 -1
  200. package/src/console/inferhub/normalize.ts +2 -2
  201. package/src/console/inferhub/routes.ts +1 -1
  202. package/src/console/inferhub/types.ts +1 -1
  203. package/src/console/observability/contracts.ts +5 -1
  204. package/src/console/observability/live.ts +34 -21
  205. package/src/console/observability/logs.ts +4 -4
  206. package/src/console/observability/performance.ts +3 -3
  207. package/src/console/observability/routes.ts +3 -3
  208. package/src/console/observability/sse.ts +62 -8
  209. package/src/console/observability/store.ts +36 -20
  210. package/src/console/providers/catalog/catalog-projections.ts +1 -1
  211. package/src/console/providers/catalog/contracts.ts +82 -22
  212. package/src/console/providers/catalog/model-operations.ts +1 -1
  213. package/src/console/providers/catalog/provider-operations.ts +110 -17
  214. package/src/console/providers/catalog/public-model-store.ts +0 -0
  215. package/src/console/providers/catalog/routes.ts +30 -6
  216. package/src/console/providers/catalog/store-helpers.ts +349 -326
  217. package/src/console/providers/catalog/store.ts +1662 -1292
  218. package/src/console/providers/detail/routes.ts +4 -4
  219. package/src/console/providers/oauth/callback-listener.ts +100 -18
  220. package/src/console/providers/oauth/routes.ts +95 -16
  221. package/src/console/quota/account-quota-global.ts +41 -3
  222. package/src/console/quota/account-quota-shared.ts +10 -3
  223. package/src/console/quota/account-quota-tenant.ts +285 -67
  224. package/src/console/quota/account-test-egress.ts +4 -4
  225. package/src/console/quota/daily-growth-job.ts +308 -0
  226. package/src/console/quota/native-identity.ts +2 -2
  227. package/src/console/quota/quota-view.ts +1 -1
  228. package/src/console/remote-support/routes.ts +1 -1
  229. package/src/console/remote-support/service.ts +2 -2
  230. package/src/console/routing/model/contracts.ts +1 -1
  231. package/src/console/routing/model/routes.ts +3 -3
  232. package/src/console/routing/pools/contracts.ts +13 -10
  233. package/src/console/routing/pools/import-parse.ts +3 -3
  234. package/src/console/routing/pools/operations.ts +14 -7
  235. package/src/console/routing/pools/probe-verdict.ts +8 -3
  236. package/src/console/routing/pools/relay-deploy.ts +12 -12
  237. package/src/console/routing/pools/routes.ts +3 -3
  238. package/src/console/routing/pools/store.ts +21 -1
  239. package/src/console/settings/contracts.ts +29 -2
  240. package/src/console/settings/routes.ts +3 -3
  241. package/src/console/settings/store.ts +20 -0
  242. package/src/console/share/share-router.ts +112 -44
  243. package/src/console/share/share-stats.ts +109 -39
  244. package/src/console/share/share-usage.ts +1 -1
  245. package/src/console/shared/errors.ts +2 -2
  246. package/src/console/shared/object.ts +18 -0
  247. package/src/console/shared/read-through-cache.ts +42 -6
  248. package/src/console/shared/transaction.ts +14 -0
  249. package/src/console/system-prompt/contracts.ts +89 -12
  250. package/src/console/system-prompt/routes.ts +98 -45
  251. package/src/console/updates/apply-update.ts +244 -0
  252. package/src/console/updates/routes.ts +256 -98
  253. package/src/main.ts +11 -5
  254. package/src/network/http2-bidi.ts +1 -1
  255. package/src/network/ip-utils.ts +298 -0
  256. package/src/network/outbound-fetch.ts +76 -5
  257. package/src/network/pool/agent.ts +7 -6
  258. package/src/network/pool/byte-accounting.ts +1 -1
  259. package/src/network/pool/resolver.ts +55 -51
  260. package/src/network/pool/selector.ts +150 -136
  261. package/src/network/pool-cooldown-store.ts +71 -16
  262. package/src/network/pool-health-machine.ts +22 -2
  263. package/src/network/rate-limit-verdict.ts +68 -0
  264. package/src/network/retry.ts +1 -1
  265. package/src/network/ssrf.ts +24 -75
  266. package/src/observability/event-log.ts +2 -2
  267. package/src/observability/event-query.ts +286 -214
  268. package/src/observability/log-sanitize.ts +1 -1
  269. package/src/observability/metrics.ts +4 -4
  270. package/src/observability/payload-capture.ts +6 -5
  271. package/src/observability/payload-store.ts +1 -1
  272. package/src/observability/runtime-metrics.ts +1 -1
  273. package/src/observability/telemetry-buffer.ts +12 -3
  274. package/src/observability/telemetry-reconciliation.ts +3 -3
  275. package/src/observability/telemetry-status.ts +1 -1
  276. package/src/observability/token-speed.ts +1 -1
  277. package/src/persistence/connection-url.ts +1 -1
  278. package/src/persistence/db-handle.ts +1 -1
  279. package/src/persistence/db-pg.ts +2 -2
  280. package/src/persistence/db-sqlite.ts +10 -5
  281. package/src/persistence/dialect.ts +5 -1
  282. package/src/persistence/readiness.ts +19 -7
  283. package/src/persistence/redis.ts +1 -1
  284. package/src/persistence/schema.ts +177 -45
  285. package/src/persistence/shared-cache.ts +2 -2
  286. package/src/persistence/sort-order.ts +1 -1
  287. package/src/persistence/stores/api-key-store.ts +109 -4
  288. package/src/persistence/stores/share-store.ts +20 -8
  289. package/src/persistence/stores/telemetry-store.ts +1 -1
  290. package/src/persistence/system-prompt-store.ts +63 -18
  291. package/src/persistence/tenant-preferences.ts +1 -1
  292. package/src/persistence/ttl-cache.ts +3 -3
  293. package/src/persistence/usage-flush.ts +7 -2
  294. package/src/protocol/canonical-model.ts +1 -1
  295. package/src/protocol/codecs.ts +12 -16
  296. package/src/protocol/dsml.ts +3 -49
  297. package/src/protocol/gateway-error.ts +6 -3
  298. package/src/protocol/image-clamp.ts +2 -2
  299. package/src/protocol/image-generation.ts +2 -2
  300. package/src/protocol/reasoning-text.ts +1 -1
  301. package/src/protocol/reasoning.ts +7 -52
  302. package/src/protocol/registry.ts +50 -15
  303. package/src/protocol/request/chat.ts +46 -19
  304. package/src/protocol/request/codex.ts +1 -1
  305. package/src/protocol/request/messages.ts +46 -14
  306. package/src/protocol/request/responses.ts +19 -10
  307. package/src/protocol/response/chat.ts +27 -12
  308. package/src/protocol/response/codex.ts +2 -2
  309. package/src/protocol/response/gemini.ts +1 -1
  310. package/src/protocol/response/messages.ts +6 -6
  311. package/src/protocol/response/omp-tool-call-markup.ts +1 -1
  312. package/src/protocol/response/responses.ts +3 -3
  313. package/src/protocol/sse-decoder.ts +64 -4
  314. package/src/protocol/stop-reason.ts +2 -2
  315. package/src/protocol/think-split.ts +347 -0
  316. package/src/protocol/translation/attachment-integrity.ts +3 -3
  317. package/src/protocol/translation/cache-controls.ts +8 -20
  318. package/src/protocol/translation/capabilities.ts +8 -8
  319. package/src/protocol/translation/dialect/deepseek.ts +10 -0
  320. package/src/protocol/translation/dialect/inband.ts +39 -0
  321. package/src/protocol/translation/dialect/model-thinking.ts +89 -0
  322. package/src/protocol/translation/dialect/qwen.ts +114 -0
  323. package/src/protocol/translation/dialect/resolver.ts +83 -0
  324. package/src/protocol/translation/dialect/rules.ts +93 -0
  325. package/src/protocol/translation/dialect/thinking-ladder.ts +245 -0
  326. package/src/protocol/translation/dialect/types.ts +58 -0
  327. package/src/protocol/translation/quirks.ts +18 -4
  328. package/src/protocol/translation/thinking.ts +12 -252
  329. package/src/protocol/translation/tool-id.ts +3 -3
  330. package/src/protocol/translation/tool-repair.ts +1 -1
  331. package/src/protocol/upstream/post-json.ts +6 -1
  332. package/src/protocol/upstream/send-claude-messages.ts +3 -3
  333. package/src/providers/adapters/base-adapter.ts +1 -1
  334. package/src/providers/adapters/compatible-adapter.ts +44 -5
  335. package/src/providers/authentication/jwt-validator.ts +0 -5
  336. package/src/providers/authentication/oauth-client.ts +254 -253
  337. package/src/providers/authentication/oauth-flow-store.ts +42 -7
  338. package/src/providers/authentication/oauth-refresh-service.ts +2 -2
  339. package/src/providers/bundled-discovery-providers.ts +6 -30
  340. package/src/providers/configured-openai-providers.ts +82 -97
  341. package/src/providers/configured-provider.ts +1 -1
  342. package/src/providers/default-registry.ts +23 -35
  343. package/src/providers/discovery/catalog/catalog-format.ts +13 -2
  344. package/src/providers/discovery/discovery-types.ts +0 -1
  345. package/src/providers/discovery/openai-model-discovery.ts +2 -2
  346. package/src/providers/discovery/probe-phases.ts +50 -15
  347. package/src/providers/discovery/probing-service.ts +18 -20
  348. package/src/providers/integrations/agentrouter/agentrouter.ts +14 -5
  349. package/src/providers/integrations/alibabacp/alibabacp.ts +2 -2
  350. package/src/providers/integrations/anthropic.ts +4 -11
  351. package/src/providers/integrations/antigravity/antigravity-oauth.ts +0 -1
  352. package/src/providers/integrations/antigravity/antigravity-protocol.ts +0 -14
  353. package/src/providers/integrations/antigravity/antigravity.ts +15 -26
  354. package/src/providers/integrations/buddy/buddy-catalog-shared.ts +2 -2
  355. package/src/providers/integrations/buddy/buddy-chat-shared.ts +20 -4
  356. package/src/providers/integrations/buddy/buddy-cli-headers.ts +19 -52
  357. package/src/providers/integrations/buddy/buddy-discovery-shared.ts +37 -6
  358. package/src/providers/integrations/buddy/buddy-identity.ts +108 -1
  359. package/src/providers/integrations/buddy/buddy-media.ts +16 -16
  360. package/src/providers/integrations/buddy/buddy-oauth-shared.ts +1 -1
  361. package/src/providers/integrations/buddy/codebuddy/cn-provider.ts +1 -2
  362. package/src/providers/integrations/buddy/codebuddy/provider.ts +5 -16
  363. package/src/providers/integrations/buddy/codebuddy/shared.ts +30 -9
  364. package/src/providers/integrations/buddy/workbuddy/provider.ts +6 -10
  365. package/src/providers/integrations/buddy/workbuddy/shared.ts +21 -3
  366. package/src/providers/integrations/claude/claude-betas.ts +1 -1
  367. package/src/providers/integrations/claude/claude-cch.ts +148 -148
  368. package/src/providers/integrations/claude/claude-credentials.ts +1 -1
  369. package/src/providers/integrations/claude/claude-slow-lane-retry.ts +1 -1
  370. package/src/providers/integrations/claude/claude.ts +3 -10
  371. package/src/providers/integrations/claude/fallback-credit.ts +3 -7
  372. package/src/providers/integrations/cline/cline.ts +2 -2
  373. package/src/providers/integrations/cloudflareai/cloudflareai.ts +4 -7
  374. package/src/providers/integrations/codex/codex-device-code.ts +101 -101
  375. package/src/providers/integrations/codex/codex-errors.ts +1 -1
  376. package/src/providers/integrations/codex/codex-oauth.ts +0 -1
  377. package/src/providers/integrations/codex/codex.ts +14 -15
  378. package/src/providers/integrations/commandcode/commandcode.ts +76 -116
  379. package/src/providers/integrations/commandcode/quota.ts +132 -48
  380. package/src/providers/integrations/cursor/cursor-http2.ts +11 -14
  381. package/src/providers/integrations/cursor/cursor-quota.ts +2 -6
  382. package/src/providers/integrations/cursor/cursor-request.ts +0 -87
  383. package/src/providers/integrations/cursor/cursor-shared.ts +0 -4
  384. package/src/providers/integrations/cursor/cursor.ts +53 -20
  385. package/src/providers/integrations/cursor/protocol/framing.ts +0 -56
  386. package/src/providers/integrations/cursor/protocol/messages.ts +0 -96
  387. package/src/providers/integrations/factory/factory.ts +13 -13
  388. package/src/providers/integrations/gemini.ts +11 -11
  389. package/src/providers/integrations/github/github-discovery.ts +55 -10
  390. package/src/providers/integrations/github/github-oauth.ts +6 -5
  391. package/src/providers/integrations/github/github.ts +47 -20
  392. package/src/providers/integrations/grok/grok-oauth.ts +261 -261
  393. package/src/providers/integrations/grok/grok-quota-frame.ts +1 -1
  394. package/src/providers/integrations/grok/grok-quota.ts +16 -7
  395. package/src/providers/integrations/grok/grok-ratelimit-store.ts +0 -5
  396. package/src/providers/integrations/grok/grok-ratelimit.ts +3 -0
  397. package/src/providers/integrations/grok/grok.ts +88 -42
  398. package/src/providers/integrations/inferhub.ts +4 -11
  399. package/src/providers/integrations/kilo/kilo-oauth.ts +1 -1
  400. package/src/providers/integrations/kimi/kimi.ts +4 -11
  401. package/src/providers/integrations/kiro/kiro-cache.ts +31 -0
  402. package/src/providers/integrations/kiro/kiro-catalog.ts +31 -5
  403. package/src/providers/integrations/kiro/kiro-discovery.ts +47 -43
  404. package/src/providers/integrations/kiro/kiro-machine-id.ts +6 -3
  405. package/src/providers/integrations/kiro/kiro-oauth.ts +523 -255
  406. package/src/providers/integrations/kiro/kiro-quota.ts +35 -47
  407. package/src/providers/integrations/kiro/kiro-request.ts +8 -11
  408. package/src/providers/integrations/kiro/kiro-stream.ts +13 -0
  409. package/src/providers/integrations/kiro/kiro.ts +91 -78
  410. package/src/providers/integrations/muse/muse-oauth.ts +0 -1
  411. package/src/providers/integrations/muse/muse-quota.ts +0 -4
  412. package/src/providers/integrations/muse/muse.ts +6 -9
  413. package/src/providers/integrations/opencode/fingerprint.ts +7 -5
  414. package/src/providers/integrations/opencode/provider.ts +17 -24
  415. package/src/providers/integrations/perplexity.ts +2 -2
  416. package/src/providers/integrations/qoder/qoder-catalog.ts +132 -17
  417. package/src/providers/integrations/qoder/qoder-checkin.ts +26 -8
  418. package/src/providers/integrations/qoder/qoder-native-identity-store.ts +9 -8
  419. package/src/providers/integrations/qoder/qoder-oauth.ts +165 -25
  420. package/src/providers/integrations/qoder/qoder-quota.ts +48 -6
  421. package/src/providers/integrations/qoder/qoder-realm.ts +22 -28
  422. package/src/providers/integrations/qoder/qoder-sse.ts +159 -0
  423. package/src/providers/integrations/qoder/qoder-umid.ts +33 -38
  424. package/src/providers/integrations/qoder/qoder-virtual.ts +14 -2
  425. package/src/providers/integrations/qoder/qoder.ts +521 -63
  426. package/src/providers/integrations/shared/connect.ts +0 -54
  427. package/src/providers/integrations/shared/hash.ts +15 -0
  428. package/src/providers/integrations/shared/session-cache.ts +136 -0
  429. package/src/providers/integrations/tokenharbor.ts +2 -2
  430. package/src/providers/integrations/trae/trae-cache.ts +7 -87
  431. package/src/providers/integrations/trae/trae-catalog.ts +1 -6
  432. package/src/providers/integrations/trae/trae-protocol.ts +17 -8
  433. package/src/providers/integrations/trae/trae-realm.ts +0 -7
  434. package/src/providers/integrations/trae/trae.ts +59 -19
  435. package/src/providers/integrations/xai/xai-oauth.ts +5 -5
  436. package/src/providers/integrations/zcode/oauth.ts +1 -1
  437. package/src/providers/integrations/zcode-start-plan/gifts.ts +265 -0
  438. package/src/providers/integrations/zcode-start-plan/oauth.ts +154 -0
  439. package/src/providers/integrations/zcode-start-plan/provider.ts +131 -0
  440. package/src/providers/integrations/zcode-start-plan/quota.ts +152 -0
  441. package/src/providers/integrations/zcode-start-plan/zcode_prompt.json +10 -0
  442. package/src/providers/operations/account-error-classification.ts +131 -116
  443. package/src/providers/operations/account-health-service.ts +31 -39
  444. package/src/providers/operations/account-reset-service.ts +58 -1
  445. package/src/providers/operations/cli-platform.ts +31 -5
  446. package/src/providers/operations/client-version-resolver.ts +4 -6
  447. package/src/providers/operations/client-versions.ts +10 -7
  448. package/src/providers/operations/provider-catalog-seeder.ts +2 -0
  449. package/src/providers/operations/provider-catalog-service.ts +22 -6
  450. package/src/providers/operations/provider-credential-service.ts +35 -6
  451. package/src/providers/operations/upstream-deadline.ts +3 -3
  452. package/src/providers/provider-contracts.ts +65 -10
  453. package/src/providers/provider-credential-resolver.ts +1 -1
  454. package/src/providers/provider-metadata.ts +17 -2
  455. package/src/providers/provider-model-definition.ts +22 -1
  456. package/src/providers/provider-probe.ts +4 -2
  457. package/src/providers/provider-registry.ts +4 -4
  458. package/src/providers/provider-usage.ts +81 -16
  459. package/src/providers/quota/cache.ts +29 -0
  460. package/src/providers/quota/quota-contracts.ts +28 -10
  461. package/src/providers/quota/refresh.ts +29 -6
  462. package/src/providers/quota/snapshot.ts +94 -0
  463. package/src/providers/search/search-provider.ts +6 -8
  464. package/src/providers/search/search-providers.ts +2 -1
  465. package/src/security/abuse.ts +8 -8
  466. package/src/security/admission/reasons.ts +17 -17
  467. package/src/security/admission/service.ts +2 -2
  468. package/src/security/admission/ttl.ts +61 -61
  469. package/src/security/api-key-auth.ts +20 -8
  470. package/src/security/client-router-fingerprint.ts +4 -4
  471. package/src/security/credential-codec.ts +3 -3
  472. package/src/security/csrf.ts +2 -2
  473. package/src/security/ip-boundary.ts +16 -189
  474. package/src/security/model-access-rule.ts +1 -1
  475. package/src/security/outbound-headers.ts +18 -0
  476. package/src/shared/coerce.ts +19 -0
  477. package/src/shared/invoke-guard.ts +47 -0
  478. package/src/transport/contracts.ts +13 -4
  479. package/src/transport/dispatch/attempt-finalize.ts +5 -4
  480. package/src/transport/dispatch/attempt-loop.ts +10 -7
  481. package/src/transport/dispatch/capture-policy.ts +34 -37
  482. package/src/transport/dispatch/empty-stream.ts +28 -25
  483. package/src/transport/dispatch/generation.ts +33 -53
  484. package/src/transport/dispatch/leases.ts +8 -8
  485. package/src/transport/dispatch/native-shared.ts +127 -0
  486. package/src/transport/dispatch/proxy-request.ts +10 -8
  487. package/src/transport/dispatch/responses-compact.ts +35 -56
  488. package/src/transport/dispatch/retry-policy.ts +4 -67
  489. package/src/transport/dispatch/stream-bridge.ts +1 -1
  490. package/src/transport/dispatch/streaming/encoder.ts +18 -72
  491. package/src/transport/dispatch/streaming/finalize.ts +11 -10
  492. package/src/transport/dispatch/streaming/stream.ts +7 -3
  493. package/src/transport/dispatch/streaming/thinking-loop.ts +1 -1
  494. package/src/transport/dispatch/systemone.ts +27 -55
  495. package/src/transport/dispatch/token-count.ts +49 -46
  496. package/src/transport/dispatch/websearch.ts +24 -50
  497. package/src/transport/drain-endpoint.ts +3 -3
  498. package/src/transport/failure-policy.ts +19 -6
  499. package/src/transport/guards/auth-guard.ts +6 -11
  500. package/src/transport/guards/body-policy.ts +7 -7
  501. package/src/transport/guards/error-lifecycle.ts +18 -3
  502. package/src/transport/guards/guard-errors.ts +7 -3
  503. package/src/transport/guards/headroom-guard.ts +2 -2
  504. package/src/transport/guards/pipeline.ts +7 -7
  505. package/src/transport/guards/readiness-guard.ts +16 -2
  506. package/src/transport/guards/request-context.ts +15 -20
  507. package/src/transport/request/preparer.ts +306 -27
  508. package/src/transport/request/rtk/compress-request.ts +3 -3
  509. package/src/transport/request/rtk/rtk-constants.ts +2 -2
  510. package/src/transport/request/rtk/rtk-filters.ts +8 -8
  511. package/src/transport/request/state.ts +5 -20
  512. package/src/transport/request/system-prompt-injection.ts +74 -11
  513. package/src/transport/request/tenant-preferences.ts +22 -0
  514. package/src/transport/routing/candidate-index.ts +2 -2
  515. package/src/transport/routing/round-robin.ts +1 -1
  516. package/src/transport/routing/route-catalog.ts +113 -19
  517. package/src/transport/routing/route-model.ts +131 -38
  518. package/src/transport/routing/router.ts +154 -39
  519. package/src/transport/shutdown-notice.ts +21 -9
  520. package/src/transport/surface/adapters.ts +3 -3
  521. package/src/transport/surface/chat/encode.ts +7 -7
  522. package/src/transport/surface/chat/parse.ts +7 -7
  523. package/src/transport/surface/completion.ts +3 -3
  524. package/src/transport/surface/content-parts.ts +1 -1
  525. package/src/transport/surface/dialects.ts +2 -2
  526. package/src/transport/surface/messages/encode.ts +1 -1
  527. package/src/transport/surface/messages/parse.ts +3 -3
  528. package/src/transport/surface/responses/adapter.ts +1 -1
  529. package/src/transport/surface/responses/errors.ts +0 -9
  530. package/src/transport/vision-handoff-cache.ts +58 -0
  531. package/src/transport/vision-handoff.ts +376 -0
  532. package/src/workers/account-identity-sweep.ts +2 -2
  533. package/src/workers/buddy-growth-tasks.ts +392 -346
  534. package/src/workers/daily-checkin.ts +102 -49
  535. package/src/workers/maintenance-lease.ts +2 -35
  536. package/src/workers/oauth-refresh-sweep.ts +8 -1
  537. package/src/workers/quota-refresh-sweep.ts +120 -82
  538. package/src/workers/scheduler.ts +67 -4
  539. package/src/workers/sweep-runner.ts +24 -5
  540. package/src/workers/zcode-gift-claim.ts +108 -0
  541. package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js +0 -1
  542. package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js.gz +0 -0
  543. package/dist/dashboard/assets/BannedPage-2TJD37Hb.js.gz +0 -0
  544. package/dist/dashboard/assets/CliToolDetailPage-xefJNRmJ.js.gz +0 -0
  545. package/dist/dashboard/assets/CliToolsPage-Rj9iHQ3F.js.gz +0 -0
  546. package/dist/dashboard/assets/CombosPage-JEbYJFxw.js +0 -1
  547. package/dist/dashboard/assets/CombosPage-JEbYJFxw.js.gz +0 -0
  548. package/dist/dashboard/assets/ConsoleLogPage-C3xx_inM.js +0 -1
  549. package/dist/dashboard/assets/ConsoleLogPage-C3xx_inM.js.gz +0 -0
  550. package/dist/dashboard/assets/CustomizationPage-Dw306gJU.js +0 -1
  551. package/dist/dashboard/assets/CustomizationPage-Dw306gJU.js.gz +0 -0
  552. package/dist/dashboard/assets/HealthEventsModal-jaBo1TWV.js +0 -1
  553. package/dist/dashboard/assets/HealthEventsModal-jaBo1TWV.js.gz +0 -0
  554. package/dist/dashboard/assets/LoginPage-C4w7vea-.js.gz +0 -0
  555. package/dist/dashboard/assets/ModelPicker-BtPcAfot.js.gz +0 -0
  556. package/dist/dashboard/assets/OverviewPage-CGC5gNs1.js +0 -1
  557. package/dist/dashboard/assets/OverviewPage-CGC5gNs1.js.gz +0 -0
  558. package/dist/dashboard/assets/ProviderDetailPage-DQcthNGt.js +0 -4
  559. package/dist/dashboard/assets/ProviderDetailPage-DQcthNGt.js.gz +0 -0
  560. package/dist/dashboard/assets/ProviderIcon-FB6yS4v1.js +0 -1
  561. package/dist/dashboard/assets/ProviderIcon-FB6yS4v1.js.gz +0 -0
  562. package/dist/dashboard/assets/ProvidersPage-0OsXRGXe.js +0 -1
  563. package/dist/dashboard/assets/ProvidersPage-0OsXRGXe.js.gz +0 -0
  564. package/dist/dashboard/assets/ProxyPage-DdPc8slb.js +0 -9
  565. package/dist/dashboard/assets/ProxyPage-DdPc8slb.js.gz +0 -0
  566. package/dist/dashboard/assets/QuotaPage-Ci5O4BnH.js +0 -1
  567. package/dist/dashboard/assets/QuotaPage-Ci5O4BnH.js.gz +0 -0
  568. package/dist/dashboard/assets/SettingsPage-CDZjTt87.js +0 -1
  569. package/dist/dashboard/assets/SettingsPage-CDZjTt87.js.gz +0 -0
  570. package/dist/dashboard/assets/SetupPage-BQS0Rx_u.js.gz +0 -0
  571. package/dist/dashboard/assets/SortableList-BAL5npBC.js +0 -1
  572. package/dist/dashboard/assets/SortableList-BAL5npBC.js.gz +0 -0
  573. package/dist/dashboard/assets/StudioPage-TP7voAQ0.js.gz +0 -0
  574. package/dist/dashboard/assets/UsagePage-Cj_fEzhg.js +0 -56
  575. package/dist/dashboard/assets/UsagePage-Cj_fEzhg.js.gz +0 -0
  576. package/dist/dashboard/assets/api-keys-MbI7e7rt.js +0 -1
  577. package/dist/dashboard/assets/api-keys-MbI7e7rt.js.gz +0 -0
  578. package/dist/dashboard/assets/app-B2vyPoII.css +0 -2
  579. package/dist/dashboard/assets/app-B2vyPoII.css.gz +0 -0
  580. package/dist/dashboard/assets/assert-C0YYuZJ4.js.gz +0 -0
  581. package/dist/dashboard/assets/badge-B_DMpMJN.js.gz +0 -0
  582. package/dist/dashboard/assets/banner-DMrMPmth.js.gz +0 -0
  583. package/dist/dashboard/assets/card-Be5Uzamx.js.gz +0 -0
  584. package/dist/dashboard/assets/cli-tools-muFRphDu.js.gz +0 -0
  585. package/dist/dashboard/assets/clipboard-button-DOfrVmsi.js.gz +0 -0
  586. package/dist/dashboard/assets/dialog-C9omdjQt.js.gz +0 -0
  587. package/dist/dashboard/assets/drawer-Bm8WKaGY.js.gz +0 -0
  588. package/dist/dashboard/assets/entry-DS90gUks.js +0 -1
  589. package/dist/dashboard/assets/entry-DS90gUks.js.gz +0 -0
  590. package/dist/dashboard/assets/entry-j40LJotO.js +0 -4
  591. package/dist/dashboard/assets/entry-j40LJotO.js.gz +0 -0
  592. package/dist/dashboard/assets/entry-q5HwZ8nN.js.gz +0 -0
  593. package/dist/dashboard/assets/formatters-BTScrQpe.js.gz +0 -0
  594. package/dist/dashboard/assets/github-badge-Orjuzemr.js.gz +0 -0
  595. package/dist/dashboard/assets/index-cPrX5vn6.js.gz +0 -0
  596. package/dist/dashboard/assets/inline-Dvux8w-0.js.gz +0 -0
  597. package/dist/dashboard/assets/input-CU1Rgf3p.js.gz +0 -0
  598. package/dist/dashboard/assets/list-row-CzFvogbj.js.gz +0 -0
  599. package/dist/dashboard/assets/live-KaG15HLQ.js +0 -1
  600. package/dist/dashboard/assets/live-KaG15HLQ.js.gz +0 -0
  601. package/dist/dashboard/assets/minimize-2-D-MN8W8a.js +0 -1
  602. package/dist/dashboard/assets/minimize-2-D-MN8W8a.js.gz +0 -0
  603. package/dist/dashboard/assets/mutation-JJGQm8TD.js.gz +0 -0
  604. package/dist/dashboard/assets/numbers-BNDZnsUE.js +0 -2
  605. package/dist/dashboard/assets/numbers-BNDZnsUE.js.gz +0 -0
  606. package/dist/dashboard/assets/query-keys-CLaNz8Xz.js.gz +0 -0
  607. package/dist/dashboard/assets/quota-DZGyp0N5.js +0 -1
  608. package/dist/dashboard/assets/quota-DZGyp0N5.js.gz +0 -0
  609. package/dist/dashboard/assets/routing-BEH32QOC.js.gz +0 -0
  610. package/dist/dashboard/assets/select-B3iTetHN.js.gz +0 -0
  611. package/dist/dashboard/assets/settings-Dt3Eqbnq.js +0 -1
  612. package/dist/dashboard/assets/settings-Dt3Eqbnq.js.gz +0 -0
  613. package/dist/dashboard/assets/stack-KrOrm7JZ.js.gz +0 -0
  614. package/dist/dashboard/assets/state-DLS7IDMy.js.gz +0 -0
  615. package/dist/dashboard/assets/stream-retry-5QnVuSSo.js +0 -1
  616. package/dist/dashboard/assets/stream-retry-5QnVuSSo.js.gz +0 -0
  617. package/dist/dashboard/assets/switch-42ItvbAs.js.gz +0 -0
  618. package/dist/dashboard/assets/useMutation-Dmnfh1Ue.js.gz +0 -0
  619. package/src/network/response-headers.ts +0 -39
  620. package/src/protocol/response/dsml.ts +0 -38
  621. package/src/providers/integrations/xiaomi-mimo/think-stream.ts +0 -229
  622. /package/dist/dashboard/assets/{app-wvwCi4Eh.js → app-Bgd3zANQ.js} +0 -0
  623. /package/dist/dashboard/assets/{app-wvwCi4Eh.js.gz → app-Bgd3zANQ.js.gz} +0 -0
  624. /package/dist/dashboard/assets/brand/{og_bansos.webp → og_bansos_initial.webp} +0 -0
  625. /package/dist/dashboard/assets/brand/{og_image.webp → og_image_initial.webp} +0 -0
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginPage-C4w7vea-.js","assets/jsx-runtime-CXUMngI_.js","assets/numbers-BNDZnsUE.js","assets/app-wvwCi4Eh.js","assets/app-B2vyPoII.css","assets/log-in-BmRjy60c.js","assets/query-keys-CLaNz8Xz.js","assets/input-CU1Rgf3p.js","assets/eye-off-Bk5g2luF.js","assets/eye-C_hawfH4.js","assets/SetupPage-BQS0Rx_u.js","assets/layout-C_7A6H55.js","assets/backup-file-gdKIlg8U.js","assets/BannedPage-2TJD37Hb.js","assets/OverviewPage-CGC5gNs1.js","assets/terminal-0_IjPWTk.js","assets/arrow-up-59ms1iiT.js","assets/fingerprint-pattern-BWuHtbW4.js","assets/chevron-right-BXIy5l3h.js","assets/SortableList-BAL5npBC.js","assets/stack-KrOrm7JZ.js","assets/database-Dz9N3zGd.js","assets/gauge-BbIMy7MB.js","assets/state-DLS7IDMy.js","assets/key-round-UkavsGxp.js","assets/layers-2-glBbjl.js","assets/clipboard-button-DOfrVmsi.js","assets/use-clipboard-B0Sy03fE.js","assets/minimize-2-D-MN8W8a.js","assets/dialog-C9omdjQt.js","assets/use-modal-focus-By7oJoGd.js","assets/pencil-768ysRAr.js","assets/plus-DIdX_g-x.js","assets/power-off-Yjw9GMJh.js","assets/refresh-cw-BqJFk4sU.js","assets/route-CNSNj9Zm.js","assets/search-JOKus9rb.js","assets/settings-2-Ds9DQp0t.js","assets/shield-check-DVS0Foqh.js","assets/settings-Dt3Eqbnq.js","assets/assert-C0YYuZJ4.js","assets/useMutation-Dmnfh1Ue.js","assets/mutation-JJGQm8TD.js","assets/trash-Cppn5c3R.js","assets/card-Be5Uzamx.js","assets/download-dRFo5_Wu.js","assets/tokens-COzario9.js","assets/badge-B_DMpMJN.js","assets/select-B3iTetHN.js","assets/ProviderIcon-FB6yS4v1.js","assets/ModelPicker-BtPcAfot.js","assets/switch-42ItvbAs.js","assets/inline-Dvux8w-0.js","assets/api-keys-MbI7e7rt.js","assets/cli-tools-muFRphDu.js","assets/quota-DZGyp0N5.js","assets/banner-DMrMPmth.js","assets/UsagePage-Cj_fEzhg.js","assets/circle-check-BU3v_mFW.js","assets/formatters-BTScrQpe.js","assets/image-BPaouViG.js","assets/drawer-Bm8WKaGY.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/use-reduced-motion-C4B0R6Sz.js","assets/privacy-mode-GM8bej85.js","assets/use-timeout-BwcBBRrT.js","assets/live-KaG15HLQ.js","assets/stream-retry-5QnVuSSo.js","assets/ProviderDetailPage-DQcthNGt.js","assets/arrow-left-CpBxkoxI.js","assets/brain-Cwed_72z.js","assets/circle-alert-CntYHV5v.js","assets/rotate-ccw-CufcqITi.js","assets/list-row-CzFvogbj.js","assets/routing-BEH32QOC.js","assets/HealthEventsModal-jaBo1TWV.js","assets/AccountCooldown-Bjo92Qat.js","assets/ProvidersPage-0OsXRGXe.js","assets/dialog-actions-B1axpEg7.js","assets/CombosPage-JEbYJFxw.js","assets/arrow-right-Dl5yKnp8.js","assets/QuotaPage-Ci5O4BnH.js","assets/zap-C4EeVW4q.js","assets/ProxyPage-DdPc8slb.js","assets/SettingsPage-CDZjTt87.js","assets/CliToolsPage-Rj9iHQ3F.js","assets/ToolIcon-K1ckcDKg.js","assets/CliToolDetailPage-xefJNRmJ.js","assets/ConsoleLogPage-C3xx_inM.js","assets/CustomizationPage-Dw306gJU.js","assets/StudioPage-TP7voAQ0.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-cPrX5vn6.js";import{c as a,l as o,n as s,o as c,r as l,s as u,u as d}from"./app-wvwCi4Eh.js";import{i as f,n as p,r as m,t as h}from"./terminal-0_IjPWTk.js";import{C as g,D as _,E as v,O as y,S as b,T as ee,b as x,c as S,d as te,f as C,g as ne,m as re,o as ie,p as ae,s as w,u as oe,v as se,w as ce,x as le,y as ue}from"./numbers-BNDZnsUE.js";import{r as de}from"./use-modal-focus-By7oJoGd.js";import{t as fe}from"./dialog-C9omdjQt.js";import{C as pe,S as T,_ as E,c as me,d as he,f as ge,g as _e,h as ve,m as ye,n as be,o as xe,p as Se,r as Ce,s as we,t as Te,u as Ee,w as D}from"./assert-C0YYuZJ4.js";import{C as De,D as Oe,E as ke,O,P as Ae,S as je,_ as Me,a as k,b as Ne,c as Pe,d as Fe,f as Ie,g as Le,i as A,j as Re,k as ze,l as j,o as M,r as Be,t as N,v as P,w as Ve,y as He}from"./query-keys-CLaNz8Xz.js";import{t as Ue}from"./mutation-JJGQm8TD.js";import{t as F}from"./useMutation-Dmnfh1Ue.js";import{t as We}from"./dialog-actions-B1axpEg7.js";var Ge=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`}]]),Ke=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),qe=e(`coffee`,[[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M14 2v2`,key:`6buw04`}],[`path`,{d:`M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1`,key:`pwadti`}],[`path`,{d:`M6 2v2`,key:`colzsn`}]]),Je=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`}]]),Ye=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),Xe=e(`hand-heart`,[[`path`,{d:`M11 14h2a2 2 0 0 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 16`,key:`1v1a37`}],[`path`,{d:`m14.45 13.39 5.05-4.694C20.196 8 21 6.85 21 5.75a2.75 2.75 0 0 0-4.797-1.837.276.276 0 0 1-.406 0A2.75 2.75 0 0 0 11 5.75c0 1.2.802 2.248 1.5 2.946L16 11.95`,key:`fhfbnt`}],[`path`,{d:`m2 15 6 6`,key:`10dquu`}],[`path`,{d:`m7 20 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a1 1 0 0 0-2.75-2.91`,key:`1x6kdw`}]]),Ze=e(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),Qe=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`}]]),$e=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`}]]),et=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`}]]),tt=e(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),nt=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`}]]),rt=e(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),it=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`}]]),at=e(`qr-code`,[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]),ot=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`}]]),st=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`}]]),ct=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`}]]),lt=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`}]]),ut=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`}]]),dt=e(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),ft=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 pt(e){let t;if(e.then(e=>(t=e,e),O)?.catch?.(O),t!==void 0)return{data:t}}function mt(e){return{mutationKey:e.options.mutationKey,state:e.state,...e.options.scope&&{scope:e.options.scope},...e.meta&&{meta:e.meta}}}function ht(e,t,n){let r=e.promise?.then(t).catch(e=>n?.(e)===!1?Promise.reject(e):Promise.reject(Error(`redacted`)));return r?.catch(O),r}function gt(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:ht(e,t,n)},...e.meta&&{meta:e.meta},...e.queryType&&{queryType:e.queryType}}}function _t(e){return e.state.isPaused}function vt(e){return e.state.status===`success`}function yt(e,t={}){let n=t.shouldDehydrateMutation??e.getDefaultOptions().dehydrate?.shouldDehydrateMutation??_t,r=e.getMutationCache().getAll().flatMap(e=>n(e)?[mt(e)]:[]),i=t.shouldDehydrateQuery??e.getDefaultOptions().dehydrate?.shouldDehydrateQuery??vt,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)?[gt(e,o,a)]:[])}}function bt(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?pt(c):void 0,f=r.data===void 0?d?.data:r.data,p=f===void 0?f:a?a(f):f,m=i.get(o),h=m?.state.status===`pending`,g=m?.state.fetchStatus===`fetching`;if(m){let e=d&&l!==void 0&&l>m.state.dataUpdatedAt;if(r.dataUpdatedAt>m.state.dataUpdatedAt||e){let{fetchStatus:e,...t}=r;m.setState({...t,data:p,...r.status===`pending`&&p!==void 0&&{status:`success`,dataUpdatedAt:l??Date.now(),...!g&&{fetchStatus:`idle`}}})}}else m=i.build(e,{...e.getDefaultOptions().hydrate?.queries,...n?.defaultOptions?.queries,queryKey:t,queryHash:o,meta:s,_type:u},{...r,data:p,fetchStatus:`idle`,status:r.status===`pending`&&p!==void 0?`success`:r.status,...r.status===`pending`&&p!==void 0&&{dataUpdatedAt:l??Date.now()}});c&&!d&&!h&&!g&&(l===void 0||l>m.state.dataUpdatedAt)&&m.fetch(void 0,{initialPromise:Promise.resolve(c).then(a)}).catch(O)})}var xt=class extends Ne{#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 Ue({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=St(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=St(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=St(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=St(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){P.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ke(t,e))}findAll(e={}){return this.getAll().filter(t=>ke(e,t))}notify(e){P.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return P.batch(()=>Promise.all(e.map(e=>e.continue().catch(O))))}};function St(e){return e.options.scope?.id}var Ct=class extends Ne{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??Ve(r,t),a=this.get(i);return a||(a=new Ie({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){P.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Oe(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>Oe(e,t)):t}notify(e){P.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){P.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){P.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},wt=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Ct,this.#t=e.mutationCache||new xt,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=He.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=Me.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(Re(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=je(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return P.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;P.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return P.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=P.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(O).catch(O)}invalidateQueries(e,t={}){return P.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=P.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(O)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(O)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(Re(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(Re(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(O).catch(O)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(O).catch(O)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return Me.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(De(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{ze(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(De(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{ze(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||=Ve(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===Ae&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},I=t(n(),1),Tt=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,Et=/^[\\/]{2}/;function Dt(e,t){return t+e.replace(/\\/g,`/`)}var Ot=`popstate`;function kt(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function At(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Nt(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:z(t)}return Ft(t,n,null,e)}function L(e,t){if(e===!1||e==null)throw Error(t)}function R(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function jt(){return Math.random().toString(36).substring(2,10)}function Mt(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 Nt(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Pt(t):t,state:n,key:t&&t.key||r||jt(),mask:i}}function z({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Pt(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 Ft(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=kt(e)?e:Nt(h.location,e,t);n&&n(r,e),l=u()+1;let d=Mt(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=kt(e)?e:Nt(h.location,e,t);n&&n(r,e),l=u();let i=Mt(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 It(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(Ot,d),c=e,()=>{i.removeEventListener(Ot,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 It(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),L(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:z(t);return i=i.replace(/ $/,`%20`),!n&&Et.test(i)&&(i=r+i),new URL(i,r)}function Lt(e,t,n=`/`){return Rt(e,t,n,!1)}function Rt(e,t,n,r,i){let a=B((typeof t==`string`?Pt(t):t).pathname||`/`,n);if(a==null)return null;let o=i??zt(e),s=null,c=nn(a);for(let e=0;s==null&&e<o.length;++e)s=Qt(o[e],c,r);return s}function zt(e){let t=Bt(e);return Ht(t),t}function Bt(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;L(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=V([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(L(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Bt(e.children,t,u,l,o)),(e.path!=null||e.index)&&t.push({path:l,score:Xt(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=tn(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 Vt(e.path))a(e,t,!0,n)}),t}function Vt(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=Vt(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 Ht(e){e.sort((e,t)=>e.score===t.score?Zt(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Ut=/^:[\w-]+$/,Wt=3,Gt=2,Kt=1,qt=10,Jt=-2,Yt=e=>e===`*`;function Xt(e,t){let n=e.split(`/`),r=n.length;return n.some(Yt)&&(r+=Jt),t&&(r+=Gt),n.filter(e=>!Yt(e)).reduce((e,t)=>e+(Ut.test(t)?Wt:t===``?Kt:qt),r)}function Zt(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 Qt(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?en(u,l,s.matcher,s.compiledParams):$t(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=$t({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:V([a,d.pathname]),pathnameBase:fn(V([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=V([a,d.pathnameBase]))}return o}function $t(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=tn(e.path,e.caseSensitive,e.end);return en(e,t,n,r)}function en(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=dn(a,1),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=dn(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 tn(e,t=!1,n=!0){R(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function nn(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return R(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function B(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function rn(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Pt(e):e,a;return n?(n=un(n),a=n.startsWith(`/`)||n.startsWith(`\\`)?an(n.substring(1),`/`):an(n,t)):a=t,{pathname:a,search:pn(r),hash:mn(i)}}function an(e,t){let n=dn(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function on(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 sn(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function cn(e){let t=sn(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ln(e,t,n,r=!1){let i;typeof e==`string`?i=Pt(e):(i={...e},L(!i.pathname||!i.pathname.includes(`?`),on(`?`,`pathname`,`search`,i)),L(!i.pathname||!i.pathname.includes(`#`),on(`#`,`pathname`,`hash`,i)),L(!i.search||!i.search.includes(`#`),on(`#`,`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=rn(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var un=e=>e.replace(/[\\/]{2,}/g,`/`),V=e=>un(e.join(`/`));function dn(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 fn=e=>dn(e).replace(/^\/*/,`/`),pn=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,mn=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,hn=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 gn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function _n(e){return V(e.map(e=>e.route.path).filter(Boolean))||`/`}var vn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function yn(e,t){let n=e;if(typeof n!=`string`||!Tt.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(vn)try{let e=new URL(window.location.href),r=Et.test(n)?new URL(Dt(n,e.protocol)):new URL(n),a=B(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{R(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var bn=new URL(`http://localhost`);function xn(e){if(e.createURL)return e.createURL(`/`);try{return new URL(e.createHref(`/`),bn)}catch{return bn}}function Sn(e,t){return e.origin===t.origin&&(e.origin!==`null`||e.protocol===t.protocol&&e.host===t.host)}function Cn(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 wn(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&&!Sn(i,n),s=!Sn(a,n);if(r===`reject`){if(o||s)throw Error(`External navigation is not allowed`)}else if(s&&(i==null||!Cn(e,i)||!Sn(i,a)))throw Error(`External navigation is not allowed`)}var Tn=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Tn);var En=[`GET`,...Tn];new Set(En);var Dn=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function On(e){try{return Dn.includes(new URL(e).protocol)}catch{return!1}}var kn=I.createContext(null);kn.displayName=`DataRouter`;var An=I.createContext(null);An.displayName=`DataRouterState`;var jn=I.createContext(!1);function Mn(){return I.useContext(jn)}var Nn=I.createContext({isTransitioning:!1});Nn.displayName=`ViewTransition`;var Pn=I.createContext(new Map);Pn.displayName=`Fetchers`;var Fn=I.createContext(null);Fn.displayName=`Await`;var H=I.createContext(null);H.displayName=`Navigation`;var In=I.createContext(null);In.displayName=`Location`;var U=I.createContext({outlet:null,matches:[],isDataRoute:!1});U.displayName=`Route`;var Ln=I.createContext(null);Ln.displayName=`RouteError`;var Rn=`REACT_ROUTER_ERROR`,zn=`REDIRECT`,Bn=`ROUTE_ERROR_RESPONSE`;function Vn(e){if(e.startsWith(`${Rn}:${zn}:{`))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 Hn(e){if(e.startsWith(`${Rn}:${Bn}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new hn(t.status,t.statusText,t.data)}catch{}}function Un(e,{relative:t}={}){L(Wn(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=I.useContext(H),{hash:i,pathname:a,search:o}=Yn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:V([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Wn(){return I.useContext(In)!=null}function W(){return L(Wn(),`useLocation() may be used only in the context of a <Router> component.`),I.useContext(In).location}var Gn=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Kn(e){I.useContext(H).static||I.useLayoutEffect(e)}function G(){let{isDataRoute:e}=I.useContext(U);return e?fr():qn()}function qn(){L(Wn(),`useNavigate() may be used only in the context of a <Router> component.`);let e=I.useContext(kn),{basename:t,navigator:n}=I.useContext(H),{matches:r}=I.useContext(U),{pathname:i}=W(),a=JSON.stringify(cn(r)),o=I.useRef(!1);return Kn(()=>{o.current=!0}),I.useCallback((r,s={})=>{if(R(o.current,Gn),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ln(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:V([t,c.pathname])),wn(typeof r==`string`?r:z(r),n.createHref(c),xn(n),`reject`),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}I.createContext(null);function Jn(){let{matches:e}=I.useContext(U);return e[e.length-1]?.params??{}}function Yn(e,{relative:t}={}){let{matches:n}=I.useContext(U),{pathname:r}=W(),i=JSON.stringify(cn(n));return I.useMemo(()=>ln(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Xn(e,t){return Zn(e,t)}function Zn(e,t,n){L(Wn(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=I.useContext(H),{matches:i}=I.useContext(U),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;mr(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=W(),d;if(t){let e=typeof t==`string`?Pt(t):t;L(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Lt(e,{pathname:p});R(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),R(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=ir(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:V([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:V([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?I.createElement(In.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Qn(){let e=dr(),t=gn(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=I.createElement(I.Fragment,null,I.createElement(`p`,null,`💿 Hey developer 👋`),I.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,I.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,I.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),I.createElement(I.Fragment,null,I.createElement(`h2`,null,`Unexpected Application Error!`),I.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?I.createElement(`pre`,{style:i},n):null,o)}var $n=I.createElement(Qn,null),er=class extends I.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Hn(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:I.createElement(U.Provider,{value:this.props.routeContext},I.createElement(Ln.Provider,{value:e,children:this.props.component}));return this.context?I.createElement(nr,{error:e},t):t}};er.contextType=jn;var tr=new WeakMap;function nr({children:e,error:t}){let{basename:n,navigator:r}=I.useContext(H);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Vn(t.digest);if(e){let i=tr.get(t);if(i)throw i;let a=yn(e.location,n),o=a.absoluteURL||a.to;if(wn(e.location,o,xn(r),`allow-explicit`),On(o))throw Error(`Invalid redirect location`);if(vn&&!tr.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 tr.set(t,n),n}}return I.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${o}`})}}return e}function rr({routeContext:e,match:t,children:n}){let r=I.useContext(kn);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),I.createElement(U.Provider,{value:e},n)}function ir(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);L(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:_n(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||$n,o&&(s<0&&c===0?(mr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?I.createElement(n.route.Component,null):n.route.element?n.route.element:e,I.createElement(rr,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?I.createElement(er,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function ar(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function or(e){let t=I.useContext(kn);return L(t,ar(e)),t}function sr(e){let t=I.useContext(An);return L(t,ar(e)),t}function cr(e){let t=I.useContext(U);return L(t,ar(e)),t}function lr(e){let t=cr(e),n=t.matches[t.matches.length-1];return L(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function ur(){return lr(`useRouteId`)}function dr(){let e=I.useContext(Ln),t=sr(`useRouteError`),n=lr(`useRouteError`);return e===void 0?t.errors?.[n]:e}function fr(){let{router:e}=or(`useNavigate`),t=lr(`useNavigate`),n=I.useRef(!1);return Kn(()=>{n.current=!0}),I.useCallback(async(r,i={})=>{R(n.current,Gn),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var pr={};function mr(e,t,n){!t&&!pr[e]&&(pr[e]=!0,R(!1,n))}I.memo(hr);function hr({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Zn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function gr({to:e,replace:t,state:n,relative:r}){L(Wn(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i,navigator:a}=I.useContext(H);R(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=I.useContext(U),{pathname:s}=W(),c=G(),l=ln(e,cn(o),s,r===`path`);wn(typeof e==`string`?e:z(e),a.createHref(l),xn(a),`reject`);let u=JSON.stringify(l);return I.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function K(e){L(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function _r({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){L(!Wn(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=I.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Pt(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=I.useMemo(()=>{let e=B(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return R(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:I.createElement(H.Provider,{value:c},I.createElement(In.Provider,{children:t,value:h}))}function vr({children:e,location:t}){return Xn(yr(e),t)}I.Component;function yr(e,t=[]){let n=[];return I.Children.forEach(e,(e,r)=>{if(!I.isValidElement(e))return;let i=[...t,r];if(e.type===I.Fragment){n.push.apply(n,yr(e.props.children,i));return}L(e.type===K,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),L(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=yr(e.props.children,i)),n.push(a)}),n}var br=`get`,xr=`application/x-www-form-urlencoded`;function Sr(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Cr(e){return Sr(e)&&e.tagName.toLowerCase()===`button`}function wr(e){return Sr(e)&&e.tagName.toLowerCase()===`form`}function Tr(e){return Sr(e)&&e.tagName.toLowerCase()===`input`}function Er(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Dr(e,t){return e.button===0&&(!t||t===`_self`)&&!Er(e)}function Or(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 kr(e,t){let n=Or(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Ar=null;function jr(){if(Ar===null)try{new FormData(document.createElement(`form`),0),Ar=!1}catch{Ar=!0}return Ar}var Mr=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Nr(e){return e!=null&&!Mr.has(e)?(R(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${xr}"`),null):e}function Pr(e,t){let n,r,i,a,o;if(wr(e)){let o=e.getAttribute(`action`);r=o?B(o,t):null,n=e.getAttribute(`method`)||br,i=Nr(e.getAttribute(`enctype`))||xr,a=new FormData(e)}else if(Cr(e)||Tr(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?B(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||br,i=Nr(e.getAttribute(`formenctype`))||Nr(o.getAttribute(`enctype`))||xr,a=new FormData(o,e),!jr()){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(Sr(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=br,r=null,i=xr,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 Fr(e,t){if(e===!1||e==null)throw Error(t)}function Ir(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return i.pathname=n?i.pathname.endsWith(`/`)?`${i.pathname}_.${r}`:`${i.pathname}.${r}`:i.pathname===`/`?`_root.${r}`:t&&B(i.pathname,t)===`/`?`${dn(t)}/_root.${r}`:`${dn(i.pathname)}.${r}`,i}async function Lr(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 Rr(e){return e!=null&&typeof e.page==`string`}function zr(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 Br(e,t,n){return Gr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Lr(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(zr).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Vr(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 Hr(e,t,{includeHydrateFallback:n}={}){return Ur(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 Ur(e){return[...new Set(e)]}function Wr(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Gr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Rr(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Wr(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Kr(){let e=I.useContext(kn);return Fr(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function qr(){let e=I.useContext(An);return Fr(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Jr=I.createContext(void 0);Jr.displayName=`FrameworkContext`;function Yr(){let e=I.useContext(Jr);return Fr(e,`You must render this element inside a <HydratedRouter> element`),e}function Xr(e,t){let n=I.useContext(Jr),[r,i]=I.useState(!1),[a,o]=I.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=I.useRef(null);I.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),I.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Zr(s,p),onBlur:Zr(c,m),onMouseEnter:Zr(l,p),onMouseLeave:Zr(u,m),onTouchStart:Zr(d,p)}]:[a,f,{}]:[!1,f,{}]}function Zr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Qr({page:e,...t}){let n=Mn(),{nonce:r}=Yr(),{router:i}=Kr(),a=I.useMemo(()=>Lt(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?I.createElement(ei,{page:e,matches:a,...t}):I.createElement(ti,{page:e,matches:a,...t})):null}function $r(e){let{manifest:t,routeModules:n}=Yr(),[r,i]=I.useState([]);return I.useEffect(()=>{let r=!1;return Br(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function ei({page:e,matches:t,...n}){let r=W(),{future:i}=Yr(),{basename:a}=Kr(),o=I.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Ir(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]);return I.createElement(I.Fragment,null,o.map(e=>I.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function ti({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:o}=Yr(),{basename:s}=Kr(),{loaderData:c,matches:l}=qr(),u=I.useMemo(()=>Vr(e,t,l,a,r,`data`),[e,t,l,a,r]),d=I.useMemo(()=>Vr(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=I.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];t&&t.hasLoader&&(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Ir(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=I.useMemo(()=>Hr(d,a),[d,a]),m=$r(d);return I.createElement(I.Fragment,null,f.map(e=>I.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>I.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>I.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function ni(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}I.Component;var ri=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{ri&&(window.__reactRouterVersion=`7.18.3`)}catch{}function ii({basename:e,children:t,useTransitions:n,window:r}){let i=I.useRef();i.current??=At({window:r,v5Compat:!0});let a=i.current,[o,s]=I.useState({action:a.action,location:a.location}),c=I.useCallback(e=>{n===!1?s(e):I.startTransition(()=>s(e))},[n]);return I.useLayoutEffect(()=>a.listen(c),[a,c]),I.createElement(_r,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var ai=I.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,useTransitions:_}=I.useContext(H),v=typeof l==`string`&&Tt.test(l),y=yn(l,h);l=y.to;let b=Un(l,{relative:r}),ee=W(),x=null;if(o){let e=ln(o,[],ee.mask?ee.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:V([h,e.pathname])),x=g.createHref(e)}let[S,te,C]=Xr(n,p),ne=ui(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function re(t){e&&e(t),t.defaultPrevented||ne(t)}let ie=!(y.isExternal||i),ae=I.createElement(`a`,{...p,...C,href:(ie?x:void 0)||y.absoluteURL||b,onClick:ie?re:e,ref:ni(m,te),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return S&&!v?I.createElement(I.Fragment,null,ae,I.createElement(Qr,{page:b})):ae});ai.displayName=`Link`;var oi=I.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Yn(a,{relative:c.relative}),d=W(),f=I.useContext(An),{navigator:p,basename:m}=I.useContext(H),h=f!=null&&gi(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=B(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,ee=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),x={isActive:b,isPending:ee,isTransitioning:h},S=b?e:void 0,te;te=typeof n==`function`?n(x):[n,b?`active`:null,ee?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let C=typeof i==`function`?i(x):i;return I.createElement(ai,{...c,"aria-current":S,className:te,ref:l,style:C,to:a,viewTransition:o},typeof s==`function`?s(x):s)});oi.displayName=`NavLink`;var si=I.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=br,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=I.useContext(H),g=mi(),_=hi(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&Tt.test(s);return I.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?I.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});si.displayName=`Form`;function ci(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function li(e){let t=I.useContext(kn);return L(t,ci(e)),t}function ui(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=G(),d=W(),f=Yn(e,{relative:o});return I.useCallback(p=>{if(Dr(p,t)){p.preventDefault();let t=n===void 0?z(d)===z(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?I.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function di(e){R(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=I.useRef(Or(e)),n=I.useRef(!1),r=W(),i=I.useMemo(()=>kr(r.search,n.current?null:t.current),[r.search]),a=G();return[i,I.useCallback((e,t)=>{let r=Or(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var fi=0,pi=()=>`__${String(++fi)}__`;function mi(){let{router:e}=li(`useSubmit`),{basename:t}=I.useContext(H),n=ur(),r=e.fetch,i=e.navigate;return I.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Pr(e,t);if(a.navigate===!1){let e=a.fetcherKey||pi();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 hi(e,{relative:t}={}){let{basename:n}=I.useContext(H),r=I.useContext(U);L(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Yn(e||`.`,{relative:t})},o=W();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:V([n,a.pathname])),z(a)}function gi(e,{relative:t}={}){let n=I.useContext(Nn);L(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=li(`useViewTransitionState`),i=Yn(e,{relative:t});if(!n.isTransitioning)return!1;let a=B(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=B(n.nextLocation.pathname,r)||n.nextLocation.pathname;return $t(i.pathname,o)!=null||$t(i.pathname,a)!=null}var _i=o(),q=r(),vi=`https://saweria.co/risuncode`,yi=`/donation/qris-risun-marke.png`,bi=[{id:`en`,label:`EN`,name:`English`},{id:`id`,label:`ID`,name:`Bahasa Indonesia`},{id:`zh`,label:`中文`,name:`简体中文`},{id:`ja`,label:`日本語`,name:`日本語`}];function xi(){let[e,t]=(0,I.useState)(!1),[n,r]=(0,I.useState)(`en`),i=(0,I.useRef)(null);(0,I.useEffect)(()=>{if(!e)return;let n=e=>{i.current?.contains(e.target)||t(!1)},r=e=>{e.key===`Escape`&&t(!1)};return document.addEventListener(`mousedown`,n),document.addEventListener(`keydown`,r),()=>{document.removeEventListener(`mousedown`,n),document.removeEventListener(`keydown`,r)}},[e]);let a=bi.find(e=>e.id===n)??bi[0];return(0,q.jsxs)(`div`,{className:`relative`,ref:i,children:[(0,q.jsx)(`button`,{type:`button`,className:`topbar-icon-button`,"aria-haspopup":`menu`,"aria-expanded":e,"aria-label":`Change language — ${a.name}`,title:`Change language (coming soon)`,onClick:()=>t(e=>!e),children:(0,q.jsx)(Ze,{size:14,"aria-hidden":`true`})}),e?(0,q.jsxs)(`div`,{role:`menu`,className:`app-topbar-popover popout-enter glass absolute right-0 top-full z-popover mt-2 min-w-44 rounded-sidebar border border-inner-border bg-popover-bg p-2 shadow-popout`,children:[bi.map(e=>(0,q.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`flex w-full items-center justify-between gap-3 rounded-inset px-3 py-2 text-left text-body text-text-secondary hover:bg-hover-bg hover:text-text-primary`,onClick:()=>{r(e.id),t(!1)},children:[(0,q.jsx)(`span`,{children:e.name}),e.id===n?(0,q.jsx)(`span`,{className:`text-accent-text`,children:`✓`}):null]},e.id)),(0,q.jsx)(`p`,{className:`px-3 pb-1 pt-2 text-badge leading-snug text-text-tertiary`,children:`Translations are not wired up yet — the console stays in English for now.`})]}):null]})}function Si({open:e,onClose:t}){return(0,q.jsx)(fe,{open:e,onClose:t,title:`Buy me a coffee`,description:`Support Cartethyia development via QRIS or Saweria.`,size:`lg`,footer:(0,q.jsxs)(We,{children:[(0,q.jsxs)(`a`,{href:yi,download:`qris-risun-marke.png`,className:`flex items-center gap-1.5 rounded-inset border border-inner-border px-3 py-2 text-body text-text-secondary hover:bg-hover-bg hover:text-text-primary`,children:[(0,q.jsx)(ee,{size:14,"aria-hidden":`true`}),`Save QR`]}),(0,q.jsxs)(`a`,{href:vi,target:`_blank`,rel:`noreferrer noopener`,className:`flex items-center gap-1.5 rounded-inset bg-accent-bg px-4 py-2 text-body font-semibold text-accent-text hover:opacity-90`,children:[(0,q.jsx)(qe,{size:14,"aria-hidden":`true`}),`Donate via Saweria`,(0,q.jsx)(Ye,{size:12,"aria-hidden":`true`})]})]}),children:(0,q.jsxs)(`div`,{className:`grid grid-cols-1 gap-5 sm:gap-6 donate-qr-grid`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,q.jsx)(`img`,{src:yi,alt:`QRIS payment code for RISUN`,className:`aspect-square w-full donate-qr-image rounded-inset border border-inner-border bg-white object-contain p-2`}),(0,q.jsxs)(`p`,{className:`flex items-center gap-1.5 text-badge text-text-tertiary`,children:[(0,q.jsx)(at,{size:12,"aria-hidden":`true`}),`Scan with any QRIS app`]})]}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`p`,{className:`text-body leading-relaxed text-text-secondary`,children:`Cartethyia is built in the spare hours between everything else — late nights, weekends, and a suspicious number of energy drinks. If it saved you an afternoon of fighting with rate limits, or made your proxy pool behave, a coffee genuinely helps keep the lights on and the commits coming.`}),(0,q.jsxs)(`ul`,{className:`mt-3 flex flex-col gap-1.5 text-caption text-text-secondary`,children:[(0,q.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(p,{size:14,className:`mt-0.5 shrink-0 text-accent-text`,"aria-hidden":`true`}),(0,q.jsx)(`span`,{children:`Keeps late-night debugging sessions fuelled.`})]}),(0,q.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,q.jsx)(b,{size:14,className:`mt-0.5 shrink-0 text-accent-text`,"aria-hidden":`true`}),(0,q.jsx)(`span`,{children:`Funds the coffee that funds the next release.`})]})]}),(0,q.jsxs)(`div`,{className:`mt-4 border-t border-inner-border pt-3`,children:[(0,q.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-label text-text-tertiary`,children:`Other ways to support`}),(0,q.jsx)(`ul`,{className:`mt-2 grid grid-cols-1 gap-1.5 sm:grid-cols-2`,children:a.map(e=>(0,q.jsx)(`li`,{children:(0,q.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer noopener`,className:`flex items-center gap-2 rounded-inset border border-inner-border px-3 py-2 text-caption text-text-secondary hover:bg-hover-bg hover:text-text-primary`,children:[e.id===`github-alt`?(0,q.jsx)(dt,{size:12,className:`shrink-0 text-accent-text`,"aria-hidden":`true`}):(0,q.jsx)(Ye,{size:12,className:`shrink-0`,"aria-hidden":`true`}),(0,q.jsx)(`span`,{className:`min-w-0 truncate`,children:e.label}),(0,q.jsx)(`span`,{className:`ml-auto shrink-0 text-micro text-text-tertiary`,children:e.hint})]})},e.id))})]}),(0,q.jsx)(`p`,{className:`mt-3 text-badge leading-relaxed text-text-tertiary`,children:`No obligation, no paywall, no nagging — the project stays free either way. Thank you for using it. 💙`})]})]})})}function Ci(){let[e,t]=(0,I.useState)(!1);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`button`,{type:`button`,className:`topbar-donate-button`,"aria-label":`Support the project`,title:`Buy me a coffee`,onClick:()=>t(!0),children:[(0,q.jsx)(`span`,{className:`text-badge font-bold tracking-wide`,children:`Donate`}),(0,q.jsx)(Xe,{size:14,"aria-hidden":`true`})]}),(0,q.jsx)(xi,{}),(0,q.jsx)(Si,{open:e,onClose:()=>t(!1)})]})}var wi=t(d(),1),Ti=`cartethyia.customization`,J=`media`,Ei=`background`,Di=1,Oi=`/console-backgrounds.jpg`;function ki(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(Ti,Di);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(J)||e.createObjectStore(J)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the media database.`)),e}function Ai(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 ji(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 Mi(){let e=await ki();try{let t=await Ai(e.transaction(J,`readonly`).objectStore(J).get(Ei));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 Ni(e,t){let n=await ki();try{let r=n.transaction(J,`readwrite`);r.objectStore(J).put({blob:e,kind:t},Ei),await ji(r,`Could not store the background.`)}finally{n.close()}}async function Pi(){let e=await ki();try{let t=e.transaction(J,`readwrite`);t.objectStore(J).delete(Ei),await ji(t,`Could not remove the background.`)}finally{e.close()}}var Fi=2560,Ii=.85;async function Li(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,Fi/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 Bi(i)??e):e}finally{t.close()}}var Ri=4294967296,zi=268435456;function Bi(e){let{promise:t,resolve:n}=Promise.withResolvers();return e.toBlob(e=>n(e),`image/webp`,Ii),t}function Vi(e){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:null}var Hi=[`none`,`frosted`,`vibrancy`,`heavy`],Y={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},Ui=`cartethyia.customization`,Wi=`cartethyia-customization-change`,Gi=[`cards`,`chrome`];function Ki(e){return typeof e==`string`&&Hi.includes(e)}function X(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 qi(e){let t=typeof e==`object`&&e&&!Array.isArray(e)?e:{};return{backgroundSet:t.backgroundSet===!0,backgroundRevision:X(t.backgroundRevision,0,2**53-1,0),backgroundEnabled:typeof t.backgroundEnabled==`boolean`?t.backgroundEnabled:Y.backgroundEnabled,backgroundOpacity:X(t.backgroundOpacity,0,100,Y.backgroundOpacity),backgroundScale:X(t.backgroundScale,100,180,Y.backgroundScale),backgroundX:X(t.backgroundX,-100,100,Y.backgroundX),backgroundY:X(t.backgroundY,-100,100,Y.backgroundY),backgroundBlur:X(t.backgroundBlur,0,100,Y.backgroundBlur),blurCards:Ki(t.blurCards)?t.blurCards:Y.blurCards,blurChrome:Ki(t.blurChrome)?t.blurChrome:Y.blurChrome,blurCardsAmount:X(t.blurCardsAmount,0,100,Y.blurCardsAmount),blurChromeAmount:X(t.blurChromeAmount,0,100,Y.blurChromeAmount),blurCardsDepth:X(t.blurCardsDepth,0,100,Y.blurCardsDepth),blurChromeDepth:X(t.blurChromeDepth,0,100,Y.blurChromeDepth),blurCardsEnabled:t.blurCardsEnabled!==!1,blurChromeEnabled:t.blurChromeEnabled!==!1,emptyOutline:t.emptyOutline===!0}}var Ji=null;function Yi(){if(Ji)return Ji;if(typeof window>`u`)return Y;try{Ji=qi(JSON.parse(window.localStorage.getItem(Ui)??`null`))}catch{Ji={...Y}}return Ji}function Xi(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 Zi(e){try{window.localStorage.setItem(Ui,JSON.stringify(e))}catch{}}function Qi(e){let t=qi({...Yi(),...e});return Ji=t,typeof window<`u`&&(Zi(t),Xi(t),window.dispatchEvent(new CustomEvent(Wi))),t}function $i(){let[e,t]=(0,I.useState)(Yi);return(0,I.useEffect)(()=>{let e=()=>t(Yi());return window.addEventListener(Wi,e),window.addEventListener(`storage`,e),()=>{window.removeEventListener(Wi,e),window.removeEventListener(`storage`,e)}},[]),[e,e=>t(Qi(e))]}var ea=Gi,ta=`(max-width: 767px)`,na=`(prefers-reduced-motion: reduce)`;function ra(e){let[t,n]=(0,I.useState)(()=>typeof window<`u`&&window.matchMedia(e).matches);return(0,I.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function ia(){let[e,t]=(0,I.useState)(()=>typeof document>`u`||!document.hidden);return(0,I.useEffect)(()=>{let e=()=>t(!document.hidden);return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function aa(){let[e]=$i(),[t,n]=(0,I.useState)(null),r=ra(ta),i=ra(na),a=ia();(0,I.useEffect)(()=>{if(!e.backgroundSet){n(e=>(e&&URL.revokeObjectURL(e.url),{blob:new Blob,kind:`image`,url:Oi}));return}let t=!1,r=null;return Mi().then(e=>{if(t){e&&URL.revokeObjectURL(e.url);return}r=e,n(e)}).catch(()=>{t||n(null)}),()=>{t=!0,r&&URL.revokeObjectURL(r.url)}},[e.backgroundSet,e.backgroundRevision]);let o=(0,I.useRef)(null),s=t?.kind===`video`&&!r&&!i&&a;return(0,I.useEffect)(()=>{let e=o.current;if(e){if(s){e.play().catch(()=>{});return}e.pause()}},[s]),!t||!e.backgroundEnabled?null:(0,q.jsx)(`div`,{className:`custom-background`,"data-kind":t.kind,"data-playing":s?`true`:`false`,"aria-hidden":`true`,children:t.kind===`video`?(0,q.jsx)(`video`,{ref:o,className:`custom-background-media`,src:t.url,autoPlay:s,loop:!0,muted:!0,playsInline:!0,preload:r?`metadata`:`auto`}):(0,q.jsx)(`img`,{className:`custom-background-media`,src:t.url,alt:``})})}function oa({open:e,onClose:t,onConfirm:n,title:r,message:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,danger:s}){let[c,l]=(0,I.useState)(null),[u,d]=(0,I.useState)(!1);return(0,I.useEffect)(()=>{e&&(l(null),d(!1))},[e]),(0,q.jsx)(fe,{open:e,onClose:t,title:r,description:i,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,q.jsx)(`p`,{className:`text-body text-text-secondary leading-normal`,children:i}),c?(0,q.jsx)(`p`,{role:`alert`,className:`text-caption text-red`,children:c}):null,(0,q.jsxs)(We,{children:[(0,q.jsx)(S,{variant:`secondary`,size:`sm`,onClick:t,disabled:u,children:o}),(0,q.jsx)(S,{variant:s?`danger`:`primary`,size:`sm`,onClick:()=>{u||(l(null),d(!0),Promise.resolve().then(()=>n()).then(()=>t()).catch(e=>{l(j(e,`Action failed. Please try again.`)),d(!1)}))},disabled:u,children:u?`Working…`:a})]})]})})}var sa={plain:`code-chip-plain`,muted:`code-chip-muted text-text-secondary bg-surface-muted border border-inner-border px-4 py-1 rounded-chip`,accent:`code-chip-accent text-accent bg-accent-soft px-4 py-1.5 rounded-chip font-bold`};function ca({value:e,tone:t=`muted`,action:n,className:r=``,children:i,...a}){return(0,q.jsxs)(`span`,{className:re(`code-chip inline-flex items-center gap-3 min-w-0 max-w-full font-mono text-caption tabular-nums`,sa[t],r),...a,children:[(0,q.jsx)(`code`,{className:`code-chip-value min-w-0 overflow-hidden text-ellipsis whitespace-nowrap`,title:a.title??e,children:e}),n?(0,q.jsx)(`span`,{className:`code-chip-action inline-flex shrink-0`,children:n}):null,i]})}var la=`cartethyia:update-dismissed`;function ua(){try{return window.localStorage.getItem(la)}catch{return null}}function da(e){try{window.localStorage.setItem(la,e)}catch{}}function fa(){let[e,t]=(0,I.useState)(!1);return{copied:e,copy:e=>{navigator.clipboard?.writeText(e),t(!0),window.setTimeout(()=>t(!1),1500)}}}function pa({open:e,onClose:t,currentVersion:n,latestVersion:r,releaseUrl:i,onDismissVersion:a,onUpdateNow:o,updating:l=!1}){let{copied:d,copy:f}=fa(),p=r??`the latest release`;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(fe,{open:e,onClose:t,title:`Update available`,description:`Cartethyia ${p} is available; this install runs ${n}.`,size:`md`,footer:(0,q.jsxs)(We,{children:[a===void 0?(0,q.jsx)(S,{variant:`ghost`,onClick:t,children:`Later`}):(0,q.jsxs)(S,{variant:`ghost`,onClick:()=>{a?.(),t()},children:[`Don’t show for v`,p]}),o===void 0?null:(0,q.jsxs)(S,{onClick:o,disabled:l,children:[l?(0,q.jsx)(le,{size:14,className:`animate-spin`,"aria-hidden":`true`}):null,l?`Updating…`:`Update now`]}),(0,q.jsxs)(S,{onClick:()=>f(u),disabled:l,children:[d?(0,q.jsx)(y,{size:14,"aria-hidden":`true`}):(0,q.jsx)(v,{size:14,"aria-hidden":`true`}),d?`Copied`:`Copy update command`]})]}),children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-8 py-2 px-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-6`,children:[(0,q.jsx)(`span`,{className:`mt-0.5 grid size-12 shrink-0 place-items-center rounded-control bg-surface-1 text-text-secondary`,children:(0,q.jsx)(rt,{size:16,"aria-hidden":`true`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsxs)(`p`,{className:`font-semibold text-caption`,children:[n,` → `,p]}),(0,q.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`Stop the gateway, run the command, then start again.`})]})]}),(0,q.jsxs)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,q.jsx)(`p`,{className:`text-badge text-text-tertiary`,children:`Run this in a terminal`}),(0,q.jsxs)(`div`,{className:`mt-3 flex items-center gap-4 min-w-0`,children:[(0,q.jsx)(ca,{value:u,tone:`muted`,title:u,className:`min-w-0 flex-1 truncate`}),(0,q.jsx)(S,{variant:`ghost`,size:`sm`,className:`shrink-0`,onClick:()=>f(u),"aria-label":`Copy the update command`,children:d?(0,q.jsx)(y,{size:14,"aria-hidden":`true`}):(0,q.jsx)(v,{size:14,"aria-hidden":`true`})})]})]}),(0,q.jsxs)(`div`,{className:`flex items-start gap-6 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,q.jsx)(`span`,{className:`mt-0.5 shrink-0 text-text-secondary`,children:(0,q.jsx)(se,{size:14,"aria-hidden":`true`})}),(0,q.jsx)(`p`,{className:`text-badge text-text-secondary min-w-0`,children:`npm cannot replace the package while Cartethyia is running from it, so this cannot update itself the way a single-binary tool can. That is why the console gives you the command instead of a button that installs.`})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,q.jsxs)(`a`,{href:i??s,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 text-badge text-accent hover:underline`,children:[(0,q.jsx)(Ye,{size:12,"aria-hidden":`true`}),`What’s new on GitHub`]}),(0,q.jsxs)(`a`,{href:c,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-2 text-badge text-accent hover:underline`,children:[(0,q.jsx)(Ye,{size:12,"aria-hidden":`true`}),`Package on npm`]})]})]})}),l?(0,q.jsx)(`div`,{className:`fixed inset-0 z-toast grid place-items-center bg-black/70 backdrop-blur-sm`,children:(0,q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 text-white`,children:[(0,q.jsx)(le,{size:40,className:`animate-spin`,"aria-hidden":`true`}),(0,q.jsx)(`p`,{className:`text-lg font-semibold`,children:`Updating Cartethyia…`}),(0,q.jsx)(`p`,{className:`text-sm opacity-80`,children:`Do not refresh or close this page.`})]})}):null]})}var ma=`cartethyia.query-cache`,Z=`client`,ha=`default`,ga=1;function _a(){let{promise:e,resolve:t,reject:n}=Promise.withResolvers(),r=indexedDB.open(ma,ga);return r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(Z)||e.createObjectStore(Z)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`Could not open the query cache.`)),e}function va(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 ya(e,t){let{promise:n,resolve:r,reject:i}=Promise.withResolvers();return e.oncomplete=()=>r(),e.onerror=()=>i(e.error??Error(t)),n}function ba(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 xa(e){try{let t=await _a();try{let n=t.transaction(Z,`readwrite`);n.objectStore(Z).put({version:1,state:e},ha),await ya(n,`Could not store the query cache.`)}finally{t.close()}}catch{}}async function Sa(){try{let e=await _a();try{let t=await va(e.transaction(Z,`readonly`).objectStore(Z).get(ha));return ba(t)?t.state:void 0}finally{e.close()}}catch{return}}async function Ca(){try{let e=await _a();try{let t=e.transaction(Z,`readwrite`);t.objectStore(Z).delete(ha),await ya(t,`Could not remove the query cache.`)}finally{e.close()}}catch{}}var Q=new wt({defaultOptions:{queries:A,mutations:Be}});function wa(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 Ta(){let e=await Sa();e!==void 0&&bt(Q,e)}function Ea(){Ca()}function Da(){let e,t=Q.getQueryCache().subscribe(t=>{t.type===`updated`&&(t.action.type===`success`||t.action.type===`error`)&&e===void 0&&(e=setTimeout(()=>{e=void 0,xa(yt(Q,{shouldDehydrateQuery:wa}))},2e3))});return()=>{e!==void 0&&clearTimeout(e),t()}}function Oa(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 ka(e,t){if(e===void 0||t===void 0)return!1;let n=Oa(e),r=Oa(t);return n===null||r===null?t.trim()!==e.trim():Aa(r,n)>0}function Aa(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 ja=5e3,Ma=new WeakMap,Na={"/":[{queryKey:N.settings.runtime,read:e=>M(`/settings/runtime`,{signal:e})},{queryKey:N.apiKeys.all,read:e=>M(`/api-keys`,{signal:e}).then(Te)}],"/providers":[{queryKey:N.providers.all,read:e=>M(`/providers`,{signal:e}).then(Ee)}],"/proxy":[{queryKey:N.network.pools,read:e=>M(`/network/pools`,{signal:e}).then(we)}]};function Pa(e,t){let n=Na[t];if(n===void 0)return Promise.resolve();let r=Date.now(),i=Ma.get(e);if(i!==void 0){if(i>r)return Promise.resolve();Ma.delete(e)}return Promise.allSettled(n.map(t=>e.fetchQuery({queryKey:t.queryKey,queryFn:e=>t.read(E(e)),...A}))).then(t=>{if(t.some(e=>e.status===`rejected`&&!Le(e.reason))){Ma.set(e,Date.now()+ja);return}Ma.delete(e)})}var Fa=3e3,Ia=20;function La(e){if(typeof e!=`object`||!e)return;let t=e;if(!(typeof t.id!=`string`||typeof t.title!=`string`||typeof t.message!=`string`||typeof t.createdAt!=`string`||t.kind!==`memory-high`&&t.kind!==`memory-growth`&&t.kind!==`update-available`||t.level!==`warning`&&t.level!==`info`))return{id:t.id,kind:t.kind,title:t.title,message:t.message,createdAt:t.createdAt,level:t.level,...t.href===l?{href:t.href}:{}}}function Ra(){let[e,t]=(0,I.useState)([]);return(0,I.useEffect)(()=>{let e=!0,n,r,i=()=>{e&&(n=new EventSource(`/console/api/notifications/stream`),n.addEventListener(`notification`,n=>{let r;try{r=JSON.parse(n.data)}catch{return}let i=La(r);i&&e&&t(e=>[i,...e.filter(e=>e.id!==i.id)].slice(0,Ia))}),n.onerror=()=>{n?.close(),n=void 0,e&&r===void 0&&(r=setTimeout(()=>{r=void 0,i()},Fa))})};return i(),()=>{e=!1,n?.close(),clearTimeout(r)}},[]),e}function za(){return T({queryKey:N.session.current,queryFn:()=>Pe(),staleTime:6e4,gcTime:3e5,retry:!1,refetchOnWindowFocus:!1})}function Ba(){return T({queryKey:N.system.health,queryFn:e=>M(`/system/health`,{signal:E(e)}).then(he),...A,refetchInterval:k.status})}function Va(){return T({queryKey:N.releases.githubLatest,queryFn:e=>M(`/updates/release`,{signal:E(e)}).then(Ce),...A,staleTime:18e5,refetchInterval:18e5,retry:!1})}function Ha(e){return T({queryKey:N.usageAnalytics.summary(e),queryFn:t=>M(`/system/usage/summary?period=${encodeURIComponent(e)}`,{signal:E(t)}).then(_e),...A,refetchInterval:k.status})}function Ua(e){return T({queryKey:N.usageAnalytics.chart(e),queryFn:t=>M(`/system/usage/chart?period=${encodeURIComponent(e)}`,{signal:E(t)}).then(Se),...A,refetchInterval:k.status})}function Wa(e,t){return T({queryKey:N.usageAnalytics.by(e,t),queryFn:n=>M(`/system/usage/by-${t}?period=${encodeURIComponent(e)}`,{signal:E(n)}).then(ge),...A,refetchInterval:k.status})}function Ga(e,t=50,n){let r=n==null?``:`&httpStatus=${encodeURIComponent(String(n))}`;return T({queryKey:N.usageAnalytics.requests(e,t,n),queryFn:n=>M(`/system/usage/requests?period=${encodeURIComponent(e)}&limit=${encodeURIComponent(String(t))}${r}`,{signal:E(n)}).then(ve),...A,placeholderData:e=>e,refetchInterval:k.live})}function Ka(e){return T({queryKey:N.usageAnalytics.requestDetail(e??`_`),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Request is required`};return M(`/system/usage/requests/${encodeURIComponent(e)}`,{signal:E(t)}).then(ye)},enabled:e!==null,...A})}function qa(e){return T({queryKey:N.audit.list(e??{}),queryFn:t=>{let n=new URLSearchParams;e?.action&&n.set(`action`,e.action),e?.actor&&n.set(`actor`,e.actor),e?.cursor&&n.set(`cursor`,e.cursor),e?.limit&&n.set(`limit`,String(e.limit));let r=n.toString()?`?${n.toString()}`:``;return M(`/audit${r}`,{signal:E(t)}).then(be)},...A})}function Ja(){return T({queryKey:N.providers.all,queryFn:e=>M(`/providers`,{signal:E(e)}).then(Ee),...A,gcTime:6e5,refetchInterval:k.catalog})}function Ya(e){return T({queryKey:N.providers.detail(e??``),queryFn:t=>M(`/providers/${encodeURIComponent(e??``)}`,{signal:E(t)}).then(me),enabled:!!e,...A})}function Xa(e){return T({queryKey:N.providers.models(e),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Provider is required`};return M(`/providers/${encodeURIComponent(e)}/models`,{signal:E(t)}).then(xe)},...A,staleTime:3e5,gcTime:6e5,enabled:!!e})}function Za(){let e=D();return F({mutationFn:({providerId:e,modelIds:t,wireFamily:n,metadata:r})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`POST`,body:JSON.stringify({modelIds:t,...n?{wireFamily:n}:{},...r?{metadata:r}:{}})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)}),w.success(`Models registered`,`${n.modelIds.length} model(s) added to ${n.providerId}`)},onError:e=>{w.error(`Failed to register models`,j(e))}})}function Qa(){let e=D();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await po(e,r.providerId)}})}function $a(){return F({mutationFn:e=>M(`/providers/connection-test`,{method:`POST`,body:JSON.stringify(e)})})}function eo(){let e=D();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/probe`,{method:`POST`,body:JSON.stringify(t)}),onSettled:async(t,n,r)=>{await po(e,r.providerId)}})}function to(){let e=D();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)})}})}function no(){let e=D();return F({mutationFn:({providerId:e,modelId:t,route:n,metadata:r})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`PATCH`,body:JSON.stringify({modelId:t,route:n,enabled:!0,metadata:r})}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)}),w.success(`Model updated`,`${n.modelId} limits and capabilities saved`)},onError:e=>{w.error(`Failed to update model`,j(e))}})}function ro(){let e=D();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/models`,{method:`DELETE`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.models(n.providerId)})}})}function io(e){return T({queryKey:N.providers.accounts(e),queryFn:t=>M(`/providers/${encodeURIComponent(e??``)}/accounts`,{signal:E(t)}),enabled:!!e,...A,staleTime:3e4,gcTime:6e5})}function ao(e){let t=e,n=Array.isArray(t.rows)?t.rows:[],r=e=>{let t=Number(e??0);return Number.isFinite(t)?t:0};return{days:Math.max(1,Math.trunc(r(t.days))||30),rows:n.map(e=>({day:typeof e.day==`string`?e.day:``,model:typeof e.model==`string`?e.model:null,requests:r(e.requests),inputTokens:r(e.inputTokens),cachedInputTokens:r(e.cachedInputTokens),outputTokens:r(e.outputTokens),costUsd:r(e.costUsd)}))}}function oo(e,t){return T({queryKey:N.providers.usageMatrix(e),queryFn:t=>{if(!e)throw{status:400,code:`invalid_request`,message:`Provider is required`};return M(`/providers/${encodeURIComponent(e)}/usage/matrix`,{signal:E(t)}).then(ao)},...A,enabled:!!e&&t})}function so(){let e=D();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}/accounts`,{method:`POST`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function co(){let e=D();return F({mutationFn:({providerId:e,accounts:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/batch`,{method:`POST`,body:JSON.stringify({accounts:t})}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function lo(){let e=D();return F({mutationFn:({providerId:e,accountId:t,request:n})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}`,{method:`PATCH`,body:JSON.stringify(n)}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.all})])}})}function uo(e,t){return T({queryKey:N.providers.healthEvents(e,t),queryFn:n=>M(`/providers/${encodeURIComponent(e??``)}/accounts/${encodeURIComponent(t??``)}/health-events`,{signal:E(n)}),enabled:!!e&&!!t,...A,refetchInterval:k.status})}async function fo(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 po(e,t){await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(t)}),fo(e,t),e.invalidateQueries({queryKey:N.providers.all})])}function mo(){let e=D();return F({mutationFn:({providerId:e,accountId:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/recover`,{method:`POST`,body:`{}`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,n.accountId)}),e.invalidateQueries({queryKey:N.providers.all})]),w.success(`Account recovered`)},onError:e=>{w.error(`Could not recover the account.`,j(e))}})}function ho(){let e=D();return F({mutationFn:({providerId:e,accountId:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/health-events`,{method:`DELETE`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,n.accountId)}),e.invalidateQueries({queryKey:N.settings.diskUsage})]),w.success(t.deleted===0?`Health log was already empty`:`Purged ${t.deleted} health events`,n.title)},onError:e=>{w.error(`Could not purge the health log.`,j(e))}})}function go(){return F({mutationFn:({providerId:e,accountIds:t})=>M(`/providers/${encodeURIComponent(e)}/accounts/export`,{method:`POST`,body:JSON.stringify({accountIds:t})})})}function _o(){return F({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/authorize`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function vo(){let e=D();return F({mutationFn:({providerId:e,code:t,state:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/callback?${new URLSearchParams({code:t,state:n}).toString()}`),onSuccess:async(t,n)=>{await po(e,n.providerId)}})}function yo(){return F({mutationFn:({providerId:e,accountLabel:t,parameters:n})=>M(`/providers/${encodeURIComponent(e)}/oauth/device/start`,{method:`POST`,body:JSON.stringify({...t?{accountLabel:t}:{},...n&&Object.keys(n).length>0?{parameters:n}:{}})})})}function bo(){let e=D();return F({mutationFn:({providerId:e,credential:t,fields:n,accountLabel:r})=>M(`/providers/${encodeURIComponent(e)}/oauth/import`,{method:`POST`,body:JSON.stringify({credential:t,...n&&Object.keys(n).length>0?{fields:n}:{},...r?{accountLabel:r}:{}})}),onSuccess:async(t,n)=>{await po(e,n.providerId),await e.invalidateQueries({queryKey:N.quota.all})}})}function xo(){let e=D();return F({mutationFn:({providerId:e,deviceAuthId:t})=>M(`/providers/${encodeURIComponent(e)}/oauth/device/poll`,{method:`POST`,body:JSON.stringify({deviceAuthId:t})}),onSuccess:async(t,n)=>{t.status===`complete`&&await Promise.all([e.invalidateQueries({queryKey:N.providers.accounts(n.providerId)}),e.invalidateQueries({queryKey:N.providers.healthEvents(n.providerId,t.accountId)}),e.invalidateQueries({queryKey:N.quota.all}),po(e,n.providerId)])}})}function So(){let e=D();return F({mutationFn:e=>M(`/providers`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async t=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.modelRouting.all})]),w.success(`Provider created`,t.label??t.providerId)},onError:e=>{w.error(`Failed to create provider`,j(e))}})}function Co(){let e=D();return F({mutationFn:({providerId:e,request:t})=>M(`/providers/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.providers.detail(n)})]),w.success(`Provider updated`,n)},onError:e=>{w.error(`Failed to update provider`,j(e))}})}function wo(){let e=D();return F({mutationFn:({providerId:e,enabled:t})=>M(`/providers/platform/global/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),onSuccess:async(t,{providerId:n})=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.providers.detail(n)})])}})}function To(e={}){let t=D();return F({mutationFn:e=>M(`/providers/${encodeURIComponent(e)}/models/sync`,{method:`POST`,body:`{}`}),onSuccess:async(n,r)=>{await t.invalidateQueries({queryKey:N.providers.models(r)}),e.silent||w.success(`Models fetched`,n.synced>0?`${n.synced} new model${n.synced===1?``:`s`} added`:`No new models found`)},onError:t=>{e.silent||w.error(`Failed to fetch models`,j(t))}})}function Eo(e){return T({queryKey:N.providers.nativeIdentity(e),queryFn:t=>M(`/accounts/${encodeURIComponent(e??``)}/native-identity`,{signal:E(t)}),enabled:!!e,...A,staleTime:6e4})}function Do(){let e=D();return F({mutationFn:({accountId:e,identity:t})=>M(`/accounts/${encodeURIComponent(e)}/native-identity`,{method:`PUT`,body:JSON.stringify(t)}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.nativeIdentity(n.accountId)}),w.success(`Native identity bound`,`Device identity saved`)},onError:e=>{w.error(`Failed to bind identity`,j(e))}})}function Oo(){let e=D();return F({mutationFn:({accountId:e})=>M(`/accounts/${encodeURIComponent(e)}/native-identity/regenerate`,{method:`POST`,body:`{}`}),onSuccess:async(t,n)=>{await e.invalidateQueries({queryKey:N.providers.nativeIdentity(n.accountId)}),t.identity?w.success(`Native identity regenerated`,`New device identity minted`):w.error(`Regenerate failed`,`The bridge could not mint a new identity`)},onError:e=>{w.error(`Regenerate failed`,j(e))}})}function ko(){let e=D();return F({mutationFn:e=>M(`/providers/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:N.providers.all}),e.invalidateQueries({queryKey:N.quota.all}),e.invalidateQueries({queryKey:N.modelRouting.all})]),w.success(`Provider deleted`,n)},onError:e=>{w.error(`Failed to delete provider`,j(e))}})}var Ao={name:`cartethyia`,version:`2.7.3`,description:`A powerful, self-hosted reverse proxy for OpenAI- and Anthropic-compatible AI clients, powered by native Bun and Elysia. It serves both protocols from a single server, routes every model across any configured provider, and translates requests and responses in real time — streaming and prompt caching included. Underneath it runs a full delivery engine: per-account health tracking, quota and cooldown enforcement, automatic failover across pools and providers, usage accounting, and telemetry. Point OpenCode, Cline, Claude Code, Codex, or any compatible client at Cartethyia and it keeps its native protocol while the gateway absorbs every provider-specific difference behind it. Runs on embedded SQLite or external PostgreSQL with optional Redis coordination, ships as a global CLI with a system-tray console, and needs only Bun 1.4+ alongside Node.js/npm.`,license:`GPL-3.0-only`,type:`module`,packageManager:`bun@1.4.0`,repository:{type:`git`,url:`git+https://github.com/risunCodex/Cartethyia.git`},homepage:`https://github.com/risunCodex/Cartethyia#readme`,bugs:{url:`https://github.com/risunCodex/Cartethyia/issues`},keywords:[`ai`,`gateway`,`llm`,`bun`,`self-hosted`],bin:{cartethyia:`scripts/cli/bin/cartethyia.cjs`,carte:`scripts/cli/bin/carte.cjs`},files:[`scripts/cli/`,`src/`,`migrations/`,`dist/dashboard/`,`.env.example`,`README.md`],workspaces:[`dashboard`],engines:{bun:`>=1.4.0`},scripts:{dev:`bun run dev:stack`,"dev:watch":`bun run scripts/dev/supervisor.ts`,test:`bun run scripts/test/run.ts`,build:`bun run scripts/build/build.ts`,prepack:`bun run dashboard:build`,setup:`bun run scripts/cli/setup.ts`,start:`bun run scripts/cli/main.ts start`,doctor:`bun run scripts/cli/doctor.ts`,"probe:egress":`bun run scripts/tools/probe-egress.ts`,restart:`bun run scripts/build/restart.ts`,"build:aot":`bun run scripts/build/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/test/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/test/console-session.ts`,"dev:visual-baseline":`bun run scripts/test/visual-baseline.ts`,"build:binary":`bun run scripts/build/compile.ts`,"test:backend":`bun run scripts/test/run.ts --scope backend`,"test:integration":`bun run scripts/test/run.ts --scope integration`,"test-db:down":`docker compose -f docker-compose.test.yml down`,"dashboard:dev":`bun run --cwd dashboard dev`,"test-db:check":`bun run scripts/test/check-db.ts`,"dashboard:test":`bun run scripts/test/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/test/check-migrations.ts`},dependencies:{"drizzle-orm":`0.45.2`,elysia:`2.0.0-beta.16`,enquirer:`^2.4.1`,ioredis:`6.0.0`,jose:`^6.2.12`,jsonrepair:`^3.15.0`,pg:`8.23.0`,pino:`^10.3.1`,"pino-pretty":`^13.1.3`,protobufjs:`^7.6.5`,"socks-proxy-agent":`^10.1.0`,systray2:`2.1.4`,typebox:`1.3.27`,ws:`8.22.0`},devDependencies:{"@types/pg":`8.11.10`,"@types/ws":`8.18.1`,"bun-types":`1.4.0`,concurrently:`^10.0.5`,"drizzle-kit":`^0.31.11`,typescript:`5.9.2`}}.version,jo=`v${Ao.replace(/\.0$/,``)} (Jinhsi)`,Mo=[{label:`Main`,items:[{label:`Overview`,path:`/`,icon:Qe},{label:`Usage`,path:`/usage`,icon:f},{label:`Providers`,path:`/providers`,icon:ct},{label:`Model Lab`,path:`/model-lab`,icon:ce}]},{label:`Control`,items:[{label:`Combos & Routes`,path:`/combos`,icon:Je},{label:`Quota Management`,path:`/quota`,icon:ut},{label:`Proxy & Requests`,path:`/proxy`,icon:m},{label:`CLI Tools`,path:`/cli-tools`,icon:h}]},{label:`Tools`,items:[{label:`Tools`,icon:g,children:[]}]},{label:`System`,items:[{label:`Customization`,path:`/customization`,icon:it},{label:`Console Log`,path:`/console-log`,icon:st},{label:`Settings`,path:`/settings`,icon:lt}]}],No={"/":{title:`Overview`,sub:`Gateway health, capacity, and live metrics`,icon:Qe},"/usage":{title:`Usage & Metrics`,sub:`Token economics, requests, and cost breakdown`,icon:f},"/providers":{title:`Provider Catalog`,sub:`Upstream credentials, models, and latency`,icon:ct},"/combos":{title:`Combos & Routing`,sub:`Failover policies, model aliases, and weighted routes`,icon:Je},"/quota":{title:`Quota Management`,sub:`Rate limits, leases, and tenant quotas`,icon:ut},"/proxy":{title:`Proxy & Requests`,sub:`Network pools, SOCKS5/HTTP egress, and dispatch`,icon:m},"/customization":{title:`Customization`,sub:`Background, transparency, and blur`,icon:it},"/model-lab":{title:`Model Lab`,sub:`Chat a routed model without leaving the console`,icon:ce},"/console-log":{title:`Console Log`,sub:`Live server logs and audit trail`,icon:st},"/cli-tools":{title:`CLI Tools`,sub:`Claude Code CLI, OpenCode, and local developer tool integrations`,icon:h},"/settings":{title:`Settings`,sub:`Account security, runtime preferences, and state recovery`,icon:lt}},Po={title:`Console`,sub:`Cartethyia AI Gateway Administration`,icon:Qe};function Fo(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:ct}}let r=/^\/cli-tools\/([^/]+)\/?$/.exec(e);return r?.[1]?{title:`CLI Tool`,sub:`${r[1]} — mappings, endpoints, and downloadable config`,icon:h}:No[e]??Po}function Io(){try{return Ba()}catch{return{data:void 0,isError:!1,isFetching:!1,isPending:!1}}}function Lo(){let[e,t]=(0,I.useState)(()=>C()),n=te(e);return(0,I.useEffect)(()=>{let e=()=>t(C());return window.addEventListener(`storage`,e),()=>window.removeEventListener(`storage`,e)},[]),(0,I.useEffect)(()=>{oe(e)},[e]),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{let e=n?`light`:`dark`;t(e),ae(e)},"aria-label":`Toggle theme`,"aria-pressed":n,className:`topbar-icon-button`,title:n?`Switch to light mode`:`Switch to dark mode`,children:(0,q.jsx)(`span`,{className:`grid place-items-center`,children:n?(0,q.jsx)(ue,{size:17}):(0,q.jsx)(x,{size:17})},n?`sun`:`moon`)})}var Ro=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),zo=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`,timeZone:`UTC`});function Bo(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 Vo({icon:e,label:t,value:n,detail:r,title:i}){return(0,q.jsxs)(`div`,{className:`min-w-0 rounded-control border border-inner-border bg-surface-2 p-3`,title:i,children:[(0,q.jsxs)(`dt`,{className:`flex items-center gap-2 text-micro font-medium text-text-tertiary`,children:[(0,q.jsx)(e,{size:13,strokeWidth:1.8,className:`shrink-0`,"aria-hidden":`true`}),(0,q.jsx)(`span`,{children:t})]}),(0,q.jsx)(`dd`,{className:`mt-1 truncate font-mono text-caption font-semibold tabular-nums text-text-primary`,children:n}),r?(0,q.jsx)(`dd`,{className:`mt-1 text-micro text-text-secondary`,children:r}):null]})}function Ho({health:e,onOpenUpdate:t}){let[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(()=>new Date),o=(0,I.useRef)(null),s=(0,I.useRef)(null),c=Ra();(0,I.useEffect)(()=>{if(!n)return;a(new Date);let e=window.setInterval(()=>a(new Date),1e3);return()=>window.clearInterval(e)},[n]),(0,I.useEffect)(()=>{if(!n)return;let e=e=>{let t=e.target;s.current&&!s.current.contains(t)&&o.current&&!o.current.contains(t)&&r(!1)},t=e=>{e.key===`Escape`&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[n]);let l=[e?e.database_in_process?e.database_healthy?`SQLite in-process, connected.`:`SQLite in-process is not answering.`:e.database_healthy?`Postgres connected.`:`Postgres unreachable.`:void 0,e?e.redis_configured?e.redis_healthy?`Redis connected.`:`Redis unreachable.`:`Redis not configured.`:void 0].filter(Boolean).join(` · `),u=e?e.status===`healthy`?`All systems operational`:e.status===`degraded`?`Gateway degraded`:`Gateway unhealthy`:`System health unavailable`,d=e?e.status===`healthy`?l||`Gateway reported healthy.`:[l,`Check connection logs.`].filter(Boolean).join(` — `):`Live gateway metrics are not available.`,f=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,p=e?.cpu_percent??void 0,m=p!==void 0&&Number.isFinite(p),h=e?m?Number.isFinite(e.cpu_cores)&&e.cpu_cores>0?`1-min load · ${e.cpu_cores} cores`:`Normalized 1-min load`:`Not reported on this platform`:void 0;return(0,q.jsxs)(`div`,{className:`relative`,children:[(0,q.jsxs)(`button`,{ref:o,type:`button`,className:`topbar-icon-button`,"aria-label":`Notifications`,"aria-expanded":n,"aria-haspopup":`dialog`,onClick:()=>r(e=>!e),children:[(0,q.jsx)(Ge,{size:17}),c.length>0?(0,q.jsx)(`span`,{"aria-label":`${c.length} notifications`,className:`absolute right-1.5 top-1.5 size-2 rounded-full bg-accent`}):null]}),n?(0,wi.createPortal)((0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{"aria-hidden":`true`,className:`fixed inset-0 z-floating bg-overlay backdrop-blur-dialog`,onClick:()=>r(!1)}),(0,q.jsxs)(`div`,{ref:s,role:`dialog`,"aria-label":`Notifications`,className:`app-topbar-popover popout-enter glass rounded-sidebar border border-inner-border bg-popover-bg p-5 shadow-popout z-popover`,children:[(0,q.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3 font-bold text-body-lg`,children:[(0,q.jsx)(`span`,{className:`w-13 h-13 rounded-pill bg-accent-soft text-accent grid place-items-center`,children:(0,q.jsx)(Ge,{size:13})}),(0,q.jsx)(`span`,{children:`Notifications`})]}),(0,q.jsx)(`button`,{type:`button`,"aria-label":`Close notifications`,onClick:()=>r(!1),className:`cursor-pointer border-none bg-transparent p-2 text-caption text-text-tertiary`,children:(0,q.jsx)(de,{size:14})})]}),(0,q.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 flex flex-col gap-3`,children:[c.length>0?(0,q.jsx)(`section`,{"aria-label":`Notifications`,className:`flex flex-col gap-2`,children:c.map(e=>(0,q.jsxs)(`article`,{className:`flex items-start gap-3 rounded-card border p-4 ${e.level===`warning`?`border-orange-soft bg-orange-soft`:`border-accent/25 bg-accent-soft`}`,children:[(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`span`,{className:`block text-caption font-semibold text-text-primary`,children:e.title}),(0,q.jsx)(`span`,{className:`mt-1 block text-badge text-text-secondary`,children:e.message})]}),e.href?e.kind===`update-available`?(0,q.jsx)(`button`,{type:`button`,className:`shrink-0 text-badge font-semibold text-accent`,onClick:t,children:`Update`}):(0,q.jsx)(`a`,{className:`shrink-0 text-badge font-semibold text-accent`,href:e.href,target:`_blank`,rel:`noreferrer`,children:`Open`}):null]},e.id))}):(0,q.jsx)(`div`,{className:`rounded-card border border-inner-border bg-surface-2 p-4 text-badge text-text-secondary`,children:`No active memory or update alerts.`}),(0,q.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,q.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,q.jsx)(ct,{size:16,"aria-hidden":`true`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`p`,{className:`font-semibold text-caption`,children:u}),(0,q.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:d})]})]}),(0,q.jsxs)(`dl`,{"aria-label":`Runtime metrics`,className:`grid grid-cols-2 gap-2`,children:[(0,q.jsx)(Vo,{icon:_,label:`Local time`,value:Ro.format(i)}),(0,q.jsx)(Vo,{icon:g,label:`UTC`,value:zo.format(i)}),(0,q.jsx)(Vo,{icon:ft,label:`Uptime`,value:e?ie(e.uptime_seconds):`Unavailable`,detail:e&&Number.isFinite(e.uptime_seconds)&&e.uptime_seconds>=0?`Gateway process running`:void 0}),(0,q.jsx)(Vo,{icon:et,label:`Process RSS`,value:e?Bo(e.memory_bytes):`Unavailable`,detail:f,title:`Process resident set size; percentage is share of system RAM.`}),(0,q.jsx)(Vo,{icon:Je,label:`CPU load`,value:m&&p!==void 0?`${p.toFixed(1)}%`:`Unavailable`,detail:h,title:`One-minute load average normalized by the number of CPU cores.`}),(0,q.jsx)(Vo,{icon:nt,label:`Runtime`,value:e?.platform?.trim()||`Unavailable`,detail:e?.platform?.trim()?`Gateway host platform`:void 0,title:e?.platform?.trim()||`Runtime platform unavailable`})]}),(0,q.jsxs)(`div`,{className:`flex items-start gap-3 rounded-card border border-inner-border bg-surface-2 p-4`,children:[(0,q.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,q.jsx)(ot,{size:16,"aria-hidden":`true`})}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`p`,{className:`font-semibold text-caption`,children:jo}),(0,q.jsx)(`p`,{className:`text-badge text-text-secondary mt-1`,children:`High-performance AI Gateway & Protocol Orchestrator.`})]})]})]})]})]}),document.body):null]})}function Uo({group:e,pathname:t,onIntent:n}){return(0,q.jsxs)(`div`,{className:`nav-group-section`,children:[(0,q.jsx)(`p`,{className:`nav-group-title`,children:e.label}),(0,q.jsx)(Wo,{items:e.items,pathname:t,onIntent:n})]})}function Wo({items:e,pathname:t,onIntent:n}){let r=(0,I.useRef)(null),[i,a]=(0,I.useState)({top:0,height:0,opacity:0}),[o,s]=(0,I.useState)(()=>new Set);return(0,I.useLayoutEffect)(()=>{let e=r.current;if(!e)return;let t=e.querySelector(`[data-active="true"]`);if(!t){a(e=>({...e,opacity:0}));return}let n=e.getBoundingClientRect(),i=t.getBoundingClientRect();a({top:i.top-n.top,height:i.height,opacity:1})},[t,e]),(0,q.jsxs)(`div`,{ref:r,className:`nav-items-container`,children:[(0,q.jsx)(`div`,{className:`sidebar-active-indicator`,style:{transform:`translateY(${i.top}px)`,height:`${i.height}px`,opacity:i.opacity},"aria-hidden":`true`}),e.map(e=>{if(e.children!==void 0){let t=o.has(e.path??e.label);return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full`,"aria-expanded":t,onClick:()=>s(t=>{let n=new Set(t),r=e.path??e.label;return n.has(r)?n.delete(r):n.add(r),n}),children:[(0,q.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,q.jsx)(`span`,{children:e.label}),(0,q.jsx)(Ke,{size:14,className:`ml-auto shrink-0 transition-transform ${t?`rotate-180`:``}`,"aria-hidden":`true`})]}),t?(0,q.jsx)(`div`,{className:`ml-6 border-l border-inner-border pl-2`,children:e.children.map(e=>(0,q.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full`,disabled:e.disabled===!0,title:e.label,children:[(0,q.jsx)(e.icon,{size:15,className:`nav-link-icon`}),(0,q.jsx)(`span`,{children:e.label}),e.badge?(0,q.jsx)(`span`,{className:`nav-link-badge`,children:e.badge}):null]},e.path??e.label))}):null]},e.path??e.label)}if(e.disabled)return(0,q.jsxs)(`button`,{type:`button`,className:`nav-link-item w-full cursor-not-allowed opacity-55`,disabled:!0,"aria-label":`${e.label} — unavailable`,title:`Coming soon`,children:[(0,q.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,q.jsx)(`span`,{children:e.label}),(0,q.jsx)(`span`,{className:`nav-link-badge`,children:`Soon`})]},e.path??e.label);if(e.path===void 0)return null;let r=e.path,i=r===`/`?t===`/`:t===r||t.startsWith(`${r}/`);return(0,q.jsxs)(oi,{to:r,end:r===`/`,"data-active":i?`true`:void 0,className:`nav-link-item ${i?`active`:``}`,onMouseEnter:()=>n(r),onFocus:()=>n(r),children:[(0,q.jsx)(e.icon,{size:17,className:`nav-link-icon`}),(0,q.jsx)(`span`,{children:e.label}),e.badge?(0,q.jsx)(`span`,{className:`nav-link-badge`,children:e.badge}):null]},r)})]})}function Go({user:e,children:t}){let n=G(),r=W(),[i,a]=(0,I.useState)(!1),[o,s]=(0,I.useState)(!1),[c,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(!1),[p,m]=(0,I.useState)(!1),h=async()=>{m(!0);try{await M(`/updates/apply`,{method:`POST`})}catch{m(!1);return}let e=e=>{e.preventDefault()};window.addEventListener(`beforeunload`,e);let t=y,n=window.setInterval(async()=>{try{let r=await(await fetch(`/console/api/updates/release`)).json();t!==void 0&&r.tag_name!==t&&(window.clearInterval(n),window.removeEventListener(`beforeunload`,e),window.location.reload())}catch{}},3e3)},g=Io(),_=Va(),v=g.data?.version??Ao,y=_.data?.tag_name?.replace(/^v/,``),b=ka(v,y),ee=Ja(),x=(0,I.useRef)(null);(0,I.useEffect)(()=>{b&&y!==void 0&&ua()!==y&&x.current!==y&&(x.current=y,f(!0))},[b,y]);let S=e=>{Pa(Q,e)};(0,I.useEffect)(()=>{a(!1)},[r.pathname]),(0,I.useEffect)(()=>{let e=()=>a(!1);return window.addEventListener(`cartethyia:overlay-open`,e),()=>window.removeEventListener(`cartethyia:overlay-open`,e)},[]),(0,I.useLayoutEffect)(()=>{window.scrollTo(0,0)},[r.pathname]);let te=async()=>{s(!0);try{await M(`/auth/logout`,{method:`POST`})}finally{Q.clear(),Ea(),n(`/login`,{replace:!0})}};(0,I.useEffect)(()=>(document.documentElement.dataset.glassEnabled=`true`,Xi(Yi()),()=>{delete document.documentElement.dataset.glassEnabled}),[]);let C=Fo(r.pathname,ee.data??[]);return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`app-bg`,"aria-hidden":`true`}),(0,q.jsx)(aa,{}),(0,q.jsx)(`div`,{className:`app-shell-frame`,children:(0,q.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,q.jsxs)(`aside`,{className:`glass app-sidebar ${i?`is-open`:``}`,"aria-label":`Dashboard navigation`,children:[(0,q.jsxs)(`div`,{className:`brand-header`,children:[(0,q.jsx)(`div`,{"aria-hidden":`true`,className:`brand-icon overflow-hidden p-0`,children:(0,q.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,q.jsxs)(`div`,{className:`brand-meta`,children:[(0,q.jsx)(`div`,{className:`brand-name`,children:(0,q.jsx)(`span`,{children:`Cartethyia`})}),(0,q.jsxs)(`div`,{className:`brand-version-badge`,children:[(0,q.jsx)(`a`,{href:l,target:`_blank`,rel:`noreferrer`,className:`brand-version-link`,children:jo}),b?(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!0),className:`brand-update-badge`,title:y===void 0?`A newer Cartethyia release is available`:`Update available: v${y} — how to install it`,children:[(0,q.jsx)(ot,{size:9,className:`shrink-0`,"aria-hidden":`true`}),y===void 0?`update`:`Update v${y}`]}):null]})]})]}),(0,q.jsx)(`nav`,{className:`flex-1 overflow-y-auto py-2 px-0`,children:Mo.map(e=>(0,q.jsx)(Uo,{group:e,pathname:r.pathname,onIntent:S},e.label))}),(0,q.jsx)(`div`,{className:`sidebar-user-card`,children:(0,q.jsxs)(`div`,{className:`user-card-content`,children:[(0,q.jsx)(`div`,{className:`user-avatar`,"aria-hidden":`true`,children:(e.displayName??e.email).slice(0,2).toUpperCase()}),(0,q.jsxs)(`div`,{className:`user-info`,children:[(0,q.jsx)(`p`,{className:`user-name`,children:e.displayName||`Admin`}),(0,q.jsx)(`p`,{className:`user-role`,children:e.email})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>u(!0),disabled:o,"aria-label":`Sign out`,title:`Sign out`,className:`topbar-icon-button w-15 h-15 rounded-inset`,children:(0,q.jsx)($e,{size:14})})]})})]}),(0,q.jsxs)(`div`,{className:`app-main-column`,children:[(0,q.jsxs)(`header`,{className:`glass app-topbar`,children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,className:`topbar-menu-btn`,onClick:()=>a(!0),children:(0,q.jsx)(tt,{size:18})}),(0,q.jsxs)(`div`,{className:`topbar-meta`,children:[(0,q.jsxs)(`h1`,{className:`topbar-title`,children:[(0,q.jsx)(C.icon,{className:`topbar-title-icon`,size:16,"aria-hidden":`true`}),C.title]}),(0,q.jsx)(`p`,{className:`topbar-subtitle`,children:C.sub})]}),(0,q.jsxs)(`div`,{className:`topbar-actions`,children:[(0,q.jsx)(Ci,{}),(0,q.jsx)(Lo,{}),(0,q.jsx)(Ho,{health:g.data,onOpenUpdate:()=>f(!0)})]})]}),(0,q.jsx)(`main`,{className:`route-enter w-full min-w-0`,children:t})]})]})}),(0,q.jsx)(oa,{open:c,onClose:()=>u(!1),onConfirm:te,title:`Sign out?`,message:`You will need to sign in again to open the console.`,confirmLabel:`Sign out`,danger:!0}),(0,q.jsx)(pa,{open:d,onClose:()=>f(!1),currentVersion:v,...y===void 0?{}:{latestVersion:y},..._.data?.html_url===void 0?{}:{releaseUrl:_.data.html_url},...y===void 0?{}:{onDismissVersion:()=>da(y)},onUpdateNow:h,updating:p})]})}var Ko=class extends I.Component{state={error:null,componentStack:null};static getDerivedStateFromError(e){return{error:e,componentStack:null}}componentDidCatch(e,t){console.error(`[console] route render failed:`,e,t.componentStack),this.setState({componentStack:t.componentStack??null})}componentDidUpdate(e){e.resetKey!==this.props.resetKey&&this.state.error!==null&&this.setState({error:null})}render(){if(this.state.error===null)return this.props.children;let e=this.state.componentStack?.trim(),t=this.state.error.stack?.trim(),n=e!==void 0&&e.length>0?e:t!==void 0&&t.length>0?t:null;return(0,q.jsx)(`main`,{className:`auth-viewport`,children:(0,q.jsxs)(`div`,{className:`card-solid auth-window border border-red-soft`,children:[(0,q.jsxs)(`div`,{className:`auth-header`,children:[(0,q.jsx)(`h1`,{className:`auth-title`,children:`Console view failed`}),(0,q.jsx)(`p`,{className:`auth-desc`,children:`This view could not be rendered.`})]}),(0,q.jsxs)(`div`,{className:`rounded-panel border border-inner-border bg-surface-2 p-7 leading-normal text-caption text-text-secondary`,children:[(0,q.jsx)(`strong`,{className:`block text-text-primary mb-2`,children:`Rendering error`}),(0,q.jsx)(`span`,{className:`select-text break-words`,children:this.state.error.message}),n===null?null:(0,q.jsx)(`pre`,{className:`mt-4 max-h-80 overflow-auto whitespace-pre-wrap break-words text-badge text-text-tertiary`,children:n})]}),(0,q.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`})]})})}},qo=3e5;function Jo(e){return`cartethyia:lazy-retry:${e}`}function Yo(e,t){if(e===null)return!0;let n=Number(e);return!Number.isFinite(n)||t-n>qo}function Xo(){try{return typeof sessionStorage>`u`?void 0:sessionStorage}catch{return}}function $(e,t,n={}){let r=n.storage??Xo(),i=n.reload??(()=>{window.location.reload()}),a=n.now??(()=>Date.now()),o=Jo(t);return(0,I.lazy)(async()=>{try{let t=await e();try{r?.removeItem(o)}catch{}return t}catch(e){let t=null;try{t=r?.getItem(o)??null}catch{t=null}if(Yo(t,a())){try{r?.setItem(o,String(a()))}catch{}return i(),new Promise(()=>{})}throw e}})}function Zo(){return(0,q.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,q.jsx)(le,{size:22,className:`animate-spin`,"aria-hidden":`true`}),(0,q.jsx)(`p`,{className:`text-caption`,children:`Loading console…`})]})}var Qo=$(()=>i(()=>import(`./LoginPage-C4w7vea-.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),`login`),$o=$(()=>i(()=>import(`./SetupPage-BQS0Rx_u.js`),__vite__mapDeps([10,1,2,3,4,6,7,8,9,11,12])),`setup`),es=$(()=>i(()=>import(`./BannedPage-2TJD37Hb.js`),__vite__mapDeps([13,1])),`banned`),ts=$(()=>i(()=>import(`./OverviewPage-CGC5gNs1.js`),__vite__mapDeps([14,1,15,16,17,2,3,4,18,19,20,21,8,9,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,6,41,42,43,44,45,46,47,7,48,49,50,51,52,53,54,55,56])),`overview`),ns=$(()=>i(()=>import(`./UsagePage-Cj_fEzhg.js`),__vite__mapDeps([57,1,15,16,2,3,4,58,59,40,6,46,48,21,8,9,60,23,5,30,28,61,35,62,63,64,44,45,20,52,11,56,65,66,67,68])),`usage`),rs=$(()=>i(()=>import(`./ProviderDetailPage-DQcthNGt.js`),__vite__mapDeps([69,1,15,70,71,17,2,3,4,72,58,59,40,6,46,48,8,9,22,60,23,24,25,30,29,31,32,33,34,73,36,43,63,44,45,47,7,49,51,20,52,55,56,74,75,41,42,76,11,65,77,66])),`provider-detail`),is=$(()=>i(()=>import(`./ProvidersPage-0OsXRGXe.js`),__vite__mapDeps([78,1,2,3,4,8,9,23,29,30,32,43,6,79,44,47,7,48,49,51,20,52,74,65,77])),`providers`),as=$(()=>i(()=>import(`./CombosPage-JEbYJFxw.js`),__vite__mapDeps([80,1,81,2,3,4,19,20,23,25,30,29,31,32,35,36,43,6,79,44,27,7,8,9,48,50,40,46,47,49,52,74,75,41,42,66])),`combos`),os=$(()=>i(()=>import(`./QuotaPage-Ci5O4BnH.js`),__vite__mapDeps([82,1,15,2,3,4,18,8,23,29,30,34,73,43,83,6,44,47,48,49,51,20,52,11,55,76,40,41,42])),`quota`),ss=$(()=>i(()=>import(`./ProxyPage-DdPc8slb.js`),__vite__mapDeps([84,1,15,2,3,4,8,9,22,23,29,30,31,32,33,73,38,43,40,6,41,42,44,45,47,7,48,51,20,52,11,65,67,68])),`proxy`),cs=$(()=>i(()=>import(`./SettingsPage-CDZjTt87.js`),__vite__mapDeps([85,1,15,2,3,4,21,9,23,25,29,30,39,40,6,41,42,43,83,44,45,7,8,48,51,20,56,12])),`settings`),ls=$(()=>i(()=>import(`./CliToolsPage-Rj9iHQ3F.js`),__vite__mapDeps([86,1,15,23,2,3,4,44,47,20,52,54,40,6,41,42,87,11])),`cli-tools`),us=$(()=>i(()=>import(`./CliToolDetailPage-xefJNRmJ.js`),__vite__mapDeps([88,1,70,2,3,4,58,23,35,36,37,6,44,45,47,7,8,9,48,50,30,29,40,46,49,51,20,52,53,41,42,54,87])),`cli-tool-detail`),ds=$(()=>i(()=>import(`./ConsoleLogPage-C3xx_inM.js`),__vite__mapDeps([89,1,2,3,4,23,34,36,38,43,6,44,68,47,7,8,9,11])),`console-log`),fs=$(()=>i(()=>import(`./CustomizationPage-Dw306gJU.js`),__vite__mapDeps([90,1,2,3,4,60,25,73,44,51,20,52])),`customization`),ps=$(()=>i(()=>import(`./StudioPage-TP7voAQ0.js`),__vite__mapDeps([91,1,16,71,2,3,4,72,22,30,92,29,61,31,73,63,44,7,8,9,48,50,35,36,40,6,46,47,49,53,41,42])),`studio`);function ms(){let e=G(),t=W();return(0,I.useEffect)(()=>(Fe(n=>{if(Q.clear(),Ea(),n===`banned`){e(`/banned`,{replace:!0});return}e(`/login?returnTo=${encodeURIComponent(t.pathname)}`,{replace:!0})}),()=>Fe(void 0)),[e,t.pathname]),null}function hs(){let e=W();return(0,q.jsx)(Ko,{resetKey:`${e.pathname}${e.search}`,children:(0,q.jsx)(I.Suspense,{fallback:(0,q.jsx)(Zo,{}),children:(0,q.jsxs)(vr,{children:[(0,q.jsx)(K,{path:`/login`,element:(0,q.jsx)(Qo,{})}),(0,q.jsx)(K,{path:`/setup`,element:(0,q.jsx)($o,{})}),(0,q.jsx)(K,{path:`/banned`,element:(0,q.jsx)(es,{})}),(0,q.jsx)(K,{path:`/*`,element:(0,q.jsx)(gs,{})})]})})})}function gs(){let[e,t]=(0,I.useState)({kind:`loading`}),n=W(),r=G(),[i]=(0,I.useState)(()=>n.pathname);return(0,I.useEffect)(()=>{let e=new AbortController;return Q.fetchQuery({queryKey:N.session.current,queryFn:()=>Pe(),staleTime:6e4}).then(n=>{if(!e.signal.aborted){if(n){Q.setQueryData(N.session.current,n),t({kind:`ready`,user:n}),n.isFirstBoot&&i!==`/setup`&&r(`/setup`,{replace:!0});return}Q.removeQueries({queryKey:N.session.current}),M(`/auth/first-boot`,{signal:e.signal}).then(n=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:n.requires_setup})}).catch(()=>{e.signal.aborted||t({kind:`unauthenticated`,needsSetup:!1})})}}).catch(n=>{e.signal.aborted||(typeof n==`object`&&n&&`status`in n&&n.status===403?t({kind:`blocked`}):t({kind:`unauthenticated`,needsSetup:!1}))}),()=>e.abort()},[i,r]),e.kind===`loading`?null:e.kind===`blocked`?(0,q.jsx)(gr,{to:`/banned`,replace:!0}):e.kind===`unauthenticated`?(0,q.jsx)(gr,{to:e.needsSetup?`/setup`:`/login?returnTo=${encodeURIComponent(n.pathname)}`,replace:!0}):(0,q.jsx)(Go,{user:e.user,children:(0,q.jsxs)(vr,{children:[(0,q.jsx)(K,{path:`/`,element:(0,q.jsx)(ts,{})}),(0,q.jsx)(K,{path:`/usage`,element:(0,q.jsx)(ns,{})}),(0,q.jsx)(K,{path:`/providers`,element:(0,q.jsx)(is,{})}),(0,q.jsx)(K,{path:`/providers/:providerId`,element:(0,q.jsx)(rs,{})}),(0,q.jsx)(K,{path:`/combos`,element:(0,q.jsx)(as,{})}),(0,q.jsx)(K,{path:`/quota`,element:(0,q.jsx)(os,{})}),(0,q.jsx)(K,{path:`/proxy`,element:(0,q.jsx)(ss,{})}),(0,q.jsx)(K,{path:`/console-log`,element:(0,q.jsx)(ds,{})}),(0,q.jsx)(K,{path:`/customization`,element:(0,q.jsx)(fs,{})}),(0,q.jsx)(K,{path:`/model-lab`,element:(0,q.jsx)(ps,{})}),(0,q.jsx)(K,{path:`/cli-tools`,element:(0,q.jsx)(ls,{})}),(0,q.jsx)(K,{path:`/cli-tools/:toolId`,element:(0,q.jsx)(us,{})}),(0,q.jsx)(K,{path:`/settings`,element:(0,q.jsx)(cs,{})}),(0,q.jsx)(K,{path:`*`,element:(0,q.jsx)(gr,{to:`/`,replace:!0})})]})})}function _s(){return(0,q.jsx)(pe,{client:Q,children:(0,q.jsxs)(ii,{basename:`/console`,children:[(0,q.jsx)(ms,{}),(0,q.jsx)(hs,{}),(0,q.jsx)(ne,{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 vs(e){document.title=`Cartethyia Console`,Ta().finally(()=>{Da(),(0,_i.createRoot)(e).render((0,q.jsx)(I.StrictMode,{children:(0,q.jsx)(_s,{})}))})}export{Mi as $,wo as A,Ha as B,Oo as C,yo as D,_o as E,za as F,Y as G,ca as H,Wa as I,Ri as J,Qi as K,Ua as L,Co as M,lo as N,To as O,qa as P,Vi as Q,Ka as R,mo as S,to as T,oa as U,Q as V,ea as W,Oi as X,zi as Y,Pi as Z,Ya as _,so as a,di as at,Ja as b,ro as c,ct,bo as d,Ze as dt,Li as et,Eo as f,Ye as ft,io as g,Qa as h,So as i,Jn as it,no as j,$a as k,go as l,st as lt,eo as m,vs as mountConsole,Ke as mt,uo as n,ai as nt,co as o,ft as ot,xo as p,Je as pt,$i as q,vo as r,G as rt,ko as s,ut as st,Ao as t,Ni as tt,Do as u,Qe as ut,Xa as v,Za as w,ho as x,oo as y,Ga as z};
@@ -1 +0,0 @@
1
- import{o as e,r as t}from"./jsx-runtime-CXUMngI_.js";import{w as n}from"./assert-C0YYuZJ4.js";import{o as r,t as i,u as a}from"./query-keys-CLaNz8Xz.js";import{t as o}from"./stream-retry-5QnVuSSo.js";var s=e(t(),1);function c(e){if(!a(e)||typeof e.inFlight!=`number`||!Number.isFinite(e.inFlight))return null;let t=Math.max(0,Math.floor(e.inFlight));return{count:t,uniqueIps:typeof e.uniqueIps==`number`&&Number.isFinite(e.uniqueIps)?Math.max(0,Math.min(t,Math.floor(e.uniqueIps))):t}}function l(){let[e,t]=(0,s.useState)(null),[n,i]=(0,s.useState)(null),[a,l]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{let e=!1,n,a,s=0,u=async()=>{let d=++s;try{let f=await r(`/live/in-flight`);if(e||d!==s)return;let p=c(f);p!==null&&(t(p.count),i(p.uniqueIps));let m=new EventSource(`/console/api/live/in-flight/stream`);n=m,m.addEventListener(`count`,n=>{if(!(e||d!==s))try{let e=c(JSON.parse(n.data));e!==null&&(t(e.count),i(e.uniqueIps),l(!0))}catch{}}),m.onerror=()=>{e||d!==s||(m.close(),n===m&&(n=void 0),l(!1),a=setTimeout(()=>{e||u()},o))}}catch{!e&&d===s&&(l(!1),a=setTimeout(()=>{e||u()},o))}};return u(),()=>{e=!0,s+=1,a!==void 0&&clearTimeout(a),n?.close()}},[]),{count:e,uniqueIps:n,live:a}}function u(e){if(!a(e)||!Array.isArray(e.pools))return null;let t=[];for(let n of e.pools){if(!a(n)||typeof n.poolId!=`string`)continue;let e=typeof n.currentInflight==`number`&&Number.isFinite(n.currentInflight)?Math.max(0,Math.floor(n.currentInflight)):0,r=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;t.push({poolId:n.poolId,currentInflight:e,bytesSent:r(n.bytesSent),bytesReceived:r(n.bytesReceived)})}return t}function d(e){for(;e.size>500;){let t=e.keys().next().value;if(t===void 0)break;e.delete(t)}}function f(e,t){let n=new Set,r=[];for(let i of t){n.add(i.poolId);let t=e.get(i.poolId),a=t?{poolId:i.poolId,currentInflight:i.currentInflight,bytesSent:Math.max(t.bytesSent,i.bytesSent),bytesReceived:Math.max(t.bytesReceived,i.bytesReceived)}:i;e.set(i.poolId,a),r.push(a)}d(e);for(let[t,i]of e)n.has(t)||r.push(i);return r}function p(){let e=n(),[t,a]=(0,s.useState)(null),[c,l]=(0,s.useState)(!1),d=(0,s.useState)(()=>new Map)[0];return(0,s.useEffect)(()=>{let t=!1,n,s,c=()=>{n=new EventSource(`/console/api/live/pools/stream`),n.addEventListener(`pools`,e=>{if(!t)try{let t=u(JSON.parse(e.data));t!==null&&(a(f(d,t)),l(!0))}catch{}}),n.addEventListener(`health`,()=>{t||e.invalidateQueries({queryKey:i.network.pools})}),n.onerror=()=>{n?.close(),!t&&(l(!1),s=setTimeout(()=>{t||p()},o))}},p=async()=>{try{let e=await r(`/live/pools`);if(t)return;let n=u(e);n!==null&&a(f(d,n)),c()}catch{}};return p(),()=>{t=!0,s!==void 0&&clearTimeout(s),n?.close()}},[e]),{pools:t,live:c}}function m(){let e=n();(0,s.useEffect)(()=>{let t=!1,n,i,a=0,s=async()=>{let c=++a;try{if(await r(`/live/in-flight`),t||c!==a)return;let l=new EventSource(`/console/api/live/requests/stream`);n=l,l.addEventListener(`request_completed`,()=>{t||c!==a||e.invalidateQueries({queryKey:[`console`,`usage`,`requests`],exact:!1})}),l.onerror=()=>{t||c!==a||(l.close(),n===l&&(n=void 0),i=setTimeout(()=>{t||s()},o))}}catch{t||(i=setTimeout(()=>{t||s()},o))}};return s(),()=>{t=!0,i!==void 0&&clearTimeout(i),n?.close()}},[e])}export{p as n,m as r,l as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./jsx-runtime-CXUMngI_.js";var t=e(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]);export{t};
@@ -1,2 +0,0 @@
1
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{u as i}from"./app-wvwCi4Eh.js";var a=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),o=e(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),s=e(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),c=e(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),l=e(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),u=e(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),d=e(`heart`,[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}]]),ee=e(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),f=e(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),te=e(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),p=e(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),m=r(),h=t(n(),1),ne=t(i(),1);function g(e){if(!e||typeof document>`u`)return;let t=document.head||document.getElementsByTagName(`head`)[0],n=document.createElement(`style`);n.type=`text/css`,t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}var _=e=>{switch(e){case`success`:return y;case`info`:return x;case`warning`:return b;case`error`:return S;default:return null}},v=Array(12).fill(0),re=({visible:e,className:t})=>h.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},h.createElement(`div`,{className:`sonner-spinner`},v.map((e,t)=>h.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),y=h.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`,"aria-hidden":`true`},h.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),b=h.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`,"aria-hidden":`true`},h.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),x=h.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`,"aria-hidden":`true`},h.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),S=h.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`,"aria-hidden":`true`},h.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),ie=h.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`},h.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),h.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),C=()=>{let[e,t]=h.useState(document.hidden);return h.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e},w=1,ae=100,T=e=>typeof e?.id==`number`||e?.id?.length>0?e.id:w++,E=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),this.getActiveToasts().forEach(t=>e(t)),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e],this.trimHistory()},this.trimHistory=()=>{let e=this.toasts.length-ae;e<=0||(this.toasts=this.toasts.filter(t=>e>0&&this.dismissedToasts.has(t.id)?(this.dismissedToasts.delete(t.id),e--,!1):!0))},this.create=e=>{let{message:t,...n}=e,r=T(e),i=this.pendingDismissals.get(r);i!==void 0&&(cancelAnimationFrame(i),this.pendingDismissals.delete(r),this.dismissedToasts.delete(r));let a=this.dismissedToasts.has(r),o=e.dismissible===void 0||e.dismissible;return a&&(this.dismissedToasts.delete(r),this.toasts=this.toasts.filter(e=>e.id!==r)),!a&&this.toasts.find(e=>e.id===r)?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:o,title:t}):n):this.addToast({title:t,...n,dismissible:o,id:r}),r},this.dismiss=e=>{if(e==null)return this.getActiveToasts().forEach(e=>{this.dismissedToasts.add(e.id),this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e;this.dismissedToasts.add(e);let t=this.pendingDismissals.get(e);return t!==void 0&&cancelAnimationFrame(t),this.pendingDismissals.set(e,requestAnimationFrame(()=>{this.pendingDismissals.delete(e),this.subscribers.forEach(t=>t({id:e,dismiss:!0}))})),e},this.message=(e,t)=>this.create({...t,message:e,type:void 0}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],h.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(O(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!h.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!h.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!h.isValidElement(r)?r:{message:r};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!h.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally==null||t.finally.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=T(t);return this.create({...t,jsx:e(n),id:n,type:void 0}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set,this.pendingDismissals=new Map}},D=(e,t)=>E.message(e,t),O=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,k=Object.assign(D,{success:E.success,info:E.info,warning:E.warning,error:E.error,custom:E.custom,message:E.message,promise:E.promise,dismiss:E.dismiss,loading:E.loading},{getHistory:()=>E.toasts,getToasts:()=>E.getActiveToasts()});g(`[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--normal-text);background:var(--normal-bg);border:1px solid var(--normal-border);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{-webkit-user-select:none;user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}`);function A(e){return e.label!==void 0}var oe=3,j=`24px`,se=`16px`,M=4e3,N=356,P=14,F=45,ce=200;function I(...e){return e.filter(Boolean).join(` `)}function le(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var L=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:ee,closeButton:f,style:te,cancelButtonStyle:p,actionButtonStyle:m,className:ne=``,descriptionClassName:g=``,duration:v,position:y,gap:b,expandByDefault:x,classNames:S,icons:w,closeButtonAriaLabel:ae=`Close toast`}=e,[T,E]=h.useState(null),[D,O]=h.useState(null),[k,oe]=h.useState(!1),[j,se]=h.useState(!1),[N,P]=h.useState(!1),[L,R]=h.useState(!1),[ue,de]=h.useState(!1),[fe,pe]=h.useState(0),[me,he]=h.useState(0),ge=h.useRef(n.duration||v||M),_e=h.useRef(null),z=h.useRef(null),ve=c===0,ye=c+1<=o,B=n.type,be=B??`default`,V=n.dismissible!==!1,xe=n.className||``,Se=n.descriptionClassName||``,Ce=h.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),we=h.useMemo(()=>n.closeButton??f,[n.closeButton,f]),Te=h.useMemo(()=>n.duration||v||M,[n.duration,v]),Ee=h.useRef(0),H=h.useRef(0),De=h.useRef(0),Oe=h.useRef(null),[ke,Ae]=y.split(`-`),je=h.useMemo(()=>s.reduce((e,t,n)=>n>=Ce?e:e+t.height,0),[s,Ce]),Me=C(),U=h.useMemo(()=>e.swipeDirections??le(y),[e.swipeDirections,y]),Ne=n.invert||t,Pe=B===`loading`;H.current=h.useMemo(()=>Ce*b+je,[Ce,je]),h.useEffect(()=>{ge.current=Te},[Te]),h.useEffect(()=>{oe(!0)},[]),h.useEffect(()=>{let e=z.current;if(e){let t=e.getBoundingClientRect().height;return he(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),h.useLayoutEffect(()=>{if(!k)return;let e=z.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,he(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[k,n.title,n.description,a,n.id,n.jsx,n.action,n.cancel]);let W=h.useCallback(()=>{se(!0),pe(H.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},ce)},[n,d,a,H]);h.useEffect(()=>{if(n.promise&&B===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||Me?(()=>{if(De.current<Ee.current){let e=new Date().getTime()-Ee.current;ge.current-=e}De.current=new Date().getTime()})():ge.current!==1/0&&(Ee.current=new Date().getTime(),e=setTimeout(()=>{n.onAutoClose==null||n.onAutoClose.call(n,n),W()},ge.current)),()=>clearTimeout(e)},[u,i,n,B,Me,W]),h.useEffect(()=>{n.delete&&(W(),n.onDismiss==null||n.onDismiss.call(n,n))},[W,n.delete]);function Fe(){return w?.loading?h.createElement(`div`,{className:I(S?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":B===`loading`},w.loading):h.createElement(re,{className:I(S?.loader,n?.classNames?.loader),visible:B===`loading`})}let Ie=n.icon||w?.[B]||_(B);return h.createElement(`li`,{tabIndex:0,ref:z,className:I(ne,xe,S?.toast,n?.classNames?.toast,S?.[be],n?.classNames?.[be]),"data-sonner-toast":``,"data-rich-colors":n.richColors??ee,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":k,"data-promise":!!n.promise,"data-swiped":ue,"data-removed":j,"data-visible":ye,"data-y-position":ke,"data-x-position":Ae,"data-index":c,"data-front":ve,"data-swiping":N,"data-dismissible":V,"data-type":B,"data-invert":Ne,"data-swipe-out":L,"data-swipe-direction":D,"data-expanded":!!(u||x&&k),"data-testid":n.testId,style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${j?fe:H.current}px`,"--initial-height":x?`auto`:`${me}px`,...te,...n.style},onDragEnd:()=>{P(!1),E(null),Oe.current=null},onPointerDown:e=>{e.button!==2&&!Pe&&V&&(_e.current=new Date,pe(H.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(P(!0),Oe.current={x:e.clientX,y:e.clientY}))},onPointerUp:()=>{if(L||!V)return;Oe.current=null;let e=Number(z.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(z.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),r=new Date().getTime()-_e.current?.getTime(),i=T===`x`?e:t,a=Math.abs(i)/r;if((T===`x`?U.includes(e>0?`right`:`left`):U.includes(t>0?`bottom`:`top`))&&(Math.abs(i)>=F||a>.11)){pe(H.current),n.onDismiss==null||n.onDismiss.call(n,n),O(T===`x`?e>0?`right`:`left`:t>0?`down`:`up`),W(),R(!0);return}var o,s;(o=z.current)==null||o.style.setProperty(`--swipe-amount-x`,`0px`),(s=z.current)==null||s.style.setProperty(`--swipe-amount-y`,`0px`),de(!1),P(!1),E(null)},onPointerMove:e=>{var t,n;if(!Oe.current||!V||window.getSelection()?.toString().length>0)return;let r=e.clientY-Oe.current.y,i=e.clientX-Oe.current.x;!T&&(Math.abs(i)>1||Math.abs(r)>1)&&E(Math.abs(i)>Math.abs(r)?`x`:`y`);let a={x:0,y:0},o=e=>1/(1.5+Math.abs(e)/20);if(T===`y`){if(U.includes(`top`)||U.includes(`bottom`)){if(U.includes(`top`)&&r<0||U.includes(`bottom`)&&r>0)a.y=r;else{let e=r*o(r);a.y=Math.abs(e)<Math.abs(r)?e:r}}}else if(T===`x`&&(U.includes(`left`)||U.includes(`right`))){if(U.includes(`left`)&&i<0||U.includes(`right`)&&i>0)a.x=i;else{let e=i*o(i);a.x=Math.abs(e)<Math.abs(i)?e:i}}(Math.abs(a.x)>0||Math.abs(a.y)>0)&&de(!0),(t=z.current)==null||t.style.setProperty(`--swipe-amount-x`,`${a.x}px`),(n=z.current)==null||n.style.setProperty(`--swipe-amount-y`,`${a.y}px`)}},we&&!n.jsx&&B!==`loading`?h.createElement(`button`,{"aria-label":ae,"data-disabled":Pe,"data-close-button":!0,onClick:Pe||!V?()=>{}:()=>{W(),n.onDismiss==null||n.onDismiss.call(n,n)},className:I(S?.closeButton,n?.classNames?.closeButton)},w?.close??ie):null,(B||n.icon||n.promise)&&n.icon!==null&&(w?.[B]!==null||n.icon)?h.createElement(`div`,{"data-icon":``,className:I(S?.icon,n?.classNames?.icon)},B===`loading`?n.icon||Fe():n.promise?Fe():null,B===`loading`?null:Ie):null,h.createElement(`div`,{"data-content":``,className:I(S?.content,n?.classNames?.content)},h.createElement(`div`,{"data-title":``,className:I(S?.title,n?.classNames?.title)},n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title),n.description?h.createElement(`div`,{"data-description":``,className:I(g,Se,S?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),h.isValidElement(n.cancel)?n.cancel:n.cancel&&A(n.cancel)?h.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||p,onClick:e=>{A(n.cancel)&&V&&(n.cancel.onClick==null||n.cancel.onClick.call(n.cancel,e),W())},className:I(S?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,h.isValidElement(n.action)?n.action:n.action&&A(n.action)?h.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||m,onClick:e=>{A(n.action)&&(n.action.onClick==null||n.action.onClick.call(n.action,e),!e.defaultPrevented&&W())},className:I(S?.actionButton,n?.classNames?.actionButton)},n.action.label):null)};function R(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function ue(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?se:j;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var de=h.forwardRef(function(e,t){let{id:n,invert:r,position:i=`bottom-right`,hotkey:a=[`altKey`,`KeyT`],expand:o,closeButton:s,className:c,offset:l,mobileOffset:u,theme:d=`light`,richColors:ee,duration:f,style:te,visibleToasts:p=oe,toastOptions:m,dir:g=R(),gap:_=P,icons:v,customAriaLabel:re,containerAriaLabel:y=`Notifications`}=e,[b,x]=h.useState([]),S=h.useMemo(()=>n?b.filter(e=>e.toasterId===n):b.filter(e=>!e.toasterId),[b,n]),ie=h.useMemo(()=>Array.from(new Set([i].concat(S.filter(e=>e.position).map(e=>e.position)))),[S,i]),[C,w]=h.useState([]),[ae,T]=h.useState(!1),[D,O]=h.useState(!1),[k,A]=h.useState(d===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:d),j=h.useRef(null),se=a.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),M=h.useRef(null),F=h.useRef(!1),ce=h.useCallback(e=>{x(t=>(t.find(t=>t.id===e.id)?.delete||E.dismiss(e.id),t.filter(({id:t})=>t!==e.id)))},[]);return h.useEffect(()=>E.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{x(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t))});return}setTimeout(()=>{ne.flushSync(()=>{x(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[]),h.useEffect(()=>{if(d!==`system`){A(d);return}if(d===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?A(`dark`):A(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{A(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{A(e?`dark`:`light`)}catch(e){console.error(e)}})}},[d]),h.useEffect(()=>{b.length<=1&&T(!1)},[b]),h.useEffect(()=>{let e=e=>{if(a.length>0&&a.every(t=>e[t]||e.code===t)){var t;T(!0),(t=j.current)==null||t.focus()}e.code===`Escape`&&(document.activeElement===j.current||j.current?.contains(document.activeElement))&&T(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]),h.useEffect(()=>{if(j.current)return()=>{M.current&&(M.current.focus({preventScroll:!0}),M.current=null,F.current=!1)}},[j.current]),h.createElement(`section`,{ref:t,"aria-label":re??`${y} ${se}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0,"data-react-aria-top-layer":!0},ie.map((t,n)=>{let[i,a]=t.split(`-`);return S.length?h.createElement(`ol`,{key:t,dir:g===`auto`?R():g,tabIndex:-1,ref:j,className:c,"data-sonner-toaster":!0,"data-sonner-theme":k,"data-y-position":i,"data-x-position":a,style:{"--front-toast-height":`${C[0]?.height||0}px`,"--width":`${N}px`,"--gap":`${_}px`,...te,...ue(l,u)},onBlur:e=>{F.current&&!e.currentTarget.contains(e.relatedTarget)&&(F.current=!1,M.current&&=(M.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||F.current||(F.current=!0,M.current=e.relatedTarget)},onMouseEnter:()=>T(!0),onMouseMove:()=>T(!0),onMouseLeave:()=>{D||T(!1)},onDragEnd:()=>T(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||O(!0)},onPointerUp:()=>O(!1)},S.filter(e=>!e.position&&n===0||e.position===t).map((n,i)=>h.createElement(L,{key:n.id,icons:v,index:i,toast:n,defaultRichColors:ee,duration:m?.duration??f,className:m?.className,descriptionClassName:m?.descriptionClassName,invert:r,visibleToasts:p,closeButton:m?.closeButton??s,interacting:D,position:t,style:m?.style,unstyled:m?.unstyled,classNames:m?.classNames,cancelButtonStyle:m?.cancelButtonStyle,actionButtonStyle:m?.actionButtonStyle,closeButtonAriaLabel:m?.closeButtonAriaLabel,removeToast:ce,toasts:S.filter(e=>e.position==n.position),heights:C.filter(e=>e.position==n.position),setHeights:w,expandByDefault:o,gap:_,expanded:ae,swipeDirections:e.swipeDirections}))):null}))});function fe(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=fe(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function pe(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=fe(e))&&(r&&(r+=` `),r+=t);return r}var me=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},he=(e,t)=>({classGroupId:e,validator:t}),ge=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),_e=`-`,z=[],ve=`arbitrary..`,ye=e=>{let t=V(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return be(e);let n=e.split(_e);return B(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?me(i,t):t:i||z}return n[e]||z}}},B=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=B(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(_e):e.slice(t).join(_e),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},be=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?ve+r:void 0})(),V=e=>{let{theme:t,classGroups:n}=e;return xe(n,t)},xe=(e,t)=>{let n=ge();for(let r in e){let i=e[r];Se(i,n,r,t)}return n},Se=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];Ce(i,t,n,r)}},Ce=(e,t,n,r)=>{if(typeof e==`string`){we(e,t,n);return}if(typeof e==`function`){Te(e,t,n,r);return}Ee(e,t,n,r)},we=(e,t,n)=>{let r=e===``?t:H(t,e);r.classGroupId=n},Te=(e,t,n,r)=>{if(De(e)){Se(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(he(n,e))},Ee=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];Se(o,H(t,a),n,r)}},H=(e,t)=>{let n=e,r=t.split(_e),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=ge(),n.nextPart.set(t,i)),n=i}return n},De=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,Oe=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},ke=`!`,Ae=`:`,je=[],Me=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),U=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===Ae){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(ke)?(c=s.slice(0,-1),l=!0):s.startsWith(ke)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return Me(t,l,c,u)};if(t){let e=t+Ae,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Me(je,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Ne=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},Pe=e=>({cache:Oe(e.cacheSize),parseClassName:U(e),sortModifiers:Ne(e),postfixLookupClassGroupIds:W(e),...ye(e)}),W=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},Fe=/\s+/,Ie=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(Fe),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:ee,baseClassName:f,maybePostfixModifierPosition:te}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let p=!!te,m;if(p){m=r(f.substring(0,te));let e=m&&o[m]?r(f):void 0;e&&e!==m&&(m=e,p=!1)}else m=r(f);if(!m){if(!p){l=t+(l.length>0?` `+l:l);continue}if(m=r(f),!m){l=t+(l.length>0?` `+l:l);continue}p=!1}let h=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),ne=ee?h+ke:h,g=ne+m;if(s.indexOf(g)>-1)continue;s.push(g);let _=i(m,p);for(let e=0;e<_.length;++e){let t=_[e];s.push(ne+t)}l=t+(l.length>0?` `+l:l)}return l},Le=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=Re(n))&&(i&&(i+=` `),i+=r);return i},Re=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=Re(e[r]))&&(n&&(n+=` `),n+=t);return n},ze=(e,...t)=>{let n,r,i,a,o=o=>(n=Pe(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=Ie(e,n);return i(e,a),a};return a=o,(...e)=>a(Le(...e))},Be=[],G=e=>{let t=t=>t[e]||Be;return t.isThemeGetter=!0,t.themeKey=e,t},Ve=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,He=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Ue=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,We=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ge=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ke=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,qe=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Je=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,K=e=>Ue.test(e),q=e=>!!e&&!Number.isNaN(Number(e)),J=e=>!!e&&Number.isInteger(Number(e)),Ye=e=>e.endsWith(`%`)&&q(e.slice(0,-1)),Y=e=>We.test(e),Xe=()=>!0,Ze=e=>Ge.test(e)&&!Ke.test(e),Qe=()=>!1,$e=e=>qe.test(e),et=e=>Je.test(e),tt=e=>!X(e)&&!Q(e),nt=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),rt=e=>$(e,bt,Qe),X=e=>Ve.test(e),Z=e=>$(e,xt,Ze),it=e=>$(e,St,q),at=e=>$(e,wt,Xe),ot=e=>$(e,Ct,Qe),st=e=>$(e,vt,Qe),ct=e=>$(e,yt,et),lt=e=>$(e,Tt,$e),Q=e=>He.test(e),ut=e=>_t(e,xt),dt=e=>_t(e,Ct),ft=e=>_t(e,vt),pt=e=>_t(e,bt),mt=e=>_t(e,yt),ht=e=>_t(e,Tt,!0),gt=e=>_t(e,wt,!0),$=(e,t,n)=>{let r=Ve.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},_t=(e,t,n=!1)=>{let r=He.exec(e);return r?r[1]?t(r[1]):n:!1},vt=e=>e===`position`||e===`percentage`,yt=e=>e===`image`||e===`url`,bt=e=>e===`length`||e===`size`||e===`bg-size`,xt=e=>e===`length`,St=e=>e===`number`,Ct=e=>e===`family-name`,wt=e=>e===`number`||e===`weight`,Tt=e=>e===`shadow`,Et=()=>{let e=G(`color`),t=G(`font`),n=G(`text`),r=G(`font-weight`),i=G(`tracking`),a=G(`leading`),o=G(`breakpoint`),s=G(`container`),c=G(`spacing`),l=G(`radius`),u=G(`shadow`),d=G(`inset-shadow`),ee=G(`text-shadow`),f=G(`drop-shadow`),te=G(`blur`),p=G(`perspective`),m=G(`aspect`),h=G(`ease`),ne=G(`animate`),g=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],_=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],v=()=>[..._(),Q,X],re=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],y=()=>[`auto`,`contain`,`none`],b=()=>[Q,X,c],x=()=>[K,`full`,`auto`,...b()],S=()=>[J,`none`,`subgrid`,Q,X],ie=()=>[`auto`,{span:[`full`,J,Q,X]},J,Q,X],C=()=>[J,`auto`,Q,X],w=()=>[`auto`,`min`,`max`,`fr`,Q,X],ae=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],T=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],E=()=>[`auto`,...b()],D=()=>[K,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...b()],O=()=>[s,K,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...b()],k=()=>[K,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...b()],A=()=>[e,Q,X],oe=()=>[..._(),ft,st,{position:[Q,X]}],j=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],se=()=>[`auto`,`cover`,`contain`,pt,rt,{size:[Q,X]}],M=()=>[Ye,ut,Z],N=()=>[``,`none`,`full`,l,Q,X],P=()=>[``,q,ut,Z],F=()=>[`solid`,`dashed`,`dotted`,`double`],ce=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],I=()=>[q,Ye,ft,st],le=()=>[``,`none`,te,Q,X],L=()=>[`none`,q,Q,X],R=()=>[`none`,q,Q,X],ue=()=>[q,Q,X],de=()=>[K,`full`,...b()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Y],breakpoint:[Y],color:[Xe],container:[Y],"drop-shadow":[Y],ease:[`in`,`out`,`in-out`],font:[tt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Y],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Y],shadow:[Y],spacing:[`px`,q],text:[Y],"text-shadow":[Y],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,K,X,Q,m]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,Q,X]}],"container-named":[nt],columns:[{columns:[q,`auto`,X,Q,s]}],"break-after":[{"break-after":g()}],"break-before":[{"break-before":g()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:v()}],overflow:[{overflow:re()}],"overflow-x":[{"overflow-x":re()}],"overflow-y":[{"overflow-y":re()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:x()}],"inset-x":[{"inset-x":x()}],"inset-y":[{"inset-y":x()}],start:[{"inset-s":x(),start:x()}],end:[{"inset-e":x(),end:x()}],"inset-bs":[{"inset-bs":x()}],"inset-be":[{"inset-be":x()}],top:[{top:x()}],right:[{right:x()}],bottom:[{bottom:x()}],left:[{left:x()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[J,`auto`,Q,X]}],basis:[{basis:[K,`full`,`auto`,s,...b()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[q,K,`auto`,`initial`,`none`,X]}],grow:[{grow:[``,q,Q,X]}],shrink:[{shrink:[``,q,Q,X]}],order:[{order:[J,`first`,`last`,`none`,Q,X]}],"grid-cols":[{"grid-cols":S()}],"col-start-end":[{col:ie()}],"col-start":[{"col-start":C()}],"col-end":[{"col-end":C()}],"grid-rows":[{"grid-rows":S()}],"row-start-end":[{row:ie()}],"row-start":[{"row-start":C()}],"row-end":[{"row-end":C()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":w()}],"auto-rows":[{"auto-rows":w()}],gap:[{gap:b()}],"gap-x":[{"gap-x":b()}],"gap-y":[{"gap-y":b()}],"justify-content":[{justify:[...ae(),`normal`]}],"justify-items":[{"justify-items":[...T(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...T()]}],"align-content":[{content:[`normal`,...ae()]}],"align-items":[{items:[...T(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...T(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ae()}],"place-items":[{"place-items":[...T(),`baseline`]}],"place-self":[{"place-self":[`auto`,...T()]}],p:[{p:b()}],px:[{px:b()}],py:[{py:b()}],ps:[{ps:b()}],pe:[{pe:b()}],pbs:[{pbs:b()}],pbe:[{pbe:b()}],pt:[{pt:b()}],pr:[{pr:b()}],pb:[{pb:b()}],pl:[{pl:b()}],m:[{m:E()}],mx:[{mx:E()}],my:[{my:E()}],ms:[{ms:E()}],me:[{me:E()}],mbs:[{mbs:E()}],mbe:[{mbe:E()}],mt:[{mt:E()}],mr:[{mr:E()}],mb:[{mb:E()}],ml:[{ml:E()}],"space-x":[{"space-x":b()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":b()}],"space-y-reverse":[`space-y-reverse`],size:[{size:D()}],"inline-size":[{inline:[`auto`,...O()]}],"min-inline-size":[{"min-inline":[`auto`,...O()]}],"max-inline-size":[{"max-inline":[`none`,...O()]}],"block-size":[{block:[`auto`,...k()]}],"min-block-size":[{"min-block":[`auto`,...k()]}],"max-block-size":[{"max-block":[`none`,...k()]}],w:[{w:[s,`screen`,...D()]}],"min-w":[{"min-w":[s,`screen`,`none`,...D()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...D()]}],h:[{h:[`screen`,`lh`,...D()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...D()]}],"max-h":[{"max-h":[`screen`,`lh`,`none`,...D()]}],"font-size":[{text:[`base`,n,ut,Z]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,gt,at]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Ye,X]}],"font-family":[{font:[dt,ot,t]}],"font-features":[{"font-features":[X]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,Q,X]}],"line-clamp":[{"line-clamp":[q,`none`,Q,it]}],leading:[{leading:[`none`,a,...b()]}],"list-image":[{"list-image":[`none`,Q,X]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,Q,X]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:A()}],"text-color":[{text:A()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...F(),`wavy`]}],"text-decoration-thickness":[{decoration:[q,`from-font`,`auto`,Q,Z]}],"text-decoration-color":[{decoration:A()}],"underline-offset":[{"underline-offset":[q,`auto`,Q,X]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:b()}],"tab-size":[{tab:[J,Q,X]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,Q,X]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,Q,X]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:oe()}],"bg-repeat":[{bg:j()}],"bg-size":[{bg:se()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},J,Q,X],radial:[``,Q,X],conic:[``,J,Q,X]},mt,ct]}],"bg-color":[{bg:A()}],"gradient-from-pos":[{from:M()}],"gradient-via-pos":[{via:M()}],"gradient-to-pos":[{to:M()}],"gradient-from":[{from:A()}],"gradient-via":[{via:A()}],"gradient-to":[{to:A()}],rounded:[{rounded:N()}],"rounded-s":[{"rounded-s":N()}],"rounded-e":[{"rounded-e":N()}],"rounded-t":[{"rounded-t":N()}],"rounded-r":[{"rounded-r":N()}],"rounded-b":[{"rounded-b":N()}],"rounded-l":[{"rounded-l":N()}],"rounded-ss":[{"rounded-ss":N()}],"rounded-se":[{"rounded-se":N()}],"rounded-ee":[{"rounded-ee":N()}],"rounded-es":[{"rounded-es":N()}],"rounded-tl":[{"rounded-tl":N()}],"rounded-tr":[{"rounded-tr":N()}],"rounded-br":[{"rounded-br":N()}],"rounded-bl":[{"rounded-bl":N()}],"border-w":[{border:P()}],"border-w-x":[{"border-x":P()}],"border-w-y":[{"border-y":P()}],"border-w-s":[{"border-s":P()}],"border-w-e":[{"border-e":P()}],"border-w-bs":[{"border-bs":P()}],"border-w-be":[{"border-be":P()}],"border-w-t":[{"border-t":P()}],"border-w-r":[{"border-r":P()}],"border-w-b":[{"border-b":P()}],"border-w-l":[{"border-l":P()}],"divide-x":[{"divide-x":P()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":P()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...F(),`hidden`,`none`]}],"divide-style":[{divide:[...F(),`hidden`,`none`]}],"border-color":[{border:A()}],"border-color-x":[{"border-x":A()}],"border-color-y":[{"border-y":A()}],"border-color-s":[{"border-s":A()}],"border-color-e":[{"border-e":A()}],"border-color-bs":[{"border-bs":A()}],"border-color-be":[{"border-be":A()}],"border-color-t":[{"border-t":A()}],"border-color-r":[{"border-r":A()}],"border-color-b":[{"border-b":A()}],"border-color-l":[{"border-l":A()}],"divide-color":[{divide:A()}],"outline-style":[{outline:[...F(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[q,Q,X]}],"outline-w":[{outline:[``,q,ut,Z]}],"outline-color":[{outline:A()}],shadow:[{shadow:[``,`inner`,`none`,u,ht,lt]}],"shadow-color":[{shadow:A()}],"inset-shadow":[{"inset-shadow":[`none`,d,ht,lt]}],"inset-shadow-color":[{"inset-shadow":A()}],"ring-w":[{ring:P()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:A()}],"ring-offset-w":[{"ring-offset":[q,Z]}],"ring-offset-color":[{"ring-offset":A()}],"inset-ring-w":[{"inset-ring":P()}],"inset-ring-color":[{"inset-ring":A()}],"text-shadow":[{"text-shadow":[`none`,ee,ht,lt]}],"text-shadow-color":[{"text-shadow":A()}],opacity:[{opacity:[q,Q,X]}],"mix-blend":[{"mix-blend":[...ce(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":ce()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[q]}],"mask-image-linear-from-pos":[{"mask-linear-from":I()}],"mask-image-linear-to-pos":[{"mask-linear-to":I()}],"mask-image-linear-from-color":[{"mask-linear-from":A()}],"mask-image-linear-to-color":[{"mask-linear-to":A()}],"mask-image-t-from-pos":[{"mask-t-from":I()}],"mask-image-t-to-pos":[{"mask-t-to":I()}],"mask-image-t-from-color":[{"mask-t-from":A()}],"mask-image-t-to-color":[{"mask-t-to":A()}],"mask-image-r-from-pos":[{"mask-r-from":I()}],"mask-image-r-to-pos":[{"mask-r-to":I()}],"mask-image-r-from-color":[{"mask-r-from":A()}],"mask-image-r-to-color":[{"mask-r-to":A()}],"mask-image-b-from-pos":[{"mask-b-from":I()}],"mask-image-b-to-pos":[{"mask-b-to":I()}],"mask-image-b-from-color":[{"mask-b-from":A()}],"mask-image-b-to-color":[{"mask-b-to":A()}],"mask-image-l-from-pos":[{"mask-l-from":I()}],"mask-image-l-to-pos":[{"mask-l-to":I()}],"mask-image-l-from-color":[{"mask-l-from":A()}],"mask-image-l-to-color":[{"mask-l-to":A()}],"mask-image-x-from-pos":[{"mask-x-from":I()}],"mask-image-x-to-pos":[{"mask-x-to":I()}],"mask-image-x-from-color":[{"mask-x-from":A()}],"mask-image-x-to-color":[{"mask-x-to":A()}],"mask-image-y-from-pos":[{"mask-y-from":I()}],"mask-image-y-to-pos":[{"mask-y-to":I()}],"mask-image-y-from-color":[{"mask-y-from":A()}],"mask-image-y-to-color":[{"mask-y-to":A()}],"mask-image-radial":[{"mask-radial":[Q,X]}],"mask-image-radial-from-pos":[{"mask-radial-from":I()}],"mask-image-radial-to-pos":[{"mask-radial-to":I()}],"mask-image-radial-from-color":[{"mask-radial-from":A()}],"mask-image-radial-to-color":[{"mask-radial-to":A()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[q]}],"mask-image-conic-from-pos":[{"mask-conic-from":I()}],"mask-image-conic-to-pos":[{"mask-conic-to":I()}],"mask-image-conic-from-color":[{"mask-conic-from":A()}],"mask-image-conic-to-color":[{"mask-conic-to":A()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:oe()}],"mask-repeat":[{mask:j()}],"mask-size":[{mask:se()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,Q,X]}],filter:[{filter:[``,`none`,Q,X]}],blur:[{blur:le()}],brightness:[{brightness:[q,Q,X]}],contrast:[{contrast:[q,Q,X]}],"drop-shadow":[{"drop-shadow":[``,`none`,f,ht,lt]}],"drop-shadow-color":[{"drop-shadow":A()}],grayscale:[{grayscale:[``,q,Q,X]}],"hue-rotate":[{"hue-rotate":[q,Q,X]}],invert:[{invert:[``,q,Q,X]}],saturate:[{saturate:[q,Q,X]}],sepia:[{sepia:[``,q,Q,X]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,Q,X]}],"backdrop-blur":[{"backdrop-blur":le()}],"backdrop-brightness":[{"backdrop-brightness":[q,Q,X]}],"backdrop-contrast":[{"backdrop-contrast":[q,Q,X]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,q,Q,X]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[q,Q,X]}],"backdrop-invert":[{"backdrop-invert":[``,q,Q,X]}],"backdrop-opacity":[{"backdrop-opacity":[q,Q,X]}],"backdrop-saturate":[{"backdrop-saturate":[q,Q,X]}],"backdrop-sepia":[{"backdrop-sepia":[``,q,Q,X]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":b()}],"border-spacing-x":[{"border-spacing-x":b()}],"border-spacing-y":[{"border-spacing-y":b()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,Q,X]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[q,`initial`,Q,X]}],ease:[{ease:[`linear`,`initial`,h,Q,X]}],delay:[{delay:[q,Q,X]}],animate:[{animate:[`none`,ne,Q,X]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[p,Q,X]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:L()}],"rotate-x":[{"rotate-x":L()}],"rotate-y":[{"rotate-y":L()}],"rotate-z":[{"rotate-z":L()}],scale:[{scale:R()}],"scale-x":[{"scale-x":R()}],"scale-y":[{"scale-y":R()}],"scale-z":[{"scale-z":R()}],"scale-3d":[`scale-3d`],skew:[{skew:ue()}],"skew-x":[{"skew-x":ue()}],"skew-y":[{"skew-y":ue()}],transform:[{transform:[Q,X,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:de()}],"translate-x":[{"translate-x":de()}],"translate-y":[{"translate-y":de()}],"translate-z":[{"translate-z":de()}],"translate-none":[`translate-none`],zoom:[{zoom:[J,Q,X]}],accent:[{accent:A()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:A()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,Q,X]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":A()}],"scrollbar-track-color":[{"scrollbar-track":A()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":b()}],"scroll-mx":[{"scroll-mx":b()}],"scroll-my":[{"scroll-my":b()}],"scroll-ms":[{"scroll-ms":b()}],"scroll-me":[{"scroll-me":b()}],"scroll-mbs":[{"scroll-mbs":b()}],"scroll-mbe":[{"scroll-mbe":b()}],"scroll-mt":[{"scroll-mt":b()}],"scroll-mr":[{"scroll-mr":b()}],"scroll-mb":[{"scroll-mb":b()}],"scroll-ml":[{"scroll-ml":b()}],"scroll-p":[{"scroll-p":b()}],"scroll-px":[{"scroll-px":b()}],"scroll-py":[{"scroll-py":b()}],"scroll-ps":[{"scroll-ps":b()}],"scroll-pe":[{"scroll-pe":b()}],"scroll-pbs":[{"scroll-pbs":b()}],"scroll-pbe":[{"scroll-pbe":b()}],"scroll-pt":[{"scroll-pt":b()}],"scroll-pr":[{"scroll-pr":b()}],"scroll-pb":[{"scroll-pb":b()}],"scroll-pl":[{"scroll-pl":b()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,Q,X]}],fill:[{fill:[`none`,...A()]}],"stroke-w":[{stroke:[q,ut,Z,it]}],stroke:[{stroke:[`none`,...A()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`start`,`end`,`right`,`left`],"inset-y":[`inset-bs`,`inset-be`,`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`ps`,`pe`,`pr`,`pl`],py:[`pbs`,`pbe`,`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`ms`,`me`,`mr`,`ml`],my:[`mbs`,`mbe`,`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-s`,`border-w-e`,`border-w-r`,`border-w-l`],"border-w-y":[`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-s`,`border-color-e`,`border-color-r`,`border-color-l`],"border-color-y":[`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-ms`,`scroll-me`,`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-ps`,`scroll-pe`,`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}},Dt=(e,{cacheSize:t,prefix:n,experimentalParseClassName:r,extend:i={},override:a={}})=>(Ot(e,`cacheSize`,t),Ot(e,`prefix`,n),Ot(e,`experimentalParseClassName`,r),kt(e.theme,a.theme),kt(e.classGroups,a.classGroups),kt(e.conflictingClassGroups,a.conflictingClassGroups),kt(e.conflictingClassGroupModifiers,a.conflictingClassGroupModifiers),Ot(e,`postfixLookupClassGroups`,a.postfixLookupClassGroups),Ot(e,`orderSensitiveModifiers`,a.orderSensitiveModifiers),At(e.theme,i.theme),At(e.classGroups,i.classGroups),At(e.conflictingClassGroups,i.conflictingClassGroups),At(e.conflictingClassGroupModifiers,i.conflictingClassGroupModifiers),jt(e,i,`postfixLookupClassGroups`),jt(e,i,`orderSensitiveModifiers`),e),Ot=(e,t,n)=>{n!==void 0&&(e[t]=n)},kt=(e,t)=>{if(t)for(let n in t)Ot(e,n,t[n])},At=(e,t)=>{if(t)for(let n in t)jt(e,t,n)},jt=(e,t,n)=>{let r=t[n];r!==void 0&&(e[n]=e[n]?e[n].concat(r):r)},Mt=((e,...t)=>typeof e==`function`?ze(Et,e,...t):ze(()=>Dt(Et(),e),...t))({extend:{classGroups:{"font-size":[{text:[`micro`,`badge`,`caption`,`body`,`body-lg`,`lead`,`title`,`display`,`hero`]}]}}});function Nt(...e){return Mt(pe(e))}var Pt=`console-theme`;function Ft(e){return e===`light`||e===`dark`?e:`dark`}function It(e=`dark`){if(typeof window>`u`||!window.localStorage)return e;try{return Ft(window.localStorage.getItem(`console-theme`)??e)}catch{return e}}function Lt(e){return e===`dark`}function Rt(e){typeof document>`u`||(document.documentElement.dataset.theme=Lt(e)?`dark`:`light`)}function zt(e){if(typeof window<`u`)try{window.localStorage.setItem(Pt,e)}catch{}Rt(e)}var Bt={primary:`btn-primary bg-accent text-accent-foreground hover:bg-accent-hover`,secondary:`btn-secondary border border-inner-border bg-hover text-text-primary hover:bg-active-pill hover:border-border-strong`,ghost:`btn-ghost text-text-secondary hover:bg-hover hover:text-text-primary`,danger:`btn-danger bg-red text-white hover:opacity-90`},Vt={sm:`btn-sm h-15 px-5 text-badge [&_svg]:size-6.5`,md:``,lg:``,icon:`btn-icon size-17 p-0 grid place-items-center [&_svg]:size-7.5`};function Ht({variant:e=`secondary`,size:t=`md`,className:n}={}){return Nt(`btn inline-flex items-center justify-center gap-3.5 rounded-control font-semibold text-caption px-7 py-2 transition-all active:scale-[0.97]`,Bt[e],Vt[t],n)}var Ut=(0,h.forwardRef)(({className:e=``,variant:t=`secondary`,size:n=`md`,icon:r,label:i,loading:a=!1,children:o,type:s=`button`,...c},l)=>{let u=n===`icon`&&i!==void 0,d=a?(0,m.jsx)(ee,{size:14,className:`animate-spin`}):r;return(0,m.jsxs)(`button`,{ref:l,type:s,className:Ht({variant:t,size:u?`md`:n,className:u?Nt(`btn-labeled h-15 px-5 gap-3 text-badge [&_svg]:size-6.5`,e):e}),"aria-busy":a||void 0,...c,children:[d?(0,m.jsx)(`span`,{className:`btn-icon-wrapper inline-flex items-center`,"aria-hidden":`true`,children:d}):null,u?(0,m.jsx)(`span`,{className:`btn-label`,children:i}):o]})});Ut.displayName=`Button`;function Wt(e,t){let n=[e,t].filter(e=>!!e).join(`
2
- `);return{...t?{description:t}:{},action:{label:`Copy`,onClick:()=>{if(!navigator.clipboard){k.error(`Clipboard unavailable`);return}navigator.clipboard.writeText(n).then(()=>k.success(`Toast content copied`,{duration:2e3}),()=>k.error(`Copy failed`,{duration:2e3}))}}}}var Gt={success:(e,t)=>k.success(e,Wt(e,t)),successRich:(e,t,n)=>k.success(e,{description:t,action:{label:`Copy`,onClick:()=>{if(!navigator.clipboard){k.error(`Clipboard unavailable`);return}navigator.clipboard.writeText(`${e}\n${n}`).then(()=>k.success(`Toast content copied`,{duration:2e3}),()=>k.error(`Copy failed`,{duration:2e3}))}}}),error:(e,t)=>k.error(e,Wt(e,t)),dismiss:e=>k.dismiss(e)};function Kt(e){if(e==null||!Number.isFinite(e))return`—`;if(e<0)return`${Math.round(e)} B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r+=1;let i=r===0?0:1;return`${n.toFixed(i)} ${t[r]}`}function qt(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function Jt(e){return e==null||!Number.isFinite(e)?`—`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(1)} s`}function Yt(e){if(e==null||!Number.isFinite(e))return`—`;let t=Math.max(0,Math.floor(e)),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),a=t%60;return n>0?`${n}d ${r}h`:r>0?`${r}h ${i}m`:i>0?`${i}m ${a}s`:`${a}s`}function Xt(e,t){return e==null||!Number.isFinite(e)?`—`:Math.round(e).toLocaleString(t)}function Zt(e,t){return e==null||!Number.isFinite(e)?`—`:e.toLocaleString(t,{maximumFractionDigits:2})}export{u as C,o as D,s as E,a as O,d as S,c as T,k as _,qt as a,f as b,Ut as c,Lt as d,It as f,de as g,pe as h,Xt as i,Ht as l,Nt as m,Zt as n,Yt as o,zt as p,Jt as r,Gt as s,Kt as t,Rt as u,p as v,l as w,ee as x,te as y};
@@ -1 +0,0 @@
1
- function e(e,t=!0){if(!e)return``;let n=new Date(e).getTime()-Date.now();if(!Number.isFinite(n)||n<=0)return t?`Resetting soon`:`Expired`;let r=t?`Resets in`:`Expires in`,i=Math.ceil(n/6e4);if(i<60)return`${r} ${i}mins`;let a=Math.floor(i/60),o=i%60;if(a<24)return`${r} ${a}h${o>0?` ${o}mins`:``}`;let s=Math.floor(a/24),c=a%24,l=`${c>0?` ${c}h`:``}${o>0?` ${o}mins`:``}`;if(s>=365){let e=Math.floor(s/365),t=s%365;return`${r} ${e}y${t>0?` ${t}d`:``}${l}`}if(s>=30){let e=Math.floor(s/30),t=s%30;return`${r} ${e}mo${t>0?` ${t}d`:``}${l}`}return`${r} ${s}d${l}`}function t(e){let t=/^(\d+)\s*hour$/i.exec(e.trim());if(!t)return e;let n=Number(t[1]);if(!Number.isFinite(n)||n<=0)return e;if(n===24)return`Daily`;if(n===168)return`Weekly`;if(n===720)return`Monthly`;if(n===8760)return`Yearly`;if(n>=8760){let e=Math.floor(n%8760/24);return`${Math.floor(n/8760)}y${e>0?` ${e}d`:``}`}if(n>=720){let e=Math.floor(n%720/24);return`${Math.floor(n/720)}mo${e>0?` ${e}d`:``}`}return n>=24?`${Math.floor(n/24)}d${n%24>0?` ${n%24}h`:``}`:`${n}h`}function n(e){if(!e)return``;let t=new Date(e);return Number.isFinite(t.getTime())?`Last refreshed: ${t.toLocaleString([],{dateStyle:`medium`,timeStyle:`short`})}`:``}function r(e){if(!e)return null;let t=e.toLowerCase();return t.includes(`invalidated`)||t.includes(`reauthorization`)||t.includes(`refresh token revoked`)?`OAuth account invalidated — re-login required`:t.includes(`endpoint is not available`)||t===`not available`?`Quota tracking is not supported for this provider`:t.includes(`overloaded`)||t.includes(`capacity`)||t.includes(`temporarily unavailable`)?`Provider capacity unavailable — retry after the indicated time`:t.includes(`usage limit`)||t.includes(`quota`)||t.includes(`rate limit`)?`Quota exhausted or rate limited — wait for reset`:t.includes(`http 500`)||t.includes(`internal server error`)?`Provider temporarily unavailable — retry in a moment`:t.includes(`http 429`)||t.includes(`too many requests`)?`Rate limited — slow down requests`:t.includes(`http 401`)||t.includes(`unauthorized`)||t.includes(`invalid`)?`Credential expired — re-login or refresh token`:t.includes(`http 403`)||t.includes(`forbidden`)?`Access denied — check account permissions`:t.includes(`http 402`)||t.includes(`payment`)?`Payment required — top up account balance`:t.includes(`connect`)||t.includes(`network`)||t.includes(`timeout`)?`Network error — check connection and retry`:`Provider error — inspect account health details`}function i(e){return e===null?{bar:`var(--text-tertiary)`,text:`var(--text-tertiary)`}:e<20?{bar:`var(--red)`,text:`var(--red)`}:e<50?{bar:`var(--orange)`,text:`var(--orange)`}:{bar:`var(--green)`,text:`var(--green)`}}function a(e,t){let n=Math.ceil(e.length/4),r=Math.max(0,n-1),i=Math.min(Math.max(0,Number.isFinite(t)?Math.trunc(t):0),r),a=i*4;return{items:e.slice(a,a+4),page:i,pageCount:n,startIndex:a}}function o(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function s(e){return e.startsWith(`eyJ`)||e.startsWith(`sk-`)||e.startsWith(`…`)}function c(e,t){return e.startsWith(`eyJ`)||e===`—`?t:e}var l=new Set([`oauth`,`api_key`,`none`]);function u(e,t){let n=t.trim()||`Unnamed account`,r=c(e,n).trim(),i=r&&r!==`—`&&!l.has(r.toLowerCase())?r:null,a=[i,n].find(e=>e!==null&&o(e))??null;return a===null?{primary:n,secondary:i!==null&&i!==n&&!s(i)?i:null}:{primary:a,secondary:[n,i].find(e=>e!==null&&e!==a&&!s(e))??null}}export{r as a,e as i,n,a as o,t as r,i as s,u as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./jsx-runtime-CXUMngI_.js";import{S as t,_ as n,w as r}from"./assert-C0YYuZJ4.js";import{i,n as a,o,t as s}from"./query-keys-CLaNz8Xz.js";import{t as c}from"./useMutation-Dmnfh1Ue.js";var l=e(`shield`,[[`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`}]]);function u(){return t({queryKey:s.settings.runtime,queryFn:e=>o(`/settings/runtime`,{signal:n(e)}),...i,staleTime:a.effectivelyImmutable})}function d(){let e=r();return c({mutationFn:e=>o(`/settings/runtime`,{method:`PATCH`,body:JSON.stringify(e)}),onSuccess:async()=>{await e.invalidateQueries({queryKey:s.settings.runtime})}})}export{d as n,l as r,u as t};
@@ -1 +0,0 @@
1
- var e=5e3;export{e as t};