@profoundlogic/coderflow-server 0.4.7 → 0.4.9

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 (172) hide show
  1. package/README.md +3 -1
  2. package/dist/README.md +3 -1
  3. package/dist/base-image/Dockerfile +5 -3
  4. package/dist/base-image/entrypoint.sh +76 -2
  5. package/dist/coder-server.js +1 -1
  6. package/dist/config.js +1 -1
  7. package/dist/lib/agent-keepalive.js +1 -1
  8. package/dist/lib/agent-models.js +1 -1
  9. package/dist/lib/api-keys.js +1 -1
  10. package/dist/lib/apiKeys.js +1 -1
  11. package/dist/lib/app-server-ports.js +1 -1
  12. package/dist/lib/auto-judge.js +1 -1
  13. package/dist/lib/automation-service.js +1 -1
  14. package/dist/lib/basic-auth.js +1 -1
  15. package/dist/lib/bindings.js +1 -1
  16. package/dist/lib/build-history.js +1 -1
  17. package/dist/lib/build-output-service.js +1 -1
  18. package/dist/lib/build-scheduler.js +1 -1
  19. package/dist/lib/build-service.js +1 -1
  20. package/dist/lib/ca-certificates.js +1 -1
  21. package/dist/lib/claude-oauth-refresh.js +1 -1
  22. package/dist/lib/cli/build.js +1 -1
  23. package/dist/lib/cli/config-command.js +1 -1
  24. package/dist/lib/cli/config.js +1 -1
  25. package/dist/lib/cli/create-user.js +1 -1
  26. package/dist/lib/cli/init.js +1 -1
  27. package/dist/lib/cli/jira.js +1 -1
  28. package/dist/lib/cli/license.js +1 -1
  29. package/dist/lib/cli/migrate-rbac.js +1 -0
  30. package/dist/lib/cli/server-manager.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -0
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/jira-client.js +1 -1
  58. package/dist/lib/judge-blinding.js +1 -1
  59. package/dist/lib/logger.js +1 -1
  60. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  61. package/dist/lib/model-fetcher.js +1 -1
  62. package/dist/lib/notifications.js +1 -1
  63. package/dist/lib/objective-context.js +1 -1
  64. package/dist/lib/oidc-auth.js +1 -1
  65. package/dist/lib/oidc-device-flow.js +1 -1
  66. package/dist/lib/passwordTokens.js +1 -1
  67. package/dist/lib/permission-resolver.js +1 -1
  68. package/dist/lib/pin-cascade.js +1 -1
  69. package/dist/lib/provider-accounts.js +1 -1
  70. package/dist/lib/provider-oauth.js +1 -1
  71. package/dist/lib/provider-profile.js +1 -1
  72. package/dist/lib/provider-token-refresh.js +1 -1
  73. package/dist/lib/rbac-user-state.js +1 -0
  74. package/dist/lib/request-url.js +1 -1
  75. package/dist/lib/rewind.js +1 -1
  76. package/dist/lib/role-definitions.js +1 -1
  77. package/dist/lib/roles.js +1 -1
  78. package/dist/lib/scoped-rbac-migration-runner.js +1 -0
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-name-format.js +1 -1
  84. package/dist/lib/task-name-generator.js +1 -1
  85. package/dist/lib/task-source-metadata.js +1 -1
  86. package/dist/lib/teams.js +1 -1
  87. package/dist/lib/user-git-oauth.js +1 -1
  88. package/dist/lib/user-git-tokens.js +1 -1
  89. package/dist/lib/users.js +1 -1
  90. package/dist/middleware/requireAuth.js +1 -1
  91. package/dist/middleware/requireInit.js +1 -1
  92. package/dist/middleware/requirePermission.js +1 -1
  93. package/dist/package.json +2 -1
  94. package/dist/playwright.config.js +1 -1
  95. package/dist/routes/apiKeys.js +1 -1
  96. package/dist/routes/auth-oidc.js +1 -1
  97. package/dist/routes/auth.js +1 -1
  98. package/dist/routes/automations.js +1 -1
  99. package/dist/routes/bindings.js +1 -1
  100. package/dist/routes/build.js +1 -1
  101. package/dist/routes/containers.js +1 -1
  102. package/dist/routes/deploy-task.js +1 -1
  103. package/dist/routes/environment-management.js +1 -1
  104. package/dist/routes/environments.js +1 -1
  105. package/dist/routes/external-skills.js +1 -1
  106. package/dist/routes/git-credentials.js +1 -1
  107. package/dist/routes/git-oauth.js +1 -1
  108. package/dist/routes/git-provider-setup.js +1 -1
  109. package/dist/routes/health.js +1 -1
  110. package/dist/routes/jira.js +1 -1
  111. package/dist/routes/objective-management.js +1 -1
  112. package/dist/routes/password.js +1 -1
  113. package/dist/routes/prompt.js +1 -1
  114. package/dist/routes/provider-auth.js +1 -1
  115. package/dist/routes/qa.js +1 -1
  116. package/dist/routes/roles.js +1 -1
  117. package/dist/routes/settings.js +1 -1
  118. package/dist/routes/skill-management.js +1 -1
  119. package/dist/routes/skills.js +1 -1
  120. package/dist/routes/tasks.js +1 -1
  121. package/dist/routes/teams.js +1 -1
  122. package/dist/routes/templates.js +1 -1
  123. package/dist/routes/test-task.js +1 -1
  124. package/dist/routes/test.js +1 -1
  125. package/dist/routes/users.js +1 -1
  126. package/dist/routes/visualizations.js +1 -1
  127. package/dist/scripts/create-user.js +1 -1
  128. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  129. package/dist/scripts/migrate-to-scoped-rbac.js +1 -1
  130. package/dist/start.js +1 -1
  131. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  132. package/dist/web-ui/public/activity-feed.js +1 -1
  133. package/dist/web-ui/public/activity-formatters.js +1 -1
  134. package/dist/web-ui/public/agent-event-parser.js +1 -1
  135. package/dist/web-ui/public/app.js +1 -1
  136. package/dist/web-ui/public/approve-dialog.js +1 -1
  137. package/dist/web-ui/public/automation-links.js +1 -1
  138. package/dist/web-ui/public/automation-schedule.js +1 -1
  139. package/dist/web-ui/public/comments-widget.js +1 -1
  140. package/dist/web-ui/public/diff-utils.js +1 -1
  141. package/dist/web-ui/public/docs/admin/environments.md +75 -0
  142. package/dist/web-ui/public/docs/admin/installation.md +9 -1
  143. package/dist/web-ui/public/environments.css +356 -0
  144. package/dist/web-ui/public/environments.html +316 -0
  145. package/dist/web-ui/public/environments.js +1 -1
  146. package/dist/web-ui/public/feedback-widget.js +1 -1
  147. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  148. package/dist/web-ui/public/git-history.js +1 -1
  149. package/dist/web-ui/public/git-status.js +1 -1
  150. package/dist/web-ui/public/index.js +1 -1
  151. package/dist/web-ui/public/login.js +1 -1
  152. package/dist/web-ui/public/markdown-editor.js +1 -1
  153. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  154. package/dist/web-ui/public/modal-maximize.js +1 -1
  155. package/dist/web-ui/public/notifications.js +1 -1
  156. package/dist/web-ui/public/pr-dialog.js +1 -1
  157. package/dist/web-ui/public/roles.js +1 -1
  158. package/dist/web-ui/public/server-health.js +1 -1
  159. package/dist/web-ui/public/settings.html +1 -2
  160. package/dist/web-ui/public/settings.js +1 -1
  161. package/dist/web-ui/public/setup-password.js +1 -1
  162. package/dist/web-ui/public/skills.js +1 -1
  163. package/dist/web-ui/public/sse-client.js +1 -1
  164. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  165. package/dist/web-ui/public/styles.css +7 -7
  166. package/dist/web-ui/public/task.js +1 -1
  167. package/dist/web-ui/public/teams.js +1 -1
  168. package/dist/web-ui/public/terminal.js +1 -1
  169. package/dist/web-ui/public/theme.js +1 -1
  170. package/dist/web-ui/public/users.js +1 -1
  171. package/dist/web-ui/public/variant-grouping.js +1 -1
  172. package/package.json +2 -1
package/README.md CHANGED
@@ -117,11 +117,13 @@ coder-server license set <your-license-key>
117
117
  #### Create Admin User
118
118
 
119
119
  ```bash
120
- coder-server create-user --username=admin --email=admin@example.com --name="Admin User" --role=admin
120
+ coder-server create-user --username=admin --email=admin@example.com --name="Admin User" --admin
121
121
  ```
122
122
 
123
123
  You'll be prompted to set a password.
124
124
 
125
+ On a brand-new install, the first created account is automatically granted Server Admin even without `--admin` (this policy is enforced in the shared user service, so it applies across CLI/API/OIDC auto-provisioning paths).
126
+
125
127
  #### Optional: Configure Server Listen Port and SSL
126
128
 
127
129
  By default the server listens on port 3000. To configure an alternate port (e.g. 443):
package/dist/README.md CHANGED
@@ -117,11 +117,13 @@ coder-server license set <your-license-key>
117
117
  #### Create Admin User
118
118
 
119
119
  ```bash
120
- coder-server create-user --username=admin --email=admin@example.com --name="Admin User" --role=admin
120
+ coder-server create-user --username=admin --email=admin@example.com --name="Admin User" --admin
121
121
  ```
122
122
 
123
123
  You'll be prompted to set a password.
124
124
 
125
+ On a brand-new install, the first created account is automatically granted Server Admin even without `--admin` (this policy is enforced in the shared user service, so it applies across CLI/API/OIDC auto-provisioning paths).
126
+
125
127
  #### Optional: Configure Server Listen Port and SSL
126
128
 
127
129
  By default the server listens on port 3000. To configure an alternate port (e.g. 443):
@@ -126,10 +126,12 @@ RUN npm install -g @openai/codex @google/gemini-cli && \
126
126
  # System dependencies are already installed above (libasound2, libatk*, etc.)
127
127
  RUN su - coder -c "npx playwright install chromium"
128
128
 
129
- # Pre-install aitool and codermake globally and install licenses for coder user.
129
+ # Pre-install aitool and codermake globally and install licenses for coder user and root.
130
130
  RUN npm install -g @profoundlogic/aitool @profoundlogic/codermake && \
131
- su - coder -c "aitool --license-set PLX-7KM2D-QN8FX-W5HRP-BJ3TY-2026A" && \
132
- su - coder -c "codermake --license-set PLX-4R8N5-KXJM3-DV7WT-YC2HP-2026A"
131
+ aitool --license-set PLX-7KM2D-QN8FX-W5HRP-BJ3TY-2026A && \
132
+ codermake --license-set PLX-4R8N5-KXJM3-DV7WT-YC2HP-2026A && \
133
+ su - coder -c "aitool --license-set PLX-7KM2D-QN8FX-W5HRP-BJ3TY-2026A" && \
134
+ su - coder -c "codermake --license-set PLX-4R8N5-KXJM3-DV7WT-YC2HP-2026A"
133
135
 
134
136
  # Install code-server for web-based VS Code
135
137
  RUN curl -fsSL https://code-server.dev/install.sh | sh && \
@@ -687,8 +687,8 @@ generate_task_json() {
687
687
  fi
688
688
 
689
689
  # Source environment variables set by setup script (e.g., IGNORE_LOCKFILE_CHANGES)
690
- if [ -f ~/.bash_env ]; then
691
- source ~/.bash_env
690
+ if [ -f /home/coder/.bash_env ]; then
691
+ source /home/coder/.bash_env
692
692
  fi
693
693
 
694
694
  # Generate patches and get repos_changed JSON
@@ -751,6 +751,74 @@ EOF
751
751
  log "Task metadata written to $TASK_OUTPUT_DIR/task.json"
752
752
  }
753
753
 
754
+ # IBM i build library creation (called from main after repos are updated)
755
+ setup_ibmi_build_library() {
756
+ # All five env vars must be set (via Docker Env from external-connections.js)
757
+ if [ -z "${IBMI_HOST}" ] || [ -z "${IBMI_USER}" ] || [ -z "${IBMI_KEY}" ] || [ -z "${IBMI_BUILD_PREFIX}" ] || [ -z "${IBMI_BUILD_HOME}" ]; then
758
+ return 0
759
+ fi
760
+
761
+ local IBMI_SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -o BatchMode=yes -T"
762
+
763
+ # Generate UUID suffix: strip dashes, remove version/variant nibbles, take first 24 chars
764
+ local IBMI_RAW_UUID=$(cat /proc/sys/kernel/random/uuid | tr -d '-')
765
+ local IBMI_BUILD_UUID=$(echo "${IBMI_RAW_UUID:0:12}${IBMI_RAW_UUID:13:3}${IBMI_RAW_UUID:17:15}" | head -c 24 | tr '[:lower:]' '[:upper:]')
766
+ IBMI_BUILD_SCHEMA="${IBMI_BUILD_PREFIX}_${IBMI_BUILD_UUID}"
767
+
768
+ log "Creating IBM i build library..."
769
+
770
+ # Create schema on IBM i via SSH + QShell db2
771
+ local IBMI_CMD_OUT
772
+ IBMI_CMD_OUT=$(echo "db2 \"CREATE SCHEMA ${IBMI_BUILD_SCHEMA}\"" | ssh -i ${IBMI_KEY} ${IBMI_SSH_OPTS} ${IBMI_USER}@${IBMI_HOST} qsh 2>&1)
773
+ if [ $? -ne 0 ]; then
774
+ log_error "${IBMI_CMD_OUT}"
775
+ log_error "Failed to create IBM i build library"
776
+ return 1
777
+ fi
778
+
779
+ # Resolve the system library name (10-char *LIB name)
780
+ IBMI_BUILD_LIBRARY=$(echo "db2 -S \"SELECT SYSTEM_SCHEMA_NAME FROM QSYS2.SYSSCHEMAS WHERE SCHEMA_NAME = '${IBMI_BUILD_SCHEMA}'\"" | ssh -i ${IBMI_KEY} ${IBMI_SSH_OPTS} ${IBMI_USER}@${IBMI_HOST} qsh 2>/dev/null | sed -n '4p' | tr -d '[:space:]')
781
+ if [ -z "${IBMI_BUILD_LIBRARY}" ]; then
782
+ log_error "Failed to resolve system library name for schema ${IBMI_BUILD_SCHEMA}"
783
+ return 1
784
+ fi
785
+
786
+ export IBMI_BUILD_LIBRARY
787
+ export IBMI_BUILD_SCHEMA
788
+
789
+ # Tag library with task ID for traceability
790
+ IBMI_CMD_OUT=$(echo "system \"QSYS/CHGOBJD OBJ(QSYS/${IBMI_BUILD_LIBRARY}) OBJTYPE(*LIB) TEXT('CoderFlow task ${TASK_ID}')\"" | ssh -i ${IBMI_KEY} ${IBMI_SSH_OPTS} ${IBMI_USER}@${IBMI_HOST} /QOpenSys/usr/bin/sh 2>&1)
791
+ if [ $? -ne 0 ]; then
792
+ log_error "${IBMI_CMD_OUT}"
793
+ log_error "Failed to tag build library ${IBMI_BUILD_LIBRARY}"
794
+ fi
795
+
796
+ log "IBM i build library ${IBMI_BUILD_LIBRARY} created"
797
+
798
+ # Write env vars to .bash_env so other processes (such as terminals) can access them
799
+ echo "export IBMI_BUILD_LIBRARY=\"${IBMI_BUILD_LIBRARY}\"" >> /home/coder/.bash_env
800
+ echo "export IBMI_BUILD_SCHEMA=\"${IBMI_BUILD_SCHEMA}\"" >> /home/coder/.bash_env
801
+
802
+ # Initialize codermake (must run from the build home directory)
803
+ log "Initializing codermake build in ${IBMI_BUILD_HOME}..."
804
+ local codermake_out
805
+ codermake_out=$( (cd "${IBMI_BUILD_HOME}" && codermake -t) 2>&1) || true
806
+ if [ -n "$codermake_out" ]; then
807
+ log "$codermake_out"
808
+ fi
809
+
810
+ # Write cleanup script for CMD SIGTERM trap to source
811
+ # Values are baked in — no conditional check needed since this file is only
812
+ # written after successful library creation
813
+ cat > /home/coder/.ibmi_build_cleanup.sh << CLEANUP_EOF
814
+ IBMI_CMD_OUT=\$(ssh -i ${IBMI_KEY} ${IBMI_SSH_OPTS} ${IBMI_USER}@${IBMI_HOST} "qsh -c 'db2 \"DROP SCHEMA ${IBMI_BUILD_SCHEMA} CASCADE\"'" 2>&1)
815
+ if [ \$? -ne 0 ]; then
816
+ echo "[EXTERNAL-CONN] ERROR: Failed to delete build library ${IBMI_BUILD_LIBRARY}" >&2
817
+ echo "\${IBMI_CMD_OUT}" >&2
818
+ fi
819
+ CLEANUP_EOF
820
+ }
821
+
754
822
  # Main execution
755
823
  main() {
756
824
  timing_checkpoint "main: START"
@@ -862,6 +930,12 @@ main() {
862
930
  timing_checkpoint "main: Setup script complete"
863
931
  fi
864
932
 
933
+ # IBM i build library creation (after repos are updated)
934
+ # Skip if SKIP_INIT is set (e.g., for follow-up tasks where the library already exists)
935
+ if [ "$SKIP_INIT" != "true" ]; then
936
+ setup_ibmi_build_library
937
+ fi
938
+
865
939
  local exit_code=0
866
940
 
867
941
  # Update status to indicate initialization is complete