@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.
- 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 +253 -16
- package/static/assets/i18n/es.json +253 -16
- package/static/chunk-2KSNHCgb.js +1 -0
- package/static/chunk-3mppll1n.js +1 -0
- package/static/chunk-6BQlxALO.js +1 -0
- package/static/chunk-A4AkMf2s.js +1 -0
- package/static/chunk-B2hO-qT3.js +1 -0
- package/static/chunk-B8MrNxxk.js +1 -0
- package/static/{chunk-CeFjDLjY.js → chunk-BAc0DRm8.js} +1 -1
- package/static/chunk-BFkZ796p.js +7 -0
- package/static/chunk-BNOYZq-b.js +1 -0
- package/static/chunk-BUuwGTt7.js +66 -0
- package/static/chunk-BVw7xkK9.js +1 -0
- package/static/chunk-BbcTWKT2.js +1 -0
- package/static/chunk-BhGgxvgu.js +1 -0
- package/static/chunk-BjZIiizu.js +1 -0
- package/static/chunk-CDWIMt6y.js +1 -0
- package/static/{chunk-C50zASMN.js → chunk-CEcbtdnK.js} +1 -1
- package/static/chunk-CJDp11v5.js +1 -0
- package/static/chunk-CJRNatUw.js +1 -0
- package/static/chunk-CWbxWv5I.js +1 -0
- package/static/chunk-Cd8F2jeN.js +1 -0
- package/static/chunk-Cf_xd8ER.js +1 -0
- package/static/chunk-CgqRVtSF.js +1 -0
- package/static/chunk-CxBYhrEj.js +1 -0
- package/static/chunk-D6YfO72h.js +1 -0
- package/static/{chunk-Dw1tJgiv.js → chunk-DNOjVPY0.js} +1 -1
- package/static/chunk-DQnMulwi.js +1 -0
- package/static/chunk-DblClAqu.js +1 -0
- package/static/chunk-DjibVmY7.js +1 -0
- package/static/chunk-DoXxOh8j.js +1 -0
- package/static/{chunk-CSPhdKAb.js → chunk-Ojn34cvU.js} +1 -1
- package/static/chunk-W5GAgssE.js +1 -0
- package/static/chunk-XLpSkczx.js +1 -0
- package/static/chunk-cHfOiAJm.js +1 -0
- package/static/{chunk-ZijlINsH.js → chunk-eSxb3-OU.js} +1 -1
- package/static/chunk-hZzW00VR.js +1 -0
- package/static/chunk-jct1_zOr.js +1 -0
- package/static/chunk-mzyds3TS.js +1 -0
- package/static/chunk-tYnBYi0l.js +1 -0
- package/static/chunk-wbdetocK.js +5 -0
- package/static/index.html +2 -2
- package/static/main-MNK6ZYDO.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.10",
|
|
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,108 @@
|
|
|
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
|
+
"manage.views.title": "Views & Shortcuts",
|
|
84
|
+
"manage.views.createView": "Create a View",
|
|
85
|
+
"manage.views.createShortcut": "Create a Shortcut",
|
|
86
|
+
"manage.views.emptyState": "No views or shortcuts yet. Create one to get started.",
|
|
87
|
+
"manage.views.column.name": "Name",
|
|
88
|
+
"manage.views.column.type": "Type",
|
|
89
|
+
"manage.views.column.workflow": "Bound workflow",
|
|
90
|
+
"manage.views.column.subjectType": "Subject type",
|
|
91
|
+
"manage.views.column.actions": "Actions",
|
|
92
|
+
"manage.views.type.view": "View",
|
|
93
|
+
"manage.views.type.shortcut": "Shortcut",
|
|
94
|
+
"manage.views.noSubjectType": "—",
|
|
95
|
+
"manage.views.edit": "Edit",
|
|
96
|
+
"manage.views.delete": "Delete",
|
|
97
|
+
"manage.views.deleteConfirmView": "Are you sure you want to delete this view?",
|
|
98
|
+
"manage.views.deleteConfirmShortcut": "Are you sure you want to delete this shortcut?",
|
|
99
|
+
"manage.views.deleteFailed": "Failed to delete",
|
|
100
|
+
"manage.views.loadFailed": "Failed to load views and shortcuts",
|
|
10
101
|
"shell.group.tickets": "Tickets",
|
|
11
102
|
"shell.group.pullRequests": "Pull Requests",
|
|
12
103
|
"shell.group.documentation": "Documentation",
|
|
104
|
+
"shell.shortcuts": "Shortcuts",
|
|
13
105
|
"shell.provider.jira": "Jira",
|
|
14
106
|
"shell.provider.bitbucket": "Bitbucket",
|
|
15
107
|
"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
|
|
108
|
+
"shell.empty.body": "Views and shortcuts appear here once you configure a provider in Settings and save at least one.",
|
|
17
109
|
"shell.empty.settingsLink": "Open Settings",
|
|
18
110
|
"nav.language": "Language",
|
|
19
111
|
"nav.localeCheck": "Locale check",
|
|
@@ -21,8 +113,8 @@
|
|
|
21
113
|
"common.cancel": "Cancel",
|
|
22
114
|
"common.loading": "Loading…",
|
|
23
115
|
"common.errorGeneric": "Something went wrong",
|
|
24
|
-
"jobs.title": "
|
|
25
|
-
"jobs.lede": "Pick a
|
|
116
|
+
"jobs.title": "Knoflows — Start a Job",
|
|
117
|
+
"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
118
|
"jobs.start.heading": "Start a Job",
|
|
27
119
|
"jobs.start.workflow": "Workflow",
|
|
28
120
|
"jobs.start.subjectId": "subjectId",
|
|
@@ -49,6 +141,9 @@
|
|
|
49
141
|
"jobs.errors.subjectIdRequired": "subjectId is required for this workflow",
|
|
50
142
|
"jobs.errors.startFailed": "Failed to start job",
|
|
51
143
|
"jobs.errors.resumeFailed": "Failed to resume job",
|
|
144
|
+
"jobs.errors.retryFailed": "Failed to retry job",
|
|
145
|
+
"jobs.errors.retryStepFailed": "Failed to retry step",
|
|
146
|
+
"jobs.errors.cancelFailed": "Failed to cancel job",
|
|
52
147
|
"jobs.errors.refreshFailed": "Failed to refresh job",
|
|
53
148
|
"jobs.detail.backToStart": "Back to jobs",
|
|
54
149
|
"jobs.detail.loadFailed": "Failed to load job",
|
|
@@ -56,6 +151,13 @@
|
|
|
56
151
|
"jobs.detail.workflowMissing": "Workflow definition is unavailable; step list cannot be shown.",
|
|
57
152
|
"jobs.detail.queued": "Queued — waiting for the first step to start.",
|
|
58
153
|
"jobs.detail.jumpToCurrent": "Jump to current step",
|
|
154
|
+
"jobs.detail.retryWorkflow": "Retry entire workflow",
|
|
155
|
+
"jobs.detail.retryStep": "Retry this step",
|
|
156
|
+
"jobs.detail.retrying": "Retrying…",
|
|
157
|
+
"jobs.detail.cancel": "Cancel",
|
|
158
|
+
"jobs.detail.cancelling": "Cancelling…",
|
|
159
|
+
"jobs.detail.worktree": "Worktree",
|
|
160
|
+
"jobs.detail.worktreeDeleted": "Worktree deleted",
|
|
59
161
|
"jobs.detail.stepsHeading": "Steps",
|
|
60
162
|
"jobs.detail.noStepSelected": "Select a step to inspect its output.",
|
|
61
163
|
"jobs.detail.loopBack": "Back to loop",
|
|
@@ -79,6 +181,9 @@
|
|
|
79
181
|
"jobs.table.column.subject": "Subject",
|
|
80
182
|
"jobs.table.column.started": "Started",
|
|
81
183
|
"jobs.table.column.completed": "Completed",
|
|
184
|
+
"jobs.table.column.actions": "Actions",
|
|
185
|
+
"jobs.table.retry": "Retry",
|
|
186
|
+
"jobs.table.cancel": "Cancel",
|
|
82
187
|
"jobs.list.title": "Jobs",
|
|
83
188
|
"jobs.list.filterByStatus": "Filter by status",
|
|
84
189
|
"jobs.list.filterByWorkflow": "Filter by workflow",
|
|
@@ -87,23 +192,28 @@
|
|
|
87
192
|
"jobs.list.empty": "No jobs match these filters.",
|
|
88
193
|
"jobs.list.loadFailed": "Failed to load jobs",
|
|
89
194
|
"jobs.list.filterAll": "All",
|
|
195
|
+
"jobs.list.running": "Currently Running",
|
|
196
|
+
"jobs.list.history": "History",
|
|
197
|
+
"jobs.list.runningEmpty": "No jobs are running.",
|
|
198
|
+
"jobs.list.historyEmpty": "No jobs match these filters.",
|
|
90
199
|
"workflow-editor.titleNew": "New workflow",
|
|
91
200
|
"workflow-editor.titleEdit": "Edit workflow · {{id}}",
|
|
92
|
-
"workflow-editor.
|
|
201
|
+
"workflow-editor.backToWorkflows": "Back to workflows",
|
|
93
202
|
"workflow-editor.loading": "Loading…",
|
|
94
203
|
"workflow-editor.validation": "Validation",
|
|
95
204
|
"workflow-editor.basics": "Basics",
|
|
96
205
|
"workflow-editor.name": "Workflow name",
|
|
97
206
|
"workflow-editor.appliesTo": "Runs on",
|
|
98
|
-
"workflow-editor.
|
|
207
|
+
"workflow-editor.subjectHandling.label": "Items",
|
|
99
208
|
"workflow-editor.description": "Description",
|
|
100
209
|
"workflow-editor.subjectType.none": "Nothing, standalone workflow",
|
|
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.
|
|
105
|
-
"workflow-editor.
|
|
106
|
-
"workflow-editor.
|
|
213
|
+
"workflow-editor.subjectHandling.per-subject": "One at a time",
|
|
214
|
+
"workflow-editor.subjectHandling.collection": "As a group",
|
|
215
|
+
"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.",
|
|
216
|
+
"workflow-editor.subjectHandling.help.collection": "Steps see the whole selected set and produce one combined result.",
|
|
107
217
|
"workflow-editor.notificationPolicy": "Notification policy",
|
|
108
218
|
"workflow-editor.trigger.on_fail": "On failure",
|
|
109
219
|
"workflow-editor.trigger.on_complete": "On completion",
|
|
@@ -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": "Local repository",
|
|
120
231
|
"workflow-editor.required": "Required",
|
|
121
232
|
"workflow-editor.remove": "Remove",
|
|
122
233
|
"workflow-editor.addInputField": "Add input field",
|
|
@@ -128,12 +239,14 @@
|
|
|
128
239
|
"step-list.moveDown": "Down",
|
|
129
240
|
"step-list.remove": "Remove",
|
|
130
241
|
"step-list.addStep": "Add step",
|
|
242
|
+
"step-list.unnamed": "Untitled",
|
|
131
243
|
"step-list.name": "Name",
|
|
132
244
|
"step-list.id": "Id",
|
|
133
245
|
"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.
|
|
246
|
+
"step-list.objective": "Prompt",
|
|
247
|
+
"step-list.contextFiles": "Context Files",
|
|
248
|
+
"step-list.contextFilesEmpty": "None selected",
|
|
249
|
+
"step-list.selectContextFiles": "Select context files",
|
|
137
250
|
"step-list.outputFormat.label": "Output format",
|
|
138
251
|
"step-list.interaction.label": "Interaction",
|
|
139
252
|
"step-list.notify": "Notify",
|
|
@@ -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": "Mode",
|
|
290
|
+
"step-list.createWorktree.newBranch": "New branch",
|
|
291
|
+
"step-list.createWorktree.existingBranch": "Existing branch",
|
|
292
|
+
"step-list.createWorktree.repoPath": "Repository path",
|
|
293
|
+
"step-list.createWorktree.baseBranch": "Base branch",
|
|
294
|
+
"step-list.createWorktree.branchName": "Branch name",
|
|
295
|
+
"step-list.createWorktree.branch": "Branch",
|
|
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": "Action source",
|
|
302
|
+
"step-list.extendedAction.portable": "Portable action",
|
|
303
|
+
"step-list.extendedAction.extended": "Use an extended action",
|
|
304
|
+
"step-list.extendedAction.provider": "Provider",
|
|
305
|
+
"step-list.extendedAction.action": "Extended action",
|
|
306
|
+
"step-list.extendedAction.none": "Select an action",
|
|
307
|
+
"step-list.extendedAction.empty": "This provider has no extended actions",
|
|
308
|
+
"step-list.extendedAction.mismatch": "Requires {{required}} — {{active}} is currently configured",
|
|
309
|
+
"step-list.target.toggle": "Target a different subject",
|
|
310
|
+
"step-list.target.subjectType": "Subject type",
|
|
311
|
+
"step-list.target.source": "Provider instance",
|
|
312
|
+
"step-list.target.sourcePlaceholder": "Select an instance",
|
|
313
|
+
"step-list.target.subjectId": "Subject id",
|
|
314
|
+
"step-list.target.subjectIdHint": "Usually an interpolated reference to an earlier step, e.g. 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": "Settings",
|
|
190
|
-
"settings.lede": "
|
|
324
|
+
"settings.lede": "Configure provider instances and store API keys. Adding or changing an instance requires a restart; the default agent can be changed immediately.",
|
|
325
|
+
"settings.addProvider": "Add provider",
|
|
326
|
+
"settings.editProvider": "Edit provider",
|
|
327
|
+
"settings.addInstance": "Add provider instance",
|
|
328
|
+
"settings.addInstance.submit": "Add instance",
|
|
329
|
+
"settings.removeInstance": "Remove",
|
|
330
|
+
"settings.edit": "Edit",
|
|
331
|
+
"settings.delete": "Delete",
|
|
332
|
+
"settings.deleteConfirm": "Are you sure you want to delete this provider instance?",
|
|
333
|
+
"settings.kind.label": "Kind",
|
|
334
|
+
"settings.kind.subject": "Subject provider",
|
|
335
|
+
"settings.kind.agent": "Agent",
|
|
336
|
+
"settings.type.label": "Type",
|
|
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 (Documentation)",
|
|
343
|
+
"settings.typeOption.claude": "Claude",
|
|
344
|
+
"settings.typeOption.cursor": "Cursor",
|
|
345
|
+
"settings.subjectType.label": "Subject type",
|
|
346
|
+
"settings.instanceId": "Instance id",
|
|
347
|
+
"settings.instanceIdHint": "Generated from the display name — edit it directly if you want a different id.",
|
|
348
|
+
"settings.displayName": "Display name",
|
|
349
|
+
"settings.displayNameRequired": "Display name is required",
|
|
350
|
+
"settings.defaultAgent.label": "Default agent",
|
|
351
|
+
"settings.defaultAgent.toggle": "Set as default agent",
|
|
352
|
+
"settings.column.displayName": "Display name",
|
|
353
|
+
"settings.column.type": "Type",
|
|
354
|
+
"settings.column.expiresOn": "Expires on",
|
|
355
|
+
"settings.column.default": "Default",
|
|
356
|
+
"settings.column.actions": "Actions",
|
|
357
|
+
"settings.expiresOn.label": "Expires on",
|
|
358
|
+
"settings.expiresOn.hint": "A manual reminder only — Knoflows does not check this date with the provider.",
|
|
359
|
+
"settings.ticket.github": "GitHub Issues",
|
|
360
|
+
"settings.github.username": "GitHub username",
|
|
361
|
+
"step-list.agentInstance.label": "Agent",
|
|
362
|
+
"step-list.agentInstance.default": "Use default agent",
|
|
363
|
+
"views.editor.instance": "Provider instance",
|
|
364
|
+
"views.editor.instancePlaceholder": "Select a provider instance",
|
|
365
|
+
"views.editor.instanceNeeded": "This view has no provider instance. Pick one to finish setup.",
|
|
366
|
+
"views.editor.noEligibleInstances": "No configured providers support this workflow's subject type — add one in Manage → Providers first",
|
|
367
|
+
"views.editor.pickInstance": "Pick a provider instance",
|
|
191
368
|
"settings.section.ticket": "Ticket tracking",
|
|
192
369
|
"settings.section.repo": "Repository hosting",
|
|
193
370
|
"settings.section.agent": "Coding agent",
|
|
@@ -202,6 +379,8 @@
|
|
|
202
379
|
"settings.agent.cursor": "Cursor",
|
|
203
380
|
"settings.jira.baseUrl": "Jira base URL",
|
|
204
381
|
"settings.jira.email": "Jira email",
|
|
382
|
+
"settings.confluence.baseUrl": "Confluence base URL",
|
|
383
|
+
"settings.confluence.email": "Confluence email",
|
|
205
384
|
"settings.bitbucket.baseUrl": "Bitbucket base URL",
|
|
206
385
|
"settings.bitbucket.email": "Bitbucket email",
|
|
207
386
|
"settings.bitbucket.workspace": "Bitbucket workspace",
|
|
@@ -209,21 +388,32 @@
|
|
|
209
388
|
"settings.apiKey.configured": "Configured ✓",
|
|
210
389
|
"settings.apiKey.notConfigured": "Not configured",
|
|
211
390
|
"settings.apiKey.placeholder": "Enter a new key to replace the stored value",
|
|
391
|
+
"settings.apiKey.placeholderCreate": "API key",
|
|
392
|
+
"settings.apiKey.placeholderEdit": "Leave blank to keep the current key",
|
|
393
|
+
"settings.apiKey.required": "API key is required",
|
|
212
394
|
"settings.apiKey.set": "Set key",
|
|
213
395
|
"settings.apiKey.setSuccess": "API key saved",
|
|
214
396
|
"settings.apiKey.setFailed": "Failed to save API key",
|
|
215
|
-
"settings.
|
|
397
|
+
"settings.apiKey.setFailedAfterSave": "Provider saved, but the API key could not be stored. Enter the key again to finish setup.",
|
|
398
|
+
"settings.model.label": "Default model",
|
|
399
|
+
"settings.model.placeholder": "Provider default",
|
|
400
|
+
"settings.model.fetch": "Fetch available models",
|
|
401
|
+
"settings.model.fetchFailed": "Could not fetch models",
|
|
402
|
+
"settings.model.hint": "Leave unset to use the provider's own default. Fetch after entering an API key.",
|
|
403
|
+
"settings.restartRequired.message": "Some changes require restarting Knoflows to take effect",
|
|
216
404
|
"settings.saveSuccess": "Settings saved",
|
|
217
405
|
"settings.saveFailed": "Failed to save settings",
|
|
218
406
|
"settings.validation": "Validation",
|
|
219
407
|
"settings.loadFailed": "Failed to load settings",
|
|
220
408
|
"workflows.list.title": "Workflows",
|
|
221
409
|
"workflows.list.createButton": "Create workflow",
|
|
410
|
+
"workflows.list.browseLibrary": "Browse library",
|
|
222
411
|
"workflows.list.emptyState": "No workflows yet. Create one to get started.",
|
|
223
412
|
"workflows.list.emptyCreateButton": "Create your first workflow",
|
|
413
|
+
"workflows.list.emptyBrowseLibrary": "Browse the library",
|
|
224
414
|
"workflows.list.stepCount": "{{count}} steps",
|
|
225
415
|
"workflows.list.noDescription": "No description",
|
|
226
|
-
"workflows.list.
|
|
416
|
+
"workflows.list.filterBySubjectHandling": "Filter by items",
|
|
227
417
|
"workflows.list.filterAll": "All",
|
|
228
418
|
"workflows.list.edit": "Edit",
|
|
229
419
|
"workflows.list.delete": "Delete",
|
|
@@ -234,6 +424,17 @@
|
|
|
234
424
|
"workflows.list.column.steps": "Steps",
|
|
235
425
|
"workflows.list.column.actions": "Actions",
|
|
236
426
|
"workflows.list.loadFailed": "Failed to load workflows",
|
|
427
|
+
"workflow-library.title": "Workflow library",
|
|
428
|
+
"workflow-library.lede": "Copy an example into your workspace. Once added, it is yours to edit.",
|
|
429
|
+
"workflow-library.source.example": "Example",
|
|
430
|
+
"workflow-library.source.community": "Community",
|
|
431
|
+
"workflow-library.source.official": "Official",
|
|
432
|
+
"workflow-library.previewSteps": "Preview steps",
|
|
433
|
+
"workflow-library.hideSteps": "Hide steps",
|
|
434
|
+
"workflow-library.add": "Add to my workflows",
|
|
435
|
+
"workflow-library.adding": "Adding…",
|
|
436
|
+
"workflow-library.loadFailed": "Failed to load the workflow library",
|
|
437
|
+
"workflow-library.addFailed": "Failed to add this workflow",
|
|
237
438
|
"views.list.title": "Views",
|
|
238
439
|
"views.list.createButton": "Create view",
|
|
239
440
|
"views.list.emptyState": "No views yet. Create one to get started.",
|
|
@@ -245,15 +446,24 @@
|
|
|
245
446
|
"views.list.loadFailed": "Failed to load views",
|
|
246
447
|
"views.list.column.name": "Name",
|
|
247
448
|
"views.list.column.subjectType": "Subject type",
|
|
449
|
+
"views.list.column.workflow": "Workflow",
|
|
248
450
|
"views.list.column.query": "Query",
|
|
249
451
|
"views.list.column.actions": "Actions",
|
|
250
452
|
"views.editor.titleNew": "New view",
|
|
251
453
|
"views.editor.titleEdit": "Edit view · {{id}}",
|
|
252
454
|
"views.editor.backToList": "Back to views",
|
|
253
455
|
"views.editor.name": "Name",
|
|
456
|
+
"views.editor.workflow": "Workflow",
|
|
254
457
|
"views.editor.subjectType": "Subject type",
|
|
255
458
|
"views.editor.query": "Query (JSON)",
|
|
256
|
-
"views.editor.queryHint": "Raw provider filter object.
|
|
459
|
+
"views.editor.queryHint": "Raw provider filter object. Use this when no template covers what you need.",
|
|
460
|
+
"views.editor.queryMode": "Query",
|
|
461
|
+
"views.editor.queryMode.template": "Template",
|
|
462
|
+
"views.editor.queryMode.raw": "Raw JSON",
|
|
463
|
+
"views.editor.template": "Template",
|
|
464
|
+
"views.editor.pickTemplate": "Choose a query template, or switch to raw JSON",
|
|
465
|
+
"views.editor.missingParam": "{{label}} is required",
|
|
466
|
+
"views.editor.resolveFailed": "Failed to resolve query template",
|
|
257
467
|
"views.editor.invalidJson": "Query must be a JSON object",
|
|
258
468
|
"views.editor.validation": "Validation",
|
|
259
469
|
"views.editor.created": "View created",
|
|
@@ -283,14 +493,41 @@
|
|
|
283
493
|
"views.detail.start": "Start",
|
|
284
494
|
"views.detail.rowStartWorkflow": "Single workflow for row start",
|
|
285
495
|
"views.detail.emptySubjects": "No subjects currently match this view.",
|
|
496
|
+
"runnableTable.column.item": "Item",
|
|
497
|
+
"runnableTable.column.latestRun": "Latest run",
|
|
498
|
+
"runnableTable.column.actions": "Actions",
|
|
499
|
+
"runnableTable.run": "Run",
|
|
500
|
+
"runnableTable.runSelected": "Run selected ({{count}})",
|
|
501
|
+
"runnableTable.neverRun": "Never run",
|
|
502
|
+
"shortcuts.list.title": "Shortcuts",
|
|
503
|
+
"shortcuts.list.createButton": "Create shortcut",
|
|
504
|
+
"shortcuts.list.emptyState": "No shortcuts yet. Create one to run a subject-less workflow with saved inputs.",
|
|
505
|
+
"shortcuts.list.emptyCreateButton": "Create your first shortcut",
|
|
506
|
+
"shortcuts.list.loadFailed": "Failed to load shortcuts",
|
|
507
|
+
"shortcuts.list.runFailed": "Failed to start shortcut",
|
|
508
|
+
"shortcuts.list.deleteFailed": "Failed to delete shortcut",
|
|
509
|
+
"shortcuts.editor.titleNew": "New shortcut",
|
|
510
|
+
"shortcuts.editor.titleEdit": "Edit shortcut · {{id}}",
|
|
511
|
+
"shortcuts.editor.backToList": "Back to shortcuts",
|
|
512
|
+
"shortcuts.editor.name": "Name",
|
|
513
|
+
"shortcuts.editor.workflow": "Workflow",
|
|
514
|
+
"shortcuts.editor.validation": "Validation",
|
|
515
|
+
"shortcuts.editor.created": "Shortcut created",
|
|
516
|
+
"shortcuts.editor.saved": "Shortcut saved",
|
|
517
|
+
"shortcuts.editor.saveFailed": "Failed to save shortcut",
|
|
518
|
+
"shortcuts.editor.loadFailed": "Failed to load shortcut",
|
|
286
519
|
"batches.detail.backHint": "Back to views",
|
|
287
520
|
"batches.detail.loadFailed": "Failed to load batch",
|
|
288
521
|
"batches.detail.subjectCount": "{{count}} subjects",
|
|
289
522
|
"batches.detail.membersHeading": "Member jobs",
|
|
523
|
+
"batches.detail.cancel": "Cancel batch",
|
|
524
|
+
"batches.detail.cancelling": "Cancelling…",
|
|
525
|
+
"batches.errors.cancelFailed": "Failed to cancel batch",
|
|
290
526
|
"batches.status.running": "Running",
|
|
291
527
|
"batches.status.completed": "Completed",
|
|
292
528
|
"batches.status.completed_with_issues": "Completed with issues",
|
|
293
529
|
"batches.status.failed": "Failed",
|
|
530
|
+
"batches.status.cancelled": "Cancelled",
|
|
294
531
|
"batches.triggeredBy.schedule": "Schedule",
|
|
295
532
|
"batches.triggeredBy.view_bulk": "View (all matching)",
|
|
296
533
|
"batches.triggeredBy.multiselect": "Multiselect"
|