@knoflows/engine 0.1.0-alpha.1 → 0.1.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/engine.js +33 -132
- package/dist/migrations/20260917165450_baseline/migration.sql +127 -0
- package/dist/migrations/20260917165450_baseline/snapshot.json +1212 -0
- package/dist/migrations/20260918025930_context_files/migration.sql +7 -0
- package/dist/migrations/20260918025930_context_files/snapshot.json +1275 -0
- package/dist/migrations/20260918074816_large_kate_bishop/migration.sql +8 -0
- package/dist/migrations/20260918074816_large_kate_bishop/snapshot.json +1338 -0
- package/package.json +19 -10
- package/static/assets/i18n/en.json +271 -16
- package/static/assets/i18n/es.json +271 -16
- package/static/chunk-03U2wfYJ.js +7 -0
- package/static/chunk-6rAx_awr.js +1 -0
- package/static/chunk-BGEuPXoV.js +1 -0
- package/static/chunk-BLVF0pVH.js +1 -0
- package/static/chunk-BfWasMGf.js +1 -0
- package/static/chunk-Bvpl_AF9.js +1 -0
- package/static/{chunk-C50zASMN.js → chunk-C2eCmH-q.js} +1 -1
- package/static/chunk-CAjGF9LB.js +1 -0
- package/static/{chunk-CeFjDLjY.js → chunk-CT8olEiD.js} +1 -1
- package/static/chunk-CUsAuTTX.js +1 -0
- package/static/chunk-CgXl_TS9.js +1 -0
- package/static/chunk-CqGGDoIh.js +1 -0
- package/static/chunk-Crj-4pl_.js +1 -0
- package/static/{chunk-Dw1tJgiv.js → chunk-Ct30cLzT.js} +1 -1
- package/static/chunk-Cw0wBuEr.js +5 -0
- package/static/chunk-CxBYhrEj.js +1 -0
- package/static/chunk-CxICQyU8.js +1 -0
- package/static/chunk-DGHakffX.js +1 -0
- package/static/chunk-DIakbH9x.js +1 -0
- package/static/chunk-DIntI-KR.js +1 -0
- package/static/chunk-DPWE5cPY.js +1 -0
- package/static/chunk-DU6MKU0d.js +1 -0
- package/static/chunk-DUR5PalP.js +1 -0
- package/static/chunk-DWLHaSHg.js +1 -0
- package/static/chunk-D_R_EFd2.js +1 -0
- package/static/{chunk-CSPhdKAb.js → chunk-DinAvqzQ.js} +1 -1
- package/static/chunk-DlsGU_Dk.js +1 -0
- package/static/chunk-DwA32gts.js +1 -0
- package/static/chunk-IOVwMLns.js +1 -0
- package/static/chunk-L_FnMwpH.js +1 -0
- package/static/chunk-NAyA7aWR.js +1 -0
- package/static/{chunk-ZijlINsH.js → chunk-TNH96m0D.js} +1 -1
- package/static/chunk-Vz5kd858.js +1 -0
- package/static/chunk-dUlsh7QS.js +66 -0
- package/static/chunk-h3oyPsBC.js +1 -0
- package/static/chunk-hKpVm95g.js +1 -0
- package/static/chunk-qYK5KaAK.js +1 -0
- package/static/chunk-qwukwlIj.js +1 -0
- package/static/chunk-vPa4eOmU.js +1 -0
- package/static/index.html +2 -2
- package/static/main-HV5WDK2F.js +249 -0
- package/static/chunk-8DHqiag3.js +0 -1
- package/static/chunk-B4GVyu_H.js +0 -1
- package/static/chunk-B5hULR_G.js +0 -1
- package/static/chunk-BDOL5Qby.js +0 -1
- package/static/chunk-BJLDaNHl.js +0 -1
- package/static/chunk-BQYw1slv.js +0 -1
- package/static/chunk-BU5DKI8R.js +0 -1
- package/static/chunk-BquD19tF.js +0 -5
- package/static/chunk-C40TdCIk.js +0 -1
- package/static/chunk-C9CuVcTl.js +0 -1
- package/static/chunk-CCjvFBCX.js +0 -1
- package/static/chunk-CPxI4OjB.js +0 -1
- package/static/chunk-CgvdAwRh.js +0 -1
- package/static/chunk-Cnkrtkdu.js +0 -7
- package/static/chunk-Csk1w6sD.js +0 -1
- package/static/chunk-DI-Ex2sC.js +0 -1
- package/static/chunk-DK8z5vU5.js +0 -1
- package/static/chunk-DS9-TMN6.js +0 -1
- package/static/chunk-DxRo8m4J.js +0 -66
- package/static/chunk-DyP6QbgY.js +0 -1
- package/static/chunk-KyBZUWGU.js +0 -1
- package/static/main-BK4MAPTK.js +0 -249
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knoflows/engine",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"bin": {
|
|
7
|
-
"
|
|
7
|
+
"knoflows": "dist/engine.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist/engine.js",
|
|
11
|
+
"dist/migrations",
|
|
11
12
|
"static",
|
|
12
13
|
"README.md",
|
|
13
14
|
"LICENSE"
|
|
@@ -22,42 +23,50 @@
|
|
|
22
23
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
23
24
|
"build:release": "tsc -p tsconfig.json && node ../../scripts/bundle-engine.mjs",
|
|
24
25
|
"prepublishOnly": "node ../../scripts/smoke-engine.mjs",
|
|
25
|
-
"db:
|
|
26
|
+
"db:generate": "drizzle-kit generate",
|
|
26
27
|
"set-secret": "tsx scripts/set-secret.ts",
|
|
27
28
|
"test:repos": "tsx src/persistence/test/repo-test.ts",
|
|
29
|
+
"test:migrations": "tsx src/persistence/test/migrate.test.ts",
|
|
28
30
|
"test:providers": "tsx src/providers/test/provider-test.ts",
|
|
29
31
|
"test:secrets": "tsx src/secrets/secret-store.test.ts",
|
|
30
|
-
"test:jira": "tsx src/providers/ticket/adf.test.ts && tsx src/providers/ticket/jira-ticket-provider.test.ts",
|
|
32
|
+
"test:jira": "tsx src/providers/ticket/adf.test.ts && tsx src/providers/ticket/jira-ticket-provider.test.ts && tsx src/providers/query-templates/jira-query-templates.test.ts",
|
|
33
|
+
"test:confluence": "tsx src/providers/documentation/confluence-documentation-provider.test.ts",
|
|
34
|
+
"test:github": "tsx src/providers/ticket/github-issues-provider.test.ts",
|
|
31
35
|
"test:bitbucket": "tsx src/providers/repo/bitbucket-repo-provider.test.ts",
|
|
36
|
+
"test:registry": "tsx src/providers/provider-registry.service.test.ts",
|
|
32
37
|
"test:claude-agent": "tsx src/providers/agent/claude-agent-provider.test.ts",
|
|
33
38
|
"test:cursor-agent": "tsx src/providers/agent/cursor-agent-provider.test.ts",
|
|
39
|
+
"test:preview-models": "tsx src/providers/agent/preview-models.test.ts",
|
|
34
40
|
"test:provider-status": "tsx src/providers/provider-status.test.ts",
|
|
35
|
-
"test:runner": "tsx src/runner/test/resolve-view-subjects.test.ts && tsx src/runner/test/workflow-runner.agent-interaction.test.ts && tsx src/runner/test/workflow-runner.git-shell-provider.test.ts && tsx src/runner/test/workflow-runner.loop-subworkflow.test.ts && tsx src/runner/test/workflow-runner.batch-aggregate.test.ts && tsx src/runner/test/workflow-runner.agent-output-validation.test.ts",
|
|
36
|
-
"test:api": "tsx src/api/test/api-test.ts && tsx src/api/test/boot-empty-secrets.test.ts && tsx src/api/test/providers-status.test.ts && tsx src/api/test/settings.test.ts",
|
|
37
|
-
"test:workflows-ids": "tsx src/api/workflows/assign-missing-ids.test.ts"
|
|
41
|
+
"test:runner": "tsx src/git/worktree-paths.test.ts && tsx src/runner/test/resolve-view-subjects.test.ts && tsx src/runner/test/workflow-runner.agent-interaction.test.ts && tsx src/runner/test/workflow-runner.git-shell-provider.test.ts && tsx src/runner/test/workflow-runner.loop-subworkflow.test.ts && tsx src/runner/test/workflow-runner.batch-aggregate.test.ts && tsx src/runner/test/workflow-runner.agent-output-validation.test.ts && tsx src/runner/test/workflow-runner.extended-action.test.ts && tsx src/runner/test/workflow-runner.registry-dispatch.test.ts && tsx src/runner/test/workflow-runner.retry.test.ts && tsx src/runner/test/workflow-runner.cancel.test.ts && tsx src/runner/test/resolve-context-files.test.ts && tsx src/runner/test/workflow-runner.context-files.test.ts && tsx src/runner/test/workflow-runner.worktrees.test.ts",
|
|
42
|
+
"test:api": "tsx src/api/test/api-test.ts && tsx src/api/test/boot-empty-secrets.test.ts && tsx src/api/test/providers-status.test.ts && tsx src/api/test/settings.test.ts && tsx src/api/test/preview-models.test.ts && tsx src/api/test/query-templates.test.ts && tsx src/api/test/extended-actions.test.ts && tsx src/api/test/view-binding-shortcuts.test.ts && tsx src/api/test/workflow-library.test.ts && tsx src/api/test/context-files.test.ts && tsx src/api/test/filesystem.test.ts && tsx src/api/test/local-repositories.test.ts",
|
|
43
|
+
"test:workflows-ids": "tsx src/api/workflows/assign-missing-ids.test.ts",
|
|
44
|
+
"test:listen-port": "tsx src/listen-port.test.ts",
|
|
45
|
+
"test:spa-fallback": "tsx src/static/spa-fallback.test.ts"
|
|
38
46
|
},
|
|
39
47
|
"dependencies": {
|
|
40
48
|
"@anthropic-ai/claude-agent-sdk": "^0.3.243",
|
|
41
49
|
"@asteasolutions/zod-to-openapi": "^9.1.0",
|
|
42
50
|
"@cursor/sdk": "^1.0.28",
|
|
43
|
-
"@knoflows/shared": "^0.1.0",
|
|
44
51
|
"@napi-rs/keyring": "^1.3.0",
|
|
45
52
|
"@nestjs/common": "^11.1.0",
|
|
46
53
|
"@nestjs/core": "^11.1.0",
|
|
47
54
|
"@nestjs/platform-express": "^11.1.0",
|
|
48
|
-
"@nestjs/testing": "^11.1.28",
|
|
49
55
|
"@scalar/nestjs-api-reference": "^1.2.12",
|
|
50
56
|
"drizzle-orm": "^1.0.0-rc.4",
|
|
51
57
|
"reflect-metadata": "^0.2.0",
|
|
52
58
|
"rxjs": "^7.0.0",
|
|
53
|
-
"
|
|
59
|
+
"zod": "^4.0.0"
|
|
54
60
|
},
|
|
55
61
|
"devDependencies": {
|
|
62
|
+
"@knoflows/shared": "^0.1.0",
|
|
56
63
|
"@nestjs/cli": "^11.0.0",
|
|
64
|
+
"@nestjs/testing": "^11.1.28",
|
|
57
65
|
"@types/node": "^22.0.0",
|
|
58
66
|
"@types/supertest": "^7.2.1",
|
|
59
67
|
"drizzle-kit": "^1.0.0-rc.4",
|
|
60
68
|
"esbuild": "^0.25.12",
|
|
69
|
+
"supertest": "^7.2.2",
|
|
61
70
|
"tsx": "^4.19.0",
|
|
62
71
|
"typescript": "^6.0.0"
|
|
63
72
|
}
|
|
@@ -4,16 +4,114 @@
|
|
|
4
4
|
"nav.newWorkflow": "New workflow",
|
|
5
5
|
"nav.workflows": "Workflows",
|
|
6
6
|
"nav.views": "Views",
|
|
7
|
+
"nav.shortcuts": "Shortcuts",
|
|
7
8
|
"nav.settings": "Settings",
|
|
8
|
-
"shell.
|
|
9
|
+
"shell.jobs": "Jobs",
|
|
9
10
|
"shell.manage": "Manage",
|
|
11
|
+
"manage.tab.workflows": "Workflows",
|
|
12
|
+
"manage.tab.views": "Views & Shortcuts",
|
|
13
|
+
"manage.tab.providers": "Providers",
|
|
14
|
+
"manage.tab.contextFiles": "Context Files",
|
|
15
|
+
"manage.tab.localRepositories": "Local Repositories",
|
|
16
|
+
"manage.tab.worktrees": "Worktrees",
|
|
17
|
+
"manage.tab.preferences": "Preferences",
|
|
18
|
+
"manage.preferences.title": "Preferences",
|
|
19
|
+
"manage.preferences.body": "Engine preferences such as scheduler concurrency, worktree cleanup, and the default agent will live here.",
|
|
20
|
+
"context-files.title": "Context Files",
|
|
21
|
+
"context-files.selectTitle": "Select context files",
|
|
22
|
+
"context-files.emptyState": "No context files yet. Add one to attach to agent steps.",
|
|
23
|
+
"context-files.create": "Add context file",
|
|
24
|
+
"context-files.edit": "Edit",
|
|
25
|
+
"context-files.delete": "Delete",
|
|
26
|
+
"context-files.deleteConfirm": "Delete this context file?",
|
|
27
|
+
"context-files.column.name": "Name",
|
|
28
|
+
"context-files.column.tier": "Tier",
|
|
29
|
+
"context-files.column.path": "Path",
|
|
30
|
+
"context-files.column.description": "Description",
|
|
31
|
+
"context-files.column.actions": "Actions",
|
|
32
|
+
"context-files.form.name": "Name",
|
|
33
|
+
"context-files.form.tier": "Tier",
|
|
34
|
+
"context-files.form.path": "Path",
|
|
35
|
+
"context-files.form.pathHint": "Browse to a file on this machine, or enter its absolute path. The file is read immediately to confirm it exists.",
|
|
36
|
+
"context-files.form.description": "Description",
|
|
37
|
+
"context-files.form.save": "Save",
|
|
38
|
+
"context-files.form.cancel": "Cancel",
|
|
39
|
+
"context-files.form.add": "Add",
|
|
40
|
+
"context-files.loadFailed": "Failed to load context files",
|
|
41
|
+
"context-files.saveFailed": "Failed to save context file",
|
|
42
|
+
"context-files.deleteFailed": "Failed to delete context file",
|
|
43
|
+
"context-files.tier.user": "User",
|
|
44
|
+
"context-files.tier.organization": "Organization",
|
|
45
|
+
"context-files.tier.project": "Project",
|
|
46
|
+
"local-repos.title": "Local Repositories",
|
|
47
|
+
"local-repos.emptyState": "No local repositories yet. Add one so workflows can pick a repo at launch.",
|
|
48
|
+
"local-repos.create": "Add local repository",
|
|
49
|
+
"local-repos.edit": "Edit",
|
|
50
|
+
"local-repos.delete": "Delete",
|
|
51
|
+
"local-repos.deleteConfirm": "Delete this local repository?",
|
|
52
|
+
"local-repos.column.name": "Name",
|
|
53
|
+
"local-repos.column.localPath": "Repository path",
|
|
54
|
+
"local-repos.column.worktreeBasePath": "Worktree base",
|
|
55
|
+
"local-repos.column.actions": "Actions",
|
|
56
|
+
"local-repos.form.name": "Name",
|
|
57
|
+
"local-repos.form.localPath": "Repository path",
|
|
58
|
+
"local-repos.form.worktreeBasePath": "Worktree base path (optional)",
|
|
59
|
+
"local-repos.form.worktreeBaseHint": "Defaults to a sibling folder next to the repository. Do not nest worktrees inside the repo itself.",
|
|
60
|
+
"local-repos.loadFailed": "Failed to load local repositories",
|
|
61
|
+
"local-repos.saveFailed": "Failed to save local repository",
|
|
62
|
+
"local-repos.deleteFailed": "Failed to delete local repository",
|
|
63
|
+
"worktrees.title": "Worktrees",
|
|
64
|
+
"worktrees.emptyState": "No live worktrees. They appear here after a Job creates one.",
|
|
65
|
+
"worktrees.deleteSelected": "Delete selected worktrees",
|
|
66
|
+
"worktrees.activeWarning": "A selected worktree belongs to a Job that is still running. Delete it only after the Job finishes.",
|
|
67
|
+
"worktrees.loadFailed": "Failed to load worktrees",
|
|
68
|
+
"worktrees.deleteFailed": "Failed to delete worktrees",
|
|
69
|
+
"worktrees.column.job": "Job",
|
|
70
|
+
"worktrees.column.repository": "Repository",
|
|
71
|
+
"worktrees.column.branch": "Branch",
|
|
72
|
+
"worktrees.column.path": "Path",
|
|
73
|
+
"worktrees.column.status": "Status",
|
|
74
|
+
"worktrees.column.created": "Created",
|
|
75
|
+
"workflow-input.localRepositoryPlaceholder": "Select a local repository",
|
|
76
|
+
"file-browser.emptySelection": "No file selected",
|
|
77
|
+
"file-browser.emptySelectionDirectory": "No folder selected",
|
|
78
|
+
"file-browser.enterManually": "Or enter path manually",
|
|
79
|
+
"file-browser.browse": "Browse for a file",
|
|
80
|
+
"file-browser.browseDirectory": "Browse for a folder",
|
|
81
|
+
"file-browser.useFolder": "Use this folder",
|
|
82
|
+
"file-browser.loadFailed": "Failed to list this directory",
|
|
83
|
+
"path-picker.browse": "Browse...",
|
|
84
|
+
"path-picker.selectFile": "Select this file",
|
|
85
|
+
"path-picker.placeholderFile": "File path",
|
|
86
|
+
"path-picker.placeholderDirectory": "Folder path",
|
|
87
|
+
"path-picker.modalTitleFile": "Select a file",
|
|
88
|
+
"path-picker.modalTitleDirectory": "Select a folder",
|
|
89
|
+
"manage.views.title": "Views & Shortcuts",
|
|
90
|
+
"manage.views.createView": "Create a View",
|
|
91
|
+
"manage.views.createShortcut": "Create a Shortcut",
|
|
92
|
+
"manage.views.emptyState": "No views or shortcuts yet. Create one to get started.",
|
|
93
|
+
"manage.views.column.name": "Name",
|
|
94
|
+
"manage.views.column.type": "Type",
|
|
95
|
+
"manage.views.column.workflow": "Bound workflow",
|
|
96
|
+
"manage.views.column.subjectType": "Subject type",
|
|
97
|
+
"manage.views.column.actions": "Actions",
|
|
98
|
+
"manage.views.type.view": "View",
|
|
99
|
+
"manage.views.type.shortcut": "Shortcut",
|
|
100
|
+
"manage.views.noSubjectType": "—",
|
|
101
|
+
"manage.views.edit": "Edit",
|
|
102
|
+
"manage.views.delete": "Delete",
|
|
103
|
+
"manage.views.deleteConfirmView": "Are you sure you want to delete this view?",
|
|
104
|
+
"manage.views.deleteConfirmShortcut": "Are you sure you want to delete this shortcut?",
|
|
105
|
+
"manage.views.deleteFailed": "Failed to delete",
|
|
106
|
+
"manage.views.loadFailed": "Failed to load views and shortcuts",
|
|
10
107
|
"shell.group.tickets": "Tickets",
|
|
11
108
|
"shell.group.pullRequests": "Pull Requests",
|
|
12
109
|
"shell.group.documentation": "Documentation",
|
|
110
|
+
"shell.shortcuts": "Shortcuts",
|
|
13
111
|
"shell.provider.jira": "Jira",
|
|
14
112
|
"shell.provider.bitbucket": "Bitbucket",
|
|
15
113
|
"shell.empty.title": "Welcome to knoflows",
|
|
16
|
-
"shell.empty.body": "Views appear here once you configure a provider in Settings and save at least one
|
|
114
|
+
"shell.empty.body": "Views and shortcuts appear here once you configure a provider in Settings and save at least one.",
|
|
17
115
|
"shell.empty.settingsLink": "Open Settings",
|
|
18
116
|
"nav.language": "Language",
|
|
19
117
|
"nav.localeCheck": "Locale check",
|
|
@@ -21,8 +119,8 @@
|
|
|
21
119
|
"common.cancel": "Cancel",
|
|
22
120
|
"common.loading": "Loading…",
|
|
23
121
|
"common.errorGeneric": "Something went wrong",
|
|
24
|
-
"jobs.title": "
|
|
25
|
-
"jobs.lede": "Pick a
|
|
122
|
+
"jobs.title": "Knoflows — Start a Job",
|
|
123
|
+
"jobs.lede": "Pick a workflow that runs one item at a time and start a Job. Watching and resume live on the Job detail page.",
|
|
26
124
|
"jobs.start.heading": "Start a Job",
|
|
27
125
|
"jobs.start.workflow": "Workflow",
|
|
28
126
|
"jobs.start.subjectId": "subjectId",
|
|
@@ -49,6 +147,9 @@
|
|
|
49
147
|
"jobs.errors.subjectIdRequired": "subjectId is required for this workflow",
|
|
50
148
|
"jobs.errors.startFailed": "Failed to start job",
|
|
51
149
|
"jobs.errors.resumeFailed": "Failed to resume job",
|
|
150
|
+
"jobs.errors.retryFailed": "Failed to retry job",
|
|
151
|
+
"jobs.errors.retryStepFailed": "Failed to retry step",
|
|
152
|
+
"jobs.errors.cancelFailed": "Failed to cancel job",
|
|
52
153
|
"jobs.errors.refreshFailed": "Failed to refresh job",
|
|
53
154
|
"jobs.detail.backToStart": "Back to jobs",
|
|
54
155
|
"jobs.detail.loadFailed": "Failed to load job",
|
|
@@ -56,6 +157,13 @@
|
|
|
56
157
|
"jobs.detail.workflowMissing": "Workflow definition is unavailable; step list cannot be shown.",
|
|
57
158
|
"jobs.detail.queued": "Queued — waiting for the first step to start.",
|
|
58
159
|
"jobs.detail.jumpToCurrent": "Jump to current step",
|
|
160
|
+
"jobs.detail.retryWorkflow": "Retry entire workflow",
|
|
161
|
+
"jobs.detail.retryStep": "Retry this step",
|
|
162
|
+
"jobs.detail.retrying": "Retrying…",
|
|
163
|
+
"jobs.detail.cancel": "Cancel",
|
|
164
|
+
"jobs.detail.cancelling": "Cancelling…",
|
|
165
|
+
"jobs.detail.worktree": "Worktree",
|
|
166
|
+
"jobs.detail.worktreeDeleted": "Worktree deleted",
|
|
59
167
|
"jobs.detail.stepsHeading": "Steps",
|
|
60
168
|
"jobs.detail.noStepSelected": "Select a step to inspect its output.",
|
|
61
169
|
"jobs.detail.loopBack": "Back to loop",
|
|
@@ -79,6 +187,9 @@
|
|
|
79
187
|
"jobs.table.column.subject": "Subject",
|
|
80
188
|
"jobs.table.column.started": "Started",
|
|
81
189
|
"jobs.table.column.completed": "Completed",
|
|
190
|
+
"jobs.table.column.actions": "Actions",
|
|
191
|
+
"jobs.table.retry": "Retry",
|
|
192
|
+
"jobs.table.cancel": "Cancel",
|
|
82
193
|
"jobs.list.title": "Jobs",
|
|
83
194
|
"jobs.list.filterByStatus": "Filter by status",
|
|
84
195
|
"jobs.list.filterByWorkflow": "Filter by workflow",
|
|
@@ -87,23 +198,28 @@
|
|
|
87
198
|
"jobs.list.empty": "No jobs match these filters.",
|
|
88
199
|
"jobs.list.loadFailed": "Failed to load jobs",
|
|
89
200
|
"jobs.list.filterAll": "All",
|
|
201
|
+
"jobs.list.running": "Currently Running",
|
|
202
|
+
"jobs.list.history": "History",
|
|
203
|
+
"jobs.list.runningEmpty": "No jobs are running.",
|
|
204
|
+
"jobs.list.historyEmpty": "No jobs match these filters.",
|
|
90
205
|
"workflow-editor.titleNew": "New workflow",
|
|
91
206
|
"workflow-editor.titleEdit": "Edit workflow · {{id}}",
|
|
92
|
-
"workflow-editor.
|
|
207
|
+
"workflow-editor.backToWorkflows": "Back to workflows",
|
|
93
208
|
"workflow-editor.loading": "Loading…",
|
|
94
209
|
"workflow-editor.validation": "Validation",
|
|
95
210
|
"workflow-editor.basics": "Basics",
|
|
96
211
|
"workflow-editor.name": "Workflow name",
|
|
97
212
|
"workflow-editor.appliesTo": "Runs on",
|
|
98
|
-
"workflow-editor.
|
|
213
|
+
"workflow-editor.subjectHandling.label": "Items",
|
|
99
214
|
"workflow-editor.description": "Description",
|
|
100
215
|
"workflow-editor.subjectType.none": "Nothing, standalone workflow",
|
|
101
216
|
"workflow-editor.subjectType.ticket": "Ticket",
|
|
102
217
|
"workflow-editor.subjectType.pull_request": "Pull request",
|
|
103
218
|
"workflow-editor.subjectType.documentation": "Documentation",
|
|
104
|
-
"workflow-editor.
|
|
105
|
-
"workflow-editor.
|
|
106
|
-
"workflow-editor.
|
|
219
|
+
"workflow-editor.subjectHandling.per-subject": "One at a time",
|
|
220
|
+
"workflow-editor.subjectHandling.collection": "As a group",
|
|
221
|
+
"workflow-editor.subjectHandling.help.per-subject": "Steps work on a single item. You can start one row, or run many independently with one notification when you run in bulk.",
|
|
222
|
+
"workflow-editor.subjectHandling.help.collection": "Steps see the whole selected set and produce one combined result.",
|
|
107
223
|
"workflow-editor.notificationPolicy": "Notification policy",
|
|
108
224
|
"workflow-editor.trigger.on_fail": "On failure",
|
|
109
225
|
"workflow-editor.trigger.on_complete": "On completion",
|
|
@@ -117,6 +233,7 @@
|
|
|
117
233
|
"workflow-editor.inputType.number": "Number",
|
|
118
234
|
"workflow-editor.inputType.boolean": "Boolean",
|
|
119
235
|
"workflow-editor.inputType.select": "Select",
|
|
236
|
+
"workflow-editor.inputType.localRepository": "Local repository",
|
|
120
237
|
"workflow-editor.required": "Required",
|
|
121
238
|
"workflow-editor.remove": "Remove",
|
|
122
239
|
"workflow-editor.addInputField": "Add input field",
|
|
@@ -128,12 +245,14 @@
|
|
|
128
245
|
"step-list.moveDown": "Down",
|
|
129
246
|
"step-list.remove": "Remove",
|
|
130
247
|
"step-list.addStep": "Add step",
|
|
248
|
+
"step-list.unnamed": "Untitled",
|
|
131
249
|
"step-list.name": "Name",
|
|
132
250
|
"step-list.id": "Id",
|
|
133
251
|
"step-list.idHint": "Generated from the step name — edit it directly if you want a different reference.",
|
|
134
|
-
"step-list.objective": "
|
|
135
|
-
"step-list.
|
|
136
|
-
"step-list.
|
|
252
|
+
"step-list.objective": "Prompt",
|
|
253
|
+
"step-list.contextFiles": "Context Files",
|
|
254
|
+
"step-list.contextFilesEmpty": "None selected",
|
|
255
|
+
"step-list.selectContextFiles": "Select context files",
|
|
137
256
|
"step-list.outputFormat.label": "Output format",
|
|
138
257
|
"step-list.interaction.label": "Interaction",
|
|
139
258
|
"step-list.notify": "Notify",
|
|
@@ -151,6 +270,18 @@
|
|
|
151
270
|
"step-list.maxIterations": "Max iterations",
|
|
152
271
|
"step-list.onMaxIterations.action": "onMaxIterations.action",
|
|
153
272
|
"step-list.nestedSteps": "Nested steps",
|
|
273
|
+
"step-list.availableParameters.title": "Available Parameters",
|
|
274
|
+
"step-list.availableParameters.hint": "Click a token to copy it. Only values already available when this step runs are listed.",
|
|
275
|
+
"step-list.availableParameters.inputs": "Workflow Inputs",
|
|
276
|
+
"step-list.availableParameters.subject": "Subject",
|
|
277
|
+
"step-list.availableParameters.previous": "Previous Steps",
|
|
278
|
+
"step-list.availableParameters.loopOverwrite": "Loop iterations overwrite this value; later references see the most recent pass.",
|
|
279
|
+
"step-list.availableParameters.noOutput": "No output fields",
|
|
280
|
+
"step-list.availableParameters.providerOpaque": "Result of {{action}} — inspect at runtime",
|
|
281
|
+
"step-list.availableParameters.interactionOpaque": "Shape depends on the questions asked",
|
|
282
|
+
"step-list.availableParameters.subWorkflowArray": "Array of { fanOutIndex, jobId, output }",
|
|
283
|
+
"step-list.availableParameters.noPrevious": "No previous steps",
|
|
284
|
+
"step-list.availableParameters.missingId": "Set an id to copy tokens",
|
|
154
285
|
"step-list.stepType.agent": "Agent",
|
|
155
286
|
"step-list.stepType.interaction": "Human interaction",
|
|
156
287
|
"step-list.stepType.shell": "Shell",
|
|
@@ -173,11 +304,32 @@
|
|
|
173
304
|
"step-list.gitOperation.create_branch": "Create branch",
|
|
174
305
|
"step-list.gitOperation.commit": "Commit",
|
|
175
306
|
"step-list.gitOperation.push": "Push",
|
|
307
|
+
"step-list.createWorktree.mode": "Mode",
|
|
308
|
+
"step-list.createWorktree.newBranch": "New branch",
|
|
309
|
+
"step-list.createWorktree.existingBranch": "Existing branch",
|
|
310
|
+
"step-list.createWorktree.repoPath": "Repository path",
|
|
311
|
+
"step-list.createWorktree.baseBranch": "Base branch",
|
|
312
|
+
"step-list.createWorktree.branchName": "Branch name",
|
|
313
|
+
"step-list.createWorktree.branch": "Branch",
|
|
176
314
|
"step-list.providerAction.get_subject": "Get subject",
|
|
177
315
|
"step-list.providerAction.get_comments": "Get comments",
|
|
178
316
|
"step-list.providerAction.post_comment": "Post comment",
|
|
179
317
|
"step-list.providerAction.update_status": "Update status",
|
|
180
318
|
"step-list.providerAction.get_content": "Get content",
|
|
319
|
+
"step-list.extendedAction.mode": "Action source",
|
|
320
|
+
"step-list.extendedAction.portable": "Portable action",
|
|
321
|
+
"step-list.extendedAction.extended": "Use an extended action",
|
|
322
|
+
"step-list.extendedAction.provider": "Provider",
|
|
323
|
+
"step-list.extendedAction.action": "Extended action",
|
|
324
|
+
"step-list.extendedAction.none": "Select an action",
|
|
325
|
+
"step-list.extendedAction.empty": "This provider has no extended actions",
|
|
326
|
+
"step-list.extendedAction.mismatch": "Requires {{required}} — {{active}} is currently configured",
|
|
327
|
+
"step-list.target.toggle": "Target a different subject",
|
|
328
|
+
"step-list.target.subjectType": "Subject type",
|
|
329
|
+
"step-list.target.source": "Provider instance",
|
|
330
|
+
"step-list.target.sourcePlaceholder": "Select an instance",
|
|
331
|
+
"step-list.target.subjectId": "Subject id",
|
|
332
|
+
"step-list.target.subjectIdHint": "Usually an interpolated reference to an earlier step, e.g. resolve-key",
|
|
181
333
|
"step-list.knowledgeTier.user": "User",
|
|
182
334
|
"step-list.knowledgeTier.organization": "Organization",
|
|
183
335
|
"step-list.knowledgeTier.project": "Project",
|
|
@@ -187,7 +339,50 @@
|
|
|
187
339
|
"step-list.onMaxIterations.continue": "Continue",
|
|
188
340
|
"step-list.onMaxIterations.ask_human": "Ask human",
|
|
189
341
|
"settings.title": "Settings",
|
|
190
|
-
"settings.lede": "
|
|
342
|
+
"settings.lede": "Configure provider instances and store API keys. Adding or changing an instance requires a restart; the default agent can be changed immediately.",
|
|
343
|
+
"settings.addProvider": "Add provider",
|
|
344
|
+
"settings.editProvider": "Edit provider",
|
|
345
|
+
"settings.addInstance": "Add provider instance",
|
|
346
|
+
"settings.addInstance.submit": "Add instance",
|
|
347
|
+
"settings.removeInstance": "Remove",
|
|
348
|
+
"settings.edit": "Edit",
|
|
349
|
+
"settings.delete": "Delete",
|
|
350
|
+
"settings.deleteConfirm": "Are you sure you want to delete this provider instance?",
|
|
351
|
+
"settings.kind.label": "Kind",
|
|
352
|
+
"settings.kind.subject": "Subject provider",
|
|
353
|
+
"settings.kind.agent": "Agent",
|
|
354
|
+
"settings.type.label": "Type",
|
|
355
|
+
"settings.typeOption.jira": "Jira",
|
|
356
|
+
"settings.typeOption.bitbucket": "Bitbucket",
|
|
357
|
+
"settings.typeOption.github": "GitHub Issues",
|
|
358
|
+
"settings.typeOption.confluence": "Confluence",
|
|
359
|
+
"settings.typeOption.manualTicket": "Manual (Ticket)",
|
|
360
|
+
"settings.typeOption.manualDocumentation": "Manual (Documentation)",
|
|
361
|
+
"settings.typeOption.claude": "Claude",
|
|
362
|
+
"settings.typeOption.cursor": "Cursor",
|
|
363
|
+
"settings.subjectType.label": "Subject type",
|
|
364
|
+
"settings.instanceId": "Instance id",
|
|
365
|
+
"settings.instanceIdHint": "Generated from the display name — edit it directly if you want a different id.",
|
|
366
|
+
"settings.displayName": "Display name",
|
|
367
|
+
"settings.displayNameRequired": "Display name is required",
|
|
368
|
+
"settings.defaultAgent.label": "Default agent",
|
|
369
|
+
"settings.defaultAgent.toggle": "Set as default agent",
|
|
370
|
+
"settings.column.displayName": "Display name",
|
|
371
|
+
"settings.column.type": "Type",
|
|
372
|
+
"settings.column.expiresOn": "Expires on",
|
|
373
|
+
"settings.column.default": "Default",
|
|
374
|
+
"settings.column.actions": "Actions",
|
|
375
|
+
"settings.expiresOn.label": "Expires on",
|
|
376
|
+
"settings.expiresOn.hint": "A manual reminder only — Knoflows does not check this date with the provider.",
|
|
377
|
+
"settings.ticket.github": "GitHub Issues",
|
|
378
|
+
"settings.github.username": "GitHub username",
|
|
379
|
+
"step-list.agentInstance.label": "Agent",
|
|
380
|
+
"step-list.agentInstance.default": "Use default agent",
|
|
381
|
+
"views.editor.instance": "Provider instance",
|
|
382
|
+
"views.editor.instancePlaceholder": "Select a provider instance",
|
|
383
|
+
"views.editor.instanceNeeded": "This view has no provider instance. Pick one to finish setup.",
|
|
384
|
+
"views.editor.noEligibleInstances": "No configured providers support this workflow's subject type — add one in Manage → Providers first",
|
|
385
|
+
"views.editor.pickInstance": "Pick a provider instance",
|
|
191
386
|
"settings.section.ticket": "Ticket tracking",
|
|
192
387
|
"settings.section.repo": "Repository hosting",
|
|
193
388
|
"settings.section.agent": "Coding agent",
|
|
@@ -202,6 +397,8 @@
|
|
|
202
397
|
"settings.agent.cursor": "Cursor",
|
|
203
398
|
"settings.jira.baseUrl": "Jira base URL",
|
|
204
399
|
"settings.jira.email": "Jira email",
|
|
400
|
+
"settings.confluence.baseUrl": "Confluence base URL",
|
|
401
|
+
"settings.confluence.email": "Confluence email",
|
|
205
402
|
"settings.bitbucket.baseUrl": "Bitbucket base URL",
|
|
206
403
|
"settings.bitbucket.email": "Bitbucket email",
|
|
207
404
|
"settings.bitbucket.workspace": "Bitbucket workspace",
|
|
@@ -209,21 +406,32 @@
|
|
|
209
406
|
"settings.apiKey.configured": "Configured ✓",
|
|
210
407
|
"settings.apiKey.notConfigured": "Not configured",
|
|
211
408
|
"settings.apiKey.placeholder": "Enter a new key to replace the stored value",
|
|
409
|
+
"settings.apiKey.placeholderCreate": "API key",
|
|
410
|
+
"settings.apiKey.placeholderEdit": "Leave blank to keep the current key",
|
|
411
|
+
"settings.apiKey.required": "API key is required",
|
|
212
412
|
"settings.apiKey.set": "Set key",
|
|
213
413
|
"settings.apiKey.setSuccess": "API key saved",
|
|
214
414
|
"settings.apiKey.setFailed": "Failed to save API key",
|
|
215
|
-
"settings.
|
|
415
|
+
"settings.apiKey.setFailedAfterSave": "Provider saved, but the API key could not be stored. Enter the key again to finish setup.",
|
|
416
|
+
"settings.model.label": "Default model",
|
|
417
|
+
"settings.model.placeholder": "Provider default",
|
|
418
|
+
"settings.model.fetch": "Fetch available models",
|
|
419
|
+
"settings.model.fetchFailed": "Could not fetch models",
|
|
420
|
+
"settings.model.hint": "Leave unset to use the provider's own default. Fetch after entering an API key.",
|
|
421
|
+
"settings.restartRequired.message": "Some changes require restarting Knoflows to take effect",
|
|
216
422
|
"settings.saveSuccess": "Settings saved",
|
|
217
423
|
"settings.saveFailed": "Failed to save settings",
|
|
218
424
|
"settings.validation": "Validation",
|
|
219
425
|
"settings.loadFailed": "Failed to load settings",
|
|
220
426
|
"workflows.list.title": "Workflows",
|
|
221
427
|
"workflows.list.createButton": "Create workflow",
|
|
428
|
+
"workflows.list.browseLibrary": "Browse library",
|
|
222
429
|
"workflows.list.emptyState": "No workflows yet. Create one to get started.",
|
|
223
430
|
"workflows.list.emptyCreateButton": "Create your first workflow",
|
|
431
|
+
"workflows.list.emptyBrowseLibrary": "Browse the library",
|
|
224
432
|
"workflows.list.stepCount": "{{count}} steps",
|
|
225
433
|
"workflows.list.noDescription": "No description",
|
|
226
|
-
"workflows.list.
|
|
434
|
+
"workflows.list.filterBySubjectHandling": "Filter by items",
|
|
227
435
|
"workflows.list.filterAll": "All",
|
|
228
436
|
"workflows.list.edit": "Edit",
|
|
229
437
|
"workflows.list.delete": "Delete",
|
|
@@ -234,6 +442,17 @@
|
|
|
234
442
|
"workflows.list.column.steps": "Steps",
|
|
235
443
|
"workflows.list.column.actions": "Actions",
|
|
236
444
|
"workflows.list.loadFailed": "Failed to load workflows",
|
|
445
|
+
"workflow-library.title": "Workflow library",
|
|
446
|
+
"workflow-library.lede": "Copy an example into your workspace. Once added, it is yours to edit.",
|
|
447
|
+
"workflow-library.source.example": "Example",
|
|
448
|
+
"workflow-library.source.community": "Community",
|
|
449
|
+
"workflow-library.source.official": "Official",
|
|
450
|
+
"workflow-library.previewSteps": "Preview steps",
|
|
451
|
+
"workflow-library.hideSteps": "Hide steps",
|
|
452
|
+
"workflow-library.add": "Add to my workflows",
|
|
453
|
+
"workflow-library.adding": "Adding…",
|
|
454
|
+
"workflow-library.loadFailed": "Failed to load the workflow library",
|
|
455
|
+
"workflow-library.addFailed": "Failed to add this workflow",
|
|
237
456
|
"views.list.title": "Views",
|
|
238
457
|
"views.list.createButton": "Create view",
|
|
239
458
|
"views.list.emptyState": "No views yet. Create one to get started.",
|
|
@@ -245,15 +464,24 @@
|
|
|
245
464
|
"views.list.loadFailed": "Failed to load views",
|
|
246
465
|
"views.list.column.name": "Name",
|
|
247
466
|
"views.list.column.subjectType": "Subject type",
|
|
467
|
+
"views.list.column.workflow": "Workflow",
|
|
248
468
|
"views.list.column.query": "Query",
|
|
249
469
|
"views.list.column.actions": "Actions",
|
|
250
470
|
"views.editor.titleNew": "New view",
|
|
251
471
|
"views.editor.titleEdit": "Edit view · {{id}}",
|
|
252
472
|
"views.editor.backToList": "Back to views",
|
|
253
473
|
"views.editor.name": "Name",
|
|
474
|
+
"views.editor.workflow": "Workflow",
|
|
254
475
|
"views.editor.subjectType": "Subject type",
|
|
255
476
|
"views.editor.query": "Query (JSON)",
|
|
256
|
-
"views.editor.queryHint": "Raw provider filter object.
|
|
477
|
+
"views.editor.queryHint": "Raw provider filter object. Use this when no template covers what you need.",
|
|
478
|
+
"views.editor.queryMode": "Query",
|
|
479
|
+
"views.editor.queryMode.template": "Template",
|
|
480
|
+
"views.editor.queryMode.raw": "Raw JSON",
|
|
481
|
+
"views.editor.template": "Template",
|
|
482
|
+
"views.editor.pickTemplate": "Choose a query template, or switch to raw JSON",
|
|
483
|
+
"views.editor.missingParam": "{{label}} is required",
|
|
484
|
+
"views.editor.resolveFailed": "Failed to resolve query template",
|
|
257
485
|
"views.editor.invalidJson": "Query must be a JSON object",
|
|
258
486
|
"views.editor.validation": "Validation",
|
|
259
487
|
"views.editor.created": "View created",
|
|
@@ -283,14 +511,41 @@
|
|
|
283
511
|
"views.detail.start": "Start",
|
|
284
512
|
"views.detail.rowStartWorkflow": "Single workflow for row start",
|
|
285
513
|
"views.detail.emptySubjects": "No subjects currently match this view.",
|
|
514
|
+
"runnableTable.column.item": "Item",
|
|
515
|
+
"runnableTable.column.latestRun": "Latest run",
|
|
516
|
+
"runnableTable.column.actions": "Actions",
|
|
517
|
+
"runnableTable.run": "Run",
|
|
518
|
+
"runnableTable.runSelected": "Run selected ({{count}})",
|
|
519
|
+
"runnableTable.neverRun": "Never run",
|
|
520
|
+
"shortcuts.list.title": "Shortcuts",
|
|
521
|
+
"shortcuts.list.createButton": "Create shortcut",
|
|
522
|
+
"shortcuts.list.emptyState": "No shortcuts yet. Create one to run a subject-less workflow with saved inputs.",
|
|
523
|
+
"shortcuts.list.emptyCreateButton": "Create your first shortcut",
|
|
524
|
+
"shortcuts.list.loadFailed": "Failed to load shortcuts",
|
|
525
|
+
"shortcuts.list.runFailed": "Failed to start shortcut",
|
|
526
|
+
"shortcuts.list.deleteFailed": "Failed to delete shortcut",
|
|
527
|
+
"shortcuts.editor.titleNew": "New shortcut",
|
|
528
|
+
"shortcuts.editor.titleEdit": "Edit shortcut · {{id}}",
|
|
529
|
+
"shortcuts.editor.backToList": "Back to shortcuts",
|
|
530
|
+
"shortcuts.editor.name": "Name",
|
|
531
|
+
"shortcuts.editor.workflow": "Workflow",
|
|
532
|
+
"shortcuts.editor.validation": "Validation",
|
|
533
|
+
"shortcuts.editor.created": "Shortcut created",
|
|
534
|
+
"shortcuts.editor.saved": "Shortcut saved",
|
|
535
|
+
"shortcuts.editor.saveFailed": "Failed to save shortcut",
|
|
536
|
+
"shortcuts.editor.loadFailed": "Failed to load shortcut",
|
|
286
537
|
"batches.detail.backHint": "Back to views",
|
|
287
538
|
"batches.detail.loadFailed": "Failed to load batch",
|
|
288
539
|
"batches.detail.subjectCount": "{{count}} subjects",
|
|
289
540
|
"batches.detail.membersHeading": "Member jobs",
|
|
541
|
+
"batches.detail.cancel": "Cancel batch",
|
|
542
|
+
"batches.detail.cancelling": "Cancelling…",
|
|
543
|
+
"batches.errors.cancelFailed": "Failed to cancel batch",
|
|
290
544
|
"batches.status.running": "Running",
|
|
291
545
|
"batches.status.completed": "Completed",
|
|
292
546
|
"batches.status.completed_with_issues": "Completed with issues",
|
|
293
547
|
"batches.status.failed": "Failed",
|
|
548
|
+
"batches.status.cancelled": "Cancelled",
|
|
294
549
|
"batches.triggeredBy.schedule": "Schedule",
|
|
295
550
|
"batches.triggeredBy.view_bulk": "View (all matching)",
|
|
296
551
|
"batches.triggeredBy.multiselect": "Multiselect"
|