@cat-factory/app 0.260.1 → 0.261.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.
- package/app/components/auth/LoginScreen.vue +4 -3
- package/app/components/settings/ConnectionTestVerdict.vue +62 -0
- package/app/components/settings/InfraHandlersConfigurator.logic.spec.ts +64 -0
- package/app/components/settings/InfraHandlersConfigurator.logic.ts +41 -0
- package/app/components/settings/InfraHandlersConfigurator.vue +36 -9
- package/app/components/settings/KubernetesEngineForm.vue +24 -7
- package/app/components/settings/KubernetesEnvironmentForm.vue +20 -7
- package/app/components/settings/McpAuthorizeScreen.vue +262 -0
- package/app/components/settings/ProviderConnectionTab.vue +3 -7
- package/app/components/settings/ProviderManifestEditor.vue +3 -7
- package/app/composables/api/mcpAuthorization.ts +30 -0
- package/app/composables/useApi.ts +2 -0
- package/app/composables/useServiceAccountTokenProblem.ts +52 -0
- package/app/pages/mcp-authorize.vue +7 -0
- package/app/stores/auth/session.ts +14 -2
- package/app/stores/ui/k3sDeepLink.spec.ts +79 -0
- package/app/stores/ui/modals.ts +25 -2
- package/app/types/providerConnections.ts +9 -0
- package/app/utils/connectionFailures.ts +32 -0
- package/app/utils/postSignIn.spec.ts +29 -0
- package/app/utils/postSignIn.ts +29 -0
- package/i18n/locales/de.json +57 -0
- package/i18n/locales/en.json +57 -0
- package/i18n/locales/es.json +57 -0
- package/i18n/locales/fr.json +57 -0
- package/i18n/locales/he.json +57 -0
- package/i18n/locales/it.json +57 -0
- package/i18n/locales/ja.json +57 -0
- package/i18n/locales/pl.json +57 -0
- package/i18n/locales/tr.json +57 -0
- package/i18n/locales/uk.json +57 -0
- package/package.json +2 -2
package/i18n/locales/pl.json
CHANGED
|
@@ -2575,6 +2575,45 @@
|
|
|
2575
2575
|
}
|
|
2576
2576
|
}
|
|
2577
2577
|
},
|
|
2578
|
+
"mcpAuthorize": {
|
|
2579
|
+
"title": "Połączyć {client}?",
|
|
2580
|
+
"subtitle": "Podaje się za {client}, a ta instalacja odeśle go do {origin}.",
|
|
2581
|
+
"workspace": {
|
|
2582
|
+
"label": "Tablica, na której będzie działać"
|
|
2583
|
+
},
|
|
2584
|
+
"scopeLabel": "Co będzie mógł robić",
|
|
2585
|
+
"scopeHint": "Każdy poziom obejmuje poprzednie.",
|
|
2586
|
+
"scope": {
|
|
2587
|
+
"read": {
|
|
2588
|
+
"label": "Tylko odczyt",
|
|
2589
|
+
"description": "Podgląd usług, zadań, potoków i uruchomień."
|
|
2590
|
+
},
|
|
2591
|
+
"write": {
|
|
2592
|
+
"label": "Odczyt i zapis",
|
|
2593
|
+
"description": "Dodatkowo tworzenie i uruchamianie zadań."
|
|
2594
|
+
},
|
|
2595
|
+
"decide": {
|
|
2596
|
+
"label": "Odczyt, zapis i decyzje",
|
|
2597
|
+
"description": "Dodatkowo odpowiadanie na pytania, na które czeka wstrzymane uruchomienie."
|
|
2598
|
+
},
|
|
2599
|
+
"admin": {
|
|
2600
|
+
"label": "Pełny dostęp",
|
|
2601
|
+
"description": "Dodatkowo usuwanie zadań i reagowanie na powiadomienia, co może scalić pull request."
|
|
2602
|
+
}
|
|
2603
|
+
},
|
|
2604
|
+
"requestedScope": "{client} poprosił o {scope}. Wybierz tę opcję powyżej tylko wtedy, gdy naprawdę chcesz jej udzielić.",
|
|
2605
|
+
"approve": "Połącz",
|
|
2606
|
+
"deny": "Anuluj",
|
|
2607
|
+
"back": "Powrót do aplikacji",
|
|
2608
|
+
"noWorkspaces": "Nie masz jeszcze tablicy, z którą można to połączyć.",
|
|
2609
|
+
"revokeHint": "Zostanie wydany klucz API, który w każdej chwili możesz unieważnić w ustawieniach tablicy.",
|
|
2610
|
+
"error": {
|
|
2611
|
+
"title": "Nie udało się skonfigurować tego połączenia",
|
|
2612
|
+
"noRequest": "Ta strona została otwarta bez żądania autoryzacji. Rozpocznij łączenie w swoim hoście MCP.",
|
|
2613
|
+
"expired": "To żądanie autoryzacji jest nieprawidłowe lub wygasło. Rozpocznij łączenie ponownie w swoim hoście MCP.",
|
|
2614
|
+
"failed": "Nie udało się zapisać decyzji. Rozpocznij łączenie ponownie w swoim hoście MCP."
|
|
2615
|
+
}
|
|
2616
|
+
},
|
|
2578
2617
|
"settings": {
|
|
2579
2618
|
"modelConfiguration": {
|
|
2580
2619
|
"title": "Konfiguracja modeli",
|
|
@@ -2705,6 +2744,19 @@
|
|
|
2705
2744
|
"button": "Przetestuj połączenie",
|
|
2706
2745
|
"ok": "Połączenie poprawne",
|
|
2707
2746
|
"failed": "Połączenie nieudane",
|
|
2747
|
+
"causes": {
|
|
2748
|
+
"refused": "Nic nie nasłuchuje pod tym adresem: połączenie zostało odrzucone.",
|
|
2749
|
+
"dns": "Ta nazwa hosta nie jest rozwiązywana z tego wdrożenia.",
|
|
2750
|
+
"timeout": "Nie nadeszła żadna odpowiedź przed upływem czasu testu.",
|
|
2751
|
+
"aborted": "Żądanie zostało anulowane, zanim nadeszła odpowiedź.",
|
|
2752
|
+
"unreachable": "Z tego wdrożenia nie ma trasy sieciowej do tego adresu.",
|
|
2753
|
+
"reset": "Połączenie zostało zamknięte, zanim nadeszła odpowiedź.",
|
|
2754
|
+
"tlsUntrusted": "To wdrożenie nie ufa certyfikatowi TLS.",
|
|
2755
|
+
"tlsExpired": "Certyfikat TLS jest poza okresem swojej ważności.",
|
|
2756
|
+
"tlsHostname": "Certyfikat TLS nie został wystawiony dla tej nazwy hosta.",
|
|
2757
|
+
"tlsProtocol": "Uzgadnianie TLS nie powiodło się.",
|
|
2758
|
+
"invalidHeader": "Nie udało się zbudować żądania: dane uwierzytelniające zawierają znak, którego nagłówek HTTP nie może przenieść."
|
|
2759
|
+
},
|
|
2708
2760
|
"warningsTitle": "Braki w tej konfiguracji",
|
|
2709
2761
|
"warnings": {
|
|
2710
2762
|
"runner_manifest_no_release": "Brak szablonu release: anulowanie przebiegu nie może przekazać puli, że ma zatrzymać zadanie, więc osierocone zadanie zajmuje swojego runnera, dopóki pula sama go nie odzyska.",
|
|
@@ -2720,6 +2772,11 @@
|
|
|
2720
2772
|
"removed": "Połączenie usunięte",
|
|
2721
2773
|
"removeFailed": "Nie udało się usunąć połączenia"
|
|
2722
2774
|
},
|
|
2775
|
+
"serviceAccountToken": {
|
|
2776
|
+
"whitespace": "Ten token zawiera spację lub znak nowego wiersza, czego token typu bearer nigdy nie ma. Najprawdopodobniej został skopiowany przez zawinięty wiersz w terminalu. Skopiuj go ponownie jako jeden nieprzerwany wiersz.",
|
|
2777
|
+
"base64Encoded": "To wygląda na wartość base64 z pola .data.token obiektu Secret, a nie na sam token. Najpierw ją zdekoduj, na przykład poleceniem base64 -d.",
|
|
2778
|
+
"notAJwt": "To nie wygląda na token ServiceAccount, który jest tokenem JWT złożonym z trzech części oddzielonych kropkami. Sprawdź, czy skopiowano całą wartość. Zignoruj to ostrzeżenie, jeśli Twój klaster używa statycznych tokenów bearer."
|
|
2779
|
+
},
|
|
2723
2780
|
"kubernetesEnv": {
|
|
2724
2781
|
"label": "Nazwa",
|
|
2725
2782
|
"labelPlaceholder": "Klaster podglądu",
|
package/i18n/locales/tr.json
CHANGED
|
@@ -2575,6 +2575,45 @@
|
|
|
2575
2575
|
}
|
|
2576
2576
|
}
|
|
2577
2577
|
},
|
|
2578
|
+
"mcpAuthorize": {
|
|
2579
|
+
"title": "{client} bağlansın mı?",
|
|
2580
|
+
"subtitle": "Kendisini {client} olarak tanıtıyor ve bu kurulum onu {origin} adresine geri gönderecek.",
|
|
2581
|
+
"workspace": {
|
|
2582
|
+
"label": "Üzerinde işlem yapabileceği pano"
|
|
2583
|
+
},
|
|
2584
|
+
"scopeLabel": "Neler yapabilecek",
|
|
2585
|
+
"scopeHint": "Her düzey kendisinden öncekileri de kapsar.",
|
|
2586
|
+
"scope": {
|
|
2587
|
+
"read": {
|
|
2588
|
+
"label": "Yalnızca okuma",
|
|
2589
|
+
"description": "Servisleri, görevleri, hatları ve çalışmaları görüntüler."
|
|
2590
|
+
},
|
|
2591
|
+
"write": {
|
|
2592
|
+
"label": "Okuma ve yazma",
|
|
2593
|
+
"description": "Ayrıca görev oluşturur ve başlatır."
|
|
2594
|
+
},
|
|
2595
|
+
"decide": {
|
|
2596
|
+
"label": "Okuma, yazma ve karar",
|
|
2597
|
+
"description": "Ayrıca duraklatılmış bir çalışmanın beklediği soruları yanıtlar."
|
|
2598
|
+
},
|
|
2599
|
+
"admin": {
|
|
2600
|
+
"label": "Tam erişim",
|
|
2601
|
+
"description": "Ayrıca görev siler ve bildirimlere işlem uygular; bu bir pull request'i birleştirebilir."
|
|
2602
|
+
}
|
|
2603
|
+
},
|
|
2604
|
+
"requestedScope": "{client} {scope} istedi. Bunu gerçekten vermek istiyorsanız yukarıdan o seçeneği seçin.",
|
|
2605
|
+
"approve": "Bağla",
|
|
2606
|
+
"deny": "Vazgeç",
|
|
2607
|
+
"back": "Uygulamaya dön",
|
|
2608
|
+
"noWorkspaces": "Bunu bağlayabileceğiniz bir pano henüz yok.",
|
|
2609
|
+
"revokeHint": "Bu işlem, pano ayarlarından istediğiniz zaman iptal edebileceğiniz bir API anahtarı oluşturur.",
|
|
2610
|
+
"error": {
|
|
2611
|
+
"title": "Bu bağlantı kurulamadı",
|
|
2612
|
+
"noRequest": "Bu sayfa bir yetkilendirme isteği olmadan açıldı. Bağlantıyı MCP istemcinizden başlatın.",
|
|
2613
|
+
"expired": "Bu yetkilendirme isteği geçersiz veya süresi dolmuş. Bağlantıyı MCP istemcinizden yeniden başlatın.",
|
|
2614
|
+
"failed": "Karar kaydedilemedi. Bağlantıyı MCP istemcinizden yeniden başlatın."
|
|
2615
|
+
}
|
|
2616
|
+
},
|
|
2578
2617
|
"settings": {
|
|
2579
2618
|
"modelConfiguration": {
|
|
2580
2619
|
"title": "Model Yapılandırması",
|
|
@@ -2815,6 +2854,11 @@
|
|
|
2815
2854
|
"blurb": "Cloudflare Containers kullanılmadığında kodlama ajanlarının çalıştığı yer. Bir self-hosted runner havuzu (kendi zamanlayıcınız) veya bir Kubernetes kümesi seçin, ardından uç noktasını ve kimlik bilgilerini yapılandırın."
|
|
2816
2855
|
}
|
|
2817
2856
|
},
|
|
2857
|
+
"serviceAccountToken": {
|
|
2858
|
+
"whitespace": "Bu belirteç bir boşluk ya da satır sonu içeriyor; taşıyıcı belirteçlerde bu asla bulunmaz. Büyük olasılıkla terminalde kaydırılmış bir satırın üzerinden kopyalanmış. Tek ve kesintisiz bir satır olarak yeniden kopyalayın.",
|
|
2859
|
+
"base64Encoded": "Bu, belirtecin kendisi değil, Secret nesnesinin .data.token alanındaki base64 değeri gibi görünüyor. Önce çözün, örneğin base64 -d ile.",
|
|
2860
|
+
"notAJwt": "Bu, noktayla ayrılmış üç bölümden oluşan bir JWT olan ServiceAccount belirtecine benzemiyor. Değerin tamamının kopyalandığını doğrulayın. Kümeniz statik taşıyıcı belirteç kullanıyorsa bu uyarıyı yoksayın."
|
|
2861
|
+
},
|
|
2818
2862
|
"kubernetesEnv": {
|
|
2819
2863
|
"label": "Ad",
|
|
2820
2864
|
"labelPlaceholder": "Önizleme kümesi",
|
|
@@ -2901,6 +2945,19 @@
|
|
|
2901
2945
|
"button": "Bağlantıyı test et",
|
|
2902
2946
|
"ok": "Bağlantı tamam",
|
|
2903
2947
|
"failed": "Bağlantı başarısız",
|
|
2948
|
+
"causes": {
|
|
2949
|
+
"refused": "Bu adreste dinleyen bir şey yok: bağlantı reddedildi.",
|
|
2950
|
+
"dns": "Bu ana bilgisayar adı bu kurulumdan çözümlenemiyor.",
|
|
2951
|
+
"timeout": "Test zaman aşımına uğrayana kadar yanıt gelmedi.",
|
|
2952
|
+
"aborted": "Yanıt gelmeden önce istek iptal edildi.",
|
|
2953
|
+
"unreachable": "Bu kurulumdan bu adrese ağ yolu yok.",
|
|
2954
|
+
"reset": "Yanıt gelmeden önce bağlantı kapatıldı.",
|
|
2955
|
+
"tlsUntrusted": "Bu kurulum TLS sertifikasına güvenmiyor.",
|
|
2956
|
+
"tlsExpired": "TLS sertifikası geçerlilik süresinin dışında.",
|
|
2957
|
+
"tlsHostname": "TLS sertifikası bu ana bilgisayar adı için verilmemiş.",
|
|
2958
|
+
"tlsProtocol": "TLS el sıkışması başarısız oldu.",
|
|
2959
|
+
"invalidHeader": "İstek oluşturulamadı: kimlik bilgisi, bir HTTP başlığının taşıyamayacağı bir karakter içeriyor."
|
|
2960
|
+
},
|
|
2904
2961
|
"warningsTitle": "Bu yapılandırmadaki eksikler",
|
|
2905
2962
|
"warnings": {
|
|
2906
2963
|
"runner_manifest_no_release": "Release şablonu yok: bir çalıştırma iptal edildiğinde havuza işi durdurması söylenemez, bu yüzden sahipsiz kalan iş, havuz onu kendi kendine geri alana kadar runner'ını meşgul tutar.",
|
package/i18n/locales/uk.json
CHANGED
|
@@ -2575,6 +2575,45 @@
|
|
|
2575
2575
|
}
|
|
2576
2576
|
}
|
|
2577
2577
|
},
|
|
2578
|
+
"mcpAuthorize": {
|
|
2579
|
+
"title": "Підключити {client}?",
|
|
2580
|
+
"subtitle": "Він представляється як {client}, і це розгортання поверне його на {origin}.",
|
|
2581
|
+
"workspace": {
|
|
2582
|
+
"label": "Дошка, на якій він зможе діяти"
|
|
2583
|
+
},
|
|
2584
|
+
"scopeLabel": "Що йому дозволено",
|
|
2585
|
+
"scopeHint": "Кожен рівень включає попередні.",
|
|
2586
|
+
"scope": {
|
|
2587
|
+
"read": {
|
|
2588
|
+
"label": "Лише читання",
|
|
2589
|
+
"description": "Переглядати сервіси, завдання, конвеєри та запуски."
|
|
2590
|
+
},
|
|
2591
|
+
"write": {
|
|
2592
|
+
"label": "Читання та запис",
|
|
2593
|
+
"description": "А також створювати й запускати завдання."
|
|
2594
|
+
},
|
|
2595
|
+
"decide": {
|
|
2596
|
+
"label": "Читання, запис і рішення",
|
|
2597
|
+
"description": "А також відповідати на питання, на які чекає призупинений запуск."
|
|
2598
|
+
},
|
|
2599
|
+
"admin": {
|
|
2600
|
+
"label": "Повний доступ",
|
|
2601
|
+
"description": "А також видаляти завдання й діяти за сповіщеннями, що може злити пулреквест."
|
|
2602
|
+
}
|
|
2603
|
+
},
|
|
2604
|
+
"requestedScope": "{client} запросив {scope}. Обирайте цей варіант вище, лише якщо ви справді хочете його надати.",
|
|
2605
|
+
"approve": "Підключити",
|
|
2606
|
+
"deny": "Скасувати",
|
|
2607
|
+
"back": "Повернутися до застосунку",
|
|
2608
|
+
"noWorkspaces": "У вас поки немає дошки, до якої це можна підключити.",
|
|
2609
|
+
"revokeHint": "Буде видано ключ API, який ви будь-коли можете відкликати в налаштуваннях дошки.",
|
|
2610
|
+
"error": {
|
|
2611
|
+
"title": "Не вдалося налаштувати це підключення",
|
|
2612
|
+
"noRequest": "Цю сторінку відкрито без запиту авторизації. Почніть підключення у своєму хості MCP.",
|
|
2613
|
+
"expired": "Цей запит авторизації недійсний або застарів. Почніть підключення знову у своєму хості MCP.",
|
|
2614
|
+
"failed": "Не вдалося зберегти рішення. Почніть підключення знову у своєму хості MCP."
|
|
2615
|
+
}
|
|
2616
|
+
},
|
|
2578
2617
|
"settings": {
|
|
2579
2618
|
"modelConfiguration": {
|
|
2580
2619
|
"title": "Налаштування моделей",
|
|
@@ -2705,6 +2744,19 @@
|
|
|
2705
2744
|
"button": "Перевірити підключення",
|
|
2706
2745
|
"ok": "Підключення в порядку",
|
|
2707
2746
|
"failed": "Не вдалося підключитися",
|
|
2747
|
+
"causes": {
|
|
2748
|
+
"refused": "За цією адресою ніщо не слухає: з'єднання відхилено.",
|
|
2749
|
+
"dns": "Це ім'я хоста не розпізнається з цього розгортання.",
|
|
2750
|
+
"timeout": "Відповідь не надійшла до завершення часу перевірки.",
|
|
2751
|
+
"aborted": "Запит скасовано, перш ніж надійшла відповідь.",
|
|
2752
|
+
"unreachable": "З цього розгортання немає мережевого маршруту до цієї адреси.",
|
|
2753
|
+
"reset": "З'єднання закрито, перш ніж надійшла відповідь.",
|
|
2754
|
+
"tlsUntrusted": "Це розгортання не довіряє сертифікату TLS.",
|
|
2755
|
+
"tlsExpired": "Сертифікат TLS поза строком дії.",
|
|
2756
|
+
"tlsHostname": "Сертифікат TLS видано не для цього імені хоста.",
|
|
2757
|
+
"tlsProtocol": "Рукостискання TLS не вдалося.",
|
|
2758
|
+
"invalidHeader": "Не вдалося сформувати запит: дані для входу містять символ, який заголовок HTTP не може передати."
|
|
2759
|
+
},
|
|
2708
2760
|
"warningsTitle": "Прогалини в цій конфігурації",
|
|
2709
2761
|
"warnings": {
|
|
2710
2762
|
"runner_manifest_no_release": "Немає шаблону release: скасування запуску не може повідомити пулу, що завдання треба зупинити, тож осиротіле завдання займає свій раннер, доки пул не забере його сам.",
|
|
@@ -2720,6 +2772,11 @@
|
|
|
2720
2772
|
"removed": "Підключення видалено",
|
|
2721
2773
|
"removeFailed": "Не вдалося видалити підключення"
|
|
2722
2774
|
},
|
|
2775
|
+
"serviceAccountToken": {
|
|
2776
|
+
"whitespace": "Цей токен містить пробіл або розрив рядка, чого в токені-носії ніколи не буває. Найімовірніше, його скопійовано через перенесений рядок у терміналі. Скопіюйте його ще раз одним суцільним рядком.",
|
|
2777
|
+
"base64Encoded": "Це схоже на значення в base64 з поля .data.token об'єкта Secret, а не на сам токен. Спершу розкодуйте його, наприклад за допомогою base64 -d.",
|
|
2778
|
+
"notAJwt": "Це не схоже на токен ServiceAccount, який є JWT із трьох частин, розділених крапками. Переконайтеся, що скопійовано все значення. Знехтуйте цим попередженням, якщо ваш кластер використовує статичні токени-носії."
|
|
2779
|
+
},
|
|
2723
2780
|
"kubernetesEnv": {
|
|
2724
2781
|
"label": "Назва",
|
|
2725
2782
|
"labelPlaceholder": "Кластер попереднього перегляду",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.261.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.41",
|
|
42
42
|
"wretch": "^3.0.9",
|
|
43
|
-
"@cat-factory/contracts": "0.
|
|
43
|
+
"@cat-factory/contracts": "0.292.1"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@toad-contracts/testing": "0.3.2",
|