@knoflows/engine 0.1.0-alpha.1 → 0.1.0-alpha.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.
- package/README.md +2 -2
- package/dist/engine.js +33 -132
- package/dist/migrations/20260917165450_baseline/migration.sql +127 -0
- package/dist/migrations/20260917165450_baseline/snapshot.json +1212 -0
- package/dist/migrations/20260918025930_context_files/migration.sql +7 -0
- package/dist/migrations/20260918025930_context_files/snapshot.json +1275 -0
- package/dist/migrations/20260918074816_large_kate_bishop/migration.sql +8 -0
- package/dist/migrations/20260918074816_large_kate_bishop/snapshot.json +1338 -0
- package/package.json +19 -10
- package/static/assets/i18n/en.json +271 -16
- package/static/assets/i18n/es.json +271 -16
- package/static/chunk-03U2wfYJ.js +7 -0
- package/static/chunk-6rAx_awr.js +1 -0
- package/static/chunk-BGEuPXoV.js +1 -0
- package/static/chunk-BLVF0pVH.js +1 -0
- package/static/chunk-BfWasMGf.js +1 -0
- package/static/chunk-Bvpl_AF9.js +1 -0
- package/static/{chunk-C50zASMN.js → chunk-C2eCmH-q.js} +1 -1
- package/static/chunk-CAjGF9LB.js +1 -0
- package/static/{chunk-CeFjDLjY.js → chunk-CT8olEiD.js} +1 -1
- package/static/chunk-CUsAuTTX.js +1 -0
- package/static/chunk-CgXl_TS9.js +1 -0
- package/static/chunk-CqGGDoIh.js +1 -0
- package/static/chunk-Crj-4pl_.js +1 -0
- package/static/{chunk-Dw1tJgiv.js → chunk-Ct30cLzT.js} +1 -1
- package/static/chunk-Cw0wBuEr.js +5 -0
- package/static/chunk-CxBYhrEj.js +1 -0
- package/static/chunk-CxICQyU8.js +1 -0
- package/static/chunk-DGHakffX.js +1 -0
- package/static/chunk-DIakbH9x.js +1 -0
- package/static/chunk-DIntI-KR.js +1 -0
- package/static/chunk-DPWE5cPY.js +1 -0
- package/static/chunk-DU6MKU0d.js +1 -0
- package/static/chunk-DUR5PalP.js +1 -0
- package/static/chunk-DWLHaSHg.js +1 -0
- package/static/chunk-D_R_EFd2.js +1 -0
- package/static/{chunk-CSPhdKAb.js → chunk-DinAvqzQ.js} +1 -1
- package/static/chunk-DlsGU_Dk.js +1 -0
- package/static/chunk-DwA32gts.js +1 -0
- package/static/chunk-IOVwMLns.js +1 -0
- package/static/chunk-L_FnMwpH.js +1 -0
- package/static/chunk-NAyA7aWR.js +1 -0
- package/static/{chunk-ZijlINsH.js → chunk-TNH96m0D.js} +1 -1
- package/static/chunk-Vz5kd858.js +1 -0
- package/static/chunk-dUlsh7QS.js +66 -0
- package/static/chunk-h3oyPsBC.js +1 -0
- package/static/chunk-hKpVm95g.js +1 -0
- package/static/chunk-qYK5KaAK.js +1 -0
- package/static/chunk-qwukwlIj.js +1 -0
- package/static/chunk-vPa4eOmU.js +1 -0
- package/static/index.html +2 -2
- package/static/main-HV5WDK2F.js +249 -0
- package/static/chunk-8DHqiag3.js +0 -1
- package/static/chunk-B4GVyu_H.js +0 -1
- package/static/chunk-B5hULR_G.js +0 -1
- package/static/chunk-BDOL5Qby.js +0 -1
- package/static/chunk-BJLDaNHl.js +0 -1
- package/static/chunk-BQYw1slv.js +0 -1
- package/static/chunk-BU5DKI8R.js +0 -1
- package/static/chunk-BquD19tF.js +0 -5
- package/static/chunk-C40TdCIk.js +0 -1
- package/static/chunk-C9CuVcTl.js +0 -1
- package/static/chunk-CCjvFBCX.js +0 -1
- package/static/chunk-CPxI4OjB.js +0 -1
- package/static/chunk-CgvdAwRh.js +0 -1
- package/static/chunk-Cnkrtkdu.js +0 -7
- package/static/chunk-Csk1w6sD.js +0 -1
- package/static/chunk-DI-Ex2sC.js +0 -1
- package/static/chunk-DK8z5vU5.js +0 -1
- package/static/chunk-DS9-TMN6.js +0 -1
- package/static/chunk-DxRo8m4J.js +0 -66
- package/static/chunk-DyP6QbgY.js +0 -1
- package/static/chunk-KyBZUWGU.js +0 -1
- package/static/main-BK4MAPTK.js +0 -249
|
@@ -4,16 +4,114 @@
|
|
|
4
4
|
"nav.newWorkflow": "Nuevo flujo",
|
|
5
5
|
"nav.workflows": "Flujos",
|
|
6
6
|
"nav.views": "Vistas",
|
|
7
|
+
"nav.shortcuts": "Atajos",
|
|
7
8
|
"nav.settings": "Ajustes",
|
|
8
|
-
"shell.
|
|
9
|
+
"shell.jobs": "Trabajos",
|
|
9
10
|
"shell.manage": "Administrar",
|
|
11
|
+
"manage.tab.workflows": "Flujos",
|
|
12
|
+
"manage.tab.views": "Vistas y atajos",
|
|
13
|
+
"manage.tab.providers": "Proveedores",
|
|
14
|
+
"manage.tab.contextFiles": "Archivos de contexto",
|
|
15
|
+
"manage.tab.localRepositories": "Repositorios locales",
|
|
16
|
+
"manage.tab.worktrees": "Worktrees",
|
|
17
|
+
"manage.tab.preferences": "Preferencias",
|
|
18
|
+
"manage.preferences.title": "Preferencias",
|
|
19
|
+
"manage.preferences.body": "Las preferencias del motor, como el límite de concurrencia del programador, la política de limpieza de worktrees y el agente predeterminado, vivirán aquí.",
|
|
20
|
+
"context-files.title": "Archivos de contexto",
|
|
21
|
+
"context-files.selectTitle": "Seleccionar archivos de contexto",
|
|
22
|
+
"context-files.emptyState": "Aún no hay archivos de contexto. Añade uno para adjuntarlo a pasos de agente.",
|
|
23
|
+
"context-files.create": "Añadir archivo de contexto",
|
|
24
|
+
"context-files.edit": "Editar",
|
|
25
|
+
"context-files.delete": "Eliminar",
|
|
26
|
+
"context-files.deleteConfirm": "¿Eliminar este archivo de contexto?",
|
|
27
|
+
"context-files.column.name": "Nombre",
|
|
28
|
+
"context-files.column.tier": "Nivel",
|
|
29
|
+
"context-files.column.path": "Ruta",
|
|
30
|
+
"context-files.column.description": "Descripción",
|
|
31
|
+
"context-files.column.actions": "Acciones",
|
|
32
|
+
"context-files.form.name": "Nombre",
|
|
33
|
+
"context-files.form.tier": "Nivel",
|
|
34
|
+
"context-files.form.path": "Ruta",
|
|
35
|
+
"context-files.form.pathHint": "Navega hasta un archivo en esta máquina, o escribe su ruta absoluta. El archivo se lee de inmediato para comprobar que existe.",
|
|
36
|
+
"context-files.form.description": "Descripción",
|
|
37
|
+
"context-files.form.save": "Guardar",
|
|
38
|
+
"context-files.form.cancel": "Cancelar",
|
|
39
|
+
"context-files.form.add": "Añadir",
|
|
40
|
+
"context-files.loadFailed": "No se pudieron cargar los archivos de contexto",
|
|
41
|
+
"context-files.saveFailed": "No se pudo guardar el archivo de contexto",
|
|
42
|
+
"context-files.deleteFailed": "No se pudo eliminar el archivo de contexto",
|
|
43
|
+
"context-files.tier.user": "Usuario",
|
|
44
|
+
"context-files.tier.organization": "Organización",
|
|
45
|
+
"context-files.tier.project": "Proyecto",
|
|
46
|
+
"local-repos.title": "Repositorios locales",
|
|
47
|
+
"local-repos.emptyState": "Aún no hay repositorios locales. Añade uno para que los flujos lo elijan al lanzar.",
|
|
48
|
+
"local-repos.create": "Añadir repositorio local",
|
|
49
|
+
"local-repos.edit": "Editar",
|
|
50
|
+
"local-repos.delete": "Eliminar",
|
|
51
|
+
"local-repos.deleteConfirm": "¿Eliminar este repositorio local?",
|
|
52
|
+
"local-repos.column.name": "Nombre",
|
|
53
|
+
"local-repos.column.localPath": "Ruta del repositorio",
|
|
54
|
+
"local-repos.column.worktreeBasePath": "Base de worktrees",
|
|
55
|
+
"local-repos.column.actions": "Acciones",
|
|
56
|
+
"local-repos.form.name": "Nombre",
|
|
57
|
+
"local-repos.form.localPath": "Ruta del repositorio",
|
|
58
|
+
"local-repos.form.worktreeBasePath": "Ruta base de worktrees (opcional)",
|
|
59
|
+
"local-repos.form.worktreeBaseHint": "Por defecto es una carpeta hermana junto al repositorio. No anides worktrees dentro del propio repo.",
|
|
60
|
+
"local-repos.loadFailed": "No se pudieron cargar los repositorios locales",
|
|
61
|
+
"local-repos.saveFailed": "No se pudo guardar el repositorio local",
|
|
62
|
+
"local-repos.deleteFailed": "No se pudo eliminar el repositorio local",
|
|
63
|
+
"worktrees.title": "Worktrees",
|
|
64
|
+
"worktrees.emptyState": "No hay worktrees activos. Aparecen aquí cuando un trabajo crea uno.",
|
|
65
|
+
"worktrees.deleteSelected": "Eliminar worktrees seleccionados",
|
|
66
|
+
"worktrees.activeWarning": "Un worktree seleccionado pertenece a un trabajo que aún está en curso. Elimínalo solo cuando el trabajo termine.",
|
|
67
|
+
"worktrees.loadFailed": "No se pudieron cargar los worktrees",
|
|
68
|
+
"worktrees.deleteFailed": "No se pudieron eliminar los worktrees",
|
|
69
|
+
"worktrees.column.job": "Trabajo",
|
|
70
|
+
"worktrees.column.repository": "Repositorio",
|
|
71
|
+
"worktrees.column.branch": "Rama",
|
|
72
|
+
"worktrees.column.path": "Ruta",
|
|
73
|
+
"worktrees.column.status": "Estado",
|
|
74
|
+
"worktrees.column.created": "Creado",
|
|
75
|
+
"workflow-input.localRepositoryPlaceholder": "Selecciona un repositorio local",
|
|
76
|
+
"file-browser.emptySelection": "Ningún archivo seleccionado",
|
|
77
|
+
"file-browser.emptySelectionDirectory": "Ninguna carpeta seleccionada",
|
|
78
|
+
"file-browser.enterManually": "O escribir la ruta a mano",
|
|
79
|
+
"file-browser.browse": "Buscar un archivo",
|
|
80
|
+
"file-browser.browseDirectory": "Buscar una carpeta",
|
|
81
|
+
"file-browser.useFolder": "Usar esta carpeta",
|
|
82
|
+
"file-browser.loadFailed": "No se pudo listar este directorio",
|
|
83
|
+
"path-picker.browse": "Examinar...",
|
|
84
|
+
"path-picker.selectFile": "Seleccionar este archivo",
|
|
85
|
+
"path-picker.placeholderFile": "Ruta del archivo",
|
|
86
|
+
"path-picker.placeholderDirectory": "Ruta de la carpeta",
|
|
87
|
+
"path-picker.modalTitleFile": "Seleccionar un archivo",
|
|
88
|
+
"path-picker.modalTitleDirectory": "Seleccionar una carpeta",
|
|
89
|
+
"manage.views.title": "Vistas y atajos",
|
|
90
|
+
"manage.views.createView": "Crear una vista",
|
|
91
|
+
"manage.views.createShortcut": "Crear un atajo",
|
|
92
|
+
"manage.views.emptyState": "Aún no hay vistas ni atajos. Crea uno para empezar.",
|
|
93
|
+
"manage.views.column.name": "Nombre",
|
|
94
|
+
"manage.views.column.type": "Tipo",
|
|
95
|
+
"manage.views.column.workflow": "Flujo asociado",
|
|
96
|
+
"manage.views.column.subjectType": "Tipo de sujeto",
|
|
97
|
+
"manage.views.column.actions": "Acciones",
|
|
98
|
+
"manage.views.type.view": "Vista",
|
|
99
|
+
"manage.views.type.shortcut": "Atajo",
|
|
100
|
+
"manage.views.noSubjectType": "—",
|
|
101
|
+
"manage.views.edit": "Editar",
|
|
102
|
+
"manage.views.delete": "Eliminar",
|
|
103
|
+
"manage.views.deleteConfirmView": "¿Seguro que quieres eliminar esta vista?",
|
|
104
|
+
"manage.views.deleteConfirmShortcut": "¿Seguro que quieres eliminar este atajo?",
|
|
105
|
+
"manage.views.deleteFailed": "No se pudo eliminar",
|
|
106
|
+
"manage.views.loadFailed": "No se pudieron cargar las vistas y los atajos",
|
|
10
107
|
"shell.group.tickets": "Tickets",
|
|
11
108
|
"shell.group.pullRequests": "Pull requests",
|
|
12
109
|
"shell.group.documentation": "Documentación",
|
|
110
|
+
"shell.shortcuts": "Atajos",
|
|
13
111
|
"shell.provider.jira": "Jira",
|
|
14
112
|
"shell.provider.bitbucket": "Bitbucket",
|
|
15
113
|
"shell.empty.title": "Bienvenido a knoflows",
|
|
16
|
-
"shell.empty.body": "Las vistas aparecerán aquí cuando configures un proveedor en Ajustes y guardes al menos
|
|
114
|
+
"shell.empty.body": "Las vistas y atajos aparecerán aquí cuando configures un proveedor en Ajustes y guardes al menos uno.",
|
|
17
115
|
"shell.empty.settingsLink": "Abrir Ajustes",
|
|
18
116
|
"nav.language": "Idioma",
|
|
19
117
|
"nav.localeCheck": "Comprobación de locale",
|
|
@@ -21,8 +119,8 @@
|
|
|
21
119
|
"common.cancel": "Cancelar",
|
|
22
120
|
"common.loading": "Cargando…",
|
|
23
121
|
"common.errorGeneric": "Algo salió mal",
|
|
24
|
-
"jobs.title": "
|
|
25
|
-
"jobs.lede": "Elige un flujo de
|
|
122
|
+
"jobs.title": "Knoflows — Iniciar un trabajo",
|
|
123
|
+
"jobs.lede": "Elige un flujo que trabaja de uno en uno e inicia un trabajo. La observación y la reanudación viven en la página de detalle del trabajo.",
|
|
26
124
|
"jobs.start.heading": "Iniciar un trabajo",
|
|
27
125
|
"jobs.start.workflow": "Flujo de trabajo",
|
|
28
126
|
"jobs.start.subjectId": "subjectId",
|
|
@@ -49,6 +147,9 @@
|
|
|
49
147
|
"jobs.errors.subjectIdRequired": "subjectId es obligatorio para este flujo",
|
|
50
148
|
"jobs.errors.startFailed": "No se pudo iniciar el trabajo",
|
|
51
149
|
"jobs.errors.resumeFailed": "No se pudo reanudar el trabajo",
|
|
150
|
+
"jobs.errors.retryFailed": "No se pudo reintentar el trabajo",
|
|
151
|
+
"jobs.errors.retryStepFailed": "No se pudo reintentar el paso",
|
|
152
|
+
"jobs.errors.cancelFailed": "No se pudo cancelar el trabajo",
|
|
52
153
|
"jobs.errors.refreshFailed": "No se pudo actualizar el trabajo",
|
|
53
154
|
"jobs.detail.backToStart": "Volver a trabajos",
|
|
54
155
|
"jobs.detail.loadFailed": "No se pudo cargar el trabajo",
|
|
@@ -56,6 +157,13 @@
|
|
|
56
157
|
"jobs.detail.workflowMissing": "La definición del flujo no está disponible; no se puede mostrar la lista de pasos.",
|
|
57
158
|
"jobs.detail.queued": "En cola — esperando que comience el primer paso.",
|
|
58
159
|
"jobs.detail.jumpToCurrent": "Ir al paso actual",
|
|
160
|
+
"jobs.detail.retryWorkflow": "Reintentar todo el flujo",
|
|
161
|
+
"jobs.detail.retryStep": "Reintentar este paso",
|
|
162
|
+
"jobs.detail.retrying": "Reintentando…",
|
|
163
|
+
"jobs.detail.cancel": "Cancelar",
|
|
164
|
+
"jobs.detail.cancelling": "Cancelando…",
|
|
165
|
+
"jobs.detail.worktree": "Worktree",
|
|
166
|
+
"jobs.detail.worktreeDeleted": "Worktree eliminado",
|
|
59
167
|
"jobs.detail.stepsHeading": "Pasos",
|
|
60
168
|
"jobs.detail.noStepSelected": "Selecciona un paso para ver su salida.",
|
|
61
169
|
"jobs.detail.loopBack": "Volver al bucle",
|
|
@@ -79,6 +187,9 @@
|
|
|
79
187
|
"jobs.table.column.subject": "Sujeto",
|
|
80
188
|
"jobs.table.column.started": "Inicio",
|
|
81
189
|
"jobs.table.column.completed": "Fin",
|
|
190
|
+
"jobs.table.column.actions": "Acciones",
|
|
191
|
+
"jobs.table.retry": "Reintentar",
|
|
192
|
+
"jobs.table.cancel": "Cancelar",
|
|
82
193
|
"jobs.list.title": "Trabajos",
|
|
83
194
|
"jobs.list.filterByStatus": "Filtrar por estado",
|
|
84
195
|
"jobs.list.filterByWorkflow": "Filtrar por flujo",
|
|
@@ -87,23 +198,28 @@
|
|
|
87
198
|
"jobs.list.empty": "Ningún trabajo coincide con estos filtros.",
|
|
88
199
|
"jobs.list.loadFailed": "No se pudieron cargar los trabajos",
|
|
89
200
|
"jobs.list.filterAll": "Todos",
|
|
201
|
+
"jobs.list.running": "En ejecución",
|
|
202
|
+
"jobs.list.history": "Historial",
|
|
203
|
+
"jobs.list.runningEmpty": "No hay trabajos en ejecución.",
|
|
204
|
+
"jobs.list.historyEmpty": "Ningún trabajo coincide con estos filtros.",
|
|
90
205
|
"workflow-editor.loading": "Cargando…",
|
|
91
206
|
"workflow-editor.titleNew": "Nuevo flujo",
|
|
92
207
|
"workflow-editor.titleEdit": "Editar flujo · {{id}}",
|
|
93
|
-
"workflow-editor.
|
|
208
|
+
"workflow-editor.backToWorkflows": "Volver a flujos",
|
|
94
209
|
"workflow-editor.validation": "Validación",
|
|
95
210
|
"workflow-editor.basics": "Básicos",
|
|
96
211
|
"workflow-editor.name": "name",
|
|
97
212
|
"workflow-editor.appliesTo": "appliesTo",
|
|
98
|
-
"workflow-editor.
|
|
213
|
+
"workflow-editor.subjectHandling.label": "Elementos",
|
|
99
214
|
"workflow-editor.description": "description",
|
|
100
215
|
"workflow-editor.subjectType.none": "none",
|
|
101
216
|
"workflow-editor.subjectType.ticket": "ticket",
|
|
102
217
|
"workflow-editor.subjectType.pull_request": "pull_request",
|
|
103
218
|
"workflow-editor.subjectType.documentation": "documentation",
|
|
104
|
-
"workflow-editor.
|
|
105
|
-
"workflow-editor.
|
|
106
|
-
"workflow-editor.
|
|
219
|
+
"workflow-editor.subjectHandling.per-subject": "De uno en uno",
|
|
220
|
+
"workflow-editor.subjectHandling.collection": "En conjunto",
|
|
221
|
+
"workflow-editor.subjectHandling.help.per-subject": "Los pasos trabajan sobre un solo elemento. Puedes iniciar una fila, o ejecutar varios de forma independiente con una notificación cuando lanzas en lote.",
|
|
222
|
+
"workflow-editor.subjectHandling.help.collection": "Los pasos ven todo el conjunto seleccionado y producen un resultado combinado.",
|
|
107
223
|
"workflow-editor.notificationPolicy": "Política de notificaciones",
|
|
108
224
|
"workflow-editor.trigger.on_fail": "on_fail",
|
|
109
225
|
"workflow-editor.trigger.on_complete": "on_complete",
|
|
@@ -117,6 +233,7 @@
|
|
|
117
233
|
"workflow-editor.inputType.number": "number",
|
|
118
234
|
"workflow-editor.inputType.boolean": "boolean",
|
|
119
235
|
"workflow-editor.inputType.select": "select",
|
|
236
|
+
"workflow-editor.inputType.localRepository": "Repositorio local",
|
|
120
237
|
"workflow-editor.required": "obligatorio",
|
|
121
238
|
"workflow-editor.remove": "Eliminar",
|
|
122
239
|
"workflow-editor.addInputField": "Añadir campo de entrada",
|
|
@@ -128,12 +245,14 @@
|
|
|
128
245
|
"step-list.moveDown": "Bajar",
|
|
129
246
|
"step-list.remove": "Eliminar",
|
|
130
247
|
"step-list.addStep": "Añadir paso",
|
|
248
|
+
"step-list.unnamed": "Sin nombre",
|
|
131
249
|
"step-list.name": "Nombre",
|
|
132
250
|
"step-list.id": "Id",
|
|
133
251
|
"step-list.idHint": "Se genera a partir del nombre del paso — edítalo directamente si quieres otra referencia.",
|
|
134
|
-
"step-list.objective": "
|
|
135
|
-
"step-list.
|
|
136
|
-
"step-list.
|
|
252
|
+
"step-list.objective": "Prompt",
|
|
253
|
+
"step-list.contextFiles": "Archivos de contexto",
|
|
254
|
+
"step-list.contextFilesEmpty": "Ninguno seleccionado",
|
|
255
|
+
"step-list.selectContextFiles": "Seleccionar archivos de contexto",
|
|
137
256
|
"step-list.outputFormat.label": "Formato de salida",
|
|
138
257
|
"step-list.interaction.label": "Interacción",
|
|
139
258
|
"step-list.notify": "Notificar",
|
|
@@ -151,6 +270,18 @@
|
|
|
151
270
|
"step-list.maxIterations": "Iteraciones máximas",
|
|
152
271
|
"step-list.onMaxIterations.action": "onMaxIterations.action",
|
|
153
272
|
"step-list.nestedSteps": "Pasos anidados",
|
|
273
|
+
"step-list.availableParameters.title": "Parámetros disponibles",
|
|
274
|
+
"step-list.availableParameters.hint": "Haz clic en un token para copiarlo. Solo se listan valores ya disponibles cuando se ejecuta este paso.",
|
|
275
|
+
"step-list.availableParameters.inputs": "Entradas del flujo",
|
|
276
|
+
"step-list.availableParameters.subject": "Sujeto",
|
|
277
|
+
"step-list.availableParameters.previous": "Pasos anteriores",
|
|
278
|
+
"step-list.availableParameters.loopOverwrite": "Las iteraciones del bucle sobrescriben este valor; las referencias posteriores ven el resultado de la última pasada.",
|
|
279
|
+
"step-list.availableParameters.noOutput": "Sin campos de salida",
|
|
280
|
+
"step-list.availableParameters.providerOpaque": "Resultado de {{action}} — inspeccionar en tiempo de ejecución",
|
|
281
|
+
"step-list.availableParameters.interactionOpaque": "La forma depende de las preguntas hechas",
|
|
282
|
+
"step-list.availableParameters.subWorkflowArray": "Array de { fanOutIndex, jobId, output }",
|
|
283
|
+
"step-list.availableParameters.noPrevious": "Ningún paso anterior",
|
|
284
|
+
"step-list.availableParameters.missingId": "Asigna un id para copiar tokens",
|
|
154
285
|
"step-list.stepType.agent": "agent",
|
|
155
286
|
"step-list.stepType.interaction": "interaction",
|
|
156
287
|
"step-list.stepType.shell": "shell",
|
|
@@ -173,11 +304,32 @@
|
|
|
173
304
|
"step-list.gitOperation.create_branch": "create_branch",
|
|
174
305
|
"step-list.gitOperation.commit": "commit",
|
|
175
306
|
"step-list.gitOperation.push": "push",
|
|
307
|
+
"step-list.createWorktree.mode": "Modo",
|
|
308
|
+
"step-list.createWorktree.newBranch": "Rama nueva",
|
|
309
|
+
"step-list.createWorktree.existingBranch": "Rama existente",
|
|
310
|
+
"step-list.createWorktree.repoPath": "Ruta del repositorio",
|
|
311
|
+
"step-list.createWorktree.baseBranch": "Rama base",
|
|
312
|
+
"step-list.createWorktree.branchName": "Nombre de rama",
|
|
313
|
+
"step-list.createWorktree.branch": "Rama",
|
|
176
314
|
"step-list.providerAction.get_subject": "get_subject",
|
|
177
315
|
"step-list.providerAction.get_comments": "get_comments",
|
|
178
316
|
"step-list.providerAction.post_comment": "post_comment",
|
|
179
317
|
"step-list.providerAction.update_status": "update_status",
|
|
180
318
|
"step-list.providerAction.get_content": "get_content",
|
|
319
|
+
"step-list.extendedAction.mode": "Origen de la acción",
|
|
320
|
+
"step-list.extendedAction.portable": "Acción portable",
|
|
321
|
+
"step-list.extendedAction.extended": "Usar una acción extendida",
|
|
322
|
+
"step-list.extendedAction.provider": "Proveedor",
|
|
323
|
+
"step-list.extendedAction.action": "Acción extendida",
|
|
324
|
+
"step-list.extendedAction.none": "Elige una acción",
|
|
325
|
+
"step-list.extendedAction.empty": "Este proveedor no tiene acciones extendidas",
|
|
326
|
+
"step-list.extendedAction.mismatch": "Requiere {{required}} — {{active}} está configurado ahora",
|
|
327
|
+
"step-list.target.toggle": "Apuntar a otro sujeto",
|
|
328
|
+
"step-list.target.subjectType": "Tipo de sujeto",
|
|
329
|
+
"step-list.target.source": "Instancia de proveedor",
|
|
330
|
+
"step-list.target.sourcePlaceholder": "Elige una instancia",
|
|
331
|
+
"step-list.target.subjectId": "Id del sujeto",
|
|
332
|
+
"step-list.target.subjectIdHint": "Suele ser una referencia interpolada a un paso anterior, p. ej. resolve-key",
|
|
181
333
|
"step-list.knowledgeTier.user": "user",
|
|
182
334
|
"step-list.knowledgeTier.organization": "organization",
|
|
183
335
|
"step-list.knowledgeTier.project": "project",
|
|
@@ -187,7 +339,50 @@
|
|
|
187
339
|
"step-list.onMaxIterations.continue": "continue",
|
|
188
340
|
"step-list.onMaxIterations.ask_human": "ask_human",
|
|
189
341
|
"settings.title": "Ajustes",
|
|
190
|
-
"settings.lede": "
|
|
342
|
+
"settings.lede": "Configura instancias de proveedores y guarda claves de API. Añadir o cambiar una instancia requiere reiniciar; el agente predeterminado se puede cambiar de inmediato.",
|
|
343
|
+
"settings.addProvider": "Añadir proveedor",
|
|
344
|
+
"settings.editProvider": "Editar proveedor",
|
|
345
|
+
"settings.addInstance": "Añadir instancia de proveedor",
|
|
346
|
+
"settings.addInstance.submit": "Añadir instancia",
|
|
347
|
+
"settings.removeInstance": "Quitar",
|
|
348
|
+
"settings.edit": "Editar",
|
|
349
|
+
"settings.delete": "Eliminar",
|
|
350
|
+
"settings.deleteConfirm": "¿Seguro que quieres eliminar esta instancia de proveedor?",
|
|
351
|
+
"settings.kind.label": "Tipo de instancia",
|
|
352
|
+
"settings.kind.subject": "Proveedor de sujetos",
|
|
353
|
+
"settings.kind.agent": "Agente",
|
|
354
|
+
"settings.type.label": "Tipo",
|
|
355
|
+
"settings.typeOption.jira": "Jira",
|
|
356
|
+
"settings.typeOption.bitbucket": "Bitbucket",
|
|
357
|
+
"settings.typeOption.github": "GitHub Issues",
|
|
358
|
+
"settings.typeOption.confluence": "Confluence",
|
|
359
|
+
"settings.typeOption.manualTicket": "Manual (ticket)",
|
|
360
|
+
"settings.typeOption.manualDocumentation": "Manual (documentación)",
|
|
361
|
+
"settings.typeOption.claude": "Claude",
|
|
362
|
+
"settings.typeOption.cursor": "Cursor",
|
|
363
|
+
"settings.subjectType.label": "Tipo de sujeto",
|
|
364
|
+
"settings.instanceId": "Id de instancia",
|
|
365
|
+
"settings.instanceIdHint": "Se genera a partir del nombre visible — edítalo directamente si quieres otro id.",
|
|
366
|
+
"settings.displayName": "Nombre visible",
|
|
367
|
+
"settings.displayNameRequired": "El nombre visible es obligatorio",
|
|
368
|
+
"settings.defaultAgent.label": "Agente predeterminado",
|
|
369
|
+
"settings.defaultAgent.toggle": "Establecer como agente predeterminado",
|
|
370
|
+
"settings.column.displayName": "Nombre visible",
|
|
371
|
+
"settings.column.type": "Tipo",
|
|
372
|
+
"settings.column.expiresOn": "Caduca el",
|
|
373
|
+
"settings.column.default": "Predeterminado",
|
|
374
|
+
"settings.column.actions": "Acciones",
|
|
375
|
+
"settings.expiresOn.label": "Caduca el",
|
|
376
|
+
"settings.expiresOn.hint": "Solo un recordatorio manual — Knoflows no comprueba esta fecha con el proveedor.",
|
|
377
|
+
"settings.ticket.github": "GitHub Issues",
|
|
378
|
+
"settings.github.username": "Usuario de GitHub",
|
|
379
|
+
"step-list.agentInstance.label": "Agente",
|
|
380
|
+
"step-list.agentInstance.default": "Usar el agente predeterminado",
|
|
381
|
+
"views.editor.instance": "Instancia de proveedor",
|
|
382
|
+
"views.editor.instancePlaceholder": "Selecciona una instancia de proveedor",
|
|
383
|
+
"views.editor.instanceNeeded": "Esta vista no tiene instancia de proveedor. Elige una para terminar la configuración.",
|
|
384
|
+
"views.editor.noEligibleInstances": "Ningún proveedor configurado admite el tipo de sujeto de este flujo — añade uno en Administrar → Proveedores primero",
|
|
385
|
+
"views.editor.pickInstance": "Elige una instancia de proveedor",
|
|
191
386
|
"settings.section.ticket": "Seguimiento de tickets",
|
|
192
387
|
"settings.section.repo": "Alojamiento de repositorios",
|
|
193
388
|
"settings.section.agent": "Agente de código",
|
|
@@ -202,6 +397,8 @@
|
|
|
202
397
|
"settings.agent.cursor": "Cursor",
|
|
203
398
|
"settings.jira.baseUrl": "URL base de Jira",
|
|
204
399
|
"settings.jira.email": "Correo de Jira",
|
|
400
|
+
"settings.confluence.baseUrl": "URL base de Confluence",
|
|
401
|
+
"settings.confluence.email": "Correo de Confluence",
|
|
205
402
|
"settings.bitbucket.baseUrl": "URL base de Bitbucket",
|
|
206
403
|
"settings.bitbucket.email": "Correo de Bitbucket",
|
|
207
404
|
"settings.bitbucket.workspace": "Espacio de trabajo de Bitbucket",
|
|
@@ -209,21 +406,32 @@
|
|
|
209
406
|
"settings.apiKey.configured": "Configurada ✓",
|
|
210
407
|
"settings.apiKey.notConfigured": "No configurada",
|
|
211
408
|
"settings.apiKey.placeholder": "Introduce una clave nueva para reemplazar la guardada",
|
|
409
|
+
"settings.apiKey.placeholderCreate": "Clave de API",
|
|
410
|
+
"settings.apiKey.placeholderEdit": "Déjalo en blanco para conservar la clave actual",
|
|
411
|
+
"settings.apiKey.required": "La clave de API es obligatoria",
|
|
212
412
|
"settings.apiKey.set": "Guardar clave",
|
|
213
413
|
"settings.apiKey.setSuccess": "Clave de API guardada",
|
|
214
414
|
"settings.apiKey.setFailed": "No se pudo guardar la clave de API",
|
|
215
|
-
"settings.
|
|
415
|
+
"settings.apiKey.setFailedAfterSave": "El proveedor se guardó, pero no se pudo almacenar la clave de API. Introdúcela de nuevo para terminar la configuración.",
|
|
416
|
+
"settings.model.label": "Modelo predeterminado",
|
|
417
|
+
"settings.model.placeholder": "Predeterminado del proveedor",
|
|
418
|
+
"settings.model.fetch": "Obtener modelos disponibles",
|
|
419
|
+
"settings.model.fetchFailed": "No se pudieron obtener los modelos",
|
|
420
|
+
"settings.model.hint": "Déjalo vacío para usar el predeterminado del proveedor. Obtén la lista después de introducir una clave de API.",
|
|
421
|
+
"settings.restartRequired.message": "Algunos cambios requieren reiniciar Knoflows para aplicarse",
|
|
216
422
|
"settings.saveSuccess": "Ajustes guardados",
|
|
217
423
|
"settings.saveFailed": "No se pudieron guardar los ajustes",
|
|
218
424
|
"settings.validation": "Validación",
|
|
219
425
|
"settings.loadFailed": "No se pudieron cargar los ajustes",
|
|
220
426
|
"workflows.list.title": "Flujos",
|
|
221
427
|
"workflows.list.createButton": "Crear flujo",
|
|
428
|
+
"workflows.list.browseLibrary": "Examinar biblioteca",
|
|
222
429
|
"workflows.list.emptyState": "Aún no hay flujos. Crea uno para empezar.",
|
|
223
430
|
"workflows.list.emptyCreateButton": "Crea tu primer flujo",
|
|
431
|
+
"workflows.list.emptyBrowseLibrary": "Examinar la biblioteca",
|
|
224
432
|
"workflows.list.stepCount": "{{count}} pasos",
|
|
225
433
|
"workflows.list.noDescription": "Sin descripción",
|
|
226
|
-
"workflows.list.
|
|
434
|
+
"workflows.list.filterBySubjectHandling": "Filtrar por elementos",
|
|
227
435
|
"workflows.list.filterAll": "Todos",
|
|
228
436
|
"workflows.list.edit": "Editar",
|
|
229
437
|
"workflows.list.delete": "Eliminar",
|
|
@@ -234,6 +442,17 @@
|
|
|
234
442
|
"workflows.list.column.steps": "Pasos",
|
|
235
443
|
"workflows.list.column.actions": "Acciones",
|
|
236
444
|
"workflows.list.loadFailed": "No se pudieron cargar los flujos",
|
|
445
|
+
"workflow-library.title": "Biblioteca de flujos",
|
|
446
|
+
"workflow-library.lede": "Copia un ejemplo a tu espacio de trabajo. Una vez añadido, es tuyo para editarlo.",
|
|
447
|
+
"workflow-library.source.example": "Ejemplo",
|
|
448
|
+
"workflow-library.source.community": "Comunidad",
|
|
449
|
+
"workflow-library.source.official": "Oficial",
|
|
450
|
+
"workflow-library.previewSteps": "Ver pasos",
|
|
451
|
+
"workflow-library.hideSteps": "Ocultar pasos",
|
|
452
|
+
"workflow-library.add": "Añadir a mis flujos",
|
|
453
|
+
"workflow-library.adding": "Añadiendo…",
|
|
454
|
+
"workflow-library.loadFailed": "No se pudo cargar la biblioteca de flujos",
|
|
455
|
+
"workflow-library.addFailed": "No se pudo añadir este flujo",
|
|
237
456
|
"views.list.title": "Vistas",
|
|
238
457
|
"views.list.createButton": "Crear vista",
|
|
239
458
|
"views.list.emptyState": "Aún no hay vistas. Crea una para empezar.",
|
|
@@ -245,15 +464,24 @@
|
|
|
245
464
|
"views.list.loadFailed": "No se pudieron cargar las vistas",
|
|
246
465
|
"views.list.column.name": "Nombre",
|
|
247
466
|
"views.list.column.subjectType": "Tipo de sujeto",
|
|
467
|
+
"views.list.column.workflow": "Flujo",
|
|
248
468
|
"views.list.column.query": "Consulta",
|
|
249
469
|
"views.list.column.actions": "Acciones",
|
|
250
470
|
"views.editor.titleNew": "Nueva vista",
|
|
251
471
|
"views.editor.titleEdit": "Editar vista · {{id}}",
|
|
252
472
|
"views.editor.backToList": "Volver a vistas",
|
|
253
473
|
"views.editor.name": "Nombre",
|
|
474
|
+
"views.editor.workflow": "Flujo",
|
|
254
475
|
"views.editor.subjectType": "Tipo de sujeto",
|
|
255
476
|
"views.editor.query": "Consulta (JSON)",
|
|
256
|
-
"views.editor.queryHint": "Objeto de filtro del proveedor en crudo.
|
|
477
|
+
"views.editor.queryHint": "Objeto de filtro del proveedor en crudo. Úsalo cuando ninguna plantilla cubra lo que necesitas.",
|
|
478
|
+
"views.editor.queryMode": "Consulta",
|
|
479
|
+
"views.editor.queryMode.template": "Plantilla",
|
|
480
|
+
"views.editor.queryMode.raw": "JSON en crudo",
|
|
481
|
+
"views.editor.template": "Plantilla",
|
|
482
|
+
"views.editor.pickTemplate": "Elige una plantilla de consulta, o pasa a JSON en crudo",
|
|
483
|
+
"views.editor.missingParam": "{{label}} es obligatorio",
|
|
484
|
+
"views.editor.resolveFailed": "No se pudo resolver la plantilla de consulta",
|
|
257
485
|
"views.editor.invalidJson": "La consulta debe ser un objeto JSON",
|
|
258
486
|
"views.editor.validation": "Validación",
|
|
259
487
|
"views.editor.created": "Vista creada",
|
|
@@ -283,14 +511,41 @@
|
|
|
283
511
|
"views.detail.start": "Iniciar",
|
|
284
512
|
"views.detail.rowStartWorkflow": "Flujo único para inicio por fila",
|
|
285
513
|
"views.detail.emptySubjects": "Ningún sujeto coincide con esta vista ahora.",
|
|
514
|
+
"runnableTable.column.item": "Elemento",
|
|
515
|
+
"runnableTable.column.latestRun": "Última ejecución",
|
|
516
|
+
"runnableTable.column.actions": "Acciones",
|
|
517
|
+
"runnableTable.run": "Ejecutar",
|
|
518
|
+
"runnableTable.runSelected": "Ejecutar seleccionados ({{count}})",
|
|
519
|
+
"runnableTable.neverRun": "Nunca ejecutado",
|
|
520
|
+
"shortcuts.list.title": "Atajos",
|
|
521
|
+
"shortcuts.list.createButton": "Crear atajo",
|
|
522
|
+
"shortcuts.list.emptyState": "Aún no hay atajos. Crea uno para ejecutar un flujo sin sujeto con entradas guardadas.",
|
|
523
|
+
"shortcuts.list.emptyCreateButton": "Crea tu primer atajo",
|
|
524
|
+
"shortcuts.list.loadFailed": "No se pudieron cargar los atajos",
|
|
525
|
+
"shortcuts.list.runFailed": "No se pudo iniciar el atajo",
|
|
526
|
+
"shortcuts.list.deleteFailed": "No se pudo eliminar el atajo",
|
|
527
|
+
"shortcuts.editor.titleNew": "Nuevo atajo",
|
|
528
|
+
"shortcuts.editor.titleEdit": "Editar atajo · {{id}}",
|
|
529
|
+
"shortcuts.editor.backToList": "Volver a atajos",
|
|
530
|
+
"shortcuts.editor.name": "Nombre",
|
|
531
|
+
"shortcuts.editor.workflow": "Flujo",
|
|
532
|
+
"shortcuts.editor.validation": "Validación",
|
|
533
|
+
"shortcuts.editor.created": "Atajo creado",
|
|
534
|
+
"shortcuts.editor.saved": "Atajo guardado",
|
|
535
|
+
"shortcuts.editor.saveFailed": "No se pudo guardar el atajo",
|
|
536
|
+
"shortcuts.editor.loadFailed": "No se pudo cargar el atajo",
|
|
286
537
|
"batches.detail.backHint": "Volver a vistas",
|
|
287
538
|
"batches.detail.loadFailed": "No se pudo cargar el lote",
|
|
288
539
|
"batches.detail.subjectCount": "{{count}} sujetos",
|
|
289
540
|
"batches.detail.membersHeading": "Trabajos miembros",
|
|
541
|
+
"batches.detail.cancel": "Cancelar lote",
|
|
542
|
+
"batches.detail.cancelling": "Cancelando…",
|
|
543
|
+
"batches.errors.cancelFailed": "No se pudo cancelar el lote",
|
|
290
544
|
"batches.status.running": "En ejecución",
|
|
291
545
|
"batches.status.completed": "Completado",
|
|
292
546
|
"batches.status.completed_with_issues": "Completado con problemas",
|
|
293
547
|
"batches.status.failed": "Fallido",
|
|
548
|
+
"batches.status.cancelled": "Cancelado",
|
|
294
549
|
"batches.triggeredBy.schedule": "Programación",
|
|
295
550
|
"batches.triggeredBy.view_bulk": "Vista (todos los coincidentes)",
|
|
296
551
|
"batches.triggeredBy.multiselect": "Selección múltiple"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {G as Gn,u as un}from'./chunk-TNH96m0D.js';import {f}from'./chunk-BfWasMGf.js';import {B as Bt}from'./chunk-DIntI-KR.js';import {c,u,f as f$1,o as o$1,l}from'./chunk-CxBYhrEj.js';import {W,I}from'./chunk-Ct30cLzT.js';import'./chunk-BGEuPXoV.js';import'./chunk-C2eCmH-q.js';import {C,a as ae,T as Ie$1,$,V as Ve$1,b as at,q as qo,H as Hw,u as ue$1,W as rd,Y as Bw,o,Q as QE,M as Mi,L as Ln,d as dd,z as zc,c as t7,Z as y7,K as Kt,f as _i,m as bD,g as Kc,p as gI,B as _D,a0 as $0,a1 as B0,v as vw,R as Rw,P as Ph,O as Ow,E as VD,F as LD,h as gh,G as Pu,I as Lu,w as nl,a2 as Pw,a3 as xw,x as ch,N as ND,A as xD,l as lh,a4 as Mh,a5 as ah,U as Lh,a6 as Nw,a7 as MD}from'./main-HV5WDK2F.js';var pe=t=>({index:t}),ue=()=>[],ge=(t,s)=>s.definition.id,he=(t,s)=>s.index;function Se(t,s){if(t&1){let e=LD();_i(0,"div",1)(1,"button",2),gh("click",function(){Pu(e);let o=VD();return Lu(o.closeIteration())}),vw(2),Rw(3,"transloco"),Kc(),_i(4,"p",3),vw(5),Rw(6,"transloco"),Kc(),_i(7,"app-job-step-workspace",4),gh("selectExecution",function(o){Pu(e);let f=VD();return Lu(f.onNestedSelect(o))})("retryStep",function(){Pu(e);let o=VD();return Lu(o.retryStep.emit())}),Kc()();}if(t&2){let e=s,i=VD();gI(2),nl(" ",Ow(3,11,"jobs.detail.loopBack")," "),gI(3),nl(" ",Pw(6,13,"jobs.detail.loopIteration",xw(16,pe,e.index+1))," "),gI(2),ch("definitions",i.nestedLoopDefinition().steps)("executions",e.stepExecutions)("job",i.job())("selectedExecutionId",i.nestedSelectedId())("currentExecutionId",i.currentExecutionId())("waitingEvent",null)("canResume",false)("canRetryStep",i.canRetryStep())("retryingStep",i.retryingStep());}}function ve(t,s){if(t&1&&(_i(0,"nz-tag"),vw(1),Rw(2,"transloco"),Kc()),t&2){let e=VD().$implicit,i=VD(2);ah("data-testid","step-status-"+e.definition.id),gI(),Ph(Ow(2,2,i.stepStatusKey(s.status)));}}function Ee(t,s){if(t&1){let e=LD();_i(0,"li")(1,"button",9),gh("click",function(){let o=Pu(e).$implicit,f=VD(2);return Lu(f.onStepClick(o))}),_i(2,"span",10),vw(3),Kc(),_i(4,"span",11)(5,"span",12),vw(6),Rw(7,"transloco"),Kc(),bD(8,ve,3,4,"nz-tag"),Kc()()();}if(t&2){let e,i=s.$implicit,o=VD(2);gI(),Mh("selected",o.isSelected(i))("current",o.isCurrent(i))("unreached",!i.reached),ch("disabled",!i.reached),ah("data-testid","step-"+i.definition.id),gI(2),Ph(i.definition.name),gI(3),Ph(Ow(7,11,o.stepTypeKey(i.definition.type))),gI(2),_D((e=i.execution)?8:-1,e);}}function ye(t,s){t&1&&(_i(0,"p",8),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),nl(" ",Ow(2,1,"jobs.detail.noStepSelected")," "));}function we(t,s){t&1&&(_i(0,"p",16),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),Ph(Ow(2,1,"jobs.detail.inProgress.loop")));}function ke(t,s){if(t&1){let e=LD();_i(0,"li")(1,"button",19),gh("click",function(){let o=Pu(e).$implicit,f=VD(4);return Lu(f.openIteration(f.selectedDefinition(),o))}),vw(2),Rw(3,"transloco"),Kc()();}if(t&2){let e=s.$implicit;gI(),ah("data-testid","loop-iteration-"+e.index),gI(),nl(" ",Pw(3,2,"jobs.detail.loopIteration",xw(5,pe,e.index+1))," ");}}function Te(t,s){t&1&&(_i(0,"li",12),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),Ph(Ow(2,1,"jobs.detail.noIterations")));}function Ie(t,s){if(t&1&&(_i(0,"p",18),vw(1),Kc()),t&2){let e=VD(4);gI(),Ph(e.selectedExecution().error);}}function je(t,s){if(t&1&&(_i(0,"div",13)(1,"h3"),vw(2),Kc(),bD(3,we,3,3,"p",16),_i(4,"ul",17),ND(5,ke,4,7,"li",null,he,false,Te,3,3,"li",12),Kc(),bD(8,Ie,2,1,"p",18),Kc()),t&2){let e=VD(3);gI(2),Ph(e.selectedDefinition()?.name),gI(),_D(e.isRunning(e.selectedExecution())?3:-1),gI(2),xD(e.selectedExecution().iterations??Nw(4,ue)),gI(3),_D(e.selectedExecution().error?8:-1);}}function Me(t,s){t&1&&(_i(0,"p",16),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),nl(" ",Ow(2,1,"jobs.detail.inProgress.sub_workflow")," "));}function De(t,s){if(t&1&&(_i(0,"p",18),vw(1),Kc()),t&2){let e=VD(4);gI(),Ph(e.selectedExecution().error);}}function Je(t,s){if(t&1&&(_i(0,"div",14)(1,"h3"),vw(2),Kc(),bD(3,Me,3,3,"p",16),lh(4,"app-job-status-table",20),bD(5,De,2,1,"p",18),Kc()),t&2){let e=VD(3);gI(2),Ph(e.selectedDefinition()?.name),gI(),_D(e.isRunning(e.selectedExecution())?3:-1),gI(),ch("jobIds",e.selectedExecution().childJobIds??Nw(4,ue)),gI(),_D(e.selectedExecution().error?5:-1);}}function Pe(t,s){if(t&1&&(_i(0,"li"),vw(1),Kc()),t&2){let e=s.$implicit;gI(),Ph(e);}}function Ne(t,s){t&1&&(_i(0,"li",12),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),Ph(Ow(2,1,"jobs.resume.noQuestions")));}function We(t,s){if(t&1&&(_i(0,"p",25),vw(1),Kc()),t&2){let e=VD(5);gI(),Ph(e.resumeParseError());}}function ze(t,s){if(t&1){let e=LD();_i(0,"section",21)(1,"h4"),vw(2),Rw(3,"transloco"),Kc(),_i(4,"ul",23),ND(5,Pe,2,1,"li",null,MD,false,Ne,3,3,"li",12),Kc(),_i(8,"label"),vw(9),Rw(10,"transloco"),_i(11,"textarea",24),gh("input",function(o){Pu(e);let f=VD(4);return Lu(f.onResumeTextInput(o))}),Kc()(),bD(12,We,2,1,"p",25),_i(13,"button",26),gh("click",function(){Pu(e);let o=VD(4);return Lu(o.resumeSubmit.emit())}),vw(14),Rw(15,"transloco"),Kc()();}if(t&2){let e=VD(4);gI(2),Ph(Ow(3,7,"jobs.resume.heading")),gI(3),xD(e.waitingPrompts()),gI(4),nl(" ",Ow(10,9,"jobs.resume.jsonLabel")," "),gI(2),ch("value",e.resumeText()),gI(),_D(e.resumeParseError()?12:-1),gI(),ch("disabled",e.resuming()),gI(),nl(" ",Ow(15,11,e.resuming()?"jobs.resume.submitting":"jobs.resume.button")," ");}}function Re(t,s){if(t&1&&(_i(0,"pre",22),vw(1),Kc()),t&2){let e=VD(4);gI(),Ph(e.formatOutput(e.selectedExecution()));}}function Oe(t,s){if(t&1&&(_i(0,"div",15)(1,"h3"),vw(2),Kc(),bD(3,ze,16,13,"section",21)(4,Re,2,1,"pre",22),Kc()),t&2){let e=VD(3);gI(2),Ph(e.selectedDefinition()?.name),gI(),_D(e.showResume()?3:4);}}function Ve(t,s){if(t&1&&(_i(0,"p",16),vw(1),Rw(2,"transloco"),Kc()),t&2){let e=VD(4);gI(),nl(" ",Ow(2,1,"jobs.detail.inProgress."+e.selectedExecution().type)," ");}}function Be(t,s){if(t&1){let e=LD();_i(0,"button",29),gh("click",function(){Pu(e);let o=VD(5);return Lu(o.retryStep.emit())}),vw(1),Rw(2,"transloco"),Kc();}if(t&2){let e=VD(5);ch("disabled",e.retryingStep()),gI(),nl(" ",Ow(2,2,e.retryingStep()?"jobs.detail.retrying":"jobs.detail.retryStep")," ");}}function Fe(t,s){if(t&1&&(_i(0,"p",27),vw(1),Kc(),bD(2,Be,3,4,"button",28)),t&2){let e=VD(4);gI(),Ph(e.selectedExecution().error),gI(),_D(e.showRetryStep()?2:-1);}}function Ae(t,s){if(t&1&&(_i(0,"pre",22),vw(1),Kc()),t&2){let e=VD(4);gI(),Ph(e.formatOutput(e.selectedExecution()));}}function Le(t,s){if(t&1&&(_i(0,"div")(1,"h3"),vw(2),Kc(),bD(3,Ve,3,3,"p",16)(4,Fe,3,2)(5,Ae,2,1,"pre",22),Kc()),t&2){let e=VD(3);ah("data-testid",e.selectedExecution().type+"-view"),gI(2),Ph(e.selectedDefinition()?.name),gI(),_D(e.isRunning(e.selectedExecution())?3:e.selectedExecution().error||e.selectedExecution().status==="failed"?4:5);}}function $e(t,s){if(t&1&&bD(0,je,9,5,"div",13)(1,Je,6,5,"div",14)(2,Oe,5,2,"div",15)(3,Le,6,3,"div"),t&2){let e,i=VD(2);_D((e=i.selectedExecution().type)==="loop"?0:e==="sub_workflow"?1:e==="interaction"?2:3);}}function qe(t,s){if(t&1&&(_i(0,"aside",5)(1,"h3"),vw(2),Rw(3,"transloco"),Kc(),_i(4,"ul",6),ND(5,Ee,9,13,"li",null,ge),Kc()(),_i(7,"section",7),bD(8,ye,3,3,"p",8)(9,$e,4,1),Kc()),t&2){let e=VD();gI(2),Ph(Ow(3,2,"jobs.detail.stepsHeading")),gI(3),xD(e.rows()),gI(3),_D(e.selectedExecution()?9:8);}}var me=(()=>{class t{constructor(){this.definitions=$0.required(),this.executions=$0.required(),this.job=$0.required(),this.selectedExecutionId=$0(null),this.currentExecutionId=$0(null),this.waitingEvent=$0(null),this.resumeText=$0(`{
|
|
2
|
+
|
|
3
|
+
}`),this.resumeParseError=$0(null),this.resuming=$0(false),this.canResume=$0(false),this.canRetryStep=$0(false),this.retryingStep=$0(false),this.selectExecution=B0(),this.resumeTextChange=B0(),this.resumeSubmit=B0(),this.retryStep=B0(),this.nestedIteration=qo(null),this.nestedLoopDefinition=qo(null),this.nestedSelectedId=qo(null),this.rows=Hw(()=>o$1(this.definitions(),this.executions())),this.selectedExecution=Hw(()=>{let e=this.selectedExecutionId();return e?this.executions().find(i=>i.id===e)??null:null}),this.selectedDefinition=Hw(()=>{let e=this.selectedExecution();return e?this.definitions().find(i=>i.id===e.stepDefinitionId)??null:null}),this.waitingPrompts=Hw(()=>{let e=this.waitingEvent();return e?e.questions.length>0?e.questions:e.data!=null?[JSON.stringify(e.data,null,2)]:[]:[]}),this.showResume=Hw(()=>{if(!this.canResume())return false;let e=this.selectedExecution(),i=this.currentExecutionId();return e!=null&&e.id===i&&e.type==="interaction"&&this.job().status==="waiting_for_human"}),this.showRetryStep=Hw(()=>{if(!this.canRetryStep())return false;let e=this.selectedExecution();return !e||e.status!=="failed"||e.id!==this.currentExecutionId()?false:l(e.type)});}stepStatusKey(e){return `jobs.stepStatus.${e}`}stepTypeKey(e){return `step-list.stepType.${e}`}onStepClick(e){!e.reached||!e.execution||(this.nestedIteration.set(null),this.nestedLoopDefinition.set(null),this.selectExecution.emit(e.execution.id));}openIteration(e,i){this.nestedLoopDefinition.set(e),this.nestedIteration.set(i);let o=i.stepExecutions[0];this.nestedSelectedId.set(o?.id??null);}closeIteration(){this.nestedIteration.set(null),this.nestedLoopDefinition.set(null),this.nestedSelectedId.set(null);}onNestedSelect(e){this.nestedSelectedId.set(e);}onResumeTextInput(e){this.resumeTextChange.emit(e.target.value);}formatOutput(e){return e.error?e.error:e.output===void 0?"":typeof e.output=="string"?e.output:JSON.stringify(e.output,null,2)}isRunning(e){return e?.status==="running"}isSelected(e){return e.execution!=null&&e.execution.id===this.selectedExecutionId()}isCurrent(e){return e.execution!=null&&e.execution.id===this.currentExecutionId()}static{this.\u0275fac=function(i){return new(i||t)};}static{this.\u0275cmp=QE({type:t,selectors:[["app-job-step-workspace"]],inputs:{definitions:[1,"definitions"],executions:[1,"executions"],job:[1,"job"],selectedExecutionId:[1,"selectedExecutionId"],currentExecutionId:[1,"currentExecutionId"],waitingEvent:[1,"waitingEvent"],resumeText:[1,"resumeText"],resumeParseError:[1,"resumeParseError"],resuming:[1,"resuming"],canResume:[1,"canResume"],canRetryStep:[1,"canRetryStep"],retryingStep:[1,"retryingStep"]},outputs:{selectExecution:"selectExecution",resumeTextChange:"resumeTextChange",resumeSubmit:"resumeSubmit",retryStep:"retryStep"},decls:3,vars:1,consts:[["data-testid","job-step-workspace",1,"workspace"],["data-testid","loop-drill-in",1,"nested"],["nz-button","","nzType","link","type","button","data-testid","loop-back",3,"click"],[1,"nested-label"],[3,"selectExecution","retryStep","definitions","executions","job","selectedExecutionId","currentExecutionId","waitingEvent","canResume","canRetryStep","retryingStep"],["data-testid","step-side-panel",1,"side-panel"],[1,"step-list"],["data-testid","step-main-area",1,"main-area"],["data-testid","no-step-selected",1,"muted"],["type","button",1,"step-button",3,"click","disabled"],[1,"step-name"],[1,"step-meta"],[1,"muted"],["data-testid","loop-view"],["data-testid","sub-workflow-view"],["data-testid","interaction-view"],["data-testid","step-in-progress"],["data-testid","loop-iterations",1,"iteration-list"],[1,"error"],["nz-button","","nzType","link","type","button",3,"click"],[3,"jobIds"],["data-testid","resume-form",1,"resume"],["data-testid","step-output"],["data-testid","waiting-questions"],["data-testid","resume-json","rows","8",3,"input","value"],["data-testid","resume-parse-error",1,"error"],["nz-button","","nzType","primary","type","button","data-testid","resume-button",3,"click","disabled"],["data-testid","step-error",1,"error"],["nz-button","","nzType","primary","type","button","data-testid","retry-step",3,"disabled"],["nz-button","","nzType","primary","type","button","data-testid","retry-step",3,"click","disabled"]],template:function(i,o){if(i&1&&(_i(0,"div",0),bD(1,Se,8,18,"div",1)(2,qe,10,4),Kc()),i&2){let f;gI(),_D((f=o.nestedIteration())?1:2,f);}},dependencies:[t,Mi,dd,zc,t7,y7,W,I,Bt,Kt],styles:[".workspace[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(14rem,18rem) 1fr;gap:1rem;align-items:start;min-height:20rem}.nested[_ngcontent-%COMP%]{grid-column:1 / -1}.nested-label[_ngcontent-%COMP%]{margin:0 0 .75rem;color:#57534e}.side-panel[_ngcontent-%COMP%]{border:1px solid #d6d3d1;background:#ffffffbf;padding:.75rem}.side-panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 .5rem;font-size:1rem}.step-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.step-button[_ngcontent-%COMP%]{width:100%;text-align:left;font:inherit;padding:.45rem .55rem;border:1px solid transparent;background:transparent;cursor:pointer;display:flex;flex-direction:column;gap:.2rem}.step-button[_ngcontent-%COMP%]:hover:not(:disabled){background:#f5f5f4}.step-button.selected[_ngcontent-%COMP%]{border-color:#a8a29e;background:#fafaf9}.step-button.current[_ngcontent-%COMP%]{box-shadow:inset 3px 0 #0c0a09}.step-button[_ngcontent-%COMP%]:disabled, .step-button.unreached[_ngcontent-%COMP%]{opacity:.55;cursor:not-allowed}.step-name[_ngcontent-%COMP%]{font-weight:600}.step-meta[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;font-size:.8rem}.main-area[_ngcontent-%COMP%]{border:1px solid #d6d3d1;background:#ffffffd9;padding:1rem;min-height:16rem}.main-area[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin-top:0}.muted[_ngcontent-%COMP%]{color:#78716c}.error[_ngcontent-%COMP%]{color:#9f1239}[data-testid=retry-step][_ngcontent-%COMP%]{margin-top:.5rem}pre[_ngcontent-%COMP%]{overflow:auto;padding:.75rem;background:#f5f5f4;border:1px solid #d6d3d1;font-size:.85rem}.iteration-list[_ngcontent-%COMP%]{padding-left:1.1rem}.resume[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;margin:.75rem 0}.resume[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{font:inherit;font-family:ui-monospace,Consolas,monospace;padding:.4rem .5rem;border:1px solid #a8a29e}@media(max-width:48rem){.workspace[_ngcontent-%COMP%]{grid-template-columns:1fr}}"]});}}return t})();function Ke(t,s){t&1&&(_i(0,"p",1),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),Ph(Ow(2,1,"common.loading")));}function Qe(t,s){if(t&1&&(_i(0,"p",2),vw(1),Kc()),t&2){let e=VD();gI(),Ph(e.loadError());}}function He(t,s){if(t&1&&(vw(0),Rw(1,"transloco")),t&2){let e=VD(2);Lh(" ",Ow(1,2,"jobs.detail.worktreeDeleted")," ",e.worktreeDeletedAt," ");}}function Ue(t,s){if(t&1&&vw(0),t&2){let e=VD(3);nl(" (",e.branch,") ");}}function Ge(t,s){if(t&1&&(vw(0),Rw(1,"transloco"),bD(2,Ue,1,1)),t&2){let e=VD(2);Lh(" ",Ow(1,3,"jobs.detail.worktree")," ",e.worktreePath," "),gI(2),_D(e.branch?2:-1);}}function Xe(t,s){if(t&1&&(_i(0,"p",10),bD(1,He,2,4)(2,Ge,3,5),Kc()),t&2){let e=VD();gI(),_D(e.worktreeDeletedAt?1:2);}}function Ye(t,s){if(t&1){let e=LD();_i(0,"button",19),gh("click",function(){Pu(e);let o=VD(2);return Lu(o.cancelJob())}),vw(1),Rw(2,"transloco"),Kc();}if(t&2){let e=VD(2);ch("disabled",e.cancelling()),gI(),nl(" ",Ow(2,2,e.cancelling()?"jobs.detail.cancelling":"jobs.detail.cancel")," ");}}function Ze(t,s){if(t&1){let e=LD();_i(0,"button",20),gh("click",function(){Pu(e);let o=VD(2);return Lu(o.retryWorkflow())}),vw(1),Rw(2,"transloco"),Kc();}if(t&2){let e=VD(2);ch("disabled",e.retryingWorkflow()),gI(),nl(" ",Ow(2,2,e.retryingWorkflow()?"jobs.detail.retrying":"jobs.detail.retryWorkflow")," ");}}function et(t,s){if(t&1){let e=LD();_i(0,"button",21),gh("click",function(){Pu(e);let o=VD(2);return Lu(o.jumpToCurrent())}),vw(1),Rw(2,"transloco"),Kc();}t&2&&(gI(),nl(" ",Ow(2,1,"jobs.detail.jumpToCurrent")," "));}function tt(t,s){if(t&1&&(_i(0,"p",15),vw(1),Kc()),t&2){let e=VD(2);gI(),Ph(e.actionError());}}function it(t,s){t&1&&(lh(0,"nz-alert",16),Rw(1,"transloco")),t&2&&ch("nzMessage",Ow(1,1,"jobs.detail.queued"));}function nt(t,s){if(t&1){let e=LD();_i(0,"app-job-step-workspace",22),gh("selectExecution",function(o){Pu(e);let f=VD(2);return Lu(f.onSelectExecution(o))})("resumeTextChange",function(o){Pu(e);let f=VD(2);return Lu(f.setResumeText(o))})("resumeSubmit",function(){Pu(e);let o=VD(2);return Lu(o.submitResume())})("retryStep",function(){Pu(e);let o=VD(2);return Lu(o.retryThisStep())}),Kc();}if(t&2){let e=VD(),i=VD();ch("definitions",s.steps)("executions",e.stepHistory)("job",e)("selectedExecutionId",i.viewedExecutionId())("currentExecutionId",i.blockingExecutionId()??i.currentStep()?.id??null)("waitingEvent",i.waitingEvent())("resumeText",i.resumeText())("resumeParseError",i.resumeParseError())("resuming",i.resuming())("canResume",true)("canRetryStep",e.status==="failed")("retryingStep",i.retryingStep());}}function ot(t,s){t&1&&(_i(0,"p",18),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),nl(" ",Ow(2,1,"jobs.detail.workflowMissing")," "));}function rt(t,s){if(t&1&&(_i(0,"header",3)(1,"div")(2,"a",4),vw(3),Rw(4,"transloco"),Kc(),_i(5,"h1",5),vw(6),Kc(),_i(7,"p",6)(8,"span",7),vw(9),Kc(),vw(10," \xB7 "),_i(11,"nz-tag",8),vw(12),Rw(13,"transloco"),Kc(),vw(14," \xB7 "),_i(15,"span",9),vw(16),Kc()(),bD(17,Xe,3,1,"p",10),Kc(),_i(18,"div",11),bD(19,Ye,3,4,"button",12),bD(20,Ze,3,4,"button",13),bD(21,et,3,3,"button",14),Kc()(),bD(22,tt,2,1,"p",15),bD(23,it,2,3,"nz-alert",16)(24,nt,1,12,"app-job-step-workspace",17)(25,ot,3,3,"p",18)),t&2){let e,i=s,o=VD();gI(3),Ph(Ow(4,11,"jobs.detail.backToStart")),gI(3),Ph(i.id),gI(3),Ph(i.workflowId),gI(3),Ph(Ow(13,13,o.statusKey(i.status))),gI(4),Ph(o.subjectText()),gI(),_D(i.worktreePath?17:-1),gI(2),_D(o.isTerminalStatus(i.status)?-1:19),gI(),_D(i.status==="failed"?20:-1),gI(),_D(o.showJumpToCurrent()?21:-1),gI(),_D(o.actionError()?22:-1),gI(),_D(o.showQueued()?23:(e=o.workflow())?24:25,e);}}var Mt=(()=>{class t{constructor(){this.route=C(ae),this.router=C(Ie$1),this.jobsApi=C($),this.eventsService=C(f),this.transloco=C(Ve$1),this.destroyRef=C(at),this.job=qo(null),this.workflow=qo(null),this.loading=qo(true),this.loadError=qo(null),this.actionError=qo(null),this.eventStream=qo(null),this.eventsSnapshot=qo([]),this.autoFollow=qo(true),this.viewedExecutionId=qo(null),this.resumeText=qo(`{
|
|
4
|
+
|
|
5
|
+
}`),this.resumeParseError=qo(null),this.resuming=qo(false),this.retryingWorkflow=qo(false),this.retryingStep=qo(false),this.cancelling=qo(false),this.currentStep=Hw(()=>{let e=this.job();return e?c(e):null}),this.showQueued=Hw(()=>{let e=this.job();return e!=null&&c(e)==null}),this.showJumpToCurrent=Hw(()=>{let e=this.currentStep();return e?this.viewedExecutionId()!==e.id:false}),this.eventLog=Hw(()=>this.eventStream()?.events()??this.eventsSnapshot()),this.waitingEvent=Hw(()=>{let e=this.eventLog();for(let i=e.length-1;i>=0;i-=1){let o=e[i];if(o?.type==="waiting_for_human")return o}return null}),this.blockingExecutionId=Hw(()=>this.job()?.currentStepExecutionId??null),this.destroyRef.onDestroy(()=>this.closeStream()),this.route.paramMap.pipe(ue$1(this.destroyRef)).subscribe(e=>{let i=e.get("id");if(!i){this.loading.set(false),this.loadError.set(this.transloco.translate("jobs.detail.loadFailed"));return}this.load(i);}),rd(()=>{let e=this.eventStream();if(!e)return;let i=e.latest();i&&Bw(()=>{(i.type==="step_started"||i.type==="step_completed"||i.type==="step_failed"||i.type==="waiting_for_human"||i.type==="waiting_for_children"||i.type==="human_answered"||i.type==="job_completed"||i.type==="job_failed"||i.type==="job_cancelled")&&this.refreshJob(i.jobId),(i.type==="job_completed"||i.type==="job_failed"||i.type==="job_cancelled")&&this.closeStream();});}),rd(()=>{let e=this.currentStep();this.autoFollow()&&Bw(()=>{this.viewedExecutionId.set(e?.id??null);});});}statusKey(e){return `jobs.status.${e}`}isTerminalStatus(e){return u(e)}subjectText(){return f$1(this.job()?.subjectContext)??"\u2014"}onSelectExecution(e){this.autoFollow.set(false),this.viewedExecutionId.set(e);}jumpToCurrent(){this.autoFollow.set(true),this.viewedExecutionId.set(this.currentStep()?.id??null);}setResumeText(e){this.resumeText.set(e),this.resumeParseError.set(null);}submitResume(){let e=this.job();if(!e)return;let i;try{i=JSON.parse(this.resumeText());}catch(o){this.resumeParseError.set(o instanceof Error?o.message:this.transloco.translate("jobs.resume.invalidJson"));return}this.resumeParseError.set(null),this.actionError.set(null),this.resuming.set(true),this.jobsApi.resume(e.id,i).subscribe({next:o=>{this.resuming.set(false),this.applyJob(o),u(o.status)&&this.closeStream();},error:o=>{this.resuming.set(false),this.actionError.set(this.errorMessage(o,this.transloco.translate("jobs.errors.resumeFailed")));}});}retryWorkflow(){let e=this.job();!e||e.status!=="failed"||this.retryingWorkflow()||(this.actionError.set(null),this.retryingWorkflow.set(true),this.jobsApi.retry(e.id).subscribe({next:i=>{this.retryingWorkflow.set(false),this.router.navigate(["/jobs",i.id]);},error:i=>{this.retryingWorkflow.set(false),this.actionError.set(this.errorMessage(i,this.transloco.translate("jobs.errors.retryFailed")));}}));}retryThisStep(){let e=this.job();!e||e.status!=="failed"||this.retryingStep()||(this.actionError.set(null),this.retryingStep.set(true),this.jobsApi.retryStep(e.id).subscribe({next:i=>{this.retryingStep.set(false),this.applyJob(i),u(i.status)?this.closeStream():(this.closeStream(),this.eventStream.set(this.eventsService.connect({jobId:i.id})));},error:i=>{this.retryingStep.set(false),this.actionError.set(this.errorMessage(i,this.transloco.translate("jobs.errors.retryStepFailed")));}}));}cancelJob(){let e=this.job();!e||u(e.status)||this.cancelling()||(this.actionError.set(null),this.cancelling.set(true),this.jobsApi.cancel(e.id).subscribe({next:i=>{this.cancelling.set(false),this.applyJob(i),u(i.status)&&this.closeStream();},error:i=>{this.cancelling.set(false),this.actionError.set(this.errorMessage(i,this.transloco.translate("jobs.errors.cancelFailed")));}}));}load(e){this.loading.set(true),this.loadError.set(null),this.actionError.set(null),this.autoFollow.set(true),this.viewedExecutionId.set(null),this.resumeText.set(`{
|
|
6
|
+
|
|
7
|
+
}`),this.resumeParseError.set(null),this.retryingWorkflow.set(false),this.retryingStep.set(false),this.cancelling.set(false),this.closeStream(),this.eventsSnapshot.set([]),this.jobsApi.get(e).pipe(ue$1(this.destroyRef)).subscribe({next:i=>{this.applyJob(i),this.loading.set(false),u(i.status)||this.eventStream.set(this.eventsService.connect({jobId:i.id}));},error:i=>{this.loading.set(false),this.loadError.set(this.errorMessage(i,this.transloco.translate("jobs.detail.loadFailed")));}});}applyJob(e){this.job.set(e),this.workflow.set(e.workflowSnapshot??null),this.autoFollow()&&this.viewedExecutionId.set(c(e)?.id??null);}refreshJob(e){this.jobsApi.get(e).subscribe({next:i=>this.applyJob(i),error:i=>{this.actionError.set(this.errorMessage(i,this.transloco.translate("jobs.errors.refreshFailed")));}});}closeStream(){let e=this.eventStream();e&&(this.eventsSnapshot.set(e.events()),e.close(),this.eventStream.set(null));}errorMessage(e,i){return e instanceof o||e instanceof Error?e.message:i}static{this.\u0275fac=function(i){return new(i||t)};}static{this.\u0275cmp=QE({type:t,selectors:[["app-job-detail"]],decls:4,vars:1,consts:[["data-testid","job-detail",1,"detail-page"],["data-testid","loading"],["data-testid","load-error",1,"error"],[1,"header"],["routerLink","/jobs"],["data-testid","job-id"],[1,"meta"],["data-testid","job-workflow"],["data-testid","job-status"],["data-testid","job-subject"],["data-testid","job-worktree",1,"meta"],[1,"header-actions"],["nz-button","","nzDanger","","type","button","data-testid","cancel-job",3,"disabled"],["nz-button","","nzType","primary","type","button","data-testid","retry-workflow",3,"disabled"],["nz-button","","type","button","data-testid","jump-to-current"],["data-testid","action-error",1,"error"],["data-testid","queued-message","nzType","info",3,"nzMessage"],[3,"definitions","executions","job","selectedExecutionId","currentExecutionId","waitingEvent","resumeText","resumeParseError","resuming","canResume","canRetryStep","retryingStep"],["data-testid","missing-workflow",1,"muted"],["nz-button","","nzDanger","","type","button","data-testid","cancel-job",3,"click","disabled"],["nz-button","","nzType","primary","type","button","data-testid","retry-workflow",3,"click","disabled"],["nz-button","","type","button","data-testid","jump-to-current",3,"click"],[3,"selectExecution","resumeTextChange","resumeSubmit","retryStep","definitions","executions","job","selectedExecutionId","currentExecutionId","waitingEvent","resumeText","resumeParseError","resuming","canResume","canRetryStep","retryingStep"]],template:function(i,o){if(i&1&&(_i(0,"main",0),bD(1,Ke,3,3,"p",1)(2,Qe,2,1,"p",2)(3,rt,26,15),Kc()),i&2){let f;gI(),_D(o.loading()?1:o.loadError()?2:(f=o.job())?3:-1,f);}},dependencies:[Mi,Ln,Gn,un,dd,zc,t7,y7,W,I,me,Kt],styles:[".detail-page[_ngcontent-%COMP%]{max-width:72rem;margin:0 auto;padding:1.25rem 1.5rem 3rem;display:flex;flex-direction:column;gap:1rem}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.header-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:1.35rem;word-break:break-all}.meta[_ngcontent-%COMP%]{margin:.35rem 0 0;color:#57534e;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.error[_ngcontent-%COMP%]{color:#9f1239}.muted[_ngcontent-%COMP%]{color:#78716c}"]});}}return t})();export{Mt as JobDetailComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {T}from'./chunk-CqGGDoIh.js';import {T as Tx,e as ey}from'./chunk-dUlsh7QS.js';import {a as ai,z}from'./chunk-DlsGU_Dk.js';import {C,a as ae,T as Ie,ai as u,b as at,V as Ve,aS as O,aT as de,al as Se,q as qo,H as Hw,u as ue$1,r,o,Q as QE,M as Mi,n as n8,am as S4,J as J6,k as k3,L as Ln,d as dd,z as zc,c as t7,Z as y7,X as Xb,e as V5,D as D5,K as Kt,f as _i,v as vw,g as Kc,R as Rw,h as gh,m as bD,p as gI,P as Ph,O as Ow,x as ch,w as nl,B as _D,E as VD,F as LD,j as oE,N as ND,y as sE,A as xD,S as SD,l as lh,G as Pu,I as Lu}from'./main-HV5WDK2F.js';import {a as ae$1,l as le}from'./chunk-Vz5kd858.js';import'./chunk-DWLHaSHg.js';import {U}from'./chunk-DUR5PalP.js';import'./chunk-C2eCmH-q.js';var me=(t,s)=>s.id;function ue(t,s){t&1&&(_i(0,"p",5),vw(1),Rw(2,"transloco"),Kc()),t&2&&(gI(),Ph(Ow(2,1,"common.loading")));}function he(t,s){if(t&1&&(_i(0,"p",6),vw(1),Kc()),t&2){let e=VD();gI(),Ph(e.loadError());}}function fe(t,s){if(t&1&&(_i(0,"li"),vw(1),Kc()),t&2){let e=s.$implicit;gI(),Ph(e);}}function ge(t,s){if(t&1&&(_i(0,"section",7)(1,"h2"),vw(2),Rw(3,"transloco"),Kc(),_i(4,"ul"),ND(5,fe,2,1,"li",null,SD),Kc()()),t&2){let e=VD(2);gI(2),Ph(Ow(3,1,"shortcuts.editor.validation")),gI(3),xD(e.validationErrors());}}function _e(t,s){if(t&1&&lh(0,"nz-option",11),t&2){let e=s.$implicit;ch("nzValue",e.id)("nzLabel",e.name);}}function we(t,s){if(t&1){let e=LD();_i(0,"app-workflow-input-form",13),gh("valuesChange",function(i){Pu(e);let u=VD(2);return Lu(u.setInputValues(i))}),Kc();}if(t&2){let e=VD(2);ch("fields",s.inputSchema)("values",e.inputValues());}}function ve(t,s){if(t&1){let e=LD();bD(0,ge,7,3,"section",7),_i(1,"label",8)(2,"span"),vw(3),Rw(4,"transloco"),Kc(),_i(5,"input",9),gh("ngModelChange",function(i){Pu(e);let u=VD();return Lu(u.name.set(i))}),Kc(),oE(),Kc(),_i(6,"div",8)(7,"span"),vw(8),Rw(9,"transloco"),Kc(),_i(10,"nz-select",10),gh("ngModelChange",function(i){Pu(e);let u=VD();return Lu(u.onWorkflowChange(i))}),ND(11,_e,1,2,"nz-option",11,me),Kc(),oE(),Kc(),bD(13,we,1,2,"app-workflow-input-form",12);}if(t&2){let e,o=VD();_D(o.validationErrors().length>0?0:-1),gI(3),Ph(Ow(4,6,"shortcuts.editor.name")),gI(2),ch("ngModel",o.name()),sE(),gI(3),Ph(Ow(9,8,"shortcuts.editor.workflow")),gI(2),ch("ngModel",o.workflowId()),sE(),gI(),xD(o.eligibleWorkflows()),gI(2),_D((e=o.selectedWorkflow())?13:-1,e);}}function Ce(t){let s=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),e=crypto.randomUUID().slice(0,8);return s.length>0?`sc-${s}-${e}`:`sc-${e}`}var He=(()=>{class t{constructor(){this.route=C(ae),this.router=C(Ie),this.shortcutsApi=C(u),this.workflowsApi=C(U),this.message=C(Tx),this.destroyRef=C(at),this.transloco=C(Ve),this.language=C(O),this.routeId=de(this.route.paramMap.pipe(Se(e=>e.get("id"))),{initialValue:this.route.snapshot.paramMap.get("id")}),this.name=qo(""),this.workflowId=qo(""),this.workflows=qo([]),this.inputValues=qo({}),this.lastJobId=qo(void 0),this.loadError=qo(null),this.validationErrors=qo([]),this.saving=qo(false),this.loading=qo(true),this.isNew=Hw(()=>!this.routeId()),this.pageTitle=Hw(()=>(this.language.currentLang(),this.isNew()?this.transloco.translate("shortcuts.editor.titleNew"):this.transloco.translate("shortcuts.editor.titleEdit",{id:this.routeId()}))),this.eligibleWorkflows=Hw(()=>this.workflows().filter(e=>e.appliesTo==="none"&&e.subjectHandling==="per-subject")),this.selectedWorkflow=Hw(()=>this.eligibleWorkflows().find(e=>e.id===this.workflowId())??null),this.workflowsApi.list().pipe(ue$1(this.destroyRef)).subscribe({next:e=>this.workflows.set(e),error:e=>{this.workflows.set([]),this.message.error(this.errorMessage(e,this.transloco.translate("shortcuts.editor.loadFailed")));}}),this.route.paramMap.pipe(ue$1(this.destroyRef)).subscribe(e=>{let o=e.get("id");if(this.validationErrors.set([]),this.loadError.set(null),!o){this.name.set(""),this.workflowId.set(""),this.inputValues.set({}),this.lastJobId.set(void 0),this.loading.set(false);return}this.loading.set(true),this.shortcutsApi.get(o).subscribe({next:i=>{this.name.set(i.name),this.workflowId.set(i.workflowId),this.inputValues.set(i.inputValues),this.lastJobId.set(i.lastJobId),this.loading.set(false);},error:i=>{this.loading.set(false),this.loadError.set(this.errorMessage(i,this.transloco.translate("shortcuts.editor.loadFailed")));}});});}onWorkflowChange(e){this.workflowId.set(e);let o=this.eligibleWorkflows().find(i=>i.id===e);this.inputValues.set(ae$1(o?.inputSchema??[]));}setInputValues(e){this.inputValues.set(e);}save(){let e=this.routeId(),o=r({id:e??Ce(this.name()),name:this.name().trim(),workflowId:this.workflowId(),inputValues:this.inputValues()},this.lastJobId()?{lastJobId:this.lastJobId()}:{}),i=ey.safeParse(o);if(!i.success){this.validationErrors.set(T(i.error));return}this.validationErrors.set([]),this.saving.set(true),(this.isNew()||!e?this.shortcutsApi.create(i.data):this.shortcutsApi.update(e,i.data)).subscribe({next:M=>{this.saving.set(false),this.message.success(this.transloco.translate(this.isNew()?"shortcuts.editor.created":"shortcuts.editor.saved")),this.isNew()&&this.router.navigate(["/shortcuts",M.id,"edit"]);},error:M=>{this.saving.set(false),this.message.error(this.errorMessage(M,this.transloco.translate("shortcuts.editor.saveFailed")));}});}errorMessage(e,o$1){return e instanceof o||e instanceof Error?e.message:o$1}static{this.\u0275fac=function(o){return new(o||t)};}static{this.\u0275cmp=QE({type:t,selectors:[["app-shortcut-editor"]],decls:15,vars:10,consts:[["data-testid","shortcut-editor",1,"editor"],[1,"header"],[1,"header-actions"],["routerLink","/shortcuts"],["nz-button","","nzType","primary","type","button","data-testid","save-button",3,"click","nzLoading","disabled"],["data-testid","loading"],["data-testid","load-error",1,"error"],["data-testid","validation-errors",1,"errors"],[1,"field"],["nz-input","","data-testid","shortcut-name",3,"ngModelChange","ngModel"],["data-testid","shortcut-workflow",3,"ngModelChange","ngModel"],[3,"nzValue","nzLabel"],[3,"fields","values"],[3,"valuesChange","fields","values"]],template:function(o,i){o&1&&(_i(0,"main",0)(1,"header",1)(2,"div")(3,"h1"),vw(4),Kc()(),_i(5,"div",2)(6,"a",3),vw(7),Rw(8,"transloco"),Kc(),_i(9,"button",4),gh("click",function(){return i.save()}),vw(10),Rw(11,"transloco"),Kc()()(),bD(12,ue,3,3,"p",5)(13,he,2,1,"p",6)(14,ve,14,10),Kc()),o&2&&(gI(4),Ph(i.pageTitle()),gI(3),Ph(Ow(8,6,"shortcuts.editor.backToList")),gI(2),ch("nzLoading",i.saving())("disabled",i.loading()||!!i.loadError()),gI(),nl(" ",Ow(11,8,"common.save")," "),gI(2),_D(i.loading()?12:i.loadError()?13:14));},dependencies:[Mi,n8,S4,J6,k3,Ln,dd,zc,t7,y7,ai,z,Xb,V5,D5,le,Kt],styles:[".editor[_ngcontent-%COMP%]{max-width:40rem;margin:0 auto;padding:1.25rem 1.5rem 3rem;display:flex;flex-direction:column;gap:1rem}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.header-actions[_ngcontent-%COMP%]{display:flex;gap:.75rem;align-items:center}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;margin:.5rem 0}.field[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.85rem;color:#57534e}.errors[_ngcontent-%COMP%]{border:1px solid #fecdd3;background:#fff1f2;padding:.75rem 1rem}.errors[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 .35rem;font-size:1rem}.error[_ngcontent-%COMP%]{color:#9f1239}"]});}}return t})();export{He as ShortcutEditorComponent};
|