@profoundlogic/coderflow-server 0.7.8 → 0.8.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 (183) hide show
  1. package/dist/base-image/entrypoint.sh +75 -5
  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/compression-filter.js +1 -1
  33. package/dist/lib/config-migration.js +1 -1
  34. package/dist/lib/container-credential-sync.js +1 -1
  35. package/dist/lib/container-tokens.js +1 -1
  36. package/dist/lib/data-dir.js +1 -1
  37. package/dist/lib/deployment-history.js +1 -1
  38. package/dist/lib/deployment-service.js +1 -1
  39. package/dist/lib/docker-utils.js +1 -1
  40. package/dist/lib/email.js +1 -1
  41. package/dist/lib/emailTemplates.js +1 -1
  42. package/dist/lib/entitlement.js +1 -1
  43. package/dist/lib/external-connections.js +1 -1
  44. package/dist/lib/fetch-utils.js +1 -1
  45. package/dist/lib/git-commit-details-route.js +1 -1
  46. package/dist/lib/git-history-diff-guardrails.js +1 -1
  47. package/dist/lib/git-provider-service.js +1 -1
  48. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  49. package/dist/lib/git-provider-setup/index.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  51. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  52. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  53. package/dist/lib/git-providers/github-app-provider.js +1 -1
  54. package/dist/lib/git-providers/index.js +1 -1
  55. package/dist/lib/git-providers/provider-factory.js +1 -1
  56. package/dist/lib/git-providers/provider-interface.js +1 -1
  57. package/dist/lib/github-urls.js +1 -1
  58. package/dist/lib/group-objective-linking.js +1 -1
  59. package/dist/lib/ibmi-sync.js +1 -1
  60. package/dist/lib/jira-client.js +1 -1
  61. package/dist/lib/judge-blinding.js +1 -1
  62. package/dist/lib/logger.js +1 -1
  63. package/dist/lib/memory-utils.js +1 -1
  64. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  65. package/dist/lib/model-fetcher.js +1 -1
  66. package/dist/lib/notifications.js +1 -1
  67. package/dist/lib/objective-context.js +1 -1
  68. package/dist/lib/oidc-auth.js +1 -1
  69. package/dist/lib/oidc-device-flow.js +1 -1
  70. package/dist/lib/passwordTokens.js +1 -1
  71. package/dist/lib/permission-resolver.js +1 -1
  72. package/dist/lib/pin-cascade.js +1 -1
  73. package/dist/lib/provider-accounts.js +1 -1
  74. package/dist/lib/provider-oauth.js +1 -1
  75. package/dist/lib/provider-profile.js +1 -1
  76. package/dist/lib/provider-token-refresh.js +1 -1
  77. package/dist/lib/rbac-user-state.js +1 -1
  78. package/dist/lib/request-url.js +1 -1
  79. package/dist/lib/rewind.js +1 -1
  80. package/dist/lib/role-definitions.js +1 -1
  81. package/dist/lib/roles.js +1 -1
  82. package/dist/lib/secrets.js +1 -1
  83. package/dist/lib/setup-repo-git-auth.js +1 -1
  84. package/dist/lib/state-capture.js +1 -1
  85. package/dist/lib/static-files.js +1 -1
  86. package/dist/lib/task-aliases.js +1 -1
  87. package/dist/lib/task-container-init.js +1 -0
  88. package/dist/lib/task-context-usage.js +1 -0
  89. package/dist/lib/task-name-format.js +1 -1
  90. package/dist/lib/task-name-generator.js +1 -1
  91. package/dist/lib/task-source-metadata.js +1 -1
  92. package/dist/lib/teams.js +1 -1
  93. package/dist/lib/user-git-oauth.js +1 -1
  94. package/dist/lib/user-git-tokens.js +1 -1
  95. package/dist/lib/users.js +1 -1
  96. package/dist/middleware/requireAuth.js +1 -1
  97. package/dist/middleware/requireInit.js +1 -1
  98. package/dist/middleware/requirePermission.js +1 -1
  99. package/dist/package.json +1 -1
  100. package/dist/playwright.config.js +1 -1
  101. package/dist/playwright.task-terminal.config.js +1 -1
  102. package/dist/routes/apiKeys.js +1 -1
  103. package/dist/routes/auth-oidc.js +1 -1
  104. package/dist/routes/auth.js +1 -1
  105. package/dist/routes/automations.js +1 -1
  106. package/dist/routes/bindings.js +1 -1
  107. package/dist/routes/build.js +1 -1
  108. package/dist/routes/containers.js +1 -1
  109. package/dist/routes/deploy-task.js +1 -1
  110. package/dist/routes/environment-management.js +1 -1
  111. package/dist/routes/environments.js +1 -1
  112. package/dist/routes/external-skills.js +1 -1
  113. package/dist/routes/git-credentials.js +1 -1
  114. package/dist/routes/git-oauth.js +1 -1
  115. package/dist/routes/git-provider-setup.js +1 -1
  116. package/dist/routes/health.js +1 -1
  117. package/dist/routes/jira.js +1 -1
  118. package/dist/routes/logs.js +1 -1
  119. package/dist/routes/objective-management.js +1 -1
  120. package/dist/routes/password.js +1 -1
  121. package/dist/routes/prompt.js +1 -1
  122. package/dist/routes/provider-auth.js +1 -1
  123. package/dist/routes/qa.js +1 -1
  124. package/dist/routes/roles.js +1 -1
  125. package/dist/routes/settings.js +1 -1
  126. package/dist/routes/skill-management.js +1 -1
  127. package/dist/routes/skills.js +1 -1
  128. package/dist/routes/stats.js +1 -1
  129. package/dist/routes/tasks.js +1 -1
  130. package/dist/routes/teams.js +1 -1
  131. package/dist/routes/templates.js +1 -1
  132. package/dist/routes/test-task.js +1 -1
  133. package/dist/routes/test.js +1 -1
  134. package/dist/routes/users.js +1 -1
  135. package/dist/routes/visualizations.js +1 -1
  136. package/dist/scripts/create-user.js +1 -1
  137. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  138. package/dist/start.js +1 -1
  139. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  140. package/dist/web-ui/public/activity-feed.js +1 -1
  141. package/dist/web-ui/public/activity-formatters.js +1 -1
  142. package/dist/web-ui/public/admin.css +108 -1
  143. package/dist/web-ui/public/admin.html +35 -23
  144. package/dist/web-ui/public/admin.js +1 -1
  145. package/dist/web-ui/public/agent-event-parser.js +1 -1
  146. package/dist/web-ui/public/app.js +1 -1
  147. package/dist/web-ui/public/approve-dialog.js +1 -1
  148. package/dist/web-ui/public/automation-links.js +1 -1
  149. package/dist/web-ui/public/automation-schedule.js +1 -1
  150. package/dist/web-ui/public/comments-widget.js +1 -1
  151. package/dist/web-ui/public/diff-utils.js +1 -1
  152. package/dist/web-ui/public/environments.html +1 -1
  153. package/dist/web-ui/public/environments.js +1 -1
  154. package/dist/web-ui/public/feedback-widget.js +1 -1
  155. package/dist/web-ui/public/file-selection-tree.js +1 -1
  156. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  157. package/dist/web-ui/public/git-history.js +1 -1
  158. package/dist/web-ui/public/git-status.js +1 -1
  159. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  160. package/dist/web-ui/public/index.js +1 -1
  161. package/dist/web-ui/public/login.js +1 -1
  162. package/dist/web-ui/public/markdown-editor.js +1 -1
  163. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  164. package/dist/web-ui/public/modal-maximize.js +1 -1
  165. package/dist/web-ui/public/notifications.js +1 -1
  166. package/dist/web-ui/public/permissions.js +1 -1
  167. package/dist/web-ui/public/pr-dialog.js +1 -1
  168. package/dist/web-ui/public/roles.js +1 -1
  169. package/dist/web-ui/public/settings.js +1 -1
  170. package/dist/web-ui/public/setup-password.js +1 -1
  171. package/dist/web-ui/public/skills.js +1 -1
  172. package/dist/web-ui/public/sse-client.js +1 -1
  173. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  174. package/dist/web-ui/public/styles.css +45 -1
  175. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  176. package/dist/web-ui/public/task.html +11 -0
  177. package/dist/web-ui/public/task.js +1 -1
  178. package/dist/web-ui/public/teams.js +1 -1
  179. package/dist/web-ui/public/terminal.js +1 -1
  180. package/dist/web-ui/public/theme.js +1 -1
  181. package/dist/web-ui/public/users.js +1 -1
  182. package/dist/web-ui/public/variant-grouping.js +1 -1
  183. package/package.json +1 -1
@@ -51,6 +51,39 @@ log_success() {
51
51
  log "SUCCESS: $*"
52
52
  }
53
53
 
54
+ write_task_status() {
55
+ local phase="$1"
56
+ local progress="$2"
57
+ local stage="${3:-}"
58
+ local error_message="${4:-}"
59
+
60
+ if [ -n "$stage" ] || [ -n "$error_message" ]; then
61
+ jq -n \
62
+ --argjson progress "$progress" \
63
+ --arg phase "$phase" \
64
+ --arg updated_at "$(date -Iseconds)" \
65
+ --arg stage "$stage" \
66
+ --arg error "$error_message" \
67
+ '{
68
+ progress: $progress,
69
+ phase: $phase,
70
+ updated_at: $updated_at
71
+ }
72
+ + (if $stage != "" then {stage: $stage} else {} end)
73
+ + (if $error != "" then {error: $error} else {} end)' > "$TASK_OUTPUT_DIR/.status"
74
+ else
75
+ jq -n \
76
+ --argjson progress "$progress" \
77
+ --arg phase "$phase" \
78
+ --arg updated_at "$(date -Iseconds)" \
79
+ '{
80
+ progress: $progress,
81
+ phase: $phase,
82
+ updated_at: $updated_at
83
+ }' > "$TASK_OUTPUT_DIR/.status"
84
+ fi
85
+ }
86
+
54
87
  # Enhanced timing function with millisecond precision (only when DEBUG_TIMING is enabled)
55
88
  log_timing() {
56
89
  if [ "${DEBUG_TIMING:-false}" = "true" ]; then
@@ -170,6 +203,7 @@ update_repositories() {
170
203
 
171
204
  # Array to store background job PIDs
172
205
  declare -a update_pids=()
206
+ local failed_count=0
173
207
 
174
208
  # Process each repository using jq
175
209
  for index in $(seq 0 $((repo_count - 1))); do
@@ -178,6 +212,7 @@ update_repositories() {
178
212
 
179
213
  if [ -z "$repo_json" ] || [ "$repo_json" = "null" ]; then
180
214
  log_error "Invalid repository configuration at index $index" >&2
215
+ failed_count=$((failed_count + 1))
181
216
  continue
182
217
  fi
183
218
 
@@ -188,6 +223,7 @@ update_repositories() {
188
223
 
189
224
  if [ -z "$repo_name" ] || [ "$repo_name" = "null" ]; then
190
225
  log_error "Invalid repository configuration at index $index" >&2
226
+ failed_count=$((failed_count + 1))
191
227
  continue
192
228
  fi
193
229
 
@@ -384,7 +420,9 @@ update_repositories() {
384
420
  update_pids+=($!)
385
421
  else
386
422
  # Run immediately (sequential)
387
- update_single_repo "$repo_name" "$repo_url" "$repo_branch" "$repo_path"
423
+ if ! update_single_repo "$repo_name" "$repo_url" "$repo_branch" "$repo_path"; then
424
+ failed_count=$((failed_count + 1))
425
+ fi
388
426
  fi
389
427
  done
390
428
 
@@ -393,7 +431,6 @@ update_repositories() {
393
431
  timing_checkpoint "update_repositories: Waiting for parallel updates"
394
432
  log "Waiting for ${#update_pids[@]} repository updates to complete..." >&2
395
433
 
396
- local failed_count=0
397
434
  for pid in "${update_pids[@]}"; do
398
435
  if ! wait $pid; then
399
436
  failed_count=$((failed_count + 1))
@@ -405,6 +442,11 @@ update_repositories() {
405
442
  fi
406
443
  fi
407
444
 
445
+ if [ $failed_count -gt 0 ]; then
446
+ timing_checkpoint "update_repositories: END (failed)"
447
+ return 1
448
+ fi
449
+
408
450
  log "Repository update complete" >&2
409
451
  timing_checkpoint "update_repositories: END (all repos complete)"
410
452
  return 0
@@ -673,6 +715,26 @@ REPO_EOF
673
715
  echo "$repos_changed_json"
674
716
  }
675
717
 
718
+ write_init_failure_summary() {
719
+ local stage="$1"
720
+ local summary_file="$TASK_OUTPUT_DIR/summary.md"
721
+
722
+ if [ -s "$summary_file" ]; then
723
+ return 0
724
+ fi
725
+
726
+ cat <<SUMMARY_EOF > "$summary_file"
727
+ Task ${TASK_ID} failed during initialization.
728
+
729
+ - Task Type: ${TASK_TYPE}
730
+ - Environment: ${ENVIRONMENT}
731
+ - Stage: ${stage}
732
+ - Next Step: Review log.txt for the specific initialization error.
733
+ SUMMARY_EOF
734
+
735
+ log "Summary file created at $summary_file"
736
+ }
737
+
676
738
  # Generate task.json metadata file
677
739
  generate_task_json() {
678
740
  local exit_code=$1
@@ -848,7 +910,13 @@ main() {
848
910
  REPO_UPDATE_PID=$!
849
911
  timing_checkpoint "main: Repository updates backgrounded (PID: $REPO_UPDATE_PID)"
850
912
  else
851
- update_repositories
913
+ if ! update_repositories; then
914
+ log_error "Repository synchronization failed; aborting task execution"
915
+ write_task_status "InitFailed" "0" "repository_sync" "Repository synchronization failed; aborting task execution"
916
+ write_init_failure_summary "repository_sync"
917
+ generate_task_json 1 "repository_sync"
918
+ return 1
919
+ fi
852
920
  timing_checkpoint "main: Repository updates complete (synchronous)"
853
921
  fi
854
922
 
@@ -947,6 +1015,8 @@ main() {
947
1015
  timing_checkpoint "main: Setup script skipped"
948
1016
  elif ! run_setup_script; then
949
1017
  log_error "Environment setup script failed; aborting task execution"
1018
+ write_task_status "InitFailed" "0" "setup_script" "Environment setup script failed; aborting task execution"
1019
+ write_init_failure_summary "setup_script"
950
1020
  generate_task_json 1 "setup_script"
951
1021
  return 1
952
1022
  else
@@ -962,7 +1032,7 @@ main() {
962
1032
  local exit_code=0
963
1033
 
964
1034
  # Update status to indicate initialization is complete
965
- echo "{\"progress\": 0.01, \"phase\": \"Ready\", \"updated_at\": \"$(date -Iseconds)\"}" > "$TASK_OUTPUT_DIR/.status"
1035
+ write_task_status "Ready" "0.01"
966
1036
  timing_checkpoint "main: Status file written, ready for task execution"
967
1037
 
968
1038
  # If SETUP_ONLY mode, return here without executing tasks (for interactive containers)
@@ -973,7 +1043,7 @@ main() {
973
1043
 
974
1044
  # If STAGED_TASK mode, complete setup but skip agent execution (user will start later)
975
1045
  if [ "${STAGED_TASK:-false}" = "true" ]; then
976
- echo "{\"progress\": 0.01, \"phase\": \"Staged\", \"updated_at\": \"$(date -Iseconds)\"}" > "$TASK_OUTPUT_DIR/.status"
1046
+ write_task_status "Staged" "0.01"
977
1047
  log "Setup complete (STAGED_TASK mode), waiting for instructions"
978
1048
  return 0
979
1049
  fi