@cat-factory/app 0.215.1 → 0.216.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 (38) hide show
  1. package/README.md +109 -1
  2. package/app/components/bootstrap/BootstrapModal.vue +65 -44
  3. package/app/components/github/AddServiceFromRepoModal.vue +49 -27
  4. package/app/components/github/GitHubOnboarding.vue +4 -23
  5. package/app/components/github/GitHubPanel.vue +10 -34
  6. package/app/components/inputGate/InputGateNotice.vue +176 -0
  7. package/app/components/panels/AgentStepDetail.vue +27 -3
  8. package/app/components/panels/inspector/TaskExecution.vue +32 -3
  9. package/app/components/pipeline/PipelineProgress.vue +1 -1
  10. package/app/components/settings/WorkspaceSettingsPanel.vue +34 -1
  11. package/app/components/vcs/VcsConnectSurfaces.vue +58 -0
  12. package/app/composables/api/inputGate.ts +25 -0
  13. package/app/composables/useApi.ts +2 -0
  14. package/app/composables/usePipelineErrorToast.ts +8 -0
  15. package/app/stores/github/vcsConnect.ts +62 -0
  16. package/app/stores/github.spec.ts +31 -0
  17. package/app/stores/github.ts +5 -26
  18. package/app/stores/inputGate.ts +58 -0
  19. package/app/stores/ui/resultViews.ts +9 -1
  20. package/app/stores/workspaceSettings.ts +1 -0
  21. package/app/types/domain.ts +1 -0
  22. package/app/utils/inputGate.spec.ts +52 -0
  23. package/app/utils/inputGate.ts +44 -0
  24. package/app/utils/pipelineRender.spec.ts +47 -9
  25. package/app/utils/pipelineRender.ts +23 -2
  26. package/app/utils/vcs.spec.ts +101 -0
  27. package/app/utils/vcs.ts +63 -1
  28. package/i18n/locales/de.json +76 -17
  29. package/i18n/locales/en.json +76 -17
  30. package/i18n/locales/es.json +76 -17
  31. package/i18n/locales/fr.json +76 -17
  32. package/i18n/locales/he.json +76 -17
  33. package/i18n/locales/it.json +76 -17
  34. package/i18n/locales/ja.json +76 -17
  35. package/i18n/locales/pl.json +76 -17
  36. package/i18n/locales/tr.json +76 -17
  37. package/i18n/locales/uk.json +76 -17
  38. package/package.json +2 -2
@@ -566,6 +566,8 @@
566
566
  "binary_output_service_invalid": "Не вдається розпізнати сервіс для бінарних результатів",
567
567
  "binary_output_generator_invalid": "Не вдається розпізнати генератор бінарних результатів",
568
568
  "foundational_service_not_inherited": "Цей сервіс зареєструвала ця дошка",
569
+ "input_gate_not_parked": "Немає на що відповідати",
570
+ "input_gate_parked": "Відповідайте в перевірці вхідних даних завдання",
569
571
  "ticket_already_linked": "У цього тікета вже є завдання",
570
572
  "dry_run_not_mergeable": "Пробний запуск не можна злити"
571
573
  },
@@ -600,6 +602,8 @@
600
602
  "binary_output_service_invalid": "Крок, що генерує бінарні результати, вибирає базовий сервіс, який каталог цього робочого простору не може розпізнати: ідентифікатор невідомий або вибраний сервіс зберігання не має здатності asset-storage. Виправте вибір у кроці або зареєструйте сервіс і запустіть знову.",
601
603
  "binary_output_generator_invalid": "Крок, що генерує бінарні результати, вибирає генеративну інтеграцію, якої це розгортання не реєструє, або жодна з вибраних інтеграцій не створює тип вмісту, який крок має надати. Генеративні інтеграції реєструються в коді розгортання, а не в цьому робочому просторі: зареєструйте її або виправте вибір у кроці й запустіть знову.",
602
604
  "foundational_service_not_inherited": "Вимкнення стосується сервісу, успадкованого від облікового запису. Цей ідентифікатор зареєстровано цією дошкою, тож вимикати нічого - натомість видаліть власний запис дошки.",
605
+ "input_gate_not_parked": "Цей запуск більше не чекає на перевірку вхідних даних. Можливо, хтось уже відповів, або запуск рушив далі.",
606
+ "input_gate_parked": "Цей запуск очікує на перевірку вхідних даних, і схвалення її не розвʼязує. Скористайтеся повідомленням на запуску: виправте завдання й перевірте ще раз або запустіть попри це.",
603
607
  "ticket_already_linked": "Тікет може живити лише одне завдання, тож повторне звʼязування позбавить наявне завдання контексту, з яким його створено. Відкрийте це завдання або спершу відʼєднайте тікет.",
604
608
  "dry_run_not_mergeable": "Цей pull request походить із пробного запуску, тому його не можна злити звідси. Запустіть завдання ще раз у звичайному режимі, щоб отримати pull request, який цей робочий простір зіллє."
605
609
  },
@@ -3159,6 +3163,16 @@
3159
3163
  "saveFailed": "Не вдалося зберегти налаштування",
3160
3164
  "budgetSaved": "Бюджет збережено",
3161
3165
  "budgetSaveFailed": "Не вдалося зберегти бюджет"
3166
+ },
3167
+ "inputGate": {
3168
+ "heading": "Перевірка вхідних даних перед стартом запуску",
3169
+ "body": "Перевіряє формулювання завдання до першого кроку агента, щоб завдання, з яким ніхто не міг би працювати, зупинилося без витрат. Стандартний режим зупиняє запуск за порожнього чи шаблонного опису, помилки без контексту відтворення або завдання рецензування без pull request.",
3170
+ "mode": "Режим",
3171
+ "modes": {
3172
+ "standard": "Стандартний (зупиняти на блокувальній прогалині)",
3173
+ "advisory": "Рекомендаційний (записувати, ніколи не зупиняти)",
3174
+ "off": "Вимкнено (пропускати перевірку)"
3175
+ }
3162
3176
  }
3163
3177
  },
3164
3178
  "localModelEndpoints": {
@@ -3774,16 +3788,11 @@
3774
3788
  },
3775
3789
  "addService": {
3776
3790
  "title": "Додати сервіс із репозиторію",
3777
- "intro": "Виберіть наявний репозиторій GitHub, щоб додати його як сервіс дошки. Без початкового налаштування: репозиторій прив’язується як є до нового фрейму сервісу, а задачі, які ви на ньому запускаєте, націлені на цей репозиторій.",
3778
- "connectFirst": "Спершу підключіть цей робочий простір до GitHub. Прив’яжіть встановлення, у якому застосунок уже є, або встановіть його.",
3779
3791
  "repository": "Репозиторій",
3780
- "repositoryHint": "Репозиторії, до яких застосунок GitHub має доступ. Не бачите свого? Надайте застосунку доступ нижче, а потім оновіть.",
3781
- "noReposAvailable": "Поки що немає доступних репозиторіїв. Надайте застосунку доступ до одного нижче, а потім оновіть.",
3782
3792
  "searchPlaceholder": "Шукайте репозиторії за власником або назвою…",
3783
3793
  "searchMinChars": "Введіть щонайменше {min} символ для пошуку. | Введіть щонайменше {min} символи для пошуку. | Введіть щонайменше {min} символів для пошуку.",
3784
3794
  "noMatches": "Не знайдено репозиторіїв для {query}.",
3785
3795
  "clearSelection": "Очистити вибір",
3786
- "showingCount": "Показано {shown} із {total} репозиторіїв.",
3787
3796
  "repoLabel": {
3788
3797
  "private": " (приватний)",
3789
3798
  "monorepo": " · монорепозиторій",
@@ -3800,7 +3809,6 @@
3800
3809
  "addedConfigure": "{title} додано, налаштуйте",
3801
3810
  "grantAccess": "Надати застосунку доступ до репозиторію",
3802
3811
  "grantAccessTitle": "Відкрити налаштування встановлення застосунку, щоб надати йому доступ до репозиторію",
3803
- "refreshList": "Оновити список",
3804
3812
  "done": "Готово",
3805
3813
  "donePendingHint": "Спершу додайте вибрані сервіси або очистіть вибір — інакше ці позначення буде відкинуто.",
3806
3814
  "add": "Додати сервіс",
@@ -4549,6 +4557,51 @@
4549
4557
  "fail": "Запуск не вдався"
4550
4558
  }
4551
4559
  },
4560
+ "inputGate": {
4561
+ "blockedTitle": "Це завдання потребує більше деталей, перш ніж запуститися",
4562
+ "blockedBody": "Запуск зупинився перед першим кроком агента, тож нічого не витрачено. Доповніть те, чого бракує в завданні, і перевірте знову.",
4563
+ "waivedTitle": "Запущено попри неповне завдання",
4564
+ "waivedBody": "Хтось вирішив виконати це завдання з наведеними нижче прогалинами. Вони лишаються частиною історії запуску.",
4565
+ "advisoryTitle": "Занотовано кілька прогалин, запуск тривав далі",
4566
+ "advisoryBody": "Перевірка вхідних даних завдання виявила їх на старті. Жодна не спиняє роботу, тож нічого не зупинено. Якщо їх заповнити, наступний запуск буде точнішим.",
4567
+ "severity": {
4568
+ "blocking": "Блокує",
4569
+ "advisory": "Рекомендація"
4570
+ },
4571
+ "recheck": "Перевірити завдання знову",
4572
+ "proceed": "Усе одно запустити",
4573
+ "recheckHint": "Перевірка читає завдання в поточному вигляді, тож спершу відредагуйте його.",
4574
+ "issue": {
4575
+ "description_missing": {
4576
+ "title": "Немає опису",
4577
+ "hint": "Заголовок називає завдання, а опис — це те, з чим працює агент. Напишіть, що має змінитися і чому."
4578
+ },
4579
+ "description_placeholder": {
4580
+ "title": "Опис-заповнювач",
4581
+ "hint": "Опис є заглушкою (\"TBD\", \"n/a\", \"полагодити\"), а не описом роботи."
4582
+ },
4583
+ "description_thin": {
4584
+ "title": "Дуже короткий опис",
4585
+ "hint": "Кілька слів рідко визначають, що означає \"готово\". Більше деталей тут зекономить коло уточнень згодом."
4586
+ },
4587
+ "reproduction_missing": {
4588
+ "title": "Немає контексту відтворення",
4589
+ "hint": "Помилка без кроків, без порівняння очікуваного і фактичного та без стека викликів не дає зрозуміти, коли її виправлено."
4590
+ },
4591
+ "review_target_missing": {
4592
+ "title": "Немає pull request для рецензування",
4593
+ "hint": "Завдання рецензування потребує номера або адреси pull request, який слід прочитати."
4594
+ },
4595
+ "success_criteria_missing": {
4596
+ "title": "Немає критеріїв успіху",
4597
+ "hint": "Вкажіть питання, на яке відповідає spike, або який результат є добрим, щоб відведений час мав ціль."
4598
+ },
4599
+ "unknown": {
4600
+ "title": "Нерозпізнаний висновок",
4601
+ "hint": "Цей запуск зафіксував перевірку, якої ця версія вже не знає. Перегляньте завдання вручну, перш ніж продовжувати."
4602
+ }
4603
+ }
4604
+ },
4552
4605
  "requirements": {
4553
4606
  "title": "Перегляд вимог",
4554
4607
  "iteration": "Ітерація {current} / {max}",
@@ -5710,13 +5763,6 @@
5710
5763
  "tooLong": "Має містити щонайбільше 100 символів."
5711
5764
  }
5712
5765
  },
5713
- "intro": {
5714
- "canCreate": "Створіть порожній репозиторій GitHub, а потім дозвольте агентові-ініціалізатору наповнити його в контейнері-пісочниці, адаптувавши одну з ваших еталонних архітектур або з нуля за довільним промптом. cat-factory надсилає початковий коміт до цього репозиторію; для цього облікового запису він також може створити репозиторій за вас.",
5715
- "manual": "Створіть порожній репозиторій GitHub, а потім дозвольте агентові-ініціалізатору наповнити його в контейнері-пісочниці, адаптувавши одну з ваших еталонних архітектур або з нуля за довільним промптом. cat-factory надсилає початковий коміт до цього репозиторію; репозиторій створюєте ви (одним клацанням нижче), тож йому не потрібен дозвіл на створення репозиторіїв."
5716
- },
5717
- "github": {
5718
- "prompt": "Під'єднайте цей робочий простір до GitHub перед ініціалізацією; запуск надсилає зміни до репозиторію. Прив'яжіть інсталяцію, де App уже присутній, або встановіть його."
5719
- },
5720
5766
  "section": {
5721
5767
  "newRepo": "Новий репозиторій"
5722
5768
  },
@@ -5745,9 +5791,7 @@
5745
5791
  },
5746
5792
  "createRepo": {
5747
5793
  "now": "Створити репозиторій",
5748
- "onGitHub": "Створити на GitHub",
5749
- "titleNow": "Створити репозиторій зараз",
5750
- "titleGitHub": "Відкрити сторінку нового репозиторію GitHub, заповнену"
5794
+ "titleNow": "Створити репозиторій зараз"
5751
5795
  },
5752
5796
  "grantAccess": {
5753
5797
  "label": "Надати App доступ до цього репозиторію",
@@ -5785,7 +5829,6 @@
5785
5829
  "title": "Еталонні архітектури",
5786
5830
  "add": "Додати",
5787
5831
  "pickRepo": {
5788
- "label": "Виберіть наявний репозиторій GitHub",
5789
5832
  "description": "Виберіть репозиторій, до якого маєте доступ, щоб заповнити його власника й назву, або введіть їх вручну нижче.",
5790
5833
  "placeholder": "owner/name"
5791
5834
  },
@@ -6359,6 +6402,22 @@
6359
6402
  "titleAny": "Підключіть cat-factory до ваших репозиторіїв",
6360
6403
  "intro": "cat-factory працює, відкриваючи pull requests у ваших репозиторіях. Під'єднайте свого постачальника репозиторіїв, щоб продовжити."
6361
6404
  },
6405
+ "addService": {
6406
+ "intro": "Виберіть наявний репозиторій {provider}, щоб додати його як сервіс дошки. Без початкового налаштування: репозиторій прив’язується як є до нового фрейму сервісу, а задачі, які ви на ньому запускаєте, націлені на цей репозиторій.",
6407
+ "introAny": "Виберіть наявний репозиторій, щоб додати його як сервіс дошки. Без початкового налаштування: репозиторій прив’язується як є до нового фрейму сервісу, а задачі, які ви на ньому запускаєте, націлені на цей репозиторій.",
6408
+ "connectFirst": "Спершу підключіть цей робочий простір до хостингу репозиторіїв, а потім виберіть репозиторій для додавання.",
6409
+ "repositoryHintApp": "Репозиторії, до яких застосунок GitHub має доступ. Не бачите свого? Надайте застосунку доступ нижче, а потім виконайте пошук знову.",
6410
+ "repositoryHintToken": "Репозиторії, доступні вашому токену {provider}. Не бачите свого? Перевірте область дії токена та свій доступ до проєкту, а потім виконайте пошук знову."
6411
+ },
6412
+ "bootstrap": {
6413
+ "connectPrompt": "Під'єднайте цей робочий простір до хостингу репозиторіїв перед ініціалізацією; запуск надсилає зміни до репозиторію.",
6414
+ "createRepoOn": "Створити в {provider}",
6415
+ "createRepoTitle": "Відкрити сторінку нового репозиторію в {provider}",
6416
+ "introCanCreate": "Створіть порожній репозиторій {provider}, а потім дозвольте агентові-ініціалізатору наповнити його в контейнері-пісочниці, адаптувавши одну з ваших еталонних архітектур або з нуля за довільним промптом. cat-factory надсилає початковий коміт до цього репозиторію; для цього облікового запису він також може створити репозиторій за вас.",
6417
+ "introManual": "Створіть порожній репозиторій {provider}, а потім дозвольте агентові-ініціалізатору наповнити його в контейнері-пісочниці, адаптувавши одну з ваших еталонних архітектур або з нуля за довільним промптом. cat-factory надсилає початковий коміт до цього репозиторію; репозиторій створюєте ви (одним клацанням нижче), тож йому не потрібен дозвіл на створення репозиторіїв.",
6418
+ "introManualAny": "Створіть порожній репозиторій у свого хостингу репозиторіїв, а потім дозвольте агентові-ініціалізатору наповнити його в контейнері-пісочниці, адаптувавши одну з ваших еталонних архітектур або з нуля за довільним промптом. cat-factory надсилає початковий коміт до цього репозиторію; репозиторій ви створюєте самостійно, тож йому не потрібен дозвіл на створення репозиторіїв.",
6419
+ "archPickRepo": "Виберіть наявний репозиторій {provider}"
6420
+ },
6362
6421
  "branchProtection": {
6363
6422
  "heading": "Захист типової гілки",
6364
6423
  "body": "Запуски агентів надсилають зміни обліковими даними, які можуть писати в кожен охоплений репозиторій. Ніщо тут не завадить скомпрометованому запуску надіслати зміни просто до типової гілки або злити власний запит на злиття через API хоста — обидва випадки покриває лише захист гілок на боці хоста, і його налаштовуєте ви. Ця перевірка показує, чи він увімкнений.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.215.1",
3
+ "version": "0.216.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.226.0"
43
+ "@cat-factory/contracts": "0.229.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",