@profoundlogic/coderflow-server 0.7.5 → 0.7.7

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 (175) hide show
  1. package/dist/base-image/agent-wrapper.sh +3 -1
  2. package/dist/coder-server.js +1 -1
  3. package/dist/config.js +1 -1
  4. package/dist/lib/agent-keepalive.js +1 -1
  5. package/dist/lib/agent-models.js +1 -1
  6. package/dist/lib/api-keys.js +1 -1
  7. package/dist/lib/apiKeys.js +1 -1
  8. package/dist/lib/app-server-ports.js +1 -1
  9. package/dist/lib/auto-judge.js +1 -1
  10. package/dist/lib/automation-service.js +1 -1
  11. package/dist/lib/basic-auth.js +1 -1
  12. package/dist/lib/bindings.js +1 -1
  13. package/dist/lib/build-history.js +1 -1
  14. package/dist/lib/build-output-service.js +1 -1
  15. package/dist/lib/build-scheduler.js +1 -1
  16. package/dist/lib/build-service.js +1 -1
  17. package/dist/lib/ca-certificates.js +1 -1
  18. package/dist/lib/claude-oauth-refresh.js +1 -1
  19. package/dist/lib/cli/build.js +1 -1
  20. package/dist/lib/cli/cleanup-users.js +1 -1
  21. package/dist/lib/cli/config-command.js +1 -1
  22. package/dist/lib/cli/config.js +1 -1
  23. package/dist/lib/cli/create-user.js +1 -1
  24. package/dist/lib/cli/grant-admin.js +1 -1
  25. package/dist/lib/cli/init.js +1 -1
  26. package/dist/lib/cli/jira.js +1 -1
  27. package/dist/lib/cli/license.js +1 -1
  28. package/dist/lib/cli/list-roles.js +1 -1
  29. package/dist/lib/cli/list-users.js +1 -1
  30. package/dist/lib/cli/server-manager.js +1 -1
  31. package/dist/lib/cli/set-password.js +1 -1
  32. package/dist/lib/config-migration.js +1 -1
  33. package/dist/lib/container-credential-sync.js +1 -1
  34. package/dist/lib/container-tokens.js +1 -1
  35. package/dist/lib/data-dir.js +1 -1
  36. package/dist/lib/deployment-history.js +1 -1
  37. package/dist/lib/deployment-service.js +1 -1
  38. package/dist/lib/docker-utils.js +1 -1
  39. package/dist/lib/email.js +1 -1
  40. package/dist/lib/emailTemplates.js +1 -1
  41. package/dist/lib/entitlement.js +1 -1
  42. package/dist/lib/external-connections.js +1 -1
  43. package/dist/lib/fetch-utils.js +1 -1
  44. package/dist/lib/git-commit-details-route.js +1 -1
  45. package/dist/lib/git-history-diff-guardrails.js +1 -1
  46. package/dist/lib/git-provider-service.js +1 -1
  47. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  48. package/dist/lib/git-provider-setup/index.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  51. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  52. package/dist/lib/git-providers/github-app-provider.js +1 -1
  53. package/dist/lib/git-providers/index.js +1 -1
  54. package/dist/lib/git-providers/provider-factory.js +1 -1
  55. package/dist/lib/git-providers/provider-interface.js +1 -1
  56. package/dist/lib/github-urls.js +1 -1
  57. package/dist/lib/group-objective-linking.js +1 -1
  58. package/dist/lib/ibmi-sync.js +1 -1
  59. package/dist/lib/jira-client.js +1 -1
  60. package/dist/lib/judge-blinding.js +1 -1
  61. package/dist/lib/logger.js +1 -1
  62. package/dist/lib/memory-utils.js +1 -1
  63. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  64. package/dist/lib/model-fetcher.js +1 -1
  65. package/dist/lib/notifications.js +1 -1
  66. package/dist/lib/objective-context.js +1 -1
  67. package/dist/lib/oidc-auth.js +1 -1
  68. package/dist/lib/oidc-device-flow.js +1 -1
  69. package/dist/lib/passwordTokens.js +1 -1
  70. package/dist/lib/permission-resolver.js +1 -1
  71. package/dist/lib/pin-cascade.js +1 -1
  72. package/dist/lib/provider-accounts.js +1 -1
  73. package/dist/lib/provider-oauth.js +1 -1
  74. package/dist/lib/provider-profile.js +1 -1
  75. package/dist/lib/provider-token-refresh.js +1 -1
  76. package/dist/lib/rbac-user-state.js +1 -1
  77. package/dist/lib/request-url.js +1 -1
  78. package/dist/lib/rewind.js +1 -1
  79. package/dist/lib/role-definitions.js +1 -1
  80. package/dist/lib/roles.js +1 -1
  81. package/dist/lib/secrets.js +1 -1
  82. package/dist/lib/setup-repo-git-auth.js +1 -1
  83. package/dist/lib/state-capture.js +1 -1
  84. package/dist/lib/static-files.js +1 -1
  85. package/dist/lib/task-aliases.js +1 -1
  86. package/dist/lib/task-name-format.js +1 -1
  87. package/dist/lib/task-name-generator.js +1 -1
  88. package/dist/lib/task-source-metadata.js +1 -1
  89. package/dist/lib/teams.js +1 -1
  90. package/dist/lib/user-git-oauth.js +1 -1
  91. package/dist/lib/user-git-tokens.js +1 -1
  92. package/dist/lib/users.js +1 -1
  93. package/dist/middleware/requireAuth.js +1 -1
  94. package/dist/middleware/requireInit.js +1 -1
  95. package/dist/middleware/requirePermission.js +1 -1
  96. package/dist/package.json +1 -1
  97. package/dist/playwright.config.js +1 -1
  98. package/dist/playwright.task-terminal.config.js +1 -1
  99. package/dist/routes/apiKeys.js +1 -1
  100. package/dist/routes/auth-oidc.js +1 -1
  101. package/dist/routes/auth.js +1 -1
  102. package/dist/routes/automations.js +1 -1
  103. package/dist/routes/bindings.js +1 -1
  104. package/dist/routes/build.js +1 -1
  105. package/dist/routes/containers.js +1 -1
  106. package/dist/routes/deploy-task.js +1 -1
  107. package/dist/routes/environment-management.js +1 -1
  108. package/dist/routes/environments.js +1 -1
  109. package/dist/routes/external-skills.js +1 -1
  110. package/dist/routes/git-credentials.js +1 -1
  111. package/dist/routes/git-oauth.js +1 -1
  112. package/dist/routes/git-provider-setup.js +1 -1
  113. package/dist/routes/health.js +1 -1
  114. package/dist/routes/jira.js +1 -1
  115. package/dist/routes/objective-management.js +1 -1
  116. package/dist/routes/password.js +1 -1
  117. package/dist/routes/prompt.js +1 -1
  118. package/dist/routes/provider-auth.js +1 -1
  119. package/dist/routes/qa.js +1 -1
  120. package/dist/routes/roles.js +1 -1
  121. package/dist/routes/settings.js +1 -1
  122. package/dist/routes/skill-management.js +1 -1
  123. package/dist/routes/skills.js +1 -1
  124. package/dist/routes/tasks.js +1 -1
  125. package/dist/routes/teams.js +1 -1
  126. package/dist/routes/templates.js +1 -1
  127. package/dist/routes/test-task.js +1 -1
  128. package/dist/routes/test.js +1 -1
  129. package/dist/routes/users.js +1 -1
  130. package/dist/routes/visualizations.js +1 -1
  131. package/dist/scripts/create-user.js +1 -1
  132. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  133. package/dist/shipped-skills/environment-templates/SKILL.md +152 -17
  134. package/dist/start.js +1 -1
  135. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  136. package/dist/web-ui/public/activity-feed.js +1 -1
  137. package/dist/web-ui/public/activity-formatters.js +1 -1
  138. package/dist/web-ui/public/agent-event-parser.js +1 -1
  139. package/dist/web-ui/public/app.js +1 -1
  140. package/dist/web-ui/public/approve-dialog.js +1 -1
  141. package/dist/web-ui/public/automation-links.js +1 -1
  142. package/dist/web-ui/public/automation-schedule.js +1 -1
  143. package/dist/web-ui/public/comments-widget.js +1 -1
  144. package/dist/web-ui/public/diff-utils.js +1 -1
  145. package/dist/web-ui/public/environments.js +1 -1
  146. package/dist/web-ui/public/feedback-widget.css +6 -0
  147. package/dist/web-ui/public/feedback-widget.js +1 -1
  148. package/dist/web-ui/public/file-selection-tree.js +1 -1
  149. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  150. package/dist/web-ui/public/git-history.js +1 -1
  151. package/dist/web-ui/public/git-status.js +1 -1
  152. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  153. package/dist/web-ui/public/index.js +1 -1
  154. package/dist/web-ui/public/login.js +1 -1
  155. package/dist/web-ui/public/markdown-editor.js +1 -1
  156. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  157. package/dist/web-ui/public/modal-maximize.js +1 -1
  158. package/dist/web-ui/public/notifications.js +1 -1
  159. package/dist/web-ui/public/permissions.js +1 -1
  160. package/dist/web-ui/public/pr-dialog.js +1 -1
  161. package/dist/web-ui/public/roles.js +1 -1
  162. package/dist/web-ui/public/server-health.js +1 -1
  163. package/dist/web-ui/public/settings.js +1 -1
  164. package/dist/web-ui/public/setup-password.js +1 -1
  165. package/dist/web-ui/public/skills.js +1 -1
  166. package/dist/web-ui/public/sse-client.js +1 -1
  167. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  168. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  169. package/dist/web-ui/public/task.js +1 -1
  170. package/dist/web-ui/public/teams.js +1 -1
  171. package/dist/web-ui/public/terminal.js +1 -1
  172. package/dist/web-ui/public/theme.js +1 -1
  173. package/dist/web-ui/public/users.js +1 -1
  174. package/dist/web-ui/public/variant-grouping.js +1 -1
  175. package/package.json +1 -1
@@ -67,20 +67,119 @@ Templates consist of two files:
67
67
  2. **`<name>.json`** (optional) - Template metadata (description, parameters)
68
68
 
69
69
  ### Metadata JSON Structure
70
+
71
+ The metadata JSON has a `description` string and an optional `parameters` object. **Parameters are keyed by name** (an object map, not an array).
72
+
70
73
  ```json
71
74
  {
72
75
  "description": "Brief description shown in template picker",
73
- "parameters": [
74
- {
75
- "name": "feature_name",
76
- "label": "Feature Name",
77
- "type": "string",
78
- "required": true
76
+ "parameters": {
77
+ "feature_name": {
78
+ "required": true,
79
+ "description": "Help text shown in the UI",
80
+ "default": "optional default value"
81
+ }
82
+ }
83
+ }
84
+ ```
85
+
86
+ #### Parameter Fields
87
+
88
+ Each parameter supports:
89
+ - `required` (boolean) - Whether the parameter must be filled in. Default: `false`
90
+ - `description` (string) - Help text shown in the UI
91
+ - `default` (string) - Default value if not provided
92
+ - `prompt` (object) - Interactive selection configuration (see below)
93
+
94
+ Parameters without a `prompt` are rendered as plain text inputs.
95
+
96
+ #### Prompt Configuration (Interactive Selection)
97
+
98
+ Add a `prompt` object to a parameter to render it as an interactive selector instead of a text input.
99
+
100
+ **Common prompt fields (all prompt types):**
101
+ - `type` (required) - One of: `"list"`, `"command"`, `"files"`
102
+ - `label` (string) - Label shown on the prompt button/dialog
103
+ - `multiSelect` (boolean) - Allow selecting multiple values. Default: `false`. Max 4 multi-select parameters per template. Selected values are joined as a comma-separated string.
104
+
105
+ #### Prompt Type: `list` (hard-coded options)
106
+
107
+ ```json
108
+ {
109
+ "parameters": {
110
+ "output_format": {
111
+ "required": true,
112
+ "description": "Output format to generate",
113
+ "prompt": {
114
+ "type": "list",
115
+ "label": "Select Format",
116
+ "multiSelect": true,
117
+ "options": [
118
+ { "value": "json", "label": "JSON", "description": "Standard JSON output" },
119
+ { "value": "csv", "label": "CSV", "description": "Comma-separated values" },
120
+ { "value": "xml", "label": "XML" }
121
+ ]
122
+ }
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ - `options` (required) - Array of choices. Each requires `value` (string). Optional: `label` (display text, defaults to value), `description` (smaller helper text).
129
+
130
+ #### Prompt Type: `command` (dynamic options from shell command)
131
+
132
+ ```json
133
+ {
134
+ "parameters": {
135
+ "branch": {
136
+ "required": true,
137
+ "description": "Git branch to work on",
138
+ "prompt": {
139
+ "type": "command",
140
+ "label": "Select Branch",
141
+ "command": "git branch -a",
142
+ "parser": "git-branches"
143
+ }
144
+ }
145
+ }
146
+ }
147
+ ```
148
+
149
+ - `command` (required) - Shell command to run in the container to generate choices
150
+ - `parser` - How to parse output. One of: `"json"` (default, expects `[{value, label?, description?}, ...]`), `"lines"` (newline-separated values), `"git-branches"` (parses git branch output), `"files"` (parses file paths)
151
+ - `repos` (array of strings) - Optional repo names to scope the command to
152
+
153
+ #### Prompt Type: `files` (file/directory browser)
154
+
155
+ ```json
156
+ {
157
+ "parameters": {
158
+ "source_file": {
159
+ "required": true,
160
+ "description": "Source file to process",
161
+ "prompt": {
162
+ "type": "files",
163
+ "label": "Select File",
164
+ "multiSelect": true,
165
+ "path": "src/",
166
+ "include": "files",
167
+ "pattern": "*.{js,ts,tsx}"
168
+ }
79
169
  }
80
- ]
170
+ }
81
171
  }
82
172
  ```
83
173
 
174
+ - `path` (required) - Directory path relative to `/workspace`
175
+ - `include` - What to show: `"files"` (default), `"directories"`, or `"both"`
176
+ - `pattern` (string) - Optional glob pattern filter (e.g., `"*.{rpg,rpgle,sqlrpgle}"`)
177
+ - `repos` (array of strings) - Optional repo names to scope to
178
+
179
+ #### Multi-Select and Batch Processing
180
+
181
+ When `multiSelect: true`, the UI renders checkboxes instead of radio buttons. If multiple parameters have `multiSelect` enabled, the system generates a cartesian product of all selected values, creating a separate task for each combination. Max 4 multi-select parameters per template, max 100 total combinations.
182
+
84
183
  ### Template Content Syntax
85
184
 
86
185
  **CRITICAL**: Template parameters must use `${parameter_name}` syntax (dollar sign + curly braces), NOT `{{parameter_name}}`.
@@ -153,14 +252,33 @@ curl -s "${CODERFLOW_SERVER_URL}/api/environment-management/templates/bug-fix" \
153
252
  # Create a temporary file with the complete JSON payload
154
253
  cat > /tmp/template-payload.json <<'EOF'
155
254
  {
156
- "content": "# API Endpoint Implementation\n\n...",
255
+ "content": "# API Endpoint Implementation\n\nCreate a ${http_method} endpoint at ${endpoint_path}.\n\n${description}",
157
256
  "metadata": {
158
257
  "description": "Create a new API endpoint",
159
- "parameters": [
160
- {"name": "endpoint_path", "label": "Endpoint Path", "type": "string", "required": true},
161
- {"name": "http_method", "label": "HTTP Method", "type": "string", "required": true},
162
- {"name": "description", "label": "Description", "type": "string", "required": false}
163
- ]
258
+ "parameters": {
259
+ "endpoint_path": {
260
+ "required": true,
261
+ "description": "URL path for the endpoint (e.g., /api/users)"
262
+ },
263
+ "http_method": {
264
+ "required": true,
265
+ "description": "HTTP method",
266
+ "prompt": {
267
+ "type": "list",
268
+ "label": "Select HTTP Method",
269
+ "options": [
270
+ { "value": "GET" },
271
+ { "value": "POST" },
272
+ { "value": "PUT" },
273
+ { "value": "DELETE" }
274
+ ]
275
+ }
276
+ },
277
+ "description": {
278
+ "required": false,
279
+ "description": "Additional context for the endpoint"
280
+ }
281
+ }
164
282
  }
165
283
  }
166
284
  EOF
@@ -179,12 +297,29 @@ curl -s -X PUT "${CODERFLOW_SERVER_URL}/api/environment-management/templates/api
179
297
  -H "X-Task-Id: ${TASK_ID}" \
180
298
  -d @- <<'EOF'
181
299
  {
182
- "content": "# API Endpoint Implementation\n\n...",
300
+ "content": "# API Endpoint Implementation\n\nCreate a ${http_method} endpoint at ${endpoint_path}.",
183
301
  "metadata": {
184
302
  "description": "Create a new API endpoint",
185
- "parameters": [
186
- {"name": "endpoint_path", "label": "Endpoint Path", "type": "string", "required": true}
187
- ]
303
+ "parameters": {
304
+ "endpoint_path": {
305
+ "required": true,
306
+ "description": "URL path for the endpoint"
307
+ },
308
+ "http_method": {
309
+ "required": true,
310
+ "description": "HTTP method",
311
+ "prompt": {
312
+ "type": "list",
313
+ "label": "Select HTTP Method",
314
+ "options": [
315
+ { "value": "GET" },
316
+ { "value": "POST" },
317
+ { "value": "PUT" },
318
+ { "value": "DELETE" }
319
+ ]
320
+ }
321
+ }
322
+ }
188
323
  }
189
324
  }
190
325
  EOF