@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": "Dépôts",
112
112
  "addFromRepo": "Ajouter depuis un dépôt existant",
113
113
  "bootstrapRepo": "Initialiser un dépôt",
114
+ "models": "Modèles",
115
+ "modelProviders": "Fournisseurs de modèles",
114
116
  "integrations": "Intégrations",
115
117
  "sandbox": "Bac à sable",
116
118
  "kaizen": "Kaizen",
@@ -122,8 +124,7 @@
122
124
  "accountSettings": "Paramètres du compte",
123
125
  "operatorDashboard": "Observabilité de la plateforme",
124
126
  "reports": "Rapports",
125
- "infrastructure": "Infrastructure",
126
- "environmentSetup": "Configuration d'environnement"
127
+ "infrastructure": "Infrastructure"
127
128
  },
128
129
  "board": {
129
130
  "toast": {
@@ -1103,7 +1104,34 @@
1103
1104
  "save": "Enregistrer les vérifications",
1104
1105
  "savedToast": "Vérifications enregistrées",
1105
1106
  "saveFailed": "Impossible d'enregistrer les vérifications",
1106
- "clearFailed": "Impossible de vider les vérifications"
1107
+ "clearFailed": "Impossible de vider les vérifications",
1108
+ "detect": {
1109
+ "action": "Détecter",
1110
+ "hint": "Proposer des vérifications à partir du dépôt de ce service",
1111
+ "added": "{count} vérification ajoutée | {count} vérifications ajoutées",
1112
+ "found": "Reconnu : {ecosystems}.",
1113
+ "capped": "Certaines suggestions ont été écartées : un service accepte au plus {max} vérifications.",
1114
+ "nothingNew": "Rien à ajouter",
1115
+ "alreadyPresent": "Toutes les commandes détectées figurent déjà dans la liste.",
1116
+ "unrecognised": "Aucun écosystème connu n'a été reconnu à la racine du dépôt. Ajoutez les commandes à la main.",
1117
+ "repo_unavailable": "Aucun dépôt n'est lié à ce service, il n'y a donc rien à inspecter.",
1118
+ "failed": "Le dépôt n'a pas pu être lu"
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": "Dernières exigences intégrées",
1320
1348
  "priorDocHint": "Issu de la revue précédente. Utilisez-le comme base : modifiez la description ci-dessus et resoumettez.",
1321
1349
  "bootstrapping": "Initialisation…",
1322
- "spawnFromDocument": "Créer à partir d'un document",
1323
1350
  "viewRequirements": "Voir les exigences",
1324
1351
  "reRun": "Relancer",
1325
1352
  "run": "Exécuter",
@@ -1934,7 +1961,8 @@
1934
1961
  },
1935
1962
  "integrationBack": {
1936
1963
  "backToMySetup": "Retour à Ma configuration",
1937
- "backToIntegrations": "Retour aux Intégrations"
1964
+ "backToIntegrations": "Retour aux Intégrations",
1965
+ "backToModelProviders": "Retour aux Fournisseurs de modèles"
1938
1966
  },
1939
1967
  "commandBar": {
1940
1968
  "searchPlaceholder": "Rechercher ou exécuter une commande…",
@@ -1995,23 +2023,21 @@
1995
2023
  },
1996
2024
  "integrationsHub": {
1997
2025
  "title": "Intégrations",
1998
- "intro": "Connectez et gérez les systèmes externes que cet espace de travail peut relier.",
2026
+ "intro": "Connectez et gérez les systèmes externes optionnels que cet espace de travail peut relier. Les modèles qui font tourner vos agents se trouvent dans Fournisseurs de modèles.",
1999
2027
  "searchPlaceholder": "Rechercher des intégrations…",
2000
2028
  "noMatches": "Aucune intégration ne correspond à \"{query}\".",
2001
2029
  "getStarted": {
2002
2030
  "title": "Pour commencer",
2003
- "body": "Connectez une source de code et un fournisseur de modèles pour exécuter votre premier pipeline."
2031
+ "body": "Connectez une source de code pour que vos pipelines aient de quoi travailler."
2004
2032
  },
2005
2033
  "status": {
2006
2034
  "connected": "Connecté",
2007
- "keyConnected": "Clé connectée",
2008
2035
  "notConnected": "Non connecté",
2009
2036
  "needsAttention": "Nécessite une intervention",
2010
2037
  "disabled": "Désactivé",
2011
2038
  "recommended": "Recommandé"
2012
2039
  },
2013
2040
  "groups": {
2014
- "models": "Modèles et fournisseurs",
2015
2041
  "sourceControl": "Gestion de code source",
2016
2042
  "communication": "Communication",
2017
2043
  "documents": "Documents",
@@ -2021,16 +2047,6 @@
2021
2047
  "personal": "Personnel (vous uniquement)"
2022
2048
  },
2023
2049
  "items": {
2024
- "openrouter": {
2025
- "description": "Une seule passerelle vers plus de 300 modèles. Ajoutez votre clé et activez des modèles au même endroit."
2026
- },
2027
- "vendors": {
2028
- "label": "Fournisseurs et clés",
2029
- "description": "Abonnements LLM de l'espace de travail et clés API des fournisseurs."
2030
- },
2031
- "personalSubs": {
2032
- "label": "Abonnements personnels (Claude, ChatGPT/Codex, GLM)"
2033
- },
2034
2050
  "github": {
2035
2051
  "description": "Connectez la GitHub App de l'espace de travail, parcourez dépôts, PR et tickets."
2036
2052
  },
@@ -2070,10 +2086,6 @@
2070
2086
  "label": "Mon jeton GitHub",
2071
2087
  "description": "Un jeton d'accès personnel utilisé pour les exécutions que vous lancez (pushes, PR, CI, fusion)."
2072
2088
  },
2073
- "localRunners": {
2074
- "label": "Mes exécuteurs locaux",
2075
- "description": "Vos exécuteurs de modèles sur votre propre machine (Ollama, LM Studio, vLLM…)."
2076
- },
2077
2089
  "documentTemplates": {
2078
2090
  "label": "Modèles et exemples"
2079
2091
  },
@@ -2083,6 +2095,45 @@
2083
2095
  }
2084
2096
  }
2085
2097
  },
2098
+ "modelProvidersHub": {
2099
+ "title": "Fournisseurs de modèles",
2100
+ "intro": "Les moteurs qui font tourner vos agents. Au moins un fournisseur doit être connecté avant qu'une étape de pipeline puisse s'exécuter.",
2101
+ "searchPlaceholder": "Rechercher un fournisseur…",
2102
+ "noMatches": "Aucun fournisseur ne correspond à \"{query}\".",
2103
+ "getStarted": {
2104
+ "title": "Aucun fournisseur connecté pour l'instant",
2105
+ "body": "Les étapes d'agent ne peuvent pas s'exécuter tant qu'aucun modèle n'est accessible. Une clé OpenRouter est le moyen le plus rapide d'ouvrir un large catalogue, mais des clés de fournisseur, un abonnement personnel ou votre propre exécuteur local conviennent tout autant."
2106
+ },
2107
+ "status": {
2108
+ "connected": "Connecté",
2109
+ "keyConnected": "Clé connectée",
2110
+ "notConnected": "Non connecté",
2111
+ "recommended": "Recommandé",
2112
+ "connectedCount": "aucun connecté | {count} connecté | {count} connectés"
2113
+ },
2114
+ "groups": {
2115
+ "workspace": "Fournisseurs de l'espace de travail",
2116
+ "personal": "Personnel (vous uniquement)",
2117
+ "personalNote": "Ils appartiennent à votre compte et non à l'espace de travail, et ne servent qu'aux exécutions que vous lancez. Ils figurent aussi dans Ma configuration."
2118
+ },
2119
+ "items": {
2120
+ "openrouter": {
2121
+ "description": "Une seule passerelle vers plus de 300 modèles. Ajoutez votre clé et activez des modèles au même endroit."
2122
+ },
2123
+ "vendors": {
2124
+ "label": "Fournisseurs et clés",
2125
+ "description": "Abonnements LLM de l'espace de travail et clés API des fournisseurs."
2126
+ },
2127
+ "personalSubs": {
2128
+ "label": "Mes abonnements",
2129
+ "description": "Plans à usage individuel que vous déverrouillez avec un mot de passe personnel (Claude, GLM, Codex)."
2130
+ },
2131
+ "localRunners": {
2132
+ "label": "Mes exécuteurs locaux",
2133
+ "description": "Vos exécuteurs de modèles sur votre propre machine (Ollama, LM Studio, vLLM)."
2134
+ }
2135
+ }
2136
+ },
2086
2137
  "shortcuts": {
2087
2138
  "title": "Raccourcis clavier",
2088
2139
  "commandBar": "Ouvrir la barre de commandes",
@@ -2651,6 +2702,32 @@
2651
2702
  "removeFailed": "Impossible de supprimer le stack partagé"
2652
2703
  }
2653
2704
  },
2705
+ "composeEnvSetup": {
2706
+ "title": "Configuration guidée Docker Compose pour un service",
2707
+ "lead": "Accompagne un service dans la création de la recette Docker Compose à partir de laquelle ses environnements de test sont montés, au lieu d'écrire à la main le chemin du compose et les étapes de préparation.",
2708
+ "how": {
2709
+ "title": "Comment ça marche",
2710
+ "scan": "Analyse le dépôt lié au service à la recherche de fichiers compose, de profils, de fichiers d'environnement et de jeux de données initiales.",
2711
+ "analyse": "Exécute éventuellement l'agent analyste d'environnement pour rédiger des étapes de préparation et un contrôle de santé à partir des scripts du dépôt.",
2712
+ "preflight": "Exécute les vérifications préalables de la recette sur la machine qui la provisionnera.",
2713
+ "save": "Enregistre la recette sur le service et déclare le gestionnaire Docker Compose de l'espace de travail.",
2714
+ "outcome": "Ensuite, le Deployer monte exactement cette pile dès qu'un pipeline a besoin d'un environnement réel, et le Tester s'exécute dessus. Rien n'est appliqué tant que vous n'avez pas enregistré."
2715
+ },
2716
+ "needed": {
2717
+ "title": "Vous en avez besoin quand",
2718
+ "running": "Les tests du service exigent que l'application tourne vraiment : tests d'API ou d'interface, migrations, données initiales.",
2719
+ "compose": "Le service est provisionné via Docker Compose et n'a pas encore de recette enregistrée.",
2720
+ "setup": "Monter la pile demande plus d'une commande : profils, fichiers d'environnement, données initiales ou contrôle de disponibilité."
2721
+ },
2722
+ "notNeeded": {
2723
+ "title": "Vous pouvez l'ignorer quand",
2724
+ "inContainer": "Le pipeline se contente de linter, compiler ou lancer des tests unitaires. Cela se fait dans le conteneur de l'agent comme vérifications avant PR, sans provisionner d'environnement.",
2725
+ "otherBackend": "Le service est provisionné autrement (Kubernetes, un aperçu cloud, ou aucune infrastructure). Configurez cela plus haut.",
2726
+ "noRepo": "Le service n'a pas de dépôt lié, il n'y a donc rien à analyser."
2727
+ },
2728
+ "start": "Lancer la configuration guidée",
2729
+ "rerunHint": "Relancez-la à tout moment pour modifier une recette enregistrée."
2730
+ },
2654
2731
  "localMode": {
2655
2732
  "title": "Mode local",
2656
2733
  "intro": "Réglage de l'exécuteur de conteneurs local, stocké sur le déploiement de cette machine (il a remplacé les variables d'environnement {poolVars} / {harnessVars}). L'enregistrement redimensionne le pool à chaud en direct, sans redémarrage nécessaire; les exécutions en cours conservent le conteneur qu'elles détiennent déjà.",
@@ -3520,7 +3597,6 @@
3520
3597
  "title": "Importer depuis une source de documents",
3521
3598
  "connectFirst": "Connectez d'abord une source de documents.",
3522
3599
  "connectSource": "Connecter {source}",
3523
- "spawningInto": "Génération dans {frame}",
3524
3600
  "sourceLabel": "Source",
3525
3601
  "refLabel": "URL ou ID de la page",
3526
3602
  "importButton": "Importer",
@@ -3545,7 +3621,6 @@
3545
3621
  "title": "Aperçu de la structure",
3546
3622
  "plannerLlm": "Généré par l'IA",
3547
3623
  "plannerHeadings": "À partir des titres",
3548
- "intoFrame": "dans {frame}",
3549
3624
  "asTopLevel": "en nouveaux cadres de premier niveau",
3550
3625
  "buildingPlan": "Création du plan…",
3551
3626
  "spawnOntoBoard": "Générer sur le tableau",
@@ -5255,8 +5330,8 @@
5255
5330
  },
5256
5331
  "environmentWizard": {
5257
5332
  "progress": "Étape {index} sur {total}",
5258
- "title": "Configurer un environnement de test",
5259
- "subtitle": "Détectez, vérifiez et enregistrez une recette Docker Compose pour que le Deployer la provisionne.",
5333
+ "title": "Configuration d'environnement Docker Compose",
5334
+ "subtitle": "Créez la recette Docker Compose à partir de laquelle les environnements de test d'un service sont montés : analyse du dépôt, revue, vérifications préalables, enregistrement.",
5260
5335
  "recommended": "recommandé",
5261
5336
  "steps": {
5262
5337
  "pick": "Choisir le service",
@@ -5266,6 +5341,7 @@
5266
5341
  },
5267
5342
  "pick": {
5268
5343
  "intro": "Choisissez le service pour lequel configurer un environnement Docker Compose.",
5344
+ "scope": "Seul le service choisi est modifié. Relancez ceci plus tard pour modifier sa recette.",
5269
5345
  "empty": "Aucun service pour l'instant. Ajoutez-en un d'abord."
5270
5346
  },
5271
5347
  "review": {
@@ -111,6 +111,8 @@
111
111
  "repositories": "מאגרים",
112
112
  "addFromRepo": "הוסף ממאגר קיים",
113
113
  "bootstrapRepo": "אתחל מאגר",
114
+ "models": "מודלים",
115
+ "modelProviders": "ספקי מודלים",
114
116
  "integrations": "אינטגרציות",
115
117
  "infrastructure": "תשתית",
116
118
  "sandbox": "ארגז חול",
@@ -122,8 +124,7 @@
122
124
  "modelConfiguration": "תצורת מודל",
123
125
  "accountSettings": "הגדרות חשבון",
124
126
  "operatorDashboard": "תצפית על הפלטפורמה",
125
- "reports": "דוחות",
126
- "environmentSetup": "הגדרת סביבה"
127
+ "reports": "דוחות"
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} בדיקות",
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 של סביבת העבודה, עיין במאגרים, ב-PR ובבעיות."
2036
2052
  },
@@ -2070,10 +2086,6 @@
2070
2086
  "label": "אסימון ה-GitHub שלי",
2071
2087
  "description": "אסימון גישה אישי המשמש להרצות שאתה מתחיל (דחיפות, 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} מחוברים"
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": "פתח את שורת הפקודות",
@@ -2791,6 +2842,32 @@
2791
2842
  "removeFailed": "לא ניתן למחוק את המקבץ המשותף"
2792
2843
  }
2793
2844
  },
2845
+ "composeEnvSetup": {
2846
+ "title": "הגדרה מונחית של Docker Compose לשירות",
2847
+ "lead": "מלווה שירות אחד ביצירת מתכון ה-Docker Compose שממנו מוקמות סביבות הבדיקה שלו, במקום לכתוב ביד את נתיב ה-compose ואת שלבי ההתקנה.",
2848
+ "how": {
2849
+ "title": "איך זה עובד",
2850
+ "scan": "סורק את המאגר המקושר של השירות אחר קובצי compose, פרופילים, קובצי env ומאגרי נתוני זריעה.",
2851
+ "analyse": "מריץ באופן אופציונלי את סוכן ניתוח הסביבה כדי לנסח שלבי התקנה ובדיקת בריאות מתוך הסקריפטים של המאגר עצמו.",
2852
+ "preflight": "מריץ את בדיקות המוכנות של המתכון על המכונה שתקים אותו.",
2853
+ "save": "שומר את המתכון על השירות ורושם את מטפל ה-Docker Compose של סביבת העבודה.",
2854
+ "outcome": "מכאן ואילך ה-Deployer מקים בדיוק את הערימה הזו בכל פעם שצינור זקוק לסביבה חיה, וה-Tester רץ מולה. שום דבר לא מוחל עד שתשמור."
2855
+ },
2856
+ "needed": {
2857
+ "title": "אתה זקוק לזה כאשר",
2858
+ "running": "הבדיקות של השירות דורשות שהאפליקציה תרוץ באמת: בדיקות API או ממשק, מיגרציות, נתוני זריעה.",
2859
+ "compose": "השירות מוקם באמצעות Docker Compose ועדיין אין לו מתכון שמור.",
2860
+ "setup": "הקמת הערימה דורשת יותר מפקודה אחת: פרופילים, קובצי env, נתוני זריעה או בדיקת מוכנות."
2861
+ },
2862
+ "notNeeded": {
2863
+ "title": "אפשר לדלג על זה כאשר",
2864
+ "inContainer": "הצינור רק מריץ lint, בונה או מריץ בדיקות יחידה. אלה רצות בתוך מכולת הסוכן כבדיקות אימות לפני PR, בלי להקים סביבה.",
2865
+ "otherBackend": "השירות מוקם בדרך אחרת (Kubernetes, תצוגה מקדימה בענן, או בלי תשתית בכלל). הגדר זאת למעלה במקום.",
2866
+ "noRepo": "לשירות אין מאגר מקושר, ולכן אין מה לסרוק."
2867
+ },
2868
+ "start": "התחל הגדרה מונחית",
2869
+ "rerunHint": "אפשר להריץ שוב בכל עת כדי לשנות מתכון שמור."
2870
+ },
2794
2871
  "localMode": {
2795
2872
  "title": "מצב מקומי",
2796
2873
  "intro": "כוונון עבור מריץ הקונטיינרים המקומי, נשמר בפריסה של מכונה זו (הוא החליף את משתני הסביבה {poolVars} / {harnessVars}). שמירה משנה את גודל המאגר החם בזמן אמת, ללא צורך באתחול מחדש; הרצות פעילות שומרות את הקונטיינר שהן כבר מחזיקות.",
@@ -3531,7 +3608,6 @@
3531
3608
  "title": "ייבא ממקור מסמכים",
3532
3609
  "connectFirst": "חבר תחילה מקור מסמכים.",
3533
3610
  "connectSource": "חבר את {source}",
3534
- "spawningInto": "יוצר בתוך {frame}",
3535
3611
  "sourceLabel": "מקור",
3536
3612
  "refLabel": "כתובת URL או מזהה של דף",
3537
3613
  "importButton": "ייבא",
@@ -3556,7 +3632,6 @@
3556
3632
  "title": "תצוגה מקדימה של מבנה",
3557
3633
  "plannerLlm": "נוצר ע״י AI",
3558
3634
  "plannerHeadings": "מתוך כותרות",
3559
- "intoFrame": "לתוך {frame}",
3560
3635
  "asTopLevel": "כמסגרות חדשות ברמה העליונה",
3561
3636
  "buildingPlan": "בונה תוכנית…",
3562
3637
  "spawnOntoBoard": "צור על הלוח",
@@ -5266,8 +5341,8 @@
5266
5341
  },
5267
5342
  "environmentWizard": {
5268
5343
  "progress": "שלב {index} מתוך {total}",
5269
- "title": "הגדרת סביבת בדיקות",
5270
- "subtitle": "זהו, סקרו ושמרו מתכון Docker Compose כדי שה-Deployer יקצה אותו.",
5344
+ "title": "הגדרת סביבת Docker Compose",
5345
+ "subtitle": "בנה את מתכון ה-Docker Compose שממנו מוקמות סביבות הבדיקה של שירות: סריקת המאגר, סקירה, בדיקות מוכנות, שמירה.",
5271
5346
  "recommended": "מומלץ",
5272
5347
  "steps": {
5273
5348
  "pick": "בחירת שירות",
@@ -5277,6 +5352,7 @@
5277
5352
  },
5278
5353
  "pick": {
5279
5354
  "intro": "בחרו את השירות שעבורו להגדיר סביבת Docker Compose.",
5355
+ "scope": "רק השירות שתבחר משתנה. הרץ זאת שוב מאוחר יותר כדי לערוך את המתכון שלו.",
5280
5356
  "empty": "אין שירותים עדיין. הוסיפו שירות תחילה."
5281
5357
  },
5282
5358
  "review": {