@profoundlogic/coderflow-server 0.4.4 → 0.4.5

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 (176) hide show
  1. package/dist/base-image/entrypoint.sh +2 -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 -0
  11. package/dist/lib/basic-auth.js +1 -1
  12. package/dist/lib/bindings.js +1 -0
  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/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/init.js +1 -1
  24. package/dist/lib/cli/jira.js +1 -1
  25. package/dist/lib/cli/license.js +1 -1
  26. package/dist/lib/cli/server-manager.js +1 -1
  27. package/dist/lib/config-migration.js +1 -1
  28. package/dist/lib/container-credential-sync.js +1 -1
  29. package/dist/lib/container-tokens.js +1 -1
  30. package/dist/lib/data-dir.js +1 -1
  31. package/dist/lib/deployment-history.js +1 -1
  32. package/dist/lib/deployment-service.js +1 -1
  33. package/dist/lib/docker-utils.js +1 -1
  34. package/dist/lib/email.js +1 -1
  35. package/dist/lib/emailTemplates.js +1 -1
  36. package/dist/lib/entitlement.js +1 -1
  37. package/dist/lib/fetch-utils.js +1 -1
  38. package/dist/lib/git-commit-details-route.js +1 -1
  39. package/dist/lib/git-history-diff-guardrails.js +1 -1
  40. package/dist/lib/git-provider-service.js +1 -1
  41. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  42. package/dist/lib/git-provider-setup/index.js +1 -1
  43. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  44. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  45. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  46. package/dist/lib/git-providers/github-app-provider.js +1 -1
  47. package/dist/lib/git-providers/index.js +1 -1
  48. package/dist/lib/git-providers/provider-factory.js +1 -1
  49. package/dist/lib/git-providers/provider-interface.js +1 -1
  50. package/dist/lib/github-urls.js +1 -1
  51. package/dist/lib/group-objective-linking.js +1 -1
  52. package/dist/lib/jira-client.js +1 -1
  53. package/dist/lib/judge-blinding.js +1 -1
  54. package/dist/lib/logger.js +1 -1
  55. package/dist/lib/migration-to-scoped-rbac.js +1 -0
  56. package/dist/lib/model-fetcher.js +1 -1
  57. package/dist/lib/notifications.js +1 -1
  58. package/dist/lib/objective-context.js +1 -1
  59. package/dist/lib/oidc-auth.js +1 -1
  60. package/dist/lib/oidc-device-flow.js +1 -1
  61. package/dist/lib/passwordTokens.js +1 -1
  62. package/dist/lib/permission-resolver.js +1 -0
  63. package/dist/lib/pin-cascade.js +1 -1
  64. package/dist/lib/provider-accounts.js +1 -1
  65. package/dist/lib/provider-oauth.js +1 -1
  66. package/dist/lib/provider-profile.js +1 -1
  67. package/dist/lib/provider-token-refresh.js +1 -1
  68. package/dist/lib/request-url.js +1 -1
  69. package/dist/lib/rewind.js +1 -1
  70. package/dist/lib/role-definitions.js +1 -0
  71. package/dist/lib/roles.js +1 -1
  72. package/dist/lib/secrets.js +1 -1
  73. package/dist/lib/setup-repo-git-auth.js +1 -1
  74. package/dist/lib/state-capture.js +1 -1
  75. package/dist/lib/static-files.js +1 -1
  76. package/dist/lib/task-name-format.js +1 -1
  77. package/dist/lib/task-name-generator.js +1 -1
  78. package/dist/lib/task-source-metadata.js +1 -0
  79. package/dist/lib/teams.js +1 -0
  80. package/dist/lib/user-git-oauth.js +1 -1
  81. package/dist/lib/user-git-tokens.js +1 -1
  82. package/dist/lib/users.js +1 -1
  83. package/dist/middleware/requireAuth.js +1 -1
  84. package/dist/middleware/requireInit.js +1 -1
  85. package/dist/middleware/requirePermission.js +1 -1
  86. package/dist/package-lock.json +211 -21
  87. package/dist/package.json +2 -1
  88. package/dist/playwright.config.js +1 -0
  89. package/dist/routes/apiKeys.js +1 -1
  90. package/dist/routes/auth-oidc.js +1 -1
  91. package/dist/routes/auth.js +1 -1
  92. package/dist/routes/automations.js +1 -0
  93. package/dist/routes/bindings.js +1 -0
  94. package/dist/routes/build.js +1 -1
  95. package/dist/routes/containers.js +1 -1
  96. package/dist/routes/deploy-task.js +1 -1
  97. package/dist/routes/environment-management.js +1 -1
  98. package/dist/routes/environments.js +1 -1
  99. package/dist/routes/external-skills.js +1 -1
  100. package/dist/routes/git-credentials.js +1 -1
  101. package/dist/routes/git-oauth.js +1 -1
  102. package/dist/routes/git-provider-setup.js +1 -1
  103. package/dist/routes/health.js +1 -1
  104. package/dist/routes/jira.js +1 -1
  105. package/dist/routes/objective-management.js +1 -1
  106. package/dist/routes/password.js +1 -1
  107. package/dist/routes/prompt.js +1 -1
  108. package/dist/routes/provider-auth.js +1 -1
  109. package/dist/routes/qa.js +1 -1
  110. package/dist/routes/roles.js +1 -0
  111. package/dist/routes/settings.js +1 -1
  112. package/dist/routes/skill-management.js +1 -1
  113. package/dist/routes/skills.js +1 -1
  114. package/dist/routes/tasks.js +1 -1
  115. package/dist/routes/teams.js +1 -0
  116. package/dist/routes/templates.js +1 -1
  117. package/dist/routes/test-task.js +1 -1
  118. package/dist/routes/test.js +1 -1
  119. package/dist/routes/users.js +1 -1
  120. package/dist/routes/visualizations.js +1 -1
  121. package/dist/scripts/create-user.js +1 -1
  122. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  123. package/dist/scripts/migrate-to-scoped-rbac.js +2 -0
  124. package/dist/start.js +1 -1
  125. package/dist/start.js.bak +1381 -0
  126. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  127. package/dist/web-ui/public/activity-feed.js +1 -1
  128. package/dist/web-ui/public/activity-formatters.js +1 -1
  129. package/dist/web-ui/public/agent-event-parser.js +1 -1
  130. package/dist/web-ui/public/app.js +1 -1
  131. package/dist/web-ui/public/approve-dialog.js +1 -1
  132. package/dist/web-ui/public/automation-links.js +1 -0
  133. package/dist/web-ui/public/automation-schedule.js +1 -0
  134. package/dist/web-ui/public/comments-widget.js +1 -1
  135. package/dist/web-ui/public/diff-utils.js +1 -1
  136. package/dist/web-ui/public/docs/_sidebar.md +1 -0
  137. package/dist/web-ui/public/docs/admin/automations.md +75 -0
  138. package/dist/web-ui/public/docs/admin/users-and-roles.md +14 -4
  139. package/dist/web-ui/public/environments.css +247 -125
  140. package/dist/web-ui/public/environments.html +346 -2
  141. package/dist/web-ui/public/environments.js +1 -1
  142. package/dist/web-ui/public/feedback-widget.css +42 -0
  143. package/dist/web-ui/public/feedback-widget.js +1 -1
  144. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  145. package/dist/web-ui/public/git-history.html +15 -0
  146. package/dist/web-ui/public/git-history.js +1 -1
  147. package/dist/web-ui/public/git-status.js +1 -1
  148. package/dist/web-ui/public/index.html +27 -0
  149. package/dist/web-ui/public/index.js +1 -1
  150. package/dist/web-ui/public/login.js +1 -1
  151. package/dist/web-ui/public/markdown-editor.js +1 -1
  152. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  153. package/dist/web-ui/public/modal-maximize.js +1 -1
  154. package/dist/web-ui/public/notifications.js +1 -1
  155. package/dist/web-ui/public/pr-dialog.js +1 -1
  156. package/dist/web-ui/public/roles.html +247 -0
  157. package/dist/web-ui/public/roles.js +1 -0
  158. package/dist/web-ui/public/server-health.js +1 -1
  159. package/dist/web-ui/public/settings.html +62 -0
  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.html +15 -0
  163. package/dist/web-ui/public/skills.js +1 -1
  164. package/dist/web-ui/public/sse-client.js +1 -1
  165. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  166. package/dist/web-ui/public/styles.css +198 -161
  167. package/dist/web-ui/public/task.html +2 -2
  168. package/dist/web-ui/public/task.js +1 -1
  169. package/dist/web-ui/public/teams.html +285 -0
  170. package/dist/web-ui/public/teams.js +1 -0
  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.html +87 -29
  174. package/dist/web-ui/public/users.js +1 -1
  175. package/dist/web-ui/public/variant-grouping.js +1 -1
  176. package/package.json +6 -3
@@ -539,6 +539,26 @@
539
539
  opacity: 1;
540
540
  }
541
541
 
542
+ .content-tab-badge {
543
+ display: inline-flex;
544
+ align-items: center;
545
+ justify-content: center;
546
+ min-width: 18px;
547
+ height: 18px;
548
+ padding: 0 5px;
549
+ font-size: 10px;
550
+ font-weight: 600;
551
+ background: var(--color-text-muted);
552
+ color: var(--color-surface);
553
+ border-radius: 9px;
554
+ margin-left: 4px;
555
+ line-height: 1;
556
+ }
557
+
558
+ .content-tab.active .content-tab-badge {
559
+ background: var(--color-accent);
560
+ }
561
+
542
562
  /* ============================================================
543
563
  TAB CONTENT
544
564
  ============================================================ */
@@ -953,80 +973,9 @@ code {
953
973
  background: var(--color-surface);
954
974
  max-height: 600px;
955
975
  overflow-y: auto;
976
+ overflow-x: auto;
956
977
  }
957
978
 
958
- /* ============================================================
959
- FILES TAB
960
- ============================================================ */
961
-
962
- .files-card {
963
- padding: 0;
964
- }
965
-
966
- .files-layout {
967
- display: grid;
968
- grid-template-columns: 200px 1fr;
969
- min-height: 500px;
970
- }
971
-
972
- .files-sidebar {
973
- background: var(--color-surface-muted);
974
- border-right: 1px solid var(--color-border);
975
- padding: 16px 0;
976
- display: flex;
977
- flex-direction: column;
978
- gap: 2px;
979
- }
980
-
981
- .file-tab {
982
- background: none;
983
- border: none;
984
- padding: 12px 20px;
985
- text-align: left;
986
- font-size: 14px;
987
- cursor: pointer;
988
- transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
989
- display: flex;
990
- align-items: center;
991
- gap: 10px;
992
- color: var(--color-text-muted);
993
- position: relative;
994
- }
995
-
996
- .file-tab::before {
997
- content: '';
998
- position: absolute;
999
- left: 0;
1000
- top: 0;
1001
- bottom: 0;
1002
- width: 3px;
1003
- background: var(--color-accent);
1004
- transform: scaleY(0);
1005
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1006
- }
1007
-
1008
- .file-tab:hover {
1009
- color: var(--color-text);
1010
- }
1011
-
1012
- .file-tab:hover::before {
1013
- transform: scaleY(0.5);
1014
- opacity: 0.5;
1015
- }
1016
-
1017
- .file-tab.active {
1018
- color: var(--color-accent);
1019
- font-weight: 600;
1020
- }
1021
-
1022
- .file-tab.active::before {
1023
- transform: scaleY(1);
1024
- opacity: 1;
1025
- }
1026
-
1027
- .file-icon {
1028
- font-size: 16px;
1029
- }
1030
979
 
1031
980
  #new-repo-tab .repo-icon,
1032
981
  #new-test-tab .test-icon,
@@ -1039,25 +988,6 @@ code {
1039
988
  font-size: 16px;
1040
989
  }
1041
990
 
1042
- .files-content {
1043
- padding: 24px 28px;
1044
- display: flex;
1045
- flex-direction: column;
1046
- gap: 16px;
1047
- }
1048
-
1049
- .file-header {
1050
- display: flex;
1051
- justify-content: space-between;
1052
- align-items: center;
1053
- }
1054
-
1055
- .file-header h4 {
1056
- margin: 0;
1057
- font-size: 16px;
1058
- font-weight: 600;
1059
- color: var(--color-text);
1060
- }
1061
991
 
1062
992
  /* ============================================================
1063
993
  REPOS TAB
@@ -1137,6 +1067,7 @@ code {
1137
1067
  display: flex;
1138
1068
  flex-direction: column;
1139
1069
  gap: 16px;
1070
+ min-width: 0;
1140
1071
  }
1141
1072
 
1142
1073
  .repo-header {
@@ -1235,6 +1166,7 @@ code {
1235
1166
  display: flex;
1236
1167
  flex-direction: column;
1237
1168
  gap: 16px;
1169
+ min-width: 0;
1238
1170
  }
1239
1171
 
1240
1172
  .test-header {
@@ -1333,6 +1265,7 @@ code {
1333
1265
  display: flex;
1334
1266
  flex-direction: column;
1335
1267
  gap: 16px;
1268
+ min-width: 0;
1336
1269
  }
1337
1270
 
1338
1271
  .template-header {
@@ -1452,6 +1385,7 @@ code {
1452
1385
  display: flex;
1453
1386
  flex-direction: column;
1454
1387
  gap: 16px;
1388
+ min-width: 0;
1455
1389
  }
1456
1390
 
1457
1391
  .deploy-header {
@@ -1960,40 +1894,6 @@ code {
1960
1894
  grid-template-columns: 1fr;
1961
1895
  }
1962
1896
 
1963
- .files-layout {
1964
- grid-template-columns: 1fr;
1965
- }
1966
-
1967
- .files-sidebar {
1968
- border-right: none;
1969
- border-bottom: 1px solid var(--color-border);
1970
- flex-direction: row;
1971
- overflow-x: auto;
1972
- padding: 12px;
1973
- gap: 4px;
1974
- }
1975
-
1976
- .file-tab {
1977
- white-space: nowrap;
1978
- }
1979
-
1980
- .file-tab::before {
1981
- left: 0;
1982
- right: 0;
1983
- top: auto;
1984
- bottom: 0;
1985
- width: auto;
1986
- height: 3px;
1987
- transform: scaleX(0);
1988
- }
1989
-
1990
- .file-tab:hover::before {
1991
- transform: scaleX(0.5);
1992
- }
1993
-
1994
- .file-tab.active::before {
1995
- transform: scaleX(1);
1996
- }
1997
1897
 
1998
1898
  .templates-layout {
1999
1899
  grid-template-columns: 1fr;
@@ -4196,3 +4096,225 @@ code {
4196
4096
  color: var(--color-danger);
4197
4097
  border: 1px solid rgba(239, 68, 68, 0.25);
4198
4098
  }
4099
+
4100
+ /* ============================================================
4101
+ AUTOMATIONS TAB
4102
+ ============================================================ */
4103
+
4104
+ .automations-empty {
4105
+ padding: 1rem;
4106
+ border: 1px dashed var(--color-border);
4107
+ border-radius: 10px;
4108
+ background: var(--color-surface-hover);
4109
+ text-align: center;
4110
+ }
4111
+
4112
+ .automations-empty p {
4113
+ margin: 0 0 0.5rem;
4114
+ }
4115
+
4116
+ .automations-empty p:last-child {
4117
+ margin-bottom: 1rem;
4118
+ }
4119
+
4120
+ .automation-actions-cell {
4121
+ display: flex;
4122
+ gap: 0.35rem;
4123
+ flex-wrap: wrap;
4124
+ }
4125
+
4126
+ .automation-history-view {
4127
+ display: grid;
4128
+ gap: 0.75rem;
4129
+ }
4130
+
4131
+ .automation-history-header {
4132
+ display: flex;
4133
+ align-items: center;
4134
+ justify-content: space-between;
4135
+ gap: 0.75rem;
4136
+ }
4137
+
4138
+ .automation-history-footer {
4139
+ margin-top: 0.25rem;
4140
+ }
4141
+
4142
+ .link-muted {
4143
+ color: var(--color-primary);
4144
+ text-decoration: none;
4145
+ }
4146
+
4147
+ .link-muted:hover {
4148
+ text-decoration: underline;
4149
+ }
4150
+
4151
+ .automation-run-status {
4152
+ display: inline-flex;
4153
+ align-items: center;
4154
+ font-weight: 600;
4155
+ text-transform: capitalize;
4156
+ }
4157
+
4158
+ .automation-run-status.status-running {
4159
+ color: var(--color-warning, #b45309);
4160
+ }
4161
+
4162
+ .automation-run-status.status-failed {
4163
+ color: var(--color-danger);
4164
+ }
4165
+
4166
+ .automation-run-status.status-completed {
4167
+ color: var(--color-success);
4168
+ }
4169
+
4170
+ .automation-modal-content {
4171
+ max-width: 920px;
4172
+ }
4173
+
4174
+ .automation-form-section {
4175
+ background: var(--color-surface-elevated, var(--color-bg-secondary));
4176
+ border: 1px solid var(--color-border);
4177
+ border-radius: var(--radius-medium, 8px);
4178
+ margin-top: 1.25rem;
4179
+ padding: 1.25rem;
4180
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
4181
+ display: flex;
4182
+ flex-direction: column;
4183
+ gap: 16px;
4184
+ }
4185
+
4186
+ .automation-form-section:first-of-type {
4187
+ margin-top: 0;
4188
+ }
4189
+
4190
+ .automation-form-section h4 {
4191
+ margin: 0;
4192
+ font-size: 1rem;
4193
+ font-weight: 600;
4194
+ color: var(--color-text);
4195
+ border-bottom: 1px solid var(--color-border);
4196
+ padding-bottom: 0.5rem;
4197
+ }
4198
+
4199
+ .automation-schedule-fields {
4200
+ display: grid;
4201
+ gap: 0.5rem;
4202
+ }
4203
+
4204
+ .automation-time-row {
4205
+ display: inline-flex;
4206
+ align-items: center;
4207
+ gap: 0.45rem;
4208
+ }
4209
+
4210
+ .automation-time-row .form-input {
4211
+ min-width: 120px;
4212
+ }
4213
+
4214
+ .automation-time-row .custom-select {
4215
+ min-width: 120px;
4216
+ width: auto;
4217
+ flex: 0 0 140px;
4218
+ }
4219
+
4220
+ .automation-time-row .automation-time-input {
4221
+ min-width: 180px;
4222
+ }
4223
+
4224
+ #automation-modal .custom-select-dropdown {
4225
+ position: fixed;
4226
+ top: auto;
4227
+ left: auto;
4228
+ right: auto;
4229
+ z-index: 10001;
4230
+ }
4231
+
4232
+ .automation-days-grid {
4233
+ display: flex;
4234
+ flex-wrap: wrap;
4235
+ gap: 0.4rem 0.8rem;
4236
+ }
4237
+
4238
+ .day-toggle-label {
4239
+ display: inline-block;
4240
+ cursor: pointer;
4241
+ user-select: none;
4242
+ }
4243
+
4244
+ .day-toggle-label input {
4245
+ display: none;
4246
+ }
4247
+
4248
+ .day-toggle-label span {
4249
+ display: inline-block;
4250
+ padding: 4px 10px;
4251
+ background: var(--color-surface-muted, var(--color-bg-secondary));
4252
+ border: 1px solid var(--color-border);
4253
+ border-radius: 12px;
4254
+ font-size: 0.85rem;
4255
+ color: var(--color-text, #111827);
4256
+ transition: all 0.2s ease;
4257
+ }
4258
+
4259
+ .day-toggle-label input:checked + span {
4260
+ background: var(--color-accent, #2563eb);
4261
+ color: #fff;
4262
+ border-color: var(--color-accent, #2563eb);
4263
+ font-weight: 600;
4264
+ }
4265
+
4266
+ .day-toggle-label:hover span {
4267
+ border-color: var(--color-accent, #2563eb);
4268
+ }
4269
+
4270
+ #automation-instructions-row {
4271
+ grid-template-columns: 1fr;
4272
+ align-items: stretch;
4273
+ }
4274
+
4275
+ #automation-instructions-row > label {
4276
+ margin-bottom: 6px;
4277
+ }
4278
+
4279
+ #automation-instructions-row .markdown-editor-wrapper {
4280
+ width: 100%;
4281
+ max-width: none;
4282
+ }
4283
+
4284
+ .checkbox-label.compact {
4285
+ font-size: 0.85rem;
4286
+ gap: 0.25rem;
4287
+ }
4288
+
4289
+ .automation-schedule-summary {
4290
+ margin: 0;
4291
+ padding: 10px 14px;
4292
+ background: var(--color-surface, var(--color-bg));
4293
+ border-radius: 6px;
4294
+ font-size: 13px;
4295
+ color: var(--color-text);
4296
+ border: 1px dashed var(--color-border);
4297
+ display: flex;
4298
+ align-items: center;
4299
+ }
4300
+
4301
+ .automation-template-params {
4302
+ display: grid;
4303
+ gap: 0.45rem;
4304
+ margin-top: 0.75rem;
4305
+ }
4306
+
4307
+ .automation-help-text {
4308
+ grid-column: 2;
4309
+ margin: 0.35rem 0 0;
4310
+ font-size: 12px;
4311
+ line-height: 1.4;
4312
+ }
4313
+
4314
+ #automations-error {
4315
+ margin-bottom: 0.75rem;
4316
+ }
4317
+
4318
+ .btn-ghost.danger {
4319
+ color: var(--color-danger);
4320
+ }