@knoflows/engine 0.1.0-alpha.1 → 0.1.0-alpha.10

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 (74) hide show
  1. package/README.md +2 -2
  2. package/dist/engine.js +33 -132
  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/package.json +19 -10
  10. package/static/assets/i18n/en.json +253 -16
  11. package/static/assets/i18n/es.json +253 -16
  12. package/static/chunk-2KSNHCgb.js +1 -0
  13. package/static/chunk-3mppll1n.js +1 -0
  14. package/static/chunk-6BQlxALO.js +1 -0
  15. package/static/chunk-A4AkMf2s.js +1 -0
  16. package/static/chunk-B2hO-qT3.js +1 -0
  17. package/static/chunk-B8MrNxxk.js +1 -0
  18. package/static/{chunk-CeFjDLjY.js → chunk-BAc0DRm8.js} +1 -1
  19. package/static/chunk-BFkZ796p.js +7 -0
  20. package/static/chunk-BNOYZq-b.js +1 -0
  21. package/static/chunk-BUuwGTt7.js +66 -0
  22. package/static/chunk-BVw7xkK9.js +1 -0
  23. package/static/chunk-BbcTWKT2.js +1 -0
  24. package/static/chunk-BhGgxvgu.js +1 -0
  25. package/static/chunk-BjZIiizu.js +1 -0
  26. package/static/chunk-CDWIMt6y.js +1 -0
  27. package/static/{chunk-C50zASMN.js → chunk-CEcbtdnK.js} +1 -1
  28. package/static/chunk-CJDp11v5.js +1 -0
  29. package/static/chunk-CJRNatUw.js +1 -0
  30. package/static/chunk-CWbxWv5I.js +1 -0
  31. package/static/chunk-Cd8F2jeN.js +1 -0
  32. package/static/chunk-Cf_xd8ER.js +1 -0
  33. package/static/chunk-CgqRVtSF.js +1 -0
  34. package/static/chunk-CxBYhrEj.js +1 -0
  35. package/static/chunk-D6YfO72h.js +1 -0
  36. package/static/{chunk-Dw1tJgiv.js → chunk-DNOjVPY0.js} +1 -1
  37. package/static/chunk-DQnMulwi.js +1 -0
  38. package/static/chunk-DblClAqu.js +1 -0
  39. package/static/chunk-DjibVmY7.js +1 -0
  40. package/static/chunk-DoXxOh8j.js +1 -0
  41. package/static/{chunk-CSPhdKAb.js → chunk-Ojn34cvU.js} +1 -1
  42. package/static/chunk-W5GAgssE.js +1 -0
  43. package/static/chunk-XLpSkczx.js +1 -0
  44. package/static/chunk-cHfOiAJm.js +1 -0
  45. package/static/{chunk-ZijlINsH.js → chunk-eSxb3-OU.js} +1 -1
  46. package/static/chunk-hZzW00VR.js +1 -0
  47. package/static/chunk-jct1_zOr.js +1 -0
  48. package/static/chunk-mzyds3TS.js +1 -0
  49. package/static/chunk-tYnBYi0l.js +1 -0
  50. package/static/chunk-wbdetocK.js +5 -0
  51. package/static/index.html +2 -2
  52. package/static/main-MNK6ZYDO.js +249 -0
  53. package/static/chunk-8DHqiag3.js +0 -1
  54. package/static/chunk-B4GVyu_H.js +0 -1
  55. package/static/chunk-B5hULR_G.js +0 -1
  56. package/static/chunk-BDOL5Qby.js +0 -1
  57. package/static/chunk-BJLDaNHl.js +0 -1
  58. package/static/chunk-BQYw1slv.js +0 -1
  59. package/static/chunk-BU5DKI8R.js +0 -1
  60. package/static/chunk-BquD19tF.js +0 -5
  61. package/static/chunk-C40TdCIk.js +0 -1
  62. package/static/chunk-C9CuVcTl.js +0 -1
  63. package/static/chunk-CCjvFBCX.js +0 -1
  64. package/static/chunk-CPxI4OjB.js +0 -1
  65. package/static/chunk-CgvdAwRh.js +0 -1
  66. package/static/chunk-Cnkrtkdu.js +0 -7
  67. package/static/chunk-Csk1w6sD.js +0 -1
  68. package/static/chunk-DI-Ex2sC.js +0 -1
  69. package/static/chunk-DK8z5vU5.js +0 -1
  70. package/static/chunk-DS9-TMN6.js +0 -1
  71. package/static/chunk-DxRo8m4J.js +0 -66
  72. package/static/chunk-DyP6QbgY.js +0 -1
  73. package/static/chunk-KyBZUWGU.js +0 -1
  74. package/static/main-BK4MAPTK.js +0 -249
@@ -4,16 +4,108 @@
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.jobsWaiting": "Trabajos esperándote",
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
+ "manage.views.title": "Vistas y atajos",
84
+ "manage.views.createView": "Crear una vista",
85
+ "manage.views.createShortcut": "Crear un atajo",
86
+ "manage.views.emptyState": "Aún no hay vistas ni atajos. Crea uno para empezar.",
87
+ "manage.views.column.name": "Nombre",
88
+ "manage.views.column.type": "Tipo",
89
+ "manage.views.column.workflow": "Flujo asociado",
90
+ "manage.views.column.subjectType": "Tipo de sujeto",
91
+ "manage.views.column.actions": "Acciones",
92
+ "manage.views.type.view": "Vista",
93
+ "manage.views.type.shortcut": "Atajo",
94
+ "manage.views.noSubjectType": "—",
95
+ "manage.views.edit": "Editar",
96
+ "manage.views.delete": "Eliminar",
97
+ "manage.views.deleteConfirmView": "¿Seguro que quieres eliminar esta vista?",
98
+ "manage.views.deleteConfirmShortcut": "¿Seguro que quieres eliminar este atajo?",
99
+ "manage.views.deleteFailed": "No se pudo eliminar",
100
+ "manage.views.loadFailed": "No se pudieron cargar las vistas y los atajos",
10
101
  "shell.group.tickets": "Tickets",
11
102
  "shell.group.pullRequests": "Pull requests",
12
103
  "shell.group.documentation": "Documentación",
104
+ "shell.shortcuts": "Atajos",
13
105
  "shell.provider.jira": "Jira",
14
106
  "shell.provider.bitbucket": "Bitbucket",
15
107
  "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 una vista.",
108
+ "shell.empty.body": "Las vistas y atajos aparecerán aquí cuando configures un proveedor en Ajustes y guardes al menos uno.",
17
109
  "shell.empty.settingsLink": "Abrir Ajustes",
18
110
  "nav.language": "Idioma",
19
111
  "nav.localeCheck": "Comprobación de locale",
@@ -21,8 +113,8 @@
21
113
  "common.cancel": "Cancelar",
22
114
  "common.loading": "Cargando…",
23
115
  "common.errorGeneric": "Algo salió mal",
24
- "jobs.title": "Kno — Iniciar un trabajo",
25
- "jobs.lede": "Elige un flujo de cardinalidad única e inicia un trabajo. La observación y la reanudación viven en la página de detalle del trabajo.",
116
+ "jobs.title": "Knoflows — Iniciar un trabajo",
117
+ "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
118
  "jobs.start.heading": "Iniciar un trabajo",
27
119
  "jobs.start.workflow": "Flujo de trabajo",
28
120
  "jobs.start.subjectId": "subjectId",
@@ -49,6 +141,9 @@
49
141
  "jobs.errors.subjectIdRequired": "subjectId es obligatorio para este flujo",
50
142
  "jobs.errors.startFailed": "No se pudo iniciar el trabajo",
51
143
  "jobs.errors.resumeFailed": "No se pudo reanudar el trabajo",
144
+ "jobs.errors.retryFailed": "No se pudo reintentar el trabajo",
145
+ "jobs.errors.retryStepFailed": "No se pudo reintentar el paso",
146
+ "jobs.errors.cancelFailed": "No se pudo cancelar el trabajo",
52
147
  "jobs.errors.refreshFailed": "No se pudo actualizar el trabajo",
53
148
  "jobs.detail.backToStart": "Volver a trabajos",
54
149
  "jobs.detail.loadFailed": "No se pudo cargar el trabajo",
@@ -56,6 +151,13 @@
56
151
  "jobs.detail.workflowMissing": "La definición del flujo no está disponible; no se puede mostrar la lista de pasos.",
57
152
  "jobs.detail.queued": "En cola — esperando que comience el primer paso.",
58
153
  "jobs.detail.jumpToCurrent": "Ir al paso actual",
154
+ "jobs.detail.retryWorkflow": "Reintentar todo el flujo",
155
+ "jobs.detail.retryStep": "Reintentar este paso",
156
+ "jobs.detail.retrying": "Reintentando…",
157
+ "jobs.detail.cancel": "Cancelar",
158
+ "jobs.detail.cancelling": "Cancelando…",
159
+ "jobs.detail.worktree": "Worktree",
160
+ "jobs.detail.worktreeDeleted": "Worktree eliminado",
59
161
  "jobs.detail.stepsHeading": "Pasos",
60
162
  "jobs.detail.noStepSelected": "Selecciona un paso para ver su salida.",
61
163
  "jobs.detail.loopBack": "Volver al bucle",
@@ -79,6 +181,9 @@
79
181
  "jobs.table.column.subject": "Sujeto",
80
182
  "jobs.table.column.started": "Inicio",
81
183
  "jobs.table.column.completed": "Fin",
184
+ "jobs.table.column.actions": "Acciones",
185
+ "jobs.table.retry": "Reintentar",
186
+ "jobs.table.cancel": "Cancelar",
82
187
  "jobs.list.title": "Trabajos",
83
188
  "jobs.list.filterByStatus": "Filtrar por estado",
84
189
  "jobs.list.filterByWorkflow": "Filtrar por flujo",
@@ -87,23 +192,28 @@
87
192
  "jobs.list.empty": "Ningún trabajo coincide con estos filtros.",
88
193
  "jobs.list.loadFailed": "No se pudieron cargar los trabajos",
89
194
  "jobs.list.filterAll": "Todos",
195
+ "jobs.list.running": "En ejecución",
196
+ "jobs.list.history": "Historial",
197
+ "jobs.list.runningEmpty": "No hay trabajos en ejecución.",
198
+ "jobs.list.historyEmpty": "Ningún trabajo coincide con estos filtros.",
90
199
  "workflow-editor.loading": "Cargando…",
91
200
  "workflow-editor.titleNew": "Nuevo flujo",
92
201
  "workflow-editor.titleEdit": "Editar flujo · {{id}}",
93
- "workflow-editor.backToJobs": "Volver a trabajos",
202
+ "workflow-editor.backToWorkflows": "Volver a flujos",
94
203
  "workflow-editor.validation": "Validación",
95
204
  "workflow-editor.basics": "Básicos",
96
205
  "workflow-editor.name": "name",
97
206
  "workflow-editor.appliesTo": "appliesTo",
98
- "workflow-editor.cardinality.label": "cardinality",
207
+ "workflow-editor.subjectHandling.label": "Elementos",
99
208
  "workflow-editor.description": "description",
100
209
  "workflow-editor.subjectType.none": "none",
101
210
  "workflow-editor.subjectType.ticket": "ticket",
102
211
  "workflow-editor.subjectType.pull_request": "pull_request",
103
212
  "workflow-editor.subjectType.documentation": "documentation",
104
- "workflow-editor.cardinality.single": "single",
105
- "workflow-editor.cardinality.batch": "batch",
106
- "workflow-editor.cardinality.aggregate": "aggregate",
213
+ "workflow-editor.subjectHandling.per-subject": "De uno en uno",
214
+ "workflow-editor.subjectHandling.collection": "En conjunto",
215
+ "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.",
216
+ "workflow-editor.subjectHandling.help.collection": "Los pasos ven todo el conjunto seleccionado y producen un resultado combinado.",
107
217
  "workflow-editor.notificationPolicy": "Política de notificaciones",
108
218
  "workflow-editor.trigger.on_fail": "on_fail",
109
219
  "workflow-editor.trigger.on_complete": "on_complete",
@@ -117,6 +227,7 @@
117
227
  "workflow-editor.inputType.number": "number",
118
228
  "workflow-editor.inputType.boolean": "boolean",
119
229
  "workflow-editor.inputType.select": "select",
230
+ "workflow-editor.inputType.localRepository": "Repositorio local",
120
231
  "workflow-editor.required": "obligatorio",
121
232
  "workflow-editor.remove": "Eliminar",
122
233
  "workflow-editor.addInputField": "Añadir campo de entrada",
@@ -128,12 +239,14 @@
128
239
  "step-list.moveDown": "Bajar",
129
240
  "step-list.remove": "Eliminar",
130
241
  "step-list.addStep": "Añadir paso",
242
+ "step-list.unnamed": "Sin nombre",
131
243
  "step-list.name": "Nombre",
132
244
  "step-list.id": "Id",
133
245
  "step-list.idHint": "Se genera a partir del nombre del paso — edítalo directamente si quieres otra referencia.",
134
- "step-list.objective": "Objetivo",
135
- "step-list.knowledgeScope": "Alcance de conocimiento",
136
- "step-list.knowledgeScopeHint": "Déjalos sin marcar para omitir (todos los niveles).",
246
+ "step-list.objective": "Prompt",
247
+ "step-list.contextFiles": "Archivos de contexto",
248
+ "step-list.contextFilesEmpty": "Ninguno seleccionado",
249
+ "step-list.selectContextFiles": "Seleccionar archivos de contexto",
137
250
  "step-list.outputFormat.label": "Formato de salida",
138
251
  "step-list.interaction.label": "Interacción",
139
252
  "step-list.notify": "Notificar",
@@ -173,11 +286,32 @@
173
286
  "step-list.gitOperation.create_branch": "create_branch",
174
287
  "step-list.gitOperation.commit": "commit",
175
288
  "step-list.gitOperation.push": "push",
289
+ "step-list.createWorktree.mode": "Modo",
290
+ "step-list.createWorktree.newBranch": "Rama nueva",
291
+ "step-list.createWorktree.existingBranch": "Rama existente",
292
+ "step-list.createWorktree.repoPath": "Ruta del repositorio",
293
+ "step-list.createWorktree.baseBranch": "Rama base",
294
+ "step-list.createWorktree.branchName": "Nombre de rama",
295
+ "step-list.createWorktree.branch": "Rama",
176
296
  "step-list.providerAction.get_subject": "get_subject",
177
297
  "step-list.providerAction.get_comments": "get_comments",
178
298
  "step-list.providerAction.post_comment": "post_comment",
179
299
  "step-list.providerAction.update_status": "update_status",
180
300
  "step-list.providerAction.get_content": "get_content",
301
+ "step-list.extendedAction.mode": "Origen de la acción",
302
+ "step-list.extendedAction.portable": "Acción portable",
303
+ "step-list.extendedAction.extended": "Usar una acción extendida",
304
+ "step-list.extendedAction.provider": "Proveedor",
305
+ "step-list.extendedAction.action": "Acción extendida",
306
+ "step-list.extendedAction.none": "Elige una acción",
307
+ "step-list.extendedAction.empty": "Este proveedor no tiene acciones extendidas",
308
+ "step-list.extendedAction.mismatch": "Requiere {{required}} — {{active}} está configurado ahora",
309
+ "step-list.target.toggle": "Apuntar a otro sujeto",
310
+ "step-list.target.subjectType": "Tipo de sujeto",
311
+ "step-list.target.source": "Instancia de proveedor",
312
+ "step-list.target.sourcePlaceholder": "Elige una instancia",
313
+ "step-list.target.subjectId": "Id del sujeto",
314
+ "step-list.target.subjectIdHint": "Suele ser una referencia interpolada a un paso anterior, p. ej. resolve-key",
181
315
  "step-list.knowledgeTier.user": "user",
182
316
  "step-list.knowledgeTier.organization": "organization",
183
317
  "step-list.knowledgeTier.project": "project",
@@ -187,7 +321,50 @@
187
321
  "step-list.onMaxIterations.continue": "continue",
188
322
  "step-list.onMaxIterations.ask_human": "ask_human",
189
323
  "settings.title": "Ajustes",
190
- "settings.lede": "Elige qué proveedores usa Kno y guarda las claves de API. Las claves aplican de inmediato; cambiar una implementación requiere reiniciar.",
324
+ "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.",
325
+ "settings.addProvider": "Añadir proveedor",
326
+ "settings.editProvider": "Editar proveedor",
327
+ "settings.addInstance": "Añadir instancia de proveedor",
328
+ "settings.addInstance.submit": "Añadir instancia",
329
+ "settings.removeInstance": "Quitar",
330
+ "settings.edit": "Editar",
331
+ "settings.delete": "Eliminar",
332
+ "settings.deleteConfirm": "¿Seguro que quieres eliminar esta instancia de proveedor?",
333
+ "settings.kind.label": "Tipo de instancia",
334
+ "settings.kind.subject": "Proveedor de sujetos",
335
+ "settings.kind.agent": "Agente",
336
+ "settings.type.label": "Tipo",
337
+ "settings.typeOption.jira": "Jira",
338
+ "settings.typeOption.bitbucket": "Bitbucket",
339
+ "settings.typeOption.github": "GitHub Issues",
340
+ "settings.typeOption.confluence": "Confluence",
341
+ "settings.typeOption.manualTicket": "Manual (ticket)",
342
+ "settings.typeOption.manualDocumentation": "Manual (documentación)",
343
+ "settings.typeOption.claude": "Claude",
344
+ "settings.typeOption.cursor": "Cursor",
345
+ "settings.subjectType.label": "Tipo de sujeto",
346
+ "settings.instanceId": "Id de instancia",
347
+ "settings.instanceIdHint": "Se genera a partir del nombre visible — edítalo directamente si quieres otro id.",
348
+ "settings.displayName": "Nombre visible",
349
+ "settings.displayNameRequired": "El nombre visible es obligatorio",
350
+ "settings.defaultAgent.label": "Agente predeterminado",
351
+ "settings.defaultAgent.toggle": "Establecer como agente predeterminado",
352
+ "settings.column.displayName": "Nombre visible",
353
+ "settings.column.type": "Tipo",
354
+ "settings.column.expiresOn": "Caduca el",
355
+ "settings.column.default": "Predeterminado",
356
+ "settings.column.actions": "Acciones",
357
+ "settings.expiresOn.label": "Caduca el",
358
+ "settings.expiresOn.hint": "Solo un recordatorio manual — Knoflows no comprueba esta fecha con el proveedor.",
359
+ "settings.ticket.github": "GitHub Issues",
360
+ "settings.github.username": "Usuario de GitHub",
361
+ "step-list.agentInstance.label": "Agente",
362
+ "step-list.agentInstance.default": "Usar el agente predeterminado",
363
+ "views.editor.instance": "Instancia de proveedor",
364
+ "views.editor.instancePlaceholder": "Selecciona una instancia de proveedor",
365
+ "views.editor.instanceNeeded": "Esta vista no tiene instancia de proveedor. Elige una para terminar la configuración.",
366
+ "views.editor.noEligibleInstances": "Ningún proveedor configurado admite el tipo de sujeto de este flujo — añade uno en Administrar → Proveedores primero",
367
+ "views.editor.pickInstance": "Elige una instancia de proveedor",
191
368
  "settings.section.ticket": "Seguimiento de tickets",
192
369
  "settings.section.repo": "Alojamiento de repositorios",
193
370
  "settings.section.agent": "Agente de código",
@@ -202,6 +379,8 @@
202
379
  "settings.agent.cursor": "Cursor",
203
380
  "settings.jira.baseUrl": "URL base de Jira",
204
381
  "settings.jira.email": "Correo de Jira",
382
+ "settings.confluence.baseUrl": "URL base de Confluence",
383
+ "settings.confluence.email": "Correo de Confluence",
205
384
  "settings.bitbucket.baseUrl": "URL base de Bitbucket",
206
385
  "settings.bitbucket.email": "Correo de Bitbucket",
207
386
  "settings.bitbucket.workspace": "Espacio de trabajo de Bitbucket",
@@ -209,21 +388,32 @@
209
388
  "settings.apiKey.configured": "Configurada ✓",
210
389
  "settings.apiKey.notConfigured": "No configurada",
211
390
  "settings.apiKey.placeholder": "Introduce una clave nueva para reemplazar la guardada",
391
+ "settings.apiKey.placeholderCreate": "Clave de API",
392
+ "settings.apiKey.placeholderEdit": "Déjalo en blanco para conservar la clave actual",
393
+ "settings.apiKey.required": "La clave de API es obligatoria",
212
394
  "settings.apiKey.set": "Guardar clave",
213
395
  "settings.apiKey.setSuccess": "Clave de API guardada",
214
396
  "settings.apiKey.setFailed": "No se pudo guardar la clave de API",
215
- "settings.restartRequired.message": "Algunos cambios requieren reiniciar Kno para aplicarse",
397
+ "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.",
398
+ "settings.model.label": "Modelo predeterminado",
399
+ "settings.model.placeholder": "Predeterminado del proveedor",
400
+ "settings.model.fetch": "Obtener modelos disponibles",
401
+ "settings.model.fetchFailed": "No se pudieron obtener los modelos",
402
+ "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.",
403
+ "settings.restartRequired.message": "Algunos cambios requieren reiniciar Knoflows para aplicarse",
216
404
  "settings.saveSuccess": "Ajustes guardados",
217
405
  "settings.saveFailed": "No se pudieron guardar los ajustes",
218
406
  "settings.validation": "Validación",
219
407
  "settings.loadFailed": "No se pudieron cargar los ajustes",
220
408
  "workflows.list.title": "Flujos",
221
409
  "workflows.list.createButton": "Crear flujo",
410
+ "workflows.list.browseLibrary": "Examinar biblioteca",
222
411
  "workflows.list.emptyState": "Aún no hay flujos. Crea uno para empezar.",
223
412
  "workflows.list.emptyCreateButton": "Crea tu primer flujo",
413
+ "workflows.list.emptyBrowseLibrary": "Examinar la biblioteca",
224
414
  "workflows.list.stepCount": "{{count}} pasos",
225
415
  "workflows.list.noDescription": "Sin descripción",
226
- "workflows.list.filterByLaunchMode": "Filtrar por modo de lanzamiento",
416
+ "workflows.list.filterBySubjectHandling": "Filtrar por elementos",
227
417
  "workflows.list.filterAll": "Todos",
228
418
  "workflows.list.edit": "Editar",
229
419
  "workflows.list.delete": "Eliminar",
@@ -234,6 +424,17 @@
234
424
  "workflows.list.column.steps": "Pasos",
235
425
  "workflows.list.column.actions": "Acciones",
236
426
  "workflows.list.loadFailed": "No se pudieron cargar los flujos",
427
+ "workflow-library.title": "Biblioteca de flujos",
428
+ "workflow-library.lede": "Copia un ejemplo a tu espacio de trabajo. Una vez añadido, es tuyo para editarlo.",
429
+ "workflow-library.source.example": "Ejemplo",
430
+ "workflow-library.source.community": "Comunidad",
431
+ "workflow-library.source.official": "Oficial",
432
+ "workflow-library.previewSteps": "Ver pasos",
433
+ "workflow-library.hideSteps": "Ocultar pasos",
434
+ "workflow-library.add": "Añadir a mis flujos",
435
+ "workflow-library.adding": "Añadiendo…",
436
+ "workflow-library.loadFailed": "No se pudo cargar la biblioteca de flujos",
437
+ "workflow-library.addFailed": "No se pudo añadir este flujo",
237
438
  "views.list.title": "Vistas",
238
439
  "views.list.createButton": "Crear vista",
239
440
  "views.list.emptyState": "Aún no hay vistas. Crea una para empezar.",
@@ -245,15 +446,24 @@
245
446
  "views.list.loadFailed": "No se pudieron cargar las vistas",
246
447
  "views.list.column.name": "Nombre",
247
448
  "views.list.column.subjectType": "Tipo de sujeto",
449
+ "views.list.column.workflow": "Flujo",
248
450
  "views.list.column.query": "Consulta",
249
451
  "views.list.column.actions": "Acciones",
250
452
  "views.editor.titleNew": "Nueva vista",
251
453
  "views.editor.titleEdit": "Editar vista · {{id}}",
252
454
  "views.editor.backToList": "Volver a vistas",
253
455
  "views.editor.name": "Nombre",
456
+ "views.editor.workflow": "Flujo",
254
457
  "views.editor.subjectType": "Tipo de sujeto",
255
458
  "views.editor.query": "Consulta (JSON)",
256
- "views.editor.queryHint": "Objeto de filtro del proveedor en crudo. El constructor de consultas llega después.",
459
+ "views.editor.queryHint": "Objeto de filtro del proveedor en crudo. Úsalo cuando ninguna plantilla cubra lo que necesitas.",
460
+ "views.editor.queryMode": "Consulta",
461
+ "views.editor.queryMode.template": "Plantilla",
462
+ "views.editor.queryMode.raw": "JSON en crudo",
463
+ "views.editor.template": "Plantilla",
464
+ "views.editor.pickTemplate": "Elige una plantilla de consulta, o pasa a JSON en crudo",
465
+ "views.editor.missingParam": "{{label}} es obligatorio",
466
+ "views.editor.resolveFailed": "No se pudo resolver la plantilla de consulta",
257
467
  "views.editor.invalidJson": "La consulta debe ser un objeto JSON",
258
468
  "views.editor.validation": "Validación",
259
469
  "views.editor.created": "Vista creada",
@@ -283,14 +493,41 @@
283
493
  "views.detail.start": "Iniciar",
284
494
  "views.detail.rowStartWorkflow": "Flujo único para inicio por fila",
285
495
  "views.detail.emptySubjects": "Ningún sujeto coincide con esta vista ahora.",
496
+ "runnableTable.column.item": "Elemento",
497
+ "runnableTable.column.latestRun": "Última ejecución",
498
+ "runnableTable.column.actions": "Acciones",
499
+ "runnableTable.run": "Ejecutar",
500
+ "runnableTable.runSelected": "Ejecutar seleccionados ({{count}})",
501
+ "runnableTable.neverRun": "Nunca ejecutado",
502
+ "shortcuts.list.title": "Atajos",
503
+ "shortcuts.list.createButton": "Crear atajo",
504
+ "shortcuts.list.emptyState": "Aún no hay atajos. Crea uno para ejecutar un flujo sin sujeto con entradas guardadas.",
505
+ "shortcuts.list.emptyCreateButton": "Crea tu primer atajo",
506
+ "shortcuts.list.loadFailed": "No se pudieron cargar los atajos",
507
+ "shortcuts.list.runFailed": "No se pudo iniciar el atajo",
508
+ "shortcuts.list.deleteFailed": "No se pudo eliminar el atajo",
509
+ "shortcuts.editor.titleNew": "Nuevo atajo",
510
+ "shortcuts.editor.titleEdit": "Editar atajo · {{id}}",
511
+ "shortcuts.editor.backToList": "Volver a atajos",
512
+ "shortcuts.editor.name": "Nombre",
513
+ "shortcuts.editor.workflow": "Flujo",
514
+ "shortcuts.editor.validation": "Validación",
515
+ "shortcuts.editor.created": "Atajo creado",
516
+ "shortcuts.editor.saved": "Atajo guardado",
517
+ "shortcuts.editor.saveFailed": "No se pudo guardar el atajo",
518
+ "shortcuts.editor.loadFailed": "No se pudo cargar el atajo",
286
519
  "batches.detail.backHint": "Volver a vistas",
287
520
  "batches.detail.loadFailed": "No se pudo cargar el lote",
288
521
  "batches.detail.subjectCount": "{{count}} sujetos",
289
522
  "batches.detail.membersHeading": "Trabajos miembros",
523
+ "batches.detail.cancel": "Cancelar lote",
524
+ "batches.detail.cancelling": "Cancelando…",
525
+ "batches.errors.cancelFailed": "No se pudo cancelar el lote",
290
526
  "batches.status.running": "En ejecución",
291
527
  "batches.status.completed": "Completado",
292
528
  "batches.status.completed_with_issues": "Completado con problemas",
293
529
  "batches.status.failed": "Fallido",
530
+ "batches.status.cancelled": "Cancelado",
294
531
  "batches.triggeredBy.schedule": "Programación",
295
532
  "batches.triggeredBy.view_bulk": "Vista (todos los coincidentes)",
296
533
  "batches.triggeredBy.multiselect": "Selección múltiple"
@@ -0,0 +1 @@
1
+ import {C,ae as Zi,a8 as a,af as E,i as ie}from'./main-MNK6ZYDO.js';var f=(()=>{class r{constructor(){this.http=C(Zi),this.baseUrl=`${a.apiBaseUrl}/local-repositories`;}list(){return this.http.get(this.baseUrl).pipe(E())}get(t){return this.http.get(`${this.baseUrl}/${encodeURIComponent(t)}`).pipe(E())}create(t){return this.http.post(this.baseUrl,t).pipe(E())}update(t,i){return this.http.patch(`${this.baseUrl}/${encodeURIComponent(t)}`,i).pipe(E())}delete(t){return this.http.delete(`${this.baseUrl}/${encodeURIComponent(t)}`).pipe(E())}static{this.\u0275fac=function(i){return new(i||r)};}static{this.\u0275prov=ie({token:r,factory:r.\u0275fac,providedIn:"root"});}}return r})();export{f};