@cat-factory/app 0.75.2 → 0.76.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.
@@ -1,4 +1,5 @@
1
1
  import {
2
+ detectFrontendConfigContract,
2
3
  detectServiceProvisioningContract,
3
4
  listEnvironmentHandlersContract,
4
5
  listEnvironmentUserHandlersContract,
@@ -12,6 +13,7 @@ import {
12
13
  upsertEnvironmentUserHandlerContract,
13
14
  } from '@cat-factory/contracts'
14
15
  import type {
16
+ DetectFrontendConfigInput,
15
17
  DetectServiceProvisioningInput,
16
18
  ProvisionType,
17
19
  RegisterEnvironmentHandlerInput,
@@ -47,6 +49,10 @@ export function infraHandlersApi({ send, ws }: ApiContext) {
47
49
  detectServiceProvisioning: (workspaceId: string, body: DetectServiceProvisioningInput) =>
48
50
  send(detectServiceProvisioningContract, { pathPrefix: ws(workspaceId), body }),
49
51
 
52
+ // Auto-detect a non-binding recommended frontend config from a frontend repo.
53
+ detectFrontendConfig: (workspaceId: string, body: DetectFrontendConfigInput) =>
54
+ send(detectFrontendConfigContract, { pathPrefix: ws(workspaceId), body }),
55
+
50
56
  // Generate/fix a service's custom manifest via the fixer coding agent (async repair run).
51
57
  repairCustomManifest: (workspaceId: string, body: RepairCustomManifestInput) =>
52
58
  send(repairCustomManifestContract, { pathPrefix: ws(workspaceId), body }),
@@ -2,6 +2,7 @@ import { defineStore } from 'pinia'
2
2
  import { ref, type Ref } from 'vue'
3
3
  import type {
4
4
  CustomManifestType,
5
+ DetectFrontendConfigInput,
5
6
  DetectServiceProvisioningInput,
6
7
  EnvironmentHandlerView,
7
8
  ProvisionType,
@@ -113,6 +114,15 @@ export const useInfraConfigStore = defineStore('infraConfig', () => {
113
114
  return api.detectServiceProvisioning(ws.requireId(), input)
114
115
  }
115
116
 
117
+ /**
118
+ * Auto-detect a NON-BINDING recommended frontend config from a frontend repo. The SPA prefills a
119
+ * preview the user applies; nothing is persisted server-side. Pure repo introspection.
120
+ */
121
+ async function detectFrontendConfig(input: DetectFrontendConfigInput) {
122
+ const ws = useWorkspaceStore()
123
+ return api.detectFrontendConfig(ws.requireId(), input)
124
+ }
125
+
116
126
  /**
117
127
  * Generate (or fix) a service's custom manifest via the fixer coding agent. Dispatches a
118
128
  * durable async repair run and returns immediately with `usedAgent`/`repairJobId`; the run is
@@ -192,6 +202,7 @@ export const useInfraConfigStore = defineStore('infraConfig', () => {
192
202
  registerHandler,
193
203
  testHandler,
194
204
  detectProvisioning,
205
+ detectFrontendConfig,
195
206
  repairCustomManifest,
196
207
  unregisterHandler,
197
208
  upsertCustomType,
@@ -37,6 +37,8 @@ export type {
37
37
  FrontendPackageManager,
38
38
  FrontendServeMode,
39
39
  FrontendEnvInjection,
40
+ FrontendConfigRecommendation,
41
+ FrontendDetectionNote,
40
42
  AgentConfigOption,
41
43
  AgentConfigDescriptor,
42
44
  TestConcernSeverity,
@@ -485,14 +485,37 @@
485
485
  "frontendConfig": {
486
486
  "title": "Frontend",
487
487
  "hint": "How to build, serve, and mock this frontend for a self-contained UI test. Bindings below link it to the backend services it calls.",
488
+ "detect": {
489
+ "title": "Detect from repo",
490
+ "button": "Detect",
491
+ "hint": "Read the linked repo and propose a config to review before applying. Nothing is saved until you apply.",
492
+ "error": "Couldn't read the repo. Check the frontend is linked to a connected repository.",
493
+ "none": "Nothing frontend-shaped was detected. Set the frontend directory (for a monorepo) or fill the fields in manually.",
494
+ "apply": "Apply",
495
+ "dismiss": "Dismiss",
496
+ "confidenceHigh": "sure",
497
+ "confidenceLow": "guess"
498
+ },
499
+ "groups": {
500
+ "build": "Build",
501
+ "serve": "Serve",
502
+ "mocking": "Mocking",
503
+ "envInjection": "Env injection",
504
+ "bindings": "Backend bindings",
505
+ "preview": "Preview"
506
+ },
488
507
  "packageManager": "Package manager",
508
+ "directory": "Frontend directory",
509
+ "directoryHint": "The frontend app's subfolder in the repo (a monorepo, e.g. frontend/). Leave empty if the app is at the repo root.",
489
510
  "installCommand": "Install command",
490
511
  "buildScript": "Build script",
491
512
  "outputDir": "Output directory",
492
513
  "serveMode": "Serve mode",
493
514
  "serveStatic": "Static",
494
515
  "serveCommand": "Command",
495
- "serveModeHint": "Static serves the build output directory; Command runs a package.json script (e.g. preview).",
516
+ "serveStaticDesc": "serves the built output directory as static files. Cheapest for a UI test of a fully built app.",
517
+ "serveCommandDesc": "runs a package.json script (e.g. preview) to serve the app, for builds that need a running server.",
518
+ "serveEnvAxisNote": "Separate from Env injection (build-time vs runtime) below, which controls how backend URLs reach the app, not how it is served.",
496
519
  "serveScript": "Serve script",
497
520
  "servePort": "Serve port",
498
521
  "mockMappingsPath": "Mock mappings path",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "Frontend",
444
444
  "hint": "Cómo compilar, servir y simular este frontend para una prueba de interfaz autónoma. Las vinculaciones de abajo lo conectan con los servicios de backend a los que llama.",
445
+ "detect": {
446
+ "title": "Detectar del repositorio",
447
+ "button": "Detectar",
448
+ "hint": "Lee el repositorio vinculado y propone una configuración para revisar antes de aplicar. No se guarda nada hasta que la apliques.",
449
+ "error": "No se pudo leer el repositorio. Comprueba que el frontend esté vinculado a un repositorio conectado.",
450
+ "none": "No se detectó nada con forma de frontend. Indica el directorio del frontend (para un monorepo) o rellena los campos manualmente.",
451
+ "apply": "Aplicar",
452
+ "dismiss": "Descartar",
453
+ "confidenceHigh": "seguro",
454
+ "confidenceLow": "estimación"
455
+ },
456
+ "groups": {
457
+ "build": "Compilación",
458
+ "serve": "Servicio",
459
+ "mocking": "Simulación",
460
+ "envInjection": "Inyección de entorno",
461
+ "bindings": "Vinculaciones de backend",
462
+ "preview": "Vista previa"
463
+ },
445
464
  "packageManager": "Gestor de paquetes",
465
+ "directory": "Directorio del frontend",
466
+ "directoryHint": "La subcarpeta de la app frontend en el repositorio (un monorepo, p. ej. frontend/). Déjalo vacío si la app está en la raíz del repositorio.",
446
467
  "installCommand": "Comando de instalación",
447
468
  "buildScript": "Script de compilación",
448
469
  "outputDir": "Directorio de salida",
449
470
  "serveMode": "Modo de servicio",
450
471
  "serveStatic": "Estático",
451
472
  "serveCommand": "Comando",
452
- "serveModeHint": "Estático sirve el directorio de salida de la compilación; Comando ejecuta un script de package.json (p. ej. preview).",
473
+ "serveStaticDesc": "sirve el directorio de salida compilado como archivos estáticos. Lo más económico para una prueba de interfaz de una app ya compilada.",
474
+ "serveCommandDesc": "ejecuta un script de package.json (p. ej. preview) para servir la app, para compilaciones que necesitan un servidor en ejecución.",
475
+ "serveEnvAxisNote": "Distinto de la Inyección de entorno (en compilación vs. en tiempo de ejecución) de abajo, que controla cómo llegan las URL del backend a la app, no cómo se sirve.",
453
476
  "serveScript": "Script de servicio",
454
477
  "servePort": "Puerto de servicio",
455
478
  "mockMappingsPath": "Ruta de asignaciones de simulación",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "Frontend",
444
444
  "hint": "Comment compiler, servir et simuler ce frontend pour un test d'interface autonome. Les liaisons ci-dessous le relient aux services de backend qu'il appelle.",
445
+ "detect": {
446
+ "title": "Détecter depuis le dépôt",
447
+ "button": "Détecter",
448
+ "hint": "Lit le dépôt lié et propose une configuration à vérifier avant application. Rien n'est enregistré tant que vous n'appliquez pas.",
449
+ "error": "Impossible de lire le dépôt. Vérifiez que le frontend est lié à un dépôt connecté.",
450
+ "none": "Aucun élément de type frontend détecté. Indiquez le répertoire du frontend (pour un monorepo) ou renseignez les champs manuellement.",
451
+ "apply": "Appliquer",
452
+ "dismiss": "Ignorer",
453
+ "confidenceHigh": "sûr",
454
+ "confidenceLow": "estimation"
455
+ },
456
+ "groups": {
457
+ "build": "Compilation",
458
+ "serve": "Service",
459
+ "mocking": "Simulation",
460
+ "envInjection": "Injection d'environnement",
461
+ "bindings": "Liaisons backend",
462
+ "preview": "Aperçu"
463
+ },
445
464
  "packageManager": "Gestionnaire de paquets",
465
+ "directory": "Répertoire du frontend",
466
+ "directoryHint": "Le sous-dossier de l'app frontend dans le dépôt (un monorepo, p. ex. frontend/). Laissez vide si l'app est à la racine du dépôt.",
446
467
  "installCommand": "Commande d'installation",
447
468
  "buildScript": "Script de compilation",
448
469
  "outputDir": "Répertoire de sortie",
449
470
  "serveMode": "Mode de service",
450
471
  "serveStatic": "Statique",
451
472
  "serveCommand": "Commande",
452
- "serveModeHint": "Statique sert le répertoire de sortie de la compilation ; Commande exécute un script de package.json (p. ex. preview).",
473
+ "serveStaticDesc": "sert le répertoire de sortie compilé en fichiers statiques. Le plus économique pour un test d'interface d'une app entièrement compilée.",
474
+ "serveCommandDesc": "exécute un script de package.json (p. ex. preview) pour servir l'app, pour les compilations nécessitant un serveur en fonctionnement.",
475
+ "serveEnvAxisNote": "Distinct de l'Injection d'environnement (à la compilation vs à l'exécution) ci-dessous, qui contrôle comment les URL du backend atteignent l'app, pas comment elle est servie.",
453
476
  "serveScript": "Script de service",
454
477
  "servePort": "Port de service",
455
478
  "mockMappingsPath": "Chemin des mappages de simulation",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "Frontend",
444
444
  "hint": "כיצד לבנות, להגיש ולדמות את ה-frontend הזה לבדיקת ממשק עצמאית. הקישורים למטה מחברים אותו לשירותי ה-backend שהוא קורא אליהם.",
445
+ "detect": {
446
+ "title": "זהה מהמאגר",
447
+ "button": "זהה",
448
+ "hint": "קורא את המאגר המקושר ומציע תצורה לבדיקה לפני החלה. שום דבר לא נשמר עד שתחיל.",
449
+ "error": "לא ניתן לקרוא את המאגר. ודא שה-frontend מקושר למאגר מחובר.",
450
+ "none": "לא זוהה דבר בעל מבנה frontend. הגדר את תיקיית ה-frontend (עבור monorepo) או מלא את השדות ידנית.",
451
+ "apply": "החל",
452
+ "dismiss": "בטל",
453
+ "confidenceHigh": "בטוח",
454
+ "confidenceLow": "ניחוש"
455
+ },
456
+ "groups": {
457
+ "build": "בנייה",
458
+ "serve": "הגשה",
459
+ "mocking": "הדמיה",
460
+ "envInjection": "הזרקת סביבה",
461
+ "bindings": "קישורי backend",
462
+ "preview": "תצוגה מקדימה"
463
+ },
445
464
  "packageManager": "מנהל חבילות",
465
+ "directory": "תיקיית frontend",
466
+ "directoryHint": "תת-התיקייה של אפליקציית ה-frontend במאגר (monorepo, למשל frontend/). השאר ריק אם האפליקציה נמצאת בשורש המאגר.",
446
467
  "installCommand": "פקודת התקנה",
447
468
  "buildScript": "סקריפט בנייה",
448
469
  "outputDir": "תיקיית פלט",
449
470
  "serveMode": "מצב הגשה",
450
471
  "serveStatic": "סטטי",
451
472
  "serveCommand": "פקודה",
452
- "serveModeHint": "סטטי מגיש את תיקיית פלט הבנייה; פקודה מריצה סקריפט מ-package.json (למשל preview).",
473
+ "serveStaticDesc": "מגיש את תיקיית פלט הבנייה כקבצים סטטיים. הזול ביותר לבדיקת ממשק של אפליקציה בנויה במלואה.",
474
+ "serveCommandDesc": "מריץ סקריפט מ-package.json (למשל preview) כדי להגיש את האפליקציה, עבור בנייה הזקוקה לשרת פעיל.",
475
+ "serveEnvAxisNote": "נפרד מהזרקת הסביבה (בזמן בנייה מול זמן ריצה) שלמטה, השולטת כיצד כתובות ה-backend מגיעות לאפליקציה, לא כיצד היא מוגשת.",
453
476
  "serveScript": "סקריפט הגשה",
454
477
  "servePort": "פורט הגשה",
455
478
  "mockMappingsPath": "נתיב מיפויי הדמיה",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "フロントエンド",
444
444
  "hint": "自己完結型の UI テストのために、このフロントエンドをビルド、配信、モックする方法。下のバインディングは、呼び出すバックエンドサービスとフロントエンドをつなぎます。",
445
+ "detect": {
446
+ "title": "リポジトリから検出",
447
+ "button": "検出",
448
+ "hint": "リンクされたリポジトリを読み取り、適用前に確認できる設定を提案します。適用するまで何も保存されません。",
449
+ "error": "リポジトリを読み取れませんでした。フロントエンドが接続済みリポジトリにリンクされているか確認してください。",
450
+ "none": "フロントエンドらしきものは検出されませんでした。(モノレポの場合は)フロントエンドのディレクトリを指定するか、手動で入力してください。",
451
+ "apply": "適用",
452
+ "dismiss": "却下",
453
+ "confidenceHigh": "確実",
454
+ "confidenceLow": "推測"
455
+ },
456
+ "groups": {
457
+ "build": "ビルド",
458
+ "serve": "配信",
459
+ "mocking": "モック",
460
+ "envInjection": "環境変数の注入",
461
+ "bindings": "バックエンドバインディング",
462
+ "preview": "プレビュー"
463
+ },
445
464
  "packageManager": "パッケージマネージャー",
465
+ "directory": "フロントエンドのディレクトリ",
466
+ "directoryHint": "リポジトリ内のフロントエンドアプリのサブフォルダー(モノレポ、例: frontend/)。アプリがリポジトリのルートにある場合は空のままにします。",
446
467
  "installCommand": "インストールコマンド",
447
468
  "buildScript": "ビルドスクリプト",
448
469
  "outputDir": "出力ディレクトリ",
449
470
  "serveMode": "配信モード",
450
471
  "serveStatic": "静的",
451
472
  "serveCommand": "コマンド",
452
- "serveModeHint": "静的はビルド出力ディレクトリを配信します。コマンドは package.json のスクリプト(例: preview)を実行します。",
473
+ "serveStaticDesc": "ビルド出力ディレクトリを静的ファイルとして配信します。完全にビルド済みのアプリの UI テストに最も低コストです。",
474
+ "serveCommandDesc": "package.json のスクリプト(例: preview)を実行してアプリを配信します。サーバーの起動が必要なビルド向けです。",
475
+ "serveEnvAxisNote": "下の環境変数の注入(ビルド時とランタイム)とは別物で、そちらはバックエンド URL がアプリにどう届くかを制御し、配信方法ではありません。",
453
476
  "serveScript": "配信スクリプト",
454
477
  "servePort": "配信ポート",
455
478
  "mockMappingsPath": "モックマッピングのパス",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "Frontend",
444
444
  "hint": "Jak zbudować, uruchomić i zamockować ten frontend na potrzeby samodzielnego testu interfejsu. Powiązania poniżej łączą go z usługami backendu, które wywołuje.",
445
+ "detect": {
446
+ "title": "Wykryj z repozytorium",
447
+ "button": "Wykryj",
448
+ "hint": "Odczytuje połączone repozytorium i proponuje konfigurację do sprawdzenia przed zastosowaniem. Nic nie jest zapisywane, dopóki nie zastosujesz.",
449
+ "error": "Nie można odczytać repozytorium. Sprawdź, czy frontend jest połączony z podłączonym repozytorium.",
450
+ "none": "Nie wykryto niczego w kształcie frontendu. Ustaw katalog frontendu (dla monorepo) lub wypełnij pola ręcznie.",
451
+ "apply": "Zastosuj",
452
+ "dismiss": "Odrzuć",
453
+ "confidenceHigh": "pewne",
454
+ "confidenceLow": "przypuszczenie"
455
+ },
456
+ "groups": {
457
+ "build": "Budowanie",
458
+ "serve": "Serwowanie",
459
+ "mocking": "Mockowanie",
460
+ "envInjection": "Wstrzykiwanie środowiska",
461
+ "bindings": "Powiązania backendu",
462
+ "preview": "Podgląd"
463
+ },
445
464
  "packageManager": "Menedżer pakietów",
465
+ "directory": "Katalog frontendu",
466
+ "directoryHint": "Podfolder aplikacji frontendowej w repozytorium (monorepo, np. frontend/). Pozostaw puste, jeśli aplikacja jest w katalogu głównym repozytorium.",
446
467
  "installCommand": "Polecenie instalacji",
447
468
  "buildScript": "Skrypt budowania",
448
469
  "outputDir": "Katalog wyjściowy",
449
470
  "serveMode": "Tryb serwowania",
450
471
  "serveStatic": "Statyczny",
451
472
  "serveCommand": "Polecenie",
452
- "serveModeHint": "Statyczny serwuje katalog wyjściowy budowania; Polecenie uruchamia skrypt z package.json (np. preview).",
473
+ "serveStaticDesc": "serwuje zbudowany katalog wyjściowy jako pliki statyczne. Najtańsze dla testu interfejsu w pełni zbudowanej aplikacji.",
474
+ "serveCommandDesc": "uruchamia skrypt z package.json (np. preview) do serwowania aplikacji, dla kompilacji wymagających działającego serwera.",
475
+ "serveEnvAxisNote": "Osobne od Wstrzykiwania środowiska (w czasie budowania vs w czasie działania) poniżej, które kontroluje sposób, w jaki adresy URL backendu docierają do aplikacji, a nie sposób jej serwowania.",
453
476
  "serveScript": "Skrypt serwowania",
454
477
  "servePort": "Port serwowania",
455
478
  "mockMappingsPath": "Ścieżka mapowań mocków",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "Frontend",
444
444
  "hint": "Bağımsız bir arayüz testi için bu frontend'in nasıl derleneceği, sunulacağı ve taklit edileceği. Aşağıdaki bağlamalar onu çağırdığı backend hizmetlerine bağlar.",
445
+ "detect": {
446
+ "title": "Depodan algıla",
447
+ "button": "Algıla",
448
+ "hint": "Bağlı depoyu okur ve uygulamadan önce gözden geçirmeniz için bir yapılandırma önerir. Uygulayana kadar hiçbir şey kaydedilmez.",
449
+ "error": "Depo okunamadı. Frontend'in bağlı bir depoya bağlı olduğunu kontrol edin.",
450
+ "none": "Frontend biçiminde bir şey algılanmadı. Frontend dizinini ayarlayın (bir monorepo için) veya alanları elle doldurun.",
451
+ "apply": "Uygula",
452
+ "dismiss": "Yoksay",
453
+ "confidenceHigh": "kesin",
454
+ "confidenceLow": "tahmin"
455
+ },
456
+ "groups": {
457
+ "build": "Derleme",
458
+ "serve": "Sunma",
459
+ "mocking": "Taklit",
460
+ "envInjection": "Ortam enjeksiyonu",
461
+ "bindings": "Backend bağlantıları",
462
+ "preview": "Önizleme"
463
+ },
445
464
  "packageManager": "Paket yöneticisi",
465
+ "directory": "Frontend dizini",
466
+ "directoryHint": "Depodaki frontend uygulamasının alt klasörü (bir monorepo, örn. frontend/). Uygulama deponun kökündeyse boş bırakın.",
446
467
  "installCommand": "Kurulum komutu",
447
468
  "buildScript": "Derleme betiği",
448
469
  "outputDir": "Çıktı dizini",
449
470
  "serveMode": "Sunma modu",
450
471
  "serveStatic": "Statik",
451
472
  "serveCommand": "Komut",
452
- "serveModeHint": "Statik, derleme çıktı dizinini sunar; Komut, bir package.json betiğini (örn. preview) çalıştırır.",
473
+ "serveStaticDesc": "derlenen çıktı dizinini statik dosyalar olarak sunar. Tamamen derlenmiş bir uygulamanın arayüz testi için en ucuzu.",
474
+ "serveCommandDesc": "uygulamayı sunmak için bir package.json betiği (örn. preview) çalıştırır; çalışan bir sunucu gerektiren derlemeler için.",
475
+ "serveEnvAxisNote": "Aşağıdaki Ortam enjeksiyonundan (derleme zamanı vs çalışma zamanı) ayrıdır; o, backend URL'lerinin uygulamaya nasıl ulaştığını kontrol eder, nasıl sunulduğunu değil.",
453
476
  "serveScript": "Sunma betiği",
454
477
  "servePort": "Sunma bağlantı noktası",
455
478
  "mockMappingsPath": "Taklit eşleme yolu",
@@ -442,14 +442,37 @@
442
442
  "frontendConfig": {
443
443
  "title": "Frontend",
444
444
  "hint": "Як зібрати, обслуговувати та мокувати цей frontend для автономного тесту інтерфейсу. Прив'язки нижче з'єднують його з сервісами backend, які він викликає.",
445
+ "detect": {
446
+ "title": "Виявити з репозиторію",
447
+ "button": "Виявити",
448
+ "hint": "Читає підключений репозиторій і пропонує конфігурацію для перегляду перед застосуванням. Нічого не зберігається, доки ви не застосуєте.",
449
+ "error": "Не вдалося прочитати репозиторій. Перевірте, що фронтенд пов'язаний із підключеним репозиторієм.",
450
+ "none": "Нічого схожого на фронтенд не виявлено. Вкажіть каталог фронтенду (для монорепозиторію) або заповніть поля вручну.",
451
+ "apply": "Застосувати",
452
+ "dismiss": "Відхилити",
453
+ "confidenceHigh": "впевнено",
454
+ "confidenceLow": "припущення"
455
+ },
456
+ "groups": {
457
+ "build": "Збірка",
458
+ "serve": "Обслуговування",
459
+ "mocking": "Мокування",
460
+ "envInjection": "Впровадження середовища",
461
+ "bindings": "Прив'язки бекенду",
462
+ "preview": "Попередній перегляд"
463
+ },
445
464
  "packageManager": "Менеджер пакетів",
465
+ "directory": "Каталог фронтенду",
466
+ "directoryHint": "Підпапка фронтенд-застосунку в репозиторії (монорепозиторій, напр. frontend/). Залиште порожнім, якщо застосунок у корені репозиторію.",
446
467
  "installCommand": "Команда встановлення",
447
468
  "buildScript": "Скрипт збірки",
448
469
  "outputDir": "Каталог виводу",
449
470
  "serveMode": "Режим обслуговування",
450
471
  "serveStatic": "Статичний",
451
472
  "serveCommand": "Команда",
452
- "serveModeHint": "Статичний обслуговує каталог виводу збірки; Команда запускає скрипт з package.json (напр. preview).",
473
+ "serveStaticDesc": "обслуговує зібраний каталог виводу як статичні файли. Найдешевше для тесту інтерфейсу повністю зібраного застосунку.",
474
+ "serveCommandDesc": "запускає скрипт із package.json (напр. preview) для обслуговування застосунку, для збірок, що потребують запущеного сервера.",
475
+ "serveEnvAxisNote": "Відрізняється від Впровадження середовища (під час збірки чи виконання) нижче, яке керує тим, як URL бекенду потрапляють до застосунку, а не тим, як він обслуговується.",
453
476
  "serveScript": "Скрипт обслуговування",
454
477
  "servePort": "Порт обслуговування",
455
478
  "mockMappingsPath": "Шлях зіставлень моків",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.75.2",
3
+ "version": "0.76.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",
@@ -34,7 +34,7 @@
34
34
  "valibot": "^1.4.2",
35
35
  "vue": "^3.5.39",
36
36
  "wretch": "^3.0.9",
37
- "@cat-factory/contracts": "0.81.3"
37
+ "@cat-factory/contracts": "0.82.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@toad-contracts/testing": "0.3.2",