@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.
- package/LICENSE +21 -0
- package/client/dist/assets/am-TQ7Jmdqe.js +1 -0
- package/client/dist/assets/ar-Bf5a7yfC.js +1 -0
- package/client/dist/assets/az-CrosE1xH.js +1 -0
- package/client/dist/assets/bg-BvWnmcUz.js +1 -0
- package/client/dist/assets/bn-ams5TsJp.js +1 -0
- package/client/dist/assets/cs-Dh67CaJ_.js +1 -0
- package/client/dist/assets/da-9WlT8Iq7.js +1 -0
- package/client/dist/assets/de-lWhJJzz7.js +1 -0
- package/client/dist/assets/el-Cu7_GhNq.js +1 -0
- package/client/dist/assets/es-BZuzsBcP.js +1 -0
- package/client/dist/assets/fa-Dwdn-jKS.js +1 -0
- package/client/dist/assets/fi-BFrFyOTy.js +1 -0
- package/client/dist/assets/fr-XhbtmPpj.js +1 -0
- package/client/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/client/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/client/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/client/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/client/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/client/dist/assets/gu-D0uhLUB8.js +1 -0
- package/client/dist/assets/ha-CVlm9pqp.js +1 -0
- package/client/dist/assets/he-CMIFeoWr.js +1 -0
- package/client/dist/assets/hi-ENTwhBpn.js +1 -0
- package/client/dist/assets/hr-fc03vMy_.js +1 -0
- package/client/dist/assets/hu-YBo2BIYt.js +1 -0
- package/client/dist/assets/id-BEWXYX69.js +1 -0
- package/client/dist/assets/ig-BKLZFKka.js +1 -0
- package/client/dist/assets/index-D9I4KtvR.js +145 -0
- package/client/dist/assets/index-txhEmCdb.css +2 -0
- package/client/dist/assets/it-Bzmei1Y2.js +1 -0
- package/client/dist/assets/ja-BfcpuqEl.js +1 -0
- package/client/dist/assets/ka-CnWjRgLo.js +1 -0
- package/client/dist/assets/km-BAjPR3Qj.js +1 -0
- package/client/dist/assets/kn-B15WKU5m.js +1 -0
- package/client/dist/assets/ko-C61fAB-w.js +1 -0
- package/client/dist/assets/lt-CYTr4_YW.js +1 -0
- package/client/dist/assets/ml-CtqxgyH3.js +1 -0
- package/client/dist/assets/mr-X5TMY7aR.js +1 -0
- package/client/dist/assets/ms-DSg8RqPS.js +1 -0
- package/client/dist/assets/my-D7RqR8uE.js +1 -0
- package/client/dist/assets/ne-DaflxkDj.js +1 -0
- package/client/dist/assets/nl-BOqqtsC8.js +1 -0
- package/client/dist/assets/no-BSHp_StB.js +1 -0
- package/client/dist/assets/or-BkLR9Vub.js +1 -0
- package/client/dist/assets/pa-CarJ2XgI.js +1 -0
- package/client/dist/assets/pl-C2n0V-0k.js +1 -0
- package/client/dist/assets/pt-BR-CqJdNhg2.js +1 -0
- package/client/dist/assets/pt-PT-C_HpMyKz.js +1 -0
- package/client/dist/assets/ro-DVRZqSAS.js +1 -0
- package/client/dist/assets/ru-DwAJG7VC.js +1 -0
- package/client/dist/assets/si-BxUezXm0.js +1 -0
- package/client/dist/assets/sk-eI1VcIfY.js +1 -0
- package/client/dist/assets/sr-CJF3auCr.js +1 -0
- package/client/dist/assets/srouter-logo-C6ZfjGIi.svg +14 -0
- package/client/dist/assets/sv-nqvwHAq_.js +1 -0
- package/client/dist/assets/sw-DWynE2pW.js +1 -0
- package/client/dist/assets/ta-BVM12knC.js +1 -0
- package/client/dist/assets/te-oyzEkF7_.js +1 -0
- package/client/dist/assets/th-COVeE0ZQ.js +1 -0
- package/client/dist/assets/tl-DsJANnQz.js +1 -0
- package/client/dist/assets/tr-B-Fl-urO.js +1 -0
- package/client/dist/assets/uk-C5qketAO.js +1 -0
- package/client/dist/assets/ur-QU9KugfV.js +1 -0
- package/client/dist/assets/uz-DL9cG_mY.js +1 -0
- package/client/dist/assets/vi-CQiVy3Pu.js +1 -0
- package/client/dist/assets/yo-DqazMdrZ.js +1 -0
- package/client/dist/assets/zh-CN-DnYL_Kio.js +1 -0
- package/client/dist/assets/zh-TW-5bdbosKj.js +1 -0
- package/client/dist/favicon.svg +14 -0
- package/client/dist/icons.svg +24 -0
- package/client/dist/index.html +37 -0
- package/dist/app.d.ts +4 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +372 -0
- package/dist/app.js.map +1 -0
- package/dist/db/index.d.ts +49 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +203 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate/TEMPLATE.d.ts +4 -0
- package/dist/db/migrate/TEMPLATE.d.ts.map +1 -0
- package/dist/db/migrate/TEMPLATE.js +18 -0
- package/dist/db/migrate/TEMPLATE.js.map +1 -0
- package/dist/db/migrate/cli.d.ts +2 -0
- package/dist/db/migrate/cli.d.ts.map +1 -0
- package/dist/db/migrate/cli.js +177 -0
- package/dist/db/migrate/cli.js.map +1 -0
- package/dist/db/migrate/defaults.d.ts +52 -0
- package/dist/db/migrate/defaults.d.ts.map +1 -0
- package/dist/db/migrate/defaults.js +126 -0
- package/dist/db/migrate/defaults.js.map +1 -0
- package/dist/db/migrate/runner.d.ts +16 -0
- package/dist/db/migrate/runner.d.ts.map +1 -0
- package/dist/db/migrate/runner.js +178 -0
- package/dist/db/migrate/runner.js.map +1 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts +4 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts.map +1 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.js +2240 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.js.map +1 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts +4 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts.map +1 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.js +27 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.js.map +1 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts +4 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts.map +1 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.js +30 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.js.map +1 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.d.ts +6 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.d.ts.map +1 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.js +104 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.js.map +1 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts +9 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts.map +1 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.js +22 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.js.map +1 -0
- package/dist/db/migrations/20260706_000001_request_client_info.d.ts +4 -0
- package/dist/db/migrations/20260706_000001_request_client_info.d.ts.map +1 -0
- package/dist/db/migrations/20260706_000001_request_client_info.js +30 -0
- package/dist/db/migrations/20260706_000001_request_client_info.js.map +1 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts +17 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts.map +1 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.js +20 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.js.map +1 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts +12 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts.map +1 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.js +45 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.js.map +1 -0
- package/dist/db/migrations/20260720_000001_key_health_error.d.ts +5 -0
- package/dist/db/migrations/20260720_000001_key_health_error.d.ts.map +1 -0
- package/dist/db/migrations/20260720_000001_key_health_error.js +16 -0
- package/dist/db/migrations/20260720_000001_key_health_error.js.map +1 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts +4 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js +38 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js.map +1 -0
- package/dist/db/migrations/20260726_000002_request_attempts.d.ts +4 -0
- package/dist/db/migrations/20260726_000002_request_attempts.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000002_request_attempts.js +43 -0
- package/dist/db/migrations/20260726_000002_request_attempts.js.map +1 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts +4 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.js +80 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.js.map +1 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.d.ts +4 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.js +34 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.js.map +1 -0
- package/dist/db/migrations/20260726_000005_request_served_model.d.ts +4 -0
- package/dist/db/migrations/20260726_000005_request_served_model.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000005_request_served_model.js +31 -0
- package/dist/db/migrations/20260726_000005_request_served_model.js.map +1 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts +4 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.js +29 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.js.map +1 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts +4 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts.map +1 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.js +41 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.js.map +1 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts +12 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.js +37 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.js.map +1 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts +4 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts.map +1 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js +145 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js.map +1 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts +6 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts.map +1 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js +52 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js.map +1 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.d.ts +6 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.d.ts.map +1 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.js +17 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.js.map +1 -0
- package/dist/db/migrations/20260805_000002_client_profiles.d.ts +4 -0
- package/dist/db/migrations/20260805_000002_client_profiles.d.ts.map +1 -0
- package/dist/db/migrations/20260805_000002_client_profiles.js +33 -0
- package/dist/db/migrations/20260805_000002_client_profiles.js.map +1 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts +4 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts.map +1 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.js +33 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.js.map +1 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts +4 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts.map +1 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.js +19 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.js.map +1 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.d.ts +4 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.d.ts.map +1 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.js +47 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.js.map +1 -0
- package/dist/db/migrations/20260823_000001_server_logs.d.ts +4 -0
- package/dist/db/migrations/20260823_000001_server_logs.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000001_server_logs.js +53 -0
- package/dist/db/migrations/20260823_000001_server_logs.js.map +1 -0
- package/dist/db/migrations/20260823_000002_backups_table.d.ts +8 -0
- package/dist/db/migrations/20260823_000002_backups_table.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000002_backups_table.js +22 -0
- package/dist/db/migrations/20260823_000002_backups_table.js.map +1 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts +19 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.js +28 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.js.map +1 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts +14 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.js +25 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.js.map +1 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts +4 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.js +46 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.js.map +1 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts +4 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.js +37 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.js.map +1 -0
- package/dist/db/migrations/20260901_000003_request_caller.d.ts +4 -0
- package/dist/db/migrations/20260901_000003_request_caller.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000003_request_caller.js +27 -0
- package/dist/db/migrations/20260901_000003_request_caller.js.map +1 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts +4 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts.map +1 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js +35 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js.map +1 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts +4 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts.map +1 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.js +37 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.js.map +1 -0
- package/dist/db/migrations/20260903_000002_response_cache.d.ts +4 -0
- package/dist/db/migrations/20260903_000002_response_cache.d.ts.map +1 -0
- package/dist/db/migrations/20260903_000002_response_cache.js +53 -0
- package/dist/db/migrations/20260903_000002_response_cache.js.map +1 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts +13 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts.map +1 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.js +35 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.js.map +1 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts +4 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts.map +1 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.js +68 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.js.map +1 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts +5 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts.map +1 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.js +37 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.js.map +1 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts +4 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts.map +1 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js +28 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js.map +1 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts +4 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts.map +1 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js +25 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js.map +1 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.d.ts +10 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.d.ts.map +1 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.js +78 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.js.map +1 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts +21 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts.map +1 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.js +41 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.js.map +1 -0
- package/dist/db/model-pricing.d.ts +39 -0
- package/dist/db/model-pricing.d.ts.map +1 -0
- package/dist/db/model-pricing.js +274 -0
- package/dist/db/model-pricing.js.map +1 -0
- package/dist/db/node-sqlite.d.ts +9 -0
- package/dist/db/node-sqlite.d.ts.map +1 -0
- package/dist/db/node-sqlite.js +87 -0
- package/dist/db/node-sqlite.js.map +1 -0
- package/dist/db/types.d.ts +22 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/docs/docs-page.d.ts +2 -0
- package/dist/docs/docs-page.d.ts.map +1 -0
- package/dist/docs/docs-page.js +319 -0
- package/dist/docs/docs-page.js.map +1 -0
- package/dist/docs/openapi.d.ts +1896 -0
- package/dist/docs/openapi.d.ts.map +1 -0
- package/dist/docs/openapi.js +1096 -0
- package/dist/docs/openapi.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +9 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/anthropic-documents.d.ts +41 -0
- package/dist/lib/anthropic-documents.d.ts.map +1 -0
- package/dist/lib/anthropic-documents.js +132 -0
- package/dist/lib/anthropic-documents.js.map +1 -0
- package/dist/lib/app-version.d.ts +5 -0
- package/dist/lib/app-version.d.ts.map +1 -0
- package/dist/lib/app-version.js +61 -0
- package/dist/lib/app-version.js.map +1 -0
- package/dist/lib/attempt-trace.d.ts +23 -0
- package/dist/lib/attempt-trace.d.ts.map +1 -0
- package/dist/lib/attempt-trace.js +32 -0
- package/dist/lib/attempt-trace.js.map +1 -0
- package/dist/lib/budget.d.ts +6 -0
- package/dist/lib/budget.d.ts.map +1 -0
- package/dist/lib/budget.js +40 -0
- package/dist/lib/budget.js.map +1 -0
- package/dist/lib/client-classifier.d.ts +10 -0
- package/dist/lib/client-classifier.d.ts.map +1 -0
- package/dist/lib/client-classifier.js +126 -0
- package/dist/lib/client-classifier.js.map +1 -0
- package/dist/lib/client-context.d.ts +10 -0
- package/dist/lib/client-context.d.ts.map +1 -0
- package/dist/lib/client-context.js +39 -0
- package/dist/lib/client-context.js.map +1 -0
- package/dist/lib/config.d.ts +33 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +94 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/content.d.ts +33 -0
- package/dist/lib/content.d.ts.map +1 -0
- package/dist/lib/content.js +201 -0
- package/dist/lib/content.js.map +1 -0
- package/dist/lib/credential.d.ts +11 -0
- package/dist/lib/credential.d.ts.map +1 -0
- package/dist/lib/credential.js +18 -0
- package/dist/lib/credential.js.map +1 -0
- package/dist/lib/crypto.d.ts +31 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +206 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/custom-provider-cleanup.d.ts +13 -0
- package/dist/lib/custom-provider-cleanup.d.ts.map +1 -0
- package/dist/lib/custom-provider-cleanup.js +43 -0
- package/dist/lib/custom-provider-cleanup.js.map +1 -0
- package/dist/lib/db-backup.d.ts +31 -0
- package/dist/lib/db-backup.d.ts.map +1 -0
- package/dist/lib/db-backup.js +255 -0
- package/dist/lib/db-backup.js.map +1 -0
- package/dist/lib/endpoint-scope.d.ts +42 -0
- package/dist/lib/endpoint-scope.d.ts.map +1 -0
- package/dist/lib/endpoint-scope.js +95 -0
- package/dist/lib/endpoint-scope.js.map +1 -0
- package/dist/lib/env-drift.d.ts +17 -0
- package/dist/lib/env-drift.d.ts.map +1 -0
- package/dist/lib/env-drift.js +108 -0
- package/dist/lib/env-drift.js.map +1 -0
- package/dist/lib/error-classify.d.ts +40 -0
- package/dist/lib/error-classify.d.ts.map +1 -0
- package/dist/lib/error-classify.js +687 -0
- package/dist/lib/error-classify.js.map +1 -0
- package/dist/lib/error-redaction.d.ts +8 -0
- package/dist/lib/error-redaction.d.ts.map +1 -0
- package/dist/lib/error-redaction.js +45 -0
- package/dist/lib/error-redaction.js.map +1 -0
- package/dist/lib/fallback-loop.d.ts +306 -0
- package/dist/lib/fallback-loop.d.ts.map +1 -0
- package/dist/lib/fallback-loop.js +1336 -0
- package/dist/lib/fallback-loop.js.map +1 -0
- package/dist/lib/file-permissions.d.ts +98 -0
- package/dist/lib/file-permissions.d.ts.map +1 -0
- package/dist/lib/file-permissions.js +159 -0
- package/dist/lib/file-permissions.js.map +1 -0
- package/dist/lib/gemini-wire.d.ts +76 -0
- package/dist/lib/gemini-wire.d.ts.map +1 -0
- package/dist/lib/gemini-wire.js +392 -0
- package/dist/lib/gemini-wire.js.map +1 -0
- package/dist/lib/guardrails.d.ts +37 -0
- package/dist/lib/guardrails.d.ts.map +1 -0
- package/dist/lib/guardrails.js +106 -0
- package/dist/lib/guardrails.js.map +1 -0
- package/dist/lib/header-value.d.ts +8 -0
- package/dist/lib/header-value.d.ts.map +1 -0
- package/dist/lib/header-value.js +55 -0
- package/dist/lib/header-value.js.map +1 -0
- package/dist/lib/image-normalize.d.ts +21 -0
- package/dist/lib/image-normalize.d.ts.map +1 -0
- package/dist/lib/image-normalize.js +218 -0
- package/dist/lib/image-normalize.js.map +1 -0
- package/dist/lib/inbound-chat.d.ts +48 -0
- package/dist/lib/inbound-chat.d.ts.map +1 -0
- package/dist/lib/inbound-chat.js +406 -0
- package/dist/lib/inbound-chat.js.map +1 -0
- package/dist/lib/key-parser.d.ts +79 -0
- package/dist/lib/key-parser.d.ts.map +1 -0
- package/dist/lib/key-parser.js +701 -0
- package/dist/lib/key-parser.js.map +1 -0
- package/dist/lib/key-proxy.d.ts +49 -0
- package/dist/lib/key-proxy.d.ts.map +1 -0
- package/dist/lib/key-proxy.js +92 -0
- package/dist/lib/key-proxy.js.map +1 -0
- package/dist/lib/log-redaction.d.ts +28 -0
- package/dist/lib/log-redaction.d.ts.map +1 -0
- package/dist/lib/log-redaction.js +166 -0
- package/dist/lib/log-redaction.js.map +1 -0
- package/dist/lib/model-scope.d.ts +9 -0
- package/dist/lib/model-scope.d.ts.map +1 -0
- package/dist/lib/model-scope.js +29 -0
- package/dist/lib/model-scope.js.map +1 -0
- package/dist/lib/one-time-code.d.ts +15 -0
- package/dist/lib/one-time-code.d.ts.map +1 -0
- package/dist/lib/one-time-code.js +41 -0
- package/dist/lib/one-time-code.js.map +1 -0
- package/dist/lib/output-cap.d.ts +24 -0
- package/dist/lib/output-cap.d.ts.map +1 -0
- package/dist/lib/output-cap.js +80 -0
- package/dist/lib/output-cap.js.map +1 -0
- package/dist/lib/password.d.ts +3 -0
- package/dist/lib/password.d.ts.map +1 -0
- package/dist/lib/password.js +27 -0
- package/dist/lib/password.js.map +1 -0
- package/dist/lib/process-safety-net.d.ts +32 -0
- package/dist/lib/process-safety-net.d.ts.map +1 -0
- package/dist/lib/process-safety-net.js +123 -0
- package/dist/lib/process-safety-net.js.map +1 -0
- package/dist/lib/provider-identity.d.ts +37 -0
- package/dist/lib/provider-identity.d.ts.map +1 -0
- package/dist/lib/provider-identity.js +110 -0
- package/dist/lib/provider-identity.js.map +1 -0
- package/dist/lib/provider-size-parser.d.ts +6 -0
- package/dist/lib/provider-size-parser.d.ts.map +1 -0
- package/dist/lib/provider-size-parser.js +72 -0
- package/dist/lib/provider-size-parser.js.map +1 -0
- package/dist/lib/provider-timeout.d.ts +17 -0
- package/dist/lib/provider-timeout.d.ts.map +1 -0
- package/dist/lib/provider-timeout.js +70 -0
- package/dist/lib/provider-timeout.js.map +1 -0
- package/dist/lib/proxy.d.ts +180 -0
- package/dist/lib/proxy.d.ts.map +1 -0
- package/dist/lib/proxy.js +1002 -0
- package/dist/lib/proxy.js.map +1 -0
- package/dist/lib/request-log.d.ts +4 -0
- package/dist/lib/request-log.d.ts.map +1 -0
- package/dist/lib/request-log.js +161 -0
- package/dist/lib/request-log.js.map +1 -0
- package/dist/lib/reset-code.d.ts +5 -0
- package/dist/lib/reset-code.d.ts.map +1 -0
- package/dist/lib/reset-code.js +39 -0
- package/dist/lib/reset-code.js.map +1 -0
- package/dist/lib/retry-hint.d.ts +14 -0
- package/dist/lib/retry-hint.d.ts.map +1 -0
- package/dist/lib/retry-hint.js +36 -0
- package/dist/lib/retry-hint.js.map +1 -0
- package/dist/lib/route-live.d.ts +29 -0
- package/dist/lib/route-live.d.ts.map +1 -0
- package/dist/lib/route-live.js +97 -0
- package/dist/lib/route-live.js.map +1 -0
- package/dist/lib/sampling-params.d.ts +183 -0
- package/dist/lib/sampling-params.d.ts.map +1 -0
- package/dist/lib/sampling-params.js +386 -0
- package/dist/lib/sampling-params.js.map +1 -0
- package/dist/lib/scheduler.d.ts +13 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +11 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/dist/lib/served-model.d.ts +16 -0
- package/dist/lib/served-model.d.ts.map +1 -0
- package/dist/lib/served-model.js +0 -0
- package/dist/lib/served-model.js.map +1 -0
- package/dist/lib/server-logs.d.ts +132 -0
- package/dist/lib/server-logs.d.ts.map +1 -0
- package/dist/lib/server-logs.js +473 -0
- package/dist/lib/server-logs.js.map +1 -0
- package/dist/lib/setup-code.d.ts +5 -0
- package/dist/lib/setup-code.d.ts.map +1 -0
- package/dist/lib/setup-code.js +35 -0
- package/dist/lib/setup-code.js.map +1 -0
- package/dist/lib/structured-output.d.ts +9 -0
- package/dist/lib/structured-output.d.ts.map +1 -0
- package/dist/lib/structured-output.js +72 -0
- package/dist/lib/structured-output.js.map +1 -0
- package/dist/lib/system-prompt.d.ts +30 -0
- package/dist/lib/system-prompt.d.ts.map +1 -0
- package/dist/lib/system-prompt.js +66 -0
- package/dist/lib/system-prompt.js.map +1 -0
- package/dist/lib/task-type.d.ts +18 -0
- package/dist/lib/task-type.d.ts.map +1 -0
- package/dist/lib/task-type.js +92 -0
- package/dist/lib/task-type.js.map +1 -0
- package/dist/lib/think-tags.d.ts +37 -0
- package/dist/lib/think-tags.d.ts.map +1 -0
- package/dist/lib/think-tags.js +203 -0
- package/dist/lib/think-tags.js.map +1 -0
- package/dist/lib/tool-args.d.ts +36 -0
- package/dist/lib/tool-args.d.ts.map +1 -0
- package/dist/lib/tool-args.js +190 -0
- package/dist/lib/tool-args.js.map +1 -0
- package/dist/lib/tool-call-rescue.d.ts +62 -0
- package/dist/lib/tool-call-rescue.d.ts.map +1 -0
- package/dist/lib/tool-call-rescue.js +258 -0
- package/dist/lib/tool-call-rescue.js.map +1 -0
- package/dist/lib/tool-capability.d.ts +13 -0
- package/dist/lib/tool-capability.d.ts.map +1 -0
- package/dist/lib/tool-capability.js +70 -0
- package/dist/lib/tool-capability.js.map +1 -0
- package/dist/lib/tool-validate.d.ts +44 -0
- package/dist/lib/tool-validate.d.ts.map +1 -0
- package/dist/lib/tool-validate.js +165 -0
- package/dist/lib/tool-validate.js.map +1 -0
- package/dist/lib/ttfb-budget.d.ts +13 -0
- package/dist/lib/ttfb-budget.d.ts.map +1 -0
- package/dist/lib/ttfb-budget.js +153 -0
- package/dist/lib/ttfb-budget.js.map +1 -0
- package/dist/lib/url-guard.d.ts +47 -0
- package/dist/lib/url-guard.d.ts.map +1 -0
- package/dist/lib/url-guard.js +229 -0
- package/dist/lib/url-guard.js.map +1 -0
- package/dist/lib/wake-detect.d.ts +12 -0
- package/dist/lib/wake-detect.d.ts.map +1 -0
- package/dist/lib/wake-detect.js +99 -0
- package/dist/lib/wake-detect.js.map +1 -0
- package/dist/middleware/errorHandler.d.ts +3 -0
- package/dist/middleware/errorHandler.d.ts.map +1 -0
- package/dist/middleware/errorHandler.js +45 -0
- package/dist/middleware/errorHandler.js.map +1 -0
- package/dist/middleware/rateLimit.d.ts +4 -0
- package/dist/middleware/rateLimit.d.ts.map +1 -0
- package/dist/middleware/rateLimit.js +125 -0
- package/dist/middleware/rateLimit.js.map +1 -0
- package/dist/middleware/requireAuth.d.ts +3 -0
- package/dist/middleware/requireAuth.d.ts.map +1 -0
- package/dist/middleware/requireAuth.js +17 -0
- package/dist/middleware/requireAuth.js.map +1 -0
- package/dist/providers/aclide.d.ts +18 -0
- package/dist/providers/aclide.d.ts.map +1 -0
- package/dist/providers/aclide.js +174 -0
- package/dist/providers/aclide.js.map +1 -0
- package/dist/providers/aihorde.d.ts +42 -0
- package/dist/providers/aihorde.d.ts.map +1 -0
- package/dist/providers/aihorde.js +192 -0
- package/dist/providers/aihorde.js.map +1 -0
- package/dist/providers/airforce.d.ts +11 -0
- package/dist/providers/airforce.d.ts.map +1 -0
- package/dist/providers/airforce.js +32 -0
- package/dist/providers/airforce.js.map +1 -0
- package/dist/providers/base.d.ts +177 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +354 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/blaze.d.ts +11 -0
- package/dist/providers/blaze.d.ts.map +1 -0
- package/dist/providers/blaze.js +33 -0
- package/dist/providers/blaze.js.map +1 -0
- package/dist/providers/blockrun.d.ts +14 -0
- package/dist/providers/blockrun.d.ts.map +1 -0
- package/dist/providers/blockrun.js +36 -0
- package/dist/providers/blockrun.js.map +1 -0
- package/dist/providers/clod.d.ts +11 -0
- package/dist/providers/clod.d.ts.map +1 -0
- package/dist/providers/clod.js +39 -0
- package/dist/providers/clod.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +15 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +175 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/cohere.d.ts +11 -0
- package/dist/providers/cohere.d.ts.map +1 -0
- package/dist/providers/cohere.js +117 -0
- package/dist/providers/cohere.js.map +1 -0
- package/dist/providers/dreamprompting.d.ts +11 -0
- package/dist/providers/dreamprompting.d.ts.map +1 -0
- package/dist/providers/dreamprompting.js +41 -0
- package/dist/providers/dreamprompting.js.map +1 -0
- package/dist/providers/electronhub.d.ts +10 -0
- package/dist/providers/electronhub.d.ts.map +1 -0
- package/dist/providers/electronhub.js +56 -0
- package/dist/providers/electronhub.js.map +1 -0
- package/dist/providers/experiential.d.ts +10 -0
- package/dist/providers/experiential.d.ts.map +1 -0
- package/dist/providers/experiential.js +33 -0
- package/dist/providers/experiential.js.map +1 -0
- package/dist/providers/gizmo.d.ts +15 -0
- package/dist/providers/gizmo.d.ts.map +1 -0
- package/dist/providers/gizmo.js +54 -0
- package/dist/providers/gizmo.js.map +1 -0
- package/dist/providers/google.d.ts +30 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +766 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +561 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/llmtr.d.ts +15 -0
- package/dist/providers/llmtr.d.ts.map +1 -0
- package/dist/providers/llmtr.js +51 -0
- package/dist/providers/llmtr.js.map +1 -0
- package/dist/providers/logfare.d.ts +11 -0
- package/dist/providers/logfare.d.ts.map +1 -0
- package/dist/providers/logfare.js +33 -0
- package/dist/providers/logfare.js.map +1 -0
- package/dist/providers/lucidity.d.ts +11 -0
- package/dist/providers/lucidity.d.ts.map +1 -0
- package/dist/providers/lucidity.js +37 -0
- package/dist/providers/lucidity.js.map +1 -0
- package/dist/providers/modelscope.d.ts +50 -0
- package/dist/providers/modelscope.d.ts.map +1 -0
- package/dist/providers/modelscope.js +143 -0
- package/dist/providers/modelscope.js.map +1 -0
- package/dist/providers/moondream.d.ts +17 -0
- package/dist/providers/moondream.d.ts.map +1 -0
- package/dist/providers/moondream.js +140 -0
- package/dist/providers/moondream.js.map +1 -0
- package/dist/providers/openai-compat.d.ts +140 -0
- package/dist/providers/openai-compat.d.ts.map +1 -0
- package/dist/providers/openai-compat.js +537 -0
- package/dist/providers/openai-compat.js.map +1 -0
- package/dist/providers/opencode-free.d.ts +24 -0
- package/dist/providers/opencode-free.d.ts.map +1 -0
- package/dist/providers/opencode-free.js +262 -0
- package/dist/providers/opencode-free.js.map +1 -0
- package/dist/providers/pollinations.d.ts +32 -0
- package/dist/providers/pollinations.d.ts.map +1 -0
- package/dist/providers/pollinations.js +65 -0
- package/dist/providers/pollinations.js.map +1 -0
- package/dist/providers/router9.d.ts +16 -0
- package/dist/providers/router9.d.ts.map +1 -0
- package/dist/providers/router9.js +42 -0
- package/dist/providers/router9.js.map +1 -0
- package/dist/providers/sail.d.ts +44 -0
- package/dist/providers/sail.d.ts.map +1 -0
- package/dist/providers/sail.js +302 -0
- package/dist/providers/sail.js.map +1 -0
- package/dist/providers/septor.d.ts +10 -0
- package/dist/providers/septor.d.ts.map +1 -0
- package/dist/providers/septor.js +36 -0
- package/dist/providers/septor.js.map +1 -0
- package/dist/providers/speechify.d.ts +14 -0
- package/dist/providers/speechify.d.ts.map +1 -0
- package/dist/providers/speechify.js +28 -0
- package/dist/providers/speechify.js.map +1 -0
- package/dist/providers/speka.d.ts +12 -0
- package/dist/providers/speka.d.ts.map +1 -0
- package/dist/providers/speka.js +37 -0
- package/dist/providers/speka.js.map +1 -0
- package/dist/providers/waterfall.d.ts +11 -0
- package/dist/providers/waterfall.d.ts.map +1 -0
- package/dist/providers/waterfall.js +33 -0
- package/dist/providers/waterfall.js.map +1 -0
- package/dist/providers/xkiro.d.ts +71 -0
- package/dist/providers/xkiro.d.ts.map +1 -0
- package/dist/providers/xkiro.js +119 -0
- package/dist/providers/xkiro.js.map +1 -0
- package/dist/providers/zhipu.d.ts +43 -0
- package/dist/providers/zhipu.d.ts.map +1 -0
- package/dist/providers/zhipu.js +95 -0
- package/dist/providers/zhipu.js.map +1 -0
- package/dist/routes/analytics.d.ts +2 -0
- package/dist/routes/analytics.d.ts.map +1 -0
- package/dist/routes/analytics.js +738 -0
- package/dist/routes/analytics.js.map +1 -0
- package/dist/routes/anthropic.d.ts +7 -0
- package/dist/routes/anthropic.d.ts.map +1 -0
- package/dist/routes/anthropic.js +1076 -0
- package/dist/routes/anthropic.js.map +1 -0
- package/dist/routes/auth.d.ts +2 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +310 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/backups.d.ts +2 -0
- package/dist/routes/backups.d.ts.map +1 -0
- package/dist/routes/backups.js +127 -0
- package/dist/routes/backups.js.map +1 -0
- package/dist/routes/cache.d.ts +2 -0
- package/dist/routes/cache.d.ts.map +1 -0
- package/dist/routes/cache.js +40 -0
- package/dist/routes/cache.js.map +1 -0
- package/dist/routes/client-profiles.d.ts +2 -0
- package/dist/routes/client-profiles.d.ts.map +1 -0
- package/dist/routes/client-profiles.js +128 -0
- package/dist/routes/client-profiles.js.map +1 -0
- package/dist/routes/compression.d.ts +2 -0
- package/dist/routes/compression.d.ts.map +1 -0
- package/dist/routes/compression.js +82 -0
- package/dist/routes/compression.js.map +1 -0
- package/dist/routes/conversations.d.ts +3 -0
- package/dist/routes/conversations.d.ts.map +1 -0
- package/dist/routes/conversations.js +215 -0
- package/dist/routes/conversations.js.map +1 -0
- package/dist/routes/docs.d.ts +2 -0
- package/dist/routes/docs.d.ts.map +1 -0
- package/dist/routes/docs.js +21 -0
- package/dist/routes/docs.js.map +1 -0
- package/dist/routes/embeddings.d.ts +2 -0
- package/dist/routes/embeddings.d.ts.map +1 -0
- package/dist/routes/embeddings.js +255 -0
- package/dist/routes/embeddings.js.map +1 -0
- package/dist/routes/fallback.d.ts +2 -0
- package/dist/routes/fallback.d.ts.map +1 -0
- package/dist/routes/fallback.js +631 -0
- package/dist/routes/fallback.js.map +1 -0
- package/dist/routes/free-tier.d.ts +22 -0
- package/dist/routes/free-tier.d.ts.map +1 -0
- package/dist/routes/free-tier.js +175 -0
- package/dist/routes/free-tier.js.map +1 -0
- package/dist/routes/gemini.d.ts +2 -0
- package/dist/routes/gemini.d.ts.map +1 -0
- package/dist/routes/gemini.js +218 -0
- package/dist/routes/gemini.js.map +1 -0
- package/dist/routes/health.d.ts +2 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +72 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/keys.d.ts +17 -0
- package/dist/routes/keys.d.ts.map +1 -0
- package/dist/routes/keys.js +1787 -0
- package/dist/routes/keys.js.map +1 -0
- package/dist/routes/logs.d.ts +2 -0
- package/dist/routes/logs.d.ts.map +1 -0
- package/dist/routes/logs.js +88 -0
- package/dist/routes/logs.js.map +1 -0
- package/dist/routes/mcp.d.ts +4 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +563 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/media.d.ts +2 -0
- package/dist/routes/media.d.ts.map +1 -0
- package/dist/routes/media.js +180 -0
- package/dist/routes/media.js.map +1 -0
- package/dist/routes/models.d.ts +2 -0
- package/dist/routes/models.d.ts.map +1 -0
- package/dist/routes/models.js +439 -0
- package/dist/routes/models.js.map +1 -0
- package/dist/routes/ollama.d.ts +7 -0
- package/dist/routes/ollama.d.ts.map +1 -0
- package/dist/routes/ollama.js +595 -0
- package/dist/routes/ollama.js.map +1 -0
- package/dist/routes/profiles.d.ts +3 -0
- package/dist/routes/profiles.d.ts.map +1 -0
- package/dist/routes/profiles.js +431 -0
- package/dist/routes/profiles.js.map +1 -0
- package/dist/routes/proxy.d.ts +32 -0
- package/dist/routes/proxy.d.ts.map +1 -0
- package/dist/routes/proxy.js +2793 -0
- package/dist/routes/proxy.js.map +1 -0
- package/dist/routes/responses.d.ts +1161 -0
- package/dist/routes/responses.d.ts.map +1 -0
- package/dist/routes/responses.js +1521 -0
- package/dist/routes/responses.js.map +1 -0
- package/dist/routes/settings.d.ts +2 -0
- package/dist/routes/settings.d.ts.map +1 -0
- package/dist/routes/settings.js +549 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/routes/status.d.ts +3 -0
- package/dist/routes/status.d.ts.map +1 -0
- package/dist/routes/status.js +214 -0
- package/dist/routes/status.js.map +1 -0
- package/dist/routes/update.d.ts +31 -0
- package/dist/routes/update.d.ts.map +1 -0
- package/dist/routes/update.js +536 -0
- package/dist/routes/update.js.map +1 -0
- package/dist/routes/url-tokens.d.ts +2 -0
- package/dist/routes/url-tokens.d.ts.map +1 -0
- package/dist/routes/url-tokens.js +31 -0
- package/dist/routes/url-tokens.js.map +1 -0
- package/dist/scripts/export-catalog.d.ts +2 -0
- package/dist/scripts/export-catalog.d.ts.map +1 -0
- package/dist/scripts/export-catalog.js +114 -0
- package/dist/scripts/export-catalog.js.map +1 -0
- package/dist/scripts/rotate-encryption-key.d.ts +81 -0
- package/dist/scripts/rotate-encryption-key.d.ts.map +1 -0
- package/dist/scripts/rotate-encryption-key.js +232 -0
- package/dist/scripts/rotate-encryption-key.js.map +1 -0
- package/dist/scripts/routing-sim.d.ts +2 -0
- package/dist/scripts/routing-sim.d.ts.map +1 -0
- package/dist/scripts/routing-sim.js +130 -0
- package/dist/scripts/routing-sim.js.map +1 -0
- package/dist/scripts/test-all-models.d.ts +2 -0
- package/dist/scripts/test-all-models.d.ts.map +1 -0
- package/dist/scripts/test-all-models.js +56 -0
- package/dist/scripts/test-all-models.js.map +1 -0
- package/dist/services/anthropic-map.d.ts +39 -0
- package/dist/services/anthropic-map.d.ts.map +1 -0
- package/dist/services/anthropic-map.js +138 -0
- package/dist/services/anthropic-map.js.map +1 -0
- package/dist/services/auth.d.ts +30 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/auth.js +124 -0
- package/dist/services/auth.js.map +1 -0
- package/dist/services/auto-discover.d.ts +77 -0
- package/dist/services/auto-discover.d.ts.map +1 -0
- package/dist/services/auto-discover.js +1047 -0
- package/dist/services/auto-discover.js.map +1 -0
- package/dist/services/backups.d.ts +67 -0
- package/dist/services/backups.d.ts.map +1 -0
- package/dist/services/backups.js +444 -0
- package/dist/services/backups.js.map +1 -0
- package/dist/services/builtin-model-discovery.d.ts +107 -0
- package/dist/services/builtin-model-discovery.d.ts.map +1 -0
- package/dist/services/builtin-model-discovery.js +296 -0
- package/dist/services/builtin-model-discovery.js.map +1 -0
- package/dist/services/cache.d.ts +190 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +617 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/catalog-sync.d.ts +257 -0
- package/dist/services/catalog-sync.d.ts.map +1 -0
- package/dist/services/catalog-sync.js +1041 -0
- package/dist/services/catalog-sync.js.map +1 -0
- package/dist/services/compression/config.d.ts +33 -0
- package/dist/services/compression/config.d.ts.map +1 -0
- package/dist/services/compression/config.js +158 -0
- package/dist/services/compression/config.js.map +1 -0
- package/dist/services/compression/engines/aging.d.ts +2 -0
- package/dist/services/compression/engines/aging.d.ts.map +1 -0
- package/dist/services/compression/engines/aging.js +53 -0
- package/dist/services/compression/engines/aging.js.map +1 -0
- package/dist/services/compression/engines/custom-filters.d.ts +4 -0
- package/dist/services/compression/engines/custom-filters.d.ts.map +1 -0
- package/dist/services/compression/engines/custom-filters.js +49 -0
- package/dist/services/compression/engines/custom-filters.js.map +1 -0
- package/dist/services/compression/engines/dedup.d.ts +2 -0
- package/dist/services/compression/engines/dedup.d.ts.map +1 -0
- package/dist/services/compression/engines/dedup.js +61 -0
- package/dist/services/compression/engines/dedup.js.map +1 -0
- package/dist/services/compression/engines/filter-definitions.d.ts +75 -0
- package/dist/services/compression/engines/filter-definitions.d.ts.map +1 -0
- package/dist/services/compression/engines/filter-definitions.js +45 -0
- package/dist/services/compression/engines/filter-definitions.js.map +1 -0
- package/dist/services/compression/engines/hard-budget.d.ts +2 -0
- package/dist/services/compression/engines/hard-budget.d.ts.map +1 -0
- package/dist/services/compression/engines/hard-budget.js +52 -0
- package/dist/services/compression/engines/hard-budget.js.map +1 -0
- package/dist/services/compression/engines/index.d.ts +9 -0
- package/dist/services/compression/engines/index.d.ts.map +1 -0
- package/dist/services/compression/engines/index.js +9 -0
- package/dist/services/compression/engines/index.js.map +1 -0
- package/dist/services/compression/engines/jsoncompact.d.ts +3 -0
- package/dist/services/compression/engines/jsoncompact.d.ts.map +1 -0
- package/dist/services/compression/engines/jsoncompact.js +145 -0
- package/dist/services/compression/engines/jsoncompact.js.map +1 -0
- package/dist/services/compression/engines/lite.d.ts +2 -0
- package/dist/services/compression/engines/lite.d.ts.map +1 -0
- package/dist/services/compression/engines/lite.js +34 -0
- package/dist/services/compression/engines/lite.js.map +1 -0
- package/dist/services/compression/engines/read-lifecycle.d.ts +2 -0
- package/dist/services/compression/engines/read-lifecycle.d.ts.map +1 -0
- package/dist/services/compression/engines/read-lifecycle.js +70 -0
- package/dist/services/compression/engines/read-lifecycle.js.map +1 -0
- package/dist/services/compression/engines/relevance.d.ts +2 -0
- package/dist/services/compression/engines/relevance.d.ts.map +1 -0
- package/dist/services/compression/engines/relevance.js +74 -0
- package/dist/services/compression/engines/relevance.js.map +1 -0
- package/dist/services/compression/engines/toolfilter.d.ts +2 -0
- package/dist/services/compression/engines/toolfilter.d.ts.map +1 -0
- package/dist/services/compression/engines/toolfilter.js +195 -0
- package/dist/services/compression/engines/toolfilter.js.map +1 -0
- package/dist/services/compression/fidelity-gate.d.ts +12 -0
- package/dist/services/compression/fidelity-gate.d.ts.map +1 -0
- package/dist/services/compression/fidelity-gate.js +90 -0
- package/dist/services/compression/fidelity-gate.js.map +1 -0
- package/dist/services/compression/helpers.d.ts +9 -0
- package/dist/services/compression/helpers.d.ts.map +1 -0
- package/dist/services/compression/helpers.js +52 -0
- package/dist/services/compression/helpers.js.map +1 -0
- package/dist/services/compression/pipeline.d.ts +7 -0
- package/dist/services/compression/pipeline.d.ts.map +1 -0
- package/dist/services/compression/pipeline.js +245 -0
- package/dist/services/compression/pipeline.js.map +1 -0
- package/dist/services/compression/preservation.d.ts +27 -0
- package/dist/services/compression/preservation.d.ts.map +1 -0
- package/dist/services/compression/preservation.js +109 -0
- package/dist/services/compression/preservation.js.map +1 -0
- package/dist/services/compression/registry.d.ts +6 -0
- package/dist/services/compression/registry.d.ts.map +1 -0
- package/dist/services/compression/registry.js +16 -0
- package/dist/services/compression/registry.js.map +1 -0
- package/dist/services/compression/stats.d.ts +29 -0
- package/dist/services/compression/stats.d.ts.map +1 -0
- package/dist/services/compression/stats.js +55 -0
- package/dist/services/compression/stats.js.map +1 -0
- package/dist/services/compression/types.d.ts +90 -0
- package/dist/services/compression/types.d.ts.map +1 -0
- package/dist/services/compression/types.js +2 -0
- package/dist/services/compression/types.js.map +1 -0
- package/dist/services/context-handoff.d.ts +22 -0
- package/dist/services/context-handoff.d.ts.map +1 -0
- package/dist/services/context-handoff.js +164 -0
- package/dist/services/context-handoff.js.map +1 -0
- package/dist/services/cooldown-probe.d.ts +24 -0
- package/dist/services/cooldown-probe.d.ts.map +1 -0
- package/dist/services/cooldown-probe.js +181 -0
- package/dist/services/cooldown-probe.js.map +1 -0
- package/dist/services/custom-endpoint.d.ts +58 -0
- package/dist/services/custom-endpoint.d.ts.map +1 -0
- package/dist/services/custom-endpoint.js +167 -0
- package/dist/services/custom-endpoint.js.map +1 -0
- package/dist/services/custom-media-register.d.ts +22 -0
- package/dist/services/custom-media-register.d.ts.map +1 -0
- package/dist/services/custom-media-register.js +45 -0
- package/dist/services/custom-media-register.js.map +1 -0
- package/dist/services/custom-model-register.d.ts +50 -0
- package/dist/services/custom-model-register.d.ts.map +1 -0
- package/dist/services/custom-model-register.js +103 -0
- package/dist/services/custom-model-register.js.map +1 -0
- package/dist/services/custom-model-seed.d.ts +18 -0
- package/dist/services/custom-model-seed.d.ts.map +1 -0
- package/dist/services/custom-model-seed.js +42 -0
- package/dist/services/custom-model-seed.js.map +1 -0
- package/dist/services/custom-model-sync.d.ts +37 -0
- package/dist/services/custom-model-sync.d.ts.map +1 -0
- package/dist/services/custom-model-sync.js +118 -0
- package/dist/services/custom-model-sync.js.map +1 -0
- package/dist/services/custom-model-tombstone.d.ts +5 -0
- package/dist/services/custom-model-tombstone.d.ts.map +1 -0
- package/dist/services/custom-model-tombstone.js +30 -0
- package/dist/services/custom-model-tombstone.js.map +1 -0
- package/dist/services/declarative-config.d.ts +356 -0
- package/dist/services/declarative-config.d.ts.map +1 -0
- package/dist/services/declarative-config.js +427 -0
- package/dist/services/declarative-config.js.map +1 -0
- package/dist/services/degradation.d.ts +40 -0
- package/dist/services/degradation.d.ts.map +1 -0
- package/dist/services/degradation.js +119 -0
- package/dist/services/degradation.js.map +1 -0
- package/dist/services/embeddings.d.ts +76 -0
- package/dist/services/embeddings.d.ts.map +1 -0
- package/dist/services/embeddings.js +319 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/fusion.d.ts +162 -0
- package/dist/services/fusion.d.ts.map +1 -0
- package/dist/services/fusion.js +789 -0
- package/dist/services/fusion.js.map +1 -0
- package/dist/services/gemini-map.d.ts +14 -0
- package/dist/services/gemini-map.d.ts.map +1 -0
- package/dist/services/gemini-map.js +78 -0
- package/dist/services/gemini-map.js.map +1 -0
- package/dist/services/health.d.ts +52 -0
- package/dist/services/health.d.ts.map +1 -0
- package/dist/services/health.js +352 -0
- package/dist/services/health.js.map +1 -0
- package/dist/services/idempotency.d.ts +49 -0
- package/dist/services/idempotency.d.ts.map +1 -0
- package/dist/services/idempotency.js +140 -0
- package/dist/services/idempotency.js.map +1 -0
- package/dist/services/key-budget.d.ts +74 -0
- package/dist/services/key-budget.d.ts.map +1 -0
- package/dist/services/key-budget.js +200 -0
- package/dist/services/key-budget.js.map +1 -0
- package/dist/services/media.d.ts +123 -0
- package/dist/services/media.d.ts.map +1 -0
- package/dist/services/media.js +954 -0
- package/dist/services/media.js.map +1 -0
- package/dist/services/model-discovery.d.ts +126 -0
- package/dist/services/model-discovery.d.ts.map +1 -0
- package/dist/services/model-discovery.js +662 -0
- package/dist/services/model-discovery.js.map +1 -0
- package/dist/services/model-groups.d.ts +149 -0
- package/dist/services/model-groups.d.ts.map +1 -0
- package/dist/services/model-groups.js +314 -0
- package/dist/services/model-groups.js.map +1 -0
- package/dist/services/model-listing.d.ts +18 -0
- package/dist/services/model-listing.d.ts.map +1 -0
- package/dist/services/model-listing.js +94 -0
- package/dist/services/model-listing.js.map +1 -0
- package/dist/services/model-retirement.d.ts +29 -0
- package/dist/services/model-retirement.d.ts.map +1 -0
- package/dist/services/model-retirement.js +86 -0
- package/dist/services/model-retirement.js.map +1 -0
- package/dist/services/model-state.d.ts +90 -0
- package/dist/services/model-state.d.ts.map +1 -0
- package/dist/services/model-state.js +342 -0
- package/dist/services/model-state.js.map +1 -0
- package/dist/services/model-weight-overrides.d.ts +48 -0
- package/dist/services/model-weight-overrides.d.ts.map +1 -0
- package/dist/services/model-weight-overrides.js +127 -0
- package/dist/services/model-weight-overrides.js.map +1 -0
- package/dist/services/notification-emitter.d.ts +50 -0
- package/dist/services/notification-emitter.d.ts.map +1 -0
- package/dist/services/notification-emitter.js +177 -0
- package/dist/services/notification-emitter.js.map +1 -0
- package/dist/services/opencode-free-sync.d.ts +29 -0
- package/dist/services/opencode-free-sync.d.ts.map +1 -0
- package/dist/services/opencode-free-sync.js +206 -0
- package/dist/services/opencode-free-sync.js.map +1 -0
- package/dist/services/penalty-inspector.d.ts +56 -0
- package/dist/services/penalty-inspector.d.ts.map +1 -0
- package/dist/services/penalty-inspector.js +167 -0
- package/dist/services/penalty-inspector.js.map +1 -0
- package/dist/services/profile-models.d.ts +5 -0
- package/dist/services/profile-models.d.ts.map +1 -0
- package/dist/services/profile-models.js +62 -0
- package/dist/services/profile-models.js.map +1 -0
- package/dist/services/provider-credential.d.ts +19 -0
- package/dist/services/provider-credential.d.ts.map +1 -0
- package/dist/services/provider-credential.js +51 -0
- package/dist/services/provider-credential.js.map +1 -0
- package/dist/services/provider-quota.d.ts +64 -0
- package/dist/services/provider-quota.d.ts.map +1 -0
- package/dist/services/provider-quota.js +563 -0
- package/dist/services/provider-quota.js.map +1 -0
- package/dist/services/quirks.d.ts +0 -0
- package/dist/services/quirks.d.ts.map +1 -0
- package/dist/services/quirks.js +0 -0
- package/dist/services/quirks.js.map +1 -0
- package/dist/services/quota-forecast.d.ts +50 -0
- package/dist/services/quota-forecast.d.ts.map +1 -0
- package/dist/services/quota-forecast.js +150 -0
- package/dist/services/quota-forecast.js.map +1 -0
- package/dist/services/quota-outlook.d.ts +4 -0
- package/dist/services/quota-outlook.d.ts.map +1 -0
- package/dist/services/quota-outlook.js +92 -0
- package/dist/services/quota-outlook.js.map +1 -0
- package/dist/services/ratelimit.d.ts +249 -0
- package/dist/services/ratelimit.d.ts.map +1 -0
- package/dist/services/ratelimit.js +1182 -0
- package/dist/services/ratelimit.js.map +1 -0
- package/dist/services/request-retention.d.ts +60 -0
- package/dist/services/request-retention.d.ts.map +1 -0
- package/dist/services/request-retention.js +229 -0
- package/dist/services/request-retention.js.map +1 -0
- package/dist/services/router.d.ts +384 -0
- package/dist/services/router.d.ts.map +1 -0
- package/dist/services/router.js +1986 -0
- package/dist/services/router.js.map +1 -0
- package/dist/services/scoring.d.ts +156 -0
- package/dist/services/scoring.d.ts.map +1 -0
- package/dist/services/scoring.js +435 -0
- package/dist/services/scoring.js.map +1 -0
- package/dist/services/url-tokens.d.ts +15 -0
- package/dist/services/url-tokens.d.ts.map +1 -0
- package/dist/services/url-tokens.js +55 -0
- package/dist/services/url-tokens.js.map +1 -0
- package/package.json +77 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={nav:{models:`Modele`,playground:`Locul de joacă`,keys:`Chei`,analytics:`Analiză`,premium:`Premium`,upgrade:`Modernizare`,settings:`Setări`,signOut:`Deconectează-te`,openMenu:`Deschide meniul de navigare`,switchLight:`Treci la tema luminoasă`,switchDark:`Treci la tema întunecată`,switchToChinese:`Trecerea la chineză`,switchToEnglish:`Trecerea la engleză`,modelsMenu:`Explorează tipurile de modele`,agents:`Agenți`,logs:`Jurnale`,analyticsMenu:`Pagini de analiză`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Creează-ți contul`,signIn:`Conectează-te`,email:`Email`,password:`Parolă`,emailPlaceholder:`you@example.com`,passwordPlaceholderSetup:`cel puțin 8 caractere`,passwordPlaceholderLogin:`parola ta`,setupDescription:`Setează adresa de email și parola care vor proteja acest tablou de bord.`,loginDescription:`Conectează-te pentru a-ți gestiona cheile, rutarea și analizele.`,createAccount:`Creează cont`,creating:`Creând...`,signingIn:`Semnare...`,loading:`Se încarcă...`,newPasswordAutoComplete:`parolă nouă`,currentPasswordAutoComplete:`parola curentă`,serverUnreachableBefore:`Nu pot contacta serverul. Asigură-te că backend-ul rulează (`,serverUnreachableAfter:`).`,setupCode:`Cod de configurare`,setupCodePlaceholder:`Cod din jurnalele serverului`,setupCodeHint:`Configurarea de pe un alt dispozitiv necesită ca codul de o singură dată să fie imprimat în jurnalele serverului la pornire.`,changePassword:`Schimbă parola`,changeEmail:`Schimbă e-mailul`,forgotPassword:`Ai uitat parola?`,currentPassword:`Parola actuală`,newPassword:`Parolă nouă`,newEmail:`E-mail nou`,resetCode:`Cod de resetare`,resetCodePlaceholder:`cod din jurnalele serverului`,resetCodeHint:`Codul se află în jurnalul serverului. Nu este trimis niciodată prin e-mail.`,forgotPasswordDescription:`Apasă butonul de mai jos pentru a genera un cod de resetare. Codul este scris în jurnalul serverului, niciodată trimis prin e-mail. Introdu-l aici pentru a seta o parolă nouă.`,requestResetCode:`Trimite codul`,requestingResetCode:`Se trimite…`,resetPassword:`Resetează parola`,resettingPassword:`Se resetează…`,changingPassword:`Se schimbă…`,changingEmail:`Se schimbă…`,backToLogin:`Înapoi la autentificare`,passwordChanged:`Parola a fost schimbată.`,emailChanged:`E-mailul a fost schimbat.`,passwordReset:`Parola a fost resetată. Autentifică-te.`,resetCodeDockerHint:`Rulezi în Docker? Codul se află în jurnalul containerului: docker logs <container>.`,desktopSessionFailed:`Panoul de control nu s-a putut autentifica la serverul local. Închide SRouter și deschide-l din nou.`},common:{save:`Salvează`,saving:`Salvând...`,cancel:`Anulează`,discard:`Aruncarea`,delete:`Șterge`,confirm:`Confirmă`,copy:`Recepționat`,copied:`Copiat`,copyFailed:`Nu s-a putut copia — selectează textul și copiază-l manual`,show:`Emisiune`,hide:`Ascunde-te`,apply:`Aplică`,applied:`Aplicat`,applying:`Aplică...`,active:`Activitate`,inactive:`Inactiv`,never:`niciodată`,loading:`Se încarcă...`,error:`Eroare`,noData:`Încă nu există date`,unsavedChanges:`Modificări nesalvate`,saveChanges:`Salvează modificările`,remove:`Îndepărtează`,unknownError:`Eroare necunoscută`,model:`Model`,provider:`Furnizor`,success:`Succes`,failures:`Eșecuri`,dismiss:`Dizolvați`,status:`Statut`},settings:{title:`Setări`,language:`Limbă`,theme:`Temă`,themeSystem:`Sistem`,themeLight:`Luminos`,themeDark:`Întunecat`,searchLanguage:`Căutați limbi…`,noLanguages:`Nicio limbă găsită`,sections:`Secțiuni de setări`,sectionGeneral:`General`,sectionCompression:`Comprimare`,sectionAdvanced:`Avansat`,sectionPreview:`Previzualizare`,generalDescription:`Limba și aspectul acestui panou.`,advancedDescription:`Praguri și comutatoare de siguranță pentru lanțul de comprimare.`,compressionTitle:`Comprimarea prompturilor`,compressionDescription:`Reduce dimensiunea cererilor înainte de rutare, păstrând codul, erorile, căile, numerele și definițiile instrumentelor.`,compressionHelp:`Rescrie fiecare cerere înainte de a fi trimisă către un furnizor, astfel încât să folosească mai puține tokenuri. Codul, erorile, căile fișierelor și numerele sunt protejate, iar orice rescriere care le deteriorează este eliminată.`,compressionMode:`Mod`,compressionModeHelp:`„Dezactivată” trimite cererile nemodificate. „Fără pierderi” elimină doar textul duplicat și inutil. „Standard” scurtează în plus rezultatul instrumentelor. „Agresivă” condensează suplimentar replicile mai vechi.`,compressionOff:`Dezactivată`,compressionLossless:`Fără pierderi`,compressionStandard:`Standard`,compressionAggressive:`Agresivă`,compressionLossy:`Cu pierderi`,compressionEngines:`Motoare`,compressionEnginesHelp:`Fiecare motor este un pas de rescriere. Modul decide ce motoare rulează; un motor dezactivat aici nu va rula în niciun mod.`,engineDedup:`Blocuri repetate`,engineDedupHelp:`Înlocuiește un bloc de text apărut deja mai devreme în conversație cu o referință scurtă la el.`,engineLite:`Curățarea spațiilor`,engineLiteHelp:`Elimină spațiile de la capătul rândurilor, comasează rândurile goale repetate și înlătură mesajele de sistem duplicate.`,engineReadLifecycle:`Citiri de fișiere depășite`,engineReadLifecycleHelp:`Înlocuiește o citire anterioară a unui fișier cu o notă, odată ce același fișier este citit sau editat din nou.`,engineToolfilter:`Filtru pentru rezultatul instrumentelor`,engineToolfilterHelp:`Scurtează rezultatul comenzilor și instrumentelor, precum compilări, teste și instalări. Rândurile cu erori și urme de stivă se păstrează întotdeauna.`,engineJsoncompact:`Tabele JSON`,engineJsoncompactHelp:`Recodifică tablourile JSON lungi care au aceleași câmpuri sub forma unui tabel compact. Procesul este reversibil, deci nu se pierde nimic.`,engineRelevance:`Filtru de relevanță`,engineRelevanceHelp:`Când un mesaj depășește bugetul său de dimensiune, elimină propozițiile cel mai puțin legate de ultimul mesaj.`,engineAging:`Replici mai vechi`,engineAgingHelp:`Condensează replicile mai vechi decât ultimele câteva într-un rezumat scurt care păstrează căile, erorile și deciziile.`,engineHardBudget:`Plafon de tokenuri`,engineHardBudgetHelp:`Elimină rândurile cel mai puțin valoroase până când cererea se încadrează în numărul de tokenuri vizat.`,compressionAutoTrigger:`Declanșare automată peste tokenurile estimate`,compressionAutoTriggerHelp:`Cererile estimate peste acest număr de tokenuri trec automat pe modul agresiv. Lasă gol pentru a dezactiva.`,compressionPrefixFreeze:`Îngheață prefixele de prompt recurente`,compressionPrefixFreezeHelp:`Lasă neatins un prompt de sistem după ce același text a fost întâlnit de trei ori, astfel încât memorarea în cache a prompturilor la furnizor să funcționeze în continuare.`,compressionTrustProjectFilters:`Ai încredere în fișierele de filtru ale proiectului`,compressionTrustProjectFiltersHelp:`Încarcă filtre pentru rezultatul instrumentelor și din directorul de lucru. Dezactivat implicit, deoarece un depozit ar putea folosi asta pentru a ascunde rezultatul de model.`,compressionStats:`Dimensiune economisită`,compressionEstimatedTokensSaved:`Tokenuri estimate economisite`,compressionPreview:`Previzualizare live`,compressionPreviewDescription:`Trimite corpul unei cereri prin lanțul de procesare pentru a vedea ce ar primi un furnizor.`,compressionPreviewPlaceholder:`Lipește JSON-ul cererii sau text simplu`,compressionRunPreview:`Rulează previzualizarea`,updatesTitle:`Actualizări`,checkForUpdates:`Verifică actualizările`,lastChecked:`Ultima verificare: {when}`,currentVersion:`Versiunea curentă:`,updateAvailable:`Actualizare disponibilă`,changelog:`Ce s-a schimbat`,upToDate:`La zi`,buildAhead:`Această versiune este înaintea ramurii main oficiale.`,buildDiverged:`Această versiune a deviat de la ramura main oficială.`,buildUnknown:`Această versiune personalizată nu poate fi comparată cu ramura main oficială.`,notGitInstall:`Această instalare nu include informații despre commit.`,checkFailed:`Nu s-au putut verifica actualizările.`,contactsGithub:`Verificările sunt inițiate manual și contactează GitHub.`,autoUpdateCheck:`Verificare automată a actualizărilor`,autoUpdateCheckHelp:`Verifică GitHub o dată pe zi dacă există o versiune nouă și afișează o notificare. Dezactivat implicit.`,openReleases:`Deschide versiunile GitHub`,restartAfterUpdate:`Repornește SRouter după finalizarea compilării.`,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 de chat`,fusionTab:`Fuziune`,embeddingsTab:`Încorporații`,imageTab:`Imagine`,videoTab:`Video`,audioTab:`Audio`,imageDesc:`Modele de generare text-to-image.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Modele text-to-speech și speech-to-text.`,mediaHint:`Generează prin`,mediaEmpty:`Încă nu există modele. Se sincronizează din catalog.`,ttsHeading:`Text-to-speech`,sttHeading:`Voce în text`,sttHint:`Transcriere prin`,sttEmpty:`Nu există încă modele de speech-to-text. Se sincronizează din catalog.`,newBadge:`Nou`,monthlyTokenBudget:`Buget lunar pentru tokenuri`,remaining:`rămas`,used:`Utilizare`,usedScopeHint:`Chat requests only, since the start of this calendar month, summed over every model in the active chain — custom endpoints included. Traffic you send to a provider outside SRouter is not counted.`,legendRemainingTitle:`Remaining / monthly budget for {name} ({platform})`,noPublishedQuota:`+{count} with no published quota`,noPublishedQuotaTitle:`These models have no documented monthly token budget, so there is no remaining figure to show.`,of:`de`,showAllModels:`Afișează toate modelele {count}`,showLess:`Afișează mai puțin`,vision:`Viziune`,visionTitle:`Acceptă intrarea de imagine`,tools:`Unelte`,toolsTitle:`Emite apeluri structurate pentru unelte, deci este eligibil pentru cereri cu rulante de unelte`,retired:`Retras`,penalty:`−{value} penalizare`,obs:`{count} observații`,tokPerMonth:`{count} tok/mo`,rpmLimit:`{count} rpm`,rpdLimit:`{count} RPD`,noKey:`fără cheie`,dragToReorder:`Rezistența la reordonare`,dragToReorderGroup:`Drag la reordonare a modelului`,moveToRank:`Sari la poziția`,providerCount:`{count} furnizori`,servedBy:`Deservit de {providers}`,viewProviders:`Vezi furnizorii`,backToModels:`Înapoi la modele`,providersHeading:`Furnizori care deservesc acest model`,codeSnippetHeading:`Folosește acest model`,modelNotFound:`Acest model nu este disponibil sau nu are furnizori configurați.`,providerIdsHeading:`ID-urile modelelor furnizorului`,providerIdsHint:`Trimite ID-ul unificat al modelului pentru a face failover la fiecare furnizor sau un ID specific pentru a fixa un furnizor.`,copyModelName:`Copie a numelui modelului`,settingsHeading:`Setări ale furnizorilor`,settingsHint:`Editările locale la modelele de catalog sunt păstrate între sincronizările de catalog. Modelele șterse din catalog rămân șterse până când le adaugi din nou prin configurare.`,catalogModel:`Catalog`,customModel:`Personalizat`,discoveredModel:`descoperit`,localOverride:`Suprascriere locală`,displayName:`Nume afișat`,sizeLabel:`Nivel de capacitate`,sizeLabelHint:`Frontier/Large/Medium/Small determină axa inteligenței: un nivel superior îl depășește întotdeauna pe unul inferior, iar în cadrul aceluiași nivel rangul de inteligență continuă să miște punctajul. Un model fără un nivel recunoscut primește cel mai mic punctaj pe această axă, dar inteligența este doar una dintre cele trei axe — cu fiabilitate și viteză bune poate fi totuși rutat.`,sizeLabelNone:`Niciunul (cel mai mic punctaj de inteligență)`,contextWindow:`Context`,inFallback:`În lanț`,saveModelSettings:`Salvează setările modelului`,aggregateBudget:`{count}/luna`,aggregateBudgetTitle:`Tokenuri gratuite totale pe lună în furnizorii acestui model`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Limitat de rată — fără buget lunar fix pentru tokenuri`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Utilizarea limitei de rată pe fereastra de timp (utilizat / limită) pentru furnizorul cu cea mai mare marjă`,splitOut:`Nu îmbina această copie`,splitOutHint:`Dați copiei acestui furnizor propria intrare separată în loc să o îmbinați în modelul unificat. Îl puteți îmbina din nou din propria pagină a copiei.`,splitUndo:`Îmbinați înapoi`,splitUndoHint:`Această copie este păstrată separat de modelul său unificat. Îmbinați-l înapoi pentru a relua din nou toți furnizorii săi.`,splitBadge:`tinute separate`,noData:`fara date`,noDataTitle:`Nu au fost încă înregistrate solicitări — fiabilitatea și viteza nu sunt măsurate pentru acest furnizor.`,bestOfN:`cel mai bun din {count}`,perProviderScores:`Scoruri per furnizor: {list}`,columnModel:`Model`,columnOn:`Pe`,noModelsBefore:`Nu există modele disponibile. Adaugă API taste pe`,keysPageLink:`Pagina cheilor`,noModelsAfter:`În primul rând.`,hiddenNoKeys:`Ascuns (fără chei): {platforms}`,searchPlaceholder:`Căutați modele sau furnizori...`,clearSearch:`Căutare curată`,ctxAny:`Orice context`,ctxBadge:`{size} CTX`,ctxTitle:`Fereastra de context`,copyModelId:`Copiază ID-ul modelului`,showingCount:`{shown} modelelor {total}`,clearFilters:`Filtre clare`,noMatches:`Niciun model nu se potrivește cu filtrele tale.`,noModelsTitle:`Niciun model configurat`,intelligenceRank:`Inteligență`,speedRank:`Viteză`,rankHint:`Rangul în catalog — 1 este cel mai bun.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Cereri pe minut. Lăsați gol pentru nicio limită.`,limitRpdHint:`Cereri pe zi. Lăsați gol pentru nicio limită.`,limitTpmHint:`Tokenuri pe minut. Lăsați gol pentru nicio limită.`,limitTpdHint:`Tokenuri pe zi. Lăsați gol pentru nicio limită.`,usageThisMonth:`Utilizare lunară`,usageEmpty:`Nicio cerere luna aceasta.`,usageRequestsMonth:`{count} cereri luna aceasta`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`Enable or disable every shown model`,enableAll:`Enable all`,disableAll:`Disable all`,enableAllHint:`Turn on every model shown, then Save`,disableAllHint:`Turn off every model shown, then Save`,enabledOfShown:`{enabled} of {shown} shown models are in the chain`},strategies:{explore:`Explorează modelele nemăsurate`,exploreHint:`Give models with no reliability or speed data a 10% chance to go first so they build a track record. Your real request is what gets sent, so it may be answered by an untested model. For a custom endpoint, use Probe endpoint on the Keys page to test it without live traffic.`,keySelection:`Selectarea cheii`,keySelectionAuto:`Automat`,keySelectionLeastRemaining:`Cel mai puțin rămas`,keySelectionHint:`Cum se alege între mai multe chei ale aceluiași furnizor. Automat păstrează rotația actuală; Cel mai puțin rămas ordonează cheile după cota observată și o încearcă prima pe cea cu cel mai mult rămas.`,cooldownCeiling:`Cea mai lungă răcire automată`,cooldownCeilingHint:`Limitează cât timp pot propriile estimări ale routerului să suspende o pereche cheie și model care eșuează. Scara urcă în mod normal la 2 min, 10 min, 1 h, 24 h, iar erorile de credit sau de nivel suspendă pentru o zi. Timpii de reîncercare indicați de furnizor nu sunt niciodată scurtați.`,cooldownCeilingDefault:`Implicit (până la 24 h)`,cooldownCeiling10m:`10 minute`,cooldownCeiling1h:`1 oră`,cooldownCeiling6h:`6 ore`,moreOptions:`Mai multe opțiuni`,peakActive:`(ore de vârf)`,peakActiveHint:`Ajustarea pentru orele de vârf este activă acum, deci acestea nu sunt ponderile presetării în sine: 60% din ponderea vitezei a trecut la fiabilitate.`,peakAdjust:`Ajustare pentru orele de vârf`,peakAdjustHint:`Dezactivată implicit. În intervalul de mai jos, mută 60% din ponderea vitezei către fiabilitate — releele gratuite sunt cele mai aglomerate atunci, așa că fiabilitatea prezice succesul mai bine decât debitul brut. „Cel mai rapid” și „Cel mai fiabil” rămân neatinse.`,peakFrom:`De la`,peakTo:`până la`,peakTimezoneLabel:`Fus orar`,peakUseBrowserTimezone:`Folosește fusul orar al browserului`,peakTimezoneInvalid:`Fus orar necunoscut.`,peakExemptNote:`Această presetare rămâne neatinsă — se află deja la unul dintre capetele compromisului viteză/fiabilitate.`,title:`Strategia de rutare`,description:`Alege o strategie de rutare. În modul Manual tragi pentru a seta ordinea; Celelalte strategii se ghidează după scorul live, în funcție de fiabilitate, viteză și inteligență.`,weightsSummary:`Fiabilitate {reliability}% · viteză {speed}% · Inteligență {intelligence}%`,guardrails:`Balustrade de protecție`,guardrailsTooltip:`Balustrade mereu activate: headroom cu cotă liberă × penalizare de limită de rată în timp real. Sub 1.0 înseamnă că modelul este ținut pe loc.`,scoreTooltip:`Scorul final de rutare = media ponderată a celor trei axe, înmulțită cu balustrada de protecție. Mai întâi rute mai înalte.`,modeManualHint:`Modul manual: cererile urmează ordinea de mai jos, de sus în jos. Trage pentru a reordona.`,modeScoreHint:`Scorurile se actualizează din traficul live. Ordinea de mai jos arată cum sunt direcționate cererile în acest moment.`,manual:`Manual`,manualBlurb:`Rută exact în ordinea pe care ai stabilit-o mai jos. Trage mânerele pentru a reordona. Fără puncte; lanțul este urmat de sus până jos.`,balanced:`Echilibrat`,balancedBlurb:`Fiabilitatea conduce (50%), viteza și inteligența fiind ponderate în mod egal (25% fiecare). O decizie rațională și generală.`,smartest:`Cel mai deștept`,smartestBlurb:`Prefer cel mai capabil model care încă funcționează. Inteligență 55%, fiabilitate 35%, viteză 10%.`,fastest:`Cel mai rapid`,fastestBlurb:`Prefer cel mai rapid model care încă funcționează. Viteză 55%, fiabilitate 35%, inteligență 10%.`,reliable:`Cel mai de încredere`,reliableBlurb:`Maximizează rata de succes mai presus de toate. Fiabilitate 70%, viteză și inteligență 15% fiecare.`,custom:`Obiceiuri`,customBlurb:`Stabilește-ți singur echilibrul între fiabilitate, viteză și inteligență cu glisoare. Același motor ca și presetările, doar greutățile.`,adjust:`Ajustează`,customWeights:`Greutăți personalizate`,customWeightsHelp:`Sliderele sunt independente; acțiunile se echilibrează automat la 100%.`,weightReliability:`Fiabilitate`,weightSpeed:`Viteză`,weightIntelligence:`Inteligență`,weightRequired:`Cel puțin o greutate trebuie să fie peste zero.`,scoreColumn:`Scorul`},penaltyInspector:{title:`Presiunea routerului`,subtitle:`Penalizări, timpi de reîncărcare și eșecuri din ultimele {minutes} minute`,rowCount:`{count} activ`,offChain:`off chain`,penaltyValue:`Pedeapsă {value}`,factor:`Scor x{factor}`,noCooldown:`Fără timp de reîncărcare`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Șterge tot`,clearAllHint:`Ridică imediat toate răcirile, penalizările și seriile de eșecuri. Presiunea se reconstruiește din următoarele rezultate reale.`,errorsHeading:`{count} erori recente`,noRecentErrors:`Fără erori recente`,noKey:`fără cheie`,reasons:{penalty:`penalizați`,cooldown:`Timp de răcire`,recent_errors:`Eșecul`}},keys:JSON.parse(`{"pageTitle":"Chei","pageDescription":"Acreditările furnizorului și cheia unificată API cu care se conectează aplicațiile tale.","tabProviders":"Furnizori","checklistSummary":"{configured} din {total} furnizori configurați","checklistKeyless":"nu necesită cheie","checklistNoKeyTip":"Nicio cheie adăugată încă. Faceți clic pentru a adăuga una.","checklistSignupLink":"Deschideți {provider} pentru a crea un cont și a obține o cheie","checklistKeylessTip":"Funcționează fără cheie.","tabQuotaSignals":"Semnale de cotă","tabApiKey":"Cheia API unificată","tabAnthropic":"Anthropic","unifiedKey":"Cheia ta unificată API","regenerate":"Regenerează","showKey":"Emisiune","hideKey":"Ascunde-te","copyKey":"Recepționat","copyFullKey":"Copiați cheia completă","copiedKey":"Copiat","baseUrl":"Baza URL","endpointChat":"Chat","endpointResponses":"Răspunsuri","endpointEmbeddings":"Încorporații","endpointEmbeddingsHint":"model: \\"auto\\" sau o familie din fila Embeddings","endpointMessages":"Mesaje","endpointMessagesHint":"Compatibil Anthropic (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Claude (Anthropic) modele","anthropicDesc":"Îndreaptă un client SDK Claude sau Anthropic către acest server. Anthropic clienții trimit Claude nume de modele — mapează-le pe fiecare la Auto (routerul alege un model liber) sau pin unul anume.","anthropicBaseUrl":"Baza URL","anthropicAuth":"Header Auth","anthropicAuto":"Auto — routerul alege cel mai bun model","anthropicSave":"Salvează cartografierea","anthropicSaved":"Salvat","anthropicNote":"Anthropic clienții păstrează numele Claude modele încorporate; Cartografierea de mai sus decide cum fiecare intră în piscina ta.","familyDefault":"Implicit","familyOpus":"Opus","familySonnet":"Sonet","familyHaiku":"Haiku","selectPlatform":"Alege un furnizor","addKey":"Tonul de adăugare","keyAdded":"Cheia adăugată","endpointKeysShareModels":"Cheile aceluiași endpoint partajează modelele acestuia.","export":"Export","exportAll":"Toate cheile","exportHealthy":"Doar sănătos","exportKeys":"Cheile API de export","exportFormat":"Format","exportHealthyOnly":"Doar cheile sănătoase","exportHealthyOnlyDesc":"Exclude cheile care nu trec în prezent la verificările de sănătate","exportWillExport":"Voi exporta","exportKey":"Cheie","exportKeys plural":"Chei","exporting":"Export...","exportDownload":"Descarcă","exportSuccess":"Cheile {count} exportate","adding":"Adăugând...","selectProvider":"Alege un furnizor...","accountId":"ID cont","label":"Casă de discuri","noKeyNeeded":"(nu e nevoie de cheie)","outboundProxy":"Proxy Outbound","outboundProxyDescription":"Direcționează cererile de LLM outbound printr-un proxy. Susține SOCKS5, HTTP și HTTPS.","proxyUrl":"Proxy URL","saveProxy":"Salvează","savingProxy":"Salvând...","proxyLoadFailed":"Nu am putut încărca setările proxy-ului.","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":"Adaugă un model personalizat compatibil OpenAI","addCustomDescription":"Chat de puncte, încorporare, modele de imagine sau audio la orice punct final compatibil cu OpenAI. Cheia API este opțională pentru serverele locale.","customType":"Tip","customTypeChat":"Chat","customTypeEmbedding":"Încorporare","customTypeImage":"Imagine","customTypeAudio":"Audio","customTypeTranscription":"Transcription","customBaseUrl":"Baza URL","customModels":"Modele","customModel":"Model","customDisplayName":"Nume afișat","customDisplayNamePerModel":"pe model","customDisplayNameOptional":"opțional","customFamily":"Familie","customFamilyPlaceholder":"Implicit la ID-ul modelului","customApiKey":"API cheie","customCapabilities":"Capabilități","addModel":"Adaugă modelul","modelAdded":"Model adăugat","addModels":"Adaugă {count} modele","addEmbeddingModel":"Încorporare prin adăugare","addImageModel":"Adaugă modelul imaginii","addAudioModel":"Adaugă modelul audio","addTranscriptionModel":"Add transcription model","addingCustom":"Adăugând...","discoverModels":"Preia modelele","probeNow":"Testează endpointul","probeConfirm":"Trimiți până la 3 cereri de test?","probeCapabilities":"raționament: {reasoning} · instrumente: {tools}","probeCapYes":"da","probeCapNo":"nu","probeCapUnknown":"necunoscut","probeSuccess":"{model} testat în {latency} ms","probeFailed":"Testul a eșuat: {reason}","discoverTitle":"Modele pe acest endpoint","discoverHint":"Alege modelele de înregistrat. Cele deja adăugate rămân blocate.","discoverEmpty":"Acest endpoint nu a returnat niciun model.","discoverAlreadyAdded":"Adăugat","discoverSelectAll":"Selectează tot","modelsAdded":"{count} modele adăugate","getApiKey":"Ia cheia API","deleteKeyConfirm":"Să șterg această cheie? Acest lucru nu poate fi anulat.","checkAll":"Verifică totul","checking":"Verific...","editLabel":"Editare etichetă","saveLabel":"Etichetă de salvare","unifiedKeyDescBefore":"Folosește asta ca OpenAI","unifiedKeyDescAfter":"; Autentifică cererile către acest proxy.","serverUnreachableBefore":"Nu pot contacta serverul pe","serverUnreachableAfter":". Asigură-te că backend-ul funcționează. NPM-ul rulează dev pornește ambele, iar logurile serverului se tipăresc sub prefixul serverului.","paneProviderKey":"Cheia furnizorului","paneImportFile":"Fișier de import","paneCustomEndpoint":"Punct final personalizat","platform":"Peronul","hideAdded":"Ascunde furnizorii adăugați","apiToken":"API token","keyOptionalPlaceholder":"Opțional","bearerTokenPlaceholder":"Jeton de purtător","pasteKeyPlaceholder":"Lipește cheia aici","pasteSeveral":"Lipiți mai multe","keyOptionalHint":"Opțional: lăsați gol pentru nivelul gratuit anonim (limitat per IP) sau lipiți propria cheie pentru a folosi contul dvs.","enable":"Activează","noProviderKeys":"Încă nu am chei de furnizor. Adaugă unul mai sus pentru a începe rutarea.","filterPlaceholder":"Furnizori sau chei de filtrare","filterAll":"Toate","filterHealthy":"Sănătos","filterIssues":"Probleme","filterDisabled":"Persoană cu dizabilități","noFilterMatch":"Niciun furnizor nu se potrivește cu filtrele tale.","providerCountSummary":"{providers} furnizori · {keys} chei","summaryHealthy":"{count} sănătos","summaryIssueOne":"{count} problemă","summaryIssueOther":"{count} Probleme","providerActions":"Acțiuni ale furnizorului","routeViaProxy":"Traseu prin procură","checkNow":"Verifică acum","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":"De asemenea, configurabil prin","proxyEnvHintAfter":"variabila de mediu (are prioritate). Lasă gol pentru a dezactiva. Exemple:","importKeys":"Cheile furnizorului de import","importKeysDescription":"Încarcă .env, JSON, JSONC, CSV, Markdown sau fișiere text.","importFiles":"Dosare","importFileCount":"{count} selectat","previewFiles":"Previzualizare","previewing":"Previzualizare...","selected":"Selectat","provider":"Furnizor","keyName":"Nume cheie","keyValue":"Valoare cheie","chooseProvider":"Alege furnizorul","noPreviewKeys":"Nu s-au găsit chei în acele fișiere.","skippedItems":"Sărit:","moreItems":"+{count} mai mult","importSelected":"Import {count}","importing":"Import...","noImportSelection":"Selectează cel puțin un rând cu un furnizor.","duplicate":"Duplicat","duplicatesFound":"{count} duplicate detectate — există deja și vor fi sărite.","importResult":"Importați {imported}; A eșuat {failed}.","importModelCount":"+{count} modele","importResultWithModels":"Importați {imported}; {models} modele înregistrate; A eșuat {failed}.","confirmRemove":"Confirmă?","quotaSignalsTitle":"Semnale de cotă","quotaSignalsEmptyTitle":"Încă nu am observat cotele","quotaSignalsEmptyDesc":"Aceasta completează după ce furnizorii returnează antete de limită de rată, erori de cotă sau semnale de validare.","quotaKeyRef":"#{id} cheie","quotaPoolRef":"Piscina {pool}","quotaLimit":"Limită","quotaRemaining":"Rămași","quotaReset":"Resetare","quotaObserved":"Observat","tabAgents":"Agenți","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Maparea modelelor Gemini","geminiDesc":"Mapează numele Gemini Pro, Flash și Flash-Lite la Auto sau la un model anume din catalog.","compatibilityTitle":"Compatibilitate agenți","compatibilityDesc":"Controlează suprafețele de compatibilitate opționale și descoperirea modelelor Claude Code.","ollamaMode":"Emulare Ollama","ollamaModeHint":"Loopback-ul deschis nu acceptă niciodată trafic LAN neautentificat.","ollamaOff":"Dezactivat","ollamaLoopback":"Deschis pe loopback","ollamaKeyRequired":"Cheie API necesară","claudeAliases":"Aliasuri de descoperire Claude Code","claudeAliasesHint":"Expune aliasurile claude/<model> pentru ca selectorul de modele al gateway-ului să poată lista catalogul.","mcpServer":"Server MCP","mcpServerHint":"Expune endpointul /mcp către clienții agent. Instalările noi pornesc dezactivate.","urlTokensTitle":"Tokenuri URL revocabile","urlTokensDesc":"Doar pentru clienți fără anteturi. Tokenurile URL pot ajunge în istoric și în loguri, așa că revocă-le când nu mai sunt necesare.","urlTokenLabel":"Etichetă token","createUrlToken":"Creează token","urlTokenOnce":"Copiază acest token acum. Nu va mai fi afișat.","revoked":"Revocat","revoke":"Revocă","modelScope":"Domeniul modelelor","modelScopeDesc":"Limitează această cheie la anumite ID-uri de model. Pentru orice alt model, routerul sare peste această cheie.","modelScopeAdd":"Introdu un ID de model și apasă Enter","modelScopeEmpty":"Niciun domeniu setat — această cheie servește toate modelele furnizorului ei.","modelScopeClear":"Șterge domeniul","modelScopeBadgeOne":"limitată · 1 model","modelScopeBadgeOther":"limitată · {count} modele","modelPicker":{"title":"Ce modele ar trebui să deservească această cheie?","hint":"Cheia ta {provider} a fost adăugată și deservește momentan toate modelele de mai jos. Debifează-le pe cele pe care această cheie nu are voie să le folosească — routerul o va sări pentru ele.","count":"{selected} din {total} selectate","allNote":"Totul este selectat — nu se salvează nimic, iar modelele adăugate ulterior în catalog vor folosi și ele această cheie.","subsetNote":"Această cheie va fi limitată la modelele selectate. Poți schimba asta mai târziu din rândul cheii.","skip":"Nu acum","scopedOne":"Cheie limitată la 1 model","scopedOther":"Cheie limitată la {count} modele","allSaved":"Key serves every catalog model"},"cpTitle":"Profiluri de client","cpDesc":"Chei API per client, fiecare cu un prompt de sistem pe care serverul îl aplică întotdeauna.","cpEmpty":"Încă nu există profiluri de client.","cpNameLabel":"Nume","cpNamePlaceholder":"ex. Bot de asistență","cpPromptLabel":"Prompt de sistem (opțional)","cpPromptPlaceholder":"Instrucțiuni pe care serverul le adaugă înaintea fiecărei cereri făcute cu această cheie.","cpCreate":"Creează profil","cpRotate":"Rotește cheia","cpKeyOnce":"Copiază această cheie acum — nu va mai fi afișată.","cpEnabledAria":"Profil activat","selectKey":"Selectează această cheie","bulkSelected":"{count} selectate","bulkEnable":"Activează toate","bulkDisable":"Dezactivează toate","bulkDelete":"Șterge toate","bulkDeleteConfirm":"Ștergi {count}?","bulkResult":"Actualizate {done}; eșuate {failed}.","bulkDeleteResult":"Șterse {done}; eșuate {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Editează cheia","editPlatformLocked":"Furnizorul și endpointul nu pot fi schimbate după creare.","editCredentialHint":"Lasă gol pentru a păstra cheia actuală.","editCredentialPartsRequired":"Introdu at ID-ul contului, cât și tokenul API.","editModels":"Editează modelele","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":"Adaugă model personalizat","modelId":"ID model","modelIdRequired":"ID-ul modelului este obligatoriu","modelDisplayName":"Nume afișat","modelContextWindow":"Fereastră de context (tokeni)","modelRateLimits":"Limite de rată (opțional)","modelSupportsTools":"Suportă apelare instrumente","modelSupportsToolsHint":"Activați dacă acest model poate executa apeluri de funcții/instrumente","modelSupportsVision":"Suportă viziune","modelSupportsVisionHint":"Activați dacă acest model acceptă imagini ca intrare","createModel":"Creează model","modelAddedSuccess":"Modelul personalizat a fost adăugat cu succes","modelAddFailed":"Nu s-a putut adăuga modelul personalizat","testModel":"Testează","testingModel":"Testare…","testPassedShort":"Reușit","testFailedShort":"Eșuat","testPassed":"Testul modelului a reușit în {latency}ms","testFailed":"Testul modelului a eșuat","testThrottled":"Așteptați {seconds}s înainte de a retesta acest model.","noModelsForProvider":"Niciun model configurat pentru acest furnizor.","testModels":"Testează modelele","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":"Nelimitat","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} cereri, {tokens} tokeni luna aceasta","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:`Sănătos`,rateLimited:`cu rată limitată`,invalid:`invalid`,error:`Eroare`,unchecked:`neverificat`},analytics:{title:`Analiză`,description:`Volumul cererilor, latența, utilizarea tokenului și eșecurile.`,range24h:`24h 24`,range7d:`7d`,range30d:`30d`,range90d:`90d`,requests:`Cereri`,successRate:`Rata de succes`,inputTokens:`Jetoane de intrare`,outputTokens:`Jetoane de ieșire`,avgLatency:`Latența medie`,p95Latency:`Latența P95`,avgTtft:`Media TTFT`,estSavings:`Economii de estimare`,requestsByProvider:`Cereri ale furnizorului`,avgLatencyByProvider:`Latența medie pe furnizor`,ttftByProvider:`Timpul până la primul token de către furnizor`,ttftEmpty:`Nu a fost încă timp înregistrat pentru primul token.`,requestsOverTime:`Cereri în timp`,tokensOverTime:`Jetoane de-a lungul timpului`,byModel:`După model`,byPlatform:`După peron`,errors:`Erori`,errorDistribution:`Distribuția erorilor`,pinnedRequests:`Cereri fixate`,pinnedHonored:`Onorat`,fallbackAttempts:`Încercări de rezervă`,savingsHint:"De fapt, ai salvat ${actual} în ultimele {range}. Asta ar fi costat aceleași tokenuri pe API-urile plătite, prețuiți pe model. Numărul afișat proiectează ritmul tău de la ultimele {span} de date la 30 de zile complete.",savingsHintExact:"De fapt, ai salvat ${actual} în ultimele {range}. Asta ar fi costat aceleași tokenuri pe API-urile plătite, prețuiți pe model. Numărul afișat este totalul real al celor 30 de zile.",requestsHintPinned:`{pinned} dintre aceste cereri fixau un model specific după nume. {honored} erau deservite de modelul cu pin; {failed} eșuat la altcineva. Restul au fost rutați automat.`,requestsHintAuto:`Toate cererile din această perioadă erau rutate automat; niciun client nu fixa un model specific după nume.`,requestsHintTypes:`{chat} chat și cererile de {embedding} de încorporare.`,rangeLabel24h:`24 de ore`,rangeLabel7d:`7 zile`,rangeLabel30d:`30 de zile`,rangeLabel90d:`90 de zile`,spanDays:`{count} zile`,spanHours:`{count} ore`,latencyMs:`Latență (ms)`,latency:`Latență`,pinned:`Fixat`,inTokens:`În jetoane`,outTokens:`Jetoane de ieșire`,saved:`Salvat`,message:`Mesaj`,time:`Timp`,perModelBreakdown:`Defalcare pe model`,usageByKey:`Utilizare după tonalitate`,keyColumn:`Cheie`,keyLabelFallback:`Cheie #{id}`,errorsByProvider:`Erori pe furnizori`,recentErrors:`Erori recente`,noErrors:`Fără erori`,recentCalls:`Apeluri recente`,clientIp:`Client IP`,clientAgent:`Aplicație client`,requestedModelHint:`Solicitat {model}, deservit de rezervă`,attempts:`Încercări`,filterAll:`Toate`,filterCanceled:`Anulate`,providerBreakdown:`Defalcare pe furnizor`,tokensPerSec:`Tok/s`,allProviders:`Toți furnizorii`,requestDetailTitle:`Cerere #{id}`,failoverLadder:`Scara de failover`,failoverLadderHint:`Fiecare salt pe care această cerere îl făcea prin lanțul de rezervă, în ordine.`,noAttemptTrace:`Nu a fost înregistrată nicio încercare de urmărire pentru această cerere.`,keyOrdinal:`#{n} cheie`,keyBadge:`Cheia #{n}`,attemptTimingHint:`Start offset față de începutul cererii · Durata încercării`,requestedModel:`Modelul cerut`,ttft:`TTFT`,requestsByAgent:`Cereri per agent`,sortBy:`Sortează după {column}`,sortHint:`Sortarea se aplică celor {count} rânduri încărcate`,cacheHitRate:`Rata de succes a cache-ului`,cacheSavedTokens:`{tokens} tokenuri economisite`,cacheHitRateHint:`{hits} accesări reușite față de {misses} ratări de la pornirea serverului · {requests} apeluri către furnizor evitate`},logs:{title:`Jurnale`,description:`Jurnalul serverului în timp real. Intrările noi apar cât timp pagina este deschisă.`,pause:`Pauză`,resume:`Reia`,clear:`Golește jurnalele`,cleared:`Jurnalul serverului a fost golit`,levelFilter:`Niveluri de jurnal`,levels:{debug:`Debug`,info:`Info`,warn:`Avertisment`,error:`Eroare`},countsHint:`Numărătorile se referă la întregul buffer de jurnal de pe server, nu doar la intrările care corespund acestor filtre.`,searchPlaceholder:`Caută în mesajele din jurnal…`,jumpToLatest:`Sari la cele mai recente`,showMore:`Afișează mai mult`,showLess:`Afișează mai puțin`,buffered:`Se afișează {count} din cel mult {max} intrări din buffer`,emptyTitle:`Încă nu există intrări în jurnal`,emptyDescription:`Intrările apar aici pe măsură ce serverul le scrie. Lărgește filtrele de nivel, furnizor sau căutare dacă te așteptai la rezultate.`,noLevelsTitle:`Niciun nivel selectat`,noLevelsDescription:`Activează cel puțin un nivel pentru a vedea jurnalul.`,loadFailed:`Nu s-a putut încărca jurnalul serverului.`},playground:{title:`Locul de joacă`,description:`Trimite un chat de finalizare prin router și vezi ce furnizor îl deservește.`,autoModel:`Auto (lanț de rezervă)`,fusionModel:`Fuziune (sinteză multi-model)`,selectModel:`Selectează modelul`,searchModels:`Căutare modele...`,noModelsFound:`Nu s-au găsit modele`,send:`Trimite`,sending:`Trimiți...`,clear:`Clar`,inputPlaceholder:`Scrie un mesaj... (⏎ pentru a trimite, ⇧⏎ pentru noua linie)`,emptyTitle:`Trimite un mesaj pentru a începe.`,emptyDescription:`Folosind {model}. Schimbă modelele din selectorul de mai sus.`,noModels:`Încă nu există modele. Adaugă o cheie API pe pagina Chei pentru a completa această listă.`,copyReply:`Răspunde copiat`,fallback:`Rezervă`,fallbacks:`Rezerve`,fusionPanel:`Panel`,fusionJudge:`Judecător`,fusionTrace:`{count} răspunsuri ale modelului`,fusionFailed:`Niciun răspuns`,fusionJudgeSynth:`sintetizat răspunsul final`,errorPrefix:`Eroare:`,systemPromptLabel:`Prompt de sistem`,systemPromptPlaceholder:`Opțional. Trimis ca mesaj de sistem înainte de chat.`,showSettings:`Arată setările`,hideSettings:`Ascunde setările`,samplingHeading:`Eșantionare`,samplingHelp:`Când sunt dezactivate, se aplică valoarea implicită a furnizorului. Se trimit doar controalele pe care le activezi.`,samplingDefault:`Implicit`,temperature:`Temperatură`,topP:`Top P`,maxTokens:`Jetoane maxime`,errorTitle:`Cerere eșuată`,attach:`Atașează fișiere`,attachTooMany:`Poți atașa cel mult {count} fișiere per mesaj.`,attachTooLarge:`{name} este prea mare. Limita este {max}.`,attachUnsupported:`{name} nu este acceptat. Atașează imagini (PNG, JPEG, WebP, GIF) sau fișiere text (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Nu s-a putut citi {name}.`,noVisionBadge:`Fără imagini`,visionWarning:`{model} nu acceptă imagini. Alege un model cu suport pentru imagini sau Auto.`,dictate:`Dictează`,dictationStop:`Oprește înregistrarea`,dictationTranscribing:`Se transcrie…`,dictationUnavailable:`Adaugă furnizori de modele audio pentru a putea folosi dictarea.`,dictationModel:`Model de dictare`,dictationFailed:`Transcrierea a eșuat: {reason}`,artifactOpen:`Deschide previzualizarea`,artifactPreview:`Previzualizare`,artifactCode:`Cod`,artifactClose:`Închide previzualizarea`,artifactDownload:`Descarcă`,artifactReload:`Reîncarcă previzualizarea`,artifactHtml:`Pagină HTML`,artifactSvg:`Imagine SVG`,artifactLines:`linii`,artifactResize:`Redimensionează previzualizarea`},playgroundSessions:{heading:`Conversații`,newConversation:`Conversație nouă`,showSidebar:`Arată conversațiile`,hideSidebar:`Ascunde conversațiile`,empty:`Încă nu există conversații salvate.`,untitled:`Conversație fără titlu`,rename:`Redenumește`,renamePlaceholder:`Numele conversației`,messageCount:`{count} mesaje`,justNow:`chiar acum`,minutesAgo:`acum {count} min`,hoursAgo:`acum {count} h`,daysAgo:`acum {count} z`,loadFailed:`Nu s-a putut deschide acea conversație.`,renameFailed:`Nu s-a putut redenumi acea conversație.`,deleteFailed:`Nu s-a putut șterge acea conversație.`,actions:`Acțiuni conversație`,newChat:`Chat nou`},embeddings:{title:`Modele`,description:`Încorporarile eșuează doar în cadrul unei familii: același model servit de un alt furnizor. Vectorii de la modele diferite sunt incompatibili, așa că routerul nu schimbă niciodată modelele pe tine.`,defaultBadge:`Implicit · Auto`,makeDefault:`Fă default`,moveUp:`Avansează`,moveDown:`Dă-te jos`,usageToday:`{count} cerut astăzi`,usageMonth:`{count} tok luna aceasta`,autoDescription:`model: "auto" pe POST /v1/embeddings rute către familia implicită. Denumirea unei familii (sau a unui ID de model de furnizor) fixează acea familie; Furnizorii din IT sunt încercați în ordine.`,unsavedChanges:`Modificări nesalvate`,saveChanges:`Salvează modificările`,savingChanges:`Salvând...`,tokMax:`{tokens} tok max`,emptyTitle:`Încă nu există modele de embedding`,emptyDesc:`Familiile de încorporare apar aici odată ce adaugi o cheie de furnizor care suportă încorporarea.`,dragToReorder:`Tragerea către furnizorul de recomandă`},fusion:{title:`Fuziune`,description:`Un juriu de modele răspunde în paralel, apoi un judecător sintetizează un răspuns mai puternic. Folosește-l numind API cu model "fuziune".`,panelSource:`Sursa panoului`,panelSourceHelp:`De unde provin modelele de panouri atunci când o cerere nu specifică propria sa cerere.`,mode:{auto:`Auto (Lanț de rezervă)`,autoHelp:`Alege un set divers de modele din Lanțul tău de rezervă, clasate după strategia ta de rutare activă.`,explicit:`Panou explicit`,explicitHelp:`Folosește întotdeauna modelele specifice pe care le alegi mai jos.`},panelModels:`Modele panouri`,selectedCount:`{count} de {max} selectate`,noModels:`Niciun model nu este conectat încă. Adaugă o cheie API, apoi activează modelele din Chain-ul de rezervă.`,panelSize:`Dimensiunea panoului`,panelSizeHelp:`Câte modele diverse să alegi automat (1–{max}).`,judge:`Model de judecător`,judgeHelp:`Modelul care sintetizează răspunsurile panelului într-unul singur. Auto folosește modelul tău cel mai bine clasat disponibil.`,judgeAuto:`Auto (cel mai bine clasat disponibil)`,strategy:`Strategie`,strategySynthesize:`Sintetizează — integrează panoul într-un singur răspuns`,strategyBestOf:`Cele mai bune lucruri — returnează cel mai puternic răspuns (fără judecată)`,strategySynthesizeShort:`Sinteză`,strategyBestOfShort:`Cele mai bune`,exposePanel:`Dezvăluie detaliile panourilor`,exposePanelHelp:`Atașează răspunsul fiecărui model și metadatele judecătorului sub un câmp x_fusion în răspuns.`,howToUse:`Cum să folosești`,howToUseHelp:`Trimite o cerere normală de chat cu modelul "fusion". Aceste setări sunt cele implicite; Orice cerere le poate suprascrie cu un câmp "fuziune".`,unsavedChanges:`Modificări nesalvate`,save:`Salvează`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Premium`,description:`Catalogul de modele live, pe fiecare dispozitiv.`,loading:`Se încarcă...`,checkForUpdates:`Verifică actualizările`,syncing:`Sincronizare...`,catalogFeed:`Flux de catalog`,liveFeed:`Transmisie live`,monthlySnapshot:`Prezentare lunară`,lastChecked:`Ultima verificare: {when}`,liveDescription:`Modele noi gratuite, modificări de cotă și remedii de quirk ajung aici la câteva ore după livrare. Aplicația verifică automat de două ori pe zi; Nimic de făcut.`,snapshotDescription:`Nivelul gratuit: catalogul se reîmprospătează dintr-un snapshot lunar, verificat automat de două ori pe zi. Premium trece pe feed-ul live, actualizat la fiecare 2-3 zile.`,lastSyncProblem:`Ultima problemă de sincronizare: {error}`,license:`Licență`,planAnnual:`Premium anual`,planLifetime:`Durata de viață premium`,expired:`Expirat`,inactive:`Inactiv`,lifetimeNote:`Permis pe viață: nu expiră niciodată.`,renewsOn:`Se reînnoiește la {date}.`,willNotRenew:`Nu va reînnoi. Premium până la {date}, apoi această instalare revine la catalogul lunar gratuit.`,keyInactive:`Această cheie nu mai este activă. Aplicația continuă să lucreze la catalogul lunar gratuit.`,manageSubscription:`Gestionează abonamentul`,openingPortal:`Deschidere...`,removeKey:`Scoate cheia de pe acest dispozitiv`,manageHint:`Gestionează abonamentul deschide portalul de facturare al Stripe: anulează, actualizează cardul sau descarcă facturile. Scoaterea cheii dezactivează doar acest dispozitiv; achiziția ta rămâne neatinsă.`,licenseKey:`Cheia licenței`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Activează`,activating:`Activare...`,keyHint:`Cheia ta este în adresa de email de achiziție și pe pagina de după finalizarea comenzii. Ai pierdut-o?`,recoverKey:`Recuperează-l pe site`,upsellTitle:`Mergi live pentru 19 dolari pe an`,upsellDescription:`Modele noi gratuite imediat ce apar, nu după 30 de zile. O singură cheie, fiecare dispozitiv. Anulează oricând; Routerul rămâne liber pentru totdeauna.`,goPremium:`Go Premium`,bundled:`Grupate`,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:`Ceva a mers prost`,boundaryDescription:`Bordul de bord a dat peste o eroare neașteptată. Datele tale sunt în siguranță. Încearcă din nou sau întoarce-te la pagina modelelor.`,tryAgain:`Încearcă din nou`,goHome:`Înapoi la modele`},notFound:{title:`Pagină negăsită`,description:`Această pagină nu există sau poate s-a mutat.`},setup:{title:`Începerea`,subtitle:`Trei pași pentru a-ți direcționa prima cerere.`,progress:`{done} de {total}`,step1Title:`Adaugă o cheie de furnizor`,step1Desc:`Conectează cel puțin un cont de furnizor. Cheile libere funcționează.`,step1Cta:`Adaugă taste`,step2Title:`Trimite o cerere de test`,step2Desc:`Alege orice model din Playground și spune salut.`,step2Cta:`Terenul de joacă deschis`,step3Title:`Conectează-ți aplicația`,step3Desc:`Folosește cheia ta unificată de API cu orice client compatibil cu OpenAI.`,copyKey:`Copiază cheia API`,copyUrl:`Copiază baza URL`,copiedKey:`API cheie copiată pe clipboard`,copiedUrl:`Baza URL copiată pe clipboard`},palette:{title:`Paletă de comenzi`,placeholder:`Pagini de căutare, modele, acțiuni...`,empty:`Niciun rezultat`,groupPages:`Pagini`,groupActions:`Acțiuni`,groupModels:`Modele`,toggleTheme:`Comută modul întunecat`},validation:{required:`Obligatoriu`,url:`Introdu un URL valid care începe cu http:// sau https://`,email:`Introdu o adresă de email validă`,passwordMin:`Cel puțin {min} personaje`},agents:{title:`Agenți de codare`,description:`Conectează instrumentele de codare la un singur gateway de modele gratuite, cu configurație generată, sigură pentru backup.`,apiKey:`Cheie API`,quickstartTitle:`Pornire rapidă`,quickstart:`Cea mai rapidă cale: configurează Claude Code din catalogul live.`,currentKey:`Cheia unificată curentă:`,seenRecently:`Văzut recent`,setupLabel:`Configurare automată`,setupHint:`Scrie pentru tine fișierul de configurare al acestui instrument, orientat către acest gateway.`,setupGuideHint:`Afișează pașii de configurare ai acestui instrument; niciun fișier nu este scris.`,manualLabel:`Conexiune manuală`,manualHint:`URL de bază și cheia de introdus în setările instrumentului.`,endpoint:`Endpoint`,documentation:`Documentație`,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:`Un asistent personal mereu activ care răspunde pe WhatsApp, Telegram, Discord și altele, de pe propria ta mașină.`,hermes:`Agentul auto-perfecționabil de la Nous Research, cu memorie persistentă și abilități, în terminal sau în aplicațiile de chat.`,pi:`Un agent de terminal minimalist pe care îl modelezi cu propriile extensii, abilități și șabloane de prompturi.`}},update:{available:`New version available`,whatsNew:`What's new in v{version}`,publishedOn:`Published {date}`,noNotes:`No release notes were published for this version.`,openRelease:`Open release page`,dismissVersion:`Dismiss this version`,dismiss:`Dismiss`},freeTier:{poolsToggle:`Free-tier pools ({count})`,poolsToggleBare:`Free-tier pools`,summary:`{pools} pools · {budget} tokens/mo counted once per pool · {credits} credits-based · {unpublished} unpublished`,pool:`Pool`,models:`Models`,budget:`Monthly budget`,kind:`Kind`,kindDocumented:`Documented`,kindCredits:`Credits`,kindUnpublished:`Unpublished`,remaining:`Remaining`,resetAt:`Resets at`,disabledModels:`({count} off)`,metricTokens:`tokens`,metricRequests:`requests`,metricCredits:`credits`,metricNeurons:`neurons`,metricOther:`units`,empty:`No enabled models with free-tier budget data.`,poolLabel:`{platform} · shared {scope} pool`,poolLabelBare:`{platform} · shared pool`,poolModels:`{count} models`,poolBudget:`{budget}/mo`,poolBudgetTitle:`One monthly allowance for the whole pool, scaled by the {count} usable keys on this platform. Every model listed under it draws from the same budget.`,poolNoQuota:`no published quota`,poolResets:`resets {time}`,independentBudgets:`independent budgets`},chains:{title:`Fallback chains`,description:`Named chains, each callable as auto:<name> in /v1/models.`,count:`{count} chains`,active:`Active`,default:`Default`,activate:`Activate`,activateHint:`Make this the chain the table below edits and the one auto routes through`,deleteHint:`Delete this chain`,deleteConfirm:`Delete chain "{name}"?`,create:`Create`,createPlaceholder:`Chain name`,createFailed:`Could not create the chain.`,nameRules:`Up to 20 characters: letters, digits, hyphens and underscores.`,startEmpty:`Start empty`,startEmptyHint:`Create the chain with no models in it, and keep new catalog models out of it. Unchecked, it starts as a copy of the default chain.`,curated:`Curated`,curatedHint:`New catalog models are not added to this chain automatically.`,renameHint:`Redenumește acest lanț`,renameConfirm:`Redenumiți lanțul "{oldName}" în "{name}"? Clienții care apelau auto:{oldName} trebuie să treacă la auto:{name}.`,renamePlaceholder:`Numele nou al lanțului`,renameFailed:`Nu s-a putut redenumi lanțul.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={nav:{models:`Модели`,playground:`Детская площадка`,keys:`Ключи`,analytics:`Аналитика`,premium:`Премиум`,upgrade:`Обновление`,settings:`Настройки`,signOut:`Выйти`,openMenu:`Открыть меню навигации`,switchLight:`Переключиться на светлую тему`,switchDark:`Переключиться на темную тему`,switchToChinese:`Переключиться на китайский`,switchToEnglish:`Переключиться на английский`,modelsMenu:`Просмотр типов моделей`,agents:`Агенты`,logs:`Журнал`,analyticsMenu:`Страницы аналитики`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Создайте свою учетную запись`,signIn:`Войти`,email:`электронная почта`,password:`Пароль`,emailPlaceholder:`you@example.com`,passwordPlaceholderSetup:`минимум 8 символов`,passwordPlaceholderLogin:`ваш пароль`,setupDescription:`Установите адрес электронной почты и пароль, которые будут защищать эту панель мониторинга.`,loginDescription:`Войдите в систему, чтобы управлять своими ключами, маршрутизацией и аналитикой.`,createAccount:`Создать учетную запись`,creating:`Создание…`,signingIn:`Вход в систему…`,loading:`Загрузка…`,newPasswordAutoComplete:`новый пароль`,currentPasswordAutoComplete:`текущий пароль`,serverUnreachableBefore:`Не могу связаться с сервером. Убедитесь, что серверная часть работает (`,serverUnreachableAfter:`).`,setupCode:`Код установки`,setupCodePlaceholder:`код из логов сервера`,setupCodeHint:`Для настройки с другого устройства требуется одноразовый код, печатаемый в журналах сервера при запуске.`,changePassword:`Сменить пароль`,changeEmail:`Сменить e-mail`,forgotPassword:`Забыли пароль?`,currentPassword:`Текущий пароль`,newPassword:`Новый пароль`,newEmail:`Новый e-mail`,resetCode:`Код сброса`,resetCodePlaceholder:`код из логов сервера`,resetCodeHint:`Код находится в логе сервера. По электронной почте он никогда не отправляется.`,forgotPasswordDescription:`Нажмите кнопку ниже, чтобы создать код сброса. Код записывается в лог сервера и никогда не отправляется по электронной почте. Введите его здесь, чтобы задать новый пароль.`,requestResetCode:`Отправить код`,requestingResetCode:`Отправка…`,resetPassword:`Сбросить пароль`,resettingPassword:`Сброс…`,changingPassword:`Изменение…`,changingEmail:`Изменение…`,backToLogin:`Назад ко входу`,passwordChanged:`Пароль успешно изменён.`,emailChanged:`E-mail успешно изменён.`,passwordReset:`Пароль сброшен. Войдите заново.`,resetCodeDockerHint:`Используете Docker? Код находится в логе контейнера: docker logs <container>.`,desktopSessionFailed:`Панель управления не смогла войти на локальный сервер. Закройте SRouter и откройте его снова.`},common:{save:`Сохранить`,saving:`Сохранение…`,cancel:`Отмена`,discard:`Отбросить`,delete:`Удалить`,confirm:`Подтвердить`,copy:`Копировать`,copied:`Скопировано`,copyFailed:`Не удалось скопировать — выделите текст и скопируйте вручную`,show:`Показать`,hide:`Скрыть`,apply:`Применить`,applied:`Прикладной`,applying:`Применение…`,active:`Активный`,inactive:`Неактивный`,never:`никогда`,loading:`Загрузка…`,error:`Ошибка`,noData:`Данных пока нет`,unsavedChanges:`Несохраненные изменения`,saveChanges:`Сохранить изменения`,remove:`Удалить`,unknownError:`Неизвестная ошибка`,model:`Модель`,provider:`Поставщик`,success:`Успех`,failures:`Неудачи`,dismiss:`Уволить`,status:`Статус`},settings:{title:`Настройки`,language:`Язык`,theme:`Тема`,themeSystem:`Система`,themeLight:`Светлая`,themeDark:`Тёмная`,searchLanguage:`Поиск языков…`,noLanguages:`Языки не найдены`,sections:`Разделы настроек`,sectionGeneral:`Общие`,sectionCompression:`Сжатие`,sectionAdvanced:`Дополнительно`,sectionPreview:`Предпросмотр`,generalDescription:`Язык и внешний вид этой панели.`,advancedDescription:`Пороги и предохранители конвейера сжатия.`,compressionTitle:`Сжатие промптов`,compressionDescription:`Уменьшает размер запросов перед маршрутизацией, сохраняя код, ошибки, пути, числа и определения инструментов.`,compressionHelp:`Переписывает каждый запрос перед отправкой поставщику, чтобы он занимал меньше токенов. Код, ошибки, пути к файлам и числа защищены, а любая переработка, которая их повреждает, отбрасывается.`,compressionMode:`Режим`,compressionModeHelp:`«Выключено» отправляет запросы без изменений. «Без потерь» удаляет только дублирующийся и лишний текст. «Стандартное» дополнительно сокращает вывод инструментов. «Агрессивное» также сжимает более ранние реплики.`,compressionOff:`Выключено`,compressionLossless:`Без потерь`,compressionStandard:`Стандартное`,compressionAggressive:`Агрессивное`,compressionLossy:`С потерями`,compressionEngines:`Движки`,compressionEnginesHelp:`Каждый движок — это один шаг переработки. Режим определяет, какие движки работают; отключённый здесь движок не используется ни в одном режиме.`,engineDedup:`Повторяющиеся блоки`,engineDedupHelp:`Заменяет блок текста, который уже встречался в диалоге, короткой ссылкой на него.`,engineLite:`Очистка пробелов`,engineLiteHelp:`Убирает пробелы в конце строк, схлопывает повторяющиеся пустые строки и удаляет дублирующиеся системные сообщения.`,engineReadLifecycle:`Устаревшие чтения файлов`,engineReadLifecycleHelp:`Заменяет раннее чтение файла пометкой, если тот же файл позже был прочитан или изменён снова.`,engineToolfilter:`Фильтр вывода инструментов`,engineToolfilterHelp:`Сокращает вывод команд и инструментов: сборок, тестов, установок. Строки с ошибками и трассировками стека сохраняются всегда.`,engineJsoncompact:`Таблицы JSON`,engineJsoncompactHelp:`Перекодирует длинные массивы JSON с одинаковым набором полей в компактную таблицу. Обратимо, поэтому ничего не теряется.`,engineRelevance:`Фильтр релевантности`,engineRelevanceHelp:`Удаляет предложения, наименее связанные с последним сообщением, когда сообщение превышает свой лимит размера.`,engineAging:`Более ранние реплики`,engineAgingHelp:`Сжимает все реплики, кроме нескольких последних, в краткую сводку, сохраняющую пути, ошибки и решения.`,engineHardBudget:`Потолок токенов`,engineHardBudgetHelp:`Удаляет наименее ценные строки, пока запрос не уложится в целевое число токенов.`,compressionAutoTrigger:`Автозапуск при превышении оценочного числа токенов`,compressionAutoTriggerHelp:`Запросы с оценкой выше указанного числа токенов автоматически переключаются на «Агрессивное». Оставьте пустым, чтобы отключить.`,compressionPrefixFreeze:`Замораживать повторяющиеся префиксы промптов`,compressionPrefixFreezeHelp:`Оставляет системный промпт без изменений, когда тот же текст встретился три раза, чтобы кеширование промптов на стороне поставщика продолжало работать.`,compressionTrustProjectFilters:`Доверять файлам фильтров проекта`,compressionTrustProjectFiltersHelp:`Дополнительно загружает фильтры вывода инструментов из рабочего каталога. По умолчанию выключено, поскольку репозиторий мог бы так скрывать вывод от модели.`,compressionStats:`Экономия размера`,compressionEstimatedTokensSaved:`Оценочная экономия токенов`,compressionPreview:`Живой предпросмотр`,compressionPreviewDescription:`Пропустите тело запроса через конвейер, чтобы увидеть, что получит поставщик.`,compressionPreviewPlaceholder:`Вставьте JSON запроса или обычный текст`,compressionRunPreview:`Запустить предпросмотр`,updatesTitle:`Обновления`,checkForUpdates:`Проверьте наличие обновлений`,lastChecked:`Последняя проверка: {when}`,currentVersion:`Текущая сборка:`,updateAvailable:`Доступно обновление`,changelog:`Что изменилось`,upToDate:`Установлена актуальная версия`,buildAhead:`Эта сборка опережает официальную ветку main.`,buildDiverged:`История этой сборки разошлась с официальной веткой main.`,buildUnknown:`Эту пользовательскую сборку невозможно сравнить с официальной веткой main.`,notGitInstall:`Эта установка не содержит сведений о коммите.`,checkFailed:`Не удалось проверить наличие обновлений.`,contactsGithub:`Проверка запускается вручную и обращается к GitHub.`,autoUpdateCheck:`Автоматическая проверка обновлений`,autoUpdateCheckHelp:`Раз в день проверяет на GitHub наличие нового выпуска и показывает напоминание. По умолчанию выключено.`,openReleases:`Открыть релизы на GitHub`,restartAfterUpdate:`Перезапустите SRouter после завершения сборки.`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`Модели`,chatModelsTab:`Модели чата`,fusionTab:`Фьюжн`,embeddingsTab:`Вложения`,imageTab:`Изображение`,videoTab:`Video`,audioTab:`Аудио`,imageDesc:`Модели преобразования текста в изображение.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Модели преобразования текста в речь и речи в текст.`,mediaHint:`Создать через`,mediaEmpty:`Моделей пока нет. Они синхронизируются из каталога.`,ttsHeading:`Преобразование текста в речь`,sttHeading:`Речь в текст`,sttHint:`Расшифровать через`,sttEmpty:`Моделей преобразования речи в текст пока нет. Они синхронизируются из каталога.`,newBadge:`Новый`,monthlyTokenBudget:`Ежемесячный бюджет токенов`,remaining:`оставшееся`,used:`использованный`,usedScopeHint:`Только чат-запросы с начала текущего календарного месяца, суммарно по всем моделям активной цепочки, включая пользовательские эндпоинты. Трафик, отправленный провайдеру в обход SRouter, не учитывается.`,legendRemainingTitle:`Остаток / месячный бюджет для {name} ({platform})`,noPublishedQuota:`+{count} без опубликованной квоты`,noPublishedQuotaTitle:`У этих моделей нет задокументированного месячного бюджета токенов, поэтому остаток показать нечем.`,of:`из`,showAllModels:`Показать все модели {count}`,showLess:`Показать меньше`,vision:`Видение`,visionTitle:`Принимает ввод изображения`,tools:`Инструменты`,toolsTitle:`Выполняет структурированные вызовы инструментов, поэтому он имеет право на запросы с инструментами.`,retired:`Снят`,penalty:`−{value} штраф`,obs:`{count} обс`,tokPerMonth:`{count} ток/мес`,rpmLimit:`{count} об/мин`,rpdLimit:`{count} рпд`,noKey:`нет ключа`,dragToReorder:`Перетащите, чтобы изменить порядок`,dragToReorderGroup:`Перетащите, чтобы изменить порядок модели`,moveToRank:`Перейти к рангу`,providerCount:`Поставщики {count}`,servedBy:`Обслуживает {providers}`,viewProviders:`Посмотреть поставщиков`,backToModels:`Вернуться к моделям`,providersHeading:`Провайдеры, обслуживающие эту модель`,codeSnippetHeading:`Используйте эту модель`,modelNotFound:`Эта модель недоступна или для нее не настроены поставщики.`,providerIdsHeading:`Идентификаторы моделей поставщиков`,providerIdsHint:`Отправьте идентификатор единой модели для переключения при отказе для каждого поставщика или идентификатор конкретного поставщика, чтобы закрепить одного поставщика.`,copyModelName:`Скопировать название модели`,settingsHeading:`Настройки провайдера`,settingsHint:`Локальные изменения в моделях каталога сохраняются при синхронизации каталога. Удаленные модели из каталога остаются удаленными, пока вы не добавите их снова через конфигурацию.`,catalogModel:`каталог`,customModel:`обычай`,discoveredModel:`обнаружен`,localOverride:`локальное переопределение`,displayName:`Отображаемое имя`,sizeLabel:`Уровень возможностей`,sizeLabelHint:`Frontier/Large/Medium/Small задают ось интеллекта: более высокий уровень всегда опережает более низкий, а внутри уровня ранг интеллекта по-прежнему сдвигает оценку. Модель без распознанного уровня получает на этой оси самую низкую оценку, но интеллект — лишь одна из трёх осей: при хорошей надёжности и скорости её всё равно могут выбрать.`,sizeLabelNone:`Нет (самая низкая оценка интеллекта)`,contextWindow:`Контекст`,inFallback:`В цепочке`,saveModelSettings:`Сохранить настройки модели`,aggregateBudget:`{count}/мес.`,aggregateBudgetTitle:`Общее количество бесплатных токенов в месяц у провайдеров этой модели`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Ограничено по ставке — нет фиксированного ежемесячного бюджета токенов`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Использование лимита частоты во временном окне (использовано / лимит) у провайдера с наибольшим запасом`,splitOut:`Не объединять эту копию`,splitOutHint:`Сделайте копию этого провайдера отдельной записью вместо того, чтобы объединять ее в единую модель. Вы можете объединить его обратно с собственной страницы копии.`,splitUndo:`Объединить обратно`,splitUndoHint:`Эта копия хранится отдельно от унифицированной модели. Объедините его обратно, чтобы снова выполнить отработку отказа для всех своих поставщиков.`,splitBadge:`хранится отдельно`,noData:`нет данных`,noDataTitle:`Запросов пока не зафиксировано — надежность и скорость у этого провайдера немеряны.`,bestOfN:`лучшее из {count}`,perProviderScores:`Оценки каждого поставщика: {list}`,columnModel:`Модель`,columnOn:`Вкл.`,noModelsBefore:`Нет доступных моделей. Добавьте ключи API на`,keysPageLink:`Страница ключей`,noModelsAfter:`сначала.`,hiddenNoKeys:`Скрытый (без ключей): {platforms}`,searchPlaceholder:`Поиск моделей или поставщиков…`,clearSearch:`Очистить поиск`,ctxAny:`Любой контекст`,ctxBadge:`{size} ctx`,ctxTitle:`Контекстное окно`,copyModelId:`Скопировать идентификатор модели`,showingCount:`{shown} моделей {total}`,clearFilters:`Очистить фильтры`,noMatches:`Ни одна модель не соответствует вашим фильтрам.`,noModelsTitle:`Ни одна модель не настроена`,intelligenceRank:`Интеллект`,speedRank:`Скорость`,rankHint:`Ранг в каталоге — 1 лучший.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Запросов в минуту. Оставьте пустым, чтобы не было ограничения.`,limitRpdHint:`Запросов в сутки. Оставьте пустым, чтобы не было ограничения.`,limitTpmHint:`Токенов в минуту. Оставьте пустым, чтобы не было ограничения.`,limitTpdHint:`Токенов в сутки. Оставьте пустым, чтобы не было ограничения.`,usageThisMonth:`Расход за месяц`,usageEmpty:`В этом месяце запросов пока нет.`,usageRequestsMonth:`{count} запр. за месяц`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`Включить или выключить все показанные модели`,enableAll:`Включить все`,disableAll:`Выключить все`,enableAllHint:`Включить все показанные модели, затем сохранить`,disableAllHint:`Выключить все показанные модели, затем сохранить`,enabledOfShown:`В цепочке {enabled} из {shown} показанных моделей`},strategies:{explore:`Исследовать неизмеренные модели`,exploreHint:`Даёт моделям без данных о надёжности и скорости 10 % шанс пойти первыми, чтобы они набрали статистику. Уходит ваш настоящий запрос, поэтому ответить может непроверенная модель. Для пользовательской конечной точки используйте «Протестировать конечную точку» на странице «Ключи» — без боевого трафика.`,keySelection:`Выбор ключа`,keySelectionAuto:`Авто`,keySelectionLeastRemaining:`По остатку квоты`,keySelectionHint:`Как выбирать между несколькими ключами одного провайдера. «Авто» сохраняет текущую ротацию; «По остатку квоты» сортирует ключи по наблюдаемой квоте и первым пробует тот, у которого осталось больше всего.`,cooldownCeiling:`Максимальное автоматическое охлаждение`,cooldownCeilingHint:`Ограничивает, насколько долго собственные предположения маршрутизатора могут отстранять сбойную пару ключ и модель. Лестница обычно растёт: 2 мин, 10 мин, 1 ч, 24 ч, а ошибки баланса или уровня отстраняют на сутки. Время повтора, указанное провайдером, никогда не сокращается.`,cooldownCeilingDefault:`По умолчанию (до 24 ч)`,cooldownCeiling10m:`10 минут`,cooldownCeiling1h:`1 час`,cooldownCeiling6h:`6 часов`,moreOptions:`Дополнительные параметры`,peakActive:`(часы пик)`,peakActiveHint:`Корректировка для часов пик сейчас активна, поэтому это не собственные веса пресета: 60 % веса скорости перенесено на надёжность.`,peakAdjust:`Корректировка для часов пик`,peakAdjustHint:`По умолчанию выключено. В указанном ниже окне 60 % веса скорости переносится на надёжность — бесплатные ретрансляторы в это время загружены сильнее всего, и надёжность предсказывает успех лучше, чем чистая пропускная способность. «Самый быстрый» и «Самый надёжный» не затрагиваются.`,peakFrom:`С`,peakTo:`до`,peakTimezoneLabel:`Часовой пояс`,peakUseBrowserTimezone:`Использовать часовой пояс браузера`,peakTimezoneInvalid:`Неизвестный часовой пояс.`,peakExemptNote:`Этот пресет не затрагивается — он уже находится на одном из концов компромисса «скорость/надёжность».`,title:`Стратегия маршрутизации`,description:`Выберите стратегию маршрутизации. В ручном режиме вы перетаскиваете, чтобы установить порядок; другие стратегии основаны на реальном счете и учитывают надежность, скорость и интеллект.`,weightsSummary:`надежность {reliability}% · скорость {speed}% · интеллект {intelligence}%`,guardrails:`Ограждения`,guardrailsTooltip:`Постоянное ограничение: свободный запас по квоте × штраф за ограничение скорости в реальном времени. Значение ниже 1,0 означает, что модель задерживается.`,scoreTooltip:`Итоговая оценка маршрутизации = средневзвешенное значение трех осей, умноженное на ограждения. Сначала более высокие маршруты.`,modeManualHint:`Ручной режим: запросы следуют в указанном ниже порядке сверху вниз. Перетащите, чтобы изменить порядок.`,modeScoreHint:`Обновление результатов на основе живого трафика. Ниже приведен порядок маршрутизации запросов прямо сейчас.`,manual:`Руководство`,manualBlurb:`Маршрут в том порядке, который вы указали ниже. Перетащите маркеры, чтобы изменить порядок. Нет очков; цепочка прослеживается сверху вниз.`,balanced:`Сбалансированный`,balancedBlurb:`Надежность лидирует (50%), при этом скорость и интеллект имеют одинаковый вес (по 25%). Разумный универсальный вариант по умолчанию.`,smartest:`Самый умный`,smartestBlurb:`Отдавайте предпочтение наиболее способной модели, которая все еще работает. Интеллект 55%, надежность 35%, скорость 10%.`,fastest:`Самый быстрый`,fastestBlurb:`Отдавайте предпочтение самой быстрой модели, которая еще работает. Скорость 55%, надежность 35%, интеллект 10%.`,reliable:`Самый надежный`,reliableBlurb:`Максимизируйте уровень успеха прежде всего. Надежность 70%, скорость и интеллект по 15%.`,custom:`Пользовательский`,customBlurb:`Установите свой собственный баланс надежности, скорости и интеллекта с помощью ползунков. Тот же движок, что и пресеты, только ваши веса.`,adjust:`Отрегулировать`,customWeights:`Пользовательские веса`,customWeightsHelp:`Слайдеры независимы; акции автоматически балансируются до 100%.`,weightReliability:`Надежность`,weightSpeed:`Скорость`,weightIntelligence:`Интеллект`,weightRequired:`Хотя бы один вес должен быть больше нуля.`,scoreColumn:`Оценка`},penaltyInspector:{title:`Давление маршрутизатора`,subtitle:`Штрафы, время восстановления и неудачи за последнюю {minutes} минуту.`,rowCount:`{count} активен`,offChain:`вне цепи`,penaltyValue:`Штраф {value}`,factor:`оценка x{factor}`,noCooldown:`Нет времени восстановления`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Сбросить всё`,clearAllHint:`Немедленно снимает все охлаждения, штрафы и серии ошибок. Давление накапливается заново по следующим реальным результатам.`,errorsHeading:`{count} недавние ошибки`,noRecentErrors:`Нет недавних ошибок`,noKey:`нет ключа`,reasons:{penalty:`оштрафованный`,cooldown:`время восстановления`,recent_errors:`неудачный`}},keys:JSON.parse(`{"pageTitle":"Ключи","pageDescription":"Учетные данные поставщика и единый ключ API, с помощью которого подключаются ваши приложения.","tabProviders":"Провайдеры","checklistSummary":"Настроено {configured} из {total} провайдеров","checklistKeyless":"ключ не нужен","checklistNoKeyTip":"Ключ ещё не добавлен. Нажмите, чтобы добавить.","checklistSignupLink":"Откройте {provider}, чтобы создать аккаунт и получить ключ","checklistKeylessTip":"Работает без ключа.","tabQuotaSignals":"Сигналы квоты","tabApiKey":"Единый ключ API","tabAnthropic":"Anthropic","unifiedKey":"Ваш единый ключ API","regenerate":"Регенерировать","showKey":"Показать","hideKey":"Скрыть","copyKey":"Копировать","copyFullKey":"Скопировать ключ целиком","copiedKey":"Скопировано","baseUrl":"База URL","endpointChat":"Чат","endpointResponses":"Ответы","endpointEmbeddings":"Вложения","endpointEmbeddingsHint":"model: \\"auto\\" или семейство на вкладке «Внедрения».","endpointMessages":"Сообщения","endpointMessagesHint":"Совместимость с Anthropic (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Модели Claude (Anthropic)","anthropicDesc":"Направьте клиент SDK Claude или Anthropic на этот сервер. Клиенты Anthropic отправляют названия моделей Claude — сопоставьте каждое из них с автоматическим (маршрутизатор выбирает бесплатную модель) или закрепите конкретную модель.","anthropicBaseUrl":"База URL","anthropicAuth":"Заголовок аутентификации","anthropicAuto":"Авто — роутер выбирает лучшую модель","anthropicSave":"Сохранить сопоставление","anthropicSaved":"Сохранено","anthropicNote":"Клиенты Anthropic сохраняют встроенные названия моделей Claude; приведенное выше сопоставление определяет, как каждый из них направляется в ваш пул.","familyDefault":"По умолчанию","familyOpus":"Опус","familySonnet":"Сонет","familyHaiku":"Хайку","selectPlatform":"Выберите провайдера","addKey":"Добавить ключ","keyAdded":"Ключ добавлен","endpointKeysShareModels":"Ключи одной точки доступа используют одни и те же модели.","export":"Экспорт","exportAll":"Все ключи","exportHealthy":"Только здоровый","exportKeys":"Экспорт ключей API","exportFormat":"Формат","exportHealthyOnly":"Только исправные ключи","exportHealthyOnlyDesc":"Исключить ключи, которые в настоящее время не проходят проверку работоспособности","exportWillExport":"Будет экспортировать","exportKey":"ключ","exportKeys plural":"ключи","exporting":"Экспорт…","exportDownload":"Скачать","exportSuccess":"Экспортированные ключи {count}.","adding":"Добавление…","selectProvider":"Выберите провайдера…","accountId":"Идентификатор аккаунта","label":"Этикетка","noKeyNeeded":"(ключ не нужен)","outboundProxy":"Исходящий прокси","outboundProxyDescription":"Направляйте исходящие запросы LLM через прокси. Поддерживает SOCKS5, HTTP и HTTPS.","proxyUrl":"Прокси URL","saveProxy":"Сохранить","savingProxy":"Сохранение…","proxyLoadFailed":"Не удалось загрузить настройки прокси.","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"Добавьте пользовательскую модель, совместимую с OpenAI.","addCustomDescription":"Направьте чат, встраивание, изображения или аудиомодели на любую конечную точку, совместимую с OpenAI. Ключ API не является обязательным для локальных серверов.","customType":"Тип","customTypeChat":"Чат","customTypeEmbedding":"Встраивание","customTypeImage":"Изображение","customTypeAudio":"Аудио","customTypeTranscription":"Transcription","customBaseUrl":"База URL","customModels":"Модели","customModel":"Модель","customDisplayName":"Отображаемое имя","customDisplayNamePerModel":"для каждой модели","customDisplayNameOptional":"необязательно","customFamily":"Семья","customFamilyPlaceholder":"по умолчанию используется идентификатор модели","customApiKey":"Ключ API","customCapabilities":"Возможности","addModel":"Добавить модель","modelAdded":"Модель добавлена","addModels":"Добавить модели {count}","addEmbeddingModel":"Добавить встраивание","addImageModel":"Добавить модель изображения","addAudioModel":"Добавить аудиомодель","addTranscriptionModel":"Add transcription model","addingCustom":"Добавление…","discoverModels":"Получить модели","probeNow":"Протестировать конечную точку","probeConfirm":"Отправить до 3 тестовых запросов?","probeCapabilities":"рассуждение: {reasoning} · инструменты: {tools}","probeCapYes":"да","probeCapNo":"нет","probeCapUnknown":"неизвестно","probeSuccess":"{model} протестирован за {latency} мс","probeFailed":"Не удалось выполнить тест: {reason}","discoverTitle":"Модели на этой точке доступа","discoverHint":"Выберите модели для регистрации. Уже добавленные остаются заблокированными.","discoverEmpty":"Эта точка доступа не вернула ни одной модели.","discoverAlreadyAdded":"Добавлено","discoverSelectAll":"Выбрать все","modelsAdded":"Добавлено моделей: {count}","getApiKey":"Получите ключ API","deleteKeyConfirm":"Удалить этот ключ? Это невозможно отменить.","checkAll":"Проверить все","checking":"Проверка…","editLabel":"Изменить ярлык","saveLabel":"Сохранить ярлык","unifiedKeyDescBefore":"Используйте это как свой OpenAI","unifiedKeyDescAfter":"; он аутентифицирует запросы к этому прокси.","serverUnreachableBefore":"Не могу связаться с сервером","serverUnreachableAfter":". Убедитесь, что серверная часть работает. npm run dev запускает оба, и журналы сервера печатаются под префиксом сервера.","paneProviderKey":"Ключ провайдера","paneImportFile":"Импортировать файл","paneCustomEndpoint":"Пользовательская конечная точка","platform":"Платформа","hideAdded":"Скрыть добавленных провайдеров","apiToken":"токен API","keyOptionalPlaceholder":"Необязательно","bearerTokenPlaceholder":"Токен на предъявителя","pasteKeyPlaceholder":"вставьте сюда ключ","pasteSeveral":"Вставить несколько","keyOptionalHint":"Необязательно: оставьте пустым для анонимного бесплатного уровня (ограничение по IP) или вставьте свой ключ, чтобы использовать свой аккаунт.","enable":"Включить","noProviderKeys":"Ключей провайдера пока нет. Добавьте один выше, чтобы начать маршрутизацию.","filterPlaceholder":"Фильтровать поставщиков или ключи","filterAll":"Все","filterHealthy":"Здоровый","filterIssues":"Проблемы","filterDisabled":"Отключено","noFilterMatch":"Ни один поставщик не соответствует вашим фильтрам.","providerCountSummary":"Поставщики {providers} · Ключи {keys}","summaryHealthy":"{count} здоров","summaryIssueOne":"Проблема {count}","summaryIssueOther":"Проблемы с {count}","providerActions":"Действия провайдера","routeViaProxy":"Маршрут через прокси","checkNow":"Проверьте сейчас","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"Также настраивается через","proxyEnvHintAfter":"переменная среды (имеет приоритет). Оставьте пустым, чтобы отключить. Примеры:","importKeys":"Импортировать ключи поставщика","importKeysDescription":"Загрузите .env, JSON, JSONC, CSV, Markdown или текстовые файлы.","importFiles":"Файлы","importFileCount":"{count} выбрано","previewFiles":"Предварительный просмотр","previewing":"Предварительный просмотр…","selected":"Выбрано","provider":"Поставщик","keyName":"Имя ключа","keyValue":"Ключевое значение","chooseProvider":"Выберите провайдера","noPreviewKeys":"В этих файлах ключи не найдены.","skippedItems":"Пропущено:","moreItems":"+{count} ещё","importSelected":"Импортировать {count}","importing":"Импорт…","noImportSelection":"Выберите хотя бы одну строку с поставщиком.","duplicate":"Дублировать","duplicatesFound":"Обнаружены дубликаты {count} — они уже существуют и будут пропущены.","importResult":"Импортирован {imported}; не удалось {failed}.","importModelCount":"+{count} моделей","importResultWithModels":"Импортирован {imported}; зарегистрировано {models} моделей; не удалось {failed}.","confirmRemove":"Подтвердить?","quotaSignalsTitle":"Сигналы квоты","quotaSignalsEmptyTitle":"Наблюдений за квотами пока нет","quotaSignalsEmptyDesc":"Это заполняется после того, как поставщики возвращают заголовки ограничения скорости, ошибки квоты или сигналы проверки.","quotaKeyRef":"ключ #{id}","quotaPoolRef":"пул {pool}","quotaLimit":"Лимит","quotaRemaining":"Осталось","quotaReset":"Сброс","quotaObserved":"Наблюдается","tabAgents":"Агенты","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Сопоставление моделей Gemini","geminiDesc":"Сопоставьте имена Gemini Pro, Flash и Flash-Lite с Auto или конкретной моделью каталога.","compatibilityTitle":"Совместимость с агентами","compatibilityDesc":"Управляйте дополнительными уровнями совместимости и обнаружением моделей Claude Code.","ollamaMode":"Эмуляция Ollama","ollamaModeHint":"Открытый loopback никогда не принимает неаутентифицированный трафик из LAN.","ollamaOff":"Выкл.","ollamaLoopback":"Открыт на loopback","ollamaKeyRequired":"Требуется API-ключ","claudeAliases":"Алиасы обнаружения Claude Code","claudeAliasesHint":"Публикуйте алиасы claude/<model>, чтобы селектор моделей шлюза мог отобразить каталог.","mcpServer":"Сервер MCP","mcpServerHint":"Открывает эндпоинт /mcp для агентных клиентов. В новых установках он выключен.","urlTokensTitle":"Отзываемые URL-токены","urlTokensDesc":"Только для клиентов без заголовков. URL-токены могут попасть в историю и логи, поэтому отзывайте их, когда они больше не нужны.","urlTokenLabel":"Метка токена","createUrlToken":"Создать токен","urlTokenOnce":"Скопируйте этот токен сейчас. Он больше не будет показан.","revoked":"Отозван","revoke":"Отозвать","modelScope":"Область моделей","modelScopeDesc":"Ограничьте этот ключ определёнными ID моделей. Для любых других моделей маршрутизатор пропускает этот ключ.","modelScopeAdd":"Введите ID модели и нажмите Enter","modelScopeEmpty":"Область не задана — ключ обслуживает все модели своего провайдера.","modelScopeClear":"Очистить область","modelScopeBadgeOne":"ограничен · 1 модель","modelScopeBadgeOther":"ограничен · {count} моделей","modelPicker":{"title":"Какие модели должен обслуживать этот ключ?","hint":"Ваш ключ {provider} добавлен и сейчас обслуживает все модели ниже. Снимите отметки с тех, которые этому ключу использовать нельзя — для них маршрутизатор его пропустит.","count":"Выбрано {selected} из {total}","allNote":"Выбрано всё — ничего не сохраняется, и модели, добавленные в каталог позже, тоже будут использовать этот ключ.","subsetNote":"Этот ключ будет ограничен выбранными моделями. Изменить это можно позже в строке ключа.","skip":"Не сейчас","scopedOne":"Ключ ограничен 1 моделью","scopedOther":"Ключ ограничен {count} моделями","allSaved":"Key serves every catalog model"},"cpTitle":"Профили клиентов","cpDesc":"Отдельные API-ключи для каждого клиента, каждый со своим системным промптом, который сервер применяет всегда.","cpEmpty":"Профилей клиентов пока нет.","cpNameLabel":"Название","cpNamePlaceholder":"напр., Бот поддержки","cpPromptLabel":"Системный промпт (необязательно)","cpPromptPlaceholder":"Инструкции, которые сервер добавляет перед каждым запросом с этим ключом.","cpCreate":"Создать профиль","cpRotate":"Сменить ключ","cpKeyOnce":"Скопируйте этот ключ сейчас — он больше не будет показан.","cpEnabledAria":"Профиль включён","selectKey":"Выбрать этот ключ","bulkSelected":"Выбрано {count}","bulkEnable":"Включить все","bulkDisable":"Отключить все","bulkDelete":"Удалить все","bulkDeleteConfirm":"Удалить {count}?","bulkResult":"Обновлено {done}; не удалось {failed}.","bulkDeleteResult":"Удалено {done}; не удалось {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Изменить ключ","editPlatformLocked":"Поставщика и конечную точку нельзя изменить после создания.","editCredentialHint":"Оставьте пустым, чтобы сохранить текущий ключ.","editCredentialPartsRequired":"Введите и ID аккаунта, и API-токен.","editModels":"Изменить модели","editModelsHint":"Выберите модели каталога, которые может использовать этот ключ. Полный выбор снимает ограничение.","editModelsCustomHint":"Выберите зарегистрированные модели endpoint, которые может использовать этот ключ. Полный выбор снимает ограничение.","editModelsSync":"Проверить обновления каталога","editModelsSyncing":"Проверка…","editModelsSynced":"Каталог моделей проверен","outlookUnavailable":"Unavailable","outlookNoForecasts":"Forecast unavailable. More recent traffic or reliable quota readings are needed.","outlookCoverage":"Forecasts available for {count} of {total} pools.","outlookTraffic":"{count} successful requests through this instance in the last {minutes} minutes.","outlookMinimumTraffic":"An exhaustion forecast needs at least {count} successful requests within {minutes} minutes.","outlookNotReportedHint":"The provider has not reported a usable request balance and limit. Local usage is shown; remaining quota is unavailable.","outlookMissingResetHint":"The provider did not report a valid reset time. Remaining quota cannot support an exhaustion forecast.","outlookConfidenceHint":"This balance is not reliable enough for an exhaustion forecast.","outlookObserved":"Balance observed: {time}","outlookUnavailablePools":"Unavailable quota pools ({count})","outlookTitle":"Quota outlook","outlookInsufficient":"Not enough data","outlookLowBalance":"Low balance","outlookRunningLow":"Running low soon","outlookStale":"Needs fresh data","outlookUnknown":"Unknown","outlookWithinQuota":"Within quota","outlookResetsFirst":"Not before reset","outlookExhausted":"Already exhausted","outlookLastReported":"requests last reported","outlookRequestsLeft":"requests left","outlookNotReported":"Not reported","outlookRate":"Recent rate","outlookRateValue":"{count} req/min","outlookRunsOut":"May run out","outlookStaleHint":"This balance is old or its window has expired. A fresh provider reading is needed.","outlookError":"Could not load quota forecasts. Raw observations are still available below.","outlookRetry":"Retry","outlookAttention":"Quota pools needing attention: {count}","outlookNoWarnings":"No forecast warnings. Pools with insufficient data may still be limited.","outlookHint":"Rates count successful requests through this instance only, not usage elsewhere. Forecasts require recent provider balances and reported resets. Warnings appear below 20% remaining or when quota may run out within two hours, before reset.","outlookRaw":"Raw quota observations","addCustomModel":"Добавить свою модель","modelId":"ID модели","modelIdRequired":"ID модели обязателен","modelDisplayName":"Отображаемое имя","modelContextWindow":"Окно контекста (токенов)","modelRateLimits":"Лимиты скорости (необязательно)","modelSupportsTools":"Поддержка вызова функций/инструментов","modelSupportsToolsHint":"Включите, если эта модель способна вызывать внешние функции/инструменты","modelSupportsVision":"Поддержка изображений (Vision)","modelSupportsVisionHint":"Включите, если эта модель принимает изображения на вход","createModel":"Создать модель","modelAddedSuccess":"Модель успешно добавлена","modelAddFailed":"Не удалось добавить модель","testModel":"Тест","testingModel":"Тестирование…","testPassedShort":"Пройден","testFailedShort":"Ошибка","testPassed":"Тест модели успешно пройден за {latency}мс","testFailed":"Тест модели завершился с ошибкой","testThrottled":"Пожалуйста, подождите {seconds}с перед повторным тестированием.","noModelsForProvider":"Для этого провайдера нет настроенных моделей.","testModels":"Проверить модели","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"Без ограничений","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} запросов, {tokens} токенов в этом месяце","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`Backups`,description:`Save the routing data to a .sql file beside the database, and restore it later.`,excludedNote:`A backup carries your providers, models, routing settings and request history. Accounts, sessions and URL tokens are never included, so a dump holds no password hashes or login tokens and restoring one cannot log you out. Provider keys stay encrypted with this server's ENCRYPTION_KEY: a backup can only be restored on a server that still holds that key.`,selectHint:`Back up everything, or pick the tables you need.`,selectAll:`Select all`,deselectAll:`Clear`,fullBackup:`Full backup`,backupSelected:`Back up selected ({count})`,created:`Backup written to {filename}`,list:`Backups on disk`,empty:`No backups yet`,full:`All tables`,tablesCount:`{count} tables`,manual:`Manual`,scheduled:`Scheduled`,preRestore:`Pre-restore`,download:`Download`,restore:`Restore`,confirmRestore:`Replace data?`,restored:`Restored. The previous data was saved as {filename}.`,delete:`Delete backup`,prevPage:`Previous`,nextPage:`Next`,autoTitle:`Automatic backups`,autoHint:`The server writes a full backup on this cadence.`,time:`Time (HH:mm)`,intervalDays:`Every N days`,path:`Folder`,pathPlaceholder:`backups`,pathHint:`Relative to the database directory. Backups cannot be written outside it.`,save:`Save schedule`,saved:`Saved`},status:{healthy:`здоровый`,rateLimited:`ограниченный по скорости`,invalid:`недействительный`,error:`ошибка`,unchecked:`непроверенный`},analytics:{title:`Аналитика`,description:`Объем запроса, задержка, использование токена и сбои.`,range24h:`24 часа`,range7d:`7д`,range30d:`30 дней`,range90d:`90д`,requests:`Запросы`,successRate:`Уровень успеха`,inputTokens:`Входные токены`,outputTokens:`Выходные токены`,avgLatency:`Средняя задержка`,p95Latency:`Задержка P95`,avgTtft:`Среднее значение TTFT`,estSavings:`Оценка. сбережения`,requestsByProvider:`Запросы от провайдера`,avgLatencyByProvider:`Средняя задержка по поставщикам`,ttftByProvider:`Время получения первого токена от провайдера`,ttftEmpty:`Еще нет времени для записи первого токена.`,requestsOverTime:`Запросы с течением времени`,tokensOverTime:`Токены с течением времени`,byModel:`По модели`,byPlatform:`По платформе`,errors:`Ошибки`,errorDistribution:`Распределение ошибок`,pinnedRequests:`Закрепленные запросы`,pinnedHonored:`заслуженный`,fallbackAttempts:`Попытки отката`,savingsHint:"Фактически вы сэкономили ${actual} за последний {range}. Именно столько стоили бы те же токены для платных API, по цене за модель. Показанное число отображает ваш темп от последнего {span} данных до полных 30 дней.",savingsHintExact:"Фактически вы сэкономили ${actual} за последний {range}. Именно столько стоили бы те же токены для платных API, по цене за модель. Показанное число — это ваш реальный итог за 30 дней.",requestsHintPinned:`{pinned} из этих запросов закрепил конкретную модель по названию. {honored} обслуживались закрепленной моделью; {failed} переключился на другой. Остальные были маршрутизированы автоматически.`,requestsHintAuto:`Все запросы за этот период были маршрутизированы автоматически; ни один клиент не закрепил конкретную модель по имени.`,requestsHintTypes:`Чат {chat} и запросы на встраивание {embedding}.`,rangeLabel24h:`24 часа`,rangeLabel7d:`7 дней`,rangeLabel30d:`30 дней`,rangeLabel90d:`90 дней`,spanDays:`{count} дней`,spanHours:`{count} часов`,latencyMs:`Задержка (мс)`,latency:`Задержка`,pinned:`Закреплено`,inTokens:`В токенах`,outTokens:`Выходные токены`,saved:`Сохранено`,message:`Сообщение`,time:`Время`,perModelBreakdown:`Разбивка по моделям`,usageByKey:`Использование по ключу`,keyColumn:`Ключ`,keyLabelFallback:`Ключ #{id}`,errorsByProvider:`Ошибки по провайдеру`,recentErrors:`Недавние ошибки`,noErrors:`Нет ошибок`,recentCalls:`Последние звонки`,clientIp:`IP-адрес клиента`,clientAgent:`Клиентское приложение`,requestedModelHint:`Запрошен {model}, обслуживается резервным способом.`,attempts:`Попытки`,filterAll:`Все`,filterCanceled:`Отменённые`,providerBreakdown:`Разбивка по провайдерам`,tokensPerSec:`Ток/с`,allProviders:`Все провайдеры`,requestDetailTitle:`Запрос #{id}`,failoverLadder:`Лестница аварийного переключения`,failoverLadderHint:`Каждый переход, который этот запрос проходил через резервную цепочку, по порядку.`,noAttemptTrace:`Для этого запроса не было записано трассировки попыток.`,keyOrdinal:`ключ #{n}`,keyBadge:`Ключ #{n}`,attemptTimingHint:`Начальное смещение от начала запроса · продолжительность попытки`,requestedModel:`Запрошенная модель`,ttft:`TTFT`,requestsByAgent:`Запросы по агентам`,sortBy:`Сортировать по: {column}`,sortHint:`Сортировка применяется к {count} загруженным строкам`,cacheHitRate:`Доля попаданий в кэш`,cacheSavedTokens:`Сэкономлено {tokens} токенов`,cacheHitRateHint:`{hits} попаданий против {misses} промахов с момента запуска сервера · сэкономлено {requests} запросов к провайдеру`},logs:{title:`Журнал`,description:`Журнал сервера в реальном времени. Новые записи появляются, пока страница открыта.`,pause:`Пауза`,resume:`Продолжить`,clear:`Очистить журнал`,cleared:`Журнал сервера очищен`,levelFilter:`Уровни журнала`,levels:{debug:`Отладка`,info:`Инфо`,warn:`Предупр.`,error:`Ошибка`},countsHint:`Счётчики показывают итоги по всему буферу журнала на сервере, а не только по записям, подходящим под эти фильтры.`,searchPlaceholder:`Поиск по сообщениям журнала…`,jumpToLatest:`К последним записям`,showMore:`Показать больше`,showLess:`Показать меньше`,buffered:`Показано {count} из максимум {max} записей в буфере`,emptyTitle:`Записей в журнале пока нет`,emptyDescription:`Записи появятся здесь, как только сервер их запишет. Если вы ожидали вывод, расширьте фильтры по уровню, поставщику или поиску.`,noLevelsTitle:`Уровни не выбраны`,noLevelsDescription:`Включите хотя бы один уровень, чтобы видеть вывод журнала.`,loadFailed:`Не удалось загрузить журнал сервера.`},playground:{title:`Детская площадка`,description:`Отправьте завершение чата через роутер и посмотрите, какой провайдер его обслуживает.`,autoModel:`Авто (резервная цепочка)`,fusionModel:`Fusion (многомодельный синтез)`,selectModel:`Выберите модель`,searchModels:`Поиск моделей…`,noModelsFound:`Модели не найдены`,send:`Отправить`,sending:`Отправка…`,clear:`Очистить`,inputPlaceholder:`Введите сообщение… (⏎ для отправки, ⇧⏎ для перевода строки)`,emptyTitle:`Отправьте сообщение, чтобы начать.`,emptyDescription:`Использование {model}. Переключайте модели в селекторе выше.`,noModels:`Моделей пока нет. Добавьте ключ API на странице «Ключи», чтобы заполнить этот список.`,copyReply:`Копировать ответ`,fallback:`запасной вариант`,fallbacks:`запасные варианты`,fusionPanel:`Панель`,fusionJudge:`Судья`,fusionTrace:`Ответы модели {count}`,fusionFailed:`нет ответа`,fusionJudgeSynth:`синтезировал окончательный ответ`,errorPrefix:`Ошибка:`,systemPromptLabel:`Системная подсказка`,systemPromptPlaceholder:`Необязательно. Отправляется как системное сообщение перед вашим чатом.`,showSettings:`Показать настройки`,hideSettings:`Скрыть настройки`,samplingHeading:`Сэмплирование`,samplingHelp:`Если выключено, применяется значение по умолчанию самого поставщика. Отправляются только те параметры, которые вы включили.`,samplingDefault:`По умолчанию`,temperature:`Температура`,topP:`Top P`,maxTokens:`Макс. токенов`,errorTitle:`Запрос не выполнен`,attach:`Прикрепить файлы`,attachTooMany:`К одному сообщению можно прикрепить не более {count} файлов.`,attachTooLarge:`Файл {name} слишком большой. Лимит — {max}.`,attachUnsupported:`{name} не поддерживается. Прикрепите изображения (PNG, JPEG, WebP, GIF) или текстовые файлы (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Не удалось прочитать {name}.`,noVisionBadge:`Без изображений`,visionWarning:`{model} не принимает изображения. Выберите модель с поддержкой изображений или «Авто».`,dictate:`Диктовать`,dictationStop:`Остановить запись`,dictationTranscribing:`Расшифровка…`,dictationUnavailable:`Добавьте провайдеров аудиомоделей, чтобы использовать диктовку.`,dictationModel:`Модель диктовки`,dictationFailed:`Ошибка расшифровки: {reason}`,artifactOpen:`Открыть предпросмотр`,artifactPreview:`Предпросмотр`,artifactCode:`Код`,artifactClose:`Закрыть предпросмотр`,artifactDownload:`Скачать`,artifactReload:`Обновить предпросмотр`,artifactHtml:`HTML-страница`,artifactSvg:`SVG-изображение`,artifactLines:`строк`,artifactResize:`Изменить размер предпросмотра`},playgroundSessions:{heading:`Чаты`,newConversation:`Новый чат`,showSidebar:`Показать чаты`,hideSidebar:`Скрыть чаты`,empty:`Сохранённых чатов пока нет.`,untitled:`Чат без названия`,rename:`Переименовать`,renamePlaceholder:`Название чата`,messageCount:`{count} сообщений`,justNow:`только что`,minutesAgo:`{count} мин назад`,hoursAgo:`{count} ч назад`,daysAgo:`{count} дн. назад`,loadFailed:`Не удалось открыть этот чат.`,renameFailed:`Не удалось переименовать этот чат.`,deleteFailed:`Не удалось удалить этот чат.`,actions:`Действия с беседой`,newChat:`Новый чат`},embeddings:{title:`Модели`,description:`Встраивания передаются только внутри семейства: та же модель, обслуживаемая другим поставщиком. Векторы от разных моделей несовместимы, поэтому роутер никогда не подменяет вам модели.`,defaultBadge:`По умолчанию · авто`,makeDefault:`Сделать по умолчанию`,moveUp:`Вверх`,moveDown:`Двигаться вниз`,usageToday:`{count} требуется сегодня`,usageMonth:`{count} ток в этом месяце`,autoDescription:`model: "auto" на POST /v1/embeddings направляет к семейству по умолчанию. Присвоение имени семейству (или идентификатору модели поставщика) закрепляет это семейство; провайдеры внутри него пробуются по порядку.`,unsavedChanges:`Несохраненные изменения`,saveChanges:`Сохранить изменения`,savingChanges:`Сохранение…`,tokMax:`{tokens} ток макс.`,emptyTitle:`Встраиваемых моделей пока нет.`,emptyDesc:`Семейства встраивания появляются здесь после добавления ключа поставщика, поддерживающего встраивание.`,dragToReorder:`Перетащите, чтобы изменить порядок поставщиков`},fusion:{title:`Фьюжн`,description:`Группа моделей отвечает параллельно, затем судья синтезирует один более сильный ответ. Используйте его, вызвав API с моделью «fusion».`,panelSource:`Источник панели`,panelSourceHelp:`Откуда берутся модели панелей, когда в запросе не указана своя.`,mode:{auto:`Авто (резервная цепочка)`,autoHelp:`Выберите разнообразный набор моделей из своей резервной цепочки, ранжированный вашей активной стратегией маршрутизации.`,explicit:`Откровенная панель`,explicitHelp:`Всегда используйте конкретные модели, которые вы выбираете ниже.`},panelModels:`Панельные модели`,selectedCount:`{count} из {max} выбрано`,noModels:`Ни одна модель еще не подключена. Добавьте ключ API, затем включите модели в резервную цепочку.`,panelSize:`Размер панели`,panelSizeHelp:`Сколько разнообразных моделей выбирать автоматически (1–{max}).`,judge:`Модель судьи`,judgeHelp:`Модель, которая синтезирует ответы панели в один. Auto использует вашу доступную модель с самым высоким рейтингом.`,judgeAuto:`Авто (доступен в топе)`,strategy:`Стратегия`,strategySynthesize:`Синтезируйте — объедините панель в один ответ`,strategyBestOf:`Best of — верните самый сильный ответ (без оценки судьи)`,strategySynthesizeShort:`Синтезировать`,strategyBestOfShort:`Лучшее из`,exposePanel:`Отобразить детали панели`,exposePanelHelp:`Прикрепите ответ каждой модели и метаданные судьи в поле x_fusion в ответе.`,howToUse:`Как использовать`,howToUseHelp:`Отправьте обычный запрос в чат с моделью «fusion». Эти настройки установлены по умолчанию; любой запрос может переопределить их с помощью поля «fusion».`,unsavedChanges:`Несохраненные изменения`,save:`Сохранить`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Премиум`,description:`Живой каталог моделей на каждом устройстве.`,loading:`Загрузка…`,checkForUpdates:`Проверьте наличие обновлений`,syncing:`Синхронизация…`,catalogFeed:`Лента каталога`,liveFeed:`Прямая трансляция`,monthlySnapshot:`Ежемесячный снимок`,lastChecked:`Последняя проверка: {when}`,liveDescription:`Новые бесплатные модели, изменения квот и исправления особенностей появляются здесь в течение нескольких часов после отправки. Приложение проверяет автоматически два раза в день; нечего делать.`,snapshotDescription:`Уровень бесплатного пользования: каталог обновляется на основе ежемесячного снимка, который проверяется автоматически два раза в день. Премиум переключает это на прямую трансляцию, обновляемую каждые 2-3 дня.`,lastSyncProblem:`Последняя проблема с синхронизацией: {error}`,license:`Лицензия`,planAnnual:`Премиум годовой`,planLifetime:`Премиум на всю жизнь`,expired:`Срок действия истек`,inactive:`Неактивный`,lifetimeNote:`Пожизненная лицензия: срок действия никогда не истекает.`,renewsOn:`Обновление на {date}.`,willNotRenew:`Не будет продлеваться. Премиум до {date}, затем эта установка возвращается к бесплатному ежемесячному каталогу.`,keyInactive:`Этот ключ больше не активен. Приложение продолжает работать над бесплатным ежемесячным каталогом.`,manageSubscription:`Управление подпиской`,openingPortal:`Открытие…`,removeKey:`Удалить ключ с этого устройства`,manageHint:`Управление подпиской открывает платежный портал Stripe: отмените, обновите карту или загрузите счета. Удаление ключа только деактивирует это устройство; ваша покупка нетронута.`,licenseKey:`Лицензионный ключ`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Активировать`,activating:`Активация…`,keyHint:`Ваш ключ находится в электронном письме о покупке и на странице после оформления заказа. Потеряли?`,recoverKey:`Восстановить его на сайте`,upsellTitle:`Начните жить за 19 долларов в год`,upsellDescription:`Новые бесплатные модели сразу после их появления, а не 30 дней спустя. Один ключ для каждого устройства. Отменить в любое время; маршрутизатор остается бесплатным навсегда.`,goPremium:`Перейти Премиум`,bundled:`в комплекте`,planGeneric:`Премиум`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`Что-то пошло не так`,boundaryDescription:`На панели мониторинга возникла непредвиденная ошибка. Ваши данные в безопасности. Попробуйте еще раз или вернитесь на страницу моделей.`,tryAgain:`Попробуйте еще раз`,goHome:`Вернуться к моделям`},notFound:{title:`Страница не найдена`,description:`Эта страница не существует или могла быть перемещена.`},setup:{title:`Начало работы`,subtitle:`Три шага для маршрутизации вашего первого запроса.`,progress:`{done} из {total}`,step1Title:`Добавить ключ провайдера`,step1Desc:`Подключите хотя бы одну учетную запись провайдера. Бесплатные ключи работают.`,step1Cta:`Добавить ключи`,step2Title:`Отправить тестовый запрос`,step2Desc:`Выберите любую модель на игровой площадке и поздоровайтесь.`,step2Cta:`Открытая игровая площадка`,step3Title:`Подключите свое приложение`,step3Desc:`Используйте свой единый ключ API с любым OpenAI-совместимым клиентом.`,copyKey:`Скопируйте ключ API`,copyUrl:`Копировать базу URL`,copiedKey:`Ключ API скопирован в буфер обмена.`,copiedUrl:`База URL скопирована в буфер обмена.`},palette:{title:`Палитра команд`,placeholder:`Поиск по страницам, моделям, действиям…`,empty:`Нет результатов`,groupPages:`Страницы`,groupActions:`Действия`,groupModels:`Модели`,toggleTheme:`Переключить темный режим`},validation:{required:`Требуется`,url:`Введите действительный URL, начиная с http:// или https://.`,email:`Введите действительный адрес электронной почты`,passwordMin:`Минимум символов {min}.`},agents:{title:`Агенты программирования`,description:`Подключайте инструменты программирования к единому шлюзу бесплатных моделей с генерируемой конфигурацией, безопасной для резервных копий.`,apiKey:`API-ключ`,quickstartTitle:`Быстрый старт`,quickstart:`Самый быстрый путь: настройте Claude Code по актуальному каталогу.`,currentKey:`Текущий единый ключ:`,seenRecently:`Замечен недавно`,setupLabel:`Автоматическая настройка`,setupHint:`Сам записывает файл конфигурации этого инструмента с указанием на этот шлюз.`,setupGuideHint:`Выводит шаги настройки этого инструмента; файлы не записываются.`,manualLabel:`Ручное подключение`,manualHint:`Базовый URL и ключ для ввода в настройках самого инструмента.`,endpoint:`Эндпоинт`,documentation:`Документация`,descriptions:{claude:`Терминальный агент Anthropic: планирует, правит файлы и запускает команды в вашем репозитории.`,codex:`Терминальный агент OpenAI: сначала выполняет задачу в локальной песочнице.`,cline:`Расширение для VS Code, которое просит подтвердить каждую правку и каждую команду.`,continue:`Расширение для VS Code и JetBrains: автодополнение и чат прямо во время набора.`,aider:`Напарник по программированию в командной строке: каждое изменение — отдельный git-коммит.`,opencode:`Терминальный агент, не привязанный к провайдеру, с полноэкранным текстовым интерфейсом.`,goose:`Локальный агент от Block, расширяемый серверами MCP за пределы кода.`,qwen:`Форк Gemini CLI, настроенный на модели Qwen и большие репозитории.`,roo:`Расширение для VS Code с переключаемыми режимами: архитектор, кодер, отладчик.`,kilo:`Расширение для VS Code, объединяющее Roo и Cline, с оркестратором, который делит работу.`,crush:`Терминальный агент Charm на Go, по одной сессии на проект.`,dsh:`Обвязка DeepSeek: каждый провайдер хранится как маршрут, между которыми можно переключаться.`,mimo:`Терминальный агент Xiaomi, форк OpenCode, принимает любого OpenAI-совместимого провайдера.`,cursor:`Редактор с упором на ИИ; работает через облако Cursor, поэтому нужен публичный URL.`,generic:`Любой другой инструмент, говорящий по API OpenAI, — настраивается вручную по базовому URL и ключу.`,atomcode:`Терминальный агент AtomGit, написанный на Rust, принимает любой OpenAI-совместимый эндпоинт.`,openclaw:`Всегда доступный персональный ассистент, который отвечает в WhatsApp, Telegram, Discord и других мессенджерах прямо с вашего компьютера.`,hermes:`Самосовершенствующийся агент от Nous Research с постоянной памятью и навыками — в терминале или в чат-приложениях.`,pi:`Минималистичный терминальный агент, который вы настраиваете своими расширениями, навыками и шаблонами промптов.`}},update:{available:`New version available`,whatsNew:`What's new in v{version}`,publishedOn:`Published {date}`,noNotes:`No release notes were published for this version.`,openRelease:`Open release page`,dismissVersion:`Dismiss this version`,dismiss:`Dismiss`},freeTier:{poolsToggle:`Пулы бесплатного тарифа ({count})`,poolsToggleBare:`Пулы бесплатного тарифа`,summary:`{pools} пулов · {budget} токенов/мес, каждый пул учтён один раз · {credits} на кредитах · {unpublished} без данных`,pool:`Пул`,models:`Модели`,budget:`Месячный лимит`,kind:`Тип`,kindDocumented:`Задокументирован`,kindCredits:`Кредиты`,kindUnpublished:`Не опубликован`,remaining:`Осталось`,resetAt:`Сброс`,disabledModels:`({count} выкл.)`,metricTokens:`токенов`,metricRequests:`запросов`,metricCredits:`кредитов`,metricNeurons:`нейронов`,metricOther:`единиц`,empty:`Нет включённых моделей с данными о бесплатном лимите.`,poolLabel:`{platform} · 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:`Цепочки резервирования`,description:`Именованные цепочки; каждую можно вызвать как auto:<name> в /v1/models.`,count:`Цепочек: {count}`,active:`Активна`,default:`По умолчанию`,activate:`Активировать`,activateHint:`Редактировать эту цепочку в таблице ниже и маршрутизировать auto через неё`,deleteHint:`Удалить эту цепочку`,deleteConfirm:`Удалить цепочку «{name}»?`,create:`Создать`,createPlaceholder:`Имя цепочки`,createFailed:`Не удалось создать цепочку.`,nameRules:`До 20 символов: буквы, цифры, дефисы и подчёркивания.`,startEmpty:`Создать пустой`,startEmptyHint:`Создаёт цепочку без моделей и не добавляет в неё новые модели каталога. Без флажка она начинается как копия цепочки по умолчанию.`,curated:`Ручная`,curatedHint:`Новые модели каталога не добавляются в эту цепочку автоматически.`,renameHint:`Переименовать эту цепочку`,renameConfirm:`Переименовать цепочку "{oldName}" в "{name}"? Клиенты, обращающиеся к auto:{oldName}, должны перейти на auto:{name}.`,renamePlaceholder:`Новое имя цепочки`,renameFailed:`Не удалось переименовать цепочку.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
|