@cat-factory/app 0.213.1 → 0.215.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.
- package/README.md +107 -13
- package/app/components/observability/StepMetricsBar.vue +11 -0
- package/app/components/panels/AgentStepDetail.vue +14 -0
- package/app/components/panels/MergerResultView.vue +20 -2
- package/app/components/panels/ObservabilityPanel.vue +57 -0
- package/app/components/panels/ResultWindowShell.vue +77 -0
- package/app/components/panels/StepReproductionReport.vue +167 -0
- package/app/components/pipeline/BinaryOutputStepPicker.vue +25 -0
- package/app/components/tutorial/TutorialCatalogue.vue +14 -1
- package/app/components/tutorial/TutorialNudge.vue +107 -0
- package/app/components/tutorial/TutorialOverlay.vue +92 -11
- package/app/composables/api/execution.ts +5 -2
- package/app/composables/api/tutorial.ts +25 -0
- package/app/composables/useApi.ts +2 -0
- package/app/composables/usePipelineErrorToast.ts +4 -0
- package/app/composables/useTutorialNudge.ts +77 -0
- package/app/composables/useTutorialSync.ts +141 -0
- package/app/modular/external-tools.spec.ts +1 -0
- package/app/modular/nav-contributions.spec.ts +2 -0
- package/app/modular/nav-contributions.ts +11 -0
- package/app/modular/nav-gates.ts +10 -0
- package/app/modular/registry.spec.ts +1 -0
- package/app/modular/tutorial-tours.spec.ts +55 -4
- package/app/modular/tutorial-tours.ts +231 -9
- package/app/pages/index.vue +20 -1
- package/app/stores/tutorial.prompt.ts +59 -0
- package/app/stores/tutorial.record.ts +191 -0
- package/app/stores/tutorial.spec.ts +207 -0
- package/app/stores/tutorial.ts +78 -91
- package/app/stores/workspace/hydrate.ts +5 -0
- package/app/types/domain.ts +3 -0
- package/app/types/reproduction.ts +11 -0
- package/app/utils/binaryOutput.spec.ts +56 -2
- package/app/utils/binaryOutput.ts +55 -32
- package/app/utils/observability.spec.ts +44 -1
- package/app/utils/observability.ts +50 -0
- package/app/utils/reproduction.ts +51 -0
- package/app/utils/tutorial.spec.ts +255 -0
- package/app/utils/tutorial.ts +173 -0
- package/i18n/locales/de.json +148 -6
- package/i18n/locales/en.json +153 -6
- package/i18n/locales/es.json +148 -6
- package/i18n/locales/fr.json +148 -6
- package/i18n/locales/he.json +148 -6
- package/i18n/locales/it.json +148 -6
- package/i18n/locales/ja.json +148 -6
- package/i18n/locales/pl.json +148 -6
- package/i18n/locales/tr.json +148 -6
- package/i18n/locales/uk.json +148 -6
- package/package.json +2 -2
package/i18n/locales/es.json
CHANGED
|
@@ -566,7 +566,8 @@
|
|
|
566
566
|
"binary_output_service_invalid": "No se puede resolver el servicio de salidas binarias",
|
|
567
567
|
"binary_output_generator_invalid": "No se puede resolver el generador de salidas binarias",
|
|
568
568
|
"foundational_service_not_inherited": "Este tablero registró ese servicio",
|
|
569
|
-
"ticket_already_linked": "Esta incidencia ya tiene una tarea"
|
|
569
|
+
"ticket_already_linked": "Esta incidencia ya tiene una tarea",
|
|
570
|
+
"dry_run_not_mergeable": "Una ejecución de prueba no se puede fusionar"
|
|
570
571
|
},
|
|
571
572
|
"description": {
|
|
572
573
|
"dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
|
|
@@ -599,7 +600,8 @@
|
|
|
599
600
|
"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.",
|
|
600
601
|
"binary_output_generator_invalid": "Un paso que genera salidas binarias selecciona una integración generativa que esta instalación no registra, o ninguna de las integraciones seleccionadas produce un tipo de contenido que el paso debe entregar. Las integraciones generativas se registran en el código de la instalación, no en este espacio de trabajo: regístrala o corrige la selección del paso y vuelve a iniciar.",
|
|
601
602
|
"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.",
|
|
602
|
-
"ticket_already_linked": "Una incidencia solo puede respaldar una tarea, así que volver a vincularla dejaría a la tarea existente sin el contexto con el que se creó. Abre esa tarea o desvincula antes la incidencia."
|
|
603
|
+
"ticket_already_linked": "Una incidencia solo puede respaldar una tarea, así que volver a vincularla dejaría a la tarea existente sin el contexto con el que se creó. Abre esa tarea o desvincula antes la incidencia.",
|
|
604
|
+
"dry_run_not_mergeable": "Esta pull request proviene de una ejecución de prueba, así que no se puede fusionar desde aquí. Vuelve a iniciar la tarea como ejecución real para producir una pull request que este espacio de trabajo sí fusionará."
|
|
603
605
|
},
|
|
604
606
|
"action": {
|
|
605
607
|
"connectGitHub": "Conectar GitHub",
|
|
@@ -1243,7 +1245,9 @@
|
|
|
1243
1245
|
"merge_failed": "Las puntuaciones estaban dentro de los umbrales de {preset}, pero la fusión automática no pudo completarse (por ejemplo, protección de rama o un conflicto), por lo que el PR espera a que una persona lo fusione.",
|
|
1244
1246
|
"merge_partial": "Algunas de las solicitudes de incorporación de la tarea se fusionaron, pero una posterior no pudo, por lo que el cambio espera a que una persona termine o revierta la fusión multirrepositorio.",
|
|
1245
1247
|
"class_auto_merge": "Este preajuste fusiona siempre esta categoría de cambio de forma automática, así que no se compararon las puntuaciones.",
|
|
1246
|
-
"class_requires_review": "Este preajuste envía siempre esta categoría de cambio a una persona, sean cuales sean las puntuaciones."
|
|
1248
|
+
"class_requires_review": "Este preajuste envía siempre esta categoría de cambio a una persona, sean cuales sean las puntuaciones.",
|
|
1249
|
+
"role_requires_review": "Esta configuración obliga a que las ejecuciones iniciadas por un {role} pasen por revisión humana para este tipo de cambio, sean cuales sean las puntuaciones. Un compañero con un nivel superior puede fusionar este PR tal como está.",
|
|
1250
|
+
"dry_run": "Esta fue una ejecución de prueba, así que la pull request quedó abierta para una persona y no se compararon las puntuaciones. Vuelve a iniciar la tarea como ejecución real para producir una pull request que este espacio de trabajo sí fusionará."
|
|
1247
1251
|
},
|
|
1248
1252
|
"scores": "Puntuaciones",
|
|
1249
1253
|
"axis": {
|
|
@@ -1402,6 +1406,33 @@
|
|
|
1402
1406
|
"failedSummary": "{failed} de {total} comprobaciones seguían fallando tras {attempts} de {maxAttempts} intentos, así que no se abrió ninguna solicitud de incorporación.",
|
|
1403
1407
|
"exitCode": "código de salida {code}",
|
|
1404
1408
|
"timedOut": "tiempo agotado"
|
|
1409
|
+
},
|
|
1410
|
+
"reproduction": {
|
|
1411
|
+
"heading": "Prueba de reproducción",
|
|
1412
|
+
"status": {
|
|
1413
|
+
"reproduced": "Reproducido",
|
|
1414
|
+
"inconclusive": "No demostrado",
|
|
1415
|
+
"declared_infeasible": "No reproducible"
|
|
1416
|
+
},
|
|
1417
|
+
"verdict": {
|
|
1418
|
+
"reproduced": "La comprobación declarada falló en el árbol previo a la corrección y pasa en este.",
|
|
1419
|
+
"inconclusive": "La comprobación no demostró el defecto a ambos lados de la corrección, por lo que la corrección no queda evidenciada.",
|
|
1420
|
+
"declared_infeasible": "El agente declaró que este error no se puede reproducir en una prueba e indicó qué verificó en su lugar."
|
|
1421
|
+
},
|
|
1422
|
+
"tree": {
|
|
1423
|
+
"base": "Árbol previo a la corrección",
|
|
1424
|
+
"final": "Árbol final"
|
|
1425
|
+
},
|
|
1426
|
+
"command": "Comando",
|
|
1427
|
+
"reason": "Por qué no se puede reproducir",
|
|
1428
|
+
"alternative": "Verificado en su lugar",
|
|
1429
|
+
"passed": "pasó",
|
|
1430
|
+
"exitCode": "código de salida {code}",
|
|
1431
|
+
"timedOut": "tiempo agotado",
|
|
1432
|
+
"setupFailed": "fallo en la preparación",
|
|
1433
|
+
"notRun": "no ejecutado",
|
|
1434
|
+
"attempts": "Intento {attempts} de {maxAttempts}",
|
|
1435
|
+
"omittedTestPaths": "Se descartó {count} archivo de prueba declarado antes de ejecutar la prueba, por lo que el árbol previo a la corrección se reconstruyó a partir de una reproducción incompleta. | Se descartaron {count} archivos de prueba declarados antes de ejecutar la prueba, por lo que el árbol previo a la corrección se reconstruyó a partir de una reproducción incompleta."
|
|
1405
1436
|
}
|
|
1406
1437
|
},
|
|
1407
1438
|
"inspector": {
|
|
@@ -1478,6 +1509,9 @@
|
|
|
1478
1509
|
"contextError": "No se pudo cargar el contexto proporcionado.",
|
|
1479
1510
|
"summary": {
|
|
1480
1511
|
"calls": "Llamadas",
|
|
1512
|
+
"cost": "Coste estimado",
|
|
1513
|
+
"costHint": "Calculado a precios de lista, cada clase de entrada con su propia tarifa: una lectura de caché cuesta alrededor de una décima parte de la entrada nueva y una escritura de caché aproximadamente un cuarto más. Una ejecución por suscripción no paga nada por token, así que esto es lo que habrían costado los mismos tokens con pago por uso.",
|
|
1514
|
+
"costIncomplete": "No se muestra: al menos una fase se ejecutó con un modelo para el que esta instalación no tiene tarifa, así que el total de la ejecución quedaría incompleto. Las fases con precio aparecen abajo.",
|
|
1481
1515
|
"tokensInOut": "Tokens (entrada / salida)",
|
|
1482
1516
|
"transportOverhead": "Sobrecarga de transporte",
|
|
1483
1517
|
"modelExecution": "Ejecución del modelo",
|
|
@@ -1497,8 +1531,10 @@
|
|
|
1497
1531
|
"phase": "Fase",
|
|
1498
1532
|
"turns": "Turnos",
|
|
1499
1533
|
"tokensInOut": "Tokens (entrada / salida)",
|
|
1534
|
+
"cost": "Coste",
|
|
1500
1535
|
"carryCost": "Coste de arrastre"
|
|
1501
1536
|
},
|
|
1537
|
+
"costHint": "Coste estimado de los tokens de esta fase a precios de lista. Un guion indica que esta instalación no tiene tarifa para el modelo que se ejecutó.",
|
|
1502
1538
|
"carryCostHint": "Cuánto cargó cada fase sobre los turnos posteriores: su contexto contado una vez por cada turno que tuvo que reenviarlo. Compara entre sí las fases de una ejecución; por sí sola la cifra no significa nada. Una fase que se ejecuta al final arrastra poco por mucho que haya gastado, así que lee esta columna junto a los tokens de al lado.",
|
|
1503
1539
|
"unattributed": "Sin atribuir",
|
|
1504
1540
|
"unattributedHint": "registrado por un canal que no informa de la fase"
|
|
@@ -1506,6 +1542,7 @@
|
|
|
1506
1542
|
"metricsBar": {
|
|
1507
1543
|
"calls": "{count} llamada | {count} llamadas",
|
|
1508
1544
|
"inputCompletionTokens": "Tokens totales de entrada / salida. La entrada tambien cuenta los tokens en caché: siguen ocupando la ventana de contexto, igual que los cuenta el medidor de contexto de Claude Code.",
|
|
1545
|
+
"costHint": "Coste estimado de los tokens de este paso a precios de lista, cada clase de entrada con su propia tarifa. Una ejecución por suscripción no paga nada por token, así que esto es lo que habrían costado los mismos tokens con pago por uso.",
|
|
1509
1546
|
"fresh": "{tokens} frescos",
|
|
1510
1547
|
"freshHint": "Entrada procesada desde cero, sin nada servido desde la caché",
|
|
1511
1548
|
"cacheRead": "{tokens} leídos de caché",
|
|
@@ -4256,6 +4293,7 @@
|
|
|
4256
4293
|
"binaryOutputMediaTypeUnverifiable": "Ninguna integración seleccionada declara {formats}, pero una de ellas no declara ningún formato, así que no se pudo comprobar. El paso se inicia igualmente; confirma en la API de la integración que puede emitirlo.",
|
|
4257
4294
|
"binaryOutputMediaTypeUnusable": "No se guardó, porque esto no son tipos de medio: {entries}. Escribe cada uno como type/subtype.",
|
|
4258
4295
|
"binaryOutputGeneratorMissing": "Esta instalación no registra estas integraciones generativas: {ids}. Se registran en el código de la instalación, no en este espacio de trabajo.",
|
|
4296
|
+
"binaryOutputGeneratorOverlap": "Más de una integración seleccionada produce el mismo tipo de contenido ({overlaps}). No hay nada malo en ello, pero el tipo de contenido ya no decide a cuál llama el agente: indica en el prompt de este paso cuál usar para qué, o elegirá una y seguirá usando esa.",
|
|
4259
4297
|
"binaryOutputModalityUncovered": "Ninguna integración seleccionada produce {modalities}, que este paso debe entregar.",
|
|
4260
4298
|
"binaryOutputModalityRetired": "{modality} (ya no disponible: vuelve a elegir los tipos de contenido de este paso)",
|
|
4261
4299
|
"binaryOutputModality": {
|
|
@@ -6279,6 +6317,12 @@
|
|
|
6279
6317
|
"minor": "Comentarios menores",
|
|
6280
6318
|
"major": "Retrabajo real",
|
|
6281
6319
|
"classHistory": "{merged} fusionados en esta categoría, {autoShare} de forma automática"
|
|
6320
|
+
},
|
|
6321
|
+
"role": {
|
|
6322
|
+
"admin": "administrador",
|
|
6323
|
+
"member": "miembro",
|
|
6324
|
+
"viewer": "observador",
|
|
6325
|
+
"unattributed": "un inicio automático"
|
|
6282
6326
|
}
|
|
6283
6327
|
},
|
|
6284
6328
|
"vcs": {
|
|
@@ -6380,7 +6424,10 @@
|
|
|
6380
6424
|
"finishedRun": "Una ejecución terminada correctamente",
|
|
6381
6425
|
"integrationsManage": "Permiso para gestionar integraciones",
|
|
6382
6426
|
"settingsManage": "Permiso para gestionar los ajustes del espacio de trabajo",
|
|
6383
|
-
"library": "La biblioteca de fragmentos de contexto habilitada en este despliegue"
|
|
6427
|
+
"library": "La biblioteca de fragmentos de contexto habilitada en este despliegue",
|
|
6428
|
+
"failedRun": "Una ejecución que ha fallado",
|
|
6429
|
+
"infrastructure": "Un backend de ejecución conectado a este espacio de trabajo",
|
|
6430
|
+
"advancedTier": "El modo de interfaz avanzado"
|
|
6384
6431
|
},
|
|
6385
6432
|
"overlay": {
|
|
6386
6433
|
"next": "Siguiente",
|
|
@@ -6392,7 +6439,9 @@
|
|
|
6392
6439
|
"announcement": "Paso {current} de {total}. {title}. {body}",
|
|
6393
6440
|
"abridged": "Se omitió 1 paso: ese control no forma parte de este tablero. | Se omitieron {count} pasos: esos controles no forman parte de este tablero.",
|
|
6394
6441
|
"searching": "Buscando el control resaltado...",
|
|
6395
|
-
"clickHint": "Haz clic en el control resaltado para continuar"
|
|
6442
|
+
"clickHint": "Haz clic en el control resaltado para continuar",
|
|
6443
|
+
"nextUp": "A continuación",
|
|
6444
|
+
"takeNext": "Hacer este"
|
|
6396
6445
|
},
|
|
6397
6446
|
"tours": {
|
|
6398
6447
|
"boardBasics": {
|
|
@@ -6515,7 +6564,7 @@
|
|
|
6515
6564
|
},
|
|
6516
6565
|
"finish": {
|
|
6517
6566
|
"title": "Ese es el ciclo",
|
|
6518
|
-
"body": "Planificar una tarea, elegir un pipeline, arrancarla y seguirla.
|
|
6567
|
+
"body": "Planificar una tarea, elegir un pipeline, arrancarla y seguirla. Los recorridos posteriores a este leen una ejecución real, así que se desbloquean en cuanto arranques una de verdad."
|
|
6519
6568
|
}
|
|
6520
6569
|
}
|
|
6521
6570
|
},
|
|
@@ -6670,7 +6719,100 @@
|
|
|
6670
6719
|
"body": "Algunas entradas son tuyas y no del tablero, como un token de acceso personal o un plan, y solo se usan en las ejecuciones que arrancas tú. El hub marca cuál es cuál, y Mi configuración reúne las que son tuyas."
|
|
6671
6720
|
}
|
|
6672
6721
|
}
|
|
6722
|
+
},
|
|
6723
|
+
"diagnoseFailure": {
|
|
6724
|
+
"title": "Leer un fallo",
|
|
6725
|
+
"description": "Una ejecución se ha detenido con un error. Averigua qué se ha roto y qué hacer al respecto.",
|
|
6726
|
+
"steps": {
|
|
6727
|
+
"intro": {
|
|
6728
|
+
"title": "Las ejecuciones fallan, y es normal",
|
|
6729
|
+
"body": "Una ejecución fallida no es un callejón sin salida. El tablero conserva el error, la causa suele ser una línea y la mayoría se arregla con un ajuste, no reescribiendo la tarea."
|
|
6730
|
+
},
|
|
6731
|
+
"banner": {
|
|
6732
|
+
"title": "Qué ha ido mal",
|
|
6733
|
+
"body": "La tarjeta cambia su barra de progreso por este aviso. Nombra la causa, los detalles guardan la salida en bruto y algunas causas ofrecen un botón directo al ajuste que las corrige."
|
|
6734
|
+
},
|
|
6735
|
+
"retry": {
|
|
6736
|
+
"title": "Volver a ejecutarla",
|
|
6737
|
+
"body": "Reintentar vuelve a ejecutar el trabajo. Los errores anteriores se quedan en la tarea, bajo «Errores anteriores», para que puedas comparar intentos en vez de perder el rastro."
|
|
6738
|
+
},
|
|
6739
|
+
"finish": {
|
|
6740
|
+
"title": "Un fallo es información",
|
|
6741
|
+
"body": "Corrige la causa, reintenta, compara. Si el mismo error vuelve una y otra vez, los detalles son lo que hay que llevarle a quien pueda ampliar un permiso o conectar lo que falta."
|
|
6742
|
+
}
|
|
6743
|
+
}
|
|
6744
|
+
},
|
|
6745
|
+
"prepareInfrastructure": {
|
|
6746
|
+
"title": "Dónde se ejecuta todo",
|
|
6747
|
+
"description": "Las máquinas donde corren los agentes, los entornos donde prueban y las credenciales que pueden usar.",
|
|
6748
|
+
"steps": {
|
|
6749
|
+
"intro": {
|
|
6750
|
+
"title": "Los agentes necesitan dónde ejecutarse",
|
|
6751
|
+
"body": "Cada paso en contenedor corre sobre un backend de ejecución, las pruebas se levantan en un entorno y algunas capacidades necesitan una credencial. Las tres cosas se configuran en una sola ventana."
|
|
6752
|
+
},
|
|
6753
|
+
"open": {
|
|
6754
|
+
"title": "Abrir Infraestructura",
|
|
6755
|
+
"body": "Todo lo relativo a dónde y cómo se ejecutan las ejecuciones está aquí."
|
|
6756
|
+
},
|
|
6757
|
+
"tabs": {
|
|
6758
|
+
"title": "Una pestaña por asunto",
|
|
6759
|
+
"body": "Contenedores de agentes es donde se ejecuta el trabajo. Entornos de prueba es a partir de qué se levanta un servicio. La lista de credenciales muestra qué claves pueden resolver realmente las capacidades que usan tus agentes, y cuáles siguen faltando."
|
|
6760
|
+
},
|
|
6761
|
+
"finish": {
|
|
6762
|
+
"title": "Los fallos apuntan aquí",
|
|
6763
|
+
"body": "Cuando una ejecución falla al aprovisionar, esta es la ventana que su aviso te pide abrir. Mejor saberlo antes de que pase que después."
|
|
6764
|
+
}
|
|
6765
|
+
}
|
|
6766
|
+
},
|
|
6767
|
+
"panelReviews": {
|
|
6768
|
+
"title": "Revisión por panel",
|
|
6769
|
+
"description": "Que varios modelos revisen el mismo trabajo en lugar de uno, en las tareas que lo merecen.",
|
|
6770
|
+
"steps": {
|
|
6771
|
+
"intro": {
|
|
6772
|
+
"title": "Un revisor, o varios",
|
|
6773
|
+
"body": "Un paso de revisión ejecuta normalmente un agente. En su lugar puede ejecutar un panel de varios modelos y comparar lo que dicen, lo que detecta lo que a un solo revisor se le escapa en trabajos más pesados."
|
|
6774
|
+
},
|
|
6775
|
+
"open": {
|
|
6776
|
+
"title": "Abrir Configuración de modelos",
|
|
6777
|
+
"body": "Los paneles están hechos de modelos, así que se configuran junto a ellos."
|
|
6778
|
+
},
|
|
6779
|
+
"groups": {
|
|
6780
|
+
"title": "Definir un panel",
|
|
6781
|
+
"body": "Un grupo nombra los modelos del panel y lo exigente que debe ser una tarea para usarlo. Un paso selecciona entonces un grupo en vez de nombrar modelos uno a uno."
|
|
6782
|
+
},
|
|
6783
|
+
"finish": {
|
|
6784
|
+
"title": "El coste sigue al esfuerzo",
|
|
6785
|
+
"body": "Un panel cuesta tantas llamadas a modelo como miembros tiene, y por eso un grupo puede limitarse a las tareas cuya estimación supere su umbral. El trabajo pequeño se queda con un único revisor."
|
|
6786
|
+
}
|
|
6787
|
+
}
|
|
6788
|
+
},
|
|
6789
|
+
"shareServices": {
|
|
6790
|
+
"title": "Los servicios que ya tienes",
|
|
6791
|
+
"description": "Dile a los agentes qué sistemas compartidos existen y cómo son sus API.",
|
|
6792
|
+
"steps": {
|
|
6793
|
+
"intro": {
|
|
6794
|
+
"title": "No reconstruyas lo que ya tienes",
|
|
6795
|
+
"body": "Los agentes diseñan a ciegas si no saben qué tiene ya tu organización en marcha. Este catálogo nombra esos sistemas y guarda sus contratos de API."
|
|
6796
|
+
},
|
|
6797
|
+
"open": {
|
|
6798
|
+
"title": "Abrir Servicios fundamentales",
|
|
6799
|
+
"body": "El catálogo de capacidades compartidas disponible para todos los tableros de este espacio de trabajo."
|
|
6800
|
+
},
|
|
6801
|
+
"catalog": {
|
|
6802
|
+
"title": "Registrar, subir o sincronizar",
|
|
6803
|
+
"body": "Añade un servicio a mano, sube sus documentos de API, o enlaza un repositorio y deja que se sincronicen. Los diseños referencian entonces lo registrado aquí en vez de inventarse una interfaz."
|
|
6804
|
+
},
|
|
6805
|
+
"finish": {
|
|
6806
|
+
"title": "Los pasos de diseño leen esto",
|
|
6807
|
+
"body": "Un diseño que declara cuáles de estos usa recibe sus contratos completos en el paso siguiente. Uno que no declara nada no recibe nada: mantener esto al día es lo que lo hace funcionar."
|
|
6808
|
+
}
|
|
6809
|
+
}
|
|
6673
6810
|
}
|
|
6811
|
+
},
|
|
6812
|
+
"nudge": {
|
|
6813
|
+
"label": "Nuevo recorrido disponible",
|
|
6814
|
+
"start": "Enséñame",
|
|
6815
|
+
"dismiss": "Descartar"
|
|
6674
6816
|
}
|
|
6675
6817
|
},
|
|
6676
6818
|
"externalTools": {
|
package/i18n/locales/fr.json
CHANGED
|
@@ -566,7 +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
|
-
"ticket_already_linked": "Ce ticket a déjà une tâche"
|
|
569
|
+
"ticket_already_linked": "Ce ticket a déjà une tâche",
|
|
570
|
+
"dry_run_not_mergeable": "Une exécution à blanc ne peut pas être fusionnée"
|
|
570
571
|
},
|
|
571
572
|
"description": {
|
|
572
573
|
"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.",
|
|
@@ -599,7 +600,8 @@
|
|
|
599
600
|
"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.",
|
|
600
601
|
"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.",
|
|
601
602
|
"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.",
|
|
602
|
-
"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."
|
|
603
|
+
"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
|
+
"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."
|
|
603
605
|
},
|
|
604
606
|
"action": {
|
|
605
607
|
"connectGitHub": "Connecter GitHub",
|
|
@@ -1243,7 +1245,9 @@
|
|
|
1243
1245
|
"merge_failed": "Les scores étaient dans les seuils de {preset}, mais la fusion automatique n'a pas pu aboutir (par exemple protection de branche ou conflit), la PR attend donc une fusion par une personne.",
|
|
1244
1246
|
"merge_partial": "Certaines des pull requests de la tâche ont été fusionnées, mais une suivante n'a pas pu l'être, le changement attend donc qu'une personne termine ou annule la fusion multi-dépôt.",
|
|
1245
1247
|
"class_auto_merge": "Ce préréglage fusionne toujours automatiquement cette catégorie de changement : les scores n’ont donc pas été comparés.",
|
|
1246
|
-
"class_requires_review": "Ce préréglage envoie toujours cette catégorie de changement à un humain, quels que soient les scores."
|
|
1248
|
+
"class_requires_review": "Ce préréglage envoie toujours cette catégorie de changement à un humain, quels que soient les scores.",
|
|
1249
|
+
"role_requires_review": "Ce préréglage soumet les exécutions lancées par un {role} à une revue humaine pour ce type de modification, quels que soient les scores. Un collègue d'un niveau supérieur peut fusionner cette PR telle quelle.",
|
|
1250
|
+
"dry_run": "Il s'agissait d'une exécution à blanc : la pull request est restée ouverte pour une personne et les scores n'ont pas été comparés. Relancez la tâche en exécution réelle pour produire une pull request que cet espace de travail fusionnera."
|
|
1247
1251
|
},
|
|
1248
1252
|
"scores": "Scores",
|
|
1249
1253
|
"axis": {
|
|
@@ -1402,6 +1406,33 @@
|
|
|
1402
1406
|
"failedSummary": "{failed} vérifications sur {total} échouaient encore après {attempts} tentatives sur {maxAttempts}, aucune demande de tirage n'a donc été ouverte.",
|
|
1403
1407
|
"exitCode": "code de sortie {code}",
|
|
1404
1408
|
"timedOut": "délai dépassé"
|
|
1409
|
+
},
|
|
1410
|
+
"reproduction": {
|
|
1411
|
+
"heading": "Preuve de reproduction",
|
|
1412
|
+
"status": {
|
|
1413
|
+
"reproduced": "Reproduit",
|
|
1414
|
+
"inconclusive": "Non démontré",
|
|
1415
|
+
"declared_infeasible": "Non reproductible"
|
|
1416
|
+
},
|
|
1417
|
+
"verdict": {
|
|
1418
|
+
"reproduced": "La vérification déclarée a échoué sur l’arbre d’avant le correctif et réussit sur celui-ci.",
|
|
1419
|
+
"inconclusive": "La vérification n’a pas démontré le défaut de part et d’autre du correctif, le correctif n’est donc pas étayé.",
|
|
1420
|
+
"declared_infeasible": "L’agent a déclaré que ce bogue ne peut pas être reproduit dans un test et a indiqué ce qu’il a vérifié à la place."
|
|
1421
|
+
},
|
|
1422
|
+
"tree": {
|
|
1423
|
+
"base": "Arbre d’avant le correctif",
|
|
1424
|
+
"final": "Arbre final"
|
|
1425
|
+
},
|
|
1426
|
+
"command": "Commande",
|
|
1427
|
+
"reason": "Pourquoi c’est irreproductible",
|
|
1428
|
+
"alternative": "Vérifié à la place",
|
|
1429
|
+
"passed": "réussi",
|
|
1430
|
+
"exitCode": "code de sortie {code}",
|
|
1431
|
+
"timedOut": "délai dépassé",
|
|
1432
|
+
"setupFailed": "échec de la préparation",
|
|
1433
|
+
"notRun": "non exécuté",
|
|
1434
|
+
"attempts": "Tentative {attempts} sur {maxAttempts}",
|
|
1435
|
+
"omittedTestPaths": "{count} fichier de test déclaré a été écarté avant l’exécution de la preuve, l’arbre d’avant le correctif a donc été reconstruit à partir d’une reproduction incomplète. | {count} fichiers de test déclarés ont été écartés avant l’exécution de la preuve, l’arbre d’avant le correctif a donc été reconstruit à partir d’une reproduction incomplète."
|
|
1405
1436
|
}
|
|
1406
1437
|
},
|
|
1407
1438
|
"inspector": {
|
|
@@ -1478,6 +1509,9 @@
|
|
|
1478
1509
|
"contextError": "Impossible de charger le contexte fourni.",
|
|
1479
1510
|
"summary": {
|
|
1480
1511
|
"calls": "Appels",
|
|
1512
|
+
"cost": "Coût estimé",
|
|
1513
|
+
"costHint": "Calculé aux tarifs publics, chaque classe d'entrée à son propre taux : une lecture de cache coûte environ un dixième d'une entrée fraîche, une écriture de cache environ un quart de plus. Une exécution sur abonnement ne paie rien au token ; ceci est donc ce que les mêmes tokens auraient coûté à l'usage.",
|
|
1514
|
+
"costIncomplete": "Non affiché : au moins une phase a utilisé un modèle pour lequel cette installation n'a aucun tarif, un total serait donc incomplet. Les phases tarifées sont listées ci-dessous.",
|
|
1481
1515
|
"tokensInOut": "Tokens (entrée / sortie)",
|
|
1482
1516
|
"transportOverhead": "Surcoût de transport",
|
|
1483
1517
|
"modelExecution": "Exécution du modèle",
|
|
@@ -1497,8 +1531,10 @@
|
|
|
1497
1531
|
"phase": "Phase",
|
|
1498
1532
|
"turns": "Tours",
|
|
1499
1533
|
"tokensInOut": "Tokens (entrée / sortie)",
|
|
1534
|
+
"cost": "Coût",
|
|
1500
1535
|
"carryCost": "Coût de report"
|
|
1501
1536
|
},
|
|
1537
|
+
"costHint": "Coût estimé des tokens de cette phase aux tarifs publics. Un tiret signifie que cette installation n'a aucun tarif pour le modèle utilisé.",
|
|
1502
1538
|
"carryCostHint": "Ce que chaque phase a fait peser sur les tours suivants : son contexte compté une fois pour chaque tour ultérieur ayant dû le renvoyer. Comparez les phases d'une exécution entre elles ; isolée, la valeur ne signifie rien. Une phase qui s'exécute en dernier reporte peu, quoi qu'elle ait dépensé : lisez donc cette colonne avec les tokens voisins.",
|
|
1503
1539
|
"unattributed": "Non attribué",
|
|
1504
1540
|
"unattributedHint": "enregistré par un canal qui ne rapporte aucune phase"
|
|
@@ -1506,6 +1542,7 @@
|
|
|
1506
1542
|
"metricsBar": {
|
|
1507
1543
|
"calls": "{count} appel | {count} appels",
|
|
1508
1544
|
"inputCompletionTokens": "Total des tokens d'entrée / de sortie. L'entree compte aussi les tokens en cache : ils occupent toujours la fenêtre de contexte, exactement comme les compte la jauge de contexte de Claude Code.",
|
|
1545
|
+
"costHint": "Coût estimé des tokens de cette étape aux tarifs publics, chaque classe d'entrée à son propre taux. Une exécution sur abonnement ne paie rien au token ; ceci est donc ce que les mêmes tokens auraient coûté à l'usage.",
|
|
1509
1546
|
"fresh": "{tokens} frais",
|
|
1510
1547
|
"freshHint": "Entrée traitée de zero, sans rien servi depuis le cache",
|
|
1511
1548
|
"cacheRead": "{tokens} lus depuis le cache",
|
|
@@ -4256,6 +4293,7 @@
|
|
|
4256
4293
|
"binaryOutputMediaTypeUnverifiable": "Aucune intégration sélectionnée ne déclare {formats}, mais l’une d’elles ne déclare aucun format, cela n’a donc pas pu être vérifié. L’étape démarre quand même ; confirmez dans l’API de l’intégration qu’elle peut l’émettre.",
|
|
4257
4294
|
"binaryOutputMediaTypeUnusable": "Non enregistré, car ce ne sont pas des types de média : {entries}. Écrivez chacun sous la forme type/subtype.",
|
|
4258
4295
|
"binaryOutputGeneratorMissing": "Ce déploiement n'enregistre pas ces intégrations génératives : {ids}. Elles s'enregistrent dans le code du déploiement, pas dans cet espace de travail.",
|
|
4296
|
+
"binaryOutputGeneratorOverlap": "Plusieurs intégrations sélectionnées produisent le même type de contenu ({overlaps}). Ce n’est pas un problème en soi, mais le type de contenu ne décide plus laquelle l’agent appelle : indiquez dans le prompt de cette étape laquelle utiliser et pour quoi, sinon il en choisira une et s’y tiendra.",
|
|
4259
4297
|
"binaryOutputModalityUncovered": "Aucune intégration sélectionnée ne produit {modalities}, que cette étape doit livrer.",
|
|
4260
4298
|
"binaryOutputModalityRetired": "{modality} (n'est plus proposé — resélectionnez les types de contenu de cette étape)",
|
|
4261
4299
|
"binaryOutputModality": {
|
|
@@ -6279,6 +6317,12 @@
|
|
|
6279
6317
|
"minor": "Remarques mineures",
|
|
6280
6318
|
"major": "Reprise importante",
|
|
6281
6319
|
"classHistory": "{merged} fusionnés dans cette catégorie, dont {autoShare} automatiquement"
|
|
6320
|
+
},
|
|
6321
|
+
"role": {
|
|
6322
|
+
"admin": "administrateur",
|
|
6323
|
+
"member": "membre",
|
|
6324
|
+
"viewer": "lecteur",
|
|
6325
|
+
"unattributed": "un démarrage automatique"
|
|
6282
6326
|
}
|
|
6283
6327
|
},
|
|
6284
6328
|
"vcs": {
|
|
@@ -6380,7 +6424,10 @@
|
|
|
6380
6424
|
"finishedRun": "Une exécution terminée avec succès",
|
|
6381
6425
|
"integrationsManage": "L'autorisation de gérer les intégrations",
|
|
6382
6426
|
"settingsManage": "L'autorisation de gérer les paramètres de l'espace de travail",
|
|
6383
|
-
"library": "La bibliothèque de fragments de contexte activée sur ce déploiement"
|
|
6427
|
+
"library": "La bibliothèque de fragments de contexte activée sur ce déploiement",
|
|
6428
|
+
"failedRun": "Une exécution en échec",
|
|
6429
|
+
"infrastructure": "Un backend d’exécution connecté à cet espace de travail",
|
|
6430
|
+
"advancedTier": "Le mode d’interface avancé"
|
|
6384
6431
|
},
|
|
6385
6432
|
"overlay": {
|
|
6386
6433
|
"next": "Suivant",
|
|
@@ -6392,7 +6439,9 @@
|
|
|
6392
6439
|
"announcement": "Étape {current} sur {total}. {title}. {body}",
|
|
6393
6440
|
"abridged": "1 étape a été ignorée : ce contrôle ne fait pas partie de ce tableau. | {count} étapes ont été ignorées : ces contrôles ne font pas partie de ce tableau.",
|
|
6394
6441
|
"searching": "Recherche du contrôle mis en évidence...",
|
|
6395
|
-
"clickHint": "Cliquez sur le contrôle mis en évidence pour continuer"
|
|
6442
|
+
"clickHint": "Cliquez sur le contrôle mis en évidence pour continuer",
|
|
6443
|
+
"nextUp": "Ensuite",
|
|
6444
|
+
"takeNext": "Faire celle-ci"
|
|
6396
6445
|
},
|
|
6397
6446
|
"tours": {
|
|
6398
6447
|
"boardBasics": {
|
|
@@ -6515,7 +6564,7 @@
|
|
|
6515
6564
|
},
|
|
6516
6565
|
"finish": {
|
|
6517
6566
|
"title": "Voilà la boucle",
|
|
6518
|
-
"body": "Planifier une tâche, choisir un pipeline, la lancer, la suivre.
|
|
6567
|
+
"body": "Planifier une tâche, choisir un pipeline, la lancer, la suivre. Les visites suivantes lisent une exécution réelle : elles se débloquent dès que vous en avez lancé une pour de vrai."
|
|
6519
6568
|
}
|
|
6520
6569
|
}
|
|
6521
6570
|
},
|
|
@@ -6670,7 +6719,100 @@
|
|
|
6670
6719
|
"body": "Certaines entrées vous appartiennent plutôt qu'au tableau, comme un jeton d'accès personnel ou un abonnement, et ne servent qu'aux exécutions que vous lancez. Le hub indique lesquelles, et Ma configuration rassemble les vôtres."
|
|
6671
6720
|
}
|
|
6672
6721
|
}
|
|
6722
|
+
},
|
|
6723
|
+
"diagnoseFailure": {
|
|
6724
|
+
"title": "Lire un échec",
|
|
6725
|
+
"description": "Une exécution s’est arrêtée sur une erreur. Comprenez ce qui a cassé, et quoi y faire.",
|
|
6726
|
+
"steps": {
|
|
6727
|
+
"intro": {
|
|
6728
|
+
"title": "Les exécutions échouent, c’est normal",
|
|
6729
|
+
"body": "Une exécution en échec n’est pas une impasse. Le tableau conserve l’erreur, la cause tient souvent en une ligne, et la plupart des causes se corrigent par un réglage plutôt qu’en réécrivant la tâche."
|
|
6730
|
+
},
|
|
6731
|
+
"banner": {
|
|
6732
|
+
"title": "Ce qui s’est mal passé",
|
|
6733
|
+
"body": "La carte remplace sa barre de progression par ce bandeau. Il nomme la cause, les détails contiennent la sortie brute, et certaines causes proposent un bouton menant droit au réglage qui les corrige."
|
|
6734
|
+
},
|
|
6735
|
+
"retry": {
|
|
6736
|
+
"title": "Relancer",
|
|
6737
|
+
"body": "Réessayer relance le travail. Les erreurs précédentes restent sur la tâche, sous « Erreurs précédentes », pour comparer les tentatives au lieu de perdre la trace."
|
|
6738
|
+
},
|
|
6739
|
+
"finish": {
|
|
6740
|
+
"title": "Un échec est une information",
|
|
6741
|
+
"body": "Corriger la cause, réessayer, comparer. Si la même erreur revient sans cesse, les détails sont ce qu’il faut apporter à la personne qui peut élargir une autorisation ou brancher ce qui manque."
|
|
6742
|
+
}
|
|
6743
|
+
}
|
|
6744
|
+
},
|
|
6745
|
+
"prepareInfrastructure": {
|
|
6746
|
+
"title": "Où les exécutions ont lieu",
|
|
6747
|
+
"description": "Les machines où tournent les agents, les environnements où ils testent, et les identifiants qu’ils peuvent utiliser.",
|
|
6748
|
+
"steps": {
|
|
6749
|
+
"intro": {
|
|
6750
|
+
"title": "Les agents ont besoin d’un endroit pour tourner",
|
|
6751
|
+
"body": "Chaque étape en conteneur tourne sur un backend d’exécution, les tests se lèvent dans un environnement, et certaines capacités demandent un identifiant. Les trois se configurent dans une seule fenêtre."
|
|
6752
|
+
},
|
|
6753
|
+
"open": {
|
|
6754
|
+
"title": "Ouvrir Infrastructure",
|
|
6755
|
+
"body": "Tout ce qui concerne où et comment les exécutions se déroulent est ici."
|
|
6756
|
+
},
|
|
6757
|
+
"tabs": {
|
|
6758
|
+
"title": "Un onglet par sujet",
|
|
6759
|
+
"body": "Conteneurs d’agents, c’est là que le travail s’exécute. Environnements de test, c’est à partir de quoi un service est levé. La liste des identifiants montre quelles clés les capacités utilisées par vos agents peuvent réellement résoudre, et lesquelles manquent encore."
|
|
6760
|
+
},
|
|
6761
|
+
"finish": {
|
|
6762
|
+
"title": "Les échecs renvoient ici",
|
|
6763
|
+
"body": "Quand une exécution échoue au provisionnement, c’est la fenêtre que son bandeau vous demande d’ouvrir. Mieux vaut le savoir avant que cela arrive qu’après."
|
|
6764
|
+
}
|
|
6765
|
+
}
|
|
6766
|
+
},
|
|
6767
|
+
"panelReviews": {
|
|
6768
|
+
"title": "Relecture par comité",
|
|
6769
|
+
"description": "Faites relire le même travail par plusieurs modèles au lieu d’un seul, sur les tâches qui le justifient.",
|
|
6770
|
+
"steps": {
|
|
6771
|
+
"intro": {
|
|
6772
|
+
"title": "Un relecteur, ou plusieurs",
|
|
6773
|
+
"body": "Une étape de relecture exécute normalement un agent. Elle peut à la place exécuter un comité de plusieurs modèles et comparer ce qu’ils disent, ce qui rattrape ce qu’un relecteur unique laisse passer sur les travaux lourds."
|
|
6774
|
+
},
|
|
6775
|
+
"open": {
|
|
6776
|
+
"title": "Ouvrir Configuration des modèles",
|
|
6777
|
+
"body": "Les comités sont faits de modèles : ils se configurent juste à côté."
|
|
6778
|
+
},
|
|
6779
|
+
"groups": {
|
|
6780
|
+
"title": "Définir un comité",
|
|
6781
|
+
"body": "Un groupe nomme les modèles du comité et le niveau d’exigence qu’une tâche doit atteindre pour qu’il serve. Une étape choisit ensuite un groupe au lieu de nommer les modèles un par un."
|
|
6782
|
+
},
|
|
6783
|
+
"finish": {
|
|
6784
|
+
"title": "Le coût suit l’effort",
|
|
6785
|
+
"body": "Un comité coûte autant d’appels de modèle qu’il a de membres, d’où la possibilité de limiter un groupe aux tâches dont l’estimation dépasse son seuil. Le petit travail garde un seul relecteur."
|
|
6786
|
+
}
|
|
6787
|
+
}
|
|
6788
|
+
},
|
|
6789
|
+
"shareServices": {
|
|
6790
|
+
"title": "Les services que vous avez déjà",
|
|
6791
|
+
"description": "Dites aux agents quels systèmes partagés existent, et à quoi ressemblent leurs API.",
|
|
6792
|
+
"steps": {
|
|
6793
|
+
"intro": {
|
|
6794
|
+
"title": "Ne reconstruisez pas ce que vous avez",
|
|
6795
|
+
"body": "Les agents conçoivent à l’aveugle s’ils ignorent ce que votre organisation fait déjà tourner. Ce catalogue nomme ces systèmes et porte leurs contrats d’API."
|
|
6796
|
+
},
|
|
6797
|
+
"open": {
|
|
6798
|
+
"title": "Ouvrir Services fondamentaux",
|
|
6799
|
+
"body": "Le catalogue des capacités partagées disponible pour tous les tableaux de cet espace de travail."
|
|
6800
|
+
},
|
|
6801
|
+
"catalog": {
|
|
6802
|
+
"title": "Enregistrer, déposer ou synchroniser",
|
|
6803
|
+
"body": "Ajoutez un service à la main, déposez ses documents d’API, ou reliez un dépôt et laissez-les se synchroniser. Les conceptions référencent alors ce qui est enregistré ici au lieu d’inventer une interface."
|
|
6804
|
+
},
|
|
6805
|
+
"finish": {
|
|
6806
|
+
"title": "Les étapes de conception lisent ceci",
|
|
6807
|
+
"body": "Une conception qui déclare lesquels elle utilise reçoit leurs contrats complets à l’étape suivante. Celle qui ne déclare rien ne reçoit rien : tenir ceci à jour est ce qui fait que cela marche."
|
|
6808
|
+
}
|
|
6809
|
+
}
|
|
6673
6810
|
}
|
|
6811
|
+
},
|
|
6812
|
+
"nudge": {
|
|
6813
|
+
"label": "Nouvelle visite disponible",
|
|
6814
|
+
"start": "Montrez-moi",
|
|
6815
|
+
"dismiss": "Masquer"
|
|
6674
6816
|
}
|
|
6675
6817
|
},
|
|
6676
6818
|
"externalTools": {
|