@knoflows/engine 0.1.0-alpha.8 → 0.1.0-beta.16

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 (109) hide show
  1. package/README.md +5 -10
  2. package/dist/engine.js +116 -139
  3. package/dist/migrations/20260917165450_baseline/migration.sql +127 -0
  4. package/dist/migrations/20260917165450_baseline/snapshot.json +1212 -0
  5. package/dist/migrations/20260918025930_context_files/migration.sql +7 -0
  6. package/dist/migrations/20260918025930_context_files/snapshot.json +1275 -0
  7. package/dist/migrations/20260918074816_large_kate_bishop/migration.sql +8 -0
  8. package/dist/migrations/20260918074816_large_kate_bishop/snapshot.json +1338 -0
  9. package/dist/migrations/20260919073531_tense_grey_gargoyle/migration.sql +1 -0
  10. package/dist/migrations/20260919073531_tense_grey_gargoyle/snapshot.json +1348 -0
  11. package/dist/migrations/20260919081637_fearless_warlock/migration.sql +1 -0
  12. package/dist/migrations/20260919081637_fearless_warlock/snapshot.json +1358 -0
  13. package/package.json +7 -5
  14. package/static/apple-touch-icon.png +0 -0
  15. package/static/assets/i18n/en.json +216 -12
  16. package/static/assets/i18n/es.json +216 -12
  17. package/static/chunk-9U0WIegY.js +1 -0
  18. package/static/chunk-B0kZCuEt.js +1 -0
  19. package/static/chunk-B2Xol2Un.js +1 -0
  20. package/static/chunk-B7WkIFy0.js +1 -0
  21. package/static/chunk-BW9BdLk-.js +1 -0
  22. package/static/chunk-Bgl02GNl.js +1 -0
  23. package/static/chunk-BhF-m2HP.js +70 -0
  24. package/static/chunk-BhTujCrk.js +1 -0
  25. package/static/chunk-Bu6_39Nh.js +1 -0
  26. package/static/chunk-C0HCwfa5.js +1 -0
  27. package/static/chunk-C2BVYtVN.js +66 -0
  28. package/static/chunk-C7h8oMzu.js +1 -0
  29. package/static/chunk-CRdEWPUM.js +1 -0
  30. package/static/chunk-CRv0PDB7.js +1 -0
  31. package/static/chunk-CecXf-CU.js +1 -0
  32. package/static/chunk-CenXuPs5.js +1 -0
  33. package/static/chunk-CeywzbyD.js +1 -0
  34. package/static/{chunk-Xv2Lx0k9.js → chunk-Cg2E0vnT.js} +1 -1
  35. package/static/chunk-CsQ_HDGC.js +1 -0
  36. package/static/chunk-D19C8Gcb.js +1 -0
  37. package/static/chunk-DGC4TkAL.js +1 -0
  38. package/static/chunk-DUkiyf7y.js +1 -0
  39. package/static/chunk-DYzSLsNo.js +1 -0
  40. package/static/chunk-DZJZYEZl.js +1 -0
  41. package/static/chunk-DfcFBVF4.js +1 -0
  42. package/static/chunk-DixyYfV_.js +1 -0
  43. package/static/chunk-Dp4H7MY0.js +1 -0
  44. package/static/chunk-DtQtDE8q.js +1 -0
  45. package/static/chunk-Dv5GyY6h.js +1 -0
  46. package/static/chunk-Edaw7VGW.js +1 -0
  47. package/static/chunk-FOJfn_t9.js +1 -0
  48. package/static/chunk-Fwpw-z7T.js +1 -0
  49. package/static/chunk-HUIPNwd9.js +1 -0
  50. package/static/chunk-NZ-CPWJ2.js +1 -0
  51. package/static/chunk-Th9whP36.js +1 -0
  52. package/static/chunk-bCuvpgQS.js +1 -0
  53. package/static/{chunk-DjiFAEo3.js → chunk-iE460Kz5.js} +1 -1
  54. package/static/chunk-p6dftaf8.js +5 -0
  55. package/static/chunk-yoe_30RI.js +1 -0
  56. package/static/chunk-z2vvQAle.js +1 -0
  57. package/static/favicon-16x16.png +0 -0
  58. package/static/favicon-32x32.png +0 -0
  59. package/static/favicon.ico +0 -0
  60. package/static/favicon.svg +12 -0
  61. package/static/icon-192.png +0 -0
  62. package/static/icon-512.png +0 -0
  63. package/static/index.html +30 -5
  64. package/static/main-CHQMTVIP.js +248 -0
  65. package/static/media/inter-latin-400-normal-55WT6UWF.woff2 +0 -0
  66. package/static/media/inter-latin-400-normal-FR5HOXA4.woff +0 -0
  67. package/static/media/inter-latin-500-normal-W62DVTXI.woff2 +0 -0
  68. package/static/media/inter-latin-500-normal-ZNGIZ2YB.woff +0 -0
  69. package/static/media/inter-latin-600-normal-R6Y2SZCR.woff2 +0 -0
  70. package/static/media/inter-latin-600-normal-ZYHV6QZT.woff +0 -0
  71. package/static/media/jetbrains-mono-latin-500-normal-ETEQEOVZ.woff +0 -0
  72. package/static/media/jetbrains-mono-latin-500-normal-V4XIP5OW.woff2 +0 -0
  73. package/static/media/space-grotesk-latin-500-normal-GESQWJQV.woff2 +0 -0
  74. package/static/media/space-grotesk-latin-500-normal-HV4TE4RA.woff +0 -0
  75. package/static/media/space-grotesk-latin-700-normal-6Z7GHSI6.woff +0 -0
  76. package/static/media/space-grotesk-latin-700-normal-I3MXRIUZ.woff2 +0 -0
  77. package/static/nz-theme-dark.css +1 -0
  78. package/static/nz-theme.css +1 -0
  79. package/static/styles-JGCTKGGH.css +1 -0
  80. package/static/chunk-BEvII7Hn.js +0 -1
  81. package/static/chunk-BIFLxIMS.js +0 -66
  82. package/static/chunk-BQgEbMSp.js +0 -1
  83. package/static/chunk-BYIP8zBR.js +0 -1
  84. package/static/chunk-BiLgez1m.js +0 -1
  85. package/static/chunk-BnnoOI-1.js +0 -1
  86. package/static/chunk-BrJS_1Y1.js +0 -1
  87. package/static/chunk-CB7iIlL9.js +0 -1
  88. package/static/chunk-CL0Sh0Qb.js +0 -1
  89. package/static/chunk-CNj32s8G.js +0 -1
  90. package/static/chunk-CQ708Y6F.js +0 -1
  91. package/static/chunk-CoKTfrti.js +0 -1
  92. package/static/chunk-Cuaj1Fgz.js +0 -1
  93. package/static/chunk-CxgNB2C8.js +0 -1
  94. package/static/chunk-DO1B2M6l.js +0 -1
  95. package/static/chunk-DTLDtzu5.js +0 -1
  96. package/static/chunk-Dc_LNQ-q.js +0 -1
  97. package/static/chunk-DflfYru0.js +0 -1
  98. package/static/chunk-Dqtz3Iow.js +0 -1
  99. package/static/chunk-DrlNmyyx.js +0 -7
  100. package/static/chunk-G2CzeazF.js +0 -1
  101. package/static/chunk-He--f9Sf.js +0 -1
  102. package/static/chunk-JcYd5MYJ.js +0 -5
  103. package/static/chunk-MRIst_Tv.js +0 -1
  104. package/static/chunk-bi3jOaJV.js +0 -1
  105. package/static/chunk-fPx6gQSM.js +0 -1
  106. package/static/chunk-g1iNEPSG.js +0 -1
  107. package/static/chunk-mmWflnUN.js +0 -1
  108. package/static/main-R7YQQZVK.js +0 -249
  109. package/static/styles-6MW3GE4V.css +0 -1
@@ -8,12 +8,88 @@
8
8
  "nav.settings": "Ajustes",
9
9
  "shell.jobs": "Trabajos",
10
10
  "shell.manage": "Administrar",
11
+ "shell.theme.toDark": "Cambiar a tema oscuro",
12
+ "shell.theme.toLight": "Cambiar a tema claro",
11
13
  "manage.tab.workflows": "Flujos",
12
14
  "manage.tab.views": "Vistas y atajos",
13
15
  "manage.tab.providers": "Proveedores",
16
+ "manage.tab.contextFiles": "Archivos de contexto",
17
+ "manage.tab.localRepositories": "Repositorios locales",
18
+ "manage.tab.worktrees": "Worktrees",
14
19
  "manage.tab.preferences": "Preferencias",
15
20
  "manage.preferences.title": "Preferencias",
16
21
  "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í.",
22
+ "context-files.title": "Archivos de contexto",
23
+ "context-files.selectTitle": "Seleccionar archivos de contexto",
24
+ "context-files.emptyState": "Aún no hay archivos de contexto. Añade uno para adjuntarlo a pasos de agente.",
25
+ "context-files.create": "Añadir archivo de contexto",
26
+ "context-files.edit": "Editar",
27
+ "context-files.delete": "Eliminar",
28
+ "context-files.deleteConfirm": "¿Eliminar este archivo de contexto?",
29
+ "context-files.column.name": "Nombre",
30
+ "context-files.column.tier": "Nivel",
31
+ "context-files.column.path": "Ruta",
32
+ "context-files.column.description": "Descripción",
33
+ "context-files.column.actions": "Acciones",
34
+ "context-files.form.name": "Nombre",
35
+ "context-files.form.tier": "Nivel",
36
+ "context-files.form.path": "Ruta",
37
+ "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.",
38
+ "context-files.form.description": "Descripción",
39
+ "context-files.form.save": "Guardar",
40
+ "context-files.form.cancel": "Cancelar",
41
+ "context-files.form.add": "Añadir",
42
+ "context-files.loadFailed": "No se pudieron cargar los archivos de contexto",
43
+ "context-files.saveFailed": "No se pudo guardar el archivo de contexto",
44
+ "context-files.deleteFailed": "No se pudo eliminar el archivo de contexto",
45
+ "context-files.tier.user": "Usuario",
46
+ "context-files.tier.organization": "Organización",
47
+ "context-files.tier.project": "Proyecto",
48
+ "local-repos.title": "Repositorios locales",
49
+ "local-repos.emptyState": "Aún no hay repositorios locales. Añade uno para que los flujos lo elijan al lanzar.",
50
+ "local-repos.create": "Añadir repositorio local",
51
+ "local-repos.edit": "Editar",
52
+ "local-repos.delete": "Eliminar",
53
+ "local-repos.deleteConfirm": "¿Eliminar este repositorio local?",
54
+ "local-repos.column.name": "Nombre",
55
+ "local-repos.column.localPath": "Ruta del repositorio",
56
+ "local-repos.column.worktreeBasePath": "Base de worktrees",
57
+ "local-repos.column.defaultBranch": "Rama por defecto",
58
+ "local-repos.column.actions": "Acciones",
59
+ "local-repos.form.name": "Nombre",
60
+ "local-repos.form.localPath": "Ruta del repositorio",
61
+ "local-repos.form.worktreeBasePath": "Ruta base de worktrees (opcional)",
62
+ "local-repos.form.worktreeBaseHint": "Por defecto es una carpeta hermana junto al repositorio. No anides worktrees dentro del propio repo.",
63
+ "local-repos.form.defaultBranch": "Rama por defecto (opcional)",
64
+ "local-repos.loadFailed": "No se pudieron cargar los repositorios locales",
65
+ "local-repos.saveFailed": "No se pudo guardar el repositorio local",
66
+ "local-repos.deleteFailed": "No se pudo eliminar el repositorio local",
67
+ "worktrees.title": "Worktrees",
68
+ "worktrees.emptyState": "No hay worktrees activos. Aparecen aquí cuando un trabajo crea uno.",
69
+ "worktrees.deleteSelected": "Eliminar worktrees seleccionados",
70
+ "worktrees.activeWarning": "Un worktree seleccionado pertenece a un trabajo que aún está en curso. Elimínalo solo cuando el trabajo termine.",
71
+ "worktrees.loadFailed": "No se pudieron cargar los worktrees",
72
+ "worktrees.deleteFailed": "No se pudieron eliminar los worktrees",
73
+ "worktrees.column.job": "Trabajo",
74
+ "worktrees.column.repository": "Repositorio",
75
+ "worktrees.column.branch": "Rama",
76
+ "worktrees.column.path": "Ruta",
77
+ "worktrees.column.status": "Estado",
78
+ "worktrees.column.created": "Creado",
79
+ "workflow-input.localRepositoryPlaceholder": "Selecciona un repositorio local",
80
+ "file-browser.emptySelection": "Ningún archivo seleccionado",
81
+ "file-browser.emptySelectionDirectory": "Ninguna carpeta seleccionada",
82
+ "file-browser.enterManually": "O escribir la ruta a mano",
83
+ "file-browser.browse": "Buscar un archivo",
84
+ "file-browser.browseDirectory": "Buscar una carpeta",
85
+ "file-browser.useFolder": "Usar esta carpeta",
86
+ "file-browser.loadFailed": "No se pudo listar este directorio",
87
+ "path-picker.browse": "Examinar...",
88
+ "path-picker.selectFile": "Seleccionar este archivo",
89
+ "path-picker.placeholderFile": "Ruta del archivo",
90
+ "path-picker.placeholderDirectory": "Ruta de la carpeta",
91
+ "path-picker.modalTitleFile": "Seleccionar un archivo",
92
+ "path-picker.modalTitleDirectory": "Seleccionar una carpeta",
17
93
  "manage.views.title": "Vistas y atajos",
18
94
  "manage.views.createView": "Crear una vista",
19
95
  "manage.views.createShortcut": "Crear un atajo",
@@ -36,6 +112,7 @@
36
112
  "shell.group.pullRequests": "Pull requests",
37
113
  "shell.group.documentation": "Documentación",
38
114
  "shell.shortcuts": "Atajos",
115
+ "shell.reorderHandle": "Reordenar",
39
116
  "shell.provider.jira": "Jira",
40
117
  "shell.provider.bitbucket": "Bitbucket",
41
118
  "shell.empty.title": "Bienvenido a knoflows",
@@ -47,10 +124,7 @@
47
124
  "common.cancel": "Cancelar",
48
125
  "common.loading": "Cargando…",
49
126
  "common.errorGeneric": "Algo salió mal",
50
- "jobs.title": "Knoflows — Iniciar un trabajo",
51
- "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.",
52
127
  "jobs.start.heading": "Iniciar un trabajo",
53
- "jobs.start.workflow": "Flujo de trabajo",
54
128
  "jobs.start.subjectId": "subjectId",
55
129
  "jobs.start.subjectIdPlaceholder": "p. ej. T-1",
56
130
  "jobs.start.button": "Iniciar",
@@ -66,22 +140,42 @@
66
140
  "jobs.status.cancelled": "Cancelado",
67
141
  "jobs.resume.heading": "Esperando intervención humana",
68
142
  "jobs.resume.noQuestions": "Aún no hay preguntas en el evento de espera.",
69
- "jobs.resume.jsonLabel": "Respuesta de reanudación (JSON)",
143
+ "jobs.resume.additionalComments": "Comentarios adicionales para el agente",
144
+ "jobs.resume.comment": "Comentario (opcional)",
145
+ "jobs.resume.approve": "Aprobar",
146
+ "jobs.resume.reject": "Rechazar",
70
147
  "jobs.resume.button": "Reanudar",
71
148
  "jobs.resume.submitting": "Enviando…",
72
- "jobs.resume.invalidJson": "El cuerpo de reanudación debe ser JSON válido",
149
+ "jobs.resume.commentReview.include": "Incluir",
150
+ "jobs.resume.commentReview.selectAll": "Seleccionar todas",
151
+ "jobs.resume.commentReview.selectNone": "Seleccionar ninguna",
152
+ "jobs.resume.commentReview.empty": "No hay sugerencias de comentarios para revisar.",
73
153
  "jobs.failed.fallback": "El trabajo falló",
74
154
  "jobs.errors.loadWorkflows": "No se pudieron cargar los flujos",
75
155
  "jobs.errors.subjectIdRequired": "subjectId es obligatorio para este flujo",
76
156
  "jobs.errors.startFailed": "No se pudo iniciar el trabajo",
77
157
  "jobs.errors.resumeFailed": "No se pudo reanudar el trabajo",
158
+ "jobs.errors.retryFailed": "No se pudo reintentar el trabajo",
159
+ "jobs.errors.retryStepFailed": "No se pudo reintentar el paso",
160
+ "jobs.errors.cancelFailed": "No se pudo cancelar el trabajo",
78
161
  "jobs.errors.refreshFailed": "No se pudo actualizar el trabajo",
79
162
  "jobs.detail.backToStart": "Volver a trabajos",
163
+ "jobs.detail.copyId": "Copiar id del trabajo",
80
164
  "jobs.detail.loadFailed": "No se pudo cargar el trabajo",
81
165
  "jobs.detail.workflowLoadFailed": "No se pudo cargar la definición del flujo para este trabajo",
82
166
  "jobs.detail.workflowMissing": "La definición del flujo no está disponible; no se puede mostrar la lista de pasos.",
83
167
  "jobs.detail.queued": "En cola — esperando que comience el primer paso.",
168
+ "jobs.detail.waitingForAgentSlot": "Esperando un hueco de agente disponible",
84
169
  "jobs.detail.jumpToCurrent": "Ir al paso actual",
170
+ "jobs.detail.retryWorkflow": "Reintentar todo el flujo",
171
+ "jobs.detail.retryStep": "Reintentar este paso",
172
+ "jobs.detail.reviewAndRetry": "Revisar y reintentar",
173
+ "jobs.detail.reviewAndRetryHint": "Los comentarios que ya se publicaron aparecen desmarcados. Volver a marcar uno lo publicará de nuevo.",
174
+ "jobs.detail.retrying": "Reintentando…",
175
+ "jobs.detail.cancel": "Cancelar",
176
+ "jobs.detail.cancelling": "Cancelando…",
177
+ "jobs.detail.worktree": "Worktree",
178
+ "jobs.detail.worktreeDeleted": "Worktree eliminado",
85
179
  "jobs.detail.stepsHeading": "Pasos",
86
180
  "jobs.detail.noStepSelected": "Selecciona un paso para ver su salida.",
87
181
  "jobs.detail.loopBack": "Volver al bucle",
@@ -94,7 +188,24 @@
94
188
  "jobs.detail.inProgress.loop": "El bucle se está ejecutando…",
95
189
  "jobs.detail.inProgress.sub_workflow": "Esperando trabajos hijos…",
96
190
  "jobs.detail.inProgress.interaction": "Esperando intervención humana…",
191
+ "jobs.detail.inProgress.extract": "Extrayendo…",
192
+ "jobs.detail.skipped.reason": "Este paso se omitió porque se cumplió su condición.",
193
+ "jobs.detail.skipped.predicate": "Predicado",
194
+ "jobs.detail.skipped.stepId": "Id del paso",
195
+ "jobs.detail.skipped.field": "Campo",
196
+ "jobs.detail.skipped.equalsValue": "Igual a",
197
+ "jobs.detail.skipped.fieldValue": "Valor evaluado",
198
+ "jobs.detail.outputView.markdown": "Markdown",
199
+ "jobs.detail.outputView.raw": "Original",
200
+ "jobs.extract.heading": "La extracción no coincidió",
201
+ "jobs.extract.sourceValue": "Valor de origen",
202
+ "jobs.extract.pattern": "Patrón",
203
+ "jobs.extract.valueLabel": "Valor",
204
+ "jobs.extract.provideValue": "Proporcionar valor",
205
+ "jobs.extract.continue": "Continuar",
206
+ "jobs.extract.cancel": "Cancelar",
97
207
  "jobs.stepStatus.pending": "Pendiente",
208
+ "jobs.stepStatus.queued": "En cola",
98
209
  "jobs.stepStatus.running": "En ejecución",
99
210
  "jobs.stepStatus.waiting_for_children": "Esperando hijos",
100
211
  "jobs.stepStatus.completed": "Completado",
@@ -105,22 +216,31 @@
105
216
  "jobs.table.column.subject": "Sujeto",
106
217
  "jobs.table.column.started": "Inicio",
107
218
  "jobs.table.column.completed": "Fin",
219
+ "jobs.table.column.actions": "Acciones",
220
+ "jobs.table.retry": "Reintentar",
221
+ "jobs.table.cancel": "Cancelar",
108
222
  "jobs.list.title": "Trabajos",
109
223
  "jobs.list.filterByStatus": "Filtrar por estado",
110
224
  "jobs.list.filterByWorkflow": "Filtrar por flujo",
111
225
  "jobs.list.showChildJobs": "Mostrar trabajos de lote e hijos",
112
- "jobs.list.startButton": "Iniciar trabajo",
113
226
  "jobs.list.empty": "Ningún trabajo coincide con estos filtros.",
114
227
  "jobs.list.loadFailed": "No se pudieron cargar los trabajos",
115
228
  "jobs.list.filterAll": "Todos",
116
229
  "jobs.list.running": "En ejecución",
230
+ "jobs.list.queued": "En cola",
117
231
  "jobs.list.history": "Historial",
118
232
  "jobs.list.runningEmpty": "No hay trabajos en ejecución.",
233
+ "jobs.list.queuedEmpty": "Ningún paso de agente está esperando un hueco.",
119
234
  "jobs.list.historyEmpty": "Ningún trabajo coincide con estos filtros.",
235
+ "jobs.list.queuedAgent": "Instancia de agente",
236
+ "jobs.list.queuedWait": "Espera",
120
237
  "workflow-editor.loading": "Cargando…",
121
238
  "workflow-editor.titleNew": "Nuevo flujo",
122
- "workflow-editor.titleEdit": "Editar flujo · {{id}}",
123
- "workflow-editor.backToJobs": "Volver a trabajos",
239
+ "workflow-editor.titleEdit": "Editar flujo · {{name}}",
240
+ "workflow-editor.backToWorkflows": "Volver a flujos",
241
+ "workflow-editor.export": "Exportar",
242
+ "workflow-editor.start": "Iniciar",
243
+ "workflow-editor.exportFailed": "No se pudo exportar el flujo",
124
244
  "workflow-editor.validation": "Validación",
125
245
  "workflow-editor.basics": "Básicos",
126
246
  "workflow-editor.name": "name",
@@ -148,6 +268,7 @@
148
268
  "workflow-editor.inputType.number": "number",
149
269
  "workflow-editor.inputType.boolean": "boolean",
150
270
  "workflow-editor.inputType.select": "select",
271
+ "workflow-editor.inputType.localRepository": "Repositorio local",
151
272
  "workflow-editor.required": "obligatorio",
152
273
  "workflow-editor.remove": "Eliminar",
153
274
  "workflow-editor.addInputField": "Añadir campo de entrada",
@@ -164,10 +285,14 @@
164
285
  "step-list.id": "Id",
165
286
  "step-list.idHint": "Se genera a partir del nombre del paso — edítalo directamente si quieres otra referencia.",
166
287
  "step-list.objective": "Prompt",
167
- "step-list.knowledgeScope": "Alcance de conocimiento",
168
- "step-list.knowledgeScopeHint": "Déjalos sin marcar para omitir (todos los niveles).",
288
+ "step-list.contextFiles": "Archivos de contexto",
289
+ "step-list.contextFilesEmpty": "Ninguno seleccionado",
290
+ "step-list.selectContextFiles": "Seleccionar archivos de contexto",
169
291
  "step-list.outputFormat.label": "Formato de salida",
170
292
  "step-list.interaction.label": "Interacción",
293
+ "step-list.sourceStepIds.label": "Fuentes de sugerencias",
294
+ "step-list.sourceStepIds.hint": "Pasos de agente anteriores cuyo formato de salida es sugerencias de comentarios.",
295
+ "step-list.sourceStepIds.empty": "Añade antes un paso de agente con formato de sugerencias de comentarios.",
171
296
  "step-list.notify": "Notificar",
172
297
  "step-list.command": "Comando",
173
298
  "step-list.operation": "Operación",
@@ -176,16 +301,43 @@
176
301
  "step-list.workflowId": "Id de flujo",
177
302
  "step-list.workflowOption": "{{name}} ({{id}})",
178
303
  "step-list.forEach": "forEach",
304
+ "step-list.forEach.selection": "Selección",
305
+ "step-list.forEach.source": "Desde array",
306
+ "step-list.forEach.sourcePath": "Origen del array",
307
+ "step-list.forEach.sourceHint": "Ruta en el contexto del trabajo (p. ej. decide-repos.repos). Cada elemento se convierte en los inputValues del hijo; el flujo hijo debe tener appliesTo: none.",
179
308
  "step-list.until.type": "until.type",
180
309
  "step-list.until.stepId": "until.stepId",
181
310
  "step-list.until.field": "until.field",
182
311
  "step-list.until.value": "until.value",
312
+ "step-list.fieldCondition.type": "Predicado",
313
+ "step-list.fieldCondition.stepId": "Id del paso",
314
+ "step-list.fieldCondition.field": "Campo",
315
+ "step-list.fieldCondition.value": "Valor",
316
+ "step-list.condition.title": "Ejecutar solo si…",
317
+ "step-list.condition.hint": "Se omite el paso cuando esta condición se cumple (los mismos predicados que loop until). Field empty omite cuando ese campo está vacío o ausente.",
183
318
  "step-list.maxIterations": "Iteraciones máximas",
184
319
  "step-list.onMaxIterations.action": "onMaxIterations.action",
185
320
  "step-list.nestedSteps": "Pasos anidados",
321
+ "step-list.availableParameters.title": "Parámetros disponibles",
322
+ "step-list.availableParameters.hint": "Haz clic en un token para copiarlo. Solo se listan valores ya disponibles cuando se ejecuta este paso.",
323
+ "step-list.availableParameters.inputs": "Entradas del flujo",
324
+ "step-list.availableParameters.subject": "Sujeto",
325
+ "step-list.availableParameters.previous": "Pasos anteriores",
326
+ "step-list.availableParameters.loopOverwrite": "Las iteraciones del bucle sobrescriben este valor; las referencias posteriores ven el resultado de la última pasada.",
327
+ "step-list.availableParameters.noOutput": "Sin campos de salida",
328
+ "step-list.availableParameters.providerOpaque": "Resultado de {{action}} — inspeccionar en tiempo de ejecución",
329
+ "step-list.availableParameters.interactionOpaque": "La forma depende de las preguntas hechas",
330
+ "step-list.availableParameters.arrayOf": "Array de { {{fields}} }",
331
+ "step-list.availableParameters.subjectTypeUnion": "Los campos reales dependen del tipo de sujeto que resuelva la vista vinculada.",
332
+ "step-list.availableParameters.subWorkflowArray": "Array de { fanOutIndex, jobId, output }",
333
+ "step-list.availableParameters.subWorkflowForEach": "Selección crea un hijo por cada sujeto seleccionado. Desde array (forEach.source) recorre un array de un paso anterior; cada elemento son los inputValues del hijo y el flujo hijo debe ser appliesTo: none.",
334
+ "step-list.availableParameters.condition": "Cualquier paso puede definir condition (field_empty o field_equals). Si la condición se cumple, el paso se omite por completo. Las referencias a la salida de un paso omitido se resuelven a undefined, igual que un paso que nunca se ejecutó.",
335
+ "step-list.availableParameters.noPrevious": "Ningún paso anterior",
336
+ "step-list.availableParameters.missingId": "Asigna un id para copiar tokens",
186
337
  "step-list.stepType.agent": "agent",
187
338
  "step-list.stepType.interaction": "interaction",
188
339
  "step-list.stepType.shell": "shell",
340
+ "step-list.stepType.extract": "extract",
189
341
  "step-list.stepType.git": "git",
190
342
  "step-list.stepType.provider_action": "provider_action",
191
343
  "step-list.stepType.sub_workflow": "sub_workflow",
@@ -197,6 +349,7 @@
197
349
  "step-list.interaction.questionnaire": "questionnaire",
198
350
  "step-list.interaction.confirmation": "confirmation",
199
351
  "step-list.interaction.conversation": "conversation",
352
+ "step-list.interaction.comment_review": "comment_review",
200
353
  "step-list.notifyMode.inherit": "inherit (undefined)",
201
354
  "step-list.notifyMode.on": "on (true)",
202
355
  "step-list.notifyMode.off": "off (false)",
@@ -205,6 +358,15 @@
205
358
  "step-list.gitOperation.create_branch": "create_branch",
206
359
  "step-list.gitOperation.commit": "commit",
207
360
  "step-list.gitOperation.push": "push",
361
+ "step-list.createWorktree.mode": "Modo",
362
+ "step-list.createWorktree.newBranch": "Rama nueva",
363
+ "step-list.createWorktree.existingBranch": "Rama existente",
364
+ "step-list.createWorktree.repoPath": "Ruta del repositorio",
365
+ "step-list.createWorktree.catalogPlaceholder": "Elegir del catálogo",
366
+ "step-list.createWorktree.browseManually": "O examinar manualmente",
367
+ "step-list.createWorktree.baseBranch": "Rama base",
368
+ "step-list.createWorktree.branchName": "Nombre de rama",
369
+ "step-list.createWorktree.branch": "Rama",
208
370
  "step-list.providerAction.get_subject": "get_subject",
209
371
  "step-list.providerAction.get_comments": "get_comments",
210
372
  "step-list.providerAction.post_comment": "post_comment",
@@ -232,6 +394,13 @@
232
394
  "step-list.onMaxIterations.fail": "fail",
233
395
  "step-list.onMaxIterations.continue": "continue",
234
396
  "step-list.onMaxIterations.ask_human": "ask_human",
397
+ "step-list.extract.source": "Origen",
398
+ "step-list.extract.path": "Ruta",
399
+ "step-list.extract.pattern": "Patrón",
400
+ "step-list.extract.onNoMatch": "Si no hay coincidencia",
401
+ "step-list.onNoMatch.fail": "Fallar",
402
+ "step-list.onNoMatch.empty": "Continuar vacío",
403
+ "step-list.onNoMatch.ask_human": "Preguntar",
235
404
  "settings.title": "Ajustes",
236
405
  "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.",
237
406
  "settings.addProvider": "Añadir proveedor",
@@ -307,11 +476,17 @@
307
476
  "settings.apiKey.setSuccess": "Clave de API guardada",
308
477
  "settings.apiKey.setFailed": "No se pudo guardar la clave de API",
309
478
  "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.",
479
+ "settings.testConnection": "Probar conexión",
480
+ "settings.testConnection.connected": "Conectado",
481
+ "settings.testConnection.failed": "Error de conexión",
482
+ "settings.testConnection.mismatch": "Identidad no coincide",
310
483
  "settings.model.label": "Modelo predeterminado",
311
484
  "settings.model.placeholder": "Predeterminado del proveedor",
312
485
  "settings.model.fetch": "Obtener modelos disponibles",
313
486
  "settings.model.fetchFailed": "No se pudieron obtener los modelos",
314
487
  "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.",
488
+ "settings.maxConcurrent.label": "Pasos simultáneos máximos",
489
+ "settings.maxConcurrent.hint": "Cuántos pasos de agente puede ejecutar esta instancia a la vez. Las demás instancias no se ven afectadas.",
315
490
  "settings.restartRequired.message": "Algunos cambios requieren reiniciar Knoflows para aplicarse",
316
491
  "settings.saveSuccess": "Ajustes guardados",
317
492
  "settings.saveFailed": "No se pudieron guardar los ajustes",
@@ -319,8 +494,10 @@
319
494
  "settings.loadFailed": "No se pudieron cargar los ajustes",
320
495
  "workflows.list.title": "Flujos",
321
496
  "workflows.list.createButton": "Crear flujo",
497
+ "workflows.list.browseLibrary": "Examinar biblioteca",
322
498
  "workflows.list.emptyState": "Aún no hay flujos. Crea uno para empezar.",
323
499
  "workflows.list.emptyCreateButton": "Crea tu primer flujo",
500
+ "workflows.list.emptyBrowseLibrary": "Examinar la biblioteca",
324
501
  "workflows.list.stepCount": "{{count}} pasos",
325
502
  "workflows.list.noDescription": "Sin descripción",
326
503
  "workflows.list.filterBySubjectHandling": "Filtrar por elementos",
@@ -334,6 +511,29 @@
334
511
  "workflows.list.column.steps": "Pasos",
335
512
  "workflows.list.column.actions": "Acciones",
336
513
  "workflows.list.loadFailed": "No se pudieron cargar los flujos",
514
+ "workflows.list.export": "Exportar",
515
+ "workflows.list.import": "Importar",
516
+ "workflows.list.importFailed": "No se pudo importar el flujo",
517
+ "workflows.list.importInvalidJson": "Este archivo no es JSON válido",
518
+ "workflows.list.importInvalidSchema": "Este archivo no es una definición de flujo válida",
519
+ "workflows.list.downloadInstructions": "Descargar instrucciones para el agente",
520
+ "workflows.list.exportFailed": "No se pudo exportar el flujo",
521
+ "workflows.list.instructionsFailed": "No se pudieron descargar las instrucciones",
522
+ "workflows.import.conflictTitle": "Conflicto al importar",
523
+ "workflows.import.conflictBody": "Ya existe un flujo llamado '{{name}}'",
524
+ "workflows.import.update": "Actualizar",
525
+ "workflows.import.createNew": "Crear nuevo",
526
+ "workflow-library.title": "Biblioteca de flujos",
527
+ "workflow-library.lede": "Copia un ejemplo a tu espacio de trabajo. Una vez añadido, es tuyo para editarlo.",
528
+ "workflow-library.source.example": "Ejemplo",
529
+ "workflow-library.source.community": "Comunidad",
530
+ "workflow-library.source.official": "Oficial",
531
+ "workflow-library.previewSteps": "Ver pasos",
532
+ "workflow-library.hideSteps": "Ocultar pasos",
533
+ "workflow-library.add": "Añadir a mis flujos",
534
+ "workflow-library.adding": "Añadiendo…",
535
+ "workflow-library.loadFailed": "No se pudo cargar la biblioteca de flujos",
536
+ "workflow-library.addFailed": "No se pudo añadir este flujo",
337
537
  "views.list.title": "Vistas",
338
538
  "views.list.createButton": "Crear vista",
339
539
  "views.list.emptyState": "Aún no hay vistas. Crea una para empezar.",
@@ -349,7 +549,7 @@
349
549
  "views.list.column.query": "Consulta",
350
550
  "views.list.column.actions": "Acciones",
351
551
  "views.editor.titleNew": "Nueva vista",
352
- "views.editor.titleEdit": "Editar vista · {{id}}",
552
+ "views.editor.titleEdit": "Editar vista · {{name}}",
353
553
  "views.editor.backToList": "Volver a vistas",
354
554
  "views.editor.name": "Nombre",
355
555
  "views.editor.workflow": "Flujo",
@@ -406,7 +606,7 @@
406
606
  "shortcuts.list.runFailed": "No se pudo iniciar el atajo",
407
607
  "shortcuts.list.deleteFailed": "No se pudo eliminar el atajo",
408
608
  "shortcuts.editor.titleNew": "Nuevo atajo",
409
- "shortcuts.editor.titleEdit": "Editar atajo · {{id}}",
609
+ "shortcuts.editor.titleEdit": "Editar atajo · {{name}}",
410
610
  "shortcuts.editor.backToList": "Volver a atajos",
411
611
  "shortcuts.editor.name": "Nombre",
412
612
  "shortcuts.editor.workflow": "Flujo",
@@ -419,10 +619,14 @@
419
619
  "batches.detail.loadFailed": "No se pudo cargar el lote",
420
620
  "batches.detail.subjectCount": "{{count}} sujetos",
421
621
  "batches.detail.membersHeading": "Trabajos miembros",
622
+ "batches.detail.cancel": "Cancelar lote",
623
+ "batches.detail.cancelling": "Cancelando…",
624
+ "batches.errors.cancelFailed": "No se pudo cancelar el lote",
422
625
  "batches.status.running": "En ejecución",
423
626
  "batches.status.completed": "Completado",
424
627
  "batches.status.completed_with_issues": "Completado con problemas",
425
628
  "batches.status.failed": "Fallido",
629
+ "batches.status.cancelled": "Cancelado",
426
630
  "batches.triggeredBy.schedule": "Programación",
427
631
  "batches.triggeredBy.view_bulk": "Vista (todos los coincidentes)",
428
632
  "batches.triggeredBy.multiselect": "Selección múltiple"
@@ -0,0 +1 @@
1
+ import {U as Uy}from'./chunk-C2BVYtVN.js';function p(t){switch(t){case "completed":return "success";case "failed":return "error";case "waiting_for_human":case "waiting_for_children":return "info";case "pending":case "cancelled":return "muted";case "planning":case "implementing":case "testing":return "primary"}}function d(t){switch(t){case "completed":return "success";case "failed":return "error";case "completed_with_issues":case "cancelled":return "warning";default:return null}}function m(t){switch(t){case "completed":return "success";case "failed":return "error";case "queued":case "waiting_for_children":return "info";case "running":return "primary";case "pending":case "skipped":return "muted"}}function a(t,e){if(!(!t||e==="dark"))switch(t){case "success":return "success";case "warning":return "warning";case "error":return "error";case "info":case "primary":case "muted":return}}function f(t,e){return !t||e!=="dark"&&!(t==="info"||t==="primary"||t==="muted")?"":`knoflows-tag-${t}`}function x(t,e){return f(p(t),e)}function h(t,e){return a(p(t),e)}function y(t,e){return f(d(t),e)}function S(t,e){return a(d(t),e)}function T(t,e){return f(m(t),e)}function _(t,e){return a(m(t),e)}var g=new Set(["completed","failed","cancelled"]);function C(t){return t==="agent"||t==="shell"||t==="git"||t==="provider_action"}function w(t){return g.has(t)}function I(t){let e=t.stepHistory.find(r=>r.status==="running");if(e)return e;let n=t.stepHistory.find(r=>r.status==="queued");if(n)return n;if((t.status==="waiting_for_human"||t.status==="waiting_for_children")&&t.currentStepExecutionId){let r=t.stepHistory.find(i=>i.id===t.currentStepExecutionId);if(r)return r}return w(t.status)&&t.stepHistory.length>0?t.stepHistory[t.stepHistory.length-1]??null:null}function k(t,e){let n=new Map;for(let r of e)n.set(r.stepDefinitionId,r);return t.map(r=>{let i=n.get(r.id)??null;return {definition:r,execution:i,reached:i!=null}})}function O(t){if(!t)return null;if(t.mode==="single"){let n=t.subject;return `${n.id} \xB7 ${n.title}`}let e=t.subjects.length;if(e===0)return null;if(e===1){let n=t.subjects[0];return `${n.id} \xB7 ${n.title}`}return `${e} subjects`}function b(t){let e=t.workflowSnapshot?.name??t.workflowId;return t.subjectContext?t.subjectContext.mode==="single"?`${e} \u2014 ${t.subjectContext.subject.title}`:`${e} \u2014 ${t.subjectContext.subjects.length} items`:e}function v(t,e,n,r){let i=t.findIndex(s=>s.id===n);if(!(i<0))for(let s=i-1;s>=0;s-=1){let o=t[s];if(o.type!=="agent")continue;let c=e.find(u=>u.stepDefinitionId===o.id);if(c?.output!==void 0)return c.output;if(Object.prototype.hasOwnProperty.call(r.context,o.id))return r.context[o.id]}}function D(t){let e=t.waitingEvent;if(e&&e.questions.length>0)return e.questions;let n=e?.data??t.selectedOutput??t.priorOutput,r=Uy(t.interaction,n);return r.length>0?r:e?.data!=null?[JSON.stringify(e.data,null,2)]:[]}function E(t){return t.waitingEvent?.data??t.selectedOutput??t.priorOutput}function H(t){if(!t||typeof t!="object")return [];let e=t.questions;if(!Array.isArray(e))return [];let n=new Set,r=[];return e.forEach((i,s)=>{let o="",c="";if(typeof i=="string")c=i.trim();else if(i&&typeof i=="object"){let u=i;typeof u.prompt=="string"&&(c=u.prompt.trim()),typeof u.id=="string"&&(o=u.id.trim());}if(c){if(!o){let u=`q${s+1}`;for(;n.has(u);)u=`${u}_${s}`;o=u;}n.add(o),r.push({id:o,prompt:c});}}),r}function A(t,e){return t.every(n=>(e[n.id]??"").trim()!=="")}function P(t,e,n){let r={};for(let s of t)r[s.id]=(e[s.id]??"").trim();let i=n.trim();return i&&(r.additionalComments=i),r}function J(t,e){let n=e.trim();return n?{approved:t,comment:n}:{approved:t}}export{A,C,D,E,H,I,J,O,P,S,T,_,b,h,k,v,w,x,y};
@@ -0,0 +1 @@
1
+ import {w as we}from'./chunk-yoe_30RI.js';import {A as At}from'./chunk-Th9whP36.js';import {a as ae,l as le}from'./chunk-CRdEWPUM.js';import'./chunk-C7h8oMzu.js';import'./chunk-z2vvQAle.js';import {C,a as C1,b6 as U,$,V as Ve,b as at$1,q as qo,U as Uw,u as ue,r as r$1,aW as Ng,aY as Dg,c as bi,Z as ZE,d as $8,v as v3,Y as pf,a0 as bd,a1 as sp,a2 as fp,K as Kt,j as _i,l as _D,J as Jc,o as gI,M as MD,I as Iw,P as Pw,L as Lh,p as Fw,H as HD,G as FD,m as mh,w as lh,z as rl,O as Fu,Q as ju,n as uh,E as Aw}from'./main-CHQMTVIP.js';import {b}from'./chunk-B7WkIFy0.js';import {G as Gn,u as un}from'./chunk-Dp4H7MY0.js';import'./chunk-B2Xol2Un.js';import {U as U$1}from'./chunk-Fwpw-z7T.js';import'./chunk-BhTujCrk.js';import'./chunk-Cg2E0vnT.js';var et=i=>["/batches",i];function it(i,r){i&1&&(_i(0,"p",1),Iw(1),Pw(2,"transloco"),Jc()),i&2&&(gI(),Lh(Fw(2,1,"common.loading")));}function nt(i,r){if(i&1&&(_i(0,"p",2),Iw(1),Jc()),i&2){let t=HD();gI(),Lh(t.loadError());}}function ot(i,r){i&1&&(_i(0,"a",10),Iw(1),Pw(2,"transloco"),Jc()),i&2&&(lh("routerLink",Aw(4,et,r)),gI(),rl(" ",Fw(2,2,"views.detail.openBatch")," "));}function at(i,r){if(i&1&&(uh(0,"nz-alert",9),_D(1,ot,3,6,"a",10)),i&2){let t,e=HD(2);lh("nzMessage",e.confirmation()),gI(),MD((t=e.confirmationBatchId())?1:-1,t);}}function lt(i,r){i&1&&(_i(0,"p",11),Iw(1),Pw(2,"transloco"),Jc()),i&2&&(gI(),rl(" ",Fw(2,1,"views.detail.noBulkWorkflows")," "));}function rt(i,r){if(i&1&&(_i(0,"p",14),Iw(1),Jc()),i&2){let t=HD(4);gI(),Lh(t.launchError());}}function st(i,r){if(i&1){let t=FD();_i(0,"p",12),Iw(1),Jc(),_i(2,"app-workflow-input-form",13),mh("valuesChange",function(n){Fu(t);let s=HD(3);return ju(s.setInputValues(n))}),Jc(),_D(3,rt,2,1,"p",14),_i(4,"div",15)(5,"button",16),mh("click",function(){Fu(t);let n=HD(3);return ju(n.launch())}),Iw(6),Pw(7,"transloco"),Jc(),_i(8,"button",17),mh("click",function(){Fu(t);let n=HD(3);return ju(n.cancelLaunch())}),Iw(9),Pw(10,"transloco"),Jc()();}if(i&2){let t=r,e=HD(3);gI(),Lh(t.name),gI(),lh("fields",t.inputSchema)("values",e.inputValues()),gI(),MD(e.launchError()?3:-1),gI(2),lh("nzLoading",e.launching())("disabled",e.launching()),gI(),rl(" ",Fw(7,8,e.launching()?"views.detail.launching":"views.detail.launch")," "),gI(3),rl(" ",Fw(10,10,"views.detail.cancelLaunch")," ");}}function ct(i,r){if(i&1&&(_i(0,"section",6)(1,"h2"),Iw(2),Pw(3,"transloco"),Jc(),_D(4,lt,3,3,"p",11)(5,st,11,12),Jc()),i&2){let t,e=HD(2);gI(2),rl(" ",Fw(3,2,r==="view"?"views.detail.launchViewTitle":"views.detail.launchSelectedTitle")," "),gI(2),MD(e.canBulkLaunch()?(t=e.boundWorkflow())?5:-1:4,t);}}function dt(i,r){i&1&&(_i(0,"p",7),Iw(1),Pw(2,"transloco"),Jc()),i&2&&(gI(),Lh(Fw(2,1,"views.detail.emptySubjects")));}function ut(i,r){if(i&1){let t=FD();_i(0,"app-runnable-items-table",18),mh("rowAction",function(n){Fu(t);let s=HD(2);return ju(s.onRowAction(n))})("bulkAction",function(n){Fu(t);let s=HD(2);return ju(s.onBulkAction(n))}),Jc();}if(i&2){let t=HD(2);lh("rows",t.rows())("selectable",true)("showRowAction",t.showRowAction());}}function pt(i,r){if(i&1){let t=FD();_i(0,"header",3)(1,"h1",4),Iw(2),Jc(),_i(3,"button",5),mh("click",function(){Fu(t);let n=HD();return ju(n.beginLaunch("view"))}),Iw(4),Pw(5,"transloco"),Jc()(),_D(6,at,2,2),_D(7,ct,6,4,"section",6),_D(8,dt,3,3,"p",7)(9,ut,1,3,"app-runnable-items-table",8);}if(i&2){let t,e=HD();gI(2),Lh(r.name),gI(),lh("disabled",!e.canBulkLaunch()),gI(),rl(" ",Fw(5,6,"views.detail.runOnAll")," "),gI(2),MD(e.confirmation()?6:-1),gI(),MD((t=e.launchMode())?7:-1,t),gI(),MD(e.subjects().length===0?8:9);}}var zt=(()=>{class i{constructor(){this.route=C(C1),this.viewsApi=C(U),this.workflowsApi=C(b),this.batchesApi=C(U$1),this.jobsApi=C($),this.startJob=C(At),this.transloco=C(Ve),this.destroyRef=C(at$1),this.view=qo(null),this.subjects=qo([]),this.workflows=qo([]),this.latestBySubject=qo({}),this.loading=qo(true),this.loadError=qo(null),this.selectedIds=qo([]),this.launchMode=qo(null),this.inputValues=qo({}),this.launching=qo(false),this.launchError=qo(null),this.confirmation=qo(null),this.confirmationBatchId=qo(null),this.boundWorkflow=Uw(()=>{let t=this.view();return t?this.workflows().find(e=>e.id===t.workflowId)??null:null}),this.canBulkLaunch=Uw(()=>this.boundWorkflow()!=null),this.showRowAction=Uw(()=>this.boundWorkflow()?.subjectHandling==="per-subject"),this.rows=Uw(()=>{let t=this.latestBySubject();return this.subjects().map(e=>({id:e.id,primaryLabel:e.title,subtitle:this.subjectDetails(e),latestJob:t[e.id]??null}))}),this.route.paramMap.pipe(ue(this.destroyRef)).subscribe(t=>{let e=t.get("id");if(!e){this.loading.set(false),this.loadError.set(this.transloco.translate("views.detail.loadFailed"));return}this.load(e);});}subjectDetails(t){if(t.subjectType==="ticket")return [t.status,t.assignee].filter(Boolean).join(" \xB7 ");if(t.subjectType==="pull_request"){let e=`${t.sourceBranch} \u2192 ${t.targetBranch}`;return t.author?`${t.author} \xB7 ${e}`:e}return t.url??""}onBulkAction(t){this.selectedIds.set(t),this.beginLaunch("manual");}onRowAction(t){let e=this.view();e&&this.startJob.start({workflowId:e.workflowId,subjectId:t});}beginLaunch(t){t==="manual"&&this.selectedIds().length===0||(this.launchError.set(null),this.confirmation.set(null),this.confirmationBatchId.set(null),this.launchMode.set(t),this.inputValues.set(ae(this.boundWorkflow()?.inputSchema??[])));}cancelLaunch(){this.launchMode.set(null),this.launchError.set(null);}setInputValues(t){this.inputValues.set(t);}launch(){let t=this.view(),e=this.boundWorkflow(),n=this.launchMode();if(!t||!e||!n)return;let s=n==="view"?{mode:"view",viewId:t.id}:{mode:"manual",subjectType:t.subjectType,subjectIds:[...this.selectedIds()]};this.launching.set(true),this.launchError.set(null),this.batchesApi.launch({workflowId:e.id,selection:s,triggeredBy:n==="view"?"view_bulk":"multiselect",inputValues:r$1({},this.inputValues())}).pipe(ue(this.destroyRef)).subscribe({next:w=>{this.launching.set(false),this.confirmation.set(this.confirmationMessage(w)),this.confirmationBatchId.set(w.kind==="batch"?w.batch.id:null),this.launchMode.set(null),this.refreshLatest(t.workflowId,this.subjects().map(tt=>tt.id));},error:w=>{this.launching.set(false),this.launchError.set(this.errorMessage(w,this.transloco.translate("views.detail.launchFailed")));}});}confirmationMessage(t){return t.kind==="batch"?this.transloco.translate("views.detail.confirmation.batch",{id:t.batch.id,count:t.batch.jobIds.length}):this.transloco.translate("views.detail.confirmation.job",{id:t.job.id})}load(t){this.loading.set(true),this.loadError.set(null),this.selectedIds.set([]),this.launchMode.set(null),this.confirmation.set(null),this.confirmationBatchId.set(null),Ng({view:this.viewsApi.get(t),subjects:this.viewsApi.getSubjects(t),workflows:this.workflowsApi.list()}).pipe(ue(this.destroyRef)).subscribe({next:({view:e,subjects:n,workflows:s})=>{this.view.set(e),this.subjects.set(n),this.workflows.set(s),this.loading.set(false),this.refreshLatest(e.workflowId,n.map(w=>w.id));},error:e=>{this.loading.set(false),this.loadError.set(this.errorMessage(e,this.transloco.translate("views.detail.loadFailed")));}});}refreshLatest(t,e){(e.length===0?Dg({}):this.jobsApi.latestBySubject(t,e)).pipe(ue(this.destroyRef)).subscribe({next:s=>this.latestBySubject.set(s),error:()=>this.latestBySubject.set({})});}errorMessage(t,e){return t instanceof bi||t instanceof Error?t.message:e}static{this.\u0275fac=function(e){return new(e||i)};}static{this.\u0275cmp=ZE({type:i,selectors:[["app-view-detail"]],decls:4,vars:1,consts:[["data-testid","view-detail",1,"detail-page"],["data-testid","loading"],["data-testid","load-error",1,"error"],[1,"header"],["data-testid","view-name"],["nz-button","","nzType","primary","type","button","data-testid","run-on-all",3,"click","disabled"],["data-testid","launch-panel",1,"launch-panel"],["data-testid","empty-subjects",1,"muted"],[3,"rows","selectable","showRowAction"],["data-testid","launch-confirmation","nzType","success",3,"nzMessage"],["nz-button","","nzType","link","data-testid","open-batch",3,"routerLink"],["data-testid","no-bulk-workflows",1,"muted"],["data-testid","launch-workflow",1,"muted"],[3,"valuesChange","fields","values"],["data-testid","launch-error",1,"error"],[1,"launch-actions"],["nz-button","","nzType","primary","type","button","data-testid","launch-submit",3,"click","nzLoading","disabled"],["nz-button","","type","button","data-testid","launch-cancel",3,"click"],[3,"rowAction","bulkAction","rows","selectable","showRowAction"]],template:function(e,n){if(e&1&&(_i(0,"main",0),_D(1,it,3,3,"p",1)(2,nt,2,1,"p",2)(3,pt,10,8),Jc()),e&2){let s;gI(),MD(n.loading()?1:n.loadError()?2:(s=n.view())?3:-1,s);}},dependencies:[$8,v3,Gn,un,pf,bd,sp,fp,le,we,Kt],styles:[".detail-page[_ngcontent-%COMP%]{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:center}.header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;min-width:14rem}.field[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.85rem;color:#57534e}.launch-panel[_ngcontent-%COMP%]{padding:1rem;border:1px solid #d6d3d1;background:#ffffffb3}.launch-panel[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 .75rem;font-size:1.1rem}.launch-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem;margin-top:.5rem}.muted[_ngcontent-%COMP%]{color:#78716c}.error[_ngcontent-%COMP%]{color:#9f1239}.actions[_ngcontent-%COMP%]{white-space:nowrap}[_nghost-%COMP%] .ant-table-tbody>tr>td{white-space:normal;vertical-align:top}"]});}}return i})();export{zt as ViewDetailComponent};
@@ -0,0 +1 @@
1
+ import {a7 as KE,a8 as fu,C,bf as _r,br as pn,b as at$1,bu as ml,cz as A,bg as Ci,cl as Vi,dj as lt$1,q as qo,U as Uw,a5 as q0,av as K0,ab as Oe,bw as Gw,bh as Bt$1,bv as pl,bp as de,ba as Se,cG as mt,by as Qr,dk as Me,u as ue,T as id,ag as Ql,bD as hl,bC as il,bR as eD,bj as Nw,bE as fn,bF as oD,bG as ir,m as mh,D as ch,aG as lw,al as Sh,bx as z0,ac as Er,a6 as U0,r as r$1,bz as tl,b9 as Nl,aD as Nr,dl as Zr,bB as Xf,Z as ZE,a3 as Ah,a4 as Th,Y as pf,a0 as bd,a1 as sp,a2 as fp,au as w5,aj as $D,l as _D,aw as rh,aT as Vw,M as MD,bl as wo,bJ as Dh,bI as zD,dm as tp,dn as Ai,dp as Zl,dq as np,bb as er,f as rl,dr as jc,ds as td,ai as ly,aE as J0,x as xD,aO as SD,B as AD,bk as St$1,ax as Eh,an as WD,ao as GD,bK as W0,H as HD,aH as QD,w as lh,j as _i,J as Jc,o as gI,ak as UD,G as FD,O as Fu,Q as ju,k as iE,y as aE,ck as $h,dt as Cw,I as Iw,L as Lh,n as uh,E as Aw,du as bw,z as rl$1}from'./main-CHQMTVIP.js';var nt=new A("");var ht=["otpInput"];function gt(t,o){if(t&1){let e=FD();_i(0,"input",2,0),mh("input",function(i){let r=Fu(e).$index,l=HD();return ju(l.onInput(r,i))})("focus",function(i){Fu(e);let r=HD();return ju(r.onFocus(i))})("keydown",function(i){let r=Fu(e).$index,l=HD();return ju(l.onKeyDown(r,i))})("paste",function(i){let r=Fu(e).$index,l=HD();return ju(l.onPaste(r,i))}),Jc(),iE();}if(t&2){let e=o.$implicit,n=HD();lh("nzSize",n.nzSize)("formControl",e)("nzStatus",n.nzStatus),aE();}}var _t=[[["","nzInputAddonBefore",""]],[["","nzInputAddonAfter",""]],[["","nzInputSearchEnterButton",""]],[["","nzInputPrefix",""]],[["","nzInputSuffix",""]],[["","nzInputClearIcon",""]],[["","nz-input",""]]],vt=["[nzInputAddonBefore]","[nzInputAddonAfter]","[nzInputSearchEnterButton]","[nzInputPrefix]","[nzInputSuffix]","[nzInputClearIcon]","[nz-input]"],Ct=t=>({$implicit:t});function zt(t,o){}function bt(t,o){if(t&1&&rh(0,zt,0,0,"ng-template",4),t&2){HD();let e=QD(4);lh("ngTemplateOutlet",e);}}function yt(t,o){}function Nt(t,o){if(t&1&&rh(0,yt,0,0,"ng-template",4),t&2){HD();let e=QD(8);lh("ngTemplateOutlet",e);}}function Dt(t,o){}function xt(t,o){if(t&1&&rh(0,Dt,0,0,"ng-template",4),t&2){HD();let e=QD(10);lh("ngTemplateOutlet",e);}}function Mt(t,o){if(t&1&&Iw(0),t&2){let e=HD(3);Lh(e.nzAddonBefore());}}function St(t,o){t&1&&(_i(0,"span",6),UD(1,0,null,Mt,1,1),Jc());}function It(t,o){}function wt(t,o){if(t&1&&rh(0,It,0,0,"ng-template",4),t&2){HD(2);let e=QD(6);lh("ngTemplateOutlet",e);}}function At(t,o){}function Et(t,o){if(t&1&&rh(0,At,0,0,"ng-template",4),t&2){HD(2);let e=QD(10);lh("ngTemplateOutlet",e);}}function Tt(t,o){if(t&1&&Iw(0),t&2){HD(2);let e=bw(0);rl$1(" ",e," ");}}function Ft(t,o){t&1&&uh(0,"nz-icon",9);}function Vt(t,o){if(t&1&&_D(0,Tt,1,1)(1,Ft,1,0,"nz-icon",9),t&2){HD();let e=bw(0);MD(e&&typeof e=="string"?0:1);}}function Rt(t,o){if(t&1){let e=FD();$h(0),_i(1,"button",8),mh("click",function(i){Fu(e);let r=HD(3);return ju(r.inputSearchDir.search(i))}),UD(2,2,null,Vt,2,1),Jc();}if(t&2){let e=HD(3),n=Cw(e.inputSearchDir.nzEnterButton()),i=e.inputSearchEnterButton()??n!==false;gI(),lh("nzType",i?"primary":"default")("nzSize",e.size())("nzLoading",e.inputSearchDir.nzLoading());}}function kt(t,o){if(t&1&&Iw(0),t&2){let e=HD(3);Lh(e.nzAddonAfter());}}function Pt(t,o){if(t&1&&(_i(0,"span",6),_D(1,Rt,4,4,"button",7),UD(2,1,null,kt,1,1),Jc()),t&2){let e=HD(2);gI(),MD(e.inputSearchDir?1:-1);}}function Ot(t,o){if(t&1&&(_i(0,"span",5),_D(1,St,3,0,"span",6),_D(2,wt,1,1,null,4)(3,Et,1,1,null,4),_D(4,Pt,4,1,"span",6),Jc()),t&2){let e=HD();gI(),MD(e.hasAddonBefore()?1:-1),gI(),MD(e.hasAffix()?2:3),gI(2),MD(e.hasAddonAfter()?4:-1);}}function Bt(t,o){}function Wt(t,o){if(t&1&&(_i(0,"span"),rh(1,Bt,0,0,"ng-template",4),Jc()),t&2){let e=HD(),n=QD(8);lw(e.affixWrapperClass()),gI(),lh("ngTemplateOutlet",n);}}function Lt(t,o){if(t&1&&Iw(0),t&2){let e=HD(3);Lh(e.nzPrefix());}}function jt(t,o){t&1&&(_i(0,"span",10),UD(1,3,null,Lt,1,1),Jc());}function $t(t,o){}function qt(t,o){t&1&&uh(0,"nz-icon",17);}function Ut(t,o){if(t&1){let e=FD();_i(0,"span",16),mh("click",function(i){Fu(e);let r=HD(3);return r.clear(),ju(r.inputSearchDir?.search(i,"clear"))}),UD(1,5,null,qt,1,0),Jc();}if(t&2){let e=HD(3);Sh("ant-input-clear-icon-has-suffix",e.nzSuffix()||e.suffix()||e.hasFeedback()||e.inputPasswordDir?.nzVisibilityToggle())("ant-input-clear-icon-hidden",!e.inputDir().value()||e.disabled()||e.readOnly());}}function Ht(t,o){if(t&1&&(_i(0,"span",13),Iw(1),Jc()),t&2){let e=HD(3);gI(),Lh(e.dataCount());}}function Gt(t,o){}function Qt(t,o){if(t&1&&rh(0,Gt,0,0,"ng-template",19),t&2){let e=HD(4);lh("ngTemplateOutlet",o)("ngTemplateOutletContext",Aw(2,Ct,e.inputPasswordDir.nzVisible()));}}function Zt(t,o){if(t&1&&uh(0,"nz-icon",20),t&2){let e=HD(4);lh("nzType",e.inputPasswordDir.nzVisible()?"eye":"eye-invisible");}}function Kt(t,o){if(t&1){let e=FD();_i(0,"span",18),mh("click",function(){Fu(e);let i=HD(3);return ju(i.inputPasswordDir.toggleVisible())}),_D(1,Qt,1,4,null,19)(2,Zt,1,1,"nz-icon",20),Jc();}if(t&2){let e,n=HD(3);gI(),MD((e=n.inputPasswordIconTmpl())?1:2,e);}}function Xt(t,o){if(t&1&&Iw(0),t&2){let e=HD(3);Lh(e.nzSuffix());}}function Yt(t,o){if(t&1&&uh(0,"nz-form-item-feedback-icon",15),t&2){let e=HD(3);lh("status",e.status());}}function Jt(t,o){if(t&1&&(_i(0,"span",11),_D(1,Ut,3,4,"span",12),_D(2,Ht,2,1,"span",13),_D(3,Kt,3,1,"span",14),UD(4,4,null,Xt,1,1),_D(6,Yt,1,1,"nz-form-item-feedback-icon",15),Jc()),t&2){let e=HD(2);gI(),MD(e.nzAllowClear()?1:-1),gI(),MD(e.nzShowCount()?2:-1),gI(),MD(e.inputPasswordDir&&e.inputPasswordDir.nzVisibilityToggle()?3:-1),gI(3),MD(e.hasFeedback()&&e.status()?6:-1);}}function en(t,o){if(t&1&&(_D(0,jt,3,0,"span",10),rh(1,$t,0,0,"ng-template",4),_D(2,Jt,7,4,"span",11)),t&2){let e=HD(),n=QD(10);MD(e.hasPrefix()?0:-1),gI(),lh("ngTemplateOutlet",n),gI(),MD(e.hasSuffix()?2:-1);}}function tn(t,o){t&1&&UD(0,6);}var it=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["","nzInputAddonBefore",""]]})}return t})(),rt=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["","nzInputAddonAfter",""]]})}return t})(),ot=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["","nzInputPrefix",""]]})}return t})(),at=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["","nzInputSuffix",""]]})}return t})(),lt=(()=>{class t{nzVisibilityToggle=q0(true);nzVisible=W0(false);toggleVisible(){this.nzVisible.update(e=>!e);}static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["nz-input-password"]],hostAttrs:[1,"ant-input-password"],inputs:{nzVisibilityToggle:[1,"nzVisibilityToggle"],nzVisible:[1,"nzVisible"]},outputs:{nzVisible:"nzVisibleChange"},exportAs:["nzInputPassword"]})}return t})(),st=(()=>{class t{static ngTemplateContextGuard(e,n){return true}static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["","nzInputPasswordIcon",""]]})}return t})(),dt=new A(""),ct=new A(""),nn="ant-input",z=(()=>{class t{elementRef=C(_r);compactSize=C(pn,{optional:true});destroyRef=C(at$1);nzFormStatusService=C(ml,{optional:true});inputWrapper=C(dt,{host:true,optional:true});focusMonitor=C(Ci);hostView=C(Vi);inputPasswordDir=C(lt,{host:true,optional:true});inputSearchDir=C(ct,{host:true,optional:true});formField=C(nt,{self:true,optional:true});ngControl=C(lt$1,{self:true,optional:true});nativeValue=qo(this.elementRef.nativeElement.value);value=Uw(()=>this.formField?String(this.formField.state().value()??""):this.nativeValue());nzVariant=q0();nzSize=q0("default");nzStatus=q0("");disabled=q0(false,{transform:K0});readonly=q0(false,{transform:K0});controlDisabled=qo(false);finalDisabled=Uw(()=>this.formField?this.formField.state().disabled():this.ngControl?this.controlDisabled():this.disabled());dir=C(Oe).valueSignal;size=Gw(this.nzSize);formSize=C(Bt$1,{optional:true});formVariant=C(pl,{optional:true});status=this.nzFormStatusService?de(this.nzFormStatusService.formStatusChanges.pipe(Se(e=>e.status)),{initialValue:""}):this.nzStatus;hasFeedback=de(this.nzFormStatusService?.formStatusChanges.pipe(Se(e=>e.hasFeedback))??mt,{initialValue:false});classes=Uw(()=>Qr(nn,this.status(),this.hasFeedback()));type=Uw(()=>this.inputPasswordDir?this.inputPasswordDir.nzVisible()?"text":"password":this.inputSearchDir?"search":this.elementRef.nativeElement.getAttribute("type")||"text");focused=qo(false);finalSize=Uw(()=>this.formSize?.()?this.formSize():this.compactSize?this.compactSize():this.size());finalVariant=Uw(()=>this.nzVariant()||this.formVariant?.()||"outlined");feedbackRef=null;disabled$=Me(this.finalDisabled);constructor(){this.destroyRef.onDestroy(()=>{this.focusMonitor.stopMonitoring(this.elementRef);}),this.focusMonitor.monitor(this.elementRef,false).pipe(ue()).subscribe(e=>this.focused.set(!!e)),id(()=>{this.renderFeedbackIcon();});}ngOnInit(){this.ngControl?.statusChanges?.pipe(Ql(null),ue(this.destroyRef)).subscribe(()=>{this.controlDisabled.set(!!this.ngControl.disabled);}),this.ngControl?.valueChanges?.pipe(Ql(this.ngControl?.control?.value),ue(this.destroyRef)).subscribe(e=>{this.nativeValue.set(e??"");});}onInput(e){this.nativeValue.set(e.target.value);}renderFeedbackIcon(){if(!this.status()||!this.hasFeedback()||this.inputWrapper){this.hostView.clear(),this.feedbackRef=null;return}this.feedbackRef=this.feedbackRef||this.hostView.createComponent(hl),this.feedbackRef.location.nativeElement.classList.add("ant-input-suffix"),this.feedbackRef.setInput("status",this.status());}focus(e){il(this.elementRef.nativeElement,e);}blur(){this.elementRef.nativeElement.blur();}static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["input","nz-input",""],["textarea","nz-input",""]],hostAttrs:[1,"ant-input"],hostVars:23,hostBindings:function(n,i){n&1&&mh("input",function(l){return i.onInput(l)}),n&2&&(ch("type",i.type())("disabled",i.finalDisabled()||null)("readonly",i.readonly()||null),lw(i.classes()),Sh("ant-input-disabled",i.finalDisabled())("ant-input-outlined",i.finalVariant()==="outlined")("ant-input-borderless",i.finalVariant()==="borderless")("ant-input-filled",i.finalVariant()==="filled")("ant-input-underlined",i.finalVariant()==="underlined")("ant-input-lg",i.finalSize()==="large")("ant-input-sm",i.finalSize()==="small")("ant-input-rtl",i.dir()==="rtl")("ant-input-focused",i.focused()));},inputs:{nzVariant:[1,"nzVariant"],nzSize:[1,"nzSize"],nzStatus:[1,"nzStatus"],disabled:[1,"disabled"],readonly:[1,"readonly"]},exportAs:["nzInput"],features:[Nw([{provide:fn,useValue:"input"}]),oD([ir])]})}return t})(),rn=(()=>{class t{formBuilder=C(tp);destroyRef=C(at$1);otpInputs;nzLength=6;nzSize="default";disabled=false;nzStatus="";nzFormatter=e=>e;nzMask=null;otpArray;internalValue=[];onChangeCallback;onTouched=()=>{};constructor(){this.createFormArray();}ngOnChanges(e){e.nzLength?.currentValue&&this.createFormArray(),e.disabled&&this.setDisabledState(this.disabled);}onInput(e,n){let i=n.target,r=this.otpInputs.toArray()[e+1];i.value&&r?r.nativeElement.focus():r||this.selectInputBox(e);}onFocus(e){e.target.select();}onKeyDown(e,n){let i=this.otpInputs.toArray()[e-1];n.keyCode===8?(n.preventDefault(),this.internalValue[e]="",this.otpArray.at(e).setValue("",{emitEvent:false}),i&&this.selectInputBox(e-1),this.emitValue()):n.keyCode===37?(n.preventDefault(),this.selectInputBox(e-1)):n.keyCode===39&&(n.preventDefault(),this.selectInputBox(e+1));}writeValue(e){if(!e){this.otpArray.reset();return}let n=e.split("");this.internalValue=n,n.forEach((i,r)=>{let l=this.nzFormatter(i),G=this.nzMask?this.nzMask:l;this.otpArray.at(r).setValue(G,{emitEvent:false});});}registerOnChange(e){this.onChangeCallback=e;}registerOnTouched(e){this.onTouched=e;}setDisabledState(e){e?this.otpArray.disable():this.otpArray.enable();}onPaste(e,n){let i=n.clipboardData?.getData("text")||"";if(!i)return;let r=e;for(let l of i.split(""))if(r<this.nzLength){let G=this.nzFormatter(l);this.internalValue[r]=l;let pt=this.nzMask?this.nzMask:G;this.otpArray.at(r).setValue(pt,{emitEvent:false}),r++;}else break;n.preventDefault(),this.selectInputBox(r),this.emitValue();}createFormArray(){this.otpArray=this.formBuilder.array([]),this.internalValue=new Array(this.nzLength).fill("");for(let e=0;e<this.nzLength;e++){let n=this.formBuilder.nonNullable.control("",[Ai.required]);n.valueChanges.pipe(Zl(i=>{let r=this.nzFormatter(i);this.internalValue[e]=r,n.setValue(this.nzMask??r,{emitEvent:false}),this.emitValue();}),ue(this.destroyRef)).subscribe(),this.otpArray.push(n);}}emitValue(){let e=this.internalValue.join("");this.onChangeCallback&&this.onChangeCallback(e);}selectInputBox(e){let n=this.otpInputs.toArray();e<=0&&(e=0),e>=n.length&&(e=n.length-1),n[e].nativeElement.select();}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ZE({type:t,selectors:[["nz-input-otp"]],viewQuery:function(n,i){if(n&1&&Eh(ht,5),n&2){let r;WD(r=GD())&&(i.otpInputs=r);}},hostAttrs:[1,"ant-otp"],inputs:{nzLength:[2,"nzLength","nzLength",J0],nzSize:"nzSize",disabled:[2,"disabled","disabled",K0],nzStatus:"nzStatus",nzFormatter:"nzFormatter",nzMask:"nzMask"},exportAs:["nzInputOtp"],features:[Nw([{provide:St$1,useExisting:wo(()=>t),multi:true}]),ly],decls:2,vars:0,consts:[["otpInput",""],["nz-input","","type","text","maxlength","1","size","1",1,"ant-otp-input",3,"nzSize","formControl","nzStatus"],["nz-input","","type","text","maxlength","1","size","1",1,"ant-otp-input",3,"input","focus","keydown","paste","nzSize","formControl","nzStatus"]],template:function(n,i){n&1&&xD(0,gt,2,3,"input",1,SD),n&2&&AD(i.otpArray.controls);},dependencies:[z,np,er,rl,jc,td],encapsulation:2})}return t})(),on=(()=>{class t{inputDir=z0.required(z);inputRef=z0.required(z,{read:_r});nzEnterButton=q0(false);nzLoading=q0(false,{transform:K0});nzSearch=U0();size=Uw(()=>this.inputDir().nzSize());search(e,n="input"){this.nzLoading()||this.nzSearch.emit({value:this.inputRef().nativeElement.value,event:e,source:n});}onEnter(e){e.target===this.inputRef().nativeElement&&this.search(e);}static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["nz-input-search"]],contentQueries:function(n,i,r){n&1&&Dh(r,i.inputDir,z,5)(r,i.inputRef,z,5,_r),n&2&&zD(2);},hostAttrs:[1,"ant-input-search"],hostVars:6,hostBindings:function(n,i){n&1&&mh("keydown.enter",function(l){return i.onEnter(l)}),n&2&&Sh("ant-input-search-large",i.size()==="large")("ant-input-search-small",i.size()==="small")("ant-input-search-with-button",i.nzEnterButton()!==false);},inputs:{nzEnterButton:[1,"nzEnterButton"],nzLoading:[1,"nzLoading"]},outputs:{nzSearch:"nzSearch"},exportAs:["nzInputSearch"],features:[Nw([{provide:ct,useExisting:wo(()=>t)}])]})}return t})(),ut=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275dir=eD({type:t,selectors:[["","nzInputSearchEnterButton",""]]})}return t})(),an=(()=>{class t{focusMonitor=C(Ci);inputPasswordDir=C(lt,{self:true,optional:true});inputSearchDir=C(on,{self:true,optional:true});inputRef=z0.required(z,{read:_r});inputDir=z0.required(z);prefix=z0(ot);suffix=z0(at);addonBefore=z0(it);addonAfter=z0(rt);inputPasswordIconTmpl=z0(st,{read:Er});inputSearchEnterButton=z0(ut);nzAllowClear=q0(false,{transform:K0});nzPrefix=q0();nzSuffix=q0();nzAddonBefore=q0();nzAddonAfter=q0();nzShowCount=q0(false,{transform:K0});nzCount=q0();nzClear=U0();size=Uw(()=>this.inputDir().nzSize());variant=Uw(()=>this.inputDir().nzVariant());disabled=Uw(()=>this.inputDir().finalDisabled());readOnly=Uw(()=>this.inputDir().readonly());status=Uw(()=>this.inputDir().status());hasFeedback=Uw(()=>this.inputDir().hasFeedback());hasPrefix=Uw(()=>!!this.nzPrefix()||!!this.prefix());hasSuffix=Uw(()=>!!this.nzSuffix()||!!this.suffix()||this.nzAllowClear()||this.hasFeedback()||this.nzShowCount()||this.inputPasswordDir);hasAffix=Uw(()=>this.hasPrefix()||this.hasSuffix());hasAddonBefore=Uw(()=>!!this.nzAddonBefore()||!!this.addonBefore());hasAddonAfter=Uw(()=>!!this.nzAddonAfter()||!!this.addonAfter()||!!this.inputSearchDir);hasAddon=Uw(()=>this.hasAddonBefore()||this.hasAddonAfter());compactSize=C(pn,{optional:true});dir=C(Oe).valueSignal;focused=qo(false);isTextarea=Uw(()=>this.inputRef().nativeElement instanceof HTMLTextAreaElement);finalSize=Uw(()=>this.compactSize?this.compactSize():this.size());class=Uw(()=>this.hasAddon()?this.groupWrapperClass():this.hasAffix()?this.affixWrapperClass():null);affixWrapperClass=Uw(()=>r$1(r$1({"ant-input-affix-wrapper":true,"ant-input-affix-wrapper-lg":this.finalSize()==="large","ant-input-affix-wrapper-sm":this.finalSize()==="small","ant-input-affix-wrapper-disabled":this.disabled(),"ant-input-affix-wrapper-readonly":this.readOnly(),"ant-input-affix-wrapper-focused":this.focused(),"ant-input-affix-wrapper-rtl":this.dir()==="rtl"},Qr("ant-input-affix-wrapper",this.status(),this.hasFeedback())),tl("ant-input-affix-wrapper",this.variant())));groupWrapperClass=Uw(()=>r$1(r$1({"ant-input-group-wrapper":true,"ant-input-group-wrapper-sm":this.finalSize()==="small","ant-input-group-wrapper-lg":this.finalSize()==="large","ant-input-group-wrapper-rtl":this.dir()==="rtl"},Qr("ant-input-group-wrapper",this.status(),this.hasFeedback())),tl("ant-input-group-wrapper",this.variant())));inputValue=de(Me(this.inputDir).pipe(Nl(e=>{let n=e.ngControl;return n?(n.valueChanges??mt).pipe(Ql(n.value)):mt})));formattedValue=Uw(()=>{let e=this.nzCount(),n=this.inputValue(),i=e?.max??0,r=Nr(n)?String(n):"",l=r;return e?.exceedFormatter&&(l=e.exceedFormatter(r,{max:i})),l});computedCount=Uw(()=>{let e=this.nzCount(),n=this.formattedValue(),i=n.length;return e?.strategy&&(i=e.strategy(n)),i});dataCount=Uw(()=>{let e=this.nzCount(),n=this.computedCount(),i=e?.max;return `${n}${i?`/${i}`:""}`});isOutOfRange=Uw(()=>{let n=this.nzCount()?.max;return Zr(n)?this.computedCount()>n:false});constructor(){let e=C(at$1);Xf(()=>{let n=this.inputRef();this.focusMonitor.monitor(n).pipe(ue(e)).subscribe(i=>{this.focused.set(!!i);}),e.onDestroy(()=>{this.focusMonitor.stopMonitoring(n);});}),id(()=>{if(this.nzCount()){let n=this.inputValue(),i=this.formattedValue();Nr(n)&&i!==n&&this.inputDir().ngControl?.control?.setValue(i);}});}clear(){this.inputDir().ngControl?.control?.setValue(""),this.nzClear.emit();}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ZE({type:t,selectors:[["nz-input-wrapper"],["nz-input-password"],["nz-input-search"]],contentQueries:function(n,i,r){n&1&&Dh(r,i.inputRef,z,5,_r)(r,i.inputDir,z,5)(r,i.prefix,ot,5)(r,i.suffix,at,5)(r,i.addonBefore,it,5)(r,i.addonAfter,rt,5)(r,i.inputPasswordIconTmpl,st,5,Er)(r,i.inputSearchEnterButton,ut,5),n&2&&zD(8);},hostVars:8,hostBindings:function(n,i){n&2&&(lw(i.class()),Sh("ant-input-disabled",i.disabled())("ant-input-out-of-range",i.nzShowCount()&&i.isOutOfRange())("ant-input-affix-wrapper-textarea-with-clear-btn",i.nzAllowClear()&&i.isTextarea()));},inputs:{nzAllowClear:[1,"nzAllowClear"],nzPrefix:[1,"nzPrefix"],nzSuffix:[1,"nzSuffix"],nzAddonBefore:[1,"nzAddonBefore"],nzAddonAfter:[1,"nzAddonAfter"],nzShowCount:[1,"nzShowCount"],nzCount:[1,"nzCount"]},outputs:{nzClear:"nzClear"},exportAs:["nzInputWrapper"],features:[Nw([{provide:fn,useValue:"input"},{provide:dt,useExisting:wo(()=>t)}]),oD([ir])],ngContentSelectors:vt,decls:11,vars:1,consts:[["inputWithAddonInner",""],["inputWithAffix",""],["inputWithAffixInner",""],["input",""],[3,"ngTemplateOutlet"],[1,"ant-input-wrapper","ant-input-group"],[1,"ant-input-group-addon"],["nz-button","","type","button",1,"ant-input-search-button",3,"nzType","nzSize","nzLoading"],["nz-button","","type","button",1,"ant-input-search-button",3,"click","nzType","nzSize","nzLoading"],["nzType","search","nzTheme","outline"],[1,"ant-input-prefix"],[1,"ant-input-suffix"],["role","button","tabindex","-1",1,"ant-input-clear-icon",3,"ant-input-clear-icon-has-suffix","ant-input-clear-icon-hidden"],[1,"ant-input-show-count-suffix"],["role","button","tabindex","-1",1,"ant-input-password-icon"],[3,"status"],["role","button","tabindex","-1",1,"ant-input-clear-icon",3,"click"],["nzType","close-circle","nzTheme","fill"],["role","button","tabindex","-1",1,"ant-input-password-icon",3,"click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],["nzTheme","outline",3,"nzType"]],template:function(n,i){n&1&&($D(_t),_D(0,bt,1,1,null,4)(1,Nt,1,1,null,4)(2,xt,1,1,null,4),rh(3,Ot,5,3,"ng-template",null,0,Vw)(5,Wt,2,3,"ng-template",null,1,Vw)(7,en,3,3,"ng-template",null,2,Vw)(9,tn,1,0,"ng-template",null,3,Vw)),n&2&&MD(i.hasAddon()?0:i.hasAffix()?1:2);},dependencies:[Ah,Th,pf,bd,sp,fp,hl,w5],encapsulation:2})}return t})();var ai=(()=>{class t{static \u0275fac=function(n){return new(n||t)};static \u0275mod=KE({type:t});static \u0275inj=fu({imports:[an,rn]})}return t})();export{ai as a,at as b,it as i,ot as o,rt as r,z};
@@ -0,0 +1 @@
1
+ import {C,b4 as N2,aV as ix,b_ as u,b5 as cx,i as ie}from'./main-CHQMTVIP.js';var b=(()=>{class r{constructor(){this.http=C(N2),this.baseUrl=`${ix.apiBaseUrl}/workflows`;}list(t){return this.http.get(this.baseUrl,{params:u(t)}).pipe(cx())}get(t){return this.http.get(`${this.baseUrl}/${encodeURIComponent(t)}`).pipe(cx())}create(t){return this.http.post(this.baseUrl,t).pipe(cx())}update(t,i){return this.http.patch(`${this.baseUrl}/${encodeURIComponent(t)}`,i).pipe(cx())}delete(t){return this.http.delete(`${this.baseUrl}/${encodeURIComponent(t)}`).pipe(cx())}exportDefinition(t){return this.http.get(`${this.baseUrl}/${encodeURIComponent(t)}/export`).pipe(cx())}importDefinition(t){return this.http.post(`${this.baseUrl}/import`,t).pipe(cx())}getInstructions(){return this.http.get(`${this.baseUrl}/instructions`,{responseType:"text"}).pipe(cx())}static{this.\u0275fac=function(i){return new(i||r)};}static{this.\u0275prov=ie({token:r,factory:r.\u0275fac,providedIn:"root"});}}return r})();export{b};