@solidxai/core 0.1.13-beta.8 → 0.1.13

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 (260) hide show
  1. package/CHANGELOG.md +8568 -0
  2. package/README.md +19 -0
  3. package/dist/commands/run-tests.command.d.ts +2 -0
  4. package/dist/commands/run-tests.command.d.ts.map +1 -1
  5. package/dist/commands/run-tests.command.js +20 -3
  6. package/dist/commands/run-tests.command.js.map +1 -1
  7. package/dist/config/cache.options.d.ts.map +1 -1
  8. package/dist/config/cache.options.js +2 -2
  9. package/dist/config/cache.options.js.map +1 -1
  10. package/dist/constants/error-messages.d.ts +7 -0
  11. package/dist/constants/error-messages.d.ts.map +1 -1
  12. package/dist/constants/error-messages.js +7 -0
  13. package/dist/constants/error-messages.js.map +1 -1
  14. package/dist/constants/media-file-types.d.ts +3 -0
  15. package/dist/constants/media-file-types.d.ts.map +1 -1
  16. package/dist/constants/media-file-types.js +47 -8
  17. package/dist/constants/media-file-types.js.map +1 -1
  18. package/dist/constants/success-messages.d.ts +3 -0
  19. package/dist/constants/success-messages.d.ts.map +1 -1
  20. package/dist/constants/success-messages.js +3 -0
  21. package/dist/constants/success-messages.js.map +1 -1
  22. package/dist/controllers/authentication.controller.d.ts +1 -1
  23. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  24. package/dist/controllers/authentication.controller.js +4 -3
  25. package/dist/controllers/authentication.controller.js.map +1 -1
  26. package/dist/controllers/field-metadata.controller.d.ts +2 -2
  27. package/dist/controllers/mpin-authentication.controller.d.ts +44 -0
  28. package/dist/controllers/mpin-authentication.controller.d.ts.map +1 -0
  29. package/dist/controllers/mpin-authentication.controller.js +102 -0
  30. package/dist/controllers/mpin-authentication.controller.js.map +1 -0
  31. package/dist/dtos/change-mpin.dto.d.ts +6 -0
  32. package/dist/dtos/change-mpin.dto.d.ts.map +1 -0
  33. package/dist/dtos/change-mpin.dto.js +39 -0
  34. package/dist/dtos/change-mpin.dto.js.map +1 -0
  35. package/dist/dtos/create-field-metadata.dto.d.ts +3 -6
  36. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  37. package/dist/dtos/create-field-metadata.dto.js +15 -10
  38. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  39. package/dist/dtos/create-model-sequence.dto.d.ts +1 -1
  40. package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -1
  41. package/dist/dtos/create-model-sequence.dto.js +1 -1
  42. package/dist/dtos/create-model-sequence.dto.js.map +1 -1
  43. package/dist/dtos/mpin-login.dto.d.ts +5 -0
  44. package/dist/dtos/mpin-login.dto.d.ts.map +1 -0
  45. package/dist/dtos/mpin-login.dto.js +33 -0
  46. package/dist/dtos/mpin-login.dto.js.map +1 -0
  47. package/dist/dtos/setup-mpin.dto.d.ts +7 -0
  48. package/dist/dtos/setup-mpin.dto.d.ts.map +1 -0
  49. package/dist/dtos/setup-mpin.dto.js +47 -0
  50. package/dist/dtos/setup-mpin.dto.js.map +1 -0
  51. package/dist/entities/common.entity.d.ts +4 -4
  52. package/dist/entities/common.entity.d.ts.map +1 -1
  53. package/dist/entities/common.entity.js +1 -1
  54. package/dist/entities/common.entity.js.map +1 -1
  55. package/dist/entities/dashboard-user-layout.entity.js +2 -2
  56. package/dist/entities/dashboard-user-layout.entity.js.map +1 -1
  57. package/dist/entities/field-metadata.entity.d.ts +1 -0
  58. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  59. package/dist/entities/field-metadata.entity.js +5 -1
  60. package/dist/entities/field-metadata.entity.js.map +1 -1
  61. package/dist/entities/user-device-credential.entity.d.ts +18 -0
  62. package/dist/entities/user-device-credential.entity.d.ts.map +1 -0
  63. package/dist/entities/user-device-credential.entity.js +91 -0
  64. package/dist/entities/user-device-credential.entity.js.map +1 -0
  65. package/dist/entities/user.entity.js +2 -2
  66. package/dist/entities/user.entity.js.map +1 -1
  67. package/dist/entities/view-metadata.entity.js.map +1 -1
  68. package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -1
  69. package/dist/entities/workflow-execution-artifact.entity.js +4 -3
  70. package/dist/entities/workflow-execution-artifact.entity.js.map +1 -1
  71. package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -1
  72. package/dist/entities/workflow-execution-log.entity.js +4 -3
  73. package/dist/entities/workflow-execution-log.entity.js.map +1 -1
  74. package/dist/entities/workflow-execution.entity.d.ts.map +1 -1
  75. package/dist/entities/workflow-execution.entity.js +3 -2
  76. package/dist/entities/workflow-execution.entity.js.map +1 -1
  77. package/dist/entities/workflow-secret.entity.d.ts.map +1 -1
  78. package/dist/entities/workflow-secret.entity.js +3 -2
  79. package/dist/entities/workflow-secret.entity.js.map +1 -1
  80. package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -1
  81. package/dist/entities/workflow-step-execution.entity.js +3 -2
  82. package/dist/entities/workflow-step-execution.entity.js.map +1 -1
  83. package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -1
  84. package/dist/entities/workflow-trigger-execution.entity.js +6 -5
  85. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -1
  86. package/dist/filters/http-exception.filter.d.ts.map +1 -1
  87. package/dist/filters/http-exception.filter.js +5 -1
  88. package/dist/filters/http-exception.filter.js.map +1 -1
  89. package/dist/helpers/bootstrap.helper.d.ts +5 -2
  90. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  91. package/dist/helpers/bootstrap.helper.js +7 -3
  92. package/dist/helpers/bootstrap.helper.js.map +1 -1
  93. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +6 -0
  94. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  95. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +54 -27
  96. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  97. package/dist/helpers/file-download.helper.d.ts.map +1 -1
  98. package/dist/helpers/file-download.helper.js +6 -1
  99. package/dist/helpers/file-download.helper.js.map +1 -1
  100. package/dist/helpers/security.helper.d.ts +5 -1
  101. package/dist/helpers/security.helper.d.ts.map +1 -1
  102. package/dist/helpers/security.helper.js +15 -4
  103. package/dist/helpers/security.helper.js.map +1 -1
  104. package/dist/helpers/solid-core-error-codes-provider.service.d.ts.map +1 -1
  105. package/dist/helpers/solid-core-error-codes-provider.service.js +45 -0
  106. package/dist/helpers/solid-core-error-codes-provider.service.js.map +1 -1
  107. package/dist/helpers/solid-microservice-adapter.service.d.ts.map +1 -1
  108. package/dist/helpers/solid-microservice-adapter.service.js +1 -1
  109. package/dist/helpers/solid-microservice-adapter.service.js.map +1 -1
  110. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
  111. package/dist/helpers/typeorm-db-helper.js +9 -0
  112. package/dist/helpers/typeorm-db-helper.js.map +1 -1
  113. package/dist/index.d.ts +6 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +6 -0
  116. package/dist/index.js.map +1 -1
  117. package/dist/interfaces/active-user-data.interface.d.ts +1 -0
  118. package/dist/interfaces/active-user-data.interface.d.ts.map +1 -1
  119. package/dist/interfaces/active-user-data.interface.js.map +1 -1
  120. package/dist/repository/user-device-credential.repository.d.ts +12 -0
  121. package/dist/repository/user-device-credential.repository.d.ts.map +1 -0
  122. package/dist/repository/user-device-credential.repository.js +34 -0
  123. package/dist/repository/user-device-credential.repository.js.map +1 -0
  124. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  125. package/dist/seeders/module-metadata-seeder.service.js +7 -3
  126. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  127. package/dist/seeders/seed-data/solid-core-metadata.json +168 -2
  128. package/dist/services/api-key.service.d.ts.map +1 -1
  129. package/dist/services/api-key.service.js +1 -1
  130. package/dist/services/api-key.service.js.map +1 -1
  131. package/dist/services/authentication.service.d.ts +5 -4
  132. package/dist/services/authentication.service.d.ts.map +1 -1
  133. package/dist/services/authentication.service.js +50 -19
  134. package/dist/services/authentication.service.js.map +1 -1
  135. package/dist/services/chatter-message.service.d.ts +5 -1
  136. package/dist/services/chatter-message.service.d.ts.map +1 -1
  137. package/dist/services/chatter-message.service.js +48 -13
  138. package/dist/services/chatter-message.service.js.map +1 -1
  139. package/dist/services/crud-helper.service.d.ts +1 -2
  140. package/dist/services/crud-helper.service.d.ts.map +1 -1
  141. package/dist/services/crud-helper.service.js +2 -16
  142. package/dist/services/crud-helper.service.js.map +1 -1
  143. package/dist/services/crud.service.d.ts.map +1 -1
  144. package/dist/services/crud.service.js +2 -1
  145. package/dist/services/crud.service.js.map +1 -1
  146. package/dist/services/draft-publish-helper.service.d.ts +1 -0
  147. package/dist/services/draft-publish-helper.service.d.ts.map +1 -1
  148. package/dist/services/draft-publish-helper.service.js +38 -4
  149. package/dist/services/draft-publish-helper.service.js.map +1 -1
  150. package/dist/services/field-metadata.service.d.ts +2 -2
  151. package/dist/services/field-metadata.service.d.ts.map +1 -1
  152. package/dist/services/field-metadata.service.js +4 -1
  153. package/dist/services/field-metadata.service.js.map +1 -1
  154. package/dist/services/media-storage.utils.d.ts +1 -0
  155. package/dist/services/media-storage.utils.d.ts.map +1 -1
  156. package/dist/services/media-storage.utils.js +12 -1
  157. package/dist/services/media-storage.utils.js.map +1 -1
  158. package/dist/services/media.service.d.ts.map +1 -1
  159. package/dist/services/media.service.js +1 -0
  160. package/dist/services/media.service.js.map +1 -1
  161. package/dist/services/module-metadata.service.d.ts.map +1 -1
  162. package/dist/services/module-metadata.service.js +9 -1
  163. package/dist/services/module-metadata.service.js.map +1 -1
  164. package/dist/services/mpin.service.d.ts +67 -0
  165. package/dist/services/mpin.service.d.ts.map +1 -0
  166. package/dist/services/mpin.service.js +282 -0
  167. package/dist/services/mpin.service.js.map +1 -0
  168. package/dist/services/refresh-token-ids-storage.service.d.ts +25 -6
  169. package/dist/services/refresh-token-ids-storage.service.d.ts.map +1 -1
  170. package/dist/services/refresh-token-ids-storage.service.js +80 -42
  171. package/dist/services/refresh-token-ids-storage.service.js.map +1 -1
  172. package/dist/services/setting.service.d.ts.map +1 -1
  173. package/dist/services/setting.service.js +6 -1
  174. package/dist/services/setting.service.js.map +1 -1
  175. package/dist/services/settings/default-settings-provider.service.d.ts +206 -10
  176. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  177. package/dist/services/settings/default-settings-provider.service.js +120 -5
  178. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  179. package/dist/solid-core.module.d.ts +1 -3
  180. package/dist/solid-core.module.d.ts.map +1 -1
  181. package/dist/solid-core.module.js +14 -39
  182. package/dist/solid-core.module.js.map +1 -1
  183. package/dist/testing/reporter/console-reporter.d.ts +3 -0
  184. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  185. package/dist/testing/reporter/console-reporter.js +2 -0
  186. package/dist/testing/reporter/console-reporter.js.map +1 -1
  187. package/dist/testing/reporter/progress-reporter.d.ts +64 -0
  188. package/dist/testing/reporter/progress-reporter.d.ts.map +1 -0
  189. package/dist/testing/reporter/progress-reporter.js +224 -0
  190. package/dist/testing/reporter/progress-reporter.js.map +1 -0
  191. package/dist/testing/reporter/reporter.types.d.ts +3 -0
  192. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  193. package/dist/testing/reporter/reporter.types.js.map +1 -1
  194. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  195. package/dist/testing/runner/run-from-metadata.js +1 -0
  196. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  197. package/dist/theme/theme-registry.d.ts +14 -0
  198. package/dist/theme/theme-registry.d.ts.map +1 -0
  199. package/dist/theme/theme-registry.js +147 -0
  200. package/dist/theme/theme-registry.js.map +1 -0
  201. package/package.json +2 -2
  202. package/src/commands/run-tests.command.ts +17 -3
  203. package/src/config/cache.options.ts +9 -1
  204. package/src/constants/error-messages.ts +14 -0
  205. package/src/constants/media-file-types.ts +87 -9
  206. package/src/constants/success-messages.ts +5 -0
  207. package/src/controllers/authentication.controller.ts +5 -2
  208. package/src/controllers/mpin-authentication.controller.ts +67 -0
  209. package/src/dtos/change-mpin.dto.ts +18 -0
  210. package/src/dtos/create-field-metadata.dto.ts +17 -9
  211. package/src/dtos/create-model-sequence.dto.ts +1 -1
  212. package/src/dtos/mpin-login.dto.ts +24 -0
  213. package/src/dtos/setup-mpin.dto.ts +51 -0
  214. package/src/entities/common.entity.ts +8 -4
  215. package/src/entities/dashboard-user-layout.entity.ts +2 -2
  216. package/src/entities/field-metadata.entity.ts +3 -0
  217. package/src/entities/user-device-credential.entity.ts +130 -0
  218. package/src/entities/user.entity.ts +2 -2
  219. package/src/entities/view-metadata.entity.ts +2 -2
  220. package/src/entities/workflow-execution-artifact.entity.ts +4 -3
  221. package/src/entities/workflow-execution-log.entity.ts +4 -3
  222. package/src/entities/workflow-execution.entity.ts +3 -2
  223. package/src/entities/workflow-secret.entity.ts +3 -2
  224. package/src/entities/workflow-step-execution.entity.ts +3 -2
  225. package/src/entities/workflow-trigger-execution.entity.ts +6 -5
  226. package/src/filters/http-exception.filter.ts +11 -1
  227. package/src/helpers/bootstrap.helper.ts +43 -6
  228. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +73 -34
  229. package/src/helpers/file-download.helper.ts +15 -1
  230. package/src/helpers/security.helper.ts +35 -8
  231. package/src/helpers/solid-core-error-codes-provider.service.ts +53 -0
  232. package/src/helpers/solid-microservice-adapter.service.ts +6 -1
  233. package/src/helpers/typeorm-db-helper.ts +12 -1
  234. package/src/index.ts +6 -0
  235. package/src/interfaces/active-user-data.interface.ts +9 -0
  236. package/src/repository/user-device-credential.repository.ts +17 -0
  237. package/src/seeders/module-metadata-seeder.service.ts +11 -3
  238. package/src/seeders/seed-data/solid-core-metadata.json +168 -2
  239. package/src/services/api-key.service.ts +13 -1
  240. package/src/services/authentication.service.ts +127 -36
  241. package/src/services/chatter-message.service.ts +78 -15
  242. package/src/services/crud-helper.service.ts +19 -16
  243. package/src/services/crud.service.ts +3 -1
  244. package/src/services/draft-publish-helper.service.ts +56 -4
  245. package/src/services/field-metadata.service.ts +5 -2
  246. package/src/services/media-storage.utils.ts +26 -1
  247. package/src/services/media.service.ts +1 -0
  248. package/src/services/module-metadata.service.ts +10 -1
  249. package/src/services/mpin.service.ts +447 -0
  250. package/src/services/refresh-token-ids-storage.service.ts +229 -90
  251. package/src/services/setting.service.ts +8 -1
  252. package/src/services/settings/default-settings-provider.service.ts +131 -5
  253. package/src/solid-core.module.ts +26 -12
  254. package/src/testing/README.md +11 -1
  255. package/src/testing/reporter/console-reporter.ts +4 -0
  256. package/src/testing/reporter/progress-reporter.ts +251 -0
  257. package/src/testing/reporter/reporter.types.ts +3 -0
  258. package/src/testing/runner/run-from-metadata.ts +1 -0
  259. package/src/theme/theme-registry.ts +181 -0
  260. package/CLAUDE.md +0 -26
@@ -11,8 +11,13 @@ const common_1 = require("@nestjs/common");
11
11
  const disallow_in_production_decorator_1 = require("../../decorators/disallow-in-production.decorator");
12
12
  const settings_provider_decorator_1 = require("../../decorators/settings-provider.decorator");
13
13
  const interfaces_1 = require("../../interfaces");
14
+ const theme_registry_1 = require("../../theme/theme-registry");
14
15
  exports.DEFAULT_MEDIA_UPLOAD_DIR = "media-uploads";
15
16
  exports.DEFAULT_MEDIA_FILE_STORAGE_DIR = "media-files-storage";
17
+ const timeoutFromEnv = (value, fallback) => {
18
+ const parsed = Number(value);
19
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
20
+ };
16
21
  const getSolidCoreSettings = (isProd) => [
17
22
  {
18
23
  moduleName: "solid-core",
@@ -216,14 +221,44 @@ const getSolidCoreSettings = (isProd) => [
216
221
  },
217
222
  {
218
223
  moduleName: "solid-core",
219
- key: "enableDarkMode",
224
+ key: "showThemeToggle",
220
225
  value: true,
221
226
  level: interfaces_1.SettingLevel.SystemAdminEditable,
222
- label: "Enable Dark Mode",
227
+ label: "Show Theme Toggle",
223
228
  group: "app-settings",
224
229
  sortOrder: 120,
225
230
  controlType: "boolean",
226
- helpText: "Enables dark theme support for frontend surfaces that honor the global appearance setting.",
231
+ helpText: "Shows the theme toggle in the frontend so users can switch between light and dark themes.",
232
+ },
233
+ {
234
+ moduleName: "solid-core",
235
+ key: "lightTheme",
236
+ value: (0, theme_registry_1.getDefaultThemeKey)("light"),
237
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
238
+ label: "Light Theme",
239
+ group: "app-settings",
240
+ sortOrder: 125,
241
+ controlType: "selectionStatic",
242
+ options: (0, theme_registry_1.getThemesByMode)("light").map((theme) => ({
243
+ label: theme.label,
244
+ value: theme.key,
245
+ })),
246
+ helpText: "Selects the theme used whenever the application is in light mode.",
247
+ },
248
+ {
249
+ moduleName: "solid-core",
250
+ key: "darkTheme",
251
+ value: (0, theme_registry_1.getDefaultThemeKey)("dark"),
252
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
253
+ label: "Dark Theme",
254
+ group: "app-settings",
255
+ sortOrder: 126,
256
+ controlType: "selectionStatic",
257
+ options: (0, theme_registry_1.getThemesByMode)("dark").map((theme) => ({
258
+ label: theme.label,
259
+ value: theme.key,
260
+ })),
261
+ helpText: "Selects the theme used whenever the application is in dark mode.",
227
262
  },
228
263
  {
229
264
  moduleName: "solid-core",
@@ -489,6 +524,20 @@ const getSolidCoreSettings = (isProd) => [
489
524
  ],
490
525
  helpText: "Default storage implementation used for file handling, such as local disk or S3.",
491
526
  },
527
+ {
528
+ moduleName: "solid-core",
529
+ key: "maxMediaFileSizeMb",
530
+ value: (() => {
531
+ const parsedMb = Number(process.env.AB_MEDIA_MAX_FILE_SIZE_MB);
532
+ return Number.isFinite(parsedMb) && parsedMb > 0 ? parsedMb : 100;
533
+ })(),
534
+ level: interfaces_1.SettingLevel.SystemAdminReadonly,
535
+ label: "Max Media File Size (MB)",
536
+ group: "storage-settings",
537
+ sortOrder: 45,
538
+ controlType: "numeric",
539
+ helpText: "Global upload size limit enforced by Multer under every per-field mediaMaxSizeKb restriction. Read-only here: it's applied once at process start, so changing AB_MEDIA_MAX_FILE_SIZE_MB requires an app restart to take effect - editing this in the admin UI would not do that.",
540
+ },
492
541
  {
493
542
  moduleName: "solid-core",
494
543
  key: "S3_AWS_ACCESS_KEY",
@@ -1166,6 +1215,72 @@ const getSolidCoreSettings = (isProd) => [
1166
1215
  sortOrder: 200,
1167
1216
  controlType: "boolean",
1168
1217
  },
1218
+ {
1219
+ moduleName: "solid-core",
1220
+ key: "mpinEnabled",
1221
+ value: false,
1222
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1223
+ label: "Enable MPIN Sign-in",
1224
+ group: "authentication-settings",
1225
+ sortOrder: 210,
1226
+ controlType: "boolean",
1227
+ helpText: "Allows users to set a short device PIN for faster sign-in. Every MPIN route returns 404 while this is off.",
1228
+ },
1229
+ {
1230
+ moduleName: "solid-core",
1231
+ key: "mpinRegex",
1232
+ value: process.env.IAM_MPIN_REGEX ?? "^\\d{4,6}$",
1233
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1234
+ label: "MPIN Format",
1235
+ group: "authentication-settings",
1236
+ sortOrder: 211,
1237
+ controlType: "shortText",
1238
+ helpText: "Regular expression the MPIN must match. Sole authority on MPIN length - the default allows 4 to 6 digits. Predictable PINs (repeated or sequential digits) are rejected separately.",
1239
+ },
1240
+ {
1241
+ moduleName: "solid-core",
1242
+ key: "mpinMaxFailedAttempts",
1243
+ value: parseInt(process.env.IAM_MPIN_MAX_FAILED_ATTEMPTS ?? "5", 10),
1244
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1245
+ label: "MPIN Attempts Before Lockout",
1246
+ group: "authentication-settings",
1247
+ sortOrder: 212,
1248
+ controlType: "numeric",
1249
+ helpText: "Cumulative failed attempts that trigger a temporary lockout. The counter resets only on a successful MPIN sign-in, not when the lockout expires.",
1250
+ },
1251
+ {
1252
+ moduleName: "solid-core",
1253
+ key: "mpinLockoutDuration",
1254
+ value: parseInt(process.env.IAM_MPIN_LOCKOUT_DURATION ?? "900", 10),
1255
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1256
+ label: "MPIN Lockout Duration (seconds)",
1257
+ group: "authentication-settings",
1258
+ sortOrder: 213,
1259
+ controlType: "numeric",
1260
+ helpText: "How long the temporary lockout lasts.",
1261
+ },
1262
+ {
1263
+ moduleName: "solid-core",
1264
+ key: "mpinMaxTotalFailedAttempts",
1265
+ value: parseInt(process.env.IAM_MPIN_MAX_TOTAL_FAILED_ATTEMPTS ?? "10", 10),
1266
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1267
+ label: "MPIN Attempts Before Permanent Deactivation",
1268
+ group: "authentication-settings",
1269
+ sortOrder: 214,
1270
+ controlType: "numeric",
1271
+ helpText: "Cumulative failed attempts that permanently disable MPIN on that device. Must exceed the lockout threshold. The account itself is never locked - the user signs in normally and sets MPIN up again.",
1272
+ },
1273
+ {
1274
+ moduleName: "solid-core",
1275
+ key: "mpinMaxDevicesPerUser",
1276
+ value: parseInt(process.env.IAM_MPIN_MAX_DEVICES_PER_USER ?? "5", 10),
1277
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1278
+ label: "Max MPIN Devices Per User",
1279
+ group: "authentication-settings",
1280
+ sortOrder: 215,
1281
+ controlType: "numeric",
1282
+ helpText: "At the cap the least recently used credential is evicted rather than the setup rejected, so repeated app reinstalls cannot lock a user out of MPIN setup.",
1283
+ },
1169
1284
  {
1170
1285
  moduleName: "solid-core",
1171
1286
  key: "queuesDefaultBroker",
@@ -1425,7 +1540,7 @@ const getSolidCoreSettings = (isProd) => [
1425
1540
  {
1426
1541
  moduleName: "solid-core",
1427
1542
  key: "uiTestDefaultTimeoutMs",
1428
- value: 30000,
1543
+ value: timeoutFromEnv(process.env.COMMON_UI_TEST_DEFAULT_TIMEOUT_MS, 30000),
1429
1544
  level: interfaces_1.SettingLevel.SystemAdminEditable,
1430
1545
  label: "UI Test Default Timeout (ms)",
1431
1546
  group: "testing-settings",
@@ -1436,7 +1551,7 @@ const getSolidCoreSettings = (isProd) => [
1436
1551
  {
1437
1552
  moduleName: "solid-core",
1438
1553
  key: "uiTestNavigationTimeoutMs",
1439
- value: 30000,
1554
+ value: timeoutFromEnv(process.env.COMMON_UI_TEST_NAVIGATION_TIMEOUT_MS, timeoutFromEnv(process.env.COMMON_UI_TEST_DEFAULT_TIMEOUT_MS, 30000)),
1440
1555
  level: interfaces_1.SettingLevel.SystemAdminEditable,
1441
1556
  label: "UI Test Navigation Timeout (ms)",
1442
1557
  group: "testing-settings",