@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:`Modele`,playground:`Plac zabaw`,keys:`Klucze`,analytics:`Analityka`,premium:`Premium`,upgrade:`Uaktualnij`,settings:`Ustawienia`,signOut:`Wyloguj się`,openMenu:`Otwórz menu nawigacyjne`,switchLight:`Przełącz na jasny motyw`,switchDark:`Przełącz na ciemny motyw`,switchToChinese:`Przełącz na język chiński`,switchToEnglish:`Przełącz na angielski`,modelsMenu:`Przeglądaj typy modeli`,agents:`Agenci`,logs:`Logi`,analyticsMenu:`Strony analityki`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Utwórz swoje konto`,signIn:`Zaloguj się`,email:`E-mail`,password:`Hasło`,emailPlaceholder:`ty@example.com`,passwordPlaceholderSetup:`co najmniej 8 znaków`,passwordPlaceholderLogin:`Twoje hasło`,setupDescription:`Ustaw adres e-mail i hasło, które będą chronić ten pulpit nawigacyjny.`,loginDescription:`Zaloguj się, aby zarządzać kluczami, routingiem i analizami.`,createAccount:`Utwórz konto`,creating:`Tworzenie…`,signingIn:`Logowanie…`,loading:`Ładowanie…`,newPasswordAutoComplete:`nowe-hasło`,currentPasswordAutoComplete:`aktualne-hasło`,serverUnreachableBefore:`Nie można połączyć się z serwerem. Upewnij się, że backend działa (`,serverUnreachableAfter:`).`,setupCode:`Kod konfiguracyjny`,setupCodePlaceholder:`kod z logów serwera`,setupCodeHint:`Konfiguracja z innego urządzenia wymaga jednorazowego kodu wydrukowanego w logach serwera przy uruchomieniu.`,changePassword:`Zmień hasło`,changeEmail:`Zmień e-mail`,forgotPassword:`Nie pamiętasz hasła?`,currentPassword:`Obecne hasło`,newPassword:`Nowe hasło`,newEmail:`Nowy e-mail`,resetCode:`Kod resetowania`,resetCodePlaceholder:`kod z logów serwera`,resetCodeHint:`Kod znajduje się w logu serwera. Nigdy nie jest wysyłany e-mailem.`,forgotPasswordDescription:`Kliknij przycisk poniżej, aby wygenerować kod resetowania. Kod jest zapisywany w logu serwera i nigdy nie jest wysyłany e-mailem. Wpisz go tutaj, aby ustawić nowe hasło.`,requestResetCode:`Wyślij kod`,requestingResetCode:`Wysyłanie…`,resetPassword:`Zresetuj hasło`,resettingPassword:`Resetowanie…`,changingPassword:`Zmienianie…`,changingEmail:`Zmienianie…`,backToLogin:`Powrót do logowania`,passwordChanged:`Hasło zostało zmienione.`,emailChanged:`E-mail został zmieniony.`,passwordReset:`Hasło zresetowane. Zaloguj się ponownie.`,resetCodeDockerHint:`Serwer działa w kontenerze Docker? Kod znajduje się w logu kontenera: docker logs <container>.`,desktopSessionFailed:`Panel nie mógł zalogować się do lokalnego serwera. Zamknij SRouter i otwórz go ponownie.`},common:{save:`Zapisz`,saving:`Zapisuję…`,cancel:`Anuluj`,discard:`Odrzuć`,delete:`Usuń`,confirm:`Potwierdź`,copy:`Kopiuj`,copied:`Skopiowano`,copyFailed:`Nie udało się skopiować — zaznacz tekst i skopiuj ręcznie`,show:`Pokaż`,hide:`Ukryj`,apply:`Zastosuj`,applied:`Zastosowano`,applying:`Stosowanie…`,active:`Aktywny`,inactive:`Nieaktywny`,never:`nigdy`,loading:`Ładowanie…`,error:`Błąd`,noData:`Brak danych`,unsavedChanges:`Niezapisane zmiany`,saveChanges:`Zapisz zmiany`,remove:`Usuń`,unknownError:`Nieznany błąd`,model:`Modelka`,provider:`Dostawca`,success:`Sukces`,failures:`Awarie`,dismiss:`Odrzuć`,status:`Stan`},settings:{title:`Ustawienia`,language:`Język`,theme:`Motyw`,themeSystem:`Systemowy`,themeLight:`Jasny`,themeDark:`Ciemny`,searchLanguage:`Szukaj języków…`,noLanguages:`Nie znaleziono języków`,sections:`Sekcje ustawień`,sectionGeneral:`Ogólne`,sectionCompression:`Kompresja`,sectionAdvanced:`Zaawansowane`,sectionPreview:`Podgląd`,generalDescription:`Język i wygląd tego panelu.`,advancedDescription:`Progi i zabezpieczenia potoku kompresji.`,compressionTitle:`Kompresja promptów`,compressionDescription:`Zmniejszaj rozmiar żądań przed routingiem, zachowując kod, błędy, ścieżki, liczby i definicje narzędzi.`,compressionHelp:`Przepisuje każde żądanie przed wysłaniem do dostawcy, aby zużywało mniej tokenów. Kod, błędy, ścieżki plików i liczby są chronione, a każde przepisanie, które je uszkadza, jest odrzucane.`,compressionMode:`Tryb`,compressionModeHelp:`„Wyłączona” wysyła żądania bez zmian. „Bezstratna” usuwa tylko powielony i zbędny tekst. „Standardowa” dodatkowo skraca wyjście narzędzi. „Agresywna” zagęszcza też starsze tury rozmowy.`,compressionOff:`Wyłączona`,compressionLossless:`Bezstratna`,compressionStandard:`Standardowa`,compressionAggressive:`Agresywna`,compressionLossy:`Stratna`,compressionEngines:`Silniki`,compressionEnginesHelp:`Każdy silnik to jeden krok przepisywania. Tryb decyduje, które silniki działają; silnik wyłączony tutaj nie zadziała w żadnym trybie.`,engineDedup:`Powtarzające się bloki`,engineDedupHelp:`Zastępuje blok tekstu, który pojawił się już wcześniej w rozmowie, krótkim odwołaniem do niego.`,engineLite:`Czyszczenie białych znaków`,engineLiteHelp:`Usuwa spacje na końcach wierszy, scala powtórzone puste wiersze i odrzuca powielone wiadomości systemowe.`,engineReadLifecycle:`Nieaktualne odczyty plików`,engineReadLifecycleHelp:`Zastępuje wcześniejszy odczyt pliku notatką, gdy ten sam plik zostanie później ponownie odczytany lub zmieniony.`,engineToolfilter:`Filtr wyjścia narzędzi`,engineToolfilterHelp:`Skraca wyjście poleceń i narzędzi, takich jak budowanie, testy czy instalacje. Wiersze z błędami i śladami stosu zawsze zostają zachowane.`,engineJsoncompact:`Tabele JSON`,engineJsoncompactHelp:`Ponownie koduje długie tablice JSON o tych samych polach jako zwartą tabelę. Jest to odwracalne, więc nic nie ginie.`,engineRelevance:`Filtr trafności`,engineRelevanceHelp:`Odrzuca zdania najmniej związane z ostatnią wiadomością, gdy wiadomość przekroczy swój limit rozmiaru.`,engineAging:`Starsze tury`,engineAgingHelp:`Zagęszcza tury starsze niż kilka ostatnich w krótkie podsumowanie zachowujące ścieżki, błędy i decyzje.`,engineHardBudget:`Pułap tokenów`,engineHardBudgetHelp:`Usuwa najmniej wartościowe wiersze, aż żądanie zmieści się w docelowej liczbie tokenów.`,compressionAutoTrigger:`Uruchamiaj automatycznie powyżej szacowanej liczby tokenów`,compressionAutoTriggerHelp:`Żądania szacowane powyżej tej liczby tokenów automatycznie przechodzą na tryb agresywny. Pozostaw puste, aby wyłączyć.`,compressionPrefixFreeze:`Zamrażaj powtarzające się prefiksy promptów`,compressionPrefixFreezeHelp:`Pozostawia prompt systemowy bez zmian, gdy ten sam tekst pojawi się trzykrotnie, aby buforowanie promptów po stronie dostawcy nadal działało.`,compressionTrustProjectFilters:`Ufaj plikom filtrów projektu`,compressionTrustProjectFiltersHelp:`Wczytuje także filtry wyjścia narzędzi z katalogu roboczego. Domyślnie wyłączone, ponieważ repozytorium mogłoby w ten sposób ukrywać wyjście przed modelem.`,compressionStats:`Zaoszczędzony rozmiar`,compressionEstimatedTokensSaved:`Szacowane zaoszczędzone tokeny`,compressionPreview:`Podgląd na żywo`,compressionPreviewDescription:`Prześlij treść żądania przez potok, aby zobaczyć, co otrzymałby dostawca.`,compressionPreviewPlaceholder:`Wklej JSON żądania lub zwykły tekst`,compressionRunPreview:`Uruchom podgląd`,updatesTitle:`Aktualizacje`,checkForUpdates:`Sprawdź aktualizacje`,lastChecked:`Ostatnio sprawdzane: {when}`,currentVersion:`Bieżąca kompilacja:`,updateAvailable:`Dostępna aktualizacja`,changelog:`Co się zmieniło`,upToDate:`Aktualne`,buildAhead:`Ta kompilacja wyprzedza oficjalną gałąź main.`,buildDiverged:`Ta kompilacja odbiega od oficjalnej gałęzi main.`,buildUnknown:`Tej niestandardowej kompilacji nie można porównać z oficjalną gałęzią main.`,notGitInstall:`Ta instalacja nie zawiera informacji o commicie.`,checkFailed:`Nie udało się sprawdzić dostępności aktualizacji.`,contactsGithub:`Sprawdzanie jest uruchamiane ręcznie i nawiązuje połączenie z GitHubem.`,autoUpdateCheck:`Automatyczne sprawdzanie aktualizacji`,autoUpdateCheckHelp:`Raz dziennie sprawdza w serwisie GitHub, czy jest nowe wydanie, i wyświetla przypomnienie. Domyślnie wyłączone.`,openReleases:`Otwórz wydania w GitHubie`,restartAfterUpdate:`Uruchom ponownie SRouter po zakończeniu kompilacji.`,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:`Modele`,chatModelsTab:`Modele czatu`,fusionTab:`Fuzja`,embeddingsTab:`Osadzenia`,imageTab:`Obraz`,videoTab:`Video`,audioTab:`Dźwięk`,imageDesc:`Modele generowania tekstu na obraz.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Modele zamiany tekstu na mowę i mowy na tekst.`,mediaHint:`Generuj przez`,mediaEmpty:`Nie ma jeszcze żadnych modeli. Synchronizują się z katalogiem.`,ttsHeading:`Tekst na mowę`,sttHeading:`Mowa na tekst`,sttHint:`Transkrypcja przez`,sttEmpty:`Nie ma jeszcze modeli zamiany mowy na tekst. Synchronizują się z katalogiem.`,newBadge:`Nowy`,monthlyTokenBudget:`Miesięczny budżet tokenów`,remaining:`pozostałe`,used:`używany`,usedScopeHint:`Tylko żądania czatu od początku bieżącego miesiąca kalendarzowego, zsumowane dla wszystkich modeli w aktywnym łańcuchu — łącznie z własnymi endpointami. Ruch wysyłany do dostawcy z pominięciem SRouter nie jest liczony.`,legendRemainingTitle:`Pozostało / budżet miesięczny dla {name} ({platform})`,noPublishedQuota:`+{count} bez opublikowanego limitu`,noPublishedQuotaTitle:`Te modele nie mają udokumentowanego miesięcznego budżetu tokenów, więc nie ma czego pokazać jako pozostałe.`,of:`z`,showAllModels:`Pokaż wszystkie modele {count}`,showLess:`Pokaż mniej`,vision:`Wizja`,visionTitle:`Akceptuje wejście obrazu`,tools:`Narzędzia`,toolsTitle:`Emituje uporządkowane wywołania narzędzi, więc kwalifikuje się do żądań łożysk narzędziowych`,retired:`Wycofany`,penalty:`−{value} kara`,obs:`{count} obs`,tokPerMonth:`{count} tok/mies`,rpmLimit:`{count} obr./min`,rpdLimit:`{count} rpd`,noKey:`brak klucza`,dragToReorder:`Przeciągnij, aby zmienić kolejność`,dragToReorderGroup:`Przeciągnij, aby zmienić kolejność modelu`,moveToRank:`Przejdź do rangi`,providerCount:`Dostawcy {count}`,servedBy:`Obsługiwane przez {providers}`,viewProviders:`Zobacz dostawców`,backToModels:`Wracając do modeli`,providersHeading:`Dostawcy obsługujący ten model`,codeSnippetHeading:`Skorzystaj z tego modelu`,modelNotFound:`Ten model jest niedostępny lub nie ma skonfigurowanych dostawców.`,providerIdsHeading:`Identyfikatory modelu dostawcy`,providerIdsHint:`Wyślij ujednolicony identyfikator modelu, aby przełączać awaryjnie u każdego dostawcy, lub identyfikator specyficzny dla dostawcy, aby przypiąć jednego dostawcę.`,copyModelName:`Skopiuj nazwę modelu`,settingsHeading:`Ustawienia dostawcy`,settingsHint:`Lokalne zmiany w modelach katalogu są zachowywane podczas synchronizacji katalogów. Usunięte modele katalogowe pozostają usunięte, dopóki nie dodasz ich ponownie za pomocą konfiguracji.`,catalogModel:`katalog`,customModel:`niestandardowe`,discoveredModel:`wykryty`,localOverride:`lokalne obejście`,displayName:`Nazwa wyświetlana`,sizeLabel:`Poziom możliwości`,sizeLabelHint:`Frontier/Large/Medium/Small wyznaczają oś inteligencji: wyższy poziom zawsze wygrywa z niższym, a w obrębie jednego poziomu ranga inteligencji nadal przesuwa wynik. Model bez rozpoznanego poziomu ma na tej osi najniższy wynik, ale inteligencja to tylko jedna z trzech osi — przy dobrej niezawodności i prędkości nadal może zostać wybrany.`,sizeLabelNone:`Brak (najniższy wynik inteligencji)`,contextWindow:`Kontekst`,inFallback:`W łańcuchu`,saveModelSettings:`Zapisz ustawienia modelu`,aggregateBudget:`{count}/mies`,aggregateBudgetTitle:`Całkowita liczba bezpłatnych tokenów miesięcznie u dostawców tego modelu`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Ograniczona stawka — brak stałego miesięcznego budżetu na tokeny`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Wykorzystanie limitu szybkości w oknie czasowym (użyte / limit) dla dostawcy z największym zapasem`,splitOut:`Nie łącz tej kopii`,splitOutHint:`Daj kopii tego dostawcy własny, oddzielny wpis, zamiast łączyć ją w ujednolicony model. Możesz scalić go z powrotem z własnej strony kopii.`,splitUndo:`Połącz z powrotem`,splitUndoHint:`Kopia ta jest przechowywana oddzielnie od jej ujednoliconego modelu. Połącz go ponownie, aby ponownie włączyć awaryjność wszystkich dostawców.`,splitBadge:`trzymane oddzielnie`,noData:`brak danych`,noDataTitle:`Nie zarejestrowano jeszcze żadnych żądań — niezawodność i szybkość są niezmierzone w przypadku tego dostawcy.`,bestOfN:`najlepiej z {count}`,perProviderScores:`Wyniki na dostawcę: {list}`,columnModel:`Modelka`,columnOn:`Włączone`,noModelsBefore:`Brak dostępnych modeli. Dodaj klucze API na`,keysPageLink:`Strona z kluczami`,noModelsAfter:`pierwszy.`,hiddenNoKeys:`Ukryty (bez kluczy): {platforms}`,searchPlaceholder:`Wyszukaj modele lub dostawców…`,clearSearch:`Wyczyść wyszukiwanie`,ctxAny:`Dowolny kontekst`,ctxBadge:`{size} ctx`,ctxTitle:`Okno kontekstowe`,copyModelId:`Skopiuj identyfikator modelu`,showingCount:`Modele {shown} lub {total}`,clearFilters:`Wyczyść filtry`,noMatches:`Żaden model nie pasuje do Twoich filtrów.`,noModelsTitle:`Nie skonfigurowano żadnych modeli`,intelligenceRank:`Inteligencja`,speedRank:`Prędkość`,rankHint:`Ranga w katalogu — 1 jest najlepsza.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Żądania na minutę. Pozostaw puste, aby nie było limitu.`,limitRpdHint:`Żądania na dobę. Pozostaw puste, aby nie było limitu.`,limitTpmHint:`Tokeny na minutę. Pozostaw puste, aby nie było limitu.`,limitTpdHint:`Tokeny na dobę. Pozostaw puste, aby nie było limitu.`,usageThisMonth:`Zużycie miesięczne`,usageEmpty:`Brak żądań w tym miesiącu.`,usageRequestsMonth:`{count} żąd. w tym miesiącu`,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:`Włącz lub wyłącz wszystkie pokazane modele`,enableAll:`Włącz wszystkie`,disableAll:`Wyłącz wszystkie`,enableAllHint:`Włącz wszystkie pokazane modele, potem zapisz`,disableAllHint:`Wyłącz wszystkie pokazane modele, potem zapisz`,enabledOfShown:`{enabled} z {shown} pokazanych modeli jest w łańcuchu`},strategies:{explore:`Eksploruj niezmierzone modele`,exploreHint:`Daje modelom bez danych o niezawodności i szybkości 10% szansy na pierwszeństwo, żeby zebrały pomiary. Wysyłane jest twoje prawdziwe żądanie, więc może na nie odpowiedzieć nieprzetestowany model. Własny punkt końcowy sprawdzisz przyciskiem «Przetestuj punkt końcowy» na stronie Klucze, bez ruchu produkcyjnego.`,keySelection:`Wybór klucza`,keySelectionAuto:`Automatycznie`,keySelectionLeastRemaining:`Najmniej pozostało`,keySelectionHint:`Jak wybierać spośród kilku kluczy tego samego dostawcy. Automatycznie zachowuje bieżącą rotację; Najmniej pozostało porządkuje klucze według zaobserwowanego limitu i najpierw próbuje ten, któremu zostało najwięcej.`,cooldownCeiling:`Najdłuższe automatyczne schłodzenie`,cooldownCeilingHint:`Ogranicza, jak długo własne przypuszczenia routera mogą odstawiać zawodzącą parę klucz i model. Drabina zwykle rośnie: 2 min, 10 min, 1 h, 24 h, a błędy salda lub poziomu odstawiają na dobę. Czasy ponowienia podane przez dostawcę nigdy nie są skracane.`,cooldownCeilingDefault:`Domyślnie (do 24 h)`,cooldownCeiling10m:`10 minut`,cooldownCeiling1h:`1 godzina`,cooldownCeiling6h:`6 godzin`,moreOptions:`Więcej opcji`,peakActive:`(godziny szczytu)`,peakActiveHint:`Korekta na godziny szczytu jest teraz aktywna, więc to nie są wagi samego presetu: 60% wagi szybkości przeniesiono na niezawodność.`,peakAdjust:`Korekta na godziny szczytu`,peakAdjustHint:`Domyślnie wyłączona. W oknie poniżej przenosi 60% wagi szybkości na niezawodność — darmowe przekaźniki są wtedy najbardziej obciążone, więc niezawodność lepiej przewiduje sukces niż sama przepustowość. „Najszybszy” i „Najbardziej niezawodny” pozostają bez zmian.`,peakFrom:`Od`,peakTo:`do`,peakTimezoneLabel:`Strefa czasowa`,peakUseBrowserTimezone:`Użyj strefy czasowej przeglądarki`,peakTimezoneInvalid:`Nieznana strefa czasowa.`,peakExemptNote:`Ten preset pozostaje bez zmian — jest już na jednym z krańców kompromisu szybkość/niezawodność.`,title:`Strategia routingu`,description:`Wybierz strategię routingu. W trybie ręcznym przeciągnij, aby ustawić kolejność; inne strategie kierują się wynikami na żywo pod względem niezawodności, szybkości i inteligencji.`,weightsSummary:`niezawodność {reliability}% · prędkość {speed}% · inteligencja {intelligence}%`,guardrails:`Poręcze`,guardrailsTooltip:`Zawsze włączone poręcze: wolna przestrzeń nad głową × kara za limit stawek na żywo. Wartość poniżej 1,0 oznacza, że ​​model jest wstrzymywany.`,scoreTooltip:`Końcowy wynik trasy = średnia ważona trzech osi pomnożona przez poręcze. Najpierw wyższe trasy.`,modeManualHint:`Tryb ręczny: żądania są realizowane w poniższej kolejności, od góry do dołu. Przeciągnij, aby zmienić kolejność.`,modeScoreHint:`Aktualizacja wyników na podstawie ruchu na żywo. Poniższa kolejność przedstawia sposób, w jaki żądania są obecnie kierowane.`,manual:`Instrukcja`,manualBlurb:`Trasuj w dokładnie takiej kolejności, jaką ustawiłeś poniżej. Przeciągnij uchwyty, aby zmienić kolejność. Brak punktacji; łańcuch podąża od góry do dołu.`,balanced:`Zrównoważony`,balancedBlurb:`Wiodąca niezawodność (50%), przy jednakowej wadze szybkości i inteligencji (po 25%). Rozsądne, wszechstronne ustawienie domyślne.`,smartest:`Najmądrzejszy`,smartestBlurb:`Preferuj najbardziej wydajny model, który nadal działa. Inteligencja 55%, niezawodność 35%, szybkość 10%.`,fastest:`Najszybszy`,fastestBlurb:`Preferuj najszybszy model, który nadal działa. Szybkość 55%, niezawodność 35%, inteligencja 10%.`,reliable:`Najbardziej niezawodny`,reliableBlurb:`Przede wszystkim maksymalizuj wskaźnik sukcesu. Niezawodność 70%, szybkość i inteligencja po 15%.`,custom:`Niestandardowe`,customBlurb:`Ustawiaj własną równowagę pomiędzy niezawodnością, szybkością i inteligencją za pomocą suwaków. Ten sam silnik co ustawienia wstępne, tylko Twoje ciężary.`,adjust:`Dostosuj`,customWeights:`Wagi niestandardowe`,customWeightsHelp:`Suwaki są niezależne; akcje automatycznie równoważą się do 100%.`,weightReliability:`Niezawodność`,weightSpeed:`Prędkość`,weightIntelligence:`Inteligencja`,weightRequired:`Przynajmniej jedna waga musi być powyżej zera.`,scoreColumn:`Wynik`},penaltyInspector:{title:`Ciśnienie routera`,subtitle:`Kary, czasy odnowienia i awarie z ostatniej min. {minutes}`,rowCount:`{count} aktywny`,offChain:`poza łańcuchem`,penaltyValue:`Kara {value}`,factor:`wynik x{factor}`,noCooldown:`Brak możliwości odnowienia`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Wyczyść wszystko`,clearAllHint:`Natychmiast znosi wszystkie schłodzenia, kary i serie błędów. Presja odbudowuje się z kolejnych rzeczywistych wyników.`,errorsHeading:`Ostatnie błędy {count}`,noRecentErrors:`Brak ostatnich błędów`,noKey:`brak klucza`,reasons:{penalty:`ukarany`,cooldown:`czas odnowienia`,recent_errors:`niepowodzenie`}},keys:JSON.parse(`{"pageTitle":"Klucze","pageDescription":"Poświadczenia dostawcy i ujednolicony klucz API, z którym łączą się Twoje aplikacje.","tabProviders":"Dostawcy","checklistSummary":"Skonfigurowano {configured} z {total} dostawców","checklistKeyless":"klucz niepotrzebny","checklistNoKeyTip":"Nie dodano jeszcze klucza. Kliknij, aby dodać.","checklistSignupLink":"Otwórz {provider}, aby utworzyć konto i uzyskać klucz","checklistKeylessTip":"Działa bez klucza.","tabQuotaSignals":"Sygnały kwotowe","tabApiKey":"Ujednolicony klucz API","tabAnthropic":"Anthropic","unifiedKey":"Twój zunifikowany klucz API","regenerate":"Zregeneruj się","showKey":"Pokaż","hideKey":"Ukryj","copyKey":"Kopiuj","copyFullKey":"Kopiuj pełny klucz","copiedKey":"Skopiowano","baseUrl":"Podstawa URL","endpointChat":"Czat","endpointResponses":"Odpowiedzi","endpointEmbeddings":"Osadzenia","endpointEmbeddingsHint":"model: \\"auto\\" lub rodzinę z zakładki Osadzenia","endpointMessages":"Wiadomości","endpointMessagesHint":"Kompatybilny z 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":"Modele Claude (Anthropic).","anthropicDesc":"Skieruj klienta SDK Claude lub Anthropic na ten serwer. Klienci Anthropic wysyłają nazwy modeli Claude — mapuj każdy z nich na Auto (router wybiera darmowy model) lub przypnij konkretny.","anthropicBaseUrl":"Podstawa URL","anthropicAuth":"Nagłówek uwierzytelniania","anthropicAuto":"Auto — router wybiera najlepszy model","anthropicSave":"Zapisz mapowanie","anthropicSaved":"Zapisano","anthropicNote":"Klienci Anthropic zachowują wbudowane nazwy modeli Claude; powyższe mapowanie decyduje o tym, w jaki sposób każdy z nich trafi do Twojej puli.","familyDefault":"Domyślne","familyOpus":"Opus","familySonnet":"Sonet","familyHaiku":"Haiku","selectPlatform":"Wybierz dostawcę","addKey":"Dodaj klucz","keyAdded":"Dodano klucz","endpointKeysShareModels":"Klucze tego samego punktu końcowego współdzielą jego modele.","export":"Eksportuj","exportAll":"Wszystkie klucze","exportHealthy":"Tylko zdrowe","exportKeys":"Eksportuj klucze API","exportFormat":"Sformatuj","exportHealthyOnly":"Tylko zdrowe klucze","exportHealthyOnlyDesc":"Wyklucz klucze, które obecnie nie przechodzą kontroli stanu","exportWillExport":"Będzie eksportować","exportKey":"klucz","exportKeys plural":"klucze","exporting":"Eksportuję…","exportDownload":"Pobierz","exportSuccess":"Wyeksportowane klucze {count}","adding":"Dodawanie…","selectProvider":"Wybierz dostawcę…","accountId":"Identyfikator konta","label":"Etykieta","noKeyNeeded":"(nie potrzeba klucza)","outboundProxy":"Wychodzące proxy","outboundProxyDescription":"Kieruj wychodzące żądania LLM przez serwer proxy. Obsługuje SOCKS5, HTTP i HTTPS.","proxyUrl":"Serwer proxy URL","saveProxy":"Zapisz","savingProxy":"Zapisuję…","proxyLoadFailed":"Nie można wczytać ustawień 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":"Dodaj niestandardowy model zgodny z OpenAI","addCustomDescription":"Wskaż modele czatu, osadzania, obrazu lub dźwięku na dowolnym punkcie końcowym zgodnym z OpenAI. Klucz API jest opcjonalny w przypadku serwerów lokalnych.","customType":"Wpisz","customTypeChat":"Czat","customTypeEmbedding":"Osadzanie","customTypeImage":"Obraz","customTypeAudio":"Dźwięk","customTypeTranscription":"Transcription","customBaseUrl":"Podstawa URL","customModels":"Modele","customModel":"Modelka","customDisplayName":"Nazwa wyświetlana","customDisplayNamePerModel":"na model","customDisplayNameOptional":"opcjonalne","customFamily":"Rodzina","customFamilyPlaceholder":"domyślnie jest to identyfikator modelu","customApiKey":"Klucz API","customCapabilities":"Możliwości","addModel":"Dodaj model","modelAdded":"Dodano model","addModels":"Dodaj modele {count}","addEmbeddingModel":"Dodaj osadzanie","addImageModel":"Dodaj model obrazu","addAudioModel":"Dodaj model audio","addTranscriptionModel":"Add transcription model","addingCustom":"Dodawanie…","discoverModels":"Pobierz modele","probeNow":"Przetestuj punkt końcowy","probeConfirm":"Wysłać maksymalnie 3 żądania testowe?","probeCapabilities":"rozumowanie: {reasoning} · narzędzia: {tools}","probeCapYes":"tak","probeCapNo":"nie","probeCapUnknown":"nieznane","probeSuccess":"Przetestowano {model} w {latency} ms","probeFailed":"Test nie powiódł się: {reason}","discoverTitle":"Modele w tym punkcie końcowym","discoverHint":"Wybierz modele do zarejestrowania. Już dodane pozostają zablokowane.","discoverEmpty":"Ten punkt końcowy nie zwrócił żadnych modeli.","discoverAlreadyAdded":"Dodano","discoverSelectAll":"Zaznacz wszystko","modelsAdded":"Dodano modeli: {count}","getApiKey":"Zdobądź klucz API","deleteKeyConfirm":"Usunąć ten klucz? Tego nie można cofnąć.","checkAll":"Sprawdź wszystko","checking":"Sprawdzam…","editLabel":"Edytuj etykietę","saveLabel":"Zapisz etykietę","unifiedKeyDescBefore":"Użyj tego jako swojego OpenAI","unifiedKeyDescAfter":"; uwierzytelnia żądania kierowane do tego serwera proxy.","serverUnreachableBefore":"Nie można połączyć się z serwerem","serverUnreachableAfter":". Upewnij się, że backend działa. npm run dev uruchamia oba, a dzienniki serwera są drukowane pod prefiksem serwera.","paneProviderKey":"Klucz dostawcy","paneImportFile":"Importuj plik","paneCustomEndpoint":"Niestandardowy punkt końcowy","platform":"Platforma","hideAdded":"Ukryj dodanych dostawców","apiToken":"Token API","keyOptionalPlaceholder":"Opcjonalnie","bearerTokenPlaceholder":"Token okaziciela","pasteKeyPlaceholder":"wklej tutaj klucz","pasteSeveral":"Wklej kilka","keyOptionalHint":"Opcjonalnie: zostaw puste, aby korzystać z anonimowego darmowego poziomu (limit na IP), lub wklej własny klucz, aby używać swojego konta.","enable":"Włącz","noProviderKeys":"Nie ma jeszcze kluczy dostawcy. Dodaj jeden powyżej, aby rozpocząć wyznaczanie trasy.","filterPlaceholder":"Filtruj dostawców lub klucze","filterAll":"Wszystko","filterHealthy":"Zdrowy","filterIssues":"Problemy","filterDisabled":"Niepełnosprawny","noFilterMatch":"Żaden dostawca nie pasuje do Twoich filtrów.","providerCountSummary":"Dostawcy {providers} · Klucze {keys}","summaryHealthy":"{count} zdrowy","summaryIssueOne":"Problem z {count}","summaryIssueOther":"Problemy z {count}","providerActions":"Działania dostawcy","routeViaProxy":"Trasa przez proxy","checkNow":"Sprawdź teraz","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":"Możliwość konfiguracji również poprzez","proxyEnvHintAfter":"zmienna środowiskowa (ma pierwszeństwo). Pozostaw puste, aby wyłączyć. Przykłady:","importKeys":"Importuj klucze dostawcy","importKeysDescription":"Prześlij .env, JSON, JSONC, CSV, Markdown lub pliki tekstowe.","importFiles":"Pliki","importFileCount":"Wybrano {count}","previewFiles":"Podgląd","previewing":"Podgląd…","selected":"Wybrane","provider":"Dostawca","keyName":"Nazwa klucza","keyValue":"Wartość kluczowa","chooseProvider":"Wybierz dostawcę","noPreviewKeys":"W tych plikach nie znaleziono kluczy.","skippedItems":"Pominięte:","moreItems":"+{count} więcej","importSelected":"Importuj {count}","importing":"Importuję…","noImportSelection":"Wybierz co najmniej jeden wiersz z dostawcą.","duplicate":"Duplikat","duplicatesFound":"Wykryto duplikaty {count} — już istnieją i zostaną pominięte.","importResult":"Zaimportowano {imported}; nie powiodło się {failed}.","importModelCount":"+{count} modeli","importResultWithModels":"Zaimportowano {imported}; zarejestrowano {models} modeli; nie powiodło się {failed}.","confirmRemove":"Potwierdzić?","quotaSignalsTitle":"Sygnały kwotowe","quotaSignalsEmptyTitle":"Nie ma jeszcze żadnych obserwacji kwot","quotaSignalsEmptyDesc":"Wypełnia się, gdy dostawcy zwrócą nagłówki limitów szybkości, błędy przydziału lub sygnały sprawdzające.","quotaKeyRef":"klucz #{id}","quotaPoolRef":"basen {pool}","quotaLimit":"Limit","quotaRemaining":"Pozostało","quotaReset":"Zresetuj","quotaObserved":"Zaobserwowane","tabAgents":"Agenci","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Mapowanie modeli Gemini","geminiDesc":"Mapuj nazwy Gemini Pro, Flash i Flash-Lite na Auto lub konkretny model z katalogu.","compatibilityTitle":"Zgodność agentów","compatibilityDesc":"Steruj opcjonalnymi warstwami zgodności i wykrywaniem modeli Claude Code.","ollamaMode":"Emulacja Ollama","ollamaModeHint":"Otwarty loopback nigdy nie przyjmuje nieuwierzytelnionego ruchu z sieci LAN.","ollamaOff":"Wył.","ollamaLoopback":"Otwarty na loopbacku","ollamaKeyRequired":"Wymagany klucz API","claudeAliases":"Aliasy wykrywania Claude Code","claudeAliasesHint":"Udostępnij aliasy claude/<model>, aby selektor modeli bramy mógł wyświetlić katalog.","mcpServer":"Serwer MCP","mcpServerHint":"Udostępnia punkt końcowy /mcp klientom agentowym. Nowe instalacje startują z wyłączonym.","urlTokensTitle":"Odwoływalne tokeny URL","urlTokensDesc":"Tylko dla klientów bez nagłówków. Tokeny URL mogą wyciec do historii i logów, więc odwołuj je, gdy nie są już potrzebne.","urlTokenLabel":"Etykieta tokenu","createUrlToken":"Utwórz token","urlTokenOnce":"Skopiuj ten token teraz. Nie zostanie ponownie wyświetlony.","revoked":"Odwołany","revoke":"Odwołaj","modelScope":"Zakres modeli","modelScopeDesc":"Ogranicz ten klucz do wybranych ID modeli. Dla pozostałych modeli router pomija ten klucz.","modelScopeAdd":"Wpisz ID modelu i naciśnij Enter","modelScopeEmpty":"Brak zakresu — ten klucz obsługuje wszystkie modele swojego dostawcy.","modelScopeClear":"Wyczyść zakres","modelScopeBadgeOne":"ograniczony · 1 model","modelScopeBadgeOther":"ograniczony · {count} modeli","modelPicker":{"title":"Które modele ma obsługiwać ten klucz?","hint":"Twój klucz {provider} został dodany i obsługuje obecnie wszystkie modele poniżej. Odznacz te, których ten klucz nie może używać — router pominie go dla nich.","count":"Wybrano {selected} z {total}","allNote":"Wybrano wszystko — nic nie zostanie zapisane, a modele dodane później do katalogu też będą korzystać z tego klucza.","subsetNote":"Ten klucz zostanie ograniczony do wybranych modeli. Możesz to zmienić później w wierszu klucza.","skip":"Nie teraz","scopedOne":"Klucz ograniczony do 1 modelu","scopedOther":"Klucz ograniczony do {count} modeli","allSaved":"Key serves every catalog model"},"cpTitle":"Profile klientów","cpDesc":"Osobne klucze API dla każdego klienta, każdy z promptem systemowym, który serwer zawsze stosuje.","cpEmpty":"Nie ma jeszcze profili klientów.","cpNameLabel":"Nazwa","cpNamePlaceholder":"np. Bot wsparcia","cpPromptLabel":"Prompt systemowy (opcjonalny)","cpPromptPlaceholder":"Instrukcje, które serwer dodaje przed każdym żądaniem wykonanym tym kluczem.","cpCreate":"Utwórz profil","cpRotate":"Wymień klucz","cpKeyOnce":"Skopiuj ten klucz teraz — nie zostanie ponownie wyświetlony.","cpEnabledAria":"Profil włączony","selectKey":"Wybierz ten klucz","bulkSelected":"Wybrano {count}","bulkEnable":"Włącz wszystkie","bulkDisable":"Wyłącz wszystkie","bulkDelete":"Usuń wszystkie","bulkDeleteConfirm":"Usunąć {count}?","bulkResult":"Zaktualizowano {done}; nie powiodło się {failed}.","bulkDeleteResult":"Usunięto {done}; nie powiodło się {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Edytuj klucz","editPlatformLocked":"Dostawcy i endpointu nie można zmienić po utworzeniu.","editCredentialHint":"Pozostaw puste, aby zachować bieżący klucz.","editCredentialPartsRequired":"Podaj identyfikator konta i token API.","editModels":"Edytuj modele","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":"Dodaj model niestandardowy","modelId":"ID modelu","modelIdRequired":"ID modelu jest wymagane","modelDisplayName":"Nazwa wyświetlana","modelContextWindow":"Okno kontekstu (tokeny)","modelRateLimits":"Limity zapytań (opcjonalnie)","modelSupportsTools":"Obsługa wywołań narzędzi","modelSupportsToolsHint":"Włącz, jeśli ten model obsługuje wywołania funkcji lub narzędzi","modelSupportsVision":"Obsługa wizji","modelSupportsVisionHint":"Włącz, jeśli ten model akceptuje obrazy","createModel":"Utwórz model","modelAddedSuccess":"Pomyślnie dodano model niestandardowy","modelAddFailed":"Nie udało się dodać modelu niestandardowego","testModel":"Testuj","testingModel":"Testowanie…","testPassedShort":"Sukces","testFailedShort":"Błąd","testPassed":"Test modelu zakończony sukcesem w {latency}ms","testFailed":"Test modelu nie powiódł się","testThrottled":"Odczekaj {seconds}s przed ponownym testem tego modelu.","noModelsForProvider":"Brak skonfigurowanych modeli dla tego dostawcy.","testModels":"Testuj modele","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":"Bez limitu","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} żądań, {tokens} tokenów w tym miesiącu","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:`zdrowy`,rateLimited:`ograniczona stawka`,invalid:`nieważne`,error:`błąd`,unchecked:`niezaznaczone`},analytics:{title:`Analityka`,description:`Żądaj liczby, opóźnień, użycia tokenu i błędów.`,range24h:`24h`,range7d:`7d`,range30d:`30d`,range90d:`90d`,requests:`Żądania`,successRate:`Wskaźnik sukcesu`,inputTokens:`Tokeny wejściowe`,outputTokens:`Tokeny wyjściowe`,avgLatency:`Średnie opóźnienie`,p95Latency:`Opóźnienie P95`,avgTtft:`Średnia TTFT`,estSavings:`Szac. oszczędności`,requestsByProvider:`Żądania od dostawcy`,avgLatencyByProvider:`Średnie opóźnienie według dostawcy`,ttftByProvider:`Czas do pierwszego tokena przez dostawcę`,ttftEmpty:`Nie ma jeszcze czasu na zarejestrowanie pierwszego tokena.`,requestsOverTime:`Żądania rozłożone w czasie`,tokensOverTime:`Tokeny z biegiem czasu`,byModel:`Według modelu`,byPlatform:`Według platformy`,errors:`Błędy`,errorDistribution:`Dystrybucja błędów`,pinnedRequests:`Przypięte żądania`,pinnedHonored:`Uhonorowany`,fallbackAttempts:`Próby awaryjne`,savingsHint:"Faktycznie zaoszczędziłeś ${actual} w ciągu ostatniego {range}. Tyle kosztowałyby te same tokeny w płatnych interfejsach API, wycenione według modelu. Wyświetlana liczba odzwierciedla Twoje tempo od ostatniego {span} danych do pełnych 30 dni.",savingsHintExact:"Faktycznie zaoszczędziłeś ${actual} w ciągu ostatniego {range}. Tyle kosztowałyby te same tokeny w płatnych interfejsach API, wycenione według modelu. Wyświetlana liczba to rzeczywista suma 30 dni.",requestsHintPinned:`{pinned} tych żądań przypinało konkretny model według nazwy. {honored} były obsługiwane przez model przypięty; {failed} zostało przełączone awaryjnie na inny. Resztę wyznaczono automatycznie.`,requestsHintAuto:`Wszystkie żądania w tym okresie zostały automatycznie przekierowane; żaden klient nie przypiął konkretnego modelu po nazwie.`,requestsHintTypes:`Żądania czatu {chat} i osadzania {embedding}.`,rangeLabel24h:`24 godziny`,rangeLabel7d:`7 dni`,rangeLabel30d:`30 dni`,rangeLabel90d:`90 dni`,spanDays:`{count} dni`,spanHours:`{count} godz`,latencyMs:`Opóźnienie (ms)`,latency:`Opóźnienie`,pinned:`Przypięty`,inTokens:`W tokenach`,outTokens:`Wycofane tokeny`,saved:`Zapisano`,message:`Wiadomość`,time:`Czas`,perModelBreakdown:`Podział według modelu`,usageByKey:`Użycie według klucza`,keyColumn:`Klucz`,keyLabelFallback:`Klucz #{id}`,errorsByProvider:`Błędy według dostawcy`,recentErrors:`Ostatnie błędy`,noErrors:`Żadnych błędów`,recentCalls:`Ostatnie połączenia`,clientIp:`IP klienta`,clientAgent:`Aplikacja kliencka`,requestedModelHint:`Żądano {model}, obsługiwane przez rezerwę`,attempts:`Próby`,filterAll:`Wszystko`,filterCanceled:`Anulowane`,providerBreakdown:`Podział na dostawcę`,tokensPerSec:`Tok/s`,allProviders:`Wszyscy dostawcy`,requestDetailTitle:`Żądanie #{id}`,failoverLadder:`Drabina awaryjna`,failoverLadderHint:`Przy każdym przeskoku to żądanie przechodziło w kolejności przez łańcuch awaryjny.`,noAttemptTrace:`Dla tego żądania nie zarejestrowano żadnego śledzenia prób.`,keyOrdinal:`klucz #{n}`,keyBadge:`Klucz #{n}`,attemptTimingHint:`Przesunięcie początku od początku żądania · czas trwania próby`,requestedModel:`Żądany model`,ttft:`TTFT`,requestsByAgent:`Żądania według agenta`,sortBy:`Sortuj według: {column}`,sortHint:`Sortowanie dotyczy {count} załadowanych wierszy`,cacheHitRate:`Współczynnik trafień pamięci podręcznej`,cacheSavedTokens:`Zaoszczędzono {tokens} tokenów`,cacheHitRateHint:`{hits} trafień wobec {misses} chybień od startu serwera · uniknięto {requests} wywołań dostawcy`},logs:{title:`Logi`,description:`Log serwera na żywo. Nowe wpisy pojawiają się na bieżąco, gdy strona jest otwarta.`,pause:`Wstrzymaj`,resume:`Wznów`,clear:`Wyczyść logi`,cleared:`Log serwera wyczyszczony`,levelFilter:`Poziomy logowania`,levels:{debug:`Debug`,info:`Info`,warn:`Ostrzeżenie`,error:`Błąd`},countsHint:`Liczby dotyczą całego bufora logów na serwerze, a nie tylko wpisów pasujących do tych filtrów.`,searchPlaceholder:`Szukaj w komunikatach logu…`,jumpToLatest:`Przejdź do najnowszych`,showMore:`Pokaż więcej`,showLess:`Pokaż mniej`,buffered:`Wyświetlanie {count} z maksymalnie {max} buforowanych wpisów`,emptyTitle:`Brak wpisów w logu`,emptyDescription:`Wpisy pojawią się tutaj, gdy serwer zacznie je zapisywać. Poszerz filtry poziomu, dostawcy lub wyszukiwania, jeśli spodziewasz się wyników.`,noLevelsTitle:`Nie wybrano poziomów`,noLevelsDescription:`Włącz co najmniej jeden poziom, aby zobaczyć zawartość logu.`,loadFailed:`Nie udało się wczytać logu serwera.`},playground:{title:`Plac zabaw`,description:`Wyślij zakończenie czatu przez router i zobacz, który dostawca je obsługuje.`,autoModel:`Auto (łańcuch awaryjny)`,fusionModel:`Fuzja (synteza wielomodelowa)`,selectModel:`Wybierz model`,searchModels:`Wyszukaj modele…`,noModelsFound:`Nie znaleziono żadnych modeli`,send:`Wyślij`,sending:`Wysyłam…`,clear:`Jasne`,inputPlaceholder:`Wpisz wiadomość… (⏎, aby wysłać, ⇧⏎, aby przejść do nowej linii)`,emptyTitle:`Wyślij wiadomość, aby rozpocząć.`,emptyDescription:`Używając {model}. Zmień modele w selektorze powyżej.`,noModels:`Nie ma jeszcze żadnych modeli. Dodaj klucz API na stronie Klucze, aby wypełnić tę listę.`,copyReply:`Skopiuj odpowiedź`,fallback:`rezerwowy`,fallbacks:`rezerwy`,fusionPanel:`Panelu`,fusionJudge:`Sędzia`,fusionTrace:`Odpowiedzi modelu {count}`,fusionFailed:`brak odpowiedzi`,fusionJudgeSynth:`zsyntetyzował ostateczną odpowiedź`,errorPrefix:`Błąd:`,systemPromptLabel:`Monit systemowy`,systemPromptPlaceholder:`Opcjonalne. Wysłane jako wiadomość systemowa przed rozmową.`,showSettings:`Pokaż ustawienia`,hideSettings:`Ukryj ustawienia`,samplingHeading:`Próbkowanie`,samplingHelp:`Po wyłączeniu obowiązuje domyślna wartość samego dostawcy. Wysyłane są tylko te ustawienia, które włączysz.`,samplingDefault:`Domyślne`,temperature:`Temperatura`,topP:`Top P`,maxTokens:`Maks. tokenów`,errorTitle:`Żądanie nie powiodło się`,attach:`Załącz pliki`,attachTooMany:`W jednej wiadomości możesz załączyć maksymalnie {count} plików.`,attachTooLarge:`Plik {name} jest za duży. Limit to {max}.`,attachUnsupported:`{name} nie jest obsługiwany. Załącz obrazy (PNG, JPEG, WebP, GIF) lub pliki tekstowe (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Nie udało się odczytać pliku {name}.`,noVisionBadge:`Bez obrazów`,visionWarning:`{model} nie przyjmuje obrazów. Wybierz model obsługujący obrazy lub Auto.`,dictate:`Dyktuj`,dictationStop:`Zatrzymaj nagrywanie`,dictationTranscribing:`Transkrypcja…`,dictationUnavailable:`Dodaj dostawców modeli audio, aby korzystać z dyktowania.`,dictationModel:`Model dyktowania`,dictationFailed:`Transkrypcja nie powiodła się: {reason}`,artifactOpen:`Otwórz podgląd`,artifactPreview:`Podgląd`,artifactCode:`Kod`,artifactClose:`Zamknij podgląd`,artifactDownload:`Pobierz`,artifactReload:`Odśwież podgląd`,artifactHtml:`Strona HTML`,artifactSvg:`Obraz SVG`,artifactLines:`wierszy`,artifactResize:`Zmień rozmiar podglądu`},playgroundSessions:{heading:`Rozmowy`,newConversation:`Nowa rozmowa`,showSidebar:`Pokaż rozmowy`,hideSidebar:`Ukryj rozmowy`,empty:`Nie ma jeszcze zapisanych rozmów.`,untitled:`Rozmowa bez nazwy`,rename:`Zmień nazwę`,renamePlaceholder:`Nazwa rozmowy`,messageCount:`{count} wiadomości`,justNow:`przed chwilą`,minutesAgo:`{count} min temu`,hoursAgo:`{count} godz. temu`,daysAgo:`{count} dni temu`,loadFailed:`Nie udało się otworzyć tej rozmowy.`,renameFailed:`Nie udało się zmienić nazwy tej rozmowy.`,deleteFailed:`Nie udało się usunąć tej rozmowy.`,actions:`Akcje rozmowy`,newChat:`Nowy czat`},embeddings:{title:`Modele`,description:`Osadzanie przełączane awaryjnie tylko w ramach rodziny: ten sam model obsługiwany przez innego dostawcę. Wektory z różnych modeli są niekompatybilne, więc router nigdy nie zamienia modeli.`,defaultBadge:`Domyślne · auto`,makeDefault:`Ustaw jako domyślny`,moveUp:`Przesuń się w górę`,moveDown:`Przesuń w dół`,usageToday:`{count} wymaga dzisiaj`,usageMonth:`{count} tok w tym miesiącu`,autoDescription:`model: "auto" na trasach POST /v1/embeddings do rodziny domyślnej. Nadanie nazwy rodzinie (lub identyfikatorowi modelu dostawcy) przypina tę rodzinę; dostawcy w nim są wypróbowani w kolejności.`,unsavedChanges:`Niezapisane zmiany`,saveChanges:`Zapisz zmiany`,savingChanges:`Zapisuję…`,tokMax:`{tokens} tok max`,emptyTitle:`Nie ma jeszcze osadzonych modeli`,emptyDesc:`Rodziny osadzania pojawiają się tutaj po dodaniu klucza dostawcy obsługującego osadzanie.`,dragToReorder:`Przeciągnij, aby zmienić kolejność dostawcy`},fusion:{title:`Fuzja`,description:`Panel modeli odpowiada równolegle, a następnie sędzia syntezuje jedną silniejszą odpowiedź. Użyj go, wywołując API z modelem „fusion”.`,panelSource:`Źródło panelu`,panelSourceHelp:`Skąd pochodzą modele paneli, jeśli żądanie nie określa własnego.`,mode:{auto:`Auto (łańcuch awaryjny)`,autoHelp:`Wybierz różnorodny zestaw modeli ze swojego łańcucha awaryjnego, uszeregowanych według Twojej aktywnej strategii routingu.`,explicit:`Wyraźny panel`,explicitHelp:`Zawsze używaj konkretnych modeli wybranych poniżej.`},panelModels:`Modele panelowe`,selectedCount:`Wybrano {count} z {max}`,noModels:`Żadne modele nie są jeszcze podłączone. Dodaj klucz API, a następnie włącz modele w łańcuchu awaryjnym.`,panelSize:`Rozmiar panelu`,panelSizeHelp:`Ile różnych modeli wybrać automatycznie (1–{max}).`,judge:`Wzór sędziego`,judgeHelp:`Model łączący odpowiedzi panelu w jedną. Auto użyje Twojego najwyżej ocenianego dostępnego modelu.`,judgeAuto:`Auto (dostępne najwyżej w rankingu)`,strategy:`Strategia`,strategySynthesize:`Syntezuj — połącz panel w jedną odpowiedź`,strategyBestOf:`Najlepsze z — zwróć pojedynczą najsilniejszą odpowiedź (bez wezwania sędziego)`,strategySynthesizeShort:`Syntetyzować`,strategyBestOfShort:`Najlepsze z`,exposePanel:`Pokaż szczegóły panelu`,exposePanelHelp:`Dołącz odpowiedź każdego modelu i metadane sędziego pod polem x_fusion w odpowiedzi.`,howToUse:`Jak używać`,howToUseHelp:`Wyślij normalną prośbę o czat z modelem „fusion”. Te ustawienia są domyślne; każde żądanie może je zastąpić polem „fusion”.`,unsavedChanges:`Niezapisane zmiany`,save:`Zapisz`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Premium`,description:`Katalog modeli na żywo na każdym urządzeniu.`,loading:`Ładowanie…`,checkForUpdates:`Sprawdź aktualizacje`,syncing:`Synchronizowanie…`,catalogFeed:`Kanał katalogu`,liveFeed:`Transmisja na żywo`,monthlySnapshot:`Miesięczna migawka`,lastChecked:`Ostatnio sprawdzane: {when}`,liveDescription:`Nowe bezpłatne modele, zmiany limitów i poprawki dziwactw trafiają tutaj w ciągu kilku godzin od wysyłki. Aplikacja sprawdza automatycznie dwa razy dziennie; nic do zrobienia.`,snapshotDescription:`Poziom bezpłatny: katalog odświeża się z miesięcznej migawki, sprawdzanej automatycznie dwa razy dziennie. Premium przełącza to na kanał na żywo, aktualizowany co 2-3 dni.`,lastSyncProblem:`Ostatni problem z synchronizacją: {error}`,license:`Licencja`,planAnnual:`Premia roczna`,planLifetime:`Dożywotnia premia`,expired:`Wygasło`,inactive:`Nieaktywny`,lifetimeNote:`Licencja dożywotnia: nigdy nie wygasa.`,renewsOn:`Odnawia się w dniu {date}.`,willNotRenew:`Nie odnowi. Premium do {date}, następnie ta instalacja powraca do bezpłatnego katalogu miesięcznego.`,keyInactive:`Ten klucz nie jest już aktywny. Aplikacja cały czas pracuje nad bezpłatnym miesięcznym katalogiem.`,manageSubscription:`Zarządzaj subskrypcją`,openingPortal:`Otwieranie…`,removeKey:`Usuń klucz z tego urządzenia`,manageHint:`Zarządzaj subskrypcją otwiera portal rozliczeniowy Stripe: anuluj, zaktualizuj swoją kartę lub pobierz faktury. Wyjęcie klucza powoduje jedynie dezaktywację tego urządzenia; Twój zakup pozostaje nietknięty.`,licenseKey:`Klucz licencyjny`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Aktywuj`,activating:`Aktywuję…`,keyHint:`Twój klucz znajduje się w e-mailu dotyczącym zakupu i na stronie po dokonaniu płatności. Zgubiłeś to?`,recoverKey:`Odzyskaj go na stronie internetowej`,upsellTitle:`Wejdź na żywo za 19 USD rocznie`,upsellDescription:`Nowe bezpłatne modele od razu po ich pojawieniu się, a nie 30 dni później. Jeden klucz, każde urządzenie. Anuluj w dowolnym momencie; router pozostaje darmowy na zawsze.`,goPremium:`Przejdź na Premium`,bundled:`w pakiecie`,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:`Coś poszło nie tak`,boundaryDescription:`W panelu kontrolnym wystąpił nieoczekiwany błąd. Twoje dane są bezpieczne. Spróbuj ponownie lub wróć do strony modeli.`,tryAgain:`Spróbuj ponownie`,goHome:`Wracając do modeli`},notFound:{title:`Nie znaleziono strony`,description:`Ta strona nie istnieje lub mogła zostać przeniesiona.`},setup:{title:`Rozpoczęcie`,subtitle:`Trzy kroki, aby skierować swoje pierwsze żądanie.`,progress:`{done} z {total}`,step1Title:`Dodaj klucz dostawcy`,step1Desc:`Połącz co najmniej jedno konto dostawcy. Darmowe klucze działają.`,step1Cta:`Dodaj klucze`,step2Title:`Wyślij prośbę o test`,step2Desc:`Wybierz dowolny model na placu zabaw i przywitaj się.`,step2Cta:`Otwarty plac zabaw`,step3Title:`Połącz swoją aplikację`,step3Desc:`Użyj zunifikowanego klucza API z dowolnym klientem zgodnym z OpenAI.`,copyKey:`Skopiuj klucz API`,copyUrl:`Skopiuj bazę URL`,copiedKey:`Klucz API skopiowany do schowka`,copiedUrl:`Baza URL skopiowana do schowka`},palette:{title:`Paleta poleceń`,placeholder:`Przeszukaj strony, modele, działania…`,empty:`Brak wyników`,groupPages:`Strony`,groupActions:`Działania`,groupModels:`Modele`,toggleTheme:`Przełącz tryb ciemny`},validation:{required:`Wymagane`,url:`Wprowadź prawidłowy kod URL zaczynający się od http:// lub https://`,email:`Wpisz prawidłowy adres e-mail`,passwordMin:`Co najmniej {min} znaków`},agents:{title:`Agenci kodujący`,description:`Połącz narzędzia programistyczne z jedną bramą darmowych modeli dzięki generowanej konfiguracji bezpiecznej dla kopii zapasowych.`,apiKey:`Klucz API`,quickstartTitle:`Szybki start`,quickstart:`Najszybsza ścieżka: skonfiguruj Claude Code na podstawie aktualnego katalogu.`,currentKey:`Bieżący wspólny klucz:`,seenRecently:`Ostatnio widziany`,setupLabel:`Konfiguracja automatyczna`,setupHint:`Zapisuje za Ciebie plik konfiguracyjny tego narzędzia, wskazujący na tę bramę.`,setupGuideHint:`Wypisuje kroki konfiguracji tego narzędzia; żaden plik nie jest zapisywany.`,manualLabel:`Połączenie ręczne`,manualHint:`Bazowy adres URL i klucz do wpisania w ustawieniach samego narzędzia.`,endpoint:`Punkt końcowy`,documentation:`Dokumentacja`,descriptions:{claude:`Agent terminalowy Anthropic: planuje, edytuje pliki i uruchamia polecenia w twoim repozytorium.`,codex:`Agent terminalowy OpenAI, który najpierw wykonuje zadanie w lokalnej piaskownicy.`,cline:`Rozszerzenie do VS Code, które prosi o zatwierdzenie każdej zmiany i każdego polecenia.`,continue:`Rozszerzenie do VS Code i JetBrains: podpowiedzi i czat w trakcie pisania.`,aider:`Partner do programowania w wierszu poleceń — każda zmiana to osobny commit git.`,opencode:`Agent terminalowy niezależny od dostawcy, z pełnoekranowym interfejsem tekstowym.`,goose:`Lokalny agent od Block, rozszerzalny serwerami MCP poza sam kod.`,qwen:`Fork Gemini CLI dostrojony do modeli Qwen i dużych repozytoriów.`,roo:`Rozszerzenie do VS Code z przełącznymi trybami: architekt, koder, debuger.`,kilo:`Rozszerzenie do VS Code łączące Roo i Cline, z orkiestratorem dzielącym pracę.`,crush:`Agent terminalowy od Charm, napisany w Go, po jednej sesji na projekt.`,dsh:`Uprząż DeepSeeka, w której każdy dostawca to przełączalna trasa.`,mimo:`Agent terminalowy Xiaomi, fork OpenCode przyjmujący dowolnego dostawcę zgodnego z OpenAI.`,cursor:`Edytor pisany pod AI; działa przez chmurę Cursora, więc potrzebuje publicznego adresu URL.`,generic:`Każde inne narzędzie mówiące API OpenAI, ustawiane ręcznie adresem bazowym i kluczem.`,atomcode:`Agent terminalowy AtomGit, napisany w Rust, przyjmujący dowolny endpoint zgodny z OpenAI.`,openclaw:`Zawsze dostępny osobisty asystent, który z Twojego własnego komputera odpowiada w aplikacjach WhatsApp, Telegram, Discord i innych.`,hermes:`Samodoskonalący się agent Nous Research z trwałą pamięcią i umiejętnościami, w terminalu lub w aplikacjach czatowych.`,pi:`Minimalistyczny agent terminalowy, który kształtujesz własnymi rozszerzeniami, umiejętnościami i szablonami promptów.`}},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:`Pule darmowego poziomu ({count})`,poolsToggleBare:`Pule darmowego poziomu`,summary:`{pools} pul · {budget} tokenów/mies. liczonych raz na pulę · {credits} na kredytach · {unpublished} bez danych`,pool:`Pula`,models:`Modele`,budget:`Budżet miesięczny`,kind:`Rodzaj`,kindDocumented:`Udokumentowany`,kindCredits:`Kredyty`,kindUnpublished:`Nieopublikowany`,remaining:`Pozostało`,resetAt:`Reset`,disabledModels:`({count} wył.)`,metricTokens:`tokenów`,metricRequests:`zapytań`,metricCredits:`kredytów`,metricNeurons:`neuronów`,metricOther:`jednostek`,empty:`Brak włączonych modeli z danymi o budżecie darmowego poziomu.`,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:`Łańcuchy awaryjne`,description:`Nazwane łańcuchy, każdy wywoływany jako auto:<name> w /v1/models.`,count:`Łańcuchy: {count}`,active:`Aktywny`,default:`Domyślny`,activate:`Aktywuj`,activateHint:`Niech tabela poniżej edytuje ten łańcuch, a routing auto przez niego prowadzi`,deleteHint:`Usuń ten łańcuch`,deleteConfirm:`Usunąć łańcuch „{name}”?`,create:`Utwórz`,createPlaceholder:`Nazwa łańcucha`,createFailed:`Nie udało się utworzyć łańcucha.`,nameRules:`Do 20 znaków: litery, cyfry, myślniki i podkreślenia.`,startEmpty:`Zacznij pusty`,startEmptyHint:`Tworzy łańcuch bez modeli i nie dodaje do niego nowych modeli z katalogu. Bez zaznaczenia zaczyna jako kopia łańcucha domyślnego.`,curated:`Ręczny`,curatedHint:`Nowe modele z katalogu nie są automatycznie dodawane do tego łańcucha.`,renameHint:`Zmień nazwę tego łańcucha`,renameConfirm:`Zmienić nazwę łańcucha "{oldName}" na "{name}"? Klienci wywołujący auto:{oldName} muszą przejść na auto:{name}.`,renamePlaceholder:`Nowa nazwa łańcucha`,renameFailed:`Nie udało się zmienić nazwy łańcucha.`},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:`Playground`,keys:`Chaves`,analytics:`Análises`,premium:`Premium`,upgrade:`Atualizar`,settings:`Configurações`,signOut:`Sair`,openMenu:`Abrir o menu de navegação`,switchLight:`Mudar para o tema claro`,switchDark:`Mudar para o tema escuro`,switchToChinese:`Mudar para chinês`,switchToEnglish:`Mudar para inglês`,modelsMenu:`Explorar tipos de modelo`,agents:`Agentes`,logs:`Logs`,analyticsMenu:`Páginas de análises`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Crie sua conta`,signIn:`Entrar`,email:`E-mail`,password:`Senha`,emailPlaceholder:`voce@exemplo.com`,passwordPlaceholderSetup:`no mínimo 8 caracteres`,passwordPlaceholderLogin:`sua senha`,setupDescription:`Defina o e-mail e a senha que protegerão este painel.`,loginDescription:`Entre para gerenciar suas chaves, o roteamento e as análises.`,createAccount:`Criar conta`,creating:`Criando…`,signingIn:`Entrando…`,loading:`Carregando…`,newPasswordAutoComplete:`new-password`,currentPasswordAutoComplete:`current-password`,serverUnreachableBefore:`Não foi possível acessar o servidor. Verifique se o backend está em execução (`,serverUnreachableAfter:`).`,setupCode:`Código de configuração`,setupCodePlaceholder:`código dos logs do servidor`,setupCodeHint:`A configuração a partir de outro dispositivo precisa do código único impresso nos logs do servidor na inicialização.`,changePassword:`Alterar senha`,changeEmail:`Alterar e-mail`,forgotPassword:`Esqueceu a senha?`,currentPassword:`Senha atual`,newPassword:`Nova senha`,newEmail:`Novo e-mail`,resetCode:`Código de redefinição`,resetCodePlaceholder:`código dos logs do servidor`,resetCodeHint:`O código está no log do servidor. Ele nunca é enviado por e-mail.`,forgotPasswordDescription:`Clique no botão abaixo para gerar um código de redefinição. O código é gravado no log do servidor, nunca enviado por e-mail. Insira-o aqui para definir uma nova senha.`,requestResetCode:`Enviar código de redefinição`,requestingResetCode:`Enviando…`,resetPassword:`Redefinir senha`,resettingPassword:`Redefinindo…`,changingPassword:`Alterando…`,changingEmail:`Alterando…`,backToLogin:`Voltar ao login`,passwordChanged:`Senha alterada com sucesso.`,emailChanged:`E-mail alterado com sucesso.`,passwordReset:`Senha redefinida com sucesso. Por favor, entre novamente.`,resetCodeDockerHint:`Está usando Docker? O código está no log do contêiner: docker logs <container>.`,desktopSessionFailed:`O painel não conseguiu entrar no servidor local. Feche o SRouter e abra-o novamente.`},common:{save:`Salvar`,saving:`Salvando…`,cancel:`Cancelar`,discard:`Descartar`,delete:`Excluir`,confirm:`Confirmar`,copy:`Copiar`,copied:`Copiado`,copyFailed:`Não foi possível copiar — selecione o texto e copie manualmente`,show:`Mostrar`,hide:`Ocultar`,apply:`Aplicar`,applied:`Aplicado`,applying:`Aplicando…`,active:`Ativo`,inactive:`Inativo`,never:`nunca`,loading:`Carregando…`,error:`Erro`,noData:`Ainda não há dados`,unsavedChanges:`Alterações não salvas`,saveChanges:`Salvar alterações`,remove:`Remover`,unknownError:`Erro desconhecido`,model:`Modelo`,provider:`Provedor`,success:`Sucessos`,failures:`Falhas`,dismiss:`Dispensar`,status:`Status`},settings:{title:`Configurações`,language:`Idioma`,theme:`Tema`,themeSystem:`Sistema`,themeLight:`Claro`,themeDark:`Escuro`,searchLanguage:`Pesquisar idiomas…`,noLanguages:`Nenhum idioma encontrado`,sections:`Seções das configurações`,sectionGeneral:`Geral`,sectionCompression:`Compressão`,sectionAdvanced:`Avançado`,sectionPreview:`Prévia`,generalDescription:`Idioma e aparência deste painel.`,advancedDescription:`Limites e chaves de segurança do pipeline de compressão.`,compressionTitle:`Compressão de prompts`,compressionDescription:`Reduza o tamanho das solicitações antes do roteamento, preservando código, erros, caminhos, números e definições de ferramentas.`,compressionHelp:`Reescreve cada solicitação antes de ela ser enviada a um provedor, para que use menos tokens. Código, erros, caminhos de arquivo e números são protegidos, e qualquer reescrita que os danifique é descartada.`,compressionMode:`Modo`,compressionModeHelp:`Desativada envia as solicitações sem alterações. Sem perdas remove apenas o texto duplicado e desperdiçado. Padrão também encurta a saída das ferramentas. Agressiva ainda condensa os turnos anteriores.`,compressionOff:`Desativada`,compressionLossless:`Sem perdas`,compressionStandard:`Padrão`,compressionAggressive:`Agressiva`,compressionLossy:`Com perdas`,compressionEngines:`Mecanismos`,compressionEnginesHelp:`Cada mecanismo é uma etapa de reescrita. O modo decide quais mecanismos são executados; desativar um aqui o mantém fora de todos os modos.`,engineDedup:`Blocos repetidos`,engineDedupHelp:`Substitui um bloco de texto que já apareceu antes na conversa por uma referência curta a ele.`,engineLite:`Limpeza de espaços em branco`,engineLiteHelp:`Remove espaços no fim das linhas, junta linhas em branco repetidas e descarta mensagens de sistema duplicadas.`,engineReadLifecycle:`Leituras de arquivo substituídas`,engineReadLifecycleHelp:`Substitui uma leitura anterior de arquivo por uma nota assim que o mesmo arquivo é lido ou editado novamente.`,engineToolfilter:`Filtro de saída de ferramentas`,engineToolfilterHelp:`Encurta a saída de comandos e ferramentas, como builds, testes e instalações. Linhas de erro e de stack trace são sempre preservadas.`,engineJsoncompact:`Tabelas JSON`,engineJsoncompactHelp:`Recodifica arrays JSON longos que compartilham os mesmos campos como uma tabela compacta. É reversível, então nada se perde.`,engineRelevance:`Filtro de relevância`,engineRelevanceHelp:`Descarta as frases menos relacionadas à mensagem mais recente quando uma mensagem excede seu limite de tamanho.`,engineAging:`Turnos anteriores`,engineAgingHelp:`Condensa os turnos anteriores aos mais recentes em um resumo curto que preserva caminhos, erros e decisões.`,engineHardBudget:`Limite de tokens`,engineHardBudgetHelp:`Remove as linhas menos valiosas até que a solicitação caiba na meta de tokens.`,compressionAutoTrigger:`Acionar automaticamente acima dos tokens estimados`,compressionAutoTriggerHelp:`Solicitações estimadas acima desta quantidade de tokens mudam para Agressiva automaticamente. Deixe vazio para desativar.`,compressionPrefixFreeze:`Congelar prefixos de prompt recorrentes`,compressionPrefixFreezeHelp:`Deixa um prompt do sistema intacto depois que o mesmo texto aparece três vezes, para que o cache de prompts do lado do provedor continue funcionando.`,compressionTrustProjectFilters:`Confiar nos arquivos de filtro do projeto`,compressionTrustProjectFiltersHelp:`Também carrega filtros de saída de ferramentas do diretório de trabalho. Desativado por padrão, porque um repositório poderia usá-lo para esconder a saída do modelo.`,compressionStats:`Tamanho economizado`,compressionEstimatedTokensSaved:`Tokens estimados economizados`,compressionPreview:`Prévia ao vivo`,compressionPreviewDescription:`Envie um corpo de solicitação pelo pipeline para ver o que um provedor receberia.`,compressionPreviewPlaceholder:`Cole o JSON da solicitação ou texto simples`,compressionRunPreview:`Executar prévia`,updatesTitle:`Atualizações`,checkForUpdates:`Verificar atualizações`,lastChecked:`Última verificação: {when}`,currentVersion:`Build atual:`,updateAvailable:`Atualização disponível`,changelog:`O que mudou`,upToDate:`Atualizado`,buildAhead:`Esta build está à frente da branch main oficial.`,buildDiverged:`Esta build divergiu da branch main oficial.`,buildUnknown:`Esta build personalizada não pode ser comparada à branch main oficial.`,notGitInstall:`Esta instalação não inclui informações do commit.`,checkFailed:`Não foi possível verificar se há atualizações.`,contactsGithub:`As verificações são manuais e acessam o GitHub.`,autoUpdateCheck:`Verificação automática de atualizações`,autoUpdateCheckHelp:`Consulta o GitHub uma vez por dia em busca de uma nova versão e exibe um lembrete. Desativado por padrão.`,openReleases:`Abrir releases no GitHub`,restartAfterUpdate:`Reinicie o SRouter após a conclusão da 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:`Modelos`,chatModelsTab:`Modelos de chat`,fusionTab:`Fusão`,embeddingsTab:`Embeddings`,imageTab:`Imagem`,videoTab:`Video`,audioTab:`Áudio`,imageDesc:`Modelos de geração de texto para imagem.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Modelos de texto para fala e de fala para texto.`,mediaHint:`Gerar via`,mediaEmpty:`Ainda sem modelos. Eles sincronizam do catálogo.`,ttsHeading:`Texto para fala`,sttHeading:`Fala para texto`,sttHint:`Transcrever via`,sttEmpty:`Ainda sem modelos de fala para texto. Eles sincronizam do catálogo.`,newBadge:`Novo`,monthlyTokenBudget:`Orçamento mensal de tokens`,remaining:`restante`,used:`usados`,usedScopeHint:`Somente requisições de chat, desde o início deste mês civil, somadas em todos os modelos da cadeia ativa, incluindo endpoints personalizados. O tráfego enviado a um provedor fora do SRouter não é contado.`,legendRemainingTitle:`Restante / orçamento mensal de {name} ({platform})`,noPublishedQuota:`+{count} sem cota publicada`,noPublishedQuotaTitle:`Esses modelos não têm orçamento mensal de tokens documentado, então não há restante a exibir.`,of:`de`,showAllModels:`Mostrar os {count} modelos`,showLess:`Mostrar menos`,vision:`Visão`,visionTitle:`Aceita imagens como entrada`,tools:`Ferramentas`,toolsTitle:`Emite chamadas de ferramentas estruturadas, por isso é elegível para solicitações com ferramentas`,retired:`Descontinuado`,penalty:`penalidade de −{value}`,obs:`{count} obs`,tokPerMonth:`{count} tok/mês`,rpmLimit:`{count} rpm`,rpdLimit:`{count} rpd`,noKey:`sem chave`,dragToReorder:`Arraste para reordenar`,dragToReorderGroup:`Arraste para reordenar o modelo`,moveToRank:`Ir para a posição`,providerCount:`{count} provedores`,servedBy:`Servido por {providers}`,viewProviders:`Ver provedores`,backToModels:`Voltar para modelos`,providersHeading:`Provedores que servem este modelo`,codeSnippetHeading:`Use este modelo`,modelNotFound:`Este modelo não está disponível, ou não tem provedores configurados.`,providerIdsHeading:`IDs de modelo do provedor`,providerIdsHint:`Envie o id de modelo unificado para failover entre todos os provedores, ou um id específico do provedor para fixar um provedor.`,copyModelName:`Copiar nome do modelo`,settingsHeading:`Configurações do provedor`,settingsHint:`Edições locais em modelos do catálogo são mantidas entre sincronizações do catálogo. Modelos do catálogo excluídos permanecem excluídos até que você os adicione novamente pela configuração.`,catalogModel:`catálogo`,customModel:`personalizado`,discoveredModel:`descoberto`,localOverride:`substituição local`,displayName:`Nome de exibição`,sizeLabel:`Nível de capacidade`,sizeLabelHint:`Frontier/Large/Medium/Small definem o eixo de inteligência: um nível superior sempre supera um inferior e, dentro de um nível, o ranking de inteligência continua movendo a pontuação. Um modelo sem um nível reconhecido tem a menor pontuação nesse eixo, mas a inteligência é apenas um dos três eixos: com boa confiabilidade e velocidade ele ainda pode ganhar a rota.`,sizeLabelNone:`Nenhum (menor pontuação de inteligência)`,contextWindow:`Contexto`,inFallback:`Na cadeia`,saveModelSettings:`Salvar configurações do modelo`,aggregateBudget:`{count}/mês`,aggregateBudgetTitle:`Total de tokens gratuitos por mês entre os provedores deste modelo`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Limitado por taxa: sem orçamento fixo de tokens mensal`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Uso do limite de taxa na janela de tempo (usado / limite) do provedor com mais folga`,splitOut:`Não mesclar esta cópia`,splitOutHint:`Dá à cópia deste provedor uma entrada separada em vez de mesclá-la no modelo unificado. Você pode mesclá-la de volta na página da própria cópia.`,splitUndo:`Mesclar de volta`,splitUndoHint:`Esta cópia é mantida separada do seu modelo unificado. Mescle-a de volta para voltar a fazer failover entre todos os seus provedores.`,splitBadge:`mantida separada`,noData:`sem dados`,noDataTitle:`Nenhuma solicitação registrada ainda — a confiabilidade e a velocidade deste provedor não foram medidas.`,bestOfN:`melhor de {count}`,perProviderScores:`Pontuações por provedor: {list}`,columnModel:`Modelo`,columnOn:`Ativo`,noModelsBefore:`Nenhum modelo disponível. Adicione chaves de API na `,keysPageLink:`página Chaves`,noModelsAfter:` primeiro.`,hiddenNoKeys:`Ocultos (sem chave): {platforms}`,searchPlaceholder:`Buscar modelos ou provedores…`,clearSearch:`Limpar busca`,ctxAny:`Qualquer contexto`,ctxBadge:`{size} ctx`,ctxTitle:`Janela de contexto`,copyModelId:`Copiar id do modelo`,showingCount:`{shown} de {total} modelos`,clearFilters:`Limpar filtros`,noMatches:`Nenhum modelo corresponde aos seus filtros.`,noModelsTitle:`Nenhum modelo configurado`,intelligenceRank:`Inteligência`,speedRank:`Velocidade`,rankHint:`Classificação no catálogo — 1 é a melhor.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Solicitações por minuto. Deixe em branco para não ter limite.`,limitRpdHint:`Solicitações por dia. Deixe em branco para não ter limite.`,limitTpmHint:`Tokens por minuto. Deixe em branco para não ter limite.`,limitTpdHint:`Tokens por dia. Deixe em branco para não ter limite.`,usageThisMonth:`Uso mensal`,usageEmpty:`Ainda não há solicitações neste mês.`,usageRequestsMonth:`{count} sol. neste mês`,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:`Ativar ou desativar todos os modelos exibidos`,enableAll:`Ativar todos`,disableAll:`Desativar todos`,enableAllHint:`Ative todos os modelos exibidos e salve`,disableAllHint:`Desative todos os modelos exibidos e salve`,enabledOfShown:`{enabled} de {shown} modelos exibidos estão na cadeia`},strategies:{explore:`Explorar modelos sem medições`,exploreHint:`Dá aos modelos sem dados de confiabilidade ou de velocidade 10% de chance de irem primeiro, para que acumulem histórico. O que sai é a sua requisição real, então ela pode ser respondida por um modelo não testado. Para um endpoint personalizado, use «Testar o endpoint» na página Chaves e evite o tráfego real.`,keySelection:`Seleção de chave`,keySelectionAuto:`Automática`,keySelectionLeastRemaining:`Menor restante`,keySelectionHint:`Como escolher entre várias chaves do mesmo provedor. Automática mantém o rodízio atual; Menor restante ordena as chaves pela cota observada e tenta primeiro a que tem mais sobrando.`,cooldownCeiling:`Resfriamento automático máximo`,cooldownCeilingHint:`Limita por quanto tempo as próprias estimativas do roteador podem afastar um par de chave e modelo com falhas. A escada normalmente sobe 2 min, 10 min, 1 h, 24 h, e erros de crédito ou de nível afastam por um dia. Tempos de nova tentativa informados pelo provedor nunca são encurtados.`,cooldownCeilingDefault:`Padrão (até 24 h)`,cooldownCeiling10m:`10 minutos`,cooldownCeiling1h:`1 hora`,cooldownCeiling6h:`6 horas`,moreOptions:`Mais opções`,peakActive:`(horário de pico)`,peakActiveHint:`O ajuste de horário de pico está ativo agora, então estes não são os pesos do próprio preset: 60% do peso de velocidade foi transferido para confiabilidade.`,peakAdjust:`Ajuste de horário de pico`,peakAdjustHint:`Desligado por padrão. Dentro da janela abaixo, transfere 60% do peso de velocidade para confiabilidade — os relés gratuitos ficam mais congestionados nesse período, então a confiabilidade prevê o sucesso melhor que a taxa bruta. Mais rápido e Mais confiável ficam de fora.`,peakFrom:`De`,peakTo:`até`,peakTimezoneLabel:`Fuso horário`,peakUseBrowserTimezone:`Usar o fuso do navegador`,peakTimezoneInvalid:`Fuso horário desconhecido.`,peakExemptNote:`Este preset fica de fora — ele já está em uma das pontas do equilíbrio velocidade/confiabilidade.`,title:`Estratégia de roteamento`,description:`Escolha uma estratégia de roteamento. No modo manual, arraste para definir a ordem; as demais estratégias roteiam por pontuação ao vivo de confiabilidade, velocidade e inteligência.`,weightsSummary:`confiabilidade {reliability}% · velocidade {speed}% · inteligência {intelligence}%`,guardrails:`Proteções`,guardrailsTooltip:`Proteções sempre ativas: margem de cota gratuita × penalidade de limite de taxa ao vivo. Abaixo de 1,0 o modelo está sendo contido.`,scoreTooltip:`Pontuação final de roteamento = média ponderada dos três eixos, multiplicada pelas proteções. A maior é roteada primeiro.`,modeManualHint:`Modo manual: as solicitações seguem a ordem abaixo, de cima para baixo. Arraste para reordenar.`,modeScoreHint:`As pontuações são atualizadas com o tráfego real. A ordem abaixo é como as solicitações são roteadas agora.`,manual:`Manual`,manualBlurb:`Roteia na ordem exata que você definir abaixo. Arraste as alças para reordenar. Sem pontuação; a cadeia é seguida de cima para baixo.`,balanced:`Equilibrado`,balancedBlurb:`A confiabilidade vem primeiro (50%), com velocidade e inteligência ponderadas igualmente (25% cada). Um padrão sensato e versátil.`,smartest:`Mais inteligente`,smartestBlurb:`Prefere o modelo mais capaz que ainda funcione. Inteligência 55%, confiabilidade 35%, velocidade 10%.`,fastest:`Mais rápido`,fastestBlurb:`Prefere o modelo mais rápido que ainda funcione. Velocidade 55%, confiabilidade 35%, inteligência 10%.`,reliable:`Mais confiável`,reliableBlurb:`Maximizar a taxa de sucesso acima de tudo. Confiabilidade 70%, velocidade e inteligência 15% cada.`,custom:`Personalizado`,customBlurb:`Defina seu próprio equilíbrio entre confiabilidade, velocidade e inteligência com controles deslizantes. O mesmo motor das predefinições, mas com seus pesos.`,adjust:`Ajustar`,customWeights:`Pesos personalizados`,customWeightsHelp:`Os controles são independentes; as proporções se equilibram automaticamente em 100%.`,weightReliability:`Confiabilidade`,weightSpeed:`Velocidade`,weightIntelligence:`Inteligência`,weightRequired:`Pelo menos um peso deve ser maior que zero.`,scoreColumn:`Pontuação`},penaltyInspector:{title:`Pressão do roteador`,subtitle:`Penalidades, cooldowns e falhas dos últimos {minutes} min`,rowCount:`{count} ativos`,offChain:`fora da cadeia`,penaltyValue:`Penalidade {value}`,factor:`pontuação x{factor}`,noCooldown:`Sem cooldown`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Limpar tudo`,clearAllHint:`Remove agora todos os resfriamentos, penalidades e sequências de falhas. A pressão é reconstruída a partir dos próximos resultados reais.`,errorsHeading:`{count} erros recentes`,noRecentErrors:`Nenhum erro recente`,noKey:`sem chave`,reasons:{penalty:`penalizado`,cooldown:`cooldown`,recent_errors:`falhando`}},keys:JSON.parse(`{"pageTitle":"Chaves","pageDescription":"As credenciais dos provedores e a chave de API unificada à qual seus aplicativos se conectam.","tabProviders":"Provedores","checklistSummary":"{configured} de {total} provedores configurados","checklistKeyless":"não precisa de chave","checklistNoKeyTip":"Nenhuma chave adicionada ainda. Clique para adicionar uma.","checklistSignupLink":"Abra {provider} para criar uma conta e obter uma chave","checklistKeylessTip":"Funciona sem chave.","tabQuotaSignals":"Sinais de cota","tabApiKey":"Chave de API unificada","tabAnthropic":"Anthropic","unifiedKey":"Sua chave de API unificada","regenerate":"Regenerar","showKey":"Mostrar","hideKey":"Ocultar","copyKey":"Copiar","copyFullKey":"Copiar chave completa","copiedKey":"Copiado","baseUrl":"URL base","endpointChat":"Chat","endpointResponses":"Responses","endpointEmbeddings":"Embeddings","endpointEmbeddingsHint":"model: \\"auto\\" ou uma família da aba Embeddings","endpointMessages":"Messages","endpointMessagesHint":"Compatível com 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":"Aponte um cliente SDK do Claude ou da Anthropic para este servidor. Os clientes da Anthropic enviam nomes de modelos Claude — mapeie cada um para Auto (o roteador escolhe um modelo gratuito) ou fixe um específico.","anthropicBaseUrl":"URL base","anthropicAuth":"Cabeçalho de autenticação","anthropicAuto":"Auto — o roteador escolhe o melhor modelo","anthropicSave":"Salvar mapeamento","anthropicSaved":"Salvo","anthropicNote":"Os clientes da Anthropic mantêm seus nomes de modelos Claude integrados; o mapeamento acima decide como cada um é roteado para o seu pool.","familyDefault":"Padrão","familyOpus":"Opus","familySonnet":"Sonnet","familyHaiku":"Haiku","selectPlatform":"Selecione um provedor","addKey":"Adicionar chave","keyAdded":"Chave adicionada","endpointKeysShareModels":"As chaves do mesmo endpoint compartilham seus 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":"Adicionando…","selectProvider":"Selecione um provedor…","accountId":"ID da conta","label":"Rótulo","noKeyNeeded":"(nenhuma chave necessária)","outboundProxy":"Proxy de saída","outboundProxyDescription":"Roteia as solicitações LLM de saída por um proxy. Compatível com SOCKS5, HTTP e HTTPS.","proxyUrl":"URL do proxy","saveProxy":"Salvar","savingProxy":"Salvando…","proxyLoadFailed":"Não foi possível carregar as configurações do 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":"Adicionar um modelo personalizado compatível com OpenAI","addCustomDescription":"Aponte para qualquer endpoint compatível com OpenAI: llama.cpp, LM Studio, vLLM, um Ollama local ou um gateway remoto. Liste um modelo por linha (ou separados por vírgula) para adicionar vários de uma vez; todos compartilham o mesmo endpoint. A chave de API é opcional (a maioria dos servidores locais não precisa).","customType":"Tipo","customTypeChat":"Chat","customTypeEmbedding":"Embedding","customTypeImage":"Imagem","customTypeAudio":"Áudio","customTypeTranscription":"Transcription","customBaseUrl":"URL base","customModels":"Modelos","customModel":"Modelo","customDisplayName":"Nome de exibição","customDisplayNamePerModel":"por modelo","customDisplayNameOptional":"opcional","customFamily":"Família","customFamilyPlaceholder":"padrão: id do modelo","customApiKey":"Chave de API","customCapabilities":"Recursos","addModel":"Adicionar modelo","modelAdded":"Modelo adicionado","addModels":"Adicionar {count} modelos","addEmbeddingModel":"Adicionar embedding","addImageModel":"Adicionar modelo de imagem","addAudioModel":"Adicionar modelo de áudio","addTranscriptionModel":"Add transcription model","addingCustom":"Adicionando…","discoverModels":"Buscar modelos","probeNow":"Testar o endpoint","probeConfirm":"Enviar até 3 requisições de teste?","probeCapabilities":"raciocínio: {reasoning} · ferramentas: {tools}","probeCapYes":"sim","probeCapNo":"não","probeCapUnknown":"desconhecido","probeSuccess":"{model} testado em {latency} ms","probeFailed":"Falha no teste: {reason}","discoverTitle":"Modelos neste endpoint","discoverHint":"Escolha os modelos a registrar. Os já adicionados ficam bloqueados.","discoverEmpty":"Este endpoint não retornou nenhum modelo.","discoverAlreadyAdded":"Adicionado","discoverSelectAll":"Selecionar tudo","modelsAdded":"{count} modelos adicionados","getApiKey":"Obter chave de API","deleteKeyConfirm":"Excluir esta chave? Esta ação não pode ser desfeita.","checkAll":"Verificar tudo","checking":"Verificando…","editLabel":"Editar rótulo","saveLabel":"Salvar rótulo","unifiedKeyDescBefore":"Use-a como sua ","unifiedKeyDescAfter":" da OpenAI; ela autentica as solicitações a este proxy.","serverUnreachableBefore":"Não foi possível acessar o servidor em ","serverUnreachableAfter":". Verifique se o backend está em execução. npm run dev inicia os dois, e os logs do servidor são impressos sob o prefixo server.","paneProviderKey":"Chave de provedor","paneImportFile":"Importar arquivo","paneCustomEndpoint":"Endpoint personalizado","platform":"Plataforma","hideAdded":"Ocultar provedores adicionados","apiToken":"Token de API","keyOptionalPlaceholder":"Opcional","bearerTokenPlaceholder":"Token Bearer","pasteKeyPlaceholder":"cole a chave aqui","pasteSeveral":"Colar várias","keyOptionalHint":"Opcional: deixe em branco para usar o nível gratuito anônimo (limitado por IP) ou cole sua própria chave para usar sua conta.","enable":"Habilitar","noProviderKeys":"Ainda não há chaves de provedor. Adicione uma acima para começar o roteamento.","filterPlaceholder":"Filtrar provedores ou chaves","filterAll":"Todos","filterHealthy":"Saudáveis","filterIssues":"Com problemas","filterDisabled":"Desabilitados","noFilterMatch":"Nenhum provedor corresponde aos seus filtros.","providerCountSummary":"{providers} provedores · {keys} chaves","summaryHealthy":"{count} saudáveis","summaryIssueOne":"{count} problema","summaryIssueOther":"{count} problemas","providerActions":"Ações do provedor","routeViaProxy":"Rotear pelo proxy","checkNow":"Verificar agora","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":"Também configurável pela variável de ambiente ","proxyEnvHintAfter":" (tem precedência). Deixe em branco para desativar. Exemplos:","importKeys":"Importar chaves de provedor","importKeysDescription":"Envie arquivos .env, JSON, JSONC, CSV, Markdown ou texto.","importFiles":"Arquivos","importFileCount":"{count} selecionados","previewFiles":"Pré-visualizar","previewing":"Pré-visualizando…","selected":"Selecionado","provider":"Provedor","keyName":"Nome da chave","keyValue":"Valor da chave","chooseProvider":"Escolher provedor","noPreviewKeys":"Nenhuma chave encontrada nesses arquivos.","skippedItems":"Ignorados:","moreItems":"+{count} mais","importSelected":"Importar {count}","importing":"Importando…","noImportSelection":"Selecione pelo menos uma linha com um provedor.","duplicate":"Duplicado","duplicatesFound":"{count} duplicado(s) detectado(s) — já existem e serão ignorados.","importResult":"Importados {imported}; falharam {failed}.","importModelCount":"+{count} modelos","importResultWithModels":"Importados {imported}; {models} modelos registrados; falharam {failed}.","confirmRemove":"Confirmar?","quotaSignalsTitle":"Sinais de cota","quotaSignalsEmptyTitle":"Ainda sem observações de cota","quotaSignalsEmptyDesc":"Isto é preenchido quando os provedores retornam cabeçalhos de limite, erros de cota ou sinais de validação.","quotaKeyRef":"chave nº {id}","quotaPoolRef":"pool {pool}","quotaLimit":"Limite","quotaRemaining":"Restante","quotaReset":"Redefinição","quotaObserved":"Observado","tabAgents":"Agentes","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Mapeamento de modelos Gemini","geminiDesc":"Mapeie os nomes Gemini Pro, Flash e Flash-Lite para Auto ou um modelo específico do catálogo.","compatibilityTitle":"Compatibilidade de agentes","compatibilityDesc":"Controle superfícies de compatibilidade opcionais e a descoberta de modelos do Claude Code.","ollamaMode":"Emulação do Ollama","ollamaModeHint":"O loopback aberto nunca aceita tráfego de LAN não autenticado.","ollamaOff":"Desativado","ollamaLoopback":"Aberto no loopback","ollamaKeyRequired":"Chave de API obrigatória","claudeAliases":"Aliases de descoberta do Claude Code","claudeAliasesHint":"Exponha aliases claude/<model> para que o seletor de modelos do gateway possa listar o catálogo.","mcpServer":"Servidor MCP","mcpServerHint":"Expõe o endpoint /mcp para clientes de agente. Instalações novas começam desligadas.","urlTokensTitle":"Tokens de URL revogáveis","urlTokensDesc":"Apenas para clientes sem cabeçalhos. Tokens de URL podem vazar para o histórico e os logs; revogue-os quando não forem mais necessários.","urlTokenLabel":"Rótulo do token","createUrlToken":"Criar token","urlTokenOnce":"Copie este token agora. Ele não será exibido novamente.","revoked":"Revogado","revoke":"Revogar","modelScope":"Escopo de modelos","modelScopeDesc":"Limite esta chave a IDs de modelo específicos. O roteador ignora esta chave para qualquer outro modelo.","modelScopeAdd":"Adicione um ID de modelo e pressione Enter","modelScopeEmpty":"Sem escopo definido — esta chave atende todos os modelos do provedor.","modelScopeClear":"Limpar escopo","modelScopeBadgeOne":"restrita · 1 modelo","modelScopeBadgeOther":"restrita · {count} modelos","modelPicker":{"title":"Quais modelos esta chave deve atender?","hint":"Sua chave da {provider} foi adicionada e no momento atende todos os modelos abaixo. Desmarque os que esta chave não pode usar — o roteador vai ignorá-la para esses modelos.","count":"{selected} de {total} selecionados","allNote":"Tudo selecionado — nada é salvo, e os modelos adicionados ao catálogo depois também vão usar esta chave.","subsetNote":"Esta chave ficará limitada aos modelos selecionados. Você pode alterar isso depois na linha da chave.","skip":"Agora não","scopedOne":"Chave limitada a 1 modelo","scopedOther":"Chave limitada a {count} modelos","allSaved":"Key serves every catalog model"},"cpTitle":"Perfis de cliente","cpDesc":"Chaves de API por cliente, cada uma com um prompt de sistema que o servidor sempre aplica.","cpEmpty":"Ainda não há perfis de cliente.","cpNameLabel":"Nome","cpNamePlaceholder":"ex.: Bot de suporte","cpPromptLabel":"Prompt de sistema (opcional)","cpPromptPlaceholder":"Instruções que o servidor adiciona antes de cada solicitação feita com esta chave.","cpCreate":"Criar perfil","cpRotate":"Rotacionar chave","cpKeyOnce":"Copie esta chave agora — ela não será mostrada novamente.","cpEnabledAria":"Perfil habilitado","selectKey":"Selecionar esta chave","bulkSelected":"{count} selecionadas","bulkEnable":"Habilitar todas","bulkDisable":"Desabilitar todas","bulkDelete":"Excluir todas","bulkDeleteConfirm":"Excluir {count}?","bulkResult":"Atualizadas {done}; falharam {failed}.","bulkDeleteResult":"Excluídas {done}; falharam {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Editar chave","editPlatformLocked":"O provedor e o endpoint não podem ser alterados após a criação.","editCredentialHint":"Deixe em branco para manter a chave atual.","editCredentialPartsRequired":"Informe o ID da conta e o token da API.","editModels":"Editar modelos","editModelsHint":"Escolha quais modelos do catálogo esta chave pode servir. Selecione tudo para limpar o escopo.","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":"Adicionar modelo personalizado","modelId":"ID do modelo","modelIdRequired":"O ID do modelo é obrigatório","modelDisplayName":"Nome de exibição","modelContextWindow":"Janela de contexto (tokens)","modelRateLimits":"Limites de taxa (opcional)","modelSupportsTools":"Suporta chamada de ferramentas","modelSupportsToolsHint":"Ative se este modelo puder executar chamadas de ferramentas e funções","modelSupportsVision":"Suporta visão","modelSupportsVisionHint":"Ative se este modelo aceitar entradas de imagem","createModel":"Criar modelo","modelAddedSuccess":"Modelo personalizado adicionado com sucesso","modelAddFailed":"Falha ao adicionar modelo personalizado","testModel":"Testar","testingModel":"Testando…","testPassedShort":"Passou","testFailedShort":"Falhou","testPassed":"Teste do modelo passou em {latency}ms","testFailed":"Teste do modelo falhou","testThrottled":"Aguarde {seconds}s antes de testar este modelo novamente.","noModelsForProvider":"Nenhum modelo configurado para este provedor.","testModels":"Testar 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} solicitações, {tokens} tokens este mês","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:`saudável`,rateLimited:`limitado`,invalid:`inválido`,error:`erro`,unchecked:`não verificado`},analytics:{title:`Análises`,description:`Volume de solicitações, latência, consumo de tokens e falhas.`,range24h:`24 h`,range7d:`7 d`,range30d:`30 d`,range90d:`90 d`,requests:`Solicitações`,successRate:`Taxa de sucesso`,inputTokens:`Tokens de entrada`,outputTokens:`Tokens de saída`,avgLatency:`Latência média`,p95Latency:`Latência P95`,avgTtft:`TTFT médio`,estSavings:`Economia est.`,requestsByProvider:`Solicitações por provedor`,avgLatencyByProvider:`Latência média por provedor`,ttftByProvider:`Tempo até o primeiro token por provedor`,ttftEmpty:`Nenhum tempo até o primeiro token registrado ainda.`,requestsOverTime:`Solicitações ao longo do tempo`,tokensOverTime:`Tokens ao longo do tempo`,byModel:`Por modelo`,byPlatform:`Por plataforma`,errors:`Erros`,errorDistribution:`Distribuição de erros`,pinnedRequests:`Solicitações fixadas`,pinnedHonored:`Respeitadas`,fallbackAttempts:`Tentativas de fallback`,savingsHint:`Você economizou de fato {actual} $ nos últimos {range}. É quanto os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número exibido projeta seu ritmo dos {span} de dados mais recentes para 30 dias completos.`,savingsHintExact:`Você economizou de fato {actual} $ nos últimos {range}. É quanto os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número exibido é o seu total real de 30 dias.`,requestsHintPinned:`{pinned} destas solicitações fixaram um modelo específico pelo nome. {honored} foram atendidas pelo modelo fixado; {failed} fizeram fallback para outro. As demais foram roteadas automaticamente.`,requestsHintAuto:`Todas as solicitações deste período foram roteadas automaticamente; nenhum cliente fixou um modelo específico pelo nome.`,requestsHintTypes:`{chat} solicitações de chat e {embedding} de embeddings.`,rangeLabel24h:`24 horas`,rangeLabel7d:`7 dias`,rangeLabel30d:`30 dias`,rangeLabel90d:`90 dias`,spanDays:`{count} dias`,spanHours:`{count} horas`,latencyMs:`Latência (ms)`,latency:`Latência`,pinned:`Fixado`,inTokens:`Tokens de entrada`,outTokens:`Tokens de saída`,saved:`Economizado`,message:`Mensagem`,time:`Hora`,perModelBreakdown:`Detalhamento por modelo`,usageByKey:`Uso por chave`,keyColumn:`Chave`,keyLabelFallback:`Chave nº {id}`,errorsByProvider:`Erros por provedor`,recentErrors:`Erros recentes`,noErrors:`Sem erros`,recentCalls:`Chamadas recentes`,clientIp:`IP do cliente`,clientAgent:`Aplicativo cliente`,requestedModelHint:`Solicitado {model}, servido por fallback`,attempts:`Tentativas`,filterAll:`Todas`,filterCanceled:`Canceladas`,providerBreakdown:`Detalhamento por provedor`,tokensPerSec:`Tok/s`,allProviders:`Todos os provedores`,requestDetailTitle:`Requisição #{id}`,failoverLadder:`Escada de failover`,failoverLadderHint:`Cada salto que esta requisição deu pela cadeia de fallback, em ordem.`,noAttemptTrace:`Nenhum rastro de tentativas foi registrado para esta requisição.`,keyOrdinal:`chave #{n}`,keyBadge:`Chave #{n}`,attemptTimingHint:`Deslocamento desde o início da requisição · duração da tentativa`,requestedModel:`Modelo solicitado`,ttft:`TTFT`,requestsByAgent:`Solicitações por agente`,sortBy:`Ordenar por {column}`,sortHint:`A ordenação se aplica às {count} linhas carregadas`,cacheHitRate:`Taxa de acerto do cache`,cacheSavedTokens:`{tokens} tokens economizados`,cacheHitRateHint:`{hits} acertos contra {misses} erros desde o início do servidor · {requests} chamadas ao provedor evitadas`},logs:{title:`Logs`,description:`Log do servidor ao vivo. Novas entradas chegam enquanto a página está aberta.`,pause:`Pausar`,resume:`Retomar`,clear:`Limpar logs`,cleared:`Log do servidor limpo`,levelFilter:`Níveis de log`,levels:{debug:`Debug`,info:`Info`,warn:`Aviso`,error:`Erro`},countsHint:`As contagens são totais de todo o buffer de log no servidor, não apenas das entradas que correspondem a estes filtros.`,searchPlaceholder:`Buscar mensagens do log…`,jumpToLatest:`Ir para as mais recentes`,showMore:`Mostrar mais`,showLess:`Mostrar menos`,buffered:`Mostrando {count} de até {max} entradas no buffer`,emptyTitle:`Ainda sem entradas de log`,emptyDescription:`As entradas aparecem aqui conforme o servidor as grava. Amplie os filtros de nível, provedor ou busca se você esperava alguma saída.`,noLevelsTitle:`Nenhum nível selecionado`,noLevelsDescription:`Ative pelo menos um nível para ver a saída do log.`,loadFailed:`Não foi possível carregar o log do servidor.`},playground:{title:`Playground`,description:`Envie uma conclusão de chat pelo roteador e veja qual provedor a atende.`,autoModel:`Auto (cadeia de fallback)`,fusionModel:`Fusão (síntese multimodelo)`,selectModel:`Selecionar modelo`,searchModels:`Buscar modelos…`,noModelsFound:`Nenhum modelo encontrado`,send:`Enviar`,sending:`Enviando…`,clear:`Limpar`,inputPlaceholder:`Digite uma mensagem… (⏎ para enviar, ⇧⏎ para nova linha)`,emptyTitle:`Envie uma mensagem para começar.`,emptyDescription:`Usando {model}. Troque de modelo no seletor acima.`,noModels:`Ainda não há modelos. Adicione uma chave de API na página Chaves para preencher esta lista.`,copyReply:`Copiar resposta`,fallback:`fallback`,fallbacks:`fallbacks`,fusionPanel:`Painel`,fusionJudge:`Juiz`,fusionTrace:`{count} respostas de modelos`,fusionFailed:`sem resposta`,fusionJudgeSynth:`sintetizou a resposta final`,errorPrefix:`Erro:`,systemPromptLabel:`Prompt do sistema`,systemPromptPlaceholder:`Opcional. Enviado como uma mensagem de sistema antes do seu chat.`,showSettings:`Mostrar configurações`,hideSettings:`Ocultar configurações`,samplingHeading:`Amostragem`,samplingHelp:`Desativado, vale o padrão do próprio provedor. Só são enviados os controles que você ativar.`,samplingDefault:`Padrão`,temperature:`Temperatura`,topP:`Top P`,maxTokens:`Máximo de tokens`,errorTitle:`A solicitação falhou`,attach:`Anexar arquivos`,attachTooMany:`Você pode anexar até {count} arquivos por mensagem.`,attachTooLarge:`{name} é muito grande. O limite é {max}.`,attachUnsupported:`{name} não é compatível. Anexe imagens (PNG, JPEG, WebP, GIF) ou arquivos de texto (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Não foi possível ler {name}.`,noVisionBadge:`Sem imagens`,visionWarning:`{model} não aceita imagens. Escolha um modelo de visão ou Auto.`,dictate:`Ditar`,dictationStop:`Parar gravação`,dictationTranscribing:`Transcrevendo…`,dictationUnavailable:`Adicione provedores de modelos de áudio para usar o ditado.`,dictationModel:`Modelo de ditado`,dictationFailed:`Falha na transcrição: {reason}`,artifactOpen:`Abrir prévia`,artifactPreview:`Prévia`,artifactCode:`Código`,artifactClose:`Fechar prévia`,artifactDownload:`Baixar`,artifactReload:`Recarregar prévia`,artifactHtml:`Página HTML`,artifactSvg:`Imagem SVG`,artifactLines:`linhas`,artifactResize:`Redimensionar prévia`},playgroundSessions:{heading:`Conversas`,newConversation:`Nova conversa`,showSidebar:`Mostrar conversas`,hideSidebar:`Ocultar conversas`,empty:`Ainda não há conversas salvas.`,untitled:`Conversa sem título`,rename:`Renomear`,renamePlaceholder:`Nome da conversa`,messageCount:`{count} mensagens`,justNow:`agora mesmo`,minutesAgo:`há {count} min`,hoursAgo:`há {count} h`,daysAgo:`há {count} d`,loadFailed:`Não foi possível abrir essa conversa.`,renameFailed:`Não foi possível renomear essa conversa.`,deleteFailed:`Não foi possível excluir essa conversa.`,actions:`Ações da conversa`,newChat:`Novo chat`},embeddings:{title:`Modelos`,description:`Os embeddings fazem failover apenas dentro de uma mesma família: o mesmo modelo servido por outro provedor. Vetores de modelos diferentes são incompatíveis, então o roteador nunca troca de modelo sem você saber.`,defaultBadge:`Padrão · auto`,makeDefault:`Definir como padrão`,moveUp:`Mover para cima`,moveDown:`Mover para baixo`,usageToday:`{count} sol. hoje`,usageMonth:`{count} tok este mês`,autoDescription:`model: "auto" em POST /v1/embeddings roteia para a família padrão. Nomear uma família (ou um id de modelo de provedor) fixa essa família; os provedores dentro dela são tentados em ordem.`,unsavedChanges:`Alterações não salvas`,saveChanges:`Salvar alterações`,savingChanges:`Salvando…`,tokMax:`{tokens} tok máx.`,emptyTitle:`Ainda sem modelos de embeddings`,emptyDesc:`As famílias de embeddings aparecem aqui quando você adiciona uma chave de provedor com suporte a embeddings.`,dragToReorder:`Arraste para reordenar o provedor`},fusion:{title:`Fusão`,description:`Um painel de modelos responde em paralelo e, em seguida, um juiz sintetiza uma resposta mais forte. Use-a chamando a API com o modelo "fusion".`,panelSource:`Origem do painel`,panelSourceHelp:`De onde vêm os modelos do painel quando uma requisição não especifica os seus.`,mode:{auto:`Auto (cadeia de fallback)`,autoHelp:`Escolhe um conjunto diverso de modelos da sua cadeia de fallback, ordenados pela sua estratégia de roteamento ativa.`,explicit:`Painel explícito`,explicitHelp:`Sempre usar os modelos específicos que você escolher abaixo.`},panelModels:`Modelos do painel`,selectedCount:`{count} de {max} selecionados`,noModels:`Nenhum modelo conectado ainda. Adicione uma chave de API e depois ative modelos na cadeia de fallback.`,panelSize:`Tamanho do painel`,panelSizeHelp:`Quantos modelos diversos selecionar automaticamente (1–{max}).`,judge:`Modelo juiz`,judgeHelp:`O modelo que sintetiza as respostas do painel em uma só. "Auto" usa o seu melhor modelo disponível.`,judgeAuto:`Auto (melhor disponível)`,strategy:`Estratégia`,strategySynthesize:`Síntese: combina o painel em uma única resposta`,strategyBestOf:`Melhor resposta: retorna a resposta mais forte (sem chamar o juiz)`,strategySynthesizeShort:`Síntese`,strategyBestOfShort:`Melhor resposta`,exposePanel:`Expor detalhes do painel`,exposePanelHelp:`Anexa a resposta de cada modelo e os metadados do juiz em um campo x_fusion na resposta.`,howToUse:`Como usar`,howToUseHelp:`Envie uma requisição de chat normal com o modelo "fusion". Estas configurações são o padrão; qualquer requisição pode sobrescrevê-las com um campo "fusion".`,unsavedChanges:`Alterações não salvas`,save:`Salvar`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Premium`,description:`O catálogo de modelos ao vivo, em todos os seus dispositivos.`,loading:`Carregando…`,checkForUpdates:`Verificar atualizações`,syncing:`Sincronizando…`,catalogFeed:`Feed do catálogo`,liveFeed:`Feed ao vivo`,monthlySnapshot:`Instantâneo mensal`,lastChecked:`Última verificação: {when}`,liveDescription:`Novos modelos gratuitos, mudanças de cota e correções chegam aqui poucas horas após serem lançados. O aplicativo verifica automaticamente duas vezes por dia; nada a fazer.`,snapshotDescription:`Nível gratuito: o catálogo é atualizado a partir de um instantâneo mensal, verificado automaticamente duas vezes por dia. O Premium muda isso para o feed ao vivo, atualizado a cada 2 a 3 dias.`,lastSyncProblem:`Problema na última sincronização: {error}`,license:`Licença`,planAnnual:`Premium Anual`,planLifetime:`Premium Vitalício`,expired:`Expirada`,inactive:`Inativa`,lifetimeNote:`Licença vitalícia: nunca expira.`,renewsOn:`Renova em {date}.`,willNotRenew:`Não será renovada. Premium até {date}; depois, esta instalação volta para o catálogo mensal gratuito.`,keyInactive:`Esta chave não está mais ativa. O aplicativo continua funcionando com o catálogo mensal gratuito.`,manageSubscription:`Gerenciar assinatura`,openingPortal:`Abrindo…`,removeKey:`Remover a chave deste dispositivo`,manageHint:`"Gerenciar assinatura" abre o portal de faturamento da Stripe: cancelar, atualizar seu cartão ou baixar faturas. Remover a chave apenas desativa este dispositivo; sua compra permanece intacta.`,licenseKey:`Chave de licença`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Ativar`,activating:`Ativando…`,keyHint:`Sua chave está no e-mail de compra e na página pós-pagamento. Perdeu?`,recoverKey:`Recupere-a no site`,upsellTitle:`Vá para o ao vivo por US$ 19 por ano`,upsellDescription:`Novos modelos gratuitos no momento em que existem, em vez de 30 dias depois. Uma chave, todos os dispositivos. Cancele quando quiser; o roteador continua gratuito para sempre.`,goPremium:`Assinar o Premium`,bundled:`incluído`,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 deu errado`,boundaryDescription:`O painel encontrou um erro inesperado. Seus dados estão seguros. Tente novamente ou volte para a página de modelos.`,tryAgain:`Tentar novamente`,goHome:`Voltar aos modelos`},notFound:{title:`Página não encontrada`,description:`Esta página não existe ou pode ter sido movida.`},setup:{title:`Primeiros passos`,subtitle:`Três passos para rotear sua primeira solicitação.`,progress:`{done} de {total}`,step1Title:`Adicione uma chave de provedor`,step1Desc:`Conecte pelo menos uma conta de provedor. Chaves gratuitas funcionam.`,step1Cta:`Adicionar chaves`,step2Title:`Envie uma solicitação de teste`,step2Desc:`Escolha qualquer modelo no Playground e diga olá.`,step2Cta:`Abrir Playground`,step3Title:`Conecte seu aplicativo`,step3Desc:`Use sua chave de API unificada com qualquer cliente compatível com OpenAI.`,copyKey:`Copiar chave de API`,copyUrl:`Copiar URL base`,copiedKey:`Chave de API copiada para a área de transferência`,copiedUrl:`URL base copiada para a área de transferência`},palette:{title:`Paleta de comandos`,placeholder:`Buscar páginas, modelos, ações…`,empty:`Sem resultados`,groupPages:`Páginas`,groupActions:`Ações`,groupModels:`Modelos`,toggleTheme:`Alternar modo escuro`},validation:{required:`Obrigatório`,url:`Insira uma URL válida começando com http:// ou https://`,email:`Insira um endereço de e-mail válido`,passwordMin:`Pelo menos {min} caracteres`},agents:{title:`Agentes de codificação`,description:`Conecte ferramentas de codificação a um único gateway de modelos gratuitos com configuração gerada e segura para backup.`,apiKey:`Chave de API`,quickstartTitle:`Início rápido`,quickstart:`Caminho mais rápido: configure o Claude Code a partir do catálogo ao vivo.`,currentKey:`Chave unificada atual:`,seenRecently:`Visto recentemente`,setupLabel:`Configuração automática`,setupHint:`Escreve para você o arquivo de configuração desta ferramenta, apontando para este gateway.`,setupGuideHint:`Exibe os passos de configuração desta ferramenta; nenhum arquivo é escrito.`,manualLabel:`Conexão manual`,manualHint:`URL base e chave para inserir nas configurações da própria ferramenta.`,endpoint:`Endpoint`,documentation:`Documentação`,descriptions:{claude:`O agente de terminal da Anthropic: planeja, edita arquivos e roda comandos no seu repositório.`,codex:`O agente de terminal da OpenAI, que primeiro executa a tarefa em uma sandbox local.`,cline:`Uma extensão do VS Code que pede sua aprovação para cada edição e cada comando.`,continue:`Uma extensão para VS Code e JetBrains, com autocompletar e chat enquanto você digita.`,aider:`Um par de programação na linha de comando que vira cada mudança em um commit próprio.`,opencode:`Um agente de terminal independente de provedor, com interface de texto em tela cheia.`,goose:`O agente local da Block, ampliado por servidores MCP para ir além do código.`,qwen:`Um fork do Gemini CLI ajustado para os modelos Qwen e repositórios grandes.`,roo:`Uma extensão do VS Code com modos alternáveis: arquiteto, programador, depurador.`,kilo:`Uma extensão do VS Code que une Roo e Cline, com um orquestrador que divide o trabalho.`,crush:`O agente de terminal da Charm, escrito em Go, com uma sessão por projeto.`,dsh:`O harness da DeepSeek, que guarda cada provedor como uma rota que você pode trocar.`,mimo:`O agente de terminal da Xiaomi, um fork do OpenCode que aceita qualquer provedor compatível com OpenAI.`,cursor:`O editor centrado em IA; ele passa pela nuvem da Cursor, então precisa de uma URL pública.`,generic:`Qualquer outra ferramenta que fale a API da OpenAI, configurada à mão com URL base e chave.`,atomcode:`O agente de terminal da AtomGit, escrito em Rust, que aceita qualquer endpoint compatível com OpenAI.`,openclaw:`Um assistente pessoal sempre ativo que responde no WhatsApp, Telegram, Discord e outros a partir da sua própria máquina.`,hermes:`O agente autoaperfeiçoável da Nous Research, com memória persistente e habilidades, no terminal ou em apps de chat.`,pi:`Um agente de terminal minimalista que você molda com suas próprias extensões, habilidades e modelos de prompt.`}},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 do nível gratuito ({count})`,poolsToggleBare:`Grupos do nível gratuito`,summary:`{pools} grupos · {budget} tokens/mês contados uma vez por grupo · {credits} baseados em créditos · {unpublished} não publicados`,pool:`Grupo`,models:`Modelos`,budget:`Orçamento mensal`,kind:`Tipo`,kindDocumented:`Documentado`,kindCredits:`Créditos`,kindUnpublished:`Não publicado`,remaining:`Restante`,resetAt:`Reinicia em`,disabledModels:`({count} desligados)`,metricTokens:`tokens`,metricRequests:`requisições`,metricCredits:`créditos`,metricNeurons:`neurônios`,metricOther:`unidades`,empty:`Nenhum modelo ativado com dados de orçamento do nível 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:`Cadeias de fallback`,description:`Cadeias nomeadas, cada uma chamável como auto:<name> em /v1/models.`,count:`{count} cadeias`,active:`Ativa`,default:`Padrão`,activate:`Ativar`,activateHint:`Fazer a tabela abaixo editar esta cadeia e o roteamento auto usá-la`,deleteHint:`Excluir esta cadeia`,deleteConfirm:`Excluir a cadeia "{name}"?`,create:`Criar`,createPlaceholder:`Nome da cadeia`,createFailed:`Não foi possível criar a cadeia.`,nameRules:`Até 20 caracteres: letras, dígitos, hifens e sublinhados.`,startEmpty:`Começar vazia`,startEmptyHint:`Cria a cadeia sem modelos e mantém de fora os novos modelos do catálogo. Sem marcar, ela começa como cópia da cadeia padrão.`,curated:`Curada`,curatedHint:`Novos modelos do catálogo não são adicionados a esta cadeia automaticamente.`,renameHint:`Renomear esta cadeia`,renameConfirm:`Renomear a cadeia "{oldName}" para "{name}"? Clientes que chamam auto:{oldName} devem mudar para auto:{name}.`,renamePlaceholder:`Novo nome da cadeia`,renameFailed:`Não foi possível renomear a cadeia.`},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:`Parque infantil`,keys:`Chaves`,analytics:`Análise`,premium:`Premium`,upgrade:`Atualização`,settings:`Definições`,signOut:`Desligar`,openMenu:`Abrir menu de navegação`,switchLight:`Mudança para tema de luz`,switchDark:`Mudança para tema sombrio`,switchToChinese:`Mudança para o chinês`,switchToEnglish:`Mudança para inglês`,modelsMenu:`Navegar pelos tipos de modelos`,agents:`Agentes`,logs:`Registos`,analyticsMenu:`Páginas de análise`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Crie a sua conta`,signIn:`Iniciar sessão`,email:`Email`,password:`Palavra-passe`,emailPlaceholder:`you@example.com`,passwordPlaceholderSetup:`pelo menos 8 personagens`,passwordPlaceholderLogin:`A tua palavra-passe`,setupDescription:`Defina o email e a palavra-passe que vão proteger este dashboard.`,loginDescription:`Inicie sessão para gerir as suas chaves, roteamento e análises.`,createAccount:`Criar conta`,creating:`Criar...`,signingIn:`A iniciar sessão...`,loading:`A carregar...`,newPasswordAutoComplete:`nova palavra-passe`,currentPasswordAutoComplete:`palavra-passe atual`,serverUnreachableBefore:`Não consigo contactar o servidor. Certifica-te de que o backend está a funcionar (`,serverUnreachableAfter:`).`,setupCode:`Código de configuração`,setupCodePlaceholder:`Código dos registos do servidor`,setupCodeHint:`Configurar a partir de outro dispositivo exige que o código de uso único seja impresso nos registos do servidor no arranque.`,changePassword:`Alterar palavra-passe`,changeEmail:`Alterar e-mail`,forgotPassword:`Esqueceu-se da palavra-passe?`,currentPassword:`Palavra-passe atual`,newPassword:`Nova palavra-passe`,newEmail:`Novo e-mail`,resetCode:`Código de reposição`,resetCodePlaceholder:`código dos registos do servidor`,resetCodeHint:`O código está no registo do servidor. Nunca é enviado por e-mail.`,forgotPasswordDescription:`Clique no botão abaixo para gerar um código de reposição. O código é escrito no registo do servidor, nunca enviado por e-mail. Introduza-o aqui para definir uma nova palavra-passe.`,requestResetCode:`Enviar código`,requestingResetCode:`A enviar…`,resetPassword:`Repor palavra-passe`,resettingPassword:`A repor…`,changingPassword:`A alterar…`,changingEmail:`A alterar…`,backToLogin:`Voltar ao início de sessão`,passwordChanged:`Palavra-passe alterada com sucesso.`,emailChanged:`E-mail alterado com sucesso.`,passwordReset:`Palavra-passe reposta. Inicie sessão.`,resetCodeDockerHint:`Está a usar Docker? O código está no registo do contentor: docker logs <container>.`,desktopSessionFailed:`O painel não conseguiu iniciar sessão no servidor local. Feche o SRouter e volte a abri-lo.`},common:{save:`Guardar`,saving:`A salvar...`,cancel:`Cancelar`,discard:`Descartar`,delete:`Eliminar`,confirm:`Confirmar`,copy:`Cópia`,copied:`Copiado`,copyFailed:`Não foi possível copiar — selecione o texto e copie manualmente`,show:`Programa`,hide:`Esconde-te`,apply:`Candidata-te`,applied:`Aplicado`,applying:`A candidatar-se...`,active:`Ativo`,inactive:`Inativo`,never:`nunca`,loading:`A carregar...`,error:`Erro`,noData:`Ainda sem dados`,unsavedChanges:`Alterações não guardadas`,saveChanges:`Alterações de gravação`,remove:`Remover`,unknownError:`Erro desconhecido`,model:`Modelo`,provider:`Fornecedor`,success:`Sucesso`,failures:`Falhas`,dismiss:`Arquivamento`,status:`Estado`},settings:{title:`Definições`,language:`Língua`,theme:`Tema`,themeSystem:`Sistema`,themeLight:`Claro`,themeDark:`Escuro`,searchLanguage:`Procurar idiomas…`,noLanguages:`Nenhuma língua encontrada`,sections:`Secções das definições`,sectionGeneral:`Geral`,sectionCompression:`Compressão`,sectionAdvanced:`Avançado`,sectionPreview:`Pré-visualização`,generalDescription:`Idioma e aspeto deste painel.`,advancedDescription:`Limiares e interruptores de segurança do pipeline de compressão.`,compressionTitle:`Compressão de prompts`,compressionDescription:`Reduza o tamanho dos pedidos antes do encaminhamento, preservando código, erros, caminhos, números e definições de ferramentas.`,compressionHelp:`Reescreve cada pedido antes de ser enviado a um fornecedor, para que use menos tokens. Código, erros, caminhos de ficheiros e números são protegidos, e qualquer reescrita que os danifique é descartada.`,compressionMode:`Modo`,compressionModeHelp:`Desativada envia os pedidos sem alterações. Sem perdas remove apenas o texto duplicado e desperdiçado. Padrão também encurta a saída das ferramentas. Agressiva condensa ainda os turnos anteriores.`,compressionOff:`Desativada`,compressionLossless:`Sem perdas`,compressionStandard:`Padrão`,compressionAggressive:`Agressiva`,compressionLossy:`Com perdas`,compressionEngines:`Motores`,compressionEnginesHelp:`Cada motor é um passo de reescrita. O modo decide que motores são executados; desativar um aqui mantém-no fora de todos os modos.`,engineDedup:`Blocos repetidos`,engineDedupHelp:`Substitui um bloco de texto que já apareceu antes na conversa por uma referência curta ao mesmo.`,engineLite:`Limpeza de espaços em branco`,engineLiteHelp:`Remove espaços no fim das linhas, junta linhas em branco repetidas e elimina mensagens de sistema duplicadas.`,engineReadLifecycle:`Leituras de ficheiros substituídas`,engineReadLifecycleHelp:`Substitui uma leitura anterior de um ficheiro por uma nota assim que o mesmo ficheiro é lido ou editado novamente.`,engineToolfilter:`Filtro de saída das ferramentas`,engineToolfilterHelp:`Encurta a saída de comandos e ferramentas, como builds, testes e instalações. As linhas de erro e de stack trace são sempre preservadas.`,engineJsoncompact:`Tabelas JSON`,engineJsoncompactHelp:`Recodifica arrays JSON longos que partilham os mesmos campos como uma tabela compacta. É reversível, por isso nada se perde.`,engineRelevance:`Filtro de relevância`,engineRelevanceHelp:`Descarta as frases menos relacionadas com a mensagem mais recente quando uma mensagem excede o seu limite de tamanho.`,engineAging:`Turnos anteriores`,engineAgingHelp:`Condensa os turnos anteriores aos mais recentes num resumo curto que preserva caminhos, erros e decisões.`,engineHardBudget:`Limite de tokens`,engineHardBudgetHelp:`Remove as linhas menos valiosas até que o pedido caiba no objetivo de tokens.`,compressionAutoTrigger:`Ativar automaticamente acima dos tokens estimados`,compressionAutoTriggerHelp:`Os pedidos estimados acima deste número de tokens mudam automaticamente para Agressiva. Deixe vazio para desativar.`,compressionPrefixFreeze:`Congelar prefixos de prompt recorrentes`,compressionPrefixFreezeHelp:`Deixa um prompt do sistema intacto depois de o mesmo texto ter sido visto três vezes, para que a cache de prompts do lado do fornecedor continue a funcionar.`,compressionTrustProjectFilters:`Confiar nos ficheiros de filtro do projeto`,compressionTrustProjectFiltersHelp:`Carrega também filtros de saída de ferramentas a partir do diretório de trabalho. Desativado por predefinição, porque um repositório poderia usá-lo para esconder a saída do modelo.`,compressionStats:`Tamanho poupado`,compressionEstimatedTokensSaved:`Tokens estimados poupados`,compressionPreview:`Pré-visualização em direto`,compressionPreviewDescription:`Envie um corpo de pedido pelo pipeline para ver o que um fornecedor receberia.`,compressionPreviewPlaceholder:`Cole o JSON do pedido ou texto simples`,compressionRunPreview:`Executar pré-visualização`,updatesTitle:`Atualizações`,checkForUpdates:`Verifique atualizações`,lastChecked:`Última verificação: {when}`,currentVersion:`Compilação atual:`,updateAvailable:`Atualização disponível`,changelog:`O que mudou`,upToDate:`Atualizado`,buildAhead:`Esta compilação está à frente do ramo main oficial.`,buildDiverged:`Esta compilação divergiu do ramo main oficial.`,buildUnknown:`Esta compilação personalizada não pode ser comparada com o ramo main oficial.`,notGitInstall:`Esta instalação não inclui informações do commit.`,checkFailed:`Não foi possível procurar atualizações.`,contactsGithub:`As verificações são manuais e contactam o GitHub.`,autoUpdateCheck:`Verificação automática de atualizações`,autoUpdateCheckHelp:`Consulta o GitHub uma vez por dia à procura de uma nova versão e mostra um lembrete. Desativado por predefinição.`,openReleases:`Abrir lançamentos no GitHub`,restartAfterUpdate:`Reinicie o SRouter após a conclusão da compilação.`,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:`Fusão`,embeddingsTab:`Embeddings`,imageTab:`Imagem`,videoTab:`Video`,audioTab:`Áudio`,imageDesc:`Modelos de geração de texto para imagem.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Modelos de texto para fala e de voz para texto.`,mediaHint:`Gerar via`,mediaEmpty:`Ainda não há modelos. Eles sincronizam a partir do catálogo.`,ttsHeading:`Texto para fala`,sttHeading:`Voz para texto`,sttHint:`Transcrever via`,sttEmpty:`Ainda não há modelos de voz para texto. Eles sincronizam a partir do catálogo.`,newBadge:`Novo`,monthlyTokenBudget:`Orçamento mensal de tokens`,remaining:`remanescente`,used:`Usado`,usedScopeHint:`Apenas pedidos de chat, desde o início deste mês civil, somados em todos os modelos da cadeia ativa, incluindo endpoints personalizados. O tráfego enviado a um fornecedor fora do SRouter não é contado.`,legendRemainingTitle:`Restante / orçamento mensal de {name} ({platform})`,noPublishedQuota:`+{count} sem quota publicada`,noPublishedQuotaTitle:`Estes modelos não têm orçamento mensal de tokens documentado, pelo que não há restante para mostrar.`,of:`de`,showAllModels:`Mostrar todos os modelos {count}`,showLess:`Mostrar menos`,vision:`Visão`,visionTitle:`Aceita entrada de imagem`,tools:`Ferramentas`,toolsTitle:`Emite chamadas estruturadas de ferramentas, tornando-se elegível para pedidos de suporte de ferramenta`,retired:`Descontinuado`,penalty:`−{value} penalização`,obs:`{count} obs`,tokPerMonth:`{count} tok/mo`,rpmLimit:`{count} rpm`,rpdLimit:`{count} RPD`,noKey:`sem chave`,dragToReorder:`Arrasto para reordenação`,dragToReorderGroup:`Arrasto para reordenar o modelo`,moveToRank:`Ir para a posição`,providerCount:`{count} Prestadores`,servedBy:`Servido por {providers}`,viewProviders:`Ver fornecedores`,backToModels:`Voltar aos modelos`,providersHeading:`Prestadores que servem este modelo`,codeSnippetHeading:`Usa este modelo`,modelNotFound:`Este modelo não está disponível, ou não tem fornecedores configurados.`,providerIdsHeading:`Ids de modelos de fornecedor`,providerIdsHint:`Envie o ID unificado do modelo para failover em todos os fornecedores, ou um id específico do fornecedor para fixar um fornecedor.`,copyModelName:`Copiar nome do modelo`,settingsHeading:`Configurações do fornecedor`,settingsHint:`As edições locais nos modelos de catálogo são mantidas entre as sincronizações do catálogo. Os modelos de catálogo apagados ficam eliminados até os adicionares novamente através da configuração.`,catalogModel:`Catálogo`,customModel:`Personalizado`,discoveredModel:`descoberto`,localOverride:`Sobreposição local`,displayName:`Nome de exibição`,sizeLabel:`Escalão de capacidade`,sizeLabelHint:`Frontier/Large/Medium/Small determinam o eixo da inteligência: um escalão superior supera sempre um inferior e, dentro do mesmo escalão, a classificação de inteligência continua a mover a pontuação. Um modelo sem escalão reconhecido obtém a pontuação mais baixa neste eixo, mas a inteligência é apenas um dos três eixos: com boa fiabilidade e velocidade pode mesmo assim ser encaminhado.`,sizeLabelNone:`Nenhum (pontuação de inteligência mais baixa)`,contextWindow:`Contexto`,inFallback:`Em cadeia`,saveModelSettings:`Guardar definições do modelo`,aggregateBudget:`{count}/mês`,aggregateBudgetTitle:`Total de tokens gratuitos por mês em todos os fornecedores deste modelo`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Taxa limitada — sem orçamento mensal fixo para tokens`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Utilização do limite de taxa na janela de tempo (usado / limite) do fornecedor com mais margem`,splitOut:`Não mescle esta cópia`,splitOutHint:`Dê à cópia deste fornecedor a sua própria entrada separada em vez de a fundir no modelo unificado. Pode mesclá-lo na própria página da cópia.`,splitUndo:`Mesclar de volta`,splitUndoHint:`Esta cópia é mantida separada do seu modelo unificado. Mescle-o novamente para fazer failover em todos os seus fornecedores novamente.`,splitBadge:`mantido separado`,noData:`sem dados`,noDataTitle:`Nenhuma solicitação registada ainda — a fiabilidade e a velocidade não são medidas para este fornecedor.`,bestOfN:`o melhor de {count}`,perProviderScores:`Pontuações por fornecedor: {list}`,columnModel:`Modelo`,columnOn:`Em`,noModelsBefore:`Não há modelos disponíveis. Adicionar API teclas no`,keysPageLink:`Página de Chaves`,noModelsAfter:`Primeiro.`,hiddenNoKeys:`Escondido (sem chaves): {platforms}`,searchPlaceholder:`Pesquise modelos ou fornecedores...`,clearSearch:`Pesquisa limpa`,ctxAny:`Qualquer contexto`,ctxBadge:`{size} CTX`,ctxTitle:`Janela de contexto`,copyModelId:`Copiar o ID do modelo`,showingCount:`{shown} dos modelos {total}`,clearFilters:`Filtros transparentes`,noMatches:`Nenhum modelo corresponde aos teus filtros.`,noModelsTitle:`Sem modelos configurados`,intelligenceRank:`Inteligência`,speedRank:`Velocidade`,rankHint:`Classificação no catálogo — 1 é a melhor.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Pedidos por minuto. Deixe em branco para não ter limite.`,limitRpdHint:`Pedidos por dia. Deixe em branco para não ter limite.`,limitTpmHint:`Tokens por minuto. Deixe em branco para não ter limite.`,limitTpdHint:`Tokens por dia. Deixe em branco para não ter limite.`,usageThisMonth:`Utilização mensal`,usageEmpty:`Ainda não há pedidos este mês.`,usageRequestsMonth:`{count} ped. este mês`,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:`Ativar ou desativar todos os modelos apresentados`,enableAll:`Ativar todos`,disableAll:`Desativar todos`,enableAllHint:`Ative todos os modelos apresentados e guarde`,disableAllHint:`Desative todos os modelos apresentados e guarde`,enabledOfShown:`{enabled} de {shown} modelos apresentados estão na cadeia`},strategies:{explore:`Explorar modelos sem medições`,exploreHint:`Dá aos modelos sem dados de fiabilidade ou de velocidade 10% de probabilidade de irem primeiro, para que acumulem histórico. O que sai é o seu pedido real, pelo que pode ser respondido por um modelo não testado. Para um endpoint personalizado, use «Testar o endpoint» na página Chaves e evite o tráfego real.`,keySelection:`Seleção de chave`,keySelectionAuto:`Automática`,keySelectionLeastRemaining:`Menor restante`,keySelectionHint:`Como escolher entre várias chaves do mesmo fornecedor. Automática mantém a rotação atual; Menor restante ordena as chaves pela quota observada e tenta primeiro a que tem mais disponível.`,cooldownCeiling:`Arrefecimento automático máximo`,cooldownCeilingHint:`Limita durante quanto tempo as próprias estimativas do encaminhador podem afastar um par de chave e modelo com falhas. A escada sobe normalmente 2 min, 10 min, 1 h, 24 h, e erros de crédito ou de escalão afastam durante um dia. Os tempos de nova tentativa indicados pelo fornecedor nunca são encurtados.`,cooldownCeilingDefault:`Predefinição (até 24 h)`,cooldownCeiling10m:`10 minutos`,cooldownCeiling1h:`1 hora`,cooldownCeiling6h:`6 horas`,moreOptions:`Mais opções`,peakActive:`(horas de ponta)`,peakActiveHint:`O ajuste de horas de ponta está ativo neste momento, por isso estes não são os pesos do próprio preset: 60% do peso da velocidade passou para a fiabilidade.`,peakAdjust:`Ajuste de horas de ponta`,peakAdjustHint:`Desligado por omissão. Dentro da janela abaixo, passa 60% do peso da velocidade para a fiabilidade — os relés gratuitos estão mais congestionados nessa altura, por isso a fiabilidade prevê o sucesso melhor do que o débito bruto. Mais rápido e Mais fiável ficam de fora.`,peakFrom:`De`,peakTo:`até`,peakTimezoneLabel:`Fuso horário`,peakUseBrowserTimezone:`Usar o fuso do navegador`,peakTimezoneInvalid:`Fuso horário desconhecido.`,peakExemptNote:`Este preset fica de fora — já está num dos extremos do compromisso velocidade/fiabilidade.`,title:`Estratégia de encaminhamento`,description:`Escolha uma estratégia de roteamento. No modo Manual arrasta-se para definir a ordem; As outras estratégias encaminham-se pelo resultado em tempo real através da fiabilidade, velocidade e inteligência.`,weightsSummary:`fiabilidade {reliability}% · velocidade {speed}% · inteligência {intelligence}%`,guardrails:`Guarda-corpos`,guardrailsTooltip:`Guarda-vidas sempre ativas: margem de cabeça de quota livre × penalização por limite de taxa em tempo real. Abaixo de 1.0 significa que o modelo está a ser travado.`,scoreTooltip:`Pontuação final de roteamento = média ponderada dos três eixos, multiplicada pelos corrimãos de proteção. Primeiro rotas mais altas.`,modeManualHint:`Modo manual: os pedidos seguem a ordem abaixo, de cima a baixo. Arrastar para reordenar.`,modeScoreHint:`Atualização de pontuações a partir do tráfego em direto. A ordem abaixo mostra como os pedidos são encaminhados neste momento.`,manual:`Manual`,manualBlurb:`Faz a rota exatamente pela ordem que definiste abaixo. Arrasta as alças para reordenar. Sem golos; a cadeia é seguida de cima a baixo.`,balanced:`Equilibrado`,balancedBlurb:`A fiabilidade lidera (50%), com velocidade e inteligência ponderadas igualmente (25% cada). Um padrão sensato e geral.`,smartest:`O mais inteligente`,smartestBlurb:`Prefiro o modelo mais capaz que ainda funcione. Inteligência 55%, fiabilidade 35%, velocidade 10%.`,fastest:`O mais rápido`,fastestBlurb:`Prefiro o modelo mais rápido que ainda funcione. Velocidade 55%, fiabilidade 35%, inteligência 10%.`,reliable:`Mais fiável`,reliableBlurb:`Maximize a taxa de sucesso acima de tudo. Fiabilidade 70%, velocidade e inteligência 15% cada.`,custom:`Costume`,customBlurb:`Define o teu próprio equilíbrio entre fiabilidade, velocidade e inteligência com sliders. O mesmo motor dos presets, só os pesos.`,adjust:`Ajustar`,customWeights:`Pesos personalizados`,customWeightsHelp:`Os sliders são independentes; As ações equilibram-se automaticamente para 100%.`,weightReliability:`Fiabilidade`,weightSpeed:`Velocidade`,weightIntelligence:`Inteligência`,weightRequired:`Pelo menos um peso deve estar acima de zero.`,scoreColumn:`Banda sonora`},penaltyInspector:{title:`Pressão do router`,subtitle:`Penalizações, tempos de recarga e falhas dos últimos {minutes} minutos`,rowCount:`{count} ativo`,offChain:`fora da cadeia`,penaltyValue:`Penálti {value}`,factor:`pontuação x{factor}`,noCooldown:`Sem tempo de recarga`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Limpar tudo`,clearAllHint:`Levanta agora todos os arrefecimentos, penalizações e séries de falhas. A pressão é reconstruída a partir dos próximos resultados reais.`,errorsHeading:`{count} erros recentes`,noRecentErrors:`Sem erros recentes`,noKey:`sem chave`,reasons:{penalty:`penalizado`,cooldown:`Tempo de recarga`,recent_errors:`falhar`}},keys:JSON.parse(`{"pageTitle":"Chaves","pageDescription":"Credenciais do fornecedor e a chave unificada de API com que as suas aplicações se ligam.","tabProviders":"Fornecedores","checklistSummary":"{configured} de {total} fornecedores configurados","checklistKeyless":"não requer chave","checklistNoKeyTip":"Ainda não foi adicionada nenhuma chave. Clique para adicionar uma.","checklistSignupLink":"Abra {provider} para criar uma conta e obter uma chave","checklistKeylessTip":"Funciona sem chave.","tabQuotaSignals":"Sinais de quota","tabApiKey":"Chave API unificada","tabAnthropic":"Anthropic","unifiedKey":"A sua chave unificada API","regenerate":"Regenerar","showKey":"Programa","hideKey":"Esconde-te","copyKey":"Cópia","copyFullKey":"Copiar chave completa","copiedKey":"Copiado","baseUrl":"Base URL","endpointChat":"Chat","endpointResponses":"Respostas","endpointEmbeddings":"Embeddings","endpointEmbeddingsHint":"model: \\"auto\\" ou uma família do separador Embeddings","endpointMessages":"Mensagens","endpointMessagesHint":"Compatível com 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":"Aponta um cliente SDK Claude ou Anthropic para este servidor. Anthropic clientes enviam Claude nomes de modelos — mapeem cada um para Auto (o router escolhe um modelo livre) ou pinhem um modelo específico.","anthropicBaseUrl":"Base URL","anthropicAuth":"Cabeçalho de autenticação","anthropicAuto":"Auto — o router escolhe o melhor modelo","anthropicSave":"Guardar mapeamento","anthropicSaved":"Salvo","anthropicNote":"Anthropic clientes mantêm os seus nomes Claude modelos incorporados; O mapeamento acima decide como cada um entra na sua piscina.","familyDefault":"Padrão","familyOpus":"Opus","familySonnet":"Soneto","familyHaiku":"Haiku","selectPlatform":"Selecione um fornecedor","addKey":"Adicionar a tecla","keyAdded":"Chave adicionada","endpointKeysShareModels":"As chaves do mesmo endpoint partilham os seus modelos.","export":"Exportação","exportAll":"Todas as tonalidades","exportHealthy":"Apenas saudável","exportKeys":"Chaves de exportação API","exportFormat":"Formato","exportHealthyOnly":"Apenas chaves saudáveis","exportHealthyOnlyDesc":"Excluir chaves que estejam atualmente a falhar nas verificações de saúde","exportWillExport":"Exporto","exportKey":"Chave","exportKeys plural":"Chaves","exporting":"Exportar...","exportDownload":"Descarregar","exportSuccess":"Chaves {count} exportadas","adding":"Acrescentando...","selectProvider":"Escolha um fornecedor...","accountId":"ID da Conta","label":"Editora","noKeyNeeded":"(sem necessidade de chave)","outboundProxy":"Proxy de saída","outboundProxyDescription":"Encaminha os pedidos de LLM de saída através de um proxy. Suporta SOCKS5, HTTP e HTTPS.","proxyUrl":"Proxy URL","saveProxy":"Guardar","savingProxy":"A salvar...","proxyLoadFailed":"Não consegui carregar as definições do 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":"Adicione um modelo personalizado compatível com OpenAI","addCustomDescription":"Apontar chat, embedding, imagem ou modelos de áudio em qualquer endpoint compatível com OpenAI. A chave API é opcional para servidores locais.","customType":"Tipo","customTypeChat":"Chat","customTypeEmbedding":"Embedding","customTypeImage":"Imagem","customTypeAudio":"Áudio","customTypeTranscription":"Transcription","customBaseUrl":"Base URL","customModels":"Modelos","customModel":"Modelo","customDisplayName":"Nome de exibição","customDisplayNamePerModel":"por modelo","customDisplayNameOptional":"opcional","customFamily":"Família","customFamilyPlaceholder":"Define o ID do modelo","customApiKey":"API chave","customCapabilities":"Capacidades","addModel":"Adicionar modelo","modelAdded":"Modelo adicionado","addModels":"Adicionar {count} modelos","addEmbeddingModel":"Adicionar embedding","addImageModel":"Adicionar modelo de imagem","addAudioModel":"Adicionar modelo de áudio","addTranscriptionModel":"Add transcription model","addingCustom":"Acrescentando...","discoverModels":"Obter modelos","probeNow":"Testar o endpoint","probeConfirm":"Enviar até 3 pedidos de teste?","probeCapabilities":"raciocínio: {reasoning} · ferramentas: {tools}","probeCapYes":"sim","probeCapNo":"não","probeCapUnknown":"desconhecido","probeSuccess":"{model} testado em {latency} ms","probeFailed":"O teste falhou: {reason}","discoverTitle":"Modelos neste endpoint","discoverHint":"Escolha os modelos a registar. Os já adicionados ficam bloqueados.","discoverEmpty":"Este endpoint não devolveu nenhum modelo.","discoverAlreadyAdded":"Adicionado","discoverSelectAll":"Selecionar tudo","modelsAdded":"{count} modelos adicionados","getApiKey":"Arranja API chave","deleteKeyConfirm":"Apagar esta chave? Isto não pode ser desfeito.","checkAll":"Verificar tudo","checking":"A verificar...","editLabel":"Etiqueta de edição","saveLabel":"Etiqueta de guardar","unifiedKeyDescBefore":"Usa isto como OpenAI","unifiedKeyDescAfter":"; Autentica pedidos a este proxy.","serverUnreachableBefore":"Não consigo contactar o servidor","serverUnreachableAfter":". Certifica-te de que o backend está a funcionar. O NPM run dev inicia ambos, e os registos do servidor imprimem-se sob o prefixo do servidor.","paneProviderKey":"Chave do fornecedor","paneImportFile":"Ficheiro de importação","paneCustomEndpoint":"Endpoint personalizado","platform":"Plataforma","hideAdded":"Ocultar fornecedores adicionados","apiToken":"API token","keyOptionalPlaceholder":"Opcional","bearerTokenPlaceholder":"Ficha de portador","pasteKeyPlaceholder":"colar a chave aqui","pasteSeveral":"Colar várias","keyOptionalHint":"Opcional: deixe em branco para usar o nível gratuito anónimo (limitado por IP) ou cole a sua própria chave para usar a sua conta.","enable":"Permitir","noProviderKeys":"Ainda não há chaves do fornecedor. Adicione um acima para começar a rotear.","filterPlaceholder":"Fornecedores de filtros ou chaves","filterAll":"Todos","filterHealthy":"Saudável","filterIssues":"Questões","filterDisabled":"Deficiente","noFilterMatch":"Nenhum fornecedor corresponde aos seus filtros.","providerCountSummary":"{providers} fornecedores · {keys} chaves","summaryHealthy":"{count} saudável","summaryIssueOne":"{count} questão","summaryIssueOther":"{count} questões","providerActions":"Ações do fornecedor","routeViaProxy":"Rota via procuração","checkNow":"Confirme agora","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":"Também configurável através do","proxyEnvHintAfter":"variável de ambiente (tem precedência). Deixe em branco para desativar. Exemplos:","importKeys":"Chaves de provedor de importação","importKeysDescription":"Carregar .env, JSON, JSONC, CSV, Markdown ou ficheiros de texto.","importFiles":"Ficheiros","importFileCount":"{count} selecionado","previewFiles":"Pré-visualização","previewing":"A antecipar...","selected":"Selecionado","provider":"Fornecedor","keyName":"Nome-chave","keyValue":"Valor-chave","chooseProvider":"Escolher fornecedor","noPreviewKeys":"Não foram encontradas chaves nesses ficheiros.","skippedItems":"Ignorado:","moreItems":"+{count} mais","importSelected":"Importação {count}","importing":"Importar...","noImportSelection":"Selecione pelo menos uma fila com um fornecedor.","duplicate":"Duplicado","duplicatesFound":"{count} duplicado(s) detetado — já existem e serão saltados.","importResult":"{imported} importados; Falhou {failed}.","importModelCount":"+{count} modelos","importResultWithModels":"{imported} importados; {models} modelos registados; Falhou {failed}.","confirmRemove":"Confirmar?","quotaSignalsTitle":"Sinais de quota","quotaSignalsEmptyTitle":"Ainda não há observações de quotas","quotaSignalsEmptyDesc":"Isto preenche depois de os fornecedores devolverem cabeçalhos de limite de taxa, erros de quota ou sinais de validação.","quotaKeyRef":"#{id} chave","quotaPoolRef":"piscina {pool}","quotaLimit":"Limite","quotaRemaining":"Remanescentes","quotaReset":"Reiniciar","quotaObserved":"Observado","tabAgents":"Agentes","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Mapeamento de modelos Gemini","geminiDesc":"Mapeie os nomes Gemini Pro, Flash e Flash-Lite para Auto ou para um modelo específico do catálogo.","compatibilityTitle":"Compatibilidade de agentes","compatibilityDesc":"Controle as superfícies de compatibilidade opcionais e a descoberta de modelos do Claude Code.","ollamaMode":"Emulação do Ollama","ollamaModeHint":"O loopback aberto nunca aceita tráfego LAN não autenticado.","ollamaOff":"Desligado","ollamaLoopback":"Aberto no loopback","ollamaKeyRequired":"Chave de API obrigatória","claudeAliases":"Aliases de descoberta do Claude Code","claudeAliasesHint":"Exponha aliases claude/<model> para que o seletor de modelos do gateway possa listar o catálogo.","mcpServer":"Servidor MCP","mcpServerHint":"Expõe o ponto final /mcp aos clientes de agente. As instalações novas começam desligadas.","urlTokensTitle":"Tokens de URL revogáveis","urlTokensDesc":"Apenas para clientes sem cabeçalhos. Os tokens de URL podem ser expostos no histórico e nos registos, por isso revogue-os quando já não forem necessários.","urlTokenLabel":"Etiqueta do token","createUrlToken":"Criar token","urlTokenOnce":"Copie este token agora. Não voltará a ser mostrado.","revoked":"Revogado","revoke":"Revogar","modelScope":"Âmbito de modelos","modelScopeDesc":"Limite esta chave a IDs de modelo específicos. O router ignora esta chave para qualquer outro modelo.","modelScopeAdd":"Adicione um ID de modelo e prima Enter","modelScopeEmpty":"Sem âmbito definido — esta chave serve todos os modelos do fornecedor.","modelScopeClear":"Limpar âmbito","modelScopeBadgeOne":"restrita · 1 modelo","modelScopeBadgeOther":"restrita · {count} modelos","modelPicker":{"title":"Que modelos deve esta chave servir?","hint":"A sua chave {provider} foi adicionada e serve atualmente todos os modelos abaixo. Desmarque os que esta chave não pode utilizar — o router ignora-a para esses modelos.","count":"{selected} de {total} selecionados","allNote":"Tudo selecionado — nada é guardado e os modelos acrescentados ao catálogo mais tarde também vão utilizar esta chave.","subsetNote":"Esta chave fica limitada aos modelos selecionados. Pode alterar isto mais tarde na linha da chave.","skip":"Agora não","scopedOne":"Chave limitada a 1 modelo","scopedOther":"Chave limitada a {count} modelos","allSaved":"Key serves every catalog model"},"cpTitle":"Perfis de cliente","cpDesc":"Chaves de API por cliente, cada uma com um prompt de sistema que o servidor aplica sempre.","cpEmpty":"Ainda não existem perfis de cliente.","cpNameLabel":"Nome","cpNamePlaceholder":"p. ex., Bot de apoio","cpPromptLabel":"Prompt de sistema (opcional)","cpPromptPlaceholder":"Instruções que o servidor antepõe a cada pedido feito com esta chave.","cpCreate":"Criar perfil","cpRotate":"Rodar chave","cpKeyOnce":"Copie esta chave agora — não voltará a ser mostrada.","cpEnabledAria":"Perfil ativado","selectKey":"Selecionar esta chave","bulkSelected":"{count} selecionadas","bulkEnable":"Ativar todas","bulkDisable":"Desativar todas","bulkDelete":"Eliminar todas","bulkDeleteConfirm":"Eliminar {count}?","bulkResult":"Atualizadas {done}; falharam {failed}.","bulkDeleteResult":"Eliminadas {done}; falharam {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Editar chave","editPlatformLocked":"O fornecedor e o endpoint não podem ser alterados após a criação.","editCredentialHint":"Deixe em branco para manter a chave atual.","editCredentialPartsRequired":"Introduza o ID da conta e o token da API.","editModels":"Editar modelos","editModelsHint":"Escolha que modelos do catálogo esta chave pode servir. Selecione tudo para limpar o âmbito.","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":"Adicionar modelo personalizado","modelId":"ID do modelo","modelIdRequired":"O ID do modelo é obrigatório","modelDisplayName":"Nome de exibição","modelContextWindow":"Janela de contexto (tokens)","modelRateLimits":"Limites de taxa (opcional)","modelSupportsTools":"Suporta chamadas de ferramentas","modelSupportsToolsHint":"Ative se este modelo puder executar chamadas de ferramentas e funções","modelSupportsVision":"Suporta visão","modelSupportsVisionHint":"Ative se este modelo aceitar imagens","createModel":"Criar modelo","modelAddedSuccess":"Modelo personalizado adicionado com sucesso","modelAddFailed":"Falha ao adicionar modelo personalizado","testModel":"Testar","testingModel":"A testar…","testPassedShort":"Aprovado","testFailedShort":"Falhou","testPassed":"Teste do modelo aprovado em {latency}ms","testFailed":"Teste do modelo falhou","testThrottled":"Aguarde {seconds}s antes de testar este modelo novamente.","noModelsForProvider":"Nenhum modelo configurado para este fornecedor.","testModels":"Testar 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} pedidos, {tokens} tokens este mês","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:`Saudável`,rateLimited:`Taxa limitada`,invalid:`inválido`,error:`erro`,unchecked:`sem controlo`},analytics:{title:`Análise`,description:`Volume de pedidos, latência, uso de tokens e falhas.`,range24h:`24h`,range7d:`7d`,range30d:`30d`,range90d:`90d`,requests:`Pedidos`,successRate:`Taxa de sucesso`,inputTokens:`Tokens de entrada`,outputTokens:`Tokens de saída`,avgLatency:`Latência média`,p95Latency:`Latência P95`,avgTtft:`Média TTFT`,estSavings:`Est. poupanças`,requestsByProvider:`Pedidos por prestador`,avgLatencyByProvider:`Latência média por fornecedor`,ttftByProvider:`Tempo para o primeiro token por fornecedor`,ttftEmpty:`Ainda não há tempo para o primeiro token registado.`,requestsOverTime:`Pedidos ao longo do tempo`,tokensOverTime:`Tokens ao longo do tempo`,byModel:`Por modelo`,byPlatform:`Por plataforma`,errors:`Erros`,errorDistribution:`Distribuição de erro`,pinnedRequests:`Pedidos fixados`,pinnedHonored:`Homenageado`,fallbackAttempts:`Tentativas de recuo`,savingsHint:"Na verdade, guardaste ${actual} nos últimos {range}. É isso que os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número mostrado projeta o seu ritmo dos últimos {span} de dados para 30 dias completos.",savingsHintExact:"Na verdade, guardaste ${actual} nos últimos {range}. É isso que os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número mostrado é o seu total real de 30 dias.",requestsHintPinned:`{pinned} destes pedidos fixava um modelo específico pelo nome. {honored} eram servidos pelo modelo com pinos; {failed} mudou para outro. Os restantes foram encaminhados automaticamente.`,requestsHintAuto:`Todos os pedidos neste período eram encaminhados automaticamente; nenhum cliente fixava um modelo específico pelo nome.`,requestsHintTypes:`{chat} pedido de chat e {embedding} de embedding.`,rangeLabel24h:`24 horas`,rangeLabel7d:`7 dias`,rangeLabel30d:`30 dias`,rangeLabel90d:`90 dias`,spanDays:`{count} dias`,spanHours:`{count} horas`,latencyMs:`Latência (ms)`,latency:`Latência`,pinned:`Fixado`,inTokens:`Em fichas`,outTokens:`Fichas de saída`,saved:`Salvo`,message:`Mensagem`,time:`Tempo`,perModelBreakdown:`Distribuição por modelo`,usageByKey:`Utilização por tonalidade`,keyColumn:`Chave`,keyLabelFallback:`Chave #{id}`,errorsByProvider:`Erros por fornecedor`,recentErrors:`Erros recentes`,noErrors:`Sem erros`,recentCalls:`Chamadas recentes`,clientIp:`IP do Cliente`,clientAgent:`Aplicação cliente`,requestedModelHint:`Solicitado {model}, servido por recuo`,attempts:`Tentativas`,filterAll:`Todos`,filterCanceled:`Canceladas`,providerBreakdown:`Distribuição por fornecedor`,tokensPerSec:`Tok/s`,allProviders:`Todos os prestadores`,requestDetailTitle:`Pedido #{id}`,failoverLadder:`Escada de failover`,failoverLadderHint:`Cada salto que este pedido percorria a cadeia de recurso, por ordem.`,noAttemptTrace:`Não foi registada qualquer tentativa de rastreio para este pedido.`,keyOrdinal:`#{n} chave`,keyBadge:`Chave #{n}`,attemptTimingHint:`Início deslocado a partir do início do pedido · Duração da tentativa`,requestedModel:`Modelo solicitado`,ttft:`TTFT`,requestsByAgent:`Pedidos por agente`,sortBy:`Ordenar por {column}`,sortHint:`A ordenação aplica-se às {count} linhas carregadas`,cacheHitRate:`Taxa de acerto da cache`,cacheSavedTokens:`{tokens} tokens poupados`,cacheHitRateHint:`{hits} acertos contra {misses} falhas desde o arranque do servidor · {requests} chamadas ao fornecedor evitadas`},logs:{title:`Registos`,description:`Registo do servidor em direto. As novas entradas vão surgindo enquanto a página estiver aberta.`,pause:`Pausar`,resume:`Retomar`,clear:`Limpar registos`,cleared:`Registo do servidor limpo`,levelFilter:`Níveis de registo`,levels:{debug:`Debug`,info:`Info`,warn:`Aviso`,error:`Erro`},countsHint:`As contagens referem-se a todo o buffer de registo no servidor, não apenas às entradas que correspondem a estes filtros.`,searchPlaceholder:`Pesquisar mensagens do registo…`,jumpToLatest:`Ir para as mais recentes`,showMore:`Mostrar mais`,showLess:`Mostrar menos`,buffered:`A mostrar {count} de até {max} entradas em buffer`,emptyTitle:`Ainda sem entradas de registo`,emptyDescription:`As entradas aparecem aqui à medida que o servidor as escreve. Alargue os filtros de nível, fornecedor ou pesquisa se esperava ver resultados.`,noLevelsTitle:`Nenhum nível selecionado`,noLevelsDescription:`Ative pelo menos um nível para ver o registo.`,loadFailed:`Não foi possível carregar o registo do servidor.`},playground:{title:`Parque infantil`,description:`Envia um chat completo através do router e vê qual o fornecedor que o atende.`,autoModel:`Auto (cadeia de recurso)`,fusionModel:`Fusão (síntese multi-modelo)`,selectModel:`Modelo selecionado`,searchModels:`Procurar modelos...`,noModelsFound:`Nenhum modelo encontrado`,send:`Enviar`,sending:`A enviar...`,clear:`Limpo`,inputPlaceholder:`Escreve uma mensagem... (⏎ para enviar, ⇧⏎ para a nova linha)`,emptyTitle:`Envie uma mensagem para começar.`,emptyDescription:`Usando {model}. Muda de modelo no seletor acima.`,noModels:`Ainda não há modelos. Adicione uma chave API na página de Chaves para preencher esta lista.`,copyReply:`Copiar resposta`,fallback:`Recuo`,fallbacks:`Recuos`,fusionPanel:`Painel`,fusionJudge:`Juiz`,fusionTrace:`{count} Respostas do modelo`,fusionFailed:`Sem resposta`,fusionJudgeSynth:`Sintetizei a resposta final`,errorPrefix:`Erro:`,systemPromptLabel:`Prompt do sistema`,systemPromptPlaceholder:`Opcional. Enviado como mensagem do sistema antes do teu chat.`,showSettings:`Mostrar definições`,hideSettings:`Ocultar definições`,samplingHeading:`Amostragem`,samplingHelp:`Desativado, aplica-se a predefinição do próprio fornecedor. Só são enviados os controlos que ativar.`,samplingDefault:`Padrão`,temperature:`Temperatura`,topP:`Top P`,maxTokens:`Máximo de tokens`,errorTitle:`Pedido falhado`,attach:`Anexar ficheiros`,attachTooMany:`Pode anexar até {count} ficheiros por mensagem.`,attachTooLarge:`{name} é demasiado grande. O limite é {max}.`,attachUnsupported:`{name} não é suportado. Anexe imagens (PNG, JPEG, WebP, GIF) ou ficheiros de texto (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Não foi possível ler {name}.`,noVisionBadge:`Sem imagens`,visionWarning:`{model} não aceita imagens. Escolha um modelo de visão ou Auto.`,dictate:`Ditar`,dictationStop:`Parar gravação`,dictationTranscribing:`A transcrever…`,dictationUnavailable:`Adicione fornecedores de modelos de áudio para poder usar o ditado.`,dictationModel:`Modelo de ditado`,dictationFailed:`Falha na transcrição: {reason}`,artifactOpen:`Abrir pré-visualização`,artifactPreview:`Pré-visualização`,artifactCode:`Código`,artifactClose:`Fechar pré-visualização`,artifactDownload:`Transferir`,artifactReload:`Recarregar pré-visualização`,artifactHtml:`Página HTML`,artifactSvg:`Imagem SVG`,artifactLines:`linhas`,artifactResize:`Redimensionar pré-visualização`},playgroundSessions:{heading:`Conversas`,newConversation:`Nova conversa`,showSidebar:`Mostrar conversas`,hideSidebar:`Ocultar conversas`,empty:`Ainda não existem conversas guardadas.`,untitled:`Conversa sem título`,rename:`Mudar o nome`,renamePlaceholder:`Nome da conversa`,messageCount:`{count} mensagens`,justNow:`agora mesmo`,minutesAgo:`há {count} min`,hoursAgo:`há {count} h`,daysAgo:`há {count} d`,loadFailed:`Não foi possível abrir essa conversa.`,renameFailed:`Não foi possível mudar o nome dessa conversa.`,deleteFailed:`Não foi possível eliminar essa conversa.`,actions:`Ações da conversa`,newChat:`Nova conversa`},embeddings:{title:`Modelos`,description:`Os embeddings falham apenas dentro de uma família: o mesmo modelo servido por outro fornecedor. Vetores de diferentes modelos são incompatíveis, por isso o router nunca troca os modelos contigo.`,defaultBadge:`Padrão · Auto`,makeDefault:`Fazer defeito`,moveUp:`Avançar`,moveDown:`Desce`,usageToday:`{count} requisito hoje`,usageMonth:`{count} tok este mês`,autoDescription:`model: "auto" em POST /v1/embeddings rotas para a família padrão. Nomear uma família (ou um ID de modelo de fornecedor) fixa essa família; Os fornecedores dentro dela são testados por ordem.`,unsavedChanges:`Alterações não guardadas`,saveChanges:`Alterações de gravação`,savingChanges:`A salvar...`,tokMax:`{tokens} tok max`,emptyTitle:`Ainda não há modelos de embedding`,emptyDesc:`As famílias de embedding aparecem aqui assim que adiciona uma chave de fornecedor que suporta embeddings.`,dragToReorder:`Arrastar para o fornecedor de reencomenda`},fusion:{title:`Fusão`,description:`Um painel de modelos responde em paralelo, depois um juiz sintetiza uma resposta mais forte. Usa-o chamando o API com modelo de "fusão".`,panelSource:`Fonte do painel`,panelSourceHelp:`De onde vêm os modelos de painéis quando um pedido não especifica o seu próprio.`,mode:{auto:`Auto (Cadeia de Reserva)`,autoHelp:`Escolha um conjunto diversificado de modelos da sua Cadeia de Reserva, classificados pela sua estratégia de roteamento ativo.`,explicit:`Painel explícito`,explicitHelp:`Use sempre os modelos específicos que escolher abaixo.`},panelModels:`Modelos de painéis`,selectedCount:`{count} de {max} selecionados`,noModels:`Ainda não há modelos ligados. Adicione uma chave API e depois ative os modelos na Cadeia de Reserva.`,panelSize:`Tamanho do painel`,panelSizeHelp:`Quantos modelos diferentes escolher automaticamente (1–{max}).`,judge:`Modelo de juíz`,judgeHelp:`O modelo que sintetiza as respostas do painel numa só. O Auto usa o teu modelo mais bem classificado disponível.`,judgeAuto:`Auto (melhor classificado disponível)`,strategy:`Estratégia`,strategySynthesize:`Sintetiza — mistura o painel numa só resposta`,strategyBestOf:`O melhor de — devolve a resposta mais forte (sem decisão de juiz)`,strategySynthesizeShort:`Síntese`,strategyBestOfShort:`Melhores`,exposePanel:`Expor detalhes do painel`,exposePanelHelp:`Anexe os metadados da resposta de cada modelo e do juiz sob um campo x_fusion na resposta.`,howToUse:`Como usar`,howToUseHelp:`Envia um pedido de chat normal com o modelo "fusion". Estas definições são as predefinidas; Qualquer pedido pode sobrepê-los com um campo de "fusão".`,unsavedChanges:`Alterações não guardadas`,save:`Guardar`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Premium`,description:`O catálogo de modelos ativos, em todos os dispositivos.`,loading:`A carregar...`,checkForUpdates:`Verifique atualizações`,syncing:`A sincronizar...`,catalogFeed:`Feed do catálogo`,liveFeed:`Transmissão em direto`,monthlySnapshot:`Resumo mensal`,lastChecked:`Última verificação: {when}`,liveDescription:`Novos modelos gratuitos, alterações de quotas e correções de quirks chegam aqui em poucas horas após serem enviados. A aplicação verifica automaticamente duas vezes por dia; Nada para fazer.`,snapshotDescription:`Nível gratuito: o catálogo atualiza-se a partir de um snapshot mensal, verificado automaticamente duas vezes por dia. O Premium muda isto para o feed em direto, atualizado a cada 2-3 dias.`,lastSyncProblem:`Último problema de sincronização: {error}`,license:`Licença`,planAnnual:`Anual Premium`,planLifetime:`Vida Útil Premium`,expired:`Expirado`,inactive:`Inativo`,lifetimeNote:`Carta vitalícia: nunca expira.`,renewsOn:`Renova no {date}.`,willNotRenew:`Não vai renovar. Premium até {date}, depois esta instalação volta ao catálogo mensal gratuito.`,keyInactive:`Esta chave já não está ativa. A aplicação continua a trabalhar no catálogo mensal gratuito.`,manageSubscription:`Gerir subscrição`,openingPortal:`A abrir...`,removeKey:`Remover a chave deste dispositivo`,manageHint:`Gerir subscrição abre o portal de faturação da Stripe: cancele, atualize o seu cartão ou descarregue faturas. Remover a chave apenas desativa este dispositivo; A sua compra está intacta.`,licenseKey:`Chave de licença`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Ativar`,activating:`Ativar...`,keyHint:`A sua chave está no email de compra e na página pós-checkout. Perdeste a cabeça?`,recoverKey:`Recupere-o no site`,upsellTitle:`Vai ao vivo por 19 dólares por ano`,upsellDescription:`Novos modelos gratuitos no momento em que existem, em vez de 30 dias depois. Uma chave, cada dispositivo. Cancele a qualquer momento; O router fica livre para sempre.`,goPremium:`Go Premium`,bundled:`agrupados`,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 correu mal`,boundaryDescription:`O painel apresentou um erro inesperado. Os seus dados estão seguros. Tenta novamente ou volta à página dos modelos.`,tryAgain:`Tenta outra vez`,goHome:`Voltar aos modelos`},notFound:{title:`Página não encontrada`,description:`Esta página não existe ou pode ter mudado.`},setup:{title:`Como começar`,subtitle:`Três passos para encaminhar o seu primeiro pedido.`,progress:`{done} de {total}`,step1Title:`Adicionar uma chave de fornecedor`,step1Desc:`Ligue pelo menos uma conta de fornecedor. Chaves grátis funcionam.`,step1Cta:`Adicionar teclas`,step2Title:`Enviar um pedido de teste`,step2Desc:`Escolhe qualquer modelo no Playground e diz olá.`,step2Cta:`Parque Infantil Aberto`,step3Title:`Ligue a sua aplicação`,step3Desc:`Use a sua chave API unificada com qualquer cliente compatível com OpenAI.`,copyKey:`Copiar API chave`,copyUrl:`Copiar URL base`,copiedKey:`API tecla copiada para a prancheta`,copiedUrl:`Base URL copiada para a prancheta`},palette:{title:`Paleta de comandos`,placeholder:`Páginas de pesquisa, modelos, ações...`,empty:`Sem resultados`,groupPages:`Páginas`,groupActions:`Ações`,groupModels:`Modelos`,toggleTheme:`Alternar modo escuro`},validation:{required:`Obrigatório`,url:`Introduza uma URL válida começando por http:// ou https://`,email:`Insira um endereço de email válido`,passwordMin:`Pelo menos {min} personagens`},agents:{title:`Agentes de programação`,description:`Ligue ferramentas de programação a um único gateway de modelos gratuitos com configuração gerada e segura para cópias de segurança.`,apiKey:`Chave de API`,quickstartTitle:`Início rápido`,quickstart:`Caminho mais rápido: configure o Claude Code a partir do catálogo em direto.`,currentKey:`Chave unificada atual:`,seenRecently:`Visto recentemente`,setupLabel:`Configuração automática`,setupHint:`Escreve por si o ficheiro de configuração desta ferramenta, apontado para esta gateway.`,setupGuideHint:`Mostra os passos de configuração desta ferramenta; não é escrito nenhum ficheiro.`,manualLabel:`Ligação manual`,manualHint:`URL base e chave para introduzir nas definições da própria ferramenta.`,endpoint:`Endpoint`,documentation:`Documentação`,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:`Um assistente pessoal sempre ligado que responde no WhatsApp, Telegram, Discord e mais, a partir da sua própria máquina.`,hermes:`O agente da Nous Research que se aperfeiçoa a si próprio, com memória persistente e competências, no terminal ou em apps de chat.`,pi:`Um agente de terminal minimalista que molda com as suas próprias extensões, competências e modelos de prompt.`}},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:`Cadeias de fallback`,description:`Cadeias nomeadas, cada uma chamável como auto:<name> em /v1/models.`,count:`{count} cadeias`,active:`Ativa`,default:`Predefinida`,activate:`Ativar`,activateHint:`Fazer a tabela abaixo editar esta cadeia e o encaminhamento auto usá-la`,deleteHint:`Eliminar esta cadeia`,deleteConfirm:`Eliminar a cadeia "{name}"?`,create:`Criar`,createPlaceholder:`Nome da cadeia`,createFailed:`Não foi possível criar a cadeia.`,nameRules:`Até 20 caracteres: letras, dígitos, hífenes e sublinhados.`,startEmpty:`Começar vazia`,startEmptyHint:`Cria a cadeia sem modelos e mantém de fora os novos modelos do catálogo. Sem marcar, começa como cópia da cadeia predefinida.`,curated:`Curada`,curatedHint:`Os novos modelos do catálogo não são adicionados automaticamente a esta cadeia.`,renameHint:`Mudar o nome desta cadeia`,renameConfirm:`Mudar o nome da cadeia "{oldName}" para "{name}"? Os clientes que chamam auto:{oldName} devem passar para auto:{name}.`,renamePlaceholder:`Novo nome da cadeia`,renameFailed:`Não foi possível mudar o nome da cadeia.`},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};