@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:`Μοντέλα`,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:`Ορίστε το email και τον κωδικό πρόσβασης που θα προστατεύουν αυτόν τον πίνακα ελέγχου.`,loginDescription:`Συνδεθείτε για να διαχειριστείτε τα κλειδιά, τη δρομολόγηση και τα αναλυτικά στοιχεία σας.`,createAccount:`Δημιουργία λογαριασμού`,creating:`Δημιουργώντας...`,signingIn:`Σύνδεση...`,loading:`Φόρτωση...`,newPasswordAutoComplete:`νέος-κωδικός πρόσβασης`,currentPasswordAutoComplete:`τρέχων-κωδικός πρόσβασης`,serverUnreachableBefore:`Δεν είναι δυνατή η επικοινωνία με τον διακομιστή. Βεβαιωθείτε ότι το backend εκτελείται (`,serverUnreachableAfter:`).`,setupCode:`Κωδικός εγκατάστασης`,setupCodePlaceholder:`κώδικας από τα αρχεία καταγραφής του διακομιστή`,setupCodeHint:`Η εγκατάσταση από άλλη συσκευή χρειάζεται τον κωδικό μίας χρήσης που εκτυπώνεται στα αρχεία καταγραφής διακομιστή κατά την εκκίνηση.`,changePassword:`Αλλαγή κωδικού`,changeEmail:`Αλλαγή e-mail`,forgotPassword:`Ξεχάσατε τον κωδικό;`,currentPassword:`Τρέχων κωδικός`,newPassword:`Νέος κωδικός`,newEmail:`Νέο e-mail`,resetCode:`Κωδικός επαναφοράς`,resetCodePlaceholder:`κωδικός από τα αρχεία καταγραφής`,resetCodeHint:`Ο κωδικός βρίσκεται στο αρχείο καταγραφής του διακομιστή. Δεν αποστέλλεται ποτέ με email.`,forgotPasswordDescription:`Πατήστε το κουμπί παρακάτω για δημιουργία κωδικού επαναφοράς. Ο κωδικός γράφεται στο αρχείο καταγραφής του διακομιστή και δεν αποστέλλεται ποτέ με email. Εισαγάγετέ τον εδώ για να ορίσετε νέο κωδικό πρόσβασης.`,requestResetCode:`Αποστολή κωδικού`,requestingResetCode:`Αποστολή…`,resetPassword:`Επαναφορά κωδικού`,resettingPassword:`Επαναφορά…`,changingPassword:`Αλλαγή…`,changingEmail:`Αλλαγή…`,backToLogin:`Πίσω στη σύνδεση`,passwordChanged:`Ο κωδικός άλλαξε.`,emailChanged:`Το e-mail άλλαξε.`,passwordReset:`Ο κωδικός επαναφέρθηκε. Συνδεθείτε.`,resetCodeDockerHint:`Εκτελείται σε Docker; Ο κωδικός βρίσκεται στο αρχείο καταγραφής του container: 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:`Συμπίεση prompt`,compressionDescription:`Μειώστε το μέγεθος του αιτήματος πριν από τη δρομολόγηση, διατηρώντας κώδικα, σφάλματα, διαδρομές, αριθμούς και ορισμούς εργαλείων.`,compressionHelp:`Ξαναγράφει κάθε αίτημα πριν σταλεί σε πάροχο, ώστε να χρησιμοποιεί λιγότερα tokens. Ο κώδικας, τα σφάλματα, οι διαδρομές αρχείων και οι αριθμοί προστατεύονται, και κάθε αναδιατύπωση που τα αλλοιώνει απορρίπτεται.`,compressionMode:`Λειτουργία`,compressionModeHelp:`Το «Ανενεργό» στέλνει τα αιτήματα αυτούσια. Η «Χωρίς απώλειες» αφαιρεί μόνο διπλότυπο και περιττό κείμενο. Η «Τυπική» συντομεύει επιπλέον την έξοδο των εργαλείων. Η «Επιθετική» συμπυκνώνει επιπρόσθετα τους παλαιότερους γύρους.`,compressionOff:`Ανενεργό`,compressionLossless:`Χωρίς απώλειες`,compressionStandard:`Τυπική`,compressionAggressive:`Επιθετική`,compressionLossy:`Με απώλειες`,compressionEngines:`Μηχανές`,compressionEnginesHelp:`Κάθε μηχανή είναι ένα βήμα αναδιατύπωσης. Η λειτουργία καθορίζει ποιες μηχανές εκτελούνται· αν απενεργοποιήσετε μία εδώ, μένει εκτός σε κάθε λειτουργία.`,engineDedup:`Επαναλαμβανόμενα μπλοκ`,engineDedupHelp:`Αντικαθιστά ένα μπλοκ κειμένου που έχει ήδη εμφανιστεί νωρίτερα στη συνομιλία με μια σύντομη αναφορά σε αυτό.`,engineLite:`Καθαρισμός κενών`,engineLiteHelp:`Περικόπτει τα κενά στο τέλος των γραμμών, συμπτύσσει τις επαναλαμβανόμενες κενές γραμμές και αφαιρεί τα διπλότυπα μηνύματα συστήματος.`,engineReadLifecycle:`Παρωχημένες αναγνώσεις αρχείων`,engineReadLifecycleHelp:`Αντικαθιστά μια παλαιότερη ανάγνωση αρχείου με μια σημείωση, μόλις το ίδιο αρχείο διαβαστεί ή τροποποιηθεί ξανά αργότερα.`,engineToolfilter:`Φίλτρο εξόδου εργαλείων`,engineToolfilterHelp:`Συντομεύει την έξοδο εντολών και εργαλείων, όπως builds, tests και εγκαταστάσεις. Οι γραμμές σφαλμάτων και stack trace διατηρούνται πάντα.`,engineJsoncompact:`Πίνακες JSON`,engineJsoncompactHelp:`Επανακωδικοποιεί μεγάλους πίνακες JSON με κοινά πεδία σε συμπαγή μορφή πίνακα. Αντιστρέψιμο, οπότε δεν χάνεται τίποτα.`,engineRelevance:`Φίλτρο συνάφειας`,engineRelevanceHelp:`Αφαιρεί τις προτάσεις με τη μικρότερη σχέση με το τελευταίο μήνυμα, μόλις ένα μήνυμα ξεπεράσει το όριο μεγέθους του.`,engineAging:`Παλαιότεροι γύροι`,engineAgingHelp:`Συμπυκνώνει τους γύρους πέρα από τους πιο πρόσφατους σε μια σύντομη περίληψη που διατηρεί διαδρομές, σφάλματα και αποφάσεις.`,engineHardBudget:`Ανώτατο όριο tokens`,engineHardBudgetHelp:`Αφαιρεί τις λιγότερο χρήσιμες γραμμές μέχρι το αίτημα να χωρέσει στον στόχο tokens.`,compressionAutoTrigger:`Αυτόματη ενεργοποίηση πάνω από τα εκτιμώμενα tokens`,compressionAutoTriggerHelp:`Τα αιτήματα που εκτιμώνται πάνω από αυτόν τον αριθμό tokens περνούν αυτόματα σε Επιθετική. Αφήστε το κενό για απενεργοποίηση.`,compressionPrefixFreeze:`Πάγωμα επαναλαμβανόμενων προθεμάτων prompt`,compressionPrefixFreezeHelp:`Αφήνει ένα system prompt αυτούσιο μόλις το ίδιο κείμενο εμφανιστεί τρεις φορές, ώστε να συνεχίσει να λειτουργεί η προσωρινή αποθήκευση prompt από την πλευρά του παρόχου.`,compressionTrustProjectFilters:`Εμπιστοσύνη στα αρχεία φίλτρων του έργου`,compressionTrustProjectFiltersHelp:`Φορτώνει επίσης φίλτρα εξόδου εργαλείων από τον κατάλογο εργασίας. Ανενεργό από προεπιλογή, καθώς ένα αποθετήριο θα μπορούσε να το χρησιμοποιήσει για να κρύψει έξοδο από το μοντέλο.`,compressionStats:`Εξοικονόμηση μεγέθους`,compressionEstimatedTokensSaved:`Εκτιμώμενα tokens που εξοικονομήθηκαν`,compressionPreview:`Ζωντανή προεπισκόπηση`,compressionPreviewDescription:`Στείλτε ένα σώμα αιτήματος μέσα από τη ροή για να δείτε τι θα λάμβανε ένας πάροχος.`,compressionPreviewPlaceholder:`Επικολλήστε JSON αιτήματος ή απλό κείμενο`,compressionRunPreview:`Εκτέλεση προεπισκόπησης`,updatesTitle:`Ενημερώσεις`,checkForUpdates:`Έλεγχος για ενημερώσεις`,lastChecked:`Τελευταίος έλεγχος: {when}`,currentVersion:`Τρέχον build:`,updateAvailable:`Διαθέσιμη ενημέρωση`,changelog:`Τι άλλαξε`,upToDate:`Ενημερωμένο`,buildAhead:`Αυτό το build είναι μπροστά από το επίσημο main.`,buildDiverged:`Αυτό το build έχει αποκλίνει από το επίσημο main.`,buildUnknown:`Αυτό το προσαρμοσμένο build δεν μπορεί να συγκριθεί με το επίσημο main.`,notGitInstall:`Αυτή η εγκατάσταση δεν περιλαμβάνει πληροφορίες commit.`,checkFailed:`Δεν ήταν δυνατός ο έλεγχος για ενημερώσεις.`,contactsGithub:`Οι έλεγχοι γίνονται χειροκίνητα και επικοινωνούν με το GitHub.`,autoUpdateCheck:`Αυτόματος έλεγχος ενημερώσεων`,autoUpdateCheckHelp:`Ελέγχει το GitHub μία φορά την ημέρα για νέα έκδοση και εμφανίζει υπενθύμιση. Απενεργοποιημένο από προεπιλογή.`,openReleases:`Άνοιγμα εκδόσεων GitHub`,restartAfterUpdate:`Επανεκκινήστε το SRouter μετά την ολοκλήρωση του build.`,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:`Μηνιαίος προϋπολογισμός token`,remaining:`υπόλοιπο`,used:`μεταχειρισμένο`,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:`της`,showAllModels:`Εμφάνιση όλων των μοντέλων {count}`,showLess:`Εμφάνιση λιγότερων`,vision:`Όραμα`,visionTitle:`Δέχεται εισαγωγή εικόνας`,tools:`Εργαλεία`,toolsTitle:`Εκπέμπει δομημένες κλήσεις εργαλείων, ώστε να είναι επιλέξιμο για αιτήματα που φέρουν εργαλεία`,retired:`Αποσύρθηκε`,penalty:`−{value} ποινή`,obs:`{count} obs`,tokPerMonth:`{count} tok/μήνα`,rpmLimit:`{count} σ.α.λ.`,rpdLimit:`{count} rpd`,noKey:`χωρίς κλειδί`,dragToReorder:`Σύρετε για αναδιάταξη`,dragToReorderGroup:`Σύρετε για να αλλάξετε τη σειρά του μοντέλου`,moveToRank:`Μετάβαση στην κατάταξη`,providerCount:`{count} παρόχων`,servedBy:`Σερβίρεται από {providers}`,viewProviders:`Προβολή παρόχων`,backToModels:`Επιστροφή στα μοντέλα`,providersHeading:`Πάροχοι που εξυπηρετούν αυτό το μοντέλο`,codeSnippetHeading:`Χρησιμοποιήστε αυτό το μοντέλο`,modelNotFound:`Αυτό το μοντέλο δεν είναι διαθέσιμο ή δεν έχει διαμορφωμένους παρόχους.`,providerIdsHeading:`Αναγνωριστικά μοντέλου παρόχου`,providerIdsHint:`Στείλτε το ενοποιημένο αναγνωριστικό μοντέλου για ανακατεύθυνση σε κάθε υπηρεσία παροχής ή ένα αναγνωριστικό συγκεκριμένης υπηρεσίας παροχής για να καρφιτσώσετε μία υπηρεσία παροχής.`,copyModelName:`Αντιγραφή ονόματος μοντέλου`,settingsHeading:`Ρυθμίσεις παρόχου`,settingsHint:`Οι τοπικές αλλαγές σε μοντέλα καταλόγων διατηρούνται σε όλους τους συγχρονισμούς καταλόγων. Τα διαγραμμένα μοντέλα καταλόγου παραμένουν διαγραμμένα μέχρι να τα προσθέσετε ξανά μέσω της διαμόρφωσης.`,catalogModel:`Κατάλογος`,customModel:`έθιμο`,discoveredModel:`εντοπισμένο`,localOverride:`τοπική παράκαμψη`,displayName:`Εμφανιζόμενο όνομα`,sizeLabel:`Βαθμίδα ικανοτήτων`,sizeLabelHint:`Τα Frontier/Large/Medium/Small καθορίζουν τον άξονα ευφυΐας: μια ανώτερη βαθμίδα υπερισχύει πάντα μιας κατώτερης, ενώ μέσα στην ίδια βαθμίδα η κατάταξη ευφυΐας εξακολουθεί να μετακινεί τη βαθμολογία. Ένα μοντέλο χωρίς αναγνωρισμένη βαθμίδα παίρνει τη χαμηλότερη βαθμολογία σε αυτόν τον άξονα, όμως η ευφυΐα είναι μόνο ένας από τους τρεις άξονες — με υψηλή αξιοπιστία και ταχύτητα μπορεί και πάλι να δρομολογηθεί.`,sizeLabelNone:`Καμία (χαμηλότερη βαθμολογία ευφυΐας)`,contextWindow:`Πλαίσιο`,inFallback:`Στην αλυσίδα`,saveModelSettings:`Αποθήκευση ρυθμίσεων μοντέλου`,aggregateBudget:`{count}/μήνα`,aggregateBudgetTitle:`Συνολικά δωρεάν μάρκες ανά μήνα σε όλους τους παρόχους αυτού του μοντέλου`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Περιορισμένος ρυθμός — χωρίς σταθερό μηνιαίο προϋπολογισμό token`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Χρήση ορίου ρυθμού στο χρονικό παράθυρο (σε χρήση / όριο) για τον πάροχο με το μεγαλύτερο περιθώριο`,splitOut:`Μην συγχωνεύσετε αυτό το αντίγραφο`,splitOutHint:`Δώστε στο αντίγραφο αυτού του παρόχου τη δική του ξεχωριστή καταχώρηση αντί να το συγχωνεύσετε στο ενοποιημένο μοντέλο. Μπορείτε να το συγχωνεύσετε από τη σελίδα του αντιγράφου.`,splitUndo:`Συγχώνευση πίσω`,splitUndoHint:`Αυτό το αντίγραφο διατηρείται χωριστά από το ενοποιημένο μοντέλο του. Συγχωνεύστε το ξανά για να αποτύχει ξανά σε όλους τους παρόχους του.`,splitBadge:`διατηρούνται χωριστά`,noData:`κανένα στοιχείο`,noDataTitle:`Δεν έχουν καταγραφεί ακόμη αιτήματα — η αξιοπιστία και η ταχύτητα δεν μετρώνται για αυτόν τον πάροχο.`,bestOfN:`το καλύτερο από το {count}`,perProviderScores:`Βαθμολογίες ανά πάροχο: {list}`,columnModel:`Μοντέλο`,columnOn:`Στις`,noModelsBefore:`Δεν υπάρχουν διαθέσιμα μοντέλα. Προσθέστε API πλήκτρα στο`,keysPageLink:`Σελίδα κλειδιών`,noModelsAfter:`πρώτα.`,hiddenNoKeys:`Κρυφό (χωρίς κλειδιά): {platforms}`,searchPlaceholder:`Αναζήτηση μοντέλων ή παρόχων...`,clearSearch:`Εκκαθάριση αναζήτησης`,ctxAny:`Οποιοδήποτε πλαίσιο`,ctxBadge:`{size} ctx`,ctxTitle:`Παράθυρο περιβάλλοντος`,copyModelId:`Αντιγραφή αναγνωριστικού μοντέλου`,showingCount:`{shown} {total} μοντέλων`,clearFilters:`Καθαρισμός φίλτρων`,noMatches:`Κανένα μοντέλο δεν ταιριάζει με τα φίλτρα σας.`,noModelsTitle:`Δεν έχουν διαμορφωθεί μοντέλα`,intelligenceRank:`Ευφυΐα`,speedRank:`Ταχύτητα`,rankHint:`Κατάταξη στον κατάλογο — το 1 είναι το καλύτερο.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Αιτήματα ανά λεπτό. Αφήστε το κενό για κανένα όριο.`,limitRpdHint:`Αιτήματα ανά ημέρα. Αφήστε το κενό για κανένα όριο.`,limitTpmHint:`Tokens ανά λεπτό. Αφήστε το κενό για κανένα όριο.`,limitTpdHint:`Tokens ανά ημέρα. Αφήστε το κενό για κανένα όριο.`,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:`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:`Εξερεύνηση μη μετρημένων μοντέλων`,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:`Επιλογή κλειδιού`,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:`Ποινές, cooldowns και αποτυχίες από τα τελευταία {minutes} λεπτά`,rowCount:`{count} ενεργός`,offChain:`εκτός αλυσίδας`,penaltyValue:`Πέναλτι {value}`,factor:`βαθμολογία x{factor}`,noCooldown:`Χωρίς ψύξη`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,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":"Τοποθετήστε ένα πρόγραμμα-πελάτη SDK Claude ή Anthropic σε αυτόν τον διακομιστή. Anthropic οι πελάτες στέλνουν Claude ονόματα μοντέλων — αντιστοιχίστε το καθένα σε Αυτόματο (ο δρομολογητής επιλέγει ένα δωρεάν μοντέλο) ή καρφιτσώστε ένα συγκεκριμένο.","anthropicBaseUrl":"Βάση URL","anthropicAuth":"Κεφαλίδα ελέγχου ταυτότητας","anthropicAuto":"Αυτόματο — ο δρομολογητής επιλέγει το καλύτερο μοντέλο","anthropicSave":"Αποθήκευση αντιστοίχισης","anthropicSaved":"Αποθηκεύτηκε","anthropicNote":"Anthropic οι πελάτες διατηρούν τα ενσωματωμένα ονόματα μοντέλων Claude. Η παραπάνω χαρτογράφηση αποφασίζει πώς το καθένα δρομολογείται στην πισίνα σας.","familyDefault":"Προεπιλογή","familyOpus":"Έργο","familySonnet":"Σονέτο","familyHaiku":"Χαϊκού","selectPlatform":"Επιλέξτε έναν πάροχο","addKey":"Προσθήκη κλειδιού","keyAdded":"Προστέθηκε κλειδί","endpointKeysShareModels":"Τα κλειδιά του ίδιου endpoint μοιράζονται τα μοντέλα του.","export":"Εξαγωγή","exportAll":"Όλα τα κλειδιά","exportHealthy":"Μόνο υγιεινά","exportKeys":"Εξαγωγή κλειδιών API","exportFormat":"Μορφή","exportHealthyOnly":"Μόνο υγιή κλειδιά","exportHealthyOnlyDesc":"Εξαίρεση κλειδιών που αποτυγχάνουν επί του παρόντος στους ελέγχους εύρυθμης λειτουργίας","exportWillExport":"Θα εξαγάγει","exportKey":"Κλειδί","exportKeys plural":"Κλειδιά","exporting":"Εξαγωγή...","exportDownload":"Λήψη","exportSuccess":"Εξαγόμενα κλειδιά {count}","adding":"Προσθέτοντας...","selectProvider":"Επιλέξτε έναν πάροχο...","accountId":"Αναγνωριστικό λογαριασμού","label":"Ετικέτα","noKeyNeeded":"(δεν χρειάζεται κλειδί)","outboundProxy":"Εξερχόμενος διακομιστής μεσολάβησης","outboundProxyDescription":"Δρομολογήστε εξερχόμενα αιτήματα LLM μέσω διακομιστή μεσολάβησης. Υποστηρίζει SOCKS5, HTTP και HTTPS.","proxyUrl":"Πληρεξούσιο URL","saveProxy":"Αποθήκευση","savingProxy":"Οικονομία...","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. Το κλειδί API είναι προαιρετικό για τοπικούς διακομιστές.","customType":"Τύπος","customTypeChat":"Κουβέντα","customTypeEmbedding":"Ενσωμάτωση","customTypeImage":"Εικόνα","customTypeAudio":"Ήχος","customTypeTranscription":"Transcription","customBaseUrl":"Βάση URL","customModels":"Μοντέλα","customModel":"Μοντέλο","customDisplayName":"Εμφανιζόμενο όνομα","customDisplayNamePerModel":"ανά μοντέλο","customDisplayNameOptional":"προαιρετικός","customFamily":"Οικογένεια","customFamilyPlaceholder":"Προεπιλογή σε αναγνωριστικό μοντέλου","customApiKey":"API κλειδί","customCapabilities":"Δυνατότητες","addModel":"Προσθήκη μοντέλου","modelAdded":"Προστέθηκε μοντέλο","addModels":"Προσθήκη {count} μοντέλων","addEmbeddingModel":"Προσθήκη ενσωμάτωσης","addImageModel":"Προσθήκη μοντέλου εικόνας","addAudioModel":"Προσθήκη μοντέλου ήχου","addTranscriptionModel":"Add transcription model","addingCustom":"Προσθέτοντας...","discoverModels":"Λήψη μοντέλων","probeNow":"Δοκιμή του endpoint","probeConfirm":"Αποστολή έως 3 δοκιμαστικών αιτημάτων;","probeCapabilities":"συλλογιστική: {reasoning} · εργαλεία: {tools}","probeCapYes":"ναι","probeCapNo":"όχι","probeCapUnknown":"άγνωστο","probeSuccess":"Το {model} δοκιμάστηκε σε {latency}ms","probeFailed":"Η δοκιμή απέτυχε: {reason}","discoverTitle":"Μοντέλα σε αυτό το endpoint","discoverHint":"Επίλεξε τα μοντέλα προς καταχώριση. Όσα έχεις ήδη προσθέσει μένουν κλειδωμένα.","discoverEmpty":"Αυτό το endpoint δεν επέστρεψε μοντέλα.","discoverAlreadyAdded":"Προστέθηκε","discoverSelectAll":"Επιλογή όλων","modelsAdded":"Προστέθηκαν {count} μοντέλα","getApiKey":"Αποκτήστε API κλειδί","deleteKeyConfirm":"Διαγραφή αυτού του κλειδιού; Αυτό δεν μπορεί να αναιρεθεί.","checkAll":"Έλεγχος όλων","checking":"Έλεγχος...","editLabel":"Επεξεργασία ετικέτας","saveLabel":"Αποθήκευση ετικέτας","unifiedKeyDescBefore":"Χρησιμοποιήστε το ως OpenAI σας","unifiedKeyDescAfter":"; Ελέγχει την ταυτότητα των αιτημάτων σε αυτόν τον διακομιστή μεσολάβησης.","serverUnreachableBefore":"Δεν είναι δυνατή η επικοινωνία με τον διακομιστή","serverUnreachableAfter":". Βεβαιωθείτε ότι το backend εκτελείται. Το npm run dev ξεκινά και τα δύο και τα αρχεία καταγραφής διακομιστή εκτυπώνονται κάτω από το πρόθεμα διακομιστή.","paneProviderKey":"Κλειδί παρόχου","paneImportFile":"Εισαγωγή αρχείου","paneCustomEndpoint":"Προσαρμοσμένο τελικό σημείο","platform":"Πλατφόρμα","hideAdded":"Απόκρυψη προστιθέμενων παρόχων","apiToken":"API διακριτικό","keyOptionalPlaceholder":"Προαιρετικό","bearerTokenPlaceholder":"Διακριτικό κομιστή","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":"Το ανοιχτό loopback δεν δέχεται ποτέ μη πιστοποιημένη κίνηση LAN.","ollamaOff":"Ανενεργό","ollamaLoopback":"Ανοιχτό στο loopback","ollamaKeyRequired":"Απαιτείται κλειδί API","claudeAliases":"Ψευδώνυμα ανακάλυψης Claude Code","claudeAliasesHint":"Εκθέστε ψευδώνυμα claude/<model> ώστε ο επιλογέας μοντέλων της πύλης να εμφανίζει τον κατάλογο.","mcpServer":"Διακομιστής MCP","mcpServerHint":"Εκθέτει το endpoint /mcp σε πελάτες πρακτόρων. Οι νέες εγκαταστάσεις ξεκινούν απενεργοποιημένες.","urlTokensTitle":"Ανακλητά token URL","urlTokensDesc":"Μόνο για πελάτες χωρίς κεφαλίδες. Τα token URL μπορούν να διαρρεύσουν στο ιστορικό και στα αρχεία καταγραφής, γι' αυτό ανακαλέστε τα όταν δεν χρειάζονται πια.","urlTokenLabel":"Ετικέτα token","createUrlToken":"Δημιουργία token","urlTokenOnce":"Αντιγράψτε αυτό το token τώρα. Δεν θα εμφανιστεί ξανά.","revoked":"Ανακλήθηκε","revoke":"Ανάκληση","modelScope":"Εύρος μοντέλων","modelScopeDesc":"Περιορίστε αυτό το κλειδί σε συγκεκριμένα ID μοντέλων. Για κάθε άλλο μοντέλο ο δρομολογητής παρακάμπτει αυτό το κλειδί.","modelScopeAdd":"Πληκτρολογήστε ένα ID μοντέλου και πατήστε Enter","modelScopeEmpty":"Δεν έχει οριστεί εύρος — αυτό το κλειδί εξυπηρετεί όλα τα μοντέλα του παρόχου του.","modelScopeClear":"Καθαρισμός εύρους","modelScopeBadgeOne":"περιορισμένο · 1 μοντέλο","modelScopeBadgeOther":"περιορισμένο · {count} μοντέλα","modelPicker":{"title":"Ποια μοντέλα να εξυπηρετεί αυτό το κλειδί;","hint":"Το κλειδί σας για {provider} προστέθηκε και αυτή τη στιγμή εξυπηρετεί όλα τα παρακάτω μοντέλα. Αποεπιλέξτε όσα δεν επιτρέπεται να χρησιμοποιεί αυτό το κλειδί — ο δρομολογητής θα το παρακάμπτει για αυτά.","count":"{selected} από {total} επιλεγμένα","allNote":"Όλα επιλεγμένα — δεν αποθηκεύεται τίποτα και τα μοντέλα που θα προστεθούν αργότερα στον κατάλογο θα χρησιμοποιούν και αυτά το ίδιο κλειδί.","subsetNote":"Αυτό το κλειδί θα περιοριστεί στα επιλεγμένα μοντέλα. Μπορείτε να το αλλάξετε αργότερα από τη γραμμή του κλειδιού.","skip":"Όχι τώρα","scopedOne":"Το κλειδί περιορίζεται σε 1 μοντέλο","scopedOther":"Το κλειδί περιορίζεται σε {count} μοντέλα","allSaved":"Key serves every catalog model"},"cpTitle":"Προφίλ πελατών","cpDesc":"Κλειδιά API ανά πελάτη, καθένα με ένα system prompt που ο διακομιστής εφαρμόζει πάντα.","cpEmpty":"Δεν υπάρχουν ακόμη προφίλ πελατών.","cpNameLabel":"Όνομα","cpNamePlaceholder":"π.χ. Bot υποστήριξης","cpPromptLabel":"System prompt (προαιρετικό)","cpPromptPlaceholder":"Οδηγίες που ο διακομιστής προσθέτει πριν από κάθε αίτημα με αυτό το κλειδί.","cpCreate":"Δημιουργία προφίλ","cpRotate":"Εναλλαγή κλειδιού","cpKeyOnce":"Αντιγράψτε αυτό το κλειδί τώρα — δεν θα εμφανιστεί ξανά.","cpEnabledAria":"Προφίλ ενεργό","selectKey":"Επιλογή αυτού του κλειδιού","bulkSelected":"{count} επιλεγμένα","bulkEnable":"Ενεργοποίηση όλων","bulkDisable":"Απενεργοποίηση όλων","bulkDelete":"Διαγραφή όλων","bulkDeleteConfirm":"Διαγραφή {count};","bulkResult":"Ενημερώθηκαν {done}· απέτυχαν {failed}.","bulkDeleteResult":"Διαγράφηκαν {done}· απέτυχαν {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Επεξεργασία κλειδιού","editPlatformLocked":"Ο πάροχος και το endpoint δεν αλλάζουν μετά τη δημιουργία.","editCredentialHint":"Αφήστε το κενό για να διατηρηθεί το τρέχον κλειδί.","editCredentialPartsRequired":"Εισάγετε το ID λογαριασμού και το API token.","editModels":"Επεξεργασία μοντέλων","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":"Προσθήκη προσαρμοσμένου μοντέλου","modelId":"Αναγνωριστικό μοντέλου","modelIdRequired":"Το αναγνωριστικό μοντέλου είναι υποχρεωτικό","modelDisplayName":"Όνομα εμφάνισης","modelContextWindow":"Παράθυρο συμφραζομένων (tokens)","modelRateLimits":"Όρια ρυθμού (προαιρετικά)","modelSupportsTools":"Υποστηρίζει κλήσεις εργαλείων","modelSupportsToolsHint":"Ενεργοποιήστε εάν αυτό το μοντέλο μπορεί να εκτελεί συναρτήσεις ή εργαλεία","modelSupportsVision":"Υποστηρίζει όραση","modelSupportsVisionHint":"Ενεργοποιήστε εάν αυτό το μοντέλο δέχεται εικόνες ως είσοδο","createModel":"Δημιουργία μοντέλου","modelAddedSuccess":"Το προσαρμοσμένο μοντέλο προστέθηκε επιτυχώς","modelAddFailed":"Αποτυχία προσθήκης προσαρμοσμένου μοντέλου","testModel":"Δοκιμή","testingModel":"Δοκιμή…","testPassedShort":"Επιτυχία","testFailedShort":"Αποτυχία","testPassed":"Η δοκιμή μοντέλου πέτυχε σε {latency}ms","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:`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:`υγιής`,rateLimited:`περιορισμένος συντελεστής`,invalid:`άκυρο`,error:`Σφάλμα`,unchecked:`μη επιλεγμένο`},analytics:{title:`Ανάλυση`,description:`Όγκος αιτήματος, καθυστέρηση, χρήση διακριτικού και αποτυχίες.`,range24h:`24ώρες`,range7d:`7δ`,range30d:`30δ`,range90d:`90δ`,requests:`Αιτήματα`,successRate:`Ποσοστό επιτυχίας`,inputTokens:`Διακριτικά εισόδου`,outputTokens:`Token εξόδου`,avgLatency:`Μέση καθυστέρηση`,p95Latency:`Καθυστέρηση P95`,avgTtft:`Μέσος όρος TTFT`,estSavings:`Εκτιμώμενη εξοικονόμηση`,requestsByProvider:`Αιτήματα από πάροχο`,avgLatencyByProvider:`Μέσος λανθάνων χρόνος ανά πάροχο`,ttftByProvider:`Χρόνος για το πρώτο διακριτικό ανά πάροχο`,ttftEmpty:`Δεν έχει καταγραφεί ακόμη χρόνος για το πρώτο διακριτικό.`,requestsOverTime:`Αιτήματα με την πάροδο του χρόνου`,tokensOverTime:`Μάρκες με την πάροδο του χρόνου`,byModel:`Κατά μοντέλο`,byPlatform:`Ανά πλατφόρμα`,errors:`Σφάλματα`,errorDistribution:`Κατανομή σφαλμάτων`,pinnedRequests:`Καρφιτσωμένα αιτήματα`,pinnedHonored:`Τιμήθηκε`,fallbackAttempts:`Εναλλακτικές προσπάθειες`,savingsHint:"Στην πραγματικότητα εξοικονομήσατε ${actual} τα τελευταία {range}. Αυτό θα κόστιζαν τα ίδια διακριτικά σε API επί πληρωμή, με τιμή ανά μοντέλο. Ο αριθμός που εμφανίζεται προβάλλει τον ρυθμό σας από την τελευταία {span} δεδομένων έως 30 ολόκληρες ημέρες.",savingsHintExact:"Στην πραγματικότητα εξοικονομήσατε ${actual} τα τελευταία {range}. Αυτό θα κόστιζαν τα ίδια διακριτικά σε API επί πληρωμή, με τιμή ανά μοντέλο. Ο αριθμός που εμφανίζεται είναι το πραγματικό σας σύνολο 30 ημερών.",requestsHintPinned:`{pinned} από αυτά τα αιτήματα καρφίτσωσε ένα συγκεκριμένο μοντέλο με το όνομά του. {honored} εξυπηρετήθηκαν από το καρφιτσωμένο μοντέλο. {failed} απέτυχε σε διαφορετικό. Τα υπόλοιπα δρομολογήθηκαν αυτόματα.`,requestsHintAuto:`Όλα τα αιτήματα αυτής της περιόδου δρομολογήθηκαν αυτόματα. Κανένας πελάτης δεν καρφίτσωσε ένα συγκεκριμένο μοντέλο με το όνομά του.`,requestsHintTypes:`{chat} αιτήματα συνομιλίας και ενσωμάτωσης {embedding}.`,rangeLabel24h:`24 ώρες`,rangeLabel7d:`7 ημέρες`,rangeLabel30d:`30 ημέρες`,rangeLabel90d:`90 ημέρες`,spanDays:`{count} ημέρες`,spanHours:`{count} ώρες`,latencyMs:`Καθυστέρηση (ms)`,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:`TTFT`,requestsByAgent:`Αιτήματα ανά πράκτορα`,sortBy:`Ταξινόμηση κατά {column}`,sortHint:`Η ταξινόμηση ισχύει για τις {count} φορτωμένες γραμμές`,cacheHitRate:`Ποσοστό ευστοχίας cache`,cacheSavedTokens:`Εξοικονομήθηκαν {tokens} tokens`,cacheHitRateHint:`{hits} ευστοχίες έναντι {misses} αστοχιών από την εκκίνηση του διακομιστή · αποφεύχθηκαν {requests} κλήσεις παρόχου`},logs:{title:`Καταγραφές`,description:`Ζωντανό αρχείο καταγραφής του διακομιστή. Οι νέες εγγραφές εμφανίζονται όσο η σελίδα είναι ανοιχτή.`,pause:`Παύση`,resume:`Συνέχιση`,clear:`Εκκαθάριση καταγραφών`,cleared:`Το αρχείο καταγραφής του διακομιστή εκκαθαρίστηκε`,levelFilter:`Επίπεδα καταγραφής`,levels:{debug:`Debug`,info:`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:`Πληκτρολογήστε ένα μήνυμα... (⏎ για αποστολή, ⇧⏎ για νέα γραμμή)`,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:`Προεπιλογή · Αυτόματο`,makeDefault:`Ορισμός προεπιλογής`,moveUp:`Ανεβείτε`,moveDown:`Μετακίνηση προς τα κάτω`,usageToday:`{count} req σήμερα`,usageMonth:`{count} αυτόν τον μήνα`,autoDescription:`model: "auto" σε POST /v1/embeddings δρομολογήσεις προς την προεπιλεγμένη οικογένεια. Η ονομασία μιας οικογένειας (ή ενός αναγνωριστικού μοντέλου παρόχου) καρφιτσώνει αυτήν την οικογένεια. Οι πάροχοι μέσα σε αυτό δοκιμάζονται με τη σειρά.`,unsavedChanges:`Μη αποθηκευμένες αλλαγές`,saveChanges:`Αποθήκευση αλλαγών`,savingChanges:`Οικονομία...`,tokMax:`{tokens} tok max`,emptyTitle:`Δεν υπάρχουν ακόμη μοντέλα ενσωμάτωσης`,emptyDesc:`Οι οικογένειες ενσωμάτωσης εμφανίζονται εδώ μόλις προσθέσετε ένα κλειδί υπηρεσίας παροχής που υποστηρίζει ενσωματώσεις.`,dragToReorder:`Σύρετε για να αλλάξετε τη σειρά του παρόχου`},fusion:{title:`Σύντηξη`,description:`Μια ομάδα μοντέλων απαντά παράλληλα και μετά ένας κριτής συνθέτει μια ισχυρότερη απάντηση. Χρησιμοποιήστε το καλώντας το API με μοντέλο "fusion".`,panelSource:`Προέλευση πίνακα`,panelSourceHelp:`Από πού προέρχονται τα μοντέλα πάνελ όταν ένα αίτημα δεν προσδιορίζει το δικό του.`,mode:{auto:`Αυτόματο (Εναλλακτική αλυσίδα)`,autoHelp:`Επιλέξτε ένα ποικίλο σύνολο μοντέλων από την Εναλλακτική αλυσίδα σας, ταξινομημένα με βάση την ενεργή στρατηγική δρομολόγησης.`,explicit:`Ρητός πίνακας`,explicitHelp:`Χρησιμοποιείτε πάντα τα συγκεκριμένα μοντέλα που επιλέγετε παρακάτω.`},panelModels:`Μοντέλα πάνελ`,selectedCount:`{count} από {max} επιλεγμένα`,noModels:`Δεν έχουν συνδεθεί ακόμη μοντέλα. Προσθέστε ένα κλειδί API και, στη συνέχεια, ενεργοποιήστε τα μοντέλα στην αλυσίδα εναλλακτικών.`,panelSize:`Μέγεθος πάνελ`,panelSizeHelp:`Πόσα διαφορετικά μοντέλα να επιλέξετε αυτόματα (1–{max}).`,judge:`Μοντέλο κριτή`,judgeHelp:`Το μοντέλο που συνθέτει τις απαντήσεις του πάνελ σε μία. Το Auto χρησιμοποιεί το κορυφαίο διαθέσιμο μοντέλο σας.`,judgeAuto:`Αυτόματο (διαθέσιμο στην κορυφαία κατάταξη)`,strategy:`Στρατηγική`,strategySynthesize:`Συνθέστε — συνδυάστε το πάνελ σε μία απάντηση`,strategyBestOf:`Best of — επιστρέψτε τη μοναδική ισχυρότερη απάντηση (χωρίς κλήση κριτή)`,strategySynthesizeShort:`Συνθέτω`,strategyBestOfShort:`Καλύτερο από`,exposePanel:`Εκθέστε τις λεπτομέρειες του πίνακα`,exposePanelHelp:`Επισυνάψτε την απάντηση κάθε μοντέλου και τα μεταδεδομένα του κριτή κάτω από ένα πεδίο x_fusion στην απάντηση.`,howToUse:`Τρόπος χρήσης`,howToUseHelp:`Στείλτε ένα κανονικό αίτημα συνομιλίας με το μοντέλο "fusion". Αυτές οι ρυθμίσεις είναι οι προεπιλεγμένες. Οποιοδήποτε αίτημα μπορεί να τα παρακάμψει με ένα πεδίο "fusion".`,unsavedChanges:`Μη αποθηκευμένες αλλαγές`,save:`Αποθήκευση`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Ασφάλιστρο`,description:`Ο ζωντανός κατάλογος μοντέλων, σε κάθε συσκευή.`,loading:`Φόρτωση...`,checkForUpdates:`Έλεγχος για ενημερώσεις`,syncing:`Συγχρονισμός...`,catalogFeed:`Τροφοδοσία καταλόγου`,liveFeed:`Ζωντανή ροή`,monthlySnapshot:`Μηνιαία σύνοψη`,lastChecked:`Τελευταίος έλεγχος: {when}`,liveDescription:`Νέα δωρεάν μοντέλα, αλλαγές ποσοστώσεων και διορθώσεις ιδιορρυθμιών προσγειώνονται εδώ μέσα σε λίγες ώρες από την αποστολή. Η εφαρμογή ελέγχει αυτόματα δύο φορές την ημέρα. Τίποτα να κάνουμε.`,snapshotDescription:`Δωρεάν επίπεδο: ο κατάλογος ανανεώνεται από ένα μηνιαίο στιγμιότυπο, ελέγχεται αυτόματα δύο φορές την ημέρα. Το Premium το αλλάζει στη ζωντανή ροή, η οποία ενημερώνεται κάθε 2-3 ημέρες.`,lastSyncProblem:`Τελευταίο πρόβλημα συγχρονισμού: {error}`,license:`Άδεια`,planAnnual:`Premium Ετήσιο`,planLifetime:`Premium Διάρκεια ζωής`,expired:`Έληξε`,inactive:`Ανενεργός`,lifetimeNote:`Άδεια ζωής: δεν λήγει ποτέ.`,renewsOn:`Ανανεώνεται στις {date}.`,willNotRenew:`Δεν θα ανανεωθεί. Premium μέχρι {date}, τότε αυτή η εγκατάσταση επιστρέφει στον δωρεάν μηνιαίο κατάλογο.`,keyInactive:`Αυτό το κλειδί δεν είναι πλέον ενεργό. Η εφαρμογή συνεχίζει να λειτουργεί στον δωρεάν μηνιαίο κατάλογο.`,manageSubscription:`Διαχείριση συνδρομής`,openingPortal:`Εγκαίνια...`,removeKey:`Αφαιρέστε το κλειδί από αυτήν τη συσκευή`,manageHint:`Η Διαχείριση συνδρομής ανοίγει την πύλη χρέωσης του Stripe: ακυρώστε, ενημερώστε την κάρτα σας ή κατεβάστε τιμολόγια. Η αφαίρεση του κλειδιού απενεργοποιεί μόνο αυτήν τη συσκευή. Η αγορά σας είναι ανέγγιχτη.`,licenseKey:`Κλειδί άδειας χρήσης`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Ενεργοποίηση`,activating:`Ενεργοποίηση...`,keyHint:`Το κλειδί σας βρίσκεται στο email αγοράς και στη σελίδα μετά την ολοκλήρωση της αγοράς. Το χάσατε;`,recoverKey:`Ανακτήστε το στον ιστότοπο`,upsellTitle:`Βγείτε ζωντανά με 19 $ το χρόνο`,upsellDescription:`Νέα δωρεάν μοντέλα τη στιγμή που υπάρχουν, αντί για 30 ημέρες αργότερα. Ένα κλειδί, κάθε συσκευή. Ακύρωση ανά πάσα στιγμή. Ο δρομολογητής παραμένει ελεύθερος για πάντα.`,goPremium:`Πηγαίνετε Premium`,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:`Χρησιμοποιήστε το ενοποιημένο κλειδί API με οποιονδήποτε υπολογιστή-πελάτη συμβατό με OpenAI.`,copyKey:`Αντιγραφή κλειδιού API`,copyUrl:`Αντιγραφή βάσης URL`,copiedKey:`API κλειδί αντιγράφηκε στο πρόχειρο`,copiedUrl:`Η βάση URL αντιγράφηκε στο πρόχειρο`},palette:{title:`Παλέτα εντολών`,placeholder:`Αναζήτηση σελίδων, μοντέλων, ενεργειών...`,empty:`Κανένα αποτέλεσμα`,groupPages:`Σελίδες`,groupActions:`Δράσεις`,groupModels:`Μοντέλα`,toggleTheme:`Εναλλαγή σκοτεινής λειτουργίας`},validation:{required:`Απαιτείται`,url:`Εισαγάγετε μια έγκυρη URL ξεκινώντας με http:// ή https://`,email:`Εισαγάγετε μια έγκυρη διεύθυνση 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'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:`Ένας πάντα διαθέσιμος προσωπικός βοηθός που απαντά σε WhatsApp, Telegram, Discord και άλλα από το δικό σας μηχάνημα.`,hermes:`Ο αυτοβελτιούμενος πράκτορας της Nous Research με μόνιμη μνήμη και δεξιότητες, στο τερματικό ή σε εφαρμογές συνομιλίας.`,pi:`Ένας μινιμαλιστικός πράκτορας τερματικού που διαμορφώνετε με δικές σας επεκτάσεις, δεξιότητες και πρότυπα προτροπών.`}},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:`Μετονομασία αυτής της αλυσίδας`,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};
@@ -0,0 +1 @@
1
+ var e={nav:{models:`Modelos`,playground:`Entorno de pruebas`,keys:`Claves`,analytics:`Analíticas`,premium:`Premium`,upgrade:`Actualizar`,settings:`Configuración`,signOut:`Cerrar sesión`,openMenu:`Abrir el menú de navegación`,switchLight:`Cambiar al tema claro`,switchDark:`Cambiar al tema oscuro`,switchToChinese:`Cambiar a chino`,switchToEnglish:`Cambiar a inglés`,modelsMenu:`Explorar tipos de modelos`,agents:`Agentes`,logs:`Registros`,analyticsMenu:`Páginas de analíticas`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Crea tu cuenta`,signIn:`Iniciar sesión`,email:`Correo electrónico`,password:`Contraseña`,emailPlaceholder:`tu@ejemplo.com`,passwordPlaceholderSetup:`al menos 8 caracteres`,passwordPlaceholderLogin:`tu contraseña`,setupDescription:`Define el correo y la contraseña que protegerán este panel.`,loginDescription:`Inicia sesión para gestionar tus claves, el enrutamiento y las analíticas.`,createAccount:`Crear cuenta`,creating:`Creando…`,signingIn:`Iniciando sesión…`,loading:`Cargando…`,newPasswordAutoComplete:`new-password`,currentPasswordAutoComplete:`current-password`,serverUnreachableBefore:`No se puede conectar con el servidor. Asegúrate de que el backend esté en ejecución (`,serverUnreachableAfter:`).`,setupCode:`Código de configuración`,setupCodePlaceholder:`código de los registros del servidor`,setupCodeHint:`La configuración desde otro dispositivo necesita el código de un solo uso impreso en los registros del servidor al inicio.`,changePassword:`Cambiar contraseña`,changeEmail:`Cambiar correo electrónico`,forgotPassword:`¿Olvidaste tu contraseña?`,currentPassword:`Contraseña actual`,newPassword:`Nueva contraseña`,newEmail:`Nuevo correo electrónico`,resetCode:`Código de restablecimiento`,resetCodePlaceholder:`código de los registros del servidor`,resetCodeHint:`El código está en el registro del servidor. Nunca se envía por correo electrónico.`,forgotPasswordDescription:`Haz clic en el botón de abajo para generar un código de restablecimiento. El código se escribe en el registro del servidor, nunca se envía por correo. Ingrésalo aquí para establecer una nueva contraseña.`,requestResetCode:`Enviar código de restablecimiento`,requestingResetCode:`Enviando…`,resetPassword:`Restablecer contraseña`,resettingPassword:`Restableciendo…`,changingPassword:`Cambiando…`,changingEmail:`Cambiando…`,backToLogin:`Volver al inicio de sesión`,passwordChanged:`Contraseña cambiada correctamente.`,emailChanged:`Correo electrónico cambiado correctamente.`,passwordReset:`Contraseña restablecida correctamente. Por favor, inicia sesión.`,resetCodeDockerHint:`¿Usas Docker? El código está en el registro del contenedor: docker logs <container>.`,desktopSessionFailed:`El panel no pudo iniciar sesión en el servidor local. Cierra SRouter y vuelve a abrirlo.`},common:{save:`Guardar`,saving:`Guardando…`,cancel:`Cancelar`,discard:`Descartar`,delete:`Eliminar`,confirm:`Confirmar`,copy:`Copiar`,copied:`Copiado`,copyFailed:`No se pudo copiar — selecciona el texto y cópialo manualmente`,show:`Mostrar`,hide:`Ocultar`,apply:`Aplicar`,applied:`Aplicado`,applying:`Aplicando…`,active:`Activo`,inactive:`Inactivo`,never:`nunca`,loading:`Cargando…`,error:`Error`,noData:`Aún no hay datos`,unsavedChanges:`Cambios sin guardar`,saveChanges:`Guardar cambios`,remove:`Quitar`,unknownError:`Error desconocido`,model:`Modelo`,provider:`Proveedor`,success:`Aciertos`,failures:`Fallos`,dismiss:`Descartar`,status:`Estado`},settings:{title:`Configuración`,language:`Idioma`,theme:`Tema`,themeSystem:`Sistema`,themeLight:`Claro`,themeDark:`Oscuro`,searchLanguage:`Buscar idiomas…`,noLanguages:`No se encontraron idiomas`,sections:`Secciones de configuración`,sectionGeneral:`General`,sectionCompression:`Compresión`,sectionAdvanced:`Avanzado`,sectionPreview:`Vista previa`,generalDescription:`Idioma y apariencia de este panel.`,advancedDescription:`Umbrales e interruptores de seguridad del pipeline de compresión.`,compressionTitle:`Compresión de prompts`,compressionDescription:`Reduce el tamaño de la solicitud antes del enrutamiento, preservando código, errores, rutas, números y definiciones de herramientas.`,compressionHelp:`Reescribe cada solicitud antes de enviarla a un proveedor para que use menos tokens. El código, los errores, las rutas de archivo y los números están protegidos, y se descarta cualquier reescritura que los dañe.`,compressionMode:`Modo`,compressionModeHelp:`Desactivada envía las solicitudes sin tocarlas. Sin pérdidas solo elimina el texto duplicado y desaprovechado. Estándar además acorta la salida de las herramientas. Agresiva condensa también los turnos anteriores.`,compressionOff:`Desactivada`,compressionLossless:`Sin pérdidas`,compressionStandard:`Estándar`,compressionAggressive:`Agresiva`,compressionLossy:`Con pérdidas`,compressionEngines:`Motores`,compressionEnginesHelp:`Cada motor es un paso de reescritura. El modo decide qué motores se ejecutan; desactivar uno aquí lo excluye de todos los modos.`,engineDedup:`Bloques repetidos`,engineDedupHelp:`Sustituye un bloque de texto que ya apareció antes en la conversación por una referencia breve a él.`,engineLite:`Limpieza de espacios en blanco`,engineLiteHelp:`Recorta los espacios al final de las líneas, junta las líneas en blanco repetidas y elimina los mensajes de sistema duplicados.`,engineReadLifecycle:`Lecturas de archivo sustituidas`,engineReadLifecycleHelp:`Sustituye una lectura anterior de un archivo por una nota cuando ese mismo archivo se vuelve a leer o editar más tarde.`,engineToolfilter:`Filtro de salida de herramientas`,engineToolfilterHelp:`Acorta la salida de comandos y herramientas, como compilaciones, pruebas e instalaciones. Las líneas de error y de traza de pila siempre se conservan.`,engineJsoncompact:`Tablas JSON`,engineJsoncompactHelp:`Vuelve a codificar como una tabla compacta los arrays JSON largos que comparten los mismos campos. Es reversible, así que no se pierde nada.`,engineRelevance:`Filtro de relevancia`,engineRelevanceHelp:`Descarta las frases menos relacionadas con el último mensaje cuando un mensaje supera su presupuesto de tamaño.`,engineAging:`Turnos anteriores`,engineAgingHelp:`Condensa los turnos anteriores a los más recientes en un resumen breve que conserva rutas, errores y decisiones.`,engineHardBudget:`Límite de tokens`,engineHardBudgetHelp:`Elimina las líneas menos valiosas hasta que la solicitud cabe en el objetivo de tokens.`,compressionAutoTrigger:`Activar automáticamente por encima de los tokens estimados`,compressionAutoTriggerHelp:`Las solicitudes cuya estimación supere este número de tokens cambian a Agresiva automáticamente. Déjalo vacío para desactivarlo.`,compressionPrefixFreeze:`Congelar prefijos de prompt recurrentes`,compressionPrefixFreezeHelp:`Deja intacto un prompt del sistema una vez que el mismo texto se ha visto tres veces, para que la caché de prompts del proveedor siga funcionando.`,compressionTrustProjectFilters:`Confiar en los archivos de filtro del proyecto`,compressionTrustProjectFiltersHelp:`También carga filtros de salida de herramientas desde el directorio de trabajo. Desactivado de forma predeterminada, porque un repositorio podría usarlo para ocultarle salida al modelo.`,compressionStats:`Tamaño ahorrado`,compressionEstimatedTokensSaved:`Tokens estimados ahorrados`,compressionPreview:`Vista previa en vivo`,compressionPreviewDescription:`Envía un cuerpo de solicitud por el pipeline para ver lo que recibiría un proveedor.`,compressionPreviewPlaceholder:`Pega JSON de la solicitud o texto sin formato`,compressionRunPreview:`Ejecutar vista previa`,updatesTitle:`Actualizaciones`,checkForUpdates:`Buscar actualizaciones`,lastChecked:`Última comprobación: {when}`,currentVersion:`Compilación actual:`,updateAvailable:`Actualización disponible`,changelog:`Qué ha cambiado`,upToDate:`Al día`,buildAhead:`Esta compilación está por delante de la rama main oficial.`,buildDiverged:`Esta compilación ha divergido de la rama main oficial.`,buildUnknown:`Esta compilación personalizada no se puede comparar con la rama main oficial.`,notGitInstall:`Esta instalación no incluye información de commits.`,checkFailed:`No se pudo comprobar si hay actualizaciones.`,contactsGithub:`Las comprobaciones se realizan manualmente y contactan con GitHub.`,autoUpdateCheck:`Comprobación automática de actualizaciones`,autoUpdateCheckHelp:`Consulta GitHub una vez al día para ver si hay una nueva versión y muestra un recordatorio. Desactivado de forma predeterminada.`,openReleases:`Abrir lanzamientos de GitHub`,restartAfterUpdate:`Reinicia SRouter cuando finalice la compilación.`,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:`Modelos`,chatModelsTab:`Modelos de chat`,fusionTab:`Fusión`,embeddingsTab:`Embeddings`,imageTab:`Imagen`,videoTab:`Video`,audioTab:`Audio`,imageDesc:`Modelos de generación de texto a imagen.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Modelos de texto a voz y de voz a texto.`,mediaHint:`Generar mediante`,mediaEmpty:`Aún no hay modelos. Se sincronizan desde el catálogo.`,ttsHeading:`Texto a voz`,sttHeading:`Voz a texto`,sttHint:`Transcribir mediante`,sttEmpty:`Aún no hay modelos de voz a texto. Se sincronizan desde el catálogo.`,newBadge:`Nuevo`,monthlyTokenBudget:`Presupuesto mensual de tokens`,remaining:`restante`,used:`usados`,usedScopeHint:`Solo solicitudes de chat, desde el inicio de este mes natural, sumadas sobre todos los modelos de la cadena activa, incluidos los endpoints personalizados. El tráfico que envías a un proveedor fuera de SRouter no se cuenta.`,legendRemainingTitle:`Restante / presupuesto mensual de {name} ({platform})`,noPublishedQuota:`+{count} sin cuota publicada`,noPublishedQuotaTitle:`Estos modelos no tienen un presupuesto mensual de tokens documentado, así que no hay restante que mostrar.`,of:`de`,showAllModels:`Mostrar los {count} modelos`,showLess:`Mostrar menos`,vision:`Visión`,visionTitle:`Acepta imágenes como entrada`,tools:`Herramientas`,toolsTitle:`Emite llamadas a herramientas estructuradas, por lo que es apto para solicitudes con herramientas`,retired:`Retirado`,penalty:`penalización de −{value}`,obs:`{count} obs`,tokPerMonth:`{count} tok/mes`,rpmLimit:`{count} rpm`,rpdLimit:`{count} rpd`,noKey:`sin clave`,dragToReorder:`Arrastra para reordenar`,dragToReorderGroup:`Arrastra para reordenar el modelo`,moveToRank:`Ir a la posición`,providerCount:`{count} proveedores`,servedBy:`Servido por {providers}`,viewProviders:`Ver proveedores`,backToModels:`Volver a modelos`,providersHeading:`Proveedores que sirven este modelo`,codeSnippetHeading:`Usar este modelo`,modelNotFound:`Este modelo no está disponible o no tiene proveedores configurados.`,providerIdsHeading:`IDs de modelo por proveedor`,providerIdsHint:`Envía el id de modelo unificado para conmutar entre todos los proveedores, o un id específico de proveedor para fijar uno solo.`,copyModelName:`Copiar nombre del modelo`,settingsHeading:`Ajustes del proveedor`,settingsHint:`Las ediciones locales a los modelos del catálogo se conservan entre sincronizaciones del catálogo. Los modelos del catálogo eliminados permanecen eliminados hasta que los agregues de nuevo mediante la configuración.`,catalogModel:`catálogo`,customModel:`personalizado`,discoveredModel:`descubierto`,localOverride:`anulación local`,displayName:`Nombre visible`,sizeLabel:`Nivel de capacidad`,sizeLabelHint:`Frontier/Large/Medium/Small fijan el eje de inteligencia: un nivel superior siempre supera a uno inferior y, dentro de un nivel, el rango de inteligencia sigue moviendo la puntuación. Un modelo sin un nivel reconocido obtiene la puntuación más baja en este eje, pero la inteligencia es solo uno de los tres ejes: con buena fiabilidad y velocidad todavía puede ganarse la ruta.`,sizeLabelNone:`Ninguno (puntuación de inteligencia más baja)`,contextWindow:`Contexto`,inFallback:`En cadena`,saveModelSettings:`Guardar ajustes del modelo`,aggregateBudget:`{count}/mes`,aggregateBudgetTitle:`Total de tokens gratuitos por mes entre los proveedores de este modelo`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Con límite de tasa: sin presupuesto mensual fijo de tokens`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Uso del límite de velocidad por ventana de tiempo (usado / límite) del proveedor con más margen`,splitOut:`No combinar esta copia`,splitOutHint:`Da a la copia de este proveedor su propia entrada separada en lugar de combinarla en el modelo unificado. Puedes volver a combinarla desde la página de la copia.`,splitUndo:`Volver a combinar`,splitUndoHint:`Esta copia se mantiene separada de su modelo unificado. Vuelve a combinarla para conmutar de nuevo entre todos sus proveedores.`,splitBadge:`separada`,noData:`sin datos`,noDataTitle:`Aún no hay solicitudes registradas: la fiabilidad y la velocidad de este proveedor no se han medido.`,bestOfN:`mejor de {count}`,perProviderScores:`Puntuaciones por proveedor: {list}`,columnModel:`Modelo`,columnOn:`Activo`,noModelsBefore:`No hay modelos disponibles. Añade claves API en la `,keysPageLink:`página Claves`,noModelsAfter:` primero.`,hiddenNoKeys:`Ocultos (sin clave): {platforms}`,searchPlaceholder:`Buscar modelos o proveedores…`,clearSearch:`Borrar búsqueda`,ctxAny:`Cualquier contexto`,ctxBadge:`{size} ctx`,ctxTitle:`Ventana de contexto`,copyModelId:`Copiar id del modelo`,showingCount:`{shown} de {total} modelos`,clearFilters:`Borrar filtros`,noMatches:`Ningún modelo coincide con tus filtros.`,noModelsTitle:`No hay modelos configurados`,intelligenceRank:`Inteligencia`,speedRank:`Velocidad`,rankHint:`Rango en el catálogo — 1 es el mejor.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Solicitudes por minuto. Déjalo en blanco para no aplicar límite.`,limitRpdHint:`Solicitudes por día. Déjalo en blanco para no aplicar límite.`,limitTpmHint:`Tokens por minuto. Déjalo en blanco para no aplicar límite.`,limitTpdHint:`Tokens por día. Déjalo en blanco para no aplicar límite.`,usageThisMonth:`Uso mensual`,usageEmpty:`Aún no hay solicitudes este mes.`,usageRequestsMonth:`{count} sol. este mes`,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:`Activar o desactivar todos los modelos mostrados`,enableAll:`Activar todos`,disableAll:`Desactivar todos`,enableAllHint:`Activa todos los modelos mostrados y luego guarda`,disableAllHint:`Desactiva todos los modelos mostrados y luego guarda`,enabledOfShown:`{enabled} de {shown} modelos mostrados están en la cadena`},strategies:{explore:`Explorar modelos sin mediciones`,exploreHint:`Da a los modelos sin datos de fiabilidad ni de velocidad un 10 % de probabilidad de ir primero, para que acumulen historial. Lo que se envía es tu solicitud real, así que puede responderla un modelo sin probar. Para un endpoint personalizado, usa «Probar el endpoint» en la página Claves y evita el tráfico real.`,keySelection:`Selección de clave`,keySelectionAuto:`Automática`,keySelectionLeastRemaining:`Menos restante`,keySelectionHint:`Cómo elegir entre varias claves del mismo proveedor. Automática mantiene la rotación actual; Menos restante ordena las claves por la cuota observada y prueba primero la que más le queda.`,cooldownCeiling:`Enfriamiento automático máximo`,cooldownCeilingHint:`Limita cuánto tiempo pueden apartar las propias estimaciones del enrutador a un par clave y modelo que falla. La escalera normalmente sube 2 min, 10 min, 1 h, 24 h, y los errores de saldo o de nivel apartan durante un día. Los tiempos de reintento indicados por el proveedor nunca se acortan.`,cooldownCeilingDefault:`Predeterminado (hasta 24 h)`,cooldownCeiling10m:`10 minutos`,cooldownCeiling1h:`1 hora`,cooldownCeiling6h:`6 horas`,moreOptions:`Más opciones`,peakActive:`(horas punta)`,peakActiveHint:`El ajuste de horas punta está activo ahora mismo, así que estos no son los pesos propios del preajuste: el 60 % del peso de velocidad se ha trasladado a fiabilidad.`,peakAdjust:`Ajuste de horas punta`,peakAdjustHint:`Desactivado por defecto. Dentro de la ventana de abajo, traslada el 60 % del peso de velocidad a fiabilidad: los relés gratuitos están más saturados entonces, así que la fiabilidad predice el éxito mejor que el rendimiento bruto. Más rápido y Más fiable no se tocan.`,peakFrom:`De`,peakTo:`a`,peakTimezoneLabel:`Zona horaria`,peakUseBrowserTimezone:`Usar la zona horaria del navegador`,peakTimezoneInvalid:`Zona horaria desconocida.`,peakExemptNote:`Este preajuste no se toca: ya está en uno de los extremos del equilibrio velocidad/fiabilidad.`,title:`Estrategia de enrutamiento`,description:`Elige una estrategia de enrutamiento. En el modo manual, arrastra para definir el orden; las demás estrategias enrutan según una puntuación en vivo de fiabilidad, velocidad e inteligencia.`,weightsSummary:`fiabilidad {reliability}% · velocidad {speed}% · inteligencia {intelligence}%`,guardrails:`Salvaguardas`,guardrailsTooltip:`Salvaguardas siempre activas: margen de cuota gratuita × penalización de límite de tasa en vivo. Por debajo de 1,0 el modelo está siendo frenado.`,scoreTooltip:`Puntuación de enrutamiento final = media ponderada de los tres ejes, multiplicada por las salvaguardas. La más alta se enruta primero.`,modeManualHint:`Modo manual: las solicitudes siguen el orden de abajo, de arriba abajo. Arrastra para reordenar.`,modeScoreHint:`Las puntuaciones se actualizan con el tráfico real. El orden de abajo es cómo se enrutan las solicitudes ahora mismo.`,manual:`Manual`,manualBlurb:`Enrutar en el orden exacto que definas abajo. Arrastra los controles para reordenar. Sin puntuación; la cadena se sigue de arriba abajo.`,balanced:`Equilibrado`,balancedBlurb:`La fiabilidad va primero (50 %), con velocidad e inteligencia ponderadas por igual (25 % cada una). Un valor por defecto sensato y versátil.`,smartest:`El más inteligente`,smartestBlurb:`Prefiere el modelo más capaz que siga funcionando. Inteligencia 55 %, fiabilidad 35 %, velocidad 10 %.`,fastest:`El más rápido`,fastestBlurb:`Prefiere el modelo más rápido que siga funcionando. Velocidad 55 %, fiabilidad 35 %, inteligencia 10 %.`,reliable:`El más fiable`,reliableBlurb:`Maximizar la tasa de éxito por encima de todo. Fiabilidad 70 %, velocidad e inteligencia 15 % cada una.`,custom:`Personalizado`,customBlurb:`Define tu propio equilibrio entre fiabilidad, velocidad e inteligencia con controles deslizantes. El mismo motor que los preajustes, pero con tus pesos.`,adjust:`Ajustar`,customWeights:`Pesos personalizados`,customWeightsHelp:`Los controles son independientes; las proporciones se equilibran automáticamente al 100 %.`,weightReliability:`Fiabilidad`,weightSpeed:`Velocidad`,weightIntelligence:`Inteligencia`,weightRequired:`Al menos un peso debe ser mayor que cero.`,scoreColumn:`Puntuación`},penaltyInspector:{title:`Presión del router`,subtitle:`Penalizaciones, cooldowns y fallos de los últimos {minutes} min`,rowCount:`{count} activos`,offChain:`fuera de cadena`,penaltyValue:`Penalización {value}`,factor:`puntuación x{factor}`,noCooldown:`Sin cooldown`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Borrar todo`,clearAllHint:`Levanta ahora todos los enfriamientos, penalizaciones y rachas de fallos. La presión se reconstruye con los próximos resultados reales.`,errorsHeading:`{count} errores recientes`,noRecentErrors:`Sin errores recientes`,noKey:`sin clave`,reasons:{penalty:`penalizado`,cooldown:`cooldown`,recent_errors:`fallando`}},keys:JSON.parse(`{"pageTitle":"Claves","pageDescription":"Las credenciales de los proveedores y la clave API unificada con la que se conectan tus aplicaciones.","tabProviders":"Proveedores","checklistSummary":"{configured} de {total} proveedores configurados","checklistKeyless":"no se necesita clave","checklistNoKeyTip":"Aún no se ha añadido ninguna clave. Haz clic para añadir una.","checklistSignupLink":"Abre {provider} para crear una cuenta y obtener una clave","checklistKeylessTip":"Funciona sin clave.","tabQuotaSignals":"Señales de cuota","tabApiKey":"Clave de API unificada","tabAnthropic":"Anthropic","unifiedKey":"Tu clave API unificada","regenerate":"Regenerar","showKey":"Mostrar","hideKey":"Ocultar","copyKey":"Copiar","copyFullKey":"Copiar clave completa","copiedKey":"Copiado","baseUrl":"URL base","endpointChat":"Chat","endpointResponses":"Responses","endpointEmbeddings":"Embeddings","endpointEmbeddingsHint":"model: «auto» o una familia de la pestaña Embeddings","endpointMessages":"Messages","endpointMessagesHint":"Compatible con 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":"Modelos Claude (Anthropic)","anthropicDesc":"Apunta un cliente SDK de Claude o Anthropic a este servidor. Los clientes de Anthropic envían nombres de modelos Claude: asigna cada uno a Auto (el router elige un modelo gratuito) o fija uno específico.","anthropicBaseUrl":"URL base","anthropicAuth":"Encabezado de autenticación","anthropicAuto":"Auto — el router elige el mejor modelo","anthropicSave":"Guardar asignación","anthropicSaved":"Guardado","anthropicNote":"Los clientes de Anthropic conservan sus nombres de modelos Claude integrados; la asignación de arriba decide cómo se enruta cada uno hacia tu grupo.","familyDefault":"Predeterminado","familyOpus":"Opus","familySonnet":"Sonnet","familyHaiku":"Haiku","selectPlatform":"Selecciona un proveedor","addKey":"Añadir clave","keyAdded":"Clave añadida","endpointKeysShareModels":"Las claves del mismo endpoint comparten sus modelos.","export":"Exportar","exportAll":"All keys","exportHealthy":"Healthy only","exportKeys":"Export API keys","exportFormat":"Format","exportHealthyOnly":"Healthy keys only","exportHealthyOnlyDesc":"Exclude keys that are currently failing health checks","exportWillExport":"Will export","exportKey":"key","exportKeys plural":"keys","exporting":"Exporting…","exportDownload":"Download","exportSuccess":"Exported {count} keys","adding":"Añadiendo…","selectProvider":"Selecciona un proveedor…","accountId":"ID de cuenta","label":"Etiqueta","noKeyNeeded":"(no se necesita clave)","outboundProxy":"Proxy de salida","outboundProxyDescription":"Enruta las solicitudes LLM salientes a través de un proxy. Compatible con SOCKS5, HTTP y HTTPS.","proxyUrl":"URL del proxy","saveProxy":"Guardar","savingProxy":"Guardando…","proxyLoadFailed":"No se pudieron cargar los ajustes del 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":"Añadir un modelo personalizado compatible con OpenAI","addCustomDescription":"Apunta a cualquier endpoint compatible con OpenAI: llama.cpp, LM Studio, vLLM, un Ollama local o una pasarela remota. Indica un modelo por línea (o separados por comas) para añadir varios a la vez; todos comparten el mismo endpoint. La clave API es opcional (la mayoría de los servidores locales no la necesitan).","customType":"Tipo","customTypeChat":"Chat","customTypeEmbedding":"Embedding","customTypeImage":"Imagen","customTypeAudio":"Audio","customTypeTranscription":"Transcription","customBaseUrl":"URL base","customModels":"Modelos","customModel":"Modelo","customDisplayName":"Nombre visible","customDisplayNamePerModel":"por modelo","customDisplayNameOptional":"opcional","customFamily":"Familia","customFamilyPlaceholder":"por defecto, el id del modelo","customApiKey":"Clave API","customCapabilities":"Capacidades","addModel":"Añadir modelo","modelAdded":"Modelo añadido","addModels":"Añadir {count} modelos","addEmbeddingModel":"Agregar embedding","addImageModel":"Agregar modelo de imagen","addAudioModel":"Agregar modelo de audio","addTranscriptionModel":"Add transcription model","addingCustom":"Añadiendo…","discoverModels":"Obtener modelos","probeNow":"Probar el endpoint","probeConfirm":"¿Enviar hasta 3 solicitudes de prueba?","probeCapabilities":"razonamiento: {reasoning} · herramientas: {tools}","probeCapYes":"sí","probeCapNo":"no","probeCapUnknown":"desconocido","probeSuccess":"{model} probado en {latency} ms","probeFailed":"La prueba falló: {reason}","discoverTitle":"Modelos en este endpoint","discoverHint":"Elige los modelos a registrar. Los que ya añadiste quedan bloqueados.","discoverEmpty":"Este endpoint no devolvió ningún modelo.","discoverAlreadyAdded":"Añadido","discoverSelectAll":"Seleccionar todo","modelsAdded":"{count} modelos añadidos","getApiKey":"Obtener clave API","deleteKeyConfirm":"¿Eliminar esta clave? No se puede deshacer.","checkAll":"Comprobar todo","checking":"Comprobando…","editLabel":"Editar etiqueta","saveLabel":"Guardar etiqueta","unifiedKeyDescBefore":"Úsala como tu ","unifiedKeyDescAfter":" de OpenAI; autentica las solicitudes a este proxy.","serverUnreachableBefore":"No se puede conectar con el servidor en ","serverUnreachableAfter":". Asegúrate de que el backend esté en ejecución. npm run dev inicia ambos, y los registros del servidor se imprimen con el prefijo server.","paneProviderKey":"Clave de proveedor","paneImportFile":"Importar archivo","paneCustomEndpoint":"Endpoint personalizado","platform":"Plataforma","hideAdded":"Ocultar proveedores añadidos","apiToken":"Token de API","keyOptionalPlaceholder":"Opcional","bearerTokenPlaceholder":"Token Bearer","pasteKeyPlaceholder":"pega la clave aquí","pasteSeveral":"Pegar varias","keyOptionalHint":"Opcional: déjalo vacío para usar el nivel gratuito anónimo (limitado por IP) o pega tu propia clave para usar tu cuenta.","enable":"Habilitar","noProviderKeys":"Aún no hay claves de proveedor. Añade una arriba para empezar a enrutar.","filterPlaceholder":"Filtrar proveedores o claves","filterAll":"Todos","filterHealthy":"Correctos","filterIssues":"Con problemas","filterDisabled":"Deshabilitados","noFilterMatch":"Ningún proveedor coincide con tus filtros.","providerCountSummary":"{providers} proveedores · {keys} claves","summaryHealthy":"{count} correctos","summaryIssueOne":"{count} problema","summaryIssueOther":"{count} problemas","providerActions":"Acciones del proveedor","routeViaProxy":"Enrutar por proxy","checkNow":"Comprobar ahora","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":"También configurable mediante la variable de entorno ","proxyEnvHintAfter":" (tiene prioridad). Déjalo en blanco para desactivar. Ejemplos:","importKeys":"Importar claves de proveedor","importKeysDescription":"Sube archivos .env, JSON, JSONC, CSV, Markdown o de texto.","importFiles":"Archivos","importFileCount":"{count} seleccionados","previewFiles":"Vista previa","previewing":"Previsualizando…","selected":"Seleccionado","provider":"Proveedor","keyName":"Nombre de la clave","keyValue":"Valor de la clave","chooseProvider":"Elegir proveedor","noPreviewKeys":"No se encontraron claves en esos archivos.","skippedItems":"Omitidos:","moreItems":"+{count} más","importSelected":"Importar {count}","importing":"Importando…","noImportSelection":"Selecciona al menos una fila con un proveedor.","duplicate":"Duplicado","duplicatesFound":"{count} duplicado(s) detectado(s) — ya existen y se omitirán.","importResult":"Importados {imported}; fallidos {failed}.","importModelCount":"+{count} modelos","importResultWithModels":"Importados {imported}; {models} modelos registrados; fallidos {failed}.","confirmRemove":"¿Confirmar?","quotaSignalsTitle":"Señales de cuota","quotaSignalsEmptyTitle":"Aún no hay observaciones de cuota","quotaSignalsEmptyDesc":"Esto se completa cuando los proveedores devuelven encabezados de límite, errores de cuota o señales de validación.","quotaKeyRef":"clave n.º {id}","quotaPoolRef":"grupo {pool}","quotaLimit":"Límite","quotaRemaining":"Restante","quotaReset":"Reinicio","quotaObserved":"Observado","tabAgents":"Agentes","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Asignación de modelos Gemini","geminiDesc":"Asigna los nombres de Gemini Pro, Flash y Flash-Lite a Auto o a un modelo concreto del catálogo.","compatibilityTitle":"Compatibilidad de agentes","compatibilityDesc":"Controla las superficies de compatibilidad opcionales y la detección de modelos de Claude Code.","ollamaMode":"Emulación de Ollama","ollamaModeHint":"El modo abierto en loopback nunca acepta tráfico LAN sin autenticar.","ollamaOff":"Desactivado","ollamaLoopback":"Abierto en loopback","ollamaKeyRequired":"Se requiere clave de API","claudeAliases":"Alias de detección de Claude Code","claudeAliasesHint":"Expón alias claude/<model> para que el selector de modelos del gateway pueda listar el catálogo.","mcpServer":"Servidor MCP","mcpServerHint":"Expone el endpoint /mcp a los clientes de agentes. Las instalaciones nuevas empiezan desactivado.","urlTokensTitle":"Tokens de URL revocables","urlTokensDesc":"Solo para clientes sin cabeceras. Los tokens de URL pueden filtrarse al historial y a los registros, así que revócalos cuando ya no los necesites.","urlTokenLabel":"Etiqueta del token","createUrlToken":"Crear token","urlTokenOnce":"Copia este token ahora. No se volverá a mostrar.","revoked":"Revocado","revoke":"Revocar","modelScope":"Alcance de modelos","modelScopeDesc":"Limita esta clave a determinados ID de modelo. El enrutador omite esta clave para cualquier otro modelo.","modelScopeAdd":"Añade un ID de modelo y pulsa Intro","modelScopeEmpty":"Sin alcance definido: esta clave sirve todos los modelos de su proveedor.","modelScopeClear":"Borrar alcance","modelScopeBadgeOne":"limitada · 1 modelo","modelScopeBadgeOther":"limitada · {count} modelos","modelPicker":{"title":"¿Qué modelos debe atender esta clave?","hint":"Se añadió tu clave de {provider} y ahora mismo atiende todos los modelos de abajo. Desmarca los que esta clave no tenga permiso para usar — el enrutador la omitirá para ellos.","count":"{selected} de {total} seleccionados","allNote":"Todo seleccionado — no se guarda nada y los modelos que se añadan al catálogo más adelante también usarán esta clave.","subsetNote":"Esta clave se limitará a los modelos seleccionados. Puedes cambiarlo más adelante desde la fila de la clave.","skip":"Ahora no","scopedOne":"Clave limitada a 1 modelo","scopedOther":"Clave limitada a {count} modelos","allSaved":"Key serves every catalog model"},"cpTitle":"Perfiles de cliente","cpDesc":"Claves API por cliente, cada una con un prompt de sistema que el servidor aplica siempre.","cpEmpty":"Aún no hay perfiles de cliente.","cpNameLabel":"Nombre","cpNamePlaceholder":"p. ej., Bot de soporte","cpPromptLabel":"Prompt de sistema (opcional)","cpPromptPlaceholder":"Instrucciones que el servidor antepone a cada solicitud hecha con esta clave.","cpCreate":"Crear perfil","cpRotate":"Rotar clave","cpKeyOnce":"Copia esta clave ahora: no se volverá a mostrar.","cpEnabledAria":"Perfil habilitado","selectKey":"Seleccionar esta clave","bulkSelected":"{count} seleccionadas","bulkEnable":"Habilitar todas","bulkDisable":"Deshabilitar todas","bulkDelete":"Eliminar todas","bulkDeleteConfirm":"¿Eliminar {count}?","bulkResult":"Actualizadas {done}; fallidas {failed}.","bulkDeleteResult":"Eliminadas {done}; fallidas {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Editar clave","editPlatformLocked":"El proveedor y el endpoint no pueden cambiarse después de crearlos.","editCredentialHint":"Déjalo vacío para conservar la clave actual.","editCredentialPartsRequired":"Introduce tanto el ID de cuenta como el token de API.","editModels":"Editar modelos","editModelsHint":"Elige qué modelos del catálogo puede servir esta clave. Selecciona todo para quitar la restricción.","editModelsCustomHint":"Elige qué modelos registrados del endpoint puede servir esta clave. Selecciona todo para quitar la restricción.","editModelsSync":"Comprobar actualizaciones del catálogo","editModelsSyncing":"Comprobando…","editModelsSynced":"Catálogo de modelos comprobado","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":"Añadir modelo personalizado","modelId":"ID del modelo","modelIdRequired":"El ID del modelo es obligatorio","modelDisplayName":"Nombre para mostrar","modelContextWindow":"Ventana de contexto (tokens)","modelRateLimits":"Límites de velocidad (opcional)","modelSupportsTools":"Soporta llamadas a herramientas","modelSupportsToolsHint":"Activar si este modelo puede ejecutar llamadas a herramientas o funciones","modelSupportsVision":"Soporta visión","modelSupportsVisionHint":"Activar si este modelo acepta imágenes de entrada","createModel":"Crear modelo","modelAddedSuccess":"Modelo personalizado añadido con éxito","modelAddFailed":"Error al añadir modelo personalizado","testModel":"Probar","testingModel":"Probando…","testPassedShort":"Correcto","testFailedShort":"Fallido","testPassed":"Prueba de modelo superada en {latency}ms","testFailed":"Error en la prueba del modelo","testThrottled":"Espere {seconds}s antes de probar este modelo de nuevo.","noModelsForProvider":"No hay modelos configurados para este proveedor.","testModels":"Probar modelos","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":"Ilimitado","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} solicitudes, {tokens} tokens este mes","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:`correcto`,rateLimited:`limitado`,invalid:`no válido`,error:`error`,unchecked:`sin comprobar`},analytics:{title:`Analíticas`,description:`Volumen de solicitudes, latencia, consumo de tokens y fallos.`,range24h:`24 h`,range7d:`7 d`,range30d:`30 d`,range90d:`90 d`,requests:`Solicitudes`,successRate:`Tasa de éxito`,inputTokens:`Tokens de entrada`,outputTokens:`Tokens de salida`,avgLatency:`Latencia media`,p95Latency:`Latencia P95`,avgTtft:`TTFT medio`,estSavings:`Ahorro est.`,requestsByProvider:`Solicitudes por proveedor`,avgLatencyByProvider:`Latencia media por proveedor`,ttftByProvider:`Tiempo hasta el primer token por proveedor`,ttftEmpty:`Aún no se ha registrado el tiempo hasta el primer token.`,requestsOverTime:`Solicitudes a lo largo del tiempo`,tokensOverTime:`Tokens a lo largo del tiempo`,byModel:`Por modelo`,byPlatform:`Por plataforma`,errors:`Errores`,errorDistribution:`Distribución de errores`,pinnedRequests:`Solicitudes fijadas`,pinnedHonored:`Respetadas`,fallbackAttempts:`Intentos de reserva`,savingsHint:`Realmente ahorraste {actual} $ en los últimos {range}. Eso es lo que los mismos tokens habrían costado en APIs de pago, con precio por modelo. La cifra mostrada proyecta tu ritmo de los {span} de datos más recientes a 30 días completos.`,savingsHintExact:`Realmente ahorraste {actual} $ en los últimos {range}. Eso es lo que los mismos tokens habrían costado en APIs de pago, con precio por modelo. La cifra mostrada es tu total real de 30 días.`,requestsHintPinned:`{pinned} de estas solicitudes fijaron un modelo concreto por su nombre. {honored} fueron atendidas por el modelo fijado; {failed} conmutaron a otro. El resto se enrutaron automáticamente.`,requestsHintAuto:`Todas las solicitudes de este periodo se enrutaron automáticamente; ningún cliente fijó un modelo concreto por su nombre.`,requestsHintTypes:`{chat} solicitudes de chat y {embedding} de embeddings.`,rangeLabel24h:`24 horas`,rangeLabel7d:`7 días`,rangeLabel30d:`30 días`,rangeLabel90d:`90 días`,spanDays:`{count} días`,spanHours:`{count} horas`,latencyMs:`Latencia (ms)`,latency:`Latencia`,pinned:`Fijado`,inTokens:`Tokens de entrada`,outTokens:`Tokens de salida`,saved:`Ahorrado`,message:`Mensaje`,time:`Hora`,perModelBreakdown:`Desglose por modelo`,usageByKey:`Uso por clave`,keyColumn:`Clave`,keyLabelFallback:`Clave n.º {id}`,errorsByProvider:`Errores por proveedor`,recentErrors:`Errores recientes`,noErrors:`Sin errores`,recentCalls:`Llamadas recientes`,clientIp:`IP del cliente`,clientAgent:`Aplicación cliente`,requestedModelHint:`Se solicitó {model}, servido por respaldo`,attempts:`Intentos`,filterAll:`Todas`,filterCanceled:`Canceladas`,providerBreakdown:`Desglose por proveedor`,tokensPerSec:`Tok/s`,allProviders:`Todos los proveedores`,requestDetailTitle:`Solicitud #{id}`,failoverLadder:`Escalera de failover`,failoverLadderHint:`Cada salto que esta solicitud dio por la cadena de respaldo, en orden.`,noAttemptTrace:`No se registró ninguna traza de intentos para esta solicitud.`,keyOrdinal:`clave #{n}`,keyBadge:`Clave #{n}`,attemptTimingHint:`Desfase desde el inicio de la solicitud · duración del intento`,requestedModel:`Modelo solicitado`,ttft:`TTFT`,requestsByAgent:`Solicitudes por agente`,sortBy:`Ordenar por {column}`,sortHint:`La ordenación se aplica a las {count} filas cargadas`,cacheHitRate:`Tasa de aciertos de caché`,cacheSavedTokens:`{tokens} tokens ahorrados`,cacheHitRateHint:`{hits} aciertos frente a {misses} fallos desde el arranque del servidor · {requests} llamadas al proveedor evitadas`},logs:{title:`Registros`,description:`Registro del servidor en vivo. Las entradas nuevas van llegando mientras la página está abierta.`,pause:`Pausar`,resume:`Reanudar`,clear:`Borrar registros`,cleared:`Registro del servidor borrado`,levelFilter:`Niveles de registro`,levels:{debug:`Debug`,info:`Info`,warn:`Aviso`,error:`Error`},countsHint:`Los recuentos corresponden a todo el búfer de registro del servidor, no solo a las entradas que coinciden con estos filtros.`,searchPlaceholder:`Buscar en los mensajes del registro…`,jumpToLatest:`Ir a lo más reciente`,showMore:`Mostrar más`,showLess:`Mostrar menos`,buffered:`Mostrando {count} de hasta {max} entradas en el búfer`,emptyTitle:`Aún no hay entradas de registro`,emptyDescription:`Las entradas aparecen aquí a medida que el servidor las escribe. Amplía los filtros de nivel, proveedor o búsqueda si esperabas ver algo.`,noLevelsTitle:`Ningún nivel seleccionado`,noLevelsDescription:`Activa al menos un nivel para ver el registro.`,loadFailed:`No se pudo cargar el registro del servidor.`},playground:{title:`Entorno de pruebas`,description:`Envía una finalización de chat a través del enrutador y observa qué proveedor la atiende.`,autoModel:`Auto (cadena de reserva)`,fusionModel:`Fusión (síntesis multimodelo)`,selectModel:`Seleccionar modelo`,searchModels:`Buscar modelos…`,noModelsFound:`No se encontraron modelos`,send:`Enviar`,sending:`Enviando…`,clear:`Limpiar`,inputPlaceholder:`Escribe un mensaje… (⏎ para enviar, ⇧⏎ para nueva línea)`,emptyTitle:`Envía un mensaje para empezar.`,emptyDescription:`Usando {model}. Cambia de modelo en el selector de arriba.`,noModels:`Aún no hay modelos. Añade una clave API en la página Claves para llenar esta lista.`,copyReply:`Copiar respuesta`,fallback:`reserva`,fallbacks:`reservas`,fusionPanel:`Panel`,fusionJudge:`Juez`,fusionTrace:`{count} respuestas de modelos`,fusionFailed:`sin respuesta`,fusionJudgeSynth:`sintetizó la respuesta final`,errorPrefix:`Error:`,systemPromptLabel:`Prompt del sistema`,systemPromptPlaceholder:`Opcional. Se envía como mensaje del sistema antes de tu chat.`,showSettings:`Mostrar configuración`,hideSettings:`Ocultar configuración`,samplingHeading:`Muestreo`,samplingHelp:`Si están desactivados, se aplica el valor predeterminado del propio proveedor. Solo se envían los controles que actives.`,samplingDefault:`Predeterminado`,temperature:`Temperatura`,topP:`Top P`,maxTokens:`Tokens máximos`,errorTitle:`La solicitud falló`,attach:`Adjuntar archivos`,attachTooMany:`Puedes adjuntar hasta {count} archivos por mensaje.`,attachTooLarge:`{name} es demasiado grande. El límite es {max}.`,attachUnsupported:`{name} no es compatible. Adjunta imágenes (PNG, JPEG, WebP, GIF) o archivos de texto (TXT, MD, CSV, JSON, LOG).`,attachFailed:`No se pudo leer {name}.`,noVisionBadge:`Sin imágenes`,visionWarning:`{model} no acepta imágenes. Elige un modelo de visión o Auto.`,dictate:`Dictar`,dictationStop:`Detener grabación`,dictationTranscribing:`Transcribiendo…`,dictationUnavailable:`Añade proveedores de modelos de audio para poder usar el dictado.`,dictationModel:`Modelo de dictado`,dictationFailed:`La transcripción falló: {reason}`,artifactOpen:`Abrir vista previa`,artifactPreview:`Vista previa`,artifactCode:`Código`,artifactClose:`Cerrar vista previa`,artifactDownload:`Descargar`,artifactReload:`Recargar vista previa`,artifactHtml:`Página HTML`,artifactSvg:`Imagen SVG`,artifactLines:`líneas`,artifactResize:`Cambiar tamaño de la vista previa`},playgroundSessions:{heading:`Conversaciones`,newConversation:`Nueva conversación`,showSidebar:`Mostrar conversaciones`,hideSidebar:`Ocultar conversaciones`,empty:`Aún no hay conversaciones guardadas.`,untitled:`Conversación sin título`,rename:`Cambiar nombre`,renamePlaceholder:`Nombre de la conversación`,messageCount:`{count} mensajes`,justNow:`ahora mismo`,minutesAgo:`hace {count} min`,hoursAgo:`hace {count} h`,daysAgo:`hace {count} d`,loadFailed:`No se pudo abrir esa conversación.`,renameFailed:`No se pudo cambiar el nombre de esa conversación.`,deleteFailed:`No se pudo eliminar esa conversación.`,actions:`Acciones de la conversación`,newChat:`Nuevo chat`},embeddings:{title:`Modelos`,description:`Los embeddings solo conmutan dentro de una misma familia: el mismo modelo servido por otro proveedor. Los vectores de modelos distintos son incompatibles, por lo que el enrutador nunca cambia de modelo a tus espaldas.`,defaultBadge:`Predeterminado · auto`,makeDefault:`Establecer como predeterminado`,moveUp:`Subir`,moveDown:`Bajar`,usageToday:`{count} sol. hoy`,usageMonth:`{count} tok este mes`,autoDescription:`model: «auto» en POST /v1/embeddings enruta a la familia predeterminada. Nombrar una familia (o un id de modelo de proveedor) fija esa familia; los proveedores dentro de ella se prueban en orden.`,unsavedChanges:`Cambios sin guardar`,saveChanges:`Guardar cambios`,savingChanges:`Guardando…`,tokMax:`{tokens} tok máx.`,emptyTitle:`Aún no hay modelos de embeddings`,emptyDesc:`Las familias de embeddings aparecen aquí cuando añades una clave de proveedor compatible con embeddings.`,dragToReorder:`Arrastra para reordenar el proveedor`},fusion:{title:`Fusión`,description:`Un panel de modelos responde en paralelo y luego un juez sintetiza una respuesta más sólida. Úsala llamando a la API con el modelo «fusion».`,panelSource:`Origen del panel`,panelSourceHelp:`De dónde provienen los modelos del panel cuando una solicitud no especifica los suyos.`,mode:{auto:`Auto (cadena de reserva)`,autoHelp:`Elige un conjunto diverso de modelos de tu cadena de reserva, ordenados según tu estrategia de enrutamiento activa.`,explicit:`Panel explícito`,explicitHelp:`Usar siempre los modelos específicos que elijas a continuación.`},panelModels:`Modelos del panel`,selectedCount:`{count} de {max} seleccionados`,noModels:`Aún no hay modelos conectados. Añade una clave API y luego activa modelos en la cadena de reserva.`,panelSize:`Tamaño del panel`,panelSizeHelp:`Cuántos modelos diversos seleccionar automáticamente (1–{max}).`,judge:`Modelo juez`,judgeHelp:`El modelo que sintetiza las respuestas del panel en una sola. «Auto» usa tu mejor modelo disponible.`,judgeAuto:`Auto (mejor disponible)`,strategy:`Estrategia`,strategySynthesize:`Síntesis: combina el panel en una sola respuesta`,strategyBestOf:`Mejor respuesta: devuelve la respuesta más sólida (sin llamar al juez)`,strategySynthesizeShort:`Síntesis`,strategyBestOfShort:`Mejor respuesta`,exposePanel:`Exponer detalles del panel`,exposePanelHelp:`Adjunta la respuesta de cada modelo y los metadatos del juez en un campo x_fusion de la respuesta.`,howToUse:`Cómo usarlo`,howToUseHelp:`Envía una solicitud de chat normal con el modelo «fusion». Estos ajustes son los predeterminados; cualquier solicitud puede anularlos con un campo «fusion».`,unsavedChanges:`Cambios sin guardar`,save:`Guardar`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Premium`,description:`El catálogo de modelos en vivo, en todos tus dispositivos.`,loading:`Cargando…`,checkForUpdates:`Buscar actualizaciones`,syncing:`Sincronizando…`,catalogFeed:`Fuente del catálogo`,liveFeed:`Fuente en vivo`,monthlySnapshot:`Instantánea mensual`,lastChecked:`Última comprobación: {when}`,liveDescription:`Los nuevos modelos gratuitos, los cambios de cuota y las correcciones llegan aquí pocas horas después de publicarse. La aplicación comprueba automáticamente dos veces al día; no hay nada que hacer.`,snapshotDescription:`Nivel gratuito: el catálogo se actualiza desde una instantánea mensual, comprobada automáticamente dos veces al día. Premium cambia esto a la fuente en vivo, actualizada cada 2 o 3 días.`,lastSyncProblem:`Problema en la última sincronización: {error}`,license:`Licencia`,planAnnual:`Premium Anual`,planLifetime:`Premium de por vida`,expired:`Caducada`,inactive:`Inactiva`,lifetimeNote:`Licencia de por vida: nunca caduca.`,renewsOn:`Se renueva el {date}.`,willNotRenew:`No se renovará. Premium hasta el {date}; después, esta instalación vuelve al catálogo mensual gratuito.`,keyInactive:`Esta clave ya no está activa. La aplicación sigue funcionando con el catálogo mensual gratuito.`,manageSubscription:`Gestionar suscripción`,openingPortal:`Abriendo…`,removeKey:`Quitar la clave de este dispositivo`,manageHint:`«Gestionar suscripción» abre el portal de facturación de Stripe: cancelar, actualizar tu tarjeta o descargar facturas. Quitar la clave solo desactiva este dispositivo; tu compra permanece intacta.`,licenseKey:`Clave de licencia`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Activar`,activating:`Activando…`,keyHint:`Tu clave está en el correo de compra y en la página posterior al pago. ¿La perdiste?`,recoverKey:`Recupérala en el sitio web`,upsellTitle:`Pásate al directo por 19 $ al año`,upsellDescription:`Nuevos modelos gratuitos en cuanto existen, en lugar de 30 días después. Una clave, todos tus dispositivos. Cancela cuando quieras; el enrutador sigue siendo gratis para siempre.`,goPremium:`Hazte Premium`,bundled:`incluido`,planGeneric:`Premium`},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:`Algo salió mal`,boundaryDescription:`El panel encontró un error inesperado. Tus datos están a salvo. Inténtalo de nuevo o vuelve a la página de modelos.`,tryAgain:`Intentar de nuevo`,goHome:`Volver a modelos`},notFound:{title:`Página no encontrada`,description:`Esta página no existe o puede haberse movido.`},setup:{title:`Primeros pasos`,subtitle:`Tres pasos para enrutar tu primera solicitud.`,progress:`{done} de {total}`,step1Title:`Añade una clave de proveedor`,step1Desc:`Conecta al menos una cuenta de proveedor. Las claves gratuitas funcionan.`,step1Cta:`Añadir claves`,step2Title:`Envía una solicitud de prueba`,step2Desc:`Elige cualquier modelo en el Playground y saluda.`,step2Cta:`Abrir Playground`,step3Title:`Conecta tu aplicación`,step3Desc:`Usa tu clave API unificada con cualquier cliente compatible con OpenAI.`,copyKey:`Copiar clave API`,copyUrl:`Copiar URL base`,copiedKey:`Clave API copiada al portapapeles`,copiedUrl:`URL base copiada al portapapeles`},palette:{title:`Paleta de comandos`,placeholder:`Buscar páginas, modelos, acciones…`,empty:`Sin resultados`,groupPages:`Páginas`,groupActions:`Acciones`,groupModels:`Modelos`,toggleTheme:`Alternar modo oscuro`},validation:{required:`Obligatorio`,url:`Introduce una URL válida que empiece por http:// o https://`,email:`Introduce una dirección de correo válida`,passwordMin:`Al menos {min} caracteres`},agents:{title:`Agentes de programación`,description:`Conecta herramientas de programación a un único gateway de modelos gratuitos con configuración generada y respaldo seguro.`,apiKey:`Clave de API`,quickstartTitle:`Inicio rápido`,quickstart:`La vía más rápida: configura Claude Code desde el catálogo en vivo.`,currentKey:`Clave unificada actual:`,seenRecently:`Visto recientemente`,setupLabel:`Configuración automática`,setupHint:`Escribe por ti el archivo de configuración de esta herramienta, apuntando a esta pasarela.`,setupGuideHint:`Muestra los pasos de configuración de esta herramienta; no se escribe ningún archivo.`,manualLabel:`Conexión manual`,manualHint:`URL base y clave para introducir en los ajustes de la herramienta.`,endpoint:`Endpoint`,documentation:`Documentación`,descriptions:{claude:`El agente de terminal de Anthropic: planifica, edita archivos y ejecuta comandos en tu repositorio.`,codex:`El agente de terminal de OpenAI, que primero ejecuta la tarea en un entorno aislado local.`,cline:`Una extensión de VS Code que te pide aprobar cada edición y cada comando.`,continue:`Una extensión de VS Code y JetBrains con autocompletado en línea y chat mientras escribes.`,aider:`Un compañero de programación en la terminal que convierte cada cambio en su propio commit.`,opencode:`Un agente de terminal independiente del proveedor, con interfaz de texto a pantalla completa.`,goose:`El agente local de Block, ampliable con servidores MCP para ir más allá del código.`,qwen:`Una bifurcación de Gemini CLI ajustada a los modelos Qwen y a repositorios grandes.`,roo:`Una extensión de VS Code con modos intercambiables: arquitecto, programador, depurador.`,kilo:`Una extensión de VS Code que fusiona Roo y Cline, con un orquestador que reparte el trabajo.`,crush:`El agente de terminal de Charm, escrito en Go, con una sesión por proyecto.`,dsh:`El arnés de DeepSeek, que guarda cada proveedor como una ruta entre las que puedes cambiar.`,mimo:`El agente de terminal de Xiaomi, una bifurcación de OpenCode que acepta cualquier proveedor compatible con OpenAI.`,cursor:`El editor centrado en la IA; pasa por la nube de Cursor, así que necesita una URL pública.`,generic:`Cualquier otra herramienta que hable la API de OpenAI, configurada a mano con la URL base y la clave.`,atomcode:`El agente de terminal de AtomGit, escrito en Rust, que acepta cualquier endpoint compatible con OpenAI.`,openclaw:`Un asistente personal siempre activo que responde en WhatsApp, Telegram, Discord y más desde tu propia máquina.`,hermes:`El agente de Nous Research que se mejora a sí mismo, con memoria persistente y habilidades, en la terminal o en apps de chat.`,pi:`Un agente de terminal minimalista que moldeas con tus propias extensiones, habilidades y plantillas de prompts.`}},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:`Grupos del nivel gratuito ({count})`,poolsToggleBare:`Grupos del nivel gratuito`,summary:`{pools} grupos · {budget} tokens/mes contados una vez por grupo · {credits} basados en créditos · {unpublished} sin publicar`,pool:`Grupo`,models:`Modelos`,budget:`Presupuesto mensual`,kind:`Tipo`,kindDocumented:`Documentado`,kindCredits:`Créditos`,kindUnpublished:`Sin publicar`,remaining:`Restante`,resetAt:`Se restablece`,disabledModels:`({count} apagados)`,metricTokens:`tokens`,metricRequests:`solicitudes`,metricCredits:`créditos`,metricNeurons:`neuronas`,metricOther:`unidades`,empty:`No hay modelos habilitados con datos de presupuesto del nivel gratuito.`,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:`Cadenas de reserva`,description:`Cadenas con nombre, cada una invocable como auto:<name> en /v1/models.`,count:`{count} cadenas`,active:`Activa`,default:`Predeterminada`,activate:`Activar`,activateHint:`Hacer que la tabla de abajo edite esta cadena y que auto la use para enrutar`,deleteHint:`Eliminar esta cadena`,deleteConfirm:`¿Eliminar la cadena «{name}»?`,create:`Crear`,createPlaceholder:`Nombre de la cadena`,createFailed:`No se pudo crear la cadena.`,nameRules:`Hasta 20 caracteres: letras, dígitos, guiones y guiones bajos.`,startEmpty:`Empezar vacía`,startEmptyHint:`Crea la cadena sin modelos y mantén fuera los modelos nuevos del catálogo. Sin marcar, empieza como una copia de la cadena predeterminada.`,curated:`Curada`,curatedHint:`Los modelos nuevos del catálogo no se añaden a esta cadena automáticamente.`,renameHint:`Cambiar el nombre de esta cadena`,renameConfirm:`¿Cambiar el nombre de la cadena "{oldName}" a "{name}"? Los clientes que llamen a auto:{oldName} deben pasar a auto:{name}.`,renamePlaceholder:`Nuevo nombre de la cadena`,renameFailed:`No se pudo cambiar el nombre de la cadena.`},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:`رمز عبور جدید`,currentPasswordAutoComplete:`رمز عبور فعلی`,serverUnreachableBefore:`دسترسی به سرور امکان پذیر نیست. مطمئن شوید که backend در حال اجرا است (`,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`,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:`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:`از`,showAllModels:`نمایش تمام مدل های {count}`,showLess:`کمتر نشان دادن`,vision:`چشم انداز`,visionTitle:`ورودی تصویر را می پذیرد`,tools:`ابزار`,toolsTitle:`فراخوانی ابزار ساختاریافته را منتشر می کند، بنابراین برای درخواست های حاوی ابزار واجد شرایط است`,retired:`متوقف`,penalty:`- جریمه {value}`,obs:`{count} obs`,tokPerMonth:`{count} توک/ماه`,rpmLimit:`{count} دور در دقیقه`,rpdLimit:`{count} rpd`,noKey:`بدون کلید`,dragToReorder:`برای سفارش مجدد بکشید`,dragToReorderGroup:`برای سفارش مجدد مدل بکشید`,moveToRank:`پرش به رتبه`,providerCount:`ارائه دهندگان {count}`,servedBy:`ارائه شده توسط {providers}`,viewProviders:`ارائه دهندگان را مشاهده کنید`,backToModels:`بازگشت به مدل ها`,providersHeading:`ارائه دهندگانی که این مدل را ارائه می دهند`,codeSnippetHeading:`از این مدل استفاده کنید`,modelNotFound:`این مدل در دسترس نیست یا ارائه دهندگان پیکربندی شده ای ندارد.`,providerIdsHeading:`شناسه مدل ارائه دهنده`,providerIdsHint:`شناسه مدل یکپارچه را بفرستید تا در همه ارائه‌دهنده‌ها شکست بخورد، یا یک شناسه خاص ارائه‌دهنده را برای پین کردن یک ارائه‌دهنده ارسال کنید.`,copyModelName:`نام مدل را کپی کنید`,settingsHeading:`تنظیمات ارائه دهنده`,settingsHint:`ویرایش‌های محلی مدل‌های کاتالوگ در همگام‌سازی کاتالوگ نگهداری می‌شوند. مدل‌های کاتالوگ حذف‌شده تا زمانی که دوباره آنها را از طریق پیکربندی اضافه نکنید، حذف می‌شوند.`,catalogModel:`کاتالوگ`,customModel:`سفارشی`,discoveredModel:`کشف‌شده`,localOverride:`نادیده گرفتن محلی`,displayName:`نام نمایشی`,sizeLabel:`رده توانایی`,sizeLabelHint:`Frontier/Large/Medium/Small محور هوش را تعیین می‌کنند: ردهٔ بالاتر همیشه از ردهٔ پایین‌تر پیشی می‌گیرد و درون یک رده، رتبهٔ هوش همچنان امتیاز را جابه‌جا می‌کند. مدل بدون ردهٔ شناخته‌شده کمترین امتیاز را در این محور می‌گیرد، اما هوش تنها یکی از سه محور است — قابلیت اطمینان و سرعت بالا باز هم می‌توانند مسیر را برایش ببرند.`,sizeLabelNone:`هیچ‌کدام (کمترین امتیاز هوش)`,contextWindow:`زمینه`,inFallback:`در زنجیر`,saveModelSettings:`تنظیمات مدل را ذخیره کنید`,aggregateBudget:`{count}/ماه`,aggregateBudgetTitle:`مجموع توکن های رایگان در هر ماه در ارائه دهندگان این مدل`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`نرخ محدود - بدون بودجه رمز ماهانه ثابت`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`میزان مصرف محدودیت نرخ در بازهٔ زمانی (مصرف‌شده / حد) برای ارائه‌دهنده با بیشترین ظرفیت باقی‌مانده`,splitOut:`این کپی را ادغام نکنید`,splitOutHint:`به جای ادغام آن در مدل یکپارچه، به کپی این ارائه دهنده ورودی جداگانه خود بدهید. می توانید آن را از صفحه خود کپی ادغام کنید.`,splitUndo:`ادغام مجدد`,splitUndoHint:`این کپی جدا از مدل یکپارچه آن نگهداری می شود. آن را دوباره ادغام کنید تا دوباره در همه ارائه دهندگانش شکست بخورد.`,splitBadge:`جدا نگهداری می شود`,noData:`بدون داده`,noDataTitle:`هنوز درخواستی ثبت نشده است - قابلیت اطمینان و سرعت برای این ارائه دهنده اندازه گیری نشده است.`,bestOfN:`بهترین های {count}`,perProviderScores:`امتیازات هر ارائه دهنده: {list}`,columnModel:`مدل`,columnOn:`روشن`,noModelsBefore:`هیچ مدلی موجود نیست کلیدهای API را روی آن اضافه کنید`,keysPageLink:`صفحه کلیدها`,noModelsAfter:`اول`,hiddenNoKeys:`پنهان (بدون کلید): {platforms}`,searchPlaceholder:`جستجوی مدل ها یا ارائه دهندگان…`,clearSearch:`جستجو را پاک کنید`,ctxAny:`هر زمینه ای`,ctxBadge:`{size} ctx`,ctxTitle:`پنجره زمینه`,copyModelId:`شناسه مدل را کپی کنید`,showingCount:`{shown} از مدل های {total}`,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:`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:`کاوش مدل‌های اندازه‌گیری‌نشده`,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:`انتخاب کلید`,keySelectionAuto:`خودکار`,keySelectionLeastRemaining:`کمترین باقی‌مانده`,keySelectionHint:`نحوهٔ انتخاب میان چند کلید یک ارائه‌دهنده. خودکار چرخش فعلی را حفظ می‌کند؛ کمترین باقی‌مانده کلیدها را بر پایهٔ سهمیهٔ مشاهده‌شده مرتب می‌کند و ابتدا کلیدی را می‌آزماید که بیشترین سهمیه برایش مانده است.`,cooldownCeiling:`بیشینهٔ خنک‌سازی خودکار`,cooldownCeilingHint:`محدود می‌کند که حدس‌های خود مسیریاب تا چه مدت می‌توانند یک جفت کلید و مدل ناموفق را کنار بگذارند. نردبان معمولاً ۲ دقیقه، ۱۰ دقیقه، ۱ ساعت، ۲۴ ساعت بالا می‌رود و خطاهای اعتبار یا سطح یک روز کنار می‌گذارند. زمان‌های تلاش مجددی که ارائه‌دهنده اعلام می‌کند هرگز کوتاه نمی‌شوند.`,cooldownCeilingDefault:`پیش‌فرض (تا ۲۴ ساعت)`,cooldownCeiling10m:`۱۰ دقیقه`,cooldownCeiling1h:`۱ ساعت`,cooldownCeiling6h:`۶ ساعت`,moreOptions:`گزینه‌های بیشتر`,peakActive:`(ساعات اوج)`,peakActiveHint:`تنظیم ساعات اوج هم‌اکنون فعال است، بنابراین این‌ها وزن‌های خود پیش‌تنظیم نیستند: ۶۰٪ از وزن سرعت به قابلیت اطمینان منتقل شده است.`,peakAdjust:`تنظیم ساعات اوج`,peakAdjustHint:`به‌طور پیش‌فرض خاموش. در بازهٔ زیر ۶۰٪ از وزن سرعت به قابلیت اطمینان منتقل می‌شود — رله‌های رایگان در آن ساعت‌ها شلوغ‌ترند، پس قابلیت اطمینان موفقیت را بهتر از توان خام پیش‌بینی می‌کند. «سریع‌ترین» و «قابل‌اطمینان‌ترین» دست‌نخورده می‌مانند.`,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:`Reset cooldown`,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\\" یا یک خانواده از برگه Embeddings","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 را ارسال می کنند - هر کدام را به خودکار نقشه برداری کنید (روتر یک مدل رایگان را انتخاب می کند) یا یک مدل خاص را پین کنید.","anthropicBaseUrl":"پایه URL","anthropicAuth":"هدر تأیید","anthropicAuto":"روتر خودکار بهترین مدل را انتخاب می کند","anthropicSave":"ذخیره نقشه","anthropicSaved":"ذخیره شد","anthropicNote":"مشتریان Anthropic نام مدل Claude داخلی خود را حفظ می کنند. نقشه برداری بالا تعیین می کند که هر کدام چگونه به استخر شما راه می یابند.","familyDefault":"پیش فرض","familyOpus":"اپوس","familySonnet":"غزل","familyHaiku":"هایکو","selectPlatform":"ارائه دهنده ای را انتخاب کنید","addKey":"کلید اضافه کنید","keyAdded":"کلید اضافه شد","endpointKeysShareModels":"کلیدهای یک نقطه پایانی، مدل‌های آن را به اشتراک می‌گذارند.","export":"صادرات","exportAll":"همه کلیدها","exportHealthy":"فقط سالم","exportKeys":"کلیدهای API را صادر کنید","exportFormat":"قالب","exportHealthyOnly":"فقط کلیدهای سالم","exportHealthyOnlyDesc":"کلیدهایی را که در حال حاضر در بررسی های بهداشتی ناموفق هستند حذف کنید","exportWillExport":"صادر خواهد کرد","exportKey":"کلید","exportKeys plural":"کلیدها","exporting":"در حال صادرات…","exportDownload":"دانلود کنید","exportSuccess":"کلیدهای {count} صادر شد","adding":"در حال افزودن…","selectProvider":"انتخاب ارائه دهنده…","accountId":"شناسه حساب","label":"برچسب بزنید","noKeyNeeded":"(بدون نیاز به کلید)","outboundProxy":"پراکسی خروجی","outboundProxyDescription":"درخواست‌های LLM خروجی را از طریق یک پروکسی مسیریابی کنید. از SOCKS5، HTTP و HTTPS پشتیبانی می کند.","proxyUrl":"پروکسی URL","saveProxy":"ذخیره کنید","savingProxy":"در حال ذخیره…","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، مدل‌های گپ، جاسازی، تصویر یا صدا را نقطه‌ای کنید. کلید 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":"حداکثر ۳ درخواست آزمایشی ارسال شود؟","probeCapabilities":"استدلال: {reasoning} · ابزارها: {tools}","probeCapYes":"بله","probeCapNo":"خیر","probeCapUnknown":"نامشخص","probeSuccess":"{model} در {latency}ms آزمایش شد","probeFailed":"آزمایش ناموفق بود: {reason}","discoverTitle":"مدل‌های این نقطه پایانی","discoverHint":"مدل‌های موردنظر برای ثبت را انتخاب کنید. مدل‌های افزوده‌شده قفل می‌مانند.","discoverEmpty":"این نقطه پایانی هیچ مدلی برنگرداند.","discoverAlreadyAdded":"افزوده شد","discoverSelectAll":"انتخاب همه","modelsAdded":"{count} مدل افزوده شد","getApiKey":"کلید API را دریافت کنید","deleteKeyConfirm":"این کلید حذف شود؟ این قابل واگرد نیست.","checkAll":"همه را بررسی کنید","checking":"در حال بررسی…","editLabel":"ویرایش برچسب","saveLabel":"ذخیره برچسب","unifiedKeyDescBefore":"از این به عنوان OpenAI خود استفاده کنید","unifiedKeyDescAfter":"; درخواست های این پروکسی را احراز هویت می کند.","serverUnreachableBefore":"دسترسی به سرور موجود نیست","serverUnreachableAfter":". مطمئن شوید که Backend در حال اجرا است. npm run dev هر دو شروع می شود و گزارش های سرور در زیر پیشوند سرور چاپ می شوند.","paneProviderKey":"کلید ارائه دهنده","paneImportFile":"فایل وارد کنید","paneCustomEndpoint":"نقطه پایان سفارشی","platform":"پلت فرم","hideAdded":"پنهان کردن ارائه‌دهندگان افزوده‌شده","apiToken":"رمز API","keyOptionalPlaceholder":"اختیاری","bearerTokenPlaceholder":"نشان حامل","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":"حالت باز روی loopback هرگز ترافیک LAN احراز هویت نشده را نمی پذیرد.","ollamaOff":"خاموش","ollamaLoopback":"باز روی loopback","ollamaKeyRequired":"کلید API لازم است","claudeAliases":"نام های مستعار کشف Claude Code","claudeAliasesHint":"نام های مستعار claude/<model> را در دسترس قرار دهید تا انتخابگر مدل دروازه بتواند کاتالوگ را فهرست کند.","mcpServer":"سرور MCP","mcpServerHint":"نقطهٔ پایانی /mcp را برای کلاینت‌های عامل باز می‌کند. نصب‌های جدید خاموش شروع می‌شوند.","urlTokensTitle":"توکن های URL قابل لغو","urlTokensDesc":"فقط برای کلاینت های بدون هدر. توکن های URL ممکن است به تاریخچه و لاگ ها نشت کنند، پس وقتی دیگر لازم نیستند آنها را لغو کنید.","urlTokenLabel":"برچسب توکن","createUrlToken":"ایجاد توکن","urlTokenOnce":"این توکن را همین حالا کپی کنید. دوباره نمایش داده نخواهد شد.","revoked":"لغو شده","revoke":"لغو","modelScope":"محدوده مدل‌ها","modelScopeDesc":"این کلید را به شناسه‌های مدل مشخص محدود کنید. مسیریاب برای هر مدل دیگری از این کلید صرف‌نظر می‌کند.","modelScopeAdd":"شناسه مدل را وارد کنید و Enter را بزنید","modelScopeEmpty":"محدوده‌ای تنظیم نشده — این کلید به همه مدل‌های ارائه‌دهنده‌اش خدمت می‌دهد.","modelScopeClear":"پاک کردن محدوده","modelScopeBadgeOne":"محدود · 1 مدل","modelScopeBadgeOther":"محدود · {count} مدل","modelPicker":{"title":"این کلید به کدام مدل‌ها سرویس بدهد؟","hint":"کلید {provider} شما اضافه شد و در حال حاضر به همه مدل‌های زیر سرویس می‌دهد. تیک هر مدلی را که این کلید اجازه استفاده از آن را ندارد بردارید — مسیریاب برای آن مدل‌ها از این کلید صرف‌نظر می‌کند.","count":"{selected} از {total} انتخاب شد","allNote":"همه انتخاب شده‌اند — چیزی ذخیره نمی‌شود و مدل‌هایی که بعداً به کاتالوگ اضافه شوند نیز از این کلید استفاده می‌کنند.","subsetNote":"این کلید فقط به مدل‌های انتخاب‌شده محدود می‌شود. بعداً می‌توانید این را از ردیف کلید تغییر دهید.","skip":"الان نه","scopedOne":"کلید به 1 مدل محدود شد","scopedOther":"کلید به {count} مدل محدود شد","allSaved":"Key serves every catalog model"},"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} ناموفق.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"ویرایش کلید","editPlatformLocked":"تغییر ارائه‌دهنده و نقطه پایانی پس از ساخت ممکن نیست.","editCredentialHint":"برای حفظ کلید فعلی خالی بگذارید.","editCredentialPartsRequired":"هم شناسه حساب و هم توکن API را وارد کنید.","editModels":"ویرایش مدل‌ها","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":"افزودن مدل سفارشی","modelId":"شناسه مدل","modelIdRequired":"شناسه مدل الزامی است","modelDisplayName":"نام نمایشی","modelContextWindow":"پنجره زمینه (توکن‌ها)","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} توکن در این ماه","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:`سالم`,rateLimited:`با نرخ محدود`,invalid:`نامعتبر`,error:`خطا`,unchecked:`بدون علامت`},analytics:{title:`تجزیه و تحلیل`,description:`حجم درخواست، تأخیر، استفاده از رمز و خرابی.`,range24h:`24 ساعت`,range7d:`7d`,range30d:`30 روز`,range90d:`90 روز`,requests:`درخواست ها`,successRate:`میزان موفقیت`,inputTokens:`توکن های ورودی`,outputTokens:`توکن های خروجی`,avgLatency:`تأخیر متوسط`,p95Latency:`تأخیر P95`,avgTtft:`میانگین TTFT`,estSavings:`برآورد پس انداز`,requestsByProvider:`درخواست های ارائه دهنده`,avgLatencyByProvider:`میانگین تأخیر توسط ارائه دهنده`,ttftByProvider:`زمان اولین توکن توسط ارائه دهنده`,ttftEmpty:`هنوز زمانی برای اولین توکن ثبت نشده است.`,requestsOverTime:`درخواست ها در طول زمان`,tokensOverTime:`توکن ها در طول زمان`,byModel:`بر اساس مدل`,byPlatform:`توسط پلت فرم`,errors:`خطاها`,errorDistribution:`توزیع خطا`,pinnedRequests:`درخواست های پین شده`,pinnedHonored:`مفتخر شد`,fallbackAttempts:`تلاش های برگشتی`,savingsHint:`شما در واقع {actual} دلار را نسبت به آخرین {range} پس انداز کرده اید. این همان چیزی است که همان توکن‌ها در APIهای پولی با قیمت هر مدل هزینه خواهند داشت. عدد نشان داده شده سرعت شما را از آخرین {span} داده تا 30 روز کامل نشان می دهد.`,savingsHintExact:`شما در واقع {actual} دلار را نسبت به آخرین {range} پس انداز کرده اید. این همان چیزی است که همان توکن‌ها در APIهای پولی با قیمت هر مدل هزینه خواهند داشت. عدد نشان داده شده کل 30 روزه واقعی شماست.`,requestsHintPinned:`{pinned} از این درخواست ها یک مدل خاص را با نام پین کرد. {honored} توسط مدل پین شده ارائه شد. {failed} در مورد دیگری شکست خورد. بقیه به صورت خودکار مسیریابی شدند.`,requestsHintAuto:`همه درخواست‌ها در این دوره به‌طور خودکار مسیریابی شدند. هیچ مشتری مدل خاصی را با نام پین نکرد.`,requestsHintTypes:`چت {chat} و درخواست های جاسازی {embedding}.`,rangeLabel24h:`24 ساعت`,rangeLabel7d:`7 روز`,rangeLabel30d:`30 روز`,rangeLabel90d:`90 روز`,spanDays:`روز {count}`,spanHours:`ساعت {count}`,latencyMs:`تأخیر (ms)`,latency:`تأخیر`,pinned:`پین شده`,inTokens:`در نشانه ها`,outTokens:`توکن ها را خارج کنید`,saved:`ذخیره شد`,message:`پیام`,time:`زمان`,perModelBreakdown:`تفکیک هر مدل`,usageByKey:`استفاده از طریق کلید`,keyColumn:`کلید`,keyLabelFallback:`کلید #{id}`,errorsByProvider:`خطاهای ارائه دهنده`,recentErrors:`خطاهای اخیر`,noErrors:`بدون خطا`,recentCalls:`تماس های اخیر`,clientIp:`آی پی مشتری`,clientAgent:`برنامه مشتری`,requestedModelHint:`درخواست {model}، ارائه شده توسط بازگشت`,attempts:`تلاش ها`,filterAll:`همه`,filterCanceled:`لغوشده`,providerBreakdown:`تفکیک هر ارائه دهنده`,tokensPerSec:`Tok/s`,allProviders:`همه ارائه دهندگان`,requestDetailTitle:`درخواست #{id}`,failoverLadder:`نردبان شکست`,failoverLadderHint:`هر پرش این درخواست به ترتیب از طریق زنجیره بازگشتی انجام می شود.`,noAttemptTrace:`هیچ ردی از تلاش برای این درخواست ثبت نشد.`,keyOrdinal:`کلید #{n}`,keyBadge:`کلید #{n}`,attemptTimingHint:`شروع افست از شروع درخواست · مدت زمان تلاش`,requestedModel:`مدل درخواستی`,ttft:`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:`پیامی را تایپ کنید… (⏎ برای ارسال، ⇧⏎ برای خط جدید)`,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:`پیش فرض · خودکار`,makeDefault:`پیش فرض را انتخاب کنید`,moveUp:`حرکت به بالا`,moveDown:`به سمت پایین حرکت کنید`,usageToday:`{count} req امروز`,usageMonth:`{count} توک این ماه`,autoDescription:`model: "auto" در POST /v1/embeddings به خانواده پیش‌فرض مسیر می‌دهد. نامگذاری یک خانواده (یا شناسه مدل ارائه دهنده) آن خانواده را پین می کند. ارائه دهندگان داخل آن به ترتیب امتحان می شوند.`,unsavedChanges:`تغییرات ذخیره نشده`,saveChanges:`ذخیره تغییرات`,savingChanges:`در حال ذخیره…`,tokMax:`{tokens} توک حداکثر`,emptyTitle:`هنوز مدل تعبیه نشده است`,emptyDesc:`هنگامی که کلید ارائه دهنده ای را اضافه کنید که از جاسازی ها پشتیبانی می کند، خانواده های جاسازی در اینجا ظاهر می شوند.`,dragToReorder:`برای سفارش دادن مجدد ارائه دهنده را بکشید`},fusion:{title:`فیوژن`,description:`گروهی از مدل ها به طور موازی پاسخ می دهند، سپس یک قاضی یک پاسخ قوی تر را ترکیب می کند. با فراخوانی API با مدل "fusion" از آن استفاده کنید.`,panelSource:`منبع پنل`,panelSourceHelp:`وقتی یک درخواست درخواست خود را مشخص نمی کند، مدل های پانل از کجا می آیند.`,mode:{auto:`خودکار (زنجیره برگشتی)`,autoHelp:`مجموعه متنوعی از مدل‌ها را از زنجیره بازگشتی خود انتخاب کنید که براساس استراتژی مسیریابی فعال شما رتبه‌بندی می‌شوند.`,explicit:`پانل صریح`,explicitHelp:`همیشه از مدل های خاصی که در زیر انتخاب می کنید استفاده کنید.`},panelModels:`مدل های پنل`,selectedCount:`{count} از {max} انتخاب شد`,noModels:`هنوز هیچ مدلی متصل نشده است. یک کلید API اضافه کنید، سپس مدل‌ها را در Fallback Chain فعال کنید.`,panelSize:`اندازه پانل`,panelSizeHelp:`چند مدل متنوع برای انتخاب خودکار (1–{max}).`,judge:`مدل داوری`,judgeHelp:`مدلی که پاسخ های پانل را در یک ترکیب می کند. Auto از مدل موجود با رتبه برتر شما استفاده می کند.`,judgeAuto:`خودکار (رتبه برتر موجود)`,strategy:`استراتژی`,strategySynthesize:`ترکیب - پانل را در یک پاسخ ترکیب کنید`,strategyBestOf:`بهترین ها - پاسخ قوی ترین پاسخ (بدون تماس قاضی)`,strategySynthesizeShort:`سنتز کنید`,strategyBestOfShort:`بهترین از`,exposePanel:`نمایش جزئیات پانل`,exposePanelHelp:`پاسخ هر مدل و ابرداده قضاوت را در قسمت x_fusion در پاسخ ضمیمه کنید.`,howToUse:`نحوه استفاده`,howToUseHelp:`یک درخواست چت معمولی با مدل "fusion" ارسال کنید. این تنظیمات پیش فرض هستند. هر درخواستی می تواند آنها را با یک فیلد "fusion" لغو کند.`,unsavedChanges:`تغییرات ذخیره نشده`,save:`ذخیره کنید`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`حق بیمه`,description:`کاتالوگ مدل زنده، در هر دستگاه.`,loading:`در حال بارگیری…`,checkForUpdates:`به روز رسانی را بررسی کنید`,syncing:`در حال همگام سازی…`,catalogFeed:`خوراک کاتالوگ`,liveFeed:`فید زنده`,monthlySnapshot:`عکس فوری ماهانه`,lastChecked:`آخرین بررسی: {when}`,liveDescription:`مدل‌های رایگان جدید، تغییرات سهمیه‌ها، و رفع مشکلات عجیب و غریب، ظرف چند ساعت پس از ارسال در اینجا فرود می‌آیند. برنامه به طور خودکار دو بار در روز چک می کند. کاری برای انجام دادن`,snapshotDescription:`ردیف رایگان: کاتالوگ از یک عکس فوری ماهانه، به طور خودکار دو بار در روز بررسی می شود. Premium این را به فید زنده تغییر می‌دهد که هر ۲ تا ۳ روز یک‌بار به‌روزرسانی می‌شود.`,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:`از کلید یکپارچه API خود با هر کلاینت سازگار با OpenAI استفاده کنید.`,copyKey:`کلید API را کپی کنید`,copyUrl:`کپی پایه URL`,copiedKey:`کلید API در کلیپ بورد کپی شد`,copiedUrl:`پایه URL در کلیپ بورد کپی شد`},palette:{title:`پالت فرمان`,placeholder:`جستجوی صفحات، مدل‌ها، اقدامات…`,empty:`هیچ نتیجه ای وجود ندارد`,groupPages:`صفحات`,groupActions:`اقدامات`,groupModels:`مدل ها`,toggleTheme:`حالت تاریک را تغییر دهید`},validation:{required:`مورد نیاز`,url:`یک URL معتبر وارد کنید که با http:// یا https:// شروع می شود`,email:`یک آدرس ایمیل معتبر وارد کنید`,passwordMin:`حداقل کاراکتر {min}`},agents:{title:`عامل های کدنویسی`,description:`ابزارهای کدنویسی را با پیکربندی تولیدشده و دارای پشتیبان گیری امن به یک دروازه مدل های رایگان متصل کنید.`,apiKey:`کلید API`,quickstartTitle:`شروع سریع`,quickstart:`سریع ترین راه: Claude Code را از کاتالوگ زنده پیکربندی کنید.`,currentKey:`کلید یکپارچه فعلی:`,seenRecently:`به تازگی دیده شده`,setupLabel:`راه‌اندازی خودکار`,setupHint:`فایل پیکربندی این ابزار را برای شما می‌نویسد و به این دروازه اشاره می‌کند.`,setupGuideHint:`مراحل راه‌اندازی این ابزار را نمایش می‌دهد؛ هیچ فایلی نوشته نمی‌شود.`,manualLabel:`اتصال دستی`,manualHint:`نشانی پایه و کلید برای وارد کردن در تنظیمات خودِ ابزار.`,endpoint:`نقطه پایانی`,documentation:`مستندات`,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:`دستیار شخصی همیشه‌فعالی که از روی دستگاه خودتان در WhatsApp، Telegram، Discord و موارد دیگر پاسخ می‌دهد.`,hermes:`عامل خودبهبود Nous Research با حافظهٔ ماندگار و مهارت‌ها، در ترمینال یا در اپ‌های چت.`,pi:`یک عامل مینیمال ترمینال که با افزونه‌ها، مهارت‌ها و قالب‌های پرامپت خودتان شکلش می‌دهید.`}},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:`تغییر نام این زنجیره`,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};