@knoflows/engine 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +28 -0
  3. package/dist/engine.js +129 -0
  4. package/package.json +64 -0
  5. package/static/assets/i18n/en.json +287 -0
  6. package/static/assets/i18n/es.json +287 -0
  7. package/static/chunk-8joH1h3C.js +1 -0
  8. package/static/chunk-B4A7hSM3.js +1 -0
  9. package/static/chunk-B5hULR_G.js +1 -0
  10. package/static/chunk-B8aKNL-C.js +1 -0
  11. package/static/chunk-BNylhXVN.js +1 -0
  12. package/static/chunk-BV9svMMc.js +1 -0
  13. package/static/chunk-BX5sYPy1.js +1 -0
  14. package/static/chunk-Be6g3Cmv.js +1 -0
  15. package/static/chunk-Bgtkf8nM.js +1 -0
  16. package/static/chunk-Bl6kwpIK.js +1 -0
  17. package/static/chunk-BvDaTl4u.js +1 -0
  18. package/static/chunk-ByacugWF.js +1 -0
  19. package/static/chunk-CPYgCVHJ.js +1 -0
  20. package/static/chunk-CRPsjdw8.js +1 -0
  21. package/static/chunk-CZLubDvD.js +1 -0
  22. package/static/chunk-Cczqw9G5.js +1 -0
  23. package/static/chunk-CntkJjcW.js +1 -0
  24. package/static/chunk-Cuh7ppOq.js +1 -0
  25. package/static/chunk-Cv76Fxhr.js +66 -0
  26. package/static/chunk-D3rwM_uV.js +7 -0
  27. package/static/chunk-DHPxevqq.js +1 -0
  28. package/static/chunk-DLA1DsR_.js +1 -0
  29. package/static/chunk-DYzjfNdD.js +1 -0
  30. package/static/chunk-DdSpqYCm.js +5 -0
  31. package/static/chunk-Di8Mt9Sl.js +1 -0
  32. package/static/chunk-Di_OsX8x.js +1 -0
  33. package/static/chunk-DlU8g0UO.js +1 -0
  34. package/static/chunk-DpU7iV6a.js +1 -0
  35. package/static/chunk-JvTI8UXr.js +1 -0
  36. package/static/chunk-fWbYKoKA.js +1 -0
  37. package/static/chunk-iJsU0w_6.js +1 -0
  38. package/static/chunk-mjUdDQQg.js +1 -0
  39. package/static/index.html +11 -0
  40. package/static/main-JSLBK4RN.js +235 -0
  41. package/static/polyfills-YMBILSHJ.js +2 -0
  42. package/static/styles-W2TNDHKW.css +1 -0
@@ -0,0 +1,287 @@
1
+ {
2
+ "nav.jobs": "Jobs",
3
+ "nav.editClarify": "Edit wf-clarify",
4
+ "nav.newWorkflow": "New workflow",
5
+ "nav.workflows": "Workflows",
6
+ "nav.views": "Views",
7
+ "nav.settings": "Settings",
8
+ "nav.language": "Language",
9
+ "nav.localeCheck": "Locale check",
10
+ "common.save": "Save",
11
+ "common.cancel": "Cancel",
12
+ "common.loading": "Loading…",
13
+ "common.errorGeneric": "Something went wrong",
14
+ "jobs.title": "Kno — Start a Job",
15
+ "jobs.lede": "Pick a single-cardinality workflow and start a Job. Watching and resume live on the Job detail page.",
16
+ "jobs.start.heading": "Start a Job",
17
+ "jobs.start.workflow": "Workflow",
18
+ "jobs.start.subjectId": "subjectId",
19
+ "jobs.start.subjectIdPlaceholder": "e.g. T-1",
20
+ "jobs.start.button": "Start",
21
+ "jobs.start.starting": "Starting…",
22
+ "jobs.status.pending": "Pending",
23
+ "jobs.status.planning": "Planning",
24
+ "jobs.status.waiting_for_human": "Waiting for human",
25
+ "jobs.status.waiting_for_children": "Waiting for children",
26
+ "jobs.status.implementing": "Implementing",
27
+ "jobs.status.testing": "Testing",
28
+ "jobs.status.completed": "Completed",
29
+ "jobs.status.failed": "Failed",
30
+ "jobs.status.cancelled": "Cancelled",
31
+ "jobs.resume.heading": "Waiting for human",
32
+ "jobs.resume.noQuestions": "No questions on the waiting event yet.",
33
+ "jobs.resume.jsonLabel": "Resume response (JSON)",
34
+ "jobs.resume.button": "Resume",
35
+ "jobs.resume.submitting": "Submitting…",
36
+ "jobs.resume.invalidJson": "Resume body must be valid JSON",
37
+ "jobs.failed.fallback": "Job failed",
38
+ "jobs.errors.loadWorkflows": "Failed to load workflows",
39
+ "jobs.errors.subjectIdRequired": "subjectId is required for this workflow",
40
+ "jobs.errors.startFailed": "Failed to start job",
41
+ "jobs.errors.resumeFailed": "Failed to resume job",
42
+ "jobs.errors.refreshFailed": "Failed to refresh job",
43
+ "jobs.detail.backToStart": "Back to jobs",
44
+ "jobs.detail.loadFailed": "Failed to load job",
45
+ "jobs.detail.workflowLoadFailed": "Failed to load workflow definition for this job",
46
+ "jobs.detail.workflowMissing": "Workflow definition is unavailable; step list cannot be shown.",
47
+ "jobs.detail.queued": "Queued — waiting for the first step to start.",
48
+ "jobs.detail.jumpToCurrent": "Jump to current step",
49
+ "jobs.detail.stepsHeading": "Steps",
50
+ "jobs.detail.noStepSelected": "Select a step to inspect its output.",
51
+ "jobs.detail.loopBack": "Back to loop",
52
+ "jobs.detail.loopIteration": "Iteration {{index}}",
53
+ "jobs.detail.noIterations": "No iterations yet.",
54
+ "jobs.detail.inProgress.agent": "Agent is working…",
55
+ "jobs.detail.inProgress.shell": "Shell command is running…",
56
+ "jobs.detail.inProgress.git": "Git operation is running…",
57
+ "jobs.detail.inProgress.provider_action": "Provider action is running…",
58
+ "jobs.detail.inProgress.loop": "Loop is running…",
59
+ "jobs.detail.inProgress.sub_workflow": "Waiting for child jobs…",
60
+ "jobs.detail.inProgress.interaction": "Waiting for human…",
61
+ "jobs.stepStatus.pending": "Pending",
62
+ "jobs.stepStatus.running": "Running",
63
+ "jobs.stepStatus.waiting_for_children": "Waiting for children",
64
+ "jobs.stepStatus.completed": "Completed",
65
+ "jobs.stepStatus.failed": "Failed",
66
+ "jobs.stepStatus.skipped": "Skipped",
67
+ "jobs.table.column.id": "Id",
68
+ "jobs.table.column.status": "Status",
69
+ "jobs.table.column.subject": "Subject",
70
+ "jobs.table.column.started": "Started",
71
+ "jobs.table.column.completed": "Completed",
72
+ "jobs.list.title": "Jobs",
73
+ "jobs.list.filterByStatus": "Filter by status",
74
+ "jobs.list.filterByWorkflow": "Filter by workflow",
75
+ "jobs.list.showChildJobs": "Show batch/child jobs",
76
+ "jobs.list.startButton": "Start job",
77
+ "jobs.list.empty": "No jobs match these filters.",
78
+ "jobs.list.loadFailed": "Failed to load jobs",
79
+ "jobs.list.filterAll": "All",
80
+ "workflow-editor.titleNew": "New workflow",
81
+ "workflow-editor.titleEdit": "Edit workflow · {{id}}",
82
+ "workflow-editor.backToJobs": "Back to jobs",
83
+ "workflow-editor.loading": "Loading…",
84
+ "workflow-editor.validation": "Validation",
85
+ "workflow-editor.basics": "Basics",
86
+ "workflow-editor.name": "Workflow name",
87
+ "workflow-editor.appliesTo": "Runs on",
88
+ "workflow-editor.cardinality.label": "Launch mode",
89
+ "workflow-editor.description": "Description",
90
+ "workflow-editor.subjectType.none": "Nothing, standalone workflow",
91
+ "workflow-editor.subjectType.ticket": "Ticket",
92
+ "workflow-editor.subjectType.pull_request": "Pull request",
93
+ "workflow-editor.subjectType.documentation": "Documentation",
94
+ "workflow-editor.cardinality.single": "Single",
95
+ "workflow-editor.cardinality.batch": "Batch",
96
+ "workflow-editor.cardinality.aggregate": "Aggregate",
97
+ "workflow-editor.notificationPolicy": "Notification policy",
98
+ "workflow-editor.trigger.on_fail": "On failure",
99
+ "workflow-editor.trigger.on_complete": "On completion",
100
+ "workflow-editor.trigger.on_needs_input": "On needs input",
101
+ "workflow-editor.messageTemplate": "Message template",
102
+ "workflow-editor.inputSchema": "Custom parameters",
103
+ "workflow-editor.fieldName": "Name",
104
+ "workflow-editor.fieldLabel": "Label",
105
+ "workflow-editor.fieldType": "Type",
106
+ "workflow-editor.inputType.string": "String",
107
+ "workflow-editor.inputType.number": "Number",
108
+ "workflow-editor.inputType.boolean": "Boolean",
109
+ "workflow-editor.inputType.select": "Select",
110
+ "workflow-editor.required": "Required",
111
+ "workflow-editor.remove": "Remove",
112
+ "workflow-editor.addInputField": "Add input field",
113
+ "workflow-editor.steps": "Steps",
114
+ "workflow-editor.duplicateStepIds": "Duplicate step id(s): {{ids}}",
115
+ "step-list.cardTitle": "Step {{index}} · {{type}}",
116
+ "step-list.cardTitleNamed": "Step {{index}} · {{type}} · {{name}}",
117
+ "step-list.moveUp": "Up",
118
+ "step-list.moveDown": "Down",
119
+ "step-list.remove": "Remove",
120
+ "step-list.addStep": "Add step",
121
+ "step-list.name": "Name",
122
+ "step-list.id": "Id",
123
+ "step-list.idHint": "Generated from the step name — edit it directly if you want a different reference.",
124
+ "step-list.objective": "Objective",
125
+ "step-list.knowledgeScope": "Knowledge scope",
126
+ "step-list.knowledgeScopeHint": "Leave all unchecked to omit (all tiers).",
127
+ "step-list.outputFormat.label": "Output format",
128
+ "step-list.interaction.label": "Interaction",
129
+ "step-list.notify": "Notify",
130
+ "step-list.command": "Command",
131
+ "step-list.operation": "Operation",
132
+ "step-list.params": "Params",
133
+ "step-list.action": "Action",
134
+ "step-list.workflowId": "Workflow id",
135
+ "step-list.workflowOption": "{{name}} ({{id}})",
136
+ "step-list.forEach": "forEach",
137
+ "step-list.until.type": "until.type",
138
+ "step-list.until.stepId": "until.stepId",
139
+ "step-list.until.field": "until.field",
140
+ "step-list.until.value": "until.value",
141
+ "step-list.maxIterations": "Max iterations",
142
+ "step-list.onMaxIterations.action": "onMaxIterations.action",
143
+ "step-list.nestedSteps": "Nested steps",
144
+ "step-list.stepType.agent": "Agent",
145
+ "step-list.stepType.interaction": "Human interaction",
146
+ "step-list.stepType.shell": "Shell",
147
+ "step-list.stepType.git": "Git",
148
+ "step-list.stepType.provider_action": "Provider action",
149
+ "step-list.stepType.sub_workflow": "Sub workflow",
150
+ "step-list.stepType.loop": "Loop",
151
+ "step-list.outputFormat.questionnaire": "Questionnaire",
152
+ "step-list.outputFormat.confirmation": "Confirmation",
153
+ "step-list.outputFormat.comment_suggestions": "Comment suggestions",
154
+ "step-list.outputFormat.free_text": "Free text",
155
+ "step-list.interaction.questionnaire": "Questionnaire",
156
+ "step-list.interaction.confirmation": "Confirmation",
157
+ "step-list.interaction.conversation": "Conversation",
158
+ "step-list.notifyMode.inherit": "inherit (undefined)",
159
+ "step-list.notifyMode.on": "on (true)",
160
+ "step-list.notifyMode.off": "off (false)",
161
+ "step-list.gitOperation.create_worktree": "Create worktree",
162
+ "step-list.gitOperation.checkout": "Checkout",
163
+ "step-list.gitOperation.create_branch": "Create branch",
164
+ "step-list.gitOperation.commit": "Commit",
165
+ "step-list.gitOperation.push": "Push",
166
+ "step-list.providerAction.get_subject": "Get subject",
167
+ "step-list.providerAction.get_comments": "Get comments",
168
+ "step-list.providerAction.post_comment": "Post comment",
169
+ "step-list.providerAction.update_status": "Update status",
170
+ "step-list.providerAction.get_content": "Get content",
171
+ "step-list.knowledgeTier.user": "User",
172
+ "step-list.knowledgeTier.organization": "Organization",
173
+ "step-list.knowledgeTier.project": "Project",
174
+ "step-list.untilType.field_empty": "Field empty",
175
+ "step-list.untilType.field_equals": "Field equals",
176
+ "step-list.onMaxIterations.fail": "Fail",
177
+ "step-list.onMaxIterations.continue": "Continue",
178
+ "step-list.onMaxIterations.ask_human": "Ask human",
179
+ "settings.title": "Settings",
180
+ "settings.lede": "Choose which providers Kno uses, and store API keys. Keys take effect immediately; switching an implementation requires a restart.",
181
+ "settings.section.ticket": "Ticket tracking",
182
+ "settings.section.repo": "Repository hosting",
183
+ "settings.section.agent": "Coding agent",
184
+ "settings.ticketProvider.label": "Ticket provider",
185
+ "settings.repoProvider.label": "Repository provider",
186
+ "settings.agentProvider.label": "Agent provider",
187
+ "settings.ticket.manual": "Manual",
188
+ "settings.ticket.jira": "Jira",
189
+ "settings.repo.manual": "Manual",
190
+ "settings.repo.bitbucket": "Bitbucket",
191
+ "settings.agent.claude": "Claude",
192
+ "settings.agent.cursor": "Cursor",
193
+ "settings.jira.baseUrl": "Jira base URL",
194
+ "settings.jira.email": "Jira email",
195
+ "settings.bitbucket.baseUrl": "Bitbucket base URL",
196
+ "settings.bitbucket.email": "Bitbucket email",
197
+ "settings.bitbucket.workspace": "Bitbucket workspace",
198
+ "settings.apiKey.label": "API key",
199
+ "settings.apiKey.configured": "Configured ✓",
200
+ "settings.apiKey.notConfigured": "Not configured",
201
+ "settings.apiKey.placeholder": "Enter a new key to replace the stored value",
202
+ "settings.apiKey.set": "Set key",
203
+ "settings.apiKey.setSuccess": "API key saved",
204
+ "settings.apiKey.setFailed": "Failed to save API key",
205
+ "settings.restartRequired.message": "Some changes require restarting Kno to take effect",
206
+ "settings.saveSuccess": "Settings saved",
207
+ "settings.saveFailed": "Failed to save settings",
208
+ "settings.validation": "Validation",
209
+ "settings.loadFailed": "Failed to load settings",
210
+ "workflows.list.title": "Workflows",
211
+ "workflows.list.createButton": "Create workflow",
212
+ "workflows.list.emptyState": "No workflows yet. Create one to get started.",
213
+ "workflows.list.emptyCreateButton": "Create your first workflow",
214
+ "workflows.list.stepCount": "{{count}} steps",
215
+ "workflows.list.noDescription": "No description",
216
+ "workflows.list.filterByLaunchMode": "Filter by launch mode",
217
+ "workflows.list.filterAll": "All",
218
+ "workflows.list.edit": "Edit",
219
+ "workflows.list.delete": "Delete",
220
+ "workflows.list.deleteConfirm": "Are you sure you want to delete this workflow?",
221
+ "workflows.list.deleteFailed": "Failed to delete workflow",
222
+ "workflows.list.column.name": "Name",
223
+ "workflows.list.column.description": "Description",
224
+ "workflows.list.column.steps": "Steps",
225
+ "workflows.list.column.actions": "Actions",
226
+ "workflows.list.loadFailed": "Failed to load workflows",
227
+ "views.list.title": "Views",
228
+ "views.list.createButton": "Create view",
229
+ "views.list.emptyState": "No views yet. Create one to get started.",
230
+ "views.list.emptyCreateButton": "Create your first view",
231
+ "views.list.edit": "Edit",
232
+ "views.list.delete": "Delete",
233
+ "views.list.deleteConfirm": "Are you sure you want to delete this view?",
234
+ "views.list.deleteFailed": "Failed to delete view",
235
+ "views.list.loadFailed": "Failed to load views",
236
+ "views.list.column.name": "Name",
237
+ "views.list.column.subjectType": "Subject type",
238
+ "views.list.column.query": "Query",
239
+ "views.list.column.actions": "Actions",
240
+ "views.editor.titleNew": "New view",
241
+ "views.editor.titleEdit": "Edit view · {{id}}",
242
+ "views.editor.backToList": "Back to views",
243
+ "views.editor.name": "Name",
244
+ "views.editor.subjectType": "Subject type",
245
+ "views.editor.query": "Query (JSON)",
246
+ "views.editor.queryHint": "Raw provider filter object. A query builder comes later.",
247
+ "views.editor.invalidJson": "Query must be a JSON object",
248
+ "views.editor.validation": "Validation",
249
+ "views.editor.created": "View created",
250
+ "views.editor.saved": "View saved",
251
+ "views.editor.saveFailed": "Failed to save view",
252
+ "views.editor.loadFailed": "Failed to load view",
253
+ "views.detail.backToList": "Back to views",
254
+ "views.detail.edit": "Edit",
255
+ "views.detail.loadFailed": "Failed to load view",
256
+ "views.detail.runOnAll": "Run on all matching",
257
+ "views.detail.runSelected": "Run selected ({{count}})",
258
+ "views.detail.selectWorkflow": "Workflow",
259
+ "views.detail.noBulkWorkflows": "No batch or aggregate workflows apply to this subject type.",
260
+ "views.detail.launch": "Launch",
261
+ "views.detail.launching": "Launching…",
262
+ "views.detail.launchFailed": "Failed to launch",
263
+ "views.detail.cancelLaunch": "Cancel",
264
+ "views.detail.launchViewTitle": "Run on all matching subjects",
265
+ "views.detail.launchSelectedTitle": "Run on selected subjects",
266
+ "views.detail.confirmation.batch": "Started batch {{id}} ({{count}} jobs)",
267
+ "views.detail.confirmation.job": "Started job {{id}}",
268
+ "views.detail.openBatch": "Open batch",
269
+ "views.detail.column.id": "Id",
270
+ "views.detail.column.title": "Title",
271
+ "views.detail.column.details": "Details",
272
+ "views.detail.column.actions": "Actions",
273
+ "views.detail.start": "Start",
274
+ "views.detail.rowStartWorkflow": "Single workflow for row start",
275
+ "views.detail.emptySubjects": "No subjects currently match this view.",
276
+ "batches.detail.backHint": "Back to views",
277
+ "batches.detail.loadFailed": "Failed to load batch",
278
+ "batches.detail.subjectCount": "{{count}} subjects",
279
+ "batches.detail.membersHeading": "Member jobs",
280
+ "batches.status.running": "Running",
281
+ "batches.status.completed": "Completed",
282
+ "batches.status.completed_with_issues": "Completed with issues",
283
+ "batches.status.failed": "Failed",
284
+ "batches.triggeredBy.schedule": "Schedule",
285
+ "batches.triggeredBy.view_bulk": "View (all matching)",
286
+ "batches.triggeredBy.multiselect": "Multiselect"
287
+ }
@@ -0,0 +1,287 @@
1
+ {
2
+ "nav.jobs": "Trabajos",
3
+ "nav.editClarify": "Editar wf-clarify",
4
+ "nav.newWorkflow": "Nuevo flujo",
5
+ "nav.workflows": "Flujos",
6
+ "nav.views": "Vistas",
7
+ "nav.settings": "Ajustes",
8
+ "nav.language": "Idioma",
9
+ "nav.localeCheck": "Comprobación de locale",
10
+ "common.save": "Guardar",
11
+ "common.cancel": "Cancelar",
12
+ "common.loading": "Cargando…",
13
+ "common.errorGeneric": "Algo salió mal",
14
+ "jobs.title": "Kno — Iniciar un trabajo",
15
+ "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.",
16
+ "jobs.start.heading": "Iniciar un trabajo",
17
+ "jobs.start.workflow": "Flujo de trabajo",
18
+ "jobs.start.subjectId": "subjectId",
19
+ "jobs.start.subjectIdPlaceholder": "p. ej. T-1",
20
+ "jobs.start.button": "Iniciar",
21
+ "jobs.start.starting": "Iniciando…",
22
+ "jobs.status.pending": "Pendiente",
23
+ "jobs.status.planning": "Planificando",
24
+ "jobs.status.waiting_for_human": "Esperando intervención humana",
25
+ "jobs.status.waiting_for_children": "Esperando trabajos hijos",
26
+ "jobs.status.implementing": "Implementando",
27
+ "jobs.status.testing": "Probando",
28
+ "jobs.status.completed": "Completado",
29
+ "jobs.status.failed": "Fallido",
30
+ "jobs.status.cancelled": "Cancelado",
31
+ "jobs.resume.heading": "Esperando intervención humana",
32
+ "jobs.resume.noQuestions": "Aún no hay preguntas en el evento de espera.",
33
+ "jobs.resume.jsonLabel": "Respuesta de reanudación (JSON)",
34
+ "jobs.resume.button": "Reanudar",
35
+ "jobs.resume.submitting": "Enviando…",
36
+ "jobs.resume.invalidJson": "El cuerpo de reanudación debe ser JSON válido",
37
+ "jobs.failed.fallback": "El trabajo falló",
38
+ "jobs.errors.loadWorkflows": "No se pudieron cargar los flujos",
39
+ "jobs.errors.subjectIdRequired": "subjectId es obligatorio para este flujo",
40
+ "jobs.errors.startFailed": "No se pudo iniciar el trabajo",
41
+ "jobs.errors.resumeFailed": "No se pudo reanudar el trabajo",
42
+ "jobs.errors.refreshFailed": "No se pudo actualizar el trabajo",
43
+ "jobs.detail.backToStart": "Volver a trabajos",
44
+ "jobs.detail.loadFailed": "No se pudo cargar el trabajo",
45
+ "jobs.detail.workflowLoadFailed": "No se pudo cargar la definición del flujo para este trabajo",
46
+ "jobs.detail.workflowMissing": "La definición del flujo no está disponible; no se puede mostrar la lista de pasos.",
47
+ "jobs.detail.queued": "En cola — esperando que comience el primer paso.",
48
+ "jobs.detail.jumpToCurrent": "Ir al paso actual",
49
+ "jobs.detail.stepsHeading": "Pasos",
50
+ "jobs.detail.noStepSelected": "Selecciona un paso para ver su salida.",
51
+ "jobs.detail.loopBack": "Volver al bucle",
52
+ "jobs.detail.loopIteration": "Iteración {{index}}",
53
+ "jobs.detail.noIterations": "Aún no hay iteraciones.",
54
+ "jobs.detail.inProgress.agent": "El agente está trabajando…",
55
+ "jobs.detail.inProgress.shell": "El comando shell se está ejecutando…",
56
+ "jobs.detail.inProgress.git": "La operación git se está ejecutando…",
57
+ "jobs.detail.inProgress.provider_action": "La acción del proveedor se está ejecutando…",
58
+ "jobs.detail.inProgress.loop": "El bucle se está ejecutando…",
59
+ "jobs.detail.inProgress.sub_workflow": "Esperando trabajos hijos…",
60
+ "jobs.detail.inProgress.interaction": "Esperando intervención humana…",
61
+ "jobs.stepStatus.pending": "Pendiente",
62
+ "jobs.stepStatus.running": "En ejecución",
63
+ "jobs.stepStatus.waiting_for_children": "Esperando hijos",
64
+ "jobs.stepStatus.completed": "Completado",
65
+ "jobs.stepStatus.failed": "Fallido",
66
+ "jobs.stepStatus.skipped": "Omitido",
67
+ "jobs.table.column.id": "Id",
68
+ "jobs.table.column.status": "Estado",
69
+ "jobs.table.column.subject": "Sujeto",
70
+ "jobs.table.column.started": "Inicio",
71
+ "jobs.table.column.completed": "Fin",
72
+ "jobs.list.title": "Trabajos",
73
+ "jobs.list.filterByStatus": "Filtrar por estado",
74
+ "jobs.list.filterByWorkflow": "Filtrar por flujo",
75
+ "jobs.list.showChildJobs": "Mostrar trabajos de lote e hijos",
76
+ "jobs.list.startButton": "Iniciar trabajo",
77
+ "jobs.list.empty": "Ningún trabajo coincide con estos filtros.",
78
+ "jobs.list.loadFailed": "No se pudieron cargar los trabajos",
79
+ "jobs.list.filterAll": "Todos",
80
+ "workflow-editor.loading": "Cargando…",
81
+ "workflow-editor.titleNew": "Nuevo flujo",
82
+ "workflow-editor.titleEdit": "Editar flujo · {{id}}",
83
+ "workflow-editor.backToJobs": "Volver a trabajos",
84
+ "workflow-editor.validation": "Validación",
85
+ "workflow-editor.basics": "Básicos",
86
+ "workflow-editor.name": "name",
87
+ "workflow-editor.appliesTo": "appliesTo",
88
+ "workflow-editor.cardinality.label": "cardinality",
89
+ "workflow-editor.description": "description",
90
+ "workflow-editor.subjectType.none": "none",
91
+ "workflow-editor.subjectType.ticket": "ticket",
92
+ "workflow-editor.subjectType.pull_request": "pull_request",
93
+ "workflow-editor.subjectType.documentation": "documentation",
94
+ "workflow-editor.cardinality.single": "single",
95
+ "workflow-editor.cardinality.batch": "batch",
96
+ "workflow-editor.cardinality.aggregate": "aggregate",
97
+ "workflow-editor.notificationPolicy": "Política de notificaciones",
98
+ "workflow-editor.trigger.on_fail": "on_fail",
99
+ "workflow-editor.trigger.on_complete": "on_complete",
100
+ "workflow-editor.trigger.on_needs_input": "on_needs_input",
101
+ "workflow-editor.messageTemplate": "messageTemplate",
102
+ "workflow-editor.inputSchema": "Esquema de entrada",
103
+ "workflow-editor.fieldName": "name",
104
+ "workflow-editor.fieldLabel": "label",
105
+ "workflow-editor.fieldType": "type",
106
+ "workflow-editor.inputType.string": "string",
107
+ "workflow-editor.inputType.number": "number",
108
+ "workflow-editor.inputType.boolean": "boolean",
109
+ "workflow-editor.inputType.select": "select",
110
+ "workflow-editor.required": "obligatorio",
111
+ "workflow-editor.remove": "Eliminar",
112
+ "workflow-editor.addInputField": "Añadir campo de entrada",
113
+ "workflow-editor.steps": "Pasos",
114
+ "workflow-editor.duplicateStepIds": "Id(s) de paso duplicado(s): {{ids}}",
115
+ "step-list.cardTitle": "Paso {{index}} · {{type}}",
116
+ "step-list.cardTitleNamed": "Paso {{index}} · {{type}} · {{name}}",
117
+ "step-list.moveUp": "Subir",
118
+ "step-list.moveDown": "Bajar",
119
+ "step-list.remove": "Eliminar",
120
+ "step-list.addStep": "Añadir paso",
121
+ "step-list.name": "Nombre",
122
+ "step-list.id": "Id",
123
+ "step-list.idHint": "Se genera a partir del nombre del paso — edítalo directamente si quieres otra referencia.",
124
+ "step-list.objective": "Objetivo",
125
+ "step-list.knowledgeScope": "Alcance de conocimiento",
126
+ "step-list.knowledgeScopeHint": "Déjalos sin marcar para omitir (todos los niveles).",
127
+ "step-list.outputFormat.label": "Formato de salida",
128
+ "step-list.interaction.label": "Interacción",
129
+ "step-list.notify": "Notificar",
130
+ "step-list.command": "Comando",
131
+ "step-list.operation": "Operación",
132
+ "step-list.params": "Parámetros",
133
+ "step-list.action": "Acción",
134
+ "step-list.workflowId": "Id de flujo",
135
+ "step-list.workflowOption": "{{name}} ({{id}})",
136
+ "step-list.forEach": "forEach",
137
+ "step-list.until.type": "until.type",
138
+ "step-list.until.stepId": "until.stepId",
139
+ "step-list.until.field": "until.field",
140
+ "step-list.until.value": "until.value",
141
+ "step-list.maxIterations": "Iteraciones máximas",
142
+ "step-list.onMaxIterations.action": "onMaxIterations.action",
143
+ "step-list.nestedSteps": "Pasos anidados",
144
+ "step-list.stepType.agent": "agent",
145
+ "step-list.stepType.interaction": "interaction",
146
+ "step-list.stepType.shell": "shell",
147
+ "step-list.stepType.git": "git",
148
+ "step-list.stepType.provider_action": "provider_action",
149
+ "step-list.stepType.sub_workflow": "sub_workflow",
150
+ "step-list.stepType.loop": "loop",
151
+ "step-list.outputFormat.questionnaire": "questionnaire",
152
+ "step-list.outputFormat.confirmation": "confirmation",
153
+ "step-list.outputFormat.comment_suggestions": "comment_suggestions",
154
+ "step-list.outputFormat.free_text": "free_text",
155
+ "step-list.interaction.questionnaire": "questionnaire",
156
+ "step-list.interaction.confirmation": "confirmation",
157
+ "step-list.interaction.conversation": "conversation",
158
+ "step-list.notifyMode.inherit": "inherit (undefined)",
159
+ "step-list.notifyMode.on": "on (true)",
160
+ "step-list.notifyMode.off": "off (false)",
161
+ "step-list.gitOperation.create_worktree": "create_worktree",
162
+ "step-list.gitOperation.checkout": "checkout",
163
+ "step-list.gitOperation.create_branch": "create_branch",
164
+ "step-list.gitOperation.commit": "commit",
165
+ "step-list.gitOperation.push": "push",
166
+ "step-list.providerAction.get_subject": "get_subject",
167
+ "step-list.providerAction.get_comments": "get_comments",
168
+ "step-list.providerAction.post_comment": "post_comment",
169
+ "step-list.providerAction.update_status": "update_status",
170
+ "step-list.providerAction.get_content": "get_content",
171
+ "step-list.knowledgeTier.user": "user",
172
+ "step-list.knowledgeTier.organization": "organization",
173
+ "step-list.knowledgeTier.project": "project",
174
+ "step-list.untilType.field_empty": "field_empty",
175
+ "step-list.untilType.field_equals": "field_equals",
176
+ "step-list.onMaxIterations.fail": "fail",
177
+ "step-list.onMaxIterations.continue": "continue",
178
+ "step-list.onMaxIterations.ask_human": "ask_human",
179
+ "settings.title": "Ajustes",
180
+ "settings.lede": "Elige qué proveedores usa Kno y guarda las claves de API. Las claves aplican de inmediato; cambiar una implementación requiere reiniciar.",
181
+ "settings.section.ticket": "Seguimiento de tickets",
182
+ "settings.section.repo": "Alojamiento de repositorios",
183
+ "settings.section.agent": "Agente de código",
184
+ "settings.ticketProvider.label": "Proveedor de tickets",
185
+ "settings.repoProvider.label": "Proveedor de repositorios",
186
+ "settings.agentProvider.label": "Proveedor de agente",
187
+ "settings.ticket.manual": "Manual",
188
+ "settings.ticket.jira": "Jira",
189
+ "settings.repo.manual": "Manual",
190
+ "settings.repo.bitbucket": "Bitbucket",
191
+ "settings.agent.claude": "Claude",
192
+ "settings.agent.cursor": "Cursor",
193
+ "settings.jira.baseUrl": "URL base de Jira",
194
+ "settings.jira.email": "Correo de Jira",
195
+ "settings.bitbucket.baseUrl": "URL base de Bitbucket",
196
+ "settings.bitbucket.email": "Correo de Bitbucket",
197
+ "settings.bitbucket.workspace": "Espacio de trabajo de Bitbucket",
198
+ "settings.apiKey.label": "Clave de API",
199
+ "settings.apiKey.configured": "Configurada ✓",
200
+ "settings.apiKey.notConfigured": "No configurada",
201
+ "settings.apiKey.placeholder": "Introduce una clave nueva para reemplazar la guardada",
202
+ "settings.apiKey.set": "Guardar clave",
203
+ "settings.apiKey.setSuccess": "Clave de API guardada",
204
+ "settings.apiKey.setFailed": "No se pudo guardar la clave de API",
205
+ "settings.restartRequired.message": "Algunos cambios requieren reiniciar Kno para aplicarse",
206
+ "settings.saveSuccess": "Ajustes guardados",
207
+ "settings.saveFailed": "No se pudieron guardar los ajustes",
208
+ "settings.validation": "Validación",
209
+ "settings.loadFailed": "No se pudieron cargar los ajustes",
210
+ "workflows.list.title": "Flujos",
211
+ "workflows.list.createButton": "Crear flujo",
212
+ "workflows.list.emptyState": "Aún no hay flujos. Crea uno para empezar.",
213
+ "workflows.list.emptyCreateButton": "Crea tu primer flujo",
214
+ "workflows.list.stepCount": "{{count}} pasos",
215
+ "workflows.list.noDescription": "Sin descripción",
216
+ "workflows.list.filterByLaunchMode": "Filtrar por modo de lanzamiento",
217
+ "workflows.list.filterAll": "Todos",
218
+ "workflows.list.edit": "Editar",
219
+ "workflows.list.delete": "Eliminar",
220
+ "workflows.list.deleteConfirm": "¿Seguro que quieres eliminar este flujo?",
221
+ "workflows.list.deleteFailed": "No se pudo eliminar el flujo",
222
+ "workflows.list.column.name": "Nombre",
223
+ "workflows.list.column.description": "Descripción",
224
+ "workflows.list.column.steps": "Pasos",
225
+ "workflows.list.column.actions": "Acciones",
226
+ "workflows.list.loadFailed": "No se pudieron cargar los flujos",
227
+ "views.list.title": "Vistas",
228
+ "views.list.createButton": "Crear vista",
229
+ "views.list.emptyState": "Aún no hay vistas. Crea una para empezar.",
230
+ "views.list.emptyCreateButton": "Crea tu primera vista",
231
+ "views.list.edit": "Editar",
232
+ "views.list.delete": "Eliminar",
233
+ "views.list.deleteConfirm": "¿Seguro que quieres eliminar esta vista?",
234
+ "views.list.deleteFailed": "No se pudo eliminar la vista",
235
+ "views.list.loadFailed": "No se pudieron cargar las vistas",
236
+ "views.list.column.name": "Nombre",
237
+ "views.list.column.subjectType": "Tipo de sujeto",
238
+ "views.list.column.query": "Consulta",
239
+ "views.list.column.actions": "Acciones",
240
+ "views.editor.titleNew": "Nueva vista",
241
+ "views.editor.titleEdit": "Editar vista · {{id}}",
242
+ "views.editor.backToList": "Volver a vistas",
243
+ "views.editor.name": "Nombre",
244
+ "views.editor.subjectType": "Tipo de sujeto",
245
+ "views.editor.query": "Consulta (JSON)",
246
+ "views.editor.queryHint": "Objeto de filtro del proveedor en crudo. El constructor de consultas llega después.",
247
+ "views.editor.invalidJson": "La consulta debe ser un objeto JSON",
248
+ "views.editor.validation": "Validación",
249
+ "views.editor.created": "Vista creada",
250
+ "views.editor.saved": "Vista guardada",
251
+ "views.editor.saveFailed": "No se pudo guardar la vista",
252
+ "views.editor.loadFailed": "No se pudo cargar la vista",
253
+ "views.detail.backToList": "Volver a vistas",
254
+ "views.detail.edit": "Editar",
255
+ "views.detail.loadFailed": "No se pudo cargar la vista",
256
+ "views.detail.runOnAll": "Ejecutar en todos los coincidentes",
257
+ "views.detail.runSelected": "Ejecutar seleccionados ({{count}})",
258
+ "views.detail.selectWorkflow": "Flujo de trabajo",
259
+ "views.detail.noBulkWorkflows": "No hay flujos batch o aggregate para este tipo de sujeto.",
260
+ "views.detail.launch": "Lanzar",
261
+ "views.detail.launching": "Lanzando…",
262
+ "views.detail.launchFailed": "No se pudo lanzar",
263
+ "views.detail.cancelLaunch": "Cancelar",
264
+ "views.detail.launchViewTitle": "Ejecutar en todos los sujetos coincidentes",
265
+ "views.detail.launchSelectedTitle": "Ejecutar en los sujetos seleccionados",
266
+ "views.detail.confirmation.batch": "Lote {{id}} iniciado ({{count}} trabajos)",
267
+ "views.detail.confirmation.job": "Trabajo {{id}} iniciado",
268
+ "views.detail.openBatch": "Abrir lote",
269
+ "views.detail.column.id": "Id",
270
+ "views.detail.column.title": "Título",
271
+ "views.detail.column.details": "Detalles",
272
+ "views.detail.column.actions": "Acciones",
273
+ "views.detail.start": "Iniciar",
274
+ "views.detail.rowStartWorkflow": "Flujo único para inicio por fila",
275
+ "views.detail.emptySubjects": "Ningún sujeto coincide con esta vista ahora.",
276
+ "batches.detail.backHint": "Volver a vistas",
277
+ "batches.detail.loadFailed": "No se pudo cargar el lote",
278
+ "batches.detail.subjectCount": "{{count}} sujetos",
279
+ "batches.detail.membersHeading": "Trabajos miembros",
280
+ "batches.status.running": "En ejecución",
281
+ "batches.status.completed": "Completado",
282
+ "batches.status.completed_with_issues": "Completado con problemas",
283
+ "batches.status.failed": "Fallido",
284
+ "batches.triggeredBy.schedule": "Programación",
285
+ "batches.triggeredBy.view_bulk": "Vista (todos los coincidentes)",
286
+ "batches.triggeredBy.multiselect": "Selección múltiple"
287
+ }