cartethyia 2.7.4 → 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 (553) hide show
  1. package/.env.example +2 -0
  2. package/README.md +17 -5
  3. package/dist/dashboard/assets/{BannedPage-ChG5svFb.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-BIcWQun7.js → CliToolDetailPage-DZKmVuJN.js} +1 -1
  8. package/dist/dashboard/assets/CliToolDetailPage-DZKmVuJN.js.gz +0 -0
  9. package/dist/dashboard/assets/{CliToolsPage-Bf2VelDe.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-ggeMSjte.js → CustomizationPage-BKj_r0rp.js} +1 -1
  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-U6AKaJcF.js → LoginPage-DkXb6dx-.js} +1 -1
  20. package/dist/dashboard/assets/LoginPage-DkXb6dx-.js.gz +0 -0
  21. package/dist/dashboard/assets/{ModelPicker-BMS2t8BA.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-lsrx7NYg.js → ProxyPage-5SnUSy3j.js} +1 -1
  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-f0DE1h0-.js → SetupPage-WTa0sktC.js} +1 -1
  38. package/dist/dashboard/assets/SetupPage-WTa0sktC.js.gz +0 -0
  39. package/dist/dashboard/assets/{StudioPage-Cq5tW7hW.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-C0K-c4eo.js +1 -0
  48. package/dist/dashboard/assets/assert-C0K-c4eo.js.gz +0 -0
  49. package/dist/dashboard/assets/{badge-D9CS6dZk.js → badge-DfbhQU4k.js} +1 -1
  50. package/dist/dashboard/assets/badge-DfbhQU4k.js.gz +0 -0
  51. package/dist/dashboard/assets/{banner-DympBNq4.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-ibRWU_uT.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-CQXVMn4P.js +1 -0
  62. package/dist/dashboard/assets/cli-tools-CQXVMn4P.js.gz +0 -0
  63. package/dist/dashboard/assets/{clipboard-button-DJm-9pz7.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-8fiE6tec.js → dialog-BEK7KP0H.js} +1 -1
  66. package/dist/dashboard/assets/dialog-BEK7KP0H.js.gz +0 -0
  67. package/dist/dashboard/assets/{drawer-CqGYeOrd.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-BSAsYsmV.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-D-MTJxMr.js → formatters-BAACA727.js} +1 -1
  76. package/dist/dashboard/assets/formatters-BAACA727.js.gz +0 -0
  77. package/dist/dashboard/assets/{github-badge-CPK47xQx.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-DBNPOfhV.js → index-FQlj0HUT.js} +2 -2
  80. package/dist/dashboard/assets/index-FQlj0HUT.js.gz +0 -0
  81. package/dist/dashboard/assets/{inline-BT0zntEr.js → inline-C4gU5iOL.js} +1 -1
  82. package/dist/dashboard/assets/inline-C4gU5iOL.js.gz +0 -0
  83. package/dist/dashboard/assets/{input-Da2ZViWg.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-BXNeLw6M.js → layout-CajrYUnD.js} +1 -1
  86. package/dist/dashboard/assets/layout-CajrYUnD.js.gz +0 -0
  87. package/dist/dashboard/assets/{list-row-BycOrrIV.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/network-C5UBACrJ.js +1 -0
  92. package/dist/dashboard/assets/network-C5UBACrJ.js.gz +0 -0
  93. package/dist/dashboard/assets/numbers-CUWAZK4J.js +2 -0
  94. package/dist/dashboard/assets/numbers-CUWAZK4J.js.gz +0 -0
  95. package/dist/dashboard/assets/pagination-Xsi9Qx04.js +1 -0
  96. package/dist/dashboard/assets/pagination-Xsi9Qx04.js.gz +0 -0
  97. package/dist/dashboard/assets/quota-DvQbD_sr.js +1 -0
  98. package/dist/dashboard/assets/quota-DvQbD_sr.js.gz +0 -0
  99. package/dist/dashboard/assets/routing-in0f_IfK.js +1 -0
  100. package/dist/dashboard/assets/routing-in0f_IfK.js.gz +0 -0
  101. package/dist/dashboard/assets/{select-BIYIBkMU.js → select-BLULNqTp.js} +1 -1
  102. package/dist/dashboard/assets/select-BLULNqTp.js.gz +0 -0
  103. package/dist/dashboard/assets/settings-CcGczj6I.js +1 -0
  104. package/dist/dashboard/assets/settings-CcGczj6I.js.gz +0 -0
  105. package/dist/dashboard/assets/shield-BMQNxORh.js +1 -0
  106. package/dist/dashboard/assets/shield-BMQNxORh.js.gz +0 -0
  107. package/dist/dashboard/assets/{stack-DfgnFDWY.js → stack-D2lIR0tg.js} +1 -1
  108. package/dist/dashboard/assets/stack-D2lIR0tg.js.gz +0 -0
  109. package/dist/dashboard/assets/{state-CkfdYWel.js → state-DTARjfiW.js} +1 -1
  110. package/dist/dashboard/assets/state-DTARjfiW.js.gz +0 -0
  111. package/dist/dashboard/assets/{switch-SYm237HG.js → switch-c0oPSnqW.js} +1 -1
  112. package/dist/dashboard/assets/switch-c0oPSnqW.js.gz +0 -0
  113. package/dist/dashboard/assets/{useMutation-BQqCRNIi.js → useMutation-m8WGNPrz.js} +1 -1
  114. package/dist/dashboard/assets/useMutation-m8WGNPrz.js.gz +0 -0
  115. package/dist/dashboard/console-backgrounds.jpg +0 -0
  116. package/dist/dashboard/console-backgrounds_initial.jpg +0 -0
  117. package/dist/dashboard/index.html +2 -2
  118. package/dist/dashboard/index.html.gz +0 -0
  119. package/dist/dashboard/precompressed-assets.json +56 -55
  120. package/migrations/full-postgres/0036_system_prompt_presets_refs.sql +10 -0
  121. package/migrations/full-postgres/0037_share_concurrency_scope.sql +3 -0
  122. package/migrations/full-postgres/0038_add_accounts_quota_snapshot.sql +7 -0
  123. package/migrations/full-postgres/0039_add_telemetry_provider_model_indexes.sql +13 -0
  124. package/migrations/full-postgres/0040_add_models_dialect.sql +3 -0
  125. package/migrations/full-postgres/0041_add_daily_checkin_ledger_account_fk.sql +7 -0
  126. package/migrations/lite-sqlite3/0036_system_prompt_presets_refs.sql +14 -0
  127. package/migrations/lite-sqlite3/0037_share_concurrency_scope.sql +3 -0
  128. package/migrations/lite-sqlite3/0038_add_accounts_quota_snapshot.sql +4 -0
  129. package/migrations/lite-sqlite3/0039_add_telemetry_provider_model_indexes.sql +6 -0
  130. package/migrations/lite-sqlite3/0040_add_models_dialect.sql +3 -0
  131. package/migrations/lite-sqlite3/0041_add_daily_checkin_ledger_account_fk.sql +26 -0
  132. package/package.json +4 -6
  133. package/scripts/cli/update.ts +15 -41
  134. package/src/boot/app.ts +58 -2
  135. package/src/boot/dependencies.ts +786 -732
  136. package/src/boot/lifecycle.ts +11 -12
  137. package/src/config/cooldowns.ts +34 -55
  138. package/src/config/network.ts +1 -1
  139. package/src/config/package-paths.ts +1 -1
  140. package/src/config/providers.ts +13 -14
  141. package/src/config/resources.ts +0 -5
  142. package/src/config/runtime.ts +2 -5
  143. package/src/config/spec.ts +26 -6
  144. package/src/console/api-keys/ban-constants.ts +38 -0
  145. package/src/console/api-keys/contracts.ts +71 -62
  146. package/src/console/api-keys/routes.ts +48 -12
  147. package/src/console/auth/access.ts +4 -4
  148. package/src/console/auth/account-reset.ts +1 -1
  149. package/src/console/auth/audit-recorder.ts +1 -1
  150. package/src/console/auth/lockout.ts +7 -3
  151. package/src/console/auth/row-coercion.ts +57 -12
  152. package/src/console/auth/session-resolver.ts +1 -1
  153. package/src/console/auth/session-service.ts +8 -2
  154. package/src/console/auth/session.ts +37 -31
  155. package/src/console/auth/setup-service.ts +4 -3
  156. package/src/console/auth/user-store.ts +1 -1
  157. package/src/console/backup/9router-map.ts +0 -3
  158. package/src/console/backup/contracts.ts +9 -9
  159. package/src/console/backup/export-endpoint.ts +5 -6
  160. package/src/console/backup/nine-router.ts +1 -7
  161. package/src/console/backup/routes.ts +29 -33
  162. package/src/console/backup/service.ts +468 -468
  163. package/src/console/backup/store.ts +47 -29
  164. package/src/console/backup/validate.ts +11 -1
  165. package/src/console/cli-tools/contracts.ts +7 -7
  166. package/src/console/cli-tools/injectors/cline.ts +110 -110
  167. package/src/console/cli-tools/injectors/codex.ts +181 -181
  168. package/src/console/cli-tools/injectors/copilot.ts +108 -108
  169. package/src/console/cli-tools/injectors/driver.ts +247 -247
  170. package/src/console/cli-tools/injectors/jcode.ts +115 -115
  171. package/src/console/cli-tools/injectors/openclaw.ts +161 -161
  172. package/src/console/cli-tools/injectors/opencode.ts +153 -153
  173. package/src/console/cli-tools/routes.ts +1 -1
  174. package/src/console/cli-tools/service.ts +1 -1
  175. package/src/console/cli-tools/store.ts +2 -2
  176. package/src/console/console-router.ts +32 -0
  177. package/src/console/dashboard-assets.ts +9 -9
  178. package/src/console/domain-registration.ts +16 -2
  179. package/src/console/inferhub/client.ts +0 -7
  180. package/src/console/inferhub/key-store.ts +1 -1
  181. package/src/console/inferhub/normalize.ts +2 -2
  182. package/src/console/inferhub/routes.ts +1 -1
  183. package/src/console/inferhub/types.ts +1 -1
  184. package/src/console/observability/contracts.ts +1 -1
  185. package/src/console/observability/live.ts +31 -18
  186. package/src/console/observability/logs.ts +1 -1
  187. package/src/console/observability/sse.ts +62 -8
  188. package/src/console/observability/store.ts +20 -4
  189. package/src/console/providers/catalog/catalog-projections.ts +1 -1
  190. package/src/console/providers/catalog/contracts.ts +39 -0
  191. package/src/console/providers/catalog/model-operations.ts +1 -1
  192. package/src/console/providers/catalog/provider-operations.ts +95 -17
  193. package/src/console/providers/catalog/public-model-store.ts +0 -0
  194. package/src/console/providers/catalog/routes.ts +27 -3
  195. package/src/console/providers/catalog/store.ts +147 -8
  196. package/src/console/providers/detail/routes.ts +1 -1
  197. package/src/console/providers/oauth/callback-listener.ts +100 -18
  198. package/src/console/providers/oauth/routes.ts +92 -13
  199. package/src/console/quota/account-quota-global.ts +41 -3
  200. package/src/console/quota/account-quota-shared.ts +10 -3
  201. package/src/console/quota/account-quota-tenant.ts +259 -66
  202. package/src/console/quota/daily-growth-job.ts +308 -0
  203. package/src/console/quota/native-identity.ts +2 -2
  204. package/src/console/quota/quota-view.ts +1 -1
  205. package/src/console/remote-support/routes.ts +1 -1
  206. package/src/console/remote-support/service.ts +2 -2
  207. package/src/console/routing/model/contracts.ts +1 -1
  208. package/src/console/routing/pools/contracts.ts +2 -2
  209. package/src/console/routing/pools/import-parse.ts +3 -3
  210. package/src/console/routing/pools/relay-deploy.ts +3 -3
  211. package/src/console/settings/contracts.ts +29 -2
  212. package/src/console/settings/store.ts +20 -0
  213. package/src/console/share/share-router.ts +100 -32
  214. package/src/console/share/share-stats.ts +4 -4
  215. package/src/console/share/share-usage.ts +1 -1
  216. package/src/console/shared/errors.ts +2 -2
  217. package/src/console/shared/object.ts +18 -0
  218. package/src/console/shared/read-through-cache.ts +4 -4
  219. package/src/console/shared/transaction.ts +14 -0
  220. package/src/console/system-prompt/contracts.ts +89 -12
  221. package/src/console/system-prompt/routes.ts +98 -45
  222. package/src/console/updates/apply-update.ts +244 -0
  223. package/src/console/updates/routes.ts +252 -97
  224. package/src/main.ts +11 -5
  225. package/src/network/http2-bidi.ts +1 -1
  226. package/src/network/ip-utils.ts +298 -0
  227. package/src/network/outbound-fetch.ts +1 -1
  228. package/src/network/pool/agent.ts +7 -6
  229. package/src/network/pool/byte-accounting.ts +1 -1
  230. package/src/network/pool/resolver.ts +16 -12
  231. package/src/network/pool/selector.ts +150 -136
  232. package/src/network/pool-health-machine.ts +1 -1
  233. package/src/network/rate-limit-verdict.ts +1 -1
  234. package/src/network/retry.ts +1 -1
  235. package/src/network/ssrf.ts +20 -71
  236. package/src/observability/event-log.ts +2 -2
  237. package/src/observability/event-query.ts +59 -291
  238. package/src/observability/log-sanitize.ts +1 -1
  239. package/src/observability/metrics.ts +4 -4
  240. package/src/observability/payload-capture.ts +6 -5
  241. package/src/observability/payload-store.ts +1 -1
  242. package/src/observability/runtime-metrics.ts +1 -1
  243. package/src/observability/telemetry-buffer.ts +12 -3
  244. package/src/observability/telemetry-reconciliation.ts +3 -3
  245. package/src/observability/token-speed.ts +1 -1
  246. package/src/persistence/connection-url.ts +1 -1
  247. package/src/persistence/db-handle.ts +1 -1
  248. package/src/persistence/db-pg.ts +2 -2
  249. package/src/persistence/db-sqlite.ts +3 -3
  250. package/src/persistence/dialect.ts +5 -1
  251. package/src/persistence/readiness.ts +1 -1
  252. package/src/persistence/redis.ts +1 -1
  253. package/src/persistence/schema.ts +113 -40
  254. package/src/persistence/shared-cache.ts +2 -2
  255. package/src/persistence/sort-order.ts +1 -1
  256. package/src/persistence/stores/api-key-store.ts +10 -1
  257. package/src/persistence/stores/share-store.ts +20 -8
  258. package/src/persistence/system-prompt-store.ts +63 -18
  259. package/src/persistence/tenant-preferences.ts +1 -1
  260. package/src/persistence/ttl-cache.ts +3 -3
  261. package/src/persistence/usage-flush.ts +7 -2
  262. package/src/protocol/canonical-model.ts +1 -1
  263. package/src/protocol/codecs.ts +6 -10
  264. package/src/protocol/dsml.ts +3 -49
  265. package/src/protocol/image-clamp.ts +2 -2
  266. package/src/protocol/reasoning-text.ts +1 -1
  267. package/src/protocol/reasoning.ts +7 -52
  268. package/src/protocol/registry.ts +50 -15
  269. package/src/protocol/request/chat.ts +46 -19
  270. package/src/protocol/request/codex.ts +1 -1
  271. package/src/protocol/request/messages.ts +46 -14
  272. package/src/protocol/request/responses.ts +19 -10
  273. package/src/protocol/response/chat.ts +25 -10
  274. package/src/protocol/response/codex.ts +1 -1
  275. package/src/protocol/response/messages.ts +1 -1
  276. package/src/protocol/response/omp-tool-call-markup.ts +1 -1
  277. package/src/protocol/response/responses.ts +1 -1
  278. package/src/protocol/sse-decoder.ts +50 -1
  279. package/src/protocol/stop-reason.ts +2 -2
  280. package/src/protocol/think-split.ts +347 -0
  281. package/src/protocol/translation/attachment-integrity.ts +3 -3
  282. package/src/protocol/translation/cache-controls.ts +8 -20
  283. package/src/protocol/translation/capabilities.ts +6 -6
  284. package/src/protocol/translation/dialect/deepseek.ts +10 -0
  285. package/src/protocol/translation/dialect/inband.ts +39 -0
  286. package/src/protocol/translation/dialect/model-thinking.ts +89 -0
  287. package/src/protocol/translation/dialect/qwen.ts +114 -0
  288. package/src/protocol/translation/dialect/resolver.ts +83 -0
  289. package/src/protocol/translation/dialect/rules.ts +93 -0
  290. package/src/protocol/translation/dialect/thinking-ladder.ts +245 -0
  291. package/src/protocol/translation/dialect/types.ts +58 -0
  292. package/src/protocol/translation/quirks.ts +18 -4
  293. package/src/protocol/translation/thinking.ts +12 -252
  294. package/src/protocol/translation/tool-id.ts +3 -3
  295. package/src/protocol/translation/tool-repair.ts +1 -1
  296. package/src/protocol/upstream/post-json.ts +6 -1
  297. package/src/providers/adapters/compatible-adapter.ts +42 -3
  298. package/src/providers/authentication/jwt-validator.ts +0 -5
  299. package/src/providers/authentication/oauth-client.ts +254 -253
  300. package/src/providers/authentication/oauth-flow-store.ts +42 -7
  301. package/src/providers/bundled-discovery-providers.ts +6 -30
  302. package/src/providers/configured-openai-providers.ts +82 -97
  303. package/src/providers/default-registry.ts +23 -35
  304. package/src/providers/discovery/catalog/catalog-format.ts +13 -2
  305. package/src/providers/discovery/discovery-types.ts +0 -1
  306. package/src/providers/discovery/openai-model-discovery.ts +2 -2
  307. package/src/providers/discovery/probe-phases.ts +48 -13
  308. package/src/providers/discovery/probing-service.ts +6 -8
  309. package/src/providers/integrations/agentrouter/agentrouter.ts +12 -2
  310. package/src/providers/integrations/antigravity/antigravity-oauth.ts +0 -1
  311. package/src/providers/integrations/antigravity/antigravity-protocol.ts +0 -14
  312. package/src/providers/integrations/antigravity/antigravity.ts +2 -2
  313. package/src/providers/integrations/buddy/buddy-catalog-shared.ts +1 -1
  314. package/src/providers/integrations/buddy/buddy-chat-shared.ts +20 -4
  315. package/src/providers/integrations/buddy/buddy-cli-headers.ts +19 -52
  316. package/src/providers/integrations/buddy/buddy-identity.ts +86 -0
  317. package/src/providers/integrations/buddy/buddy-oauth-shared.ts +1 -1
  318. package/src/providers/integrations/buddy/codebuddy/cn-provider.ts +1 -2
  319. package/src/providers/integrations/buddy/codebuddy/provider.ts +4 -15
  320. package/src/providers/integrations/buddy/codebuddy/shared.ts +30 -9
  321. package/src/providers/integrations/buddy/workbuddy/provider.ts +5 -9
  322. package/src/providers/integrations/buddy/workbuddy/shared.ts +21 -3
  323. package/src/providers/integrations/claude/claude-cch.ts +148 -148
  324. package/src/providers/integrations/claude/fallback-credit.ts +3 -7
  325. package/src/providers/integrations/cline/cline.ts +1 -1
  326. package/src/providers/integrations/codex/codex-device-code.ts +101 -101
  327. package/src/providers/integrations/codex/codex-oauth.ts +0 -1
  328. package/src/providers/integrations/commandcode/commandcode.ts +75 -115
  329. package/src/providers/integrations/commandcode/quota.ts +131 -51
  330. package/src/providers/integrations/cursor/cursor-http2.ts +0 -3
  331. package/src/providers/integrations/cursor/cursor-quota.ts +2 -6
  332. package/src/providers/integrations/cursor/cursor-request.ts +0 -87
  333. package/src/providers/integrations/cursor/cursor-shared.ts +0 -4
  334. package/src/providers/integrations/cursor/cursor.ts +38 -5
  335. package/src/providers/integrations/cursor/protocol/framing.ts +0 -56
  336. package/src/providers/integrations/cursor/protocol/messages.ts +0 -96
  337. package/src/providers/integrations/factory/factory.ts +9 -9
  338. package/src/providers/integrations/github/github-discovery.ts +55 -10
  339. package/src/providers/integrations/github/github-oauth.ts +6 -5
  340. package/src/providers/integrations/github/github.ts +41 -14
  341. package/src/providers/integrations/grok/grok-oauth.ts +261 -261
  342. package/src/providers/integrations/grok/grok-quota-frame.ts +1 -1
  343. package/src/providers/integrations/grok/grok-quota.ts +16 -7
  344. package/src/providers/integrations/grok/grok-ratelimit-store.ts +0 -5
  345. package/src/providers/integrations/grok/grok-ratelimit.ts +3 -0
  346. package/src/providers/integrations/grok/grok.ts +86 -36
  347. package/src/providers/integrations/kilo/kilo-oauth.ts +1 -1
  348. package/src/providers/integrations/kiro/kiro-cache.ts +31 -0
  349. package/src/providers/integrations/kiro/kiro-catalog.ts +31 -5
  350. package/src/providers/integrations/kiro/kiro-discovery.ts +47 -43
  351. package/src/providers/integrations/kiro/kiro-machine-id.ts +6 -3
  352. package/src/providers/integrations/kiro/kiro-oauth.ts +523 -255
  353. package/src/providers/integrations/kiro/kiro-quota.ts +35 -47
  354. package/src/providers/integrations/kiro/kiro-request.ts +8 -11
  355. package/src/providers/integrations/kiro/kiro-stream.ts +13 -0
  356. package/src/providers/integrations/kiro/kiro.ts +81 -68
  357. package/src/providers/integrations/muse/muse-oauth.ts +0 -1
  358. package/src/providers/integrations/muse/muse-quota.ts +0 -4
  359. package/src/providers/integrations/opencode/fingerprint.ts +7 -5
  360. package/src/providers/integrations/opencode/provider.ts +17 -24
  361. package/src/providers/integrations/qoder/qoder-catalog.ts +85 -8
  362. package/src/providers/integrations/qoder/qoder-oauth.ts +165 -25
  363. package/src/providers/integrations/qoder/qoder-quota.ts +48 -6
  364. package/src/providers/integrations/qoder/qoder-realm.ts +10 -31
  365. package/src/providers/integrations/qoder/qoder-sse.ts +159 -0
  366. package/src/providers/integrations/qoder/qoder-umid.ts +21 -25
  367. package/src/providers/integrations/qoder/qoder-virtual.ts +12 -0
  368. package/src/providers/integrations/qoder/qoder.ts +354 -62
  369. package/src/providers/integrations/shared/connect.ts +0 -54
  370. package/src/providers/integrations/shared/hash.ts +15 -0
  371. package/src/providers/integrations/shared/session-cache.ts +136 -0
  372. package/src/providers/integrations/trae/trae-cache.ts +7 -87
  373. package/src/providers/integrations/trae/trae-catalog.ts +1 -6
  374. package/src/providers/integrations/trae/trae-protocol.ts +17 -8
  375. package/src/providers/integrations/trae/trae-realm.ts +0 -7
  376. package/src/providers/integrations/trae/trae.ts +53 -10
  377. package/src/providers/integrations/xai/xai-oauth.ts +5 -5
  378. package/src/providers/integrations/zcode-start-plan/gifts.ts +265 -0
  379. package/src/providers/integrations/zcode-start-plan/oauth.ts +154 -0
  380. package/src/providers/integrations/zcode-start-plan/provider.ts +131 -0
  381. package/src/providers/integrations/zcode-start-plan/quota.ts +152 -0
  382. package/src/providers/integrations/zcode-start-plan/zcode_prompt.json +10 -0
  383. package/src/providers/operations/account-error-classification.ts +131 -116
  384. package/src/providers/operations/account-health-service.ts +31 -39
  385. package/src/providers/operations/account-reset-service.ts +58 -1
  386. package/src/providers/operations/cli-platform.ts +31 -5
  387. package/src/providers/operations/client-version-resolver.ts +4 -6
  388. package/src/providers/operations/client-versions.ts +10 -7
  389. package/src/providers/operations/provider-catalog-seeder.ts +2 -0
  390. package/src/providers/operations/provider-catalog-service.ts +18 -2
  391. package/src/providers/operations/provider-credential-service.ts +19 -2
  392. package/src/providers/provider-contracts.ts +18 -7
  393. package/src/providers/provider-metadata.ts +17 -2
  394. package/src/providers/provider-model-definition.ts +22 -1
  395. package/src/providers/provider-probe.ts +4 -2
  396. package/src/providers/provider-usage.ts +81 -16
  397. package/src/providers/quota/cache.ts +29 -0
  398. package/src/providers/quota/quota-contracts.ts +4 -0
  399. package/src/providers/quota/refresh.ts +27 -4
  400. package/src/providers/quota/snapshot.ts +94 -0
  401. package/src/providers/search/search-provider.ts +1 -3
  402. package/src/providers/search/search-providers.ts +2 -1
  403. package/src/security/abuse.ts +4 -4
  404. package/src/security/admission/service.ts +2 -2
  405. package/src/security/admission/ttl.ts +61 -61
  406. package/src/security/api-key-auth.ts +16 -4
  407. package/src/security/client-router-fingerprint.ts +4 -4
  408. package/src/security/credential-codec.ts +3 -3
  409. package/src/security/csrf.ts +2 -2
  410. package/src/security/ip-boundary.ts +16 -189
  411. package/src/security/model-access-rule.ts +1 -1
  412. package/src/security/outbound-headers.ts +18 -0
  413. package/src/shared/invoke-guard.ts +47 -0
  414. package/src/transport/contracts.ts +13 -4
  415. package/src/transport/dispatch/attempt-finalize.ts +1 -1
  416. package/src/transport/dispatch/capture-policy.ts +34 -37
  417. package/src/transport/dispatch/empty-stream.ts +23 -20
  418. package/src/transport/dispatch/generation.ts +25 -45
  419. package/src/transport/dispatch/native-shared.ts +127 -0
  420. package/src/transport/dispatch/proxy-request.ts +3 -1
  421. package/src/transport/dispatch/responses-compact.ts +25 -46
  422. package/src/transport/dispatch/streaming/encoder.ts +18 -72
  423. package/src/transport/dispatch/streaming/finalize.ts +2 -2
  424. package/src/transport/dispatch/streaming/stream.ts +7 -3
  425. package/src/transport/dispatch/streaming/thinking-loop.ts +1 -1
  426. package/src/transport/dispatch/systemone.ts +20 -48
  427. package/src/transport/dispatch/token-count.ts +41 -38
  428. package/src/transport/dispatch/websearch.ts +19 -45
  429. package/src/transport/drain-endpoint.ts +1 -1
  430. package/src/transport/failure-policy.ts +6 -0
  431. package/src/transport/guards/auth-guard.ts +0 -6
  432. package/src/transport/guards/body-policy.ts +3 -3
  433. package/src/transport/guards/headroom-guard.ts +1 -1
  434. package/src/transport/guards/pipeline.ts +1 -1
  435. package/src/transport/guards/request-context.ts +12 -17
  436. package/src/transport/request/preparer.ts +286 -7
  437. package/src/transport/request/rtk/compress-request.ts +3 -3
  438. package/src/transport/request/rtk/rtk-constants.ts +2 -2
  439. package/src/transport/request/rtk/rtk-filters.ts +8 -8
  440. package/src/transport/request/state.ts +1 -13
  441. package/src/transport/request/system-prompt-injection.ts +74 -11
  442. package/src/transport/request/tenant-preferences.ts +22 -0
  443. package/src/transport/routing/candidate-index.ts +2 -2
  444. package/src/transport/routing/round-robin.ts +1 -1
  445. package/src/transport/routing/route-catalog.ts +17 -18
  446. package/src/transport/routing/route-model.ts +126 -33
  447. package/src/transport/routing/router.ts +152 -37
  448. package/src/transport/shutdown-notice.ts +2 -2
  449. package/src/transport/surface/adapters.ts +3 -3
  450. package/src/transport/surface/chat/encode.ts +7 -7
  451. package/src/transport/surface/chat/parse.ts +7 -7
  452. package/src/transport/surface/completion.ts +2 -2
  453. package/src/transport/surface/content-parts.ts +1 -1
  454. package/src/transport/surface/dialects.ts +2 -2
  455. package/src/transport/surface/messages/parse.ts +3 -3
  456. package/src/transport/surface/responses/adapter.ts +1 -1
  457. package/src/transport/surface/responses/errors.ts +0 -9
  458. package/src/transport/vision-handoff-cache.ts +58 -0
  459. package/src/transport/vision-handoff.ts +376 -0
  460. package/src/workers/account-identity-sweep.ts +2 -2
  461. package/src/workers/buddy-growth-tasks.ts +392 -346
  462. package/src/workers/daily-checkin.ts +102 -49
  463. package/src/workers/maintenance-lease.ts +2 -35
  464. package/src/workers/oauth-refresh-sweep.ts +8 -1
  465. package/src/workers/quota-refresh-sweep.ts +120 -82
  466. package/src/workers/scheduler.ts +67 -4
  467. package/src/workers/sweep-runner.ts +24 -5
  468. package/src/workers/zcode-gift-claim.ts +108 -0
  469. package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js +0 -1
  470. package/dist/dashboard/assets/AccountCooldown-Bjo92Qat.js.gz +0 -0
  471. package/dist/dashboard/assets/BannedPage-ChG5svFb.js.gz +0 -0
  472. package/dist/dashboard/assets/CliToolDetailPage-BIcWQun7.js.gz +0 -0
  473. package/dist/dashboard/assets/CliToolsPage-Bf2VelDe.js.gz +0 -0
  474. package/dist/dashboard/assets/CombosPage-DCgm5g6g.js +0 -1
  475. package/dist/dashboard/assets/CombosPage-DCgm5g6g.js.gz +0 -0
  476. package/dist/dashboard/assets/ConsoleLogPage-a8mD0QF1.js +0 -1
  477. package/dist/dashboard/assets/ConsoleLogPage-a8mD0QF1.js.gz +0 -0
  478. package/dist/dashboard/assets/CustomizationPage-ggeMSjte.js.gz +0 -0
  479. package/dist/dashboard/assets/HealthEventsModal-DzSWzE_j.js +0 -1
  480. package/dist/dashboard/assets/HealthEventsModal-DzSWzE_j.js.gz +0 -0
  481. package/dist/dashboard/assets/LoginPage-U6AKaJcF.js.gz +0 -0
  482. package/dist/dashboard/assets/ModelPicker-BMS2t8BA.js.gz +0 -0
  483. package/dist/dashboard/assets/OverviewPage-D2D4IiHl.js +0 -1
  484. package/dist/dashboard/assets/OverviewPage-D2D4IiHl.js.gz +0 -0
  485. package/dist/dashboard/assets/ProviderDetailPage-CrNf7j_X.js +0 -5
  486. package/dist/dashboard/assets/ProviderDetailPage-CrNf7j_X.js.gz +0 -0
  487. package/dist/dashboard/assets/ProviderIcon-FB6yS4v1.js +0 -1
  488. package/dist/dashboard/assets/ProviderIcon-FB6yS4v1.js.gz +0 -0
  489. package/dist/dashboard/assets/ProvidersPage-BSDbquc1.js +0 -1
  490. package/dist/dashboard/assets/ProvidersPage-BSDbquc1.js.gz +0 -0
  491. package/dist/dashboard/assets/ProxyPage-lsrx7NYg.js.gz +0 -0
  492. package/dist/dashboard/assets/QuotaPage-L0skzML8.js +0 -1
  493. package/dist/dashboard/assets/QuotaPage-L0skzML8.js.gz +0 -0
  494. package/dist/dashboard/assets/SettingsPage-CmAbjRHW.js +0 -1
  495. package/dist/dashboard/assets/SettingsPage-CmAbjRHW.js.gz +0 -0
  496. package/dist/dashboard/assets/SetupPage-f0DE1h0-.js.gz +0 -0
  497. package/dist/dashboard/assets/SortableList-ClzpwyET.js +0 -1
  498. package/dist/dashboard/assets/SortableList-ClzpwyET.js.gz +0 -0
  499. package/dist/dashboard/assets/StudioPage-Cq5tW7hW.js.gz +0 -0
  500. package/dist/dashboard/assets/UsagePage-Dfc9rWQn.js +0 -56
  501. package/dist/dashboard/assets/UsagePage-Dfc9rWQn.js.gz +0 -0
  502. package/dist/dashboard/assets/api-keys-C38iXoO4.js +0 -1
  503. package/dist/dashboard/assets/api-keys-C38iXoO4.js.gz +0 -0
  504. package/dist/dashboard/assets/app-a159k0ub.css +0 -2
  505. package/dist/dashboard/assets/app-a159k0ub.css.gz +0 -0
  506. package/dist/dashboard/assets/assert-DbRA8EG2.js +0 -15
  507. package/dist/dashboard/assets/assert-DbRA8EG2.js.gz +0 -0
  508. package/dist/dashboard/assets/badge-D9CS6dZk.js.gz +0 -0
  509. package/dist/dashboard/assets/banner-DympBNq4.js.gz +0 -0
  510. package/dist/dashboard/assets/card-ibRWU_uT.js.gz +0 -0
  511. package/dist/dashboard/assets/cli-tools-63qBGaRw.js +0 -1
  512. package/dist/dashboard/assets/cli-tools-63qBGaRw.js.gz +0 -0
  513. package/dist/dashboard/assets/clipboard-button-DJm-9pz7.js.gz +0 -0
  514. package/dist/dashboard/assets/dialog-8fiE6tec.js.gz +0 -0
  515. package/dist/dashboard/assets/drawer-CqGYeOrd.js.gz +0 -0
  516. package/dist/dashboard/assets/entry-BSAsYsmV.js.gz +0 -0
  517. package/dist/dashboard/assets/entry-CiIQULZD.js +0 -4
  518. package/dist/dashboard/assets/entry-CiIQULZD.js.gz +0 -0
  519. package/dist/dashboard/assets/entry-Daz0lJ-W.js +0 -1
  520. package/dist/dashboard/assets/entry-Daz0lJ-W.js.gz +0 -0
  521. package/dist/dashboard/assets/formatters-D-MTJxMr.js.gz +0 -0
  522. package/dist/dashboard/assets/github-badge-CPK47xQx.js.gz +0 -0
  523. package/dist/dashboard/assets/index-DBNPOfhV.js.gz +0 -0
  524. package/dist/dashboard/assets/inline-BT0zntEr.js.gz +0 -0
  525. package/dist/dashboard/assets/input-Da2ZViWg.js.gz +0 -0
  526. package/dist/dashboard/assets/layout-BXNeLw6M.js.gz +0 -0
  527. package/dist/dashboard/assets/list-row-BycOrrIV.js.gz +0 -0
  528. package/dist/dashboard/assets/live-DCQNZpF7.js +0 -1
  529. package/dist/dashboard/assets/live-DCQNZpF7.js.gz +0 -0
  530. package/dist/dashboard/assets/network-9Yj2ZyLo.js +0 -1
  531. package/dist/dashboard/assets/network-9Yj2ZyLo.js.gz +0 -0
  532. package/dist/dashboard/assets/numbers-CEagj6ZZ.js +0 -2
  533. package/dist/dashboard/assets/numbers-CEagj6ZZ.js.gz +0 -0
  534. package/dist/dashboard/assets/quota-Caw7wqci.js +0 -1
  535. package/dist/dashboard/assets/quota-Caw7wqci.js.gz +0 -0
  536. package/dist/dashboard/assets/routing-CO9zCUus.js +0 -1
  537. package/dist/dashboard/assets/routing-CO9zCUus.js.gz +0 -0
  538. package/dist/dashboard/assets/select-BIYIBkMU.js.gz +0 -0
  539. package/dist/dashboard/assets/settings-jS3-PNSA.js +0 -1
  540. package/dist/dashboard/assets/settings-jS3-PNSA.js.gz +0 -0
  541. package/dist/dashboard/assets/stack-DfgnFDWY.js.gz +0 -0
  542. package/dist/dashboard/assets/state-CkfdYWel.js.gz +0 -0
  543. package/dist/dashboard/assets/stream-retry-5QnVuSSo.js +0 -1
  544. package/dist/dashboard/assets/stream-retry-5QnVuSSo.js.gz +0 -0
  545. package/dist/dashboard/assets/switch-SYm237HG.js.gz +0 -0
  546. package/dist/dashboard/assets/useMutation-BQqCRNIi.js.gz +0 -0
  547. package/src/network/response-headers.ts +0 -39
  548. package/src/protocol/response/dsml.ts +0 -38
  549. package/src/providers/integrations/xiaomi-mimo/think-stream.ts +0 -229
  550. /package/dist/dashboard/assets/{app-BayTTy01.js → app-Bgd3zANQ.js} +0 -0
  551. /package/dist/dashboard/assets/{app-BayTTy01.js.gz → app-Bgd3zANQ.js.gz} +0 -0
  552. /package/dist/dashboard/assets/brand/{og_bansos.webp → og_bansos_initial.webp} +0 -0
  553. /package/dist/dashboard/assets/brand/{og_image.webp → og_image_initial.webp} +0 -0
@@ -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-BayTTy01.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(){let[e,t]=(0,h.useState)(!0),n=(0,h.useRef)(document.hidden);return(0,h.useEffect)(()=>{let e=()=>{let e=!document.hidden;n.current!==e&&(n.current=e,t(e))};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Gt(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 Kt={success:(e,t)=>k.success(e,Gt(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,Gt(e,t)),dismiss:e=>k.dismiss(e)};function qt(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 Jt(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function Yt(e){return e==null||!Number.isFinite(e)?`—`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(1)} s`}function Xt(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 Zt(e,t){return e==null||!Number.isFinite(e)?`—`:Math.round(e).toLocaleString(t)}function Qt(e,t){return e==null||!Number.isFinite(e)?`—`:e.toLocaleString(t,{maximumFractionDigits:2})}export{d as C,s as D,c as E,o as O,ee as S,l as T,de as _,Jt as a,te as b,Wt as c,Rt as d,Lt as f,pe as g,Nt as h,Zt as i,a as k,Ut as l,zt as m,Qt as n,Xt as o,It as p,Yt as r,Kt as s,qt as t,Ht as u,k as v,u as w,f as x,p 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.length===0)return{remaining:0,total:0,hasCredits:!1,lowestPercent:null,text:null,low:!1};let t=0,n=0,r=!1,a=null;for(let i of e){if(i.accounting===`pooled`){let e=typeof i.limit==`number`&&Number.isFinite(i.limit)?i.limit:null,a=null;typeof i.remaining==`number`&&Number.isFinite(i.remaining)?a=i.remaining:e!==null&&typeof i.used==`number`&&Number.isFinite(i.used)&&(a=e-i.used),a!==null&&(t+=Math.max(0,a),e!==null&&(n+=e),r=!0);continue}if(typeof i.remainingPercent==`number`&&Number.isFinite(i.remainingPercent)){let e=Math.min(100,Math.max(0,i.remainingPercent));a=a===null?e:Math.min(a,e)}}let o=null;return r?o=n>0?`${i(t)} of ${i(n)}`:`${i(t)} left`:a!==null&&(o=`${Math.round(a)}% left`),{remaining:t,total:n,hasCredits:r,lowestPercent:a,text:o,low:r&&t<=0||(a??100)<=10}}function i(e){return e.toLocaleString(void 0,{maximumFractionDigits:1})}function a(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 o(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 s(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 c(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function l(e){return e.startsWith(`eyJ`)||e.startsWith(`sk-`)||e.startsWith(`…`)}function u(e,t){return e.startsWith(`eyJ`)||e===`—`?t:e}var d=new Set([`oauth`,`api_key`,`none`]);function f(e,t){let n=t.trim()||`Unnamed account`,r=u(e,n).trim(),i=r&&r!==`—`&&!d.has(r.toLowerCase())?r:null,a=[i,n].find(e=>e!==null&&c(e))??null;return a===null?{primary:n,secondary:i!==null&&i!==n&&!l(i)?i:null}:{primary:a,secondary:[n,i].find(e=>e!==null&&e!==a&&!l(e))??null}}export{a,r as c,e as i,n,s as o,t as r,o as s,f as t};
@@ -1 +0,0 @@
1
- import{E as e,a as t,i as n,u as r,v as i,w as a}from"./assert-DbRA8EG2.js";import{a as o,i as s,o as c,t as l}from"./query-keys-BloKtaXJ.js";import{t as u}from"./useMutation-BQqCRNIi.js";function d(){return a({queryKey:l.modelRouting.aliases,queryFn:e=>c(`/routing/aliases`,{signal:i(e)}).then(n),...s})}function f(){return a({queryKey:l.modelRouting.combos,queryFn:e=>c(`/routing/combos`,{signal:i(e)}).then(t),...s})}function p(e){return a({queryKey:l.providers.routing(e),queryFn:t=>c(`/providers/${encodeURIComponent(e??``)}/routing`,{signal:i(t)}).then(r),enabled:e!==void 0&&e.length>0,...s})}function m(e){return a({queryKey:l.providers.accountInflight(e),queryFn:async t=>{let n=await c(`/providers/${encodeURIComponent(e??``)}/account-inflight`,{signal:i(t)});if(!Array.isArray(n))throw{status:500,code:`invalid_response`,message:`Invalid account inflight response`};let r=new Map;for(let e of n){if(typeof e!=`object`||!e)continue;let t=e;typeof t.accountId==`string`&&typeof t.inflight==`number`&&r.set(t.accountId,Math.max(0,Math.floor(t.inflight)))}return r},enabled:e!==void 0&&e.length>0,refetchInterval:o.live,refetchIntervalInBackground:!1})}function h(){let t=e();return u({mutationFn:e=>c(`/routing/aliases`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.aliases})}})}function g(){let t=e();return u({mutationFn:({id:e,request:t})=>c(`/routing/aliases/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.aliases})}})}function _(){let t=e();return u({mutationFn:e=>c(`/routing/aliases/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.aliases})}})}function v(){let t=e();return u({mutationFn:e=>c(`/routing/aliases/reorder`,{method:`POST`,body:JSON.stringify({ids:e})}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.aliases})}})}function y(){let t=e();return u({mutationFn:e=>c(`/routing/combos/reorder`,{method:`POST`,body:JSON.stringify({ids:e})}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.combos})}})}function b(){let t=e();return u({mutationFn:e=>c(`/routing/combos`,{method:`POST`,body:JSON.stringify(e)}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.combos})}})}function x(){let t=e();return u({mutationFn:e=>c(`/routing/combos/${encodeURIComponent(e)}/clone`,{method:`POST`}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.combos})}})}function S(){let t=e();return u({mutationFn:({id:e,request:t})=>c(`/routing/combos/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.combos})}})}function C(){let t=e();return u({mutationFn:e=>c(`/routing/combos/${encodeURIComponent(e)}`,{method:`DELETE`}),onSuccess:async()=>{await t.invalidateQueries({queryKey:l.modelRouting.combos})}})}function w(){let t=e();return u({mutationFn:({providerId:e,request:t})=>c(`/providers/${encodeURIComponent(e)}/routing`,{method:`PATCH`,body:JSON.stringify(t)}),onSuccess:async(e,n)=>{await t.invalidateQueries({queryKey:l.providers.routing(n.providerId)}),await t.invalidateQueries({queryKey:l.providers.all})}})}export{C as a,m as c,y as d,g as f,_ as i,p as l,w as m,h as n,d as o,S as p,b as r,f as s,x as t,v as u};
@@ -1 +0,0 @@
1
- import{n as e}from"./jsx-runtime-CXUMngI_.js";import{E as t,v as n,w as r}from"./assert-DbRA8EG2.js";import{i,n as a,o,t as s}from"./query-keys-BloKtaXJ.js";import{t as c}from"./useMutation-BQqCRNIi.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 r({queryKey:s.settings.runtime,queryFn:e=>o(`/settings/runtime`,{signal:n(e)}),...i,staleTime:a.effectivelyImmutable})}function d(){let e=t();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};
@@ -1,39 +0,0 @@
1
- /**
2
- * Upstream response header sanitization for the validated egress path.
3
- *
4
- * Upstream responses must not hand gateway state or credentials to callers:
5
- * strip Set-Cookie/auth challenges and hop-by-hop fields; keep everything
6
- * content-bearing (content-type, location, etc.). Keeping this in one module
7
- * means every transport applies the identical allow/deny policy.
8
- */
9
-
10
- /** Hop-by-hop and credential-bearing headers never forwarded to callers. */
11
- export const STRIPPED_RESPONSE_HEADERS = new Set([
12
- "set-cookie",
13
- "authorization",
14
- "cookie",
15
- "www-authenticate",
16
- "proxy-authenticate",
17
- "proxy-authorization",
18
- "connection",
19
- "keep-alive",
20
- "proxy-connection",
21
- "transfer-encoding",
22
- "te",
23
- "trailer",
24
- "upgrade",
25
- ]);
26
-
27
- /** Filters raw upstream response headers down to the forwardable set. */
28
- export function stripResponseHeaders(
29
- raw: Record<string, string | string[] | undefined>,
30
- ): Headers {
31
- const headers = new Headers();
32
- for (const [key, value] of Object.entries(raw)) {
33
- if (value === undefined) continue;
34
- if (key.startsWith(":")) continue;
35
- if (STRIPPED_RESPONSE_HEADERS.has(key.toLowerCase())) continue;
36
- headers.set(key, Array.isArray(value) ? value.join(", ") : value);
37
- }
38
- return headers;
39
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * CodeBuddy-family DeepSeek sometimes emits native tool markup as assistant text.
3
- * Complete declared calls are recovered; incomplete and undeclared blocks stay text.
4
- *
5
- * The mechanics live in `../dsml` with the CodeBuddy dialect as default; this
6
- * module keeps the historical public surface (`DsmlToolCallParser`,
7
- * `parseDsmlToolCalls`) stable for this wire family.
8
- */
9
- import {
10
- DsmlStreamParser,
11
- type DsmlToolCall,
12
- } from "../dsml";
13
-
14
- export type { DsmlToolCall } from "../dsml";
15
-
16
- export interface DsmlRecovery {
17
- readonly text: string;
18
- readonly calls: readonly DsmlToolCall[];
19
- }
20
-
21
- /** Streaming strict-prefix parser with the CodeBuddy dialect defaults. */
22
- export class DsmlToolCallParser extends DsmlStreamParser {
23
- constructor(allowedNames: ReadonlySet<string>) {
24
- super({ allowedNames });
25
- }
26
- }
27
-
28
- export function parseDsmlToolCalls(
29
- text: string,
30
- allowedNames: ReadonlySet<string> = new Set(),
31
- ): DsmlRecovery | undefined {
32
- if (!text.includes("DSML")) return undefined;
33
- const parser = new DsmlToolCallParser(allowedNames);
34
- const first = parser.push(text);
35
- const last = parser.flush();
36
- const recovered = [...first.calls, ...last.calls];
37
- return recovered.length === 0 ? undefined : { text: `${first.text}${last.text}`.trim(), calls: recovered };
38
- }
@@ -1,229 +0,0 @@
1
- /**
2
- * Splits inline thinking tags in the Xiaomi MiMo Studio SSE stream.
3
- *
4
- * Studio interleaves `<think>` or `<thinking>` spans with answer text and
5
- * NUL padding. Desktop uses the separate `reasoning_content` chat field,
6
- * so its standard OpenAI-compatible stream decoder does not use this splitter.
7
- *
8
- * The splitter is stateful because a tag can straddle two SSE frames: the
9
- * `<thi` of one chunk and the `nk>` of the next are one opening tag, and a
10
- * stateless regex would emit the fragment as text. It therefore holds back a
11
- * trailing run that could still become a tag until the next chunk settles it.
12
- *
13
- * Two further quirks are handled here rather than at each call site:
14
- * - NUL bytes (`\u0000`) are injected by the upstream between thought tokens;
15
- * forwarded verbatim they break JSON encoders and terminal renderers.
16
- * - Text before an opening tag is the answer (some models answer first and
17
- * reason afterwards), so it stays content; only the enclosed span becomes
18
- * reasoning.
19
- */
20
-
21
- /** Tags whose enclosed span is reasoning, longest-first so `</thinking>` is never split as `<t`. */
22
- const OPEN_TAGS = ["<thinking>", "<think>"] as const;
23
- const CLOSE_TAGS = ["</thinking>", "</think>"] as const;
24
-
25
- /**
26
- * Removes stray thinking tags from a settled string.
27
- *
28
- * Call sites that stream `reasoning_content` through to the client as a
29
- * canonical `reasoning` part forward the field verbatim, so when the upstream
30
- * double-wraps its own reasoning in `<think>…</think>` the tag bytes reach the
31
- * client. The hy4-preview-f buddy model does this intermittently: the real
32
- * answer appears inside the reasoning stream between `<think>` markers and the
33
- * `content` stream reads blank, which is why the model is sometimes read as
34
- * "not thinking" even though it was.
35
- *
36
- * The function is for a value that has already settled — a non-stream message
37
- * body, or a stream delta that is not being tracked across chunks — so it is
38
- * not stateful; a tag split across two chunks is a job for `MimoThinkSplitter`.
39
- * Both case variants pass through: `<Think>` and `<THINK>` survived everyone's
40
- * normalizer long enough for them not to be the leak this closes.
41
- */
42
- /**
43
- * Removes visible thinking tags, leaving any that sit inside a code span or
44
- * fence alone.
45
- *
46
- * A tag inside backticks is the *subject* of the answer — documentation or a
47
- * code sample showing the tag — not markup the upstream leaked, so stripping it
48
- * would silently rewrite the answer.
49
- */
50
- export function stripThinkingTags(value: string): string {
51
- if (!value.includes("<")) return value;
52
- const pattern = /<think(?:ing)?\b[^>]*>|<\/think(?:ing)?\s*>|`+/g;
53
- let out = "";
54
- let last = 0;
55
- let ticks = 0;
56
- for (const match of value.matchAll(pattern)) {
57
- const text = match[0];
58
- const index = match.index ?? 0;
59
- if (text.startsWith("`")) {
60
- // A fence and an inline span are both just "inside code" here: the
61
- // distinguishing case (a newline closing an unterminated span) cannot
62
- // affect a tag already indexed in a settled string.
63
- if (ticks === 0) {
64
- ticks = text.length;
65
- } else if (text.length === ticks) {
66
- ticks = 0;
67
- }
68
- continue;
69
- }
70
- // Inside code: keep the tag verbatim.
71
- if (ticks > 0) continue;
72
- out += value.slice(last, index);
73
- last = index + text.length;
74
- }
75
- return out + value.slice(last);
76
- }
77
-
78
- /** The longest suffix of `text` that is a proper prefix of any tag. */
79
- function danglingTagPrefix(text: string): string {
80
- const tags = [...OPEN_TAGS, ...CLOSE_TAGS];
81
- const maxLength = Math.max(...tags.map((tag) => tag.length)) - 1;
82
- const limit = Math.min(maxLength, text.length);
83
- for (let length = limit; length > 0; length -= 1) {
84
- const suffix = text.slice(-length);
85
- if (tags.some((tag) => tag.startsWith(suffix))) return suffix;
86
- }
87
- return "";
88
- }
89
-
90
- /** Strips the NUL padding MiMo injects into thought streams. */
91
- function stripNul(text: string): string {
92
- return text.includes("\u0000") ? text.replace(/\u0000/g, "") : text;
93
- }
94
-
95
- export interface ThinkSplit {
96
- /** Answer text, with all reasoning spans removed. */
97
- readonly text: string;
98
- /** Reasoning text, tag-free. Empty when the chunk carried no thought. */
99
- readonly reasoning: string;
100
- }
101
-
102
- /** A tag match plus the code state at the match, so the caller commits it. */
103
- interface TagMatch {
104
- readonly index: number;
105
- readonly length: number;
106
- readonly codeTicks: number;
107
- readonly codeFenced: boolean;
108
- }
109
-
110
- /**
111
- * Splits one upstream text chunk into answer text and reasoning text.
112
- *
113
- * Call `flush()` once the upstream stream ends to release any text the
114
- * splitter held back while it waited for a possible tag to complete.
115
- */
116
- export class MimoThinkSplitter {
117
- #buffer = "";
118
- #inReasoning = false;
119
- /** Backtick run that opened the code span/fence we are inside; 0 when not in
120
- * code. A tag inside a code span is the *subject* of the answer — a doc or a
121
- * code sample mentioning `<think>` — not a delimiter, so it must survive
122
- * verbatim instead of splitting the stream. */
123
- #codeTicks = 0;
124
- /** Whether `#codeTicks` opened a fenced block (closes on its own line) rather
125
- * than an inline span. */
126
- #codeFenced = false;
127
-
128
- /** Feeds a chunk; returns the text/reasoning split for everything settled. */
129
- push(chunk: string): ThinkSplit {
130
- this.#buffer += stripNul(chunk);
131
- let text = "";
132
- let reasoning = "";
133
-
134
- for (;;) {
135
- if (!this.#inReasoning) {
136
- const opened = this.#findOpen();
137
- if (opened === undefined) break;
138
- text += this.#consumeUpTo(opened);
139
- this.#buffer = this.#buffer.slice(opened.index + opened.length);
140
- this.#inReasoning = true;
141
- continue;
142
- }
143
- const closed = this.#findClose();
144
- if (closed === undefined) break;
145
- reasoning += this.#consumeUpTo(closed);
146
- this.#buffer = this.#buffer.slice(closed.index + closed.length);
147
- this.#inReasoning = false;
148
- }
149
-
150
- // Hold back a suffix that could still grow into a tag; the rest is settled.
151
- const held = danglingTagPrefix(this.#buffer);
152
- const settled = held.length > 0 ? this.#buffer.slice(0, -held.length) : this.#buffer;
153
- this.#buffer = held;
154
- // A lone closing tag lands here when the upstream dropped the opener before
155
- // committing the answer — the same quirk `stripThinkingTags` handles for
156
- // settled values, and just as bad to forward: the tag bytes are rendered in
157
- // the chat. Inside a reasoning span the text is already tag-free, so only
158
- // the answer side is swept.
159
- if (this.#inReasoning) reasoning += settled;
160
- else text += stripThinkingTags(settled);
161
-
162
- return { text, reasoning };
163
- }
164
-
165
- /** Releases text held back for a tag that never completed. */
166
- flush(): ThinkSplit {
167
- const rest = this.#buffer;
168
- this.#buffer = "";
169
- this.#codeTicks = 0;
170
- this.#codeFenced = false;
171
- return this.#inReasoning
172
- ? { text: "", reasoning: rest }
173
- : { text: stripThinkingTags(rest), reasoning: "" };
174
- }
175
-
176
- /** Returns the text before a tag and commits the code state at it. */
177
- #consumeUpTo(match: TagMatch): string {
178
- this.#codeTicks = match.codeTicks;
179
- this.#codeFenced = match.codeFenced;
180
- return this.#buffer.slice(0, match.index);
181
- }
182
-
183
- #findOpen(): TagMatch | undefined {
184
- return this.#findTag(OPEN_TAGS);
185
- }
186
-
187
- #findClose(): TagMatch | undefined {
188
- return this.#findTag(CLOSE_TAGS);
189
- }
190
-
191
- /**
192
- * The earliest occurrence of any of `tags` that is *not* inside a code span
193
- * or fence, scanning left to right so code state is tracked exactly once per
194
- * position. Returns the match and the code state at it, so `push` can commit
195
- * that state when it consumes the tag.
196
- */
197
- #findTag(tags: readonly string[]): TagMatch | undefined {
198
- const buffer = this.#buffer;
199
- let ticks = this.#codeTicks;
200
- let fenced = this.#codeFenced;
201
- for (let i = 0; i < buffer.length; i++) {
202
- const char = buffer[i];
203
- if (char === "`") {
204
- let run = 1;
205
- while (buffer[i + run] === "`") run++;
206
- if (ticks === 0) {
207
- ticks = run;
208
- // Three or more backticks open a fence rather than an inline span.
209
- fenced = run >= 3;
210
- } else if (run === ticks) {
211
- ticks = 0;
212
- fenced = false;
213
- }
214
- i += run - 1;
215
- continue;
216
- }
217
- // A newline closes an inline span that never closed on its own line; a
218
- // fence runs to a closing line instead.
219
- if (char === "\n" && ticks > 0 && !fenced) ticks = 0;
220
- if (char !== "<" || ticks > 0) continue;
221
- for (const tag of tags) {
222
- if (!buffer.startsWith(tag, i)) continue;
223
- return { index: i, length: tag.length, codeTicks: ticks, codeFenced: fenced };
224
- }
225
- }
226
- return undefined;
227
- }
228
- }
229
-