@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": "Service des sorties binaires introuvable",
567
567
  "binary_output_generator_invalid": "Générateur de sorties binaires introuvable",
568
568
  "foundational_service_not_inherited": "Ce tableau a enregistré ce service",
569
+ "input_gate_not_parked": "Rien à répondre",
570
+ "input_gate_parked": "Répondez-y dans la vérification d'entrée de la tâche",
569
571
  "ticket_already_linked": "Ce ticket a déjà une tâche",
570
572
  "dry_run_not_mergeable": "Une exécution à blanc ne peut pas être fusionnée"
571
573
  },
@@ -600,6 +602,8 @@
600
602
  "binary_output_service_invalid": "Une étape qui génère des sorties binaires sélectionne un service fondamental que le catalogue de cet espace de travail ne peut pas résoudre : l’identifiant est inconnu, ou le service de stockage choisi ne porte pas la capacité asset-storage. Corrigez la sélection de l’étape ou enregistrez le service, puis relancez.",
601
603
  "binary_output_generator_invalid": "Une étape qui génère des sorties binaires sélectionne une intégration générative que ce déploiement n’enregistre pas, ou aucune des intégrations sélectionnées ne produit un type de contenu que l’étape doit livrer. Les intégrations génératives sont enregistrées dans le code du déploiement, pas dans cet espace de travail : enregistrez-la ou corrigez la sélection de l’étape, puis relancez.",
602
604
  "foundational_service_not_inherited": "L'écartement s'applique à un service hérité du compte. Cet identifiant est enregistré par ce tableau : il n'y a donc rien à écarter - supprimez plutôt l'entrée propre au tableau.",
605
+ "input_gate_not_parked": "Cette exécution n'attend plus sa vérification d'entrée. Quelqu'un y a peut-être déjà répondu, ou l'exécution a avancé.",
606
+ "input_gate_parked": "Cette exécution est en attente de sa vérification d'entrée, à laquelle la validation ne peut pas répondre. Utilisez l'avis sur l'exécution : corrigez la tâche et relancez la vérification, ou exécutez-la quand même.",
603
607
  "ticket_already_linked": "Un ticket ne peut alimenter qu'une seule tâche : le relier à nouveau priverait la tâche existante du contexte avec lequel elle a été créée. Ouvrez plutôt cette tâche, ou dissociez d'abord le ticket.",
604
608
  "dry_run_not_mergeable": "Cette pull request provient d'une exécution à blanc et ne peut pas être fusionnée ici. Relancez la tâche en exécution réelle pour produire une pull request que cet espace de travail fusionnera."
605
609
  },
@@ -3159,6 +3163,16 @@
3159
3163
  "saveFailed": "Impossible d'enregistrer les paramètres",
3160
3164
  "budgetSaved": "Budget enregistré",
3161
3165
  "budgetSaveFailed": "Impossible d'enregistrer le budget"
3166
+ },
3167
+ "inputGate": {
3168
+ "heading": "Vérification des entrées avant le démarrage d'une exécution",
3169
+ "body": "Contrôle la formulation d'une tâche avant l'envoi du premier pas de l'agent, pour qu'une tâche inexploitable s'arrête sans rien dépenser. Standard met l'exécution en pause sur une description vide ou de remplissage, un bogue sans contexte de reproduction, ou une tâche de relecture sans pull request.",
3170
+ "mode": "Mode",
3171
+ "modes": {
3172
+ "standard": "Standard (mettre en pause sur un manque bloquant)",
3173
+ "advisory": "Indicatif (enregistrer, jamais mettre en pause)",
3174
+ "off": "Désactivé (ignorer la vérification)"
3175
+ }
3162
3176
  }
3163
3177
  },
3164
3178
  "localModelEndpoints": {
@@ -3774,16 +3788,11 @@
3774
3788
  },
3775
3789
  "addService": {
3776
3790
  "title": "Ajouter un service depuis un dépôt",
3777
- "intro": "Choisissez un dépôt GitHub existant à ajouter comme service du tableau. Sans amorçage : le dépôt est lié tel quel à un nouveau cadre de service, et les tâches que vous y exécutez ciblent ce dépôt.",
3778
- "connectFirst": "Connectez d'abord cet espace de travail à GitHub. Liez une installation sur laquelle l'App est déjà, ou installez-la.",
3779
3791
  "repository": "Dépôt",
3780
- "repositoryHint": "Dépôts auxquels la GitHub App peut accéder. Vous ne voyez pas le vôtre ? Accordez l'accès à l'App ci-dessous, puis actualisez.",
3781
- "noReposAvailable": "Aucun dépôt disponible pour le moment. Accordez l'accès de l'App à l'un d'eux ci-dessous, puis actualisez.",
3782
3792
  "searchPlaceholder": "Rechercher des dépôts par propriétaire ou nom…",
3783
3793
  "searchMinChars": "Saisissez au moins {min} caractère pour rechercher. | Saisissez au moins {min} caractères pour rechercher.",
3784
3794
  "noMatches": "Aucun dépôt trouvé pour {query}.",
3785
3795
  "clearSelection": "Effacer la sélection",
3786
- "showingCount": "Affichage de {shown} dépôts sur {total}.",
3787
3796
  "repoLabel": {
3788
3797
  "private": " (privé)",
3789
3798
  "monorepo": " · monorepo",
@@ -3800,7 +3809,6 @@
3800
3809
  "addedConfigure": "{title} ajouté, configurez-le",
3801
3810
  "grantAccess": "Accorder à l'App l'accès à un dépôt",
3802
3811
  "grantAccessTitle": "Ouvrir les paramètres d'installation de l'App pour lui accorder l'accès à un dépôt",
3803
- "refreshList": "Actualiser la liste",
3804
3812
  "done": "Terminé",
3805
3813
  "donePendingHint": "Ajoutez d'abord les services sélectionnés ou effacez la sélection, sinon ces choix seront perdus.",
3806
3814
  "add": "Ajouter le service",
@@ -4549,6 +4557,51 @@
4549
4557
  "fail": "Exécution échouée"
4550
4558
  }
4551
4559
  },
4560
+ "inputGate": {
4561
+ "blockedTitle": "Cette tâche a besoin de plus de détails avant de s'exécuter",
4562
+ "blockedBody": "L'exécution s'est arrêtée avant le premier pas de l'agent, rien n'a donc été dépensé. Complétez ce qui manque sur la tâche, puis relancez la vérification.",
4563
+ "waivedTitle": "Démarrée malgré une tâche incomplète",
4564
+ "waivedBody": "Quelqu'un a choisi d'exécuter cette tâche avec les manques ci-dessous encore ouverts. Ils sont conservés dans l'historique de l'exécution.",
4565
+ "advisoryTitle": "Quelques manques relevés, l'exécution a continué",
4566
+ "advisoryBody": "La vérification d'entrée de la tâche les a repérés au démarrage. Aucun n'empêche le travail, rien n'a donc été mis en attente : les compléter facilitera la prochaine exécution.",
4567
+ "severity": {
4568
+ "blocking": "Bloquant",
4569
+ "advisory": "Indicatif"
4570
+ },
4571
+ "recheck": "Revérifier la tâche",
4572
+ "proceed": "Exécuter quand même",
4573
+ "recheckHint": "La vérification lit la tâche telle qu'elle est maintenant, modifiez-la d'abord.",
4574
+ "issue": {
4575
+ "description_missing": {
4576
+ "title": "Aucune description",
4577
+ "hint": "Le titre nomme la tâche ; la description est ce sur quoi un agent travaille. Dites ce qui doit changer et pourquoi."
4578
+ },
4579
+ "description_placeholder": {
4580
+ "title": "Description de remplissage",
4581
+ "hint": "La description est un substitut (\"TBD\", \"n/a\", \"à corriger\") plutôt qu'un énoncé du travail."
4582
+ },
4583
+ "description_thin": {
4584
+ "title": "Description très courte",
4585
+ "hint": "Quelques mots définissent rarement ce que \"terminé\" veut dire. Plus de détail ici évite un aller-retour de questions."
4586
+ },
4587
+ "reproduction_missing": {
4588
+ "title": "Aucun contexte de reproduction",
4589
+ "hint": "Un bogue sans étapes, sans observé-contre-attendu et sans trace d'appels ne permet pas de savoir quand il est corrigé."
4590
+ },
4591
+ "review_target_missing": {
4592
+ "title": "Aucune pull request à relire",
4593
+ "hint": "Une tâche de relecture a besoin du numéro ou de l'URL de la pull request à lire."
4594
+ },
4595
+ "success_criteria_missing": {
4596
+ "title": "Aucun critère de réussite",
4597
+ "hint": "Indiquez la question à laquelle le spike répond, ou ce qu'est un bon résultat, pour donner une cible au temps imparti."
4598
+ },
4599
+ "unknown": {
4600
+ "title": "Constat non reconnu",
4601
+ "hint": "Cette exécution a enregistré une vérification que cette version ne connaît plus. Relisez la tâche à la main avant de continuer."
4602
+ }
4603
+ }
4604
+ },
4552
4605
  "requirements": {
4553
4606
  "title": "Revue des exigences",
4554
4607
  "iteration": "Itération {current} / {max}",
@@ -5710,13 +5763,6 @@
5710
5763
  "tooLong": "Doit comporter 100 caractères ou moins."
5711
5764
  }
5712
5765
  },
5713
- "intro": {
5714
- "canCreate": "Créez un dépôt GitHub vide, puis laissez un agent d'initialisation le remplir dans un conteneur bac à sable, soit en adaptant l'une de vos architectures de référence, soit à partir de zéro selon un prompt libre. cat-factory pousse le commit initial dans ce dépôt ; pour ce compte, il peut aussi créer le dépôt à votre place.",
5715
- "manual": "Créez un dépôt GitHub vide, puis laissez un agent d'initialisation le remplir dans un conteneur bac à sable, soit en adaptant l'une de vos architectures de référence, soit à partir de zéro selon un prompt libre. cat-factory pousse le commit initial dans ce dépôt ; vous créez le dépôt (en un clic ci-dessous), il n'a donc besoin d'aucune autorisation de création de dépôt."
5716
- },
5717
- "github": {
5718
- "prompt": "Connectez cet espace de travail à GitHub avant l'initialisation ; une exécution pousse dans un dépôt. Liez une installation sur laquelle l'App est déjà présente, ou installez-la."
5719
- },
5720
5766
  "section": {
5721
5767
  "newRepo": "Nouveau dépôt"
5722
5768
  },
@@ -5745,9 +5791,7 @@
5745
5791
  },
5746
5792
  "createRepo": {
5747
5793
  "now": "Créer le dépôt",
5748
- "onGitHub": "Créer sur GitHub",
5749
- "titleNow": "Créer le dépôt maintenant",
5750
- "titleGitHub": "Ouvrir la page de nouveau dépôt de GitHub, préremplie"
5794
+ "titleNow": "Créer le dépôt maintenant"
5751
5795
  },
5752
5796
  "grantAccess": {
5753
5797
  "label": "Accorder à l'App l'accès à ce dépôt",
@@ -5785,7 +5829,6 @@
5785
5829
  "title": "Architectures de référence",
5786
5830
  "add": "Ajouter",
5787
5831
  "pickRepo": {
5788
- "label": "Choisir un dépôt GitHub existant",
5789
5832
  "description": "Choisissez un dépôt auquel vous avez accès pour renseigner son propriétaire et son nom, ou saisissez-les manuellement ci-dessous.",
5790
5833
  "placeholder": "owner/name"
5791
5834
  },
@@ -6359,6 +6402,22 @@
6359
6402
  "titleAny": "Connecter cat-factory à vos dépôts",
6360
6403
  "intro": "cat-factory fonctionne en ouvrant des pull requests sur vos dépôts. Connectez votre hébergeur de dépôts pour continuer."
6361
6404
  },
6405
+ "addService": {
6406
+ "intro": "Choisissez un dépôt {provider} existant à ajouter comme service du tableau. Sans amorçage : le dépôt est lié tel quel à un nouveau cadre de service, et les tâches que vous y exécutez ciblent ce dépôt.",
6407
+ "introAny": "Choisissez un dépôt existant à ajouter comme service du tableau. Sans amorçage : le dépôt est lié tel quel à un nouveau cadre de service, et les tâches que vous y exécutez ciblent ce dépôt.",
6408
+ "connectFirst": "Connectez d'abord cet espace de travail à un hébergeur de dépôts, puis choisissez un dépôt à ajouter.",
6409
+ "repositoryHintApp": "Dépôts auxquels la GitHub App peut accéder. Vous ne voyez pas le vôtre ? Accordez l'accès à l'App ci-dessous, puis relancez la recherche.",
6410
+ "repositoryHintToken": "Dépôts accessibles à votre jeton {provider}. Vous ne voyez pas le vôtre ? Vérifiez la portée du jeton et votre accès au projet, puis relancez la recherche."
6411
+ },
6412
+ "bootstrap": {
6413
+ "connectPrompt": "Connectez cet espace de travail à un hébergeur de dépôts avant l'initialisation ; une exécution pousse dans un dépôt.",
6414
+ "createRepoOn": "Créer sur {provider}",
6415
+ "createRepoTitle": "Ouvrir la page de nouveau dépôt de {provider}",
6416
+ "introCanCreate": "Créez un dépôt {provider} vide, puis laissez un agent d'initialisation le remplir dans un conteneur bac à sable, soit en adaptant l'une de vos architectures de référence, soit à partir de zéro selon un prompt libre. cat-factory pousse le commit initial dans ce dépôt ; pour ce compte, il peut aussi créer le dépôt à votre place.",
6417
+ "introManual": "Créez un dépôt {provider} vide, puis laissez un agent d'initialisation le remplir dans un conteneur bac à sable, soit en adaptant l'une de vos architectures de référence, soit à partir de zéro selon un prompt libre. cat-factory pousse le commit initial dans ce dépôt ; vous créez le dépôt (en un clic ci-dessous), il n'a donc besoin d'aucune autorisation de création de dépôt.",
6418
+ "introManualAny": "Créez un dépôt vide chez votre hébergeur de dépôts, puis laissez un agent d'initialisation le remplir dans un conteneur bac à sable, soit en adaptant l'une de vos architectures de référence, soit à partir de zéro selon un prompt libre. cat-factory pousse le commit initial dans ce dépôt ; vous créez le dépôt vous-même, il n'a donc besoin d'aucune autorisation de création de dépôt.",
6419
+ "archPickRepo": "Choisir un dépôt {provider} existant"
6420
+ },
6362
6421
  "branchProtection": {
6363
6422
  "heading": "Protection de la branche par défaut",
6364
6423
  "body": "Les exécutions d'agents poussent avec un identifiant qui peut écrire dans tous les dépôts qu'il couvre. Rien ici n'empêche une exécution compromise de pousser directement sur une branche par défaut, ni de fusionner sa propre demande de tirage via l'API de l'hôte : seule la protection de branche chez l'hôte couvre les deux cas, et c'est à vous de la configurer. Cette vérification indique si elle est en place.",
@@ -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": "בקשת המשיכה הזו הגיעה מהרצת יבש, ולכן לא ניתן למזג אותה מכאן. הפעילו את המשימה מחדש כהרצה רגילה כדי ליצור בקשת משיכה שסביבת העבודה הזו תמזג."
605
609
  },
@@ -3299,6 +3303,16 @@
3299
3303
  "saveFailed": "לא ניתן היה לשמור הגדרות",
3300
3304
  "budgetSaved": "התקציב נשמר",
3301
3305
  "budgetSaveFailed": "לא ניתן היה לשמור תקציב"
3306
+ },
3307
+ "inputGate": {
3308
+ "heading": "בדיקת קלט לפני תחילת הרצה",
3309
+ "body": "בודקת את ניסוח המשימה לפני שליחת צעד הסוכן הראשון, כך שמשימה שאי אפשר לעבוד לפיה נעצרת בלי לצרוך דבר. במצב רגיל ההרצה נעצרת כשהתיאור ריק או זמני, כשבאג חסר הקשר שחזור, או כשמשימת סקירה לא מציינת בקשת משיכה.",
3310
+ "mode": "מצב",
3311
+ "modes": {
3312
+ "standard": "רגיל (עצירה בפער חוסם)",
3313
+ "advisory": "המלצה (תיעוד, בלי עצירה)",
3314
+ "off": "כבוי (דילוג על הבדיקה)"
3315
+ }
3302
3316
  }
3303
3317
  },
3304
3318
  "localModelEndpoints": {
@@ -3785,16 +3799,11 @@
3785
3799
  },
3786
3800
  "addService": {
3787
3801
  "title": "הוסף שירות ממאגר",
3788
- "intro": "בחר מאגר GitHub קיים כדי להוסיף כשירות בלוח. ללא אתחול: המאגר מקושר למסגרת שירות חדשה כפי שהוא, ומשימות שתריץ עליו ממוקדות באותו מאגר.",
3789
- "connectFirst": "חבר תחילה את מרחב העבודה ל-GitHub. קשר התקנה שהאפליקציה כבר נמצאת עליה, או התקן אותה.",
3790
3802
  "repository": "מאגר",
3791
- "repositoryHint": "מאגרים שאפליקציית GitHub יכולה לגשת אליהם. לא רואה את שלך? הענק לאפליקציה גישה למטה, ואז רענן.",
3792
- "noReposAvailable": "אין עדיין מאגרים זמינים. הענק לאפליקציה גישה לאחד למטה, ואז רענן.",
3793
3803
  "searchPlaceholder": "חפש מאגרים לפי בעלים או שם…",
3794
3804
  "searchMinChars": "הקלד לפחות {min} תו לחיפוש. | הקלד לפחות {min} תווים לחיפוש.",
3795
3805
  "noMatches": "לא נמצאו מאגרים עבור {query}.",
3796
3806
  "clearSelection": "נקה בחירה",
3797
- "showingCount": "מציג {shown} מתוך {total} מאגרים.",
3798
3807
  "repoLabel": {
3799
3808
  "private": " (פרטי)",
3800
3809
  "monorepo": " · מונורפו",
@@ -3811,7 +3820,6 @@
3811
3820
  "addedConfigure": "{title} נוסף, הגדר אותו",
3812
3821
  "grantAccess": "הענק לאפליקציה גישה למאגר",
3813
3822
  "grantAccessTitle": "פתח את הגדרות ההתקנה של האפליקציה כדי להעניק לה גישה למאגר",
3814
- "refreshList": "רענן רשימה",
3815
3823
  "done": "סיום",
3816
3824
  "donePendingHint": "הוסף תחילה את השירותים שנבחרו או נקה את הבחירה — אחרת בחירות אלה יימחקו.",
3817
3825
  "add": "הוסף שירות",
@@ -4560,6 +4568,51 @@
4560
4568
  "fail": "ההרצה נכשלה"
4561
4569
  }
4562
4570
  },
4571
+ "inputGate": {
4572
+ "blockedTitle": "המשימה הזו צריכה יותר פירוט לפני שתרוץ",
4573
+ "blockedBody": "ההרצה נעצרה לפני צעד הסוכן הראשון, ולכן לא נצרך דבר. השלימו את החסר במשימה ואז בדקו שוב.",
4574
+ "waivedTitle": "הופעלה למרות משימה חסרה",
4575
+ "waivedBody": "מישהו בחר להריץ את המשימה כשהפערים שלמטה עדיין פתוחים. הם נשמרים כחלק מתיעוד ההרצה.",
4576
+ "advisoryTitle": "נרשמו כמה פערים, וההרצה המשיכה",
4577
+ "advisoryBody": "בדיקת הקלט של המשימה איתרה אותם עם תחילת ההרצה. אף אחד מהם אינו עוצר את העבודה, ולכן דבר לא הושהה. השלמתם תקל על ההרצה הבאה.",
4578
+ "severity": {
4579
+ "blocking": "חוסם",
4580
+ "advisory": "המלצה"
4581
+ },
4582
+ "recheck": "בדיקה חוזרת של המשימה",
4583
+ "proceed": "להריץ בכל זאת",
4584
+ "recheckHint": "הבדיקה החוזרת קוראת את המשימה כפי שהיא עכשיו, אז ערכו אותה קודם.",
4585
+ "issue": {
4586
+ "description_missing": {
4587
+ "title": "אין תיאור",
4588
+ "hint": "הכותרת נותנת שם למשימה, והתיאור הוא מה שהסוכן עובד לפיו. כתבו מה צריך להשתנות ולמה."
4589
+ },
4590
+ "description_placeholder": {
4591
+ "title": "תיאור זמני בלבד",
4592
+ "hint": "התיאור הוא מציין מקום (\"TBD\", \"n/a\", \"לתקן\") ולא תיאור של העבודה."
4593
+ },
4594
+ "description_thin": {
4595
+ "title": "תיאור קצר מאוד",
4596
+ "hint": "כמה מילים רק לעתים רחוקות מגדירות מה זה \"גמור\". פירוט כאן חוסך סבב שאלות בהמשך."
4597
+ },
4598
+ "reproduction_missing": {
4599
+ "title": "אין הקשר שחזור",
4600
+ "hint": "באג בלי שלבים, בלי השוואה בין הצפוי למתקבל ובלי מעקב מחסנית לא מאפשר לדעת מתי הוא תוקן."
4601
+ },
4602
+ "review_target_missing": {
4603
+ "title": "אין בקשת משיכה לסקירה",
4604
+ "hint": "משימת סקירה צריכה את המספר או הכתובת של בקשת המשיכה שעליה לקרוא."
4605
+ },
4606
+ "success_criteria_missing": {
4607
+ "title": "אין קריטריוני הצלחה",
4608
+ "hint": "ציינו את השאלה שהבדיקה המקדימה עונה עליה, או איך נראית תוצאה טובה, כדי שלמסגרת הזמן תהיה מטרה."
4609
+ },
4610
+ "unknown": {
4611
+ "title": "ממצא לא מוכר",
4612
+ "hint": "ההרצה תיעדה בדיקה שהגרסה הזו כבר לא מכירה. עברו על המשימה ידנית לפני שתמשיכו."
4613
+ }
4614
+ }
4615
+ },
4563
4616
  "requirements": {
4564
4617
  "title": "סקירת דרישות",
4565
4618
  "iteration": "איטרציה {current} / {max}",
@@ -5721,13 +5774,6 @@
5721
5774
  "tooLong": "חייב להיות 100 תווים או פחות."
5722
5775
  }
5723
5776
  },
5724
- "intro": {
5725
- "canCreate": "צור מאגר GitHub ריק, ואז תן לסוכן מאתחל לאכלס אותו במכל ארגז חול, בין אם על ידי התאמה של אחת מארכיטקטורות הייחוס שלך או מאפס לפי פרומפט חופשי. cat-factory דוחפת את הקומיט הראשוני לאותו מאגר; לחשבון הזה היא יכולה גם ליצור עבורך את המאגר.",
5726
- "manual": "צור מאגר GitHub ריק, ואז תן לסוכן מאתחל לאכלס אותו במכל ארגז חול, בין אם על ידי התאמה של אחת מארכיטקטורות הייחוס שלך או מאפס לפי פרומפט חופשי. cat-factory דוחפת את הקומיט הראשוני לאותו מאגר; אתה יוצר את המאגר (לחיצה אחת למטה), כך שאין צורך בהרשאת יצירת מאגר."
5727
- },
5728
- "github": {
5729
- "prompt": "חבר את סביבת העבודה הזו ל-GitHub לפני האתחול; הרצה דוחפת למאגר. קשר התקנה שהאפליקציה כבר מותקנת עליה, או התקן אותה."
5730
- },
5731
5777
  "section": {
5732
5778
  "newRepo": "מאגר חדש"
5733
5779
  },
@@ -5756,9 +5802,7 @@
5756
5802
  },
5757
5803
  "createRepo": {
5758
5804
  "now": "צור מאגר",
5759
- "onGitHub": "צור ב-GitHub",
5760
- "titleNow": "צור את המאגר עכשיו",
5761
- "titleGitHub": "פתח את עמוד המאגר החדש של GitHub, מאוכלס מראש"
5805
+ "titleNow": "צור את המאגר עכשיו"
5762
5806
  },
5763
5807
  "grantAccess": {
5764
5808
  "label": "הענק לאפליקציה גישה למאגר הזה",
@@ -5796,7 +5840,6 @@
5796
5840
  "title": "ארכיטקטורות ייחוס",
5797
5841
  "add": "הוסף",
5798
5842
  "pickRepo": {
5799
- "label": "בחר מאגר GitHub קיים",
5800
5843
  "description": "בחר מאגר שיש לך גישה אליו כדי למלא את הבעלים והשם שלו, או הזן אותם ידנית למטה.",
5801
5844
  "placeholder": "owner/name"
5802
5845
  },
@@ -6370,6 +6413,22 @@
6370
6413
  "titleAny": "חבר את cat-factory למאגרים שלך",
6371
6414
  "intro": "cat-factory פועל על ידי פתיחת בקשות משיכה במאגרים שלך. חבר את ספק המאגרים שלך כדי להמשיך."
6372
6415
  },
6416
+ "addService": {
6417
+ "intro": "בחר מאגר {provider} קיים כדי להוסיף כשירות בלוח. ללא אתחול: המאגר מקושר למסגרת שירות חדשה כפי שהוא, ומשימות שתריץ עליו ממוקדות באותו מאגר.",
6418
+ "introAny": "בחר מאגר קיים כדי להוסיף כשירות בלוח. ללא אתחול: המאגר מקושר למסגרת שירות חדשה כפי שהוא, ומשימות שתריץ עליו ממוקדות באותו מאגר.",
6419
+ "connectFirst": "חבר תחילה את מרחב העבודה לשירות אירוח מאגרים, ואז בחר מאגר להוספה.",
6420
+ "repositoryHintApp": "מאגרים שאפליקציית GitHub יכולה לגשת אליהם. לא רואה את שלך? הענק לאפליקציה גישה למטה, ואז חפש שוב.",
6421
+ "repositoryHintToken": "מאגרים שהטוקן שלך ב-{provider} יכול להגיע אליהם. לא רואה את שלך? בדוק את ההרשאות של הטוקן ואת הגישה שלך לפרויקט, ואז חפש שוב."
6422
+ },
6423
+ "bootstrap": {
6424
+ "connectPrompt": "חבר את סביבת העבודה הזו לשירות אירוח מאגרים לפני האתחול; הרצה דוחפת למאגר.",
6425
+ "createRepoOn": "צור ב-{provider}",
6426
+ "createRepoTitle": "פתח את עמוד המאגר החדש של {provider}",
6427
+ "introCanCreate": "צור מאגר {provider} ריק, ואז תן לסוכן מאתחל לאכלס אותו במכל ארגז חול, בין אם על ידי התאמה של אחת מארכיטקטורות הייחוס שלך או מאפס לפי פרומפט חופשי. cat-factory דוחפת את הקומיט הראשוני לאותו מאגר; לחשבון הזה היא יכולה גם ליצור עבורך את המאגר.",
6428
+ "introManual": "צור מאגר {provider} ריק, ואז תן לסוכן מאתחל לאכלס אותו במכל ארגז חול, בין אם על ידי התאמה של אחת מארכיטקטורות הייחוס שלך או מאפס לפי פרומפט חופשי. cat-factory דוחפת את הקומיט הראשוני לאותו מאגר; אתה יוצר את המאגר (לחיצה אחת למטה), כך שאין צורך בהרשאת יצירת מאגר.",
6429
+ "introManualAny": "צור מאגר ריק אצל שירות אירוח המאגרים שלך, ואז תן לסוכן מאתחל לאכלס אותו במכל ארגז חול, בין אם על ידי התאמה של אחת מארכיטקטורות הייחוס שלך או מאפס לפי פרומפט חופשי. cat-factory דוחפת את הקומיט הראשוני לאותו מאגר; אתה יוצר את המאגר בעצמך, כך שאין צורך בהרשאת יצירת מאגר.",
6430
+ "archPickRepo": "בחר מאגר {provider} קיים"
6431
+ },
6373
6432
  "branchProtection": {
6374
6433
  "heading": "הגנת הענף הראשי",
6375
6434
  "body": "הרצות סוכן דוחפות באמצעות אישור שיכול לכתוב לכל מאגר שהוא מכסה. שום דבר כאן לא ימנע מהרצה שנפרצה לדחוף ישירות לענף הראשי או למזג בקשת משיכה משלה דרך ה-API של השרת המארח — רק הגנת ענפים בצד המארח מכסה את שני המקרים, והיא באחריותכם להגדיר. בדיקה זו מראה אם היא קיימת.",
@@ -949,6 +949,16 @@
949
949
  "saveFailed": "Impossibile salvare le impostazioni",
950
950
  "budgetSaved": "Budget salvato",
951
951
  "budgetSaveFailed": "Impossibile salvare il budget"
952
+ },
953
+ "inputGate": {
954
+ "heading": "Controllo dell'input prima dell'avvio di un'esecuzione",
955
+ "body": "Controlla il testo di un'attività prima che parta il primo passo dell'agente, così un'attività su cui nessuno potrebbe lavorare si ferma senza spendere nulla. Standard mette in pausa l'esecuzione con una descrizione vuota o segnaposto, un bug senza contesto di riproduzione, o un'attività di revisione senza pull request.",
956
+ "mode": "Modalità",
957
+ "modes": {
958
+ "standard": "Standard (pausa su una lacuna bloccante)",
959
+ "advisory": "Segnalazione (registra, mai in pausa)",
960
+ "off": "Disattivato (salta il controllo)"
961
+ }
952
962
  }
953
963
  },
954
964
  "localModelEndpoints": {
@@ -3133,18 +3143,13 @@
3133
3143
  },
3134
3144
  "addService": {
3135
3145
  "title": "Aggiungi un servizio da un repository",
3136
- "intro": "Scegli un repository GitHub esistente da aggiungere come servizio sulla board. Nessun bootstrapping: il repo viene collegato a un nuovo frame di servizio così com'è, e le attività che vi esegui puntano a quel repo.",
3137
- "connectFirst": "Collega prima questo workspace a GitHub. Collega un'installazione su cui la App è già presente, oppure installala.",
3138
3146
  "repository": "Repository",
3139
- "repositoryHint": "Repository a cui la GitHub App può accedere. Non vedi il tuo? Concedi l'accesso alla App qui sotto, poi aggiorna.",
3140
3147
  "repoType": "Tipo di repository",
3141
3148
  "repoTypeHint": "Cos'è questo repo: un servizio backend, un'app frontend, una libreria condivisa o un repository di documenti (solo docs/spike).",
3142
- "noReposAvailable": "Nessun repository ancora disponibile. Concedi alla App l'accesso a uno qui sotto, poi aggiorna.",
3143
3149
  "searchPlaceholder": "Cerca repository per proprietario o nome…",
3144
3150
  "searchMinChars": "Digita almeno {min} carattere per cercare. | Digita almeno {min} caratteri per cercare.",
3145
3151
  "noMatches": "Nessun repository trovato per {query}.",
3146
3152
  "clearSelection": "Cancella selezione",
3147
- "showingCount": "Visualizzati {shown} di {total} repository.",
3148
3153
  "repoLabel": {
3149
3154
  "private": " (privato)",
3150
3155
  "monorepo": " · monorepo",
@@ -3161,7 +3166,6 @@
3161
3166
  "addedConfigure": "{title} aggiunto, configuralo",
3162
3167
  "grantAccess": "Concedi alla App l'accesso a un repo",
3163
3168
  "grantAccessTitle": "Apri le impostazioni di installazione della App per concederle l'accesso a un repository",
3164
- "refreshList": "Aggiorna l'elenco",
3165
3169
  "done": "Fatto",
3166
3170
  "donePendingHint": "Aggiungi prima i servizi selezionati oppure annulla la selezione, altrimenti quelle scelte andranno perse.",
3167
3171
  "add": "Aggiungi servizio",
@@ -4215,13 +4219,6 @@
4215
4219
  "tooLong": "Deve essere di massimo 100 caratteri."
4216
4220
  }
4217
4221
  },
4218
- "intro": {
4219
- "canCreate": "Crea un repository GitHub vuoto, poi lascia che un agente bootstrapper lo popoli in un container sandbox, adattando una delle tue architetture di riferimento oppure partendo da zero seguendo un prompt libero. cat-factory invia il commit iniziale in quel repository; per questo account puo anche creare il repository per te.",
4220
- "manual": "Crea un repository GitHub vuoto, poi lascia che un agente bootstrapper lo popoli in un container sandbox, adattando una delle tue architetture di riferimento oppure partendo da zero seguendo un prompt libero. cat-factory invia il commit iniziale in quel repository; sei tu a creare il repository (con un clic qui sotto), quindi non serve alcun permesso di creazione del repository."
4221
- },
4222
- "github": {
4223
- "prompt": "Collega questo workspace a GitHub prima dell'avvio; un'esecuzione invia dei commit in un repository. Collega un'installazione su cui l'App e gia presente, oppure installala."
4224
- },
4225
4222
  "section": {
4226
4223
  "newRepo": "Nuovo repository"
4227
4224
  },
@@ -4250,9 +4247,7 @@
4250
4247
  },
4251
4248
  "createRepo": {
4252
4249
  "now": "Crea repository",
4253
- "onGitHub": "Crea su GitHub",
4254
- "titleNow": "Crea subito il repository",
4255
- "titleGitHub": "Apri la pagina di nuovo repository di GitHub, precompilata"
4250
+ "titleNow": "Crea subito il repository"
4256
4251
  },
4257
4252
  "grantAccess": {
4258
4253
  "label": "Concedi all'App l'accesso a questo repository",
@@ -4294,7 +4289,6 @@
4294
4289
  "title": "Architetture di riferimento",
4295
4290
  "add": "Aggiungi",
4296
4291
  "pickRepo": {
4297
- "label": "Scegli un repository GitHub esistente",
4298
4292
  "description": "Scegli un repository a cui hai accesso per compilarne owner e nome, oppure inseriscili manualmente qui sotto.",
4299
4293
  "placeholder": "owner/name"
4300
4294
  },
@@ -5158,6 +5152,8 @@
5158
5152
  "binary_output_service_invalid": "Impossibile risolvere il servizio per gli output binari",
5159
5153
  "binary_output_generator_invalid": "Impossibile risolvere il generatore per gli output binari",
5160
5154
  "foundational_service_not_inherited": "Questa bacheca ha registrato quel servizio",
5155
+ "input_gate_not_parked": "Niente a cui rispondere",
5156
+ "input_gate_parked": "Rispondi nel controllo di input dell'attività",
5161
5157
  "ticket_already_linked": "Questo ticket ha già un'attività",
5162
5158
  "dry_run_not_mergeable": "Una prova non può essere unita"
5163
5159
  },
@@ -5192,6 +5188,8 @@
5192
5188
  "binary_output_service_invalid": "Un passaggio che genera output binari seleziona un servizio fondamentale che il catalogo di questo workspace non riesce a risolvere: l'identificatore è sconosciuto, oppure il servizio di archiviazione scelto non ha la capacità asset-storage. Correggi la selezione del passaggio o registra il servizio, poi riavvia.",
5193
5189
  "binary_output_generator_invalid": "Un passaggio che genera output binari seleziona un'integrazione generativa che questa installazione non registra, oppure nessuna delle integrazioni selezionate produce un tipo di contenuto che il passaggio deve consegnare. Le integrazioni generative si registrano nel codice dell'installazione, non in questo workspace: registrala o correggi la selezione del passaggio, poi riavvia.",
5194
5190
  "foundational_service_not_inherited": "L'esclusione vale per un servizio ereditato dall'account. Questo id è registrato da questa bacheca, quindi non c'è nulla da escludere: elimina invece la voce propria della bacheca.",
5191
+ "input_gate_not_parked": "Questa esecuzione non attende più il controllo dell'input. Forse qualcuno ha già risposto, o l'esecuzione è andata avanti.",
5192
+ "input_gate_parked": "Questa esecuzione è in attesa del suo controllo di input, a cui l'approvazione non può rispondere. Usa l'avviso sull'esecuzione: correggi l'attività e ricontrolla, oppure eseguila comunque.",
5195
5193
  "ticket_already_linked": "Un ticket può sostenere una sola attività, quindi ricollegarlo toglierebbe all'attività esistente il contesto con cui è stata creata. Apri invece quell'attività, oppure scollega prima il ticket.",
5196
5194
  "dry_run_not_mergeable": "Questa pull request proviene da una prova, quindi non può essere unita da qui. Riavvia l’attività come esecuzione reale per produrre una pull request che questo spazio di lavoro unirà."
5197
5195
  },
@@ -5430,6 +5428,51 @@
5430
5428
  "fail": "Esecuzione fallita"
5431
5429
  }
5432
5430
  },
5431
+ "inputGate": {
5432
+ "blockedTitle": "Questa attività richiede più dettagli prima di partire",
5433
+ "blockedBody": "L'esecuzione si è fermata prima del primo passo dell'agente, quindi non è stato speso nulla. Completa ciò che manca nell'attività, poi ricontrolla.",
5434
+ "waivedTitle": "Avviata nonostante l'attività incompleta",
5435
+ "waivedBody": "Qualcuno ha scelto di eseguire questa attività con le lacune qui sotto ancora aperte. Restano come parte dello storico dell'esecuzione.",
5436
+ "advisoryTitle": "Rilevate alcune lacune, l'esecuzione è proseguita",
5437
+ "advisoryBody": "Il controllo di input dell'attività le ha trovate all'avvio. Nessuna blocca il lavoro, quindi non è stato messo nulla in attesa: completarle rende più semplice la prossima esecuzione.",
5438
+ "severity": {
5439
+ "blocking": "Bloccante",
5440
+ "advisory": "Segnalazione"
5441
+ },
5442
+ "recheck": "Ricontrolla l'attività",
5443
+ "proceed": "Esegui comunque",
5444
+ "recheckHint": "Il ricontrollo legge l'attività com'è adesso, quindi modificala prima.",
5445
+ "issue": {
5446
+ "description_missing": {
5447
+ "title": "Nessuna descrizione",
5448
+ "hint": "Il titolo nomina l'attività; la descrizione è ciò su cui lavora un agente. Indica cosa deve cambiare e perché."
5449
+ },
5450
+ "description_placeholder": {
5451
+ "title": "Descrizione segnaposto",
5452
+ "hint": "La descrizione è un segnaposto (\"TBD\", \"n/a\", \"da sistemare\") invece di una descrizione del lavoro."
5453
+ },
5454
+ "description_thin": {
5455
+ "title": "Descrizione molto breve",
5456
+ "hint": "Poche parole raramente stabiliscono cosa significhi \"finito\". Più dettaglio qui risparmia un giro di domande dopo."
5457
+ },
5458
+ "reproduction_missing": {
5459
+ "title": "Nessun contesto di riproduzione",
5460
+ "hint": "Un bug senza passi, senza atteso-contro-osservato e senza stack trace non permette di capire quando è risolto."
5461
+ },
5462
+ "review_target_missing": {
5463
+ "title": "Nessuna pull request da rivedere",
5464
+ "hint": "Un'attività di revisione ha bisogno del numero o dell'URL della pull request da leggere."
5465
+ },
5466
+ "success_criteria_missing": {
5467
+ "title": "Nessun criterio di successo",
5468
+ "hint": "Indica la domanda a cui risponde lo spike, o come si presenta un buon esito, così il tempo riservato ha un obiettivo."
5469
+ },
5470
+ "unknown": {
5471
+ "title": "Rilievo non riconosciuto",
5472
+ "hint": "Questa esecuzione ha registrato un controllo che questa versione non conosce più. Rivedi l'attività a mano prima di continuare."
5473
+ }
5474
+ }
5475
+ },
5433
5476
  "consensus": {
5434
5477
  "titlePrefix": "Consenso",
5435
5478
  "participantCount": "nessun partecipante | un partecipante | {count} partecipanti",
@@ -6371,6 +6414,22 @@
6371
6414
  "titleAny": "Collega cat-factory ai tuoi repository",
6372
6415
  "intro": "cat-factory funziona aprendo pull request sui tuoi repository. Collega il tuo host di repository per continuare."
6373
6416
  },
6417
+ "addService": {
6418
+ "intro": "Scegli un repository {provider} esistente da aggiungere come servizio sulla board. Nessun bootstrapping: il repo viene collegato a un nuovo frame di servizio così com'è, e le attività che vi esegui puntano a quel repo.",
6419
+ "introAny": "Scegli un repository esistente da aggiungere come servizio sulla board. Nessun bootstrapping: il repo viene collegato a un nuovo frame di servizio così com'è, e le attività che vi esegui puntano a quel repo.",
6420
+ "connectFirst": "Collega prima questo workspace a un host di repository, poi scegli un repository da aggiungere.",
6421
+ "repositoryHintApp": "Repository a cui la GitHub App può accedere. Non vedi il tuo? Concedi l'accesso alla App qui sotto, poi cerca di nuovo.",
6422
+ "repositoryHintToken": "Repository raggiungibili dal tuo token {provider}. Non vedi il tuo? Controlla l'ambito del token e il tuo accesso al progetto, poi cerca di nuovo."
6423
+ },
6424
+ "bootstrap": {
6425
+ "connectPrompt": "Collega questo workspace a un host di repository prima dell'avvio; un'esecuzione invia dei commit in un repository.",
6426
+ "createRepoOn": "Crea su {provider}",
6427
+ "createRepoTitle": "Apri la pagina di nuovo repository di {provider}",
6428
+ "introCanCreate": "Crea un repository {provider} vuoto, poi lascia che un agente bootstrapper lo popoli in un container sandbox, adattando una delle tue architetture di riferimento oppure partendo da zero seguendo un prompt libero. cat-factory invia il commit iniziale in quel repository; per questo account può anche creare il repository per te.",
6429
+ "introManual": "Crea un repository {provider} vuoto, poi lascia che un agente bootstrapper lo popoli in un container sandbox, adattando una delle tue architetture di riferimento oppure partendo da zero seguendo un prompt libero. cat-factory invia il commit iniziale in quel repository; sei tu a creare il repository (con un clic qui sotto), quindi non serve alcun permesso di creazione del repository.",
6430
+ "introManualAny": "Crea un repository vuoto sul tuo host di repository, poi lascia che un agente bootstrapper lo popoli in un container sandbox, adattando una delle tue architetture di riferimento oppure partendo da zero seguendo un prompt libero. cat-factory invia il commit iniziale in quel repository; il repository lo crei tu, quindi non serve alcun permesso di creazione del repository.",
6431
+ "archPickRepo": "Scegli un repository {provider} esistente"
6432
+ },
6374
6433
  "branchProtection": {
6375
6434
  "heading": "Protezione del ramo predefinito",
6376
6435
  "body": "Le esecuzioni degli agenti fanno push con una credenziale che può scrivere in ogni repository che copre. Nulla qui impedisce a un'esecuzione compromessa di fare push direttamente su un ramo predefinito o di unire la propria richiesta di pull tramite l'API dell'host: solo la protezione dei rami sull'host copre entrambi i casi, e sei tu a configurarla. Questo controllo indica se è attiva.",