@srouterhq/server 0.0.0-stage → 0.9.0

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 (1027) hide show
  1. package/LICENSE +21 -0
  2. package/client/dist/assets/am-TQ7Jmdqe.js +1 -0
  3. package/client/dist/assets/ar-Bf5a7yfC.js +1 -0
  4. package/client/dist/assets/az-CrosE1xH.js +1 -0
  5. package/client/dist/assets/bg-BvWnmcUz.js +1 -0
  6. package/client/dist/assets/bn-ams5TsJp.js +1 -0
  7. package/client/dist/assets/cs-Dh67CaJ_.js +1 -0
  8. package/client/dist/assets/da-9WlT8Iq7.js +1 -0
  9. package/client/dist/assets/de-lWhJJzz7.js +1 -0
  10. package/client/dist/assets/el-Cu7_GhNq.js +1 -0
  11. package/client/dist/assets/es-BZuzsBcP.js +1 -0
  12. package/client/dist/assets/fa-Dwdn-jKS.js +1 -0
  13. package/client/dist/assets/fi-BFrFyOTy.js +1 -0
  14. package/client/dist/assets/fr-XhbtmPpj.js +1 -0
  15. package/client/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  16. package/client/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  17. package/client/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  18. package/client/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  19. package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
  20. package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
  21. package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
  22. package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
  23. package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
  24. package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
  25. package/client/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  26. package/client/dist/assets/gu-D0uhLUB8.js +1 -0
  27. package/client/dist/assets/ha-CVlm9pqp.js +1 -0
  28. package/client/dist/assets/he-CMIFeoWr.js +1 -0
  29. package/client/dist/assets/hi-ENTwhBpn.js +1 -0
  30. package/client/dist/assets/hr-fc03vMy_.js +1 -0
  31. package/client/dist/assets/hu-YBo2BIYt.js +1 -0
  32. package/client/dist/assets/id-BEWXYX69.js +1 -0
  33. package/client/dist/assets/ig-BKLZFKka.js +1 -0
  34. package/client/dist/assets/index-D9I4KtvR.js +145 -0
  35. package/client/dist/assets/index-txhEmCdb.css +2 -0
  36. package/client/dist/assets/it-Bzmei1Y2.js +1 -0
  37. package/client/dist/assets/ja-BfcpuqEl.js +1 -0
  38. package/client/dist/assets/ka-CnWjRgLo.js +1 -0
  39. package/client/dist/assets/km-BAjPR3Qj.js +1 -0
  40. package/client/dist/assets/kn-B15WKU5m.js +1 -0
  41. package/client/dist/assets/ko-C61fAB-w.js +1 -0
  42. package/client/dist/assets/lt-CYTr4_YW.js +1 -0
  43. package/client/dist/assets/ml-CtqxgyH3.js +1 -0
  44. package/client/dist/assets/mr-X5TMY7aR.js +1 -0
  45. package/client/dist/assets/ms-DSg8RqPS.js +1 -0
  46. package/client/dist/assets/my-D7RqR8uE.js +1 -0
  47. package/client/dist/assets/ne-DaflxkDj.js +1 -0
  48. package/client/dist/assets/nl-BOqqtsC8.js +1 -0
  49. package/client/dist/assets/no-BSHp_StB.js +1 -0
  50. package/client/dist/assets/or-BkLR9Vub.js +1 -0
  51. package/client/dist/assets/pa-CarJ2XgI.js +1 -0
  52. package/client/dist/assets/pl-C2n0V-0k.js +1 -0
  53. package/client/dist/assets/pt-BR-CqJdNhg2.js +1 -0
  54. package/client/dist/assets/pt-PT-C_HpMyKz.js +1 -0
  55. package/client/dist/assets/ro-DVRZqSAS.js +1 -0
  56. package/client/dist/assets/ru-DwAJG7VC.js +1 -0
  57. package/client/dist/assets/si-BxUezXm0.js +1 -0
  58. package/client/dist/assets/sk-eI1VcIfY.js +1 -0
  59. package/client/dist/assets/sr-CJF3auCr.js +1 -0
  60. package/client/dist/assets/srouter-logo-C6ZfjGIi.svg +14 -0
  61. package/client/dist/assets/sv-nqvwHAq_.js +1 -0
  62. package/client/dist/assets/sw-DWynE2pW.js +1 -0
  63. package/client/dist/assets/ta-BVM12knC.js +1 -0
  64. package/client/dist/assets/te-oyzEkF7_.js +1 -0
  65. package/client/dist/assets/th-COVeE0ZQ.js +1 -0
  66. package/client/dist/assets/tl-DsJANnQz.js +1 -0
  67. package/client/dist/assets/tr-B-Fl-urO.js +1 -0
  68. package/client/dist/assets/uk-C5qketAO.js +1 -0
  69. package/client/dist/assets/ur-QU9KugfV.js +1 -0
  70. package/client/dist/assets/uz-DL9cG_mY.js +1 -0
  71. package/client/dist/assets/vi-CQiVy3Pu.js +1 -0
  72. package/client/dist/assets/yo-DqazMdrZ.js +1 -0
  73. package/client/dist/assets/zh-CN-DnYL_Kio.js +1 -0
  74. package/client/dist/assets/zh-TW-5bdbosKj.js +1 -0
  75. package/client/dist/favicon.svg +14 -0
  76. package/client/dist/icons.svg +24 -0
  77. package/client/dist/index.html +37 -0
  78. package/dist/app.d.ts +4 -0
  79. package/dist/app.d.ts.map +1 -0
  80. package/dist/app.js +372 -0
  81. package/dist/app.js.map +1 -0
  82. package/dist/db/index.d.ts +49 -0
  83. package/dist/db/index.d.ts.map +1 -0
  84. package/dist/db/index.js +203 -0
  85. package/dist/db/index.js.map +1 -0
  86. package/dist/db/migrate/TEMPLATE.d.ts +4 -0
  87. package/dist/db/migrate/TEMPLATE.d.ts.map +1 -0
  88. package/dist/db/migrate/TEMPLATE.js +18 -0
  89. package/dist/db/migrate/TEMPLATE.js.map +1 -0
  90. package/dist/db/migrate/cli.d.ts +2 -0
  91. package/dist/db/migrate/cli.d.ts.map +1 -0
  92. package/dist/db/migrate/cli.js +177 -0
  93. package/dist/db/migrate/cli.js.map +1 -0
  94. package/dist/db/migrate/defaults.d.ts +52 -0
  95. package/dist/db/migrate/defaults.d.ts.map +1 -0
  96. package/dist/db/migrate/defaults.js +126 -0
  97. package/dist/db/migrate/defaults.js.map +1 -0
  98. package/dist/db/migrate/runner.d.ts +16 -0
  99. package/dist/db/migrate/runner.d.ts.map +1 -0
  100. package/dist/db/migrate/runner.js +178 -0
  101. package/dist/db/migrate/runner.js.map +1 -0
  102. package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts +4 -0
  103. package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts.map +1 -0
  104. package/dist/db/migrations/20260101_000000_legacy_baseline.js +2240 -0
  105. package/dist/db/migrations/20260101_000000_legacy_baseline.js.map +1 -0
  106. package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts +4 -0
  107. package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts.map +1 -0
  108. package/dist/db/migrations/20260627_000001_custom_provider_modalities.js +27 -0
  109. package/dist/db/migrations/20260627_000001_custom_provider_modalities.js.map +1 -0
  110. package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts +4 -0
  111. package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts.map +1 -0
  112. package/dist/db/migrations/20260627_000002_catalog_model_state.js +30 -0
  113. package/dist/db/migrations/20260627_000002_catalog_model_state.js.map +1 -0
  114. package/dist/db/migrations/20260628_120000_request_aggregates.d.ts +6 -0
  115. package/dist/db/migrations/20260628_120000_request_aggregates.d.ts.map +1 -0
  116. package/dist/db/migrations/20260628_120000_request_aggregates.js +104 -0
  117. package/dist/db/migrations/20260628_120000_request_aggregates.js.map +1 -0
  118. package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts +9 -0
  119. package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts.map +1 -0
  120. package/dist/db/migrations/20260630_000001_github_gpt41_context.js +22 -0
  121. package/dist/db/migrations/20260630_000001_github_gpt41_context.js.map +1 -0
  122. package/dist/db/migrations/20260706_000001_request_client_info.d.ts +4 -0
  123. package/dist/db/migrations/20260706_000001_request_client_info.d.ts.map +1 -0
  124. package/dist/db/migrations/20260706_000001_request_client_info.js +30 -0
  125. package/dist/db/migrations/20260706_000001_request_client_info.js.map +1 -0
  126. package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts +17 -0
  127. package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts.map +1 -0
  128. package/dist/db/migrations/20260706_000002_custom_model_tool_support.js +20 -0
  129. package/dist/db/migrations/20260706_000002_custom_model_tool_support.js.map +1 -0
  130. package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts +12 -0
  131. package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts.map +1 -0
  132. package/dist/db/migrations/20260714_000001_profile_chain_backfill.js +45 -0
  133. package/dist/db/migrations/20260714_000001_profile_chain_backfill.js.map +1 -0
  134. package/dist/db/migrations/20260720_000001_key_health_error.d.ts +5 -0
  135. package/dist/db/migrations/20260720_000001_key_health_error.d.ts.map +1 -0
  136. package/dist/db/migrations/20260720_000001_key_health_error.js +16 -0
  137. package/dist/db/migrations/20260720_000001_key_health_error.js.map +1 -0
  138. package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts +4 -0
  139. package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts.map +1 -0
  140. package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js +38 -0
  141. package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js.map +1 -0
  142. package/dist/db/migrations/20260726_000002_request_attempts.d.ts +4 -0
  143. package/dist/db/migrations/20260726_000002_request_attempts.d.ts.map +1 -0
  144. package/dist/db/migrations/20260726_000002_request_attempts.js +43 -0
  145. package/dist/db/migrations/20260726_000002_request_attempts.js.map +1 -0
  146. package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts +4 -0
  147. package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts.map +1 -0
  148. package/dist/db/migrations/20260726_000003_model_source_provenance.js +80 -0
  149. package/dist/db/migrations/20260726_000003_model_source_provenance.js.map +1 -0
  150. package/dist/db/migrations/20260726_000004_media_model_meta.d.ts +4 -0
  151. package/dist/db/migrations/20260726_000004_media_model_meta.d.ts.map +1 -0
  152. package/dist/db/migrations/20260726_000004_media_model_meta.js +34 -0
  153. package/dist/db/migrations/20260726_000004_media_model_meta.js.map +1 -0
  154. package/dist/db/migrations/20260726_000005_request_served_model.d.ts +4 -0
  155. package/dist/db/migrations/20260726_000005_request_served_model.d.ts.map +1 -0
  156. package/dist/db/migrations/20260726_000005_request_served_model.js +31 -0
  157. package/dist/db/migrations/20260726_000005_request_served_model.js.map +1 -0
  158. package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts +4 -0
  159. package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts.map +1 -0
  160. package/dist/db/migrations/20260726_000006_attempt_error_summary.js +29 -0
  161. package/dist/db/migrations/20260726_000006_attempt_error_summary.js.map +1 -0
  162. package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts +4 -0
  163. package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts.map +1 -0
  164. package/dist/db/migrations/20260727_000001_agent_compatibility.js +41 -0
  165. package/dist/db/migrations/20260727_000001_agent_compatibility.js.map +1 -0
  166. package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts +12 -0
  167. package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts.map +1 -0
  168. package/dist/db/migrations/20260728_000001_tombstone_provenance.js +37 -0
  169. package/dist/db/migrations/20260728_000001_tombstone_provenance.js.map +1 -0
  170. package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts +4 -0
  171. package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts.map +1 -0
  172. package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js +145 -0
  173. package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js.map +1 -0
  174. package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts +6 -0
  175. package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts.map +1 -0
  176. package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js +52 -0
  177. package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js.map +1 -0
  178. package/dist/db/migrations/20260805_000001_key_model_scope.d.ts +6 -0
  179. package/dist/db/migrations/20260805_000001_key_model_scope.d.ts.map +1 -0
  180. package/dist/db/migrations/20260805_000001_key_model_scope.js +17 -0
  181. package/dist/db/migrations/20260805_000001_key_model_scope.js.map +1 -0
  182. package/dist/db/migrations/20260805_000002_client_profiles.d.ts +4 -0
  183. package/dist/db/migrations/20260805_000002_client_profiles.d.ts.map +1 -0
  184. package/dist/db/migrations/20260805_000002_client_profiles.js +33 -0
  185. package/dist/db/migrations/20260805_000002_client_profiles.js.map +1 -0
  186. package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts +4 -0
  187. package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts.map +1 -0
  188. package/dist/db/migrations/20260810_000001_api_key_proxy.js +33 -0
  189. package/dist/db/migrations/20260810_000001_api_key_proxy.js.map +1 -0
  190. package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts +4 -0
  191. package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts.map +1 -0
  192. package/dist/db/migrations/20260819_000001_custom_model_tombstones.js +19 -0
  193. package/dist/db/migrations/20260819_000001_custom_model_tombstones.js.map +1 -0
  194. package/dist/db/migrations/20260820_000001_playground_conversations.d.ts +4 -0
  195. package/dist/db/migrations/20260820_000001_playground_conversations.d.ts.map +1 -0
  196. package/dist/db/migrations/20260820_000001_playground_conversations.js +47 -0
  197. package/dist/db/migrations/20260820_000001_playground_conversations.js.map +1 -0
  198. package/dist/db/migrations/20260823_000001_server_logs.d.ts +4 -0
  199. package/dist/db/migrations/20260823_000001_server_logs.d.ts.map +1 -0
  200. package/dist/db/migrations/20260823_000001_server_logs.js +53 -0
  201. package/dist/db/migrations/20260823_000001_server_logs.js.map +1 -0
  202. package/dist/db/migrations/20260823_000002_backups_table.d.ts +8 -0
  203. package/dist/db/migrations/20260823_000002_backups_table.d.ts.map +1 -0
  204. package/dist/db/migrations/20260823_000002_backups_table.js +22 -0
  205. package/dist/db/migrations/20260823_000002_backups_table.js.map +1 -0
  206. package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts +19 -0
  207. package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts.map +1 -0
  208. package/dist/db/migrations/20260823_000003_attempt_key_label.js +28 -0
  209. package/dist/db/migrations/20260823_000003_attempt_key_label.js.map +1 -0
  210. package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts +14 -0
  211. package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts.map +1 -0
  212. package/dist/db/migrations/20260823_000004_profile_auto_include.js +25 -0
  213. package/dist/db/migrations/20260823_000004_profile_auto_include.js.map +1 -0
  214. package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts +4 -0
  215. package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts.map +1 -0
  216. package/dist/db/migrations/20260901_000001_idempotency_claims.js +46 -0
  217. package/dist/db/migrations/20260901_000001_idempotency_claims.js.map +1 -0
  218. package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts +4 -0
  219. package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts.map +1 -0
  220. package/dist/db/migrations/20260901_000002_quota_observation_lookup.js +37 -0
  221. package/dist/db/migrations/20260901_000002_quota_observation_lookup.js.map +1 -0
  222. package/dist/db/migrations/20260901_000003_request_caller.d.ts +4 -0
  223. package/dist/db/migrations/20260901_000003_request_caller.d.ts.map +1 -0
  224. package/dist/db/migrations/20260901_000003_request_caller.js +27 -0
  225. package/dist/db/migrations/20260901_000003_request_caller.js.map +1 -0
  226. package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts +4 -0
  227. package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts.map +1 -0
  228. package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js +35 -0
  229. package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js.map +1 -0
  230. package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts +4 -0
  231. package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts.map +1 -0
  232. package/dist/db/migrations/20260903_000001_mcp_enabled_default.js +37 -0
  233. package/dist/db/migrations/20260903_000001_mcp_enabled_default.js.map +1 -0
  234. package/dist/db/migrations/20260903_000002_response_cache.d.ts +4 -0
  235. package/dist/db/migrations/20260903_000002_response_cache.d.ts.map +1 -0
  236. package/dist/db/migrations/20260903_000002_response_cache.js +53 -0
  237. package/dist/db/migrations/20260903_000002_response_cache.js.map +1 -0
  238. package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts +13 -0
  239. package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts.map +1 -0
  240. package/dist/db/migrations/20260904_000001_key_monthly_budget.js +35 -0
  241. package/dist/db/migrations/20260904_000001_key_monthly_budget.js.map +1 -0
  242. package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts +4 -0
  243. package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts.map +1 -0
  244. package/dist/db/migrations/20260913_000001_request_model_attribution.js +68 -0
  245. package/dist/db/migrations/20260913_000001_request_model_attribution.js.map +1 -0
  246. package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts +5 -0
  247. package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts.map +1 -0
  248. package/dist/db/migrations/20260914_000001_key_monthly_usage.js +37 -0
  249. package/dist/db/migrations/20260914_000001_key_monthly_usage.js.map +1 -0
  250. package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts +4 -0
  251. package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts.map +1 -0
  252. package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js +28 -0
  253. package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js.map +1 -0
  254. package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts +4 -0
  255. package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts.map +1 -0
  256. package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js +25 -0
  257. package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js.map +1 -0
  258. package/dist/db/migrations/20261005_000001_key_budget_period.d.ts +10 -0
  259. package/dist/db/migrations/20261005_000001_key_budget_period.d.ts.map +1 -0
  260. package/dist/db/migrations/20261005_000001_key_budget_period.js +78 -0
  261. package/dist/db/migrations/20261005_000001_key_budget_period.js.map +1 -0
  262. package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts +21 -0
  263. package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts.map +1 -0
  264. package/dist/db/migrations/20261005_000002_key_budget_period_auto.js +41 -0
  265. package/dist/db/migrations/20261005_000002_key_budget_period_auto.js.map +1 -0
  266. package/dist/db/model-pricing.d.ts +39 -0
  267. package/dist/db/model-pricing.d.ts.map +1 -0
  268. package/dist/db/model-pricing.js +274 -0
  269. package/dist/db/model-pricing.js.map +1 -0
  270. package/dist/db/node-sqlite.d.ts +9 -0
  271. package/dist/db/node-sqlite.d.ts.map +1 -0
  272. package/dist/db/node-sqlite.js +87 -0
  273. package/dist/db/node-sqlite.js.map +1 -0
  274. package/dist/db/types.d.ts +22 -0
  275. package/dist/db/types.d.ts.map +1 -0
  276. package/dist/db/types.js +2 -0
  277. package/dist/db/types.js.map +1 -0
  278. package/dist/docs/docs-page.d.ts +2 -0
  279. package/dist/docs/docs-page.d.ts.map +1 -0
  280. package/dist/docs/docs-page.js +319 -0
  281. package/dist/docs/docs-page.js.map +1 -0
  282. package/dist/docs/openapi.d.ts +1896 -0
  283. package/dist/docs/openapi.d.ts.map +1 -0
  284. package/dist/docs/openapi.js +1096 -0
  285. package/dist/docs/openapi.js.map +1 -0
  286. package/dist/env.d.ts +2 -0
  287. package/dist/env.d.ts.map +1 -0
  288. package/dist/env.js +9 -0
  289. package/dist/env.js.map +1 -0
  290. package/dist/index.d.ts +2 -0
  291. package/dist/index.d.ts.map +1 -0
  292. package/dist/index.js +144 -0
  293. package/dist/index.js.map +1 -0
  294. package/dist/lib/anthropic-documents.d.ts +41 -0
  295. package/dist/lib/anthropic-documents.d.ts.map +1 -0
  296. package/dist/lib/anthropic-documents.js +132 -0
  297. package/dist/lib/anthropic-documents.js.map +1 -0
  298. package/dist/lib/app-version.d.ts +5 -0
  299. package/dist/lib/app-version.d.ts.map +1 -0
  300. package/dist/lib/app-version.js +61 -0
  301. package/dist/lib/app-version.js.map +1 -0
  302. package/dist/lib/attempt-trace.d.ts +23 -0
  303. package/dist/lib/attempt-trace.d.ts.map +1 -0
  304. package/dist/lib/attempt-trace.js +32 -0
  305. package/dist/lib/attempt-trace.js.map +1 -0
  306. package/dist/lib/budget.d.ts +6 -0
  307. package/dist/lib/budget.d.ts.map +1 -0
  308. package/dist/lib/budget.js +40 -0
  309. package/dist/lib/budget.js.map +1 -0
  310. package/dist/lib/client-classifier.d.ts +10 -0
  311. package/dist/lib/client-classifier.d.ts.map +1 -0
  312. package/dist/lib/client-classifier.js +126 -0
  313. package/dist/lib/client-classifier.js.map +1 -0
  314. package/dist/lib/client-context.d.ts +10 -0
  315. package/dist/lib/client-context.d.ts.map +1 -0
  316. package/dist/lib/client-context.js +39 -0
  317. package/dist/lib/client-context.js.map +1 -0
  318. package/dist/lib/config.d.ts +33 -0
  319. package/dist/lib/config.d.ts.map +1 -0
  320. package/dist/lib/config.js +94 -0
  321. package/dist/lib/config.js.map +1 -0
  322. package/dist/lib/content.d.ts +33 -0
  323. package/dist/lib/content.d.ts.map +1 -0
  324. package/dist/lib/content.js +201 -0
  325. package/dist/lib/content.js.map +1 -0
  326. package/dist/lib/credential.d.ts +11 -0
  327. package/dist/lib/credential.d.ts.map +1 -0
  328. package/dist/lib/credential.js +18 -0
  329. package/dist/lib/credential.js.map +1 -0
  330. package/dist/lib/crypto.d.ts +31 -0
  331. package/dist/lib/crypto.d.ts.map +1 -0
  332. package/dist/lib/crypto.js +206 -0
  333. package/dist/lib/crypto.js.map +1 -0
  334. package/dist/lib/custom-provider-cleanup.d.ts +13 -0
  335. package/dist/lib/custom-provider-cleanup.d.ts.map +1 -0
  336. package/dist/lib/custom-provider-cleanup.js +43 -0
  337. package/dist/lib/custom-provider-cleanup.js.map +1 -0
  338. package/dist/lib/db-backup.d.ts +31 -0
  339. package/dist/lib/db-backup.d.ts.map +1 -0
  340. package/dist/lib/db-backup.js +255 -0
  341. package/dist/lib/db-backup.js.map +1 -0
  342. package/dist/lib/endpoint-scope.d.ts +42 -0
  343. package/dist/lib/endpoint-scope.d.ts.map +1 -0
  344. package/dist/lib/endpoint-scope.js +95 -0
  345. package/dist/lib/endpoint-scope.js.map +1 -0
  346. package/dist/lib/env-drift.d.ts +17 -0
  347. package/dist/lib/env-drift.d.ts.map +1 -0
  348. package/dist/lib/env-drift.js +108 -0
  349. package/dist/lib/env-drift.js.map +1 -0
  350. package/dist/lib/error-classify.d.ts +40 -0
  351. package/dist/lib/error-classify.d.ts.map +1 -0
  352. package/dist/lib/error-classify.js +687 -0
  353. package/dist/lib/error-classify.js.map +1 -0
  354. package/dist/lib/error-redaction.d.ts +8 -0
  355. package/dist/lib/error-redaction.d.ts.map +1 -0
  356. package/dist/lib/error-redaction.js +45 -0
  357. package/dist/lib/error-redaction.js.map +1 -0
  358. package/dist/lib/fallback-loop.d.ts +306 -0
  359. package/dist/lib/fallback-loop.d.ts.map +1 -0
  360. package/dist/lib/fallback-loop.js +1336 -0
  361. package/dist/lib/fallback-loop.js.map +1 -0
  362. package/dist/lib/file-permissions.d.ts +98 -0
  363. package/dist/lib/file-permissions.d.ts.map +1 -0
  364. package/dist/lib/file-permissions.js +159 -0
  365. package/dist/lib/file-permissions.js.map +1 -0
  366. package/dist/lib/gemini-wire.d.ts +76 -0
  367. package/dist/lib/gemini-wire.d.ts.map +1 -0
  368. package/dist/lib/gemini-wire.js +392 -0
  369. package/dist/lib/gemini-wire.js.map +1 -0
  370. package/dist/lib/guardrails.d.ts +37 -0
  371. package/dist/lib/guardrails.d.ts.map +1 -0
  372. package/dist/lib/guardrails.js +106 -0
  373. package/dist/lib/guardrails.js.map +1 -0
  374. package/dist/lib/header-value.d.ts +8 -0
  375. package/dist/lib/header-value.d.ts.map +1 -0
  376. package/dist/lib/header-value.js +55 -0
  377. package/dist/lib/header-value.js.map +1 -0
  378. package/dist/lib/image-normalize.d.ts +21 -0
  379. package/dist/lib/image-normalize.d.ts.map +1 -0
  380. package/dist/lib/image-normalize.js +218 -0
  381. package/dist/lib/image-normalize.js.map +1 -0
  382. package/dist/lib/inbound-chat.d.ts +48 -0
  383. package/dist/lib/inbound-chat.d.ts.map +1 -0
  384. package/dist/lib/inbound-chat.js +406 -0
  385. package/dist/lib/inbound-chat.js.map +1 -0
  386. package/dist/lib/key-parser.d.ts +79 -0
  387. package/dist/lib/key-parser.d.ts.map +1 -0
  388. package/dist/lib/key-parser.js +701 -0
  389. package/dist/lib/key-parser.js.map +1 -0
  390. package/dist/lib/key-proxy.d.ts +49 -0
  391. package/dist/lib/key-proxy.d.ts.map +1 -0
  392. package/dist/lib/key-proxy.js +92 -0
  393. package/dist/lib/key-proxy.js.map +1 -0
  394. package/dist/lib/log-redaction.d.ts +28 -0
  395. package/dist/lib/log-redaction.d.ts.map +1 -0
  396. package/dist/lib/log-redaction.js +166 -0
  397. package/dist/lib/log-redaction.js.map +1 -0
  398. package/dist/lib/model-scope.d.ts +9 -0
  399. package/dist/lib/model-scope.d.ts.map +1 -0
  400. package/dist/lib/model-scope.js +29 -0
  401. package/dist/lib/model-scope.js.map +1 -0
  402. package/dist/lib/one-time-code.d.ts +15 -0
  403. package/dist/lib/one-time-code.d.ts.map +1 -0
  404. package/dist/lib/one-time-code.js +41 -0
  405. package/dist/lib/one-time-code.js.map +1 -0
  406. package/dist/lib/output-cap.d.ts +24 -0
  407. package/dist/lib/output-cap.d.ts.map +1 -0
  408. package/dist/lib/output-cap.js +80 -0
  409. package/dist/lib/output-cap.js.map +1 -0
  410. package/dist/lib/password.d.ts +3 -0
  411. package/dist/lib/password.d.ts.map +1 -0
  412. package/dist/lib/password.js +27 -0
  413. package/dist/lib/password.js.map +1 -0
  414. package/dist/lib/process-safety-net.d.ts +32 -0
  415. package/dist/lib/process-safety-net.d.ts.map +1 -0
  416. package/dist/lib/process-safety-net.js +123 -0
  417. package/dist/lib/process-safety-net.js.map +1 -0
  418. package/dist/lib/provider-identity.d.ts +37 -0
  419. package/dist/lib/provider-identity.d.ts.map +1 -0
  420. package/dist/lib/provider-identity.js +110 -0
  421. package/dist/lib/provider-identity.js.map +1 -0
  422. package/dist/lib/provider-size-parser.d.ts +6 -0
  423. package/dist/lib/provider-size-parser.d.ts.map +1 -0
  424. package/dist/lib/provider-size-parser.js +72 -0
  425. package/dist/lib/provider-size-parser.js.map +1 -0
  426. package/dist/lib/provider-timeout.d.ts +17 -0
  427. package/dist/lib/provider-timeout.d.ts.map +1 -0
  428. package/dist/lib/provider-timeout.js +70 -0
  429. package/dist/lib/provider-timeout.js.map +1 -0
  430. package/dist/lib/proxy.d.ts +180 -0
  431. package/dist/lib/proxy.d.ts.map +1 -0
  432. package/dist/lib/proxy.js +1002 -0
  433. package/dist/lib/proxy.js.map +1 -0
  434. package/dist/lib/request-log.d.ts +4 -0
  435. package/dist/lib/request-log.d.ts.map +1 -0
  436. package/dist/lib/request-log.js +161 -0
  437. package/dist/lib/request-log.js.map +1 -0
  438. package/dist/lib/reset-code.d.ts +5 -0
  439. package/dist/lib/reset-code.d.ts.map +1 -0
  440. package/dist/lib/reset-code.js +39 -0
  441. package/dist/lib/reset-code.js.map +1 -0
  442. package/dist/lib/retry-hint.d.ts +14 -0
  443. package/dist/lib/retry-hint.d.ts.map +1 -0
  444. package/dist/lib/retry-hint.js +36 -0
  445. package/dist/lib/retry-hint.js.map +1 -0
  446. package/dist/lib/route-live.d.ts +29 -0
  447. package/dist/lib/route-live.d.ts.map +1 -0
  448. package/dist/lib/route-live.js +97 -0
  449. package/dist/lib/route-live.js.map +1 -0
  450. package/dist/lib/sampling-params.d.ts +183 -0
  451. package/dist/lib/sampling-params.d.ts.map +1 -0
  452. package/dist/lib/sampling-params.js +386 -0
  453. package/dist/lib/sampling-params.js.map +1 -0
  454. package/dist/lib/scheduler.d.ts +13 -0
  455. package/dist/lib/scheduler.d.ts.map +1 -0
  456. package/dist/lib/scheduler.js +11 -0
  457. package/dist/lib/scheduler.js.map +1 -0
  458. package/dist/lib/served-model.d.ts +16 -0
  459. package/dist/lib/served-model.d.ts.map +1 -0
  460. package/dist/lib/served-model.js +0 -0
  461. package/dist/lib/served-model.js.map +1 -0
  462. package/dist/lib/server-logs.d.ts +132 -0
  463. package/dist/lib/server-logs.d.ts.map +1 -0
  464. package/dist/lib/server-logs.js +473 -0
  465. package/dist/lib/server-logs.js.map +1 -0
  466. package/dist/lib/setup-code.d.ts +5 -0
  467. package/dist/lib/setup-code.d.ts.map +1 -0
  468. package/dist/lib/setup-code.js +35 -0
  469. package/dist/lib/setup-code.js.map +1 -0
  470. package/dist/lib/structured-output.d.ts +9 -0
  471. package/dist/lib/structured-output.d.ts.map +1 -0
  472. package/dist/lib/structured-output.js +72 -0
  473. package/dist/lib/structured-output.js.map +1 -0
  474. package/dist/lib/system-prompt.d.ts +30 -0
  475. package/dist/lib/system-prompt.d.ts.map +1 -0
  476. package/dist/lib/system-prompt.js +66 -0
  477. package/dist/lib/system-prompt.js.map +1 -0
  478. package/dist/lib/task-type.d.ts +18 -0
  479. package/dist/lib/task-type.d.ts.map +1 -0
  480. package/dist/lib/task-type.js +92 -0
  481. package/dist/lib/task-type.js.map +1 -0
  482. package/dist/lib/think-tags.d.ts +37 -0
  483. package/dist/lib/think-tags.d.ts.map +1 -0
  484. package/dist/lib/think-tags.js +203 -0
  485. package/dist/lib/think-tags.js.map +1 -0
  486. package/dist/lib/tool-args.d.ts +36 -0
  487. package/dist/lib/tool-args.d.ts.map +1 -0
  488. package/dist/lib/tool-args.js +190 -0
  489. package/dist/lib/tool-args.js.map +1 -0
  490. package/dist/lib/tool-call-rescue.d.ts +62 -0
  491. package/dist/lib/tool-call-rescue.d.ts.map +1 -0
  492. package/dist/lib/tool-call-rescue.js +258 -0
  493. package/dist/lib/tool-call-rescue.js.map +1 -0
  494. package/dist/lib/tool-capability.d.ts +13 -0
  495. package/dist/lib/tool-capability.d.ts.map +1 -0
  496. package/dist/lib/tool-capability.js +70 -0
  497. package/dist/lib/tool-capability.js.map +1 -0
  498. package/dist/lib/tool-validate.d.ts +44 -0
  499. package/dist/lib/tool-validate.d.ts.map +1 -0
  500. package/dist/lib/tool-validate.js +165 -0
  501. package/dist/lib/tool-validate.js.map +1 -0
  502. package/dist/lib/ttfb-budget.d.ts +13 -0
  503. package/dist/lib/ttfb-budget.d.ts.map +1 -0
  504. package/dist/lib/ttfb-budget.js +153 -0
  505. package/dist/lib/ttfb-budget.js.map +1 -0
  506. package/dist/lib/url-guard.d.ts +47 -0
  507. package/dist/lib/url-guard.d.ts.map +1 -0
  508. package/dist/lib/url-guard.js +229 -0
  509. package/dist/lib/url-guard.js.map +1 -0
  510. package/dist/lib/wake-detect.d.ts +12 -0
  511. package/dist/lib/wake-detect.d.ts.map +1 -0
  512. package/dist/lib/wake-detect.js +99 -0
  513. package/dist/lib/wake-detect.js.map +1 -0
  514. package/dist/middleware/errorHandler.d.ts +3 -0
  515. package/dist/middleware/errorHandler.d.ts.map +1 -0
  516. package/dist/middleware/errorHandler.js +45 -0
  517. package/dist/middleware/errorHandler.js.map +1 -0
  518. package/dist/middleware/rateLimit.d.ts +4 -0
  519. package/dist/middleware/rateLimit.d.ts.map +1 -0
  520. package/dist/middleware/rateLimit.js +125 -0
  521. package/dist/middleware/rateLimit.js.map +1 -0
  522. package/dist/middleware/requireAuth.d.ts +3 -0
  523. package/dist/middleware/requireAuth.d.ts.map +1 -0
  524. package/dist/middleware/requireAuth.js +17 -0
  525. package/dist/middleware/requireAuth.js.map +1 -0
  526. package/dist/providers/aclide.d.ts +18 -0
  527. package/dist/providers/aclide.d.ts.map +1 -0
  528. package/dist/providers/aclide.js +174 -0
  529. package/dist/providers/aclide.js.map +1 -0
  530. package/dist/providers/aihorde.d.ts +42 -0
  531. package/dist/providers/aihorde.d.ts.map +1 -0
  532. package/dist/providers/aihorde.js +192 -0
  533. package/dist/providers/aihorde.js.map +1 -0
  534. package/dist/providers/airforce.d.ts +11 -0
  535. package/dist/providers/airforce.d.ts.map +1 -0
  536. package/dist/providers/airforce.js +32 -0
  537. package/dist/providers/airforce.js.map +1 -0
  538. package/dist/providers/base.d.ts +177 -0
  539. package/dist/providers/base.d.ts.map +1 -0
  540. package/dist/providers/base.js +354 -0
  541. package/dist/providers/base.js.map +1 -0
  542. package/dist/providers/blaze.d.ts +11 -0
  543. package/dist/providers/blaze.d.ts.map +1 -0
  544. package/dist/providers/blaze.js +33 -0
  545. package/dist/providers/blaze.js.map +1 -0
  546. package/dist/providers/blockrun.d.ts +14 -0
  547. package/dist/providers/blockrun.d.ts.map +1 -0
  548. package/dist/providers/blockrun.js +36 -0
  549. package/dist/providers/blockrun.js.map +1 -0
  550. package/dist/providers/clod.d.ts +11 -0
  551. package/dist/providers/clod.d.ts.map +1 -0
  552. package/dist/providers/clod.js +39 -0
  553. package/dist/providers/clod.js.map +1 -0
  554. package/dist/providers/cloudflare.d.ts +15 -0
  555. package/dist/providers/cloudflare.d.ts.map +1 -0
  556. package/dist/providers/cloudflare.js +175 -0
  557. package/dist/providers/cloudflare.js.map +1 -0
  558. package/dist/providers/cohere.d.ts +11 -0
  559. package/dist/providers/cohere.d.ts.map +1 -0
  560. package/dist/providers/cohere.js +117 -0
  561. package/dist/providers/cohere.js.map +1 -0
  562. package/dist/providers/dreamprompting.d.ts +11 -0
  563. package/dist/providers/dreamprompting.d.ts.map +1 -0
  564. package/dist/providers/dreamprompting.js +41 -0
  565. package/dist/providers/dreamprompting.js.map +1 -0
  566. package/dist/providers/electronhub.d.ts +10 -0
  567. package/dist/providers/electronhub.d.ts.map +1 -0
  568. package/dist/providers/electronhub.js +56 -0
  569. package/dist/providers/electronhub.js.map +1 -0
  570. package/dist/providers/experiential.d.ts +10 -0
  571. package/dist/providers/experiential.d.ts.map +1 -0
  572. package/dist/providers/experiential.js +33 -0
  573. package/dist/providers/experiential.js.map +1 -0
  574. package/dist/providers/gizmo.d.ts +15 -0
  575. package/dist/providers/gizmo.d.ts.map +1 -0
  576. package/dist/providers/gizmo.js +54 -0
  577. package/dist/providers/gizmo.js.map +1 -0
  578. package/dist/providers/google.d.ts +30 -0
  579. package/dist/providers/google.d.ts.map +1 -0
  580. package/dist/providers/google.js +766 -0
  581. package/dist/providers/google.js.map +1 -0
  582. package/dist/providers/index.d.ts +13 -0
  583. package/dist/providers/index.d.ts.map +1 -0
  584. package/dist/providers/index.js +561 -0
  585. package/dist/providers/index.js.map +1 -0
  586. package/dist/providers/llmtr.d.ts +15 -0
  587. package/dist/providers/llmtr.d.ts.map +1 -0
  588. package/dist/providers/llmtr.js +51 -0
  589. package/dist/providers/llmtr.js.map +1 -0
  590. package/dist/providers/logfare.d.ts +11 -0
  591. package/dist/providers/logfare.d.ts.map +1 -0
  592. package/dist/providers/logfare.js +33 -0
  593. package/dist/providers/logfare.js.map +1 -0
  594. package/dist/providers/lucidity.d.ts +11 -0
  595. package/dist/providers/lucidity.d.ts.map +1 -0
  596. package/dist/providers/lucidity.js +37 -0
  597. package/dist/providers/lucidity.js.map +1 -0
  598. package/dist/providers/modelscope.d.ts +50 -0
  599. package/dist/providers/modelscope.d.ts.map +1 -0
  600. package/dist/providers/modelscope.js +143 -0
  601. package/dist/providers/modelscope.js.map +1 -0
  602. package/dist/providers/moondream.d.ts +17 -0
  603. package/dist/providers/moondream.d.ts.map +1 -0
  604. package/dist/providers/moondream.js +140 -0
  605. package/dist/providers/moondream.js.map +1 -0
  606. package/dist/providers/openai-compat.d.ts +140 -0
  607. package/dist/providers/openai-compat.d.ts.map +1 -0
  608. package/dist/providers/openai-compat.js +537 -0
  609. package/dist/providers/openai-compat.js.map +1 -0
  610. package/dist/providers/opencode-free.d.ts +24 -0
  611. package/dist/providers/opencode-free.d.ts.map +1 -0
  612. package/dist/providers/opencode-free.js +262 -0
  613. package/dist/providers/opencode-free.js.map +1 -0
  614. package/dist/providers/pollinations.d.ts +32 -0
  615. package/dist/providers/pollinations.d.ts.map +1 -0
  616. package/dist/providers/pollinations.js +65 -0
  617. package/dist/providers/pollinations.js.map +1 -0
  618. package/dist/providers/router9.d.ts +16 -0
  619. package/dist/providers/router9.d.ts.map +1 -0
  620. package/dist/providers/router9.js +42 -0
  621. package/dist/providers/router9.js.map +1 -0
  622. package/dist/providers/sail.d.ts +44 -0
  623. package/dist/providers/sail.d.ts.map +1 -0
  624. package/dist/providers/sail.js +302 -0
  625. package/dist/providers/sail.js.map +1 -0
  626. package/dist/providers/septor.d.ts +10 -0
  627. package/dist/providers/septor.d.ts.map +1 -0
  628. package/dist/providers/septor.js +36 -0
  629. package/dist/providers/septor.js.map +1 -0
  630. package/dist/providers/speechify.d.ts +14 -0
  631. package/dist/providers/speechify.d.ts.map +1 -0
  632. package/dist/providers/speechify.js +28 -0
  633. package/dist/providers/speechify.js.map +1 -0
  634. package/dist/providers/speka.d.ts +12 -0
  635. package/dist/providers/speka.d.ts.map +1 -0
  636. package/dist/providers/speka.js +37 -0
  637. package/dist/providers/speka.js.map +1 -0
  638. package/dist/providers/waterfall.d.ts +11 -0
  639. package/dist/providers/waterfall.d.ts.map +1 -0
  640. package/dist/providers/waterfall.js +33 -0
  641. package/dist/providers/waterfall.js.map +1 -0
  642. package/dist/providers/xkiro.d.ts +71 -0
  643. package/dist/providers/xkiro.d.ts.map +1 -0
  644. package/dist/providers/xkiro.js +119 -0
  645. package/dist/providers/xkiro.js.map +1 -0
  646. package/dist/providers/zhipu.d.ts +43 -0
  647. package/dist/providers/zhipu.d.ts.map +1 -0
  648. package/dist/providers/zhipu.js +95 -0
  649. package/dist/providers/zhipu.js.map +1 -0
  650. package/dist/routes/analytics.d.ts +2 -0
  651. package/dist/routes/analytics.d.ts.map +1 -0
  652. package/dist/routes/analytics.js +738 -0
  653. package/dist/routes/analytics.js.map +1 -0
  654. package/dist/routes/anthropic.d.ts +7 -0
  655. package/dist/routes/anthropic.d.ts.map +1 -0
  656. package/dist/routes/anthropic.js +1076 -0
  657. package/dist/routes/anthropic.js.map +1 -0
  658. package/dist/routes/auth.d.ts +2 -0
  659. package/dist/routes/auth.d.ts.map +1 -0
  660. package/dist/routes/auth.js +310 -0
  661. package/dist/routes/auth.js.map +1 -0
  662. package/dist/routes/backups.d.ts +2 -0
  663. package/dist/routes/backups.d.ts.map +1 -0
  664. package/dist/routes/backups.js +127 -0
  665. package/dist/routes/backups.js.map +1 -0
  666. package/dist/routes/cache.d.ts +2 -0
  667. package/dist/routes/cache.d.ts.map +1 -0
  668. package/dist/routes/cache.js +40 -0
  669. package/dist/routes/cache.js.map +1 -0
  670. package/dist/routes/client-profiles.d.ts +2 -0
  671. package/dist/routes/client-profiles.d.ts.map +1 -0
  672. package/dist/routes/client-profiles.js +128 -0
  673. package/dist/routes/client-profiles.js.map +1 -0
  674. package/dist/routes/compression.d.ts +2 -0
  675. package/dist/routes/compression.d.ts.map +1 -0
  676. package/dist/routes/compression.js +82 -0
  677. package/dist/routes/compression.js.map +1 -0
  678. package/dist/routes/conversations.d.ts +3 -0
  679. package/dist/routes/conversations.d.ts.map +1 -0
  680. package/dist/routes/conversations.js +215 -0
  681. package/dist/routes/conversations.js.map +1 -0
  682. package/dist/routes/docs.d.ts +2 -0
  683. package/dist/routes/docs.d.ts.map +1 -0
  684. package/dist/routes/docs.js +21 -0
  685. package/dist/routes/docs.js.map +1 -0
  686. package/dist/routes/embeddings.d.ts +2 -0
  687. package/dist/routes/embeddings.d.ts.map +1 -0
  688. package/dist/routes/embeddings.js +255 -0
  689. package/dist/routes/embeddings.js.map +1 -0
  690. package/dist/routes/fallback.d.ts +2 -0
  691. package/dist/routes/fallback.d.ts.map +1 -0
  692. package/dist/routes/fallback.js +631 -0
  693. package/dist/routes/fallback.js.map +1 -0
  694. package/dist/routes/free-tier.d.ts +22 -0
  695. package/dist/routes/free-tier.d.ts.map +1 -0
  696. package/dist/routes/free-tier.js +175 -0
  697. package/dist/routes/free-tier.js.map +1 -0
  698. package/dist/routes/gemini.d.ts +2 -0
  699. package/dist/routes/gemini.d.ts.map +1 -0
  700. package/dist/routes/gemini.js +218 -0
  701. package/dist/routes/gemini.js.map +1 -0
  702. package/dist/routes/health.d.ts +2 -0
  703. package/dist/routes/health.d.ts.map +1 -0
  704. package/dist/routes/health.js +72 -0
  705. package/dist/routes/health.js.map +1 -0
  706. package/dist/routes/keys.d.ts +17 -0
  707. package/dist/routes/keys.d.ts.map +1 -0
  708. package/dist/routes/keys.js +1787 -0
  709. package/dist/routes/keys.js.map +1 -0
  710. package/dist/routes/logs.d.ts +2 -0
  711. package/dist/routes/logs.d.ts.map +1 -0
  712. package/dist/routes/logs.js +88 -0
  713. package/dist/routes/logs.js.map +1 -0
  714. package/dist/routes/mcp.d.ts +4 -0
  715. package/dist/routes/mcp.d.ts.map +1 -0
  716. package/dist/routes/mcp.js +563 -0
  717. package/dist/routes/mcp.js.map +1 -0
  718. package/dist/routes/media.d.ts +2 -0
  719. package/dist/routes/media.d.ts.map +1 -0
  720. package/dist/routes/media.js +180 -0
  721. package/dist/routes/media.js.map +1 -0
  722. package/dist/routes/models.d.ts +2 -0
  723. package/dist/routes/models.d.ts.map +1 -0
  724. package/dist/routes/models.js +439 -0
  725. package/dist/routes/models.js.map +1 -0
  726. package/dist/routes/ollama.d.ts +7 -0
  727. package/dist/routes/ollama.d.ts.map +1 -0
  728. package/dist/routes/ollama.js +595 -0
  729. package/dist/routes/ollama.js.map +1 -0
  730. package/dist/routes/profiles.d.ts +3 -0
  731. package/dist/routes/profiles.d.ts.map +1 -0
  732. package/dist/routes/profiles.js +431 -0
  733. package/dist/routes/profiles.js.map +1 -0
  734. package/dist/routes/proxy.d.ts +32 -0
  735. package/dist/routes/proxy.d.ts.map +1 -0
  736. package/dist/routes/proxy.js +2793 -0
  737. package/dist/routes/proxy.js.map +1 -0
  738. package/dist/routes/responses.d.ts +1161 -0
  739. package/dist/routes/responses.d.ts.map +1 -0
  740. package/dist/routes/responses.js +1521 -0
  741. package/dist/routes/responses.js.map +1 -0
  742. package/dist/routes/settings.d.ts +2 -0
  743. package/dist/routes/settings.d.ts.map +1 -0
  744. package/dist/routes/settings.js +549 -0
  745. package/dist/routes/settings.js.map +1 -0
  746. package/dist/routes/status.d.ts +3 -0
  747. package/dist/routes/status.d.ts.map +1 -0
  748. package/dist/routes/status.js +214 -0
  749. package/dist/routes/status.js.map +1 -0
  750. package/dist/routes/update.d.ts +31 -0
  751. package/dist/routes/update.d.ts.map +1 -0
  752. package/dist/routes/update.js +536 -0
  753. package/dist/routes/update.js.map +1 -0
  754. package/dist/routes/url-tokens.d.ts +2 -0
  755. package/dist/routes/url-tokens.d.ts.map +1 -0
  756. package/dist/routes/url-tokens.js +31 -0
  757. package/dist/routes/url-tokens.js.map +1 -0
  758. package/dist/scripts/export-catalog.d.ts +2 -0
  759. package/dist/scripts/export-catalog.d.ts.map +1 -0
  760. package/dist/scripts/export-catalog.js +114 -0
  761. package/dist/scripts/export-catalog.js.map +1 -0
  762. package/dist/scripts/rotate-encryption-key.d.ts +81 -0
  763. package/dist/scripts/rotate-encryption-key.d.ts.map +1 -0
  764. package/dist/scripts/rotate-encryption-key.js +232 -0
  765. package/dist/scripts/rotate-encryption-key.js.map +1 -0
  766. package/dist/scripts/routing-sim.d.ts +2 -0
  767. package/dist/scripts/routing-sim.d.ts.map +1 -0
  768. package/dist/scripts/routing-sim.js +130 -0
  769. package/dist/scripts/routing-sim.js.map +1 -0
  770. package/dist/scripts/test-all-models.d.ts +2 -0
  771. package/dist/scripts/test-all-models.d.ts.map +1 -0
  772. package/dist/scripts/test-all-models.js +56 -0
  773. package/dist/scripts/test-all-models.js.map +1 -0
  774. package/dist/services/anthropic-map.d.ts +39 -0
  775. package/dist/services/anthropic-map.d.ts.map +1 -0
  776. package/dist/services/anthropic-map.js +138 -0
  777. package/dist/services/anthropic-map.js.map +1 -0
  778. package/dist/services/auth.d.ts +30 -0
  779. package/dist/services/auth.d.ts.map +1 -0
  780. package/dist/services/auth.js +124 -0
  781. package/dist/services/auth.js.map +1 -0
  782. package/dist/services/auto-discover.d.ts +77 -0
  783. package/dist/services/auto-discover.d.ts.map +1 -0
  784. package/dist/services/auto-discover.js +1047 -0
  785. package/dist/services/auto-discover.js.map +1 -0
  786. package/dist/services/backups.d.ts +67 -0
  787. package/dist/services/backups.d.ts.map +1 -0
  788. package/dist/services/backups.js +444 -0
  789. package/dist/services/backups.js.map +1 -0
  790. package/dist/services/builtin-model-discovery.d.ts +107 -0
  791. package/dist/services/builtin-model-discovery.d.ts.map +1 -0
  792. package/dist/services/builtin-model-discovery.js +296 -0
  793. package/dist/services/builtin-model-discovery.js.map +1 -0
  794. package/dist/services/cache.d.ts +190 -0
  795. package/dist/services/cache.d.ts.map +1 -0
  796. package/dist/services/cache.js +617 -0
  797. package/dist/services/cache.js.map +1 -0
  798. package/dist/services/catalog-sync.d.ts +257 -0
  799. package/dist/services/catalog-sync.d.ts.map +1 -0
  800. package/dist/services/catalog-sync.js +1041 -0
  801. package/dist/services/catalog-sync.js.map +1 -0
  802. package/dist/services/compression/config.d.ts +33 -0
  803. package/dist/services/compression/config.d.ts.map +1 -0
  804. package/dist/services/compression/config.js +158 -0
  805. package/dist/services/compression/config.js.map +1 -0
  806. package/dist/services/compression/engines/aging.d.ts +2 -0
  807. package/dist/services/compression/engines/aging.d.ts.map +1 -0
  808. package/dist/services/compression/engines/aging.js +53 -0
  809. package/dist/services/compression/engines/aging.js.map +1 -0
  810. package/dist/services/compression/engines/custom-filters.d.ts +4 -0
  811. package/dist/services/compression/engines/custom-filters.d.ts.map +1 -0
  812. package/dist/services/compression/engines/custom-filters.js +49 -0
  813. package/dist/services/compression/engines/custom-filters.js.map +1 -0
  814. package/dist/services/compression/engines/dedup.d.ts +2 -0
  815. package/dist/services/compression/engines/dedup.d.ts.map +1 -0
  816. package/dist/services/compression/engines/dedup.js +61 -0
  817. package/dist/services/compression/engines/dedup.js.map +1 -0
  818. package/dist/services/compression/engines/filter-definitions.d.ts +75 -0
  819. package/dist/services/compression/engines/filter-definitions.d.ts.map +1 -0
  820. package/dist/services/compression/engines/filter-definitions.js +45 -0
  821. package/dist/services/compression/engines/filter-definitions.js.map +1 -0
  822. package/dist/services/compression/engines/hard-budget.d.ts +2 -0
  823. package/dist/services/compression/engines/hard-budget.d.ts.map +1 -0
  824. package/dist/services/compression/engines/hard-budget.js +52 -0
  825. package/dist/services/compression/engines/hard-budget.js.map +1 -0
  826. package/dist/services/compression/engines/index.d.ts +9 -0
  827. package/dist/services/compression/engines/index.d.ts.map +1 -0
  828. package/dist/services/compression/engines/index.js +9 -0
  829. package/dist/services/compression/engines/index.js.map +1 -0
  830. package/dist/services/compression/engines/jsoncompact.d.ts +3 -0
  831. package/dist/services/compression/engines/jsoncompact.d.ts.map +1 -0
  832. package/dist/services/compression/engines/jsoncompact.js +145 -0
  833. package/dist/services/compression/engines/jsoncompact.js.map +1 -0
  834. package/dist/services/compression/engines/lite.d.ts +2 -0
  835. package/dist/services/compression/engines/lite.d.ts.map +1 -0
  836. package/dist/services/compression/engines/lite.js +34 -0
  837. package/dist/services/compression/engines/lite.js.map +1 -0
  838. package/dist/services/compression/engines/read-lifecycle.d.ts +2 -0
  839. package/dist/services/compression/engines/read-lifecycle.d.ts.map +1 -0
  840. package/dist/services/compression/engines/read-lifecycle.js +70 -0
  841. package/dist/services/compression/engines/read-lifecycle.js.map +1 -0
  842. package/dist/services/compression/engines/relevance.d.ts +2 -0
  843. package/dist/services/compression/engines/relevance.d.ts.map +1 -0
  844. package/dist/services/compression/engines/relevance.js +74 -0
  845. package/dist/services/compression/engines/relevance.js.map +1 -0
  846. package/dist/services/compression/engines/toolfilter.d.ts +2 -0
  847. package/dist/services/compression/engines/toolfilter.d.ts.map +1 -0
  848. package/dist/services/compression/engines/toolfilter.js +195 -0
  849. package/dist/services/compression/engines/toolfilter.js.map +1 -0
  850. package/dist/services/compression/fidelity-gate.d.ts +12 -0
  851. package/dist/services/compression/fidelity-gate.d.ts.map +1 -0
  852. package/dist/services/compression/fidelity-gate.js +90 -0
  853. package/dist/services/compression/fidelity-gate.js.map +1 -0
  854. package/dist/services/compression/helpers.d.ts +9 -0
  855. package/dist/services/compression/helpers.d.ts.map +1 -0
  856. package/dist/services/compression/helpers.js +52 -0
  857. package/dist/services/compression/helpers.js.map +1 -0
  858. package/dist/services/compression/pipeline.d.ts +7 -0
  859. package/dist/services/compression/pipeline.d.ts.map +1 -0
  860. package/dist/services/compression/pipeline.js +245 -0
  861. package/dist/services/compression/pipeline.js.map +1 -0
  862. package/dist/services/compression/preservation.d.ts +27 -0
  863. package/dist/services/compression/preservation.d.ts.map +1 -0
  864. package/dist/services/compression/preservation.js +109 -0
  865. package/dist/services/compression/preservation.js.map +1 -0
  866. package/dist/services/compression/registry.d.ts +6 -0
  867. package/dist/services/compression/registry.d.ts.map +1 -0
  868. package/dist/services/compression/registry.js +16 -0
  869. package/dist/services/compression/registry.js.map +1 -0
  870. package/dist/services/compression/stats.d.ts +29 -0
  871. package/dist/services/compression/stats.d.ts.map +1 -0
  872. package/dist/services/compression/stats.js +55 -0
  873. package/dist/services/compression/stats.js.map +1 -0
  874. package/dist/services/compression/types.d.ts +90 -0
  875. package/dist/services/compression/types.d.ts.map +1 -0
  876. package/dist/services/compression/types.js +2 -0
  877. package/dist/services/compression/types.js.map +1 -0
  878. package/dist/services/context-handoff.d.ts +22 -0
  879. package/dist/services/context-handoff.d.ts.map +1 -0
  880. package/dist/services/context-handoff.js +164 -0
  881. package/dist/services/context-handoff.js.map +1 -0
  882. package/dist/services/cooldown-probe.d.ts +24 -0
  883. package/dist/services/cooldown-probe.d.ts.map +1 -0
  884. package/dist/services/cooldown-probe.js +181 -0
  885. package/dist/services/cooldown-probe.js.map +1 -0
  886. package/dist/services/custom-endpoint.d.ts +58 -0
  887. package/dist/services/custom-endpoint.d.ts.map +1 -0
  888. package/dist/services/custom-endpoint.js +167 -0
  889. package/dist/services/custom-endpoint.js.map +1 -0
  890. package/dist/services/custom-media-register.d.ts +22 -0
  891. package/dist/services/custom-media-register.d.ts.map +1 -0
  892. package/dist/services/custom-media-register.js +45 -0
  893. package/dist/services/custom-media-register.js.map +1 -0
  894. package/dist/services/custom-model-register.d.ts +50 -0
  895. package/dist/services/custom-model-register.d.ts.map +1 -0
  896. package/dist/services/custom-model-register.js +103 -0
  897. package/dist/services/custom-model-register.js.map +1 -0
  898. package/dist/services/custom-model-seed.d.ts +18 -0
  899. package/dist/services/custom-model-seed.d.ts.map +1 -0
  900. package/dist/services/custom-model-seed.js +42 -0
  901. package/dist/services/custom-model-seed.js.map +1 -0
  902. package/dist/services/custom-model-sync.d.ts +37 -0
  903. package/dist/services/custom-model-sync.d.ts.map +1 -0
  904. package/dist/services/custom-model-sync.js +118 -0
  905. package/dist/services/custom-model-sync.js.map +1 -0
  906. package/dist/services/custom-model-tombstone.d.ts +5 -0
  907. package/dist/services/custom-model-tombstone.d.ts.map +1 -0
  908. package/dist/services/custom-model-tombstone.js +30 -0
  909. package/dist/services/custom-model-tombstone.js.map +1 -0
  910. package/dist/services/declarative-config.d.ts +356 -0
  911. package/dist/services/declarative-config.d.ts.map +1 -0
  912. package/dist/services/declarative-config.js +427 -0
  913. package/dist/services/declarative-config.js.map +1 -0
  914. package/dist/services/degradation.d.ts +40 -0
  915. package/dist/services/degradation.d.ts.map +1 -0
  916. package/dist/services/degradation.js +119 -0
  917. package/dist/services/degradation.js.map +1 -0
  918. package/dist/services/embeddings.d.ts +76 -0
  919. package/dist/services/embeddings.d.ts.map +1 -0
  920. package/dist/services/embeddings.js +319 -0
  921. package/dist/services/embeddings.js.map +1 -0
  922. package/dist/services/fusion.d.ts +162 -0
  923. package/dist/services/fusion.d.ts.map +1 -0
  924. package/dist/services/fusion.js +789 -0
  925. package/dist/services/fusion.js.map +1 -0
  926. package/dist/services/gemini-map.d.ts +14 -0
  927. package/dist/services/gemini-map.d.ts.map +1 -0
  928. package/dist/services/gemini-map.js +78 -0
  929. package/dist/services/gemini-map.js.map +1 -0
  930. package/dist/services/health.d.ts +52 -0
  931. package/dist/services/health.d.ts.map +1 -0
  932. package/dist/services/health.js +352 -0
  933. package/dist/services/health.js.map +1 -0
  934. package/dist/services/idempotency.d.ts +49 -0
  935. package/dist/services/idempotency.d.ts.map +1 -0
  936. package/dist/services/idempotency.js +140 -0
  937. package/dist/services/idempotency.js.map +1 -0
  938. package/dist/services/key-budget.d.ts +74 -0
  939. package/dist/services/key-budget.d.ts.map +1 -0
  940. package/dist/services/key-budget.js +200 -0
  941. package/dist/services/key-budget.js.map +1 -0
  942. package/dist/services/media.d.ts +123 -0
  943. package/dist/services/media.d.ts.map +1 -0
  944. package/dist/services/media.js +954 -0
  945. package/dist/services/media.js.map +1 -0
  946. package/dist/services/model-discovery.d.ts +126 -0
  947. package/dist/services/model-discovery.d.ts.map +1 -0
  948. package/dist/services/model-discovery.js +662 -0
  949. package/dist/services/model-discovery.js.map +1 -0
  950. package/dist/services/model-groups.d.ts +149 -0
  951. package/dist/services/model-groups.d.ts.map +1 -0
  952. package/dist/services/model-groups.js +314 -0
  953. package/dist/services/model-groups.js.map +1 -0
  954. package/dist/services/model-listing.d.ts +18 -0
  955. package/dist/services/model-listing.d.ts.map +1 -0
  956. package/dist/services/model-listing.js +94 -0
  957. package/dist/services/model-listing.js.map +1 -0
  958. package/dist/services/model-retirement.d.ts +29 -0
  959. package/dist/services/model-retirement.d.ts.map +1 -0
  960. package/dist/services/model-retirement.js +86 -0
  961. package/dist/services/model-retirement.js.map +1 -0
  962. package/dist/services/model-state.d.ts +90 -0
  963. package/dist/services/model-state.d.ts.map +1 -0
  964. package/dist/services/model-state.js +342 -0
  965. package/dist/services/model-state.js.map +1 -0
  966. package/dist/services/model-weight-overrides.d.ts +48 -0
  967. package/dist/services/model-weight-overrides.d.ts.map +1 -0
  968. package/dist/services/model-weight-overrides.js +127 -0
  969. package/dist/services/model-weight-overrides.js.map +1 -0
  970. package/dist/services/notification-emitter.d.ts +50 -0
  971. package/dist/services/notification-emitter.d.ts.map +1 -0
  972. package/dist/services/notification-emitter.js +177 -0
  973. package/dist/services/notification-emitter.js.map +1 -0
  974. package/dist/services/opencode-free-sync.d.ts +29 -0
  975. package/dist/services/opencode-free-sync.d.ts.map +1 -0
  976. package/dist/services/opencode-free-sync.js +206 -0
  977. package/dist/services/opencode-free-sync.js.map +1 -0
  978. package/dist/services/penalty-inspector.d.ts +56 -0
  979. package/dist/services/penalty-inspector.d.ts.map +1 -0
  980. package/dist/services/penalty-inspector.js +167 -0
  981. package/dist/services/penalty-inspector.js.map +1 -0
  982. package/dist/services/profile-models.d.ts +5 -0
  983. package/dist/services/profile-models.d.ts.map +1 -0
  984. package/dist/services/profile-models.js +62 -0
  985. package/dist/services/profile-models.js.map +1 -0
  986. package/dist/services/provider-credential.d.ts +19 -0
  987. package/dist/services/provider-credential.d.ts.map +1 -0
  988. package/dist/services/provider-credential.js +51 -0
  989. package/dist/services/provider-credential.js.map +1 -0
  990. package/dist/services/provider-quota.d.ts +64 -0
  991. package/dist/services/provider-quota.d.ts.map +1 -0
  992. package/dist/services/provider-quota.js +563 -0
  993. package/dist/services/provider-quota.js.map +1 -0
  994. package/dist/services/quirks.d.ts +0 -0
  995. package/dist/services/quirks.d.ts.map +1 -0
  996. package/dist/services/quirks.js +0 -0
  997. package/dist/services/quirks.js.map +1 -0
  998. package/dist/services/quota-forecast.d.ts +50 -0
  999. package/dist/services/quota-forecast.d.ts.map +1 -0
  1000. package/dist/services/quota-forecast.js +150 -0
  1001. package/dist/services/quota-forecast.js.map +1 -0
  1002. package/dist/services/quota-outlook.d.ts +4 -0
  1003. package/dist/services/quota-outlook.d.ts.map +1 -0
  1004. package/dist/services/quota-outlook.js +92 -0
  1005. package/dist/services/quota-outlook.js.map +1 -0
  1006. package/dist/services/ratelimit.d.ts +249 -0
  1007. package/dist/services/ratelimit.d.ts.map +1 -0
  1008. package/dist/services/ratelimit.js +1182 -0
  1009. package/dist/services/ratelimit.js.map +1 -0
  1010. package/dist/services/request-retention.d.ts +60 -0
  1011. package/dist/services/request-retention.d.ts.map +1 -0
  1012. package/dist/services/request-retention.js +229 -0
  1013. package/dist/services/request-retention.js.map +1 -0
  1014. package/dist/services/router.d.ts +384 -0
  1015. package/dist/services/router.d.ts.map +1 -0
  1016. package/dist/services/router.js +1986 -0
  1017. package/dist/services/router.js.map +1 -0
  1018. package/dist/services/scoring.d.ts +156 -0
  1019. package/dist/services/scoring.d.ts.map +1 -0
  1020. package/dist/services/scoring.js +435 -0
  1021. package/dist/services/scoring.js.map +1 -0
  1022. package/dist/services/url-tokens.d.ts +15 -0
  1023. package/dist/services/url-tokens.d.ts.map +1 -0
  1024. package/dist/services/url-tokens.js +55 -0
  1025. package/dist/services/url-tokens.js.map +1 -0
  1026. package/package.json +77 -4
  1027. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ var e={nav:{models:`Người mẫu`,playground:`Sân chơi`,keys:`Phím`,analytics:`Phân tích`,premium:`Cao cấp`,upgrade:`Nâng cấp`,settings:`Cài đặt`,signOut:`Đăng xuất`,openMenu:`Mở menu điều hướng`,switchLight:`Chuyển sang giao diện nhẹ nhàng`,switchDark:`Chuyển sang chủ đề tối`,switchToChinese:`Chuyển sang tiếng Trung`,switchToEnglish:`Chuyển sang tiếng Anh`,modelsMenu:`Duyệt các loại mô hình`,agents:`Tác nhân`,logs:`Nhật ký`,analyticsMenu:`Trang phân tích`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Tạo tài khoản của bạn`,signIn:`Đăng nhập`,email:`Email`,password:`Mật khẩu`,emailPlaceholder:`bạn@example.com`,passwordPlaceholderSetup:`ít nhất 8 ký tự`,passwordPlaceholderLogin:`mật khẩu của bạn`,setupDescription:`Đặt email và mật khẩu sẽ bảo vệ trang tổng quan này.`,loginDescription:`Đăng nhập để quản lý khóa, định tuyến và phân tích của bạn.`,createAccount:`Tạo tài khoản`,creating:`Đang tạo…`,signingIn:`Đang đăng nhập…`,loading:`Đang tải…`,newPasswordAutoComplete:`mật khẩu mới`,currentPasswordAutoComplete:`mật khẩu hiện tại`,serverUnreachableBefore:`Không thể truy cập máy chủ. Đảm bảo phần phụ trợ đang chạy (`,serverUnreachableAfter:`).`,setupCode:`Mã cài đặt`,setupCodePlaceholder:`mã từ nhật ký máy chủ`,setupCodeHint:`Thiết lập từ thiết bị khác cần có mã một lần được in trong nhật ký máy chủ khi khởi động.`,changePassword:`Đổi mật khẩu`,changeEmail:`Đổi e-mail`,forgotPassword:`Quên mật khẩu?`,currentPassword:`Mật khẩu hiện tại`,newPassword:`Mật khẩu mới`,newEmail:`E-mail mới`,resetCode:`Mã đặt lại`,resetCodePlaceholder:`mã từ nhật ký máy chủ`,resetCodeHint:`Mã nằm trong nhật ký máy chủ. Mã không bao giờ được gửi qua email.`,forgotPasswordDescription:`Nhấn nút bên dưới để tạo mã đặt lại. Mã được ghi vào nhật ký máy chủ, không bao giờ gửi qua email. Nhập vào đây để đặt mật khẩu mới.`,requestResetCode:`Gửi mã đặt lại`,requestingResetCode:`Đang gửi…`,resetPassword:`Đặt lại mật khẩu`,resettingPassword:`Đang đặt lại…`,changingPassword:`Đang đổi…`,changingEmail:`Đang đổi…`,backToLogin:`Quay lại đăng nhập`,passwordChanged:`Đã đổi mật khẩu thành công.`,emailChanged:`Đã đổi e-mail thành công.`,passwordReset:`Đã đặt lại mật khẩu. Vui lòng đăng nhập.`,resetCodeDockerHint:`Đang chạy trong Docker? Mã nằm trong nhật ký của container: docker logs <container>.`,desktopSessionFailed:`Bảng điều khiển không thể đăng nhập vào máy chủ cục bộ. Hãy thoát SRouter và mở lại.`},common:{save:`Lưu`,saving:`Đang lưu…`,cancel:`Hủy bỏ`,discard:`Loại bỏ`,delete:`Xóa`,confirm:`Xác nhận`,copy:`Sao chép`,copied:`Đã sao chép`,copyFailed:`Không thể sao chép — hãy chọn văn bản và sao chép thủ công`,show:`Hiển thị`,hide:`Ẩn`,apply:`Áp dụng`,applied:`Đã áp dụng`,applying:`Đang áp dụng…`,active:`Đang hoạt động`,inactive:`Không hoạt động`,never:`không bao giờ`,loading:`Đang tải…`,error:`Lỗi`,noData:`Chưa có dữ liệu`,unsavedChanges:`Những thay đổi chưa được lưu`,saveChanges:`Lưu thay đổi`,remove:`Xóa`,unknownError:`Lỗi không xác định`,model:`người mẫu`,provider:`nhà cung cấp`,success:`thành công`,failures:`Thất bại`,dismiss:`Loại bỏ`,status:`Trạng thái`},settings:{title:`Cài đặt`,language:`Ngôn ngữ`,theme:`Chủ đề`,themeSystem:`Hệ thống`,themeLight:`Sáng`,themeDark:`Tối`,searchLanguage:`Tìm kiếm ngôn ngữ…`,noLanguages:`Không tìm thấy ngôn ngữ nào`,sections:`Mục cài đặt`,sectionGeneral:`Chung`,sectionCompression:`Nén`,sectionAdvanced:`Nâng cao`,sectionPreview:`Xem trước`,generalDescription:`Ngôn ngữ và giao diện của bảng điều khiển này.`,advancedDescription:`Ngưỡng và công tắc an toàn cho quy trình nén.`,compressionTitle:`Nén lời nhắc`,compressionDescription:`Giảm kích thước yêu cầu trước khi định tuyến trong khi vẫn giữ nguyên mã, lỗi, đường dẫn, số và định nghĩa công cụ.`,compressionHelp:`Viết lại từng yêu cầu trước khi gửi đến nhà cung cấp để dùng ít mã thông báo hơn. Mã nguồn, lỗi, đường dẫn tệp và số được bảo vệ; mọi lần viết lại làm hỏng chúng đều bị loại bỏ.`,compressionMode:`Chế độ`,compressionModeHelp:`Tắt sẽ gửi yêu cầu nguyên vẹn. Không mất dữ liệu chỉ loại bỏ văn bản trùng lặp và thừa. Tiêu chuẩn còn rút gọn đầu ra của công cụ. Mạnh còn cô đọng các lượt trò chuyện cũ hơn.`,compressionOff:`Tắt`,compressionLossless:`Không mất dữ liệu`,compressionStandard:`Tiêu chuẩn`,compressionAggressive:`Mạnh`,compressionLossy:`Có mất dữ liệu`,compressionEngines:`Bộ máy nén`,compressionEnginesHelp:`Mỗi bộ máy nén là một bước viết lại. Chế độ quyết định bộ máy nào chạy; tắt một bộ máy ở đây sẽ loại nó khỏi mọi chế độ.`,engineDedup:`Khối lặp lại`,engineDedupHelp:`Thay khối văn bản đã xuất hiện trước đó trong cuộc trò chuyện bằng một tham chiếu ngắn đến nó.`,engineLite:`Dọn khoảng trắng`,engineLiteHelp:`Cắt bỏ khoảng trắng ở cuối dòng, gộp các dòng trống lặp lại và loại bỏ thông điệp hệ thống trùng lặp.`,engineReadLifecycle:`Lần đọc tệp đã bị thay thế`,engineReadLifecycleHelp:`Thay kết quả đọc tệp trước đó bằng một ghi chú khi chính tệp đó được đọc hoặc chỉnh sửa lại về sau.`,engineToolfilter:`Bộ lọc đầu ra công cụ`,engineToolfilterHelp:`Rút gọn đầu ra của lệnh và công cụ như build, kiểm thử và cài đặt. Các dòng lỗi và dấu vết ngăn xếp luôn được giữ lại.`,engineJsoncompact:`Bảng JSON`,engineJsoncompactHelp:`Mã hóa lại các mảng JSON dài có cùng trường thành một bảng gọn. Có thể đảo ngược nên không mất gì.`,engineRelevance:`Bộ lọc liên quan`,engineRelevanceHelp:`Loại bỏ những câu ít liên quan nhất đến tin nhắn mới nhất khi một tin nhắn vượt quá giới hạn kích thước.`,engineAging:`Lượt trò chuyện cũ`,engineAgingHelp:`Cô đọng các lượt trò chuyện ngoài vài lượt gần nhất thành bản tóm tắt ngắn giữ lại đường dẫn, lỗi và quyết định.`,engineHardBudget:`Trần mã thông báo`,engineHardBudgetHelp:`Loại bỏ những dòng ít giá trị nhất cho đến khi yêu cầu vừa với mục tiêu mã thông báo.`,compressionAutoTrigger:`Tự động kích hoạt khi vượt số mã thông báo ước tính`,compressionAutoTriggerHelp:`Các yêu cầu ước tính vượt quá số mã thông báo này sẽ tự động chuyển sang Mạnh. Để trống để tắt.`,compressionPrefixFreeze:`Cố định tiền tố lời nhắc lặp lại`,compressionPrefixFreezeHelp:`Giữ nguyên lời nhắc hệ thống khi cùng một nội dung đã xuất hiện ba lần, để bộ nhớ đệm lời nhắc phía nhà cung cấp tiếp tục hoạt động.`,compressionTrustProjectFilters:`Tin cậy tệp bộ lọc của dự án`,compressionTrustProjectFiltersHelp:`Đồng thời tải bộ lọc đầu ra công cụ từ thư mục làm việc. Mặc định tắt, vì một kho mã có thể dùng nó để giấu đầu ra khỏi mô hình.`,compressionStats:`Kích thước tiết kiệm`,compressionEstimatedTokensSaved:`Mã thông báo ước tính đã tiết kiệm`,compressionPreview:`Xem trước trực tiếp`,compressionPreviewDescription:`Gửi nội dung yêu cầu qua quy trình nén để xem nhà cung cấp sẽ nhận được gì.`,compressionPreviewPlaceholder:`Dán JSON yêu cầu hoặc văn bản thuần`,compressionRunPreview:`Chạy xem trước`,updatesTitle:`Bản cập nhật`,checkForUpdates:`Kiểm tra các bản cập nhật`,lastChecked:`Kiểm tra lần cuối: {when}`,currentVersion:`Bản dựng hiện tại:`,updateAvailable:`Có bản cập nhật`,changelog:`Có gì thay đổi`,upToDate:`Đã cập nhật`,buildAhead:`Bản dựng này đi trước nhánh main chính thức.`,buildDiverged:`Bản dựng này đã phân kỳ khỏi nhánh main chính thức.`,buildUnknown:`Không thể so sánh bản dựng tùy chỉnh này với nhánh main chính thức.`,notGitInstall:`Bản cài đặt này không có thông tin commit.`,checkFailed:`Không thể kiểm tra bản cập nhật.`,contactsGithub:`Việc kiểm tra được thực hiện thủ công và có kết nối với GitHub.`,autoUpdateCheck:`Tự động kiểm tra cập nhật`,autoUpdateCheckHelp:`Kiểm tra GitHub mỗi ngày một lần để tìm bản phát hành mới và hiển thị lời nhắc. Mặc định tắt.`,openReleases:`Mở GitHub Releases`,restartAfterUpdate:`Khởi động lại SRouter sau khi hoàn tất bản dựng.`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`Người mẫu`,chatModelsTab:`Mô hình trò chuyện`,fusionTab:`Sự kết hợp`,embeddingsTab:`Nhúng`,imageTab:`Hình ảnh`,videoTab:`Video`,audioTab:`Âm thanh`,imageDesc:`Các mô hình tạo văn bản thành hình ảnh.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Mô hình chuyển văn bản thành giọng nói và chuyển lời nói thành văn bản.`,mediaHint:`Tạo thông qua`,mediaEmpty:`Chưa có mô hình nào. Họ đồng bộ hóa từ danh mục.`,ttsHeading:`Chuyển văn bản thành giọng nói`,sttHeading:`Lời nói thành văn bản`,sttHint:`Phiên âm qua`,sttEmpty:`Chưa có mô hình chuyển giọng nói thành văn bản. Họ đồng bộ hóa từ danh mục.`,newBadge:`Mới`,monthlyTokenBudget:`Ngân sách mã thông báo hàng tháng`,remaining:`còn lại`,used:`đã sử dụng`,usedScopeHint:`Chỉ tính các yêu cầu trò chuyện từ đầu tháng dương lịch này, cộng dồn trên mọi mô hình trong chuỗi đang hoạt động — bao gồm cả endpoint tùy chỉnh. Lưu lượng bạn gửi thẳng tới nhà cung cấp ngoài SRouter không được tính.`,legendRemainingTitle:`Còn lại / hạn mức hằng tháng của {name} ({platform})`,noPublishedQuota:`+{count} không công bố hạn mức`,noPublishedQuotaTitle:`Các mô hình này không công bố hạn mức token hằng tháng nên không có số còn lại để hiển thị.`,of:`của`,showAllModels:`Hiển thị tất cả các mẫu {count}`,showLess:`Hiển thị ít hơn`,vision:`Tầm nhìn`,visionTitle:`Chấp nhận đầu vào hình ảnh`,tools:`Công cụ`,toolsTitle:`Phát ra các lệnh gọi công cụ có cấu trúc, do đó nó đủ điều kiện cho các yêu cầu mang công cụ`,retired:`Ngừng cung cấp`,penalty:`−{value} phạt đền`,obs:`{count} quan sát`,tokPerMonth:`{count} tháng/tháng`,rpmLimit:`{count} vòng/phút`,rpdLimit:`{count} rpd`,noKey:`không có chìa khóa`,dragToReorder:`Kéo để sắp xếp lại`,dragToReorderGroup:`Kéo để sắp xếp lại mô hình`,moveToRank:`Nhảy đến hạng`,providerCount:`Nhà cung cấp {count}`,servedBy:`Được phục vụ bởi {providers}`,viewProviders:`Xem nhà cung cấp`,backToModels:`Quay lại mô hình`,providersHeading:`Các nhà cung cấp phục vụ mô hình này`,codeSnippetHeading:`Sử dụng mô hình này`,modelNotFound:`Mô hình này không có sẵn hoặc không có nhà cung cấp được định cấu hình.`,providerIdsHeading:`Id mô hình nhà cung cấp`,providerIdsHint:`Gửi id mô hình hợp nhất để chuyển đổi dự phòng trên mọi nhà cung cấp hoặc id dành riêng cho nhà cung cấp để ghim một nhà cung cấp.`,copyModelName:`Sao chép tên mẫu`,settingsHeading:`Cài đặt nhà cung cấp`,settingsHint:`Các chỉnh sửa cục bộ đối với mô hình danh mục được lưu giữ trong quá trình đồng bộ hóa danh mục. Các mô hình danh mục đã xóa vẫn bị xóa cho đến khi bạn thêm lại chúng thông qua config.`,catalogModel:`danh mục`,customModel:`tùy chỉnh`,discoveredModel:`đã phát hiện`,localOverride:`ghi đè cục bộ`,displayName:`Tên hiển thị`,sizeLabel:`Bậc năng lực`,sizeLabelHint:`Frontier/Large/Medium/Small quyết định trục tình báo: bậc cao hơn luôn vượt bậc thấp hơn, và trong cùng một bậc thì thứ hạng tình báo vẫn làm dịch chuyển điểm. Mô hình không có bậc được nhận diện sẽ nhận điểm thấp nhất trên trục này, nhưng tình báo chỉ là một trong ba trục — độ tin cậy và tốc độ tốt vẫn có thể giúp nó được chọn định tuyến.`,sizeLabelNone:`Không có (điểm tình báo thấp nhất)`,contextWindow:`Bối cảnh`,inFallback:`Trong chuỗi`,saveModelSettings:`Lưu cài đặt mô hình`,aggregateBudget:`{count}/tháng`,aggregateBudgetTitle:`Tổng số token miễn phí mỗi tháng của các nhà cung cấp trong mô hình này`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Tỷ lệ giới hạn - không có ngân sách mã thông báo cố định hàng tháng`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Mức dùng giới hạn tốc độ theo cửa sổ thời gian (đã dùng / giới hạn) của nhà cung cấp còn nhiều dư địa nhất`,splitOut:`Không hợp nhất bản sao này`,splitOutHint:`Cung cấp cho bản sao của nhà cung cấp này một mục nhập riêng thay vì hợp nhất nó vào mô hình thống nhất. Bạn có thể hợp nhất nó lại từ trang riêng của bản sao.`,splitUndo:`Hợp nhất lại`,splitUndoHint:`Bản sao này được giữ tách biệt khỏi mô hình thống nhất của nó. Hợp nhất lại để chuyển đổi dự phòng trên tất cả các nhà cung cấp của nó một lần nữa.`,splitBadge:`giữ riêng biệt`,noData:`không có dữ liệu`,noDataTitle:`Chưa có yêu cầu nào được ghi lại - độ tin cậy và tốc độ chưa được đo lường đối với nhà cung cấp này.`,bestOfN:`hay nhất của {count}`,perProviderScores:`Điểm số của mỗi nhà cung cấp: {list}`,columnModel:`người mẫu`,columnOn:`Bật`,noModelsBefore:`Không có mô hình có sẵn. Thêm các phím API trên`,keysPageLink:`Trang chìa khóa`,noModelsAfter:`đầu tiên.`,hiddenNoKeys:`Ẩn (không có khóa): {platforms}`,searchPlaceholder:`Tìm kiếm mô hình hoặc nhà cung cấp…`,clearSearch:`Xóa tìm kiếm`,ctxAny:`Bất kỳ bối cảnh nào`,ctxBadge:`{size} ctx`,ctxTitle:`Cửa sổ ngữ cảnh`,copyModelId:`Sao chép id mẫu`,showingCount:`{shown} của mẫu {total}`,clearFilters:`Xóa bộ lọc`,noMatches:`Không có mô hình nào phù hợp với bộ lọc của bạn.`,noModelsTitle:`Không có mô hình nào được định cấu hình`,intelligenceRank:`Tình báo`,speedRank:`Tốc độ`,rankHint:`Thứ hạng trong danh mục — 1 là tốt nhất.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Yêu cầu mỗi phút. Để trống nếu không giới hạn.`,limitRpdHint:`Yêu cầu mỗi ngày. Để trống nếu không giới hạn.`,limitTpmHint:`Mã thông báo mỗi phút. Để trống nếu không giới hạn.`,limitTpdHint:`Mã thông báo mỗi ngày. Để trống nếu không giới hạn.`,usageThisMonth:`Mức dùng hằng tháng`,usageEmpty:`Chưa có yêu cầu nào trong tháng này.`,usageRequestsMonth:`{count} yêu cầu tháng này`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`Bật hoặc tắt mọi mô hình đang hiển thị`,enableAll:`Bật tất cả`,disableAll:`Tắt tất cả`,enableAllHint:`Bật mọi mô hình đang hiển thị rồi lưu`,disableAllHint:`Tắt mọi mô hình đang hiển thị rồi lưu`,enabledOfShown:`{enabled} trong {shown} mô hình đang hiển thị nằm trong chuỗi`},strategies:{explore:`Khám phá các mô hình chưa được đo`,exploreHint:`Cho các mô hình chưa có dữ liệu độ tin cậy hay tốc độ 10% cơ hội được thử trước để chúng tích lũy số liệu. Thứ được gửi đi là yêu cầu thật của bạn, nên một mô hình chưa được kiểm chứng có thể trả lời nó. Với endpoint tùy chỉnh, hãy dùng «Kiểm thử endpoint» ở trang Khóa để thử mà không tốn lưu lượng thật.`,keySelection:`Chọn khóa`,keySelectionAuto:`Tự động`,keySelectionLeastRemaining:`Còn lại ít nhất`,keySelectionHint:`Cách chọn giữa nhiều khóa của cùng một nhà cung cấp. Tự động giữ nguyên vòng xoay hiện tại; Còn lại ít nhất sắp xếp khóa theo hạn mức quan sát được và thử khóa còn nhiều nhất trước.`,cooldownCeiling:`Thời gian chờ tự động dài nhất`,cooldownCeilingHint:`Giới hạn thời gian mà các phỏng đoán của bộ định tuyến được phép loại một cặp khóa và mô hình đang lỗi. Bậc thang thường tăng 2 phút, 10 phút, 1 giờ, 24 giờ, và lỗi hết tín dụng hoặc hạng loại trong một ngày. Thời gian thử lại do nhà cung cấp nêu không bao giờ bị rút ngắn.`,cooldownCeilingDefault:`Mặc định (tối đa 24 giờ)`,cooldownCeiling10m:`10 phút`,cooldownCeiling1h:`1 giờ`,cooldownCeiling6h:`6 giờ`,moreOptions:`Tùy chọn khác`,peakActive:`(giờ cao điểm)`,peakActiveHint:`Điều chỉnh giờ cao điểm đang hoạt động, nên đây không phải là trọng số của chính preset: 60% trọng số tốc độ đã chuyển sang độ tin cậy.`,peakAdjust:`Điều chỉnh giờ cao điểm`,peakAdjustHint:`Mặc định tắt. Trong khung giờ bên dưới, chuyển 60% trọng số tốc độ sang độ tin cậy — các relay miễn phí đông nhất vào lúc đó, nên độ tin cậy dự đoán thành công tốt hơn thông lượng thô. «Nhanh nhất» và «Đáng tin cậy nhất» không bị ảnh hưởng.`,peakFrom:`Từ`,peakTo:`đến`,peakTimezoneLabel:`Múi giờ`,peakUseBrowserTimezone:`Dùng múi giờ của trình duyệt`,peakTimezoneInvalid:`Múi giờ không xác định.`,peakExemptNote:`Preset này không bị ảnh hưởng — nó vốn đã nằm ở một đầu của cán cân tốc độ/độ tin cậy.`,title:`Chiến lược định tuyến`,description:`Chọn một chiến lược định tuyến. Ở chế độ Thủ công, bạn kéo để đặt thứ tự; các chiến lược khác định tuyến theo điểm số trực tiếp dựa trên độ tin cậy, tốc độ và trí thông minh.`,weightsSummary:`độ tin cậy {reliability}% · tốc độ {speed}% · trí thông minh {intelligence}%`,guardrails:`Lan can`,guardrailsTooltip:`Các rào chắn luôn sẵn sàng: khoảng trống hạn ngạch miễn phí × hình phạt giới hạn tỷ lệ trực tiếp. Dưới 1,0 có nghĩa là mô hình đang bị giữ lại.`,scoreTooltip:`Điểm định tuyến cuối cùng = điểm trung bình có trọng số của ba trục, nhân với lan can. Các tuyến đường cao hơn đầu tiên.`,modeManualHint:`Chế độ thủ công: các yêu cầu thực hiện theo thứ tự bên dưới, từ trên xuống dưới. Kéo để sắp xếp lại.`,modeScoreHint:`Cập nhật điểm từ giao thông trực tiếp. Thứ tự dưới đây là cách các yêu cầu được định tuyến ngay bây giờ.`,manual:`Hướng dẫn sử dụng`,manualBlurb:`Lộ trình theo đúng thứ tự bạn đặt bên dưới. Kéo tay cầm để sắp xếp lại. Không ghi điểm; chuỗi được theo dõi từ trên xuống dưới.`,balanced:`Cân bằng`,balancedBlurb:`Dẫn đầu về độ tin cậy (50%), với tốc độ và trí thông minh có trọng số ngang nhau (mỗi loại 25%). Một mặc định hợp lý toàn diện.`,smartest:`Thông minh nhất`,smartestBlurb:`Thích mô hình có khả năng nhất mà vẫn hoạt động. Trí tuệ 55%, độ tin cậy 35%, tốc độ 10%.`,fastest:`Nhanh nhất`,fastestBlurb:`Thích mô hình nhanh nhất mà vẫn hoạt động. Tốc độ 55%, độ tin cậy 35%, trí thông minh 10%.`,reliable:`Đáng tin cậy nhất`,reliableBlurb:`Tối đa hóa tỷ lệ thành công trên hết. Độ tin cậy 70%, tốc độ và trí thông minh mỗi loại 15%.`,custom:`tùy chỉnh`,customBlurb:`Đặt sự cân bằng của riêng bạn về độ tin cậy, tốc độ và trí thông minh bằng thanh trượt. Công cụ tương tự như các cài đặt trước, chỉ có trọng lượng của bạn.`,adjust:`điều chỉnh`,customWeights:`Trọng lượng tùy chỉnh`,customWeightsHelp:`Thanh trượt độc lập; cổ phiếu tự động cân bằng đến 100%.`,weightReliability:`Độ tin cậy`,weightSpeed:`Tốc độ`,weightIntelligence:`Tình báo`,weightRequired:`Ít nhất một trọng lượng phải trên 0.`,scoreColumn:`Điểm`},penaltyInspector:{title:`Áp lực bộ định tuyến`,subtitle:`Các hình phạt, thời gian hồi chiêu và thất bại từ phút {minutes} cuối cùng`,rowCount:`{count} đang hoạt động`,offChain:`ngoài chuỗi`,penaltyValue:`Phạt đền {value}`,factor:`điểm x{factor}`,noCooldown:`Không có thời gian hồi chiêu`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Xóa tất cả`,clearAllHint:`Gỡ ngay mọi thời gian chờ, hình phạt và chuỗi lỗi. Áp lực được xây lại từ các kết quả thực tiếp theo.`,errorsHeading:`{count} lỗi gần đây`,noRecentErrors:`Không có lỗi gần đây`,noKey:`không có chìa khóa`,reasons:{penalty:`bị phạt`,cooldown:`thời gian hồi chiêu`,recent_errors:`thất bại`}},keys:JSON.parse(`{"pageTitle":"Phím","pageDescription":"Thông tin đăng nhập của nhà cung cấp và khóa API hợp nhất mà ứng dụng của bạn kết nối.","tabProviders":"Nhà cung cấp","checklistSummary":"Đã cấu hình {configured} trong {total} nhà cung cấp","checklistKeyless":"không cần khóa","checklistNoKeyTip":"Chưa thêm khóa nào. Nhấp để thêm.","checklistSignupLink":"Mở {provider} để tạo tài khoản và lấy khóa","checklistKeylessTip":"Hoạt động mà không cần khóa.","tabQuotaSignals":"tín hiệu hạn ngạch","tabApiKey":"Khóa API hợp nhất","tabAnthropic":"Anthropic","unifiedKey":"Khóa API hợp nhất của bạn","regenerate":"tái sinh","showKey":"Hiển thị","hideKey":"Ẩn","copyKey":"Sao chép","copyFullKey":"Sao chép toàn bộ khóa","copiedKey":"Đã sao chép","baseUrl":"Căn cứ URL","endpointChat":"Trò chuyện","endpointResponses":"Phản hồi","endpointEmbeddings":"Nhúng","endpointEmbeddingsHint":"model: \\"auto\\" hoặc một họ từ tab Nhúng","endpointMessages":"Tin nhắn","endpointMessagesHint":"Tương thích với Anthropic (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Model Claude (Anthropic)","anthropicDesc":"Trỏ ứng dụng khách SDK Claude hoặc Anthropic vào máy chủ này. Máy khách Anthropic gửi tên mẫu Claude - ánh xạ từng tên vào Tự động (bộ định tuyến chọn một mẫu miễn phí) hoặc ghim một mẫu cụ thể.","anthropicBaseUrl":"Căn cứ URL","anthropicAuth":"Tiêu đề xác thực","anthropicAuto":"Tự động - bộ định tuyến chọn mô hình tốt nhất","anthropicSave":"Lưu bản đồ","anthropicSaved":"Đã lưu","anthropicNote":"Máy khách Anthropic giữ nguyên tên mẫu Claude tích hợp của chúng; ánh xạ ở trên quyết định cách mỗi tuyến đường vào nhóm của bạn.","familyDefault":"Mặc định","familyOpus":"tác phẩm","familySonnet":"bài sonnet","familyHaiku":"thơ haiku","selectPlatform":"Chọn nhà cung cấp","addKey":"Thêm khóa","keyAdded":"Đã thêm khóa","endpointKeysShareModels":"Các khóa của cùng một endpoint dùng chung các mô hình của nó.","export":"Xuất khẩu","exportAll":"Tất cả các phím","exportHealthy":"Chỉ khỏe mạnh","exportKeys":"Xuất khóa API","exportFormat":"định dạng","exportHealthyOnly":"Chỉ có phím khỏe mạnh","exportHealthyOnlyDesc":"Loại trừ các khóa hiện không đạt yêu cầu kiểm tra tình trạng","exportWillExport":"Sẽ xuất khẩu","exportKey":"chìa khóa","exportKeys plural":"phím","exporting":"Đang xuất…","exportDownload":"Tải xuống","exportSuccess":"Đã xuất khóa {count}","adding":"Đang thêm…","selectProvider":"Chọn nhà cung cấp…","accountId":"ID tài khoản","label":"Nhãn","noKeyNeeded":"(không cần chìa khóa)","outboundProxy":"Proxy đi","outboundProxyDescription":"Định tuyến các yêu cầu LLM gửi đi thông qua proxy. Hỗ trợ SOCKS5, HTTP và HTTPS.","proxyUrl":"Ủy quyền URL","saveProxy":"Lưu","savingProxy":"Đang lưu…","proxyLoadFailed":"Không thể tải cài đặt proxy.","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"Thêm mô hình tương thích OpenAI tùy chỉnh","addCustomDescription":"Trò chuyện điểm, nhúng, hình ảnh hoặc mô hình âm thanh tại bất kỳ điểm cuối tương thích OpenAI nào. Khóa API là tùy chọn cho máy chủ cục bộ.","customType":"loại","customTypeChat":"Trò chuyện","customTypeEmbedding":"Nhúng","customTypeImage":"Hình ảnh","customTypeAudio":"Âm thanh","customTypeTranscription":"Transcription","customBaseUrl":"Căn cứ URL","customModels":"Người mẫu","customModel":"người mẫu","customDisplayName":"Tên hiển thị","customDisplayNamePerModel":"mỗi mô hình","customDisplayNameOptional":"tùy chọn","customFamily":"gia đình","customFamilyPlaceholder":"mặc định là id mẫu","customApiKey":"Phím API","customCapabilities":"Khả năng","addModel":"Thêm mô hình","modelAdded":"Đã thêm mô hình","addModels":"Thêm các mẫu {count}","addEmbeddingModel":"Thêm nhúng","addImageModel":"Thêm mô hình hình ảnh","addAudioModel":"Thêm mô hình âm thanh","addTranscriptionModel":"Add transcription model","addingCustom":"Đang thêm…","discoverModels":"Lấy danh sách mô hình","probeNow":"Kiểm thử endpoint","probeConfirm":"Gửi tối đa 3 yêu cầu thử nghiệm?","probeCapabilities":"suy luận: {reasoning} · công cụ: {tools}","probeCapYes":"có","probeCapNo":"không","probeCapUnknown":"không rõ","probeSuccess":"Đã kiểm thử {model} trong {latency}ms","probeFailed":"Kiểm thử thất bại: {reason}","discoverTitle":"Mô hình trên endpoint này","discoverHint":"Chọn mô hình cần đăng ký. Những mô hình đã thêm vẫn bị khóa.","discoverEmpty":"Endpoint này không trả về mô hình nào.","discoverAlreadyAdded":"Đã thêm","discoverSelectAll":"Chọn tất cả","modelsAdded":"Đã thêm {count} mô hình","getApiKey":"Nhận khóa API","deleteKeyConfirm":"Xóa khóa này? Điều này không thể hoàn tác được.","checkAll":"Kiểm tra tất cả","checking":"Đang kiểm tra…","editLabel":"Chỉnh sửa nhãn","saveLabel":"Lưu nhãn","unifiedKeyDescBefore":"Sử dụng cái này làm OpenAI của bạn","unifiedKeyDescAfter":"; nó xác thực các yêu cầu tới proxy này.","serverUnreachableBefore":"Không thể truy cập máy chủ trên","serverUnreachableAfter":". Hãy chắc chắn rằng phần phụ trợ đang chạy. npm run dev khởi động cả hai và nhật ký máy chủ được in dưới tiền tố máy chủ.","paneProviderKey":"Khóa nhà cung cấp","paneImportFile":"Nhập tập tin","paneCustomEndpoint":"Điểm cuối tùy chỉnh","platform":"Nền tảng","hideAdded":"Ẩn nhà cung cấp đã thêm","apiToken":"Mã thông báo API","keyOptionalPlaceholder":"Tùy chọn","bearerTokenPlaceholder":"Mã thông báo mang","pasteKeyPlaceholder":"dán chìa khóa vào đây","pasteSeveral":"Dán nhiều khóa","keyOptionalHint":"Tùy chọn: để trống để dùng gói miễn phí ẩn danh (giới hạn theo IP), hoặc dán khóa của bạn để dùng tài khoản của bạn.","enable":"Kích hoạt","noProviderKeys":"Chưa có khóa nhà cung cấp nào. Thêm một ở trên để bắt đầu định tuyến.","filterPlaceholder":"Lọc nhà cung cấp hoặc khóa","filterAll":"Tất cả","filterHealthy":"khỏe mạnh","filterIssues":"vấn đề","filterDisabled":"Đã tắt","noFilterMatch":"Không có nhà cung cấp nào phù hợp với bộ lọc của bạn.","providerCountSummary":"Nhà cung cấp {providers} · Khóa {keys}","summaryHealthy":"{count} khỏe mạnh","summaryIssueOne":"Sự cố {count}","summaryIssueOther":"Các vấn đề về {count}","providerActions":"Hành động của nhà cung cấp","routeViaProxy":"Định tuyến qua proxy","checkNow":"Kiểm tra ngay","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"Cũng có thể cấu hình thông qua","proxyEnvHintAfter":"biến môi trường (được ưu tiên). Để trống để vô hiệu hóa. Ví dụ:","importKeys":"Nhập khóa nhà cung cấp","importKeysDescription":"Tải lên các tệp .env, JSON, JSONC, CSV, Markdown hoặc tệp văn bản.","importFiles":"Tập tin","importFileCount":"{count} đã chọn","previewFiles":"Xem trước","previewing":"Đang xem trước…","selected":"Đã chọn","provider":"nhà cung cấp","keyName":"Tên khóa","keyValue":"Giá trị khóa","chooseProvider":"Chọn nhà cung cấp","noPreviewKeys":"Không tìm thấy khóa nào trong các tập tin đó.","skippedItems":"Đã bỏ qua:","moreItems":"+{count} thêm","importSelected":"Nhập {count}","importing":"Đang nhập khẩu…","noImportSelection":"Chọn ít nhất một hàng có nhà cung cấp.","duplicate":"trùng lặp","duplicatesFound":"Đã phát hiện thấy (các) bản sao {count} - đã tồn tại và sẽ bị bỏ qua.","importResult":"{imported} nhập khẩu; {failed} không thành công.","importModelCount":"+{count} mô hình","importResultWithModels":"{imported} nhập khẩu; đã đăng ký {models} mô hình; {failed} không thành công.","confirmRemove":"Xác nhận?","quotaSignalsTitle":"tín hiệu hạn ngạch","quotaSignalsEmptyTitle":"Chưa có quan sát hạn ngạch","quotaSignalsEmptyDesc":"Điều này sẽ điền sau khi nhà cung cấp trả lại tiêu đề giới hạn tỷ lệ, lỗi hạn ngạch hoặc tín hiệu xác thực.","quotaKeyRef":"phím #{id}","quotaPoolRef":"hồ bơi {pool}","quotaLimit":"giới hạn","quotaRemaining":"Còn lại","quotaReset":"Đặt lại","quotaObserved":"quan sát","tabAgents":"Tác nhân","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Ánh xạ mô hình Gemini","geminiDesc":"Ánh xạ tên Gemini Pro, Flash và Flash-Lite sang Auto hoặc một mô hình danh mục cụ thể.","compatibilityTitle":"Khả năng tương thích tác nhân","compatibilityDesc":"Kiểm soát các bề mặt tương thích tùy chọn và khám phá mô hình Claude Code.","ollamaMode":"Giả lập Ollama","ollamaModeHint":"Loopback mở không bao giờ chấp nhận lưu lượng LAN chưa xác thực.","ollamaOff":"Tắt","ollamaLoopback":"Mở trên loopback","ollamaKeyRequired":"Yêu cầu khóa API","claudeAliases":"Bí danh khám phá Claude Code","claudeAliasesHint":"Hiển thị bí danh claude/<model> để bộ chọn mô hình của cổng có thể liệt kê danh mục.","mcpServer":"Máy chủ MCP","mcpServerHint":"Mở endpoint /mcp cho các client tác nhân. Bản cài mới mặc định tắt.","urlTokensTitle":"Mã thông báo URL có thể thu hồi","urlTokensDesc":"Chỉ dành cho các ứng dụng khách không có tiêu đề. Mã thông báo URL có thể bị lộ vào lịch sử và nhật ký, vì vậy hãy thu hồi khi không còn cần thiết.","urlTokenLabel":"Nhãn mã thông báo","createUrlToken":"Tạo mã thông báo","urlTokenOnce":"Sao chép mã thông báo này ngay bây giờ. Nó sẽ không được hiển thị lại.","revoked":"Đã thu hồi","revoke":"Thu hồi","modelScope":"Phạm vi mô hình","modelScopeDesc":"Giới hạn khóa này cho các ID mô hình cụ thể. Bộ định tuyến bỏ qua khóa này với mọi mô hình khác.","modelScopeAdd":"Nhập ID mô hình rồi nhấn Enter","modelScopeEmpty":"Chưa đặt phạm vi — khóa này phục vụ mọi mô hình của nhà cung cấp.","modelScopeClear":"Xóa phạm vi","modelScopeBadgeOne":"giới hạn · 1 mô hình","modelScopeBadgeOther":"giới hạn · {count} mô hình","modelPicker":{"title":"Khóa này nên phục vụ những mô hình nào?","hint":"Khóa {provider} của bạn đã được thêm và hiện phục vụ mọi mô hình bên dưới. Hãy bỏ chọn những mô hình mà khóa này không được phép dùng — bộ định tuyến sẽ bỏ qua khóa này với chúng.","count":"Đã chọn {selected} trong {total}","allNote":"Đã chọn tất cả — sẽ không có gì được lưu, và các mô hình được thêm vào danh mục sau này cũng sẽ dùng khóa này.","subsetNote":"Khóa này sẽ chỉ giới hạn ở các mô hình đã chọn. Bạn có thể thay đổi sau tại hàng của khóa.","skip":"Để sau","scopedOne":"Khóa giới hạn ở 1 mô hình","scopedOther":"Khóa giới hạn ở {count} mô hình","allSaved":"Key serves every catalog model"},"cpTitle":"Hồ sơ client","cpDesc":"Khóa API riêng cho từng client, mỗi khóa có một system prompt mà máy chủ luôn áp dụng.","cpEmpty":"Chưa có hồ sơ client nào.","cpNameLabel":"Tên","cpNamePlaceholder":"vd: Bot hỗ trợ","cpPromptLabel":"System prompt (tùy chọn)","cpPromptPlaceholder":"Các chỉ dẫn máy chủ chèn vào đầu mọi yêu cầu dùng khóa này.","cpCreate":"Tạo hồ sơ","cpRotate":"Xoay khóa","cpKeyOnce":"Sao chép khóa này ngay — nó sẽ không được hiển thị lại.","cpEnabledAria":"Hồ sơ đang bật","selectKey":"Chọn khóa này","bulkSelected":"{count} đã chọn","bulkEnable":"Bật tất cả","bulkDisable":"Tắt tất cả","bulkDelete":"Xóa tất cả","bulkDeleteConfirm":"Xóa {count}?","bulkResult":"Đã cập nhật {done}; {failed} không thành công.","bulkDeleteResult":"Đã xóa {done}; {failed} không thành công.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Chỉnh sửa khóa","editPlatformLocked":"Không thể thay đổi nhà cung cấp hoặc endpoint sau khi tạo.","editCredentialHint":"Để trống để giữ khóa hiện tại.","editCredentialPartsRequired":"Nhập cả ID tài khoản và mã API.","editModels":"Chỉnh sửa mô hình","editModelsHint":"Choose which catalog models this key may serve. Select everything to clear the scope so future catalog models use it too.","editModelsCustomHint":"Choose which registered endpoint models this key may serve. Select everything to clear the scope.","editModelsSync":"Check catalog updates","editModelsSyncing":"Checking…","editModelsSynced":"Model catalog checked","outlookUnavailable":"Unavailable","outlookNoForecasts":"Forecast unavailable. More recent traffic or reliable quota readings are needed.","outlookCoverage":"Forecasts available for {count} of {total} pools.","outlookTraffic":"{count} successful requests through this instance in the last {minutes} minutes.","outlookMinimumTraffic":"An exhaustion forecast needs at least {count} successful requests within {minutes} minutes.","outlookNotReportedHint":"The provider has not reported a usable request balance and limit. Local usage is shown; remaining quota is unavailable.","outlookMissingResetHint":"The provider did not report a valid reset time. Remaining quota cannot support an exhaustion forecast.","outlookConfidenceHint":"This balance is not reliable enough for an exhaustion forecast.","outlookObserved":"Balance observed: {time}","outlookUnavailablePools":"Unavailable quota pools ({count})","outlookTitle":"Quota outlook","outlookInsufficient":"Not enough data","outlookLowBalance":"Low balance","outlookRunningLow":"Running low soon","outlookStale":"Needs fresh data","outlookUnknown":"Unknown","outlookWithinQuota":"Within quota","outlookResetsFirst":"Not before reset","outlookExhausted":"Already exhausted","outlookLastReported":"requests last reported","outlookRequestsLeft":"requests left","outlookNotReported":"Not reported","outlookRate":"Recent rate","outlookRateValue":"{count} req/min","outlookRunsOut":"May run out","outlookStaleHint":"This balance is old or its window has expired. A fresh provider reading is needed.","outlookError":"Could not load quota forecasts. Raw observations are still available below.","outlookRetry":"Retry","outlookAttention":"Quota pools needing attention: {count}","outlookNoWarnings":"No forecast warnings. Pools with insufficient data may still be limited.","outlookHint":"Rates count successful requests through this instance only, not usage elsewhere. Forecasts require recent provider balances and reported resets. Warnings appear below 20% remaining or when quota may run out within two hours, before reset.","outlookRaw":"Raw quota observations","addCustomModel":"Thêm mô hình tùy chỉnh","modelId":"Mã mô hình","modelIdRequired":"Mã mô hình là bắt buộc","modelDisplayName":"Tên hiển thị","modelContextWindow":"Cửa sổ ngữ cảnh (token)","modelRateLimits":"Giới hạn tốc độ (tùy chọn)","modelSupportsTools":"Hỗ trợ gọi công cụ","modelSupportsToolsHint":"Bật nếu mô hình này có thể thực thi các lệnh gọi hàm/công cụ","modelSupportsVision":"Hỗ trợ hình ảnh","modelSupportsVisionHint":"Bật nếu mô hình này chấp nhận đầu vào là hình ảnh","createModel":"Tạo mô hình","modelAddedSuccess":"Đã thêm mô hình tùy chỉnh thành công","modelAddFailed":"Không thể thêm mô hình tùy chỉnh","testModel":"Kiểm tra","testingModel":"Đang kiểm tra…","testPassedShort":"Đạt","testFailedShort":"Thất bại","testPassed":"Kiểm tra mô hình thành công trong {latency}ms","testFailed":"Kiểm tra mô hình thất bại","testThrottled":"Vui lòng đợi {seconds}s trước khi kiểm tra lại mô hình này.","noModelsForProvider":"Chưa có mô hình nào được cấu hình cho nhà cung cấp này.","testModels":"Kiểm tra mô hình","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"Không giới hạn","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} yêu cầu, {tokens} token tháng này","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`Backups`,description:`Save the routing data to a .sql file beside the database, and restore it later.`,excludedNote:`A backup carries your providers, models, routing settings and request history. Accounts, sessions and URL tokens are never included, so a dump holds no password hashes or login tokens and restoring one cannot log you out. Provider keys stay encrypted with this server's ENCRYPTION_KEY: a backup can only be restored on a server that still holds that key.`,selectHint:`Back up everything, or pick the tables you need.`,selectAll:`Select all`,deselectAll:`Clear`,fullBackup:`Full backup`,backupSelected:`Back up selected ({count})`,created:`Backup written to {filename}`,list:`Backups on disk`,empty:`No backups yet`,full:`All tables`,tablesCount:`{count} tables`,manual:`Manual`,scheduled:`Scheduled`,preRestore:`Pre-restore`,download:`Download`,restore:`Restore`,confirmRestore:`Replace data?`,restored:`Restored. The previous data was saved as {filename}.`,delete:`Delete backup`,prevPage:`Previous`,nextPage:`Next`,autoTitle:`Automatic backups`,autoHint:`The server writes a full backup on this cadence.`,time:`Time (HH:mm)`,intervalDays:`Every N days`,path:`Folder`,pathPlaceholder:`backups`,pathHint:`Relative to the database directory. Backups cannot be written outside it.`,save:`Save schedule`,saved:`Saved`},status:{healthy:`khỏe mạnh`,rateLimited:`giới hạn tỷ lệ`,invalid:`không hợp lệ`,error:`lỗi`,unchecked:`bỏ chọn`},analytics:{title:`Phân tích`,description:`Khối lượng yêu cầu, độ trễ, mức sử dụng mã thông báo và lỗi.`,range24h:`24 giờ`,range7d:`7 ngày`,range30d:`30 ngày`,range90d:`90 ngày`,requests:`Yêu cầu`,successRate:`Tỷ lệ thành công`,inputTokens:`Mã thông báo đầu vào`,outputTokens:`Mã thông báo đầu ra`,avgLatency:`Độ trễ trung bình`,p95Latency:`Độ trễ P95`,avgTtft:`Trung bình TTFT`,estSavings:`Ước tính. tiết kiệm`,requestsByProvider:`Yêu cầu của nhà cung cấp`,avgLatencyByProvider:`Độ trễ trung bình theo nhà cung cấp`,ttftByProvider:`Thời gian nhận được mã thông báo đầu tiên theo nhà cung cấp`,ttftEmpty:`Chưa có thời gian để ghi lại mã thông báo đầu tiên.`,requestsOverTime:`Yêu cầu theo thời gian`,tokensOverTime:`Token theo thời gian`,byModel:`Theo mô hình`,byPlatform:`Theo nền tảng`,errors:`Lỗi`,errorDistribution:`Phân phối lỗi`,pinnedRequests:`Yêu cầu được ghim`,pinnedHonored:`được vinh danh`,fallbackAttempts:`nỗ lực dự phòng`,savingsHint:"Bạn thực sự đã tiết kiệm được ${actual} trong {range} vừa qua. Đó là giá của các mã thông báo tương tự đối với các API trả phí, được định giá cho mỗi mô hình. Con số được hiển thị phản ánh tốc độ của bạn từ dữ liệu {span} cuối cùng đến đủ 30 ngày.",savingsHintExact:"Bạn thực sự đã tiết kiệm được ${actual} trong {range} vừa qua. Đó là giá của các mã thông báo tương tự đối với các API trả phí, được định giá cho mỗi mô hình. Con số hiển thị là tổng thời gian thực trong 30 ngày của bạn.",requestsHintPinned:`{pinned} trong số các yêu cầu này đã ghim một mẫu máy cụ thể theo tên. {honored} được phục vụ bởi mô hình được ghim; {failed} chuyển sang một cái khác không thành công. Phần còn lại được tự động định tuyến.`,requestsHintAuto:`Tất cả các yêu cầu trong giai đoạn này đều được định tuyến tự động; không có khách hàng nào ghim một mô hình cụ thể theo tên.`,requestsHintTypes:`Yêu cầu trò chuyện {chat} và nhúng {embedding}.`,rangeLabel24h:`24 giờ`,rangeLabel7d:`7 ngày`,rangeLabel30d:`30 ngày`,rangeLabel90d:`90 ngày`,spanDays:`{count} ngày`,spanHours:`{count} giờ`,latencyMs:`Độ trễ (ms)`,latency:`Độ trễ`,pinned:`Đã ghim`,inTokens:`Bằng token`,outTokens:`Mã thông báo ra`,saved:`Đã lưu`,message:`Tin nhắn`,time:`thời gian`,perModelBreakdown:`Phân tích theo từng mô hình`,usageByKey:`Cách sử dụng theo khóa`,keyColumn:`Chìa khóa`,keyLabelFallback:`Khóa #{id}`,errorsByProvider:`Lỗi do nhà cung cấp`,recentErrors:`Lỗi gần đây`,noErrors:`Không có lỗi`,recentCalls:`Cuộc gọi gần đây`,clientIp:`IP khách hàng`,clientAgent:`Ứng dụng khách`,requestedModelHint:`{model} được yêu cầu, được cung cấp bởi dự phòng`,attempts:`Nỗ lực`,filterAll:`Tất cả`,filterCanceled:`Đã hủy`,providerBreakdown:`Phân tích theo nhà cung cấp`,tokensPerSec:`Tok/giây`,allProviders:`Tất cả các nhà cung cấp`,requestDetailTitle:`Yêu cầu #{id}`,failoverLadder:`Thang chuyển đổi dự phòng`,failoverLadderHint:`Mỗi bước nhảy mà yêu cầu này thực hiện qua chuỗi dự phòng theo thứ tự.`,noAttemptTrace:`Không có dấu vết nỗ lực nào được ghi lại cho yêu cầu này.`,keyOrdinal:`phím #{n}`,keyBadge:`Khóa #{n}`,attemptTimingHint:`Bắt đầu bù đắp từ khi bắt đầu yêu cầu · thời gian thử`,requestedModel:`Mô hình được yêu cầu`,ttft:`TTFT`,requestsByAgent:`Yêu cầu theo tác nhân`,sortBy:`Sắp xếp theo {column}`,sortHint:`Sắp xếp chỉ áp dụng cho {count} hàng đã tải`,cacheHitRate:`Tỷ lệ trúng bộ nhớ đệm`,cacheSavedTokens:`Tiết kiệm {tokens} token`,cacheHitRateHint:`{hits} lần trúng so với {misses} lần trượt kể từ khi máy chủ khởi động · tránh được {requests} lượt gọi nhà cung cấp`},logs:{title:`Nhật ký`,description:`Nhật ký máy chủ trực tiếp. Mục mới sẽ hiện dần khi trang đang mở.`,pause:`Tạm dừng`,resume:`Tiếp tục`,clear:`Xóa nhật ký`,cleared:`Đã xóa nhật ký máy chủ`,levelFilter:`Mức nhật ký`,levels:{debug:`Gỡ lỗi`,info:`Thông tin`,warn:`Cảnh báo`,error:`Lỗi`},countsHint:`Số đếm là tổng của toàn bộ vùng đệm nhật ký trên máy chủ, không chỉ các mục khớp với những bộ lọc này.`,searchPlaceholder:`Tìm trong nội dung nhật ký…`,jumpToLatest:`Đến mục mới nhất`,showMore:`Xem thêm`,showLess:`Thu gọn`,buffered:`Đang hiển thị {count} trong tối đa {max} mục được lưu đệm`,emptyTitle:`Chưa có mục nhật ký nào`,emptyDescription:`Các mục sẽ xuất hiện ở đây khi máy chủ ghi nhật ký. Hãy nới rộng bộ lọc mức, nhà cung cấp hoặc tìm kiếm nếu bạn mong có kết quả.`,noLevelsTitle:`Chưa chọn mức nào`,noLevelsDescription:`Bật ít nhất một mức để xem nội dung nhật ký.`,loadFailed:`Không thể tải nhật ký máy chủ.`},playground:{title:`Sân chơi`,description:`Gửi thông báo hoàn thành trò chuyện qua bộ định tuyến và xem nhà cung cấp nào phục vụ nó.`,autoModel:`Tự động (chuỗi dự phòng)`,fusionModel:`Fusion (tổng hợp đa mô hình)`,selectModel:`Chọn mô hình`,searchModels:`Tìm kiếm mô hình…`,noModelsFound:`Không tìm thấy mô hình nào`,send:`Gửi`,sending:`Đang gửi…`,clear:`Xóa`,inputPlaceholder:`Nhập tin nhắn… (⏎ để gửi, ⇧⏎ cho dòng mới)`,emptyTitle:`Gửi tin nhắn để bắt đầu.`,emptyDescription:`Sử dụng {model}. Chuyển đổi mô hình trong bộ chọn ở trên.`,noModels:`Chưa có mô hình nào. Thêm khóa API trên trang Khóa để điền danh sách này.`,copyReply:`Sao chép câu trả lời`,fallback:`dự phòng`,fallbacks:`dự phòng`,fusionPanel:`bảng điều khiển`,fusionJudge:`Thẩm phán`,fusionTrace:`Phản hồi của mô hình {count}`,fusionFailed:`không có phản hồi`,fusionJudgeSynth:`tổng hợp đáp án cuối cùng`,errorPrefix:`Lỗi:`,systemPromptLabel:`Lời nhắc hệ thống`,systemPromptPlaceholder:`Tùy chọn. Được gửi dưới dạng tin nhắn hệ thống trước cuộc trò chuyện của bạn.`,showSettings:`Hiện cài đặt`,hideSettings:`Ẩn cài đặt`,samplingHeading:`Lấy mẫu`,samplingHelp:`Khi tắt, giá trị mặc định của chính nhà cung cấp sẽ được áp dụng. Chỉ những tùy chọn bạn bật mới được gửi đi.`,samplingDefault:`Mặc định`,temperature:`Nhiệt độ`,topP:`Top P`,maxTokens:`Số mã thông báo tối đa`,errorTitle:`Yêu cầu không thành công`,attach:`Đính kèm tệp`,attachTooMany:`Bạn có thể đính kèm tối đa {count} tệp cho mỗi tin nhắn.`,attachTooLarge:`{name} quá lớn. Giới hạn là {max}.`,attachUnsupported:`{name} không được hỗ trợ. Hãy đính kèm hình ảnh (PNG, JPEG, WebP, GIF) hoặc tệp văn bản (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Không thể đọc {name}.`,noVisionBadge:`Không hình ảnh`,visionWarning:`{model} không chấp nhận hình ảnh. Hãy chọn một mô hình hỗ trợ hình ảnh hoặc Tự động.`,dictate:`Đọc chính tả`,dictationStop:`Dừng ghi âm`,dictationTranscribing:`Đang chuyển thành văn bản…`,dictationUnavailable:`Thêm nhà cung cấp mô hình âm thanh để dùng đọc chính tả.`,dictationModel:`Mô hình đọc chính tả`,dictationFailed:`Chuyển văn bản thất bại: {reason}`,artifactOpen:`Mở bản xem trước`,artifactPreview:`Xem trước`,artifactCode:`Mã`,artifactClose:`Đóng bản xem trước`,artifactDownload:`Tải xuống`,artifactReload:`Tải lại bản xem trước`,artifactHtml:`Trang HTML`,artifactSvg:`Ảnh SVG`,artifactLines:`dòng`,artifactResize:`Đổi kích cỡ bản xem trước`},playgroundSessions:{heading:`Cuộc trò chuyện`,newConversation:`Cuộc trò chuyện mới`,showSidebar:`Hiện cuộc trò chuyện`,hideSidebar:`Ẩn cuộc trò chuyện`,empty:`Chưa có cuộc trò chuyện nào được lưu.`,untitled:`Cuộc trò chuyện chưa đặt tên`,rename:`Đổi tên`,renamePlaceholder:`Tên cuộc trò chuyện`,messageCount:`{count} tin nhắn`,justNow:`vừa xong`,minutesAgo:`{count} phút trước`,hoursAgo:`{count} giờ trước`,daysAgo:`{count} ngày trước`,loadFailed:`Không thể mở cuộc trò chuyện đó.`,renameFailed:`Không thể đổi tên cuộc trò chuyện đó.`,deleteFailed:`Không thể xóa cuộc trò chuyện đó.`,actions:`Thao tác hội thoại`,newChat:`Cuộc trò chuyện mới`},embeddings:{title:`Người mẫu`,description:`Việc nhúng không thành công chỉ trong một dòng: cùng một mô hình do nhà cung cấp khác cung cấp. Các vectơ từ các kiểu máy khác nhau không tương thích, vì vậy bộ định tuyến không bao giờ hoán đổi các kiểu máy trên bạn.`,defaultBadge:`Mặc định · tự động`,makeDefault:`Đặt làm mặc định`,moveUp:`Di chuyển lên`,moveDown:`Di chuyển xuống`,usageToday:`{count} yêu cầu hôm nay`,usageMonth:`{count} tok tháng này`,autoDescription:`model: "auto" trên POST /v1/embeddings định tuyến đến họ mặc định. Việc đặt tên cho một họ (hoặc id mô hình nhà cung cấp) sẽ ghim họ đó; các nhà cung cấp bên trong nó được thử theo thứ tự.`,unsavedChanges:`Những thay đổi chưa được lưu`,saveChanges:`Lưu thay đổi`,savingChanges:`Đang lưu…`,tokMax:`{tokens} đạt mức tối đa`,emptyTitle:`Chưa có mô hình nhúng nào`,emptyDesc:`Nhóm nhúng xuất hiện ở đây sau khi bạn thêm khóa nhà cung cấp hỗ trợ nhúng.`,dragToReorder:`Kéo để sắp xếp lại nhà cung cấp`},fusion:{title:`Sự kết hợp`,description:`Một nhóm người mẫu trả lời song song, sau đó giám khảo tổng hợp một câu trả lời mạnh hơn. Sử dụng nó bằng cách gọi API với mô hình "kết hợp".`,panelSource:`Nguồn bảng điều khiển`,panelSourceHelp:`Các mô hình bảng điều khiển đến từ đâu khi một yêu cầu không chỉ định chính nó.`,mode:{auto:`Tự động (Chuỗi dự phòng)`,autoHelp:`Chọn một tập hợp mô hình đa dạng từ Chuỗi dự phòng, được xếp hạng theo chiến lược định tuyến đang hoạt động của bạn.`,explicit:`Bảng điều khiển rõ ràng`,explicitHelp:`Luôn sử dụng các mẫu cụ thể mà bạn chọn bên dưới.`},panelModels:`Mô hình bảng điều khiển`,selectedCount:`{count} của {max} đã chọn`,noModels:`Chưa có mô hình nào được kết nối. Thêm khóa API, sau đó kích hoạt các mô hình trong Chuỗi dự phòng.`,panelSize:`Kích thước bảng điều khiển`,panelSizeHelp:`Có bao nhiêu mẫu đa dạng để tự động chọn (1–{max}).`,judge:`Mô hình thẩm phán`,judgeHelp:`Mô hình tổng hợp các câu trả lời của hội đồng thành một. Tự động sử dụng mô hình có sẵn được xếp hạng hàng đầu của bạn.`,judgeAuto:`Tự động (có sẵn xếp hạng cao nhất)`,strategy:`Chiến lược`,strategySynthesize:`Tổng hợp - trộn bảng thành một câu trả lời`,strategyBestOf:`Tốt nhất - trả lại câu trả lời mạnh nhất (không có quyết định của thẩm phán)`,strategySynthesizeShort:`Tổng hợp`,strategyBestOfShort:`Tốt nhất của`,exposePanel:`Hiển thị chi tiết bảng điều khiển`,exposePanelHelp:`Đính kèm câu trả lời của từng mô hình và siêu dữ liệu đánh giá trong trường x_fusion trong phản hồi.`,howToUse:`Cách sử dụng`,howToUseHelp:`Gửi yêu cầu trò chuyện bình thường với mô hình "fusion". Các cài đặt này là mặc định; mọi yêu cầu đều có thể ghi đè chúng bằng trường "kết hợp".`,unsavedChanges:`Những thay đổi chưa được lưu`,save:`Lưu`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Cao cấp`,description:`Danh mục mô hình trực tiếp trên mọi thiết bị.`,loading:`Đang tải…`,checkForUpdates:`Kiểm tra các bản cập nhật`,syncing:`Đang đồng bộ hóa…`,catalogFeed:`Nguồn cấp dữ liệu danh mục`,liveFeed:`Nguồn cấp dữ liệu trực tiếp`,monthlySnapshot:`Ảnh chụp nhanh hàng tháng`,lastChecked:`Kiểm tra lần cuối: {when}`,liveDescription:`Các mô hình miễn phí mới, thay đổi hạn ngạch và các bản sửa lỗi bất thường sẽ có mặt ở đây trong vòng vài giờ sau khi được vận chuyển. Ứng dụng sẽ tự động kiểm tra hai lần một ngày; không có gì để làm`,snapshotDescription:`Cấp miễn phí: danh mục được làm mới từ ảnh chụp nhanh hàng tháng, được kiểm tra tự động hai lần một ngày. Premium chuyển phần này sang nguồn cấp dữ liệu trực tiếp, được cập nhật 2-3 ngày một lần.`,lastSyncProblem:`Sự cố đồng bộ hóa lần cuối: {error}`,license:`Giấy phép`,planAnnual:`Phí bảo hiểm hàng năm`,planLifetime:`Cao cấp trọn đời`,expired:`Đã hết hạn`,inactive:`Không hoạt động`,lifetimeNote:`Giấy phép trọn đời: không bao giờ hết hạn.`,renewsOn:`Gia hạn trên {date}.`,willNotRenew:`Sẽ không gia hạn. Trả phí cho đến {date}, sau đó bản cài đặt này sẽ quay trở lại danh mục miễn phí hàng tháng.`,keyInactive:`Phím này không còn hoạt động nữa. Ứng dụng tiếp tục hoạt động trên danh mục miễn phí hàng tháng.`,manageSubscription:`Quản lý đăng ký`,openingPortal:`Khai mạc…`,removeKey:`Xóa khóa khỏi thiết bị này`,manageHint:`Quản lý đăng ký sẽ mở cổng thanh toán của Stripe: hủy, cập nhật thẻ của bạn hoặc tải xuống hóa đơn. Việc tháo chìa khóa chỉ làm vô hiệu hóa thiết bị này; giao dịch mua hàng của bạn không bị ảnh hưởng.`,licenseKey:`Mã cấp phép`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Kích hoạt`,activating:`Đang kích hoạt…`,keyHint:`Chìa khóa của bạn nằm trong email mua hàng và trên trang sau thanh toán. Mất nó?`,recoverKey:`Khôi phục nó trên trang web`,upsellTitle:`Phát trực tiếp với giá 19 USD một năm`,upsellDescription:`Các mô hình miễn phí mới ngay khi chúng tồn tại, thay vì 30 ngày sau. Một chìa khóa cho mọi thiết bị. Hủy bỏ bất cứ lúc nào; bộ định tuyến sẽ miễn phí mãi mãi.`,goPremium:`Đi trả phí`,bundled:`đi kèm`,planGeneric:`Cao cấp`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`Đã xảy ra lỗi`,boundaryDescription:`Bảng điều khiển gặp lỗi không mong muốn. Dữ liệu của bạn được an toàn. Hãy thử lại hoặc quay lại trang mô hình.`,tryAgain:`Thử lại`,goHome:`Quay lại mô hình`},notFound:{title:`Không tìm thấy trang`,description:`Trang này không tồn tại hoặc có thể đã di chuyển.`},setup:{title:`Bắt đầu`,subtitle:`Ba bước để định tuyến yêu cầu đầu tiên của bạn.`,progress:`{done} của {total}`,step1Title:`Thêm khóa nhà cung cấp`,step1Desc:`Kết nối ít nhất một tài khoản nhà cung cấp. Phím miễn phí hoạt động.`,step1Cta:`Thêm phím`,step2Title:`Gửi yêu cầu kiểm tra`,step2Desc:`Chọn bất kỳ mô hình nào trong Sân chơi và nói xin chào.`,step2Cta:`Sân chơi mở`,step3Title:`Kết nối ứng dụng của bạn`,step3Desc:`Sử dụng khóa API hợp nhất của bạn với bất kỳ ứng dụng khách nào tương thích với OpenAI.`,copyKey:`Sao chép khóa API`,copyUrl:`Sao chép cơ sở URL`,copiedKey:`Đã sao chép khóa API vào bảng nhớ tạm`,copiedUrl:`Đã sao chép cơ sở URL vào khay nhớ tạm`},palette:{title:`Bảng lệnh`,placeholder:`Tìm kiếm trang, mô hình, hành động…`,empty:`Không có kết quả`,groupPages:`Trang`,groupActions:`hành động`,groupModels:`Người mẫu`,toggleTheme:`Chuyển đổi chế độ tối`},validation:{required:`Bắt buộc`,url:`Nhập URL hợp lệ bắt đầu bằng http:// hoặc https://`,email:`Nhập địa chỉ email hợp lệ`,passwordMin:`Ít nhất ký tự {min}`},agents:{title:`Tác nhân lập trình`,description:`Kết nối các công cụ lập trình với một cổng mô hình miễn phí duy nhất bằng cấu hình được tạo sẵn, an toàn khi sao lưu.`,apiKey:`Khóa API`,quickstartTitle:`Bắt đầu nhanh`,quickstart:`Cách nhanh nhất: cấu hình Claude Code từ danh mục trực tiếp.`,currentKey:`Khóa hợp nhất hiện tại:`,seenRecently:`Xuất hiện gần đây`,setupLabel:`Thiết lập tự động`,setupHint:`Tự ghi tệp cấu hình của công cụ này, trỏ tới cổng kết nối này.`,setupGuideHint:`In các bước thiết lập của công cụ này; không ghi tệp nào.`,manualLabel:`Kết nối thủ công`,manualHint:`URL cơ sở và khóa để nhập vào cài đặt của chính công cụ.`,endpoint:`Điểm cuối`,documentation:`Tài liệu`,descriptions:{claude:`Tác nhân dòng lệnh của Anthropic: lên kế hoạch, sửa tệp và chạy lệnh trong kho mã của bạn.`,codex:`Tác nhân dòng lệnh của OpenAI, chạy thử tác vụ trong hộp cát cục bộ trước.`,cline:`Tiện ích VS Code, hỏi bạn duyệt từng chỉnh sửa và từng lệnh.`,continue:`Tiện ích cho VS Code và JetBrains: gợi ý tự động và trò chuyện ngay khi gõ.`,aider:`Bạn lập trình cặp trên dòng lệnh, biến mỗi thay đổi thành một commit git riêng.`,opencode:`Tác nhân dòng lệnh không phụ thuộc nhà cung cấp, với giao diện văn bản toàn màn hình.`,goose:`Tác nhân cục bộ của Block, mở rộng bằng máy chủ MCP để vượt ra ngoài mã nguồn.`,qwen:`Nhánh của Gemini CLI, tinh chỉnh cho các mô hình Qwen và kho mã lớn.`,roo:`Tiện ích VS Code với các chế độ chuyển đổi: kiến trúc sư, lập trình viên, gỡ lỗi.`,kilo:`Tiện ích VS Code hợp nhất Roo và Cline, có bộ điều phối chia nhỏ công việc.`,crush:`Tác nhân dòng lệnh của Charm, viết bằng Go, mỗi dự án một phiên.`,dsh:`Bộ khung của DeepSeek, giữ mỗi nhà cung cấp thành một tuyến có thể chuyển đổi.`,mimo:`Tác nhân dòng lệnh của Xiaomi, nhánh của OpenCode, nhận mọi nhà cung cấp tương thích OpenAI.`,cursor:`Trình soạn thảo lấy AI làm gốc; đi qua đám mây của Cursor nên cần URL công khai.`,generic:`Mọi công cụ khác nói API OpenAI, thiết lập thủ công bằng URL cơ sở và khóa.`,atomcode:`Tác nhân dòng lệnh của AtomGit, viết bằng Rust, nhận mọi điểm cuối tương thích OpenAI.`,openclaw:`Trợ lý cá nhân luôn sẵn sàng, trả lời trên WhatsApp, Telegram, Discord và nhiều nền tảng khác ngay từ máy của bạn.`,hermes:`Tác nhân tự cải thiện của Nous Research với bộ nhớ lâu dài và kỹ năng, trong dòng lệnh hoặc trên các ứng dụng chat.`,pi:`Một tác nhân dòng lệnh tối giản mà bạn định hình bằng tiện ích mở rộng, kỹ năng và mẫu prompt của riêng mình.`}},update:{available:`New version available`,whatsNew:`What's new in v{version}`,publishedOn:`Published {date}`,noNotes:`No release notes were published for this version.`,openRelease:`Open release page`,dismissVersion:`Dismiss this version`,dismiss:`Dismiss`},freeTier:{poolsToggle:`Nhóm hạn mức miễn phí ({count})`,poolsToggleBare:`Nhóm hạn mức miễn phí`,summary:`{pools} nhóm · {budget} token/tháng, mỗi nhóm chỉ tính một lần · {credits} theo tín dụng · {unpublished} chưa công bố`,pool:`Nhóm`,models:`Mô hình`,budget:`Hạn mức hàng tháng`,kind:`Loại`,kindDocumented:`Đã công bố`,kindCredits:`Tín dụng`,kindUnpublished:`Chưa công bố`,remaining:`Còn lại`,resetAt:`Đặt lại lúc`,disabledModels:`({count} đã tắt)`,metricTokens:`token`,metricRequests:`yêu cầu`,metricCredits:`tín dụng`,metricNeurons:`nơ-ron`,metricOther:`đơn vị`,empty:`Không có mô hình đang bật nào có dữ liệu hạn mức miễn phí.`,poolLabel:`{platform} · shared {scope} pool`,poolLabelBare:`{platform} · shared pool`,poolModels:`{count} models`,poolBudget:`{budget}/mo`,poolBudgetTitle:`One monthly allowance for the whole pool, scaled by the {count} usable keys on this platform. Every model listed under it draws from the same budget.`,poolNoQuota:`no published quota`,poolResets:`resets {time}`,independentBudgets:`independent budgets`},chains:{title:`Chuỗi dự phòng`,description:`Các chuỗi có tên, mỗi chuỗi gọi được bằng auto:<name> trong /v1/models.`,count:`{count} chuỗi`,active:`Đang dùng`,default:`Mặc định`,activate:`Kích hoạt`,activateHint:`Để bảng bên dưới chỉnh sửa chuỗi này và định tuyến auto đi qua nó`,deleteHint:`Xoá chuỗi này`,deleteConfirm:`Xoá chuỗi "{name}"?`,create:`Tạo`,createPlaceholder:`Tên chuỗi`,createFailed:`Không tạo được chuỗi.`,nameRules:`Tối đa 20 ký tự: chữ cái, chữ số, gạch nối và gạch dưới.`,startEmpty:`Bắt đầu rỗng`,startEmptyHint:`Tạo chuỗi không có mô hình nào và không tự thêm mô hình mới từ danh mục. Bỏ chọn thì chuỗi bắt đầu như bản sao của chuỗi mặc định.`,curated:`Tự chọn`,curatedHint:`Mô hình mới trong danh mục không được thêm tự động vào chuỗi này.`,renameHint:`Đổi tên chuỗi này`,renameConfirm:`Đổi tên chuỗi "{oldName}" thành "{name}"? Các client gọi auto:{oldName} phải chuyển sang auto:{name}.`,renamePlaceholder:`Tên chuỗi mới`,renameFailed:`Không thể đổi tên chuỗi.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
@@ -0,0 +1 @@
1
+ var e={nav:{models:`Awọn awoṣe`,playground:`Ibi isereile`,keys:`Awọn bọtini`,analytics:`Atupale`,premium:`Ere`,upgrade:`Igbesoke`,settings:`Eto`,signOut:`Wọlé jade`,openMenu:`Ṣii akojọ aṣayan lilọ kiri`,switchLight:`Yipada si akori ina`,switchDark:`Yipada si akori dudu`,switchToChinese:`Yipada si Kannada`,switchToEnglish:`Yipada si English`,modelsMenu:`Kiri awoṣe orisi`,agents:`Awọn aṣoju`,logs:`Àkọọlẹ`,analyticsMenu:`Awọn oju-iwe atupale`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Ṣẹda akọọlẹ rẹ`,signIn:`Wọle`,email:`Imeeli`,password:`Ọrọigbaniwọle`,emailPlaceholder:`ìwọ@example.com`,passwordPlaceholderSetup:`o kere 8 ohun kikọ`,passwordPlaceholderLogin:`ọrọ aṣínà rẹ`,setupDescription:`Ṣeto imeeli ati ọrọ igbaniwọle ti yoo daabobo dasibodu yii.`,loginDescription:`Wọle lati ṣakoso awọn bọtini rẹ, ipa-ọna, ati awọn atupale.`,createAccount:`Ṣẹda iroyin`,creating:`Ṣiṣẹda…`,signingIn:`Wọlé…`,loading:`Nkojọpọ…`,newPasswordAutoComplete:`titun-ọrọigbaniwọle`,currentPasswordAutoComplete:`lọwọlọwọ-ọrọigbaniwọle`,serverUnreachableBefore:`Ko le de ọdọ olupin naa. Rii daju pe ẹhin naa nṣiṣẹ (`,serverUnreachableAfter:`).`,setupCode:`koodu iṣeto`,setupCodePlaceholder:`koodu lati awọn olupin àkọọlẹ`,setupCodeHint:`Ṣiṣeto lati ẹrọ miiran nilo koodu-akoko kan ti a tẹ sinu awọn akọọlẹ olupin ni ibẹrẹ.`,changePassword:`Yí ọ̀rọ̀ aṣínà padà`,changeEmail:`Yí ìmẹ́lì padà`,forgotPassword:`Ṣé o gbàgbé ọ̀rọ̀ aṣínà?`,currentPassword:`Ọ̀rọ̀ aṣínà lọ́wọ́lọ́wọ́`,newPassword:`Ọ̀rọ̀ aṣínà tuntun`,newEmail:`Ìmẹ́lì tuntun`,resetCode:`Kóòdù àtúnṣe`,resetCodePlaceholder:`kóòdù láti inú ìwé ìṣẹ̀lẹ̀ olùpèsè`,resetCodeHint:`Kóòdù náà wà nínú ìwé ìṣẹ̀lẹ̀ olùpèsè. A kì í fi ímeèlì rán an láé.`,forgotPasswordDescription:`Tẹ bọ́tìnì ìsàlẹ̀ láti ṣẹ̀dá kóòdù àtúnṣe. A kọ kóòdù náà sínú ìwé ìṣẹ̀lẹ̀ olùpèsè, a kì í fi ímeèlì rán an láé. Tẹ̀ ẹ́ síbí láti ṣàgbékalẹ̀ ọ̀rọ̀ aṣínà tuntun.`,requestResetCode:`Fi kóòdù ránṣẹ́`,requestingResetCode:`Ń fi ránṣẹ́…`,resetPassword:`Tún ọ̀rọ̀ aṣínà ṣe`,resettingPassword:`Ń tún ṣe…`,changingPassword:`Ń yí padà…`,changingEmail:`Ń yí padà…`,backToLogin:`Padà sí ìwọlé`,passwordChanged:`A yí ọ̀rọ̀ aṣínà padà.`,emailChanged:`A yí ìmẹ́lì padà.`,passwordReset:`A tún ọ̀rọ̀ aṣínà ṣe. Jọ̀wọ́ wọlé.`,resetCodeDockerHint:`Ṣé o ń lo Docker? Kóòdù náà wà nínú ìwé ìṣẹ̀lẹ̀ kọ́ntéènà: docker logs <container>.`,desktopSessionFailed:`Dáṣíbọ́ọ̀dù kò lè wọlé sí olùpèsè agbègbè. Pa SRouter, kí o sì tún ṣí i.`},common:{save:`Fipamọ`,saving:`Nfipamọ…`,cancel:`Fagilee`,discard:`Jabọ`,delete:`Paarẹ`,confirm:`Jẹrisi`,copy:`Daakọ`,copied:`Ti daakọ`,copyFailed:`Kò ṣeé daakọ — yan ọ̀rọ̀ náà kí o sì daakọ pẹ̀lú ọwọ́`,show:`Fihan`,hide:`Tọju`,apply:`Waye`,applied:`Ti a lo`,applying:`Nbere…`,active:`Ti nṣiṣe lọwọ`,inactive:`Aiṣiṣẹ`,never:`rara`,loading:`Nkojọpọ…`,error:`Asise`,noData:`Ko si data sibẹsibẹ`,unsavedChanges:`Awọn iyipada ti ko ni fipamọ`,saveChanges:`Fi awọn ayipada pamọ`,remove:`Yọ kuro`,unknownError:`Aṣiṣe aimọ`,model:`Awoṣe`,provider:`Olupese`,success:`Aseyori`,failures:`Awọn ikuna`,dismiss:`Yọọ kuro`,status:`Ipo`},settings:{title:`Eto`,language:`Ede`,theme:`Akori`,themeSystem:`Eto`,themeLight:`Imọlẹ`,themeDark:`Dudu`,searchLanguage:`Wa awọn ede…`,noLanguages:`Ko si awọn ede ti a rii`,sections:`Awọn apakan eto`,sectionGeneral:`Gbogbogbo`,sectionCompression:`Ifunpọ`,sectionAdvanced:`Ilọsiwaju`,sectionPreview:`Awotẹlẹ`,generalDescription:`Ede ati irisi dasibodu yii.`,advancedDescription:`Awọn ààlà ati awọn àmúyẹ ààbò fun ìlànà ifunpọ.`,compressionTitle:`Ifunpọ ilana`,compressionDescription:`Din iwọn ibeere ku ṣaaju ipa ọna lakoko ti o n tọju koodu, awọn aṣiṣe, awọn ipa ọna, awọn nọmba, ati awọn itumọ irinṣẹ.`,compressionHelp:`Ó tún ìbéèrè kọọkan kọ ṣaaju kí a tó rán an sí olupese kí ó lè lo àmi díẹ̀. A ń dáàbò bo koodu, awọn aṣiṣe, awọn ipa ọna faili ati awọn nọmba, a sì ń kọ èyíkéyìí àtúnkọ tí ó bà wọ́n jẹ́ sílẹ̀.`,compressionMode:`Ipo`,compressionModeHelp:`Paa ń rán awọn ibeere láìsí ìyípadà. Laisi pipadanu ń yọ ọrọ tí a tún ṣe ati èyí tí a ṣòfò kúrò nìkan. Boṣewa ń tún dín àbájáde irinṣẹ kù. Líle ń fún àwọn àyípo àtijọ́ pọ̀ síwájú síi.`,compressionOff:`Paa`,compressionLossless:`Laisi pipadanu`,compressionStandard:`Boṣewa`,compressionAggressive:`Líle`,compressionLossy:`Pẹlu pipadanu`,compressionEngines:`Awọn ẹrọ`,compressionEnginesHelp:`Ẹrọ kọọkan jẹ́ ìgbésẹ̀ àtúnkọ kan. Ipo ni ó pinnu àwọn ẹrọ tí yóò ṣiṣẹ́; pípa ọ̀kan níbí ń mú un kúrò nínú gbogbo ipo.`,engineDedup:`Awọn bulọọki tí a tún ṣe`,engineDedupHelp:`Ó fi ìtọ́kasí kúkúrú rọ́pò bulọọki ọrọ tí ó ti farahàn tẹ́lẹ̀ nínú ìjíròrò.`,engineLite:`Ìmọ́tótó àyè òfìfo`,engineLiteHelp:`Ó gé àwọn àyè ní ìparí ìlà, ó kó àwọn ìlà òfìfo tí a tún ṣe papọ̀, ó sì yọ àwọn ìfìránṣẹ́ ètò tí a tún ṣe kúrò.`,engineReadLifecycle:`Àwọn kíkà faili tí a ti rọ́pò`,engineReadLifecycleHelp:`Ó fi àkíyèsí rọ́pò kíkà faili tẹ́lẹ̀ nígbà tí a bá tún ka tàbí ṣàtúnṣe faili kan náà lẹ́yìn náà.`,engineToolfilter:`Àlẹmọ àbájáde irinṣẹ`,engineToolfilterHelp:`Ó dín àbájáde àṣẹ ati irinṣẹ kù bíi kíkọ́, àyẹ̀wò ati fífi sórí ẹrọ. Àwọn ìlà aṣiṣe ati ìtọpinpin àkópọ̀ máa ń wà nígbà gbogbo.`,engineJsoncompact:`Awọn tábìlì JSON`,engineJsoncompactHelp:`Ó tún àwọn akojọ JSON gígùn tí ó ní àwọn pápá kan náà kọ gẹ́gẹ́ bí tábìlì kúkúrú. Ó lè yí padà, nítorí náà kò sí ohun tí ó sọnù.`,engineRelevance:`Àlẹmọ ìbáṣepọ̀`,engineRelevanceHelp:`Ó yọ àwọn gbólóhùn tí kò ní ìbáṣepọ̀ tó pẹ̀lú ìfìránṣẹ́ tuntun kúrò nígbà tí ìfìránṣẹ́ bá kọjá ààlà ìwọ̀n rẹ̀.`,engineAging:`Àwọn àyípo àtijọ́`,engineAgingHelp:`Ó fún àwọn àyípo tí ó kọjá díẹ̀ tuntun pọ̀ sí àkópọ̀ kúkúrú tí ó tọ́jú àwọn ipa ọna, aṣiṣe ati ìpinnu.`,engineHardBudget:`Ààlà àmi`,engineHardBudgetHelp:`Ó yọ àwọn ìlà tí kò ṣe pàtàkì jùlọ kúrò títí tí ìbéèrè yóò fi bá àfojúsùn àmi mu.`,compressionAutoTrigger:`Bẹrẹ laifọwọyi loke awọn àmi ti a fojú díwọ̀n`,compressionAutoTriggerHelp:`Àwọn ìbéèrè tí a fojú díwọ̀n rẹ̀ ju iye àmi yìí lọ yóò yí padà sí Líle laifọwọyi. Fi sílẹ̀ ní òfìfo láti pa á.`,compressionPrefixFreeze:`Di awọn ìbẹ̀rẹ̀ ilana ti o tun nwaye`,compressionPrefixFreezeHelp:`Ó fi ilana ètò sílẹ̀ láìfọwọ́kàn nígbà tí a bá ti rí ọrọ kan náà ní ẹ̀ẹ̀mẹta, kí ìpamọ́ ilana ní ẹ̀gbẹ́ olupese lè máa ṣiṣẹ́ lọ.`,compressionTrustProjectFilters:`Gbẹkẹle awọn faili àlẹmọ iṣẹ akanṣe`,compressionTrustProjectFiltersHelp:`Ó tún ń kó àwọn àlẹmọ àbájáde irinṣẹ láti inú fódà iṣẹ́. Ó ti pa ní àtòdésí, nítorí ìpamọ́ koodu lè lò ó láti fi àbájáde pamọ́ fún awoṣe.`,compressionStats:`Iwọn ti a fipamọ`,compressionEstimatedTokensSaved:`Awọn àmi ti a fojú díwọ̀n ti a fipamọ`,compressionPreview:`Awotẹlẹ laaye`,compressionPreviewDescription:`Rán ara ìbéèrè kan gba ìlànà náà kọjá láti rí ohun tí olupese yóò gbà.`,compressionPreviewPlaceholder:`Lẹ JSON ibeere tabi ọrọ lasan`,compressionRunPreview:`Ṣiṣe awotẹlẹ`,updatesTitle:`Àwọn ìmúdójúìwọ̀n`,checkForUpdates:`Ṣayẹwo fun awọn imudojuiwọn`,lastChecked:`Ayẹwo ikẹhin: {when}`,currentVersion:`Ẹ̀yà ìkọ́lé lọ́wọ́lọ́wọ́:`,updateAvailable:`Ìmúdójúìwọ̀n wà`,changelog:`Ohun tí ó yí padà`,upToDate:`Ó ti mú dójú ìwọ̀n`,buildAhead:`Ẹ̀yà ìkọ́lé yìí ti lọ síwájú main àṣẹ.`,buildDiverged:`Ẹ̀yà ìkọ́lé yìí ti yà kúrò ní main àṣẹ.`,buildUnknown:`A kò lè fi ẹ̀yà ìkọ́lé àkànṣe yìí wé main àṣẹ.`,notGitInstall:`Fífìmọ́lẹ̀ yìí kò ní àlàyé commit.`,checkFailed:`A kò lè ṣàyẹ̀wò àwọn ìmúdójúìwọ̀n.`,contactsGithub:`Ọwọ́ ni a fi ń ṣe àwọn àyẹ̀wò, wọ́n sì ń kan sí GitHub.`,autoUpdateCheck:`Àyẹ̀wò ìmúdójúìwọ̀n aládàáṣe`,autoUpdateCheckHelp:`Ó ń ṣàyẹ̀wò GitHub lẹ́ẹ̀kan lóòjọ́ fún ìtújáde tuntun, ó sì ń fi ìránnilétí hàn. Ó pa ní àtìbẹ̀rẹ̀.`,openReleases:`Ṣí àwọn ìtújáde GitHub`,restartAfterUpdate:`Tun SRouter bẹ̀rẹ̀ lẹ́yìn tí ìkọ́lé bá parí.`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`Awọn awoṣe`,chatModelsTab:`Awọn awoṣe iwiregbe`,fusionTab:`Iparapọ`,embeddingsTab:`Awọn ifibọ`,imageTab:`Aworan`,videoTab:`Video`,audioTab:`Ohun`,imageDesc:`Awọn awoṣe iran ọrọ-si-image.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Ọrọ-si-ọrọ ati awọn awoṣe ọrọ-si-ọrọ.`,mediaHint:`Ṣe ina nipasẹ`,mediaEmpty:`Ko si awọn awoṣe sibẹsibẹ. Wọn muṣiṣẹpọ lati katalogi.`,ttsHeading:`Ọrọ si ọrọ`,sttHeading:`Ọrọ sisọ si ọrọ`,sttHint:`Ṣe igbasilẹ nipasẹ`,sttEmpty:`Ko si awọn awoṣe ọrọ-si-ọrọ sibẹsibẹ. Wọn muṣiṣẹpọ lati katalogi.`,newBadge:`Tuntun`,monthlyTokenBudget:`Oṣooṣu àmi isuna`,remaining:`ti o ku`,used:`lo`,usedScopeHint:`Chat requests only, since the start of this calendar month, summed over every model in the active chain — custom endpoints included. Traffic you send to a provider outside SRouter is not counted.`,legendRemainingTitle:`Remaining / monthly budget for {name} ({platform})`,noPublishedQuota:`+{count} with no published quota`,noPublishedQuotaTitle:`These models have no documented monthly token budget, so there is no remaining figure to show.`,of:`ti`,showAllModels:`Ṣe afihan gbogbo awọn awoṣe {count}`,showLess:`Ṣe afihan kere si`,vision:`Iranran`,visionTitle:`Gba igbewọle aworan`,tools:`Awọn irinṣẹ`,toolsTitle:`Emits awọn ipe irinṣẹ ti a ṣeto, nitorinaa o yẹ fun awọn ibeere ti nso ohun elo`,retired:`A ti dáwọ́ dúró`,penalty:`-{value} ijiya`,obs:`{count} obs`,tokPerMonth:`{count} tok/mo`,rpmLimit:`{count} rpm`,rpdLimit:`{count} rpd`,noKey:`ko si bọtini`,dragToReorder:`Fa lati tunto`,dragToReorderGroup:`Fa lati tunto awoṣe`,moveToRank:`Fò sí ipò`,providerCount:`{count} olupese`,servedBy:`Yoo wa nipasẹ {providers}`,viewProviders:`Wo awọn olupese`,backToModels:`Pada si awọn awoṣe`,providersHeading:`Awọn olupese sìn awoṣe yi`,codeSnippetHeading:`Lo awoṣe yii`,modelNotFound:`Awoṣe yii ko si, tabi ko ni awọn olupese ti a tunto.`,providerIdsHeading:`Awọn ids awoṣe olupese`,providerIdsHint:`Fi idanimọ awoṣe iṣọkan ranṣẹ lati kuna kọja gbogbo olupese, tabi id kan pato ti olupese lati pin olupese kan.`,copyModelName:`Da orukọ awoṣe`,settingsHeading:`Eto olupese`,settingsHint:`Awọn atunṣe agbegbe si awọn awoṣe katalogi ti wa ni ipamọ kọja awọn amuṣiṣẹpọ katalogi. Awọn awoṣe katalogi ti paarẹ wa ni paarẹ titi ti o fi ṣafikun wọn lẹẹkansi nipasẹ atunto.`,catalogModel:`katalogi`,customModel:`aṣa`,discoveredModel:`tí a rí`,localOverride:`idojuk agbegbe`,displayName:`Orukọ ifihan`,sizeLabel:`Ipele agbára`,sizeLabelHint:`Frontier/Large/Medium/Small ló ń darí ipò imọye: ipele tó ga máa ń borí ipele tó rẹlẹ̀ nígbà gbogbo, nínú ipele kan náà sì ni ipò imọye ṣì ń yí àmì padà. Awoṣe tí kò ní ipele tí a mọ̀ yóò gba àmì tó kéré jùlọ níbí, ṣùgbọ́n imọye jẹ́ ọ̀kan péré nínú àwọn ìwọ̀n mẹ́ta — bí ìgbẹ́kẹ̀lé àti iyara bá dára, a ṣì lè yàn án.`,sizeLabelNone:`Kò sí (àmì imọye tó kéré jùlọ)`,contextWindow:`Atokọ`,inFallback:`Ninu pq`,saveModelSettings:`Fi awọn eto awoṣe pamọ`,aggregateBudget:`{count}/mo`,aggregateBudgetTitle:`Lapapọ awọn ami ọfẹ fun oṣu kan kọja awọn olupese awoṣe yii`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Oṣuwọn-opin - ko si isuna ti oṣooṣu tokini ti o wa titi`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Lílo ààlà ìwọ̀n nínú fèrèsé àkókò (tí a lò / ààlà) fún olùpèsè tí ó ní àyè tó pọ̀ jù`,splitOut:`Maṣe da ẹda yii pọ`,splitOutHint:`Fun ẹda olupese yii ni titẹ sii lọtọ tirẹ dipo ti o dapọ mọ awoṣe iṣọkan. O le dapọ mọ pada lati oju-iwe ti ẹda naa.`,splitUndo:`Dapọ pada`,splitUndoHint:`Ẹda yii wa ni lọtọ si awoṣe isokan rẹ. Darapọ mọ pada lati kuna kọja gbogbo awọn olupese rẹ lẹẹkansi.`,splitBadge:`pa lọtọ`,noData:`ko si data`,noDataTitle:`Ko si awọn ibeere ti o gbasilẹ sibẹsibẹ - igbẹkẹle ati iyara ko ni iwọn fun olupese yii.`,bestOfN:`ti o dara ju {count}`,perProviderScores:`Awọn ikun fun olupese: {list}`,columnModel:`Awoṣe`,columnOn:`Lori`,noModelsBefore:`Ko si awọn awoṣe ti o wa. Fi awọn bọtini API sori ẹrọ`,keysPageLink:`Oju-iwe awọn bọtini`,noModelsAfter:`akọkọ.`,hiddenNoKeys:`Farasin (ko si awọn bọtini): {platforms}`,searchPlaceholder:`Ṣewadii awọn awoṣe tabi olupese…`,clearSearch:`Ko wiwa kuro`,ctxAny:`Eyikeyi ọrọ-ọrọ`,ctxBadge:`{size} ctx`,ctxTitle:`Ferese ọrọ ọrọ`,copyModelId:`Daakọ awoṣe id`,showingCount:`{shown} ti {total} si dede`,clearFilters:`Ko awọn asẹ kuro`,noMatches:`Ko si awọn awoṣe ti o baamu awọn asẹ rẹ.`,noModelsTitle:`Ko si awọn awoṣe tunto`,intelligenceRank:`Imọye`,speedRank:`Iyara`,rankHint:`Ipò nínú àkójọ — 1 ni ó dára jùlọ.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Àwọn ìbéèrè fún ìṣẹ́jú kan. Fi sílẹ̀ ní òfìfo fún àìní ààlà.`,limitRpdHint:`Àwọn ìbéèrè fún ọjọ́ kan. Fi sílẹ̀ ní òfìfo fún àìní ààlà.`,limitTpmHint:`Àwọn àmi fún ìṣẹ́jú kan. Fi sílẹ̀ ní òfìfo fún àìní ààlà.`,limitTpdHint:`Àwọn àmi fún ọjọ́ kan. Fi sílẹ̀ ní òfìfo fún àìní ààlà.`,usageThisMonth:`Ìlò oṣooṣù`,usageEmpty:`Kò sí ìbéèrè kankan ní oṣù yìí.`,usageRequestsMonth:`ìbéèrè {count} ní oṣù yìí`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`Enable or disable every shown model`,enableAll:`Enable all`,disableAll:`Disable all`,enableAllHint:`Turn on every model shown, then Save`,disableAllHint:`Turn off every model shown, then Save`,enabledOfShown:`{enabled} of {shown} shown models are in the chain`},strategies:{explore:`Ṣawari awọn awoṣe ti a ko ti wọn`,exploreHint:`Give models with no reliability or speed data a 10% chance to go first so they build a track record. Your real request is what gets sent, so it may be answered by an untested model. For a custom endpoint, use Probe endpoint on the Keys page to test it without live traffic.`,keySelection:`Yíyan kọ́kọ́rọ́`,keySelectionAuto:`Aládàáṣe`,keySelectionLeastRemaining:`Èyí tó kù jù`,keySelectionHint:`Bí a ṣe ń yan láàrin àwọn kọ́kọ́rọ́ púpọ̀ ti olùpèsè kan náà. Aládàáṣe ń pa ìyípo tó wà lọ́wọ́ mọ́; Èyí tó kù jù ń tò àwọn kọ́kọ́rọ́ nípa ìwọ̀n tí a rí, ó sì kọ́kọ́ gbìyànjú èyí tó ní ìwọ̀n tó pọ̀ jù tó kù.`,cooldownCeiling:`Àkókò ìtura aládàáni tó gùn jù`,cooldownCeilingHint:`Ó ń dín bí àwọn àròjinlẹ̀ olùdarí fúnra rẹ̀ ṣe lè fi kọ́kọ́rọ́ àti àwòṣe tó ń kùnà sílẹ̀ pẹ́ tó kù. Àtẹ̀gùn sábà máa ń gòkè ní ìṣẹ́jú 2, ìṣẹ́jú 10, wákàtí 1, wákàtí 24, àwọn àṣìṣe kírẹ́dítì tàbí ìpele sì máa ń fi sílẹ̀ fún ọjọ́ kan. A kì í dín àkókò ìgbìyànjú tuntun tí olùpèsè sọ kù láé.`,cooldownCeilingDefault:`Àìyípadà (títí dé wákàtí 24)`,cooldownCeiling10m:`Ìṣẹ́jú 10`,cooldownCeiling1h:`Wákàtí 1`,cooldownCeiling6h:`Wákàtí 6`,moreOptions:`Àwọn àṣàyàn síi`,peakActive:`(àkókò ìdààmú)`,peakActiveHint:`Àtúnṣe àkókò ìdààmú ń ṣiṣẹ́ nísinsìnyí, nítorí náà àwọn ìwọ̀n wọ̀nyí kìí ṣe ti ìṣàkóso fúnra rẹ̀: 60% ìwọ̀n ìyára ti kọjá sí ìgbẹ́kẹ̀lé.`,peakAdjust:`Àtúnṣe àkókò ìdààmú`,peakAdjustHint:`Ó pa nípa àtòjọ. Nínú àkókò tí ó wà nísàlẹ̀, ó ń gbé 60% ìwọ̀n ìyára lọ sí ìgbẹ́kẹ̀lé — àwọn relay ọ̀fẹ́ kún jùlọ ní àkókò yẹn, nítorí náà ìgbẹ́kẹ̀lé sọ àsọtẹ́lẹ̀ àṣeyọrí dáadáa ju ìyára lásán lọ. «Yára jùlọ» àti «Ìgbẹ́kẹ̀lé jùlọ» kò yí padà.`,peakFrom:`Láti`,peakTo:`dé`,peakTimezoneLabel:`Agbègbè àkókò`,peakUseBrowserTimezone:`Lo agbègbè àkókò ẹ̀rọ aṣàwákiri`,peakTimezoneInvalid:`Agbègbè àkókò tí a kò mọ̀.`,peakExemptNote:`Ìṣàkóso yìí kò yí padà — ó ti wà ní ìkángun kan nínú ìdọ́gba ìyára àti ìgbẹ́kẹ̀lé.`,title:`Ilana ipa ọna`,description:`Yan ilana ipa ọna. Ni ipo Afowoyi o fa lati ṣeto aṣẹ; ọna awọn ilana miiran nipasẹ Dimegilio ifiwe kọja igbẹkẹle, iyara ati oye.`,weightsSummary:`igbẹkẹle {reliability}% · iyara {speed}% · oye {intelligence}%`,guardrails:`Awọn ọna opopona`,guardrailsTooltip:`Awọn ọna aabo nigbagbogbo: ori-ipin ọfẹ ọfẹ × ijiya-iwọn iye laaye. Ni isalẹ 1.0 tumọ si pe awoṣe ti wa ni idaduro.`,scoreTooltip:`Dimegilio ipa ọna ipari = aropin iwuwo ti awọn aake mẹta, ti a pọ nipasẹ awọn ọna iṣọ. Awọn ọna ti o ga julọ akọkọ.`,modeManualHint:`Ipo afọwọṣe: awọn ibeere tẹle aṣẹ ni isalẹ, oke-si-isalẹ. Fa lati tunto.`,modeScoreHint:`Awọn imudojuiwọn ikun lati ijabọ ifiwe. Ilana ti o wa ni isalẹ ni bii awọn ibeere ṣe jẹ ipalọlọ ni bayi.`,manual:`Afowoyi`,manualBlurb:`Ipa ọna ni aṣẹ gangan ti o ṣeto ni isalẹ. Fa awọn ọwọ lati tunto. Ko si igbelewọn; pq ti wa ni atẹle oke-si-isalẹ.`,balanced:`Iwontunwonsi`,balancedBlurb:`Awọn itọsọna igbẹkẹle (50%), pẹlu iyara ati oye oye ni iwuwo dọgbadọgba (25% kọọkan). A ni imọ gbogbo-yika aiyipada.`,smartest:`Ọlọgbọn julọ`,smartestBlurb:`Fẹ awoṣe ti o lagbara julọ ti o tun ṣiṣẹ. Imọye 55%, igbẹkẹle 35%, iyara 10%.`,fastest:`Yara ju`,fastestBlurb:`Fẹ awoṣe ti o yara ju ti o tun ṣiṣẹ. Iyara 55%, igbẹkẹle 35%, oye oye 10%.`,reliable:`Julọ gbẹkẹle`,reliableBlurb:`Mu iwọn aṣeyọri pọ si ju gbogbo rẹ lọ. Igbẹkẹle 70%, iyara ati oye 15% kọọkan.`,custom:`Aṣa`,customBlurb:`Ṣeto iwọntunwọnsi tirẹ ti igbẹkẹle, iyara ati oye pẹlu awọn agbelera. Ẹrọ kanna gẹgẹbi awọn tito tẹlẹ, o kan awọn iwọn rẹ.`,adjust:`Ṣatunṣe`,customWeights:`Aṣa òṣuwọn`,customWeightsHelp:`Sliders wa ni ominira; mọlẹbi auto-iwontunwonsi si 100%.`,weightReliability:`Igbẹkẹle`,weightSpeed:`Iyara`,weightIntelligence:`Imọye`,weightRequired:`O kere ju iwuwo kan gbọdọ jẹ loke odo.`,scoreColumn:`Dimegilio`},penaltyInspector:{title:`Ipa olulana`,subtitle:`Awọn ijiya, itutu agbaiye, ati awọn ikuna lati iṣẹju {minutes} to kẹhin`,rowCount:`{count} ti nṣiṣe lọwọ`,offChain:`pa pq`,penaltyValue:`Ifiyaje {value}`,factor:`Dimegilio x{factor}`,noCooldown:`Ko si itura`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Pa gbogbo rẹ̀ rẹ́`,clearAllHint:`Yọ gbogbo àkókò ìtura, ìjìyà àti ìtẹ̀léra ìkùnà kúrò báyìí. Ìfúnpá tún ń kó jọ láti inú àbájáde gidi tó ń bọ̀.`,errorsHeading:`{count} to šẹšẹ aṣiṣe`,noRecentErrors:`Ko si awọn aṣiṣe aipẹ`,noKey:`ko si bọtini`,reasons:{penalty:`ijiya`,cooldown:`itutu agbaiye`,recent_errors:`kuna`}},keys:JSON.parse(`{"pageTitle":"Awọn bọtini","pageDescription":"Awọn iwe-ẹri olupese ati bọtini API ti iṣọkan awọn ohun elo rẹ sopọ pẹlu.","tabProviders":"Awọn olupese","checklistSummary":"A ti ṣètò {configured} nínú {total} olùpèsè","checklistKeyless":"kò nílò kọ́kọ́rọ́","checklistNoKeyTip":"Kò sí kọ́kọ́rọ́ tí a ti fi kún un. Tẹ̀ láti fi kọ́kọ́rọ́ kún un.","checklistSignupLink":"Ṣí {provider} láti ṣẹ́ àkàwo àti láti gba kọ́kọ́rọ́","checklistKeylessTip":"Ó ń ṣiṣẹ́ láìsí kọ́kọ́rọ́.","tabQuotaSignals":"Quota awọn ifihan agbara","tabApiKey":"Bọtini API ti iṣọkan","tabAnthropic":"Anthropic","unifiedKey":"Bọtini API ti iṣọkan rẹ","regenerate":"Tuntun-pada","showKey":"Fihan","hideKey":"Tọju","copyKey":"Daakọ","copyFullKey":"Da bọtini kíkún kọ","copiedKey":"Ti daakọ","baseUrl":"Mimọ URL","endpointChat":"Wiregbe","endpointResponses":"Awọn idahun","endpointEmbeddings":"Awọn ifibọ","endpointEmbeddingsHint":"model: \\"auto\\" tabi idile kan lati taabu Awọn ifibọ","endpointMessages":"Awọn ifiranṣẹ","endpointMessagesHint":"Anthropic-ibaramu (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Claude (Anthropic) si dede","anthropicDesc":"Tọkasi Claude tabi Anthropic SDK onibara ni olupin yii. Awọn alabara Anthropic firanṣẹ awọn orukọ awoṣe Claude — maapu kọọkan si Aifọwọyi (olulana mu awoṣe ọfẹ) tabi pin kan pato.","anthropicBaseUrl":"Mimọ URL","anthropicAuth":"Akọsori Auth","anthropicAuto":"Laifọwọyi — olulana mu awoṣe to dara julọ","anthropicSave":"Fi maapu pamọ","anthropicSaved":"Ti fipamọ","anthropicNote":"Awọn onibara Anthropic tọju awọn orukọ awoṣe Claude ti a ṣe sinu wọn; aworan agbaye ti o wa loke pinnu bi ọkọọkan ṣe n lọ sinu adagun-odo rẹ.","familyDefault":"Aiyipada","familyOpus":"Opus","familySonnet":"Sonnet","familyHaiku":"Haiku","selectPlatform":"Yan olupese kan","addKey":"Fi bọtini kun","keyAdded":"Bọtini kun","endpointKeysShareModels":"Àwọn bọtini ibùdó kan náà pín àwọn àwòṣe rẹ̀.","export":"Si ilẹ okeere","exportAll":"Gbogbo awọn bọtini","exportHealthy":"Ni ilera nikan","exportKeys":"Jade awọn bọtini API","exportFormat":"Ọna kika","exportHealthyOnly":"Awọn bọtini ilera nikan","exportHealthyOnlyDesc":"Yasọtọ awọn bọtini ti o kuna lọwọlọwọ awọn sọwedowo ilera","exportWillExport":"Yoo okeere","exportKey":"bọtini","exportKeys plural":"awọn bọtini","exporting":"Gbigbe okeere…","exportDownload":"Gba lati ayelujara","exportSuccess":"Awọn bọtini {count} ti okeere","adding":"Nfi…","selectProvider":"Yan olupese kan…","accountId":"ID iroyin","label":"Aami","noKeyNeeded":"(ko si bọtini nilo)","outboundProxy":"Aṣoju ti njade","outboundProxyDescription":"Awọn ibeere LLM ti o njade lo nipasẹ aṣoju kan. Ṣe atilẹyin SOCKS5, HTTP, ati HTTPS.","proxyUrl":"Aṣoju URL","saveProxy":"Fipamọ","savingProxy":"Nfipamọ…","proxyLoadFailed":"Ko le kojọpọ awọn eto aṣoju.","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"Ṣafikun awoṣe ibaramu OpenAI aṣa kan","addCustomDescription":"Ojuami iwiregbe, ifibọ, aworan, tabi awọn awoṣe ohun ni eyikeyi aaye ipari ibaramu OpenAI. Bọtini API jẹ iyan fun awọn olupin agbegbe.","customType":"Iru","customTypeChat":"Wiregbe","customTypeEmbedding":"Ifisinu","customTypeImage":"Aworan","customTypeAudio":"Ohun","customTypeTranscription":"Transcription","customBaseUrl":"Mimọ URL","customModels":"Awọn awoṣe","customModel":"Awoṣe","customDisplayName":"Orukọ ifihan","customDisplayNamePerModel":"fun-awoṣe","customDisplayNameOptional":"iyan","customFamily":"Idile","customFamilyPlaceholder":"aseku to awoṣe id","customApiKey":"API bọtini","customCapabilities":"Awọn agbara","addModel":"Fi awoṣe kun","modelAdded":"Awoṣe fi kun","addModels":"Fi {count} si dede","addEmbeddingModel":"Fi ifibọ","addImageModel":"Ṣafikun awoṣe aworan","addAudioModel":"Ṣafikun awoṣe ohun","addTranscriptionModel":"Add transcription model","addingCustom":"Nfi…","discoverModels":"Gba àwọn àwòṣe","probeNow":"Dán ibùdó náà wò","probeConfirm":"Ránṣẹ́ àwọn ìbéèrè ìdánwò tó tó 3?","probeCapabilities":"ìrònú: {reasoning} · irinṣẹ́: {tools}","probeCapYes":"bẹ́ẹ̀ni","probeCapNo":"bẹ́ẹ̀kọ́","probeCapUnknown":"àìmọ̀","probeSuccess":"A dán {model} wò ní {latency}ms","probeFailed":"Ìdánwò kùnà: {reason}","discoverTitle":"Àwọn àwòṣe lórí ibùdó yìí","discoverHint":"Yan àwọn àwòṣe láti forúkọsílẹ̀. Àwọn tí o ti fikún ń wà ní títì.","discoverEmpty":"Ibùdó yìí kò dá àwòṣe kankan padà.","discoverAlreadyAdded":"Ti fikún","discoverSelectAll":"Yan gbogbo rẹ̀","modelsAdded":"Àwòṣe {count} ni a fikún","getApiKey":"Gba bọtini API","deleteKeyConfirm":"Pa bọtini yi rẹ bi? Eyi ko le ṣe atunṣe.","checkAll":"Ṣayẹwo gbogbo rẹ","checking":"Ṣiṣayẹwo…","editLabel":"Aami Ṣatunkọ","saveLabel":"Fi aami pamọ","unifiedKeyDescBefore":"Lo eyi bi OpenAI rẹ","unifiedKeyDescAfter":"; o jẹri awọn ibeere si aṣoju yii.","serverUnreachableBefore":"Ko le de ọdọ olupin lori","serverUnreachableAfter":". Rii daju pe ẹhin naa nṣiṣẹ. npm run dev bẹrẹ mejeeji, ati awọn akọọlẹ olupin tẹjade labẹ ìpele olupin.","paneProviderKey":"Bọtini olupese","paneImportFile":"Gbe wọle faili","paneCustomEndpoint":"Aṣa ipari","platform":"Platform","hideAdded":"Fi awọn olupese ti a fikun pamọ","apiToken":"API àmi","keyOptionalPlaceholder":"Àṣàyàn","bearerTokenPlaceholder":"Aami oniduro","pasteKeyPlaceholder":"lẹẹ bọtini nibi","pasteSeveral":"Lẹ̀ ọ̀pọ̀lọpọ̀ mọ́","keyOptionalHint":"Àṣàyàn: fi sílẹ̀ ní òfo fún ìpele ọ̀fẹ́ aláìlórúkọ (ìwọ̀n ààlà fún IP kọ̀ọ̀kan), tàbí lẹ̀ kọ́kọ́rọ́ tìrẹ láti lo àkọọ́lẹ̀ rẹ.","enable":"Mu ṣiṣẹ","noProviderKeys":"Ko si awọn bọtini olupese sibẹsibẹ. Ṣafikun ọkan loke lati bẹrẹ ipa-ọna.","filterPlaceholder":"Ajọ awọn olupese tabi awọn bọtini","filterAll":"Gbogbo","filterHealthy":"Ni ilera","filterIssues":"Awọn ọrọ","filterDisabled":"Alaabo","noFilterMatch":"Ko si olupese ti o baamu awọn asẹ rẹ.","providerCountSummary":"Awọn olupese {providers} · awọn bọtini {keys}","summaryHealthy":"{count} ni ilera","summaryIssueOne":"{count} atejade","summaryIssueOther":"{count} oran","providerActions":"Awọn iṣẹ olupese","routeViaProxy":"Ipa ọna nipasẹ aṣoju","checkNow":"Ṣayẹwo bayi","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"Tun Configurable nipasẹ awọn","proxyEnvHintAfter":"oniyipada ayika (mu ṣaaju). Fi òfo silẹ lati mu ṣiṣẹ. Awọn apẹẹrẹ:","importKeys":"Gbe wọle awọn bọtini olupese","importKeysDescription":"Ṣe igbasilẹ .env, JSON, JSONC, CSV, Markdown, tabi awọn faili ọrọ.","importFiles":"Awọn faili","importFileCount":"{count} ti yan","previewFiles":"Awotẹlẹ","previewing":"Awotẹlẹ…","selected":"Ti yan","provider":"Olupese","keyName":"Orukọ bọtini","keyValue":"Iye bọtini","chooseProvider":"Yan olupese","noPreviewKeys":"Ko si awọn bọtini ti a rii ninu awọn faili yẹn.","skippedItems":"Ti fo:","moreItems":"+{count} siwaju sii","importSelected":"Gbe wọle {count}","importing":"Nkowọle…","noImportSelection":"Yan o kere ju ila kan pẹlu olupese kan.","duplicate":"Ṣe pidánpidán","duplicatesFound":"{count} àdáwòkọ(s) ti ri - tẹlẹ tẹlẹ ati pe yoo jẹ foo.","importResult":"Gbe wọle {imported}; kuna {failed}.","importModelCount":"+{count} awoṣe","importResultWithModels":"Gbe wọle {imported}; forukọsilẹ awoṣe {models}; kuna {failed}.","confirmRemove":"Jẹrisi?","quotaSignalsTitle":"Quota awọn ifihan agbara","quotaSignalsEmptyTitle":"Ko si awọn akiyesi ipin sibẹsibẹ","quotaSignalsEmptyDesc":"Eyi kun lẹhin ti awọn olupese ti da awọn akọsori iye-owọn pada, awọn aṣiṣe ipin, tabi awọn ifihan agbara afọwọsi.","quotaKeyRef":"bọtini #{id}","quotaPoolRef":"adagun {pool}","quotaLimit":"Idiwọn","quotaRemaining":"Ti o ku","quotaReset":"Tunto","quotaObserved":"Ti ṣe akiyesi","tabAgents":"Awọn aṣoju","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Isopọ awoṣe Gemini","geminiDesc":"So awọn orukọ Gemini Pro, Flash, ati Flash-Lite pọ mọ Auto tabi awoṣe katalogu kan pato.","compatibilityTitle":"Ibamu aṣoju","compatibilityDesc":"Ṣakoso awọn oju ibamu yiyan ati wiwa awoṣe Claude Code.","ollamaMode":"Afarawe Ollama","ollamaModeHint":"Loopback ṣiṣi ko gba ijabọ LAN ti ko ni ijẹrisi rara.","ollamaOff":"Pa","ollamaLoopback":"Ṣii lori loopback","ollamaKeyRequired":"A nilo bọtini API","claudeAliases":"Awọn inagijẹ wiwa Claude Code","claudeAliasesHint":"Fi awọn inagijẹ claude/<model> han ki oluyan awoṣe ẹnu-ọna le ṣe atokọ katalogu naa.","mcpServer":"Olupin MCP","mcpServerHint":"Ó ń ṣí ojú-òpin /mcp fún àwọn oníbàárà aṣojú. Àwọn fifi-sori tuntun máa ń bẹ̀rẹ̀ ní pípa.","urlTokensTitle":"Awọn tokini URL ti a le fagile","urlTokensDesc":"Fun awọn alabara ti ko ni akọsori nikan. Awọn tokini URL le jo sinu itan-akọọlẹ ati awọn akọsilẹ, nitorinaa fagile wọn nigbati wọn ko ba nilo mọ.","urlTokenLabel":"Aami tokini","createUrlToken":"Ṣẹda tokini","urlTokenOnce":"Daakọ tokini yii ni bayi. Kii yoo han lẹẹkansi.","revoked":"Ti fagile","revoke":"Fagile","modelScope":"Àgbègbè àwọn awoṣe","modelScopeDesc":"Fi bọtìnì yìí mọ àwọn ID awoṣe kan pàtó. Router máa fo bọtìnì yìí fún awoṣe mìíràn.","modelScopeAdd":"Tẹ ID awoṣe kí o sì tẹ Enter","modelScopeEmpty":"Kò sí àgbègbè tí a ṣètò — bọtìnì yìí ń ṣiṣẹ́ fún gbogbo awoṣe olùpèsè rẹ̀.","modelScopeClear":"Pa àgbègbè rẹ́","modelScopeBadgeOne":"ní ààlà · awoṣe 1","modelScopeBadgeOther":"ní ààlà · awoṣe {count}","modelPicker":{"title":"Àwọn awoṣe wo ni bọtìnì yìí gbọdọ̀ ṣe ìránṣẹ́ fún?","hint":"A ti ṣàfikún bọtìnì {provider} rẹ, ó sì ń ṣe ìránṣẹ́ fún gbogbo àwọn awoṣe tí ó wà nísàlẹ̀ báyìí. Yọ àmì kúrò nínú èyíkéyìí tí bọtìnì yìí kò ní ààyè láti lò — olulana yóò fò ó kọjá fún àwọn wọ̀nyẹn.","count":"{selected} nínú {total} ni a yàn","allNote":"Gbogbo rẹ̀ ni a yàn — kò sí ohun tí a fipamọ́, àwọn awoṣe tí a bá fi kún àkójọ lẹ́yìn náà yóò sì tún lo bọtìnì yìí.","subsetNote":"Bọtìnì yìí yóò ní ààlà sí àwọn awoṣe tí a yàn. O lè yí èyí padà lẹ́yìn náà láti orí ìlà bọtìnì náà.","skip":"Kì í ṣe báyìí","scopedOne":"Bọtìnì ní ààlà sí awoṣe 1","scopedOther":"Bọtìnì ní ààlà sí awoṣe {count}","allSaved":"Key serves every catalog model"},"cpTitle":"Àwọn pírófáìlì oníbàárà","cpDesc":"Àwọn kọ́kọ́rọ́ API fún oníbàárà kọ̀ọ̀kan, ọ̀kọ̀ọ̀kan pẹ̀lú ìtọ́ni ètò tí sáfà máa ń lò nígbà gbogbo.","cpEmpty":"Kò sí pírófáìlì oníbàárà síbẹ̀.","cpNameLabel":"Orúkọ","cpNamePlaceholder":"b.a. Bọ́ọ̀tì àtìlẹ́yìn","cpPromptLabel":"Ìtọ́ni ètò (àṣàyàn)","cpPromptPlaceholder":"Àwọn ìtọ́ni tí sáfà máa ń fi kún iwájú gbogbo ìbéèrè tí a fi kọ́kọ́rọ́ yìí ṣe.","cpCreate":"Ṣẹ̀dá pírófáìlì","cpRotate":"Yí kọ́kọ́rọ́ padà","cpKeyOnce":"Ṣàdàkọ kọ́kọ́rọ́ yìí báyìí — a kò ní fi hàn mọ́.","cpEnabledAria":"Pírófáìlì ti ṣiṣẹ́","selectKey":"Yan bọtini yii","bulkSelected":"{count} ti yan","bulkEnable":"Mu gbogbo rẹ ṣiṣẹ","bulkDisable":"Pa gbogbo rẹ","bulkDelete":"Paarẹ gbogbo rẹ","bulkDeleteConfirm":"Paarẹ {count}?","bulkResult":"Ṣe imudojuiwọn {done}; kuna {failed}.","bulkDeleteResult":"Paarẹ {done}; kuna {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Ṣàtúnṣe bọtìnì","editPlatformLocked":"Àgbékalẹ̀ àti endpoint kì í yí padà lẹ́yìn ìdámẹ̀.","editCredentialHint":"Fi aṣàjá sílẹ̀ láti fi bọtìnì tí ó wà nílẹ̀.","editCredentialPartsRequired":"Tẹ́ ORukọ àkántí àti API token sílẹ̀.","editModels":"Ṣàtúnṣe àwọn aṣàpẹẹrẹ","editModelsHint":"Choose which catalog models this key may serve. Select everything to clear the scope so future catalog models use it too.","editModelsCustomHint":"Choose which registered endpoint models this key may serve. Select everything to clear the scope.","editModelsSync":"Check catalog updates","editModelsSyncing":"Checking…","editModelsSynced":"Model catalog checked","outlookUnavailable":"Unavailable","outlookNoForecasts":"Forecast unavailable. More recent traffic or reliable quota readings are needed.","outlookCoverage":"Forecasts available for {count} of {total} pools.","outlookTraffic":"{count} successful requests through this instance in the last {minutes} minutes.","outlookMinimumTraffic":"An exhaustion forecast needs at least {count} successful requests within {minutes} minutes.","outlookNotReportedHint":"The provider has not reported a usable request balance and limit. Local usage is shown; remaining quota is unavailable.","outlookMissingResetHint":"The provider did not report a valid reset time. Remaining quota cannot support an exhaustion forecast.","outlookConfidenceHint":"This balance is not reliable enough for an exhaustion forecast.","outlookObserved":"Balance observed: {time}","outlookUnavailablePools":"Unavailable quota pools ({count})","outlookTitle":"Quota outlook","outlookInsufficient":"Not enough data","outlookLowBalance":"Low balance","outlookRunningLow":"Running low soon","outlookStale":"Needs fresh data","outlookUnknown":"Unknown","outlookWithinQuota":"Within quota","outlookResetsFirst":"Not before reset","outlookExhausted":"Already exhausted","outlookLastReported":"requests last reported","outlookRequestsLeft":"requests left","outlookNotReported":"Not reported","outlookRate":"Recent rate","outlookRateValue":"{count} req/min","outlookRunsOut":"May run out","outlookStaleHint":"This balance is old or its window has expired. A fresh provider reading is needed.","outlookError":"Could not load quota forecasts. Raw observations are still available below.","outlookRetry":"Retry","outlookAttention":"Quota pools needing attention: {count}","outlookNoWarnings":"No forecast warnings. Pools with insufficient data may still be limited.","outlookHint":"Rates count successful requests through this instance only, not usage elsewhere. Forecasts require recent provider balances and reported resets. Warnings appear below 20% remaining or when quota may run out within two hours, before reset.","outlookRaw":"Raw quota observations","addCustomModel":"Ṣafikun Awoṣe Aṣa","modelId":"ID Awoṣe","modelIdRequired":"ID awoṣe jẹ dandan","modelDisplayName":"Orukọ Ifihan","modelContextWindow":"Ferese Ọrọ-ọrọ (awọn ami)","modelRateLimits":"Awọn opin Oṣuwọn (aṣayan)","modelSupportsTools":"Ṣe atilẹyin fun ipe awọn irinṣẹ","modelSupportsToolsHint":"Muu ṣiṣẹ ti awoṣe yii ba le pe awọn iṣẹ tabi awọn irinṣẹ","modelSupportsVision":"Ṣe atilẹyin fun iran aworan","modelSupportsVisionHint":"Muu ṣiṣẹ ti awoṣe yii ba gba awọn aworan wọle","createModel":"Ṣẹda Awoṣe","modelAddedSuccess":"Awoṣe aṣa ti wa ni afikun ni aṣeyọri","modelAddFailed":"Kuna lati ṣafikun awoṣe aṣa","testModel":"Idanwo","testingModel":"N ṣe idanwo…","testPassedShort":"Kọja","testFailedShort":"Kuna","testPassed":"Idanwo awoṣe kọja ni {latency}ms","testFailed":"Idanwo awoṣe kuna","testThrottled":"Jọwọ duro fun iṣẹju-aaya {seconds} ki o to tun awoṣe yii ṣe idanwo.","noModelsForProvider":"Ko si awọn awoṣe ti a tunto fun olupese yii.","testModels":"Ṣàdánwò àwọn àwòṣe","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"Kò ní òpín","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} ìbéèrè, {tokens} token oṣù yìí","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`Backups`,description:`Save the routing data to a .sql file beside the database, and restore it later.`,excludedNote:`A backup carries your providers, models, routing settings and request history. Accounts, sessions and URL tokens are never included, so a dump holds no password hashes or login tokens and restoring one cannot log you out. Provider keys stay encrypted with this server's ENCRYPTION_KEY: a backup can only be restored on a server that still holds that key.`,selectHint:`Back up everything, or pick the tables you need.`,selectAll:`Select all`,deselectAll:`Clear`,fullBackup:`Full backup`,backupSelected:`Back up selected ({count})`,created:`Backup written to {filename}`,list:`Backups on disk`,empty:`No backups yet`,full:`All tables`,tablesCount:`{count} tables`,manual:`Manual`,scheduled:`Scheduled`,preRestore:`Pre-restore`,download:`Download`,restore:`Restore`,confirmRestore:`Replace data?`,restored:`Restored. The previous data was saved as {filename}.`,delete:`Delete backup`,prevPage:`Previous`,nextPage:`Next`,autoTitle:`Automatic backups`,autoHint:`The server writes a full backup on this cadence.`,time:`Time (HH:mm)`,intervalDays:`Every N days`,path:`Folder`,pathPlaceholder:`backups`,pathHint:`Relative to the database directory. Backups cannot be written outside it.`,save:`Save schedule`,saved:`Saved`},status:{healthy:`ni ilera`,rateLimited:`oṣuwọn-lopin`,invalid:`aiṣedeede`,error:`aṣiṣe`,unchecked:`aiṣayẹwo`},analytics:{title:`Atupale`,description:`Beere iwọn didun, idaduro, lilo ami ami, ati awọn ikuna.`,range24h:`wakati 24`,range7d:`7d`,range30d:`30d`,range90d:`90d`,requests:`Awọn ibeere`,successRate:`Oṣuwọn aṣeyọri`,inputTokens:`Awọn ami igbewọle`,outputTokens:`Awọn ami ijade`,avgLatency:`Lairi lairi`,p95Latency:`P95 idaduro`,avgTtft:`Apapọ TTFT`,estSavings:`Est. awọn ifowopamọ`,requestsByProvider:`Awọn ibeere nipasẹ olupese`,avgLatencyByProvider:`Lairi lairi nipasẹ olupese`,ttftByProvider:`Akoko lati akọkọ àmi nipasẹ olupese`,ttftEmpty:`Ko si akoko lati gbasilẹ ami akọkọ sibẹsibẹ.`,requestsOverTime:`Awọn ibeere lori akoko`,tokensOverTime:`Àmi lori akoko`,byModel:`Nipa awoṣe`,byPlatform:`Nipa Syeed`,errors:`Awọn aṣiṣe`,errorDistribution:`Aṣiṣe pinpin`,pinnedRequests:`Awọn ibeere pinni`,pinnedHonored:`Ola`,fallbackAttempts:`Awọn igbiyanju apadabọ`,savingsHint:"O ti fipamọ ${actual} gangan lori {range} ti o kẹhin. Iyẹn ni awọn ami-ami kanna yoo ni idiyele lori awọn API ti o san, ti idiyele fun awoṣe. Nọmba ti o han ṣe iṣẹ akanṣe iyara rẹ lati {span} ti data to kẹhin si ọjọ 30 ni kikun.",savingsHintExact:"O ti fipamọ ${actual} gangan lori {range} ti o kẹhin. Iyẹn ni awọn ami-ami kanna yoo ni idiyele lori awọn API ti o san, ti idiyele fun awoṣe. Nọmba ti o han jẹ apapọ 30-ọjọ gidi rẹ.",requestsHintPinned:`{pinned} ti awọn ibeere wọnyi pinni awoṣe kan pato nipasẹ orukọ. {honored} ni a sin nipasẹ awoṣe ti a pinni; {failed} kuna lori si kan ti o yatọ. Awọn iyokù ti wa ni idojukọ laifọwọyi.`,requestsHintAuto:`Gbogbo awọn ibeere ni asiko yii jẹ ọna-laifọwọyi; ko si onibara pinni kan pato awoṣe nipa orukọ.`,requestsHintTypes:`{chat} iwiregbe ati awọn ibeere ifibọ {embedding}.`,rangeLabel24h:`24 wakati`,rangeLabel7d:`7 ọjọ`,rangeLabel30d:`30 ọjọ`,rangeLabel90d:`90 ọjọ`,spanDays:`{count} ọjọ`,spanHours:`Awọn wakati {count}`,latencyMs:`Lairi (ms)`,latency:`Lairi`,pinned:`Pinni`,inTokens:`Ni àmi`,outTokens:`Jade àmi`,saved:`Ti fipamọ`,message:`Ifiranṣẹ`,time:`Akoko`,perModelBreakdown:`Pipin-awoṣe`,usageByKey:`Lilo nipasẹ bọtini`,keyColumn:`Bọtini`,keyLabelFallback:`Bọtini #{id}`,errorsByProvider:`Awọn aṣiṣe nipasẹ olupese`,recentErrors:`Awọn aṣiṣe aipẹ`,noErrors:`Ko si awọn aṣiṣe`,recentCalls:`Awọn ipe to ṣẹṣẹ`,clientIp:`Onibara IP`,clientAgent:`Ohun elo onibara`,requestedModelHint:`Ti beere {model}, yoo wa nipasẹ fallback`,attempts:`Awọn igbiyanju`,filterAll:`Gbogbo`,filterCanceled:`Ti fagile`,providerBreakdown:`Pipin-olupese`,tokensPerSec:`Tok/s`,allProviders:`Gbogbo olupese`,requestDetailTitle:`Ibere #{id}`,failoverLadder:`Àkàbà Àṣeyọrí`,failoverLadderHint:`Kọọkan hop ibeere yi gba nipasẹ awọn fallback pq, ni ibere.`,noAttemptTrace:`Ko si igbiyanju wa ti o gbasilẹ fun ibeere yii.`,keyOrdinal:`bọtini #{n}`,keyBadge:`Bọtini #{n}`,attemptTimingHint:`Bẹrẹ aiṣedeede lati ibere ibere · Iye akoko igbiyanju`,requestedModel:`Awoṣe ti a beere`,ttft:`TTFT`,requestsByAgent:`Awọn ibeere nipasẹ aṣoju`,sortBy:`Ṣètò nípa {column}`,sortHint:`Ìṣètò kan àwọn ìlà {count} tí a ti gbé sókè nìkan`,cacheHitRate:`Ìwọ̀n àṣeyọrí kaṣe`,cacheSavedTokens:`A ṣàfipamọ́ token {tokens}`,cacheHitRateHint:`{hits} àṣeyọrí sí {misses} àìní láti ìgbà tí sáfà bẹ̀rẹ̀ · {requests} ìpè olùpèsè ni a yẹ̀ sílẹ̀`},logs:{title:`Àkọọlẹ`,description:`Àkọọlẹ olupin laaye. Awọn akọsilẹ tuntun yoo maa wọle nigba ti oju-iwe naa ba ṣi silẹ.`,pause:`Dá dúró`,resume:`Tẹsiwaju`,clear:`Ko àkọọlẹ kuro`,cleared:`A ti ko àkọọlẹ olupin kuro`,levelFilter:`Awọn ipele àkọọlẹ`,levels:{debug:`Debug`,info:`Alaye`,warn:`Ikilọ`,error:`Aṣiṣe`},countsHint:`Awọn nọmba naa jẹ apapọ gbogbo ibi ipamọ àkọọlẹ lori olupin, kii ṣe awọn akọsilẹ ti o baamu awọn asẹ wọnyi nikan.`,searchPlaceholder:`Ṣewadii awọn ifiranṣẹ àkọọlẹ…`,jumpToLatest:`Fo si tuntun`,showMore:`Ṣe afihan diẹ sii`,showLess:`Ṣe afihan kere si`,buffered:`Fifi {count} ninu {max} akọsilẹ ti a fipamọ han`,emptyTitle:`Ko si akọsilẹ àkọọlẹ sibẹsibẹ`,emptyDescription:`Awọn akọsilẹ yoo han nibi bi olupin ṣe n kọ wọn. Fẹ awọn asẹ ipele, olupese tabi wiwa siwaju sii ti o ba nireti abajade.`,noLevelsTitle:`Ko si ipele ti a yan`,noLevelsDescription:`Tan o kere ju ipele kan lati ri abajade àkọọlẹ.`,loadFailed:`A kò lè gbé àkọọlẹ olupin wọlé.`},playground:{title:`Ibi isereile`,description:`Firanṣẹ ipari iwiregbe nipasẹ olulana ki o wo olupese wo ni o nṣe iranṣẹ rẹ.`,autoModel:`Aifọwọyi (ẹwọn idapada)`,fusionModel:`Fusion (apọpọ awoṣe pupọ)`,selectModel:`Yan awoṣe`,searchModels:`Ṣewadii awọn awoṣe…`,noModelsFound:`Ko si awọn awoṣe ti a rii`,send:`Firanṣẹ`,sending:`Fifiranṣẹ…`,clear:`Ko o`,inputPlaceholder:`Tẹ ifiranṣẹ kan… (⏎ lati firanṣẹ, ⇧⏎ fun laini tuntun)`,emptyTitle:`Fi ifiranṣẹ ranṣẹ lati bẹrẹ.`,emptyDescription:`Lilo {model}. Yipada si dede ninu awọn selector loke.`,noModels:`Ko si awọn awoṣe sibẹsibẹ. Ṣafikun bọtini API kan lori oju-iwe Awọn bọtini lati ṣe agbejade atokọ yii.`,copyReply:`Daakọ esi`,fallback:`isubu`,fallbacks:`fallbacks`,fusionPanel:`Igbimọ`,fusionJudge:`Onidajo`,fusionTrace:`Awọn idahun awoṣe {count}`,fusionFailed:`ko si idahun`,fusionJudgeSynth:`sise ik idahun`,errorPrefix:`Asise:`,systemPromptLabel:`Ilana eto`,systemPromptPlaceholder:`iyan. Ti firanṣẹ bi ifiranṣẹ eto ṣaaju iwiregbe rẹ.`,showSettings:`Fi eto hàn`,hideSettings:`Fi eto pamọ́`,samplingHeading:`Sampling`,samplingHelp:`Nígbà tí ó bá pa, aiyipada ti olupese fúnra rẹ̀ ni yóò lò. Àwọn ìdarí tí o bá tàn nìkan ni a ó fi ránṣẹ́.`,samplingDefault:`Aiyipada`,temperature:`Temperature`,topP:`Top P`,maxTokens:`Iye ami tó pọ̀ jù`,errorTitle:`Ibere kuna`,attach:`Somọ awọn faili`,attachTooMany:`O le somọ to awọn faili {count} fun ifiranṣẹ kọọkan.`,attachTooLarge:`{name} tobi ju. Ààlà ni {max}.`,attachUnsupported:`A ko ṣe atilẹyin fun {name}. Somọ awọn aworan (PNG, JPEG, WebP, GIF) tabi awọn faili ọrọ (TXT, MD, CSV, JSON, LOG).`,attachFailed:`A ko le ka {name}.`,noVisionBadge:`Ko si aworan`,visionWarning:`{model} ko gba aworan. Yan awoṣe ti o gba aworan tabi Aifọwọyi.`,dictate:`Sọ kí a kọ`,dictationStop:`Dá gbigbasilẹ dúró`,dictationTranscribing:`Ń kọ sílẹ̀…`,dictationUnavailable:`Fi àwọn olùpèsè àwòṣe ohùn kún un láti lè lo sísọ kí a kọ.`,dictationModel:`Àwòṣe sísọ kí a kọ`,dictationFailed:`Kíkọ sílẹ̀ kùnà: {reason}`,artifactOpen:`Ṣí àwòrán àkọ́kọ́`,artifactPreview:`Àwòrán àkọ́kọ́`,artifactCode:`Kóòdù`,artifactClose:`Pa àwòrán àkọ́kọ́`,artifactDownload:`Gbà sílẹ̀`,artifactReload:`Tún àwòrán àkọ́kọ́ gbé`,artifactHtml:`Ojú-ìwé HTML`,artifactSvg:`Àwòrán SVG`,artifactLines:`ìlà`,artifactResize:`Yí ìwọ̀n àwòrán àkọ́kọ́ padà`},playgroundSessions:{heading:`Àwọn ìjíròrò`,newConversation:`Ìjíròrò tuntun`,showSidebar:`Fi àwọn ìjíròrò hàn`,hideSidebar:`Fi àwọn ìjíròrò pamọ́`,empty:`Kò sí ìjíròrò tí a ti fipamọ́ síbẹ̀síbẹ̀.`,untitled:`Ìjíròrò aláìlórúkọ`,rename:`Tún orúkọ sọ`,renamePlaceholder:`Orúkọ ìjíròrò`,messageCount:`Àwọn ìfiránṣẹ́ {count}`,justNow:`ṣẹ̀ṣẹ̀ ni`,minutesAgo:`ìṣẹ́jú {count} sẹ́yìn`,hoursAgo:`wákàtí {count} sẹ́yìn`,daysAgo:`ọjọ́ {count} sẹ́yìn`,loadFailed:`A kò lè ṣí ìjíròrò yẹn.`,renameFailed:`A kò lè tún orúkọ ìjíròrò yẹn sọ.`,deleteFailed:`A kò lè pa ìjíròrò yẹn rẹ́.`,actions:`Àwọn ìṣe ìjíròrò`,newChat:`Ìfọ̀rọ̀wérọ̀ tuntun`},embeddings:{title:`Awọn awoṣe`,description:`Awọn ifibọ kuna laarin idile nikan: awoṣe kanna ti o ṣiṣẹ nipasẹ olupese miiran. Awọn olutọpa lati oriṣiriṣi awọn awoṣe ko ni ibamu, nitorinaa olulana ko paarọ awọn awoṣe lori rẹ.`,defaultBadge:`Aiyipada · adaṣe`,makeDefault:`Ṣe aiyipada`,moveUp:`Gbe soke`,moveDown:`Yi lọ si isalẹ`,usageToday:`{count} req loni`,usageMonth:`{count} tok ni oṣu yii`,autoDescription:`model: "auto" lori awọn ọna POST /v1/embeddings si ẹbi aiyipada. Lorukọ idile kan (tabi id apẹẹrẹ olupese) pinni idile naa; Awọn olupese inu rẹ ni a gbiyanju ni ibere.`,unsavedChanges:`Awọn iyipada ti ko ni fipamọ`,saveChanges:`Fi awọn ayipada pamọ`,savingChanges:`Nfipamọ…`,tokMax:`Iye ti o ga julọ ti {tokens}`,emptyTitle:`Ko si awọn awoṣe ifibọ sibẹsibẹ`,emptyDesc:`Awọn idile ifibọ han nibi ni kete ti o ba ṣafikun bọtini olupese ti o ṣe atilẹyin awọn ifibọ.`,dragToReorder:`Fa lati tunto olupese`},fusion:{title:`Iparapọ`,description:`Apejọ ti awọn awoṣe ṣe idahun ni afiwe, lẹhinna adajọ kan ṣajọpọ idahun ti o lagbara kan. Lo o nipa pipe API pẹlu awoṣe "fusion".`,panelSource:`Orisun nronu`,panelSourceHelp:`Nibo ni awọn awoṣe nronu wa lati nigbati ibeere kan ko ṣe pato tirẹ.`,mode:{auto:`Aifọwọyi (Ẹwọn Ipadabọ)`,autoHelp:`Mu eto oniruuru awọn awoṣe lati Ẹwọn Fallback rẹ, ni ipo nipasẹ ilana ipa-ọna ti nṣiṣe lọwọ rẹ.`,explicit:`Kokoro nronu`,explicitHelp:`Nigbagbogbo lo awọn awoṣe kan pato ti o yan ni isalẹ.`},panelModels:`Awọn awoṣe nronu`,selectedCount:`{count} ti {max} ti a ti yan`,noModels:`Ko si awọn awoṣe ti o sopọ sibẹsibẹ. Ṣafikun bọtini API kan, lẹhinna mu awọn awoṣe ṣiṣẹ ninu Ẹwọn Fallback.`,panelSize:`Iwọn igbimọ`,panelSizeHelp:`Awọn awoṣe oniruuru melo ni lati mu laifọwọyi (1-{max}).`,judge:`Adajọ awoṣe`,judgeHelp:`Awọn awoṣe ti o synthesizes awọn idahun nronu sinu ọkan. Laifọwọyi nlo awoṣe to wa ni ipo giga rẹ.`,judgeAuto:`Aifọwọyi (ipo-oke wa)`,strategy:`Ilana`,strategySynthesize:`Sinthesize — parapo nronu sinu ọkan idahun`,strategyBestOf:`Ti o dara julọ - da idahun nikan ti o lagbara julọ pada (ko si ipe onidajọ)`,strategySynthesizeShort:`Ṣọpọlọpọ`,strategyBestOfShort:`Ti o dara ju ti`,exposePanel:`Fi awọn alaye nronu han`,exposePanelHelp:`So idahun awoṣe kọọkan ati metadata adajọ labẹ aaye x_fusion kan ninu idahun naa.`,howToUse:`Bawo ni lati lo`,howToUseHelp:`Firanṣẹ ibeere iwiregbe deede pẹlu awoṣe “Fusion”. Awọn eto wọnyi jẹ aiyipada; eyikeyi ìbéèrè le idojuk wọn pẹlu kan "fusion" aaye.`,unsavedChanges:`Awọn iyipada ti ko ni fipamọ`,save:`Fipamọ`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Ere`,description:`Awọn ifiwe awoṣe katalogi, lori gbogbo ẹrọ.`,loading:`Nkojọpọ…`,checkForUpdates:`Ṣayẹwo fun awọn imudojuiwọn`,syncing:`Mimuuṣiṣẹpọ…`,catalogFeed:`Katalogi kikọ sii`,liveFeed:`Live kikọ sii`,monthlySnapshot:`Aworan oṣooṣu`,lastChecked:`Ayẹwo ikẹhin: {when}`,liveDescription:`Awọn awoṣe ọfẹ tuntun, awọn iyipada ipin, ati awọn atunṣe quirk de ibi laarin awọn wakati ti gbigbe. Awọn ohun elo sọwedowo laifọwọyi lẹmeji ọjọ kan; nkankan lati se.`,snapshotDescription:`Ipele ọfẹ: katalogi naa ntu lati aworan oṣooṣu kan, ṣayẹwo laifọwọyi lẹmeji lojumọ. Ere yipada eyi si kikọ sii laaye, imudojuiwọn ni gbogbo ọjọ 2-3.`,lastSyncProblem:`Isoro imuṣiṣẹpọ kẹhin: {error}`,license:`Iwe-aṣẹ`,planAnnual:`Ere Lododun`,planLifetime:`Igbesi aye Ere`,expired:`Ti pari`,inactive:`Aiṣiṣẹ`,lifetimeNote:`Iwe-aṣẹ igbesi aye: ko pari.`,renewsOn:`Awọn imudojuiwọn lori {date}.`,willNotRenew:`Yoo ko tunse. Ere titi di {date}, lẹhinna fifi sori ẹrọ yii ṣubu pada si katalogi oṣooṣu ọfẹ.`,keyInactive:`Bọtini yi ko ṣiṣẹ mọ. Ìfilọlẹ naa n ṣiṣẹ lori katalogi oṣooṣu ọfẹ.`,manageSubscription:`Ṣakoso ṣiṣe alabapin`,openingPortal:`Ṣii…`,removeKey:`Yọ bọtini kuro lati ẹrọ yii`,manageHint:`Ṣakoso ṣiṣe alabapin ṣi ọna abawọle ìdíyelé Stripe: fagilee, ṣe imudojuiwọn kaadi rẹ, tabi ṣe igbasilẹ awọn risiti. Yiyọ bọtini kuro nikan ma ṣiṣẹ ẹrọ yii; rẹ ra ni untouched.`,licenseKey:`Bọtini iwe-aṣẹ`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Mu ṣiṣẹ`,activating:`Muu ṣiṣẹ…`,keyHint:`Bọtini rẹ wa ninu imeeli rira rẹ ati lori oju-iwe isanwo-lẹhin. O padanu rẹ?`,recoverKey:`Bọsipọ o lori aaye ayelujara`,upsellTitle:`Lọ laaye fun $19 fun ọdun kan`,upsellDescription:`Awọn awoṣe ọfẹ tuntun ni akoko ti wọn wa, dipo awọn ọjọ 30 nigbamii. Bọtini kan, gbogbo ẹrọ. Fagilee nigbakugba; olulana duro free lailai.`,goPremium:`Lọ Ere`,bundled:`dipọ`,planGeneric:`Ere`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`Nkankan ti ko tọ`,boundaryDescription:`Dasibodu naa kọlu aṣiṣe airotẹlẹ. Data rẹ jẹ ailewu. Gbiyanju lẹẹkansi tabi pada si oju-iwe awọn awoṣe.`,tryAgain:`Gbiyanju lẹẹkansi`,goHome:`Pada si awọn awoṣe`},notFound:{title:`Oju-iwe ko ri`,description:`Oju-iwe yii ko si tabi o le ti gbe.`},setup:{title:`Bibẹrẹ`,subtitle:`Awọn igbesẹ mẹta lati ṣe itọsọna ibeere akọkọ rẹ.`,progress:`{done} ti {total}`,step1Title:`Fi bọtini olupese kan kun`,step1Desc:`Sopọ o kere ju akọọlẹ olupese kan. Awọn bọtini ọfẹ ṣiṣẹ.`,step1Cta:`Fi awọn bọtini`,step2Title:`Fi ibeere idanwo ranṣẹ`,step2Desc:`Mu awoṣe eyikeyi ninu Ibi-iṣere naa ki o sọ hello.`,step2Cta:`Ṣii ibi isereile`,step3Title:`So app rẹ pọ`,step3Desc:`Lo bọtini API ti iṣọkan rẹ pẹlu alabara ibaramu OpenAI eyikeyi.`,copyKey:`Daakọ bọtini API`,copyUrl:`Da ipilẹ URL`,copiedKey:`Bọtini API daakọ si agekuru agekuru`,copiedUrl:`Ipilẹ URL daakọ si agekuru agekuru`},palette:{title:`Paleti aṣẹ`,placeholder:`Ṣewadii awọn oju-iwe, awọn awoṣe, awọn iṣe…`,empty:`Ko si esi`,groupPages:`Awọn oju-iwe`,groupActions:`Awọn iṣe`,groupModels:`Awọn awoṣe`,toggleTheme:`Yi ipo dudu pada`},validation:{required:`Ti beere fun`,url:`Tẹ URL to wulo ti o bẹrẹ pẹlu http:// tabi https://`,email:`Tẹ adirẹsi imeeli to wulo`,passwordMin:`O kere ju awọn ohun kikọ {min}`},agents:{title:`Awọn aṣoju kikọ koodu`,description:`So awọn irinṣẹ kikọ koodu pọ mọ ẹnu-ọna awoṣe ọfẹ kan pẹlu iṣeto ti a ṣẹda, ti o ni aabo afẹyinti.`,apiKey:`Bọtini API`,quickstartTitle:`Ìbẹ̀rẹ̀ kíákíá`,quickstart:`Ọna ti o yara julọ: ṣeto Claude Code lati inu katalogu laaye.`,currentKey:`Bọtini iṣọkan lọwọlọwọ:`,seenRecently:`Ti a rii laipẹ`,setupLabel:`Ìṣètò aládàáṣe`,setupHint:`Ó kọ fáìlì ìṣètò irinṣẹ́ yìí fún ọ, tí ó tọ́ka sí ẹnu-ọ̀nà yìí.`,setupGuideHint:`Ó ṣàfihàn àwọn ìgbésẹ̀ ìṣètò irinṣẹ́ yìí; kò kọ fáìlì kankan.`,manualLabel:`Ìsopọ̀ àfọwọ́ṣe`,manualHint:`URL ìpìlẹ̀ àti kọ́kọ́rọ́ láti tẹ̀ sínú ètò irinṣẹ́ náà.`,endpoint:`Ebute`,documentation:`Iwe akọsilẹ`,descriptions:{claude:`Anthropic's terminal agent: it plans, edits files, and runs commands in your repo.`,codex:`OpenAI's terminal agent, which runs your task in a local sandbox first.`,cline:`A VS Code extension that asks you to approve every edit and command.`,continue:`A VS Code and JetBrains extension for inline autocomplete and chat while you type.`,aider:`A command-line pair programmer that turns each change into its own git commit.`,opencode:`A provider-agnostic terminal agent with a full-screen text interface.`,goose:`Block's local agent, extended with MCP servers to reach past your code.`,qwen:`A Gemini CLI fork tuned for Qwen models and large repositories.`,roo:`A VS Code extension with switchable modes: architect, coder, debugger.`,kilo:`A VS Code extension merging Roo and Cline, with an orchestrator that splits up work.`,crush:`Charm's terminal agent, written in Go, with one session per project.`,dsh:`DeepSeek's harness, which keeps every provider as a route you can switch between.`,mimo:`Xiaomi's terminal agent, an OpenCode fork that takes any OpenAI-compatible provider.`,cursor:`The AI-first editor; it calls through Cursor's cloud, so it needs a public URL.`,generic:`Anything else that speaks the OpenAI API, set up by hand from a base URL and key.`,atomcode:`AtomGit's terminal agent, written in Rust, that takes any OpenAI-compatible endpoint.`,openclaw:`Olùrànlọ́wọ́ ara ẹni tí ó wà ní ìmúrasílẹ̀ nígbà gbogbo, tí ó ń dáhùn lórí WhatsApp, Telegram, Discord àti bẹ́ẹ̀ bẹ́ẹ̀ lọ láti orí ẹ̀rọ tìrẹ.`,hermes:`Aṣojú Nous Research tí ó ń mú ara rẹ̀ dára síi, pẹ̀lú ìrántí tí ó wà pẹ́ àti àwọn ọgbọ́n, nínú terminal tàbí lórí àwọn ìṣàfilọ́lẹ̀ ìfọ̀rọ̀wérọ̀.`,pi:`Aṣojú terminal kékeré tí o ń ṣe àtúnṣe rẹ̀ pẹ̀lú àwọn àfikún, ọgbọ́n àti àwọn àpẹẹrẹ ìtọ́sọ́nà tìrẹ.`}},update:{available:`New version available`,whatsNew:`What's new in v{version}`,publishedOn:`Published {date}`,noNotes:`No release notes were published for this version.`,openRelease:`Open release page`,dismissVersion:`Dismiss this version`,dismiss:`Dismiss`},freeTier:{poolsToggle:`Free-tier pools ({count})`,poolsToggleBare:`Free-tier pools`,summary:`{pools} pools · {budget} tokens/mo counted once per pool · {credits} credits-based · {unpublished} unpublished`,pool:`Pool`,models:`Models`,budget:`Monthly budget`,kind:`Kind`,kindDocumented:`Documented`,kindCredits:`Credits`,kindUnpublished:`Unpublished`,remaining:`Remaining`,resetAt:`Resets at`,disabledModels:`({count} off)`,metricTokens:`tokens`,metricRequests:`requests`,metricCredits:`credits`,metricNeurons:`neurons`,metricOther:`units`,empty:`No enabled models with free-tier budget data.`,poolLabel:`{platform} · shared {scope} pool`,poolLabelBare:`{platform} · shared pool`,poolModels:`{count} models`,poolBudget:`{budget}/mo`,poolBudgetTitle:`One monthly allowance for the whole pool, scaled by the {count} usable keys on this platform. Every model listed under it draws from the same budget.`,poolNoQuota:`no published quota`,poolResets:`resets {time}`,independentBudgets:`independent budgets`},chains:{title:`Fallback chains`,description:`Named chains, each callable as auto:<name> in /v1/models.`,count:`{count} chains`,active:`Active`,default:`Default`,activate:`Activate`,activateHint:`Make this the chain the table below edits and the one auto routes through`,deleteHint:`Delete this chain`,deleteConfirm:`Delete chain "{name}"?`,create:`Create`,createPlaceholder:`Chain name`,createFailed:`Could not create the chain.`,nameRules:`Up to 20 characters: letters, digits, hyphens and underscores.`,startEmpty:`Start empty`,startEmptyHint:`Create the chain with no models in it, and keep new catalog models out of it. Unchecked, it starts as a copy of the default chain.`,curated:`Curated`,curatedHint:`New catalog models are not added to this chain automatically.`,renameHint:`Tún orúkọ ẹwẹ̀ yìí sí i`,renameConfirm:`Tún orúkọ ẹwẹ̀ "{oldName}" sí "{name}"? Àwọn oníbàárà̀ tó ̀ pè auto:{oldName} gbọ́dọ̀ yí padà sí auto:{name}.`,renamePlaceholder:`Orúkọ ẹwẹ̀ tuntun`,renameFailed:`A kò lè tún orúkọ ẹwẹ̀ yẹn sọ.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
@@ -0,0 +1 @@
1
+ var e={nav:{models:`模型`,playground:`试验场`,keys:`密钥`,analytics:`分析`,premium:`高级版`,upgrade:`升级`,settings:`设置`,signOut:`退出登录`,openMenu:`打开导航菜单`,switchLight:`切换到浅色主题`,switchDark:`切换到深色主题`,switchToChinese:`切换到中文`,switchToEnglish:`切换到英文`,modelsMenu:`浏览模型类型`,agents:`智能体`,logs:`日志`,analyticsMenu:`分析页面`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`创建账号`,signIn:`登录`,email:`邮箱`,password:`密码`,emailPlaceholder:`you@example.com`,passwordPlaceholderSetup:`至少 8 个字符`,passwordPlaceholderLogin:`您的密码`,setupDescription:`设置用于保护此控制台的邮箱和密码。`,loginDescription:`登录以管理您的密钥、路由和分析。`,createAccount:`创建账号`,creating:`创建中…`,signingIn:`登录中…`,loading:`加载中…`,newPasswordAutoComplete:`new-password`,currentPasswordAutoComplete:`current-password`,serverUnreachableBefore:`无法连接到服务器。请确认后端正在运行(`,serverUnreachableAfter:`)。`,setupCode:`启动代码`,setupCodePlaceholder:`来自服务器日志的代码`,setupCodeHint:`从另一台设备完成设置,需要服务器启动时日志中显示的一次性代码。`,changePassword:`修改密码`,changeEmail:`修改邮箱`,forgotPassword:`忘记密码?`,currentPassword:`当前密码`,newPassword:`新密码`,newEmail:`新邮箱`,resetCode:`重置码`,resetCodePlaceholder:`服务器日志中的代码`,resetCodeHint:`重置码在服务器日志中,绝不会通过邮件发送。`,forgotPasswordDescription:`点击下方按钮生成重置码。重置码会写入服务器日志,绝不会通过邮件发送。在此输入以设置新密码。`,requestResetCode:`发送重置码`,requestingResetCode:`发送中…`,resetPassword:`重置密码`,resettingPassword:`重置中…`,changingPassword:`修改中…`,changingEmail:`修改中…`,backToLogin:`返回登录`,passwordChanged:`密码修改成功。`,emailChanged:`邮箱修改成功。`,passwordReset:`密码重置成功,请重新登录。`,resetCodeDockerHint:`在 Docker 中运行?重置码在容器日志中:docker logs <container>`,desktopSessionFailed:`控制台无法登录本地服务器。请退出 SRouter 并重新打开。`},common:{save:`保存`,saving:`保存中…`,cancel:`取消`,discard:`放弃修改`,delete:`删除`,confirm:`确认`,copy:`复制`,copied:`已复制`,copyFailed:`无法复制——请手动选择文本并复制`,show:`显示`,hide:`隐藏`,apply:`应用`,applied:`已应用`,applying:`应用中…`,active:`已启用`,inactive:`未启用`,never:`从未`,loading:`加载中…`,error:`错误`,noData:`暂无数据`,unsavedChanges:`未保存的更改`,saveChanges:`保存更改`,remove:`移除`,unknownError:`未知错误`,model:`模型`,provider:`提供方`,success:`成功`,failures:`失败`,dismiss:`关闭`,status:`状态`},settings:{title:`设置`,language:`语言`,theme:`主题`,themeSystem:`系统`,themeLight:`浅色`,themeDark:`深色`,searchLanguage:`搜索语言…`,noLanguages:`未找到语言`,sections:`设置分组`,sectionGeneral:`常规`,sectionCompression:`压缩`,sectionAdvanced:`高级`,sectionPreview:`预览`,generalDescription:`此仪表盘的语言与外观。`,advancedDescription:`压缩流程的阈值与安全开关。`,compressionTitle:`提示词压缩`,compressionDescription:`在路由前减小请求大小,同时保留代码、错误信息、路径、数字和工具定义。`,compressionHelp:`在请求发送给提供方之前对其进行改写,使其占用更少的词元。代码、错误信息、文件路径和数字受到保护,任何会破坏它们的改写都会被丢弃。`,compressionMode:`模式`,compressionModeHelp:`关闭时原样发送请求。无损仅移除重复和多余的文本。标准还会缩短工具输出。激进则会额外压缩较早的对话轮次。`,compressionOff:`关闭`,compressionLossless:`无损`,compressionStandard:`标准`,compressionAggressive:`激进`,compressionLossy:`有损`,compressionEngines:`引擎`,compressionEnginesHelp:`每个引擎都是一个改写步骤。模式决定了运行哪些引擎;在此关闭某个引擎,则所有模式下都不会运行它。`,engineDedup:`重复文本块`,engineDedupHelp:`将对话中此前已出现过的文本块替换为一段简短引用。`,engineLite:`空白清理`,engineLiteHelp:`去除行尾空格,合并重复的空行,并删除重复的系统消息。`,engineReadLifecycle:`被取代的文件读取`,engineReadLifecycleHelp:`同一个文件稍后再次被读取或编辑时,替换为对较早读取结果的一段说明。`,engineToolfilter:`工具输出过滤`,engineToolfilterHelp:`缩短构建、测试和安装等命令与工具的输出。错误和堆栈跟踪行始终保留。`,engineJsoncompact:`JSON 表格`,engineJsoncompactHelp:`将字段相同的长 JSON 数组重新编码为紧凑表格。该过程可逆,不会丢失任何内容。`,engineRelevance:`相关性过滤`,engineRelevanceHelp:`当某条消息超出其大小预算时,删除与最新消息关联最弱的句子。`,engineAging:`较早的对话轮次`,engineAgingHelp:`将最近几轮之外的对话浓缩为简短摘要,并保留路径、错误和决策。`,engineHardBudget:`词元上限`,engineHardBudgetHelp:`删除价值最低的行,直到请求符合词元目标。`,compressionAutoTrigger:`超过预估词元数时自动触发`,compressionAutoTriggerHelp:`预估超过该词元数的请求会自动切换为激进模式。留空则停用。`,compressionPrefixFreeze:`冻结重复出现的提示词前缀`,compressionPrefixFreezeHelp:`当同一段系统提示词出现三次后便不再改动它,以便提供方一侧的提示词缓存继续生效。`,compressionTrustProjectFilters:`信任项目过滤文件`,compressionTrustProjectFiltersHelp:`也从工作目录加载工具输出过滤器。默认关闭,因为代码仓库可能借此对模型隐藏输出。`,compressionStats:`节省数据量`,compressionEstimatedTokensSaved:`预估节省的词元数`,compressionPreview:`实时预览`,compressionPreviewDescription:`将请求正文送入压缩流程,查看提供方实际会收到的内容。`,compressionPreviewPlaceholder:`粘贴请求 JSON 或纯文本`,compressionRunPreview:`运行预览`,updatesTitle:`更新`,checkForUpdates:`检查更新`,lastChecked:`上次检查:{when}`,currentVersion:`当前构建:`,updateAvailable:`有可用更新`,changelog:`更新内容`,upToDate:`已是最新版本`,buildAhead:`此构建领先于官方 main 分支。`,buildDiverged:`此构建已偏离官方 main 分支。`,buildUnknown:`无法将此自定义构建与官方 main 分支进行比较。`,notGitInstall:`此安装不包含 commit 信息。`,checkFailed:`无法检查更新。`,contactsGithub:`检查需手动执行,并会连接 GitHub。`,autoUpdateCheck:`自动检查更新`,autoUpdateCheckHelp:`每天检查一次 GitHub 上是否有新版本,并显示提醒。默认关闭。`,openReleases:`打开 GitHub Releases`,restartAfterUpdate:`构建完成后重启 SRouter。`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`模型`,chatModelsTab:`对话模型`,fusionTab:`融合`,embeddingsTab:`嵌入模型`,imageTab:`图像`,videoTab:`Video`,audioTab:`音频`,imageDesc:`文本生成图像模型。`,videoDesc:`Text-to-video generation models.`,audioDesc:`文本转语音与语音转文本模型。`,mediaHint:`通过以下端点生成`,mediaEmpty:`暂无模型,将从目录同步。`,ttsHeading:`文本转语音`,sttHeading:`语音转文本`,sttHint:`通过以下端点转录`,sttEmpty:`暂无语音转文本模型,将从目录同步。`,newBadge:`新`,monthlyTokenBudget:`每月词元额度`,remaining:`剩余`,used:`已用`,usedScopeHint:`仅统计本自然月内的聊天请求,覆盖当前链路中的所有模型(包括自定义端点)。绕过 SRouter 直接发往服务商的流量不计入。`,legendRemainingTitle:`{name}({platform})的剩余量 / 每月额度`,noPublishedQuota:`另有 {count} 个未公布额度`,noPublishedQuotaTitle:`这些模型没有公布每月词元额度,因此无法显示剩余量。`,of:`共`,showAllModels:`显示全部 {count} 个模型`,showLess:`收起`,vision:`视觉`,visionTitle:`支持图像输入`,tools:`工具`,toolsTitle:`支持结构化工具调用,可用于需要工具的请求`,retired:`已下线`,penalty:`−{value} 惩罚`,obs:`{count} 次观察`,tokPerMonth:`{count} 词元/月`,rpmLimit:`每分钟 {count} 次`,rpdLimit:`每日 {count} 次`,noKey:`无密钥`,dragToReorder:`拖动以重新排序`,dragToReorderGroup:`拖动以重新排序模型`,moveToRank:`跳转到排名`,providerCount:`{count} 个提供方`,servedBy:`由 {providers} 提供`,viewProviders:`查看提供方`,backToModels:`返回模型列表`,providersHeading:`提供该模型的提供方`,codeSnippetHeading:`使用该模型`,modelNotFound:`该模型不可用,或尚未配置任何提供方。`,providerIdsHeading:`各提供方的模型 ID`,providerIdsHint:`使用统一模型 ID 可在所有提供方之间自动故障转移;使用某个提供方专属的 ID 则会将请求锁定到该提供方。`,copyModelName:`复制模型名称`,settingsHeading:`提供方设置`,settingsHint:`对目录模型的本地修改会在目录同步后保留。已删除的目录模型会保持删除状态,直到您通过配置重新添加。`,catalogModel:`目录`,customModel:`自定义`,discoveredModel:`已发现`,localOverride:`本地覆盖`,displayName:`显示名称`,sizeLabel:`能力档位`,sizeLabelHint:`Frontier/Large/Medium/Small 决定智能轴:档位越高在该轴上始终越占优,同一档位内智能排名仍会改变得分。未识别档位的模型在该轴上得分最低,但智能只是三条轴之一——稳定性与速度足够好时,它仍可能被自动路由选中。`,sizeLabelNone:`无(智能得分最低)`,contextWindow:`上下文`,inFallback:`置入回退链`,saveModelSettings:`保存模型设置`,aggregateBudget:`{count}/月`,aggregateBudgetTitle:`该模型所有提供方能提供的每月免费词元总额度`,rateRpm:`{count} 请求/分钟`,rateRpd:`{count} 请求/日`,rateTitle:`按速率限制——无固定的每月词元额度`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`时间窗口内的速率限制用量(已用 / 上限),取剩余额度最多的提供方`,splitOut:`不合并此副本`,splitOutHint:`让该提供方的副本作为独立条目显示,而不并入统一模型。可在该副本自己的页面上重新合并。`,splitUndo:`重新合并`,splitUndoHint:`此副本当前独立于其统一模型。重新合并后将再次在其所有提供方之间进行故障转移。`,splitBadge:`已独立`,noData:`暂无数据`,noDataTitle:`尚未记录任何请求——该提供方的可靠性和速度尚未测得。`,bestOfN:`{count} 个中的最佳`,perProviderScores:`各提供方评分:{list}`,columnModel:`模型`,columnOn:`启用`,noModelsBefore:`暂无可用模型。请先在`,keysPageLink:`密钥页面`,noModelsAfter:`添加 API 密钥。`,hiddenNoKeys:`已隐藏(无密钥):{platforms}`,searchPlaceholder:`搜索模型或提供方…`,clearSearch:`清除搜索`,ctxAny:`任意上下文`,ctxBadge:`{size} 上下文`,ctxTitle:`上下文窗口`,copyModelId:`复制模型 ID`,showingCount:`{total} 个模型中的 {shown} 个`,clearFilters:`清除筛选`,noMatches:`没有符合筛选条件的模型。`,noModelsTitle:`尚未配置模型`,intelligenceRank:`智能`,speedRank:`速度`,rankHint:`目录中的排名——1 为最佳。`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`每分钟请求数。留空表示不限制。`,limitRpdHint:`每天请求数。留空表示不限制。`,limitTpmHint:`每分钟词元数。留空表示不限制。`,limitTpdHint:`每天词元数。留空表示不限制。`,usageThisMonth:`每月用量`,usageEmpty:`本月还没有请求。`,usageRequestsMonth:`本月 {count} 次请求`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`启用或停用所有显示的模型`,enableAll:`全部启用`,disableAll:`全部停用`,enableAllHint:`启用所有显示的模型,然后保存`,disableAllHint:`停用所有显示的模型,然后保存`,enabledOfShown:`显示的 {shown} 个模型中有 {enabled} 个在链中`},strategies:{explore:`探索未测模型`,exploreHint:`让没有可靠性或速度数据的模型有 10% 的几率优先尝试,以便积累记录。发出的是你的真实请求,因此它可能由未经测试的模型来回答。若是自定义端点,可在「密钥」页面用「立即探测」测试,无需动用真实流量。`,keySelection:`密钥选择`,keySelectionAuto:`自动`,keySelectionLeastRemaining:`按剩余额度`,keySelectionHint:`当同一提供商配置了多个密钥时如何选择。自动保持当前轮换;按剩余额度会根据观测到的配额排序,优先使用剩余最多的密钥。`,cooldownCeiling:`自动冷却上限`,cooldownCeilingHint:`限制路由器自身推测最多能把一个失败的密钥与模型组合停用多久。阶梯通常为 2 分钟、10 分钟、1 小时、24 小时,余额不足或等级限制错误会停用一天。提供方明确给出的重试时间不会被缩短。`,cooldownCeilingDefault:`默认(最长 24 小时)`,cooldownCeiling10m:`10 分钟`,cooldownCeiling1h:`1 小时`,cooldownCeiling6h:`6 小时`,moreOptions:`更多选项`,peakActive:`(高峰时段)`,peakActiveHint:`高峰时段调整当前已生效,因此这些不是预设本身的权重:60% 的速度权重已转移到可靠性上。`,peakAdjust:`高峰时段调整`,peakAdjustHint:`默认关闭。在下面的时间窗口内,将 60% 的速度权重转移到可靠性上——免费中转在此时最繁忙,可靠性比原始吞吐量更能预测成功率。“最快”和“最可靠”不受影响。`,peakFrom:`从`,peakTo:`至`,peakTimezoneLabel:`时区`,peakUseBrowserTimezone:`使用浏览器时区`,peakTimezoneInvalid:`未知时区。`,peakExemptNote:`此预设不受影响——它已经处于速度/可靠性权衡的一端。`,title:`路由策略`,description:`选择路由策略。手动模式下拖动即可设置顺序;其他策略会根据可靠性、速度和智能的实时评分进行路由。`,weightsSummary:`可靠性 {reliability}% · 速度 {speed}% · 智能 {intelligence}%`,guardrails:`护栏`,guardrailsTooltip:`始终生效的护栏:免费额度余量 × 实时限流惩罚。低于 1.0 表示该模型正在被抑制。`,scoreTooltip:`最终路由得分 = 三个维度的加权平均值,再乘以护栏系数。得分越高越优先路由。`,modeManualHint:`手动模式:请求按下方顺序从上到下依次尝试。拖动可重新排序。`,modeScoreHint:`评分会根据实时流量更新。下方的顺序即为当前实际的路由顺序。`,manual:`手动`,manualBlurb:`完全按下方设置的顺序路由。拖动手柄即可重新排序。不参与评分,按从上到下的顺序依次回退。`,balanced:`均衡`,balancedBlurb:`以稳定性为首(50%),速度与智能各占 25%。通用场景的合理默认。`,smartest:`最智能`,smartestBlurb:`优先选择能力强且能正常工作的模型。智能权重 55%,稳定性 35%,速度 10%。`,fastest:`最快`,fastestBlurb:`在能正常工作的前提下优先选择最快的模型。速度 55%,稳定性 35%,智能 10%。`,reliable:`最稳定`,reliableBlurb:`将成功率放在首位。稳定性 70%,速度与智能各占 15%。`,custom:`自定义`,customBlurb:`用滑块自定义稳定性、速度和智能之间的权衡。引擎与预设相同,只是权重由您决定。`,adjust:`调整`,customWeights:`自定义权重`,customWeightsHelp:`滑块彼此独立;占比会自动平衡至 100%。`,weightReliability:`稳定`,weightSpeed:`速度`,weightIntelligence:`智能`,weightRequired:`至少一个权重必须大于零。`,scoreColumn:`评分`},penaltyInspector:{title:`路由压力`,subtitle:`过去 {minutes} 分钟内的惩罚、冷却和失败`,rowCount:`{count} 个活跃`,offChain:`不在回退链中`,penaltyValue:`惩罚 {value}`,factor:`得分 x{factor}`,noCooldown:`无冷却`,cooldownChip:`{key},{time}`,resetCooldown:`重置冷却`,clearAll:`全部清除`,clearAllHint:`立即解除所有冷却、惩罚和失败计数。压力会根据之后的实际结果重新累积。`,errorsHeading:`{count} 个近期错误`,noRecentErrors:`暂无近期错误`,noKey:`无密钥`,reasons:{penalty:`已惩罚`,cooldown:`冷却中`,recent_errors:`失败中`}},keys:JSON.parse(`{"pageTitle":"密钥","pageDescription":"各提供方的凭据,以及供您的应用程序连接的统一 API 密钥。","tabProviders":"提供方","checklistSummary":"已配置 {configured}/{total} 个提供方","checklistKeyless":"无需密钥","checklistNoKeyTip":"尚未添加密钥。点击添加一个。","checklistSignupLink":"打开 {provider} 注册账户并获取密钥","checklistKeylessTip":"无需密钥即可使用。","tabQuotaSignals":"配额信号","tabApiKey":"统一 API 密钥","tabAnthropic":"Anthropic","unifiedKey":"您的统一 API 密钥","regenerate":"重新生成","showKey":"显示","hideKey":"隐藏","copyKey":"复制","copyFullKey":"复制完整密钥","copiedKey":"已复制","baseUrl":"基础 URL","endpointChat":"对话","endpointResponses":"响应","endpointEmbeddings":"嵌入","endpointEmbeddingsHint":"model: \\"auto\\" 或「嵌入模型」标签中的系列","endpointMessages":"消息","endpointMessagesHint":"兼容 Anthropic(Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Claude(Anthropic)模型","anthropicDesc":"将 Claude 或 Anthropic SDK 客户端指向此服务器。Anthropic 客户端会发送 Claude 模型名称——将每个名称映射为 Auto(由路由器挑选一个免费模型)或固定为某个指定模型。","anthropicBaseUrl":"基础 URL","anthropicAuth":"鉴权请求头","anthropicAuto":"Auto——由路由器挑选最佳模型","anthropicSave":"保存映射","anthropicSaved":"已保存","anthropicNote":"Anthropic 客户端会保留其内置的 Claude 模型名称;上方的映射决定每个名称如何路由到您的资源池。","familyDefault":"默认","familyOpus":"Opus","familySonnet":"Sonnet","familyHaiku":"Haiku","selectPlatform":"选择提供方","addKey":"添加密钥","keyAdded":"密钥已添加","endpointKeysShareModels":"同一端点的密钥共用它的模型。","export":"导出","exportAll":"所有密钥","exportHealthy":"仅良好状态","exportKeys":"导出 API 密钥","exportFormat":"格式","exportHealthyOnly":"仅良好状态的密钥","exportHealthyOnlyDesc":"排除目前未通过状态检查的密钥","exportWillExport":"将导出","exportKey":"个密钥","exportKeys plural":"个密钥","exporting":"导出中…","exportDownload":"下载","exportSuccess":"已导出 {count} 个密钥","adding":"添加中…","selectProvider":"请选择一个提供方…","accountId":"账户 ID","label":"标签","noKeyNeeded":"(无需密钥)","outboundProxy":"出站代理","outboundProxyDescription":"通过代理路由出站(外发)的 LLM 请求。支持 SOCKS5、HTTP 或 HTTPS。","proxyUrl":"代理地址","saveProxy":"保存","savingProxy":"保存中…","testProxy":"测试","testingProxy":"测试中…","proxyTestOk":"代理可用 — 往返耗时 {ms}ms","proxyTestFail":"代理测试失败:{reason}","proxyLoadFailed":"无法加载代理设置。","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"添加自定义 OpenAI 兼容模型","addCustomDescription":"指向任意 OpenAI 兼容的端点:llama.cpp、LM Studio、vLLM、本地 Ollama 或远程网关。API 密钥是可选的(大多数本地服务器不需要)。","customType":"类型","customTypeChat":"对话","customTypeEmbedding":"嵌入","customTypeImage":"图像","customTypeAudio":"音频","customTypeTranscription":"Transcription","customBaseUrl":"基础 URL","customModels":"模型","customModel":"模型","customDisplayName":"显示名称","customDisplayNamePerModel":"按模型命名","customDisplayNameOptional":"可选","customFamily":"系列","customFamilyPlaceholder":"默认为模型 ID","customApiKey":"API 密钥","customCapabilities":"能力","addModel":"添加模型","modelAdded":"模型已添加","addModels":"添加 {count} 个模型","addEmbeddingModel":"添加嵌入模型","addImageModel":"添加图像模型","addAudioModel":"添加音频模型","addTranscriptionModel":"Add transcription model","addingCustom":"添加中…","discoverModels":"获取模型","probeNow":"立即探测","probeConfirm":"将发送最多 3 次测试请求?","probeCapabilities":"推理:{reasoning} · 工具调用:{tools}","probeCapYes":"支持","probeCapNo":"不支持","probeCapUnknown":"未知","probeSuccess":"已探测 {model},耗时 {latency}ms","probeFailed":"探测失败:{reason}","discoverTitle":"此端点上的模型","discoverHint":"选择要注册的模型。已添加的模型保持锁定。","discoverEmpty":"此端点未返回任何模型。","discoverAlreadyAdded":"已添加","discoverSelectAll":"全选","modelsAdded":"已添加 {count} 个模型","getApiKey":"获取 API 密钥","deleteKeyConfirm":"确认删除此密钥?此操作无法撤销。","checkAll":"检查全部","checking":"检查中…","editKey":"编辑密钥","editPlatformLocked":"创建后无法更改提供方和端点。","editCredentialHint":"留空则保留当前密钥。","editCredentialPartsRequired":"请同时输入账户 ID 和 API 令牌。","editModels":"编辑模型","editModelsHint":"选择此密钥可服务的目录模型。全选将清除限制,后续新增目录模型也会使用此密钥。","editModelsCustomHint":"选择此密钥可服务的已注册端点模型。全选将清除限制。","editModelsSync":"检查目录更新","editModelsSyncing":"检查中…","editModelsSynced":"模型目录已检查","editLabel":"编辑标签","saveLabel":"保存标签","unifiedKeyDescBefore":"将其用作您的 OpenAI ","unifiedKeyDescAfter":";它用于对发往本代理的请求进行身份验证。","serverUnreachableBefore":"无法连接到位于 ","serverUnreachableAfter":" 的服务器。请确认后端正在运行。npm run dev 会同时启动两者,服务器日志会以 server 前缀打印。","paneProviderKey":"提供方密钥","paneImportFile":"导入文件","paneCustomEndpoint":"自定义端点","platform":"平台","hideAdded":"隐藏已添加的提供方","apiToken":"API 令牌","keyOptionalPlaceholder":"可选","bearerTokenPlaceholder":"Bearer 令牌","pasteKeyPlaceholder":"在此粘贴密钥","pasteSeveral":"粘贴多个","keyOptionalHint":"可选:留空则使用匿名免费层级(按 IP 限速),或粘贴您自己的密钥以使用您的账户。","enable":"启用","noProviderKeys":"尚无提供方密钥。在上方添加一个即可开始路由。","filterPlaceholder":"筛选提供方或密钥","filterAll":"全部","filterHealthy":"健康","filterIssues":"有问题","filterDisabled":"已禁用","noFilterMatch":"没有符合筛选条件的提供方。","providerCountSummary":"{providers} 个提供方 · {keys} 个密钥","summaryHealthy":"{count} 个正常","summaryIssueOne":"{count} 个问题","summaryIssueOther":"{count} 个问题","providerActions":"提供方操作","routeViaProxy":"经由代理服务器转发","checkNow":"立即检查","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"也可通过 ","proxyEnvHintAfter":" 环境变量配置(优先生效)。留空则禁用。示例:","importKeys":"导入提供方密钥","importKeysDescription":"上传 .env、JSON、JSONC、CSV、Markdown 或文本文件。","importFiles":"文件","importFileCount":"已选择 {count} 个","previewFiles":"预览","previewing":"预览中…","selected":"已选择","provider":"提供方","keyName":"密钥名称","keyValue":"密钥值","chooseProvider":"选择提供方","noPreviewKeys":"未在这些文件中找到密钥。","skippedItems":"已跳过:","moreItems":"还有 {count} 项","importSelected":"导入 {count} 个","importing":"导入中…","noImportSelection":"请至少选择一行包含提供方的记录。","duplicate":"重复","duplicatesFound":"检测到 {count} 个重复项——已存在,将被跳过。","importResult":"已导入 {imported} 个;失败 {failed} 个。","importModelCount":"+{count} 个模型","importResultWithModels":"已导入 {imported} 个;已注册 {models} 个模型;失败 {failed} 个。","confirmRemove":"确认?","quotaSignalsTitle":"配额信号","quotaSignalsEmptyTitle":"暂无配额观测数据","quotaSignalsEmptyDesc":"当提供方返回限流头、配额错误或验证信号后,这里会自动填充。","quotaKeyRef":"密钥 #{id}","quotaPoolRef":"配额池 {pool}","quotaLimit":"上限","quotaRemaining":"剩余","quotaReset":"重置","quotaObserved":"观测时间","tabAgents":"智能体","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Gemini 模型映射","geminiDesc":"将 Gemini Pro、Flash 和 Flash-Lite 名称映射到 Auto 或特定的目录模型。","compatibilityTitle":"智能体兼容性","compatibilityDesc":"控制需主动启用的兼容性接口以及 Claude Code 模型发现。","ollamaMode":"Ollama 模拟","ollamaModeHint":"「在本地环回上开放」模式从不接受未经身份认证的局域网流量。","ollamaOff":"关闭","ollamaLoopback":"在本地环回上开放","ollamaKeyRequired":"需要 API 密钥","claudeAliases":"Claude Code 发现别名","claudeAliasesHint":"公开 claude/<model> 别名,以便网关模型选择器列出目录。","mcpServer":"MCP 服务器","mcpServerHint":"向智能体客户端开放 /mcp 端点。新安装默认关闭。","urlTokensTitle":"可撤销的 URL 令牌","urlTokensDesc":"仅供无法发送请求头的客户端使用。URL 令牌可能泄露到历史记录和日志中,不再需要时请及时撤销。","urlTokenLabel":"令牌标签","createUrlToken":"创建令牌","urlTokenOnce":"请立即复制此令牌,它不会再次显示。","revoked":"已撤销","revoke":"撤销","modelScope":"模型范围","modelScopeDesc":"将此密钥限制为特定的模型 ID。路由器会为其他模型跳过此密钥。","modelScopeAdd":"输入模型 ID 并按回车添加","modelScopeEmpty":"未设置范围——此密钥可为该提供方的所有模型服务。","modelScopeClear":"清除范围","modelScopeBadgeOne":"限定 · 1 个模型","modelScopeBadgeOther":"限定 · {count} 个模型","modelPicker":{"title":"此密钥应服务哪些模型?","hint":"您的 {provider} 密钥已添加,目前可服务下方全部模型。请取消勾选此密钥不可使用的模型——路由器会为这些模型跳过此密钥。","count":"已选择 {selected} 个,共 {total} 个","allNote":"已全选——不会保存任何限制,之后添加到目录的模型也会使用此密钥。","subsetNote":"此密钥将仅限于所选模型。之后可在该密钥所在行更改。","skip":"暂不设置","allSaved":"密钥可服务全部目录模型","scopedOne":"密钥已限定为 1 个模型","scopedOther":"密钥已限定为 {count} 个模型"},"cpTitle":"客户端配置文件","cpDesc":"为每个客户端单独发放 API 密钥,服务器会始终应用其系统提示词。","cpEmpty":"还没有客户端配置文件。","cpNameLabel":"名称","cpNamePlaceholder":"例如:客服机器人","cpPromptLabel":"系统提示词(可选)","cpPromptPlaceholder":"服务器会在使用此密钥的每个请求之前附加这些指令。","cpCreate":"创建配置文件","cpRotate":"轮换密钥","cpKeyOnce":"请立即复制此密钥——之后将不再显示。","cpEnabledAria":"配置文件已启用","selectKey":"选择此密钥","bulkSelected":"已选择 {count} 个密钥","bulkEnable":"批量启用","bulkDisable":"批量禁用","bulkDelete":"批量删除","bulkDeleteConfirm":"删除 {count} 个?","bulkResult":"已更新 {done} 个;失败 {failed} 个。","bulkDeleteResult":"已删除 {done} 个;失败 {failed} 个。","outlookUnavailable":"暂无数据","outlookNoForecasts":"暂时无法预测。需要近期请求记录或可靠的配额读数。","outlookCoverage":"{total} 个配额池中有 {count} 个可预测。","outlookTraffic":"最近 {minutes} 分钟内,此实例成功处理了 {count} 次请求。","outlookMinimumTraffic":"预测耗尽时间需要在 {minutes} 分钟内至少有 {count} 次成功请求。","outlookNotReportedHint":"提供方尚未报告可用的请求余额和上限。此处显示本地用量,剩余配额暂无数据。","outlookMissingResetHint":"提供方未报告有效的重置时间,无法预测配额耗尽时间。","outlookConfidenceHint":"此余额的可信度不足,无法预测耗尽时间。","outlookObserved":"余额观测时间:{time}","outlookUnavailablePools":"暂无预测数据的配额池({count})","outlookTitle":"额度预测","outlookInsufficient":"数据不足","outlookLowBalance":"剩余额度较低","outlookRunningLow":"额度即将耗尽","outlookStale":"需要最新数据","outlookUnknown":"未知","outlookWithinQuota":"额度充足","outlookResetsFirst":"重置前不会耗尽","outlookExhausted":"额度已耗尽","outlookLastReported":"次请求(上次报告)","outlookRequestsLeft":"次请求可用","outlookNotReported":"未报告","outlookRate":"近期速率","outlookRateValue":"每分钟 {count} 次请求","outlookRunsOut":"预计耗尽时间","outlookStaleHint":"此余额已过时或配额窗口已结束,需要提供方返回新的读数。","outlookError":"无法加载额度预测。您仍可在下方查看原始观测数据。","outlookRetry":"重试","outlookAttention":"需要关注的额度池:{count}","outlookNoWarnings":"暂无预测预警。数据不足的额度池仍可能受限。","outlookHint":"速率仅统计经此实例成功处理的请求,不含其他途径的用量。预测需要近期余额和报告的重置时间。剩余配额低于 20%,或预计在重置前的两小时内耗尽时,将显示警告。","outlookRaw":"原始额度观测数据","addCustomModel":"添加自定义模型","modelId":"模型 ID","modelIdRequired":"模型 ID 为必填项","modelDisplayName":"显示名称","modelContextWindow":"上下文窗口 (Tokens)","modelRateLimits":"速率限制 (可选)","modelSupportsTools":"支持工具调用","modelSupportsToolsHint":"如果该模型支持函数/工具调用,请启用此项","modelSupportsVision":"支持视觉分析","modelSupportsVisionHint":"如果该模型支持图片输入,请启用此项","createModel":"创建模型","modelAddedSuccess":"自定义模型添加成功","modelAddFailed":"添加自定义模型失败","testModel":"测试","testingModel":"测试中…","testPassedShort":"通过","testFailedShort":"失败","testPassed":"模型测试通过,耗时 {latency} 毫秒","testFailed":"模型测试失败","testThrottled":"请等待 {seconds} 秒后再测试此模型。","noModelsForProvider":"此提供方尚未配置任何模型。","testModels":"测试模型","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"无限制","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"本月 {requests} 次请求,{tokens} tokens","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`备份`,description:`将路由数据导出为数据库目录下的 .sql 文件,并可随时恢复。`,excludedNote:`备份包含服务商、模型、路由设置与请求历史。账号、会话和 URL 令牌永远不会被导出,因此备份文件中没有密码哈希或登录令牌,恢复备份也不会让你退出登录。服务商密钥仍以本服务器的 ENCRYPTION_KEY 加密保存:只有持有该密钥的服务器才能恢复这个备份。`,selectHint:`备份全部数据,或只选择需要的数据表。`,selectAll:`全选`,deselectAll:`清空`,fullBackup:`完整备份`,backupSelected:`备份所选({count})`,created:`备份已写入 {filename}`,list:`磁盘上的备份`,empty:`暂无备份`,full:`全部数据表`,tablesCount:`{count} 个数据表`,manual:`手动`,scheduled:`定时`,preRestore:`恢复前快照`,download:`下载`,restore:`恢复`,confirmRestore:`确认覆盖?`,restored:`已恢复。原有数据已保存为 {filename}。`,delete:`删除备份`,prevPage:`上一页`,nextPage:`下一页`,autoTitle:`自动备份`,autoHint:`服务器按此周期自动生成完整备份。`,time:`时间(HH:mm)`,intervalDays:`间隔天数`,path:`目录`,pathPlaceholder:`backups`,pathHint:`相对于数据库所在目录。备份不能写到该目录之外。`,save:`保存计划`,saved:`已保存`},status:{healthy:`健康`,rateLimited:`被限流`,invalid:`无效`,error:`错误`,unchecked:`未检查`},analytics:{title:`分析`,description:`请求量、延迟、词元用量与失败情况。`,range24h:`24 小时`,range7d:`7 天`,range30d:`30 天`,range90d:`90 天`,requests:`请求数`,successRate:`成功率`,inputTokens:`输入词元`,outputTokens:`输出词元`,avgLatency:`平均延迟`,p95Latency:`P95 延迟`,avgTtft:`平均首个词元用时`,estSavings:`预估节省`,requestsByProvider:`按提供方的请求数`,avgLatencyByProvider:`按提供方的平均延迟`,ttftByProvider:`按提供方的首个词元用时`,ttftEmpty:`尚未记录首个词元时间。`,requestsOverTime:`请求趋势`,tokensOverTime:`词元趋势`,byModel:`按模型`,byPlatform:`按提供方`,errors:`错误`,errorDistribution:`错误分布`,pinnedRequests:`指定模型的请求`,pinnedHonored:`已满足`,fallbackAttempts:`回退尝试次数`,savingsHint:"过去 {range} 您实际节省了 ${actual}。这是同样词元在按模型计费的付费 API 上的花费。显示的数字是基于过去 {span} 的数据推算出的完整 30 天金额。",savingsHintExact:"在过去 {range},您实际节省了 ${actual}。这是同样词元在按模型计费的付费 API 上的花费。显示的数字是您最近 30 天的实际总额。",requestsHintPinned:`其中有 {pinned} 个请求用名称指定了模型。{honored} 个由所指定的模型处理;{failed} 个回退到了其他模型。其余为自动路由。`,requestsHintAuto:`在此期间的所有请求均为自动路由;没有客户端用名称指定特定模型。`,requestsHintTypes:`{chat} 个对话请求和 {embedding} 个嵌入请求。`,rangeLabel24h:`24 小时`,rangeLabel7d:`7 天`,rangeLabel30d:`30 天`,rangeLabel90d:`90 天`,spanDays:`{count} 天`,spanHours:`{count} 小时`,latencyMs:`延迟(毫秒)`,latency:`延迟`,pinned:`指定模型`,inTokens:`输入词元`,outTokens:`输出词元`,saved:`已节省`,message:`消息`,time:`时间`,perModelBreakdown:`按模型细分`,usageByKey:`按密钥统计的用量`,keyColumn:`密钥`,keyLabelFallback:`密钥 #{id}`,errorsByProvider:`按提供方统计错误`,recentErrors:`最近的错误`,noErrors:`无错误`,recentCalls:`最近调用`,clientIp:`客户端 IP`,clientAgent:`客户端应用`,requestedModelHint:`请求了 {model},由回退模型提供`,attempts:`尝试次数`,filterAll:`全部`,filterCanceled:`已取消`,providerBreakdown:`按提供方细分`,tokensPerSec:`词元/秒`,allProviders:`全部提供方`,requestDetailTitle:`请求 #{id}`,failoverLadder:`故障转移阶梯`,failoverLadderHint:`该请求沿回退链经过的每一跳,按顺序排列。`,noAttemptTrace:`此请求未记录尝试轨迹。`,keyOrdinal:`密钥 #{n}`,keyBadge:`密钥 #{n}`,attemptTimingHint:`自请求开始的偏移 · 尝试耗时`,requestedModel:`请求的模型`,ttft:`首个词元用时`,requestsByAgent:`按智能体统计的请求`,sortBy:`按{column}排序`,sortHint:`排序仅作用于已加载的 {count} 行`,cacheHitRate:`缓存命中率`,cacheSavedTokens:`已节省 {tokens} 词元`,cacheHitRateHint:`自服务器启动以来命中 {hits} 次、未命中 {misses} 次 · 省下 {requests} 次提供方调用`},logs:{title:`日志`,description:`实时服务器日志。页面打开期间会持续接收新条目。`,pause:`暂停`,resume:`继续`,clear:`清空日志`,cleared:`服务器日志已清空`,levelFilter:`日志级别`,levels:{debug:`调试`,info:`信息`,warn:`警告`,error:`错误`},countsHint:`计数为服务器上整个日志缓冲区的总数,并非仅统计符合当前筛选条件的条目。`,searchPlaceholder:`搜索日志内容…`,jumpToLatest:`跳到最新`,showMore:`展开`,showLess:`收起`,buffered:`已显示 {count} 条,缓冲区最多 {max} 条`,emptyTitle:`暂无日志条目`,emptyDescription:`服务器写入日志时,条目会显示在这里。如果预期会有输出,请放宽级别、提供方或搜索筛选条件。`,noLevelsTitle:`未选择级别`,noLevelsDescription:`至少启用一个级别才能查看日志输出。`,loadFailed:`无法加载服务器日志。`},playground:{title:`试验场`,description:`通过路由器发送一次对话请求,看看哪个提供方提供服务。`,autoModel:`自动(回退链)`,fusionModel:`融合(多模型综合)`,selectModel:`选择模型`,searchModels:`搜索模型…`,noModelsFound:`未找到模型`,send:`发送`,sending:`发送中…`,clear:`清空`,inputPlaceholder:`输入消息…(回车发送,Shift+回车换行)`,emptyTitle:`发送消息即可开始。`,emptyDescription:`正在使用 {model}。可在上方选择器中切换模型。`,noModels:`暂无模型。请先在「密钥」页面添加 API 密钥。`,copyReply:`复制回复`,fallback:`次回退`,fallbacks:`次回退`,fusionPanel:`模型组`,fusionJudge:`评审`,fusionTrace:`{count} 个模型的回答`,fusionFailed:`无响应`,fusionJudgeSynth:`综合出最终答案`,errorPrefix:`错误:`,systemPromptLabel:`系统提示词`,systemPromptPlaceholder:`可选。作为系统消息在您的对话之前发送。`,showSettings:`显示设置`,hideSettings:`隐藏设置`,samplingHeading:`采样`,samplingHelp:`关闭时将采用提供方自身的默认值。只有您开启的选项才会被发送。`,samplingDefault:`默认`,temperature:`温度`,topP:`Top P`,maxTokens:`最大词元数`,errorTitle:`请求失败`,attach:`附加文件`,attachTooMany:`每条消息最多可附加 {count} 个文件。`,attachTooLarge:`{name} 太大了。上限为 {max}。`,attachUnsupported:`不支持 {name}。请附加图像(PNG、JPEG、WebP、GIF)或文本文件(TXT、MD、CSV、JSON、LOG)。`,attachFailed:`无法读取 {name}。`,noVisionBadge:`不支持图像`,visionWarning:`{model} 不接受图像。请选择视觉模型或「自动」。`,dictate:`语音输入`,dictationStop:`停止录音`,dictationTranscribing:`正在转写…`,dictationUnavailable:`请添加音频模型的提供商以使用语音输入。`,dictationModel:`语音输入模型`,dictationFailed:`转写失败:{reason}`,artifactOpen:`打开预览`,artifactPreview:`预览`,artifactCode:`代码`,artifactClose:`关闭预览`,artifactDownload:`下载`,artifactReload:`重新加载预览`,artifactHtml:`HTML 页面`,artifactSvg:`SVG 图像`,artifactLines:`行`,artifactResize:`调整预览大小`},playgroundSessions:{heading:`对话`,newConversation:`新建对话`,showSidebar:`显示对话`,hideSidebar:`隐藏对话`,empty:`暂无已保存的对话。`,untitled:`未命名对话`,rename:`重命名`,renamePlaceholder:`对话名称`,messageCount:`{count} 条消息`,justNow:`刚刚`,minutesAgo:`{count} 分钟前`,hoursAgo:`{count} 小时前`,daysAgo:`{count} 天前`,loadFailed:`无法打开该对话。`,renameFailed:`无法重命名该对话。`,deleteFailed:`无法删除该对话。`,actions:`对话操作`,newChat:`新对话`},embeddings:{title:`模型`,description:`嵌入模型只在同一系列内回退:同一模型可由另一个提供方提供。不同模型的向量不兼容,因此路由器绝不会在请求中途切换模型。`,defaultBadge:`默认 · auto`,makeDefault:`设为默认`,moveUp:`上移`,moveDown:`下移`,usageToday:`今日 {count} 次请求`,usageMonth:`本月 {count} 词元`,autoDescription:`在 POST /v1/embeddings 中使用 model: "auto" 会路由到默认系列。指定系列名(或提供方模型 ID)会固定该系列,并按顺序尝试其中的提供方。`,unsavedChanges:`有未保存的修改`,saveChanges:`保存修改`,savingChanges:`保存中…`,tokMax:`最多 {tokens} tok`,emptyTitle:`暂无嵌入模型`,emptyDesc:`添加支持嵌入的提供方密钥后,嵌入系列会显示在这里。`,dragToReorder:`拖动以重新排序提供方`},fusion:{title:`融合`,description:`由一组模型并行作答,再由评审模型综合出更优的答案。在调用 API 时将 model 设为 “fusion” 即可使用。`,panelSource:`模型组来源`,panelSourceHelp:`当请求未自行指定时,模型组所采用的来源。`,mode:{auto:`自动(回退链)`,autoHelp:`从您的回退链中挑选一组多样化的模型,并按当前启用的路由策略排序。`,explicit:`指定模型组`,explicitHelp:`始终使用您在下方选择的特定模型。`},panelModels:`组内模型`,selectedCount:`已选择 {count} / {max}`,noModels:`尚未连接任何模型。请先添加 API 密钥,然后在回退链中启用模型。`,panelSize:`模型组规模`,panelSizeHelp:`自动挑选的多样化模型数量(1–{max})。`,judge:`评审模型`,judgeHelp:`将模型组的回答综合为一个答案的模型。“自动”会使用您排名最高的可用模型。`,judgeAuto:`自动(排名最高的可用模型)`,strategy:`策略`,strategySynthesize:`综合:将模型组的回答融合为一个答案`,strategyBestOf:`择优:返回单个最强的答案(不调用评审)`,strategySynthesizeShort:`综合`,strategyBestOfShort:`择优`,exposePanel:`暴露模型组细节`,exposePanelHelp:`在响应的 x_fusion 字段中附上每个模型的回答以及评审的元数据。`,howToUse:`如何使用`,howToUseHelp:`发送普通的对话请求,并将 model 设为 “fusion”。这些设置为默认值;任何请求都可以通过 “fusion” 字段覆盖它们。`,unsavedChanges:`有未保存的更改`,save:`保存`,searchPlaceholder:`搜索模型…`,providerFilterLabel:`按提供商筛选`,providerAll:`全部提供商`,noMatch:`没有匹配搜索条件的模型。`},premium:{title:`高级版`,description:`在任何设备上获得实时模型目录。`,loading:`加载中…`,checkForUpdates:`检查更新`,syncing:`同步中…`,catalogFeed:`目录源`,liveFeed:`实时源`,monthlySnapshot:`月度快照`,lastChecked:`上次检查:{when}`,liveDescription:`新的免费模型、配额调整与缺陷修复会在发布后数小时内到达这里。应用每天自动检查两次,无需手动操作。`,snapshotDescription:`免费版:目录每月从快照刷新,每天自动检查两次。高级版切换到实时源,每 2–3 天更新一次。`,lastSyncProblem:`上次同步问题:{error}`,license:`许可证`,planAnnual:`高级版 · 年度`,planLifetime:`高级版 · 终身`,expired:`已过期`,inactive:`未激活`,lifetimeNote:`终身许可证:永不过期。`,renewsOn:`将于 {date} 续费。`,willNotRenew:`不会续费。高级版可用至 {date},之后此安装回退到免费月度目录。`,keyInactive:`此密钥已失效。应用仍可继续使用免费月度目录。`,manageSubscription:`管理订阅`,openingPortal:`正在打开…`,removeKey:`从本设备移除密钥`,manageHint:`管理订阅会打开 Stripe 的账单门户:取消订阅、更新支付方式或下载发票。移除密钥仅停用本设备,不会影响您的购买。`,licenseKey:`许可证密钥`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`激活`,activating:`激活中…`,keyHint:`您的密钥可在购买邮件与结账后页面找到。丢失了?`,recoverKey:`在官网找回`,upsellTitle:`每年 19 美元,升级到实时版`,upsellDescription:`新免费模型上线即用,无需等待 30 天。一个密钥,所有设备。随时取消,路由器永久免费。`,goPremium:`升级到高级版`,bundled:`内置`,planGeneric:`高级版`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`出错了`,boundaryDescription:`控制台遇到了意外错误。您的数据是安全的。请重试或返回模型页面。`,tryAgain:`重试`,goHome:`返回模型页`},notFound:{title:`页面未找到`,description:`此页面不存在或已被移动。`},setup:{title:`快速开始`,subtitle:`三步完成首个请求的路由。`,progress:`{done} / {total}`,step1Title:`添加提供方密钥`,step1Desc:`至少连接一个提供方账户,免费密钥就行。`,step1Cta:`添加密钥`,step2Title:`发送测试请求`,step2Desc:`在试验场中任选一个模型打个招呼。`,step2Cta:`打开试验场`,step3Title:`接入您的应用`,step3Desc:`在任何兼容 OpenAI 的客户端中使用统一 API 密钥。`,copyKey:`复制 API 密钥`,copyUrl:`复制基础 URL`,copiedKey:`API 密钥已复制到剪贴板`,copiedUrl:`基础 URL 已复制到剪贴板`},palette:{title:`命令面板`,placeholder:`搜索页面、模型、操作…`,empty:`无结果`,groupPages:`页面`,groupActions:`操作`,groupModels:`模型`,toggleTheme:`切换深色模式`},validation:{required:`必填`,url:`请输入以 http:// 或 https:// 开头的有效 URL`,email:`请输入有效的邮箱地址`,passwordMin:`至少 {min} 个字符`},agents:{title:`编程智能体`,description:`通过生成的、可安全备份的配置,将编程工具连接到一个免费模型网关。`,apiKey:`API 密钥`,quickstartTitle:`快速开始`,quickstart:`最快路径:从实时目录配置 Claude Code。`,currentKey:`当前统一密钥:`,seenRecently:`最近活跃`,setupLabel:`自动配置`,setupHint:`为您写出该工具的配置文件,并指向此网关。`,setupGuideHint:`显示该工具的配置步骤。不会写入任何文件。`,manualLabel:`手动连接`,manualHint:`在该工具的设置中输入基础 URL 和密钥。`,endpoint:`端点`,documentation:`文档`,descriptions:{claude:`Anthropic 的终端智能体,会在你的仓库里规划、改文件、跑命令。`,codex:`OpenAI 的终端智能体,先在本地沙箱里跑一遍你的任务。`,cline:`VS Code 扩展,每一次改动和命令都要你点头才执行。`,continue:`VS Code 和 JetBrains 扩展,边写边补全,随手就能提问。`,aider:`命令行结对编程工具,每次改动都单独提交一个 git commit。`,opencode:`不挑供应商的终端智能体,带全屏文字界面。`,goose:`Block 出品的本地智能体,可用 MCP 服务器扩展到代码之外。`,qwen:`Gemini CLI 的分支,为 Qwen 模型和大型仓库调校。`,roo:`VS Code 扩展,可在架构师、编码、调试等模式间切换。`,kilo:`VS Code 扩展,融合 Roo 与 Cline,并用编排器把任务拆开。`,crush:`Charm 用 Go 写的终端智能体,每个项目一个会话。`,dsh:`DeepSeek 的框架,把每个供应商都存成可随时切换的线路。`,mimo:`小米的终端智能体,OpenCode 分支,可接任意 OpenAI 兼容供应商。`,cursor:`以 AI 为核心的编辑器,请求走 Cursor 云端,因此需要公网 URL。`,generic:`其他任何说 OpenAI 接口的工具,用基础 URL 和密钥手动配置。`,atomcode:`AtomGit 的终端智能体,用 Rust 编写,可接任意 OpenAI 兼容端点。`,openclaw:`一个常驻运行的个人助理,在你自己的机器上通过 WhatsApp、Telegram、Discord 等应答。`,hermes:`Nous Research 的自我改进智能体,拥有持久记忆和技能,可在终端或聊天应用中使用。`,pi:`一个极简的终端智能体,用你自己的扩展、技能和提示词模板来塑造它。`}},update:{available:`发现新版本`,whatsNew:`v{version} 更新内容`,publishedOn:`发布于 {date}`,noNotes:`此版本未发布更新说明。`,openRelease:`打开发布页`,dismissVersion:`忽略此版本`,dismiss:`忽略`},freeTier:{poolsToggle:`免费额度池({count})`,poolsToggleBare:`免费额度池`,summary:`{pools} 个池 · {budget} 令牌/月,每个池只计一次 · 积分制 {credits} 个 · 未公布 {unpublished} 个`,pool:`额度池`,models:`模型数`,budget:`月度额度`,kind:`类型`,kindDocumented:`已公布`,kindCredits:`积分`,kindUnpublished:`未公布`,remaining:`剩余`,resetAt:`重置时间`,disabledModels:`({count} 个已关闭)`,metricTokens:`令牌`,metricRequests:`请求`,metricCredits:`积分`,metricNeurons:`神经元`,metricOther:`单位`,empty:`没有启用且带免费额度数据的模型。`,poolLabel:`{platform} · {scope} 共享池`,poolLabelBare:`{platform} · 共享池`,poolModels:`{count} 个模型`,poolBudget:`{budget}/月`,poolBudgetTitle:`整个额度池共用一份月度额度,已按该平台 {count} 个可用密钥换算。池中列出的每个模型都从同一份额度里扣。`,poolNoQuota:`未公布额度`,poolResets:`{time} 重置`,independentBudgets:`独立额度`},chains:{title:`回退链`,description:`命名链,每条都可在 /v1/models 中以 auto:<name> 调用。`,count:`{count} 条链`,active:`使用中`,default:`默认`,activate:`激活`,activateHint:`让下方表格编辑这条链,auto 路由也走这条链`,deleteHint:`删除此链`,deleteConfirm:`删除链「{name}」?`,create:`创建`,createPlaceholder:`链名称`,createFailed:`无法创建该链。`,nameRules:`最多 20 个字符:字母、数字、连字符和下划线。`,startEmpty:`从空链开始`,startEmptyHint:`创建时不放入任何模型,之后新增的目录模型也不会自动加入。不勾选则复制默认链。`,curated:`手动维护`,curatedHint:`新的目录模型不会自动加入这条链。`,renameHint:`重命名此链`,renameConfirm:`将链“{oldName}”重命名为“{name}”?调用 auto:{oldName} 的客户端必须改用 auto:{name}。`,renamePlaceholder:`新链名称`,renameFailed:`无法重命名该链。`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};