@cat-factory/app 0.46.9 → 0.46.11

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 (42) hide show
  1. package/app/components/board/AddTaskModal.vue +106 -88
  2. package/app/components/board/AgentFailureCard.vue +8 -5
  3. package/app/components/board/AgentStopButton.vue +8 -5
  4. package/app/components/board/BoardCanvas.vue +13 -9
  5. package/app/components/board/RecurringPipelineModal.vue +33 -23
  6. package/app/components/board/nodes/BlockNode.vue +50 -34
  7. package/app/components/board/nodes/DecisionBadge.vue +6 -3
  8. package/app/components/board/nodes/DraggableTask.vue +2 -1
  9. package/app/components/board/nodes/EpicNode.vue +10 -3
  10. package/app/components/board/nodes/ModuleFrame.vue +6 -5
  11. package/app/components/board/nodes/TaskCard.vue +40 -22
  12. package/app/components/board/nodes/TaskPipelineMini.vue +4 -3
  13. package/app/components/layout/BoardToolbar.vue +26 -19
  14. package/app/components/observability/StepMetricsBar.vue +31 -11
  15. package/app/components/observability/StepModelActivity.vue +3 -2
  16. package/app/components/panels/AgentStepDetail.vue +52 -39
  17. package/app/components/panels/DecisionModal.vue +12 -5
  18. package/app/components/panels/GenericStructuredResultView.vue +16 -6
  19. package/app/components/panels/InspectorPanel.vue +35 -28
  20. package/app/components/panels/ObservabilityPanel.vue +92 -49
  21. package/app/components/panels/StepMetadataCard.vue +87 -30
  22. package/app/components/panels/StepRestartControl.vue +4 -3
  23. package/app/components/panels/StepRunMeta.vue +23 -10
  24. package/app/components/panels/StepTestReport.vue +14 -11
  25. package/app/components/panels/inspector/ContainerSummary.vue +25 -14
  26. package/app/components/panels/inspector/EpicChildren.vue +7 -4
  27. package/app/components/panels/inspector/RecurringScheduleSettings.vue +60 -19
  28. package/app/components/panels/inspector/ServiceFragments.vue +3 -2
  29. package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +18 -13
  30. package/app/components/panels/inspector/ServiceTestConfig.vue +50 -39
  31. package/app/components/panels/inspector/TaskAgentConfig.vue +6 -5
  32. package/app/components/panels/inspector/TaskDependencies.vue +9 -4
  33. package/app/components/panels/inspector/TaskEstimateBadge.vue +14 -13
  34. package/app/components/panels/inspector/TaskExecution.vue +65 -31
  35. package/app/components/panels/inspector/TaskRunSettings.vue +93 -56
  36. package/app/components/panels/inspector/TaskStructure.vue +5 -4
  37. package/i18n/locales/en.json +606 -0
  38. package/i18n/locales/es.json +596 -2
  39. package/i18n/locales/fr.json +596 -2
  40. package/i18n/locales/pl.json +596 -2
  41. package/i18n/locales/uk.json +596 -2
  42. package/package.json +1 -1
@@ -13,7 +13,8 @@
13
13
  "cancel": "Cancelar",
14
14
  "retry": "Reintentar",
15
15
  "actionFailed": "La acción falló",
16
- "close": "Cerrar"
16
+ "close": "Cerrar",
17
+ "block": "Bloque"
17
18
  },
18
19
  "nav": {
19
20
  "menu": "Menú de navegación",
@@ -38,7 +39,198 @@
38
39
  "board": {
39
40
  "toolbar": {
40
41
  "addService": "Añadir servicio",
41
- "decisionWord": "decisión | decisiones"
42
+ "decisionWord": "decisión | decisiones",
43
+ "lod": {
44
+ "far": "Vista general",
45
+ "mid": "Resumen",
46
+ "close": "Detalle",
47
+ "steps": "Pasos de build",
48
+ "subtasks": "Subtareas"
49
+ },
50
+ "spendTitle": "Gasto de tokens este mes",
51
+ "spendLimitReached": "Límite de gasto alcanzado: ejecuciones en pausa",
52
+ "serviceAdded": "Se añadió {title}",
53
+ "serviceAddFailed": "No se pudo añadir el servicio"
54
+ },
55
+ "canvas": {
56
+ "emptyTitle": "Tu tablero está vacío",
57
+ "emptyBody": "Añade un servicio para empezar: arranca un repo nuevo o trae uno que ya tengas.",
58
+ "addBlockFailedTitle": "No se pudo añadir el bloque",
59
+ "addBlockFailedBody": "El backend rechazó la solicitud.",
60
+ "dropOntoTaskTitle": "Suéltalo sobre una tarea",
61
+ "dropOntoTaskBody": "Las pipelines se ejecutan sobre tareas, no sobre servicios.",
62
+ "taskBlockedTitle": "La tarea está bloqueada",
63
+ "taskBlockedBody": "Sus dependencias aún no se han fusionado."
64
+ },
65
+ "addTask": {
66
+ "title": "Añadir una tarea",
67
+ "newTaskIn": "Nueva tarea en {container}",
68
+ "typeLabel": "Tipo",
69
+ "types": {
70
+ "feature": "Funcionalidad",
71
+ "bug": "Error",
72
+ "document": "Documento",
73
+ "spike": "Spike",
74
+ "recurring": "Recurrente"
75
+ },
76
+ "recurringWithFrame": "Una tarea recurrente ejecuta una pipeline con cierta cadencia. Continúa para definir el horario y el prompt.",
77
+ "recurringNoFrame": "Una tarea recurrente debe vivir en un servicio. Añádela desde un marco de servicio (o un módulo dentro de él).",
78
+ "titleField": "Título",
79
+ "titlePlaceholder": "¿Qué hay que hacer?",
80
+ "issueIncluded": "{title} (de la incidencia, incluida)",
81
+ "loadingIssue": "Cargando la descripción de la incidencia vinculada…",
82
+ "additionalNotes": "Notas adicionales",
83
+ "description": "Descripción",
84
+ "notesPlaceholder": "Añade cualquier otra cosa que el agente deba saber; se añadirá a la descripción de la incidencia de arriba…",
85
+ "descriptionPlaceholder": "Describe el trabajo: contexto, criterios de aceptación y todo lo que el agente deba saber…",
86
+ "technical": "Tarea técnica",
87
+ "technicalHint": "Un refactor / cambio no funcional / interno. El implementador trata la definición de la tarea como principal y la especificación como referencia de regresión; déjalo desactivado para que decida la fase de especificación.",
88
+ "severity": "Gravedad",
89
+ "stepsToReproduce": "Pasos para reproducir",
90
+ "stepsToReproducePlaceholder": "Observado vs esperado, y cómo reproducirlo…",
91
+ "timebox": "Tiempo límite (horas)",
92
+ "timeboxPlaceholder": "p. ej. 8",
93
+ "documentKind": "Tipo de documento",
94
+ "audience": "Audiencia",
95
+ "audiencePlaceholder": "p. ej. ingenieros de plataforma",
96
+ "targetPath": "Ruta de destino",
97
+ "targetPathPlaceholder": "p. ej. docs/rfcs/0001-foo.md",
98
+ "outlineHints": "Sugerencias de esquema",
99
+ "outlineHintsPlaceholder": "Secciones o puntos que el documento debería cubrir",
100
+ "optional": "opcional",
101
+ "pipeline": "Pipeline",
102
+ "chooseAtRunTime": "Elegir al ejecutar",
103
+ "mergePolicy": "Política de fusión",
104
+ "workspaceDefault": "Predeterminado del espacio",
105
+ "defaultPreset": "Predeterminado ({name}): {thresholds}",
106
+ "defaultModelPreset": "Predeterminado ({name})",
107
+ "modelPreset": "Preset de modelo",
108
+ "agentConfiguration": "Configuración del agente",
109
+ "contextDocuments": "Documentos de contexto",
110
+ "contextIssues": "Incidencias de contexto",
111
+ "attach": "Adjuntar",
112
+ "done": "Hecho",
113
+ "attachDocDisabledConnect": "Conecta primero una fuente de documentos (Integraciones)",
114
+ "attachDocDisabledEnable": "Activa primero la integración de documentos",
115
+ "attachIssueDisabledConnect": "Conecta primero un gestor de incidencias (Integraciones)",
116
+ "attachIssueDisabledEnable": "Activa primero la integración del gestor de incidencias",
117
+ "importsOnAdd": "se importa al añadir",
118
+ "noDocsHint": "Adjunta un requisito, RFC o PRD para que los agentes lo vean al implementar esta tarea.",
119
+ "noIssuesHint": "Adjunta una incidencia del gestor para que los agentes vean su descripción y comentarios al implementar esta tarea.",
120
+ "plannedHint": "La tarea se añade en estado planificado. No se ejecutará hasta que inicies una pipeline sobre ella; puedes seguir editándola hasta entonces.",
121
+ "continue": "Continuar",
122
+ "submit": "Añadir tarea",
123
+ "addFailedTitle": "No se pudo añadir la tarea",
124
+ "linkFailed": "Tarea añadida, pero no se pudo vincular {count} adjunto | Tarea añadida, pero no se pudieron vincular {count} adjuntos"
125
+ },
126
+ "recurring": {
127
+ "title": "Añadir una pipeline recurrente",
128
+ "on": "Pipeline recurrente en {frame}",
129
+ "name": "Nombre",
130
+ "namePlaceholder": "p. ej. Actualizaciones semanales de dependencias",
131
+ "pipeline": "Pipeline",
132
+ "pickPipeline": "Elige una pipeline",
133
+ "prompt": "Prompt",
134
+ "promptPlaceholder": "¿Qué debe hacer cada ejecución? Describe el trabajo, el mismo prompt que llevaría una tarea normal. Déjalo en blanco para usar el predeterminado de la pipeline.",
135
+ "issueTracker": "Gestor de incidencias",
136
+ "issueTrackerHint": "La pipeline de deuda técnica crea un ticket a partir de su análisis antes de implementar. Elige dónde (se guarda para todo el espacio de trabajo).",
137
+ "githubIssues": "GitHub Issues",
138
+ "jira": "Jira",
139
+ "linear": "Linear",
140
+ "jiraProjectKey": "Clave del proyecto de Jira",
141
+ "jiraProjectKeyPlaceholder": "p. ej. ENG",
142
+ "linearTeamId": "ID del equipo de Linear",
143
+ "footerHint": "Se añade una única tarea recurrente dentro del servicio; cada ejecución reemplaza a la anterior. Su historial de ejecuciones es visible en el inspector.",
144
+ "submit": "Añadir pipeline recurrente",
145
+ "addFailedTitle": "No se pudo añadir la pipeline recurrente"
146
+ },
147
+ "failure": {
148
+ "containerFailedToStart": "El contenedor no pudo iniciarse",
149
+ "bootstrapFailed": "El arranque falló",
150
+ "runFailed": "La ejecución falló",
151
+ "retryBootstrap": "Reintentar arranque",
152
+ "retryRun": "Reintentar ejecución",
153
+ "showDetail": "Mostrar detalle",
154
+ "retrying": "Reintentando…"
155
+ },
156
+ "stop": {
157
+ "label": "Detener",
158
+ "bootstrapStopped": "Arranque detenido",
159
+ "runStopped": "Ejecución detenida",
160
+ "stoppedDescription": "El contenedor se cerró y la ejecución se canceló.",
161
+ "stopFailed": "No se pudo detener"
162
+ },
163
+ "frame": {
164
+ "status": {
165
+ "planned": "Sin tareas",
166
+ "ready": "Activo",
167
+ "in_progress": "Activo",
168
+ "blocked": "Requiere atención",
169
+ "pr_ready": "Activo",
170
+ "done": "Activo"
171
+ },
172
+ "shared": "Compartido",
173
+ "sharedTitle": "Compartido entre espacios de trabajo de esta organización",
174
+ "bootstrapping": "Arrancando…",
175
+ "bootstrappingRepository": "Arrancando repositorio…",
176
+ "bootstrapStepsCount": "{completed}/{total} pasos",
177
+ "runFailed": "La ejecución falló",
178
+ "mergedOfTotal": "{merged}/{total} fusionadas",
179
+ "noTasksYet": "Aún no hay tareas",
180
+ "prCount": "{count} PR",
181
+ "implemented": "{merged}/{total} implementadas",
182
+ "prReadyCount": "{count} PR listas",
183
+ "taskCount": "{count} tarea | {count} tareas",
184
+ "moduleCount": "{count} módulo | {count} módulos",
185
+ "addTaskTitle": "Añadir tarea",
186
+ "createTaskFromIssueTitle": "Crear tarea desde incidencia",
187
+ "addRecurringTitle": "Añadir pipeline recurrente",
188
+ "collapseTitle": "Contraer",
189
+ "dragService": "Arrastrar servicio",
190
+ "dragTask": "Arrastrar tarea",
191
+ "dragToResize": "Arrastra para cambiar el tamaño",
192
+ "addFirstTask": "Añade la primera tarea"
193
+ },
194
+ "decisionBadge": {
195
+ "decisionNeeded": "Decisión necesaria",
196
+ "approvalNeeded": "Aprobación necesaria"
197
+ },
198
+ "task": {
199
+ "recurringPipeline": "Pipeline recurrente",
200
+ "recurringPipelinePaused": "Pipeline recurrente (en pausa)",
201
+ "dragToConnect": "Arrastra sobre otra tarea para que dependa de esta",
202
+ "failed": "Fallida",
203
+ "decisionNeeded": "Decisión necesaria",
204
+ "approvalNeeded": "Aprobación necesaria",
205
+ "resolve": "Resolver",
206
+ "approve": "Aprobar",
207
+ "incorporatingAnswers": "Incorporando respuestas…",
208
+ "reReviewing": "Revisando de nuevo…",
209
+ "recommending": "Recomendando…",
210
+ "starting": "Iniciando…",
211
+ "start": "Iniciar",
212
+ "blocked": "Bloqueada",
213
+ "startPipeline": "Iniciar {name}",
214
+ "pipelineFallback": "pipeline",
215
+ "waitingOn": "Esperando a: {deps}",
216
+ "blockedByDependenciesTitle": "Bloqueada por dependencias",
217
+ "noPipelineTitle": "No hay pipeline definida",
218
+ "noPipelineBody": "Crea una en el constructor primero.",
219
+ "pr": "PR",
220
+ "prNumber": "PR n.º {number}",
221
+ "openPrOnGithub": "Abrir {pr} en GitHub",
222
+ "review": "Revisar",
223
+ "merge": "Fusionar",
224
+ "implemented": "implementada",
225
+ "module": "Módulo: {name}",
226
+ "buildSteps": "Pasos de build",
227
+ "reviewAndApprove": "Revisar y aprobar",
228
+ "clickToViewStep": "Haz clic para ver los detalles y la salida del paso"
229
+ },
230
+ "epic": {
231
+ "label": "Épica",
232
+ "activeCount": "{count} activas",
233
+ "noTasksYet": "Aún no hay tareas"
42
234
  }
43
235
  },
44
236
  "errors": {
@@ -116,5 +308,407 @@
116
308
  "step3": "Copia todo el contenido de auth.json, pégalo abajo y elige una contraseña personal para protegerlo."
117
309
  }
118
310
  }
311
+ },
312
+ "inspector": {
313
+ "container": {
314
+ "modules": "Módulos ({count})",
315
+ "taskCount": "{count} tarea | {count} tareas",
316
+ "allTasks": "Todas las tareas ({count})",
317
+ "tasks": "Tareas ({count})",
318
+ "addTask": "Añadir tarea",
319
+ "noTasks": "Aún no hay tareas. Añade una para empezar a trabajar.",
320
+ "servicesHint": "Los servicios son de larga duración y no se completan. El trabajo ocurre en sus tareas y módulos."
321
+ },
322
+ "epicChildren": {
323
+ "title": "Tareas de la épica",
324
+ "doneCount": "{done}/{total} completadas",
325
+ "empty": "Aún no hay tareas en esta épica. Importa las hijas de una épica o asigna la épica de una tarea.",
326
+ "unassigned": "Sin asignar"
327
+ },
328
+ "recurring": {
329
+ "title": "Pipeline recurrente",
330
+ "active": "Activo",
331
+ "paused": "Pausado",
332
+ "intervalDays": "{count}d",
333
+ "intervalHours": "{count}h",
334
+ "anyDay": "cualquier día",
335
+ "cadence": "Cada {every} · {days}{window} · {timezone}",
336
+ "weekdays": {
337
+ "sun": "Dom",
338
+ "mon": "Lun",
339
+ "tue": "Mar",
340
+ "wed": "Mié",
341
+ "thu": "Jue",
342
+ "fri": "Vie",
343
+ "sat": "Sáb"
344
+ },
345
+ "nextRun": "Próxima ejecución: {time}",
346
+ "runNow": "Ejecutar ahora",
347
+ "pause": "Pausar",
348
+ "resume": "Reanudar",
349
+ "editCadence": "Editar cadencia",
350
+ "recentRuns": "Ejecuciones recientes",
351
+ "runStatus": {
352
+ "running": "En ejecución",
353
+ "done": "Completada",
354
+ "failed": "Fallida",
355
+ "skipped": "Omitida"
356
+ },
357
+ "updateFailed": "No se pudo actualizar la programación",
358
+ "runNowFailed": "No se pudo ejecutar ahora"
359
+ },
360
+ "fragments": {
361
+ "serviceTitle": "Buenas prácticas del servicio",
362
+ "serviceEmpty": "Ninguna. Los agentes que conocen el código en este servicio siguen su guía predeterminada."
363
+ },
364
+ "releaseHealth": {
365
+ "title": "Salud posterior al lanzamiento",
366
+ "clear": "Limpiar",
367
+ "connectPrompt": "Conecta una integración de observabilidad para vigilar este servicio tras los lanzamientos.",
368
+ "connectFirst": "Conecta primero una integración de observabilidad",
369
+ "connect": "Conectar",
370
+ "hint": "Los monitores y SLO que la verificación vigila después de que este servicio se publique. Separa los ids con comas.",
371
+ "monitorIds": "Ids de monitores",
372
+ "sloIds": "Ids de SLO",
373
+ "envTag": "Etiqueta de entorno (opcional)",
374
+ "saveMonitoring": "Guardar monitoreo",
375
+ "savedToast": "Monitoreo guardado",
376
+ "saveFailed": "No se pudo guardar la asignación",
377
+ "clearFailed": "No se pudo limpiar la asignación"
378
+ },
379
+ "testConfig": {
380
+ "title": "Infraestructura de pruebas",
381
+ "defaultEnv": "Entorno de pruebas predeterminado",
382
+ "defaultEnvHint": "El entorno predeterminado con el que se generan las tareas de este servicio. Cada tarea puede anularlo en su configuración de agente.",
383
+ "env": {
384
+ "ephemeral": "Entorno efímero",
385
+ "ephemeralHint": "las pruebas se ejecutan contra un entorno aprovisionado",
386
+ "local": "Local (docker-compose)",
387
+ "localHint": "el Tester levanta las dependencias localmente"
388
+ },
389
+ "composePath": "Ruta de docker-compose",
390
+ "browseRepo": "Explorar el repositorio en busca del archivo de compose",
391
+ "composeHint": "Lo usa el Tester para levantar localmente las dependencias del servicio.",
392
+ "selectComposeTitle": "Selecciona el archivo docker-compose",
393
+ "selectComposeHint": "Elige el archivo de compose en el repositorio. Su ruta se guarda relativa a la raíz del repo.",
394
+ "selected": "Seleccionado: {path}",
395
+ "noFileSelected": "Ningún archivo seleccionado.",
396
+ "useThisFile": "Usar este archivo",
397
+ "noInfra": "Sin dependencias de infraestructura (el Tester no levanta nada)",
398
+ "missingInfra": "Define una ruta de docker-compose o habilita sin dependencias de infraestructura; de lo contrario, un pipeline con un Tester no se iniciará.",
399
+ "provisioningTitle": "Aprovisionamiento del entorno efímero",
400
+ "provisioningHint": "Una indicación para aprovisionar el entorno de pruebas efímero de este servicio: en qué proveedor de nube desplegar y qué tamaño de instancia solicitar. Se ignora en las pruebas locales (docker-compose).",
401
+ "cloudProvider": "Proveedor de nube",
402
+ "instanceSize": "Tamaño de instancia",
403
+ "providers": {
404
+ "docker": "Docker (local)",
405
+ "custom": "Personalizado"
406
+ },
407
+ "sizes": {
408
+ "small": "Pequeño",
409
+ "medium": "Mediano",
410
+ "large": "Grande",
411
+ "xlarge": "Extra grande"
412
+ }
413
+ },
414
+ "agentConfig": {
415
+ "title": "Configuración del agente",
416
+ "inherited": "heredado del servicio",
417
+ "frozen": "Congelado: el agente ya ha comenzado"
418
+ },
419
+ "dependencies": {
420
+ "title": "Depende de",
421
+ "merged": "Fusionado",
422
+ "notMerged": "Aún sin fusionar",
423
+ "empty": "Sin dependencias. Puede ejecutarse en cualquier momento.",
424
+ "blocked": "Bloqueado hasta que se fusionen las dependencias."
425
+ },
426
+ "estimate": {
427
+ "title": "Estimación",
428
+ "complexity": "Complejidad",
429
+ "risk": "Riesgo",
430
+ "impact": "Impacto"
431
+ },
432
+ "execution": {
433
+ "stage": {
434
+ "incorporating": "Incorporando…",
435
+ "reviewing": "Revisando de nuevo…",
436
+ "recommending": "Recomendando…"
437
+ },
438
+ "prNumber": "PR n.º {number}",
439
+ "pullRequest": "Pull request",
440
+ "stepState": {
441
+ "pending": "Pendiente",
442
+ "working": "Trabajando",
443
+ "waiting_decision": "Requiere decisión",
444
+ "done": "Completado"
445
+ },
446
+ "failed": "Fallido",
447
+ "needsDecision": "Requiere decisión",
448
+ "needsApproval": "Requiere aprobación",
449
+ "spinningUp": "Iniciando…",
450
+ "stop": "Detener",
451
+ "stopTooltip": "Detener la ejecución pero conservarla (legible y reintentable)",
452
+ "reset": "Restablecer",
453
+ "resetTooltip": "Descartar esta ejecución y restablecer la tarea a planificada",
454
+ "viewDetailsOutput": "Ver detalles y leer la salida",
455
+ "viewDetails": "Ver detalles del paso",
456
+ "companion": "Acompañante",
457
+ "companionTooltip": "Acompañante de un paso productor",
458
+ "subtasksProgress": "{completed} de {total} subtareas completadas, {inProgress} en progreso",
459
+ "subtasksDone": "{completed} de {total} subtareas completadas",
460
+ "resolve": "Resolver",
461
+ "decide": "Decidir",
462
+ "review": "Revisar",
463
+ "approve": "Aprobar",
464
+ "fragmentsTooltip": "Fragmentos de buenas prácticas incorporados en este paso: {fragments}",
465
+ "standardsApplied": "{count} estándar aplicado | {count} estándares aplicados",
466
+ "companionOf": "{label} (acompañante)",
467
+ "merged": "Fusionado",
468
+ "open": "Abierto",
469
+ "mergePr": "Fusionar PR"
470
+ },
471
+ "structure": {
472
+ "module": "Módulo",
473
+ "modulePlaceholder": "p. ej. Sesiones (creado al implementar si es nuevo)",
474
+ "bestPractices": "Buenas prácticas",
475
+ "bestPracticesEmpty": "Ninguna. Los agentes siguen su guía predeterminada."
476
+ },
477
+ "runSettings": {
478
+ "unassigned": "Sin asignar",
479
+ "workspaceDefault": "Predeterminado del espacio de trabajo",
480
+ "workspaceDefaultParen": "(predeterminado del espacio de trabajo)",
481
+ "defaultPresetThresholds": "Predeterminado ({name}): {thresholds}",
482
+ "defaultPreset": "Predeterminado ({name})",
483
+ "noDefault": "Sin predeterminado",
484
+ "inheritWorkspace": "Heredar del espacio de trabajo",
485
+ "on": "Activado",
486
+ "off": "Desactivado",
487
+ "inheritOn": "Heredar (activado)",
488
+ "inheritOff": "Heredar (desactivado)",
489
+ "technical": {
490
+ "unset": "Sin definir (detección automática)",
491
+ "technical": "Técnica",
492
+ "business": "De negocio"
493
+ },
494
+ "pipeline": "Pipeline",
495
+ "pipelineEmpty": "Sin predeterminado. Elige un pipeline cuando ejecutes esta tarea.",
496
+ "mergePolicy": "Política de fusión",
497
+ "mergePresetDetail": "{name}: fusión automática cuando complejidad ≤ {complexity}, riesgo ≤ {risk}, impacto ≤ {impact}; hasta {attempts} intentos de corrección de CI.",
498
+ "mergePresetEmpty": "No hay preajuste configurado. El fusionador genera una notificación de revisión para cada PR.",
499
+ "modelPreset": "Preajuste de modelo",
500
+ "modelPresetBase": "base {model}",
501
+ "modelPresetOverrides": ", {count} anulación | , {count} anulaciones",
502
+ "modelPresetEmpty": "No hay preajuste configurado. Los agentes se ejecutan con el enrutamiento predeterminado del despliegue.",
503
+ "unavailableModels": "No disponibles con la configuración actual: {models}. Esta tarea fallaría en esos pasos.",
504
+ "editPresets": "Editar preajustes",
505
+ "configureVendors": "Configurar proveedores",
506
+ "modelPresetChangeHint": "Cambiar esto solo afecta a los pasos que aún no han comenzado.",
507
+ "taskKind": "Tipo de tarea",
508
+ "technicalHint": {
509
+ "technical": "Técnica: el implementador trata la definición de la tarea como principal y la especificación como referencia de regresión; el spec-writer puede no producir especificaciones de negocio.",
510
+ "business": "De negocio: la especificación lidera, como es habitual.",
511
+ "unset": "Detección automática: se infiere de la fase de especificación. Defínela explícitamente para anularla."
512
+ },
513
+ "issueWriteback": "Reescritura de incidencias",
514
+ "commentOnPrOpen": "Comentar al abrir el PR",
515
+ "closeOnMerge": "Cerrar al fusionar",
516
+ "writebackHint": "Reescribe en la incidencia del tracker vinculada a esta tarea. Anula el valor predeterminado del espacio de trabajo.",
517
+ "responsibleProduct": "Producto responsable",
518
+ "responsibleEmpty": "Sin asignar. Define un responsable de producto para notificarle cuando la revisión de requisitos marque esta tarea.",
519
+ "autoStartDependents": "Iniciar dependientes automáticamente",
520
+ "autoStartHint": "Cuando esta tarea se fusione, inicia automáticamente las tareas que dependen de ella (una vez que sus otras dependencias también estén completas)."
521
+ }
522
+ },
523
+ "panels": {
524
+ "decision": {
525
+ "title": "Se requiere una decisión",
526
+ "agentOnBlock": "{agent} en {block}",
527
+ "visualizationHint": "Esto es una visualización. Cualquier elección simplemente reanuda el pipeline."
528
+ },
529
+ "stepRestart": {
530
+ "restartFromStep": "Reiniciar el pipeline desde este paso",
531
+ "restartFromHere": "Reiniciar desde aquí"
532
+ },
533
+ "structuredResult": {
534
+ "fallbackTitle": "Resultado del agente",
535
+ "titleWithBlock": "{label}: {title}",
536
+ "fallbackDescription": "Salida estructurada del agente",
537
+ "structuredOutput": "Salida estructurada",
538
+ "noResult": "Aún no hay resultado.",
539
+ "noResultHint": "La salida estructurada aparece cuando este agente termina. Mientras se ejecuta, el paso muestra el progreso en vivo en el tablero."
540
+ },
541
+ "testReport": {
542
+ "title": "Informe de pruebas",
543
+ "greenlit": "Aprobado",
544
+ "needsFixes": "Requiere correcciones",
545
+ "fixAttempts": "{count}/{max} intentos de corrección",
546
+ "fixing": "· corrigiendo…",
547
+ "tested": "Probado",
548
+ "outcomes": "Resultados",
549
+ "concerns": "Inquietudes"
550
+ },
551
+ "stepMeta": {
552
+ "stateLabel": "Estado",
553
+ "duration": "Duración",
554
+ "elapsed": "transcurrido",
555
+ "step": "Paso",
556
+ "stepOf": "{number} de {total}",
557
+ "started": "Iniciado",
558
+ "finished": "Finalizado",
559
+ "model": "Modelo",
560
+ "notRecorded": "No registrado",
561
+ "run": "Ejecución",
562
+ "clickToCopy": "{id} (haz clic para copiar)",
563
+ "spinningUpContainer": "Iniciando contenedor…",
564
+ "subtasks": "Subtareas · {completed}/{total}",
565
+ "standardsApplied": "Estándares aplicados",
566
+ "decision": "Decisión",
567
+ "awaitingChoice": "Esperando una elección humana",
568
+ "approvalGate": "Verificación de aprobación",
569
+ "companionReview": "Revisión del acompañante",
570
+ "correctionIterations": "{count} iteración de corrección. | {count} iteraciones de corrección.",
571
+ "state": {
572
+ "pending": "Pendiente",
573
+ "working": "Trabajando",
574
+ "waiting_decision": "Requiere entrada",
575
+ "done": "Completado",
576
+ "failed": "Fallido"
577
+ },
578
+ "approvalStatus": {
579
+ "pending": "Pendiente",
580
+ "approved": "Aprobado",
581
+ "changes_requested": "Cambios solicitados",
582
+ "rejected": "Rechazado"
583
+ }
584
+ },
585
+ "stepDetail": {
586
+ "contents": "Contenidos",
587
+ "details": "Detalles",
588
+ "approvalRequired": "Se requiere aprobación",
589
+ "decisionRequired": "Se requiere una decisión",
590
+ "expandAll": "Expandir todas las secciones",
591
+ "collapseAll": "Contraer todas las secciones",
592
+ "copyRawOutput": "Copiar salida sin procesar",
593
+ "closeEsc": "Cerrar (Esc)",
594
+ "companionCapHeading": "{agent} alcanzó su límite de {attempts} intentos de reelaboración, aún por debajo del umbral de {threshold}.",
595
+ "companionCapDetail": "Haz una ronda más de reelaboración automática, avanza al siguiente paso aceptando la salida actual, o detén y restablece la tarea para que puedas editar las entradas y reenviarla.",
596
+ "infraAttempts": "Intentos de infraestructura",
597
+ "hideInfraAttempts": "Ocultar intentos de infraestructura",
598
+ "editingConclusions": "Editando las conclusiones",
599
+ "editConclusionsPlaceholder": "Edita las conclusiones del agente; tus cambios se guardan cuando apruebas…",
600
+ "noProseOutput": "Este agente no produjo salida en prosa.",
601
+ "approveWithCorrections": "Aprobar con correcciones",
602
+ "reviewAndApprove": "Revisar y aprobar",
603
+ "editHint": "Edita las conclusiones a la izquierda; tus cambios se guardan cuando apruebas.",
604
+ "reviewHint": "Haz clic en cualquier bloque de la salida para comentarlo, o deja comentarios generales abajo.",
605
+ "editingNotice": "Estás editando las conclusiones directamente. Las ediciones manuales no se pueden combinar con comentarios por bloque. Aprueba para guardarlas, o cancela para volver a la revisión.",
606
+ "commentingOn": "Comentando en",
607
+ "commentPlaceholder": "Deja un comentario en este bloque…",
608
+ "addComment": "Añadir comentario",
609
+ "commentN": "Comentario {number}",
610
+ "removeComment": "Quitar comentario",
611
+ "overallFeedback": "Comentarios generales / motivo del rechazo",
612
+ "overallFeedbackPlaceholder": "Describe los cambios que el agente debe hacer (opcional si dejaste comentarios por bloque)…",
613
+ "approveWithEdits": "Aprobar con estas ediciones",
614
+ "cancelEdits": "Cancelar ediciones",
615
+ "approveAndProceed": "Aprobar y continuar",
616
+ "rejectConfirmPrompt": "¿Rechazar esta propuesta y detener la ejecución por completo?",
617
+ "confirmReject": "Confirmar rechazo",
618
+ "requestChanges": "Solicitar cambios",
619
+ "reject": "Rechazar",
620
+ "requestChangesHint": "Solicitar cambios vuelve a ejecutar este paso con tus comentarios y observaciones. Rechazar detiene la ejecución por completo."
621
+ },
622
+ "inspector": {
623
+ "frameStatus": {
624
+ "planned": "Sin tareas",
625
+ "ready": "En vivo",
626
+ "in_progress": "Activo",
627
+ "blocked": "Requiere atención",
628
+ "pr_ready": "Activo",
629
+ "done": "En vivo"
630
+ },
631
+ "deleteRecurringPipeline": "Eliminar pipeline recurrente",
632
+ "deleteTask": "Eliminar tarea",
633
+ "deleteModule": "Eliminar módulo",
634
+ "deleteService": "Eliminar servicio",
635
+ "titlePlaceholder": "Título…",
636
+ "reworkedRequirements": "Requisitos reelaborados",
637
+ "agentStepsUseDocument": "Los pasos del agente usan este documento.",
638
+ "open": "Abrir",
639
+ "originalDescriptionFrozen": "Descripción original (congelada)",
640
+ "noDescription": "Sin descripción",
641
+ "describeBlock": "Describe este bloque…",
642
+ "taskStartedLocked": "Esta tarea ha comenzado. Sus detalles están bloqueados.",
643
+ "lastIncorporatedRequirements": "Últimos requisitos incorporados",
644
+ "priorDocHint": "De la revisión anterior. Úsalo como base: edita la descripción de arriba y reenvíala.",
645
+ "bootstrapping": "Inicializando…",
646
+ "importIssue": "Importar incidencia",
647
+ "connectTracker": "Conectar un tracker",
648
+ "spawnFromDocument": "Generar desde documento",
649
+ "viewRequirements": "Ver requisitos",
650
+ "reRun": "Reejecutar",
651
+ "run": "Ejecutar",
652
+ "focus": "Enfocar"
653
+ }
654
+ },
655
+ "observability": {
656
+ "modelActivity": "Actividad del modelo",
657
+ "viewAllCalls": "Ver todas las llamadas →",
658
+ "providedContext": "Contexto proporcionado",
659
+ "exportJson": "Exportar JSON",
660
+ "exportHint": "Descarga una exportación JSON de esta ejecución, apta para LLM",
661
+ "closeEsc": "Cerrar (Esc)",
662
+ "loadingActivity": "Cargando actividad del modelo…",
663
+ "loadingContext": "Cargando contexto proporcionado…",
664
+ "noCalls": "No se registraron llamadas al modelo en esta ejecución.",
665
+ "noContext": "No se almacenó contexto del agente para esta ejecución. Se captura por despacho cuando el espacio de trabajo tiene activado 'Almacenar contexto completo del agente'.",
666
+ "summary": {
667
+ "calls": "Llamadas",
668
+ "tokensInOut": "Tokens (entrada / salida)",
669
+ "transportOverhead": "Sobrecarga de transporte",
670
+ "modelExecution": "Ejecución del modelo",
671
+ "truncated": "{count} truncada | {count} truncadas"
672
+ },
673
+ "metricsBar": {
674
+ "calls": "{count} llamada | {count} llamadas",
675
+ "promptCompletionTokens": "Tokens de prompt / completado",
676
+ "cachedTokens": "({tokens} en caché)",
677
+ "cachedTokensHint": "Tokens de prompt servidos desde la caché del proveedor",
678
+ "errors": "{count} error | {count} errores",
679
+ "warnings": "{count} advertencia | {count} advertencias",
680
+ "outputLimit": "Límite de salida",
681
+ "truncatedCalls": "{count} llamada truncada en el límite | {count} llamadas truncadas en el límite",
682
+ "transportVsExecution": "Transporte frente a ejecución",
683
+ "transportOverhead": "Sobrecarga de transporte / proxy",
684
+ "modelExecution": "Ejecución del modelo"
685
+ },
686
+ "call": {
687
+ "tokensTitle": "{prompt} tokens de prompt / {completion} de completado",
688
+ "outputUsedVsLimit": "Salida usada frente al límite",
689
+ "transportVsExecution": "Sobrecarga de transporte / ejecución del modelo",
690
+ "error": "error",
691
+ "ok": "ok",
692
+ "messages": "{count} mensajes",
693
+ "tools": "{count} herramientas",
694
+ "streamed": "en streaming",
695
+ "buffered": "en búfer",
696
+ "maxTokens": "max_tokens {value}",
697
+ "promptCached": "{cached}/{prompt} de prompt en caché",
698
+ "total": "total {duration}",
699
+ "prompt": "Prompt",
700
+ "promptPrefixOmitted": "(solo mensajes nuevos: {count} anteriores omitidos)",
701
+ "response": "Respuesta",
702
+ "reasoning": "Razonamiento"
703
+ },
704
+ "context": {
705
+ "injectedFiles": "Archivos de contexto inyectados",
706
+ "bestPracticeFragments": "Fragmentos de buenas prácticas",
707
+ "filesCount": "{count} archivos",
708
+ "fragmentsCount": "{count} fragmentos",
709
+ "systemPrompt": "Prompt del sistema",
710
+ "userPrompt": "Prompt del usuario",
711
+ "details": "Detalles"
712
+ }
119
713
  }
120
714
  }