@cat-factory/app 0.199.0 → 0.200.2

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 (39) hide show
  1. package/app/components/foundational/FoundationalContractSummary.vue +36 -0
  2. package/app/components/foundational/FoundationalServiceCatalogList.vue +170 -0
  3. package/app/components/foundational/FoundationalServiceManager.vue +111 -0
  4. package/app/components/foundational/FoundationalServicePanel.vue +37 -0
  5. package/app/components/foundational/FoundationalServiceRegistry.vue +339 -0
  6. package/app/components/foundational/FoundationalServiceSources.vue +398 -0
  7. package/app/components/foundational/FoundationalSuppressions.vue +75 -0
  8. package/app/components/layout/AccountFoundationalSettings.vue +25 -0
  9. package/app/components/layout/AccountSkillSettings.vue +1 -1
  10. package/app/components/settings/AccountSettingsPanel.vue +17 -1
  11. package/app/components/skills/SkillLibraryManager.vue +1 -1
  12. package/app/composables/api/foundationalServices.ts +131 -0
  13. package/app/composables/api/skills.ts +1 -1
  14. package/app/composables/useApi.ts +2 -0
  15. package/app/composables/useNavContributions.ts +1 -0
  16. package/app/composables/usePipelineErrorToast.ts +8 -0
  17. package/app/modular/nav-contributions.spec.ts +6 -0
  18. package/app/modular/nav-contributions.ts +26 -0
  19. package/app/pages/index.vue +4 -0
  20. package/app/stores/foundationalServices.spec.ts +121 -0
  21. package/app/stores/foundationalServices.ts +276 -0
  22. package/app/stores/skillLibrary.ts +1 -1
  23. package/app/stores/skills.spec.ts +1 -1
  24. package/app/stores/skills.ts +1 -1
  25. package/app/stores/ui/modals.ts +12 -0
  26. package/app/types/domain.ts +1 -0
  27. package/app/types/foundationalServices.ts +32 -0
  28. package/app/types/skills.ts +1 -1
  29. package/i18n/locales/de.json +146 -6
  30. package/i18n/locales/en.json +146 -6
  31. package/i18n/locales/es.json +146 -6
  32. package/i18n/locales/fr.json +146 -6
  33. package/i18n/locales/he.json +146 -6
  34. package/i18n/locales/it.json +146 -6
  35. package/i18n/locales/ja.json +146 -6
  36. package/i18n/locales/pl.json +146 -6
  37. package/i18n/locales/tr.json +146 -6
  38. package/i18n/locales/uk.json +146 -6
  39. package/package.json +2 -2
@@ -126,7 +126,8 @@
126
126
  "accountSettings": "Ajustes de la cuenta",
127
127
  "operatorDashboard": "Observabilidad de la plataforma",
128
128
  "reports": "Informes",
129
- "infrastructure": "Infraestructura"
129
+ "infrastructure": "Infraestructura",
130
+ "foundationalServices": "Servicios fundamentales"
130
131
  },
131
132
  "board": {
132
133
  "toast": {
@@ -544,7 +545,9 @@
544
545
  "pipeline_schedule_attached": "Una programación recurrente usa esta canalización",
545
546
  "pipeline_schedule_requires_recurring": "Una programación recurrente necesita esta canalización",
546
547
  "pipeline_schedule_intake_unconfigured": "La programación no tiene entrada de incidencias",
547
- "foundational_service_exists": "El servicio fundacional ya existe"
548
+ "foundational_service_exists": "El servicio fundacional ya existe",
549
+ "binary_output_service_invalid": "No se puede resolver el servicio de salidas binarias",
550
+ "foundational_service_not_inherited": "Este tablero registró ese servicio"
548
551
  },
549
552
  "description": {
550
553
  "dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
@@ -573,7 +576,9 @@
573
576
  "pipeline_schedule_attached": "Una programación recurrente todavía apunta a esta canalización, y cada ejecución que inicia la resuelve por su id. Desvincule o elimine esa programación antes de quitar la canalización.",
574
577
  "pipeline_schedule_requires_recurring": "Una programación recurrente todavía apunta a esta canalización, así que limitarla a un solo uso rompería cada ejecución futura. Desvincule primero esa programación.",
575
578
  "pipeline_schedule_intake_unconfigured": "Un paso de entrada de errores toma su trabajo de la entrada de incidencias de la programación, y la programación vinculada no la tiene. Configure la entrada de incidencias en la programación primero.",
576
- "foundational_service_exists": "Ya hay un servicio fundacional con este identificador registrado en este ámbito. Abre la entrada existente y edítala: dos servicios no pueden compartir un identificador, porque es el nombre que un arquitecto usa en su diseño."
579
+ "foundational_service_exists": "Ya hay un servicio fundacional con este identificador registrado en este ámbito. Abre la entrada existente y edítala: dos servicios no pueden compartir un identificador, porque es el nombre que un arquitecto usa en su diseño.",
580
+ "binary_output_service_invalid": "Un paso que genera salidas binarias selecciona un servicio fundacional que el catálogo de este espacio de trabajo no puede resolver: el identificador es desconocido, o el servicio de almacenamiento elegido no tiene la capacidad asset-storage. Corrige la selección del paso o registra el servicio y vuelve a iniciarlo.",
581
+ "foundational_service_not_inherited": "La exclusión se aplica a un servicio heredado de la cuenta. Este id está registrado por este tablero, así que no hay nada que excluir: elimina la entrada propia del tablero."
577
582
  },
578
583
  "action": {
579
584
  "connectGitHub": "Conectar GitHub",
@@ -2077,7 +2082,8 @@
2077
2082
  "shortcuts": "Atajos de teclado",
2078
2083
  "bugHunt": "Caza de errores",
2079
2084
  "toggleUiMode": "Cambiar el modo de interfaz",
2080
- "tutorial": "Hacer un recorrido"
2085
+ "tutorial": "Hacer un recorrido",
2086
+ "foundationalServices": "Servicios fundamentales"
2081
2087
  },
2082
2088
  "keywords": {
2083
2089
  "newPipeline": "canalización agentes cadena pipeline",
@@ -2100,7 +2106,8 @@
2100
2106
  "shortcuts": "atajos teclado teclas ayuda",
2101
2107
  "bugHunt": "error bug caza triaje backlog incidencias sin asignar",
2102
2108
  "toggleUiMode": "interfaz modo básico avanzado mostrar ocultar",
2103
- "tutorial": "tutorial recorrido guía ayuda aprender introducción"
2109
+ "tutorial": "tutorial recorrido guía ayuda aprender introducción",
2110
+ "foundationalServices": "capacidad compartida plataforma servicio api contrato openapi catálogo"
2104
2111
  }
2105
2112
  },
2106
2113
  "integrationsHub": {
@@ -2260,6 +2267,9 @@
2260
2267
  "title": "Elige un entorno de pruebas predeterminado",
2261
2268
  "body": "Este tablero aún no ha definido cómo obtienen un entorno de pruebas sus servicios. Elige un valor predeterminado y todos los servicios que añadas a partir de ahora empezarán con él, en lugar de configurarse uno a uno. Podrás cambiarlo en cada servicio.",
2262
2269
  "action": "Elegir predeterminado"
2270
+ },
2271
+ "accountFoundational": {
2272
+ "intro": "Las capacidades compartidas que esta organización ya opera - almacenamiento de archivos, notificaciones, auditoría - con sus contratos de API. Todos los tableros las heredan, y a un arquitecto se le indica que las consuma en lugar de proponer reconstruirlas."
2263
2273
  }
2264
2274
  },
2265
2275
  "settings": {
@@ -2314,7 +2324,8 @@
2314
2324
  "tabs": {
2315
2325
  "team": "Equipo y acceso",
2316
2326
  "fragments": "Fragmentos de contexto",
2317
- "skills": "Habilidades"
2327
+ "skills": "Habilidades",
2328
+ "foundational": "Servicios fundamentales"
2318
2329
  }
2319
2330
  },
2320
2331
  "providerConnection": {
@@ -5165,6 +5176,135 @@
5165
5176
  },
5166
5177
  "unavailable": "La biblioteca de fragmentos de prompt no está habilitada en esta implementación."
5167
5178
  },
5179
+ "foundational": {
5180
+ "unavailable": "El catálogo de servicios fundamentales no está habilitado en esta instalación.",
5181
+ "owner": {
5182
+ "workspace": "Este tablero",
5183
+ "account": "Esta cuenta"
5184
+ },
5185
+ "tab": {
5186
+ "catalog": "Catálogo",
5187
+ "sources": "Repos vinculados"
5188
+ },
5189
+ "panel": {
5190
+ "title": "Servicios fundamentales",
5191
+ "subtitle": "Las capacidades compartidas que tu organización ya opera, para que un diseño las consuma en lugar de reconstruirlas."
5192
+ },
5193
+ "tier": {
5194
+ "account": "Cuenta",
5195
+ "workspace": "Tablero"
5196
+ },
5197
+ "format": {
5198
+ "openapi": "OpenAPI",
5199
+ "toadContract": "toad-contracts",
5200
+ "lokaliseApiContract": "lokalise/api-contract"
5201
+ },
5202
+ "contracts": {
5203
+ "omitted": "+{count} más sin listar",
5204
+ "none": "No hay contrato de API adjunto. Al agente se le dirá que la interfaz es desconocida en lugar de dejar que la adivine."
5205
+ },
5206
+ "catalog": {
5207
+ "intro": "Lo que recibe un arquitecto que diseña en este tablero: identidad, etiquetas de capacidad y nombres de operaciones. Los documentos de contrato solo se leen cuando un diseño declara el servicio.",
5208
+ "empty": "Todavía no hay servicios fundamentales. Registra uno abajo o vincula un repositorio que los describa.",
5209
+ "suppress": "No ofrecer este servicio en este tablero",
5210
+ "showDocuments": "Mostrar documentos de contrato",
5211
+ "hideDocuments": "Ocultar documentos de contrato"
5212
+ },
5213
+ "suppressions": {
5214
+ "title": "Excluidos en este tablero",
5215
+ "intro": "Estos servicios de la cuenta están ocultos para los diseños de este tablero. No se ha borrado nada y la cuenta los conserva para los demás tableros.",
5216
+ "restore": "Volver a ofrecer",
5217
+ "shadowsNothing": "Ahora mismo no se hereda nada con este id, así que esta exclusión no oculta nada."
5218
+ },
5219
+ "registry": {
5220
+ "empty": "Todavía no hay nada registrado en este ámbito.",
5221
+ "add": "Registrar un servicio",
5222
+ "addTitle": "Registrar un servicio fundamental",
5223
+ "editTitle": "Editar servicio fundamental",
5224
+ "edit": "Editar",
5225
+ "delete": "Eliminar",
5226
+ "save": "Guardar",
5227
+ "cancel": "Cancelar",
5228
+ "fromSource": "Sincronizado desde un repositorio vinculado ({path}). Edítalo en el repositorio; la próxima sincronización sobrescribirá los cambios hechos aquí.",
5229
+ "idFixed": "el id que un arquitecto escribe en su diseño, fijo una vez registrado",
5230
+ "idPlaceholder": "id (minúsculas con guiones, p. ej. file-storage)",
5231
+ "namePlaceholder": "nombre (p. ej. File Storage)",
5232
+ "summaryPlaceholder": "resumen de una línea: para qué sirve",
5233
+ "descriptionPlaceholder": "qué hace, cuándo usarlo y qué NO cubre",
5234
+ "capabilitiesPlaceholder": "etiquetas de capacidad separadas por comas (p. ej. file-storage, cdn)",
5235
+ "contractsTitle": "Contratos de API",
5236
+ "contractsKeep": "Déjalo sin tocar para conservar los documentos guardados.",
5237
+ "contractsReplace": "Al guardar se SUSTITUYE todo el conjunto guardado por lo que aparece aquí.",
5238
+ "addContract": "Añadir un contrato",
5239
+ "removeContract": "Quitar este contrato",
5240
+ "contractIdPlaceholder": "id de contrato (minúsculas con guiones, p. ej. openapi)",
5241
+ "contractTitlePlaceholder": "título (p. ej. HTTP API)",
5242
+ "contractBodyPlaceholder": "pega el documento: un archivo OpenAPI 3.x o el código de un módulo de contrato"
5243
+ },
5244
+ "sources": {
5245
+ "empty": "No hay repositorios vinculados. Vincula uno abajo para sincronizar definiciones de servicio y sus archivos de contrato.",
5246
+ "linkTitle": "Vincular un repositorio",
5247
+ "link": "Vincular y sincronizar",
5248
+ "metaSynced": "sincronizado {date} · ref {ref}",
5249
+ "metaNever": "nunca sincronizado · ref {ref}",
5250
+ "metaFiles": "{service} · {count} archivos de contrato",
5251
+ "metaDirectory": "un servicio por subdirectorio",
5252
+ "changes": "Cambios",
5253
+ "check": "Buscar cambios",
5254
+ "sync": "Volver a sincronizar",
5255
+ "unlink": "Desvincular",
5256
+ "selectedDir": "Directorio:",
5257
+ "selectedFiles": "Archivos elegidos: {count}",
5258
+ "wholeRepo": "Todo el repositorio (raíz).",
5259
+ "ownerPlaceholder": "propietario",
5260
+ "repoPlaceholder": "repo",
5261
+ "dirPlaceholder": "ruta del directorio (p. ej. foundational)",
5262
+ "filePathsPlaceholder": "rutas de los archivos de contrato, una por línea",
5263
+ "refPlaceholder": "ref (por defecto HEAD)",
5264
+ "githubRequired": "Vincular un repositorio requiere la integración de control de versiones. Conéctala primero en un tablero.",
5265
+ "serviceIdPlaceholder": "id del servicio (minúsculas con guiones)",
5266
+ "serviceNamePlaceholder": "nombre del servicio",
5267
+ "serviceSummaryPlaceholder": "resumen de una línea (opcional)",
5268
+ "mode": {
5269
+ "directory": "Una carpeta de servicios",
5270
+ "files": "Archivos concretos, un servicio",
5271
+ "directoryHint": "Cada subdirectorio de la ruta vinculada es un servicio, descrito por un service.md con sus archivos de contrato al lado.",
5272
+ "filesHint": "Los archivos listados describen el único servicio que nombras aquí. Úsalo cuando no haya una convención de carpetas que adoptar."
5273
+ }
5274
+ },
5275
+ "confirmUnlinkSource": {
5276
+ "title": "¿Desvincular este repositorio?",
5277
+ "body": "\"{repo}\" y los servicios que sincronizó se quitarán del catálogo. Podrás volver a vincularlo más adelante.",
5278
+ "confirm": "Desvincular"
5279
+ },
5280
+ "confirmDelete": {
5281
+ "title": "¿Eliminar este servicio?",
5282
+ "body": "\"{name}\" y sus documentos de contrato subidos se quitarán de este ámbito.",
5283
+ "bodyWorkspace": "\"{name}\" y sus documentos de contrato subidos se quitarán de este tablero. Si la cuenta registra un servicio con el mismo id, este tablero también dejará de heredarlo; puedes deshacerlo en \"Excluidos en este tablero\".",
5284
+ "confirm": "Eliminar"
5285
+ },
5286
+ "toast": {
5287
+ "created": "Servicio registrado",
5288
+ "updated": "Servicio actualizado",
5289
+ "deleted": "Servicio eliminado",
5290
+ "saveFailed": "No se pudo guardar el servicio",
5291
+ "deleteFailed": "No se pudo eliminar el servicio",
5292
+ "suppressed": "Oculto para los diseños de este tablero",
5293
+ "suppressFailed": "No se pudo ocultar el servicio",
5294
+ "restored": "Vuelve a ofrecerse en este tablero",
5295
+ "restoreFailed": "No se pudo restaurar el servicio",
5296
+ "contractsFailed": "No se pudieron cargar los documentos de contrato",
5297
+ "sourceLinked": "Repositorio vinculado y sincronizado",
5298
+ "linkSourceFailed": "No se pudo vincular el repositorio",
5299
+ "synced": "Sincronizado: {updated} actualizados, {removed} eliminados",
5300
+ "syncFailed": "No se pudo sincronizar el repositorio",
5301
+ "changesAvailable": "Hay cambios en el origen",
5302
+ "upToDate": "Ya está actualizado",
5303
+ "checkSourceFailed": "No se pudo comprobar el repositorio",
5304
+ "sourceUnlinked": "Repositorio desvinculado",
5305
+ "unlinkSourceFailed": "No se pudo desvincular el repositorio"
5306
+ }
5307
+ },
5168
5308
  "sandbox": {
5169
5309
  "title": "Sandbox: pruebas de prompts y modelos",
5170
5310
  "description": "Prueba versiones de prompts y modelos contra fixtures calificados, evaluados por un modelo juez.",
@@ -126,7 +126,8 @@
126
126
  "accountSettings": "Paramètres du compte",
127
127
  "operatorDashboard": "Observabilité de la plateforme",
128
128
  "reports": "Rapports",
129
- "infrastructure": "Infrastructure"
129
+ "infrastructure": "Infrastructure",
130
+ "foundationalServices": "Services fondamentaux"
130
131
  },
131
132
  "board": {
132
133
  "toast": {
@@ -544,7 +545,9 @@
544
545
  "pipeline_schedule_attached": "Une planification récurrente utilise ce pipeline",
545
546
  "pipeline_schedule_requires_recurring": "Une planification récurrente exige ce pipeline",
546
547
  "pipeline_schedule_intake_unconfigured": "La planification n'a pas de collecte de tickets",
547
- "foundational_service_exists": "Ce service fondamental existe déjà"
548
+ "foundational_service_exists": "Ce service fondamental existe déjà",
549
+ "binary_output_service_invalid": "Service des sorties binaires introuvable",
550
+ "foundational_service_not_inherited": "Ce tableau a enregistré ce service"
548
551
  },
549
552
  "description": {
550
553
  "dependencies_unmet": "Cette tâche dépend d'autres qui ne sont pas encore terminées. Terminez-les ou débloquez-les, puis relancez-la.",
@@ -573,7 +576,9 @@
573
576
  "pipeline_schedule_attached": "Une planification récurrente pointe encore vers ce pipeline, et chaque exécution qu'elle lance le résout par son identifiant. Détachez ou supprimez d'abord cette planification, puis retirez le pipeline.",
574
577
  "pipeline_schedule_requires_recurring": "Une planification récurrente pointe encore vers ce pipeline. Le limiter à une exécution unique casserait chaque exécution future. Détachez d'abord cette planification.",
575
578
  "pipeline_schedule_intake_unconfigured": "Une étape de collecte de bogues tire son travail des réglages de collecte de tickets de la planification, et la planification associée n'en a aucun. Configurez d'abord la collecte de tickets sur la planification.",
576
- "foundational_service_exists": "Un service fondamental portant cet identifiant est déjà enregistré dans cette portée. Ouvrez l’entrée existante et modifiez-la : deux services ne peuvent pas partager un identifiant, car c’est le nom qu’un architecte emploie dans sa conception."
579
+ "foundational_service_exists": "Un service fondamental portant cet identifiant est déjà enregistré dans cette portée. Ouvrez l’entrée existante et modifiez-la : deux services ne peuvent pas partager un identifiant, car c’est le nom qu’un architecte emploie dans sa conception.",
580
+ "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.",
581
+ "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."
577
582
  },
578
583
  "action": {
579
584
  "connectGitHub": "Connecter GitHub",
@@ -2077,7 +2082,8 @@
2077
2082
  "shortcuts": "Raccourcis clavier",
2078
2083
  "bugHunt": "Chasse aux bugs",
2079
2084
  "toggleUiMode": "Changer le mode d'interface",
2080
- "tutorial": "Faire une visite guidée"
2085
+ "tutorial": "Faire une visite guidée",
2086
+ "foundationalServices": "Services fondamentaux"
2081
2087
  },
2082
2088
  "keywords": {
2083
2089
  "newPipeline": "pipeline agents chaîne",
@@ -2100,7 +2106,8 @@
2100
2106
  "shortcuts": "raccourcis clavier touches aide",
2101
2107
  "bugHunt": "bug chasse tri backlog tickets non assignés",
2102
2108
  "toggleUiMode": "interface mode simple avancé afficher masquer",
2103
- "tutorial": "tutoriel visite guide aide apprendre découverte"
2109
+ "tutorial": "tutoriel visite guide aide apprendre découverte",
2110
+ "foundationalServices": "capacité partagée plateforme service api contrat openapi catalogue"
2104
2111
  }
2105
2112
  },
2106
2113
  "integrationsHub": {
@@ -2260,6 +2267,9 @@
2260
2267
  "title": "Choisissez un environnement de test par défaut",
2261
2268
  "body": "Ce tableau n'a pas encore défini comment ses services obtiennent un environnement de test. Choisissez une valeur par défaut et chaque service ajouté ensuite démarrera avec elle, au lieu d'être configuré un par un. Vous pourrez toujours la modifier service par service.",
2262
2269
  "action": "Choisir la valeur par défaut"
2270
+ },
2271
+ "accountFoundational": {
2272
+ "intro": "Les capacités partagées que cette organisation exploite déjà - stockage de fichiers, notifications, audit - avec leurs contrats d'API. Chaque tableau en hérite, et il est demandé à un architecte de les consommer plutôt que de proposer de les reconstruire."
2263
2273
  }
2264
2274
  },
2265
2275
  "settings": {
@@ -2314,7 +2324,8 @@
2314
2324
  "tabs": {
2315
2325
  "team": "Équipe et accès",
2316
2326
  "fragments": "Fragments de contexte",
2317
- "skills": "Compétences"
2327
+ "skills": "Compétences",
2328
+ "foundational": "Services fondamentaux"
2318
2329
  }
2319
2330
  },
2320
2331
  "providerConnection": {
@@ -5165,6 +5176,135 @@
5165
5176
  },
5166
5177
  "unavailable": "La bibliothèque de fragments de prompt n'est pas activée pour ce déploiement."
5167
5178
  },
5179
+ "foundational": {
5180
+ "unavailable": "Le catalogue des services fondamentaux n'est pas activé pour ce déploiement.",
5181
+ "owner": {
5182
+ "workspace": "Ce tableau",
5183
+ "account": "Ce compte"
5184
+ },
5185
+ "tab": {
5186
+ "catalog": "Catalogue",
5187
+ "sources": "Dépôts liés"
5188
+ },
5189
+ "panel": {
5190
+ "title": "Services fondamentaux",
5191
+ "subtitle": "Les capacités partagées que votre organisation exploite déjà, pour qu'une conception les consomme au lieu de les reconstruire."
5192
+ },
5193
+ "tier": {
5194
+ "account": "Compte",
5195
+ "workspace": "Tableau"
5196
+ },
5197
+ "format": {
5198
+ "openapi": "OpenAPI",
5199
+ "toadContract": "toad-contracts",
5200
+ "lokaliseApiContract": "lokalise/api-contract"
5201
+ },
5202
+ "contracts": {
5203
+ "omitted": "+{count} autres non listées",
5204
+ "none": "Aucun contrat d'API joint. On indiquera à l'agent que l'interface est inconnue plutôt que de le laisser la deviner."
5205
+ },
5206
+ "catalog": {
5207
+ "intro": "Ce que reçoit un architecte qui conçoit sur ce tableau : identité, étiquettes de capacité et noms d'opérations. Les documents de contrat ne sont lus que lorsqu'une conception déclare le service.",
5208
+ "empty": "Aucun service fondamental pour l'instant. Enregistrez-en un ci-dessous ou liez un dépôt qui les décrit.",
5209
+ "suppress": "Ne pas proposer ce service sur ce tableau",
5210
+ "showDocuments": "Afficher les documents de contrat",
5211
+ "hideDocuments": "Masquer les documents de contrat"
5212
+ },
5213
+ "suppressions": {
5214
+ "title": "Écartés sur ce tableau",
5215
+ "intro": "Ces services du compte sont masqués pour les conceptions de ce tableau. Rien n'a été supprimé, et le compte les conserve pour tous les autres tableaux.",
5216
+ "restore": "Proposer à nouveau",
5217
+ "shadowsNothing": "Rien n'est hérité sous cet identifiant pour le moment : cet écartement ne masque donc rien."
5218
+ },
5219
+ "registry": {
5220
+ "empty": "Rien n'est encore enregistré à ce niveau.",
5221
+ "add": "Enregistrer un service",
5222
+ "addTitle": "Enregistrer un service fondamental",
5223
+ "editTitle": "Modifier le service fondamental",
5224
+ "edit": "Modifier",
5225
+ "delete": "Supprimer",
5226
+ "save": "Enregistrer",
5227
+ "cancel": "Annuler",
5228
+ "fromSource": "Synchronisé depuis un dépôt lié ({path}). Modifiez-le dans le dépôt ; la prochaine synchronisation écrasera les changements faits ici.",
5229
+ "idFixed": "l'identifiant qu'un architecte écrit dans sa conception, figé une fois enregistré",
5230
+ "idPlaceholder": "identifiant (minuscules et tirets, ex. file-storage)",
5231
+ "namePlaceholder": "nom (ex. File Storage)",
5232
+ "summaryPlaceholder": "résumé d'une ligne : à quoi il sert",
5233
+ "descriptionPlaceholder": "ce qu'il fait, quand l'utiliser et ce qu'il NE couvre PAS",
5234
+ "capabilitiesPlaceholder": "étiquettes de capacité, séparées par des virgules (ex. file-storage, cdn)",
5235
+ "contractsTitle": "Contrats d'API",
5236
+ "contractsKeep": "Laissez tel quel pour conserver les documents enregistrés.",
5237
+ "contractsReplace": "L'enregistrement REMPLACE tout l'ensemble stocké par ce qui figure ici.",
5238
+ "addContract": "Ajouter un contrat",
5239
+ "removeContract": "Retirer ce contrat",
5240
+ "contractIdPlaceholder": "identifiant de contrat (minuscules et tirets, ex. openapi)",
5241
+ "contractTitlePlaceholder": "titre (ex. HTTP API)",
5242
+ "contractBodyPlaceholder": "collez le document : un fichier OpenAPI 3.x, ou le source d'un module de contrat"
5243
+ },
5244
+ "sources": {
5245
+ "empty": "Aucun dépôt lié. Liez-en un ci-dessous pour synchroniser les définitions de service et leurs fichiers de contrat.",
5246
+ "linkTitle": "Lier un dépôt",
5247
+ "link": "Lier et synchroniser",
5248
+ "metaSynced": "synchronisé le {date} · réf {ref}",
5249
+ "metaNever": "jamais synchronisé · réf {ref}",
5250
+ "metaFiles": "{service} · {count} fichiers de contrat",
5251
+ "metaDirectory": "un service par sous-répertoire",
5252
+ "changes": "Changements",
5253
+ "check": "Vérifier les changements",
5254
+ "sync": "Resynchroniser",
5255
+ "unlink": "Délier",
5256
+ "selectedDir": "Répertoire :",
5257
+ "selectedFiles": "Fichiers choisis : {count}",
5258
+ "wholeRepo": "Dépôt entier (racine).",
5259
+ "ownerPlaceholder": "propriétaire",
5260
+ "repoPlaceholder": "dépôt",
5261
+ "dirPlaceholder": "chemin du répertoire (ex. foundational)",
5262
+ "filePathsPlaceholder": "chemins des fichiers de contrat, un par ligne",
5263
+ "refPlaceholder": "réf (HEAD par défaut)",
5264
+ "githubRequired": "Lier un dépôt nécessite l'intégration de gestion de sources. Connectez-la d'abord sur un tableau.",
5265
+ "serviceIdPlaceholder": "identifiant du service (minuscules et tirets)",
5266
+ "serviceNamePlaceholder": "nom du service",
5267
+ "serviceSummaryPlaceholder": "résumé d'une ligne (facultatif)",
5268
+ "mode": {
5269
+ "directory": "Un dossier de services",
5270
+ "files": "Des fichiers précis, un seul service",
5271
+ "directoryHint": "Chaque sous-répertoire du chemin lié est un service, décrit par un service.md avec ses fichiers de contrat à côté.",
5272
+ "filesHint": "Les fichiers listés décrivent tous l'unique service que vous nommez ici. À utiliser quand il n'y a pas de convention de dossiers à adopter."
5273
+ }
5274
+ },
5275
+ "confirmUnlinkSource": {
5276
+ "title": "Délier ce dépôt ?",
5277
+ "body": "\"{repo}\" et les services qu'il a synchronisés seront retirés du catalogue. Vous pourrez le relier plus tard.",
5278
+ "confirm": "Délier"
5279
+ },
5280
+ "confirmDelete": {
5281
+ "title": "Supprimer ce service ?",
5282
+ "body": "\"{name}\" et ses documents de contrat téléversés seront retirés de ce périmètre.",
5283
+ "bodyWorkspace": "\"{name}\" et ses documents de contrat téléversés seront retirés de ce tableau. Si le compte enregistre un service portant le même id, ce tableau cessera aussi d'en hériter ; vous pouvez annuler cela dans \"Écartés sur ce tableau\".",
5284
+ "confirm": "Supprimer"
5285
+ },
5286
+ "toast": {
5287
+ "created": "Service enregistré",
5288
+ "updated": "Service mis à jour",
5289
+ "deleted": "Service supprimé",
5290
+ "saveFailed": "Impossible d'enregistrer le service",
5291
+ "deleteFailed": "Impossible de supprimer le service",
5292
+ "suppressed": "Masqué pour les conceptions de ce tableau",
5293
+ "suppressFailed": "Impossible de masquer le service",
5294
+ "restored": "De nouveau proposé sur ce tableau",
5295
+ "restoreFailed": "Impossible de rétablir le service",
5296
+ "contractsFailed": "Impossible de charger les documents de contrat",
5297
+ "sourceLinked": "Dépôt lié et synchronisé",
5298
+ "linkSourceFailed": "Impossible de lier le dépôt",
5299
+ "synced": "Synchronisé : {updated} mis à jour, {removed} retirés",
5300
+ "syncFailed": "Impossible de synchroniser le dépôt",
5301
+ "changesAvailable": "Des changements sont disponibles en amont",
5302
+ "upToDate": "Déjà à jour",
5303
+ "checkSourceFailed": "Impossible de vérifier le dépôt",
5304
+ "sourceUnlinked": "Dépôt délié",
5305
+ "unlinkSourceFailed": "Impossible de délier le dépôt"
5306
+ }
5307
+ },
5168
5308
  "sandbox": {
5169
5309
  "title": "Bac à sable : test de prompts et de modèles",
5170
5310
  "description": "Testez des versions de prompts et des modèles sur des fixtures notées, évaluées par un modèle juge.",
@@ -126,7 +126,8 @@
126
126
  "modelConfiguration": "תצורת מודל",
127
127
  "accountSettings": "הגדרות חשבון",
128
128
  "operatorDashboard": "תצפית על הפלטפורמה",
129
- "reports": "דוחות"
129
+ "reports": "דוחות",
130
+ "foundationalServices": "שירותי תשתית"
130
131
  },
131
132
  "board": {
132
133
  "toast": {
@@ -544,7 +545,9 @@
544
545
  "pipeline_schedule_attached": "תזמון חוזר משתמש בצינור הזה",
545
546
  "pipeline_schedule_requires_recurring": "תזמון חוזר זקוק לצינור הזה",
546
547
  "pipeline_schedule_intake_unconfigured": "לתזמון אין קליטת פניות",
547
- "foundational_service_exists": "שירות תשתית כזה כבר קיים"
548
+ "foundational_service_exists": "שירות תשתית כזה כבר קיים",
549
+ "binary_output_service_invalid": "לא ניתן לזהות את השירות לפלט בינארי",
550
+ "foundational_service_not_inherited": "הלוח הזה רשם את השירות"
548
551
  },
549
552
  "description": {
550
553
  "dependencies_unmet": "משימה זו תלויה במשימות אחרות שטרם הושלמו. השלם או שחרר אותן, ולאחר מכן הפעל אותה שוב.",
@@ -573,7 +576,9 @@
573
576
  "pipeline_schedule_attached": "תזמון חוזר עדיין מפנה לצינור הזה, וכל הרצה שהוא מתחיל מאתרת את הצינור לפי המזהה. נתקו או מחקו קודם את התזמון ההוא, ורק אז הסירו את הצינור.",
574
577
  "pipeline_schedule_requires_recurring": "תזמון חוזר עדיין מפנה לצינור הזה, ולכן הפיכתו לחד פעמי בלבד תשבור כל הרצה עתידית. נתקו קודם את התזמון ההוא.",
575
578
  "pipeline_schedule_intake_unconfigured": "שלב קליטת באגים שואב את עבודתו מהגדרות קליטת הפניות של התזמון, ולתזמון המקושר אין כאלה. הגדירו קודם קליטת פניות בתזמון.",
576
- "foundational_service_exists": "שירות תשתית עם מזהה זה כבר רשום בהיקף הזה. פתחו את הרשומה הקיימת וערכו אותה — שני שירותים אינם יכולים לחלוק מזהה, מפני שהמזהה הוא השם שארכיטקט מציין בתכנון שלו."
579
+ "foundational_service_exists": "שירות תשתית עם מזהה זה כבר רשום בהיקף הזה. פתחו את הרשומה הקיימת וערכו אותה — שני שירותים אינם יכולים לחלוק מזהה, מפני שהמזהה הוא השם שארכיטקט מציין בתכנון שלו.",
580
+ "binary_output_service_invalid": "שלב שמייצר פלט בינארי בוחר שירות תשתית שהקטלוג של סביבת העבודה אינו יכול לזהות: המזהה אינו מוכר, או ששירות האחסון שנבחר אינו נושא את היכולת asset-storage. תקנו את הבחירה בשלב או רשמו את השירות, ואז התחילו מחדש.",
581
+ "foundational_service_not_inherited": "החרגה חלה על שירות שנורש מהחשבון. המזהה הזה רשום על ידי הלוח הזה, ולכן אין מה להחריג - מחקו במקום זאת את הרשומה של הלוח עצמו."
577
582
  },
578
583
  "action": {
579
584
  "connectGitHub": "חבר את GitHub",
@@ -2077,7 +2082,8 @@
2077
2082
  "shortcuts": "קיצורי מקלדת",
2078
2083
  "bugHunt": "ציד באגים",
2079
2084
  "toggleUiMode": "החלפת מצב ממשק",
2080
- "tutorial": "צא לסיור"
2085
+ "tutorial": "צא לסיור",
2086
+ "foundationalServices": "שירותי תשתית"
2081
2087
  },
2082
2088
  "keywords": {
2083
2089
  "newPipeline": "צינור סוכנים שרשרת",
@@ -2100,7 +2106,8 @@
2100
2106
  "shortcuts": "קיצורים מקלדת מקשים עזרה",
2101
2107
  "bugHunt": "באג bug ציד מיון צבר פניות לא משויכות",
2102
2108
  "toggleUiMode": "ממשק מצב בסיסי מתקדם הצגה הסתרה",
2103
- "tutorial": "מדריך סיור עזרה הדרכה לימוד"
2109
+ "tutorial": "מדריך סיור עזרה הדרכה לימוד",
2110
+ "foundationalServices": "יכולת משותפת פלטפורמה שירות api חוזה openapi קטלוג"
2104
2111
  }
2105
2112
  },
2106
2113
  "integrationsHub": {
@@ -2260,6 +2267,9 @@
2260
2267
  "title": "בחרו סביבת בדיקות ברירת מחדל",
2261
2268
  "body": "בלוח הזה עדיין לא נקבע כיצד השירותים שלו מקבלים סביבת בדיקות. בחרו ברירת מחדל, וכל שירות שתוסיפו מכאן ואילך יתחיל איתה במקום להיות מוגדר אחד אחד. תמיד אפשר לשנות זאת עבור שירות מסוים.",
2262
2269
  "action": "בחירת ברירת מחדל"
2270
+ },
2271
+ "accountFoundational": {
2272
+ "intro": "היכולות המשותפות שהארגון הזה כבר מפעיל - אחסון קבצים, התראות, ביקורת - יחד עם חוזי ה-API שלהן. כל לוח יורש אותן, ולארכיטקט נאמר לצרוך אותן במקום להציע בנייה מחדש."
2263
2273
  }
2264
2274
  },
2265
2275
  "settings": {
@@ -2314,7 +2324,8 @@
2314
2324
  "tabs": {
2315
2325
  "team": "צוות וגישה",
2316
2326
  "fragments": "מקטעי הקשר",
2317
- "skills": "כישורים"
2327
+ "skills": "כישורים",
2328
+ "foundational": "שירותי תשתית"
2318
2329
  }
2319
2330
  },
2320
2331
  "infrastructure": {
@@ -5176,6 +5187,135 @@
5176
5187
  },
5177
5188
  "unavailable": "ספריית מקטעי הפרומפט אינה מופעלת בפריסה זו."
5178
5189
  },
5190
+ "foundational": {
5191
+ "unavailable": "קטלוג שירותי התשתית אינו מופעל בפריסה הזו.",
5192
+ "owner": {
5193
+ "workspace": "הלוח הזה",
5194
+ "account": "החשבון הזה"
5195
+ },
5196
+ "tab": {
5197
+ "catalog": "קטלוג",
5198
+ "sources": "מאגרים מקושרים"
5199
+ },
5200
+ "panel": {
5201
+ "title": "שירותי תשתית",
5202
+ "subtitle": "היכולות המשותפות שהארגון שלכם כבר מפעיל, כדי שתכנון יצרוך אותן במקום לבנות אותן מחדש."
5203
+ },
5204
+ "tier": {
5205
+ "account": "חשבון",
5206
+ "workspace": "לוח"
5207
+ },
5208
+ "format": {
5209
+ "openapi": "OpenAPI",
5210
+ "toadContract": "toad-contracts",
5211
+ "lokaliseApiContract": "lokalise/api-contract"
5212
+ },
5213
+ "contracts": {
5214
+ "omitted": "עוד {count} שאינם ברשימה",
5215
+ "none": "לא צורף חוזה API. לסוכן ייאמר שהממשק אינו ידוע, במקום שינחש אותו."
5216
+ },
5217
+ "catalog": {
5218
+ "intro": "מה שארכיטקט המתכנן בלוח הזה מקבל: זהות, תגיות יכולת ושמות פעולות. מסמכי החוזה נקראים רק כשתכנון מצהיר על השירות.",
5219
+ "empty": "אין עדיין שירותי תשתית. רשמו אחד למטה, או קשרו מאגר שמתאר אותם.",
5220
+ "suppress": "לא להציע את השירות הזה בלוח הזה",
5221
+ "showDocuments": "הצגת מסמכי החוזה",
5222
+ "hideDocuments": "הסתרת מסמכי החוזה"
5223
+ },
5224
+ "suppressions": {
5225
+ "title": "הוחרגו בלוח הזה",
5226
+ "intro": "שירותי החשבון האלה מוסתרים מתכנונים בלוח הזה. שום דבר לא נמחק, והחשבון שומר אותם לכל שאר הלוחות.",
5227
+ "restore": "להציע שוב",
5228
+ "shadowsNothing": "כרגע לא נורש דבר תחת המזהה הזה, ולכן ההחרגה הזו אינה מסתירה כלום."
5229
+ },
5230
+ "registry": {
5231
+ "empty": "עדיין לא נרשם דבר ברמה הזו.",
5232
+ "add": "רישום שירות",
5233
+ "addTitle": "רישום שירות תשתית",
5234
+ "editTitle": "עריכת שירות תשתית",
5235
+ "edit": "עריכה",
5236
+ "delete": "מחיקה",
5237
+ "save": "שמירה",
5238
+ "cancel": "ביטול",
5239
+ "fromSource": "מסונכרן ממאגר מקושר ({path}). ערכו אותו במאגר; הסנכרון הבא ידרוס שינויים שנעשו כאן.",
5240
+ "idFixed": "המזהה שארכיטקט כותב בתכנון שלו, קבוע לאחר הרישום",
5241
+ "idPlaceholder": "מזהה (אותיות קטנות ומקפים, למשל file-storage)",
5242
+ "namePlaceholder": "שם (למשל File Storage)",
5243
+ "summaryPlaceholder": "תקציר בשורה אחת - למה הוא משמש",
5244
+ "descriptionPlaceholder": "מה הוא עושה, מתי להשתמש בו ומה הוא אינו מכסה",
5245
+ "capabilitiesPlaceholder": "תגיות יכולת, מופרדות בפסיקים (למשל file-storage, cdn)",
5246
+ "contractsTitle": "חוזי API",
5247
+ "contractsKeep": "השאירו ללא שינוי כדי לשמור על המסמכים המאוחסנים.",
5248
+ "contractsReplace": "השמירה מחליפה את כל האוסף המאוחסן במה שמופיע כאן.",
5249
+ "addContract": "הוספת חוזה",
5250
+ "removeContract": "הסרת החוזה הזה",
5251
+ "contractIdPlaceholder": "מזהה חוזה (אותיות קטנות ומקפים, למשל openapi)",
5252
+ "contractTitlePlaceholder": "כותרת (למשל HTTP API)",
5253
+ "contractBodyPlaceholder": "הדביקו את המסמך: קובץ OpenAPI 3.x, או קוד המקור של מודול חוזה"
5254
+ },
5255
+ "sources": {
5256
+ "empty": "אין מאגרים מקושרים. קשרו אחד למטה כדי לסנכרן הגדרות שירות וקבצי חוזה.",
5257
+ "linkTitle": "קישור מאגר",
5258
+ "link": "קישור וסנכרון",
5259
+ "metaSynced": "סונכרן {date} · ref {ref}",
5260
+ "metaNever": "מעולם לא סונכרן · ref {ref}",
5261
+ "metaFiles": "{service} · {count} קבצי חוזה",
5262
+ "metaDirectory": "שירות אחד לכל תיקיית משנה",
5263
+ "changes": "שינויים",
5264
+ "check": "בדיקת שינויים",
5265
+ "sync": "סנכרון מחדש",
5266
+ "unlink": "ניתוק",
5267
+ "selectedDir": "תיקייה:",
5268
+ "selectedFiles": "קבצים שנבחרו: {count}",
5269
+ "wholeRepo": "כל המאגר (השורש).",
5270
+ "ownerPlaceholder": "בעלים",
5271
+ "repoPlaceholder": "מאגר",
5272
+ "dirPlaceholder": "נתיב תיקייה (למשל foundational)",
5273
+ "filePathsPlaceholder": "נתיבי קבצי החוזה, אחד בכל שורה",
5274
+ "refPlaceholder": "ref (ברירת מחדל HEAD)",
5275
+ "githubRequired": "קישור מאגר דורש את אינטגרציית ניהול הקוד. חברו אותה קודם בלוח כלשהו.",
5276
+ "serviceIdPlaceholder": "מזהה שירות (אותיות קטנות ומקפים)",
5277
+ "serviceNamePlaceholder": "שם השירות",
5278
+ "serviceSummaryPlaceholder": "תקציר בשורה אחת (רשות)",
5279
+ "mode": {
5280
+ "directory": "תיקייה של שירותים",
5281
+ "files": "קבצים מסוימים, שירות אחד",
5282
+ "directoryHint": "כל תיקיית משנה בנתיב המקושר היא שירות, המתואר בקובץ service.md עם קבצי החוזה לצידו.",
5283
+ "filesHint": "כל הקבצים ברשימה מתארים את השירות היחיד שאתם מציינים כאן. השתמשו בזה כשאין מוסכמת תיקיות לאמץ."
5284
+ }
5285
+ },
5286
+ "confirmUnlinkSource": {
5287
+ "title": "לנתק את המאגר הזה?",
5288
+ "body": "\"{repo}\" והשירותים שסונכרנו ממנו יוסרו מהקטלוג. אפשר לקשר אותו שוב מאוחר יותר.",
5289
+ "confirm": "ניתוק"
5290
+ },
5291
+ "confirmDelete": {
5292
+ "title": "למחוק את השירות הזה?",
5293
+ "body": "\"{name}\" ומסמכי החוזה שהועלו עבורו יוסרו מהרמה הזו.",
5294
+ "bodyWorkspace": "\"{name}\" ומסמכי החוזה שהועלו עבורו יוסרו מהלוח הזה. אם החשבון רושם שירות באותו מזהה, הלוח הזה גם יפסיק לרשת אותו; אפשר לבטל זאת תחת \"הוחרגו בלוח הזה\".",
5295
+ "confirm": "מחיקה"
5296
+ },
5297
+ "toast": {
5298
+ "created": "השירות נרשם",
5299
+ "updated": "השירות עודכן",
5300
+ "deleted": "השירות נמחק",
5301
+ "saveFailed": "לא ניתן היה לשמור את השירות",
5302
+ "deleteFailed": "לא ניתן היה למחוק את השירות",
5303
+ "suppressed": "הוסתר מתכנונים בלוח הזה",
5304
+ "suppressFailed": "לא ניתן היה להסתיר את השירות",
5305
+ "restored": "מוצע שוב בלוח הזה",
5306
+ "restoreFailed": "לא ניתן היה לשחזר את השירות",
5307
+ "contractsFailed": "לא ניתן היה לטעון את מסמכי החוזה",
5308
+ "sourceLinked": "המאגר קושר וסונכרן",
5309
+ "linkSourceFailed": "לא ניתן היה לקשר את המאגר",
5310
+ "synced": "סונכרן: {updated} עודכנו, {removed} הוסרו",
5311
+ "syncFailed": "לא ניתן היה לסנכרן את המאגר",
5312
+ "changesAvailable": "יש שינויים במקור",
5313
+ "upToDate": "כבר מעודכן",
5314
+ "checkSourceFailed": "לא ניתן היה לבדוק את המאגר",
5315
+ "sourceUnlinked": "המאגר נותק",
5316
+ "unlinkSourceFailed": "לא ניתן היה לנתק את המאגר"
5317
+ }
5318
+ },
5179
5319
  "sandbox": {
5180
5320
  "title": "Sandbox: בדיקת פרומפטים ומודלים",
5181
5321
  "description": "נסה גרסאות פרומפט ומודלים מול fixtures מנוקדים, בניקוד של מודל שופט.",