@cat-factory/app 0.195.1 → 0.196.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 (36) hide show
  1. package/app/components/board/nodes/BlockNode.vue +23 -4
  2. package/app/components/judge/JudgeResultView.vue +5 -1
  3. package/app/components/merge/MergeEffortChips.vue +5 -1
  4. package/app/components/panels/ReportsPanel.vue +5 -2
  5. package/app/components/panels/ReportsSpendBreakdown.vue +5 -1
  6. package/app/components/panels/StepEffortReport.vue +11 -2
  7. package/app/components/panels/StepFragmentAdherence.vue +7 -2
  8. package/app/components/panels/StepMetadataCard.vue +20 -1
  9. package/app/components/panels/StepRunMeta.vue +18 -0
  10. package/app/components/pipeline/EstimateThresholdFields.vue +74 -0
  11. package/app/components/pipeline/OutputBudgetInput.vue +1 -0
  12. package/app/components/pipeline/PipelineBuilder.vue +94 -96
  13. package/app/components/settings/ConsensusGroupsSection.vue +12 -3
  14. package/app/composables/api/errors.ts +7 -0
  15. package/app/composables/usePipelineErrorToast.spec.ts +119 -5
  16. package/app/composables/usePipelineErrorToast.ts +140 -10
  17. package/app/composables/useStepPromptVariant.spec.ts +75 -0
  18. package/app/composables/useStepPromptVariant.ts +50 -0
  19. package/app/stores/agents.spec.ts +30 -0
  20. package/app/stores/agents.ts +33 -1
  21. package/app/stores/pipelines/draftStepConfig.ts +24 -1
  22. package/app/stores/workspace/hydrate.ts +3 -0
  23. package/app/types/domain.ts +1 -0
  24. package/app/utils/estimateGating.spec.ts +44 -0
  25. package/app/utils/estimateGating.ts +60 -0
  26. package/i18n/locales/de.json +49 -4
  27. package/i18n/locales/en.json +58 -4
  28. package/i18n/locales/es.json +49 -4
  29. package/i18n/locales/fr.json +49 -4
  30. package/i18n/locales/he.json +49 -4
  31. package/i18n/locales/it.json +49 -4
  32. package/i18n/locales/ja.json +49 -4
  33. package/i18n/locales/pl.json +49 -4
  34. package/i18n/locales/tr.json +49 -4
  35. package/i18n/locales/uk.json +49 -4
  36. package/package.json +2 -2
@@ -376,6 +376,14 @@
376
376
  "pr_ready": "Aktywne",
377
377
  "done": "Aktywne"
378
378
  },
379
+ "statusHint": {
380
+ "planned": "Ta usługa nie ma jeszcze zadań. Usługa nigdy się nie kończy, więc to punkt wyjścia, a nie utknięcie.",
381
+ "ready": "Wszystkie zadania tej usługi są bezczynne lub scalone. Nic się nie wykonuje i nic nie czeka na Ciebie.",
382
+ "in_progress": "Co najmniej jedno zadanie tej usługi jest wykonywane lub ma otwarty pull request.",
383
+ "blocked": "Co najmniej jedno zadanie lub inicjatywa tej usługi czeka na Twoją decyzję.",
384
+ "pr_ready": "Co najmniej jedno zadanie tej usługi jest wykonywane lub ma otwarty pull request.",
385
+ "done": "Wszystkie zadania tej usługi są bezczynne lub scalone. Nic się nie wykonuje i nic nie czeka na Ciebie."
386
+ },
379
387
  "shared": "Współdzielone",
380
388
  "sharedTitle": "Współdzielone między obszarami roboczymi tej organizacji",
381
389
  "bootstrapping": "Inicjalizacja…",
@@ -468,6 +476,22 @@
468
476
  "importsOnAdd": "importowane przy dodaniu"
469
477
  },
470
478
  "errors": {
479
+ "generic": {
480
+ "showDetail": "Pokaż szczegóły",
481
+ "requestId": "Identyfikator żądania {id}",
482
+ "description": {
483
+ "not_found": "To, do czego odnosi się ta akcja, już nie istnieje. Odśwież stronę, aby zobaczyć aktualny stan.",
484
+ "validation": "Serwer odrzucił to żądanie jako nieprawidłowe. Sprawdź wprowadzone wartości i spróbuj ponownie.",
485
+ "credential_required": "Ta akcja wymaga osobistych danych uwierzytelniających, które nie są odblokowane. Odblokuj lub połącz ponownie swoją subskrypcję, a potem spróbuj ponownie.",
486
+ "forbidden": "Twoja rola w tej przestrzeni roboczej nie pozwala na tę akcję. Poproś administratora przestrzeni roboczej, aby ją wykonał lub rozszerzył twoją rolę.",
487
+ "unavailable": "W tym wdrożeniu nie skonfigurowano funkcji wymaganej przez tę akcję. Poproś operatora wdrożenia o jej skonfigurowanie.",
488
+ "unauthorized": "Twoja sesja straciła ważność. Zaloguj się ponownie i spróbuj jeszcze raz.",
489
+ "rate_limited": "Zbyt wiele żądań w krótkim czasie. Odczekaj chwilę i spróbuj ponownie.",
490
+ "internal": "Na serwerze wystąpił błąd. Spróbuj ponownie, a jeśli problem się powtarza, przekaż szczegóły operatorowi wdrożenia.",
491
+ "network": "Nie udało się połączyć z serwerem. Sprawdź połączenie i spróbuj ponownie.",
492
+ "unexpected": "Serwer zwrócił nieoczekiwaną odpowiedź. Spróbuj ponownie, a jeśli problem się powtarza, przekaż szczegóły operatorowi wdrożenia."
493
+ }
494
+ },
471
495
  "action": {
472
496
  "retryFailed": "Ponowienie nie powiodło się",
473
497
  "startFailed": "Nie udało się uruchomić",
@@ -1235,6 +1259,7 @@
1235
1259
  "spinningUpContainer": "Uruchamianie kontenera…",
1236
1260
  "subtasks": "Podzadania · {completed}/{total}",
1237
1261
  "standardsApplied": "Zastosowane standardy",
1262
+ "standardsAppliedHint": "Standardy dobrych praktyk wplecione w prompt systemowy tego kroku. Agent wykonawczy dostaje skróconą wersję każdego z nich, a recenzenci i planiści pełny tekst.",
1238
1263
  "decision": "Decyzja",
1239
1264
  "awaitingChoice": "Oczekiwanie na wybór człowieka",
1240
1265
  "approvalGate": "Bramka zatwierdzenia",
@@ -1271,7 +1296,11 @@
1271
1296
  "url": "Adres",
1272
1297
  "copyId": "Kopiuj id kontenera",
1273
1298
  "copyUrl": "Kopiuj adres"
1274
- }
1299
+ },
1300
+ "promptVariant": "Wariant promptu",
1301
+ "promptVariantAdditionOnly": "Zastosowano tylko dodatek tego wariantu. Prompt przestrzeni roboczej dla tego agenta zastąpił jego tekst bazowy.",
1302
+ "promptVariantSuperseded": "Ten wariant nie został zastosowany. Prompt przestrzeni roboczej dla tego agenta miał pierwszeństwo.",
1303
+ "promptVariantWithdrawn": "Ten wariant nie jest już zarejestrowany, więc krok wykonał się na wbudowanym promptcie."
1275
1304
  },
1276
1305
  "stepDetail": {
1277
1306
  "contents": "Zawartość",
@@ -1321,13 +1350,16 @@
1321
1350
  "effort": {
1322
1351
  "heading": "Wysiłek agenta",
1323
1352
  "difficulty": "Trudność",
1353
+ "difficultyHint": "Własna ocena agenta, jak trudny był ten krok, w skali do dziesięciu. Deklaracja agenta, a nie pomiar.",
1324
1354
  "outOfTen": "{value}/10",
1325
1355
  "reduced": "Co obniżyło skuteczność",
1326
1356
  "obstacles": "Kluczowe przeszkody"
1327
1357
  },
1328
1358
  "adherence": {
1329
1359
  "heading": "Zgodność z najlepszymi praktykami",
1360
+ "headingHint": "Standardy dobrych praktyk wplecione w prompt tego recenzenta oraz to, jak ściśle jego zdaniem zmiana trzyma się każdego z nich.",
1330
1361
  "outOfTen": "{value}/10",
1362
+ "ratingHint": "Własna ocena recenzenta, jak ściśle zmiana trzyma się tego standardu, w skali do dziesięciu. Deklaracja recenzenta, a nie pomiar.",
1331
1363
  "relatedFindings": "Powiązane ustalenia",
1332
1364
  "unnamed": "Standard"
1333
1365
  },
@@ -1599,7 +1631,9 @@
1599
1631
  },
1600
1632
  "legend": {
1601
1633
  "metered": "Rozliczane",
1602
- "subscription": "Subskrypcja"
1634
+ "meteredHint": "Rozliczane przez dostawcę za tokeny. To realne pieniądze.",
1635
+ "subscription": "Subskrypcja",
1636
+ "subscriptionHint": "Tylko poglądowo. Te wywołania przebiegły w planie ryczałtowym, więc kwota pokazuje, ile te same tokeny kosztowałyby przez rozliczane API. Nigdy nie została zafakturowana i nie liczy się jako wydatek."
1603
1637
  },
1604
1638
  "spend": {
1605
1639
  "byModel": "Koszty według modelu",
@@ -3921,9 +3955,14 @@
3921
3955
  "companionGateTooltip": "Uruchamiaj tego towarzysza tylko, gdy szacunek zadania przekroczy próg (wymaga wcześniejszego Task Estimatora)",
3922
3956
  "consensusGateTooltip": "Uruchamiaj konsensus tylko, gdy szacunek zadania przekroczy próg (w przeciwnym razie uruchamia się standardowy agent)",
3923
3957
  "runWhenAny": "uruchom, gdy (którekolwiek):",
3958
+ "gatingRunWhenAnyHint": "Krok uruchamia się, gdy którakolwiek z tych osi zostanie osiągnięta lub przekroczona, a w przeciwnym razie jest pomijany. Gdy brak szacunku, uruchamia się mimo to.",
3959
+ "gatingRunWhenAnyConsensusHint": "Panel zbiera się, gdy którakolwiek z tych osi zostanie osiągnięta lub przekroczona; poniżej uruchamia się pojedynczy agent. Gdy brak szacunku, panel zbiera się mimo to.",
3924
3960
  "complexityThreshold": "złożoność ≥",
3961
+ "complexityThresholdHint": "Jak trudne jest wykonanie pracy, ocenione przez Task Estimatora wcześniej w pipelinie. Skala to 0 do 1, a nie 1 do 10. Zostaw puste, aby pominąć tę oś.",
3925
3962
  "riskThreshold": "ryzyko ≥",
3963
+ "riskThresholdHint": "Jak wiele zmiana może zepsuć, ocenione przez Task Estimatora wcześniej w pipelinie. Skala to 0 do 1, a nie 1 do 10. Zostaw puste, aby pominąć tę oś.",
3926
3964
  "impactThreshold": "wpływ ≥",
3965
+ "impactThresholdHint": "Jak daleko zmiana sięga w systemie, ocenione przez Task Estimatora wcześniej w pipelinie. Skala to 0 do 1, a nie 1 do 10. Zostaw puste, aby pominąć tę oś.",
3927
3966
  "strategy": "Strategia",
3928
3967
  "rounds": "Rundy",
3929
3968
  "purposeLabel": "Cel",
@@ -3995,7 +4034,9 @@
3995
4034
  "consensusGroups": "Grupy konsensusu",
3996
4035
  "consensusGroupsHint": "Wybierz wielokrotnego użytku panele, do których ten krok może eskalować. Każdy ma własny próg oszacowania; uruchamia się najbardziej wymagający, który zadanie przekroczy.",
3997
4036
  "consensusGroupsActive": "Ten krok uruchamia wybraną grupę. Odznacz wszystkie grupy, aby skonfigurować uczestników tutaj.",
3998
- "consensusGroupAlways": "zawsze"
4037
+ "consensusGroupAlways": "zawsze",
4038
+ "variantLabel": "Wariant promptu",
4039
+ "variantShipped": "Prompt wbudowany"
3999
4040
  },
4000
4041
  "progress": {
4001
4042
  "status": {
@@ -4078,6 +4119,7 @@
4078
4119
  "stepLabel": "Budżet wyjścia",
4079
4120
  "kindLabel": "Budżet wyjścia",
4080
4121
  "kindHint": "Dotyczy każdego uruchomienia tego agenta. Krok pipeline'u może to nadpisać.",
4122
+ "hint": "Maksymalna długość pojedynczej odpowiedzi tego agenta. Puste pole dziedziczy wartość z wyższego poziomu, a nie znosi limitu. Wartość ustawiona na kroku pipeline'u ma pierwszeństwo przed domyślną wartością obszaru roboczego.",
4081
4123
  "inherits": "Odziedziczone",
4082
4124
  "inheritsValue": "Odziedziczone ({tokens})"
4083
4125
  }
@@ -4207,6 +4249,7 @@
4207
4249
  "empty": "Ten krok nie wydał jeszcze werdyktu.",
4208
4250
  "notScored": "Bez oceny",
4209
4251
  "threshold": "próg {threshold}",
4252
+ "thresholdHint": "Wynik, który ten krok musiał osiągnąć, wzięty z polityki scalania zadania. Poniżej sędzia odsyła pracę do kroku, który ją wytworzył, przekazując swoje uwagi do poprawy, albo wstrzymuje przebieg i czeka na Ciebie, gdy skończy się budżet prób.",
4210
4253
  "rubricOverridden": "rubryka przestrzeni roboczej",
4211
4254
  "reworkRounds": "poprawki {spent}/{budget}",
4212
4255
  "findingsHeading": "Co zgłosiła rubryka",
@@ -5804,10 +5847,12 @@
5804
5847
  "config": "Konfiguracja i CI",
5805
5848
  "source": "Kod źródłowy",
5806
5849
  "schema": "Schemat i migracje",
5807
- "unknown": "Niesklasyfikowane"
5850
+ "unknown": "Niesklasyfikowane",
5851
+ "hint": "Czego dotknęła zmiana, ustalone na podstawie zmienionych plików. Polityka scalania może mieć własną regułę dla każdej klasy, a zmiana obejmująca kilka klas liczy się jako najcięższa z nich."
5808
5852
  },
5809
5853
  "effort": {
5810
5854
  "prompt": "Nakład przeglądu",
5855
+ "promptHint": "Zapisuje, ile przeglądu naprawdę wymagał ten pull request. Twoja odpowiedź jest punktem odniesienia, względem którego kalibrowane są progi automatycznego scalania. Oznaczanie jest opcjonalne i możesz scalić bez niego.",
5811
5856
  "none": "Bez uwag",
5812
5857
  "minor": "Drobne uwagi",
5813
5858
  "major": "Istotne przeróbki",
@@ -376,6 +376,14 @@
376
376
  "pr_ready": "Etkin",
377
377
  "done": "Canlı"
378
378
  },
379
+ "statusHint": {
380
+ "planned": "Bu hizmette henüz görev yok. Bir hizmet hiçbir zaman bitmez, dolayısıyla bu takılmış bir durum değil, başlangıç noktasıdır.",
381
+ "ready": "Bu hizmetin altındaki tüm görevler boşta ya da birleştirilmiş. Çalışan bir şey yok ve sizi bekleyen bir şey yok.",
382
+ "in_progress": "Bu hizmetin altındaki en az bir görev çalışıyor ya da açık bir pull request'i var.",
383
+ "blocked": "Bu hizmetin altındaki en az bir görev veya girişim sizden bir karar bekliyor.",
384
+ "pr_ready": "Bu hizmetin altındaki en az bir görev çalışıyor ya da açık bir pull request'i var.",
385
+ "done": "Bu hizmetin altındaki tüm görevler boşta ya da birleştirilmiş. Çalışan bir şey yok ve sizi bekleyen bir şey yok."
386
+ },
379
387
  "shared": "Paylaşılan",
380
388
  "sharedTitle": "Bu organizasyondaki çalışma alanları arasında paylaşılan",
381
389
  "bootstrapping": "Bootstrap yapılıyor…",
@@ -468,6 +476,22 @@
468
476
  "importsOnAdd": "eklendiğinde içe aktarılır"
469
477
  },
470
478
  "errors": {
479
+ "generic": {
480
+ "showDetail": "Ayrıntıları göster",
481
+ "requestId": "İstek kimliği {id}",
482
+ "description": {
483
+ "not_found": "Bu eylemin işaret ettiği şey artık yok. Güncel durumu görmek için sayfayı yeniden yükle.",
484
+ "validation": "Sunucu bu isteği geçersiz olduğu için reddetti. Girdiğin değerleri kontrol et, ardından yeniden dene.",
485
+ "credential_required": "Bu eylem, kilidi açılmamış kişisel bir kimlik bilgisi gerektiriyor. Aboneliğinin kilidini aç veya yeniden bağla, ardından tekrar dene.",
486
+ "forbidden": "Bu çalışma alanındaki rolün bu eyleme izin vermiyor. Bir çalışma alanı yöneticisinden bunu yapmasını veya rolünü yükseltmesini iste.",
487
+ "unavailable": "Bu dağıtımda bu eylemin gerektirdiği yetenek yapılandırılmamış. Dağıtım yöneticisinden yapılandırmasını iste.",
488
+ "unauthorized": "Oturumun artık geçerli değil. Yeniden oturum aç, ardından tekrar dene.",
489
+ "rate_limited": "Kısa sürede çok fazla istek yapıldı. Biraz bekle, ardından yeniden dene.",
490
+ "internal": "Sunucuda bir hata oluştu. Yeniden dene; sorun sürerse ayrıntıları dağıtım yöneticisiyle paylaş.",
491
+ "network": "Sunucuya ulaşılamadı. Bağlantını kontrol et, ardından yeniden dene.",
492
+ "unexpected": "Sunucu beklenmeyen bir yanıt döndürdü. Yeniden dene; sorun sürerse ayrıntıları dağıtım yöneticisiyle paylaş."
493
+ }
494
+ },
471
495
  "action": {
472
496
  "retryFailed": "Yeniden deneme başarısız oldu",
473
497
  "startFailed": "Başlatılamadı",
@@ -1254,6 +1278,7 @@
1254
1278
  },
1255
1279
  "subtasks": "Alt görevler · {completed}/{total}",
1256
1280
  "standardsApplied": "Uygulanan standartlar",
1281
+ "standardsAppliedHint": "Bu adımın sistem istemine eklenen iyi uygulama standartları. Uygulayan bir ajan her birinin kısaltılmış sürümünü alır; gözden geçirenler ve planlayıcılar tam metni alır.",
1257
1282
  "decision": "Karar",
1258
1283
  "awaitingChoice": "Bir kullanıcı seçimi bekleniyor",
1259
1284
  "approvalGate": "Onay kapısı",
@@ -1271,7 +1296,11 @@
1271
1296
  "approved": "Onaylandı",
1272
1297
  "changes_requested": "Değişiklik istendi",
1273
1298
  "rejected": "Reddedildi"
1274
- }
1299
+ },
1300
+ "promptVariant": "İstem varyantı",
1301
+ "promptVariantAdditionOnly": "Bu varyantın yalnızca eklentisi uygulandı. Bu ajan için çalışma alanı istemi, temel metnini değiştirdi.",
1302
+ "promptVariantSuperseded": "Bu varyant uygulanmadı. Bu ajan için çalışma alanı istemi öncelik kazandı.",
1303
+ "promptVariantWithdrawn": "Bu varyant artık kayıtlı değil, bu nedenle adım varsayılan istemle çalıştı."
1275
1304
  },
1276
1305
  "stepDetail": {
1277
1306
  "contents": "İçerik",
@@ -1321,13 +1350,16 @@
1321
1350
  "effort": {
1322
1351
  "heading": "Aracı eforu",
1323
1352
  "difficulty": "Zorluk",
1353
+ "difficultyHint": "Bu adımın ne kadar zor olduğuna dair ajanın kendi değerlendirmesi, on üzerinden. Ölçülmüş değil, ajanın kendi beyanı.",
1324
1354
  "outOfTen": "{value}/10",
1325
1355
  "reduced": "Etkinliği azaltan etkenler",
1326
1356
  "obstacles": "Başlıca engeller"
1327
1357
  },
1328
1358
  "adherence": {
1329
1359
  "heading": "En iyi uygulamalara uyum",
1360
+ "headingHint": "Bu gözden geçirenin istemine eklenen iyi uygulama standartları ve değişikliğin her birine ne kadar uyduğuna dair değerlendirmesi.",
1330
1361
  "outOfTen": "{value}/10",
1362
+ "ratingHint": "Değişikliğin bu standarda ne kadar uyduğuna dair gözden geçirenin kendi puanı, on üzerinden. Ölçülmüş değil, kendi beyanı.",
1331
1363
  "relatedFindings": "İlgili bulgular",
1332
1364
  "unnamed": "Standart"
1333
1365
  },
@@ -1599,7 +1631,9 @@
1599
1631
  },
1600
1632
  "legend": {
1601
1633
  "metered": "Ölçümlü",
1602
- "subscription": "Abonelik"
1634
+ "meteredHint": "Sağlayıcı tarafından token başına faturalandırılır. Bu gerçek paradır.",
1635
+ "subscription": "Abonelik",
1636
+ "subscriptionHint": "Yalnızca gösterge amaçlıdır. Bu çağrılar sabit ücretli bir planda çalıştı; bu tutar aynı tokenların ölçümlü bir API üzerinden ne tutacağını gösterir. Hiçbir zaman faturalandırılmadı ve harcama olarak sayılmaz."
1603
1637
  },
1604
1638
  "spend": {
1605
1639
  "byModel": "Modele göre harcama",
@@ -3933,9 +3967,14 @@
3933
3967
  "companionGateTooltip": "Bu eşlikçiyi yalnızca görev tahmini bir eşiği aştığında çalıştır (daha önce bir Görev Tahmincisi gerekir)",
3934
3968
  "consensusGateTooltip": "Fikir birliğini yalnızca görev tahmini bir eşiği aştığında çalıştır (aksi halde standart ajan çalışır)",
3935
3969
  "runWhenAny": "şu durumda çalıştır (herhangi biri):",
3970
+ "gatingRunWhenAnyHint": "Bu eksenlerden herhangi biri eşiğe ulaştığında veya aştığında adım çalışır, aksi halde atlanır. Tahmin yoksa yine de çalışır.",
3971
+ "gatingRunWhenAnyConsensusHint": "Bu eksenlerden herhangi biri eşiğe ulaştığında veya aştığında panel toplanır; altında ise tek ajan çalışır. Tahmin yoksa panel yine de toplanır.",
3936
3972
  "complexityThreshold": "karmaşıklık ≥",
3973
+ "complexityThresholdHint": "İşin yapılmasının ne kadar zor olduğu; pipeline'da daha önce yer alan Görev Tahmincisi tarafından puanlanır. Ölçek 1-10 değil, 0-1 arasıdır. Bu ekseni yok saymak için boş bırakın.",
3937
3974
  "riskThreshold": "risk ≥",
3975
+ "riskThresholdHint": "Değişikliğin ne kadar şeyi bozabileceği; pipeline'da daha önce yer alan Görev Tahmincisi tarafından puanlanır. Ölçek 1-10 değil, 0-1 arasıdır. Bu ekseni yok saymak için boş bırakın.",
3938
3976
  "impactThreshold": "etki ≥",
3977
+ "impactThresholdHint": "Değişikliğin sistem genelinde ne kadar yayıldığı; pipeline'da daha önce yer alan Görev Tahmincisi tarafından puanlanır. Ölçek 1-10 değil, 0-1 arasıdır. Bu ekseni yok saymak için boş bırakın.",
3939
3978
  "strategy": "Strateji",
3940
3979
  "rounds": "Tur",
3941
3980
  "purposeLabel": "Amaç",
@@ -4007,7 +4046,9 @@
4007
4046
  "consensusGroups": "Uzlaşı grupları",
4008
4047
  "consensusGroupsHint": "Bu adımın yükselebileceği yeniden kullanılabilir panelleri seç. Her birinin kendi tahmin eşiği vardır; görevin aştığı en zorlu olan çalışır.",
4009
4048
  "consensusGroupsActive": "Bu adım seçili grubu çalıştırır. Katılımcıları burada ayarlamak için tüm grupların seçimini kaldır.",
4010
- "consensusGroupAlways": "her zaman"
4049
+ "consensusGroupAlways": "her zaman",
4050
+ "variantLabel": "İstem varyantı",
4051
+ "variantShipped": "Varsayılan istem"
4011
4052
  },
4012
4053
  "progress": {
4013
4054
  "status": {
@@ -4090,6 +4131,7 @@
4090
4131
  "stepLabel": "Çıktı bütçesi",
4091
4132
  "kindLabel": "Çıktı bütçesi",
4092
4133
  "kindHint": "Bu ajanın her çalışmasına uygulanır. Bir pipeline adımı bunu geçersiz kılabilir.",
4134
+ "hint": "Bu ajanın tek bir yanıtının ulaşabileceği üst sınır. Boş bırakmak sınırı kaldırmaz, bir üst seviyeden devralır. Pipeline adımının kendi değeri çalışma alanı varsayılanını geçersiz kılar.",
4093
4135
  "inherits": "Devralındı",
4094
4136
  "inheritsValue": "Devralındı ({tokens})"
4095
4137
  }
@@ -4219,6 +4261,7 @@
4219
4261
  "empty": "Bu adım henüz bir karar üretmedi.",
4220
4262
  "notScored": "Puanlanmadı",
4221
4263
  "threshold": "eşik {threshold}",
4264
+ "thresholdHint": "Bu adımın ulaşması gereken puan; görevin birleştirme politikasından alınır. Altında kaldığında hakem, bulgularını yeniden çalışma olarak ekleyip işi üreten adıma geri gönderir; deneme bütçesi kalmadıysa çalıştırmayı sizin için beklemeye alır.",
4222
4265
  "rubricOverridden": "çalışma alanı ölçütü",
4223
4266
  "reworkRounds": "yeniden çalışma {spent}/{budget}",
4224
4267
  "findingsHeading": "Ölçütün işaretledikleri",
@@ -5816,10 +5859,12 @@
5816
5859
  "config": "Yapılandırma ve CI",
5817
5860
  "source": "Kaynak kodu",
5818
5861
  "schema": "Şema ve geçişler",
5819
- "unknown": "Sınıflandırılmamış"
5862
+ "unknown": "Sınıflandırılmamış",
5863
+ "hint": "Değişen dosyalardan çıkarılan, bu farkın neye dokunduğu. Birleştirme politikası her sınıf için ayrı kural tanımlayabilir; birden çok sınıfa yayılan bir fark en ağır sınıfa göre değerlendirilir."
5820
5864
  },
5821
5865
  "effort": {
5822
5866
  "prompt": "İnceleme eforu",
5867
+ "promptHint": "Bu pull request'in gerçekte ne kadar incelemeye ihtiyaç duyduğunu kaydeder. Yanıtınız, otomatik birleştirme eşiklerinin kalibre edildiği referanstır. Etiketleme isteğe bağlıdır ve etiketlemeden de birleştirebilirsiniz.",
5823
5868
  "none": "Yorum yok",
5824
5869
  "minor": "Küçük notlar",
5825
5870
  "major": "Ciddi yeniden çalışma",
@@ -376,6 +376,14 @@
376
376
  "pr_ready": "Активно",
377
377
  "done": "Активно"
378
378
  },
379
+ "statusHint": {
380
+ "planned": "У цього сервісу ще немає завдань. Сервіс ніколи не завершується, тож це початок, а не застій.",
381
+ "ready": "Усі завдання цього сервісу простоюють або злиті. Нічого не виконується і нічого не чекає на вас.",
382
+ "in_progress": "Принаймні одне завдання цього сервісу виконується або має відкритий пул-реквест.",
383
+ "blocked": "Принаймні одне завдання чи ініціатива цього сервісу очікує на ваше рішення.",
384
+ "pr_ready": "Принаймні одне завдання цього сервісу виконується або має відкритий пул-реквест.",
385
+ "done": "Усі завдання цього сервісу простоюють або злиті. Нічого не виконується і нічого не чекає на вас."
386
+ },
379
387
  "shared": "Спільне",
380
388
  "sharedTitle": "Спільне для робочих просторів цієї організації",
381
389
  "bootstrapping": "Ініціалізація…",
@@ -468,6 +476,22 @@
468
476
  "importsOnAdd": "імпортується при додаванні"
469
477
  },
470
478
  "errors": {
479
+ "generic": {
480
+ "showDetail": "Показати деталі",
481
+ "requestId": "Ідентифікатор запиту {id}",
482
+ "description": {
483
+ "not_found": "Те, на що посилається ця дія, більше не існує. Перезавантаж сторінку, щоб побачити поточний стан.",
484
+ "validation": "Сервер відхилив цей запит як недійсний. Перевір введені значення та спробуй ще раз.",
485
+ "credential_required": "Ця дія потребує особистих облікових даних, які не розблоковано. Розблокуй або повторно під'єднай свою підписку, а потім спробуй ще раз.",
486
+ "forbidden": "Твоя роль у цьому робочому просторі не дозволяє цю дію. Попроси адміністратора робочого простору виконати її або розширити твою роль.",
487
+ "unavailable": "У цьому розгортанні не налаштовано можливість, потрібну для цієї дії. Попроси оператора розгортання її налаштувати.",
488
+ "unauthorized": "Твоя сесія більше не діє. Увійди знову, а потім спробуй ще раз.",
489
+ "rate_limited": "Занадто багато запитів за короткий час. Зачекай трохи та спробуй ще раз.",
490
+ "internal": "На сервері виникла помилка. Спробуй ще раз, а якщо проблема повторюється, передай деталі оператору розгортання.",
491
+ "network": "Не вдалося зв'язатися із сервером. Перевір з'єднання та спробуй ще раз.",
492
+ "unexpected": "Сервер повернув неочікувану відповідь. Спробуй ще раз, а якщо проблема повторюється, передай деталі оператору розгортання."
493
+ }
494
+ },
471
495
  "action": {
472
496
  "retryFailed": "Не вдалося повторити",
473
497
  "startFailed": "Не вдалося запустити",
@@ -1235,6 +1259,7 @@
1235
1259
  "spinningUpContainer": "Запуск контейнера…",
1236
1260
  "subtasks": "Підзавдання · {completed}/{total}",
1237
1261
  "standardsApplied": "Застосовані стандарти",
1262
+ "standardsAppliedHint": "Стандарти найкращих практик, вплетені в системний промпт цього кроку. Агент-виконавець отримує скорочену версію кожного, а рецензенти й планувальники — повний текст.",
1238
1263
  "decision": "Рішення",
1239
1264
  "awaitingChoice": "Очікування вибору людини",
1240
1265
  "approvalGate": "Гейт затвердження",
@@ -1271,7 +1296,11 @@
1271
1296
  "url": "Адреса",
1272
1297
  "copyId": "Копіювати id контейнера",
1273
1298
  "copyUrl": "Копіювати адресу"
1274
- }
1299
+ },
1300
+ "promptVariant": "Варіант промпту",
1301
+ "promptVariantAdditionOnly": "Застосовано лише доповнення цього варіанта. Промпт робочого простору для цього агента замінив його базовий текст.",
1302
+ "promptVariantSuperseded": "Цей варіант не застосовано. Промпт робочого простору для цього агента мав пріоритет.",
1303
+ "promptVariantWithdrawn": "Цей варіант більше не зареєстрований, тому крок виконано з вбудованим промптом."
1275
1304
  },
1276
1305
  "stepDetail": {
1277
1306
  "contents": "Зміст",
@@ -1321,13 +1350,16 @@
1321
1350
  "effort": {
1322
1351
  "heading": "Зусилля агента",
1323
1352
  "difficulty": "Складність",
1353
+ "difficultyHint": "Власна оцінка агента, наскільки складним був цей крок, за десятибальною шкалою. Це самозвіт, а не вимірювання.",
1324
1354
  "outOfTen": "{value}/10",
1325
1355
  "reduced": "Що знизило ефективність",
1326
1356
  "obstacles": "Основні перешкоди"
1327
1357
  },
1328
1358
  "adherence": {
1329
1359
  "heading": "Дотримання найкращих практик",
1360
+ "headingHint": "Стандарти найкращих практик, вплетені в промпт цього рецензента, і наскільки, на його думку, зміна відповідає кожному з них.",
1330
1361
  "outOfTen": "{value}/10",
1362
+ "ratingHint": "Власна оцінка рецензента, наскільки зміна відповідає цьому стандарту, за десятибальною шкалою. Це самозвіт, а не вимірювання.",
1331
1363
  "relatedFindings": "Пов’язані зауваження",
1332
1364
  "unnamed": "Стандарт"
1333
1365
  },
@@ -1599,7 +1631,9 @@
1599
1631
  },
1600
1632
  "legend": {
1601
1633
  "metered": "Оплачені",
1602
- "subscription": "Підписка"
1634
+ "meteredHint": "Оплачується постачальником за токени. Це реальні гроші.",
1635
+ "subscription": "Підписка",
1636
+ "subscriptionHint": "Лише для орієнтиру. Ці виклики виконано за тарифом із фіксованою платою, тож сума показує, скільки ті самі токени коштували б через API з погодинною тарифікацією. Її ніколи не виставляли до сплати і не зараховують як витрати."
1603
1637
  },
1604
1638
  "spend": {
1605
1639
  "byModel": "Витрати за моделлю",
@@ -3921,9 +3955,14 @@
3921
3955
  "companionGateTooltip": "Запускати цього супутника лише коли оцінка завдання перевищує поріг (потребує Task Estimator раніше)",
3922
3956
  "consensusGateTooltip": "Запускати консенсус лише коли оцінка завдання перевищує поріг (інакше запускається стандартний агент)",
3923
3957
  "runWhenAny": "запускати, коли (будь-що):",
3958
+ "gatingRunWhenAnyHint": "Крок виконується, коли будь-яка з цих осей досягає порога або перевищує його, інакше пропускається. Якщо оцінки немає, крок усе одно виконується.",
3959
+ "gatingRunWhenAnyConsensusHint": "Панель збирається, коли будь-яка з цих осей досягає порога або перевищує його; нижче замість неї працює один агент. Якщо оцінки немає, панель збирається все одно.",
3924
3960
  "complexityThreshold": "складність ≥",
3961
+ "complexityThresholdHint": "Наскільки складно виконати роботу, за оцінкою Task Estimator раніше в пайплайні. Шкала від 0 до 1, а не від 1 до 10. Залиште порожнім, щоб ігнорувати цю вісь.",
3925
3962
  "riskThreshold": "ризик ≥",
3963
+ "riskThresholdHint": "Наскільки зміна може щось зламати, за оцінкою Task Estimator раніше в пайплайні. Шкала від 0 до 1, а не від 1 до 10. Залиште порожнім, щоб ігнорувати цю вісь.",
3926
3964
  "impactThreshold": "вплив ≥",
3965
+ "impactThresholdHint": "Наскільки далеко зміна сягає в системі, за оцінкою Task Estimator раніше в пайплайні. Шкала від 0 до 1, а не від 1 до 10. Залиште порожнім, щоб ігнорувати цю вісь.",
3927
3966
  "strategy": "Стратегія",
3928
3967
  "rounds": "Раунди",
3929
3968
  "purposeLabel": "Призначення",
@@ -3995,7 +4034,9 @@
3995
4034
  "consensusGroups": "Групи консенсусу",
3996
4035
  "consensusGroupsHint": "Виберіть багаторазові панелі, до яких цей крок може підвищитися. Кожна має власний поріг оцінки; виконується найвимогливіша, яку завдання долає.",
3997
4036
  "consensusGroupsActive": "Цей крок виконує вибрану групу. Зніміть вибір з усіх груп, щоб налаштувати учасників тут.",
3998
- "consensusGroupAlways": "завжди"
4037
+ "consensusGroupAlways": "завжди",
4038
+ "variantLabel": "Варіант промпту",
4039
+ "variantShipped": "Вбудований промпт"
3999
4040
  },
4000
4041
  "progress": {
4001
4042
  "status": {
@@ -4078,6 +4119,7 @@
4078
4119
  "stepLabel": "Бюджет виводу",
4079
4120
  "kindLabel": "Бюджет виводу",
4080
4121
  "kindHint": "Застосовується до кожного запуску цього агента. Крок пайплайну може це перевизначити.",
4122
+ "hint": "Максимум для однієї відповіді цього агента. Порожнє поле успадковує значення з вищого рівня, а не знімає обмеження. Значення кроку пайплайна має перевагу над типовим значенням робочого простору.",
4081
4123
  "inherits": "Успадковано",
4082
4124
  "inheritsValue": "Успадковано ({tokens})"
4083
4125
  }
@@ -4207,6 +4249,7 @@
4207
4249
  "empty": "Цей крок ще не видав вердикту.",
4208
4250
  "notScored": "Без оцінки",
4209
4251
  "threshold": "поріг {threshold}",
4252
+ "thresholdHint": "Оцінка, якої мав досягти цей крок, узята з політики злиття завдання. Нижче за неї суддя повертає роботу до кроку, що її створив, разом зі своїми зауваженнями на доопрацювання, або ставить запуск на паузу для вас, коли бюджет спроб вичерпано.",
4210
4253
  "rubricOverridden": "рубрика робочого простору",
4211
4254
  "reworkRounds": "доопрацювання {spent}/{budget}",
4212
4255
  "findingsHeading": "Що позначила рубрика",
@@ -5804,10 +5847,12 @@
5804
5847
  "config": "Конфігурація та CI",
5805
5848
  "source": "Вихідний код",
5806
5849
  "schema": "Схема та міграції",
5807
- "unknown": "Не класифіковано"
5850
+ "unknown": "Не класифіковано",
5851
+ "hint": "Чого торкнувся діф, визначено за зміненими файлами. Політика злиття може мати власне правило для кожного класу, а діф, що охоплює кілька класів, зараховується за найважчим із них."
5808
5852
  },
5809
5853
  "effort": {
5810
5854
  "prompt": "Обсяг рецензування",
5855
+ "promptHint": "Фіксує, скільки рецензування насправді знадобилося цьому пул-реквесту. Ваша відповідь — еталон, за яким калібрують пороги автоматичного злиття. Позначення необов'язкове, і ви можете злити без нього.",
5811
5856
  "none": "Без зауважень",
5812
5857
  "minor": "Незначні зауваження",
5813
5858
  "major": "Суттєве перероблення",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.195.1",
3
+ "version": "0.196.0",
4
4
  "description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -40,7 +40,7 @@
40
40
  "valibot": "^1.4.2",
41
41
  "vue": "3.5.40",
42
42
  "wretch": "^3.0.9",
43
- "@cat-factory/contracts": "0.202.0"
43
+ "@cat-factory/contracts": "0.203.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",