cartethyia 2.7.1 → 2.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/.env.example +2 -0
  2. package/dist/dashboard/assets/{BannedPage-D-J75hBM.js → BannedPage-2TJD37Hb.js} +1 -1
  3. package/dist/dashboard/assets/BannedPage-2TJD37Hb.js.gz +0 -0
  4. package/dist/dashboard/assets/CliToolDetailPage-xefJNRmJ.js +1 -0
  5. package/dist/dashboard/assets/CliToolDetailPage-xefJNRmJ.js.gz +0 -0
  6. package/dist/dashboard/assets/CliToolsPage-Rj9iHQ3F.js +1 -0
  7. package/dist/dashboard/assets/CliToolsPage-Rj9iHQ3F.js.gz +0 -0
  8. package/dist/dashboard/assets/{CombosPage-QoJ6foxo.js → CombosPage-JEbYJFxw.js} +1 -1
  9. package/dist/dashboard/assets/CombosPage-JEbYJFxw.js.gz +0 -0
  10. package/dist/dashboard/assets/{ConsoleLogPage-DpNRay4C.js → ConsoleLogPage-C3xx_inM.js} +1 -1
  11. package/dist/dashboard/assets/ConsoleLogPage-C3xx_inM.js.gz +0 -0
  12. package/dist/dashboard/assets/CustomizationPage-Dw306gJU.js +1 -0
  13. package/dist/dashboard/assets/CustomizationPage-Dw306gJU.js.gz +0 -0
  14. package/dist/dashboard/assets/HealthEventsModal-jaBo1TWV.js +1 -0
  15. package/dist/dashboard/assets/HealthEventsModal-jaBo1TWV.js.gz +0 -0
  16. package/dist/dashboard/assets/{LoginPage-DubdQcvX.js → LoginPage-C4w7vea-.js} +1 -1
  17. package/dist/dashboard/assets/LoginPage-C4w7vea-.js.gz +0 -0
  18. package/dist/dashboard/assets/{ModelPicker-BH8Tehdi.js → ModelPicker-BtPcAfot.js} +1 -1
  19. package/dist/dashboard/assets/ModelPicker-BtPcAfot.js.gz +0 -0
  20. package/dist/dashboard/assets/OverviewPage-CGC5gNs1.js +1 -0
  21. package/dist/dashboard/assets/OverviewPage-CGC5gNs1.js.gz +0 -0
  22. package/dist/dashboard/assets/ProviderDetailPage-DQcthNGt.js +4 -0
  23. package/dist/dashboard/assets/ProviderDetailPage-DQcthNGt.js.gz +0 -0
  24. package/dist/dashboard/assets/ProvidersPage-0OsXRGXe.js +1 -0
  25. package/dist/dashboard/assets/ProvidersPage-0OsXRGXe.js.gz +0 -0
  26. package/dist/dashboard/assets/ProxyPage-DdPc8slb.js +9 -0
  27. package/dist/dashboard/assets/ProxyPage-DdPc8slb.js.gz +0 -0
  28. package/dist/dashboard/assets/{QuotaPage-ATpaxrbl.js → QuotaPage-Ci5O4BnH.js} +1 -1
  29. package/dist/dashboard/assets/QuotaPage-Ci5O4BnH.js.gz +0 -0
  30. package/dist/dashboard/assets/{SettingsPage-CETophpx.js → SettingsPage-CDZjTt87.js} +1 -1
  31. package/dist/dashboard/assets/SettingsPage-CDZjTt87.js.gz +0 -0
  32. package/dist/dashboard/assets/SetupPage-BQS0Rx_u.js +1 -0
  33. package/dist/dashboard/assets/SetupPage-BQS0Rx_u.js.gz +0 -0
  34. package/dist/dashboard/assets/{SortableList-CAK-EN9z.js → SortableList-BAL5npBC.js} +1 -1
  35. package/dist/dashboard/assets/SortableList-BAL5npBC.js.gz +0 -0
  36. package/dist/dashboard/assets/{StudioPage-B7W2_RhT.js → StudioPage-TP7voAQ0.js} +3 -3
  37. package/dist/dashboard/assets/StudioPage-TP7voAQ0.js.gz +0 -0
  38. package/dist/dashboard/assets/{UsagePage-6T4EFDjW.js → UsagePage-Cj_fEzhg.js} +13 -13
  39. package/dist/dashboard/assets/UsagePage-Cj_fEzhg.js.gz +0 -0
  40. package/dist/dashboard/assets/{api-keys-CUi6UXsR.js → api-keys-MbI7e7rt.js} +1 -1
  41. package/dist/dashboard/assets/api-keys-MbI7e7rt.js.gz +0 -0
  42. package/dist/dashboard/assets/app-B2vyPoII.css +2 -0
  43. package/dist/dashboard/assets/app-B2vyPoII.css.gz +0 -0
  44. package/dist/dashboard/assets/arrow-up-59ms1iiT.js +1 -0
  45. package/dist/dashboard/assets/arrow-up-59ms1iiT.js.gz +0 -0
  46. package/dist/dashboard/assets/{assert-67xXH5rf.js → assert-C0YYuZJ4.js} +1 -1
  47. package/dist/dashboard/assets/assert-C0YYuZJ4.js.gz +0 -0
  48. package/dist/dashboard/assets/{badge-DC2L43Mj.js → badge-B_DMpMJN.js} +1 -1
  49. package/dist/dashboard/assets/badge-B_DMpMJN.js.gz +0 -0
  50. package/dist/dashboard/assets/{banner-BBVcb0J3.js → banner-DMrMPmth.js} +1 -1
  51. package/dist/dashboard/assets/banner-DMrMPmth.js.gz +0 -0
  52. package/dist/dashboard/assets/{card-Cca1XC6G.js → card-Be5Uzamx.js} +1 -1
  53. package/dist/dashboard/assets/card-Be5Uzamx.js.gz +0 -0
  54. package/dist/dashboard/assets/{cli-tools-KvsWa1Jl.js → cli-tools-muFRphDu.js} +1 -1
  55. package/dist/dashboard/assets/cli-tools-muFRphDu.js.gz +0 -0
  56. package/dist/dashboard/assets/{clipboard-button-DUzEbynq.js → clipboard-button-DOfrVmsi.js} +1 -1
  57. package/dist/dashboard/assets/clipboard-button-DOfrVmsi.js.gz +0 -0
  58. package/dist/dashboard/assets/{dialog-DFvWhwTa.js → dialog-C9omdjQt.js} +1 -1
  59. package/dist/dashboard/assets/dialog-C9omdjQt.js.gz +0 -0
  60. package/dist/dashboard/assets/drawer-Bm8WKaGY.js +1 -0
  61. package/dist/dashboard/assets/drawer-Bm8WKaGY.js.gz +0 -0
  62. package/dist/dashboard/assets/{entry-_xHo5x6r.js → entry-DS90gUks.js} +1 -1
  63. package/dist/dashboard/assets/entry-DS90gUks.js.gz +0 -0
  64. package/dist/dashboard/assets/{entry-BLBLxX0h.js → entry-j40LJotO.js} +3 -3
  65. package/dist/dashboard/assets/entry-j40LJotO.js.gz +0 -0
  66. package/dist/dashboard/assets/{entry-Bqy8RFvM.js → entry-q5HwZ8nN.js} +1 -1
  67. package/dist/dashboard/assets/entry-q5HwZ8nN.js.gz +0 -0
  68. package/dist/dashboard/assets/{concurrency-BDF0ok7y.js → fingerprint-pattern-BWuHtbW4.js} +1 -1
  69. package/dist/dashboard/assets/fingerprint-pattern-BWuHtbW4.js.gz +0 -0
  70. package/dist/dashboard/assets/{formatters-mpBPqAQ8.js → formatters-BTScrQpe.js} +1 -1
  71. package/dist/dashboard/assets/formatters-BTScrQpe.js.gz +0 -0
  72. package/dist/dashboard/assets/{github-badge-C9e8Ts7e.js → github-badge-Orjuzemr.js} +1 -1
  73. package/dist/dashboard/assets/github-badge-Orjuzemr.js.gz +0 -0
  74. package/dist/dashboard/assets/{index-D6QzEC_n.js → index-cPrX5vn6.js} +2 -2
  75. package/dist/dashboard/assets/index-cPrX5vn6.js.gz +0 -0
  76. package/dist/dashboard/assets/{inline-BFUcvllj.js → inline-Dvux8w-0.js} +1 -1
  77. package/dist/dashboard/assets/inline-Dvux8w-0.js.gz +0 -0
  78. package/dist/dashboard/assets/{input-C_ILAvBb.js → input-CU1Rgf3p.js} +1 -1
  79. package/dist/dashboard/assets/input-CU1Rgf3p.js.gz +0 -0
  80. package/dist/dashboard/assets/{layout-CBIyT6Rt.js → layout-C_7A6H55.js} +1 -1
  81. package/dist/dashboard/assets/layout-C_7A6H55.js.gz +0 -0
  82. package/dist/dashboard/assets/{list-row-ebJ_-Nsb.js → list-row-CzFvogbj.js} +1 -1
  83. package/dist/dashboard/assets/list-row-CzFvogbj.js.gz +0 -0
  84. package/dist/dashboard/assets/{live-D0mm--ME.js → live-KaG15HLQ.js} +1 -1
  85. package/dist/dashboard/assets/live-KaG15HLQ.js.gz +0 -0
  86. package/dist/dashboard/assets/{mutation-sMD965oO.js → mutation-JJGQm8TD.js} +1 -1
  87. package/dist/dashboard/assets/mutation-JJGQm8TD.js.gz +0 -0
  88. package/dist/dashboard/assets/{numbers-BO9dKaFr.js → numbers-BNDZnsUE.js} +1 -1
  89. package/dist/dashboard/assets/numbers-BNDZnsUE.js.gz +0 -0
  90. package/dist/dashboard/assets/{query-keys-CfL_Zdoh.js → query-keys-CLaNz8Xz.js} +1 -1
  91. package/dist/dashboard/assets/query-keys-CLaNz8Xz.js.gz +0 -0
  92. package/dist/dashboard/assets/{routing-BnIpi1IJ.js → routing-BEH32QOC.js} +1 -1
  93. package/dist/dashboard/assets/routing-BEH32QOC.js.gz +0 -0
  94. package/dist/dashboard/assets/{select-Cj5Nw43g.js → select-B3iTetHN.js} +1 -1
  95. package/dist/dashboard/assets/select-B3iTetHN.js.gz +0 -0
  96. package/dist/dashboard/assets/settings-2-Ds9DQp0t.js +1 -0
  97. package/dist/dashboard/assets/settings-2-Ds9DQp0t.js.gz +0 -0
  98. package/dist/dashboard/assets/{settings-BAFhDgX8.js → settings-Dt3Eqbnq.js} +1 -1
  99. package/dist/dashboard/assets/settings-Dt3Eqbnq.js.gz +0 -0
  100. package/dist/dashboard/assets/{stack-EMrOMt4I.js → stack-KrOrm7JZ.js} +1 -1
  101. package/dist/dashboard/assets/stack-KrOrm7JZ.js.gz +0 -0
  102. package/dist/dashboard/assets/{state-CWoo7ty5.js → state-DLS7IDMy.js} +1 -1
  103. package/dist/dashboard/assets/state-DLS7IDMy.js.gz +0 -0
  104. package/dist/dashboard/assets/{switch-CCjT6IkF.js → switch-42ItvbAs.js} +1 -1
  105. package/dist/dashboard/assets/switch-42ItvbAs.js.gz +0 -0
  106. package/dist/dashboard/assets/{useMutation-DjkLHUcE.js → useMutation-Dmnfh1Ue.js} +1 -1
  107. package/dist/dashboard/assets/useMutation-Dmnfh1Ue.js.gz +0 -0
  108. package/dist/dashboard/index.html +3 -2
  109. package/dist/dashboard/index.html.gz +0 -0
  110. package/dist/dashboard/precompressed-assets.json +117 -115
  111. package/migrations/full-postgres/0026_add_qoder_native_identity.sql +20 -0
  112. package/migrations/full-postgres/0027_qoder_identity_genuine_seed.sql +22 -0
  113. package/migrations/full-postgres/0028_add_family_template_key_telemetry.sql +40 -0
  114. package/migrations/full-postgres/0029_null_share_child_policy_columns.sql +38 -0
  115. package/migrations/full-postgres/0030_add_api_key_max_children.sql +10 -0
  116. package/migrations/full-postgres/0031_tenant_system_prompts.sql +16 -0
  117. package/migrations/lite-sqlite3/0026_add_qoder_native_identity.sql +15 -0
  118. package/migrations/lite-sqlite3/0027_qoder_identity_genuine_seed.sql +22 -0
  119. package/migrations/lite-sqlite3/0028_add_family_template_key_telemetry.sql +40 -0
  120. package/migrations/lite-sqlite3/0029_null_share_child_policy_columns.sql +38 -0
  121. package/migrations/lite-sqlite3/0030_add_api_key_max_children.sql +10 -0
  122. package/migrations/lite-sqlite3/0031_tenant_system_prompts.sql +10 -0
  123. package/package.json +1 -1
  124. package/src/config/network.ts +1 -1
  125. package/src/console/api-keys/bucket-spend.ts +7 -7
  126. package/src/console/api-keys/contracts.ts +423 -410
  127. package/src/console/api-keys/routes.ts +118 -19
  128. package/src/console/backup/export-endpoint.ts +8 -11
  129. package/src/console/backup/routes.ts +40 -8
  130. package/src/console/backup/service.ts +11 -6
  131. package/src/console/backup/store.ts +384 -88
  132. package/src/console/cli-tools/contracts.ts +10 -4
  133. package/src/console/dashboard-assets.ts +16 -1
  134. package/src/console/domain-registration.ts +2 -0
  135. package/src/console/quota/account-quota-tenant.ts +8 -1
  136. package/src/console/quota/account-quota.ts +4 -1
  137. package/src/console/quota/native-identity.ts +189 -0
  138. package/src/console/remote-support/contracts.ts +12 -6
  139. package/src/console/remote-support/service.ts +2 -2
  140. package/src/console/share/share-router.ts +39 -6
  141. package/src/console/share/share-stats.ts +64 -25
  142. package/src/console/share/share-usage.ts +24 -7
  143. package/src/console/system-prompt/contracts.ts +102 -0
  144. package/src/console/system-prompt/routes.ts +165 -0
  145. package/src/main.ts +11 -0
  146. package/src/network/outbound-fetch.ts +281 -226
  147. package/src/network/pool/agent.ts +7 -0
  148. package/src/observability/event-query.ts +118 -7
  149. package/src/persistence/db-pg.ts +42 -0
  150. package/src/persistence/schema.ts +102 -0
  151. package/src/persistence/stores/api-key-store.ts +753 -581
  152. package/src/persistence/stores/share-store.ts +65 -13
  153. package/src/persistence/stores/telemetry-store.ts +57 -1
  154. package/src/persistence/system-prompt-store.ts +104 -0
  155. package/src/protocol/reasoning.ts +65 -1
  156. package/src/protocol/request/chat.ts +1 -0
  157. package/src/providers/default-registry.ts +1 -0
  158. package/src/providers/integrations/antigravity/antigravity.ts +20 -23
  159. package/src/providers/integrations/buddy/buddy-chat-shared.ts +30 -2
  160. package/src/providers/integrations/buddy/buddy-media.ts +5 -1
  161. package/src/providers/integrations/buddy/codebuddy/provider.ts +5 -1
  162. package/src/providers/integrations/buddy/workbuddy/provider.ts +5 -1
  163. package/src/providers/integrations/cline/cline.ts +7 -0
  164. package/src/providers/integrations/github/github.ts +20 -1
  165. package/src/providers/integrations/hermes.ts +5 -1
  166. package/src/providers/integrations/kilo/kilo.ts +4 -0
  167. package/src/providers/integrations/ollamacloud-models.ts +50 -0
  168. package/src/providers/integrations/openrouter/provider.ts +4 -0
  169. package/src/providers/integrations/qoder/qoder-checkin.ts +224 -51
  170. package/src/providers/integrations/qoder/qoder-native-identity-store.ts +156 -0
  171. package/src/providers/integrations/qoder/qoder-oauth.ts +24 -4
  172. package/src/providers/integrations/qoder/qoder-realm.ts +20 -0
  173. package/src/providers/integrations/qoder/qoder-text-tools.ts +277 -0
  174. package/src/providers/integrations/qoder/qoder-umid.ts +288 -0
  175. package/src/providers/integrations/qoder/qoder.ts +1375 -1641
  176. package/src/providers/operations/account-error-classification.ts +1682 -1660
  177. package/src/providers/operations/account-health-service.ts +619 -621
  178. package/src/providers/operations/client-versions.ts +37 -22
  179. package/src/providers/operations/provider-catalog-service.ts +11 -1
  180. package/src/providers/provider-contracts.ts +15 -2
  181. package/src/security/access-control.ts +19 -0
  182. package/src/security/api-key-auth.ts +14 -1
  183. package/src/security/cli-client-fingerprint.ts +9 -2
  184. package/src/transport/dispatch/empty-stream.ts +224 -224
  185. package/src/transport/dispatch/proxy-request.ts +31 -2
  186. package/src/transport/dispatch/streaming/stream.ts +16 -1
  187. package/src/transport/dispatch/upstream.ts +10 -0
  188. package/src/transport/failure-policy.ts +33 -0
  189. package/src/transport/request/preparer.ts +17 -1
  190. package/src/transport/request/system-prompt-injection.ts +89 -0
  191. package/src/transport/request/tenant-preferences.ts +43 -0
  192. package/src/transport/routing/admission.ts +13 -3
  193. package/src/transport/routing/route-catalog.ts +41 -12
  194. package/src/transport/routing/route-model.ts +53 -0
  195. package/src/transport/routing/router.ts +306 -228
  196. package/src/transport/surface/responses/encode.ts +2 -3
  197. package/src/transport/surface/responses/parse.ts +49 -7
  198. package/src/types/undici.d.ts +33 -0
  199. package/src/workers/daily-checkin.ts +2 -0
  200. package/dist/dashboard/assets/BannedPage-D-J75hBM.js.gz +0 -0
  201. package/dist/dashboard/assets/CliToolDetailPage-CVe6RaBH.js +0 -1
  202. package/dist/dashboard/assets/CliToolDetailPage-CVe6RaBH.js.gz +0 -0
  203. package/dist/dashboard/assets/CliToolsPage-Dd8ZSamp.js +0 -1
  204. package/dist/dashboard/assets/CliToolsPage-Dd8ZSamp.js.gz +0 -0
  205. package/dist/dashboard/assets/CombosPage-QoJ6foxo.js.gz +0 -0
  206. package/dist/dashboard/assets/ConsoleLogPage-DpNRay4C.js.gz +0 -0
  207. package/dist/dashboard/assets/CustomizationPage-CKUFTcW4.js +0 -1
  208. package/dist/dashboard/assets/CustomizationPage-CKUFTcW4.js.gz +0 -0
  209. package/dist/dashboard/assets/HealthEventsModal-CzSLiDzr.js +0 -1
  210. package/dist/dashboard/assets/HealthEventsModal-CzSLiDzr.js.gz +0 -0
  211. package/dist/dashboard/assets/LoginPage-DubdQcvX.js.gz +0 -0
  212. package/dist/dashboard/assets/ModelPicker-BH8Tehdi.js.gz +0 -0
  213. package/dist/dashboard/assets/OverviewPage-DuWzAQFL.js +0 -1
  214. package/dist/dashboard/assets/OverviewPage-DuWzAQFL.js.gz +0 -0
  215. package/dist/dashboard/assets/ProviderDetailPage-BKEKe2Fm.js +0 -4
  216. package/dist/dashboard/assets/ProviderDetailPage-BKEKe2Fm.js.gz +0 -0
  217. package/dist/dashboard/assets/ProvidersPage-Bwotu8UJ.js +0 -1
  218. package/dist/dashboard/assets/ProvidersPage-Bwotu8UJ.js.gz +0 -0
  219. package/dist/dashboard/assets/ProxyPage-D7hpWbg9.js +0 -9
  220. package/dist/dashboard/assets/ProxyPage-D7hpWbg9.js.gz +0 -0
  221. package/dist/dashboard/assets/QuotaPage-ATpaxrbl.js.gz +0 -0
  222. package/dist/dashboard/assets/SettingsPage-CETophpx.js.gz +0 -0
  223. package/dist/dashboard/assets/SetupPage-BdgECjqq.js +0 -1
  224. package/dist/dashboard/assets/SetupPage-BdgECjqq.js.gz +0 -0
  225. package/dist/dashboard/assets/SortableList-CAK-EN9z.js.gz +0 -0
  226. package/dist/dashboard/assets/StudioPage-B7W2_RhT.js.gz +0 -0
  227. package/dist/dashboard/assets/UsagePage-6T4EFDjW.js.gz +0 -0
  228. package/dist/dashboard/assets/api-keys-CUi6UXsR.js.gz +0 -0
  229. package/dist/dashboard/assets/app-KvsUJUMF.css +0 -2
  230. package/dist/dashboard/assets/app-KvsUJUMF.css.gz +0 -0
  231. package/dist/dashboard/assets/assert-67xXH5rf.js.gz +0 -0
  232. package/dist/dashboard/assets/badge-DC2L43Mj.js.gz +0 -0
  233. package/dist/dashboard/assets/banner-BBVcb0J3.js.gz +0 -0
  234. package/dist/dashboard/assets/card-Cca1XC6G.js.gz +0 -0
  235. package/dist/dashboard/assets/cli-tools-KvsWa1Jl.js.gz +0 -0
  236. package/dist/dashboard/assets/clipboard-button-DUzEbynq.js.gz +0 -0
  237. package/dist/dashboard/assets/concurrency-BDF0ok7y.js.gz +0 -0
  238. package/dist/dashboard/assets/dialog-DFvWhwTa.js.gz +0 -0
  239. package/dist/dashboard/assets/drawer-CFM2sMX1.js +0 -1
  240. package/dist/dashboard/assets/drawer-CFM2sMX1.js.gz +0 -0
  241. package/dist/dashboard/assets/entry-BLBLxX0h.js.gz +0 -0
  242. package/dist/dashboard/assets/entry-Bqy8RFvM.js.gz +0 -0
  243. package/dist/dashboard/assets/entry-_xHo5x6r.js.gz +0 -0
  244. package/dist/dashboard/assets/formatters-mpBPqAQ8.js.gz +0 -0
  245. package/dist/dashboard/assets/github-badge-C9e8Ts7e.js.gz +0 -0
  246. package/dist/dashboard/assets/index-D6QzEC_n.js.gz +0 -0
  247. package/dist/dashboard/assets/inline-BFUcvllj.js.gz +0 -0
  248. package/dist/dashboard/assets/input-C_ILAvBb.js.gz +0 -0
  249. package/dist/dashboard/assets/layout-CBIyT6Rt.js.gz +0 -0
  250. package/dist/dashboard/assets/list-row-ebJ_-Nsb.js.gz +0 -0
  251. package/dist/dashboard/assets/live-D0mm--ME.js.gz +0 -0
  252. package/dist/dashboard/assets/mutation-sMD965oO.js.gz +0 -0
  253. package/dist/dashboard/assets/numbers-BO9dKaFr.js.gz +0 -0
  254. package/dist/dashboard/assets/query-keys-CfL_Zdoh.js.gz +0 -0
  255. package/dist/dashboard/assets/routing-BnIpi1IJ.js.gz +0 -0
  256. package/dist/dashboard/assets/select-Cj5Nw43g.js.gz +0 -0
  257. package/dist/dashboard/assets/settings-BAFhDgX8.js.gz +0 -0
  258. package/dist/dashboard/assets/stack-EMrOMt4I.js.gz +0 -0
  259. package/dist/dashboard/assets/state-CWoo7ty5.js.gz +0 -0
  260. package/dist/dashboard/assets/switch-CCjT6IkF.js.gz +0 -0
  261. package/dist/dashboard/assets/useMutation-DjkLHUcE.js.gz +0 -0
  262. /package/dist/dashboard/assets/{app-BaWd0puM.js → app-wvwCi4Eh.js} +0 -0
  263. /package/dist/dashboard/assets/{app-BaWd0puM.js.gz → app-wvwCi4Eh.js.gz} +0 -0
@@ -1 +1 @@
1
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,l as a,t as o}from"./app-BaWd0puM.js";import{i as s,n as c,r as l,t as u}from"./terminal-0_IjPWTk.js";import{t as d}from"./arrow-right-Dl5yKnp8.js";import{n as f,r as p,t as m}from"./github-badge-C9e8Ts7e.js";import{t as h}from"./log-in-BmRjy60c.js";import{t as g}from"./message-circle-CCxGwRvv.js";import{t as _}from"./shield-check-DVS0Foqh.js";import{t as v}from"./use-reduced-motion-C4B0R6Sz.js";var y=e(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),b=a(),x=t(n(),1),S=r(),C=`/`,w=`/console`,T={night:{"--story-accent":`var(--color-story-night)`},core:{"--story-accent":`var(--color-story-core)`},blossom:{"--story-accent":`var(--color-story-blossom)`},voices:{"--story-accent":`var(--color-story-voices)`},red:{"--story-accent":`var(--color-story-red)`},denial:{"--story-accent":`var(--color-story-denial)`},shore:{"--story-accent":`var(--color-story-shore)`}},E=e=>`${C}assets/story/${e}`,D=e=>e.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),O=e=>{let t=k[e+1];return t===void 0?`Back to ${k[0]?.label??`the beginning`}`:`Go to ${D(t.location)}`},k=[{id:`blessed-maiden`,number:`01`,label:`The Blessed Maiden`,location:`THE FIRST CROSSING`,theme:`night`,title:`A single signal enters the unknown.`,description:`Every client begins with one request and a question: where should it go? Cartethyia gives that signal a reliable gateway — self-hosted, authenticated, and ready for the crossing.`,image:E(`fleurdelys_plus.webp`),imageAlt:`The Blessed Maiden beneath a luminous blue sky`,signals:[{label:`The first crossing`,value:`OPEN`,icon:`network`},{label:`The chosen vessel`,value:`YOURS`,icon:`shield`},{label:`The gate`,value:`ALIGNED`,icon:`sparkles`}]},{id:`resonant-core`,number:`02`,label:`The Resonant Core`,location:`THE ROUTING SANCTUM`,theme:`core`,title:`The route becomes the power.`,description:`One surface can speak to many providers. Cartethyia translates protocols, balances targets, and keeps each request moving through the right vessel — even when the first path goes quiet.`,image:E(`cartethyia-god.webp`),imageAlt:`Cartethyia surrounded by a celestial blue routing field`,signals:[{label:`The many voices`,value:`30+`,icon:`network`},{label:`The bridge`,value:`ALIGNED`,icon:`terminal`},{label:`The fallback`,value:`AWARE`,icon:`activity`}]},{id:`pink-blossom`,number:`03`,label:`The Pink Blossom Calm`,location:`THE QUIET CONTROL`,theme:`blossom`,title:`Behind every powerful system, there is a quiet place to govern.`,description:`Observe the flow, tune the balance, and let the models answer. Provider accounts, credentials, usage, and health stay in one calm console built for the person operating the route.`,image:E(`jinhsi-blossom.webp`),imageAlt:`Jinhsi beneath soft pink blossoms`,signals:[{label:`The quiet engine`,value:`AWAKE`,icon:`activity`},{label:`The studio`,value:`READY`,icon:`sparkles`},{label:`The balance`,value:`HELD`,icon:`shield`}]},{id:`many-voices`,number:`04`,label:`The Many Voices`,location:`THE LIVING NETWORK`,theme:`voices`,title:`Every route carries a living world.`,description:`Providers, clients, and models bring different voices to the crossing. Cartethyia gives them one dependable gateway without silencing what makes each path unique.`,image:E(`wuthering-waves-hiyuki-aemeath-hiyuki-rover.webp`),imageAlt:`A bright celebration of characters and connected voices`,signals:[{label:`The many voices`,value:`CONNECTED`,icon:`network`},{label:`The shared world`,value:`OPEN`,icon:`sparkles`},{label:`The crossing`,value:`ALIGNED`,icon:`terminal`}]},{id:`red-thread`,number:`05`,label:`The Red Thread`,location:`THE FRACTURED PATH`,theme:`red`,title:`A beautiful signal can still be dangerous.`,description:`Every powerful route attracts pressure. Cartethyia watches the boundary, rejects hostile paths, and keeps a single failure from tearing through the whole network.`,image:E(`phrolova-a.webp`),imageAlt:`A figure surrounded by dark red threads and fractured signals`,signals:[{label:`The threat`,value:`SEEN`,icon:`activity`},{label:`The boundary`,value:`HELD`,icon:`shield`},{label:`The fallback`,value:`READY`,icon:`network`}]},{id:`request-denial`,number:`06`,label:`The Gate of Discernment`,location:`THE GATE OF DISCERNMENT`,theme:`denial`,title:`Not every signal should pass.`,description:`Every game needs a gatekeeper. Cartethyia verifies intent, protects the route, and denies the requests that would fracture the system.`,image:E(`requestdeniawokkjpg.webp`),imageAlt:`A radiant gatekeeper surrounded by cascading signals`,signals:[{label:`The verdict`,value:`CLEAR`,icon:`shield`},{label:`The boundary`,value:`GUARDED`,icon:`network`},{label:`The route`,value:`TRUSTED`,icon:`sparkles`}]},{id:`shorekeeper`,number:`07`,label:`The Open Shore`,location:`THE SHOREKEEPER`,theme:`shore`,title:`The gateway is yours to shape.`,description:`Find your way back to the source, share your route, and join the people building a dependable gateway across a changing AI landscape.`,image:E(`Shorekeeper.webp`),imageAlt:`Shorekeeper watching over a luminous open shore`,signals:[{label:`The source`,value:`OPEN`,icon:`terminal`},{label:`The shore`,value:`AWAITS`,icon:`network`},{label:`The next step`,value:`YOURS`,icon:`sparkles`}]}],A={activity:s,network:l,shield:_,sparkles:c,terminal:u};function j({signal:e}){let t=A[e.icon];return(0,S.jsxs)(`div`,{className:`landing-signal-tile`,children:[(0,S.jsx)(`span`,{className:`landing-signal-icon`,children:(0,S.jsx)(t,{size:12,"aria-hidden":!0})}),(0,S.jsxs)(`div`,{className:`landing-signal-copy`,children:[(0,S.jsx)(`div`,{className:`landing-signal-label`,children:e.label}),(0,S.jsx)(`div`,{className:`landing-signal-value`,children:e.value})]})]})}function M(){let e=v(),t=e?`auto`:`smooth`,[n,r]=(0,x.useState)(0),[a,s]=(0,x.useState)(()=>new Set([0])),[c,l]=(0,x.useState)(!1),[_,b]=(0,x.useState)(!1);(0,x.useEffect)(()=>{let e=()=>b(window.scrollY>24);return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[]);let E=(0,x.useRef)([]);(0,x.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let e=new IntersectionObserver(e=>{let t=e.filter(e=>e.isIntersecting).sort((e,t)=>t.intersectionRatio-e.intersectionRatio)[0];if(t){let e=Number(t.target.dataset.chapterIndex);r(e),s(t=>t.has(e)?t:new Set([...t,e]))}},{threshold:[.35,.6,.85]});E.current.forEach(t=>{t&&e.observe(t)});let i=e=>{if(!e.target?.matches(`input, textarea, select, [contenteditable="true"]`)){if(e.key===`ArrowDown`||e.key===`ArrowRight`||e.key===`PageDown`){e.preventDefault();let r=Math.min(k.length-1,n+1);E.current[r]?.scrollIntoView({behavior:t,block:`start`})}else if(e.key===`ArrowUp`||e.key===`ArrowLeft`||e.key===`PageUp`){e.preventDefault();let r=Math.max(0,n-1);E.current[r]?.scrollIntoView({behavior:t,block:`start`})}}};return window.addEventListener(`keydown`,i),()=>{e.disconnect(),window.removeEventListener(`keydown`,i)}},[n,t]);let D=e=>{E.current[e]?.scrollIntoView({behavior:t,block:`start`})},M=k[n]?.theme??`night`,N=(t,n=``)=>a.has(t)?e?``:`animate-story-reveal-up ${n}`.trim():`opacity-0`;return(0,S.jsxs)(`div`,{className:`relative min-h-screen overflow-x-clip bg-story-deep font-sans text-story-ink`,id:`top`,style:T[M],children:[(0,S.jsx)(`header`,{className:`landing-header`,"data-scrolled":_,children:(0,S.jsxs)(`div`,{className:`landing-header-inner`,"data-scrolled":_,children:[(0,S.jsxs)(`a`,{className:`landing-header-brand`,href:`#top`,onClick:e=>{e.preventDefault(),D(0)},children:[(0,S.jsx)(`span`,{className:`flex size-9 items-center justify-center rounded-xl border border-story-white/25 bg-story-white p-0.5`,children:(0,S.jsx)(`img`,{className:`size-full rounded-lg object-cover`,src:`${C}assets/brand/favicon.jpg`,alt:``})}),(0,S.jsxs)(`span`,{children:[(0,S.jsx)(`strong`,{className:`block font-heading text-lead leading-none`,children:`Cartethyia`}),(0,S.jsx)(`small`,{className:`mt-1 block font-mono text-micro font-medium leading-none tracking-code text-story-white/50`,children:`AI PROXY ROUTER`})]})]}),(0,S.jsxs)(`nav`,{className:`landing-header-desktop-nav`,"aria-label":`Primary navigation`,children:[(0,S.jsxs)(`button`,{type:`button`,onClick:()=>D(0),children:[(0,S.jsx)(p,{size:14,"aria-hidden":!0}),`Home`]}),(0,S.jsxs)(`a`,{href:w,children:[(0,S.jsx)(u,{size:14,"aria-hidden":!0}),`Console`]}),(0,S.jsxs)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,children:[(0,S.jsx)(f,{size:14}),`GitHub`]}),(0,S.jsxs)(`a`,{href:o,target:`_blank`,rel:`noreferrer`,children:[(0,S.jsx)(g,{size:14,"aria-hidden":!0}),`Community`]})]}),(0,S.jsxs)(`div`,{className:`landing-header-actions`,children:[(0,S.jsx)(m,{className:`landing-header-github`}),(0,S.jsxs)(`button`,{type:`button`,"aria-label":c?`Show story`:`Show all`,"aria-pressed":c,onClick:()=>l(e=>!e),className:`landing-header-control landing-header-show-all${c?` is-active`:``}`,children:[(0,S.jsx)(`span`,{className:`size-3.5 shrink-0 rounded-full bg-current`,"aria-hidden":!0}),c?`Story`:`All view`]}),(0,S.jsxs)(`a`,{className:`landing-header-control landing-header-console`,href:w,children:[`Enter console`,(0,S.jsx)(h,{size:14,"aria-hidden":!0})]})]})]})}),c?(0,S.jsx)(`main`,{className:`px-12 pb-17.5 pt-44 max-compact:px-8`,children:(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-640`,children:[(0,S.jsxs)(`div`,{className:`mb-10.5 flex flex-wrap items-end justify-between gap-5.25`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-code text-story-white/50`,children:`All chapters · 7 stories`}),(0,S.jsx)(`h2`,{className:`mt-3.5 font-serif text-hero font-normal leading-none tracking-tight text-story-white`,children:`Everything at a glance`}),(0,S.jsx)(`p`,{className:`mt-3.5 max-w-60ch text-body leading-5 text-story-white/65`,children:`Hover a card to lift it — click to jump to its story. All 7 visuals, captions and signals visible without scrolling forever.`})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-3.5 text-badge text-story-white/50`,children:[(0,S.jsx)(`span`,{className:`h-3 w-3 rounded-full bg-story-success shadow-glow-success`,"aria-hidden":!0}),` Stylish overview`]})]}),(0,S.jsx)(`div`,{className:`grid gap-7 sm:grid-cols-2 lg:grid-cols-3`,children:k.map((e,t)=>(0,S.jsxs)(`article`,{onClick:()=>{l(!1),requestAnimationFrame(()=>D(t))},className:`group relative flex cursor-pointer flex-col overflow-hidden rounded-hero border bg-story-surface text-left transition hover:-translate-y-1 hover:shadow-window focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-story-white/30`,style:T[e.theme],tabIndex:0,role:`button`,"aria-label":`Open ${e.label}`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),l(!1),requestAnimationFrame(()=>D(t)))},children:[(0,S.jsxs)(`div`,{className:`relative h-95 overflow-hidden`,children:[(0,S.jsx)(`img`,{src:e.image,alt:e.imageAlt,className:`h-full w-full object-cover transition duration-500 group-hover:scale-104`,loading:`lazy`,decoding:`async`}),(0,S.jsx)(`div`,{className:`absolute inset-0 bg-gradient-to-t from-story-deep/85 via-story-deep/10 to-transparent`}),(0,S.jsxs)(`div`,{className:`absolute left-3 top-3 flex items-center gap-3`,children:[(0,S.jsx)(`span`,{className:`rounded-chip bg-story-white px-3 py-1 font-mono text-micro font-bold tracking-label text-story-deep`,children:e.number}),(0,S.jsx)(`span`,{className:`rounded-chip border border-story-white/20 bg-story-black/25 px-3.5 py-1 text-micro font-bold uppercase tracking-label text-story-white backdrop-blur`,children:e.theme})]}),(0,S.jsxs)(`div`,{className:`absolute bottom-2 left-3 right-3 flex items-center justify-between text-micro font-bold uppercase tracking-label text-story-white/75`,children:[(0,S.jsx)(`span`,{className:`truncate`,children:e.location}),(0,S.jsx)(y,{size:13,"aria-hidden":!0,className:`opacity-60 group-hover:opacity-100`})]})]}),(0,S.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3.5 p-7`,children:[(0,S.jsx)(`h3`,{className:`font-serif text-title font-normal leading-tight tracking-tight text-story-white`,children:e.title}),(0,S.jsx)(`p`,{className:`line-clamp-2 text-caption leading-5 text-story-white/65`,children:e.description}),(0,S.jsx)(`div`,{className:`mt-1.75 flex flex-wrap gap-3`,children:e.signals.map(t=>{let n=A[t.icon];return(0,S.jsxs)(`span`,{className:`inline-flex items-center gap-1.75 rounded-chip border border-story-white/10 bg-story-white/6 px-3.5 py-1.75 text-micro font-semibold uppercase tracking-label text-story-white/75`,children:[(0,S.jsx)(n,{size:12,"aria-hidden":!0,className:`text-story-accent`}),t.label,(0,S.jsx)(`strong`,{className:`font-bold text-story-white`,children:t.value})]},`${e.id}-${t.label}`)})})]})]},e.id))})]})}):(0,S.jsx)(`main`,{className:`relative z-1`,children:k.map((e,t)=>(0,S.jsxs)(`article`,{id:`chapter-${t}`,"data-chapter-index":t,ref:e=>{E.current[t]=e},className:`relative flex min-h-screen items-center overflow-hidden bg-story-deep bg-[linear-gradient(to_right,color-mix(in_srgb,var(--story-accent)_2.4%,transparent)_1px,transparent_1px),linear-gradient(to_bottom,color-mix(in_srgb,var(--story-accent)_2.4%,transparent)_1px,transparent_1px)] bg-[length:44px_100%,100%_40px] py-16 max-medium:min-h-0 max-medium:py-36 max-compact:py-52 max-compact:pb-16`,style:T[e.theme],"aria-labelledby":`chapter-title-${t}`,children:[(0,S.jsx)(`div`,{className:`absolute inset-0 z-0 scale-108 bg-cover bg-center mix-blend-screen`,style:{backgroundImage:`url(${e.image})`,filter:`blur(27px) saturate(1.14)`,opacity:.24},"aria-hidden":!0}),(0,S.jsxs)(`div`,{className:`landing-story-shell relative z-1 mx-auto`,children:[(0,S.jsxs)(`figure`,{className:`landing-story-visual relative row-start-1 min-w-0 w-full self-center overflow-hidden border border-story-white/20 bg-[#090d16] shadow-popout after:absolute after:inset-0 after:bg-gradient-to-b after:from-story-deep/4 after:via-story-deep/30 after:to-story-deep/60 after:content-[''] ${t%2==0?`col-start-1`:`col-start-2`}`,children:[(0,S.jsx)(`img`,{className:`block size-full object-cover object-center`,src:e.image,alt:e.imageAlt,loading:t===0?`eager`:`lazy`,fetchPriority:t===0?`high`:`low`,decoding:`async`}),(0,S.jsxs)(`figcaption`,{className:`absolute inset-x-4 bottom-4 z-1 flex justify-between font-mono text-micro font-medium leading-none tracking-label text-story-white/70 uppercase`,children:[e.location,` `,(0,S.jsx)(`span`,{className:`text-story-accent`,children:e.number})]})]}),(0,S.jsxs)(`div`,{className:`min-w-0 ${t%2==0?`col-start-2 row-start-1`:`col-start-1 row-start-1`}`,children:[(0,S.jsx)(`h1`,{className:`mt-6 max-w-12ch font-head text-story-hero font-normal leading-[0.98] tracking-[-0.045em] text-balance max-compact:max-w-13ch max-compact:text-story-hero-compact ${N(t,`delay-100`)}`,id:`chapter-title-${t}`,children:e.title}),(0,S.jsx)(`p`,{className:`landing-story-description mt-10 max-h-none max-w-[545px] text-lead leading-14 text-story-white/70 max-compact:max-w-full max-compact:text-body max-compact:leading-6 ${N(t,`delay-150`)}`,children:e.description}),(0,S.jsx)(`div`,{className:`landing-signal-grid ${N(t,`delay-200`)}`,children:e.signals.map(t=>(0,S.jsx)(j,{signal:t},`${e.id}-${t.label}`))}),(0,S.jsx)(`div`,{className:`mt-7 flex flex-wrap gap-3.5 max-compact:mt-5 ${N(t,`delay-300`)}`,children:(0,S.jsxs)(`button`,{className:`inline-flex h-22 items-center gap-2 rounded-control border border-story-white/25 bg-story-white/8 px-4.5 text-body font-bold text-story-white transition-transform active:scale-97 hover:bg-story-white/18 max-compact:h-21 max-compact:px-3.5 max-compact:text-badge`,type:`button`,onClick:()=>D(t===k.length-1?0:t+1),children:[O(t),(0,S.jsx)(d,{size:15,"aria-hidden":!0})]})})]})]})]},e.id))})]})}function N(e){document.title=`Cartethyia — The One-Stop AI Proxy Router`,(0,b.createRoot)(e).render((0,S.jsx)(x.StrictMode,{children:(0,S.jsx)(M,{})}))}export{N as mountLanding};
1
+ import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,l as a,t as o}from"./app-wvwCi4Eh.js";import{i as s,n as c,r as l,t as u}from"./terminal-0_IjPWTk.js";import{t as d}from"./arrow-right-Dl5yKnp8.js";import{n as f,r as p,t as m}from"./github-badge-Orjuzemr.js";import{t as h}from"./log-in-BmRjy60c.js";import{t as g}from"./message-circle-CCxGwRvv.js";import{t as _}from"./shield-check-DVS0Foqh.js";import{t as v}from"./use-reduced-motion-C4B0R6Sz.js";var y=e(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),b=a(),x=t(n(),1),S=r(),C=`/`,w=`/console`,T={night:{"--story-accent":`var(--color-story-night)`},core:{"--story-accent":`var(--color-story-core)`},blossom:{"--story-accent":`var(--color-story-blossom)`},voices:{"--story-accent":`var(--color-story-voices)`},red:{"--story-accent":`var(--color-story-red)`},denial:{"--story-accent":`var(--color-story-denial)`},shore:{"--story-accent":`var(--color-story-shore)`}},E=e=>`${C}assets/story/${e}`,D=e=>e.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),O=e=>{let t=k[e+1];return t===void 0?`Back to ${k[0]?.label??`the beginning`}`:`Go to ${D(t.location)}`},k=[{id:`blessed-maiden`,number:`01`,label:`The Blessed Maiden`,location:`THE FIRST CROSSING`,theme:`night`,title:`A single signal enters the unknown.`,description:`Every client begins with one request and a question: where should it go? Cartethyia gives that signal a reliable gateway — self-hosted, authenticated, and ready for the crossing.`,image:E(`fleurdelys_plus.webp`),imageAlt:`The Blessed Maiden beneath a luminous blue sky`,signals:[{label:`The first crossing`,value:`OPEN`,icon:`network`},{label:`The chosen vessel`,value:`YOURS`,icon:`shield`},{label:`The gate`,value:`ALIGNED`,icon:`sparkles`}]},{id:`resonant-core`,number:`02`,label:`The Resonant Core`,location:`THE ROUTING SANCTUM`,theme:`core`,title:`The route becomes the power.`,description:`One surface can speak to many providers. Cartethyia translates protocols, balances targets, and keeps each request moving through the right vessel — even when the first path goes quiet.`,image:E(`cartethyia-god.webp`),imageAlt:`Cartethyia surrounded by a celestial blue routing field`,signals:[{label:`The many voices`,value:`30+`,icon:`network`},{label:`The bridge`,value:`ALIGNED`,icon:`terminal`},{label:`The fallback`,value:`AWARE`,icon:`activity`}]},{id:`pink-blossom`,number:`03`,label:`The Pink Blossom Calm`,location:`THE QUIET CONTROL`,theme:`blossom`,title:`Behind every powerful system, there is a quiet place to govern.`,description:`Observe the flow, tune the balance, and let the models answer. Provider accounts, credentials, usage, and health stay in one calm console built for the person operating the route.`,image:E(`jinhsi-blossom.webp`),imageAlt:`Jinhsi beneath soft pink blossoms`,signals:[{label:`The quiet engine`,value:`AWAKE`,icon:`activity`},{label:`The studio`,value:`READY`,icon:`sparkles`},{label:`The balance`,value:`HELD`,icon:`shield`}]},{id:`many-voices`,number:`04`,label:`The Many Voices`,location:`THE LIVING NETWORK`,theme:`voices`,title:`Every route carries a living world.`,description:`Providers, clients, and models bring different voices to the crossing. Cartethyia gives them one dependable gateway without silencing what makes each path unique.`,image:E(`wuthering-waves-hiyuki-aemeath-hiyuki-rover.webp`),imageAlt:`A bright celebration of characters and connected voices`,signals:[{label:`The many voices`,value:`CONNECTED`,icon:`network`},{label:`The shared world`,value:`OPEN`,icon:`sparkles`},{label:`The crossing`,value:`ALIGNED`,icon:`terminal`}]},{id:`red-thread`,number:`05`,label:`The Red Thread`,location:`THE FRACTURED PATH`,theme:`red`,title:`A beautiful signal can still be dangerous.`,description:`Every powerful route attracts pressure. Cartethyia watches the boundary, rejects hostile paths, and keeps a single failure from tearing through the whole network.`,image:E(`phrolova-a.webp`),imageAlt:`A figure surrounded by dark red threads and fractured signals`,signals:[{label:`The threat`,value:`SEEN`,icon:`activity`},{label:`The boundary`,value:`HELD`,icon:`shield`},{label:`The fallback`,value:`READY`,icon:`network`}]},{id:`request-denial`,number:`06`,label:`The Gate of Discernment`,location:`THE GATE OF DISCERNMENT`,theme:`denial`,title:`Not every signal should pass.`,description:`Every game needs a gatekeeper. Cartethyia verifies intent, protects the route, and denies the requests that would fracture the system.`,image:E(`requestdeniawokkjpg.webp`),imageAlt:`A radiant gatekeeper surrounded by cascading signals`,signals:[{label:`The verdict`,value:`CLEAR`,icon:`shield`},{label:`The boundary`,value:`GUARDED`,icon:`network`},{label:`The route`,value:`TRUSTED`,icon:`sparkles`}]},{id:`shorekeeper`,number:`07`,label:`The Open Shore`,location:`THE SHOREKEEPER`,theme:`shore`,title:`The gateway is yours to shape.`,description:`Find your way back to the source, share your route, and join the people building a dependable gateway across a changing AI landscape.`,image:E(`Shorekeeper.webp`),imageAlt:`Shorekeeper watching over a luminous open shore`,signals:[{label:`The source`,value:`OPEN`,icon:`terminal`},{label:`The shore`,value:`AWAITS`,icon:`network`},{label:`The next step`,value:`YOURS`,icon:`sparkles`}]}],A={activity:s,network:l,shield:_,sparkles:c,terminal:u};function j({signal:e}){let t=A[e.icon];return(0,S.jsxs)(`div`,{className:`landing-signal-tile`,children:[(0,S.jsx)(`span`,{className:`landing-signal-icon`,children:(0,S.jsx)(t,{size:12,"aria-hidden":!0})}),(0,S.jsxs)(`div`,{className:`landing-signal-copy`,children:[(0,S.jsx)(`div`,{className:`landing-signal-label`,children:e.label}),(0,S.jsx)(`div`,{className:`landing-signal-value`,children:e.value})]})]})}function M(){let e=v(),t=e?`auto`:`smooth`,[n,r]=(0,x.useState)(0),[a,s]=(0,x.useState)(()=>new Set([0])),[c,l]=(0,x.useState)(!1),[_,b]=(0,x.useState)(!1);(0,x.useEffect)(()=>{let e=()=>b(window.scrollY>24);return e(),window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[]);let E=(0,x.useRef)([]);(0,x.useEffect)(()=>{if(typeof IntersectionObserver>`u`)return;let e=new IntersectionObserver(e=>{let t=e.filter(e=>e.isIntersecting).sort((e,t)=>t.intersectionRatio-e.intersectionRatio)[0];if(t){let e=Number(t.target.dataset.chapterIndex);r(e),s(t=>t.has(e)?t:new Set([...t,e]))}},{threshold:[.35,.6,.85]});E.current.forEach(t=>{t&&e.observe(t)});let i=e=>{if(!e.target?.matches(`input, textarea, select, [contenteditable="true"]`)){if(e.key===`ArrowDown`||e.key===`ArrowRight`||e.key===`PageDown`){e.preventDefault();let r=Math.min(k.length-1,n+1);E.current[r]?.scrollIntoView({behavior:t,block:`start`})}else if(e.key===`ArrowUp`||e.key===`ArrowLeft`||e.key===`PageUp`){e.preventDefault();let r=Math.max(0,n-1);E.current[r]?.scrollIntoView({behavior:t,block:`start`})}}};return window.addEventListener(`keydown`,i),()=>{e.disconnect(),window.removeEventListener(`keydown`,i)}},[n,t]);let D=e=>{E.current[e]?.scrollIntoView({behavior:t,block:`start`})},M=k[n]?.theme??`night`,N=(t,n=``)=>a.has(t)?e?``:`animate-story-reveal-up ${n}`.trim():`opacity-0`;return(0,S.jsxs)(`div`,{className:`relative min-h-screen overflow-x-clip bg-story-deep font-sans text-story-ink`,id:`top`,style:T[M],children:[(0,S.jsx)(`header`,{className:`landing-header`,"data-scrolled":_,children:(0,S.jsxs)(`div`,{className:`landing-header-inner`,"data-scrolled":_,children:[(0,S.jsxs)(`a`,{className:`landing-header-brand`,href:`#top`,onClick:e=>{e.preventDefault(),D(0)},children:[(0,S.jsx)(`span`,{className:`flex size-9 items-center justify-center rounded-xl border border-story-white/25 bg-story-white p-0.5`,children:(0,S.jsx)(`img`,{className:`size-full rounded-lg object-cover`,src:`${C}assets/brand/favicon.jpg`,alt:``})}),(0,S.jsxs)(`span`,{children:[(0,S.jsx)(`strong`,{className:`block font-heading text-lead leading-none`,children:`Cartethyia`}),(0,S.jsx)(`small`,{className:`mt-1 block font-mono text-micro font-medium leading-none tracking-code text-story-white/50`,children:`AI PROXY ROUTER`})]})]}),(0,S.jsxs)(`nav`,{className:`landing-header-desktop-nav`,"aria-label":`Primary navigation`,children:[(0,S.jsxs)(`button`,{type:`button`,onClick:()=>D(0),children:[(0,S.jsx)(p,{size:14,"aria-hidden":!0}),`Home`]}),(0,S.jsxs)(`a`,{href:w,children:[(0,S.jsx)(u,{size:14,"aria-hidden":!0}),`Console`]}),(0,S.jsxs)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,children:[(0,S.jsx)(f,{size:14}),`GitHub`]}),(0,S.jsxs)(`a`,{href:o,target:`_blank`,rel:`noreferrer`,children:[(0,S.jsx)(g,{size:14,"aria-hidden":!0}),`Community`]})]}),(0,S.jsxs)(`div`,{className:`landing-header-actions`,children:[(0,S.jsx)(m,{className:`landing-header-github`}),(0,S.jsxs)(`button`,{type:`button`,"aria-label":c?`Show story`:`Show all`,"aria-pressed":c,onClick:()=>l(e=>!e),className:`landing-header-control landing-header-show-all${c?` is-active`:``}`,children:[(0,S.jsx)(`span`,{className:`size-3.5 shrink-0 rounded-full bg-current`,"aria-hidden":!0}),c?`Story`:`All view`]}),(0,S.jsxs)(`a`,{className:`landing-header-control landing-header-console`,href:w,children:[`Enter console`,(0,S.jsx)(h,{size:14,"aria-hidden":!0})]})]})]})}),c?(0,S.jsx)(`main`,{className:`px-12 pb-17.5 pt-44 max-compact:px-8`,children:(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-640`,children:[(0,S.jsxs)(`div`,{className:`mb-10.5 flex flex-wrap items-end justify-between gap-5.25`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-code text-story-white/50`,children:`All chapters · 7 stories`}),(0,S.jsx)(`h2`,{className:`mt-3.5 font-serif text-hero font-normal leading-none tracking-tight text-story-white`,children:`Everything at a glance`}),(0,S.jsx)(`p`,{className:`mt-3.5 max-w-60ch text-body leading-5 text-story-white/65`,children:`Hover a card to lift it — click to jump to its story. All 7 visuals, captions and signals visible without scrolling forever.`})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-3.5 text-badge text-story-white/50`,children:[(0,S.jsx)(`span`,{className:`h-3 w-3 rounded-full bg-story-success shadow-glow-success`,"aria-hidden":!0}),` Stylish overview`]})]}),(0,S.jsx)(`div`,{className:`grid gap-7 sm:grid-cols-2 lg:grid-cols-3`,children:k.map((e,t)=>(0,S.jsxs)(`article`,{onClick:()=>{l(!1),requestAnimationFrame(()=>D(t))},className:`group relative flex cursor-pointer flex-col overflow-hidden rounded-hero border bg-story-surface text-left transition hover:-translate-y-1 hover:shadow-window focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-story-white/30`,style:T[e.theme],tabIndex:0,role:`button`,"aria-label":`Open ${e.label}`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),l(!1),requestAnimationFrame(()=>D(t)))},children:[(0,S.jsxs)(`div`,{className:`relative h-95 overflow-hidden`,children:[(0,S.jsx)(`img`,{src:e.image,alt:e.imageAlt,className:`h-full w-full object-cover transition duration-500 group-hover:scale-104`,loading:`lazy`,decoding:`async`}),(0,S.jsx)(`div`,{className:`absolute inset-0 bg-gradient-to-t from-story-deep/85 via-story-deep/10 to-transparent`}),(0,S.jsxs)(`div`,{className:`absolute left-3 top-3 flex items-center gap-3`,children:[(0,S.jsx)(`span`,{className:`rounded-chip bg-story-white px-3 py-1 font-mono text-micro font-bold tracking-label text-story-deep`,children:e.number}),(0,S.jsx)(`span`,{className:`rounded-chip border border-story-white/20 bg-story-black/25 px-3.5 py-1 text-micro font-bold uppercase tracking-label text-story-white backdrop-blur`,children:e.theme})]}),(0,S.jsxs)(`div`,{className:`absolute bottom-2 left-3 right-3 flex items-center justify-between text-micro font-bold uppercase tracking-label text-story-white/75`,children:[(0,S.jsx)(`span`,{className:`truncate`,children:e.location}),(0,S.jsx)(y,{size:13,"aria-hidden":!0,className:`opacity-60 group-hover:opacity-100`})]})]}),(0,S.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3.5 p-7`,children:[(0,S.jsx)(`h3`,{className:`font-serif text-title font-normal leading-tight tracking-tight text-story-white`,children:e.title}),(0,S.jsx)(`p`,{className:`line-clamp-2 text-caption leading-5 text-story-white/65`,children:e.description}),(0,S.jsx)(`div`,{className:`mt-1.75 flex flex-wrap gap-3`,children:e.signals.map(t=>{let n=A[t.icon];return(0,S.jsxs)(`span`,{className:`inline-flex items-center gap-1.75 rounded-chip border border-story-white/10 bg-story-white/6 px-3.5 py-1.75 text-micro font-semibold uppercase tracking-label text-story-white/75`,children:[(0,S.jsx)(n,{size:12,"aria-hidden":!0,className:`text-story-accent`}),t.label,(0,S.jsx)(`strong`,{className:`font-bold text-story-white`,children:t.value})]},`${e.id}-${t.label}`)})})]})]},e.id))})]})}):(0,S.jsx)(`main`,{className:`relative z-1`,children:k.map((e,t)=>(0,S.jsxs)(`article`,{id:`chapter-${t}`,"data-chapter-index":t,ref:e=>{E.current[t]=e},className:`relative flex min-h-screen items-center overflow-hidden bg-story-deep bg-[linear-gradient(to_right,color-mix(in_srgb,var(--story-accent)_2.4%,transparent)_1px,transparent_1px),linear-gradient(to_bottom,color-mix(in_srgb,var(--story-accent)_2.4%,transparent)_1px,transparent_1px)] bg-[length:44px_100%,100%_40px] py-16 max-medium:min-h-0 max-medium:py-36 max-compact:py-52 max-compact:pb-16`,style:T[e.theme],"aria-labelledby":`chapter-title-${t}`,children:[(0,S.jsx)(`div`,{className:`absolute inset-0 z-0 scale-108 bg-cover bg-center mix-blend-screen`,style:{backgroundImage:`url(${e.image})`,filter:`blur(27px) saturate(1.14)`,opacity:.24},"aria-hidden":!0}),(0,S.jsxs)(`div`,{className:`landing-story-shell relative z-1 mx-auto`,children:[(0,S.jsxs)(`figure`,{className:`landing-story-visual relative row-start-1 min-w-0 w-full self-center overflow-hidden border border-story-white/20 bg-[#090d16] shadow-popout after:absolute after:inset-0 after:bg-gradient-to-b after:from-story-deep/4 after:via-story-deep/30 after:to-story-deep/60 after:content-[''] ${t%2==0?`col-start-1`:`col-start-2`}`,children:[(0,S.jsx)(`img`,{className:`block size-full object-cover object-center`,src:e.image,alt:e.imageAlt,loading:t===0?`eager`:`lazy`,fetchPriority:t===0?`high`:`low`,decoding:`async`}),(0,S.jsxs)(`figcaption`,{className:`absolute inset-x-4 bottom-4 z-1 flex justify-between font-mono text-micro font-medium leading-none tracking-label text-story-white/70 uppercase`,children:[e.location,` `,(0,S.jsx)(`span`,{className:`text-story-accent`,children:e.number})]})]}),(0,S.jsxs)(`div`,{className:`min-w-0 ${t%2==0?`col-start-2 row-start-1`:`col-start-1 row-start-1`}`,children:[(0,S.jsx)(`h1`,{className:`mt-6 max-w-12ch font-head text-story-hero font-normal leading-[0.98] tracking-[-0.045em] text-balance max-compact:max-w-13ch max-compact:text-story-hero-compact ${N(t,`delay-100`)}`,id:`chapter-title-${t}`,children:e.title}),(0,S.jsx)(`p`,{className:`landing-story-description mt-10 max-h-none max-w-[545px] text-lead leading-14 text-story-white/70 max-compact:max-w-full max-compact:text-body max-compact:leading-6 ${N(t,`delay-150`)}`,children:e.description}),(0,S.jsx)(`div`,{className:`landing-signal-grid ${N(t,`delay-200`)}`,children:e.signals.map(t=>(0,S.jsx)(j,{signal:t},`${e.id}-${t.label}`))}),(0,S.jsx)(`div`,{className:`mt-7 flex flex-wrap gap-3.5 max-compact:mt-5 ${N(t,`delay-300`)}`,children:(0,S.jsxs)(`button`,{className:`inline-flex h-22 items-center gap-2 rounded-control border border-story-white/25 bg-story-white/8 px-4.5 text-body font-bold text-story-white transition-transform active:scale-97 hover:bg-story-white/18 max-compact:h-21 max-compact:px-3.5 max-compact:text-badge`,type:`button`,onClick:()=>D(t===k.length-1?0:t+1),children:[O(t),(0,S.jsx)(d,{size:15,"aria-hidden":!0})]})})]})]})]},e.id))})]})}function N(e){document.title=`Cartethyia — The One-Stop AI Proxy Router`,(0,b.createRoot)(e).render((0,S.jsx)(x.StrictMode,{children:(0,S.jsx)(M,{})}))}export{N as mountLanding};
@@ -1 +1 @@
1
- import{n as e}from"./jsx-runtime-CXUMngI_.js";var t=e(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),n=e(`fingerprint-pattern`,[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]]);async function r(e,t,n){let r=Array(e.length),i=Math.max(1,Math.min(t,e.length)),a=0;return await Promise.all(Array.from({length:i},async()=>{for(;;){let t=a;if(t>=e.length)return;a+=1;try{r[t]={status:`fulfilled`,value:await n(e[t],t)}}catch(e){r[t]={status:`rejected`,reason:e}}}})),r}export{n,t as r,r as t};
1
+ import{n as e}from"./jsx-runtime-CXUMngI_.js";var t=e(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),n=e(`fingerprint-pattern`,[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]]);export{t as n,n as t};
@@ -1 +1 @@
1
- import{n as e,t}from"./jsx-runtime-CXUMngI_.js";import{i as n,n as r,r as i}from"./numbers-BO9dKaFr.js";import{x as a}from"./assert-67xXH5rf.js";import{a as o,t as s,u as c}from"./tokens-COzario9.js";import{t as l}from"./select-Cj5Nw43g.js";var u=e(`cog`,[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]),d=[`1h`,`6h`,`12h`,`24h`,`7d`,`30d`,`all`],f=t(),p={"1h":`Last 1 Hour`,"6h":`Last 6 Hours`,"12h":`Last 12 Hours`,"24h":`Last 24 Hours`,"7d":`Last 7 Days`,"30d":`Last 30 Days`,all:`All retained`},m=d.map(e=>({value:e,label:p[e]??e}));function h(e){return p[e]??e}function g({value:e,onChange:t}){return(0,f.jsx)(l,{"aria-label":`Period`,value:e,size:`sm`,className:`w-auto min-w-46 shrink-0 grow-0 basis-auto`,onValueChange:t,options:m.map(e=>({value:e.value,label:e.label}))})}function _(e,t,r){let a=h(e);if(t||r===void 0)return a;let o=r.inputTokens+r.outputTokens;return`${a} · ${n(r.requests)} calls · ${c(o)} tokens · avg ${i(r.avgDurationMs)}`}function v(e){return e!==null&&d.includes(e)?e:`24h`}function y(e){return e===`tokens`||e===`cached`?e:`requests`}function b(e){if(e===null)return s;if(e===`auto`)return-1;let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=o?t:s}function x(e){return e!==null&&a.includes(e)?e:`model`}function S(e){return e==null||!Number.isFinite(e)?`—`:e===0?`$0.00`:e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function C(e){return e==null||!Number.isFinite(e)?`—`:`${r(e)} CR`}function w(e){return e==null||!Number.isFinite(e)||e<=0?`—`:`${(e>=100?Math.round(e):Math.round(e*10)/10).toLocaleString(`en-US`)} tok/s`}function T(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString(`en-GB`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function E(e){switch(e){case`chat`:return`OpenAI Completions`;case`messages`:return`Anthropic Messages`;case`responses`:return`OpenAI Responses`;case`completion`:return`OpenAI Completions`;default:return e||`—`}}function D(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=Math.max(0,t-n),i=6e4,a=60*i,o=24*a,s=7*o;if(r<a){let e=Math.max(0,Math.floor(r/i));return e<=1?`just now`:`${e}m ago`}if(r<o){let e=Math.floor(r/a);return e<=1?`1h ago`:`${e}h ago`}if(r<s){let e=Math.floor(r/o);return e<=1?`1d ago`:`${e}d ago`}let c=Math.floor(r/s);return c<=1?`1w ago`:`${c}w ago`}export{D as a,T as c,_ as d,g as f,b as i,S as l,u as m,y as n,C as o,h as p,v as r,w as s,x as t,E as u};
1
+ import{n as e,t}from"./jsx-runtime-CXUMngI_.js";import{i as n,n as r,r as i}from"./numbers-BNDZnsUE.js";import{x as a}from"./assert-C0YYuZJ4.js";import{a as o,t as s,u as c}from"./tokens-COzario9.js";import{t as l}from"./select-B3iTetHN.js";var u=e(`cog`,[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]),d=[`1h`,`6h`,`12h`,`24h`,`7d`,`30d`,`all`],f=t(),p={"1h":`Last 1 Hour`,"6h":`Last 6 Hours`,"12h":`Last 12 Hours`,"24h":`Last 24 Hours`,"7d":`Last 7 Days`,"30d":`Last 30 Days`,all:`All retained`},m=d.map(e=>({value:e,label:p[e]??e}));function h(e){return p[e]??e}function g({value:e,onChange:t}){return(0,f.jsx)(l,{"aria-label":`Period`,value:e,size:`sm`,className:`w-auto min-w-46 shrink-0 grow-0 basis-auto`,onValueChange:t,options:m.map(e=>({value:e.value,label:e.label}))})}function _(e,t,r){let a=h(e);if(t||r===void 0)return a;let o=r.inputTokens+r.outputTokens;return`${a} · ${n(r.requests)} calls · ${c(o)} tokens · avg ${i(r.avgDurationMs)}`}function v(e){return e!==null&&d.includes(e)?e:`24h`}function y(e){return e===`tokens`||e===`cached`?e:`requests`}function b(e){if(e===null)return s;if(e===`auto`)return-1;let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=o?t:s}function x(e){return e!==null&&a.includes(e)?e:`model`}function S(e){return e==null||!Number.isFinite(e)?`—`:e===0?`$0.00`:e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function C(e){return e==null||!Number.isFinite(e)?`—`:`${r(e)} CR`}function w(e){return e==null||!Number.isFinite(e)||e<=0?`—`:`${(e>=100?Math.round(e):Math.round(e*10)/10).toLocaleString(`en-US`)} tok/s`}function T(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString(`en-GB`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function E(e){switch(e){case`chat`:return`OpenAI Completions`;case`messages`:return`Anthropic Messages`;case`responses`:return`OpenAI Responses`;case`completion`:return`OpenAI Completions`;default:return e||`—`}}function D(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=Math.max(0,t-n),i=6e4,a=60*i,o=24*a,s=7*o;if(r<a){let e=Math.max(0,Math.floor(r/i));return e<=1?`just now`:`${e}m ago`}if(r<o){let e=Math.floor(r/a);return e<=1?`1h ago`:`${e}h ago`}if(r<s){let e=Math.floor(r/o);return e<=1?`1d ago`:`${e}d ago`}let c=Math.floor(r/s);return c<=1?`1w ago`:`${c}w ago`}export{D as a,T as c,_ as d,g as f,b as i,S as l,u as m,y as n,C as o,h as p,v as r,w as s,x as t,E as u};
@@ -1 +1 @@
1
- import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,c as a,i as o}from"./app-BaWd0puM.js";var s=e(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),c=t(n(),1),l=r(),u=`https://img.shields.io`;function d(e,t){let n=new URLSearchParams({style:`flat-square`,labelColor:`0b1220`,color:t});return`${u}/github/${e}/${o}?${n.toString()}`}function f({size:e=16}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z`})})}function p({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M0 0v16h16V0H0Zm13 13h-2V5H8v8H3V3h10v10Z`})})}function m({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`m15.5 6.3-.02-.06-2.14-5.58a.56.56 0 0 0-.22-.26.57.57 0 0 0-.65.03.57.57 0 0 0-.19.29l-1.45 4.42H5.17L3.72.72A.57.57 0 0 0 3.53.43a.57.57 0 0 0-.65-.03.56.56 0 0 0-.22.26L.52 6.24l-.02.06a3.97 3.97 0 0 0 1.32 4.59l.01.01.02.02 3.25 2.44 1.61 1.22.98.74a.67.67 0 0 0 .81 0l.98-.74 1.61-1.22 3.26-2.45.01-.01a3.97 3.97 0 0 0 1.32-4.59Z`})})}function h({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M13.55 3.02A12.6 12.6 0 0 0 10.5 2.1a8.9 8.9 0 0 0-.4.83 11.7 11.7 0 0 0-3.2 0 8.6 8.6 0 0 0-.41-.83 12.6 12.6 0 0 0-3.05.92C1.3 5.75.85 8.4 1.07 11.01a12.7 12.7 0 0 0 3.74 1.9c.3-.41.57-.85.8-1.31-.44-.17-.86-.37-1.26-.6l.31-.24a9 9 0 0 0 7.68 0l.31.24c-.4.23-.82.43-1.26.6.23.46.5.9.8 1.31a12.7 12.7 0 0 0 3.74-1.9c.26-3.03-.44-5.66-1.98-7.99ZM5.68 9.4c-.73 0-1.33-.67-1.33-1.49s.59-1.49 1.33-1.49c.74 0 1.34.68 1.33 1.49 0 .82-.59 1.49-1.33 1.49Zm4.64 0c-.73 0-1.33-.67-1.33-1.49s.59-1.49 1.33-1.49c.74 0 1.34.68 1.33 1.49 0 .82-.59 1.49-1.33 1.49Z`})})}function g({id:e,size:t}){return e===`npm`?(0,l.jsx)(p,{size:t}):e===`gitlab`?(0,l.jsx)(m,{size:t}):e===`discord`?(0,l.jsx)(h,{size:t}):(0,l.jsx)(f,{size:t})}function _({className:e=``}){let[t,n]=(0,c.useState)(!1),r=(0,c.useRef)(null),o=(0,c.useId)(),s=(0,c.useCallback)(()=>n(!1),[]);return(0,c.useEffect)(()=>{if(!t)return;let e=e=>{r.current!==null&&!r.current.contains(e.target)&&s()},n=e=>{e.key===`Escape`&&s()};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,n)}},[t,s]),(0,l.jsx)(`div`,{className:e,ref:r,children:(0,l.jsxs)(`div`,{className:`github-split`,children:[(0,l.jsxs)(`a`,{className:`github-badge`,href:i,target:`_blank`,rel:`noreferrer`,"aria-label":`Cartethyia on GitHub`,children:[(0,l.jsx)(f,{size:15}),(0,l.jsx)(`img`,{className:`github-badge-metric`,src:d(`stars`,`2ea043`),alt:`GitHub stars`,height:20,loading:`lazy`,decoding:`async`}),(0,l.jsx)(`img`,{className:`github-badge-metric`,src:d(`forks`,`1f6feb`),alt:`GitHub forks`,height:20,loading:`lazy`,decoding:`async`})]}),(0,l.jsx)(`button`,{type:`button`,className:`github-split-toggle`,"aria-haspopup":`menu`,"aria-expanded":t,"aria-controls":o,"aria-label":`More ways to get Cartethyia`,onClick:()=>n(e=>!e),children:(0,l.jsx)(`svg`,{width:12,height:12,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M8 11 3 5h10l-5 6Z`})})}),t?(0,l.jsx)(`div`,{className:`github-split-menu`,id:o,role:`menu`,"aria-label":`Source and package links`,children:a.map(e=>(0,l.jsxs)(`a`,{className:`github-split-item`,href:e.href,target:`_blank`,rel:`noreferrer`,role:`menuitem`,onClick:s,children:[(0,l.jsx)(g,{id:e.id,size:14}),(0,l.jsxs)(`span`,{className:`github-split-item-text`,children:[(0,l.jsx)(`span`,{className:`github-split-item-label`,children:e.label}),(0,l.jsx)(`span`,{className:`github-split-item-hint`,children:e.hint})]})]},e.id))}):null]})})}export{f as n,s as r,_ as t};
1
+ import{n as e,o as t,r as n,t as r}from"./jsx-runtime-CXUMngI_.js";import{a as i,c as a,i as o}from"./app-wvwCi4Eh.js";var s=e(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),c=t(n(),1),l=r(),u=`https://img.shields.io`;function d(e,t){let n=new URLSearchParams({style:`flat-square`,labelColor:`0b1220`,color:t});return`${u}/github/${e}/${o}?${n.toString()}`}function f({size:e=16}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z`})})}function p({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M0 0v16h16V0H0Zm13 13h-2V5H8v8H3V3h10v10Z`})})}function m({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`m15.5 6.3-.02-.06-2.14-5.58a.56.56 0 0 0-.22-.26.57.57 0 0 0-.65.03.57.57 0 0 0-.19.29l-1.45 4.42H5.17L3.72.72A.57.57 0 0 0 3.53.43a.57.57 0 0 0-.65-.03.56.56 0 0 0-.22.26L.52 6.24l-.02.06a3.97 3.97 0 0 0 1.32 4.59l.01.01.02.02 3.25 2.44 1.61 1.22.98.74a.67.67 0 0 0 .81 0l.98-.74 1.61-1.22 3.26-2.45.01-.01a3.97 3.97 0 0 0 1.32-4.59Z`})})}function h({size:e=15}){return(0,l.jsx)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M13.55 3.02A12.6 12.6 0 0 0 10.5 2.1a8.9 8.9 0 0 0-.4.83 11.7 11.7 0 0 0-3.2 0 8.6 8.6 0 0 0-.41-.83 12.6 12.6 0 0 0-3.05.92C1.3 5.75.85 8.4 1.07 11.01a12.7 12.7 0 0 0 3.74 1.9c.3-.41.57-.85.8-1.31-.44-.17-.86-.37-1.26-.6l.31-.24a9 9 0 0 0 7.68 0l.31.24c-.4.23-.82.43-1.26.6.23.46.5.9.8 1.31a12.7 12.7 0 0 0 3.74-1.9c.26-3.03-.44-5.66-1.98-7.99ZM5.68 9.4c-.73 0-1.33-.67-1.33-1.49s.59-1.49 1.33-1.49c.74 0 1.34.68 1.33 1.49 0 .82-.59 1.49-1.33 1.49Zm4.64 0c-.73 0-1.33-.67-1.33-1.49s.59-1.49 1.33-1.49c.74 0 1.34.68 1.33 1.49 0 .82-.59 1.49-1.33 1.49Z`})})}function g({id:e,size:t}){return e===`npm`?(0,l.jsx)(p,{size:t}):e===`gitlab`?(0,l.jsx)(m,{size:t}):e===`discord`?(0,l.jsx)(h,{size:t}):(0,l.jsx)(f,{size:t})}function _({className:e=``}){let[t,n]=(0,c.useState)(!1),r=(0,c.useRef)(null),o=(0,c.useId)(),s=(0,c.useCallback)(()=>n(!1),[]);return(0,c.useEffect)(()=>{if(!t)return;let e=e=>{r.current!==null&&!r.current.contains(e.target)&&s()},n=e=>{e.key===`Escape`&&s()};return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,n),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,n)}},[t,s]),(0,l.jsx)(`div`,{className:e,ref:r,children:(0,l.jsxs)(`div`,{className:`github-split`,children:[(0,l.jsxs)(`a`,{className:`github-badge`,href:i,target:`_blank`,rel:`noreferrer`,"aria-label":`Cartethyia on GitHub`,children:[(0,l.jsx)(f,{size:15}),(0,l.jsx)(`img`,{className:`github-badge-metric`,src:d(`stars`,`2ea043`),alt:`GitHub stars`,height:20,loading:`lazy`,decoding:`async`}),(0,l.jsx)(`img`,{className:`github-badge-metric`,src:d(`forks`,`1f6feb`),alt:`GitHub forks`,height:20,loading:`lazy`,decoding:`async`})]}),(0,l.jsx)(`button`,{type:`button`,className:`github-split-toggle`,"aria-haspopup":`menu`,"aria-expanded":t,"aria-controls":o,"aria-label":`More ways to get Cartethyia`,onClick:()=>n(e=>!e),children:(0,l.jsx)(`svg`,{width:12,height:12,viewBox:`0 0 16 16`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:(0,l.jsx)(`path`,{d:`M8 11 3 5h10l-5 6Z`})})}),t?(0,l.jsx)(`div`,{className:`github-split-menu`,id:o,role:`menu`,"aria-label":`Source and package links`,children:a.map(e=>(0,l.jsxs)(`a`,{className:`github-split-item`,href:e.href,target:`_blank`,rel:`noreferrer`,role:`menuitem`,onClick:s,children:[(0,l.jsx)(g,{id:e.id,size:14}),(0,l.jsxs)(`span`,{className:`github-split-item-text`,children:[(0,l.jsx)(`span`,{className:`github-split-item-label`,children:e.label}),(0,l.jsx)(`span`,{className:`github-split-item-hint`,children:e.hint})]})]},e.id))}):null]})})}export{f as n,s as r,_ as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/entry-BLBLxX0h.js","assets/jsx-runtime-CXUMngI_.js","assets/app-BaWd0puM.js","assets/app-KvsUJUMF.css","assets/terminal-0_IjPWTk.js","assets/numbers-BO9dKaFr.js","assets/use-modal-focus-By7oJoGd.js","assets/dialog-DFvWhwTa.js","assets/assert-67xXH5rf.js","assets/query-keys-CfL_Zdoh.js","assets/mutation-sMD965oO.js","assets/useMutation-DjkLHUcE.js","assets/dialog-actions-B1axpEg7.js","assets/entry-_xHo5x6r.js","assets/brain-Cwed_72z.js","assets/chevron-right-BXIy5l3h.js","assets/circle-check-BU3v_mFW.js","assets/eye-C_hawfH4.js","assets/github-badge-C9e8Ts7e.js","assets/state-CWoo7ty5.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-DUzEbynq.js","assets/use-clipboard-B0Sy03fE.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/card-Cca1XC6G.js","assets/download-dRFo5_Wu.js","assets/tokens-COzario9.js","assets/stream-retry-5QnVuSSo.js","assets/entry-Bqy8RFvM.js","assets/arrow-right-Dl5yKnp8.js","assets/log-in-BmRjy60c.js","assets/message-circle-CCxGwRvv.js","assets/shield-check-DVS0Foqh.js","assets/use-reduced-motion-C4B0R6Sz.js"])))=>i.map(i=>d[i]);
2
- (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){return e===`/share`||e.startsWith(`/share/`)?`share`:e===`/console`||e.startsWith(`/console/`)?`console`:`landing`}var t=`modulepreload`,n=function(e){return`/`+e},r={},i=function(e,i,a){let o=Promise.resolve();if(i&&i.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}o=l(i.map(i=>{if(i=n(i,a),i=u(i),i in r)return;r[i]=!0;let o=i.endsWith(`.css`);for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.href===i&&(!o||n.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:t,o||(s.as=`script`),s.crossOrigin=``,s.href=i,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,t)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})},a=document.getElementById(`root`);if(a===null)throw Error(`Dashboard root element is missing`);var o=e(window.location.pathname);o===`console`?i(async()=>{let{mountConsole:e}=await import(`./entry-BLBLxX0h.js`);return{mountConsole:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(({mountConsole:e})=>e(a)):o===`share`?i(()=>import(`./entry-_xHo5x6r.js`).then(()=>void 0),__vite__mapDeps([13,1,2,3,14,5,15,16,17,18,19,20,21,22,23,24,25,26,27,28])):i(async()=>{let{mountLanding:e}=await import(`./entry-Bqy8RFvM.js`);return{mountLanding:e}},__vite__mapDeps([29,1,2,3,4,30,18,31,32,33,34])).then(({mountLanding:e})=>e(a));export{i as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/entry-j40LJotO.js","assets/jsx-runtime-CXUMngI_.js","assets/app-wvwCi4Eh.js","assets/app-B2vyPoII.css","assets/terminal-0_IjPWTk.js","assets/numbers-BNDZnsUE.js","assets/use-modal-focus-By7oJoGd.js","assets/dialog-C9omdjQt.js","assets/assert-C0YYuZJ4.js","assets/query-keys-CLaNz8Xz.js","assets/mutation-JJGQm8TD.js","assets/useMutation-Dmnfh1Ue.js","assets/dialog-actions-B1axpEg7.js","assets/entry-DS90gUks.js","assets/brain-Cwed_72z.js","assets/chevron-right-BXIy5l3h.js","assets/circle-check-BU3v_mFW.js","assets/eye-C_hawfH4.js","assets/github-badge-Orjuzemr.js","assets/state-DLS7IDMy.js","assets/key-round-UkavsGxp.js","assets/clipboard-button-DOfrVmsi.js","assets/use-clipboard-B0Sy03fE.js","assets/scaling-nWE4Cx8f.js","assets/wrench-B6E1oEuY.js","assets/card-Be5Uzamx.js","assets/download-dRFo5_Wu.js","assets/tokens-COzario9.js","assets/stream-retry-5QnVuSSo.js","assets/entry-q5HwZ8nN.js","assets/arrow-right-Dl5yKnp8.js","assets/log-in-BmRjy60c.js","assets/message-circle-CCxGwRvv.js","assets/shield-check-DVS0Foqh.js","assets/use-reduced-motion-C4B0R6Sz.js"])))=>i.map(i=>d[i]);
2
+ (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){return e===`/share`||e.startsWith(`/share/`)?`share`:e===`/console`||e.startsWith(`/console/`)?`console`:`landing`}var t=`modulepreload`,n=function(e){return`/`+e},r={},i=function(e,i,a){let o=Promise.resolve();if(i&&i.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}o=l(i.map(i=>{if(i=n(i,a),i=u(i),i in r)return;r[i]=!0;let o=i.endsWith(`.css`);for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.href===i&&(!o||n.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:t,o||(s.as=`script`),s.crossOrigin=``,s.href=i,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,t)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})},a=document.getElementById(`root`);if(a===null)throw Error(`Dashboard root element is missing`);var o=e(window.location.pathname);o===`console`?i(async()=>{let{mountConsole:e}=await import(`./entry-j40LJotO.js`);return{mountConsole:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(({mountConsole:e})=>e(a)):o===`share`?i(()=>import(`./entry-DS90gUks.js`).then(()=>void 0),__vite__mapDeps([13,1,2,3,14,5,15,16,17,18,19,20,21,22,23,24,25,26,27,28])):i(async()=>{let{mountLanding:e}=await import(`./entry-q5HwZ8nN.js`);return{mountLanding:e}},__vite__mapDeps([29,1,2,3,4,30,18,31,32,33,34])).then(({mountLanding:e})=>e(a));export{i as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-BO9dKaFr.js";import{r as n}from"./stack-EMrOMt4I.js";var r=e(),i={center:`items-center`,start:`items-start`,end:`items-end`,"flex-start":`items-start`,"flex-end":`items-end`,baseline:`items-baseline`,stretch:`items-stretch`},a={center:`justify-center`,start:`justify-start`,end:`justify-end`,"flex-start":`justify-start`,"flex-end":`justify-end`,"space-between":`justify-between`,"space-around":`justify-around`,"space-evenly":`justify-evenly`};function o({children:e,gap:t=3,gapRaw:n,align:i=`center`,justify:a,wrap:o=!0,style:c,className:l=``}){return(0,r.jsx)(s,{gap:t,gapRaw:n,align:i,justify:a,wrap:o,style:c,className:l,children:e})}function s({children:e,gap:o=4,gapRaw:s,align:c=`center`,justify:l,wrap:u=!1,style:d,className:f=``}){let p=n(o,4);return(0,r.jsx)(`div`,{className:t(`flex flex-row`,i[c??``]??``,a[l??``]??``,u&&`flex-wrap`,s===void 0?p:null,f),style:s===void 0?d:{gap:s,...d},children:e})}export{s as n,o as t};
1
+ import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-BNDZnsUE.js";import{r as n}from"./stack-KrOrm7JZ.js";var r=e(),i={center:`items-center`,start:`items-start`,end:`items-end`,"flex-start":`items-start`,"flex-end":`items-end`,baseline:`items-baseline`,stretch:`items-stretch`},a={center:`justify-center`,start:`justify-start`,end:`justify-end`,"flex-start":`justify-start`,"flex-end":`justify-end`,"space-between":`justify-between`,"space-around":`justify-around`,"space-evenly":`justify-evenly`};function o({children:e,gap:t=3,gapRaw:n,align:i=`center`,justify:a,wrap:o=!0,style:c,className:l=``}){return(0,r.jsx)(s,{gap:t,gapRaw:n,align:i,justify:a,wrap:o,style:c,className:l,children:e})}function s({children:e,gap:o=4,gapRaw:s,align:c=`center`,justify:l,wrap:u=!1,style:d,className:f=``}){let p=n(o,4);return(0,r.jsx)(`div`,{className:t(`flex flex-row`,i[c??``]??``,a[l??``]??``,u&&`flex-wrap`,s===void 0?p:null,f),style:s===void 0?d:{gap:s,...d},children:e})}export{s as n,o as t};
@@ -1 +1 @@
1
- import{o as e,r as t,t as n}from"./jsx-runtime-CXUMngI_.js";import{m as r}from"./numbers-BO9dKaFr.js";import{t as i}from"./eye-off-Bk5g2luF.js";import{t as a}from"./eye-C_hawfH4.js";var o=e(t(),1),s=n(),c=`w-full rounded-control border border-inner-border bg-surface-2 text-text-primary px-6 py-4 text-body outline-none transition-[border-color,box-shadow] duration-(--dur-micro) ease-spring focus:border-accent focus:shadow-focus`,l=(0,o.forwardRef)(({label:e,hint:t,error:n,id:l,type:u,className:d=``,showPasswordToggle:f,...p},m)=>{let h=u===`password`,g=h||f,[_,v]=(0,o.useState)(!1);return(0,s.jsxs)(`div`,{className:`form-group flex w-full flex-col gap-3`,children:[e?(0,s.jsxs)(`label`,{htmlFor:l,className:`form-label flex items-center justify-between text-caption font-semibold text-text-primary`,children:[(0,s.jsx)(`span`,{children:e}),t?(0,s.jsx)(`span`,{className:`form-hint text-badge font-normal text-text-tertiary`,children:t}):null]}):null,(0,s.jsxs)(`div`,{className:`relative flex items-center w-full`,children:[(0,s.jsx)(`input`,{ref:m,id:l,type:h?_?`text`:`password`:u,className:r(`form-input`,c,g&&`pr-18`,d),...p}),g?(0,s.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),"aria-label":_?`Hide password`:`Show password`,"aria-pressed":_,className:`absolute right-5 bg-transparent border-none text-text-tertiary cursor-pointer p-1 inline-flex items-center justify-center`,children:_?(0,s.jsx)(i,{size:16}):(0,s.jsx)(a,{size:16})}):null]}),n?(0,s.jsx)(`p`,{className:`form-error mt-2 text-badge text-red`,role:`alert`,children:n}):null]})});l.displayName=`Input`;var u=(0,o.forwardRef)(({className:e,...t},n)=>(0,s.jsx)(`input`,{ref:n,type:`file`,className:r(`form-file-input box-border min-w-0 h-16 flex-auto cursor-pointer rounded-control border border-inner-border bg-surface-2 py-0 pl-0 pr-2 font-sans text-badge text-text-secondary transition-colors duration-(--dur-micro) ease-standard enabled:hover:border-border-strong focus-visible:outline-2 focus-visible:outline-focus-ring focus-visible:outline-offset-1 disabled:cursor-not-allowed disabled:opacity-60`,`file:h-full file:mr-4 file:px-5 file:py-0 file:rounded-l-control file:rounded-r-none file:border-0 file:border-r file:border-inner-border file:bg-surface-1 file:font-sans file:text-badge file:font-semibold file:text-text-primary file:cursor-pointer disabled:file:cursor-not-allowed file:hover:bg-surface-hover`,e),...t}));u.displayName=`FileInput`;var d=(0,o.forwardRef)(({label:e,hint:t,error:n,id:i,className:a=``,...o},l)=>(0,s.jsxs)(`div`,{className:`form-group flex w-full flex-col gap-3`,children:[e?(0,s.jsxs)(`label`,{htmlFor:i,className:`form-label flex items-center justify-between text-caption font-semibold text-text-primary`,children:[(0,s.jsx)(`span`,{children:e}),t?(0,s.jsx)(`span`,{className:`form-hint text-badge font-normal text-text-tertiary`,children:t}):null]}):null,(0,s.jsx)(`textarea`,{ref:l,id:i,className:r(`form-textarea`,c,a),...o}),n?(0,s.jsx)(`p`,{className:`form-error mt-2 text-badge text-red`,role:`alert`,children:n}):null]}));d.displayName=`Textarea`;export{l as n,d as r,u as t};
1
+ import{o as e,r as t,t as n}from"./jsx-runtime-CXUMngI_.js";import{m as r}from"./numbers-BNDZnsUE.js";import{t as i}from"./eye-off-Bk5g2luF.js";import{t as a}from"./eye-C_hawfH4.js";var o=e(t(),1),s=n(),c=`w-full rounded-control border border-inner-border bg-surface-2 text-text-primary px-6 py-4 text-body outline-none transition-[border-color,box-shadow] duration-(--dur-micro) ease-spring focus:border-accent focus:shadow-focus`,l=(0,o.forwardRef)(({label:e,hint:t,error:n,id:l,type:u,className:d=``,showPasswordToggle:f,...p},m)=>{let h=u===`password`,g=h||f,[_,v]=(0,o.useState)(!1);return(0,s.jsxs)(`div`,{className:`form-group flex w-full flex-col gap-3`,children:[e?(0,s.jsxs)(`label`,{htmlFor:l,className:`form-label flex items-center justify-between text-caption font-semibold text-text-primary`,children:[(0,s.jsx)(`span`,{children:e}),t?(0,s.jsx)(`span`,{className:`form-hint text-badge font-normal text-text-tertiary`,children:t}):null]}):null,(0,s.jsxs)(`div`,{className:`relative flex items-center w-full`,children:[(0,s.jsx)(`input`,{ref:m,id:l,type:h?_?`text`:`password`:u,className:r(`form-input`,c,g&&`pr-18`,d),...p}),g?(0,s.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),"aria-label":_?`Hide password`:`Show password`,"aria-pressed":_,className:`absolute right-5 bg-transparent border-none text-text-tertiary cursor-pointer p-1 inline-flex items-center justify-center`,children:_?(0,s.jsx)(i,{size:16}):(0,s.jsx)(a,{size:16})}):null]}),n?(0,s.jsx)(`p`,{className:`form-error mt-2 text-badge text-red`,role:`alert`,children:n}):null]})});l.displayName=`Input`;var u=(0,o.forwardRef)(({className:e,...t},n)=>(0,s.jsx)(`input`,{ref:n,type:`file`,className:r(`form-file-input box-border min-w-0 h-16 flex-auto cursor-pointer rounded-control border border-inner-border bg-surface-2 py-0 pl-0 pr-2 font-sans text-badge text-text-secondary transition-colors duration-(--dur-micro) ease-standard enabled:hover:border-border-strong focus-visible:outline-2 focus-visible:outline-focus-ring focus-visible:outline-offset-1 disabled:cursor-not-allowed disabled:opacity-60`,`file:h-full file:mr-4 file:px-5 file:py-0 file:rounded-l-control file:rounded-r-none file:border-0 file:border-r file:border-inner-border file:bg-surface-1 file:font-sans file:text-badge file:font-semibold file:text-text-primary file:cursor-pointer disabled:file:cursor-not-allowed file:hover:bg-surface-hover`,e),...t}));u.displayName=`FileInput`;var d=(0,o.forwardRef)(({label:e,hint:t,error:n,id:i,className:a=``,...o},l)=>(0,s.jsxs)(`div`,{className:`form-group flex w-full flex-col gap-3`,children:[e?(0,s.jsxs)(`label`,{htmlFor:i,className:`form-label flex items-center justify-between text-caption font-semibold text-text-primary`,children:[(0,s.jsx)(`span`,{children:e}),t?(0,s.jsx)(`span`,{className:`form-hint text-badge font-normal text-text-tertiary`,children:t}):null]}):null,(0,s.jsx)(`textarea`,{ref:l,id:i,className:r(`form-textarea`,c,a),...o}),n?(0,s.jsx)(`p`,{className:`form-error mt-2 text-badge text-red`,role:`alert`,children:n}):null]}));d.displayName=`Textarea`;export{l as n,d as r,u as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-BO9dKaFr.js";var n=e();function r({eyebrow:e,title:r,description:i,action:a,icon:o,level:s=2}){let c=!!(e||r||i),l=s===1?`h1`:s===3?`h3`:`h2`;return(0,n.jsxs)(`div`,{className:t(`section-header flex items-center justify-between gap-6 max-small:flex-col max-small:items-start max-small:gap-4`,c?void 0:`justify-end`),children:[c?(0,n.jsxs)(`div`,{className:`section-header-text min-w-0`,children:[e?(0,n.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-label text-text-tertiary mb-1`,children:e}):null,r?(0,n.jsx)(l,{className:`font-head text-title font-bold tracking-[-0.02em] text-text-primary`,children:r}):null,i?(0,n.jsx)(`p`,{className:`mt-1 text-caption text-text-secondary`,children:i}):null]}):null,o?(0,n.jsx)(`div`,{className:`card-header-icon grid size-14 shrink-0 place-items-center rounded-pill bg-accent-soft text-accent [&_svg]:size-7.5`,children:o}):null,a?(0,n.jsx)(`div`,{className:`section-header-action max-small:w-full max-small:[&_button]:w-full`,children:a}):null]})}function i(e){return e.length<=7?`default`:e.length<=11?`medium`:`long`}function a({label:e,value:r,detail:a,icon:o,tone:s,status:c,valueColor:l,action:u,size:d=`default`,fit:f=!1}){let p={teal:`text-teal`,purple:`text-accent`,green:`text-green`,orange:`text-orange`,red:`text-red`,accent:`text-accent`}[s||(c===`cooldown`?`orange`:c===`disabled`?`red`:`accent`)]??`text-accent`;return(0,n.jsxs)(`div`,{className:t(`stat-card min-w-0 border border-inner-border rounded-card bg-surface-2`,d===`roomy`?`p-9`:`p-6`),children:[(0,n.jsxs)(`div`,{className:t(`flex items-center justify-between gap-4 font-bold uppercase tracking-label`,d===`roomy`?`text-caption`:`text-micro`,p),children:[(0,n.jsxs)(`span`,{className:`inline-flex items-center gap-4 min-w-0`,children:[o,(0,n.jsx)(`span`,{children:e})]}),u?(0,n.jsx)(`span`,{className:`shrink-0`,children:u}):null]}),(0,n.jsx)(`p`,{className:t(`mb-0`,f?t(`stat-card-value`,d===`roomy`?`mt-4`:`mt-1`):t(`font-mono tabular-nums font-bold leading-[1.15]`,d===`roomy`?`text-hero mt-4`:`text-display mt-1`)),"data-fit":f?i(r):void 0,style:l?{color:l}:void 0,children:r}),(0,n.jsx)(`span`,{className:t(`stat-card-detail line-clamp-2 wrap-anywhere text-text-secondary`,d===`roomy`?`mt-2 text-body`:`text-badge`),children:a})]})}function o({headers:e,children:r,maxHeight:i,onScroll:a,sortKey:o,sortDirection:s,onSort:c,scrollRegion:l=!1,dense:u=!1}){return(0,n.jsx)(`div`,{className:t(`data-table-container`,l&&`scroll-region`),style:i?{maxHeight:i,overflowY:`auto`}:void 0,onScroll:a,children:(0,n.jsxs)(`table`,{className:t(`data-table text-caption`,u&&`text-badge [&_th]:px-4 [&_th]:py-2.5 [&_td]:px-4 [&_td]:py-2.5 [&_th]:text-text-secondary [&_th]:font-semibold [&_th]:normal-case [&_th]:tracking-normal [&_td]:tabular-nums`),children:[(0,n.jsx)(`thead`,{children:(0,n.jsx)(`tr`,{children:e.map(e=>{let r=typeof e==`string`?e:e.key,i=typeof e==`string`?e:e.label,a=typeof e!=`string`&&e.sortable===!0&&c!==void 0,l=o===r;return(0,n.jsx)(`th`,{scope:`col`,"aria-sort":l?s===`asc`?`ascending`:`descending`:void 0,children:a?(0,n.jsxs)(`button`,{type:`button`,onClick:()=>c(r),title:`Sort by ${i}`,className:`inline-flex items-center gap-2 cursor-pointer`,children:[(0,n.jsx)(`span`,{children:i}),(0,n.jsx)(`span`,{"aria-hidden":`true`,className:t(`text-micro`,l?`opacity-100`:`opacity-[0.35]`),children:l?s===`asc`?`▲`:`▼`:`△`})]}):i},r)})})}),(0,n.jsx)(`tbody`,{children:r})]})})}export{r as n,a as r,o as t};
1
+ import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-BNDZnsUE.js";var n=e();function r({eyebrow:e,title:r,description:i,action:a,icon:o,level:s=2}){let c=!!(e||r||i),l=s===1?`h1`:s===3?`h3`:`h2`;return(0,n.jsxs)(`div`,{className:t(`section-header flex items-center justify-between gap-6 max-small:flex-col max-small:items-start max-small:gap-4`,c?void 0:`justify-end`),children:[c?(0,n.jsxs)(`div`,{className:`section-header-text min-w-0`,children:[e?(0,n.jsx)(`p`,{className:`text-badge font-bold uppercase tracking-label text-text-tertiary mb-1`,children:e}):null,r?(0,n.jsx)(l,{className:`font-head text-title font-bold tracking-[-0.02em] text-text-primary`,children:r}):null,i?(0,n.jsx)(`p`,{className:`mt-1 text-caption text-text-secondary`,children:i}):null]}):null,o?(0,n.jsx)(`div`,{className:`card-header-icon grid size-14 shrink-0 place-items-center rounded-pill bg-accent-soft text-accent [&_svg]:size-7.5`,children:o}):null,a?(0,n.jsx)(`div`,{className:`section-header-action max-small:w-full max-small:[&_button]:w-full`,children:a}):null]})}function i(e){return e.length<=7?`default`:e.length<=11?`medium`:`long`}function a({label:e,value:r,detail:a,icon:o,tone:s,status:c,valueColor:l,action:u,size:d=`default`,fit:f=!1}){let p={teal:`text-teal`,purple:`text-accent`,green:`text-green`,orange:`text-orange`,red:`text-red`,accent:`text-accent`}[s||(c===`cooldown`?`orange`:c===`disabled`?`red`:`accent`)]??`text-accent`;return(0,n.jsxs)(`div`,{className:t(`stat-card min-w-0 border border-inner-border rounded-card bg-surface-2`,d===`roomy`?`p-9`:`p-6`),children:[(0,n.jsxs)(`div`,{className:t(`flex items-center justify-between gap-4 font-bold uppercase tracking-label`,d===`roomy`?`text-caption`:`text-micro`,p),children:[(0,n.jsxs)(`span`,{className:`inline-flex items-center gap-4 min-w-0`,children:[o,(0,n.jsx)(`span`,{children:e})]}),u?(0,n.jsx)(`span`,{className:`shrink-0`,children:u}):null]}),(0,n.jsx)(`p`,{className:t(`mb-0`,f?t(`stat-card-value`,d===`roomy`?`mt-4`:`mt-1`):t(`font-mono tabular-nums font-bold leading-[1.15]`,d===`roomy`?`text-hero mt-4`:`text-display mt-1`)),"data-fit":f?i(r):void 0,style:l?{color:l}:void 0,children:r}),(0,n.jsx)(`span`,{className:t(`stat-card-detail line-clamp-2 wrap-anywhere text-text-secondary`,d===`roomy`?`mt-2 text-body`:`text-badge`),children:a})]})}function o({headers:e,children:r,maxHeight:i,onScroll:a,sortKey:o,sortDirection:s,onSort:c,scrollRegion:l=!1,dense:u=!1}){return(0,n.jsx)(`div`,{className:t(`data-table-container`,l&&`scroll-region`),style:i?{maxHeight:i,overflowY:`auto`}:void 0,onScroll:a,children:(0,n.jsxs)(`table`,{className:t(`data-table text-caption`,u&&`text-badge [&_th]:px-4 [&_th]:py-2.5 [&_td]:px-4 [&_td]:py-2.5 [&_th]:text-text-secondary [&_th]:font-semibold [&_th]:normal-case [&_th]:tracking-normal [&_td]:tabular-nums`),children:[(0,n.jsx)(`thead`,{children:(0,n.jsx)(`tr`,{children:e.map(e=>{let r=typeof e==`string`?e:e.key,i=typeof e==`string`?e:e.label,a=typeof e!=`string`&&e.sortable===!0&&c!==void 0,l=o===r;return(0,n.jsx)(`th`,{scope:`col`,"aria-sort":l?s===`asc`?`ascending`:`descending`:void 0,children:a?(0,n.jsxs)(`button`,{type:`button`,onClick:()=>c(r),title:`Sort by ${i}`,className:`inline-flex items-center gap-2 cursor-pointer`,children:[(0,n.jsx)(`span`,{children:i}),(0,n.jsx)(`span`,{"aria-hidden":`true`,className:t(`text-micro`,l?`opacity-100`:`opacity-[0.35]`),children:l?s===`asc`?`▲`:`▼`:`△`})]}):i},r)})})}),(0,n.jsx)(`tbody`,{children:r})]})})}export{r as n,a as r,o as t};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-BO9dKaFr.js";var n=e();function r({children:e,leading:r,actions:i,density:a=`default`,className:o=``,...s}){return(0,n.jsxs)(`div`,{className:t(`list-row flex items-center gap-6 rounded-control border border-inner-border bg-surface-2 min-w-0 px-7 py-5`,a===`compact`&&`list-row-compact px-5 py-3 rounded-inset gap-4`,o),...s,children:[r?(0,n.jsx)(`div`,{className:`list-row-leading shrink-0`,children:r}):null,(0,n.jsx)(`div`,{className:`list-row-body flex-1 min-w-0 flex flex-col gap-2`,children:e}),i?(0,n.jsx)(`div`,{className:`list-row-actions flex items-center gap-2 shrink-0 flex-wrap`,children:i}):null]})}export{r as t};
1
+ import{t as e}from"./jsx-runtime-CXUMngI_.js";import{m as t}from"./numbers-BNDZnsUE.js";var n=e();function r({children:e,leading:r,actions:i,density:a=`default`,className:o=``,...s}){return(0,n.jsxs)(`div`,{className:t(`list-row flex items-center gap-6 rounded-control border border-inner-border bg-surface-2 min-w-0 px-7 py-5`,a===`compact`&&`list-row-compact px-5 py-3 rounded-inset gap-4`,o),...s,children:[r?(0,n.jsx)(`div`,{className:`list-row-leading shrink-0`,children:r}):null,(0,n.jsx)(`div`,{className:`list-row-body flex-1 min-w-0 flex flex-col gap-2`,children:e}),i?(0,n.jsx)(`div`,{className:`list-row-actions flex items-center gap-2 shrink-0 flex-wrap`,children:i}):null]})}export{r as t};
@@ -1 +1 @@
1
- import{o as e,r as t}from"./jsx-runtime-CXUMngI_.js";import{w as n}from"./assert-67xXH5rf.js";import{o as r,t as i,u as a}from"./query-keys-CfL_Zdoh.js";import{t as o}from"./stream-retry-5QnVuSSo.js";var s=e(t(),1);function c(e){if(!a(e)||typeof e.inFlight!=`number`||!Number.isFinite(e.inFlight))return null;let t=Math.max(0,Math.floor(e.inFlight));return{count:t,uniqueIps:typeof e.uniqueIps==`number`&&Number.isFinite(e.uniqueIps)?Math.max(0,Math.min(t,Math.floor(e.uniqueIps))):t}}function l(){let[e,t]=(0,s.useState)(null),[n,i]=(0,s.useState)(null),[a,l]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{let e=!1,n,a,s=0,u=async()=>{let d=++s;try{let f=await r(`/live/in-flight`);if(e||d!==s)return;let p=c(f);p!==null&&(t(p.count),i(p.uniqueIps));let m=new EventSource(`/console/api/live/in-flight/stream`);n=m,m.addEventListener(`count`,n=>{if(!(e||d!==s))try{let e=c(JSON.parse(n.data));e!==null&&(t(e.count),i(e.uniqueIps),l(!0))}catch{}}),m.onerror=()=>{e||d!==s||(m.close(),n===m&&(n=void 0),l(!1),a=setTimeout(()=>{e||u()},o))}}catch{!e&&d===s&&(l(!1),a=setTimeout(()=>{e||u()},o))}};return u(),()=>{e=!0,s+=1,a!==void 0&&clearTimeout(a),n?.close()}},[]),{count:e,uniqueIps:n,live:a}}function u(e){if(!a(e)||!Array.isArray(e.pools))return null;let t=[];for(let n of e.pools){if(!a(n)||typeof n.poolId!=`string`)continue;let e=typeof n.currentInflight==`number`&&Number.isFinite(n.currentInflight)?Math.max(0,Math.floor(n.currentInflight)):0,r=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;t.push({poolId:n.poolId,currentInflight:e,bytesSent:r(n.bytesSent),bytesReceived:r(n.bytesReceived)})}return t}function d(e){for(;e.size>500;){let t=e.keys().next().value;if(t===void 0)break;e.delete(t)}}function f(e,t){let n=new Set,r=[];for(let i of t){n.add(i.poolId);let t=e.get(i.poolId),a=t?{poolId:i.poolId,currentInflight:i.currentInflight,bytesSent:Math.max(t.bytesSent,i.bytesSent),bytesReceived:Math.max(t.bytesReceived,i.bytesReceived)}:i;e.set(i.poolId,a),r.push(a)}d(e);for(let[t,i]of e)n.has(t)||r.push(i);return r}function p(){let e=n(),[t,a]=(0,s.useState)(null),[c,l]=(0,s.useState)(!1),d=(0,s.useState)(()=>new Map)[0];return(0,s.useEffect)(()=>{let t=!1,n,s,c=()=>{n=new EventSource(`/console/api/live/pools/stream`),n.addEventListener(`pools`,e=>{if(!t)try{let t=u(JSON.parse(e.data));t!==null&&(a(f(d,t)),l(!0))}catch{}}),n.addEventListener(`health`,()=>{t||e.invalidateQueries({queryKey:i.network.pools})}),n.onerror=()=>{n?.close(),!t&&(l(!1),s=setTimeout(()=>{t||p()},o))}},p=async()=>{try{let e=await r(`/live/pools`);if(t)return;let n=u(e);n!==null&&a(f(d,n)),c()}catch{}};return p(),()=>{t=!0,s!==void 0&&clearTimeout(s),n?.close()}},[e]),{pools:t,live:c}}function m(){let e=n();(0,s.useEffect)(()=>{let t=!1,n,i,a=0,s=async()=>{let c=++a;try{if(await r(`/live/in-flight`),t||c!==a)return;let l=new EventSource(`/console/api/live/requests/stream`);n=l,l.addEventListener(`request_completed`,()=>{t||c!==a||e.invalidateQueries({queryKey:[`console`,`usage`,`requests`],exact:!1})}),l.onerror=()=>{t||c!==a||(l.close(),n===l&&(n=void 0),i=setTimeout(()=>{t||s()},o))}}catch{t||(i=setTimeout(()=>{t||s()},o))}};return s(),()=>{t=!0,i!==void 0&&clearTimeout(i),n?.close()}},[e])}export{p as n,m as r,l as t};
1
+ import{o as e,r as t}from"./jsx-runtime-CXUMngI_.js";import{w as n}from"./assert-C0YYuZJ4.js";import{o as r,t as i,u as a}from"./query-keys-CLaNz8Xz.js";import{t as o}from"./stream-retry-5QnVuSSo.js";var s=e(t(),1);function c(e){if(!a(e)||typeof e.inFlight!=`number`||!Number.isFinite(e.inFlight))return null;let t=Math.max(0,Math.floor(e.inFlight));return{count:t,uniqueIps:typeof e.uniqueIps==`number`&&Number.isFinite(e.uniqueIps)?Math.max(0,Math.min(t,Math.floor(e.uniqueIps))):t}}function l(){let[e,t]=(0,s.useState)(null),[n,i]=(0,s.useState)(null),[a,l]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{let e=!1,n,a,s=0,u=async()=>{let d=++s;try{let f=await r(`/live/in-flight`);if(e||d!==s)return;let p=c(f);p!==null&&(t(p.count),i(p.uniqueIps));let m=new EventSource(`/console/api/live/in-flight/stream`);n=m,m.addEventListener(`count`,n=>{if(!(e||d!==s))try{let e=c(JSON.parse(n.data));e!==null&&(t(e.count),i(e.uniqueIps),l(!0))}catch{}}),m.onerror=()=>{e||d!==s||(m.close(),n===m&&(n=void 0),l(!1),a=setTimeout(()=>{e||u()},o))}}catch{!e&&d===s&&(l(!1),a=setTimeout(()=>{e||u()},o))}};return u(),()=>{e=!0,s+=1,a!==void 0&&clearTimeout(a),n?.close()}},[]),{count:e,uniqueIps:n,live:a}}function u(e){if(!a(e)||!Array.isArray(e.pools))return null;let t=[];for(let n of e.pools){if(!a(n)||typeof n.poolId!=`string`)continue;let e=typeof n.currentInflight==`number`&&Number.isFinite(n.currentInflight)?Math.max(0,Math.floor(n.currentInflight)):0,r=e=>typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0;t.push({poolId:n.poolId,currentInflight:e,bytesSent:r(n.bytesSent),bytesReceived:r(n.bytesReceived)})}return t}function d(e){for(;e.size>500;){let t=e.keys().next().value;if(t===void 0)break;e.delete(t)}}function f(e,t){let n=new Set,r=[];for(let i of t){n.add(i.poolId);let t=e.get(i.poolId),a=t?{poolId:i.poolId,currentInflight:i.currentInflight,bytesSent:Math.max(t.bytesSent,i.bytesSent),bytesReceived:Math.max(t.bytesReceived,i.bytesReceived)}:i;e.set(i.poolId,a),r.push(a)}d(e);for(let[t,i]of e)n.has(t)||r.push(i);return r}function p(){let e=n(),[t,a]=(0,s.useState)(null),[c,l]=(0,s.useState)(!1),d=(0,s.useState)(()=>new Map)[0];return(0,s.useEffect)(()=>{let t=!1,n,s,c=()=>{n=new EventSource(`/console/api/live/pools/stream`),n.addEventListener(`pools`,e=>{if(!t)try{let t=u(JSON.parse(e.data));t!==null&&(a(f(d,t)),l(!0))}catch{}}),n.addEventListener(`health`,()=>{t||e.invalidateQueries({queryKey:i.network.pools})}),n.onerror=()=>{n?.close(),!t&&(l(!1),s=setTimeout(()=>{t||p()},o))}},p=async()=>{try{let e=await r(`/live/pools`);if(t)return;let n=u(e);n!==null&&a(f(d,n)),c()}catch{}};return p(),()=>{t=!0,s!==void 0&&clearTimeout(s),n?.close()}},[e]),{pools:t,live:c}}function m(){let e=n();(0,s.useEffect)(()=>{let t=!1,n,i,a=0,s=async()=>{let c=++a;try{if(await r(`/live/in-flight`),t||c!==a)return;let l=new EventSource(`/console/api/live/requests/stream`);n=l,l.addEventListener(`request_completed`,()=>{t||c!==a||e.invalidateQueries({queryKey:[`console`,`usage`,`requests`],exact:!1})}),l.onerror=()=>{t||c!==a||(l.close(),n===l&&(n=void 0),i=setTimeout(()=>{t||s()},o))}}catch{t||(i=setTimeout(()=>{t||s()},o))}};return s(),()=>{t=!0,i!==void 0&&clearTimeout(i),n?.close()}},[e])}export{p as n,m as r,l as t};
@@ -1 +1 @@
1
- import{h as e,m as t,v as n}from"./query-keys-CfL_Zdoh.js";var r=class extends t{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||i(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??(this.state.status===`pending`?this.execute(this.state.variables):Promise.resolve())}async execute(t){let n=()=>{this.#i({type:`continue`})},r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey},i=this.#r=e({fn:()=>this.options.mutationFn?this.options.mutationFn(t,r):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)}),a=this.state.status===`pending`,o=!i.canStart();try{if(a)n();else{this.#i({type:`pending`,variables:t,isPaused:o}),this.#n.config.onMutate&&await this.#n.config.onMutate(t,this,r);let e=await this.options.onMutate?.(t,r);e!==this.state.context&&this.#i({type:`pending`,context:e,variables:t,isPaused:o})}let e=await i.start();return await this.#n.config.onSuccess?.(e,t,this.state.context,this,r),await this.options.onSuccess?.(e,t,this.state.context,r),await this.#n.config.onSettled?.(e,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(e,null,t,this.state.context,r),this.#i({type:`success`,data:e}),e}catch(e){try{await this.#n.config.onError?.(e,t,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(e,t,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,e,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,e,t,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:e}),e}finally{this.#r===i&&(this.#r=void 0),this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),n.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function i(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}export{i as n,r as t};
1
+ import{h as e,m as t,v as n}from"./query-keys-CLaNz8Xz.js";var r=class extends t{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||i(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??(this.state.status===`pending`?this.execute(this.state.variables):Promise.resolve())}async execute(t){let n=()=>{this.#i({type:`continue`})},r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey},i=this.#r=e({fn:()=>this.options.mutationFn?this.options.mutationFn(t,r):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:n,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)}),a=this.state.status===`pending`,o=!i.canStart();try{if(a)n();else{this.#i({type:`pending`,variables:t,isPaused:o}),this.#n.config.onMutate&&await this.#n.config.onMutate(t,this,r);let e=await this.options.onMutate?.(t,r);e!==this.state.context&&this.#i({type:`pending`,context:e,variables:t,isPaused:o})}let e=await i.start();return await this.#n.config.onSuccess?.(e,t,this.state.context,this,r),await this.options.onSuccess?.(e,t,this.state.context,r),await this.#n.config.onSettled?.(e,null,this.state.variables,this.state.context,this,r),await this.options.onSettled?.(e,null,t,this.state.context,r),this.#i({type:`success`,data:e}),e}catch(e){try{await this.#n.config.onError?.(e,t,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onError?.(e,t,this.state.context,r)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,e,this.state.variables,this.state.context,this,r)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,e,t,this.state.context,r)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:e}),e}finally{this.#r===i&&(this.#r=void 0),this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),n.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function i(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}export{i as n,r as t};