@cat-factory/app 0.176.0 → 0.178.1

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/README.md +28 -1
  2. package/app/components/documents/DocumentImportModal.vue +3 -17
  3. package/app/components/documents/DocumentTemplatesModal.vue +1 -1
  4. package/app/components/documents/SpawnPreviewModal.vue +9 -19
  5. package/app/components/environments/steps/EnvPickStep.vue +3 -0
  6. package/app/components/layout/CommandBar.vue +1 -1
  7. package/app/components/layout/IntegrationBackTitle.vue +11 -8
  8. package/app/components/layout/IntegrationsHub.vue +22 -56
  9. package/app/components/layout/ModelProvidersHub.vue +250 -0
  10. package/app/components/panels/InspectorPanel.vue +2 -19
  11. package/app/components/panels/inspector/ServiceValidationConfig.vue +99 -1
  12. package/app/components/settings/ComposeEnvironmentSetupSection.vue +102 -0
  13. package/app/components/settings/InfrastructureWindow.vue +11 -1
  14. package/app/composables/api/validationChecks.ts +8 -0
  15. package/app/composables/useIntegrationBack.ts +5 -2
  16. package/app/composables/useNavContributions.ts +1 -1
  17. package/app/modular/nav-contributions.spec.ts +11 -3
  18. package/app/modular/nav-contributions.ts +35 -16
  19. package/app/pages/index.vue +4 -0
  20. package/app/stores/documents.ts +9 -6
  21. package/app/stores/ui/modals.ts +43 -27
  22. package/app/stores/validationChecks.ts +17 -2
  23. package/app/types/validationChecks.ts +3 -0
  24. package/app/utils/validationDetection.spec.ts +51 -0
  25. package/app/utils/validationDetection.ts +67 -0
  26. package/i18n/locales/de.json +103 -27
  27. package/i18n/locales/en.json +103 -27
  28. package/i18n/locales/es.json +103 -27
  29. package/i18n/locales/fr.json +103 -27
  30. package/i18n/locales/he.json +103 -27
  31. package/i18n/locales/it.json +103 -27
  32. package/i18n/locales/ja.json +103 -27
  33. package/i18n/locales/pl.json +103 -27
  34. package/i18n/locales/tr.json +103 -27
  35. package/i18n/locales/uk.json +103 -27
  36. package/package.json +2 -2
@@ -111,6 +111,8 @@
111
111
  "repositories": "Репозиторії",
112
112
  "addFromRepo": "Додати з наявного репозиторію",
113
113
  "bootstrapRepo": "Ініціалізувати репозиторій",
114
+ "models": "Моделі",
115
+ "modelProviders": "Постачальники моделей",
114
116
  "integrations": "Інтеграції",
115
117
  "sandbox": "Пісочниця",
116
118
  "kaizen": "Kaizen",
@@ -122,8 +124,7 @@
122
124
  "accountSettings": "Налаштування облікового запису",
123
125
  "operatorDashboard": "Спостережуваність платформи",
124
126
  "reports": "Звіти",
125
- "infrastructure": "Інфраструктура",
126
- "environmentSetup": "Налаштування середовища"
127
+ "infrastructure": "Інфраструктура"
127
128
  },
128
129
  "board": {
129
130
  "toast": {
@@ -1103,7 +1104,34 @@
1103
1104
  "save": "Зберегти перевірки",
1104
1105
  "savedToast": "Перевірки збережено",
1105
1106
  "saveFailed": "Не вдалося зберегти перевірки",
1106
- "clearFailed": "Не вдалося очистити перевірки"
1107
+ "clearFailed": "Не вдалося очистити перевірки",
1108
+ "detect": {
1109
+ "action": "Визначити",
1110
+ "hint": "Запропонувати перевірки з репозиторію цієї служби",
1111
+ "added": "Додано {count} перевірку | Додано {count} перевірки | Додано {count} перевірок",
1112
+ "found": "Розпізнано: {ecosystems}.",
1113
+ "capped": "Деякі пропозиції пропущено — служба приймає щонайбільше {max} перевірок.",
1114
+ "nothingNew": "Немає чого додавати",
1115
+ "alreadyPresent": "Усі виявлені команди вже є у списку.",
1116
+ "unrecognised": "У корені репозиторію не розпізнано жодної відомої екосистеми. Додайте команди вручну.",
1117
+ "repo_unavailable": "До цієї служби не прив’язано репозиторій, тож немає чого перевіряти.",
1118
+ "failed": "Не вдалося прочитати репозиторій"
1119
+ },
1120
+ "ecosystem": {
1121
+ "node": "Node.js",
1122
+ "python": "Python",
1123
+ "go": "Go",
1124
+ "rust": "Rust",
1125
+ "maven": "Maven",
1126
+ "gradle": "Gradle",
1127
+ "dotnet": ".NET",
1128
+ "ruby": "Ruby",
1129
+ "php": "PHP",
1130
+ "elixir": "Elixir",
1131
+ "make": "Make",
1132
+ "just": "just",
1133
+ "task": "Task"
1134
+ }
1107
1135
  }
1108
1136
  },
1109
1137
  "panels": {
@@ -1319,7 +1347,6 @@
1319
1347
  "lastIncorporatedRequirements": "Останні внесені вимоги",
1320
1348
  "priorDocHint": "З попереднього огляду. Використайте його як основу: відредагуйте опис вище та надішліть повторно.",
1321
1349
  "bootstrapping": "Ініціалізація…",
1322
- "spawnFromDocument": "Створити з документа",
1323
1350
  "viewRequirements": "Переглянути вимоги",
1324
1351
  "reRun": "Перезапустити",
1325
1352
  "run": "Запустити",
@@ -1934,7 +1961,8 @@
1934
1961
  },
1935
1962
  "integrationBack": {
1936
1963
  "backToMySetup": "Назад до Моє налаштування",
1937
- "backToIntegrations": "Назад до Інтеграції"
1964
+ "backToIntegrations": "Назад до Інтеграції",
1965
+ "backToModelProviders": "Назад до Постачальники моделей"
1938
1966
  },
1939
1967
  "commandBar": {
1940
1968
  "searchPlaceholder": "Знайдіть або виконайте команду…",
@@ -1995,23 +2023,21 @@
1995
2023
  },
1996
2024
  "integrationsHub": {
1997
2025
  "title": "Інтеграції",
1998
- "intro": "Підключайте зовнішні системи, які може приєднати цей робочий простір, і керуйте ними.",
2026
+ "intro": "Підключайте необов'язкові зовнішні системи, які може приєднати цей робочий простір, і керуйте ними. Моделі, на яких працюють ваші агенти, є в розділі Постачальники моделей.",
1999
2027
  "searchPlaceholder": "Пошук інтеграцій…",
2000
2028
  "noMatches": "Жодна інтеграція не відповідає \"{query}\".",
2001
2029
  "getStarted": {
2002
2030
  "title": "Початок роботи",
2003
- "body": "Підключіть джерело коду й постачальника моделей, щоб запустити свій перший конвеєр."
2031
+ "body": "Підключіть джерело коду, щоб вашим конвеєрам було над чим працювати."
2004
2032
  },
2005
2033
  "status": {
2006
2034
  "connected": "Підключено",
2007
- "keyConnected": "Ключ підключено",
2008
2035
  "notConnected": "Не підключено",
2009
2036
  "needsAttention": "Потребує уваги",
2010
2037
  "disabled": "Вимкнено",
2011
2038
  "recommended": "Рекомендовано"
2012
2039
  },
2013
2040
  "groups": {
2014
- "models": "Моделі та постачальники",
2015
2041
  "sourceControl": "Контроль версій",
2016
2042
  "communication": "Комунікація",
2017
2043
  "documents": "Документи",
@@ -2021,16 +2047,6 @@
2021
2047
  "personal": "Особисте (лише ви)"
2022
2048
  },
2023
2049
  "items": {
2024
- "openrouter": {
2025
- "description": "Єдиний шлюз до понад 300 моделей. Додайте свій ключ і вмикайте моделі в одному місці."
2026
- },
2027
- "vendors": {
2028
- "label": "Постачальники та ключі",
2029
- "description": "Підписки LLM робочого простору та ключі API постачальників."
2030
- },
2031
- "personalSubs": {
2032
- "label": "Особисті підписки (Claude, ChatGPT/Codex, GLM)"
2033
- },
2034
2050
  "github": {
2035
2051
  "description": "Підключіть GitHub App робочого простору, переглядайте репозиторії, PR-и та тикети."
2036
2052
  },
@@ -2070,10 +2086,6 @@
2070
2086
  "label": "Мій токен GitHub",
2071
2087
  "description": "Особистий токен доступу, який використовується для запусків, що ви розпочинаєте (pushes, PR-и, CI, злиття)."
2072
2088
  },
2073
- "localRunners": {
2074
- "label": "Мої локальні виконавці",
2075
- "description": "Ваші виконавці моделей на власній машині (Ollama, LM Studio, vLLM…)."
2076
- },
2077
2089
  "documentTemplates": {
2078
2090
  "label": "Шаблони та приклади"
2079
2091
  },
@@ -2083,6 +2095,45 @@
2083
2095
  }
2084
2096
  }
2085
2097
  },
2098
+ "modelProvidersHub": {
2099
+ "title": "Постачальники моделей",
2100
+ "intro": "Рушії, на яких працюють ваші агенти. Щоб виконався бодай один крок конвеєра, має бути підключений принаймні один постачальник.",
2101
+ "searchPlaceholder": "Пошук постачальників…",
2102
+ "noMatches": "Немає постачальників, що відповідають \"{query}\".",
2103
+ "getStarted": {
2104
+ "title": "Жодного постачальника ще не підключено",
2105
+ "body": "Кроки агента не можуть виконуватися, доки модель недоступна. Ключ OpenRouter відкриває широкий каталог найшвидше, але ключі постачальників, особистий план чи власний локальний виконавець працюють так само добре."
2106
+ },
2107
+ "status": {
2108
+ "connected": "Підключено",
2109
+ "keyConnected": "Ключ підключено",
2110
+ "notConnected": "Не підключено",
2111
+ "recommended": "Рекомендовано",
2112
+ "connectedCount": "{count} підключено | {count} підключено | {count} підключено"
2113
+ },
2114
+ "groups": {
2115
+ "workspace": "Постачальники робочого простору",
2116
+ "personal": "Особисте (лише ви)",
2117
+ "personalNote": "Вони належать вашому обліковому запису, а не робочому простору, і використовуються лише для запусків, які починаєте ви. Їх також перелічено в розділі Моє налаштування."
2118
+ },
2119
+ "items": {
2120
+ "openrouter": {
2121
+ "description": "Єдиний шлюз до понад 300 моделей. Додайте свій ключ і вмикайте моделі в одному місці."
2122
+ },
2123
+ "vendors": {
2124
+ "label": "Постачальники та ключі",
2125
+ "description": "Підписки LLM робочого простору та ключі API постачальників."
2126
+ },
2127
+ "personalSubs": {
2128
+ "label": "Мої підписки",
2129
+ "description": "Плани індивідуального використання, які ви розблоковуєте особистим паролем (Claude, GLM, Codex)."
2130
+ },
2131
+ "localRunners": {
2132
+ "label": "Мої локальні виконавці",
2133
+ "description": "Виконавці моделей на вашій власній машині (Ollama, LM Studio, vLLM)."
2134
+ }
2135
+ }
2136
+ },
2086
2137
  "shortcuts": {
2087
2138
  "title": "Комбінації клавіш",
2088
2139
  "commandBar": "Відкрити командний рядок",
@@ -2651,6 +2702,32 @@
2651
2702
  "removeFailed": "Не вдалося видалити спільний стек"
2652
2703
  }
2653
2704
  },
2705
+ "composeEnvSetup": {
2706
+ "title": "Покрокове налаштування Docker Compose для сервісу",
2707
+ "lead": "Проводить один сервіс через створення рецепта Docker Compose, з якого піднімаються його тестові середовища, замість ручного введення шляху до compose і кроків підготовки.",
2708
+ "how": {
2709
+ "title": "Як це працює",
2710
+ "scan": "Сканує пов'язаний репозиторій сервісу на предмет файлів compose, профілів, файлів env і дампів початкових даних.",
2711
+ "analyse": "За бажанням запускає агента-аналітика середовища, щоб на основі власних скриптів репозиторію накидати кроки підготовки та перевірку готовності.",
2712
+ "preflight": "Виконує попередні перевірки рецепта на машині, яка його підніматиме.",
2713
+ "save": "Зберігає рецепт на сервісі й реєструє обробник Docker Compose робочого простору.",
2714
+ "outcome": "Далі Deployer піднімає саме цей стек щоразу, коли конвеєру потрібне живе середовище, а Tester працює проти нього. Нічого не застосовується, доки ви не збережете."
2715
+ },
2716
+ "needed": {
2717
+ "title": "Це потрібно, коли",
2718
+ "running": "Тести сервісу потребують реально запущеного застосунку: тести API чи інтерфейсу, міграції, початкові дані.",
2719
+ "compose": "Сервіс піднімається через Docker Compose і ще не має збереженого рецепта.",
2720
+ "setup": "Підняття стека потребує більше ніж однієї команди: профілів, файлів env, початкових даних або перевірки готовності."
2721
+ },
2722
+ "notNeeded": {
2723
+ "title": "Це можна пропустити, коли",
2724
+ "inContainer": "Конвеєр лише запускає лінтер, збірку або модульні тести. Вони виконуються в контейнері агента як перевірки перед PR, без підняття середовища.",
2725
+ "otherBackend": "Сервіс піднімається іншим способом (Kubernetes, хмарний попередній перегляд або взагалі без інфраструктури). Налаштуйте це вище.",
2726
+ "noRepo": "Сервіс не має пов'язаного репозиторію, тож сканувати нічого."
2727
+ },
2728
+ "start": "Почати покрокове налаштування",
2729
+ "rerunHint": "Запускайте повторно будь-коли, щоб змінити збережений рецепт."
2730
+ },
2654
2731
  "localMode": {
2655
2732
  "title": "Локальний режим",
2656
2733
  "intro": "Налаштування локального запускача контейнерів, збережене на розгортанні цієї машини (воно замінило змінні середовища {poolVars} / {harnessVars}). Збереження змінює розмір теплого пулу наживо, без потреби в перезапуску; поточні запуски зберігають контейнер, який вони вже утримують.",
@@ -3520,7 +3597,6 @@
3520
3597
  "title": "Імпорт із джерела документів",
3521
3598
  "connectFirst": "Спершу підключіть джерело документів.",
3522
3599
  "connectSource": "Підключити {source}",
3523
- "spawningInto": "Створення в {frame}",
3524
3600
  "sourceLabel": "Джерело",
3525
3601
  "refLabel": "URL або ідентифікатор сторінки",
3526
3602
  "importButton": "Імпортувати",
@@ -3545,7 +3621,6 @@
3545
3621
  "title": "Перегляд структури",
3546
3622
  "plannerLlm": "Згенеровано ШІ",
3547
3623
  "plannerHeadings": "За заголовками",
3548
- "intoFrame": "до {frame}",
3549
3624
  "asTopLevel": "як нові фрейми верхнього рівня",
3550
3625
  "buildingPlan": "Створення плану…",
3551
3626
  "spawnOntoBoard": "Створити на дошці",
@@ -5255,8 +5330,8 @@
5255
5330
  },
5256
5331
  "environmentWizard": {
5257
5332
  "progress": "Крок {index} з {total}",
5258
- "title": "Налаштувати тестове середовище",
5259
- "subtitle": "Виявіть, перегляньте та збережіть рецепт Docker Compose, щоб Deployer його забезпечив.",
5333
+ "title": "Налаштування середовища Docker Compose",
5334
+ "subtitle": "Створіть рецепт Docker Compose, з якого піднімаються тестові середовища сервісу: сканування репозиторію, перегляд, попередні перевірки, збереження.",
5260
5335
  "recommended": "рекомендовано",
5261
5336
  "steps": {
5262
5337
  "pick": "Обрати сервіс",
@@ -5266,6 +5341,7 @@
5266
5341
  },
5267
5342
  "pick": {
5268
5343
  "intro": "Оберіть сервіс, для якого налаштувати середовище Docker Compose.",
5344
+ "scope": "Змінюється лише вибраний сервіс. Запустіть це пізніше ще раз, щоб відредагувати його рецепт.",
5269
5345
  "empty": "Сервісів ще немає. Спершу додайте сервіс."
5270
5346
  },
5271
5347
  "review": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.176.0",
3
+ "version": "0.178.1",
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.186.0"
43
+ "@cat-factory/contracts": "0.188.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",