@cat-factory/app 0.46.10 → 0.46.12

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 (48) hide show
  1. package/app/components/auth/AuthGate.vue +2 -1
  2. package/app/components/auth/LoginScreen.vue +41 -31
  3. package/app/components/auth/ResetPasswordScreen.vue +16 -13
  4. package/app/components/auth/UserMenu.vue +3 -2
  5. package/app/components/layout/AccountDeploymentSettings.vue +75 -32
  6. package/app/components/layout/AccountFragmentSettings.vue +2 -3
  7. package/app/components/layout/AccountTeamSettings.vue +75 -45
  8. package/app/components/layout/AiProvidersBanner.vue +11 -11
  9. package/app/components/layout/BoardSwitcher.vue +63 -29
  10. package/app/components/layout/CommandBar.vue +68 -54
  11. package/app/components/layout/GitHubPatBanner.vue +13 -6
  12. package/app/components/layout/IntegrationBackTitle.vue +4 -1
  13. package/app/components/layout/IntegrationsHub.vue +67 -49
  14. package/app/components/layout/NotificationsInbox.vue +48 -19
  15. package/app/components/layout/PersonalSetupModal.vue +26 -16
  16. package/app/components/layout/ProviderConfigBanner.vue +14 -9
  17. package/app/components/layout/SideBar.vue +20 -18
  18. package/app/components/layout/SpendWarningBanner.vue +16 -16
  19. package/app/components/observability/StepMetricsBar.vue +31 -11
  20. package/app/components/observability/StepModelActivity.vue +3 -2
  21. package/app/components/panels/AgentStepDetail.vue +52 -39
  22. package/app/components/panels/DecisionModal.vue +12 -5
  23. package/app/components/panels/GenericStructuredResultView.vue +16 -6
  24. package/app/components/panels/InspectorPanel.vue +35 -28
  25. package/app/components/panels/ObservabilityPanel.vue +92 -49
  26. package/app/components/panels/StepMetadataCard.vue +87 -30
  27. package/app/components/panels/StepRestartControl.vue +4 -3
  28. package/app/components/panels/StepRunMeta.vue +23 -10
  29. package/app/components/panels/StepTestReport.vue +14 -11
  30. package/app/components/panels/inspector/ContainerSummary.vue +25 -14
  31. package/app/components/panels/inspector/EpicChildren.vue +7 -4
  32. package/app/components/panels/inspector/RecurringScheduleSettings.vue +60 -19
  33. package/app/components/panels/inspector/ServiceFragments.vue +3 -2
  34. package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +18 -13
  35. package/app/components/panels/inspector/ServiceTestConfig.vue +50 -39
  36. package/app/components/panels/inspector/TaskAgentConfig.vue +6 -5
  37. package/app/components/panels/inspector/TaskDependencies.vue +9 -4
  38. package/app/components/panels/inspector/TaskEstimateBadge.vue +14 -13
  39. package/app/components/panels/inspector/TaskExecution.vue +65 -31
  40. package/app/components/panels/inspector/TaskRunSettings.vue +93 -56
  41. package/app/components/panels/inspector/TaskStructure.vue +5 -4
  42. package/app/components/providers/PersonalSubscriptionSection.vue +1 -2
  43. package/i18n/locales/en.json +814 -0
  44. package/i18n/locales/es.json +811 -0
  45. package/i18n/locales/fr.json +811 -0
  46. package/i18n/locales/pl.json +811 -0
  47. package/i18n/locales/uk.json +811 -0
  48. package/package.json +1 -1
@@ -308,5 +308,816 @@
308
308
  "step3": "Скопіюйте весь вміст auth.json, вставте його нижче та виберіть особистий пароль для його захисту."
309
309
  }
310
310
  }
311
+ },
312
+ "inspector": {
313
+ "container": {
314
+ "modules": "Модулі ({count})",
315
+ "taskCount": "{count} завдання | {count} завдання | {count} завдань",
316
+ "allTasks": "Усі завдання ({count})",
317
+ "tasks": "Завдання ({count})",
318
+ "addTask": "Додати завдання",
319
+ "noTasks": "Завдань ще немає. Додайте одне, щоб почати роботу.",
320
+ "servicesHint": "Сервіси довготривалі й не завершуються. Робота відбувається в їхніх завданнях і модулях."
321
+ },
322
+ "epicChildren": {
323
+ "title": "Завдання епіка",
324
+ "doneCount": "{done}/{total} виконано",
325
+ "empty": "Жодне завдання ще не належить цьому епіку. Імпортуйте дочірні елементи епіка або вкажіть епік завдання.",
326
+ "unassigned": "Не призначено"
327
+ },
328
+ "recurring": {
329
+ "title": "Періодичний конвеєр",
330
+ "active": "Активний",
331
+ "paused": "Призупинено",
332
+ "intervalDays": "{count}д",
333
+ "intervalHours": "{count}год",
334
+ "anyDay": "будь-який день",
335
+ "cadence": "Кожні {every} · {days}{window} · {timezone}",
336
+ "weekdays": {
337
+ "sun": "Нд",
338
+ "mon": "Пн",
339
+ "tue": "Вт",
340
+ "wed": "Ср",
341
+ "thu": "Чт",
342
+ "fri": "Пт",
343
+ "sat": "Сб"
344
+ },
345
+ "nextRun": "Наступний запуск: {time}",
346
+ "runNow": "Запустити зараз",
347
+ "pause": "Призупинити",
348
+ "resume": "Відновити",
349
+ "editCadence": "Редагувати розклад",
350
+ "recentRuns": "Останні запуски",
351
+ "runStatus": {
352
+ "running": "Виконується",
353
+ "done": "Готово",
354
+ "failed": "Помилка",
355
+ "skipped": "Пропущено"
356
+ },
357
+ "updateFailed": "Не вдалося оновити розклад",
358
+ "runNowFailed": "Не вдалося запустити зараз"
359
+ },
360
+ "fragments": {
361
+ "serviceTitle": "Найкращі практики сервісу",
362
+ "serviceEmpty": "Немає. Агенти, що працюють з кодом цього сервісу, дотримуються типових інструкцій."
363
+ },
364
+ "releaseHealth": {
365
+ "title": "Стан після релізу",
366
+ "clear": "Очистити",
367
+ "connectPrompt": "Підключіть інтеграцію спостережуваності, щоб стежити за цим сервісом після релізів.",
368
+ "connectFirst": "Спочатку підключіть інтеграцію спостережуваності",
369
+ "connect": "Підключити",
370
+ "hint": "Монітори та SLO, за якими стежить гейт після випуску цього сервісу. Розділяйте id комами.",
371
+ "monitorIds": "Id моніторів",
372
+ "sloIds": "Id SLO",
373
+ "envTag": "Тег середовища (необов'язково)",
374
+ "saveMonitoring": "Зберегти моніторинг",
375
+ "savedToast": "Моніторинг збережено",
376
+ "saveFailed": "Не вдалося зберегти зіставлення",
377
+ "clearFailed": "Не вдалося очистити зіставлення"
378
+ },
379
+ "testConfig": {
380
+ "title": "Тестова інфраструктура",
381
+ "defaultEnv": "Типове тестове середовище",
382
+ "defaultEnvHint": "Середовище, з яким за замовчуванням створюються завдання цього сервісу. Кожне завдання може перевизначити його в налаштуваннях агента.",
383
+ "env": {
384
+ "ephemeral": "Тимчасове середовище",
385
+ "ephemeralHint": "тести виконуються в наданому середовищі",
386
+ "local": "Локально (docker-compose)",
387
+ "localHint": "Тестувальник піднімає залежності локально"
388
+ },
389
+ "composePath": "Шлях docker-compose",
390
+ "browseRepo": "Переглянути репозиторій у пошуках файлу compose",
391
+ "composeHint": "Використовується Тестувальником, щоб локально підняти залежності сервісу.",
392
+ "selectComposeTitle": "Виберіть файл docker-compose",
393
+ "selectComposeHint": "Виберіть файл compose у репозиторії. Його шлях зберігається відносно кореня репозиторію.",
394
+ "selected": "Вибрано: {path}",
395
+ "noFileSelected": "Файл не вибрано.",
396
+ "useThisFile": "Використати цей файл",
397
+ "noInfra": "Без інфраструктурних залежностей (Тестувальник нічого не піднімає)",
398
+ "missingInfra": "Вкажіть шлях docker-compose або увімкніть відсутність інфраструктурних залежностей, інакше конвеєр з Тестувальником не запуститься.",
399
+ "provisioningTitle": "Надання тимчасового середовища",
400
+ "provisioningHint": "Підказка для надання тимчасового тестового середовища цього сервісу: до якого хмарного провайдера розгортати та яку величину інстансу запитувати. Ігнорується для локального (docker-compose) тестування.",
401
+ "cloudProvider": "Хмарний провайдер",
402
+ "instanceSize": "Розмір інстансу",
403
+ "providers": {
404
+ "docker": "Docker (локально)",
405
+ "custom": "Власний"
406
+ },
407
+ "sizes": {
408
+ "small": "Малий",
409
+ "medium": "Середній",
410
+ "large": "Великий",
411
+ "xlarge": "Дуже великий"
412
+ }
413
+ },
414
+ "agentConfig": {
415
+ "title": "Конфігурація агента",
416
+ "inherited": "успадковано від сервісу",
417
+ "frozen": "Заморожено: агент уже стартував"
418
+ },
419
+ "dependencies": {
420
+ "title": "Залежить від",
421
+ "merged": "Злито",
422
+ "notMerged": "Ще не злито",
423
+ "empty": "Залежностей немає. Можна запускати будь-коли.",
424
+ "blocked": "Заблоковано до злиття залежностей."
425
+ },
426
+ "estimate": {
427
+ "title": "Оцінка",
428
+ "complexity": "Складність",
429
+ "risk": "Ризик",
430
+ "impact": "Вплив"
431
+ },
432
+ "execution": {
433
+ "stage": {
434
+ "incorporating": "Внесення…",
435
+ "reviewing": "Повторний огляд…",
436
+ "recommending": "Рекомендування…"
437
+ },
438
+ "prNumber": "PR #{number}",
439
+ "pullRequest": "Pull request",
440
+ "stepState": {
441
+ "pending": "Очікує",
442
+ "working": "Працює",
443
+ "waiting_decision": "Потрібне рішення",
444
+ "done": "Готово"
445
+ },
446
+ "failed": "Помилка",
447
+ "needsDecision": "Потрібне рішення",
448
+ "needsApproval": "Потрібне затвердження",
449
+ "spinningUp": "Запуск…",
450
+ "stop": "Зупинити",
451
+ "stopTooltip": "Зупинити запуск, але зберегти його (доступний для читання та повтору)",
452
+ "reset": "Скинути",
453
+ "resetTooltip": "Відкинути цей запуск і повернути завдання до запланованого",
454
+ "viewDetailsOutput": "Переглянути деталі та прочитати вивід",
455
+ "viewDetails": "Переглянути деталі кроку",
456
+ "companion": "Компаньйон",
457
+ "companionTooltip": "Компаньйон кроку-виробника",
458
+ "subtasksProgress": "{completed} з {total} підзавдань виконано, {inProgress} у процесі",
459
+ "subtasksDone": "{completed} з {total} підзавдань виконано",
460
+ "resolve": "Вирішити",
461
+ "decide": "Вирішити",
462
+ "review": "Огляд",
463
+ "approve": "Затвердити",
464
+ "fragmentsTooltip": "Фрагменти найкращих практик, додані до цього кроку: {fragments}",
465
+ "standardsApplied": "Застосовано {count} стандарт | Застосовано {count} стандарти | Застосовано {count} стандартів",
466
+ "companionOf": "{label} (компаньйон)",
467
+ "merged": "Злито",
468
+ "open": "Відкрито",
469
+ "mergePr": "Злити PR"
470
+ },
471
+ "structure": {
472
+ "module": "Модуль",
473
+ "modulePlaceholder": "напр. Сесії (створюється під час реалізації, якщо новий)",
474
+ "bestPractices": "Найкращі практики",
475
+ "bestPracticesEmpty": "Немає. Агенти дотримуються типових інструкцій."
476
+ },
477
+ "runSettings": {
478
+ "unassigned": "Не призначено",
479
+ "workspaceDefault": "Типово для робочого простору",
480
+ "workspaceDefaultParen": "(типово для робочого простору)",
481
+ "defaultPresetThresholds": "Типовий ({name}): {thresholds}",
482
+ "defaultPreset": "Типовий ({name})",
483
+ "noDefault": "Без типового",
484
+ "inheritWorkspace": "Успадкувати від робочого простору",
485
+ "on": "Увімк.",
486
+ "off": "Вимк.",
487
+ "inheritOn": "Успадкувати (увімк.)",
488
+ "inheritOff": "Успадкувати (вимк.)",
489
+ "technical": {
490
+ "unset": "Не задано (автовизначення)",
491
+ "technical": "Технічне",
492
+ "business": "Бізнесове"
493
+ },
494
+ "pipeline": "Конвеєр",
495
+ "pipelineEmpty": "Без типового. Виберіть конвеєр під час запуску цього завдання.",
496
+ "mergePolicy": "Політика злиття",
497
+ "mergePresetDetail": "{name}: автозлиття, коли складність ≤ {complexity}, ризик ≤ {risk}, вплив ≤ {impact}; до {attempts} спроб виправлення CI.",
498
+ "mergePresetEmpty": "Пресет не налаштовано. Зливач створює сповіщення про огляд для кожного PR.",
499
+ "modelPreset": "Пресет моделі",
500
+ "modelPresetBase": "база {model}",
501
+ "modelPresetOverrides": ", {count} перевизначення | , {count} перевизначення | , {count} перевизначень",
502
+ "modelPresetEmpty": "Пресет не налаштовано. Агенти працюють на типовій маршрутизації розгортання.",
503
+ "unavailableModels": "Недоступно за поточної конфігурації: {models}. Це завдання зазнало б помилки на цих кроках.",
504
+ "editPresets": "Редагувати пресети",
505
+ "configureVendors": "Налаштувати постачальників",
506
+ "modelPresetChangeHint": "Ця зміна впливає лише на кроки, що ще не розпочалися.",
507
+ "taskKind": "Тип завдання",
508
+ "technicalHint": {
509
+ "technical": "Технічне: реалізатор вважає визначення завдання головним, а специфікацію — регресійним орієнтиром; автор специфікацій може не створювати бізнес-специфікацій.",
510
+ "business": "Бізнесове: як завжди, веде специфікація.",
511
+ "unset": "Автовизначення: виводиться з фази специфікації. Задайте явно, щоб перевизначити."
512
+ },
513
+ "issueWriteback": "Зворотний запис у задачу",
514
+ "commentOnPrOpen": "Коментувати при відкритті PR",
515
+ "closeOnMerge": "Закрити при злитті",
516
+ "writebackHint": "Записує назад до пов'язаної задачі трекера цього завдання. Перевизначає типове для робочого простору.",
517
+ "responsibleProduct": "Відповідальний продукт",
518
+ "responsibleEmpty": "Не призначено. Призначте власника продукту, щоб сповіщати його, коли огляд вимог позначає це завдання.",
519
+ "autoStartDependents": "Автозапуск залежних",
520
+ "autoStartHint": "Коли це завдання зливається, автоматично запускати завдання, що залежать від нього (щойно їхні інші залежності також виконано)."
521
+ }
522
+ },
523
+ "panels": {
524
+ "decision": {
525
+ "title": "Потрібне рішення",
526
+ "agentOnBlock": "{agent} на {block}",
527
+ "visualizationHint": "Це візуалізація. Будь-який вибір просто відновлює конвеєр."
528
+ },
529
+ "stepRestart": {
530
+ "restartFromStep": "Перезапустити конвеєр із цього кроку",
531
+ "restartFromHere": "Перезапустити звідси"
532
+ },
533
+ "structuredResult": {
534
+ "fallbackTitle": "Результат агента",
535
+ "titleWithBlock": "{label}: {title}",
536
+ "fallbackDescription": "Структурований вивід агента",
537
+ "structuredOutput": "Структурований вивід",
538
+ "noResult": "Результату ще немає.",
539
+ "noResultHint": "Структурований вивід з'являється, щойно агент завершить роботу. Поки він працює, крок показує живий прогрес на дошці."
540
+ },
541
+ "testReport": {
542
+ "title": "Звіт про тестування",
543
+ "greenlit": "Схвалено",
544
+ "needsFixes": "Потребує виправлень",
545
+ "fixAttempts": "{count}/{max} спроб виправлення",
546
+ "fixing": "· виправлення…",
547
+ "tested": "Протестовано",
548
+ "outcomes": "Результати",
549
+ "concerns": "Зауваження"
550
+ },
551
+ "stepMeta": {
552
+ "stateLabel": "Стан",
553
+ "duration": "Тривалість",
554
+ "elapsed": "минуло",
555
+ "step": "Крок",
556
+ "stepOf": "{number} з {total}",
557
+ "started": "Розпочато",
558
+ "finished": "Завершено",
559
+ "model": "Модель",
560
+ "notRecorded": "Не записано",
561
+ "run": "Запуск",
562
+ "clickToCopy": "{id} (натисніть, щоб скопіювати)",
563
+ "spinningUpContainer": "Запуск контейнера…",
564
+ "subtasks": "Підзавдання · {completed}/{total}",
565
+ "standardsApplied": "Застосовані стандарти",
566
+ "decision": "Рішення",
567
+ "awaitingChoice": "Очікування вибору людини",
568
+ "approvalGate": "Гейт затвердження",
569
+ "companionReview": "Огляд компаньйона",
570
+ "correctionIterations": "{count} ітерація виправлення. | {count} ітерації виправлення. | {count} ітерацій виправлення.",
571
+ "state": {
572
+ "pending": "Очікує",
573
+ "working": "Працює",
574
+ "waiting_decision": "Потрібен ввід",
575
+ "done": "Готово",
576
+ "failed": "Помилка"
577
+ },
578
+ "approvalStatus": {
579
+ "pending": "Очікує",
580
+ "approved": "Затверджено",
581
+ "changes_requested": "Запитано зміни",
582
+ "rejected": "Відхилено"
583
+ }
584
+ },
585
+ "stepDetail": {
586
+ "contents": "Зміст",
587
+ "details": "Деталі",
588
+ "approvalRequired": "Потрібне затвердження",
589
+ "decisionRequired": "Потрібне рішення",
590
+ "expandAll": "Розгорнути всі розділи",
591
+ "collapseAll": "Згорнути всі розділи",
592
+ "copyRawOutput": "Скопіювати сирий вивід",
593
+ "closeEsc": "Закрити (Esc)",
594
+ "companionCapHeading": "{agent} досяг ліміту в {attempts} спроб переробки, усе ще нижче планки {threshold}.",
595
+ "companionCapDetail": "Виконайте ще один автоматичний раунд переробки, перейдіть до наступного кроку, прийнявши поточний вивід, або зупиніться та скиньте завдання, щоб відредагувати вхідні дані й надіслати повторно.",
596
+ "infraAttempts": "Спроби інфраструктури",
597
+ "hideInfraAttempts": "Приховати спроби інфраструктури",
598
+ "editingConclusions": "Редагування висновків",
599
+ "editConclusionsPlaceholder": "Відредагуйте висновки агента; ваші зміни зберігаються після затвердження…",
600
+ "noProseOutput": "Цей агент не створив текстового виводу.",
601
+ "approveWithCorrections": "Затвердити з виправленнями",
602
+ "reviewAndApprove": "Переглянути та затвердити",
603
+ "editHint": "Відредагуйте висновки ліворуч; ваші зміни зберігаються після затвердження.",
604
+ "reviewHint": "Натисніть будь-який блок у виводі, щоб прокоментувати його, або залиште загальний відгук нижче.",
605
+ "editingNotice": "Ви редагуєте висновки безпосередньо. Ручні зміни не можна поєднати з коментарями по блоках. Затвердіть, щоб зберегти їх, або скасуйте, щоб повернутися до огляду.",
606
+ "commentingOn": "Коментування",
607
+ "commentPlaceholder": "Залиште коментар до цього блоку…",
608
+ "addComment": "Додати коментар",
609
+ "commentN": "Коментар {number}",
610
+ "removeComment": "Видалити коментар",
611
+ "overallFeedback": "Загальний відгук / причина відхилення",
612
+ "overallFeedbackPlaceholder": "Опишіть зміни, які агент має внести (необов'язково, якщо ви залишили коментарі по блоках)…",
613
+ "approveWithEdits": "Затвердити з цими змінами",
614
+ "cancelEdits": "Скасувати зміни",
615
+ "approveAndProceed": "Затвердити та продовжити",
616
+ "rejectConfirmPrompt": "Відхилити цю пропозицію та повністю зупинити запуск?",
617
+ "confirmReject": "Підтвердити відхилення",
618
+ "requestChanges": "Запросити зміни",
619
+ "reject": "Відхилити",
620
+ "requestChangesHint": "Запит змін перезапускає цей крок з вашим відгуком і коментарями. Відхилення повністю зупиняє запуск."
621
+ },
622
+ "inspector": {
623
+ "frameStatus": {
624
+ "planned": "Немає завдань",
625
+ "ready": "Активний",
626
+ "in_progress": "Активний",
627
+ "blocked": "Потребує уваги",
628
+ "pr_ready": "Активний",
629
+ "done": "Активний"
630
+ },
631
+ "deleteRecurringPipeline": "Видалити періодичний конвеєр",
632
+ "deleteTask": "Видалити завдання",
633
+ "deleteModule": "Видалити модуль",
634
+ "deleteService": "Видалити сервіс",
635
+ "titlePlaceholder": "Назва…",
636
+ "reworkedRequirements": "Перероблені вимоги",
637
+ "agentStepsUseDocument": "Кроки агента використовують цей документ.",
638
+ "open": "Відкрити",
639
+ "originalDescriptionFrozen": "Початковий опис (заморожено)",
640
+ "noDescription": "Без опису",
641
+ "describeBlock": "Опишіть цей блок…",
642
+ "taskStartedLocked": "Це завдання стартувало. Його деталі заблоковано.",
643
+ "lastIncorporatedRequirements": "Останні внесені вимоги",
644
+ "priorDocHint": "З попереднього огляду. Використайте його як основу: відредагуйте опис вище та надішліть повторно.",
645
+ "bootstrapping": "Ініціалізація…",
646
+ "importIssue": "Імпортувати задачу",
647
+ "connectTracker": "Підключити трекер",
648
+ "spawnFromDocument": "Створити з документа",
649
+ "viewRequirements": "Переглянути вимоги",
650
+ "reRun": "Перезапустити",
651
+ "run": "Запустити",
652
+ "focus": "Фокус"
653
+ }
654
+ },
655
+ "observability": {
656
+ "modelActivity": "Активність моделі",
657
+ "viewAllCalls": "Переглянути всі виклики →",
658
+ "providedContext": "Наданий контекст",
659
+ "exportJson": "Експортувати JSON",
660
+ "exportHint": "Завантажити зручний для LLM JSON-експорт цього запуску",
661
+ "closeEsc": "Закрити (Esc)",
662
+ "loadingActivity": "Завантаження активності моделі…",
663
+ "loadingContext": "Завантаження наданого контексту…",
664
+ "noCalls": "Для цього запуску не записано викликів моделі.",
665
+ "noContext": "Для цього запуску не збережено контексту агента. Він фіксується при кожному відправленні, коли для робочого простору ввімкнено 'Зберігати повний контекст агента'.",
666
+ "summary": {
667
+ "calls": "Виклики",
668
+ "tokensInOut": "Токени (вхід / вихід)",
669
+ "transportOverhead": "Накладні витрати транспорту",
670
+ "modelExecution": "Виконання моделі",
671
+ "truncated": "{count} обрізаний | {count} обрізані | {count} обрізаних"
672
+ },
673
+ "metricsBar": {
674
+ "calls": "{count} виклик | {count} виклики | {count} викликів",
675
+ "promptCompletionTokens": "Токени запиту / завершення",
676
+ "cachedTokens": "({tokens} з кешу)",
677
+ "cachedTokensHint": "Токени запиту, надані з кешу провайдера",
678
+ "errors": "{count} помилка | {count} помилки | {count} помилок",
679
+ "warnings": "{count} попередження | {count} попередження | {count} попереджень",
680
+ "outputLimit": "Ліміт виводу",
681
+ "truncatedCalls": "{count} виклик обрізано на ліміті | {count} виклики обрізано на ліміті | {count} викликів обрізано на ліміті",
682
+ "transportVsExecution": "Транспорт проти виконання",
683
+ "transportOverhead": "Накладні витрати транспорту / проксі",
684
+ "modelExecution": "Виконання моделі"
685
+ },
686
+ "call": {
687
+ "tokensTitle": "{prompt} токенів запиту / {completion} токенів завершення",
688
+ "outputUsedVsLimit": "Використано виводу проти ліміту",
689
+ "transportVsExecution": "Накладні витрати транспорту / виконання моделі",
690
+ "error": "помилка",
691
+ "ok": "ок",
692
+ "messages": "{count} повідомлень",
693
+ "tools": "{count} інструментів",
694
+ "streamed": "потоково",
695
+ "buffered": "буферизовано",
696
+ "maxTokens": "max_tokens {value}",
697
+ "promptCached": "{cached}/{prompt} запиту з кешу",
698
+ "total": "усього {duration}",
699
+ "prompt": "Запит",
700
+ "promptPrefixOmitted": "(лише нові повідомлення: {count} раніших пропущено)",
701
+ "response": "Відповідь",
702
+ "reasoning": "Міркування"
703
+ },
704
+ "context": {
705
+ "injectedFiles": "Впроваджені файли контексту",
706
+ "bestPracticeFragments": "Фрагменти найкращих практик",
707
+ "filesCount": "{count} файлів",
708
+ "fragmentsCount": "{count} фрагментів",
709
+ "systemPrompt": "Системний запит",
710
+ "userPrompt": "Запит користувача",
711
+ "details": "Деталі"
712
+ }
713
+ },
714
+ "auth": {
715
+ "gate": {
716
+ "loading": "Завантаження…"
717
+ },
718
+ "login": {
719
+ "appTitle": "Architecture Board",
720
+ "subtitle": "Увійдіть, щоб продовжити.",
721
+ "inviteSubtitle": "Прийміть запрошення, щоб продовжити.",
722
+ "forgotSubtitle": "Скиньте свій пароль.",
723
+ "continueWithGithub": "Продовжити з GitHub",
724
+ "continueWithGoogle": "Продовжити з Google",
725
+ "or": "або",
726
+ "namePlaceholder": "Ім'я (необов'язково)",
727
+ "emailPlaceholder": "Електронна пошта",
728
+ "passwordPlaceholder": "Пароль",
729
+ "createAccount": "Створити обліковий запис",
730
+ "signIn": "Увійти",
731
+ "signUp": "Зареєструватися",
732
+ "needAccount": "Потрібен обліковий запис? {signUp}",
733
+ "haveAccount": "Вже маєте обліковий запис? {signIn}",
734
+ "forgotPassword": "Забули пароль?",
735
+ "forgotSent": "Якщо обліковий запис для цієї електронної пошти існує, посилання для скидання пароля вже в дорозі. Перевірте свою поштову скриньку.",
736
+ "sendResetLink": "Надіслати посилання для скидання",
737
+ "backToSignIn": "Повернутися до входу",
738
+ "signInFailed": "Не вдалося увійти. Перевірте свої дані та спробуйте ще раз.",
739
+ "genericError": "Щось пішло не так. Спробуйте ще раз."
740
+ },
741
+ "resetPassword": {
742
+ "title": "Скинути пароль",
743
+ "subtitle": "Виберіть новий пароль для свого облікового запису.",
744
+ "doneBody": "Ваш пароль було скинуто. Тепер ви можете увійти за допомогою нового пароля.",
745
+ "goToSignIn": "Перейти до входу",
746
+ "missingToken": "У цьому посиланні для скидання відсутній токен. Запросіть нове посилання на екрані входу.",
747
+ "backToSignIn": "Повернутися до входу",
748
+ "newPasswordPlaceholder": "Новий пароль",
749
+ "confirmPasswordPlaceholder": "Підтвердьте новий пароль",
750
+ "submit": "Скинути пароль",
751
+ "errorTooShort": "Пароль має містити щонайменше 8 символів.",
752
+ "errorMismatch": "Паролі не збігаються.",
753
+ "errorInvalidLink": "Це посилання для скидання пароля недійсне або термін його дії минув."
754
+ },
755
+ "userMenu": {
756
+ "mySetup": "Моє налаштування",
757
+ "signOut": "Вийти"
758
+ }
759
+ },
760
+ "layout": {
761
+ "accountDeployment": {
762
+ "title": "Інтеграції розгортання",
763
+ "intro": "Облікові дані, спільні для всіх робочих просторів цього облікового запису, зашифровані у стані спокою. Значення ніколи не показуються після збереження; залиште поле порожнім, щоб зберегти наявний секрет.",
764
+ "configured": "Налаштовано",
765
+ "notSet": "Не задано",
766
+ "clear": "Очистити",
767
+ "loadFailed": "Не вдалося завантажити налаштування розгортання",
768
+ "slack": {
769
+ "title": "Застосунок Slack (OAuth)",
770
+ "description": "Вмикає потік OAuth \"Add to Slack\". Без нього робочі простори все одно можуть під'єднати Slack, вставивши токен бота.",
771
+ "clientId": "Ідентифікатор клієнта",
772
+ "clientSecret": "Секрет клієнта",
773
+ "redirectUrl": "URL перенаправлення",
774
+ "validation": "Введіть ідентифікатор клієнта, секрет та URL перенаправлення",
775
+ "saved": "OAuth Slack збережено",
776
+ "saveFailed": "Не вдалося зберегти OAuth Slack",
777
+ "cleared": "OAuth Slack очищено",
778
+ "clearFailed": "Не вдалося очистити OAuth Slack"
779
+ },
780
+ "web": {
781
+ "title": "Вебпошук контейнера",
782
+ "description": "Постачальник пошуку, до якого агенти в контейнері звертаються через проксі бекенду. Задайте ключ Brave (рекомендовано) або власний URL SearXNG (з необов'язковим ключем bearer).",
783
+ "configured": "Налаштовано ({provider})",
784
+ "braveKey": "Ключ API Brave",
785
+ "searxngUrl": "URL SearXNG",
786
+ "searxngKey": "Ключ SearXNG (необов'язково)",
787
+ "validation": "Введіть ключ Brave або URL SearXNG",
788
+ "saved": "Ключі вебпошуку збережено",
789
+ "saveFailed": "Не вдалося зберегти ключі вебпошуку",
790
+ "cleared": "Ключі вебпошуку очищено",
791
+ "clearFailed": "Не вдалося очистити ключі вебпошуку"
792
+ }
793
+ },
794
+ "accountFragments": {
795
+ "intro": "Рекомендовані практики, спільні для всіх дошок цього облікового запису. Кожна дошка успадковує їх і може перевизначити або додати власні. Агенти, що знають код (coder, reviewer, architect, fixers), вплітають релевантні з них у свій промпт."
796
+ },
797
+ "accountTeam": {
798
+ "roles": {
799
+ "admin": "Адміністратор",
800
+ "developer": "Розробник",
801
+ "product": "Продукт"
802
+ },
803
+ "org": {
804
+ "ctaTitle": "Запросіть учасників команди та керуйте ролями",
805
+ "ctaBody": "Учасники, ролі та запрошення існують в організації. Створіть її, щоб запрошувати учасників команди та керувати їхніми ролями; ваші особисті дошки залишаються незмінними.",
806
+ "namePlaceholder": "Acme Inc.",
807
+ "create": "Створити організацію",
808
+ "created": "Організацію створено"
809
+ },
810
+ "members": {
811
+ "title": "Учасники",
812
+ "empty": "Учасників поки немає."
813
+ },
814
+ "invite": {
815
+ "title": "Запросити учасника команди",
816
+ "submit": "Запросити",
817
+ "revoke": "Відкликати запрошення",
818
+ "created": "Запрошення створено",
819
+ "createdEmailed": "Електронного листа надіслано (або скопіюйте посилання зі списку нижче).",
820
+ "createdShareLink": "Поділіться посиланням для прийняття з учасником команди.",
821
+ "status": {
822
+ "pending": "Очікує",
823
+ "accepted": "Прийнято",
824
+ "revoked": "Відкликано"
825
+ }
826
+ },
827
+ "email": {
828
+ "title": "Відправник пошти",
829
+ "notEnabled": "Надсилання пошти не ввімкнено для цього розгортання. Запрошення все одно створюють посилання для прийняття, яким можна поділитися.",
830
+ "connectedAs": "Під'єднано через {provider} як {from}",
831
+ "disconnect": "Від'єднати",
832
+ "connect": "Під'єднати відправника пошти",
833
+ "connected": "Відправника пошти під'єднано",
834
+ "fromPlaceholder": "Адреса відправника",
835
+ "apiKeyPlaceholder": "Ключ API постачальника",
836
+ "providers": {
837
+ "resend": "Resend",
838
+ "sendgrid": "SendGrid"
839
+ }
840
+ },
841
+ "apiKeys": {
842
+ "title": "Ключі API облікового запису"
843
+ },
844
+ "errors": {
845
+ "updateRoles": "Не вдалося оновити ролі",
846
+ "loadSettings": "Не вдалося завантажити налаштування команди",
847
+ "createOrg": "Не вдалося створити організацію",
848
+ "sendInvite": "Не вдалося надіслати запрошення",
849
+ "revokeInvite": "Не вдалося відкликати запрошення",
850
+ "connectEmail": "Не вдалося під'єднати відправника пошти",
851
+ "disconnectEmail": "Не вдалося від'єднати відправника пошти"
852
+ }
853
+ },
854
+ "boardSwitcher": {
855
+ "accountFallback": "Обліковий запис",
856
+ "boardFallback": "Дошка",
857
+ "providers": {
858
+ "docker": "Docker (локально)",
859
+ "custom": "Власний"
860
+ },
861
+ "account": {
862
+ "newOrg": "Нова організація…",
863
+ "settings": "Налаштування облікового запису…",
864
+ "defaultProvider": "Хмарний провайдер за замовчуванням"
865
+ },
866
+ "board": {
867
+ "new": "Нова дошка…",
868
+ "rename": "Перейменувати дошку…",
869
+ "delete": "Видалити дошку"
870
+ },
871
+ "prompt": {
872
+ "create": "Створити",
873
+ "nameLabel": "Назва",
874
+ "descriptionLabel": "Опис",
875
+ "descriptionHint": "Необов'язково",
876
+ "descriptionPlaceholder": "Для чого ця дошка?",
877
+ "account": {
878
+ "title": "Нова організація",
879
+ "placeholder": "Acme Inc."
880
+ },
881
+ "board": {
882
+ "title": "Нова дошка",
883
+ "placeholder": "Дошка без назви"
884
+ },
885
+ "rename": {
886
+ "title": "Налаштування дошки",
887
+ "placeholder": "Назва дошки"
888
+ }
889
+ },
890
+ "toast": {
891
+ "updateProviderFailed": "Не вдалося оновити провайдера за замовчуванням",
892
+ "switchAccountFailed": "Не вдалося змінити обліковий запис",
893
+ "openBoardFailed": "Не вдалося відкрити дошку",
894
+ "boardDeleted": "Дошку видалено",
895
+ "deleteBoardFailed": "Не вдалося видалити дошку"
896
+ }
897
+ },
898
+ "notifications": {
899
+ "heading": "Потребує вашої уваги",
900
+ "overdue": "Прострочено",
901
+ "openPr": "Відкрити PR",
902
+ "dismiss": "Відхилити",
903
+ "action": {
904
+ "merge_review": "Злити",
905
+ "pipeline_complete": "Підтвердити та злити",
906
+ "ci_failed": "Повторити запуск",
907
+ "test_failed": "Повторити запуск",
908
+ "requirement_review": "Позначити прочитаним",
909
+ "clarity_review": "Позначити прочитаним",
910
+ "release_regression": "Підтвердити отримання",
911
+ "decision_required": "Позначити прочитаним",
912
+ "human_test_ready": "Позначити прочитаним",
913
+ "visual_confirmation_ready": "Позначити прочитаним",
914
+ "human_review": "Позначити прочитаним",
915
+ "followup_pending": "Позначити прочитаним",
916
+ "markRead": "Позначити прочитаним"
917
+ }
918
+ },
919
+ "aiProvidersBanner": {
920
+ "setup": {
921
+ "title": "Модель ШІ не налаштовано",
922
+ "body": "Агентам потрібна модель для роботи. ШІ працює одразу лише в розгортанні Cloudflare з увімкненим Workers AI. Інакше підключіть ключ постачальника, підписку, проксі або локальний виконавець, щоб продовжити.",
923
+ "action": "Налаштувати ШІ"
924
+ },
925
+ "preset": {
926
+ "title": "Типовий пресет моделей використовує недоступні моделі",
927
+ "body": "Завдання, що використовують типовий пресет, завершаться невдало. Відредагуйте пресет або налаштуйте відсутнього постачальника.",
928
+ "action": "Переглянути пресет"
929
+ }
930
+ },
931
+ "githubPatBanner": {
932
+ "title": "GitHub PAT не налаштовано",
933
+ "body": "Локальний режим звертається до GitHub за допомогою особистого токена доступу. Без нього кроки агента, які клонують, надсилають, відкривають PR, перевіряють CI або зливають, завершаться невдало.",
934
+ "createToken": "Створити токен GitHub (області попередньо вибрані)",
935
+ "thenSet": "Потім встановіть {envVar} і перезапустіть."
936
+ },
937
+ "providerConfigBanner": {
938
+ "titleMany": "Постачальники потребують налаштування",
939
+ "titleOne": {
940
+ "environment": "Постачальник середовища потребує налаштування",
941
+ "runner-pool": "Пул виконавців потребує налаштування"
942
+ },
943
+ "body": "Постачальника підключено до цього екземпляра, але йому бракує обов'язкових налаштувань, тож він ще не може працювати. Додайте обов'язкові поля, щоб завершити його підключення.",
944
+ "action": {
945
+ "environment": "Налаштувати постачальника середовища",
946
+ "runner-pool": "Налаштувати пул виконавців"
947
+ }
948
+ },
949
+ "spendWarningBanner": {
950
+ "title": "Досягнуто ліміту витрат, виконання агентів призупинено",
951
+ "body": "Витрати на токени цього місяця досягли налаштованого бюджету, тому запущені конвеєри було призупинено, щоб уникнути подальших витрат. Виконання відновиться автоматично, коли бюджет оновиться наступного місяця, або щойно ліміт буде підвищено.",
952
+ "spent": "Витрачено",
953
+ "budget": "Бюджет",
954
+ "tokens": "Токени",
955
+ "resume": "Усе одно відновити",
956
+ "resumeHint": "Відновлення продовжує витрати; його знову призупинять, якщо бюджет усе ще перевищено."
957
+ },
958
+ "personalSetup": {
959
+ "title": "Моє налаштування",
960
+ "intro": "Ваші особисті підключення, що використовуються для запусків, які ви розпочинаєте, і видимі лише вам.",
961
+ "connected": "Підключено",
962
+ "notConnected": "Не підключено",
963
+ "connectedCount": "{count} підключено | {count} підключено | {count} підключено",
964
+ "sourceControl": {
965
+ "title": "Контроль версій"
966
+ },
967
+ "githubToken": {
968
+ "label": "Мій токен GitHub",
969
+ "description": "Особистий токен доступу, що використовується для запусків, які ви розпочинаєте (надсилання, PR, CI, злиття)."
970
+ },
971
+ "models": {
972
+ "title": "Моделі"
973
+ },
974
+ "localRunners": {
975
+ "label": "Мої локальні виконавці",
976
+ "description": "Виконавці моделей на вашій власній машині (Ollama, LM Studio, vLLM)."
977
+ },
978
+ "subscriptions": {
979
+ "label": "Мої підписки",
980
+ "description": "Плани індивідуального використання, які ви розблоковуєте особистим паролем (Claude, GLM, Codex)."
981
+ }
982
+ },
983
+ "integrationBack": {
984
+ "backToMySetup": "Назад до Моє налаштування",
985
+ "backToIntegrations": "Назад до Інтеграції"
986
+ },
987
+ "commandBar": {
988
+ "searchPlaceholder": "Знайдіть або виконайте команду…",
989
+ "noMatches": "Немає відповідних команд.",
990
+ "groups": {
991
+ "create": "Створити",
992
+ "repositories": "Репозиторії",
993
+ "integrations": "Інтеграції",
994
+ "workspace": "Робочий простір",
995
+ "account": "Обліковий запис"
996
+ },
997
+ "cmd": {
998
+ "newPipeline": "Створити конвеєр",
999
+ "addFromRepo": "Додати сервіс з наявного репозиторію",
1000
+ "bootstrapRepo": "Ініціалізувати новий репозиторій",
1001
+ "githubManage": "Керувати підключенням GitHub",
1002
+ "githubConnect": "Підключити GitHub",
1003
+ "slackManage": "Керувати сповіщеннями Slack",
1004
+ "slackConnect": "Підключити Slack",
1005
+ "sourceManage": "Керувати {source}",
1006
+ "sourceConnect": "Підключити {source}",
1007
+ "documentImport": "Імпортувати та створити з документів",
1008
+ "taskImport": "Імпортувати тикети",
1009
+ "fragments": "Бібліотека фрагментів контексту",
1010
+ "mergeThresholds": "Пороги злиття",
1011
+ "workspaceSettings": "Налаштування робочого простору",
1012
+ "modelConfiguration": "Конфігурація моделей",
1013
+ "serviceFragmentDefaults": "Типові найкращі практики сервісу",
1014
+ "accountSettings": "Налаштування облікового запису",
1015
+ "localModels": "Мої локальні виконавці",
1016
+ "sandbox": "Відкрити пісочницю"
1017
+ },
1018
+ "keywords": {
1019
+ "newPipeline": "конвеєр агенти ланцюг pipeline",
1020
+ "addFromRepo": "github імпорт наявний",
1021
+ "bootstrapRepo": "каркас створити еталонна архітектура",
1022
+ "github": "git репозиторії pull requests тикети",
1023
+ "slack": "slack сповіщення канал згадки",
1024
+ "documentSource": "документ джерело prd rfc",
1025
+ "documentImport": "документ імпорт створити",
1026
+ "taskSource": "завдання джерело трекер тикети",
1027
+ "taskImport": "завдання імпорт тикети",
1028
+ "fragments": "prompt фрагменти найкращі практики настанови контекст",
1029
+ "mergeThresholds": "злиття політика пресет автозлиття ci",
1030
+ "workspaceSettings": "ліміт запущені завдання на сервіс очікування ескалація прострочення сповіщення тайм-аут",
1031
+ "modelConfiguration": "модель llm маршрутизація тип агента пресет типовий конфігурація",
1032
+ "serviceFragmentDefaults": "фрагмент найкращі практики настанова сервіс типовий обізнаний з кодом",
1033
+ "accountSettings": "обліковий запис команда учасники ролі запрошення електронна пошта ключі api фрагмент найкращі практики бібліотека контекст організація особисте",
1034
+ "localModels": "модель локальна виконавець ollama lm studio llamacpp vllm endpoint",
1035
+ "sandbox": "пісочниця prompt модель тест експеримент суддя fixture benchmark оцінка"
1036
+ }
1037
+ },
1038
+ "integrationsHub": {
1039
+ "title": "Інтеграції",
1040
+ "intro": "Підключайте зовнішні системи, які може приєднати цей робочий простір, і керуйте ними.",
1041
+ "searchPlaceholder": "Пошук інтеграцій…",
1042
+ "noMatches": "Жодна інтеграція не відповідає \"{query}\".",
1043
+ "getStarted": {
1044
+ "title": "Початок роботи",
1045
+ "body": "Підключіть джерело коду й постачальника моделей, щоб запустити свій перший конвеєр."
1046
+ },
1047
+ "status": {
1048
+ "connected": "Підключено",
1049
+ "keyConnected": "Ключ підключено",
1050
+ "notConnected": "Не підключено",
1051
+ "needsAttention": "Потребує уваги",
1052
+ "disabled": "Вимкнено",
1053
+ "recommended": "Рекомендовано"
1054
+ },
1055
+ "groups": {
1056
+ "models": "Моделі та постачальники",
1057
+ "sourceControl": "Контроль версій",
1058
+ "communication": "Комунікація",
1059
+ "documents": "Документи",
1060
+ "taskTrackers": "Трекери завдань",
1061
+ "observability": "Спостережуваність",
1062
+ "infrastructure": "Інфраструктура",
1063
+ "personal": "Особисте (лише ви)"
1064
+ },
1065
+ "items": {
1066
+ "openrouter": {
1067
+ "description": "Єдиний шлюз до понад 300 моделей. Додайте свій ключ і вмикайте моделі в одному місці."
1068
+ },
1069
+ "vendors": {
1070
+ "label": "Постачальники та ключі",
1071
+ "description": "Підписки LLM робочого простору та ключі API постачальників."
1072
+ },
1073
+ "github": {
1074
+ "description": "Підключіть GitHub App робочого простору, переглядайте репозиторії, PR-и та тикети."
1075
+ },
1076
+ "slack": {
1077
+ "description": "Спрямовуйте сповіщення до простору Slack вашої команди."
1078
+ },
1079
+ "documentSource": {
1080
+ "description": "Приєднайте {source} як джерело документів для контексту вимог."
1081
+ },
1082
+ "documentImport": {
1083
+ "label": "Імпортувати та створити",
1084
+ "description": "Отримайте документи з підключеного джерела та створіть структуру."
1085
+ },
1086
+ "taskSource": {
1087
+ "description": "Приєднайте {source}, щоб імпортувати тикети трекера й посилатися на них."
1088
+ },
1089
+ "taskImport": {
1090
+ "label": "Імпортувати тикети",
1091
+ "description": "Отримайте тикети з підключеного трекера на дошку."
1092
+ },
1093
+ "trackerSettings": {
1094
+ "label": "Налаштування трекера тикетів"
1095
+ },
1096
+ "observability": {
1097
+ "label": "Стан після випуску",
1098
+ "description": "Стежте за моніторами й SLO після випуску версії (Datadog)."
1099
+ },
1100
+ "environment": {
1101
+ "label": "Ефемерні середовища",
1102
+ "description": "Де агент Tester виконується щодо живого середовища попереднього перегляду."
1103
+ },
1104
+ "runnerPool": {
1105
+ "label": "Самостійно розміщений пул виконавців",
1106
+ "description": "Де виконуються агенти коду, коли не використовуються Cloudflare Containers."
1107
+ },
1108
+ "localMode": {
1109
+ "label": "Локальний режим",
1110
+ "description": "Пул теплих контейнерів і повторне використання checkout на репозиторій для локального виконавця."
1111
+ },
1112
+ "githubPat": {
1113
+ "label": "Мій токен GitHub",
1114
+ "description": "Особистий токен доступу, який використовується для запусків, що ви розпочинаєте (pushes, PR-и, CI, злиття)."
1115
+ },
1116
+ "localRunners": {
1117
+ "label": "Мої локальні виконавці",
1118
+ "description": "Ваші виконавці моделей на власній машині (Ollama, LM Studio, vLLM…)."
1119
+ }
1120
+ }
1121
+ }
311
1122
  }
312
1123
  }