@cat-factory/app 0.46.12 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/app/components/auth/AuthGate.vue +1 -1
  2. package/app/components/auth/LoginScreen.vue +131 -1
  3. package/app/components/layout/AccountDeploymentSettings.vue +232 -5
  4. package/app/components/providers/ApiKeysSection.vue +27 -3
  5. package/app/components/providers/PersonalSubscriptionSection.vue +17 -2
  6. package/app/components/providers/SignInRequiredNotice.vue +19 -0
  7. package/app/components/settings/AccountSettingsPanel.vue +9 -6
  8. package/app/components/settings/IssueTrackerPanel.vue +114 -53
  9. package/app/components/settings/LocalModeSettingsPanel.vue +60 -28
  10. package/app/components/settings/LocalModelEndpointsPanel.vue +72 -27
  11. package/app/components/settings/MergeThresholdsPanel.vue +93 -45
  12. package/app/components/settings/ModelConfigurationPanel.vue +62 -36
  13. package/app/components/settings/ObservabilityConnectionPanel.vue +65 -35
  14. package/app/components/settings/OpenRouterCatalogPanel.vue +70 -40
  15. package/app/components/settings/ProviderConnectionPanel.vue +115 -61
  16. package/app/components/settings/ServiceFragmentDefaultsPanel.vue +9 -12
  17. package/app/components/settings/UserSecretsSection.vue +37 -18
  18. package/app/components/settings/WorkspaceSettingsPanel.vue +114 -62
  19. package/app/composables/api/auth.ts +7 -0
  20. package/app/stores/auth.ts +25 -1
  21. package/app/types/accountSettings.ts +4 -0
  22. package/i18n/locales/en.json +496 -0
  23. package/i18n/locales/es.json +490 -0
  24. package/i18n/locales/fr.json +490 -0
  25. package/i18n/locales/pl.json +490 -0
  26. package/i18n/locales/uk.json +490 -0
  27. package/package.json +2 -2
@@ -715,6 +715,19 @@
715
715
  "gate": {
716
716
  "loading": "Ładowanie…"
717
717
  },
718
+ "localMode": {
719
+ "continueWith": "Kontynuuj z {provider}",
720
+ "enterPatTitle": "Lub zaloguj się za pomocą osobistego tokenu dostępu",
721
+ "tokenPlaceholder": "wklej token {provider}",
722
+ "createToken": "Utwórz token {provider} ↗",
723
+ "submit": "Zaloguj się",
724
+ "orDivider": "lub",
725
+ "failed": "Logowanie nie powiodło się. Sprawdź token i spróbuj ponownie."
726
+ },
727
+ "signInRequired": {
728
+ "personalSubscriptions": "Subskrypcje osobiste są zapisywane na Twoim koncie, ale to wdrożenie działa bez logowania, więc nie można ich tutaj przechowywać. Użyj puli obszaru roboczego lub klucza API dostawcy.",
729
+ "userApiKeys": "Twoje osobiste klucze API są zapisywane na Twoim koncie, ale to wdrożenie działa bez logowania, więc nie można ich tutaj przechowywać. Zmień zakres na „Ten obszar roboczy”, aby dodać współdzielony klucz."
730
+ },
718
731
  "login": {
719
732
  "appTitle": "Architecture Board",
720
733
  "subtitle": "Zaloguj się, aby kontynuować.",
@@ -789,6 +802,33 @@
789
802
  "saveFailed": "Nie udało się zapisać kluczy wyszukiwania w sieci",
790
803
  "cleared": "Wyczyszczono klucze wyszukiwania w sieci",
791
804
  "clearFailed": "Nie udało się wyczyścić kluczy wyszukiwania w sieci"
805
+ },
806
+ "contentStorage": {
807
+ "title": "Przechowywanie treści",
808
+ "description": "Gdzie przechowywane są zrzuty ekranu testera UI oraz referencyjne obrazy projektowe dla tego konta. Metadane zawsze znajdują się w bazie danych; do wybranego backendu trafiają tylko bajty plików.",
809
+ "default": "Domyślnie ({backend})",
810
+ "backends": {
811
+ "off": "Wyłączone (przechowywanie wyłączone)",
812
+ "fs": "Lokalny system plików",
813
+ "s3": "Amazon S3 / zgodny z S3",
814
+ "r2": "Cloudflare R2",
815
+ "db": "Baza danych Postgres"
816
+ },
817
+ "basePath": "Ścieżka bazowa (domyślnie: .file-storage)",
818
+ "region": "Region (np. us-east-1)",
819
+ "bucket": "Bucket",
820
+ "prefix": "Prefiks klucza (opcjonalny)",
821
+ "endpoint": "Endpoint (opcjonalny, zgodny z S3)",
822
+ "forcePathStyle": "Wymuś adresowanie w stylu ścieżki (większość magazynów zgodnych z S3)",
823
+ "accessKeys": "Klucze dostępu",
824
+ "accessKeyId": "Identyfikator klucza dostępu",
825
+ "secretAccessKey": "Tajny klucz dostępu",
826
+ "keysHint": "Klucze są zapieczętowane w spoczynku i nigdy nie są wyświetlane po zapisaniu; pozostaw puste, aby zachować przechowywane klucze.",
827
+ "regionBucketValidation": "Wprowadź region i bucket S3",
828
+ "bothKeysValidation": "Wprowadź zarówno identyfikator klucza dostępu, jak i sekret",
829
+ "keysValidation": "Wprowadź identyfikator klucza dostępu i sekret S3",
830
+ "saved": "Zapisano przechowywanie treści",
831
+ "saveFailed": "Nie udało się zapisać przechowywania treści"
792
832
  }
793
833
  },
794
834
  "accountFragments": {
@@ -1119,5 +1159,455 @@
1119
1159
  }
1120
1160
  }
1121
1161
  }
1162
+ },
1163
+ "settings": {
1164
+ "modelConfiguration": {
1165
+ "title": "Konfiguracja modeli",
1166
+ "subtitle": "Ustawienia, które przypisują model do każdego agenta. Zadanie wybiera jedno z nich; domyślnie zadania korzystają z domyślnego ustawienia obszaru roboczego.",
1167
+ "back": "Wstecz",
1168
+ "closeEsc": "Zamknij (Esc)",
1169
+ "quota": "limit",
1170
+ "list": {
1171
+ "intro": "Każde ustawienie wybiera {baseModel} dla każdego agenta, z opcjonalnymi nadpisaniami dla poszczególnych agentów. Model przypięty do pojedynczego zadania nadal ma pierwszeństwo przed ustawieniem.",
1172
+ "introBaseModel": "model bazowy",
1173
+ "newPreset": "Nowe ustawienie",
1174
+ "loadingCatalog": "Wczytywanie katalogu modeli…",
1175
+ "default": "Domyślne",
1176
+ "setDefaultTitle": "Ustaw jako domyślne dla obszaru roboczego",
1177
+ "editTitle": "Edytuj ustawienie",
1178
+ "deleteDisabledTitle": "Domyślnego ustawienia nie można usunąć",
1179
+ "deleteTitle": "Usuń ustawienie",
1180
+ "basePrefix": "Bazowy:",
1181
+ "overrideCount": "{count} nadpisanie | {count} nadpisania | {count} nadpisań",
1182
+ "empty": "Brak ustawień. Utwórz jedno, aby przypisać modele do swoich agentów."
1183
+ },
1184
+ "editor": {
1185
+ "useBaseModel": "Użyj modelu bazowego",
1186
+ "baseModel": "Model bazowy",
1187
+ "nameLabel": "Nazwa",
1188
+ "namePlaceholder": "np. Kimi K2.7",
1189
+ "baseModelLabel": "Model bazowy (stosowany do każdego agenta)",
1190
+ "makeDefault": "Ustaw jako domyślne dla obszaru roboczego",
1191
+ "perAgentOverrides": "Nadpisania dla poszczególnych agentów",
1192
+ "filterPlaceholder": "Filtruj agentów…",
1193
+ "noAgentsMatch": "Żaden agent nie pasuje do \"{filter}\".",
1194
+ "saveChanges": "Zapisz zmiany",
1195
+ "createPreset": "Utwórz ustawienie"
1196
+ },
1197
+ "toast": {
1198
+ "setDefaultFailed": "Nie udało się ustawić domyślnego ustawienia",
1199
+ "deleteFailed": "Nie udało się usunąć ustawienia",
1200
+ "nameRequiredTitle": "Wymagana nazwa",
1201
+ "nameRequiredBody": "Nadaj ustawieniu nazwę.",
1202
+ "saveFailed": "Nie udało się zapisać ustawienia"
1203
+ }
1204
+ },
1205
+ "account": {
1206
+ "title": "Ustawienia konta",
1207
+ "noAccount": "Nie wybrano konta.",
1208
+ "tabs": {
1209
+ "team": "Zespół i dostęp",
1210
+ "fragments": "Fragmenty kontekstu"
1211
+ }
1212
+ },
1213
+ "providerConnection": {
1214
+ "fallbackTitle": "Dostawca",
1215
+ "kind": {
1216
+ "environment": {
1217
+ "title": "Dostawca środowisk efemerycznych",
1218
+ "blurb": "Tam, gdzie agent Tester działa na żywym środowisku podglądowym. Skonfiguruj ustawienia dla obszaru roboczego oraz poświadczenia wymagane przez dostawcę."
1219
+ },
1220
+ "runner-pool": {
1221
+ "title": "Samodzielnie hostowana pula wykonawców",
1222
+ "blurb": "Tam, gdzie działają agenci kodujący, gdy nie są używane kontenery Cloudflare. Skonfiguruj punkt końcowy harmonogramu puli oraz poświadczenia."
1223
+ }
1224
+ },
1225
+ "delegation": {
1226
+ "title": "Delegowanie lokalne",
1227
+ "intro": "Domyślnie ta maszyna uruchamia wszystko lokalnie — agentów kontenerowych na Dockerze hosta, a infrastrukturę Testera przez docker-compose wewnątrz kontenera. Włącz poniższe opcje, aby przekazać dowolne z tych zadań do usługi zewnętrznej. Dotyczy wyłącznie trybu lokalnego.",
1228
+ "agentsToggle": "Uruchamiaj agentów kontenerowych w puli wykonawców",
1229
+ "agentsHint": "Wysyłaj każdego agenta kontenerowego (koder, tester, scalający, bootstrap, …) do samodzielnie hostowanej puli wykonawców tego obszaru roboczego zamiast na Dockera hosta.",
1230
+ "registerPoolPrompt": "Najpierw {link}, aby to włączyć.",
1231
+ "registerPoolLink": "Zarejestruj pulę wykonawców",
1232
+ "envToggle": "Udostępniaj środowiska Testera przez dostawcę",
1233
+ "envHint": "Uruchom środowisko podglądowe Testera przez dostawcę środowisk skonfigurowanego poniżej zamiast przez docker-compose wewnątrz kontenera. Najpierw połącz dostawcę, aby to włączyć.",
1234
+ "updateFailed": "Nie udało się zaktualizować delegowania"
1235
+ },
1236
+ "runnerPoolLocalHint": "Zarejestruj tutaj swoją pulę, a następnie włącz „Uruchamiaj agentów kontenerowych w puli wykonawców” na ekranie {link}, aby kierować do niej agentów tego obszaru roboczego.",
1237
+ "ephemeralEnvironments": "Środowiska efemeryczne",
1238
+ "viewLogs": "Pokaż dzienniki",
1239
+ "hideLogs": "Ukryj dzienniki",
1240
+ "connectedAt": "Połączono · {baseUrl}",
1241
+ "missingConfig": "Brakuje wymaganej konfiguracji: {fields}",
1242
+ "manifestEditorUnavailable": "Tego dostawcę konfiguruje się, redagując manifest. Wbudowany edytor manifestu nie jest jeszcze dostępny — na razie zarejestruj go przez API.",
1243
+ "form": {
1244
+ "updateConfiguration": "Zaktualizuj konfigurację",
1245
+ "connect": "Połącz",
1246
+ "reenterSecrets": "Wprowadź ponownie pole sekretne, aby zapisać zmiany — przechowywane sekrety są tylko do zapisu i nie są wyświetlane. | Wprowadź ponownie pola sekretne, aby zapisać zmiany — przechowywane sekrety są tylko do zapisu i nie są wyświetlane. | Wprowadź ponownie pola sekretne, aby zapisać zmiany — przechowywane sekrety są tylko do zapisu i nie są wyświetlane.",
1247
+ "optionalLabel": "{label} (opcjonalne)"
1248
+ },
1249
+ "field": {
1250
+ "defaultsTo": "Wartość domyślna: {value}"
1251
+ },
1252
+ "test": {
1253
+ "button": "Przetestuj połączenie",
1254
+ "ok": "Połączenie poprawne",
1255
+ "failed": "Połączenie nieudane"
1256
+ },
1257
+ "toast": {
1258
+ "saved": "Zapisano: {title}",
1259
+ "saveFailed": "Nie udało się zapisać połączenia",
1260
+ "removed": "Połączenie usunięte",
1261
+ "removeFailed": "Nie udało się usunąć połączenia"
1262
+ }
1263
+ },
1264
+ "serviceFragmentDefaults": {
1265
+ "intro": "Wybierz fragmenty z dobrymi praktykami, od których startuje każda nowa usługa. Ich wskazówki są wplatane w prompt każdego agenta pracującego z kodem (koder, recenzent, architekt, poprawiacze) przy zadaniach usługi. Zestaw możesz dopracować osobno dla każdej usługi w jej inspektorze; zmiana tej wartości domyślnej nie wpływa na już istniejące usługi.",
1266
+ "defaultFragments": "Domyślne fragmenty",
1267
+ "addFragment": "Dodaj fragment",
1268
+ "empty": "Brak — nowe usługi startują bez fragmentów na poziomie usługi.",
1269
+ "saveFailed": "Nie udało się zapisać domyślnych fragmentów",
1270
+ "footer": {
1271
+ "question": "Chcesz dodać lub edytować same fragmenty (redagowane ręcznie, powiązane dokumenty, repozytoria)?",
1272
+ "manageBoard": "Zarządzaj biblioteką fragmentów tej tablicy →",
1273
+ "manageAccount": "Zarządzaj fragmentami konta →"
1274
+ }
1275
+ },
1276
+ "issueTracker": {
1277
+ "filing": {
1278
+ "heading": "Gdzie są zgłaszane zgłoszenia",
1279
+ "description": "Cykliczny potok długu technicznego tworzy zgłoszenie przed implementacją i rejestruje je w tym systemie. Wybierz {none}, aby pominąć rejestrowanie.",
1280
+ "none": "Brak",
1281
+ "githubHint": "GitHub Issues korzysta z zainstalowanej aplikacji GitHub App, która nie jest jeszcze połączona. Zainstaluj ją w {link} — rejestrowanie pozostaje wyłączone do tego czasu.",
1282
+ "githubHintLink": "Integracje → GitHub",
1283
+ "jiraHint": "Jira nie jest jeszcze połączona. {link}, aby rejestrować i wiązać zgłoszenia.",
1284
+ "linearHint": "Linear nie jest jeszcze połączony. {link}, aby rejestrować i wiązać zgłoszenia.",
1285
+ "connectLink": "Połącz",
1286
+ "jiraProjectKey": "Klucz projektu Jira",
1287
+ "jiraProjectKeyHelp": "Nowe zgłoszenia są rejestrowane w tym projekcie.",
1288
+ "linearTeamId": "Identyfikator zespołu Linear",
1289
+ "linearTeamIdHelp": "Nowe zgłoszenia są tworzone w tym zespole (Linear wymaga zespołu do utworzenia zgłoszenia)."
1290
+ },
1291
+ "vendor": {
1292
+ "github": "GitHub Issues",
1293
+ "jira": "Jira",
1294
+ "linear": "Linear"
1295
+ },
1296
+ "linking": {
1297
+ "heading": "Wiąż zgłoszenia jako kontekst",
1298
+ "description": "Gdy źródło jest dostępne, możesz zaimportować jego zgłoszenia i dołączyć je do zadania, aby agenci widzieli opis zgłoszenia i komentarze podczas implementacji. Jest to niezależne od systemu rejestrowania powyżej.",
1299
+ "github": {
1300
+ "available": "Korzysta z zainstalowanej aplikacji GitHub App — bez poświadczeń.",
1301
+ "unavailable": "Zainstaluj aplikację GitHub App (Integracje → GitHub), aby udostępnić to źródło."
1302
+ },
1303
+ "checkSetup": "Sprawdź konfigurację",
1304
+ "install": "Zainstaluj",
1305
+ "connected": "Połączono.",
1306
+ "jira": {
1307
+ "connectHint": "Połącz za pomocą konta Jira i tokenu API."
1308
+ },
1309
+ "linear": {
1310
+ "connectHint": "Połącz za pomocą osobistego klucza API Linear."
1311
+ },
1312
+ "connect": "Połącz"
1313
+ },
1314
+ "writeback": {
1315
+ "heading": "Zapis zwrotny",
1316
+ "description": "Zapisuj zwrotnie do powiązanych zgłoszeń zadania w miarę postępu jego pull requesta. Każde przełączenie to wartość domyślna obszaru roboczego i można je nadpisać dla zadania w inspektorze. Zgłoszenia GitHub zamykają się natywnie; zgłoszenia Jira przechodzą do pierwszego statusu w swojej kategorii {done}.",
1317
+ "done": "Gotowe",
1318
+ "commentOnOpen": {
1319
+ "label": "Komentuj, gdy otwiera się PR",
1320
+ "help": "Opublikuj komentarz w powiązanym zgłoszeniu z linkiem do nowego pull requesta."
1321
+ },
1322
+ "resolveOnMerge": {
1323
+ "label": "Zamknij jako rozwiązane, gdy PR zostanie scalony",
1324
+ "help": "Skomentuj, że PR został scalony, a następnie zamknij / rozwiąż powiązane zgłoszenie."
1325
+ }
1326
+ },
1327
+ "probeFailure": {
1328
+ "title": "Śledzenie zgłoszeń jest niedostępne",
1329
+ "disabled": "Integracja źródeł zadań jest wyłączona w tym wdrożeniu (jej klucz szyfrowania nie jest skonfigurowany). Ustaw ENCRYPTION_KEY na backendzie, aby włączyć śledzenie zgłoszeń.",
1330
+ "serverError": "Usługa śledzenia zgłoszeń zwróciła błąd (HTTP {status}): {message}. Zwykle oznacza to, że backend nie jest w pełni zmigrowany/skonfigurowany.",
1331
+ "loadFailedStatus": "Nie udało się wczytać ustawień systemu zgłoszeń (HTTP {status}): {message}",
1332
+ "loadFailed": "Nie udało się wczytać ustawień systemu zgłoszeń: {message}"
1333
+ },
1334
+ "toast": {
1335
+ "saved": "System zgłoszeń zapisany",
1336
+ "saveFailed": "Nie udało się zapisać ustawień",
1337
+ "updateFailed": "Nie udało się zaktualizować",
1338
+ "checkFailed": "Sprawdzenie nie powiodło się"
1339
+ }
1340
+ },
1341
+ "userSecrets": {
1342
+ "title": "Mój token GitHub",
1343
+ "intro": "Przechowuj osobisty token dostępu używany do uruchomień, które {you} rozpoczynasz — pushe, pull requesty, bramka CI i scalania są przypisywane do Twojego dostępu GitHub. Przechowywany {scope}; token jest tylko do zapisu i nigdy nie jest ponownie pokazywany.",
1344
+ "introYou": "Ty",
1345
+ "introScope": "tylko dla Ciebie",
1346
+ "connectedStored": "Połączono · token zapisany",
1347
+ "replaceToken": "Zamień token",
1348
+ "addToken": "Dodaj token",
1349
+ "labelField": "Etykieta (opcjonalnie)",
1350
+ "optionalField": "{label} (opcjonalnie)",
1351
+ "testConnection": "Testuj połączenie",
1352
+ "tokenValid": "Token prawidłowy",
1353
+ "tokenRejected": "Token odrzucony",
1354
+ "secretFallback": "Sekret",
1355
+ "toast": {
1356
+ "saved": "Zapisano {label}",
1357
+ "saveFailed": "Nie udało się zapisać sekretu",
1358
+ "removed": "Sekret usunięty",
1359
+ "removeFailed": "Nie udało się usunąć sekretu"
1360
+ }
1361
+ },
1362
+ "mergeThresholds": {
1363
+ "intro": "Nazwane zasady automatycznego scalania, które zadanie może wybrać. Po przejściu CI agent {merger} ocenia PR pod kątem złożoności, ryzyka i wpływu (0-100%); PR jest scalany automatycznie tylko wtedy, gdy każdy wynik jest równy lub niższy od limitów ustawienia, w przeciwnym razie zgłaszane jest powiadomienie o przeglądzie. Ustawienie domyślne obowiązuje dla każdego zadania, które nie wybierze żadnego.",
1364
+ "mergerAgent": "merger",
1365
+ "concern": {
1366
+ "none": "Brak (zawsze zatrzymaj)",
1367
+ "low": "Niski",
1368
+ "medium": "Średni",
1369
+ "high": "Wysoki (nigdy nie zatrzymuj)"
1370
+ },
1371
+ "presetNamePlaceholder": "Nazwa ustawienia",
1372
+ "default": "Domyślne",
1373
+ "makeDefault": "Ustaw jako domyślne",
1374
+ "deleteDefaultBlocked": "Nie można usunąć ustawienia domyślnego",
1375
+ "deletePreset": "Usuń ustawienie",
1376
+ "field": {
1377
+ "maxComplexity": "Maks. złożoność %",
1378
+ "maxRisk": "Maks. ryzyko %",
1379
+ "maxImpact": "Maks. wpływ %",
1380
+ "ciMaxAttempts": "Próby naprawy CI",
1381
+ "maxRequirementIterations": "Iteracje wymagań",
1382
+ "maxRequirementConcernAllowed": "Automatyczne zaliczenie zastrzeżeń do"
1383
+ },
1384
+ "newPreset": "Nowe ustawienie",
1385
+ "create": {
1386
+ "name": "Nazwa",
1387
+ "namePlaceholder": "np. Ostrożne",
1388
+ "complexity": "Złoż.%",
1389
+ "risk": "Ryzyko%",
1390
+ "impact": "Wpływ%",
1391
+ "ciFix": "Napr. CI",
1392
+ "reqIter": "Iter. wym.",
1393
+ "autoPass": "Auto-zalicz do"
1394
+ },
1395
+ "add": "Dodaj",
1396
+ "toast": {
1397
+ "saved": "Ustawienie zapisane",
1398
+ "saveFailed": "Nie można zapisać ustawienia",
1399
+ "created": "Ustawienie utworzone",
1400
+ "createFailed": "Nie można utworzyć ustawienia",
1401
+ "defaultFailed": "Nie można ustawić jako domyślne",
1402
+ "deleteFailed": "Nie można usunąć ustawienia"
1403
+ }
1404
+ },
1405
+ "observabilityConnection": {
1406
+ "title": "Kondycja po wydaniu",
1407
+ "intro": "Po wdrożeniu wydania bramka {gate} obserwuje skonfigurowane monitory/SLO obserwowalności. Przy regresji uruchamia agenta dyżurnego do zbadania (człowiek decyduje, czy wycofać). Przypisz, które monitory/SLO obserwuje usługa, w inspektorze tej usługi.",
1408
+ "connection": {
1409
+ "heading": "Połączenie",
1410
+ "provider": "Dostawca"
1411
+ },
1412
+ "datadog": {
1413
+ "site": "Witryna Datadog",
1414
+ "apiKey": "Klucz API",
1415
+ "appKey": "Klucz aplikacji"
1416
+ },
1417
+ "saveConnection": "Zapisz połączenie",
1418
+ "disconnect": "Rozłącz",
1419
+ "incident": {
1420
+ "heading": "Wzbogacanie incydentów",
1421
+ "configured": "Skonfigurowano",
1422
+ "notSet": "Nie ustawiono",
1423
+ "description": "Opcjonalne. Przy regresji wynik badania dyżurnego jest publikowany w incydencie, który te systemy JUŻ otworzyły na podstawie tych samych sygnałów (adnotacja, nigdy ponowny alarm). Sekrety są tylko do zapisu: pozostawienie pustego pola zachowuje zapisaną wartość bez zmian.",
1424
+ "pagerDutyToken": "Token API PagerDuty",
1425
+ "pagerDutyFromEmail": "E-mail nadawcy PagerDuty",
1426
+ "incidentIoKey": "Klucz API incident.io",
1427
+ "clear": "Wyczyść"
1428
+ },
1429
+ "status": {
1430
+ "notConnected": "Nie połączono",
1431
+ "connected": "Połączono",
1432
+ "connectedWithSite": "Połączono ({site})"
1433
+ },
1434
+ "toast": {
1435
+ "loadFailed": "Nie można wczytać ustawień obserwowalności",
1436
+ "incidentCredsRequired": "Wprowadź dane uwierzytelniające PagerDuty lub incident.io",
1437
+ "incidentSaved": "Wzbogacanie incydentów zapisane",
1438
+ "incidentSaveFailed": "Nie można zapisać wzbogacania incydentów",
1439
+ "incidentDisconnectFailed": "Nie można rozłączyć wzbogacania incydentów",
1440
+ "connected": "Obserwowalność połączona",
1441
+ "connectFailed": "Nie można zapisać połączenia",
1442
+ "disconnectFailed": "Nie można rozłączyć"
1443
+ }
1444
+ },
1445
+ "localMode": {
1446
+ "title": "Tryb lokalny",
1447
+ "intro": "Strojenie lokalnego uruchamiacza kontenerów, przechowywane we wdrożeniu tej maszyny (zastąpiło zmienne środowiskowe {poolVars} / {harnessVars}). Zapisanie zmienia rozmiar ciepłej puli na żywo, bez potrzeby restartu; trwające uruchomienia zachowują kontener, który już mają.",
1448
+ "pool": {
1449
+ "heading": "Ciepła pula kontenerów",
1450
+ "description": "Trzymaj bezczynne kontenery uprzęży gotowe i przydzielaj ponownie jeden (preferując kontener, który już ma repozytorium uruchomienia) zamiast zimnego startu na każde uruchomienie. Rozmiar puli 0 ją wyłącza. Wymaga środowiska z rodziny Docker (Docker/Podman/OrbStack/Colima); ignorowane na Apple {appleContainer}.",
1451
+ "size": {
1452
+ "label": "Rozmiar puli",
1453
+ "help": "Maks. bezczynnych ciepłych kontenerów. 0 = pulowanie wyłączone."
1454
+ },
1455
+ "minWarm": {
1456
+ "label": "Wstępne rozgrzanie przy starcie",
1457
+ "help": "Kontenery uruchamiane przy starcie usługi."
1458
+ },
1459
+ "max": {
1460
+ "label": "Maks. kontenerów",
1461
+ "help": "Twardy limit (przydzielone + bezczynne). Puste = rozmiar puli.",
1462
+ "placeholder": "(rozmiar puli)"
1463
+ },
1464
+ "idleTimeout": {
1465
+ "label": "Limit bezczynności (minuty)",
1466
+ "help": "Usuń bezczynny kontener z puli po upływie."
1467
+ }
1468
+ },
1469
+ "checkout": {
1470
+ "heading": "Ponowne użycie kopii roboczej",
1471
+ "description": "Gdy ciepły kontener ma już repozytorium uruchomienia, uprząż ponownie używa jego kopii roboczej dla repozytorium (czyszczenie + pobranie + przełączenie gałęzi) zamiast klonowania od nowa.",
1472
+ "workspaceRoot": {
1473
+ "label": "Katalog główny obszaru roboczego",
1474
+ "help": "Bezwzględny katalog w kontenerze, w którym znajduje się ponownie używana kopia robocza."
1475
+ },
1476
+ "cleanKeep": {
1477
+ "label": "Zachowaj przy czyszczeniu (oddzielone przecinkami)",
1478
+ "help": "Katalogi pamięci podręcznej zależności, które czyszczenie na uruchomienie zachowuje."
1479
+ }
1480
+ },
1481
+ "toast": {
1482
+ "saved": "Ustawienia lokalne zapisane",
1483
+ "saveFailed": "Nie można zapisać ustawień lokalnych"
1484
+ }
1485
+ },
1486
+ "openRouterCatalog": {
1487
+ "intro": "Uzyskaj dostęp do {models} przez jedną bramę. Dodaj poniżej swój klucz OpenRouter, a następnie włącz wybrane modele. Pojawiają się one w selektorze modeli wraz z oknem kontekstu i ceną oraz są wliczane do Twojego budżetu wydatków.",
1488
+ "introModels": "ponad 300 modeli",
1489
+ "connectHeading": "Połącz swój klucz OpenRouter",
1490
+ "step1": "Otwórz {link} i utwórz klucz API.",
1491
+ "step1Link": "openrouter.ai → Klucze ↗",
1492
+ "step2": "Skopiuj klucz (zaczyna się od {prefix}) i wklej go poniżej.",
1493
+ "scope": "Zakres",
1494
+ "scopeWorkspace": "Ten obszar roboczy",
1495
+ "scopeUser": "Moje klucze (tylko ja)",
1496
+ "labelOptional": "Etykieta (opcjonalnie)",
1497
+ "labelPlaceholder": "np. klucz zespołu",
1498
+ "apiKey": "Klucz API",
1499
+ "connectAndBrowse": "Połącz i przeglądaj",
1500
+ "keyConnected": "Klucz OpenRouter połączony",
1501
+ "manageKeys": "Zarządzaj w Dostawcy i klucze",
1502
+ "refresh": "Odśwież katalog",
1503
+ "enableRecommended": "Włącz rekomendowane",
1504
+ "filterPlaceholder": "Filtruj według nazwy lub sluga…",
1505
+ "empty": "Brak modeli. Naciśnij {action}, aby załadować aktualną listę z OpenRouter.",
1506
+ "enabledCount": "włączono {count} model | włączono {count} modele | włączono {count} modeli",
1507
+ "context": "{value} ctx",
1508
+ "contextThousands": "{value}K ctx",
1509
+ "price": "{input}/{output} za Mtok",
1510
+ "toast": {
1511
+ "connected": "Klucz OpenRouter połączony",
1512
+ "connectFailed": "Nie udało się połączyć klucza",
1513
+ "rejected": "OpenRouter odrzucił klucz.",
1514
+ "unreachable": "Nie udało się połączyć z OpenRouter",
1515
+ "connectFirst": "Najpierw połącz klucz OpenRouter.",
1516
+ "saved": "Katalog OpenRouter zapisany",
1517
+ "saveFailed": "Nie udało się zapisać katalogu"
1518
+ }
1519
+ },
1520
+ "workspaceSettings": {
1521
+ "title": "Ustawienia obszaru roboczego",
1522
+ "tabs": {
1523
+ "workspace": "Obszar roboczy",
1524
+ "budget": "Budżet",
1525
+ "merge": "Progi scalania",
1526
+ "tracker": "System zgłoszeń",
1527
+ "fragments": "Dobre praktyki usługi"
1528
+ },
1529
+ "waiting": {
1530
+ "heading": "Oczekiwanie na człowieka",
1531
+ "body": "Uruchomienie wstrzymane na decyzji człowieka (przegląd, zatwierdzenie, scalenie) czeka tak długo, jak potrzeba, i nigdy nie jest anulowane. Po upływie tylu minut jego powiadomienie staje się czerwone i jest oznaczane jako {overdue} w skrzynce odbiorczej.",
1532
+ "overdue": "Zaległe",
1533
+ "escalateAfter": "Eskaluj po (minuty)"
1534
+ },
1535
+ "taskLimit": {
1536
+ "heading": "Uruchomione zadania na usługę",
1537
+ "body": "Ogranicz, ile zadań może być uruchomionych jednocześnie w ramach jednej usługi. Uruchomienie zadania ponad limit jest odrzucane z czytelnym komunikatem, dopóki uruchomione zadanie się nie zakończy.",
1538
+ "mode": "Tryb",
1539
+ "maxRunning": "Maksymalna liczba uruchomionych zadań",
1540
+ "maxPerType": "Maksymalna liczba zadań typu {type}",
1541
+ "modes": {
1542
+ "off": "Bez limitu",
1543
+ "shared": "Wspólny dla wszystkich typów",
1544
+ "per_type": "Na typ zadania"
1545
+ }
1546
+ },
1547
+ "taskTypes": {
1548
+ "feature": "funkcja",
1549
+ "bug": "błąd",
1550
+ "document": "dokument",
1551
+ "spike": "spike"
1552
+ },
1553
+ "observability": {
1554
+ "heading": "Obserwowalność agenta",
1555
+ "body": "Przechowuj pełny kontekst przekazany każdemu agentowi: złożone prompty, włączone fragmenty dobrych praktyk oraz pełną treść plików wstrzykniętych do jego kontenera, aby można było je później sprawdzić w widoku obserwowalności. Treści są przechowywane przez to samo okno co telemetria LLM dla poszczególnych wywołań. Wyłącz, aby przestać je przechowywać (istniejące migawki są usuwane przez retencję).",
1556
+ "toggle": "Przechowuj pełny kontekst agenta"
1557
+ },
1558
+ "retention": {
1559
+ "heading": "Retencja zrzutów ekranu",
1560
+ "body": "Jak długo przechowywać zrzuty ekranu z testera UI oraz referencyjne obrazy projektowe, z którymi są porównywane (weryfikacja wizualna). Codzienne zadanie czyszczące usuwa zarówno bajty obrazów, jak i ich metadane, gdy przekroczą to okno.",
1561
+ "days": "Retencja (dni)"
1562
+ },
1563
+ "kaizen": {
1564
+ "heading": "Agent Kaizen",
1565
+ "body": "Po zakończeniu każdego uruchomienia agent Kaizen ocenia, jak przebiegł każdy krok agenta, od płynnego i wydajnego po chaotyczny i zagmatwany, oraz rekomenduje usprawnienia promptu/modelu. Kombinacja prompt + agent + model, która pięć razy z rzędu uzyska wysoką ocenę bez rekomendacji, jest oznaczana jako zweryfikowana i nie jest już oceniana. Ocenianie działa w tle i jest pokazywane w szczegółach uruchomienia oraz na ekranie Kaizen. Ustaw model oceniającego w Konfiguracji modeli (agent \"Kaizen\").",
1566
+ "toggle": "Oceniaj uruchomienia agentów za pomocą Kaizen"
1567
+ },
1568
+ "budget": {
1569
+ "heading": "Miesięczny budżet wydatków",
1570
+ "body": "Zużycie tokenów jest mierzone na wywołanie LLM, wyceniane i ograniczane tym budżetem. Po jego osiągnięciu uruchomienia w tym obszarze roboczym są wstrzymywane, a tablica pokazuje ostrzeżenie. Pozostaw puste, aby odziedziczyć wbudowaną wartość domyślną (około 100 EUR/miesiąc).",
1571
+ "monthlyLimit": "Limit miesięczny",
1572
+ "defaultPlaceholder": "Domyślny",
1573
+ "currency": "Waluta (ISO 4217)",
1574
+ "save": "Zapisz budżet"
1575
+ },
1576
+ "toast": {
1577
+ "saved": "Ustawienia zapisane",
1578
+ "saveFailed": "Nie udało się zapisać ustawień",
1579
+ "budgetSaved": "Budżet zapisany",
1580
+ "budgetSaveFailed": "Nie udało się zapisać budżetu"
1581
+ }
1582
+ },
1583
+ "localModelEndpoints": {
1584
+ "title": "Moje lokalne runnery",
1585
+ "intro": "Skieruj agentów do modelu LLM działającego na {ownMachine} (Ollama, LM Studio, llama.cpp, vLLM lub dowolny serwer zgodny z OpenAI). Runner jest przechowywany {justForYou} (runner działa na Twoim komputerze), a włączone modele pojawiają się automatycznie w selektorze modeli. Klucz API (większość runnerów go ignoruje) jest tylko do zapisu i nigdy nie jest ponownie pokazywany.",
1586
+ "introOwnMachine": "Twoim własnym komputerze",
1587
+ "introJustForYou": "tylko dla Ciebie",
1588
+ "modelCount": "{count} model | {count} modele | {count} modeli",
1589
+ "keySet": "klucz ustawiony",
1590
+ "edit": "Edytuj",
1591
+ "editRunner": "Edytuj runner",
1592
+ "addRunner": "Dodaj runner",
1593
+ "runnerType": "Typ runnera",
1594
+ "labelOptional": "Etykieta (opcjonalnie)",
1595
+ "labelPlaceholder": "Mój {name}",
1596
+ "baseUrl": "Bazowy adres URL",
1597
+ "apiKeyOptional": "Klucz API (opcjonalnie)",
1598
+ "apiKeyKeepPlaceholder": "pozostaw puste, aby zachować zapisany klucz",
1599
+ "apiKeyIgnorePlaceholder": "większość runnerów to ignoruje",
1600
+ "testConnection": "Testuj połączenie",
1601
+ "unreachable": "Nie udało się połączyć z runnerem.",
1602
+ "reachable": "Osiągalny · {count} model | Osiągalny · {count} modele | Osiągalny · {count} modeli",
1603
+ "noModels": "Nie zgłoszono żadnych modeli.",
1604
+ "enableModels": "Włącz modele",
1605
+ "toast": {
1606
+ "saved": "Zapisano {name}",
1607
+ "saveFailed": "Nie udało się zapisać runnera",
1608
+ "removed": "Runner usunięty",
1609
+ "removeFailed": "Nie udało się usunąć runnera"
1610
+ }
1611
+ }
1122
1612
  }
1123
1613
  }